From f740b78081fdcb855c34a1e06832d68e3711941c Mon Sep 17 00:00:00 2001 From: js0ny Date: Sun, 15 Mar 2026 21:43:13 +0000 Subject: [PATCH] dot(niri): wpctl with notification --- nixcfgs/flake.lock | 191 ++++++++++-------- .../desktop/wayland-wm/niri/keymaps.nix | 11 +- .../programs/desktop/wayland-wm/packages.nix | 1 + .../desktop/wayland-wm/volume-notify.nix | 46 +++++ 4 files changed, 158 insertions(+), 91 deletions(-) create mode 100644 nixcfgs/users/js0ny/programs/desktop/wayland-wm/volume-notify.nix diff --git a/nixcfgs/flake.lock b/nixcfgs/flake.lock index bb80f50..20dccce 100644 --- a/nixcfgs/flake.lock +++ b/nixcfgs/flake.lock @@ -100,11 +100,11 @@ ] }, "locked": { - "lastModified": 1771987897, - "narHash": "sha256-5pNQFGxG3fxS9pGnNBJjT76veotKIKq2XpAVFGAhCdI=", + "lastModified": 1772764582, + "narHash": "sha256-hSwjmpXHFqzSXrndVekA0IheKrbC7wi0IbfZTYwlmXw=", "owner": "caelestia-dots", "repo": "cli", - "rev": "b0d68f0a1c48fa138d6fde94dcbecea801a86a01", + "rev": "4bcd42f482d038b98145b0b03388244b68b7d35d", "type": "github" }, "original": { @@ -122,11 +122,11 @@ "quickshell": "quickshell" }, "locked": { - "lastModified": 1772330657, - "narHash": "sha256-cWblprYsDUeAWA57xAqxIjNxXvDI/rqYn6TFp2OPi/k=", + "lastModified": 1773574600, + "narHash": "sha256-RsBgiq93SjlYVHSYtz/ESALa7WgbLu+xcH0oTJRjztQ=", "owner": "caelestia-dots", "repo": "shell", - "rev": "278fd4a4ed1bfb42c3fe197ff38b587539c012aa", + "rev": "377778596acf90451d1bd19f0c03b5f1c0467958", "type": "github" }, "original": { @@ -140,11 +140,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1772153824, - "narHash": "sha256-T65qXmlcD9qFpPTi+mOXsn4dIkO2N8Ls67nqmuzepv0=", + "lastModified": 1773403535, + "narHash": "sha256-47MZaFrHxNO8tVUAmtVnerXUw2WWVluBOiU9MulN/yM=", "owner": "catppuccin", "repo": "nix", - "rev": "4b0f5b7bf7b3eeb484d49524f3c9791864ab9362", + "rev": "d45b5665cc638bad1b794350de02f4dd41b0bb47", "type": "github" }, "original": { @@ -174,11 +174,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1770910218, - "narHash": "sha256-IyHoHbhLFuIgFG+n7dqHwJaXuNnRaEsxCfAsfudV1KY=", + "lastModified": 1773079031, + "narHash": "sha256-RvCzINnVISBT3d0F1DoIcQFbQsbRJISW9qZeKTzmNaA=", "owner": "abenz1267", "repo": "elephant", - "rev": "c354a596ec7a7e34e9c26478dc7ef9680bc23e6d", + "rev": "53afe39cef252010f7c55bd33c5bae6dd50dcf0c", "type": "github" }, "original": { @@ -195,11 +195,11 @@ ] }, "locked": { - "lastModified": 1772672954, - "narHash": "sha256-OGEqiNZnLjQd0R2Ei+0QW9Y+t2MZy8vAOS8caNiQxbw=", + "lastModified": 1773537505, + "narHash": "sha256-MsOpMvnnUjYPAtyApi93HcoHD91pAiCXHrjOCG3F7zY=", "owner": "petrkozorezov", "repo": "firefox-addons-nix", - "rev": "8c947cfbce2f6a769c0fcb736fd2eb14ff83b64b", + "rev": "4e6bf49ad4fb8c9ddbb1b4fe2ef63b1b4ab4609a", "type": "github" }, "original": { @@ -285,11 +285,11 @@ ] }, "locked": { - "lastModified": 1765835352, - "narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=", + "lastModified": 1772408722, + "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "a34fae9c08a15ad73f295041fec82323541400a9", + "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", "type": "github" }, "original": { @@ -440,11 +440,11 @@ ] }, "locked": { - "lastModified": 1765774562, - "narHash": "sha256-UQhfCggNGDc7eam+EittlYmeW89CZVT1KkFIHZWBH7k=", + "lastModified": 1771131391, + "narHash": "sha256-HPBNYf7HiKtBVy7/69vKpLYHX6wTcUxndxmybzDlXP8=", "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "edcbb19948b6caf1700434e369fde6ff9e6a3c93", + "rev": "0b152e0f7c5cc265a529cd63374b80e2771b207b", "type": "github" }, "original": { @@ -460,11 +460,11 @@ ] }, "locked": { - "lastModified": 1772633327, - "narHash": "sha256-jl+DJB2DUx7EbWLRng+6HNWW/1/VQOnf0NsQB4PlA7I=", + "lastModified": 1773608492, + "narHash": "sha256-QZteyExJYSQzgxqdsesDPbQgjctGG7iKV/6ooyQPITk=", "owner": "nix-community", "repo": "home-manager", - "rev": "5a75730e6f21ee624cbf86f4915c6e7489c74acc", + "rev": "9a40ec3b78fc688d0908485887d355caa5666d18", "type": "github" }, "original": { @@ -498,11 +498,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1772698812, - "narHash": "sha256-7+K/VaZ7TXUeUGSYshg8wC3UsRZHB+M4x6r38Q1B79c=", + "lastModified": 1773577199, + "narHash": "sha256-Z77lGBRlueA+igtScByJ0soMRnEy5T/XG9w661OCPaw=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "5641625ef950f024e3e0e3f38bb91f876290c0be", + "rev": "afc45f69929e5b5ab23d903b24532cfe718de6be", "type": "github" }, "original": { @@ -531,11 +531,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1772207631, - "narHash": "sha256-Jkkg+KqshFO3CbTszVVpkKN2AOObYz+wMsM3ONo1z5g=", + "lastModified": 1773130184, + "narHash": "sha256-3bwx4WqCB06yfQIGB+OgIckOkEDyKxiTD5pOo4Xz2rI=", "owner": "YaLTeR", "repo": "niri", - "rev": "e708f546153f74acf33eb183b3b2992587a701e5", + "rev": "b07bde3ee82dd73115e6b949e4f3f63695da35ea", "type": "github" }, "original": { @@ -551,11 +551,11 @@ ] }, "locked": { - "lastModified": 1772379624, - "narHash": "sha256-NG9LLTWlz4YiaTAiRGChbrzbVxBfX+Auq4Ab/SWmk4A=", + "lastModified": 1773000227, + "narHash": "sha256-zm3ftUQw0MPumYi91HovoGhgyZBlM4o3Zy0LhPNwzXE=", "owner": "nix-darwin", "repo": "nix-darwin", - "rev": "52d061516108769656a8bd9c6e811c677ec5b462", + "rev": "da529ac9e46f25ed5616fd634079a5f3c579135f", "type": "github" }, "original": { @@ -587,11 +587,11 @@ ] }, "locked": { - "lastModified": 1772341813, - "narHash": "sha256-/PQ0ubBCMj/MVCWEI/XMStn55a8dIKsvztj4ZVLvUrQ=", + "lastModified": 1773552174, + "narHash": "sha256-mHSRNrT1rjeYBgkAlj07dW3+1nFEgAd8Gu6lgyfT9DU=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "a2051ff239ce2e8a0148fa7a152903d9a78e854f", + "rev": "8faeb68130df077450451b6734a221ba0d6cde42", "type": "github" }, "original": { @@ -612,11 +612,11 @@ ] }, "locked": { - "lastModified": 1773046894, - "narHash": "sha256-Hf5Q6gkaSXojSu9neW0dxvefUc3aA2T8ZQLTdGKIGOU=", + "lastModified": 1773607491, + "narHash": "sha256-EQ4R6eSwnlpVjRrcfnIPlenCrnumkKU5mA0MkzkYaMo=", "owner": "openclaw", "repo": "nix-openclaw", - "rev": "b39fc7f507097858273bda50834c6ab7367d7b09", + "rev": "4136401fbfbed632df86825dfdd4bac2f8d2b285", "type": "github" }, "original": { @@ -630,11 +630,11 @@ "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1773038583, - "narHash": "sha256-E9Z/7U2ozB7nvCUZp9QlWllFl1yNXaInnuBSiRV5qh4=", + "lastModified": 1773561580, + "narHash": "sha256-wT0bKTp45YnMkc4yXQvk943Zz/rksYiIjEXGdWzxnic=", "owner": "openclaw", "repo": "nix-steipete-tools", - "rev": "561592b0b1aa9b53595618fd867be633a192da54", + "rev": "cd4c429ff3b3aaef9f92e59812cf2baf5704b86f", "type": "github" }, "original": { @@ -647,14 +647,15 @@ "inputs": { "flake-compat": "flake-compat", "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_6" + "nixpkgs": "nixpkgs_6", + "nixpkgs-nixcord": "nixpkgs-nixcord" }, "locked": { - "lastModified": 1772671545, - "narHash": "sha256-7CFg6ppK000u+bd87+6HSVkFSC8PKm/N22MMZMtYla4=", + "lastModified": 1773597570, + "narHash": "sha256-A6KsirR9kxR1wVFTr8aagk5vUT3rvKTf79Qht6YkxUA=", "owner": "kaylorben", "repo": "nixcord", - "rev": "9c048e21aa13ab529f00ab1f13c3793ba0b49b7c", + "rev": "1cc0ddb766e459b7187e6aeb8b2e046d37361dc4", "type": "github" }, "original": { @@ -672,11 +673,11 @@ ] }, "locked": { - "lastModified": 1769288622, - "narHash": "sha256-GaDPnzDQAx5WRi12XVttCHsVw0VkOMYNpniT7KHYNfk=", + "lastModified": 1773434720, + "narHash": "sha256-mK4yEIF+qF7qtAzC5x8GU8kh5lY4v397azT+m1nBvRQ=", "owner": "nixpak", "repo": "nixpak", - "rev": "4276954ad4f877d79801fd8952af38a3370bcb65", + "rev": "1bf4e77b07ce445779894f17ab21016db5f58a4e", "type": "github" }, "original": { @@ -731,13 +732,29 @@ "type": "github" } }, - "nixpkgs-stable": { + "nixpkgs-nixcord": { "locked": { - "lastModified": 1772598333, - "narHash": "sha256-YaHht/C35INEX3DeJQNWjNaTcPjYmBwwjFJ2jdtr+5U=", + "lastModified": 1773222311, + "narHash": "sha256-BHoB/XpbqoZkVYZCfXJXfkR+GXFqwb/4zbWnOr2cRcU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fabb8c9deee281e50b1065002c9828f2cf7b2239", + "rev": "0590cd39f728e129122770c029970378a79d076a", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1773524153, + "narHash": "sha256-Jms57zzlFf64ayKzzBWSE2SGvJmK+NGt8Gli71d9kmY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e9f278faa1d0c2fc835bd331d4666b59b505a410", "type": "github" }, "original": { @@ -797,11 +814,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1771848320, - "narHash": "sha256-0MAd+0mun3K/Ns8JATeHT1sX28faLII5hVLq0L3BdZU=", + "lastModified": 1773122722, + "narHash": "sha256-FIqHByVqxCprNjor1NqF80F2QQoiiyqanNNefdlvOg4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2fc6539b481e1d2569f25f8799236694180c0993", + "rev": "62dc67aa6a52b4364dd75994ec00b51fbf474e50", "type": "github" }, "original": { @@ -829,11 +846,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1772624091, - "narHash": "sha256-QKyJ0QGWBn6r0invrMAK8dmJoBYWoOWy7lN+UHzW1jc=", + "lastModified": 1773389992, + "narHash": "sha256-wvfdLLWJ2I9oEpDd9PfMA8osfIZicoQ5MT1jIwNs9Tk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "80bdc1e5ce51f56b19791b52b2901187931f5353", + "rev": "c06b4ae3d6599a672a6210b7021d699c351eebda", "type": "github" }, "original": { @@ -861,11 +878,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1772465433, - "narHash": "sha256-ywy9troNEfpgh0Ee+zaV1UTgU8kYBVKtvPSxh6clYGU=", + "lastModified": 1773222311, + "narHash": "sha256-BHoB/XpbqoZkVYZCfXJXfkR+GXFqwb/4zbWnOr2cRcU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c581273b8d5bdf1c6ce7e0a54da9841e6a763913", + "rev": "0590cd39f728e129122770c029970378a79d076a", "type": "github" }, "original": { @@ -877,11 +894,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1772674223, - "narHash": "sha256-/suKbHSaSmuC9UY7G0VRQ3aO+QKqxAQPQ19wG7QNkF8=", + "lastModified": 1773507054, + "narHash": "sha256-Q8U5VXgrcxmCxPtCCJCIZkcAX3FCZwGh1GNVIXxMND0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "66d9241e3dc2296726dc522e62dbfe89c7b449f3", + "rev": "e80236013dc8b77aa49ca90e7a12d86f5d8d64c9", "type": "github" }, "original": { @@ -893,11 +910,11 @@ }, "nixpkgs_8": { "locked": { - "lastModified": 1772624091, - "narHash": "sha256-QKyJ0QGWBn6r0invrMAK8dmJoBYWoOWy7lN+UHzW1jc=", + "lastModified": 1773389992, + "narHash": "sha256-wvfdLLWJ2I9oEpDd9PfMA8osfIZicoQ5MT1jIwNs9Tk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "80bdc1e5ce51f56b19791b52b2901187931f5353", + "rev": "c06b4ae3d6599a672a6210b7021d699c351eebda", "type": "github" }, "original": { @@ -929,11 +946,11 @@ "nixpkgs": "nixpkgs_8" }, "locked": { - "lastModified": 1772725591, - "narHash": "sha256-I5WiAHsTkgUNOEtNvysNC7zVt4VNV0Ve3qsuiTQ9RiI=", + "lastModified": 1773608735, + "narHash": "sha256-dqaylgm5x/cjyqo/V1kAsiyQQ5S6/Kc8QGBAUem9nlg=", "owner": "nix-community", "repo": "NUR", - "rev": "3567b1d67fc040f0a9206b1824069b68fe172f05", + "rev": "21d9c792956edffe574411dcf08ea1429175e07a", "type": "github" }, "original": { @@ -998,11 +1015,11 @@ ] }, "locked": { - "lastModified": 1771926182, - "narHash": "sha256-QbXuSLhiSxOq6ydBL3+KGe1aiYWBW+e3J6qjJZaRMq0=", + "lastModified": 1772925576, + "narHash": "sha256-mMoiXABDtkSJxCYDrkhJ/TrrJf5M46oUfIlJvv2gkZ0=", "ref": "refs/heads/master", - "rev": "cddb4f061bab495f4473ca5f2c571b6c710efef7", - "revCount": 744, + "rev": "15a84097653593dd15fad59a56befc2b7bdc270d", + "revCount": 750, "type": "git", "url": "https://git.outfoxxed.me/outfoxxed/quickshell" }, @@ -1044,11 +1061,11 @@ ] }, "locked": { - "lastModified": 1772495394, - "narHash": "sha256-hmIvE/slLKEFKNEJz27IZ8BKlAaZDcjIHmkZ7GCEjfw=", + "lastModified": 1773550941, + "narHash": "sha256-wa/++bL2QeMUreNFBZEWluQfOYB0MnQIeGNMuaX9sfs=", "owner": "Mic92", "repo": "sops-nix", - "rev": "1d9b98a29a45abe9c4d3174bd36de9f28755e3ff", + "rev": "c469b6885f0dcd5c7c56bd935a0f08dbcd9e79e1", "type": "github" }, "original": { @@ -1269,11 +1286,11 @@ "systems": "systems_6" }, "locked": { - "lastModified": 1771062828, - "narHash": "sha256-y1jBFFO0u+V21y3YldHZozrDwVJVrdC+o3c4M8/rasU=", + "lastModified": 1773212610, + "narHash": "sha256-jYvDe44MLx444BfiO1EtCKgHoKfXeIG1DvAw7P2qCrY=", "owner": "abenz1267", "repo": "walker", - "rev": "19b1104585305e0806b842af341630f72038a4b9", + "rev": "04ec7aa1b0cf2524370d99d43283c3050178a813", "type": "github" }, "original": { @@ -1340,11 +1357,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1772429643, - "narHash": "sha256-M+bAeCCcjBnVk6w/4dIVvXvpJwOKnXjwi/lDbaN6Yws=", + "lastModified": 1773499041, + "narHash": "sha256-XZ4/tVdLeAYDgKe4JD4C7yYUKydMxwt8c2j6APFWcIc=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "10f985b84cdbcc3bbf35b3e7e43d1b2a84fa9ce2", + "rev": "309d8e2a29953f7465dc14c939e2afe4682c0aa9", "type": "github" }, "original": { @@ -1360,11 +1377,11 @@ ] }, "locked": { - "lastModified": 1772685307, - "narHash": "sha256-5xthZHeqwBeXNhnRIlxnCuaZLky0SZ6vQsxtd+eqhTU=", + "lastModified": 1773290160, + "narHash": "sha256-u09eF4Oafi+OIbTtKe/EWil26q1glcTATiSA7dF1oCI=", "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "dc92d88524ee83308795bc90f6a9f1d965265aaa", + "rev": "c7cb51b30960757ed9fb8eb28567b32585d0a688", "type": "github" }, "original": { diff --git a/nixcfgs/users/js0ny/programs/desktop/wayland-wm/niri/keymaps.nix b/nixcfgs/users/js0ny/programs/desktop/wayland-wm/niri/keymaps.nix index be5e236..0f33d3c 100644 --- a/nixcfgs/users/js0ny/programs/desktop/wayland-wm/niri/keymaps.nix +++ b/nixcfgs/users/js0ny/programs/desktop/wayland-wm/niri/keymaps.nix @@ -61,16 +61,19 @@ in { # spawn-sh "cliphist list | ${launcher} -dmenu | cliphist decode | wl-copy"; spawn "${launcher}" "-m" "clipboard"; + # See ../volume-notify.nix "XF86AudioRaiseVolume".allow-when-locked = true; "XF86AudioRaiseVolume".action = - spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; + spawn "volume-notify" "up"; "XF86AudioLowerVolume".allow-when-locked = true; "XF86AudioLowerVolume".action = - spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; + spawn "volume-notify" "down"; "XF86AudioMute".allow-when-locked = true; - "XF86AudioMute".action = spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; + "XF86AudioMute".action = + spawn "volume-notify" "mute"; "XF86AudioMicMute".allow-when-locked = true; - "XF86AudioMicMute".action = spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; + "XF86AudioMicMute".action = + spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; "XF86MonBrightnessUp" = { action = spawn "brightnessctl" "set" "10%+"; diff --git a/nixcfgs/users/js0ny/programs/desktop/wayland-wm/packages.nix b/nixcfgs/users/js0ny/programs/desktop/wayland-wm/packages.nix index bd77bbd..9a63643 100644 --- a/nixcfgs/users/js0ny/programs/desktop/wayland-wm/packages.nix +++ b/nixcfgs/users/js0ny/programs/desktop/wayland-wm/packages.nix @@ -48,6 +48,7 @@ in { ./sunsetr.nix ./systemd.nix ./dunst.nix + ./volume-notify.nix ]; home.packages = with pkgs; [ swayidle # Screensaver diff --git a/nixcfgs/users/js0ny/programs/desktop/wayland-wm/volume-notify.nix b/nixcfgs/users/js0ny/programs/desktop/wayland-wm/volume-notify.nix new file mode 100644 index 0000000..c1597c4 --- /dev/null +++ b/nixcfgs/users/js0ny/programs/desktop/wayland-wm/volume-notify.nix @@ -0,0 +1,46 @@ +{pkgs, ...}: let + volume-notify = pkgs.writeShellApplication { + name = "volume-notify"; + + runtimeInputs = with pkgs; [ + wireplumber + gawk + gnugrep + libnotify + ]; + + text = '' + if [ $# -eq 0 ]; then + echo "Usage: volume-notify {up|down|mute}" + exit 1 + fi + + case "$1" in + up) + wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ + ;; + down) + wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1- + ;; + mute) + wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + ;; + *) + echo "Invalid argument: $1" + exit 1 + ;; + esac + + if wpctl get-volume @DEFAULT_AUDIO_SINK@ | grep -q 'MUTED'; then + TEXT="Volume: Muted" + else + VOLUME=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk '{print $2 * 100}') + TEXT="Volume: ''${VOLUME}%" + fi + + notify-send -h string:x-canonical-private-synchronous:volume -t 1500 "🔊 Audio" "$TEXT" + ''; + }; +in { + home.packages = [volume-notify]; +}