add waybar config
This commit is contained in:
@@ -5,6 +5,8 @@
|
|||||||
# 文件对话框
|
# 文件对话框
|
||||||
windowrule = float, class:^(thunar|google-chrome|chromium)$, title:^(.*文件.*|.*保存.*|.*打开.*)
|
windowrule = float, class:^(thunar|google-chrome|chromium)$, title:^(.*文件.*|.*保存.*|.*打开.*)
|
||||||
|
|
||||||
|
windowrule = float, class:^(Alacritty)$, title:^(alacritty -e \./system-update\.sh.*)
|
||||||
|
|
||||||
# Ignore maximize requests from apps. You'll probably like this.
|
# Ignore maximize requests from apps. You'll probably like this.
|
||||||
windowrule = suppressevent maximize, class:.*
|
windowrule = suppressevent maximize, class:.*
|
||||||
|
|
||||||
|
|||||||
21
waybar/LICENSE
Normal file
21
waybar/LICENSE
Normal 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.
|
||||||
119
waybar/config.jsonc
Normal file
119
waybar/config.jsonc
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
{
|
||||||
|
/*
|
||||||
|
"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/hyprland/workspaces.jsonc",
|
||||||
|
"~/.config/waybar/modules/hyprland/window.jsonc",
|
||||||
|
|
||||||
|
// modules-center
|
||||||
|
"~/.config/waybar/modules/hyprland/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/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",
|
||||||
|
"hyprland/workspaces",
|
||||||
|
"custom/right_div#1",
|
||||||
|
"hyprland/window"
|
||||||
|
],
|
||||||
|
"modules-center": [
|
||||||
|
"hyprland/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",
|
||||||
|
"custom/system_update",
|
||||||
|
"custom/right_div#5"
|
||||||
|
],
|
||||||
|
"modules-right": [
|
||||||
|
"mpris",
|
||||||
|
"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":
|
||||||
|
}
|
||||||
63
waybar/current-theme.css
Normal file
63
waybar/current-theme.css
Normal 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;
|
||||||
53
waybar/install.sh
Executable file
53
waybar/install.sh
Executable file
@@ -0,0 +1,53 @@
|
|||||||
|
#!/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
|
||||||
|
otf-commit-mono-nerd
|
||||||
|
)
|
||||||
|
|
||||||
|
main() {
|
||||||
|
printf '%bInstalling dependencies...%b\n' "$BLU" "$RST"
|
||||||
|
|
||||||
|
local package
|
||||||
|
local error=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"
|
||||||
|
((error++))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
printf '\n%bMaking scripts executable...%b\n' "$BLU" "$RST"
|
||||||
|
chmod +x ~/.config/waybar/scripts/*.sh --verbose
|
||||||
|
|
||||||
|
pkill waybar
|
||||||
|
waybar &> /dev/null &
|
||||||
|
disown
|
||||||
|
|
||||||
|
if ((error > 0)); then
|
||||||
|
printf '\nInstallation completed with %b%d errors%b\n' \
|
||||||
|
"$RED" "$error" "$RST"
|
||||||
|
else
|
||||||
|
printf '\n%bInstallation complete!%b\n' "$GRN" "$RST"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
||||||
32
waybar/modules/backlight.jsonc
Normal file
32
waybar/modules/backlight.jsonc
Normal 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":
|
||||||
|
}
|
||||||
|
}
|
||||||
45
waybar/modules/battery.jsonc
Normal file
45
waybar/modules/battery.jsonc
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
"battery": {
|
||||||
|
// "bat":
|
||||||
|
// "adapter":
|
||||||
|
// "design-capacity":
|
||||||
|
// "full-at":
|
||||||
|
// "interval":
|
||||||
|
"states": {
|
||||||
|
"warning": 20,
|
||||||
|
"critical": 10
|
||||||
|
},
|
||||||
|
"format": "{icon} {capacity}%",
|
||||||
|
"format-time": "{H}h {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": "<b>Discharging</b>: {time}",
|
||||||
|
"tooltip-format-charging": "<b>Charging</b>: {time}",
|
||||||
|
// "weighted-average":
|
||||||
|
// "bat-compatibility":
|
||||||
|
// "menu":
|
||||||
|
// "menu-file":
|
||||||
|
// "menu-actions":
|
||||||
|
// "expand":
|
||||||
|
"events": {
|
||||||
|
"on-discharging-warning": "notify-send 'Battery Low (20%)' -u critical -i 'battery-020' -r 1525",
|
||||||
|
"on-discharging-critical": "notify-send 'Battery Critical (10%)' -u critical -i 'battery-010' -r 1525",
|
||||||
|
"on-charging-100": "notify-send 'Battery Full (100%)' -i 'battery-100-charged'"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
38
waybar/modules/bluetooth.jsonc
Normal file
38
waybar/modules/bluetooth.jsonc
Normal 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":
|
||||||
|
}
|
||||||
|
}
|
||||||
71
waybar/modules/clock.jsonc
Normal file
71
waybar/modules/clock.jsonc
Normal 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": "<b>Standard Time</b>: <span text_transform='lowercase'>{:%I:%M %p}</span>"
|
||||||
|
// "menu":
|
||||||
|
// "menu-file":
|
||||||
|
// "menu-actions":
|
||||||
|
// "expand":
|
||||||
|
},
|
||||||
|
|
||||||
|
/*--------------
|
||||||
|
calendar
|
||||||
|
--------------*/
|
||||||
|
|
||||||
|
"clock#date": {
|
||||||
|
// "interval":
|
||||||
|
"format": " {:%d-%m}",
|
||||||
|
// "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":
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
27
waybar/modules/cpu.jsonc
Normal file
27
waybar/modules/cpu.jsonc
Normal 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":
|
||||||
|
}
|
||||||
|
}
|
||||||
33
waybar/modules/custom/distro.jsonc
Normal file
33
waybar/modules/custom/distro.jsonc
Normal 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":
|
||||||
|
}
|
||||||
|
}
|
||||||
79
waybar/modules/custom/dividers.jsonc
Normal file
79
waybar/modules/custom/dividers.jsonc
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
33
waybar/modules/custom/power_menu.jsonc
Normal file
33
waybar/modules/custom/power_menu.jsonc
Normal 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":
|
||||||
|
}
|
||||||
|
}
|
||||||
33
waybar/modules/custom/system_update.jsonc
Normal file
33
waybar/modules/custom/system_update.jsonc
Normal 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": "alacritty -e ~/.config/waybar/scripts/system-update.sh",
|
||||||
|
// "on-click-middle":
|
||||||
|
"on-click-right": "pkill -RTMIN+1 waybar"
|
||||||
|
// "on-update":
|
||||||
|
// "on-scroll-up":
|
||||||
|
// "on-scroll-down":
|
||||||
|
// "smooth-scrolling-threshold":
|
||||||
|
// "tooltip":
|
||||||
|
// "tooltip-format":
|
||||||
|
// "escape":
|
||||||
|
// "menu":
|
||||||
|
// "menu-file":
|
||||||
|
// "menu-actions":
|
||||||
|
// "expand":
|
||||||
|
}
|
||||||
|
}
|
||||||
83
waybar/modules/custom/user.jsonc
Normal file
83
waybar/modules/custom/user.jsonc
Normal 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":
|
||||||
|
}
|
||||||
|
}
|
||||||
21
waybar/modules/extras/taskbar.jsonc
Normal file
21
waybar/modules/extras/taskbar.jsonc
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
13
waybar/modules/extras/tray.jsonc
Normal file
13
waybar/modules/extras/tray.jsonc
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
82
waybar/modules/extras/wireplumber.jsonc
Normal file
82
waybar/modules/extras/wireplumber.jsonc
Normal 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":
|
||||||
|
}
|
||||||
|
}
|
||||||
19
waybar/modules/hyprland/window.jsonc
Normal file
19
waybar/modules/hyprland/window.jsonc
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"hyprland/window": {
|
||||||
|
"format": "{}",
|
||||||
|
"rewrite": {
|
||||||
|
"": "Desktop",
|
||||||
|
"kitty": "Terminal",
|
||||||
|
"zsh": "Terminal",
|
||||||
|
"~": "Terminal"
|
||||||
|
},
|
||||||
|
// "separate-outputs":
|
||||||
|
// "icon":
|
||||||
|
// "icon-size":
|
||||||
|
// "min-length":
|
||||||
|
// "max-length":
|
||||||
|
// "tooltip":
|
||||||
|
"swap-icon-label": false
|
||||||
|
// "expand":
|
||||||
|
}
|
||||||
|
}
|
||||||
12
waybar/modules/hyprland/windowcount.jsonc
Normal file
12
waybar/modules/hyprland/windowcount.jsonc
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"hyprland/windowcount": {
|
||||||
|
"format": "[{}]",
|
||||||
|
// "format-empty":
|
||||||
|
// "format-windowed":
|
||||||
|
// "format-fullscreen":
|
||||||
|
// "separate-outputs":
|
||||||
|
// "min-length":
|
||||||
|
// "max-length":
|
||||||
|
"swap-icon-label": false
|
||||||
|
}
|
||||||
|
}
|
||||||
38
waybar/modules/hyprland/workspaces.jsonc
Normal file
38
waybar/modules/hyprland/workspaces.jsonc
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"hyprland/workspaces": {
|
||||||
|
// "active-only":
|
||||||
|
// "hide-active":
|
||||||
|
// "all-outputs":
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"active": "",
|
||||||
|
"default": ""
|
||||||
|
},
|
||||||
|
"persistent-workspaces": {
|
||||||
|
"*": 5
|
||||||
|
},
|
||||||
|
// "persistent-only":
|
||||||
|
// "show-special":
|
||||||
|
// "special-visible-only":
|
||||||
|
// "sort-by":
|
||||||
|
// "window-rewrite":
|
||||||
|
// "window-rewrite-default":
|
||||||
|
// "format-window-separator":
|
||||||
|
"workspace-taskbar": {
|
||||||
|
// "enable":
|
||||||
|
// "update-active-window":
|
||||||
|
// "format":
|
||||||
|
// "icon-size":
|
||||||
|
// "icon-theme":
|
||||||
|
// "orientation":
|
||||||
|
// "ignore-list":
|
||||||
|
// "on-click-window":
|
||||||
|
},
|
||||||
|
// "move-to-monitor":
|
||||||
|
// "ignore-workspaces":
|
||||||
|
"on-scroll-up": "hyprctl dispatch workspace +1",
|
||||||
|
"on-scroll-down": "hyprctl dispatch workspace -1",
|
||||||
|
// "expand":
|
||||||
|
"cursor": true
|
||||||
|
}
|
||||||
|
}
|
||||||
30
waybar/modules/idle_inhibitor.jsonc
Normal file
30
waybar/modules/idle_inhibitor.jsonc
Normal 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": "<b>Idle Inhibitor</b>: Activated",
|
||||||
|
"tooltip-format-deactivated": "<b>Idle Inhibitor</b>: Deactivated",
|
||||||
|
"start-activated": false
|
||||||
|
// "timeout":
|
||||||
|
// "menu":
|
||||||
|
// "menu-file":
|
||||||
|
// "menu-actions":
|
||||||
|
// "expand":
|
||||||
|
}
|
||||||
|
}
|
||||||
31
waybar/modules/memory.jsonc
Normal file
31
waybar/modules/memory.jsonc
Normal 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.0f}/{total:0.0f} GB"
|
||||||
|
// "menu":
|
||||||
|
// "menu-file":
|
||||||
|
// "menu-actions":
|
||||||
|
// "expand":
|
||||||
|
}
|
||||||
|
}
|
||||||
36
waybar/modules/mpris.jsonc
Normal file
36
waybar/modules/mpris.jsonc
Normal 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":
|
||||||
|
}
|
||||||
|
}
|
||||||
40
waybar/modules/network.jsonc
Normal file
40
waybar/modules/network.jsonc
Normal 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": "<b>Gateway</b>: {gwaddr}",
|
||||||
|
"tooltip-format-ethernet": "<b>Interface</b>: {ifname}",
|
||||||
|
"tooltip-format-wifi": "<b>Network</b>: {essid}\n<b>IP Addr</b>: {ipaddr}/{cidr}\n<b>Strength</b>: {signalStrength}%\n<b>Frequency</b>: {frequency} GHz",
|
||||||
|
"tooltip-format-disconnected": "Wi-Fi Disconnected",
|
||||||
|
"tooltip-format-disabled": "Wi-Fi Disabled"
|
||||||
|
// "menu":
|
||||||
|
// "menu-file":
|
||||||
|
// "menu-actions":
|
||||||
|
// "expand":
|
||||||
|
}
|
||||||
|
}
|
||||||
96
waybar/modules/pulseaudio.jsonc
Normal file
96
waybar/modules/pulseaudio.jsonc
Normal 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": "<b>Output Device</b>: {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": "<b>Input Device</b>: {desc}"
|
||||||
|
// "max-volume":
|
||||||
|
// "ignored-sinks":
|
||||||
|
// "reverse-scrolling":
|
||||||
|
// "reverse-mouse-scrolling":
|
||||||
|
// "menu":
|
||||||
|
// "menu-file":
|
||||||
|
// "menu-actions":
|
||||||
|
// "expand":
|
||||||
|
}
|
||||||
|
}
|
||||||
35
waybar/modules/temperature.jsonc
Normal file
35
waybar/modules/temperature.jsonc
Normal 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": "Fahrenheit: {temperatureF}°F"
|
||||||
|
// "menu":
|
||||||
|
// "menu-file":
|
||||||
|
// "menu-actions":
|
||||||
|
// "expand":
|
||||||
|
}
|
||||||
|
}
|
||||||
27
waybar/scripts/_fzf_colorizer.sh
Executable file
27
waybar/scripts/_fzf_colorizer.sh
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# A helper script that syncs fzf colors with the current Waybar theme
|
||||||
|
#
|
||||||
|
|
||||||
|
main() {
|
||||||
|
local wcss="$HOME/.config/waybar/current-theme.css"
|
||||||
|
|
||||||
|
local wtheme fcolors
|
||||||
|
wtheme=$(sed 1q "$wcss" | awk '{print $2}')
|
||||||
|
fcolors="$HOME/.config/waybar/themes/fzf/$wtheme.txt"
|
||||||
|
|
||||||
|
# Extract theme colors starting from line 3 up to (but not including) the
|
||||||
|
# first blank line
|
||||||
|
local wcolors
|
||||||
|
wcolors=$(sed -n '3,${/^ *$/Q;p}' "$wcss")
|
||||||
|
|
||||||
|
local element color hex
|
||||||
|
fcconf=()
|
||||||
|
while read -r element color; do
|
||||||
|
read -r _ _ hex < <(grep " $color " <<< "$wcolors")
|
||||||
|
hex=${hex%;}
|
||||||
|
fcconf+=("--color=$element:$hex")
|
||||||
|
done < "$fcolors"
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
||||||
64
waybar/scripts/backlight.sh
Executable file
64
waybar/scripts/backlight.sh
Executable file
@@ -0,0 +1,64 @@
|
|||||||
|
#!/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 "$@"
|
||||||
141
waybar/scripts/bluetooth.sh
Executable file
141
waybar/scripts/bluetooth.sh
Executable file
@@ -0,0 +1,141 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
fcconf=()
|
||||||
|
# Get fzf color config
|
||||||
|
# shellcheck disable=SC1090,SC2154
|
||||||
|
. ~/.config/waybar/scripts/_fzf_colorizer.sh 2> /dev/null || true
|
||||||
|
# If the file is missing, fzf will fall back to its default colors
|
||||||
|
|
||||||
|
RED='\033[1;31m'
|
||||||
|
RST='\033[0m'
|
||||||
|
|
||||||
|
TIMEOUT=10
|
||||||
|
|
||||||
|
ensure-on() {
|
||||||
|
local status
|
||||||
|
status=$(bluetoothctl show | awk '/PowerState/ {print $2}')
|
||||||
|
|
||||||
|
case $status in
|
||||||
|
'off') bluetoothctl power on > /dev/null ;;
|
||||||
|
'off-blocked')
|
||||||
|
rfkill unblock bluetooth
|
||||||
|
|
||||||
|
local i new_status
|
||||||
|
for ((i = 1; i <= TIMEOUT; i++)); do
|
||||||
|
printf '\rUnblocking Bluetooth... (%d/%d)' $i $TIMEOUT
|
||||||
|
|
||||||
|
new_status=$(bluetoothctl show | awk '/PowerState/ {print $2}')
|
||||||
|
if [[ $new_status == 'on' ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
# Bluetooth could be hard blocked
|
||||||
|
if [[ $new_status != 'on' ]]; then
|
||||||
|
notify-send 'Bluetooth' 'Failed to unblock' -i 'package-purge'
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*) return 0 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
notify-send 'Bluetooth On' -i 'network-bluetooth-activated' -r 1925
|
||||||
|
}
|
||||||
|
|
||||||
|
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'
|
||||||
|
|
||||||
|
read -rs -n 1 -t 1
|
||||||
|
if [[ $REPLY == [Qq] ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
printf '\n%bScanning stopped.%b\n\n' "$RED" "$RST"
|
||||||
|
|
||||||
|
list=$(bluetoothctl devices | sed 's/^Device //')
|
||||||
|
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')
|
||||||
|
local opts=(
|
||||||
|
'--border=sharp'
|
||||||
|
'--border-label= Bluetooth Devices '
|
||||||
|
'--ghost=Search'
|
||||||
|
"--header=$header"
|
||||||
|
'--height=~100%'
|
||||||
|
'--highlight-line'
|
||||||
|
'--info=inline-right'
|
||||||
|
'--pointer='
|
||||||
|
'--reverse'
|
||||||
|
"${fcconf[@]}"
|
||||||
|
)
|
||||||
|
|
||||||
|
address=$(fzf "${opts[@]}" <<< "$list" | awk '{print $1}')
|
||||||
|
if [[ -z $address ]]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local connected
|
||||||
|
connected=$(bluetoothctl info "$address" | awk '/Connected/ {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" | awk '/Paired/ {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' 'Failed to connect' -i 'package-purge'
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
notify-send 'Bluetooth' 'Successfully connected' -i 'package-install'
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
tput civis
|
||||||
|
ensure-on || exit 1
|
||||||
|
get-device-list || exit 1
|
||||||
|
tput cnorm
|
||||||
|
select-device || exit 1
|
||||||
|
pair-and-connect || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
||||||
114
waybar/scripts/network.sh
Executable file
114
waybar/scripts/network.sh
Executable file
@@ -0,0 +1,114 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
fcconf=()
|
||||||
|
# Get fzf color config
|
||||||
|
# shellcheck disable=SC1090,SC2154
|
||||||
|
. ~/.config/waybar/scripts/_fzf_colorizer.sh 2> /dev/null || true
|
||||||
|
# If the file is missing, fzf will fall back to its default colors
|
||||||
|
|
||||||
|
RED='\033[1;31m'
|
||||||
|
RST='\033[0m'
|
||||||
|
|
||||||
|
TIMEOUT=5
|
||||||
|
|
||||||
|
ensure-enabled() {
|
||||||
|
local radio
|
||||||
|
radio=$(nmcli radio wifi)
|
||||||
|
if [[ $radio == 'enabled' ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
nmcli radio wifi on
|
||||||
|
|
||||||
|
local i state
|
||||||
|
for ((i = 1; i <= TIMEOUT; i++)); do
|
||||||
|
printf '\rEnabling Wi-Fi... (%d/%d)' $i $TIMEOUT
|
||||||
|
|
||||||
|
state=$(nmcli -t -f STATE general)
|
||||||
|
# If STATE returns anything other than this, we assume that Wi-Fi is
|
||||||
|
# fully enabled
|
||||||
|
if [[ $state != 'connected (local only)' ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
notify-send 'Wi-Fi Enabled' -i 'network-wireless-on' -r 1125
|
||||||
|
}
|
||||||
|
|
||||||
|
get-network-list() {
|
||||||
|
nmcli device wifi rescan
|
||||||
|
|
||||||
|
local i
|
||||||
|
for ((i = 1; i <= TIMEOUT; i++)); do
|
||||||
|
printf '\rScanning for networks... (%d/%d)' $i $TIMEOUT
|
||||||
|
|
||||||
|
list=$(timeout 1 nmcli device wifi list)
|
||||||
|
networks=$(tail -n +2 <<< "$list" | awk '$2 != "--"')
|
||||||
|
if [[ -n $networks ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
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")
|
||||||
|
local opts=(
|
||||||
|
'--border=sharp'
|
||||||
|
'--border-label= Wi-Fi Networks '
|
||||||
|
'--ghost=Search'
|
||||||
|
"--header=$header"
|
||||||
|
'--height=~100%'
|
||||||
|
'--highlight-line'
|
||||||
|
'--info=inline-right'
|
||||||
|
'--pointer='
|
||||||
|
'--reverse'
|
||||||
|
"${fcconf[@]}"
|
||||||
|
)
|
||||||
|
|
||||||
|
bssid=$(fzf "${opts[@]}" <<< "$networks" | awk '{print $1}')
|
||||||
|
if [[ -z $bssid ]]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if [[ $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' 'Failed to connect' -i 'package-purge'
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
notify-send 'Wi-Fi' 'Successfully connected' -i 'package-install'
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
tput civis
|
||||||
|
ensure-enabled || exit 1
|
||||||
|
get-network-list || exit 1
|
||||||
|
tput cnorm
|
||||||
|
select-network || exit 1
|
||||||
|
connect-to-network || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
||||||
51
waybar/scripts/power-menu.sh
Executable file
51
waybar/scripts/power-menu.sh
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Launch a power menu
|
||||||
|
#
|
||||||
|
# Requirements:
|
||||||
|
# - fzf
|
||||||
|
#
|
||||||
|
# Author: Jesse Mirabel <sejjymvm@gmail.com>
|
||||||
|
# Created: August 19, 2025
|
||||||
|
# License: MIT
|
||||||
|
|
||||||
|
fcconf=()
|
||||||
|
# Get fzf color config
|
||||||
|
# shellcheck disable=SC1090,SC2154
|
||||||
|
. ~/.config/waybar/scripts/_fzf_colorizer.sh 2> /dev/null || true
|
||||||
|
# If the file is missing, fzf will fall back to its default colors
|
||||||
|
|
||||||
|
main() {
|
||||||
|
local list=(
|
||||||
|
'Lock'
|
||||||
|
'Shutdown'
|
||||||
|
'Reboot'
|
||||||
|
'Logout'
|
||||||
|
'Hibernate'
|
||||||
|
'Suspend'
|
||||||
|
)
|
||||||
|
local opts=(
|
||||||
|
'--border=sharp'
|
||||||
|
'--border-label= Power Menu '
|
||||||
|
'--height=~100%'
|
||||||
|
'--highlight-line'
|
||||||
|
'--no-input'
|
||||||
|
'--pointer='
|
||||||
|
'--reverse'
|
||||||
|
"${fcconf[@]}"
|
||||||
|
)
|
||||||
|
|
||||||
|
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 ;;
|
||||||
|
*) exit 1 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
||||||
115
waybar/scripts/system-update.sh
Executable file
115
waybar/scripts/system-update.sh
Executable file
@@ -0,0 +1,115 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Check for official and AUR package updates and upgrade them. When run with the
|
||||||
|
# 'module' argument, output the status icon and update counts in JSON format for
|
||||||
|
# Waybar
|
||||||
|
#
|
||||||
|
# Requirements:
|
||||||
|
# - checkupdates (pacman-contrib)
|
||||||
|
# - notify-send (libnotify)
|
||||||
|
# - optional: an AUR helper
|
||||||
|
#
|
||||||
|
# Author: Jesse Mirabel <sejjymvm@gmail.com>
|
||||||
|
# Created: August 16, 2025
|
||||||
|
# License: MIT
|
||||||
|
|
||||||
|
GRN='\033[1;32m'
|
||||||
|
BLU='\033[1;34m'
|
||||||
|
RST='\033[0m'
|
||||||
|
|
||||||
|
TIMEOUT=10
|
||||||
|
HELPERS=('aura' 'paru' 'pikaur' 'trizen' 'yay')
|
||||||
|
|
||||||
|
detect-helper() {
|
||||||
|
local h
|
||||||
|
for h in "${HELPERS[@]}"; do
|
||||||
|
if command -v "$h" > /dev/null; then
|
||||||
|
helper=$h
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
check-updates() {
|
||||||
|
is_online=true
|
||||||
|
repo=0
|
||||||
|
aur=0
|
||||||
|
|
||||||
|
local rout rstat
|
||||||
|
rout=$(timeout $TIMEOUT checkupdates)
|
||||||
|
rstat=$?
|
||||||
|
# 2 means no updates are available
|
||||||
|
if ((rstat != 0 && rstat != 2)); then
|
||||||
|
is_online=false
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
repo=$(grep -cve '^\s*$' <<< "$rout")
|
||||||
|
|
||||||
|
if [[ -z $helper ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
local aout astat
|
||||||
|
aout=$(timeout $TIMEOUT "$helper" -Quaq)
|
||||||
|
astat=$?
|
||||||
|
# Return only if the exit status is non-zero and there is an error
|
||||||
|
# message
|
||||||
|
if ((${#aout} > 0 && astat != 0)); then
|
||||||
|
is_online=false
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
aur=$(grep -cve '^\s*$' <<< "$aout")
|
||||||
|
}
|
||||||
|
|
||||||
|
update-packages() {
|
||||||
|
printf '\n%bUpdating pacman packages...%b\n' "$BLU" "$RST"
|
||||||
|
sudo pacman -Syu
|
||||||
|
|
||||||
|
if [[ -n $helper ]]; then
|
||||||
|
printf '\n%bUpdating AUR packages...%b\n' "$BLU" "$RST"
|
||||||
|
"$helper" -Syu
|
||||||
|
fi
|
||||||
|
|
||||||
|
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() {
|
||||||
|
if [[ $is_online == false ]]; then
|
||||||
|
echo "{ \"text\": \"\", \"tooltip\": \"Cannot fetch updates. Right-click to retry.\" }"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
local tooltip="<b>Official</b>: $repo"
|
||||||
|
if [[ -n $helper ]]; then
|
||||||
|
tooltip+="\n<b>AUR($helper)</b>: $aur"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local total=$((repo + aur))
|
||||||
|
if ((total == 0)); then
|
||||||
|
echo "{ \"text\": \"\", \"tooltip\": \"No updates available\" }"
|
||||||
|
else
|
||||||
|
echo "{ \"text\": \"\", \"tooltip\": \"$tooltip\" }"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
detect-helper
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
'module')
|
||||||
|
check-updates
|
||||||
|
display-module
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
printf '%bChecking for updates...%b' "$BLU" "$RST"
|
||||||
|
check-updates
|
||||||
|
update-packages
|
||||||
|
# use signal to update the module
|
||||||
|
pkill -RTMIN+1 waybar
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
143
waybar/scripts/volume.sh
Executable file
143
waybar/scripts/volume.sh
Executable file
@@ -0,0 +1,143 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
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() {
|
||||||
|
pactl "get-$dev_vol" "$dev" | awk '{print $5}' | tr -d '%'
|
||||||
|
}
|
||||||
|
|
||||||
|
get-icon() {
|
||||||
|
local icon
|
||||||
|
local new_vol=${1:-$(get-volume)}
|
||||||
|
|
||||||
|
if [[ $(check-muted) == '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
|
||||||
|
notify-send "$title: $(check-muted)" -i "$(get-icon)" -r 2425
|
||||||
|
}
|
||||||
|
|
||||||
|
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 2425
|
||||||
|
}
|
||||||
|
|
||||||
|
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
waybar/style.css
Normal file
12
waybar/style.css
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/* ignore GTK theme */
|
||||||
|
* {
|
||||||
|
all: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
@import "current-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";
|
||||||
29
waybar/styles/fonts.css
Normal file
29
waybar/styles/fonts.css
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
* {
|
||||||
|
font-family: "Commit Mono Nerd Font";
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-user,
|
||||||
|
#window label,
|
||||||
|
#mpris,
|
||||||
|
tooltip label {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active label,
|
||||||
|
#workspaces button.focused label,
|
||||||
|
#custom-distro {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-power_menu {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-left_div,
|
||||||
|
#custom-left_inv,
|
||||||
|
#custom-right_div,
|
||||||
|
#custom-right_inv {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
34
waybar/styles/global.css
Normal file
34
waybar/styles/global.css
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
* {
|
||||||
|
color: @main-fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.module {
|
||||||
|
margin-bottom: -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#waybar {
|
||||||
|
background-color: @outline;
|
||||||
|
}
|
||||||
|
#waybar > box {
|
||||||
|
margin: 4px;
|
||||||
|
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;
|
||||||
|
}
|
||||||
119
waybar/styles/modules-center.css
Normal file
119
waybar/styles/modules-center.css
Normal 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;
|
||||||
|
}
|
||||||
32
waybar/styles/modules-left.css
Normal file
32
waybar/styles/modules-left.css
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
/*--------------
|
||||||
|
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.active label,
|
||||||
|
#workspaces button.focused label {
|
||||||
|
color: @accent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------
|
||||||
|
window title
|
||||||
|
------------------*/
|
||||||
|
|
||||||
|
#window {
|
||||||
|
margin-left: 12px;
|
||||||
|
}
|
||||||
59
waybar/styles/modules-right.css
Normal file
59
waybar/styles/modules-right.css
Normal 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;
|
||||||
|
}
|
||||||
37
waybar/styles/states.css
Normal file
37
waybar/styles/states.css
Normal 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;
|
||||||
|
}
|
||||||
63
waybar/themes/catppuccin-frappe.css
Normal file
63
waybar/themes/catppuccin-frappe.css
Normal 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;
|
||||||
63
waybar/themes/catppuccin-latte.css
Normal file
63
waybar/themes/catppuccin-latte.css
Normal 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;
|
||||||
63
waybar/themes/catppuccin-macchiato.css
Normal file
63
waybar/themes/catppuccin-macchiato.css
Normal 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;
|
||||||
63
waybar/themes/catppuccin-mocha.css
Normal file
63
waybar/themes/catppuccin-mocha.css
Normal 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;
|
||||||
15
waybar/themes/fzf/catppuccin.txt
Normal file
15
waybar/themes/fzf/catppuccin.txt
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
current-bg surface0
|
||||||
|
bg base
|
||||||
|
spinner rosewater
|
||||||
|
hl red
|
||||||
|
fg text
|
||||||
|
header red
|
||||||
|
info mauve
|
||||||
|
pointer rosewater
|
||||||
|
marker lavender
|
||||||
|
current-fg text
|
||||||
|
prompt mauve
|
||||||
|
current-hl red
|
||||||
|
selected-bg surface1
|
||||||
|
border overlay0
|
||||||
|
label text
|
||||||
Reference in New Issue
Block a user