dotfiles

My PC Dotfiles & Website
commit 4f139cde4ac559931e14aaadc2603aad026e6f2f
parent bdb75a2d6b42a2153e70685ee581f4512ba9f8fd
Author: maydayv7 <maydayv7@gmail.com>
Date:   Mon, 19 Feb 2024 21:49:14 +0530

feat: Add `scripts/utils.sh`

Integrate utility actions with notifications

Diffstat:

Mmodules/apps/office.nix | 1+
Mmodules/gui/desktop/hyprland/README.md | 150++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mmodules/gui/desktop/hyprland/apps/default.nix | 18+++++++++++++++---
Mmodules/gui/desktop/hyprland/settings/keybindings.nix | 43++++++++++++++++++++++++++++---------------
Mmodules/gui/desktop/hyprland/settings/plugins.nix | 3+++
Ascripts/utils.sh | 105+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 228 insertions(+), 92 deletions(-)

diff --git a/modules/apps/office.nix b/modules/apps/office.nix @@ -26,6 +26,7 @@ in { # Internet google-chrome + linux-wifi-hotspot thunderbird whatsapp-for-linux zoom-us diff --git a/modules/gui/desktop/hyprland/README.md b/modules/gui/desktop/hyprland/README.md @@ -1,78 +1,80 @@ ## Shortcuts -| Keybind | Dispatcher | Command | Comments | -| --------------------------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | -| <kbd>$mod Q</kbd> | killactive | | Quit application | -| <kbd>$mod P</kbd> | pin | | Pin window on all Workspaces | -| <kbd>$mod M</kbd> | fullscreen | 1 | Maximize window | -| <kbd>$mod SHIFT M</kbd> | fullscreen | | Fullscreen window | -| <kbd>ALT Q</kbd> | hych:minimize | | Minimize window | -| <kbd>ALT SHIFT Q</kbd> | hych:toggle_restore_window | | Show minimized windows | -| <kbd>$mod left</kbd> | movefocus | l | Switch focus to left window | -| <kbd>$mod right</kbd> | movefocus | r | Switch focus to right window | -| <kbd>$mod up</kbd> | movefocus | u | Switch focus to up window | -| <kbd>$mod down</kbd> | movefocus | d | Switch focus to down window | -| <kbd>$mod SHIFT left</kbd> | swapwindow | l | Swap current window with left window | -| <kbd>$mod SHIFT right</kbd> | swapwindow | r | Swap current window with right window | -| <kbd>$mod SHIFT up</kbd> | swapwindow | u | Swap current window with up window | -| <kbd>$mod SHIFT down</kbd> | swapwindow | d | Swap current window with down window | -| <kbd>$mod Space</kbd> | togglesplit | | Change window split direction | -| <kbd>$mod SHIFT Space</kbd> | togglegroup | | Toggle application grouping | -| <kbd>$mod Tab</kbd> | changegroupactive | f | Cycle through grouped applications | -| <kbd>$mod SHIFT Tab</kbd> | changegroupactive | b | Cycle through grouped applications backwards | -| <kbd>$mod semicolon</kbd> | togglefloating | | Toggle floating window | -| <kbd>$mod apostrophe</kbd> | workspaceopt | allfloat | Toggle floating all windows | -| <kbd>$mod C</kbd> | centerwindow | | Center window | -| <kbd>ALT Tab</kbd> | cyclenext | | Cycle through open applications | -| <kbd>ALT Tab</kbd> | bringactivetotop | | | -| <kbd>ALT CTRL Tab</kbd> | cyclenext | prev | Cycle through grouped applications backward | -| <kbd>ALT CTRL Tab</kbd> | bringactivetotop | | | -| <kbd>ALT grave</kbd> | hycov:toggleoverview | | Show overview | -| <kbd>ALT SHIFT grave</kbd> | hycov:toggleoverview | forceall | Show overview including every open application | -| <kbd>ALT left</kbd> | hycov:movefocus | l | Switch to left window in overview | -| <kbd>ALT right</kbd> | hycov:movefocus | r | Switch to right window in overview | -| <kbd>ALT up</kbd> | hycov:movefocus | u | Switch to up window in overview | -| <kbd>ALT down</kbd> | hycov:movefocus | d | Switch to down window in overview | -| <kbd>$mod SHIFT slash</kbd> | exec | xdg-open ./README.md | Show this page | -| <kbd>$mod period</kbd> | workspace | m-1 | Move to previous workspace | -| <kbd>$mod comma</kbd> | workspace | m+1 | Move to next workspace | -| <kbd>$mod SHIFT grave</kbd> | movetoworkspace | special | Move window to special workspace | -| <kbd>$mod grave</kbd> | togglespecialworkspace | eDP-1 | Toggle special workspace | -| <kbd>$mod SHIFT period</kbd> | movetoworkspace | m-1 | Move window to previous workspace | -| <kbd>$mod SHIFT comma</kbd> | movetoworkspace | m+1 | Move window to next workspace | -| <kbd>$mod SHIFT period</kbd> | focusmonitor | l | Move focus to left monitor | -| <kbd>$mod SHIFT comma</kbd> | focusmonitor | r | Move focus to right monitor | -| <kbd>$mod SHIFT CTRL period</kbd> | movecurrentworkspacetomonitor | l | Move workspace to left monitor | -| <kbd>$mod SHIFT CTRL comma</kbd> | movecurrentworkspacetomonitor | r | Move workspace to right monitor | -| <kbd>$mod L</kbd> | exec | loginctl lock-session | Lock screen | -| <kbd>Print</kbd> | exec | grimblast --notify copysave area | Take Screenshot of area | -| <kbd>CTRL Print</kbd> | exec | grimblast --notify --cursor copysave output | Take Screenshot of window | -| <kbd>SHIFT Print</kbd> | exec | grimblast --notify --cursor copysave screen | Take Screenshot of screen | -| <kbd>$mod equal</kbd> | exec | hyprctl keyword misc:cursor_zoom_factor "$(hyprctl getoption misc:cursor_zoom_factor \| grep float \| awk '{print $2 + 1}')" | Zoom in | -| <kbd>$mod minus</kbd> | exec | hyprctl keyword misc:cursor_zoom_factor "$(hyprctl getoption misc:cursor_zoom_factor \| grep float \| awk '{print $2 - 1}')" | Zoom out | -| <kbd>$mod 1</kbd> | workspace | num | Create workspace 'num' | -| <kbd>$mod SHIFT 1</kbd> | movetoworkspace | num | Move window to workspace 'num' | -| <kbd>$mod D</kbd> | exec | nwg-displays | Monitor Configuration | -| <kbd>$mod F</kbd> | exec | thunar | File Manager | -| <kbd>$mod T</kbd> | exec | kitty | Terminal | -| <kbd>$mod W</kbd> | exec | firefox | Web Browser | -| <kbd>$mod Return</kbd> | exec | missioncenter | Task Manager | -| <kbd>$mod N</kbd> | exec | dunstctl history-pop | Show received notifications | -| <kbd>$mod slash</kbd> | exec | ulauncher-toggle | Application Launcher | -| <kbd>XF86Calculator</kbd> | exec | qalculate-gtk | Calculator | -| <kbd>$mod Escape</kbd> | exec | wlogout -p layer-shell | Logout | -| <kbd>XF86AudioPlay</kbd> | exec | playerctl play-pause | Play/Pause Media | -| <kbd>XF86AudioPrev</kbd> | exec | playerctl previous | Previous Media | -| <kbd>XF86AudioNext</kbd> | exec | playerctl next | Next Media | -| <kbd>XF86AudioMute</kbd> | exec | wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle | Mute Speakers | -| <kbd>XF86AudioMicMute</kbd> | exec | wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle | Mute Microphone | -| <kbd>XF86AudioRaiseVolume</kbd> | exec | wpctl set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 5%+ | Increase Volume | -| <kbd>XF86AudioLowerVolume</kbd> | exec | wpctl set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 5%- | Decrease Volume | -| <kbd>XF86MonBrightnessUp</kbd> | exec | brillo -u 300000 -A 5 | Increase Brightness | -| <kbd>XF86MonBrightnessDown</kbd> | exec | brillo -u 300000 -U 5 | Decrease Brightness | -| <kbd>$mod mouse:272</kbd> | movewindow | | Move window | -| <kbd>$mod mouse:273</kbd> | resizewindow | | Window resize | -| <kbd>$mod CTRL mouse:272</kbd> | resizewindow | | Window resize | -| <kbd>$mod SHIFT mouse:272</kbd> | moveintogroup | | Move window into application group | +| Keybind | Dispatcher | Command | Comments | +| -------------------------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | +| <kbd>$mod Q</kbd> | killactive | | Quit application | +| <kbd>$mod P</kbd> | pin | | Pin window on all Workspaces | +| <kbd>$mod M</kbd> | fullscreen | 1 | Maximize window | +| <kbd>$mod SHIFT M</kbd> | fullscreen | | Fullscreen window | +| <kbd>$mod U</kbd> | focusurgentorlast | | Activate urgent/last window | +| <kbd>$mod U</kbd> | bringactivetotop | | | +| <kbd>ALT Q</kbd> | hych:minimize | | Minimize window | +| <kbd>ALT SHIFT Q</kbd> | hych:toggle_restore_window | | Show minimized windows | +| <kbd>$mod left</kbd> | movefocus | l | Switch focus to left window | +| <kbd>$mod right</kbd> | movefocus | r | Switch focus to right window | +| <kbd>$mod up</kbd> | movefocus | u | Switch focus to up window | +| <kbd>$mod down</kbd> | movefocus | d | Switch focus to down window | +| <kbd>$mod SHIFT left</kbd> | swapwindow | l | Swap current window with left window | +| <kbd>$mod SHIFT right</kbd> | swapwindow | r | Swap current window with right window | +| <kbd>$mod SHIFT up</kbd> | swapwindow | u | Swap current window with up window | +| <kbd>$mod SHIFT down</kbd> | swapwindow | d | Swap current window with down window | +| <kbd>$mod Space</kbd> | togglesplit | | Change window split direction | +| <kbd>$mod SHIFT Space</kbd> | togglegroup | | Toggle application grouping | +| <kbd>$mod Tab</kbd> | changegroupactive | f | Cycle through grouped applications | +| <kbd>$mod SHIFT Tab</kbd> | changegroupactive | b | Cycle through grouped applications backwards | +| <kbd>$mod semicolon</kbd> | togglefloating | | Toggle floating window | +| <kbd>$mod apostrophe</kbd> | workspaceopt | allfloat | Toggle floating all windows | +| <kbd>$mod C</kbd> | centerwindow | | Center window | +| <kbd>ALT Tab</kbd> | cyclenext | | Cycle through open applications | +| <kbd>ALT Tab</kbd> | bringactivetotop | | | +| <kbd>ALT CTRL Tab</kbd> | cyclenext | prev | Cycle through grouped applications backward | +| <kbd>ALT CTRL Tab</kbd> | bringactivetotop | | | +| <kbd>ALT grave</kbd> | hycov:toggleoverview | | Show overview | +| <kbd>ALT SHIFT grave</kbd> | hycov:toggleoverview | forceall | Show overview including every open application | +| <kbd>ALT left</kbd> | hycov:movefocus | l | Switch to left window in overview | +| <kbd>ALT right</kbd> | hycov:movefocus | r | Switch to right window in overview | +| <kbd>ALT up</kbd> | hycov:movefocus | u | Switch to up window in overview | +| <kbd>ALT down</kbd> | hycov:movefocus | d | Switch to down window in overview | +| <kbd>$mod SHIFT slash</kbd> | exec | xdg-open ./README.md | Show this page | +| <kbd>$mod period</kbd> | workspace | m-1 | Move to previous workspace | +| <kbd>$mod comma</kbd> | workspace | m+1 | Move to next workspace | +| <kbd>$mod SHIFT grave</kbd> | movetoworkspace | special | Move window to special workspace | +| <kbd>$mod grave</kbd> | togglespecialworkspace | eDP-1 | Toggle special workspace on default display | +| <kbd>$mod SHIFT period</kbd> | movetoworkspace | m-1 | Move window to previous workspace | +| <kbd>$mod SHIFT comma</kbd> | movetoworkspace | m+1 | Move window to next workspace | +| <kbd>$mod ALT period</kbd> | focusmonitor | l | Move focus to left monitor | +| <kbd>$mod ALT comma</kbd> | focusmonitor | r | Move focus to right monitor | +| <kbd>$mod SHIFT ALT period</kbd> | movecurrentworkspacetomonitor | l | Move workspace to left monitor | +| <kbd>$mod SHIFT ALT comma</kbd> | movecurrentworkspacetomonitor | r | Move workspace to right monitor | +| <kbd>$mod L</kbd> | exec | loginctl lock-session | Lock screen | +| <kbd>Print</kbd> | exec | grimblast --notify copysave area | Take Screenshot of area | +| <kbd>CTRL Print</kbd> | exec | grimblast --notify --cursor copysave output | Take Screenshot of window | +| <kbd>SHIFT Print</kbd> | exec | grimblast --notify --cursor copysave screen | Take Screenshot of screen | +| <kbd>$mod equal</kbd> | exec | hyprctl keyword misc:cursor_zoom_factor "$(hyprctl getoption misc:cursor_zoom_factor \| grep float \| awk '{print $2 + 1}')" | Zoom in | +| <kbd>$mod minus</kbd> | exec | hyprctl keyword misc:cursor_zoom_factor "$(hyprctl getoption misc:cursor_zoom_factor \| grep float \| awk '{print $2 - 1}')" | Zoom out | +| <kbd>$mod 1</kbd> | workspace | num | Create workspace 'num' | +| <kbd>$mod SHIFT 1</kbd> | movetoworkspace | num | Move window to workspace 'num' | +| <kbd>$mod D</kbd> | exec | nwg-displays | Monitor Configuration | +| <kbd>$mod F</kbd> | exec | thunar | File Manager | +| <kbd>$mod T</kbd> | exec | kitty | Terminal | +| <kbd>$mod W</kbd> | exec | firefox | Web Browser | +| <kbd>$mod Return</kbd> | exec | missioncenter | Task Manager | +| <kbd>$mod N</kbd> | exec | dunstctl history-pop | Show received notifications in order | +| <kbd>$mod slash</kbd> | exec | ulauncher-toggle | Application Launcher | +| <kbd>XF86Calculator</kbd> | exec | qalculate-gtk | Calculator | +| <kbd>$mod Escape</kbd> | exec | wlogout -p layer-shell | System Logoff | +| <kbd>XF86AudioPlay</kbd> | exec | playerctl play-pause | Play/Pause Media | +| <kbd>XF86AudioPrev</kbd> | exec | playerctl previous | Previous Media | +| <kbd>XF86AudioNext</kbd> | exec | playerctl next | Next Media | +| <kbd>XF86AudioMute</kbd> | exec | wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle | Mute Speakers | +| <kbd>XF86AudioMicMute</kbd> | exec | wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle | Mute Microphone | +| <kbd>XF86AudioRaiseVolume</kbd> | exec | wpctl set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 5%+ | Increase Volume | +| <kbd>XF86AudioLowerVolume</kbd> | exec | wpctl set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 5%- | Decrease Volume | +| <kbd>XF86MonBrightnessUp</kbd> | exec | brillo -u 300000 -A 5 | Increase Brightness | +| <kbd>XF86MonBrightnessDown</kbd> | exec | brillo -u 300000 -U 5 | Decrease Brightness | +| <kbd>$mod mouse:272</kbd> | movewindow | | Move window | +| <kbd>$mod mouse:273</kbd> | resizewindow | | Window resize | +| <kbd>$mod CTRL mouse:272</kbd> | resizewindow | | Window resize | +| <kbd>$mod SHIFT mouse:272</kbd> | moveintogroup | | Move window into application group | Created using [`hyprkeys`](https://github.com/hyprland-community/Hyprkeys) diff --git a/modules/gui/desktop/hyprland/apps/default.nix b/modules/gui/desktop/hyprland/apps/default.nix @@ -31,6 +31,7 @@ in { environment.systemPackages = with pkgs; [ # Apps + apostrophe celluloid font-manager geany @@ -43,13 +44,14 @@ in { unstable.overskride playerctl qalculate-gtk + remmina shotwell transmission-gtk # Utilities cliphist grim - grimblast + unstable.grimblast hyprkeys pavucontrol slurp @@ -57,6 +59,7 @@ in { wl-clipboard wl-screenrec wlr-randr + xfce.exo ]; user = { @@ -82,7 +85,7 @@ in { directory = ["thunar.desktop"]; image = ["org.gnome.Shotwell-Viewer.desktop"]; magnet = ["transmission-gtk.desktop"]; - markdown = ["geany.desktop"]; + markdown = ["org.gnome.gitlab.somas.Apostrophe.desktop"]; pdf = ["atril.desktop"]; text = ["geany.desktop"]; video = ["io.github.celluloid_player.Celluloid.desktop"]; @@ -112,7 +115,7 @@ in { services.playerctld.enable = true; # Terminal - wayland.windowManager.hyprland.settings.misc.swallow_regex = " ^(kitty)$"; + wayland.windowManager.hyprland.settings.misc.swallow_regex = "^(kitty)$"; programs.kitty = { enable = true; font = with config.stylix.fonts; monospace // {size = sizes.terminal;}; @@ -182,6 +185,11 @@ in { shrink = "no"; word_wrap = "yes"; }; + utility = { + appname = "ignore"; + history_ignore = "yes"; + fullscreen = "show"; + }; }; }; @@ -226,6 +234,10 @@ in { # Terminal ".config/kitty/search".source = pkgs.custom.kitty-search; + ".config/xfce4/helpers.rc".text = '' + TerminalEmulator=kitty + TerminalEmulatorDismissed=true + ''; # File Manager ".config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml" = { diff --git a/modules/gui/desktop/hyprland/settings/keybindings.nix b/modules/gui/desktop/hyprland/settings/keybindings.nix @@ -1,8 +1,20 @@ -{sys, ...}: { +{ + sys, + pkgs, + files, + ... +}: let + inherit (sys.lib.stylix.colors) base07 base0D; + utils = "${pkgs.writeShellApplication { + name = "utils"; + text = builtins.replaceStrings ["#ffffff"] ["#${base07}"] files.scripts.utils; + runtimeInputs = with pkgs; [coreutils alsa-utils brillo playerctl libnotify wget]; + }}/bin/utils"; +in { ## Keybindings wayland.windowManager.hyprland.settings = { "$mod" = "SUPER"; - env = ["SLURP_ARGS, -dc ${sys.lib.stylix.colors.base0A}"]; # Screengrab + env = ["SLURP_ARGS, -dc ${base0D}"]; # Screengrab bind = [ ("$mod SHIFT, slash, exec, xdg-open " + ../README.md) @@ -12,6 +24,8 @@ "$mod, P, pin" "$mod, M, fullscreen, 1" "$mod SHIFT, M, fullscreen," + "$mod, U, focusurgentorlast" + "$mod, U, bringactivetotop," # Focus Change "$mod, left, movefocus, l" @@ -55,12 +69,12 @@ "$mod SHIFT, comma, movetoworkspace, m+1" # Cycle Monitors - "$mod SHIFT, period, focusmonitor, l" - "$mod SHIFT, comma, focusmonitor, r" + "$mod ALT, period, focusmonitor, l" + "$mod ALT, comma, focusmonitor, r" # Send Focused Workspace to Monitor - "$mod SHIFT CTRL, period, movecurrentworkspacetomonitor, l" - "$mod SHIFT CTRL, comma, movecurrentworkspacetomonitor, r" + "$mod SHIFT ALT, period, movecurrentworkspacetomonitor, l" + "$mod SHIFT ALT, comma, movecurrentworkspacetomonitor, r" # Screen Lock "$mod, L, exec, loginctl lock-session" @@ -99,24 +113,23 @@ # Ignore Locked State bindl = [ # Media Controls - ", XF86AudioPlay, exec, playerctl play-pause" - ", XF86AudioPrev, exec, playerctl previous" - ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPlay, exec, ${utils} play_pause" + ", XF86AudioPrev, exec, ${utils} prev_track" + ", XF86AudioNext, exec, ${utils} next_track" # Volume - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ", XF86AudioMute, exec, ${utils} volume_mute" ]; # Repeat on Hold bindle = [ # Volume - ", XF86AudioRaiseVolume, exec, wpctl set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 5%+" - ", XF86AudioLowerVolume, exec, wpctl set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 5%-" + ", XF86AudioRaiseVolume, exec, ${utils} volume_up" + ", XF86AudioLowerVolume, exec, ${utils} volume_down" # Backlight - ", XF86MonBrightnessUp, exec, brillo -u 300000 -A 5" - ", XF86MonBrightnessDown, exec, brillo -u 300000 -U 5" + ", XF86MonBrightnessUp, exec, ${utils} brightness_up" + ", XF86MonBrightnessDown, exec, ${utils} brightness_down" ]; }; } diff --git a/modules/gui/desktop/hyprland/settings/plugins.nix b/modules/gui/desktop/hyprland/settings/plugins.nix @@ -19,6 +19,9 @@ overview_gappo = 60 enable_gesture = 1 swipe_fingers = 4 + enable_alt_release_exit = 1 + alt_replace_key = Alt_L + alt_toggle_auto_next = 1 } } ''; diff --git a/scripts/utils.sh b/scripts/utils.sh @@ -0,0 +1,105 @@ +#! /usr/bin/env nix +#! nix shell nixpkgs#bash nixpkgs#coreutils nixpkgs#alsa-utils nixpkgs#brillo nixpkgs#playerctl nixpkgs#libnotify nixpkgs#wget -c bash + +# Utility Script to control Volume, Brightness, Media # + +set +eu +show_album_art=true +show_music_in_volume_indicator=true + +function brightness_notification { + brightness=$(brillo | grep -Po '[0-9]{1,3}' | head -n 1) + notify-send -a "utility" -t 1000 -h string:x-dunst-stack-tag:brightness -h int:value:"$brightness" " $brightness%" -h string:hlcolor:#ffffff +} + +function get_album_art { + url=$(playerctl -f "{{mpris:artUrl}}" metadata) + if [[ "$url" == "file://"* ]] + then + album_art="${url/file:\/\//}" + elif [[ "$url" == "http://"* ]] || [[ "$url" == "https://"* ]] + then + filename="$(echo "$url" | sed "s/.*\///")" + if [ ! -f "/tmp/$filename" ]; then wget -O "/tmp/$filename" "$url"; fi + album_art="/tmp/$filename" + else + album_art="" + fi +} + +function volume_notification { + volume=$(amixer get Master | grep '%' | head -n 1 | cut -d '[' -f 2 | cut -d '%' -f 1) + mute=$(amixer get Master | grep '%' | grep -oE '[^ ]+$' | grep off | head -n1) + if [ "$volume" -eq 0 ] || [ "$mute" == "[yes]" ] + then + volume_icon="" + else + volume_icon="" + fi + + if $show_music_in_volume_indicator + then + current_song=$(playerctl -f "{{title}} - {{artist}}" metadata) + if $show_album_art; then get_album_art; fi + notify-send -a "utility" -t 1000 -h string:x-dunst-stack-tag:volume -h int:value:"$volume" -i "$album_art" "$volume_icon $volume%" "$current_song" -h string:hlcolor:#ffffff + else + notify-send -a "utility" -t 1000 -h string:x-dunst-stack-tag:volume -h int:value:"$volume" "$volume_icon $volume%" -h string:hlcolor:#ffffff + fi +} + +function music_notification { + song_title=$(playerctl -f "{{title}}" metadata) + song_artist=$(playerctl -f "{{artist}}" metadata) + song_album=$(playerctl -f "{{album}}" metadata) + if $show_album_art; then get_album_art; fi + if [ -z "$song_album" ] + then + notify-send -a "utility" -t 1000 -h string:x-dunst-stack-tag:music -i "$album_art" "$song_title" "$song_artist" + else + notify-send -a "utility" -t 1000 -h string:x-dunst-stack-tag:music -i "$album_art" "$song_title" "$song_artist - $song_album" + fi +} + +case "$1" in + volume_up) + amixer set Master on + amixer sset Master 5%+ + volume_notification + ;; + + volume_down) + amixer set Master on + amixer sset Master 5%- + volume_notification + ;; + + volume_mute) + amixer set Master 1+ toggle + volume_notification + ;; + + brightness_up) + brillo -u 300000 -A 5 + brightness_notification + ;; + + brightness_down) + brillo -u 300000 -U 5 + brightness_notification + ;; + + next_track) + playerctl next + sleep 0.5 && music_notification + ;; + + prev_track) + playerctl previous + sleep 0.5 && music_notification + ;; + + play_pause) + playerctl play-pause + music_notification + ;; +esac