update config

This commit is contained in:
2025-11-23 11:42:35 +01:00
parent fab7d2f157
commit 91df449304
73 changed files with 8450 additions and 338 deletions

21
.config/waybar/LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 Jesse Mirabel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

130
.config/waybar/config.jsonc Normal file
View File

@@ -0,0 +1,130 @@
{
/*------------------------------------------------------------
regression: wildcard includes are broken after v0.14.0
- https://github.com/Alexays/Waybar/issues/4354
- https://github.com/sejjy/mechabar/issues/31
------------------------------------------------------------*/
/*
"include": [
"~/.config/waybar/modules/*.jsonc",
"~/.config/waybar/modules/custom/*.jsonc",
"~/.config/waybar/modules/hyprland/*.jsonc"
// modules that are not included by default:
// "~/.config/waybar/modules/extras/*.jsonc"
],
*/
"include": [
// modules-left
"~/.config/waybar/modules/custom/user.jsonc",
"~/.config/waybar/modules/sway/workspaces.jsonc",
"~/.config/waybar/modules/sway/window.jsonc",
// modules-center
"~/.config/waybar/modules/sway/windowcount.jsonc",
// "~/.config/waybar/modules/temperature.jsonc",
"~/.config/waybar/modules/memory.jsonc",
"~/.config/waybar/modules/cpu.jsonc",
"~/.config/waybar/modules/custom/distro.jsonc",
"~/.config/waybar/modules/idle_inhibitor.jsonc",
"~/.config/waybar/modules/clock.jsonc",
"~/.config/waybar/modules/network.jsonc",
"~/.config/waybar/modules/bluetooth.jsonc",
"~/.config/waybar/modules/custom/system_update.jsonc",
// modules-right
"~/.config/waybar/modules/mpris.jsonc",
"~/.config/waybar/modules/pulseaudio.jsonc",
"~/.config/waybar/modules/backlight.jsonc",
"~/.config/waybar/modules/battery.jsonc",
"~/.config/waybar/modules/custom/power_menu.jsonc",
"~/.config/waybar/modules/custom/dividers.jsonc"
// modules that are not included by default:
// "~/.config/waybar/modules/extras/taskbar.jsonc",
// "~/.config/waybar/modules/extras/tray.jsonc",
// "~/.config/waybar/modules/extras/wireplumber.jsonc"
],
/*------------
layout
------------*/
"modules-left": [
"group/user",
"custom/left_div#1",
"sway/workspaces",
"custom/right_div#1",
"sway/window"
],
"modules-center": [
"sway/windowcount",
"custom/left_div#2",
// "temperature",
"custom/left_div#3",
"memory",
"custom/left_div#4",
"cpu",
"custom/left_inv#1",
"custom/left_div#5",
"custom/distro",
"custom/right_div#2",
"custom/right_inv#1",
"idle_inhibitor",
"clock#time",
"custom/right_div#3",
"clock#date",
"custom/right_div#4",
"network",
"bluetooth",
"custom/system_update",
"custom/right_div#5"
],
"modules-right": [
"tray",
"mpris",
"sway/language",
"custom/left_div#6",
"group/pulseaudio",
"custom/left_div#7",
"backlight",
"custom/left_div#8",
"battery",
"custom/left_inv#2",
"custom/power_menu"
],
/*-------------
options
-------------*/
// "expand-center":
// "expand-left":
// "expand-right":
"layer": "top",
// "output":
// "position":
"height": 0,
"width": 0,
"margin": 0,
// "margin-top":
// "margin-left":
// "margin-bottom":
// "margin-right":
// "no-center":
"spacing": 0,
// "name":
"mode": "dock",
// "start_hidden":
// "modifier-reset":
// "exclusive":
// "fixed-center":
// "passthrough":
// "ipc":
// "id":
"reload_style_on_change": true
// "on-sigusr1":
// "on-sigusr2":
}

54
.config/waybar/install.sh Executable file
View File

@@ -0,0 +1,54 @@
#!/usr/bin/env bash
RED='\033[1;31m'
GRN='\033[1;32m'
BLU='\033[1;34m'
RST='\033[0m'
DEPS=(
bluez
bluez-utils # bluetoothctl
brightnessctl
fzf
networkmanager # nmcli
pacman-contrib # checkupdates
pipewire-pulse
ttf-0xproto-nerd
)
main() {
printf '%bInstalling dependencies...%b\n' "$BLU" "$RST"
local package
local errors=0
for package in "${DEPS[@]}"; do
if pacman -Qi "$package" > /dev/null; then
printf '[%b/%b] %s\n' "$GRN" "$RST" "$package"
else
printf '[ ] %s...\n' "$package"
if sudo pacman -S --noconfirm "$package"; then
printf '[%b+%b] %s\n' "$GRN" "$RST" "$package"
else
printf '[%bx%b] %s\n' "$RED" "$RST" "$package"
((errors++))
fi
fi
done
printf '\n%bMaking scripts executable...%b\n' "$BLU" "$RST"
chmod -v +x ~/.config/waybar/scripts/*.sh
pkill waybar
waybar &> /dev/null &
disown
if ((errors > 0)); then
printf '\nInstallation completed with %b%d errors%b\n' \
"$RED" "$errors" "$RST"
else
printf '\n%bInstallation complete!%b\n' "$GRN" "$RST"
fi
}
main

View File

@@ -0,0 +1,32 @@
{
"backlight": {
// "interval":
"format": "{icon} {percent}%",
"format-icons": [
"", "", "", "", "", "", "", "", ""
],
"min-length": 7,
"max-length": 7,
// "align":
// "justify":
// "rotate":
// "states":
// "on-click":
// "on-click-middle":
// "on-click-right":
// "on-update":
"on-scroll-up": "~/.config/waybar/scripts/backlight.sh up",
"on-scroll-down": "~/.config/waybar/scripts/backlight.sh down",
// "smooth-scrolling-threshold":
// "reverse-scrolling":
// "reverse-mouse-scrolling":
// "scroll-step":
// "min-brightness":
"tooltip": false
// "tooltip-format":
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
}
}

View File

@@ -0,0 +1,45 @@
{
"battery": {
// "bat":
// "adapter":
// "design-capacity":
// "full-at":
// "interval":
"states": {
"warning": 20,
"critical": 10
},
"format": "{icon} {capacity}%",
"format-time": "{H} hr {M} min",
"format-icons": [
"󰂎", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"
],
"format-charging": "󰉁 {capacity}%",
"min-length": 7,
"max-length": 7,
// "align":
// "justify":
// "rotate":
// "on-click":
// "on-click-middle":
// "on-click-right":
// "on-update":
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
// "tooltip":
"tooltip-format": "Discharging: {time}",
"tooltip-format-charging": "Charging: {time}",
// "weighted-average":
// "bat-compatibility":
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
"events": {
"on-discharging-warning": "notify-send 'Battery Low (20%)' -i 'battery-020'",
"on-discharging-critical": "notify-send 'Battery Critical (10%)' -u critical -i 'battery-010'",
"on-charging-100": "notify-send 'Battery Full (100%)' -i 'battery-100-charged'"
}
}
}

View File

@@ -0,0 +1,38 @@
{
"bluetooth": {
// "controller":
// "format-device-preference":
"format": "󰂯",
"format-disabled": "󰂲",
"format-off": "󰂲",
"format-on": "󰂰",
"format-connected": "󰂱",
// "format-connected-battery":
// "format-no-controller":
// "format-icons":
// "rotate":
"min-length": 2,
"max-length": 2,
// "align":
// "justify":
"on-click": "kitty -e ~/.config/waybar/scripts/bluetooth.sh",
// "on-click-middle":
"on-click-right": "bluetoothctl power off && notify-send 'Bluetooth Off' -i 'network-bluetooth-inactive' -r 1925",
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
// "tooltip":
"tooltip-format": "Device Addr: {device_address}",
"tooltip-format-disabled": "Bluetooth Disabled",
"tooltip-format-off": "Bluetooth Off",
"tooltip-format-on": "Bluetooth Disconnected",
"tooltip-format-connected": "Device: {device_alias}",
"tooltip-format-enumerate-connected": "Device: {device_alias}",
"tooltip-format-connected-battery": "Device: {device_alias}\nBattery: {device_battery_percentage}%",
"tooltip-format-enumerate-connected-battery": "Device: {device_alias}\nBattery: {device_battery_percentage}%"
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
}
}

View File

@@ -0,0 +1,71 @@
{
"clock#time": {
// "interval":
"format": "{:%H:%M}",
// "timezone":
// "timezones":
// "locale":
"min-length": 5,
"max-length": 5,
// "rotate": 0,
// "on-click":
// "on-click-middle":
// "on-click-right":
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
// "tooltip":
"tooltip-format": "Standard Time: {:%I:%M %p}"
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
},
/*--------------
calendar
--------------*/
"clock#date": {
// "interval":
"format": "󰸗 {:%m-%d}",
// "timezone":
// "timezones":
// "locale":
"min-length": 8,
"max-length": 8,
// "rotate":
// "on-click":
// "on-click-middle":
// "on-click-right":
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
// "tooltip":
"tooltip-format": "{calendar}",
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
"calendar": {
"mode": "month",
"mode-mon-col": 6,
// "week-pos":
// "on-scroll":
"format": {
"months": "<span alpha='100%'><b>{}</b></span>",
"days": "<span alpha='90%'>{}</span>",
// "weeks":
"weekdays": "<span alpha='80%'><i>{}</i></span>",
"today": "<span alpha='100%'><b><u>{}</u></b></span>"
}
},
"actions": {
"on-click": "mode"
// "on-click-middle":
// "on-click-right":
// "on-scroll-up":
// "on-scroll-down":
}
}
}

