diff --git a/modules/gaming/legendary.nix b/modules/gaming/legendary.nix index 0d49636..0428a6a 100644 --- a/modules/gaming/legendary.nix +++ b/modules/gaming/legendary.nix @@ -7,7 +7,7 @@ environment.systemPackages = with pkgs; [ legendary-gl rare # GUI for Legendary (not working) - wineWowPackages.stable # 32-bit and 64-bit wineWowPackages + wineWowPackages.stable # 32-bit and 64-bit wineWowPackages, see https://nixos.wiki/wiki/Wine ]; home-manager.users.${config.user} = { diff --git a/modules/graphical/i3.nix b/modules/graphical/i3.nix index 2a00e62..b2ba2ca 100644 --- a/modules/graphical/i3.nix +++ b/modules/graphical/i3.nix @@ -93,13 +93,6 @@ in { }; keybindings = { - # PulseAudio adjust volume - "XF86AudioRaiseVolume" = "exec --no-startup-id pamixer -i 2"; - "XF86AudioLowerVolume" = "exec --no-startup-id pamixer -d 2"; - "XF86AudioMute" = "exec --no-startup-id pamixer -t"; - "XF86AudioMicMute" = - "exec --no-startup-id pamixer --default-source -t"; - # Adjust screen brightness "Shift+F12" = "exec ddcutil --display 1 setvcp 10 + 30 && sleep 1; exec ddcutil --display 2 setvcp 10 + 30"; diff --git a/modules/hardware/audio.nix b/modules/hardware/audio.nix index 632b3cd..88c17c4 100644 --- a/modules/hardware/audio.nix +++ b/modules/hardware/audio.nix @@ -1,13 +1,61 @@ -{ config, pkgs, lib, ... }: { +{ config, pkgs, lib, ... }: + +let + + # These micro-scripts change the volume while also triggering the volume + # notification widget + + increaseVolume = pkgs.writeShellScriptBin "increaseVolume" '' + ${pkgs.pamixer}/bin/pamixer -i 2 + volume=$(${pkgs.pamixer}/bin/pamixer --get-volume) + ${pkgs.volnoti}/bin/volnoti-show $volume + ''; + + decreaseVolume = pkgs.writeShellScriptBin "decreaseVolume" '' + ${pkgs.pamixer}/bin/pamixer -d 2 + volume=$(${pkgs.pamixer}/bin/pamixer --get-volume) + ${pkgs.volnoti}/bin/volnoti-show $volume + ''; + + toggleMute = pkgs.writeShellScriptBin "toggleMute" '' + ${pkgs.pamixer}/bin/pamixer --toggle-mute + mute=$(${pkgs.pamixer}/bin/pamixer --get-mute) + if [ "$mute" == "true" ]; then + ${pkgs.volnoti}/bin/volnoti-show --mute + else + volume=$(${pkgs.pamixer}/bin/pamixer --get-volume) + ${pkgs.volnoti}/bin/volnoti-show $volume + fi + ''; + +in { config = lib.mkIf config.gui.enable { sound.enable = true; hardware.pulseaudio.enable = true; - environment.systemPackages = with pkgs; - [ - pamixer # Audio control - ]; + environment.systemPackages = with pkgs; [ + pamixer # Audio control + volnoti # Volume notifications + ]; + + home-manager.users.${config.user} = { + + # Graphical volume notifications + services.volnoti.enable = true; + + # i3 keybinds for changing the volume + xsession.windowManager.i3.config.keybindings = { + "XF86AudioRaiseVolume" = + "exec --no-startup-id ${increaseVolume}/bin/increaseVolume"; + "XF86AudioLowerVolume" = + "exec --no-startup-id ${decreaseVolume}/bin/decreaseVolume"; + "XF86AudioMute" = "exec --no-startup-id ${toggleMute}/bin/toggleMute"; + "XF86AudioMicMute" = + "exec --no-startup-id pamixer --default-source --toggle-mute"; + }; + + }; }; }