diff --git a/modules/home/wayland/base/default.nix b/modules/home/wayland/base/default.nix index 727ad20..a5b9933 100644 --- a/modules/home/wayland/base/default.nix +++ b/modules/home/wayland/base/default.nix @@ -1,4 +1,17 @@ -{ lib, config, pkgs, ... }: { +{ lib, config, pkgs, ... }: +let + #Bookmark: javascript:(function(){window.location.href='mpv://'+encodeURIComponent(window.location.href);})(); + mpvHandler = pkgs.writeShellScriptBin "mpv-handler" '' + #!/bin/bash + exec 2>> /tmp/mpv-handler-debug.log + set -x + RAW_URL="$1" + STRIPPED_URL="''${RAW_URL:6}" + URL=$(printf '%b' "''${STRIPPED_URL//%/\\x}") + exec ${config.programs.mpv.finalPackage}/bin/mpv "$URL" + ''; +in +{ config = lib.mkIf (config.usercfg.wm == "Wayland") { home.packages = with pkgs; [ @@ -14,17 +27,23 @@ glib ]; + + xdg.desktopEntries."mpv-handler" = { + name = "MPV Scheme Handler"; + exec = "${mpvHandler}/bin/mpv-handler %u"; + terminal = false; + mimeType = [ "x-scheme-handler/mpv" ]; + }; + xdg.mimeApps = { enable = true; defaultApplications = { - "x-scheme-handler/discord-409416265891971072" = - [ "discord-409416265891971072.desktop" ]; - "x-scheme-handler/discord-402572971681644545" = - [ "discord-402572971681644545.desktop" ]; - "x-scheme-handler/discord-696343075731144724" = - [ "discord-696343075731144724.desktop" ]; - "x-scheme-handler/tg" = [ "org.telegram.desktop.desktop" ]; - "x-scheme-handler/tonsite" = [ "org.telegram.desktop.desktop" ]; + # --- System & Directories --- + "inode/directory" = [ "thunar.desktop" ]; + "x-scheme-handler/file" = [ "thunar.desktop" ]; + + # --- Web & Browsing --- + "x-scheme-handler/unknown" = [ "firefox.desktop" ]; "x-scheme-handler/http" = [ "firefox.desktop" ]; "x-scheme-handler/https" = [ "firefox.desktop" ]; "x-scheme-handler/chrome" = [ "firefox.desktop" ]; @@ -36,16 +55,77 @@ "application/x-extension-xhtml" = [ "firefox.desktop" ]; "application/x-extension-xht" = [ "firefox.desktop" ]; + # --- Chat & Social Protocol Schemes --- + "x-scheme-handler/tg" = [ "org.telegram.desktop.desktop" ]; + "x-scheme-handler/tonsite" = [ "org.telegram.desktop.desktop" ]; + "x-scheme-handler/discord-409416265891971072" = [ "discord-409416265891971072.desktop" ]; + "x-scheme-handler/discord-402572971681644545" = [ "discord-402572971681644545.desktop" ]; + "x-scheme-handler/discord-696343075731144724" = [ "discord-696343075731144724.desktop" ]; + + # --- Documents & Source Code (VSCodium) --- "application/pdf" = [ "org.pwmt.zathura-pdf-mupdf.desktop" ]; "text/plain" = [ "vscodium.desktop" ]; + "text/markdown" = [ "vscodium.desktop" ]; + "text/xml" = [ "vscodium.desktop" ]; + "text/csv" = [ "vscodium.desktop" ]; + "text/css" = [ "vscodium.desktop" ]; + "application/xml" = [ "vscodium.desktop" ]; + "application/json" = [ "vscodium.desktop" ]; + "application/toml" = [ "vscodium.desktop" ]; + "application/yaml" = [ "vscodium.desktop" ]; + "application/javascript" = [ "vscodium.desktop" ]; + "application/x-shellscript" = [ "vscodium.desktop" ]; + # --- Video & Audio (MPV) --- + "x-scheme-handler/mpv" = [ "mpv-handler.desktop" ]; "video/mp4" = [ "mpv.desktop" ]; + "video/mkv" = [ "mpv.desktop" ]; + "video/webm" = [ "mpv.desktop" ]; + "video/x-matroska" = [ "mpv.desktop" ]; + "video/quicktime" = [ "mpv.desktop" ]; + "video/x-msvideo" = [ "mpv.desktop" ]; + "video/x-flv" = [ "mpv.desktop" ]; + "video/3gpp" = [ "mpv.desktop" ]; + "audio/mp3" = [ "mpv.desktop" ]; + "audio/mpeg" = [ "mpv.desktop" ]; + "audio/ogg" = [ "mpv.desktop" ]; + "audio/wav" = [ "mpv.desktop" ]; + "audio/x-wav" = [ "mpv.desktop" ]; + "audio/flac" = [ "mpv.desktop" ]; + "audio/x-flac" = [ "mpv.desktop" ]; + "audio/mp4" = [ "mpv.desktop" ]; + "audio/aac" = [ "mpv.desktop" ]; + "audio/x-matroska-audio" = [ "mpv.desktop" ]; + "audio/x-mpegurl" = [ "mpv.desktop" ]; + "audio/mpegurl" = [ "mpv.desktop" ]; + # --- Images (IMV) --- "image/png" = [ "imv-dir.desktop" ]; "image/jpg" = [ "imv-dir.desktop" ]; + "image/jpeg" = [ "imv-dir.desktop" ]; + "image/webp" = [ "imv-dir.desktop" ]; + "image/gif" = [ "imv-dir.desktop" ]; + "image/svg+xml" = [ "imv-dir.desktop" ]; + "image/x-canon-cr2" = [ "imv-dir.desktop" ]; + "image/bmp" = [ "imv-dir.desktop" ]; + "image/tiff" = [ "imv-dir.desktop" ]; + "image/heic" = [ "imv-dir.desktop" ]; + "image/avif" = [ "imv-dir.desktop" ]; + + # --- Archives (Engrampa) --- + "application/zip" = [ "engrampa.desktop" ]; + "application/x-tar" = [ "engrampa.desktop" ]; + "application/x-gzip" = [ "engrampa.desktop" ]; + "application/x-bzip2" = [ "engrampa.desktop" ]; + "application/x-7z-compressed" = [ "engrampa.desktop" ]; + "application/x-rar" = [ "engrampa.desktop" ]; }; + associations = { - removed = { "application/pdf" = [ "krita_pdf.desktop" ]; }; + removed = { + "application/pdf" = [ "krita_pdf.desktop" ]; + "application/zip" = [ "org.prismlauncher.PrismLauncher.desktop" ]; + }; }; }; }; diff --git a/modules/nixos/tools/default.nix b/modules/nixos/tools/default.nix index d93bfd9..6d0a58e 100644 --- a/modules/nixos/tools/default.nix +++ b/modules/nixos/tools/default.nix @@ -1,4 +1,5 @@ { pkgs, ... }: { imports = [ ./debug ./develop ./telegraf ]; + environment.systemPackages = with pkgs; [ pkgs.engrampa ]; }