View File

@@ -0,0 +1,27 @@
{
"cpu": {
"interval": 10,
"format": "󰍛 {usage}%",
"format-warning": "󰀨 {usage}%",
"format-critical": "󰀨 {usage}%",
// "format-icons":
"min-length": 7,
"max-length": 7,
// "align":
// "justify":
// "rotate":
"states": {
"warning": 75,
"critical": 90
},
// "on-click":
// "on-click-middle":
// "on-click-right":
// "on-update":
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
"tooltip": false
// "expand":
}
}

View File

@@ -0,0 +1,33 @@
{
"custom/distro": {
// "exec":
// "exec-if":
// "exec-on-event":
// "hide-empty-text":
// "return-type":
// "interval":
// "restart-interval":
// "signal":
"format": "󰣇",
// "format-icons":
// "rotate":
// "min-length":
// "max-length":
// "align":
// "justify":
// "on-click":
// "on-click-middle":
// "on-click-right":
// "on-update":
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
"tooltip": false
// "tooltip-format":
// "escape":
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
}
}

View File

@@ -0,0 +1,79 @@
{
/*-------------------
left dividers
-------------------*/
"custom/left_div#1": {
"format": "",
"tooltip": false
},
"custom/left_div#2": {
"format": "",
"tooltip": false
},
"custom/left_div#3": {
"format": "",
"tooltip": false
},
"custom/left_div#4": {
"format": "",
"tooltip": false
},
"custom/left_div#5": {
"format": "",
"tooltip": false
},
"custom/left_div#6": {
"format": "",
"tooltip": false
},
"custom/left_div#7": {
"format": "",
"tooltip": false
},
"custom/left_div#8": {
"format": "",
"tooltip": false
},
// inverse
"custom/left_inv#1": {
"format": "",
"tooltip": false
},
"custom/left_inv#2": {
"format": "",
"tooltip": false
},
/*--------------------
right dividers
--------------------*/
"custom/right_div#1": {
"format": "",
"tooltip": false
},
"custom/right_div#2": {
"format": "",
"tooltip": false
},
"custom/right_div#3": {
"format": "",
"tooltip": false
},
"custom/right_div#4": {
"format": "",
"tooltip": false
},
"custom/right_div#5": {
"format": "",
"tooltip": false
},
// inverse
"custom/right_inv#1": {
"format": "",
"tooltip": false
}
}

View File

@@ -0,0 +1,33 @@
{
"custom/power_menu": {
// "exec":
// "exec-if":
// "exec-on-event":
// "hide-empty-text":
// "return-type":
// "interval":
// "restart-interval":
// "signal":
"format": "󰤄",
// "format-icons":
// "rotate":
// "min-length":
// "max-length":
// "align":
// "justify":
"on-click": "kitty -e ~/.config/waybar/scripts/power-menu.sh",
// "on-click-middle":
// "on-click-right":
// "on-update":
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
// "tooltip":
"tooltip-format": "Power Menu"
// "escape":
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
}
}

View File

@@ -0,0 +1,33 @@
{
"custom/system_update": {
"exec": "~/.config/waybar/scripts/system-update.sh module",
// "exec-if":
// "exec-on-event":
// "hide-empty-text":
"return-type": "json",
"interval": 3600,
// "restart-interval":
"signal": 1,
"format": "{}",
// "format-icons":
// "rotate":
// "align":
// "justify":
"min-length": 2,
"max-length": 2,
"on-click": "kitty -e ~/.config/waybar/scripts/system-update.sh"
// "on-click-middle":
// "on-click-right":
// "on-update":
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
// "tooltip":
// "tooltip-format":
// "escape":
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
}
}

View File

