added keybind with script to switch sink

This commit is contained in:
twoneis 2025-03-19 02:57:07 +01:00
parent cb999ee36c
commit 6d005a373a
2 changed files with 57 additions and 3 deletions

View file

@ -36,9 +36,9 @@ in
};
home-manager.users.${conf.username} = {
home.packages = with pkgs; [
wl-clipboard
xwayland-satellite-unstable
home.packages = [
pkgs.wl-clipboard
pkgs.xwayland-satellite
];
services.swayosd = {

View file

@ -7,6 +7,57 @@
inherit (config.conf) keys extraLayout;
inherit (lib.attrsets) genAttrs;
inherit (lib) mkMerge;
switch-sink =
pkgs.writeScript "switch-sink"
''
#!/usr/bin/env fish
# set -l regex '^.* (\*?) \s+ ([[:digit:]]*)\. .* \[.*$'
set -l sed 's/^.* ([[:digit:]]*)\. .*$/\1/'
set -l awk 'BEGIN { A=0; S=0; } /^Audio/ { A=1; } /Sinks/ { S=1; } /Sources/ { S=0; } /^Video/ { A=0; } { if (A==1 && S==1 && / [[:digit:]]*\./) { print; } }'
set -l lines (wpctl status | awk $awk)
set -l len (count $lines)
set -l current
set -l sinks
for i in (seq 1 $len)
set -l sink (echo $lines[$i] | sed -E $sed)
set -a sinks $sink
if string match -qr '\*' $lines[$i]
set current $sink
end
end
set -l len (count $sinks)
set -l index
for i in (seq 1 $len)
if [ $sinks[$i] = $current ]
if [ $argv[1] = '-f' ]
if [ $i = $len ]
set index 1
else
set index (math $i + 1)
end
else if [ $argv[1] = '-b' ]
if [ $i = 1 ]
set index $len
else
set index (math $i - 1)
end
else
exit 1
end
break
end
end
wpctl set-default $sinks[$index]
'';
in {
input = {
keyboard = {
@ -143,6 +194,9 @@ in {
"Mod+Space".action.spawn = ["fuzzel"];
"Mod+Y".action.spawn = ["yubioath-flutter"];
"XF86AudioNext".action.spawn = ["${switch-sink}" "-f"];
"XF86AudioPrev".action.spawn = ["${switch-sink}" "-b"];
"XF86AudioRaiseVolume".action.spawn = [
"swayosd-client"
"--output-volume"