From e49fa372fa0bb51ce88f19c67e9a8dff3205c05a Mon Sep 17 00:00:00 2001 From: vikingowl Date: Mon, 24 Mar 2025 22:39:36 +0100 Subject: [PATCH] updated waybar and added settings for cn-mate --- .config/waybar/config.jsonc##hostname.cn-arch | 79 +++++-- .config/waybar/config.jsonc##hostname.cn-mate | 214 ++++++++++++++++++ .config/waybar/scripts/alhp.sh | 28 +++ .config/waybar/style.css##hostname.cn-arch | 142 +++++++++--- .config/waybar/style.css##hostname.cn-mate | 202 +++++++++++++++++ 5 files changed, 617 insertions(+), 48 deletions(-) create mode 100644 .config/waybar/config.jsonc##hostname.cn-mate create mode 100755 .config/waybar/scripts/alhp.sh create mode 100644 .config/waybar/style.css##hostname.cn-mate diff --git a/.config/waybar/config.jsonc##hostname.cn-arch b/.config/waybar/config.jsonc##hostname.cn-arch index 3551be8..3b0cc0c 100644 --- a/.config/waybar/config.jsonc##hostname.cn-arch +++ b/.config/waybar/config.jsonc##hostname.cn-arch @@ -4,21 +4,25 @@ "mod": "dock", "exclusive": true, "gtk-layer-shell": true, - "margin-bottom": -1, "passthrough": false, "height": 30, "modules-left": [ "hyprland/workspaces" ], - "modules-center": [], + "modules-center": [ + "mpris", + "privacy" + ], "modules-right": [ + "custom/alhp", "cpu", "memory", "disk", - "tray", + "bluetooth", "pulseaudio", "network", "battery", + "tray", "clock" ], "hyprland/language": { @@ -37,14 +41,6 @@ "format": " {usage}%", "max-length": 10 }, - "temperature": { - "hwmon-path-abs": "/sys/devices/platform/coretemp.0/hwmon", - "input-filename": "temp2_input", - "critical-threshold": 75, - "tooltip": false, - "format-critical": "({temperatureC}°C)", - "format": "({temperatureC}°C)" - }, "disk": { "interval": 30, "format": "󰋊 {percentage_used}%", @@ -74,7 +70,7 @@ "spacing": 3 }, "clock": { - "format": "{:%R - %d.%m.%Y}", + "format": "{:%R | %d.%m.%Y}", "tooltip-format": "{calendar}", "calendar": { "mode": "year", @@ -99,7 +95,6 @@ } }, "network": { - "interface": "eno1", "format-wifi": "{essid} ({signalStrength}%) {icon}", "format-ethernet": "{ifname}", "format-disconnected": "󰌙", @@ -140,9 +135,9 @@ ] }, "pulseaudio": { - "format": "{volume}% {icon}", - "format-bluetooth": "{volume}% {icon}", - "format-muted": "", + "format": "{volume}% {icon} ", + "format-bluetooth": "{volume}% {icon} ", + "format-muted": " ", "format-icons": { "alsa_output.pci-0000_00_1f.3.analog-stereo": "", "alsa_output.pci-0000_00_1f.3.analog-stereo-muted": "", @@ -163,5 +158,57 @@ "ignored-sinks": [ "Easy Effects Sink" ] + }, + "privacy": { + "icon-spacing": 4, + "icon-size": 14, + "transition-duration": 250, + "modules": [ + { + "type": "screenshare", + "tooltip": true, + "tooltip-icon-size": 12 + }, + { + "type": "audio-out", + "tooltip": true, + "tooltip-icon-size": 12 + }, + { + "type": "audio-in", + "tooltip": true, + "tooltip-icon-size": 12 + } + ] + }, + "mpris": { + "format": "{player_icon} {dynamic}", + "format-paused": "{status_icon} {dynamic}", + "dynamic-len": 50, + "ellipsis": "…", + "player-icons": { + "default": "▶", + "mpv": "🎵" + }, + "status-icons": { + "paused": "⏸" + } + }, + "bluetooth": { + "format": " {status}", + "on-click": "overskride", + "format-connected": " {device_alias}", + "format-connected-battery": " {device_alias} {device_battery_percentage}%", + "tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected", + "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}", + "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}", + "tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%" + }, + "custom/alhp": { + "exec": "$HOME/.config/waybar/scripts/alhp.sh", + "format": "{} \uEB29 ", + "return-type": "json", + "interval": 60, + "tooltip": true } } diff --git a/.config/waybar/config.jsonc##hostname.cn-mate b/.config/waybar/config.jsonc##hostname.cn-mate new file mode 100644 index 0000000..3b0cc0c --- /dev/null +++ b/.config/waybar/config.jsonc##hostname.cn-mate @@ -0,0 +1,214 @@ +{ + "layer": "bottom", + "position": "bottom", + "mod": "dock", + "exclusive": true, + "gtk-layer-shell": true, + "passthrough": false, + "height": 30, + "modules-left": [ + "hyprland/workspaces" + ], + "modules-center": [ + "mpris", + "privacy" + ], + "modules-right": [ + "custom/alhp", + "cpu", + "memory", + "disk", + "bluetooth", + "pulseaudio", + "network", + "battery", + "tray", + "clock" + ], + "hyprland/language": { + "format": "{}", + "format-en": "ENG", + "format-ru": "РУС" + }, + "hyprland/workspaces": { + "icon-size": 32, + "spacing": 16, + "on-scroll-up": "hyprctl dispatch workspace r+1", + "on-scroll-down": "hyprctl dispatch workspace r-1" + }, + "cpu": { + "interval": 5, + "format": " {usage}%", + "max-length": 10 + }, + "disk": { + "interval": 30, + "format": "󰋊 {percentage_used}%", + "path": "/", + "tooltip": true, + "unit": "GB", + "tooltip-format": "Available {free} of {total}" + }, + "memory": { + "interval": 10, + "format": " {percentage}%", + "max-length": 10, + "tooltip": true, + "tooltip-format": "RAM - {used:0.1f}GiB used" + }, + "wlr/taskbar": { + "format": "{icon} {title:.17}", + "icon-size": 28, + "spacing": 3, + "on-click-middle": "close", + "tooltip-format": "{title}", + "ignore-list": [], + "on-click": "activate" + }, + "tray": { + "icon-size": 18, + "spacing": 3 + }, + "clock": { + "format": "{:%R | %d.%m.%Y}", + "tooltip-format": "{calendar}", + "calendar": { + "mode": "year", + "mode-mon-col": 3, + "weeks-pos": "right", + "on-scroll": 1, + "on-click-right": "mode", + "format": { + "months": "{}", + "days": "{}", + "weeks": "W{}", + "weekdays": "{}", + "today": "{}" + } + }, + "actions": { + "on-click-right": "mode", + "on-click-forward": "tz_up", + "on-click-backward": "tz_down", + "on-scroll-up": "shift_up", + "on-scroll-down": "shift_down" + } + }, + "network": { + "format-wifi": "{essid} ({signalStrength}%) {icon}", + "format-ethernet": "{ifname}", + "format-disconnected": "󰌙", + "tooltip-format": "{ifname} via {gwaddr} 󰊗", + "tooltip-format-wifi": "{essid} ({signalStrength}%) ", + "tooltip-format-ethernet": "{ifname} ", + "tooltip-format-disconnected": "Disconnected", + "format-icons": [ + "󰤯 ", + "󰤟 ", + "󰤢 ", + "󰤢 ", + "󰤨 " + ] + }, + "battery": { + "states": { + "good": 95, + "warning": 30, + "critical": 20 + }, + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-alt": "{time} {icon}", + "format-icons": [ + "󰂎", + "󰁺", + "󰁻", + "󰁼", + "󰁽", + "󰁾", + "󰁿", + "󰂀", + "󰂁", + "󰂂", + "󰁹" + ] + }, + "pulseaudio": { + "format": "{volume}% {icon} ", + "format-bluetooth": "{volume}% {icon} ", + "format-muted": " ", + "format-icons": { + "alsa_output.pci-0000_00_1f.3.analog-stereo": "", + "alsa_output.pci-0000_00_1f.3.analog-stereo-muted": "", + "headphone": "", + "hands-free": "", + "headset": "\uF025", + "phone": "", + "phone-muted": "", + "portable": "", + "car": "", + "default": [ + "", + "" + ] + }, + "scroll-step": 5, + "on-click": "pwvucontrol", + "ignored-sinks": [ + "Easy Effects Sink" + ] + }, + "privacy": { + "icon-spacing": 4, + "icon-size": 14, + "transition-duration": 250, + "modules": [ + { + "type": "screenshare", + "tooltip": true, + "tooltip-icon-size": 12 + }, + { + "type": "audio-out", + "tooltip": true, + "tooltip-icon-size": 12 + }, + { + "type": "audio-in", + "tooltip": true, + "tooltip-icon-size": 12 + } + ] + }, + "mpris": { + "format": "{player_icon} {dynamic}", + "format-paused": "{status_icon} {dynamic}", + "dynamic-len": 50, + "ellipsis": "…", + "player-icons": { + "default": "▶", + "mpv": "🎵" + }, + "status-icons": { + "paused": "⏸" + } + }, + "bluetooth": { + "format": " {status}", + "on-click": "overskride", + "format-connected": " {device_alias}", + "format-connected-battery": " {device_alias} {device_battery_percentage}%", + "tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected", + "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}", + "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}", + "tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%" + }, + "custom/alhp": { + "exec": "$HOME/.config/waybar/scripts/alhp.sh", + "format": "{} \uEB29 ", + "return-type": "json", + "interval": 60, + "tooltip": true + } +} diff --git a/.config/waybar/scripts/alhp.sh b/.config/waybar/scripts/alhp.sh new file mode 100755 index 0000000..5f83b55 --- /dev/null +++ b/.config/waybar/scripts/alhp.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +# Retrieve JSON output from alhp.utils. +readonly ALHP_OUTPUT=$(alhp.utils -j) + +# Extract "total" as a string and read "packages" into a Bash array. +readonly total=$(echo "$ALHP_OUTPUT" | jq -r '.total | tostring') +readarray -t packages < <(echo "$ALHP_OUTPUT" | jq -r '.packages[]?') + +# Initialize default tooltip and class. +tooltip='' +class='good' + +# Use arithmetic evaluation to check if total is greater than 0. +if (( total > 0 )); then + class='bad' +fi + +# If there are any packages, join them with newline as separator. +if (( ${#packages[@]} > 0 )); then + tooltip=$(IFS=$'\n'; echo "${packages[*]}") +else + tooltip="All good" +fi + +# Generate compact JSON output (all in one line) with jq. +jq -nc --arg text "$total" --arg class "$class" --arg tooltip "$tooltip" \ + '{text: $text, class: $class, tooltip: $tooltip}' diff --git a/.config/waybar/style.css##hostname.cn-arch b/.config/waybar/style.css##hostname.cn-arch index 399aea2..338888a 100644 --- a/.config/waybar/style.css##hostname.cn-arch +++ b/.config/waybar/style.css##hostname.cn-arch @@ -1,3 +1,22 @@ + +/*base background color*/ +@define-color bg_main rgba(25, 25, 25, 0.65); +@define-color bg_main_tooltip rgba(0, 0, 0, 0.7); + + +/*base background color of selections */ +@define-color bg_hover rgba(200, 200, 200, 0.3); +/*base background color of active elements */ +@define-color bg_active rgba(100, 100, 100, 0.5); + +/*base border color*/ +@define-color border_main rgba(255, 255, 255, 0.2); + +/*text color for entries, views and content in general */ +@define-color content_main white; +/*text color for entries that are unselected */ +@define-color content_inactive rgba(255, 255, 255, 0.25); + * { text-shadow: none; box-shadow: none; @@ -14,6 +33,7 @@ window#waybar { } tooltip { + font-size: 14px; background: @bg_main_tooltip; border-radius: 5px; border-width: 1px; @@ -24,6 +44,11 @@ tooltip label{ color: @content_main; } +.module { + margin-left: 2px; + margin-right: 2px; +} + #workspaces { color: transparent; margin-right: 1.5px; @@ -32,18 +57,16 @@ tooltip label{ #workspaces button { padding: 3px; color: @content_inactive; - transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1); } #workspaces button.active { - color: @content_main; - border-bottom: 3px solid white; + color: whitesmoke; + background: @bg_active; } #workspaces button.focused { color: @bg_active; } #workspaces button.urgent { - background: rgba(255, 200, 0, 0.35); - border-bottom: 3px dashed @warning_color; + background: rgba(255, 200, 0, 0.35); color: @warning_color; } #workspaces button:hover { @@ -52,26 +75,9 @@ tooltip label{ } #cpu, #disk, #memory { - padding: 5px; -} - -#temperature { - color: transparent; - font-size: 0px; - transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1); -} -#temperature.critical { - padding-right: 3px; - color: @warning_color; - font-size: initial; - border-bottom: 3px dashed @warning_color; - transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1); -} - -#window { - border-radius: 10px; - margin-left: 20px; - margin-right: 20px; + border-bottom: 1px solid grey; + padding-right: 5px; + padding-left: 5px; } #tray{ @@ -95,9 +101,9 @@ tooltip label{ } #pulseaudio { - font-family: "Inconsolata Go Nerd Font"; + border-bottom: 1px solid grey; + padding-right: 5px; padding-left: 5px; - padding-right: 1rem; transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1); } #pulseaudio:hover { @@ -105,13 +111,9 @@ tooltip label{ } #network { - padding-left: 5px; + border-bottom: 1px solid grey; padding-right: 5px; -} - -#language { padding-left: 5px; - padding-right: 5px; } #clock { @@ -122,3 +124,79 @@ tooltip label{ #clock:hover { background: @bg_hover; } + +#privacy { +} +#privacy-item { + padding-left: 5px; + padding-right: 5px; +} +#privacy-item.screenshare { + background: #850404; +} +#privacy-item.audio-in { + background: #6c045e; +} +#privacy-item.audio-out { + background: #02605b; +} + +#mpris { + padding-left: 5px; + padding-right: 5px; +} +#mpris.playing { +} +#mpris.paused { +} +#mpris.stopped { +} +#mpris.firefox { + border-bottom: 1px solid #fd8728; +} +#mpris.spotify { + border-bottom: 1px solid #17d860; +} +#mpris.mpv { + border-bottom: 1px solid #420042; +} +#mpris.chromium { + border-bottom: 1px solid #1a73e8; +} + +#bluetooth { + padding-right: 5px; + padding-left: 5px; +} +#bluetooth.disabled { + border-bottom: 1px solid grey; +} +#bluetooth.off { + border-bottom: 1px solid grey; +} +#bluetooth.on { + border-bottom: 1px solid #0059fd; +} +#bluetooth.connected { + border-bottom: 1px solid #00b7fa; +} +#bluetooth.discoverable { +} +#bluetooth.discovering { +} +#bluetooth.pairable { +} +#bluetooth.no-controller { + background: darkred; +} + +#custom-alhp { + padding-left: 5px; + padding-right: 5px; +} +#custom-alhp.good { + border-bottom: 1px solid greenyellow; +} +#custom-alhp.bad { + border-bottom: 1px solid orangered; +} diff --git a/.config/waybar/style.css##hostname.cn-mate b/.config/waybar/style.css##hostname.cn-mate new file mode 100644 index 0000000..338888a --- /dev/null +++ b/.config/waybar/style.css##hostname.cn-mate @@ -0,0 +1,202 @@ + +/*base background color*/ +@define-color bg_main rgba(25, 25, 25, 0.65); +@define-color bg_main_tooltip rgba(0, 0, 0, 0.7); + + +/*base background color of selections */ +@define-color bg_hover rgba(200, 200, 200, 0.3); +/*base background color of active elements */ +@define-color bg_active rgba(100, 100, 100, 0.5); + +/*base border color*/ +@define-color border_main rgba(255, 255, 255, 0.2); + +/*text color for entries, views and content in general */ +@define-color content_main white; +/*text color for entries that are unselected */ +@define-color content_inactive rgba(255, 255, 255, 0.25); + +* { + text-shadow: none; + box-shadow: none; + border: none; + border-radius: 0; + font-family: "Inconsolata Go Nerd Font"; + font-size: 14px; +} + +window#waybar { + background: @bg_main; + border-top: 1px solid @border_main; + color: @content_main; +} + +tooltip { + font-size: 14px; + background: @bg_main_tooltip; + border-radius: 5px; + border-width: 1px; + border-style: solid; + border-color: @border_main; +} +tooltip label{ + color: @content_main; +} + +.module { + margin-left: 2px; + margin-right: 2px; +} + +#workspaces { + color: transparent; + margin-right: 1.5px; + margin-left: 1.5px; +} +#workspaces button { + padding: 3px; + color: @content_inactive; +} +#workspaces button.active { + color: whitesmoke; + background: @bg_active; +} +#workspaces button.focused { + color: @bg_active; +} +#workspaces button.urgent { + background: rgba(255, 200, 0, 0.35); + color: @warning_color; +} +#workspaces button:hover { + background: @bg_hover; + color: @content_main; +} + +#cpu, #disk, #memory { + border-bottom: 1px solid grey; + padding-right: 5px; + padding-left: 5px; +} + +#tray{ + padding-left: 5px; + padding-right: 5px; +} +#tray > .passive { + border-bottom: none; +} +#tray > .active { + +} +#tray > .needs-attention { + border-bottom: 3px solid @warning_color; +} +#tray > widget { + transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1); +} +#tray > widget:hover { + background: @bg_hover; +} + +#pulseaudio { + border-bottom: 1px solid grey; + padding-right: 5px; + padding-left: 5px; + transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1); +} +#pulseaudio:hover { + background: @bg_hover; +} + +#network { + border-bottom: 1px solid grey; + padding-right: 5px; + padding-left: 5px; +} + +#clock { + padding-right: 5px; + padding-left: 5px; + transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1); +} +#clock:hover { + background: @bg_hover; +} + +#privacy { +} +#privacy-item { + padding-left: 5px; + padding-right: 5px; +} +#privacy-item.screenshare { + background: #850404; +} +#privacy-item.audio-in { + background: #6c045e; +} +#privacy-item.audio-out { + background: #02605b; +} + +#mpris { + padding-left: 5px; + padding-right: 5px; +} +#mpris.playing { +} +#mpris.paused { +} +#mpris.stopped { +} +#mpris.firefox { + border-bottom: 1px solid #fd8728; +} +#mpris.spotify { + border-bottom: 1px solid #17d860; +} +#mpris.mpv { + border-bottom: 1px solid #420042; +} +#mpris.chromium { + border-bottom: 1px solid #1a73e8; +} + +#bluetooth { + padding-right: 5px; + padding-left: 5px; +} +#bluetooth.disabled { + border-bottom: 1px solid grey; +} +#bluetooth.off { + border-bottom: 1px solid grey; +} +#bluetooth.on { + border-bottom: 1px solid #0059fd; +} +#bluetooth.connected { + border-bottom: 1px solid #00b7fa; +} +#bluetooth.discoverable { +} +#bluetooth.discovering { +} +#bluetooth.pairable { +} +#bluetooth.no-controller { + background: darkred; +} + +#custom-alhp { + padding-left: 5px; + padding-right: 5px; +} +#custom-alhp.good { + border-bottom: 1px solid greenyellow; +} +#custom-alhp.bad { + border-bottom: 1px solid orangered; +}