@@ -0,0 +1,83 @@
{
"group/user": {
"orientation": "horizontal",
"modules": [
"custom/trigger",
"custom/user"
],
"drawer": {
// "transition-duration":
// "transition-left-to-right":
// "children-class":
// "click-to-reveal":
}
},
"custom/trigger": {
// "exec":
// "exec-if":
// "exec-on-event":
// "hide-empty-text":
// "return-type":
// "interval":
// "restart-interval":
// "signal":
"format": "󰍜",
// "format-icons":
// "rotate":
"min-length": 4,
"max-length": 4,
// "align":
// "justify":
// "on-click":
// "on-click-middle":
// "on-click-right":
// "on-update":
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
"tooltip": false
// "tooltip-format":
// "escape":
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
},
/*--------------
username
--------------*/
"custom/user": {
"exec": "id -un",
// "exec-if":
// "exec-on-event":
// "hide-empty-text":
// "return-type":
// "interval":
// "restart-interval":
// "signal":
"format": "{}",
// "format-icons":
// "rotate":
// "min-length":
// "max-length":
// "align":
// "justify":
// "on-click":
// "on-click-middle":
// "on-click-right":
// "on-update":
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
"tooltip": false
// "tooltip-format":
// "escape":
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
}
}

View File

@@ -0,0 +1,21 @@
{
"wlr/taskbar": {
// "all-outputs":
// "format":
// "icon-theme":
// "icon-size":
// "markup":
// "tooltip":
// "tooltip-format":
// "active-first":
// "sort-by-app-id":
"on-click": "activate",
// "on-click-middle":
// "on-click-right":
// "on-update":
"ignore-list": [ "kitty" ],
// "app_ids-mapping":
// "rewrite":
"cursor": true
}
}

View File

@@ -0,0 +1,13 @@
{
"tray": {
"icon-size": 16,
// "show-passive-items":
// "smooth-scrolling-threshold":
"spacing": 12,
// "reverse-direction":
// "on-update":
// "expand":
// "icons":
"cursor": true
}
}

View File

@@ -0,0 +1,82 @@
{
"group/wireplumber": {
"orientation": "horizontal",
"modules": [
"wireplumber#output",
"wireplumber#input"
],
"drawer": {
// "transition-duration":
"transition-left-to-right": false
// "children-class":
// "click-to-reveal":
}
},
/*-------------------
output device
-------------------*/
"wireplumber#output": {
"format": "{icon} {volume}%",
"format-muted": "󰝟 {volume}%",
// "format-source":
// "format-source-muted":
"format-icons": [
"󰕿", "󰖀", "󰕾"
],
// "rotate":
// "states":
"min-length": 7,
"max-length": 7,
// "align":
// "justify":
// "scroll-step":
"on-click": "~/.config/waybar/scripts/volume.sh output mute",
// "on-click-middle":
// "on-click-right":
// "on-update":
"on-scroll-up": "~/.config/waybar/scripts/volume.sh output raise",
"on-scroll-down": "~/.config/waybar/scripts/volume.sh output lower",
// "tooltip":
"tooltip-format": "Device: {node_name}",
// "max-volume":
// "reverse-scrolling":
"node-type": "Audio/Sink"
// "menu":
// "menu-file":
// "menu-actions":
},
/*----------------
microphone
----------------*/
"wireplumber#input": {
"format": "󰍬 {volume}%",
"format-muted": "󰍭 {volume}%",
// "format-source":
// "format-source-muted":
// "rotate":
// "states":
"min-length": 7,
"max-length": 7,
// "align":
// "justify":
// "scroll-step":
"on-click": "~/.config/waybar/scripts/volume.sh input mute",
// "on-click-middle":
// "on-click-right":
// "on-update":
"on-scroll-up": "~/.config/waybar/scripts/volume.sh input raise",
"on-scroll-down": "~/.config/waybar/scripts/volume.sh input lower",
// "tooltip":
"tooltip-format": "Device: {node_name}",
// "max-volume":
// "reverse-scrolling":
"node-type": "Audio/Source"
// "menu":
// "menu-file":
// "menu-actions":
}
}

View File

@@ -0,0 +1,30 @@
{
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "󰈈",
"deactivated": "󰈉"
},
// "rotate":
"min-length": 3,
"max-length": 3,
// "align":
// "justify":
// "on-click":
// "on-click-middle":
// "on-click-right":
// "on-update":
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
// "tooltip":
"tooltip-format-activated": "Keep Screen On: <span text_transform='capitalize'>{status}</span>",
"tooltip-format-deactivated": "Keep Screen On: <span text_transform='capitalize'>{status}</span>",
"start-activated": false
// "timeout":
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
}
}

View File

@@ -0,0 +1,31 @@
{
"memory": {
"interval": 10,
"format": "󰘚 {percentage}%",
"format-warning": "󰀧 {percentage}%",
"format-critical": "󰀧 {percentage}%",
// "format-icons":
// "rotate":
"states": {
"warning": 75,
"critical": 90
},
"min-length": 7,
"max-length": 7,
// "align":
// "justify":
// "on-click":
// "on-click-middle":
// "on-click-right":
// "on-update":
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
// "tooltip":
"tooltip-format": "Memory Used: {used:0.1f} GB / {total:0.1f} GB"
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
}
}

View File

@@ -0,0 +1,36 @@
{
"mpris": {
// "player":
// "ignored-players":
// "interval":
"format": "{player_icon} {title} - {artist}",
"format-paused": "{status_icon} {title} - {artist}",
"tooltip-format": "Playing: {title} - {artist}",
"tooltip-format-paused": "Paused: {title} - {artist}",
// "enable-tooltip-len-limits":
// "on-click":
// "on-click-middle":
// "on-click-right":
"player-icons": {
"default": "󰐊"
},
"status-icons": {
"paused": "󰏤"
},
// "artist-len":
// "album-len":
// "title-len":
// "dynamic-len":
// "dynamic-order":
// "dynamic-separator":
// "dynamic-importance-order":
// "truncate-hours":
// "ellipsis":
// "rotate":
// "min-length":
"max-length": 1000
// "align":
// "justify":
// "expand":
}
}

View File

@@ -0,0 +1,40 @@
{
"network": {
// "interface":
// "rfkill":
"interval": 10,
// "family":
"format": "󰤨",
"format-ethernet": "󰈀",
"format-wifi": "{icon}",
// "format-linked":
"format-disconnected": "󰤯",
"format-disabled": "󰤮",
// "format-alt":
"format-icons": [
"󰤟", "󰤢", "󰤥", "󰤨"
],
// "rotate":
"min-length": 2,
"max-length": 2,
// "align":
// "justify":
"on-click": "kitty -e ~/.config/waybar/scripts/network.sh",
// "on-click-middle":
"on-click-right": "nmcli radio wifi off && notify-send 'Wi-Fi Disabled' -i 'network-wireless-off' -r 1125",
// "on-update":
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
// "tooltip":
"tooltip-format": "Gateway: {gwaddr}",
"tooltip-format-ethernet": "Interface: {ifname}",
"tooltip-format-wifi": "Network: {essid}\nIP Addr: {ipaddr}/{cidr}\nStrength: {signalStrength}%\nFrequency: {frequency} GHz",
"tooltip-format-disconnected": "Wi-Fi Disconnected",
"tooltip-format-disabled": "Wi-Fi Disabled"
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
}
}

