add waybar config
This commit is contained in:
@@ -5,6 +5,8 @@
|
||||
# 文件对话框
|
||||
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.
|
||||
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