Fix hyprland, monitor management and waybar after lua switch

This commit is contained in:
2026-08-29 00:55:17 +02:00
parent 9db0b4dac0
commit be4de88d1a
45 changed files with 593 additions and 388 deletions

View File

@@ -1,157 +0,0 @@
{
"output": "HDMI-A-1",
"position": "bottom",
"layer": "top",
"height": 36,
"spacing": 3,
"modules-left": [
"hyprland/workspaces",
"hyprland/submap"
],
"modules-center": [
"hyprland/window"
],
"modules-right": [
"pulseaudio",
"pulseaudio#microphone",
"network",
"cpu",
"memory",
"temperature",
"backlight",
"custom/battery",
"clock",
"tray",
"custom/power"
],
// Le module workspaces s'adapte selon l'écran
"hyprland/workspaces": {
"format": "{name} {icon}",
"on-click": "activate",
"format-icons": {
"active": "",
"default": "",
"empty": ""
},
"all-outputs": false,
// Ici on définit les workspaces persistants pour chaque écran
"persistent-workspaces": {
"eDP-1": [1, 2, 3],
"HDMI-A-1": [4, 5, 6]
}
},
"hyprland/window": {
"format": "󱂬 {title}",
"rewrite": {
"(.*) — Mozilla Firefox": "󰈹 Firefox",
"(.*) - Visual Studio Code": "󰨞 VS Code",
"(.*)vlc": "󰕼 VLC",
"lucas@dell16-lucas:(.*)": " Terminal"
},
"separate-outputs": true
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": "󰝟 {volume}%",
"format-icons": {
"default": [
"",
"",
""
]
},
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
"on-click-right": "pavucontrol"
},
"pulseaudio#microphone": {
"type": "pulseaudio",
"format": "{format_source}",
"format-source": " {volume}%",
"format-source-muted": "",
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
"on-click-right": "pavucontrol"
},
"network": {
"interval": 10,
"format-wifi": "{icon} {essid} {signalStrength}%",
"format-icons": [
"󰤯",
"󰤟",
"󰤢",
"󰤥",
"󰤨"
],
"format-ethernet": "󰈁 {ifname}",
"format-disconnected": "󰈂 Disconnected",
"format-alt": "{ipaddr}/{cidr}",
"on-click-right": "networkmanager_dmenu"
},
"cpu": {
"interval": 5,
"format": " {usage}%",
"tooltip": false,
"on-click": "alacritty -e btop"
},
"memory": {
"interval": 5,
"format": " {percentage}%",
"on-click": "alacritty -e btop"
},
"temperature": {
"interval": 5,
"hwmon-path": "/sys/class/hwmon/hwmon7/temp1_input",
"critical-threshold": 80,
"format-critical": "{icon} {temperatureC}°C",
"format": "{icon} {temperatureC}°C",
"format-icons": [
"",
"",
"",
"",
""
],
"tooltip": false,
"on-click": "alacritty -e btop"
},
"backlight": {
"format": "{icon} {percent}%",
"format-icons": [
"",
""
]
},
"custom/battery": {
"exec": "~/scripts/batt-info",
"interval": 2,
"on-click": "~/scripts/batt-toggle",
"on-click-right": "",
"tooltip-format": "Clic: basculer limite charge"
},
"clock": {
"format": " {:%H:%M}",
"format-alt": " {:%d/%m/%Y}",
"smooth-scrolling-threshold": 1,
"actions": {
"on-scroll-up": "shift_up",
"on-scroll-down": "shift_down"
},
"tooltip-format": "{calendar}",
"calendar": {
"mode": "month",
"mode-mon-col": 1,
"format": {
"months": "<span color='#cba6f7'><b>{}</b></span>",
"days": "<span color='#bac2de'>{}</span>",
"weekdays": "<span color='#89b4fa'><b>{}</b></span>",
"today": "<span color='#f38ba8'><b><u>{}</u></b></span>"
}
}
},
"custom/power": {
"format": "⏻",
"on-click": "wlogout"
}
}

View File