View File

@@ -0,0 +1,96 @@
{
"group/pulseaudio": {
"orientation": "horizontal",
"modules": [
"pulseaudio#output",
"pulseaudio#input"
],
"drawer": {
// "transition-duration":
"transition-left-to-right": false
// "children-class":
// "click-to-reveal":
}
},
/*-------------------
output device
-------------------*/
"pulseaudio#output": {
"format": "{icon} {volume}%",
// "format-bluetooth":
"format-muted": "{icon} {volume}%",
// "format-source":
// "format-source-muted":
"format-icons": {
"default": [ "󰕿", "󰖀", "󰕾" ],
"default-muted": "󰝟",
"headphone": "󰋋",
"headphone-muted": "󰟎",
"headset": "󰋎",
"headset-muted": "󰋐"
},
// "rotate":
// "states":
"min-length": 7,
"max-length": 7,
// "align":
// "justify":
// "scroll-step":
"on-click": "~/.config/waybar/scripts/volume.sh output mute",
// "on-click-middle":
// "on-click-right":
// "on-update":
"on-scroll-up": "~/.config/waybar/scripts/volume.sh output raise",
"on-scroll-down": "~/.config/waybar/scripts/volume.sh output lower",
// "smooth-scrolling-threshold":
// "tooltip":
"tooltip-format": "Output Device: {desc}"
// "max-volume":
// "ignored-sinks":
// "reverse-scrolling":
// "reverse-mouse-scrolling":
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
},
/*----------------
microphone
----------------*/
"pulseaudio#input": {
"format": "{format_source}",
// "format-bluetooth":
// "format-muted":
"format-source": "󰍬 {volume}%",
"format-source-muted": "󰍭 {volume}%",
// "format-icons":
// "rotate":
// "states":
"min-length": 7,
"max-length": 7,
// "align":
// "justify":
// "scroll-step":
"on-click": "~/.config/waybar/scripts/volume.sh input mute",
// "on-click-middle":
// "on-click-right":
// "on-update":
"on-scroll-up": "~/.config/waybar/scripts/volume.sh input raise",
"on-scroll-down": "~/.config/waybar/scripts/volume.sh input lower",
// "smooth-scrolling-threshold":
// "tooltip":
"tooltip-format": "Input Device: {desc}"
// "max-volume":
// "ignored-sinks":
// "reverse-scrolling":
// "reverse-mouse-scrolling":
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
}
}

View File

@@ -0,0 +1,13 @@
{
"sway/window": {
"format": "{}",
"rewrite": {
"": "Desktop",
"kitty": "Terminal",
"Alacritty": "Terminal",
"zsh": "Terminal",
"~": "Terminal"
},
"swap-icon-label": false
}
}

View File

@@ -0,0 +1,12 @@
{
"sway/windowcount": {
"format": "[{}]",
// "format-empty":
// "format-windowed":
// "format-fullscreen":
// "separate-outputs":
// "min-length":
// "max-length":
"swap-icon-label": false
}
}

View File

@@ -0,0 +1,11 @@
{
"sway/workspaces": {
"format": "{icon}",
"disable-scroll": true,
"format-icons": {
"default": "",
"focused": ""
},
"cursor": true
}
}

View File

@@ -0,0 +1,35 @@
{
"temperature": {
"thermal-zone": 1,
// "hwmon-path":
// "hwmon-path-abs":
// "input-filename":
// "warning-threshold":
"critical-threshold": 90,
"interval": 10,
// "format-warning":
"format-critical": "󰀦 {temperatureC}°C",
"format": "{icon} {temperatureC}°C",
"format-icons": [
"󱃃", "󰔏", "󱃂"
],
// "rotate":
"min-length": 8,
"max-length": 8,
// "align":
// "justify":
// "on-click":
// "on-click-middle":
// "on-click-right":
// "on-update":
// "on-scroll-up":
// "on-scroll-down":
// "smooth-scrolling-threshold":
// "tooltip":
"tooltip-format": "Temp in Fahrenheit: {temperatureF}°F"
// "menu":
// "menu-file":
// "menu-actions":
// "expand":
}
}

View File

@@ -0,0 +1,66 @@
#!/usr/bin/env bash
#
# Adjust screen brightness and send a notification with the current level
#
# Requirements:
# - brightnessctl
# - notify-send (libnotify)
#
# Author: Jesse Mirabel <sejjymvm@gmail.com>
# Created: August 28, 2025
# License: MIT
VALUE=1
print-usage() {
local script=${0##*/}
cat <<- EOF
USAGE: $script [OPTIONS]
Adjust screen brightness and send a notification with the current level
OPTIONS:
up <value> Increase brightness by <value>
down <value> Decrease brightness by <value>
Default value: $VALUE
EXAMPLES:
Increase brightness:
$ $script up
Decrease brightness by 5:
$ $script down 5
EOF
exit 1
}
set-brightness() {
local op
case $action in
'up') op='+' ;;
'down') op='-' ;;
esac
brightnessctl -n set "${value}%${op}" &> /dev/null
local level
level=$(brightnessctl -m | awk -F ',' '{print $4}')
notify-send "Brightness: $level" -h int:value:"$level" -i 'contrast' -r 2825
}
main() {
action=$1
value=${2:-$VALUE}
! ((value > 0)) && print-usage
case $action in
'up' | 'down') set-brightness ;;
*) print-usage ;;
esac
}
main "$@"

View File

