diff options
author | Griffin Smith <grfn@gws.fyi> | 2020-09-12T19·14-0400 |
---|---|---|
committer | glittershark <grfn@gws.fyi> | 2020-09-12T19·20+0000 |
commit | 6f2094c1464ecd9513563728a1d5212792717adf (patch) | |
tree | bb4d7076d671889be286fcb2d11cd24cf8403c5b /users/glittershark/system/home/modules | |
parent | 65967bbbb163d7955de412381831c52c14ce1dbc (diff) |
feat(gs): Bind a push-to-talk key r/1784
Bind a key, which I've located at the top-left of my right keyboard, to a momentary push-to-talk by muting and unmuting my pulseaudio source using xbindkeys. I had been putting this off for a while because i3 doesn't support binding different commands to keyup than to keydown events, but the xbindkeys support appears to have solved that reasonably well, plus it's got Scheme in it so that's cool. If there's demand for it I'll gladly expose this as a reusable, configurable home-manager module outside my users dir in the depot. Change-Id: Ie591c93037dbdac364d5d8a718d99edb70780789 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1975 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
Diffstat (limited to 'users/glittershark/system/home/modules')
-rw-r--r-- | users/glittershark/system/home/modules/ptt.nix | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/users/glittershark/system/home/modules/ptt.nix b/users/glittershark/system/home/modules/ptt.nix new file mode 100644 index 000000000000..436c8f261797 --- /dev/null +++ b/users/glittershark/system/home/modules/ptt.nix @@ -0,0 +1,44 @@ +{ config, lib, pkgs, ... }: + +let + + pttKeycode = "152"; + sourceID = "3"; + + mute = pkgs.writeShellScript "mute-mic" '' + xset -r ${pttKeycode} + ${pkgs.pulseaudio}/bin/pactl set-source-mute ${sourceID} 1 + ''; + + unmute = pkgs.writeShellScript "unmute-mic" '' + xset -r ${pttKeycode} + ${pkgs.pulseaudio}/bin/pactl set-source-mute ${sourceID} 0 + ''; + +in + +{ + home.packages = with pkgs; [ + xbindkeys + ]; + + + home.file.".xbindkeysrc.scm".text = '' + (xbindkey '("c:${pttKeycode}") "${unmute}") + (xbindkey '(release "c:${pttKeycode}") "${mute}") + ''; + + systemd.user.services."xbindkeys" = { + Unit = { + Description = "Keybind daemon for push-to-talk"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; + + Install = { WantedBy = [ "graphical-session.target" ]; }; + + Service = { + ExecStart = "${pkgs.xbindkeys}/bin/xbindkeys -n -v"; + }; + }; +} |