@@ -1,5 +1,5 @@
{
"output": "eDP-1",
"output": ["eDP-1", "HDMI-A-1"], // ← les deux écrans
"position": "bottom",
"layer": "top",
"height": 36,
@@ -25,7 +25,6 @@
"custom/power"
],
// Le module workspaces s'adapte selon l'écran
"hyprland/workspaces": {
"format": "{name} {icon}",
"on-click": "activate",
@@ -35,7 +34,7 @@
"empty": ""
},
"all-outputs": false,
// Ici on définit les workspaces persistants pour chaque écran
// Les workspaces persistants sont déjà différenciés par sortie
"persistent-workspaces": {
"eDP-1": [1, 2, 3],
"HDMI-A-1": [4, 5, 6]
@@ -57,11 +56,7 @@
"format": "{icon} {volume}%",
"format-muted": "󰝟 {volume}%",
"format-icons": {
"default": [
"",
"",
""
]
"default": ["", "", ""]
},
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
"on-click-right": "pavucontrol"
@@ -71,19 +66,14 @@
"format": "{format_source}",
"format-source": " {volume}%",
"format-source-muted": "",
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
// CORRECTION : on mute la source (micro) et non le sink
"on-click": "pactl set-source-mute @DEFAULT_SOURCE@ toggle",
"on-click-right": "pavucontrol"
},
"network": {
"interval": 10,
"format-wifi": "{icon} {essid} {signalStrength}%",
"format-icons": [
"󰤯",
"󰤟",
"󰤢",
"󰤥",
"󰤨"
],
"format-icons": ["󰤯", "󰤟", "󰤢", "󰤥", "󰤨"],
"format-ethernet": "󰈁 {ifname}",
"format-disconnected": "󰈂 Disconnected",
"format-alt": "{ipaddr}/{cidr}",
@@ -102,31 +92,23 @@
},
"temperature": {
"interval": 5,
// Remplacez par le chemin qui fonctionne sur votre machine
"hwmon-path": "/sys/class/hwmon/hwmon7/temp1_input",
"critical-threshold": 80,
"format-critical": "{icon} {temperatureC}°C",
"format": "{icon} {temperatureC}°C",
"format-icons": [
"",
"",
"",
"",
""
],
"format-icons": ["", "", "", "", ""],
"tooltip": false,
"on-click": "alacritty -e btop"
},
"backlight": {
"format": "{icon} {percent}%",
"format-icons": [
"",
""
]
"format-icons": ["", ""]
},
"custom/battery": {
"exec": "~/scripts/batt-info",
"exec": "/home/lucas/.config/waybar/scripts/batt-info.sh",
"interval": 2,
"on-click": "~/scripts/batt-toggle",
"on-click": "/home/lucas/.config/waybar/scripts/batt-toggle.sh",
"on-click-right": "",
"tooltip-format": "Clic: basculer limite charge"
},
@@ -154,4 +136,4 @@
"format": "⏻",
"on-click": "wlogout"
}
}
}

View File

@@ -1,110 +0,0 @@
{
"position": "bottom",
"layer": "top",
"height": 34,
"spacing": 3,
"modules-left": ["hyprland/workspaces", "hyprland/submap"],
"modules-center": ["hyprland/window"],
"modules-right": [
"pulseaudio",
"pulseaudio#microphone",
"network",
"cpu",
"memory",
"temperature",
"backlight",
"battery",
"clock",
"tray",
"custom/power"
],
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": "",
"format-icons": {
"default": ["", "", ""]
},
"on-click": "pavucontrol"
},
"pulseaudio#microphone": {
"format": "{format_source}",
"format-source": " {volume}%",
"format-source-muted": "",
"on-click": "pamixer --default-source -t"
},
"network": {
"interval": 10,
"format-wifi": "{icon} {essid} {signalStrength}%",
"format-icons": ["󰤯", "󰤟", "󰤢", "󰤥", "󰤨"],
"format-ethernet": "󰈁 {ifname}",
"format-disconnected": "󰈂 Disconnected",
// Clic gauche : Bascule l'affichage vers l'IP (format-alt)
// Pas de commande nécessaire, c'est le comportement natif de Waybar au clic
"format-alt": "{ipaddr}/{cidr}",
// Clic droit : Ouvre le menu de NetworkManager
"on-click-right": "networkmanager_dmenu"
},
"cpu": {
"interval": 5,
"format": " {usage}%",
"tooltip": false
},
"memory": {
"interval": 5,
"format": " {percentage}%", // Vérifiez bien l'espace entre l'icône et le texte
},
"temperature": {
"interval": 5,
"hwmon-path": "/sys/class/hwmon/hwmon7/temp1_input",
"critical-threshold": 80,
"format-critical": "{icon} {temperatureC}°C",
"format": "{icon} {temperatureC}°C",
"format-icons": ["", "", "", "", ""],
"tooltip": true
},
"backlight": {
"format": "{icon} {percent}%",
"format-icons": ["", ""]
},
"battery": {
"states": {
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-icons": ["", "", "", "", ""]
},
"clock": {
"format": " {:%H:%M}",
"format-alt": " {:%d/%m/%Y}",
"tooltip-format": "<span color='#cba6f7' font='JetBrainsMono Nerd Font 12'><big>{:%Y %B}</big></span>\n<tt><small>{calendar}</small></tt>",
"calendar": {
"mode" : "month",
"mode-mon-col" : 3,
"on-scroll" : 1,
"format": {
"months": "<span color='#cdd6f4'><b>{}</b></span>",
"days": "<span color='#bac2de'>{}</span>",
"weekdays": "<span color='#89b4fa'><b>{}</b></span>",
"today": "<span color='#f38ba8'><b><u>{}</u></b></span>"
}
}
},
"custom/power": {
"format": "⏻",
"on-click": "wlogout"
}
}