@@ -0,0 +1,120 @@
#!/usr/bin/env bash
#
# Scan, select, pair, and connect to Bluetooth devices
#
# Requirements:
# - bluetoothctl (bluez-utils)
# - fzf
# - notify-send (libnotify)
#
# Author: Jesse Mirabel <sejjymvm@gmail.com>
# Created: August 19, 2025
# License: MIT
RED='\033[1;31m'
RST='\033[0m'
TIMEOUT=10
get-device-list() {
bluetoothctl --timeout $TIMEOUT scan on > /dev/null &
local i num
for ((i = 1; i <= TIMEOUT; i++)); do
printf '\rScanning for devices... (%d/%d)' $i $TIMEOUT
printf '\n%bPress [q] to stop%b\n\n' "$RED" "$RST"
num=$(bluetoothctl devices | grep -c Device)
printf '\rDevices: %s' "$num"
printf '\033[3A' # move cursor up 3 lines
read -rs -n 1 -t 1
[[ $REPLY == [Qq] ]] && break
done
printf '\n%bScanning stopped.%b\n\n' "$RED" "$RST"
list=$(bluetoothctl devices | grep Device | cut -d ' ' -f 2-)
if [[ -z $list ]]; then
notify-send 'Bluetooth' 'No devices found' -i 'package-broken'
return 1
fi
}
select-device() {
local header
header=$(printf '%-17s %s' 'Address' 'Name')
# shellcheck disable=SC1090
. ~/.config/waybar/scripts/fzf-colors.sh 2> /dev/null
local opts=(
--border=sharp
--border-label=' Bluetooth Devices '
--ghost='Search'
--header="$header"
--height=~100%
--highlight-line
--info=inline-right
--pointer=
--reverse
"${COLORS[@]}"
)
address=$(fzf "${opts[@]}" <<< "$list" | awk '{print $1}')
[[ -z $address ]] && return 1
local connected
connected=$(bluetoothctl info "$address" | grep Connected |
awk '{print $2}')
if [[ $connected == 'yes' ]]; then
notify-send 'Bluetooth' 'Already connected to this device' \
-i 'package-install'
return 1
fi
}
pair-and-connect() {
local paired
paired=$(bluetoothctl info "$address" | grep Paired | awk '{print $2}')
if [[ $paired == 'no' ]]; then
printf 'Pairing...'
if ! timeout $TIMEOUT bluetoothctl pair "$address" > /dev/null; then
notify-send 'Bluetooth' 'Failed to pair' -i 'package-purge'
return 1
fi
fi
printf '\nConnecting...'
if timeout $TIMEOUT bluetoothctl connect "$address" > /dev/null; then
notify-send 'Bluetooth' 'Successfully connected' -i 'package-install'
else
notify-send 'Bluetooth' 'Failed to connect' -i 'package-purge'
fi
}
main() {
local status
status=$(bluetoothctl show | grep PowerState | awk '{print $2}')
if [[ $status == 'off' ]]; then
bluetoothctl power on > /dev/null
notify-send 'Bluetooth On' -i 'network-bluetooth-activated' -r 1925
fi
tput civis # make cursor invisible
get-device-list || exit 1
tput cnorm # make cursor visible
select-device || exit 1
pair-and-connect || exit 1
}
main

View File

@@ -0,0 +1,82 @@
#!/usr/bin/env bash
#
# NOTE:
# The names, maps, and COLORS arrays are all parallel:
# - names[i]: the color name as defined in theme.css
# - maps[i]: variable to store the hex value
# - COLORS: color config passed to fzf
#
# Add themes by defining the names array in def-colors().
FILE="$XDG_CONFIG_HOME/waybar/theme.css"
def-colors() {
local theme
theme=$(sed 1q "$FILE")
declare -ga names
# Add themes here:
if [[ $theme == *"catppuccin"* ]]; then
names=(
'surface0' 'base' 'rosewater'
'red' 'text' 'red'
'mauve' 'rosewater' 'lavender'
'text' 'mauve' 'red'
'surface1' 'overlay0' 'text'
)
fi
}
get-hex() {
local defs
defs=$(sed -n '3,28p' "$FILE")
local n hex
declare -gA colors
for n in "${names[@]}"; do
read -r _ _ hex < <(grep " $n " <<< "$defs")
hex=${hex%;}
colors[$n]=$hex
done
}
map-colors() {
local -a maps=(
'_cur_bg' '_bg' '_spinner'
'_hl' '_fg' '_header'
'_info' '_pointer' '_marker'
'_cur_fg' '_prompt' '_cur_hl'
'_sel_bg' '_border' '_label'
)
local n
local i=0
for n in "${names[@]}"; do
declare -g "${maps[i]}"="${colors[$n]}"
((i++))
done
}
main() {
def-colors
get-hex
map-colors
# shellcheck disable=SC2154
# These variables are defined dynamically
declare -ga COLORS=(
"--color= bg+:$_cur_bg, bg:$_bg, spinner:$_spinner"
"--color= hl:$_hl, fg:$_fg, header:$_header"
"--color= info:$_info, pointer:$_pointer, marker:$_marker"
"--color= fg+:$_cur_fg, prompt:$_prompt, hl+:$_cur_hl"
"--color=selected-bg:$_sel_bg, border:$_border, label:$_label"
)
export COLORS
}
main

View File

@@ -0,0 +1,99 @@
#!/usr/bin/env bash
#
# Scan, select, and connect to Wi-Fi networks
#
# Requirements:
# - nmcli (networkmanager)
# - fzf
# - notify-send (libnotify)
#
# Author: Jesse Mirabel <sejjymvm@gmail.com>
# Created: August 11, 2025
# License: MIT
RED='\033[1;31m'
RST='\033[0m'
TIMEOUT=5
get-network-list() {
nmcli device wifi rescan 2> /dev/null
local i
for ((i = 1; i <= TIMEOUT; i++)); do
printf '\rScanning for networks... (%d/%d)' $i $TIMEOUT
printf '\033[1A' # move cursor up 1 line
list=$(timeout 1 nmcli device wifi list)
networks=$(tail -n +2 <<< "$list" | awk '$2 != "--"')
[[ -n $networks ]] && break
done
printf '\n%bScanning stopped.%b\n\n' "$RED" "$RST"
if [[ -z $networks ]]; then
notify-send 'Wi-Fi' 'No networks found' -i 'package-broken'
return 1
fi
}
select-network() {
local header
header=$(head -n 1 <<< "$list")
# shellcheck disable=SC1090
. ~/.config/waybar/scripts/fzf-colors.sh 2> /dev/null
local opts=(
--border=sharp
--border-label=' Wi-Fi Networks '
--ghost='Search'
--header="$header"
--height=~100%
--highlight-line
--info=inline-right
--pointer=
--reverse
"${COLORS[@]}"
)
bssid=$(fzf "${opts[@]}" <<< "$networks" | awk '{print $1}')
if [[ -z $bssid ]]; then
return 1
elif [[ $bssid == '*' ]]; then
notify-send 'Wi-Fi' 'Already connected to this network' \
-i 'package-install'
return 1
fi
}
connect-to-network() {
printf 'Connecting...\n'
if nmcli --ask device wifi connect "$bssid"; then
notify-send 'Wi-Fi' 'Successfully connected' -i 'package-install'
else
notify-send 'Wi-Fi' 'Failed to connect' -i 'package-purge'
fi
}
main() {
local status
status=$(nmcli radio wifi)
if [[ $status == 'disabled' ]]; then
nmcli radio wifi on
notify-send 'Wi-Fi Enabled' -i 'network-wireless-on' -r 1125
fi
tput civis # make cursor invisible
get-network-list || exit 1
tput cnorm # make cursor visible
select-network || exit 1
connect-to-network
}
main

View File

