added script to connect and disconnect headset
This commit is contained in:
parent
6d005a373a
commit
c2a5b6b617
3 changed files with 60 additions and 51 deletions
11
modules/niri/connect-headset.sh
Executable file
11
modules/niri/connect-headset.sh
Executable file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/usr/bin/env fish
|
||||||
|
|
||||||
|
set -l mac "FC:C3:3A:00:04:C2"
|
||||||
|
|
||||||
|
set -l connected (bluetoothctl info $mac | grep "Connected:")
|
||||||
|
|
||||||
|
if string match -qr ".*yes" $connected
|
||||||
|
bluetoothctl disconnect $mac
|
||||||
|
else
|
||||||
|
bluetoothctl connect $mac
|
||||||
|
end
|
|
@ -7,57 +7,8 @@
|
||||||
inherit (config.conf) keys extraLayout;
|
inherit (config.conf) keys extraLayout;
|
||||||
inherit (lib.attrsets) genAttrs;
|
inherit (lib.attrsets) genAttrs;
|
||||||
inherit (lib) mkMerge;
|
inherit (lib) mkMerge;
|
||||||
switch-sink =
|
switch-sink = pkgs.writeScript "switch-sink" (builtins.readFile ./switch-sink.sh);
|
||||||
pkgs.writeScript "switch-sink"
|
connect-headset = pkgs.writeScript "connect-headset" (builtins.readFile ./connect-headset.sh);
|
||||||
''
|
|
||||||
#!/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 {
|
in {
|
||||||
input = {
|
input = {
|
||||||
keyboard = {
|
keyboard = {
|
||||||
|
@ -196,6 +147,7 @@ in {
|
||||||
|
|
||||||
"XF86AudioNext".action.spawn = ["${switch-sink}" "-f"];
|
"XF86AudioNext".action.spawn = ["${switch-sink}" "-f"];
|
||||||
"XF86AudioPrev".action.spawn = ["${switch-sink}" "-b"];
|
"XF86AudioPrev".action.spawn = ["${switch-sink}" "-b"];
|
||||||
|
"XF86AudioPlay".action.spawn = ["${connect-headset}"];
|
||||||
|
|
||||||
"XF86AudioRaiseVolume".action.spawn = [
|
"XF86AudioRaiseVolume".action.spawn = [
|
||||||
"swayosd-client"
|
"swayosd-client"
|
||||||
|
|
46
modules/niri/switch-sink.sh
Executable file
46
modules/niri/switch-sink.sh
Executable file
|
@ -0,0 +1,46 @@
|
||||||
|
#!/usr/bin/env fish
|
||||||
|
|
||||||
|
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]
|
Loading…
Add table
Add a link
Reference in a new issue