aboutsummaryrefslogtreecommitdiffstats
path: root/modules/by-name
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-04-07 12:50:26 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-04-07 12:50:26 +0200
commit0863607a87572acda6276b6251778f2294d21ae6 (patch)
tree50092b650e944c07859cdb10d47ec27dcb6ff4ad /modules/by-name
parentrefactor(modules/legacy/ytcc): Remove (diff)
downloadnixos-config-0863607a87572acda6276b6251778f2294d21ae6.zip
refactor(modules/xdg): Migrate to by-name and fix firefox dep in url-handler
Diffstat (limited to 'modules/by-name')
-rw-r--r--modules/by-name/xd/xdg/module.nix123
-rwxr-xr-xmodules/by-name/xd/xdg/scripts/lf-wrapper.sh (renamed from modules/by-name/xd/xdg/lf-wrapper.sh)0
-rwxr-xr-xmodules/by-name/xd/xdg/scripts/url-handler.sh18
3 files changed, 109 insertions, 32 deletions
diff --git a/modules/by-name/xd/xdg/module.nix b/modules/by-name/xd/xdg/module.nix
index 1202cd96..f1781d86 100644
--- a/modules/by-name/xd/xdg/module.nix
+++ b/modules/by-name/xd/xdg/module.nix
@@ -1,60 +1,119 @@
{
pkgs,
lib,
+ config,
...
}: let
- cmd = pkgs.writeShellApplication {
- name = "lf_wrapper";
+ lf-wrapper = pkgs.writeShellApplication {
+ name = "lf-wrapper";
runtimeInputs = [pkgs.lf pkgs.alacritty];
inheritPath = true;
- text = builtins.readFile ./lf-wrapper.sh;
+ text = builtins.readFile ./scripts/lf-wrapper.sh;
+ };
+
+ url-handler = pkgs.writeShellApplication {
+ name = "url-handler";
+
+ runtimeInputs = [pkgs.rofi pkgs.libnotify pkgs.zathura pkgs.tskm];
+ inheritPath = false;
+
+ text = builtins.readFile ./scripts/url-handler.sh;
};
tfcConfigFile = (pkgs.formats.ini {}).generate "xdg-desktop-portal-termfilechooser.ini" {
filechooser = {
default_dir = "/tmp";
- cmd = "${lib.getExe cmd}";
+ cmd = "${lib.getExe lf-wrapper}";
};
};
+
+ cfg = config.soispha.xdg;
in {
- services.dbus.enable = true;
- xdg = {
- portal = {
- enable = true;
- wlr = {
+ 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"
+ ];
+ };
+ };
+ };
+ };
+
+ services.dbus.enable = true;
+
+ xdg = {
+ mime = {
enable = true;
+ defaultApplications = {
+ "application/pdf" = ["url-handler.desktop"];
+ "application/x-pdf" = ["url-handler.desktop"];
+
+ "text/html" = ["url-handler.desktop"];
+ "text/xml" = ["url-handler.desktop"];
+ "x-scheme-handler/http" = ["url-handler.desktop"];
+ "x-scheme-handler/https" = ["url-handler.desktop"];
+ "x-scheme-handler/about" = ["url-handler.desktop"];
+ "x-scheme-handler/unknown" = ["url-handler.desktop"];
+ };
};
- config = {
- common = {
- # NOTE: The next entry is supposedly needed for gtk based apps <2023-08-31>
- default = ["wlr" "gtk"];
- "org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"];
+
+ portal = {
+ enable = true;
+ wlr = {
+ enable = true;
};
+ config = {
+ common = {
+ # NOTE: The next entry is supposedly needed for gtk based apps <2023-08-31>
+ default = ["wlr" "gtk"];
+ "org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"];
+ };
- # TODO: Also activate, when on another wlr-based compositor <2023-11-25>
- river = {
- default = ["wlr" "gtk"];
- "org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"];
+ # TODO: Also activate, when on another wlr-based compositor <2023-11-25>
+ river = {
+ default = ["wlr" "gtk"];
+ "org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"];
+ };
};
- };
- extraPortals = [
- pkgs.xdg-desktop-portal-gtk
- pkgs.xdg-desktop-portal-wlr
- pkgs.xdg-desktop-portal-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;
+ environment.etc."xdg/xdg-desktop-portal-termfilechooser/config".source = tfcConfigFile;
- systemd.user.services.xdg-desktop-portal-termfilechooser = {
- serviceConfig.ExecStart = [
- ""
- "${pkgs.xdg-desktop-portal-termfilechooser}/libexec/xdg-desktop-portal-termfilechooser --loglevel=TRACE"
- ];
+ systemd.user.services.xdg-desktop-portal-termfilechooser = {
+ serviceConfig.ExecStart = [
+ ""
+ "${pkgs.xdg-desktop-portal-termfilechooser}/libexec/xdg-desktop-portal-termfilechooser --loglevel=TRACE"
+ ];
+ };
};
- # TODO: mime = {};
}
diff --git a/modules/by-name/xd/xdg/lf-wrapper.sh b/modules/by-name/xd/xdg/scripts/lf-wrapper.sh
index f85f7bac..f85f7bac 100755
--- a/modules/by-name/xd/xdg/lf-wrapper.sh
+++ b/modules/by-name/xd/xdg/scripts/lf-wrapper.sh
diff --git a/modules/by-name/xd/xdg/scripts/url-handler.sh b/modules/by-name/xd/xdg/scripts/url-handler.sh
new file mode 100755
index 00000000..5aa01a48
--- /dev/null
+++ b/modules/by-name/xd/xdg/scripts/url-handler.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env sh
+
+project="$({
+ tskm projects list
+ echo nvim zathura
+} | rofi -sep "$(printf "\n")" -dmenu)"
+
+if [ "$project" = "nvim" ]; then
+ "$TERMINAL" -e nvim "$1"
+elif [ "$project" = "zathura" ]; then
+ zathura "$1"
+elif [ "$project" ]; then
+ tskm open "$project" "$1"
+else
+ notify-send "(URL HANDLER) No project selected"; exit 1
+fi
+
+# vim: ft=sh