waybar - updated alhp-utils module
This commit is contained in:
@@ -1,18 +1,14 @@
|
||||
{
|
||||
"layer": "bottom",
|
||||
"output": ["DP-1", "DP-2", "!HDMI-A-2"],
|
||||
"position": "bottom",
|
||||
"mod": "dock",
|
||||
"exclusive": true,
|
||||
"gtk-layer-shell": true,
|
||||
"passthrough": false,
|
||||
"height": 30,
|
||||
"modules-left": [
|
||||
"hyprland/workspaces"
|
||||
],
|
||||
"modules-center": [
|
||||
"mpris",
|
||||
"privacy"
|
||||
],
|
||||
"modules-left": ["hyprland/workspaces"],
|
||||
"modules-center": ["mpris", "privacy"],
|
||||
"modules-right": [
|
||||
"custom/alhp",
|
||||
"cpu",
|
||||
@@ -23,18 +19,18 @@
|
||||
"network",
|
||||
"battery",
|
||||
"tray",
|
||||
"clock"
|
||||
"clock",
|
||||
],
|
||||
"hyprland/workspaces": {
|
||||
"icon-size": 32,
|
||||
"spacing": 16,
|
||||
"on-scroll-up": "hyprctl dispatch workspace r+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace r-1"
|
||||
"on-scroll-down": "hyprctl dispatch workspace r-1",
|
||||
},
|
||||
"cpu": {
|
||||
"interval": 5,
|
||||
"format": " {usage}%",
|
||||
"max-length": 10
|
||||
"max-length": 10,
|
||||
},
|
||||
"disk": {
|
||||
"interval": 30,
|
||||
@@ -42,14 +38,14 @@
|
||||
"path": "/",
|
||||
"tooltip": true,
|
||||
"unit": "GB",
|
||||
"tooltip-format": "Available {free} of {total}"
|
||||
"tooltip-format": "Available {free} of {total}",
|
||||
},
|
||||
"memory": {
|
||||
"interval": 10,
|
||||
"format": " {percentage}%",
|
||||
"max-length": 10,
|
||||
"tooltip": true,
|
||||
"tooltip-format": "RAM - {used:0.1f}GiB used"
|
||||
"tooltip-format": "RAM - {used:0.1f}GiB used",
|
||||
},
|
||||
"wlr/taskbar": {
|
||||
"format": "{icon} {title:.17}",
|
||||
@@ -58,11 +54,11 @@
|
||||
"on-click-middle": "close",
|
||||
"tooltip-format": "{title}",
|
||||
"ignore-list": [],
|
||||
"on-click": "activate"
|
||||
"on-click": "activate",
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 18,
|
||||
"spacing": 3
|
||||
"spacing": 3,
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:%R | %d.%m.%Y}",
|
||||
@@ -78,16 +74,16 @@
|
||||
"days": "<span color='#ecc6d9'><b>{}</b></span>",
|
||||
"weeks": "<span color='#99ffdd'><b>W{}</b></span>",
|
||||
"weekdays": "<span color='#ffcc66'><b>{}</b></span>",
|
||||
"today": "<span color='#ff6699'><b><u>{}</u></b></span>"
|
||||
}
|
||||
"today": "<span color='#ff6699'><b><u>{}</u></b></span>",
|
||||
},
|
||||
},
|
||||
"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"
|
||||
}
|
||||
"on-scroll-down": "shift_down",
|
||||
},
|
||||
},
|
||||
"network": {
|
||||
"format-wifi": "{essid} ({signalStrength}%) {icon}",
|
||||
@@ -97,37 +93,19 @@
|
||||
"tooltip-format-wifi": "{essid} ({signalStrength}%) ",
|
||||
"tooltip-format-ethernet": "{ifname} ",
|
||||
"tooltip-format-disconnected": "Disconnected",
|
||||
"format-icons": [
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "
|
||||
]
|
||||
"format-icons": [" ", " ", " ", " ", " "],
|
||||
},
|
||||
"battery": {
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 30,
|
||||
"critical": 20
|
||||
"critical": 20,
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-charging": " {capacity}%",
|
||||
"format-plugged": " {capacity}%",
|
||||
"format-alt": "{time} {icon}",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
"format-icons": ["", "", "", "", "", "", "", "", "", "", ""],
|
||||
},
|
||||
"pulseaudio": {
|
||||
"format": "{volume}% {icon} ",
|
||||
@@ -143,16 +121,11 @@
|
||||
"phone-muted": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": [
|
||||
"",
|
||||
""
|
||||
]
|
||||
"default": ["", ""],
|
||||
},
|
||||
"scroll-step": 5,
|
||||
"on-click": "pwvucontrol",
|
||||
"ignored-sinks": [
|
||||
"Easy Effects Sink"
|
||||
]
|
||||
"ignored-sinks": ["Easy Effects Sink"],
|
||||
},
|
||||
"privacy": {
|
||||
"icon-spacing": 4,
|
||||
@@ -162,19 +135,19 @@
|
||||
{
|
||||
"type": "screenshare",
|
||||
"tooltip": true,
|
||||
"tooltip-icon-size": 12
|
||||
"tooltip-icon-size": 12,
|
||||
},
|
||||
{
|
||||
"type": "audio-out",
|
||||
"tooltip": true,
|
||||
"tooltip-icon-size": 12
|
||||
"tooltip-icon-size": 12,
|
||||
},
|
||||
{
|
||||
"type": "audio-in",
|
||||
"tooltip": true,
|
||||
"tooltip-icon-size": 12
|
||||
}
|
||||
]
|
||||
"tooltip-icon-size": 12,
|
||||
},
|
||||
],
|
||||
},
|
||||
"mpris": {
|
||||
"format": "{player_icon} {dynamic}",
|
||||
@@ -183,11 +156,11 @@
|
||||
"ellipsis": "…",
|
||||
"player-icons": {
|
||||
"default": "▶",
|
||||
"mpv": "🎵"
|
||||
"mpv": "🎵",
|
||||
},
|
||||
"status-icons": {
|
||||
"paused": "⏸"
|
||||
}
|
||||
"paused": "⏸",
|
||||
},
|
||||
},
|
||||
"bluetooth": {
|
||||
"format": " {status}",
|
||||
@@ -197,13 +170,14 @@
|
||||
"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}%"
|
||||
"tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%",
|
||||
},
|
||||
"custom/alhp": {
|
||||
"id": "custom-alhp",
|
||||
"exec": "$HOME/.config/waybar/scripts/alhp.sh",
|
||||
"format": "{} \uEB29 ",
|
||||
"return-type": "json",
|
||||
"interval": 60,
|
||||
"tooltip": true
|
||||
}
|
||||
"tooltip": true,
|
||||
"format": "{text}",
|
||||
},
|
||||
}
|
||||
|
@@ -191,10 +191,11 @@
|
||||
"tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%"
|
||||
},
|
||||
"custom/alhp": {
|
||||
"id": "custom-alhp",
|
||||
"exec": "$HOME/.config/waybar/scripts/alhp.sh",
|
||||
"format": "{} \uEB29 ",
|
||||
"return-type": "json",
|
||||
"interval": 60,
|
||||
"tooltip": true
|
||||
"tooltip": true,
|
||||
"format": "{text}",
|
||||
}
|
||||
}
|
||||
|
@@ -1,28 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
# Retrieve JSON output from alhp.utils.
|
||||
readonly ALHP_OUTPUT=$(alhp.utils -j)
|
||||
ALHP_OUTPUT=$(alhp.utils -j)
|
||||
total=$(jq -r '.total' <<<"$ALHP_OUTPUT")
|
||||
mirror_stale=$(jq -r '.mirror_out_of_date' <<<"$ALHP_OUTPUT")
|
||||
|
||||
# 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=''
|
||||
# defaults
|
||||
text=""
|
||||
tooltip='All good'
|
||||
class='good'
|
||||
|
||||
# Use arithmetic evaluation to check if total is greater than 0.
|
||||
if (( total > 0 )); then
|
||||
class='bad'
|
||||
# safe array even if packages is null
|
||||
readarray -t packages < <(
|
||||
jq -r '.packages // [] | .[]' <<<"$ALHP_OUTPUT"
|
||||
)
|
||||
|
||||
# 1) Mirror stale? highest priority
|
||||
if [[ "$mirror_stale" == "true" ]]; then
|
||||
class="stale"
|
||||
tooltip="Mirror is out of date"
|
||||
# 2) Any pending PKGBUILDs?
|
||||
elif (( total > 0 )); then
|
||||
class="bad"
|
||||
text="$tooltip"
|
||||
tooltip=$(printf "%s\n" "${packages[@]}")
|
||||
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
|
||||
case "$class" in
|
||||
good) icon="";;
|
||||
stale) icon="";;
|
||||
bad) icon="";;
|
||||
esac
|
||||
|
||||
# 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}'
|
||||
# Emit compact JSON for Statusbar
|
||||
jq -nc \
|
||||
--arg text "$icon $text" \
|
||||
--arg class "$class" \
|
||||
--arg tooltip "$tooltip" \
|
||||
'{text: $text, class: $class, tooltip: $tooltip}'
|
||||
|
@@ -1,9 +1,7 @@
|
||||
|
||||
/*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 */
|
||||
@@ -18,132 +16,133 @@
|
||||
@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;
|
||||
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;
|
||||
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;
|
||||
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;
|
||||
tooltip label {
|
||||
color: @content_main;
|
||||
}
|
||||
|
||||
.module {
|
||||
margin-left: 2px;
|
||||
margin-right: 2px;
|
||||
margin-left: 2px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
color: transparent;
|
||||
margin-right: 1.5px;
|
||||
margin-left: 1.5px;
|
||||
color: transparent;
|
||||
margin-right: 1.5px;
|
||||
margin-left: 1.5px;
|
||||
}
|
||||
#workspaces button {
|
||||
padding: 3px;
|
||||
color: @content_inactive;
|
||||
padding: 3px;
|
||||
color: @content_inactive;
|
||||
}
|
||||
#workspaces button.active {
|
||||
color: whitesmoke;
|
||||
background: @bg_active;
|
||||
color: whitesmoke;
|
||||
background: @bg_active;
|
||||
}
|
||||
#workspaces button.focused {
|
||||
color: @bg_active;
|
||||
color: @bg_active;
|
||||
}
|
||||
#workspaces button.urgent {
|
||||
background: rgba(255, 200, 0, 0.35);
|
||||
color: @warning_color;
|
||||
background: rgba(255, 200, 0, 0.35);
|
||||
color: @warning_color;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
background: @bg_hover;
|
||||
color: @content_main;
|
||||
background: @bg_hover;
|
||||
color: @content_main;
|
||||
}
|
||||
|
||||
#cpu, #disk, #memory {
|
||||
border-bottom: 1px solid grey;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
#cpu,
|
||||
#disk,
|
||||
#memory {
|
||||
border-bottom: 1px solid grey;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
#tray{
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
#tray {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
#tray > .passive {
|
||||
border-bottom: none;
|
||||
border-bottom: none;
|
||||
}
|
||||
#tray > .active {
|
||||
|
||||
}
|
||||
#tray > .needs-attention {
|
||||
border-bottom: 3px solid @warning_color;
|
||||
border-bottom: 3px solid @warning_color;
|
||||
}
|
||||
#tray > widget {
|
||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||
}
|
||||
#tray > widget:hover {
|
||||
background: @bg_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);
|
||||
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;
|
||||
background: @bg_hover;
|
||||
}
|
||||
|
||||
#network {
|
||||
border-bottom: 1px solid grey;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
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);
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||
}
|
||||
#clock:hover {
|
||||
background: @bg_hover;
|
||||
background: @bg_hover;
|
||||
}
|
||||
|
||||
#privacy {
|
||||
}
|
||||
#privacy-item {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
#privacy-item.screenshare {
|
||||
background: #850404;
|
||||
background: #850404;
|
||||
}
|
||||
#privacy-item.audio-in {
|
||||
background: #6c045e;
|
||||
background: #6c045e;
|
||||
}
|
||||
#privacy-item.audio-out {
|
||||
background: #02605b;
|
||||
background: #02605b;
|
||||
}
|
||||
|
||||
#mpris {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
#mpris.playing {
|
||||
}
|
||||
@@ -152,33 +151,33 @@ tooltip label{
|
||||
#mpris.stopped {
|
||||
}
|
||||
#mpris.firefox {
|
||||
border-bottom: 1px solid #fd8728;
|
||||
border-bottom: 1px solid #fd8728;
|
||||
}
|
||||
#mpris.spotify {
|
||||
border-bottom: 1px solid #17d860;
|
||||
border-bottom: 1px solid #17d860;
|
||||
}
|
||||
#mpris.mpv {
|
||||
border-bottom: 1px solid #420042;
|
||||
border-bottom: 1px solid #420042;
|
||||
}
|
||||
#mpris.chromium {
|
||||
border-bottom: 1px solid #1a73e8;
|
||||
border-bottom: 1px solid #1a73e8;
|
||||
}
|
||||
|
||||
#bluetooth {
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
#bluetooth.disabled {
|
||||
border-bottom: 1px solid grey;
|
||||
border-bottom: 1px solid grey;
|
||||
}
|
||||
#bluetooth.off {
|
||||
border-bottom: 1px solid grey;
|
||||
border-bottom: 1px solid grey;
|
||||
}
|
||||
#bluetooth.on {
|
||||
border-bottom: 1px solid #0059fd;
|
||||
border-bottom: 1px solid #0059fd;
|
||||
}
|
||||
#bluetooth.connected {
|
||||
border-bottom: 1px solid #00b7fa;
|
||||
border-bottom: 1px solid #00b7fa;
|
||||
}
|
||||
#bluetooth.discoverable {
|
||||
}
|
||||
@@ -187,16 +186,19 @@ tooltip label{
|
||||
#bluetooth.pairable {
|
||||
}
|
||||
#bluetooth.no-controller {
|
||||
background: darkred;
|
||||
background: darkred;
|
||||
}
|
||||
|
||||
#custom-alhp {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
#custom-alhp.good {
|
||||
border-bottom: 1px solid greenyellow;
|
||||
border-bottom: 1px solid greenyellow;
|
||||
}
|
||||
#custom-alhp.stale {
|
||||
border-bottom: 1px solid yellow;
|
||||
}
|
||||
#custom-alhp.bad {
|
||||
border-bottom: 1px solid orangered;
|
||||
border-bottom: 1px solid orangered;
|
||||
}
|
||||
|
@@ -197,6 +197,9 @@ tooltip label{
|
||||
#custom-alhp.good {
|
||||
border-bottom: 1px solid greenyellow;
|
||||
}
|
||||
#custom-alhp.stale {
|
||||
border-bottom: 1px solid yellow;
|
||||
}
|
||||
#custom-alhp.bad {
|
||||
border-bottom: 1px solid orangered;
|
||||
}
|
||||
|
Reference in New Issue
Block a user