diff --git a/home/user/.config/sway/bar.conf b/home/user/.config/sway/bar.conf
index bba73fb..05aa08e 100644
--- a/home/user/.config/sway/bar.conf
+++ b/home/user/.config/sway/bar.conf
@@ -4,7 +4,7 @@
bar {
mode dock
position bottom
- status_command i3blocks
+ status_command waybar
wrap_scroll no
bindsym button4 nop
bindsym button5 nop
@@ -16,4 +16,4 @@ bar {
modifier $mod
}
-exec ~/.config/i3blocks/scripts/layout_change_handler.sh
+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..6d97af3 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/volume",
+ "custom/diskroot",
+ "custom/diskhome",
+ "custom/memory",
+ "custom/cpu_usage",
+ "custom/cpu_temp",
+ "custom/battery",
+ "custom/language",
+ "custom/pomodoro",
+ "custom/userhost",
+ "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