@@ -0,0 +1,49 @@
#!/usr/bin/env bash
#
# Display a power menu to perform system actions
#
# Requirements:
# - fzf
#
# Author: Jesse Mirabel <sejjymvm@gmail.com>
# Created: August 19, 2025
# License: MIT
LIST=(
'Lock'
'Shutdown'
'Reboot'
'Logout'
'Hibernate'
'Suspend'
)
main() {
# shellcheck disable=SC1090
. ~/.config/waybar/scripts/fzf-colors.sh 2> /dev/null
local opts=(
--border=sharp
--border-label=' Power Menu '
--height=~100%
--highlight-line
--no-input
--pointer=
--reverse
"${COLORS[@]}"
)
local selected
selected=$(printf '%s\n' "${LIST[@]}" | fzf "${opts[@]}")
case $selected in
'Lock') loginctl lock-session ;;
'Shutdown') systemctl poweroff ;;
'Reboot') systemctl reboot ;;
'Logout') loginctl terminate-session "$XDG_SESSION_ID" ;;
'Hibernate') systemctl hibernate ;;
'Suspend') systemctl suspend ;;
esac
}
main

View File

@@ -0,0 +1,82 @@
#!/usr/bin/env bash
#
# Check for available updates and optionally upgrade packages on Arch Linux.
#
# Requirements:
# - checkupdates (pacman-contrib)
# - notify-send (libnotify)
# - optional: an AUR helper (aura, paru, pikaur, trizen, yay)
#
# Author: Jesse Mirabel <sejjymvm@gmail.com>
# Created: August 16, 2025
# License: MIT
GRN='\033[1;32m'
BLU='\033[1;34m'
RST='\033[0m'
TIMEOUT=5
check-updates() {
repo=$(timeout $TIMEOUT checkupdates 2> /dev/null | wc -l)
if [[ -n $helper ]]; then
aur=$(timeout $TIMEOUT "$helper" -Quaq 2> /dev/null | wc -l)
fi
}
update-packages() {
printf '\n%bUpdating pacman packages...%b\n' "$BLU" "$RST"
sudo pacman -Syu
printf '\n%bUpdating AUR packages...%b\n' "$BLU" "$RST"
"$helper" -Syu
# use signal to update the module
pkill -RTMIN+1 waybar
notify-send 'Update Complete' -i 'package-install'
printf '\n%bUpdate Complete!%b\n' "$GRN" "$RST"
read -rs -n 1 -p 'Press any key to exit...'
}
display-module() {
local tooltip="Official: $repo"
if [[ -n $helper ]]; then
tooltip+="\nAUR($helper): $aur"
fi
local total=$((repo + aur))
if ((total == 0)); then
echo "{ \"text\": \"󰸟\", \"tooltip\": \"No updates available\" }"
else
echo "{ \"text\": \"\", \"tooltip\": \"$tooltip\" }"
fi
}
main() {
local arg=$1
local helpers=(aura paru pikaur trizen yay)
local bin
bin=$(command -v "${helpers[@]}" | head -n 1)
helper=${bin##*/}
repo=0
aur=0
case $arg in
'module')
check-updates
display-module
;;
*)
printf '%bChecking for updates...%b' "$BLU" "$RST"
check-updates
update-packages
;;
esac
}
main "$@"

159
.config/waybar/scripts/volume.sh Executable file
View File

@@ -0,0 +1,159 @@
#!/usr/bin/env bash
#
# Adjust default device volume and send a notification with the current level
#
# Requirements:
# - pactl (libpulse)
# - notify-send (libnotify)
#
# Author: Jesse Mirabel <sejjymvm@gmail.com>
# Created: September 07, 2025
# License: MIT
VALUE=1
MIN=0
MAX=100
ID=2425
print-usage() {
local script=${0##*/}
cat <<- EOF
USAGE: $script [OPTIONS]
Adjust default device volume and send a notification with the current level
OPTIONS:
input Set device as '@DEFAULT_SOURCE@'
output Set device as '@DEFAULT_SINK@'
mute Toggle device mute
raise <value> Raise volume by <value>
lower <value> Lower volume by <value>
Default value: $VALUE
EXAMPLES:
Toggle microphone mute:
$ $script input mute
Raise speaker volume:
$ $script output raise
Lower speaker volume by 5:
$ $script output lower 5
EOF
exit 1
}
check-muted() {
local muted
muted=$(pactl "get-$dev_mute" "$dev" | awk '{print $2}')
local state
case $muted in
'yes') state='Muted' ;;
'no') state='Unmuted' ;;
esac
echo "$state"
}
get-volume() {
local vol
vol=$(pactl "get-$dev_vol" "$dev" | awk '{print $5}' | tr -d '%')
echo "$vol"
}
get-icon() {
local state vol
state=$(check-muted)
vol=$(get-volume)
local icon
local new_vol=${1:-$vol}
if [[ $state == 'Muted' ]]; then
icon="$dev_icon-muted"
else
if ((new_vol < ((MAX * 33) / 100))); then
icon="$dev_icon-low"
elif ((new_vol < ((MAX * 66) / 100))); then
icon="$dev_icon-medium"
else
icon="$dev_icon-high"
fi
fi
echo "$icon"
}
toggle-mute() {
pactl "set-$dev_mute" "$dev" toggle
local state icon
state=$(check-muted)
icon=$(get-icon)
notify-send "$title: $state" -i "$icon" -r $ID
}
set-volume() {
local vol
vol=$(get-volume)
local new_vol
case $action in
'raise')
new_vol=$((vol + value))
((new_vol > MAX)) && new_vol=$MAX
;;
'lower')
new_vol=$((vol - value))
((new_vol < MIN)) && new_vol=$MIN
;;
esac
pactl "set-$dev_vol" "$dev" "${new_vol}%"
local icon
icon=$(get-icon "$new_vol")
notify-send "$title: ${new_vol}%" -h int:value:$new_vol -i "$icon" -r $ID
}
main() {
device=$1
action=$2
value=${3:-$VALUE}
! ((value > 0)) && print-usage
case $device in
'input')
dev='@DEFAULT_SOURCE@'
dev_mute='source-mute'
dev_vol='source-volume'
dev_icon='mic-volume'
title='Microphone'
;;
'output')
dev='@DEFAULT_SINK@'
dev_mute='sink-mute'
dev_vol='sink-volume'
dev_icon='audio-volume'
title='Volume'
;;
*) print-usage ;;
esac
case $action in
'mute') toggle-mute ;;
'raise' | 'lower') set-volume ;;
*) print-usage ;;
esac
}
main "$@"

12
.config/waybar/style.css Normal file
View File

@@ -0,0 +1,12 @@
/* ignore GTK theme */
* {
all: initial;
}
@import "theme.css";
@import "styles/fonts.css";
@import "styles/global.css";
@import "styles/modules-center.css";
@import "styles/modules-left.css";
@import "styles/modules-right.css";
@import "styles/states.css";

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -0,0 +1,29 @@
* {
font-family: "Ubuntu Nerd Font", "0xProto Nerd Font", sans-serif;
/* font-family: "Inter"; */
font-weight: bold;
font-size: 16px;
}
#custom-user,
#window label,
#mpris,
tooltip label {
font-weight: normal;
}
#workspaces button.active label,
#custom-distro {
font-size: 22px;
}
#custom-power_menu {
font-size: 19px;
}
#custom-left_div,
#custom-left_inv,
#custom-right_div,
#custom-right_inv {
font-size: 22px;
}

View File

@@ -0,0 +1,38 @@
* {
color: @main-fg;
}
#waybar {
background-color: @outline;
}
#waybar > box {
margin: 0px;
background-color: @main-bg;
}
button {
border-radius: 16px;
min-width: 16px;
padding: 0 10px;
}
button:hover {
background-color: @hover-bg;
color: @hover-fg;
}
tooltip {
border: 2px solid @main-br;
border-radius: 10px;
background-color: @main-bg;
}
tooltip > box {
padding: 0 6px;
}
.module,
#custom-left_div,
#custom-left_inv,
#custom-right_div,
#custom-right_inv {
margin-bottom: -1px;
}

View File

@@ -0,0 +1,119 @@
/*------------------
window count
------------------*/
#windowcount {
margin-right: 12px;
}
#windowcount label {
color: @hover-fg;
}
/*-----------------
temperature
-----------------*/
#custom-left_div.2 {
color: @temperature;
}
#temperature {
background-color: @temperature;
}
/*------------
memory
------------*/
#custom-left_div.3 {
background-color: @temperature;
color: @memory;
}
#memory {
background-color: @memory;
}
/*---------
cpu
---------*/
#custom-left_div.4 {
background-color: @memory;
color: @cpu;
}
#cpu {
background-color: @cpu;
}
#custom-left_inv.1 {
color: @cpu;
}
/*-----------------
distro icon
-----------------*/
#custom-left_div.5,
#custom-right_div.2 {
color: @accent;
}
#custom-distro {
padding: 0 10px 0 5px;
background-color: @accent;
color: @main-bg;
}
/*--------------------
idle inhibitor
--------------------*/
#custom-right_inv.1 {
color: @time;
}
#idle_inhibitor {
background-color: @time;
}
/*----------
time
----------*/
#clock.time {
padding-right: 6px;
background-color: @time;
}
#custom-right_div.3 {
background-color: @date;
color: @time;
}
/*----------
date
----------*/
#clock.date {
padding-left: 6px;
background-color: @date;
}
#custom-right_div.4 {
background-color: @tray;
color: @date;
}
/*-----------------
system tray
-----------------*/
#network {
background-color: @tray;
padding: 0 6px 0 4px;
}
#bluetooth {
background-color: @tray;
padding: 0 5px;
}
#custom-system_update {
background-color: @tray;
padding: 0 8px 0 2px;
}
#custom-right_div.5 {
color: @tray;
}

View File

@@ -0,0 +1,38 @@
/*--------------
username
--------------*/
#custom-user {
padding-right: 12px;
}
/*----------------
workspaces
----------------*/
#custom-left_div.1,
#custom-right_div.1 {
color: @workspaces;
}
#workspaces {
padding: 0 1px;
background-color: @workspaces;
}
#workspaces button {
/*content: "c";*/
}
/*------------------
window title
------------------*/
#window {
margin-left: 12px;
margin-top: 3px;
}
#window label {
font-size: 14px;
color: #888;
}

View File

@@ -0,0 +1,59 @@
/*----------------
media info
----------------*/
#mpris {
padding: 0 12px;
}
/*------------
volume
------------*/
#custom-left_div.6 {
color: @volume;
}
#pulseaudio,
#wireplumber {
background-color: @volume;
}
/*----------------
brightness
----------------*/
#custom-left_div.7 {
background-color: @volume;
color: @backlight;
}
#backlight {
background-color: @backlight;
}
/*-------------
battery
-------------*/
#custom-left_div.8 {
background-color: @backlight;
color: @battery;
}
#battery {
background-color: @battery;
}
#custom-left_inv.2 {
color: @battery;
}
/*----------------
power menu
----------------*/
#custom-power_menu {
border-radius: 16px;
padding: 0 19px 0 16px;
color: @accent;
}
#custom-power_menu:hover {
background-color: @hover-bg;
}

View File

@@ -0,0 +1,37 @@
#custom-trigger:hover,
#idle_inhibitor:hover,
#clock.date:hover,
#network:hover,
#bluetooth:hover,
#custom-system_update:hover,
#mpris:hover,
#pulseaudio:hover,
#wireplumber:hover {
color: @hover-fg;
}
/* inactive state */
#idle_inhibitor.deactivated,
#mpris.paused,
#pulseaudio.output.muted,
#pulseaudio.input.source-muted,
#wireplumber.muted {
color: @hover-fg;
}
#memory.warning,
#cpu.warning,
#battery.warning {
color: @warning;
}
#temperature.critical,
#memory.critical,
#cpu.critical,
#battery.critical {
color: @critical;
}
#battery.charging {
color: @charging;
}

57
.config/waybar/theme.css Normal file
View File

@@ -0,0 +1,57 @@
/* catppuccin-mocha (modified to black-like palette) */
@define-color rosewater #e8d8d4;
@define-color flamingo #d9c4c4;
@define-color pink #e0bed0;
@define-color mauve #b8a0d8;
@define-color red #d07a95;
@define-color maroon #c18c97;
@define-color peach #d9a277;
@define-color yellow #d8c896;
@define-color green #90c18d;
@define-color teal #82c1b7;
@define-color sky #7abac9;
@define-color sapphire #6aa9c4;
@define-color blue #3a3a3a; /* replaced blue with dark grey */
@define-color lavender #5a5a5a; /* darker lavender */
@define-color text #d0d0d0;
@define-color subtext1 #b0b0b0;
@define-color subtext0 #9a9a9a;
@define-color overlay2 #858585;
@define-color overlay1 #707070;
@define-color overlay0 #5c5c5c;
@define-color surface2 #4a4a4a;
@define-color surface1 #3a3a3a;
@define-color surface0 #2a2a2a;
@define-color base #1a1a1a;
@define-color mantle #121212;
@define-color crust #0E0E0E;
/* main colors */
@define-color accent @lavender;
@define-color main-br @subtext0;
@define-color main-bg @crust; /* now #0E0E0E */
@define-color main-fg @text;
@define-color hover-bg @base;
@define-color hover-fg alpha(@main-fg, 0.75);
@define-color outline shade(@main-bg, 0.5);
/* module colors */
@define-color workspaces @mantle;
@define-color temperature @mantle;
@define-color memory @base;
@define-color cpu @surface0;
@define-color time @surface0;
@define-color date @base;
@define-color tray @mantle;
@define-color volume @mantle;
@define-color backlight @base;
@define-color battery @surface0;
/* state colors */
@define-color warning @yellow;
@define-color critical @red;
@define-color charging @green;

