dev: automated commit - 2025-06-24 19:45:47
This commit is contained in:
parent
38747ba84e
commit
a9a990ffed
5 changed files with 129 additions and 11 deletions
|
@ -30,7 +30,7 @@ window_padding_width 0
|
|||
window_margin_width 2
|
||||
hide_window_decorations no
|
||||
|
||||
background_opacity 0.90
|
||||
background_opacity 0.989
|
||||
background_blur 1
|
||||
|
||||
# advance
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
include /etc/sway/config.d/*
|
||||
|
||||
# Sway Window Manager Configuration
|
||||
# ================================
|
||||
|
||||
|
@ -93,6 +95,11 @@ bindsym {
|
|||
$mod+Shift+e exec --no-startup-id wlogout
|
||||
}
|
||||
|
||||
bindgesture swipe:right focus right
|
||||
bindgesture swipe:left focus left
|
||||
bindgesture swipe:up workspace next
|
||||
bindgesture swipe:down workspace prev
|
||||
|
||||
# Application Launchers
|
||||
bindsym {
|
||||
$mod+Return exec $term
|
||||
|
@ -299,10 +306,6 @@ exec {
|
|||
~/.bin/randwall
|
||||
~/.bin/waybar.sh
|
||||
|
||||
# Environment and system integration
|
||||
dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY SWAYSOCK XDG_SESSION_DESKTOP=sway
|
||||
systemctl --user import-environment
|
||||
|
||||
# System services - lxsession includes polkit
|
||||
lxsession
|
||||
|
||||
|
|
|
@ -73,6 +73,7 @@
|
|||
"custom/playerlabel"
|
||||
],
|
||||
"modules-right": [
|
||||
"custom/microphone",
|
||||
"custom/randwall",
|
||||
"pulseaudio",
|
||||
"custom/vpn",
|
||||
|
@ -91,6 +92,13 @@
|
|||
"interval": 1,
|
||||
"exec": "/home/forbi/.local/bin/vpn",
|
||||
"on-click": "/home/forbi/.local/bin/vpn toggle"
|
||||
},
|
||||
"custom/microphone": {
|
||||
"format": "{}",
|
||||
"return-type": "json",
|
||||
"exec": "~/.config/waybar/scripts/mic-status.sh --monitor",
|
||||
"restart-interval": 1,
|
||||
"on-click": "pavucontrol -t 4"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
93
waybar/.config/waybar/scripts/mic-status.sh
Executable file
93
waybar/.config/waybar/scripts/mic-status.sh
Executable file
|
@ -0,0 +1,93 @@
|
|||
#!/bin/bash
|
||||
SOURCE="alsa_input.pci-0000_c1_00.6.analog-stereo"
|
||||
HEADSET_PORT="analog-input-headset-mic"
|
||||
INTERNAL_PORT="analog-input-internal-mic"
|
||||
WAYBAR_SIGNAL_FILE="/tmp/waybar-mic-update"
|
||||
|
||||
# Función para log con timestamp
|
||||
log() {
|
||||
echo "[$(date '+%H:%M:%S')] $1"
|
||||
}
|
||||
|
||||
# Función para notificar a waybar
|
||||
notify_waybar() {
|
||||
local port="$1"
|
||||
local status_file="$HOME/.cache/mic-status"
|
||||
|
||||
case "$port" in
|
||||
"$HEADSET_PORT")
|
||||
echo '{"text":"🎧","tooltip":"Headset microphone","class":"headset"}' >"$status_file"
|
||||
;;
|
||||
"$INTERNAL_PORT")
|
||||
echo '{"text":"💻","tooltip":"Internal microphone","class":"internal"}' >"$status_file"
|
||||
;;
|
||||
*)
|
||||
echo '{"text":"🎤","tooltip":"Unknown: '"$port"'","class":"unknown"}' >"$status_file"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Señal a waybar para actualizar (si está usando el método de archivo)
|
||||
touch "$WAYBAR_SIGNAL_FILE"
|
||||
}
|
||||
|
||||
# Función para cambiar puerto con verificación
|
||||
switch_port() {
|
||||
local port="$1"
|
||||
local name="$2"
|
||||
|
||||
if pactl set-source-port "$SOURCE" "$port" 2>/dev/null; then
|
||||
log "✓ Switched to $name"
|
||||
notify_waybar "$port"
|
||||
else
|
||||
log "✗ Failed to switch to $name"
|
||||
fi
|
||||
}
|
||||
|
||||
# Verificar que pactl existe
|
||||
if ! command -v pactl &>/dev/null; then
|
||||
log "✗ pactl not found. Install pulseaudio-utils"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log "Starting microphone auto-switcher..."
|
||||
log "Monitoring: $SOURCE"
|
||||
|
||||
# Procesar estado inicial
|
||||
source_info=$(pactl list sources | grep -A1000 "$SOURCE" 2>/dev/null)
|
||||
if [ -z "$source_info" ]; then
|
||||
log "✗ Source not found: $SOURCE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Estado inicial para waybar
|
||||
active_port=$(echo "$source_info" | grep "Active Port" | awk '{print $3}')
|
||||
notify_waybar "$active_port"
|
||||
|
||||
# Loop principal
|
||||
pactl subscribe 2>/dev/null | while read -r line; do
|
||||
if echo "$line" | grep -q "Event 'change' on source"; then
|
||||
# Obtener info actual
|
||||
source_info=$(pactl list sources | grep -A1000 "$SOURCE" 2>/dev/null)
|
||||
[ -z "$source_info" ] && continue
|
||||
|
||||
active_port=$(echo "$source_info" | grep "Active Port" | awk '{print $3}')
|
||||
headset_status=$(echo "$source_info" | grep "$HEADSET_PORT")
|
||||
|
||||
log "Event detected - Active: $active_port"
|
||||
|
||||
# Lógica de switching simplificada
|
||||
if echo "$headset_status" | grep -q "availability unknown"; then
|
||||
# Headset conectado
|
||||
if [[ "$active_port" != "$HEADSET_PORT" ]]; then
|
||||
switch_port "$HEADSET_PORT" "headset mic"
|
||||
fi
|
||||
elif echo "$headset_status" | grep -q "not available"; then
|
||||
# Headset desconectado
|
||||
if [[ "$active_port" != "$INTERNAL_PORT" ]]; then
|
||||
switch_port "$INTERNAL_PORT" "internal mic"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
log "✗ pactl subscribe ended unexpectedly"
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
/* Window Styles */
|
||||
window#waybar {
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
border-bottom: 1px solid #282828;
|
||||
border-radius: 10px;
|
||||
color: #f4d9e1;
|
||||
|
@ -21,15 +21,12 @@ tooltip {
|
|||
}
|
||||
|
||||
/* Workspace Styles */
|
||||
#workspaces {
|
||||
padding: 0 0 0 5px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
color: #fff;
|
||||
border-radius: 10px;
|
||||
padding: 3px;
|
||||
margin: 0 4px;
|
||||
padding: 0px;
|
||||
margin: 4px 4px;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
|
@ -151,3 +148,20 @@ tooltip {
|
|||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
#custom-microphone {
|
||||
padding: 0 10px;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
#custom-microphone.headset {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
|
||||
#custom-microphone.internal {
|
||||
color: #f9e2af;
|
||||
}
|
||||
|
||||
#custom-microphone.unknown {
|
||||
color: #f38ba8;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue