From f7a4fc0d8d568099231075bc0c7cc0008efca697 Mon Sep 17 00:00:00 2001 From: Asaki Yuki Date: Tue, 14 Apr 2026 22:30:56 +0700 Subject: [PATCH] add dolphin services menu --- .../copy-server-public-url.desktop | 10 ---- .../services-menu/open-ghostty-here.desktop | 10 ---- .../open-with-antigravity.desktop | 10 ---- configs/services-menu/open-with-code.desktop | 10 ---- configs/services-menu/open-with-nvim.desktop | 10 ---- modules/features/home/dolphin.nix | 59 +++++++++++++++++++ options/home/programs/dolphin.nix | 14 ++++- 7 files changed, 71 insertions(+), 52 deletions(-) delete mode 100644 configs/services-menu/copy-server-public-url.desktop delete mode 100644 configs/services-menu/open-ghostty-here.desktop delete mode 100644 configs/services-menu/open-with-antigravity.desktop delete mode 100644 configs/services-menu/open-with-code.desktop delete mode 100644 configs/services-menu/open-with-nvim.desktop diff --git a/configs/services-menu/copy-server-public-url.desktop b/configs/services-menu/copy-server-public-url.desktop deleted file mode 100644 index 785d36c..0000000 --- a/configs/services-menu/copy-server-public-url.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=KonqPopupMenu/Plugin -MimeType=all/allfiles; -Actions=CopyPublicURL - -[Desktop Action CopyPublicURL] -Name=Copy location as URL -Icon=org.kde.plasma.clipboard -Exec=/etc/nixos/scripts/copy-public-url.sh "%F" \ No newline at end of file diff --git a/configs/services-menu/open-ghostty-here.desktop b/configs/services-menu/open-ghostty-here.desktop deleted file mode 100644 index 0385aca..0000000 --- a/configs/services-menu/open-ghostty-here.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=KonqPopupMenu/Plugin -MimeType=inode/directory -Actions=RunGhosttyDir - -[Desktop Action RunGhosttyDir] -Name=Open Ghostty here -Icon=com.mitchellh.ghostty -Exec=ghostty +new-window --working-directory="%F" \ No newline at end of file diff --git a/configs/services-menu/open-with-antigravity.desktop b/configs/services-menu/open-with-antigravity.desktop deleted file mode 100644 index 536c45d..0000000 --- a/configs/services-menu/open-with-antigravity.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=KonqPopupMenu/Plugin -MimeType=inode/directory -Actions=RunCodeDir - -[Desktop Action RunCodeDir] -Name=Open with Antigravity -Icon=antigravity -Exec=antigravity %F \ No newline at end of file diff --git a/configs/services-menu/open-with-code.desktop b/configs/services-menu/open-with-code.desktop deleted file mode 100644 index 0d41a8e..0000000 --- a/configs/services-menu/open-with-code.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=KonqPopupMenu/Plugin -MimeType=inode/directory -Actions=RunCodeDir - -[Desktop Action RunCodeDir] -Name=Open with Code -Icon=vscode -Exec=code %F \ No newline at end of file diff --git a/configs/services-menu/open-with-nvim.desktop b/configs/services-menu/open-with-nvim.desktop deleted file mode 100644 index f2e4926..0000000 --- a/configs/services-menu/open-with-nvim.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=KonqPopupMenu/Plugin -MimeType=inode/directory -Actions=RunCodeDir - -[Desktop Action RunCodeDir] -Name=Open with Nvim -Icon=nvim -Exec=ghostty +new-window --working-directory="~/.config" -e nvim . \ No newline at end of file diff --git a/modules/features/home/dolphin.nix b/modules/features/home/dolphin.nix index 045591b..8e64c08 100644 --- a/modules/features/home/dolphin.nix +++ b/modules/features/home/dolphin.nix @@ -14,6 +14,65 @@ Exec = "${libs.root "/scripts/copy-public-url.sh"} \"%F\""; }; }; + + open-ghostty-here = { + "Desktop Entry" = { + Type = "Service"; + ServiceTypes = "KonqPopupMenu/Plugin"; + MimeType = "inode/directory"; + Actions = "RunGhosttyDir"; + }; + "Desktop Action RunGhosttyDir" = { + Name = "Open Ghostty here"; + Icon = "com.mitchellh.ghostty"; + Exec = "ghostty +new-window --working-directory=\"%F\""; + }; + }; + + open-with-antigravity = { + "Desktop Entry" = { + Type = "Service"; + ServiceTypes = "KonqPopupMenu/Plugin"; + MimeType = "inode/directory"; + Actions = "RunCodeDir"; + }; + + "Desktop Action RunCodeDir" = { + Name = "Open with Antigravity"; + Icon = "antigravity"; + Exec = "antigravity \"%F\""; + }; + }; + + open-with-code = { + "Desktop Entry" = { + Type = "Service"; + ServiceTypes = "KonqPopupMenu/Plugin"; + MimeType = "inode/directory"; + Actions = "RunCodeDir"; + }; + + "Desktop Action RunCodeDir" = { + Name = "Open with Code"; + Icon = "vscode"; + Exec = "vscode \"%F\""; + }; + }; + + open-with-nvim = { + "Desktop Entry" = { + Type = "Service"; + ServiceTypes = "KonqPopupMenu/Plugin"; + MimeType = "inode/directory"; + Actions = "RunCodeDir"; + }; + + "Desktop Action RunCodeDir" = { + Name = "Open with Nvim"; + Icon = "nvim"; + Exec = "ghostty +new-window --working-directory=\"~/.config\" -e nvim ."; + }; + }; }; configs = { General = { diff --git a/options/home/programs/dolphin.nix b/options/home/programs/dolphin.nix index 18126f0..797a726 100644 --- a/options/home/programs/dolphin.nix +++ b/options/home/programs/dolphin.nix @@ -23,7 +23,17 @@ in { force = true; }; } - # (lib.attrsToList config.programs.dolphin.services-menu)z + (builtins.listToAttrs (builtins.map + ({ + name, + value, + }: { + name = ".local/share/kio/servicemenus/${name}.desktop"; + value = { + text = lib.generators.toINI {} value; + }; + }) + (lib.attrsToList config.programs.dolphin.services-menu))) ]; }; @@ -415,7 +425,7 @@ in { }; services-menu = lib.mkOption { - type = lib.types.attrsOf (lib.types.attrsOf lib.types.str); + type = lib.types.attrsOf (lib.types.attrsOf (lib.types.attrsOf lib.types.str)); default = {}; }; };