View File

@@ -0,0 +1,63 @@
/* catppuccin-frappe */
@define-color rosewater #f2d5cf;
@define-color flamingo #eebebe;
@define-color pink #f4b8e4;
@define-color mauve #ca9ee6;
@define-color red #e78284;
@define-color maroon #ea999c;
@define-color peach #ef9f76;
@define-color yellow #e5c890;
@define-color green #a6d189;
@define-color teal #81c8be;
@define-color sky #99d1db;
@define-color sapphire #85c1dc;
@define-color blue #8caaee;
@define-color lavender #babbf1;
@define-color text #c6d0f5;
@define-color subtext1 #b5bfe2;
@define-color subtext0 #a5adce;
@define-color overlay2 #949cbb;
@define-color overlay1 #838ba7;
@define-color overlay0 #737994;
@define-color surface2 #626880;
@define-color surface1 #51576d;
@define-color surface0 #414559;
@define-color base #303446;
@define-color mantle #292c3c;
@define-color crust #232634;
/*
br - border
bg - background
fg - foreground
*/
/* main colors */
@define-color accent @lavender;
@define-color main-br @subtext0;
@define-color main-bg @crust;
@define-color main-fg @text;
@define-color hover-bg @base;
@define-color hover-fg alpha(@main-fg, 0.75);
@define-color outline shade(@main-bg, 0.5);
/* module colors */
@define-color workspaces @mantle;
@define-color temperature @mantle;
@define-color memory @base;
@define-color cpu @surface0;
@define-color time @surface0;
@define-color date @base;
@define-color tray @mantle;
@define-color volume @mantle;
@define-color backlight @base;
@define-color battery @surface0;
/* state colors */
@define-color warning @yellow;
@define-color critical @red;
@define-color charging @green;

View File

@@ -0,0 +1,63 @@
/* catppuccin-latte */
@define-color rosewater #dc8a78;
@define-color flamingo #dd7878;
@define-color pink #ea76cb;
@define-color mauve #8839ef;
@define-color red #d20f39;
@define-color maroon #e64553;
@define-color peach #fe640b;
@define-color yellow #df8e1d;
@define-color green #40a02b;
@define-color teal #179299;
@define-color sky #04a5e5;
@define-color sapphire #209fb5;
@define-color blue #1e66f5;
@define-color lavender #7287fd;
@define-color text #4c4f69;
@define-color subtext1 #5c5f77;
@define-color subtext0 #6c6f85;
@define-color overlay2 #7c7f93;
@define-color overlay1 #8c8fa1;
@define-color overlay0 #9ca0b0;
@define-color surface2 #acb0be;
@define-color surface1 #bcc0cc;
@define-color surface0 #ccd0da;
@define-color base #eff1f5;
@define-color mantle #e6e9ef;
@define-color crust #dce0e8;
/*
br - border
bg - background
fg - foreground
*/
/* main colors */
@define-color accent @lavender;
@define-color main-br @subtext0;
@define-color main-bg @crust;
@define-color main-fg @text;
@define-color hover-bg @base;
@define-color hover-fg alpha(@main-fg, 0.75);
@define-color outline shade(@main-bg, 0.5);
/* module colors */
@define-color workspaces @mantle;
@define-color temperature @mantle;
@define-color memory @base;
@define-color cpu @surface0;
@define-color time @surface0;
@define-color date @base;
@define-color tray @mantle;
@define-color volume @mantle;
@define-color backlight @base;
@define-color battery @surface0;
/* state colors */
@define-color warning @yellow;
@define-color critical @red;
@define-color charging @green;

View File

@@ -0,0 +1,63 @@
/* catppuccin-macchiato */
@define-color rosewater #f4dbd6;
@define-color flamingo #f0c6c6;
@define-color pink #f5bde6;
@define-color mauve #c6a0f6;
@define-color red #ed8796;
@define-color maroon #ee99a0;
@define-color peach #f5a97f;
@define-color yellow #eed49f;
@define-color green #a6da95;
@define-color teal #8bd5ca;
@define-color sky #91d7e3;
@define-color sapphire #7dc4e4;
@define-color blue #8aadf4;
@define-color lavender #b7bdf8;
@define-color text #cad3f5;
@define-color subtext1 #b8c0e0;
@define-color subtext0 #a5adcb;
@define-color overlay2 #939ab7;
@define-color overlay1 #8087a2;
@define-color overlay0 #6e738d;
@define-color surface2 #5b6078;
@define-color surface1 #494d64;
@define-color surface0 #363a4f;
@define-color base #24273a;
@define-color mantle #1e2030;
@define-color crust #181926;
/*
br - border
bg - background
fg - foreground
*/
/* main colors */
@define-color accent @lavender;
@define-color main-br @subtext0;
@define-color main-bg @crust;
@define-color main-fg @text;
@define-color hover-bg @base;
@define-color hover-fg alpha(@main-fg, 0.75);
@define-color outline shade(@main-bg, 0.5);
/* module colors */
@define-color workspaces @mantle;
@define-color temperature @mantle;
@define-color memory @base;
@define-color cpu @surface0;
@define-color time @surface0;
@define-color date @base;
@define-color tray @mantle;
@define-color volume @mantle;
@define-color backlight @base;
@define-color battery @surface0;
/* state colors */
@define-color warning @yellow;
@define-color critical @red;
@define-color charging @green;

View File

@@ -0,0 +1,63 @@
/* catppuccin-mocha */
@define-color rosewater #f5e0dc;
@define-color flamingo #f2cdcd;
@define-color pink #f5c2e7;
@define-color mauve #cba6f7;
@define-color red #f38ba8;
@define-color maroon #eba0ac;
@define-color peach #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color teal #94e2d5;
@define-color sky #89dceb;
@define-color sapphire #74c7ec;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color text #cdd6f4;
@define-color subtext1 #bac2de;
@define-color subtext0 #a6adc8;
@define-color overlay2 #9399b2;
@define-color overlay1 #7f849c;
@define-color overlay0 #6c7086;
@define-color surface2 #585b70;
@define-color surface1 #45475a;
@define-color surface0 #313244;
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;
/*
br - border
bg - background
fg - foreground
*/
/* main colors */
@define-color accent @lavender;
@define-color main-br @subtext0;
@define-color main-bg @crust;
@define-color main-fg @text;
@define-color hover-bg @base;
@define-color hover-fg alpha(@main-fg, 0.75);
@define-color outline shade(@main-bg, 0.5);
/* module colors */
@define-color workspaces @mantle;
@define-color temperature @mantle;
@define-color memory @base;
@define-color cpu @surface0;
@define-color time @surface0;
@define-color date @base;
@define-color tray @mantle;
@define-color volume @mantle;
@define-color backlight @base;
@define-color battery @surface0;
/* state colors */
@define-color warning @yellow;
@define-color critical @red;
@define-color charging @green;