xdg-desktop-entries: add 'actions' option, deprecate fileValidation (#2778)

Validation is always enabled so it does not make sense to keep this option
main
Nicolas Berbiche 2 years ago committed by GitHub
parent bb860e3e11
commit f47001cec9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 37
      modules/misc/xdg-desktop-entries.nix
  2. 37
      tests/modules/misc/xdg/desktop-entries.nix
  3. 10
      tests/modules/misc/xdg/desktop-full-expected.desktop

@ -7,6 +7,8 @@ let
imports = [
(mkRemovedOptionModule [ "extraConfig" ]
"The `extraConfig` option of `xdg.desktopEntries` has been removed following a change in Nixpkgs.")
(mkRemovedOptionModule [ "fileValidation" ]
"Validation of the desktop file is always enabled.")
];
options = {
# Since this module uses the nixpkgs/pkgs/build-support/make-desktopitem function,
@ -118,10 +120,35 @@ let
'';
};
fileValidation = mkOption {
type = types.bool;
description = "Whether to validate the generated desktop file.";
default = true;
actions = mkOption {
type = types.attrsOf (types.submodule ({ name, ... }: {
options.name = mkOption {
type = types.str;
default = name;
defaultText = literalExpression "<name>";
description = "Name of the action.";
};
options.exec = mkOption {
type = types.nullOr types.str;
description = "Program to execute, possibly with arguments.";
};
options.icon = mkOption {
type = types.nullOr types.str;
default = null;
description = "Icon to display in file manager, menus, etc.";
};
}));
default = { };
defaultText = literalExpression "{ }";
example = literalExpression ''
{
"New Window" = {
exec = "''${pkgs.firefox}/bin/firefox --new-window %u";
};
}
'';
description =
"The set of actions made available to application launchers.";
};
# Required for the assertions
@ -145,7 +172,7 @@ let
inherit name;
inherit (config)
type exec icon comment terminal genericName startupNotify noDisplay
prefersNonDefaultGPU;
prefersNonDefaultGPU actions;
desktopName = config.name;
mimeTypes = optionals (config.mimeType != null) config.mimeType;
categories = optionals (config.categories != null) config.categories;

@ -18,20 +18,33 @@ with lib;
startupNotify = false;
noDisplay = false;
prefersNonDefaultGPU = false;
extraConfig = ''
[X-ExtraSection]
Exec=foo -o
'';
settings = {
Keywords = "calc;math";
DBusActivatable = "false";
};
fileValidation = true;
actions = {
"New-Window" = {
name = "New Window";
exec = "test --new-window";
icon = "test";
};
"Default" = { exec = "test --default"; };
};
};
min = { # minimal definition
exec = "test --option";
name = "Test";
};
deprecated = {
exec = "test --option";
name = "Test";
# Deprecated options
fileValidation = true;
extraConfig = ''
[X-ExtraSection]
Exec=foo -o
'';
};
};
#testing that preexisting entries in the store are overridden
@ -50,10 +63,16 @@ with lib;
test.asserts.assertions.expected =
let currentFile = toString ./desktop-entries.nix;
in [''
The option definition `extraConfig' in `${currentFile}' no longer has any effect; please remove it.
The `extraConfig` option of `xdg.desktopEntries` has been removed following a change in Nixpkgs.
''];
in [
''
The option definition `fileValidation' in `${currentFile}' no longer has any effect; please remove it.
Validation of the desktop file is always enabled.
''
''
The option definition `extraConfig' in `${currentFile}' no longer has any effect; please remove it.
The `extraConfig` option of `xdg.desktopEntries` has been removed following a change in Nixpkgs.
''
];
nmt.script = ''
assertFileExists home-path/share/applications/full.desktop

@ -1,4 +1,5 @@
[Desktop Entry]
Actions=Default;New-Window
Categories=Network;WebBrowser
Comment=My Application
DBusActivatable=false
@ -14,3 +15,12 @@ StartupNotify=false
Terminal=true
Type=Application
Version=1.4
[Desktop Action Default]
Exec=test --default
Name=Default
[Desktop Action New-Window]
Exec=test --new-window
Icon=test
Name=New Window

Loading…
Cancel
Save