diff options
Diffstat (limited to '')
| -rw-r--r-- | modules/by-name/xd/xdg/module.nix | 100 | ||||
| -rwxr-xr-x | modules/by-name/xd/xdg/scripts/lf-wrapper.sh | 11 | ||||
| -rwxr-xr-x | modules/by-name/xd/xdg/scripts/url-handler.sh | 15 |
3 files changed, 94 insertions, 32 deletions
diff --git a/modules/by-name/xd/xdg/module.nix b/modules/by-name/xd/xdg/module.nix index f1781d86..9430d82f 100644 --- a/modules/by-name/xd/xdg/module.nix +++ b/modules/by-name/xd/xdg/module.nix @@ -1,3 +1,12 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. { pkgs, lib, @@ -17,7 +26,9 @@ name = "url-handler"; runtimeInputs = [pkgs.rofi pkgs.libnotify pkgs.zathura pkgs.tskm]; - inheritPath = false; + + # We need to run the browser in tskm or nvim and alacritty. + inheritPath = true; text = builtins.readFile ./scripts/url-handler.sh; }; @@ -30,40 +41,70 @@ }; cfg = config.soispha.xdg; + + inherit (config.home-manager.users.soispha.home) homeDirectory; in { options.soispha.xdg = { enable = lib.mkEnableOption "xdg"; }; config = lib.mkIf cfg.enable { - home-manager.users.soispha = { - xdg = { - desktopEntries = { - url-handler = { - name = "url-handler"; - genericName = "Web Browser"; - exec = "${lib.getExe url-handler} %u"; - terminal = false; - categories = [ - "Application" - "Network" - "WebBrowser" - ]; - mimeType = [ - "text/html" - "text/xml" - "x-scheme-handler/http" - "x-scheme-handler/https" - "x-scheme-handler/about" - "x-scheme-handler/unknown" - ]; - }; + home-manager.users.soispha.xdg = { + enable = true; + + configFile."xdg-desktop-portal-termfilechooser/config".source = tfcConfigFile; + + configHome = "${homeDirectory}/.config"; + dataHome = "${homeDirectory}/.local/share"; + stateHome = "${homeDirectory}/.local/state"; + cacheHome = "${homeDirectory}/.cache"; + + userDirs = { + enable = true; + + # TODO: We shouldn't build on these variables to exist, but currently my config + # might expect them. So let's just keep it. See here for a full explanation: + # https://github.com/nix-community/home-manager/pull/7937#issuecomment-3372232126 + # <2026-04-14> + setSessionVariables = true; + + createDirectories = true; + + documents = "${homeDirectory}/documents/general"; + download = "/tmp/download"; + music = "${homeDirectory}/media/music"; + pictures = "${homeDirectory}/media/pictures"; + videos = "${homeDirectory}/media/videos"; + projects = "${homeDirectory}/repos"; + + templates = null; + publicShare = null; + desktop = null; + }; + + desktopEntries = { + url-handler = { + name = "url-handler"; + genericName = "Web Browser"; + exec = "${lib.getExe url-handler} %u"; + terminal = false; + categories = [ + "Application" + "Network" + "WebBrowser" + ]; + mimeType = [ + "text/html" + "text/xml" + "x-scheme-handler/http" + "x-scheme-handler/https" + "x-scheme-handler/about" + "x-scheme-handler/unknown" + ]; }; }; }; - services.dbus.enable = true; - xdg = { mime = { enable = true; @@ -85,29 +126,28 @@ in { wlr = { enable = true; }; + config = { common = { - # NOTE: The next entry is supposedly needed for gtk based apps <2023-08-31> - default = ["wlr" "gtk"]; + default = ["wlr"]; "org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"]; }; # TODO: Also activate, when on another wlr-based compositor <2023-11-25> river = { - default = ["wlr" "gtk"]; + default = ["wlr"]; "org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"]; }; }; extraPortals = [ - pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-wlr pkgs.xdg-desktop-portal-termfilechooser ]; }; }; - environment.etc."xdg/xdg-desktop-portal-termfilechooser/config".source = tfcConfigFile; + services.dbus.enable = true; systemd.user.services.xdg-desktop-portal-termfilechooser = { serviceConfig.ExecStart = [ diff --git a/modules/by-name/xd/xdg/scripts/lf-wrapper.sh b/modules/by-name/xd/xdg/scripts/lf-wrapper.sh index f85f7bac..6a5c5295 100755 --- a/modules/by-name/xd/xdg/scripts/lf-wrapper.sh +++ b/modules/by-name/xd/xdg/scripts/lf-wrapper.sh @@ -1,4 +1,15 @@ #!/usr/bin/env sh + +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. + # This wrapper script is invoked by xdg-desktop-portal-termfilechooser. # # For more information about input/output arguments read `xdg-desktop-portal-termfilechooser(5)` diff --git a/modules/by-name/xd/xdg/scripts/url-handler.sh b/modules/by-name/xd/xdg/scripts/url-handler.sh index 804a0450..b3563349 100755 --- a/modules/by-name/xd/xdg/scripts/url-handler.sh +++ b/modules/by-name/xd/xdg/scripts/url-handler.sh @@ -1,8 +1,18 @@ #!/usr/bin/env sh +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. + project="$({ tskm projects list - echo nvim zathura + printf "%s\n" nvim zathura } | rofi -sep "$(printf "\n")" -dmenu)" if [ "$project" = "nvim" ]; then @@ -12,7 +22,8 @@ elif [ "$project" = "zathura" ]; then elif [ "$project" ]; then tskm open project "$project" "$1" else - notify-send "(URL HANDLER) No project selected"; exit 1 + notify-send "(URL HANDLER) No project selected" + exit 1 fi # vim: ft=sh |
