diff options
author | makefu <github@syntax-fehler.de> | 2019-04-17 21:48:16 +0200 |
---|---|---|
committer | makefu <github@syntax-fehler.de> | 2019-04-17 21:48:16 +0200 |
commit | 12f77bbed628e4071ac300af77857815be97a344 (patch) | |
tree | 4f8233712a96ac5a38a386e1cc9df24de8a2b31a /lass/2configs/xdg-open.nix | |
parent | e9743b162d51c4eb04d7939f8445e1acaa2d723d (diff) | |
parent | d0d3fcb2d2b9ed82dd1ff2864b9fbbd88aa65ff4 (diff) |
Merge remote-tracking branch 'lass/master'
Diffstat (limited to 'lass/2configs/xdg-open.nix')
-rw-r--r-- | lass/2configs/xdg-open.nix | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/lass/2configs/xdg-open.nix b/lass/2configs/xdg-open.nix new file mode 100644 index 000000000..824c36dc7 --- /dev/null +++ b/lass/2configs/xdg-open.nix @@ -0,0 +1,66 @@ +{ config, pkgs, lib, ... }: with import <stockholm/lib>; let + + xdg-open-wrapper = pkgs.writeDashBin "xdg-open" '' + /run/wrappers/bin/sudo -u lass ${xdg-open} "$@" + ''; + + xdg-open = pkgs.writeBash "xdg-open" '' + set -e + FILE="$1" + mime= + + case "$FILE" in + http://*|https://*) + mime=text/html + ;; + mailto:*) + mime=special/mailaddress + ;; + magnet:*) + mime=application/x-bittorrent + ;; + irc:*) + mime=x-scheme-handler/irc + ;; + *) + # it’s a file + + # strip possible protocol + FILE=''${FILE#file://} + mime=''$(file -E --brief --mime-type "$FILE") \ + || (echo "$mime" 1>&2; exit 1) + # ^ echo the error message of file + ;; + esac + + case "$mime" in + special/mailaddress) + urxvtc --execute vim "$FILE" ;; + ${optionalString (hasAttr "browser" config.lass) '' + text/html) + ${config.lass.browser.select}/bin/browser-select "$FILE" ;; + text/xml) + ${config.lass.browser.select}/bin/browser-select "$FILE" ;; + ''} + text/*) + urxvtc --execute vim "$FILE" ;; + image/*) + sxiv "$FILE" ;; + application/x-bittorrent) + env DISPLAY=:0 transgui "$FILE" ;; + application/pdf) + zathura "$FILE" ;; + inode/directory) + sudo -u lass -i urxvtc --execute mc "$FILE" ;; + *) + # open dmenu and ask for program to open with + $(dmenu_path | dmenu) "$FILE";; + esac + ''; +in { + environment.systemPackages = [ xdg-open-wrapper ]; + + security.sudo.extraConfig = '' + cr ALL=(lass) NOPASSWD: ${xdg-open} * + ''; +} |