diff --git a/README.md b/README.md index aa6146b..5a2dfc2 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,10 @@ tocado. | Impr Pant | Captura de pantalla completa con `maim` | | Shift+Impr Pant | Captura de una región | +Las teclas de audio (y los clics en VOL de la barra) usan el script `volumen` +(`home/.local/bin/volumen`): cambia el volumen con `wpctl`, refresca slstatus +y muestra una notificación con el nivel. + Las capturas se guardan en `~/Imágenes/Capturas`, se copian al portapapeles y muestran una notificación. diff --git a/home/.local/bin/volumen b/home/.local/bin/volumen new file mode 100755 index 0000000..c9d8d23 --- /dev/null +++ b/home/.local/bin/volumen @@ -0,0 +1,41 @@ +#!/bin/sh +# Cambia el volumen o silencia la salida o el micro (PipeWire), refresca +# slstatus y lo muestra en una notificación que se sustituye a sí misma. +# Uso: volumen subir|bajar|silenciar|micro + +case $1 in +subir) wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+ ;; +bajar) wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- ;; +silenciar) wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle ;; +micro) wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle ;; +*) echo "uso: volumen subir|bajar|silenciar|micro" >&2; exit 1 ;; +esac + +pkill -USR1 -x slstatus + +if [ "$1" = micro ]; then + if wpctl get-volume @DEFAULT_AUDIO_SOURCE@ | grep -q MUTED; then + icono=microphone-sensitivity-muted texto="Silenciado" + else + icono=microphone-sensitivity-high texto="Activado" + fi + exec notify-send -t 2000 -h string:x-dunst-stack-tag:micro \ + -i "$icono" "Micrófono" "$texto" +fi + +# wpctl get-volume da algo como "Volume: 0.35 [MUTED]" +estado=$(wpctl get-volume @DEFAULT_AUDIO_SINK@) +vol=$(echo "$estado" | awk '{ printf "%d", $2 * 100 + 0.5 }') +case $estado in +*MUTED*) icono=audio-volume-muted texto="Silenciado" ;; +*) + if [ "$vol" -eq 0 ]; then icono=audio-volume-muted + elif [ "$vol" -lt 34 ]; then icono=audio-volume-low + elif [ "$vol" -lt 67 ]; then icono=audio-volume-medium + else icono=audio-volume-high + fi + texto="$vol %" + ;; +esac +exec notify-send -t 2000 -h string:x-dunst-stack-tag:volumen \ + -h "int:value:$vol" -i "$icono" "Volumen" "$texto" diff --git a/install.sh b/install.sh index e56b96d..8885a41 100755 --- a/install.sh +++ b/install.sh @@ -18,7 +18,7 @@ PAQUETES=" xorg xinit setxkbmap xrandr dbus elogind polkit picom dunst libnotify feh maim xclip - pipewire wireplumber libspa-bluetooth alsa-pipewire pavucontrol + pipewire wireplumber libspa-bluetooth alsa-pipewire rtkit pavucontrol NetworkManager bluez blueman acpid chrony font-firacode nerd-fonts-symbols-ttf papirus-icon-theme diff --git a/suckless/dwm/config.h b/suckless/dwm/config.h index 8ed1c90..2b4c6ac 100644 --- a/suckless/dwm/config.h +++ b/suckless/dwm/config.h @@ -79,12 +79,14 @@ static const char *termcmd[] = { "st", NULL }; static const char *clipcmd[] = { "clipmenu", "-fn", dmenufont, "-nb", col_bg, "-nf", col_fg, "-sb", col_accent, "-sf", col_accent_fg, NULL }; static const char *lockcmd[] = { "slock", NULL }; -/* Audio: tras cada cambio se avisa a slstatus (SIGUSR1) para que refresque la barra al momento */ +/* Tras cambiar algo de la barra se avisa a slstatus (SIGUSR1) para que la refresque al momento */ #define STATUSREFRESH "; pkill -USR1 -x slstatus" -#define VOLUPCMD "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+" STATUSREFRESH -#define VOLDOWNCMD "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" STATUSREFRESH -#define VOLMUTECMD "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" STATUSREFRESH -#define MICMUTECMD "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" STATUSREFRESH +/* Audio: el script volumen (home/.local/bin) cambia el volumen con wpctl, + * refresca slstatus y lo muestra en una notificación */ +#define VOLUPCMD "volumen subir" +#define VOLDOWNCMD "volumen bajar" +#define VOLMUTECMD "volumen silenciar" +#define MICMUTECMD "volumen micro" #define VOLUP SHCMD(VOLUPCMD) #define VOLDOWN SHCMD(VOLDOWNCMD) #define VOLMUTE SHCMD(VOLMUTECMD)