From 707514fff7e383ff8165b800cbd5747cfdd44920 Mon Sep 17 00:00:00 2001 From: thek4n Date: Sat, 1 Aug 2026 20:18:16 +0300 Subject: [PATCH] migrate to waybar --- TARGETS.sh | 2 +- home/user/.config/sway/bar.conf | 31 ++--- home/user/.config/sway/bindings.conf | 8 +- home/user/.config/sway/other.conf | 2 +- home/user/.config/waybar/config | 113 +++++++++++----- home/user/.config/waybar/scripts/builder.sh | 125 ++++++++++++++++++ .../waybar/scripts/layout_change_handler.sh | 8 ++ home/user/.config/waybar/style.css | 111 ++++++++++++++++ 8 files changed, 349 insertions(+), 51 deletions(-) create mode 100755 home/user/.config/waybar/scripts/builder.sh create mode 100755 home/user/.config/waybar/scripts/layout_change_handler.sh create mode 100644 home/user/.config/waybar/style.css diff --git a/TARGETS.sh b/TARGETS.sh index b10e6b1..7d096a6 100644 --- a/TARGETS.sh +++ b/TARGETS.sh @@ -13,7 +13,7 @@ git:.config/git .local/bin/ga ranger:.config/ranger yazi:.config/yazi gpg: -sway:.config/sway .config/i3blocks .config/mako .config/mimeapps.list .config/rofi .local/bin/screenshot .config/swaylock .Xresources .config/kanshi .local/bin/firefox_media %copypasta %pomodoro +sway:.config/sway .config/waybar .config/mako .config/mimeapps.list .config/rofi .local/bin/screenshot .config/swaylock .Xresources .config/kanshi .local/bin/firefox_media %copypasta %pomodoro pomodoro: bat:.config/bat font: diff --git a/home/user/.config/sway/bar.conf b/home/user/.config/sway/bar.conf index bba73fb..4643a8f 100644 --- a/home/user/.config/sway/bar.conf +++ b/home/user/.config/sway/bar.conf @@ -1,19 +1,20 @@ # vim: ft=swayconfig # Sway bar -bar { - mode dock - position bottom - status_command i3blocks - wrap_scroll no - bindsym button4 nop - bindsym button5 nop - hidden_state hide - output * - tray_output $primary - strip_workspace_name no - strip_workspace_numbers no - modifier $mod -} +# bar { + # mode dock + # position bottom + # status_command waybar + # wrap_scroll no + # bindsym button4 nop + # bindsym button5 nop + # hidden_state hide + # output * + # tray_output $primary + # strip_workspace_name no + # strip_workspace_numbers no + # modifier $mod +# } -exec ~/.config/i3blocks/scripts/layout_change_handler.sh +exec waybar -b bar-0 +exec ~/.config/waybar/scripts/layout_change_handler.sh diff --git a/home/user/.config/sway/bindings.conf b/home/user/.config/sway/bindings.conf index 506114b..e647fc7 100644 --- a/home/user/.config/sway/bindings.conf +++ b/home/user/.config/sway/bindings.conf @@ -1,9 +1,9 @@ # vim: ft=swayconfig # Sway bindings -bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% && pkill -RTMIN+1 i3blocks -bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% && pkill -RTMIN+1 i3blocks -bindsym --locked XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle && pkill -RTMIN+1 i3blocks +bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% && pkill -RTMIN+1 waybar +bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% && pkill -RTMIN+1 waybar +bindsym --locked XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle && pkill -RTMIN+1 waybar bindsym --locked XF86AudioPlay exec playerctl play-pause bindsym --locked XF86AudioPause exec playerctl play-pause @@ -14,7 +14,7 @@ bindsym --locked XF86Tools exec pavucontrol bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+ bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- -bindsym --to-code $mod+p exec pomodoro toggle && pkill -RTMIN+2 i3blocks +bindsym --to-code $mod+p exec pomodoro toggle && pkill -RTMIN+2 waybar bindsym $mod+z exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ 0 ## Hold to talk bindsym --release $mod+z exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ 1 ## Release to mute diff --git a/home/user/.config/sway/other.conf b/home/user/.config/sway/other.conf index 3c76b42..b90e55f 100644 --- a/home/user/.config/sway/other.conf +++ b/home/user/.config/sway/other.conf @@ -78,5 +78,5 @@ layer_effects "waybar" { blur_xray enable; blur_ignore_transparent enable; shadows enable; - corner_radius 20; + corner_radius 10; } diff --git a/home/user/.config/waybar/config b/home/user/.config/waybar/config index 23148c2..bf75dae 100644 --- a/home/user/.config/waybar/config +++ b/home/user/.config/waybar/config @@ -1,42 +1,95 @@ { "layer": "bottom", "position": "bottom", + "height": 30, + "spacing": 4, + "modules-left": [ "sway/workspaces", - "sway/mode", + "sway/mode" ], - "modules-center": [], + "modules-right": [ - "sway/language", - "clock", + "custom/wireless", + "custom/bluetooth", + "custom/diskroot", + "custom/diskhome", + "custom/memory", + "custom/cpu_usage", + "custom/cpu_temp", + "custom/battery", + "custom/language", + "custom/pomodoro", + "custom/userhost", + "custom/volume", + "custom/time", "tray" ], - "sway/workspaces": { - "disable-scroll": true + + "custom/wireless": { + "exec": "~/.config/waybar/scripts/builder.sh wireless", + "interval": 10, + "return-type": "text" }, - "clock": { - "format": " {:%F %a  %H:%M}", - "format-alt": " {:%A, %B %d, %Y (%R)}", - "tooltip-format": "{calendar}", - "calendar": { - "mode" : "year", - "mode-mon-col" : 3, - "weeks-pos" : "right", - "on-scroll" : 1, - "format": { - "months": "{}", - "days": "{}", - "weeks": "W{}", - "weekdays": "{}", - "today": "{}" - } - }, - "actions": { - "on-click-right": "mode", - "on-scroll-up": "tz_up", - "on-scroll-down": "tz_down", - "on-scroll-up": "shift_up", - "on-scroll-down": "shift_down" - } + "custom/diskroot": { + "exec": "~/.config/waybar/scripts/builder.sh disk_root", + "interval": 30, + "return-type": "text" }, + "custom/diskhome": { + "exec": "~/.config/waybar/scripts/builder.sh disk_home", + "interval": 30, + "return-type": "text" + }, + "custom/memory": { + "exec": "~/.config/waybar/scripts/builder.sh memory", + "interval": 5, + "return-type": "text" + }, + "custom/cpu_usage": { + "exec": "~/.config/waybar/scripts/builder.sh cpu_usage", + "interval": 5, + "return-type": "text" + }, + "custom/cpu_temp": { + "exec": "~/.config/waybar/scripts/builder.sh cpu_temp", + "interval": 5, + "return-type": "text" + }, + "custom/bluetooth": { + "exec": "~/.config/waybar/scripts/builder.sh bluetooth_battery", + "interval": 5, + "return-type": "text" + }, + "custom/volume": { + "exec": "~/.config/waybar/scripts/builder.sh volume", + "interval": 1, + "return-type": "text", + "signal": 1 + }, + "custom/pomodoro": { + "exec": "~/.config/waybar/scripts/builder.sh pomodoro", + "interval": 1, + "return-type": "text", + "signal": 2 + }, + "custom/language": { + "exec": "~/.config/waybar/scripts/builder.sh language", + "return-type": "text", + "signal": 3 + }, + "custom/userhost": { + "exec": "~/.config/waybar/scripts/builder.sh userhost", + "return-type": "text", + }, + "custom/battery": { + "exec": "~/.config/waybar/scripts/builder.sh battery", + "interval": 30, + "return-type": "text" + }, + "custom/time": { + "exec": "~/.config/waybar/scripts/builder.sh time", + "interval": 30, + "return-type": "text" + } } diff --git a/home/user/.config/waybar/scripts/builder.sh b/home/user/.config/waybar/scripts/builder.sh new file mode 100755 index 0000000..4430179 --- /dev/null +++ b/home/user/.config/waybar/scripts/builder.sh @@ -0,0 +1,125 @@ +#!/bin/sh + +set -ue + + +readonly EXIT_SUCCESS=0 +readonly EXIT_FAILURE=1 + + +cmd_wireless() { + wifiname="$(LANG=C nmcli -t -f active,ssid dev wifi | grep '^yes' | cut -d: -f2)" + wifi_ip=$(ip -o -4 addr show | grep wlp | awk '{print $4}' | cut -d/ -f1 | head -1) + + if [ -z "${wifiname}" ] || [ -z "${wifi_ip}" ]; then + return 0 + fi + + printf ' %s %s\n' "${wifiname}" "${wifi_ip}" +} + +cmd_battery() { + charging_status="$(cat /sys/class/power_supply/BAT0/status)" + percent="$(cat /sys/class/power_supply/BAT0/capacity)" + + if [ "${percent}" -lt 35 ]; then + emoji_status="🪫" + else + emoji_status="šŸ”‹" + fi + + if [ "${charging_status}" = "Charging" ]; then + emoji_status="šŸ”Œ" + fi + + printf "%s %s%%\n" "${emoji_status}" "${percent}" +} + +cmd_disk_root() { + df -h / | awk '/\// {print "/ "$3"/"$2}' +} + +cmd_disk_home() { + res="$(df -h /home)" + if [ "$(echo "${res}" | awk '/\// {print $6}')" = "/" ]; then + return 1 + fi + df -h /home | awk '/\// {print " "$3"/"$2}' +} + +cmd_memory() { + free -h | awk '/^Mem/ {print "šŸŽŸ "$3"/"$2}' | sed 's/i//g' +} + +cmd_cpu_usage() { + top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print "ļ‹› "100 - $1"%"}' +} + +cmd_cpu_temp() { + temp_mC="$(cat /sys/class/thermal/thermal_zone0/temp)" + temp_C="$((temp_mC / 1000))" + + if [ "${temp_C}" -gt 80 ]; then + printf ' %s°C\n' "${temp_C}" + else + printf ' %s°C\n' "${temp_C}" + fi +} + +cmd_time() { + LC_ALL=C date '+ %d.%m.%y %a  %H:%M' +} + +cmd_volume() { + value="$(pactl --format=json get-sink-volume @DEFAULT_SINK@ | jq --raw-output '.volume."front-left".value_percent')" + printf ' %s\n' "${value}" +} + +cmd_pomodoro() { + pomodoro get +} + +cmd_bluetooth_battery() { + device="$(upower -e | grep headset | head -1)" + upower -i "${device}" | grep percentage | awk '{ print "šŸŽ§"$2"" }' +} + +cmd_language() { + layout="$(swaymsg -t get_inputs | jq -r '.[] | select(.type == "keyboard") | .xkb_active_layout_name' | head -1)" + + case "${layout}" in + "English (US)") + printf 'šŸ‡¬šŸ‡§ En\n' + ;; + Russian) + printf 'šŸ‡·šŸ‡ŗ Ru\n' + ;; + *) + printf '🌐 %s\n' "${layout}" + ;; + esac +} + +cmd_userhost() { + printf "%s@%s\n" "${USER}" "${HOST:-${HOSTNAME:-}}" +} + +case "${1}" in + wireless) shift; cmd_wireless "$@" ;; + ethernet) shift; cmd_ethernet "$@" ;; + battery) shift; cmd_battery "$@" ;; + disk_root) shift; cmd_disk_root "$@" ;; + disk_home) shift; cmd_disk_home "$@" ;; + memory) shift; cmd_memory "$@" ;; + cpu_usage) shift; cmd_cpu_usage "$@" ;; + cpu_temp) shift; cmd_cpu_temp "$@" ;; + time) shift; cmd_time "$@" ;; + volume) shift; cmd_volume "$@" ;; + pomodoro) shift; cmd_pomodoro "$@" ;; + bluetooth_battery) shift; cmd_bluetooth_battery "$@" ;; + language) shift; cmd_language "$@" ;; + userhost) shift; cmd_userhost "$@" ;; + + *) exit "${EXIT_FAILURE}" ;; +esac +exit "${EXIT_SUCCESS}" diff --git a/home/user/.config/waybar/scripts/layout_change_handler.sh b/home/user/.config/waybar/scripts/layout_change_handler.sh new file mode 100755 index 0000000..9dc7f16 --- /dev/null +++ b/home/user/.config/waybar/scripts/layout_change_handler.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +swaymsg -m -t SUBSCRIBE "['input']" | \ +jq --unbuffered -r '.change' | while read -r line; do + if echo "${line}" | grep -q "xkb_layout"; then + pkill -RTMIN+3 waybar + fi +done diff --git a/home/user/.config/waybar/style.css b/home/user/.config/waybar/style.css new file mode 100644 index 0000000..37f2292 --- /dev/null +++ b/home/user/.config/waybar/style.css @@ -0,0 +1,111 @@ +* { + border: none; + border-radius: 0; + font-family: "JetBrainsMono Nerd Font", "Font Awesome 6 Free", sans-serif; + font-size: 14px; + min-height: 0; +} + +window#waybar { + background: rgba(0, 0, 0, 0); + color: #ffffff; + transition-property: background-color; + transition-duration: .5s; +} + +window#waybar.hidden { + opacity: 0.2; +} + +#workspaces button { + padding: 0 10px; + color: #ffffff; + background: transparent; + border-bottom: 2px solid transparent; +} + +#workspaces button.focused { + color: #ffffff; + background: rgba(255, 255, 255, 0.1); + border-bottom: 2px solid #ffffff; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#custom-wireless, +#custom-diskroot, +#custom-diskhome, +#custom-memory, +#custom-cpu_usage, +#custom-cpu_temp, +#custom-bluetooth, +#custom-volume, +#custom-pomodoro, +#custom-language, +#custom-userhost, +#custom-battery, +#custom-time { + padding: 0 12px; + margin: 0 2px; + background: rgba(255, 255, 255, 0.05); + border-radius: 6px; +} + +#custom-wireless { + color: #64B5F6; +} + +#custom-volume { + color: #81C784; +} + +#custom-battery { + color: #FFD54F; +} + +#custom-battery.warning { + color: #FF8A65; +} + +#custom-battery.critical { + color: #E57373; +} + +#custom-cpu_usage { + color: #A5D6A7; +} + +#custom-cpu_temp { + color: #FFAB91; +} + +#custom-memory { + color: #90CAF9; +} + +#custom-pomodoro { + color: #F48FB1; +} + +#custom-language { + color: #CE93D8; +} + +#custom-userhost { + color: #80DEEA; +} + +#custom-time { + color: #E0E0E0; +} + +#custom-diskroot, +#custom-diskhome { + color: #B39DDB; +} + +#custom-bluetooth { + color: #4FC3F7; +}