View File

@@ -0,0 +1,78 @@
#!/bin/bash
BAT_PATH="/sys/class/power_supply/BAT0"
if [ ! -d "$BAT_PATH" ]; then
echo "Batterie non trouvée"
exit 1
fi
# Lire les informations
capacity=$(cat "$BAT_PATH/capacity" 2>/dev/null)
status=$(cat "$BAT_PATH/status" 2>/dev/null)
charge_now=$(cat "$BAT_PATH/charge_now" 2>/dev/null) # µAh
current_now=$(cat "$BAT_PATH/current_now" 2>/dev/null) # µA
voltage_now=$(cat "$BAT_PATH/voltage_now" 2>/dev/null) # µV
max_limit=$(cat "$BAT_PATH/charge_control_end_threshold" 2>/dev/null)
# Valeurs par défaut
[ -z "$capacity" ] && capacity=0
[ -z "$status" ] && status="Unknown"
[ -z "$max_limit" ] && max_limit=100
# Calcul de la puissance (si voltage et courant disponibles)
# if [ -n "$voltage_now" ] && [ -n "$current_now" ] && [ "$current_now" -gt 0 ]; then
# wattage=$(echo "scale=1; $voltage_now * $current_now / 1000000000000" | bc)
# else
# wattage=""
# fi
wattage=$(cat /tmp/power_now 2>/dev/null)
# Calcul du temps restant (en minutes) si en décharge
time_str=""
if [ "$status" = "Discharging" ] && [ -n "$charge_now" ] && [ -n "$current_now" ] && [ "$current_now" -gt 0 ]; then
time_h=$(echo "scale=2; $charge_now / $current_now" | bc)
time_min=$(echo "$time_h * 60" | bc | cut -d. -f1)
if [ -n "$time_min" ] && [ "$time_min" -gt 0 ]; then
hours=$(( time_min / 60 ))
minutes=$(( time_min % 60 ))
time_str=$(printf "%d:%02d" $hours $minutes)
fi
fi
# Affichage selon l'état
if [ "$status" = "Charging" ]; then
icon="⚡"
if [ -n "$wattage" ]; then
text="${icon} ${capacity}% (${wattage}W - ${max_limit}%)"
else
text="${icon} ${capacity}% (${max_limit}%)"
fi
elif [ "$status" = "Discharging" ]; then
# Icône batterie selon le niveau
if [ $capacity -le 20 ]; then
icon=""
elif [ $capacity -le 40 ]; then
icon=""
elif [ $capacity -le 60 ]; then
icon=""
elif [ $capacity -le 80 ]; then
icon=""
else
icon=""
fi
if [ -n "$time_str" ] && [ -n "$wattage" ]; then
text="${icon} ${capacity}% (${time_str} - ${wattage}W - ${max_limit}%)"
else
text="${icon} ${capacity}% (${max_limit}%)"
fi
else
icon=""
if [ -n "$wattage" ]; then
text="${icon} ${capacity}% (${wattage}W - ${max_limit}%)"
else
text="${icon} ${capacity}% (${max_limit}%)"
fi
fi
echo "$text"

View File

@@ -0,0 +1,9 @@
#!/bin/bash
current=$(cat /sys/class/power_supply/BAT0/charge_control_end_threshold)
if [ "$current" -eq 80 ]; then
sudo cctk --PrimaryBattChargeCfg=Custom:95-100
notify-send "Batterie" "Charge standard (100%)"
else
sudo cctk --PrimaryBattChargeCfg=Custom:50-80
notify-send "Batterie" "Charge limitée à 80%"
fi

View File

@@ -0,0 +1,2 @@
#!/bin/bash
systemctl --user edit --full power-monitor.service

View File

@@ -0,0 +1,9 @@
#!/bin/bash
RAPL0="/sys/class/powercap/intel-rapl:0/energy_uj"
RAPL1="/sys/class/powercap/intel-rapl:1/energy_uj"
while true; do
e1=$(( $(cat "$RAPL0") + $(cat "$RAPL1") ))
sleep 2
e2=$(( $(cat "$RAPL0") + $(cat "$RAPL1") ))
echo "scale=1; ($e2 - $e1) / 2000000" | bc > /tmp/power_now
done