rearrange hyprland config; change back to old waybar: adjust waybar colors; add btop

This commit is contained in:
2025-11-28 13:20:58 -08:00
parent e1f34cb767
commit 0042568e34
103 changed files with 8055 additions and 2825 deletions

8
.gitignore vendored
View File

@@ -2,15 +2,23 @@
* *
# Then selectively include the directories you want to keep # Then selectively include the directories you want to keep
!btop/
!hypr/ !hypr/
!ghostty/
!kitty/ !kitty/
!nvim/ !nvim/
!swaync/
!waybar/ !waybar/
!rofi/
!wofi/ !wofi/
!btop/**
!hypr/** !hypr/**
!ghostty/**
!kitty/** !kitty/**
!nvim/** !nvim/**
!swaync/**
!waybar/** !waybar/**
!rofi/**
!wofi/** !wofi/**

257
btop/btop.conf Normal file
View File

@@ -0,0 +1,257 @@
#? Config file for btop v. 1.4.5
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "mytheme"
#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = True
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = True
#* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = False
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
#* Use whitespace " " as separator between different presets.
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = False
#* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = True
#* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts.
#* "block" has half the resolution of braille but uses more common characters.
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
graph_symbol = "braille"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_cpu = "default"
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
graph_symbol_gpu = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_mem = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_net = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_proc = "default"
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
shown_boxes = "cpu mem net proc"
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 2000
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "cpu lazy"
#* Reverse sorting order, True or False.
proc_reversed = False
#* Show processes as a tree.
proc_tree = False
#* Use the cpu graph colors in the process list.
proc_colors = True
#* Use a darkening gradient in the process list.
proc_gradient = True
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = False
#* Show process memory as bytes instead of percent.
proc_mem_bytes = True
#* Show cpu graph for each process.
proc_cpu_graphs = True
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = False
#* Show proc box on left side of screen instead of right.
proc_left = False
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = False
#* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = False
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_upper = "Auto"
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_lower = "Auto"
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
show_gpu_info = "Auto"
#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True
#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False
#* Show cpu box at bottom of screen instead of top.
cpu_bottom = False
#* Shows the system uptime in the CPU box.
show_uptime = True
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
show_cpu_watts = True
#* Show cpu temperature.
check_temp = True
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = True
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
#* Example: "4:0 5:1 6:3"
cpu_core_map = ""
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = False
#* Show CPU frequency.
show_cpu_freq = True
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X"
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = True
#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
disks_filter = ""
#* Show graphs instead of meters for memory values.
mem_graphs = True
#* Show mem box below net box instead of above.
mem_below_net = False
#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = True
#* If swap memory should be shown in memory box.
show_swap = True
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = True
#* If mem box should be split to also show disks info.
show_disks = True
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = True
#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = True
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = False
#* Set to true to show available disk space for privileged users.
disk_free_priv = False
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = True
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = False
#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = False
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1".
io_graph_speeds = ""
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
net_download = 100
net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = True
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = True
#* Starts with the Network Interface specified here.
net_iface = ""
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
base_10_bitrate = "Auto"
#* Show battery stats in top right if battery is present.
show_battery = True
#* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto"
#* Show power stats of battery next to charge indicator.
show_battery_watts = True
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING"
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
nvml_measure_pcie_speeds = True
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
rsmi_measure_pcie_speeds = True
#* Horizontally mirror the GPU graph.
gpu_mirror_graph = True
#* Custom gpu0 model name, empty string to disable.
custom_gpu_name0 = ""
#* Custom gpu1 model name, empty string to disable.
custom_gpu_name1 = ""
#* Custom gpu2 model name, empty string to disable.
custom_gpu_name2 = ""
#* Custom gpu3 model name, empty string to disable.
custom_gpu_name3 = ""
#* Custom gpu4 model name, empty string to disable.
custom_gpu_name4 = ""
#* Custom gpu5 model name, empty string to disable.
custom_gpu_name5 = ""

83
btop/themes/mytheme.theme Normal file
View File

@@ -0,0 +1,83 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="##1c1c1f"
# Main text color
theme[main_fg]="#9d8462"
# Title color for boxes
theme[title]="#ff9100"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#ff9100"
# Background color of selected item in processes box
theme[selected_bg]="#ff9100"
# Foreground color of selected item in processes box
theme[selected_fg]="#000000"
# Color of inactive/disabled text
theme[inactive_fg]="#9d8462"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="#ff9100"
# Background color of the percentage meters
theme[meter_bg]="#303340"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#9d8462"
# CPU, Memory, Network, Proc box outline colors
theme[cpu_box]="#9d8462"
theme[mem_box]="#9d8462"
theme[net_box]="#9d8462"
theme[proc_box]="#9d8462"
# Box divider line and small boxes line color
theme[div_line]="#9d8462"
# Temperature graph color (Green -> Yellow -> Red)
theme[temp_start]="#9d8462"
theme[temp_mid]="#ff9100"
theme[temp_end]="#ff0000"
# CPU graph colors (Teal -> Lavender)
theme[cpu_start]="#9d8462"
theme[cpu_mid]="#ff9100"
theme[cpu_end]="#ff0000"
# Mem/Disk free meter (Mauve -> Lavender -> Blue)
theme[free_start]="#9d8462"
theme[free_mid]="#ff9100"
theme[free_end]="#ff0000"
# Mem/Disk cached meter (Sapphire -> Lavender)
theme[cached_start]="#9d8462"
theme[cached_mid]="#ff9100"
theme[cached_end]="#ff0000"
# Mem/Disk available meter ( -> )
theme[available_start]="#9d8462"
theme[available_mid]="#ff9100"
theme[available_end]="#ff0000"
# Mem/Disk used meter (-> )
theme[used_start]="#9d8462"
theme[used_mid]="#ff9100"
theme[used_end]="#ff0000"
# Download graph colors (Peach -> Red)
theme[download_start]="#9d8462"
theme[download_mid]="#ff9100"
theme[download_end]="#ff0000"
# Upload graph colors (Green -> Sky)
theme[upload_start]="#9d8462"
theme[upload_mid]="#ff9100"
theme[upload_end]="#ff0000"
# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve)
theme[process_start]="#9d8462"
theme[process_mid]="#ff9100"
theme[process_end]="#ff0000"

165
btop/themes/orange.theme Normal file
View File

@@ -0,0 +1,165 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="##1c1c1f"
# Main text color
theme[main_fg]="#a1a1a1"
# Title color for boxes
theme[title]="#ff9100"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#ff9100"
# Background color of selected item in processes box
theme[selected_bg]="#ff9100"
# Foreground color of selected item in processes box
theme[selected_fg]="#000000"
# Color of inactive/disabled text
theme[inactive_fg]="#51576d"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="#ff9100"
# Background color of the percentage meters
theme[meter_bg]="#51576d"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#51576d"
# CPU, Memory, Network, Proc box outline colors
theme[cpu_box]="#51576d"
theme[mem_box]="#51576d"
theme[net_box]="#51576d"
theme[proc_box]="#51576d"
# Box divider line and small boxes line color
theme[div_line]="#51576d"
# Temperature graph color (Green -> Yellow -> Red)
theme[temp_start]="#51576d"
theme[temp_mid]="#ff9100"
theme[temp_end]="#ff0000"
# CPU graph colors (Teal -> Lavender)
theme[cpu_start]="#51576d"
theme[cpu_mid]="#ff9100"
theme[cpu_end]="#ff0000"
# Mem/Disk free meter (Mauve -> Lavender -> Blue)
theme[free_start]="#51576d"
theme[free_mid]="#ff9100"
theme[free_end]="#ff0000"
# Mem/Disk cached meter (Sapphire -> Lavender)
theme[cached_start]="#51576d"
theme[cached_mid]="#ff9100"
theme[cached_end]="#ff0000"
# Mem/Disk available meter ( -> )
theme[available_start]="#51576d"
theme[available_mid]="#ff9100"
theme[available_end]="#ff0000"
# Mem/Disk used meter (-> )
theme[used_start]="#51576d"
theme[used_mid]="#ff9100"
theme[used_end]="#ff0000"
# Download graph colors (Peach -> Red)
theme[download_start]="#51576d"
theme[download_mid]="#ff9100"
theme[download_end]="#ff0000"
# Upload graph colors (Green -> Sky)
theme[upload_start]="#51576d"
theme[upload_mid]="#ff9100"
theme[upload_end]="#ff0000"
# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve)
theme[process_start]="#51576d"
theme[process_mid]="#ff9100"
theme[process_end]="#ff0000"# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="##1c1c1f"
# Main text color
theme[main_fg]="#51576d"
# Title color for boxes
theme[title]="#ff9100"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#ff9100"
# Background color of selected item in processes box
theme[selected_bg]="#ff9100"
# Foreground color of selected item in processes box
theme[selected_fg]="#000000"
# Color of inactive/disabled text
theme[inactive_fg]="#51576d"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="#ff9100"
# Background color of the percentage meters
theme[meter_bg]="#51576d"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#51576d"
# CPU, Memory, Network, Proc box outline colors
theme[cpu_box]="#51576d"
theme[mem_box]="#51576d"
theme[net_box]="#51576d"
theme[proc_box]="#51576d"
# Box divider line and small boxes line color
theme[div_line]="#51576d"
# Temperature graph color (Green -> Yellow -> Red)
theme[temp_start]="#51576d"
theme[temp_mid]="#ff9100"
theme[temp_end]="#ff0000"
# CPU graph colors (Teal -> Lavender)
theme[cpu_start]="#51576d"
theme[cpu_mid]="#ff9100"
theme[cpu_end]="#ff0000"
# Mem/Disk free meter (Mauve -> Lavender -> Blue)
theme[free_start]="#51576d"
theme[free_mid]="#ff9100"
theme[free_end]="#ff0000"
# Mem/Disk cached meter (Sapphire -> Lavender)
theme[cached_start]="#51576d"
theme[cached_mid]="#ff9100"
theme[cached_end]="#ff0000"
# Mem/Disk available meter ( -> )
theme[available_start]="#51576d"
theme[available_mid]="#ff9100"
theme[available_end]="#ff0000"
# Mem/Disk used meter (-> )
theme[used_start]="#51576d"
theme[used_mid]="#ff9100"
theme[used_end]="#ff0000"
# Download graph colors (Peach -> Red)
theme[download_start]="#51576d"
theme[download_mid]="#ff9100"
theme[download_end]="#ff0000"
# Upload graph colors (Green -> Sky)
theme[upload_start]="#51576d"
theme[upload_mid]="#ff9100"
theme[upload_end]="#ff0000"
# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve)
theme[process_start]="#51576d"
theme[process_mid]="#ff9100"
theme[process_end]="#ff0000"

57
ghostty/config Normal file
View File

@@ -0,0 +1,57 @@
# This is the configuration file for Ghostty.
#
# This template file has been automatically created at the following
# path since Ghostty couldn't find any existing config files on your system:
#
# /home/saeijou/.config/ghostty/config
#
# The template does not set any default options, since Ghostty ships
# with sensible defaults for all options. Users should only need to set
# options that they want to change from the default.
#
# Run `ghostty +show-config --default --docs` to view a list of
# all available config options and their default values.
#
# Additionally, each config option is also explained in detail
# on Ghostty's website, at https://ghostty.org/docs/config.
#
# Ghostty can reload the configuration while running by using the menu
# options or the bound key (default: Command + Shift + comma on macOS and
# Control + Shift + comma on other platforms). Not all config options can be
# reloaded while running; some only apply to new windows and others may require
# a full restart to take effect.
# Config syntax crash course
# ==========================
# # The config file consists of simple key-value pairs,
# # separated by equals signs.
# font-family = Iosevka
# window-padding-x = 2
#
# # Spacing around the equals sign does not matter.
# # All of these are identical:
# key=value
# key= value
# key =value
# key = value
#
# # Any line beginning with a # is a comment. It's not possible to put
# # a comment after a config option, since it would be interpreted as a
# # part of the value. For example, this will have a value of "#123abc":
# background = #123abc
#
# # Empty values are used to reset config keys to default.
# key =
#
# # Some config options have unique syntaxes for their value,
# # which is explained in the docs for that config option.
# # Just for example:
# resize-overlay-duration = 4s 200ms
#
# Font
font-family = "JetBrainsMono Nerd Font"
font-style = Regular
font-size = 12
#Theme
config-file=themes/theme

View File

@@ -0,0 +1,49 @@
# gruvbox dark by morhetz, https://github.com/morhetz/gruvbox
# This work is licensed under the terms of the MIT license.
# For a copy, see https://opensource.org/licenses/MIT.
background #282828
foreground #ebdbb2
cursor #928374
selection_foreground #928374
selection_background #3c3836
color0 #282828
color8 #928374
# red
color1 #cc241d
# light red
color9 #fb4934
# green
color2 #98971a
# light green
color10 #b8bb26
# yellow
color3 #d79921
# light yellow
color11 #fabd2d
# blue
color4 #458588
# light blue
color12 #83a598
# magenta
color5 #b16286
# light magenta
color13 #d3869b
# cyan
color6 #689d6a
# lighy cyan
color14 #8ec07c
# light gray
color7 #a89984
# dark gray
color15 #928374

11
ghostty/themes/theme Normal file
View File

@@ -0,0 +1,11 @@
# Background and Foreground
background = 1c1c1f
foreground = 9d8462
# Cursor
cursor-color = ff9100
cursor-text = 000000
# Selection
selection-background = ff9100
selection-foreground = 000000

View File

@@ -1,317 +1,25 @@
#██ ██ ██ ██ █████▄ █████▄ ██ ▄████▄ ███ ██ ████▄
# ####################################################################################### #██████ ▀██▀ ██▄▄█▀ ██▄▄██▄ ██ ██▄▄██ ██ ▀▄██ ██ ██
# AUTOGENERATED HYPRLAND CONFIG. #██ ██ ██ ██ ██ ██ ██████ ██ ██ ██ ██ ████▀
# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hyprland.conf AND EDIT IT,
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
# #######################################################################################
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hyprland.org/Configuring/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
################
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
#monitor = , preferred, auto, 1
################### ###################
### MY PROGRAMS ### ### MY PROGRAMS ###
################### ###################
# See https://wiki.hyprland.org/Configuring/Keywords/
# Set programs that you use
$terminal = ghostty $terminal = ghostty
$fileManager = thunar $fileManager = thunar
$menu = wofi --show drun $menu = rofi -show drun
$browser = librewolf
$browser2 = google-chrome-stable
# Configurations
################# source = ~/.config/hypr/hyprland/animations.conf
### AUTOSTART ### source = ~/.config/hypr/hyprland/autostart.conf
################# source = ~/.config/hypr/hyprland/bindings.conf
source = ~/.config/hypr/hyprland/env.conf
source = ~/.config/hypr/hyprland/input.conf
source = ~/.config/hypr/hyprland/looknfeel.conf
source = ~/.config/hypr/hyprland/monitors.conf
source = ~/.config/hypr/hyprland/windowrules.conf
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
# exec-once = $terminal
# exec-once = nm-applet &
exec-once = wl-paste --type text --watch cliphist store
exec-once = wl-paste --type image --watch cliphist store
exec-once = waybar & disown
exec-once = librewolf & disown
exec-once = swaync & disown
exec-once = hypridle & disown
exec-once = seventeenlands & disown
#exec-once = ~/.config/hypr/scripts/monitor_setup.sh
exec-once = hyprctl dispatch exec [workspace 3 silent] signal-desktop
exec-once = hyprctl dispatch exec [workspace 3 silent] discord
exec-once = hyprctl dispatch exec [workspace 3 silent] thunderbird
#exec-once = hyprctl dispatch exec "[workspace 5 silent] steam"
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
env = XCURSOR_SIZE,20
env = HYPRCURSOR_SIZE,20
env = LANG,en_US.UTF-8
env = LC_ALL,en_US.UTF-8
env = LANGUAGE,en_US.UTF-8
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 0
gaps_out = 0
border_size = 1
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 10
rounding_power = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 0.9
shadow {
enabled = false
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 1
vibrancy = 0.1696
}
}
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = no
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
}
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
# windowrule = rounding 0, floating:0, onworkspace:f[1]
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
}
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
#gestures {
# workspace_swipe = false
#}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, return, exec, $terminal
bind = $mainMod, C, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, F, togglefloating,
bind = $mainMod, space, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod, B, exec, killall waybar && waybar &
bind = $mainMod SHIFT, S, exec, hyprshot -m region --clipboard-only,
bind = $mainMod, L, exec, hyprlock
bind = $mainMod, backslash, exec, ~/.config/hypr/scripts/monitor_setup.sh
bind = SUPER, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1
bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10
# Example special workspace (scratchpad)
#bind = $mainMod, S, togglespecialworkspace, magic
#bind = $mainMod SHIFT, S, movetoworkspace, special:magic
bind = SUPER_ALT_CTRL, L, exec, hyprctl keyword monitor "eDP-1,preferred,auto,1"
#Mouse Key Assignements
#bind = , code:191, exec, $terminal
#bind = , code:198, exec, $terminal
# Lid Open & Closed
#bindl = , switch:off:Lid Switch, exec, ~/.config/hypr/scripts/monitor_setup.sh
# trigger when the switch is turning on
#bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/monitor_setup.sh
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule
# windowrule = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0

View File

@@ -0,0 +1,34 @@
#▄████▄ ███ ██ ██ ██▄ ▄██ ▄████▄ ██████ ██ ▄████▄ ███ ██ ▄█████
#██▄▄██ ██ ▀▄██ ██ ██ ▀▀ ██ ██▄▄██ ██ ██ ██ ██ ██ ▀▄██ ▀▀▀▄▄▄
#██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ▀████▀ ██ ██ █████▀
animations {
enabled = true
bezier = water, 0.22, 0.9, 0.36, 1.0
bezier = flow, 0.25, 0.1, 0.25, 1.0
bezier = ripple, 0.33, 0.0, 0.2, 1.0
bezier = stream, 0.4, 0.0, 0.4, 1.0
bezier = cascade, 0.19, 1.0, 0.22, 1.0
bezier = md3_standard, 0.2, 0, 0, 1
bezier = md3_accel, 0.3, 0, 0.8, 0.15
bezier = overshot, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 3.0, water
animation = windowsIn, 1, 2.5, cascade,slide
animation = windowsOut, 1, 2.4, stream,slide
animation = windowsMove,1, 1.6, flow
animation = fade, 1, 2.4, water
animation = fadeIn, 1, 2.0, cascade
animation = fadeOut, 1, 1.8, ripple
animation = fadeDim, 1, 2.0, water
animation = fadeSwitch, 1, 1.4, flow
animation = layersIn, 1, 1.5, overshot, popin 80%
animation = layersOut, 1, 1.3, md3_accel, popin 90%
animation = layers, 1, 1.5, md3_standard
animation = workspaces, 1, 1.5, flow
animation = specialWorkspace, 1, 2.5, water
animation = border, 1, 2.9, water
animation = borderangle,1, 3.5, flow
}

View File

@@ -0,0 +1,15 @@
#▄████▄ ██ ██ ██████ ▄████▄ ▄█████ ██████ ▄████▄ █████▄ ██████
#██▄▄██ ██ ██ ██ ██ ██ ▀▀▀▄▄▄ ██ ██▄▄██ ██▄▄██▄ ██
#██ ██ ▀████▀ ██ ▀████▀ █████▀ ██ ██ ██ ██ ██ ██
exec-once = wl-paste --type text --watch cliphist store
exec-once = wl-paste --type image --watch cliphist store
exec-once = waybar & disown
exec-once = librewolf & disown
exec-once = swaync & disown
exec-once = hypridle & disown
exec-once = seventeenlands & disown
exec-once = hyprctl dispatch exec [workspace 3 silent] signal-desktop
exec-once = hyprctl dispatch exec [workspace 3 silent] discord
exec-once = hyprctl dispatch exec [workspace 3 silent] thunderbird
#exec-once = hyprctl dispatch exec "[workspace 5 silent] steam"

View File

@@ -0,0 +1,94 @@
#██ ▄█▀ ██████ ██ ██ █████▄ ██ ███ ██ ████▄ ██ ███ ██ ▄████ ▄█████
#████ ██▄▄ ▀██▀ ██▄▄██ ██ ██ ▀▄██ ██ ██ ██ ██ ▀▄██ ██ ▄▄▄ ▀▀▀▄▄▄
#██ ▀█▄ ██▄▄▄▄ ██ ██▄▄█▀ ██ ██ ██ ████▀ ██ ██ ██ ▀███▀ █████▀
# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, B, exec, $browser
bind = $mainModu SHIFT, B, exec, $browser2
bind = $mainMod, C, killactive,
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, F, togglefloating,
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod, L, exec, hyprlock
bind = $mainMod, M, exit,
bind = $mainMod, N, exec, swaync-client -t -sw
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod SHIFT, S, exec, hyprshot -m region --clipboard-only,
bind = $mainMod, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy
bind = $mainMod, W, exec, killall waybar && waybar &
bind = $mainMod, return, exec, $terminal
bind = $mainMod, space, exec, $menu
bind = $mainMod, backslash, exec, ~/.config/hypr/scripts/monitor_setup.sh
bind = $mainMod, slash, exec, $terminal -e btop
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1
bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10
# Example special workspace (scratchpad)
#bind = $mainMod, S, togglespecialworkspace, magic
#bind = $mainMod SHIFT, S, movetoworkspace, special:magic
bind = SUPER_ALT_CTRL, L, exec, hyprctl keyword monitor "eDP-1,preferred,auto,1"
#Mouse Key Assignements
#bind = , code:191, exec, $terminal
#bind = , code:198, exec, $terminal
# Lid Open & Closed
#bindl = , switch:off:Lid Switch, exec, ~/.config/hypr/scripts/monitor_setup.sh
# trigger when the switch is turning on
#bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/monitor_setup.sh
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previou

32
hypr/hyprland/env.conf Normal file
View File

@@ -0,0 +1,32 @@
#██████ ███ ██ ██ ██ ██ ██ ▄████▄ █████▄ ██ ▄████▄ █████▄ ██ ██████ ▄█████
#██▄▄ ██ ▀▄██ ██▄▄██ ██▄▄██ ██▄▄██ ██▄▄██▄ ██ ██▄▄██ ██▄▄██ ██ ██▄▄ ▀▀▀▄▄▄
#██▄▄▄▄ ██ ██ ▀██▀ ▀██▀ ██ ██ ██ ██ ██ ██ ██ ██▄▄█▀ ██████ ██▄▄▄▄ █████▀
# GTK Theme
env = GTK_THEME,adw-gtk3-dark
# Cursor size
env = XCURSOR_SIZE,20
env = HYPRCURSOR_SIZE,20
# Language Settings
env = LANG,en_US.UTF-8
env = LC_ALL,en_US.UTF-8
env = LANGUAGE,en_US.UTF-8
# Editor
env = EDITOR,nvim
# Force all apps to use Wayland
env = GDK_BACKEND,wayland,x11
env = QT_QPA_PLATFORM,wayland;xcb
env = QT_STYLE_OVERRIDE,kvantum
env = SDL_VIDEODRIVER,wayland
env = MOZ_ENABLE_WAYLAND,1
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
env = OZONE_PLATFORM,wayland
env = XDG_SESSION_TYPE,wayland
# Allow better support for screen sharing (Google Meet, Discord, etc)
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_DESKTOP,Hyprland

40
hypr/hyprland/input.conf Normal file
View File

@@ -0,0 +1,40 @@
#██ ███ ██ █████▄ ██ ██ ██████
#██ ██ ▀▄██ ██▄▄█▀ ██ ██ ██
#██ ██ ██ ██ ▀████▀ ██
# hide cursor after n sec
cursor {
inactive_timeout = 5
}
input {
kb_options = caps:none #deactivate capslock
# Change speed of keyboard repeat
# repeat_rate = 40
# repeat_delay = 600
follow_mouse = 1
numlock_by_default = true
# Increase sensitity for mouse/trackpack (default: 0)
sensitivity = 0 #0.35
touchpad {
# Use natural (inverse) scrolling
natural_scroll = false #true
# Use two-finger clicks for right-click instead of lower-right corner
clickfinger_behavior = true
# Control the speed of your scrolling
scroll_factor = 0.4
}
}
misc {
key_press_enables_dpms = true # key press will trigger wake
mouse_move_enables_dpms = true # mouse move will trigger wake
}

View File

@@ -0,0 +1,73 @@
#██ ▄████▄ ▄████▄ ██ ▄█▀ ▄▀▀▄ ██████ ██████ ██████ ██
#██ ██ ██ ██ ██ ████ ▄▀▀▄ ▄ ██▄▄ ██▄▄ ██▄▄ ██
#██████ ▀████▀ ▀████▀ ██ ▀█▄ ▀▄▄▀▀▄ ██ ██▄▄▄▄ ██▄▄▄▄ ██████
general {
gaps_in = 0
gaps_out = 0
border_size = 1
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(ff9100ff)
col.inactive_border = rgba(595959aa)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 10
rounding_power = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 0.9
shadow {
enabled = false
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 7
passes = 4
ignore_opacity = true
noise = 0.0117
contrast = 0.8916
brightness = 0.8172
xray = false
new_optimizations = true
special = true
popups = true
}
}
# App launcher
layerrule = blur, rofi
layerrule = ignorezero, rofi
layerrule = animation slide bottom, rofi
# Top bar
layerrule = blur, waybar
layerrule = ignorezero, waybar
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
misc {
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
}

View File

@@ -0,0 +1,9 @@
#██▄ ▄██ ▄████▄ ███ ██ ██ ██████ ▄████▄ █████▄ ▄█████
#██ ▀▀ ██ ██ ██ ██ ▀▄██ ██ ██ ██ ██ ██▄▄██▄ ▀▀▀▄▄▄
#██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ ██ ██ █████▀
monitor = , preferred, auto, 1
# Lid switch bindings
bindl = , switch:on:Lid Switch, exec, hyprctl keyword monitor "eDP-1, disable"
bindl = , switch:off:Lid Switch, exec, hyprctl keyword monitor "eDP-1, preferred, auto, 1

View File

@@ -0,0 +1,11 @@
#██ ██ ██ ███ ██ ████▄ ▄████▄ ██ ██ █████▄ ██ ██ ██ ██████ ▄█████
#██ ▄█▄ ██ ██ ██ ▀▄██ ██ ██ ██ ██ ██ ▄█▄ ██ ██▄▄██▄ ██ ██ ██ ██▄▄ ▀▀▀▄▄▄
# ▀██▀██▀ ██ ██ ██ ████▀ ▀████▀ ▀██▀██▀ ██ ██ ▀████▀ ██████ ██▄▄▄▄ █████▀
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0

96
rofi/bluetooth-menu.rasi Normal file
View File

@@ -0,0 +1,96 @@
/* Bluetooth menu */
@theme "~/.config/rofi/theme.rasi"
configuration {
font: "JetBrainsMono Nerd Font 8";
}
/* Window */
window {
location: north;
anchor: south;
y-offset: 3px;
width: 240px;
border: 3px;
border-radius: 10px;
border-color: @main-br;
background-color: @main-bg;
children: [ mainbox ];
}
mainbox {
spacing: 0;
background-color: @main-br;
text-color: @main-fg;
children: [ textbox-custom, listview, inputbar ];
}
textbox-custom {
font: "JetBrainsMono Nerd Font Bold 8";
horizontal-align: 0.5;
padding: 1px 0;
expand: false;
background-color: @select-bg;
text-color: @select-fg;
expand: false;
content: "󰂴 Bluetooth";
}
/* Input */
inputbar {
margin: -32px 6px 6px;
border-radius: 6px;
spacing: inherit;
background-color: @input-bg;
text-color: inherit;
children: [ prompt, entry ];
}
prompt {
padding: 6px 6px 6px 12px;
background-color: inherit;
text-color: inherit;
}
entry {
placeholder: "Search";
padding: 6px 0;
cursor: text;
background-color: inherit;
text-color: inherit;
}
/* List */
listview {
border: 2px 0 0 0;
border-radius: 8px;
border-color: @main-br;
lines: 6;
fixed-height: false;
dynamic: false;
cycle: false;
margin: 0 0 -2px;
padding: 6px 6px 40px;
background-color: @main-bg;
}
element {
padding: 6px;
cursor: pointer;
background-color: inherit;
text-color: @main-fg;
}
element selected active,
element selected normal {
border-radius: 6px;
background-color: @select-bg;
text-color: @select-fg;
}
element-text {
padding: 0 6px;
cursor: inherit;
background-color: inherit;
text-color: inherit;
}

69
rofi/power-menu.rasi Normal file
View File

@@ -0,0 +1,69 @@
/* Power menu */
@theme "~/.config/rofi/theme.rasi"
configuration {
font: "JetBrainsMono Nerd Font 8";
}
/* Window */
window {
location: northeast;
anchor: north;
x-offset: -3px;
y-offset: 3px;
width: 150px;
border: 3px;
border-radius: 10px;
border-color: @main-br;
background-color: @main-bg;
children: [ mainbox ];
}
mainbox {
spacing: 0;
background-color: @main-br;
text-color: @main-fg;
children: [ textbox-custom, listview ];
}
textbox-custom {
font: "JetBrainsMono Nerd Font Bold 8";
horizontal-align: 0.5;
padding: 1px 0;
expand: false;
background-color: @select-bg;
text-color: @select-fg;
expand: false;
content: " Power";
}
/* List */
listview {
border: 2px 0 0 0;
border-radius: 8px;
border-color: @main-br;
lines: 6;
padding: 6px;
background-color: @main-bg;
}
element {
padding: 6px;
cursor: pointer;
background-color: inherit;
text-color: @main-fg;
}
element selected.normal {
border-radius: 6px;
background-color: @select-bg;
text-color: @select-fg;
}
element-text {
padding: 0 6px;
cursor: inherit;
background-color: inherit;
text-color: inherit;
}

45
rofi/theme.rasi Normal file
View File

@@ -0,0 +1,45 @@
/* Catppuccin Macchiato */
* {
rosewater: #f4dbd6;
flamingo: #f0c6c6;
pink: #f5bde6;
mauve: #c6a0f6;
red: #ed8796;
maroon: #ee99a0;
peach: #f5a97f;
yellow: #eed49f;
green: #a6da95;
teal: #8bd5ca;
sky: #91d7e3;
sapphire: #7dc4e4;
blue: #8aadf4;
lavender: #b7bdf8;
text: #cad3f5;
subtext1: #b8c0e0;
subtext0: #a5adcb;
overlay2: #939ab7;
overlay1: #8087a2;
overlay0: #6e738d;
surface2: #5b6078;
surface1: #494d64;
surface0: #363a4f;
base: #24273a;
mantle: #1e2030;
crust: #181926;
}
/*
bg - background
fg - foreground
br - border
*/
* {
main-bg: @crust;
main-fg: @text;
main-br: @overlay2;
input-bg: @mantle;
select-bg: @overlay2;
select-fg: @crust;
}

View File

@@ -0,0 +1,45 @@
/* Catppuccin Frappe */
* {
rosewater: #f2d5cf;
flamingo: #eebebe;
pink: #f4b8e4;
mauve: #ca9ee6;
red: #e78284;
maroon: #ea999c;
peach: #ef9f76;
yellow: #e5c890;
green: #a6d189;
teal: #81c8be;
sky: #99d1db;
sapphire: #85c1dc;
blue: #8caaee;
lavender: #babbf1;
text: #c6d0f5;
subtext1: #b5bfe2;
subtext0: #a5adce;
overlay2: #949cbb;
overlay1: #838ba7;
overlay0: #737994;
surface2: #626880;
surface1: #51576d;
surface0: #414559;
base: #303446;
mantle: #292c3c;
crust: #232634;
}
/*
bg - background
fg - foreground
br - border
*/
* {
main-bg: @crust;
main-fg: @text;
main-br: @overlay2;
input-bg: @mantle;
select-bg: @overlay2;
select-fg: @crust;
}

View File

@@ -0,0 +1,45 @@
/* Catppuccin Latte */
* {
rosewater: #dc8a78;
flamingo: #dd7878;
pink: #ea76cb;
mauve: #8839ef;
red: #d20f39;
maroon: #e64553;
peach: #fe640b;
yellow: #df8e1d;
green: #40a02b;
teal: #179299;
sky: #04a5e5;
sapphire: #209fb5;
blue: #1e66f5;
lavender: #7287fd;
text: #4c4f69;
subtext1: #5c5f77;
subtext0: #6c6f85;
overlay2: #7c7f93;
overlay1: #8c8fa1;
overlay0: #9ca0b0;
surface2: #acb0be;
surface1: #bcc0cc;
surface0: #ccd0da;
base: #eff1f5;
mantle: #e6e9ef;
crust: #dce0e8;
}
/*
bg - background
fg - foreground
br - border
*/
* {
main-bg: @crust;
main-fg: @text;
main-br: @overlay2;
input-bg: @mantle;
select-bg: @overlay2;
select-fg: @crust;
}

View File

@@ -0,0 +1,45 @@
/* Catppuccin Macchiato */
* {
rosewater: #f4dbd6;
flamingo: #f0c6c6;
pink: #f5bde6;
mauve: #c6a0f6;
red: #ed8796;
maroon: #ee99a0;
peach: #f5a97f;
yellow: #eed49f;
green: #a6da95;
teal: #8bd5ca;
sky: #91d7e3;
sapphire: #7dc4e4;
blue: #8aadf4;
lavender: #b7bdf8;
text: #cad3f5;
subtext1: #b8c0e0;
subtext0: #a5adcb;
overlay2: #939ab7;
overlay1: #8087a2;
overlay0: #6e738d;
surface2: #5b6078;
surface1: #494d64;
surface0: #363a4f;
base: #24273a;
mantle: #1e2030;
crust: #181926;
}
/*
bg - background
fg - foreground
br - border
*/
* {
main-bg: @crust;
main-fg: @text;
main-br: @overlay2;
input-bg: @mantle;
select-bg: @overlay2;
select-fg: @crust;
}

View File

@@ -0,0 +1,45 @@
/* Catppuccin Mocha */
* {
rosewater: #f5e0dc;
flamingo: #f2cdcd;
pink: #f5c2e7;
mauve: #cba6f7;
red: #f38ba8;
maroon: #eba0ac;
peach: #fab387;
yellow: #f9e2af;
green: #a6e3a1;
teal: #94e2d5;
sky: #89dceb;
sapphire: #74c7ec;
blue: #89b4fa;
lavender: #b4befe;
text: #cdd6f4;
subtext1: #bac2de;
subtext0: #a6adc8;
overlay2: #9399b2;
overlay1: #7f849c;
overlay0: #6c7086;
surface2: #585b70;
surface1: #45475a;
surface0: #313244;
base: #1e1e2e;
mantle: #181825;
crust: #11111b;
}
/*
bg - background
fg - foreground
br - border
*/
* {
main-bg: @crust;
main-fg: @text;
main-br: @overlay2;
input-bg: @mantle;
select-bg: @overlay2;
select-fg: @crust;
}

View File

@@ -0,0 +1,45 @@
/* Gruvbox Dark */
* {
bg0h: #1d2021;
bg0: #282828;
bg1: #3c3836;
bg2: #504945;
bg3: #665c54;
bg4: #7c6f64;
gray: #928374;
fg4: #a89984;
fg3: #bdae93;
fg2: #d5c4a1;
fg1: #ebdbb2;
fg0: #fbf1c7;
red: #cc241d;
brightred: #fb4934;
green: #98971a;
brightgreen: #b8bb26;
yellow: #d79921;
brightyellow: #fabd2f;
blue: #458588;
brightblue: #83a598;
purple: #b16286;
brightpurple: #d3869b;
aqua: #689d6a;
brightaqua: #8ec07c;
orange: #d65d0e;
brightorange: #fe8019;
}
/*
bg - background
fg - foreground
br - border
*/
* {
main-bg: @bg0h;
main-fg: @fg0;
main-br: @yellow;
input-bg: @bg1;
select-bg: @yellow;
select-fg: @bg0h;
}

View File

@@ -0,0 +1,45 @@
/* Gruvbox Dark */
* {
bg0h: #f9f5d7;
bg0: #fbf1c7;
bg1: #ebdbb2;
bg2: #d5c4a1;
bg3: #bdae93;
bg4: #a89984;
gray: #928374;
fg4: #7c6f64;
fg3: #665c54;
fg2: #504945;
fg1: #3c3836;
fg0: #282828;
red: #cc241d;
brightred: #9d0006;
green: #98971a;
brightgreen: #79740e;
yellow: #d79921;
brightyellow: #b57614;
blue: #458588;
brightblue: #076678;
purple: #b16286;
brightpurple: #8f3f71;
aqua: #689d6a;
brightaqua: #427b58;
orange: #d65d0e;
brightorange: #af3a03;
}
/*
bg - background
fg - foreground
br - border
*/
* {
main-bg: @bg0h;
main-fg: @fg0;
main-br: @brightyellow;
input-bg: @bg1;
select-bg: @brightyellow;
select-fg: @bg0h;
}

96
rofi/wifi-menu.rasi Normal file
View File

@@ -0,0 +1,96 @@
/* WiFi menu */
@theme "~/.config/rofi/theme.rasi"
configuration {
font: "JetBrainsMono Nerd Font 8";
}
/* Window */
window {
location: north;
anchor: south;
y-offset: 3px;
width: 240px;
border: 3px;
border-radius: 10px;
border-color: @main-br;
background-color: @main-bg;
children: [ mainbox ];
}
mainbox {
spacing: 0;
background-color: @main-br;
text-color: @main-fg;
children: [ textbox-custom, listview, inputbar ];
}
textbox-custom {
font: "JetBrainsMono Nerd Font Bold 8";
horizontal-align: 0.5;
padding: 1px 0;
expand: false;
background-color: @select-bg;
text-color: @select-fg;
expand: false;
content: "󰖩 Wi-Fi";
}
/* Input */
inputbar {
margin: -32px 6px 6px;
border-radius: 6px;
spacing: inherit;
background-color: @input-bg;
text-color: inherit;
children: [ prompt, entry ];
}
prompt {
padding: 6px 6px 6px 12px;
background-color: inherit;
text-color: inherit;
}
entry {
placeholder: "Search";
padding: 6px 0;
cursor: text;
background-color: inherit;
text-color: inherit;
}
/* List */
listview {
border: 2px 0 0 0;
border-radius: 8px;
border-color: @main-br;
lines: 6;
fixed-height: false;
dynamic: false;
cycle: false;
margin: 0 0 -2px;
padding: 6px 6px 40px;
background-color: @main-bg;
}
element {
padding: 6px;
cursor: pointer;
background-color: inherit;
text-color: @main-fg;
}
element selected active,
element selected normal {
border-radius: 6px;
background-color: @select-bg;
text-color: @select-fg;
}
element-text {
padding: 0 6px;
cursor: inherit;
background-color: inherit;
text-color: inherit;
}

60
swaync/config.json Normal file
View File

@@ -0,0 +1,60 @@
{
"$schema": "/etc/xdg/swaync/configSchema.json",
"ignore-gtk-theme": true,
"positionX": "left",
"positionY": "top",
"layer": "overlay",
"control-center-layer": "top",
"layer-shell": true,
"layer-shell-cover-screen": true,
"cssPriority": "user",
"control-center-margin-top": 7,
"control-center-margin-bottom": 0,
"control-center-margin-right": 7,
"control-center-margin-left": 0,
"notification-2fa-action": true,
"notification-inline-replies": false,
"notification-body-image-height": 150,
"notification-body-image-width": 700,
"timeout": 0,
"timeout-low": 0,
"timeout-critical": 0,
"fit-to-screen": false,
"relative-timestamps": true,
"control-center-width": 350,
"control-center-height": 800,
"notification-window-width": 350,
"keyboard-shortcuts": true,
"notification-grouping": true,
"image-visibility": "when-available",
"transition-time": 200,
"hide-on-clear": false,
"hide-on-action": true,
"text-empty": "No Notifications",
"script-fail-notify": true,
"widgets": [
"mpris",
"dnd",
"title",
"notifications"
],
"widget-config": {
"notifications": {
"vexpand": true
},
"title": {
"text": "Notifications",
"clear-all-button": true,
"button-text": "Clear All"
},
"dnd": {
"text": ""
},
"mpris": {
"blacklist": [],
"autohide": false,
"show-album-art": "always",
"loop-carousel": false
}
}
}

265
swaync/style.css Normal file
View File

@@ -0,0 +1,265 @@
/* Universal swaync - theme-independent, optimized for blur */
:root {
--cc-bg: rgba(20, 20, 20, 0.70); /* rgba(18, 18, 22, 0.70) */
--noti-bg: rgba(28, 28, 28, 0.72); /* rgba(28, 28, 32, 0.72) */
--noti-bg-hover: rgba(38, 38, 38, 0.75); /* rgba(38, 38, 44, 0.75) */
--noti-bg-focus: rgba(48, 48, 48, 0.78); /* rgba(48, 48, 54, 0.78) */
--noti-bg-floating: rgba(22, 22, 22, 0.74); /* rgba(22, 22, 26, 0.74) */
--noti-border-color: rgba(255, 255, 255, 0.10);
--noti-border-hover: rgba(255, 255, 255, 0.15);
--noti-border-focus: rgba(255, 255, 255, 0.20);
--button-bg: rgba(255, 255, 255, 0.10);
--button-hover: rgba(255, 255, 255, 0.15);
--button-active: rgba(255, 255, 255, 0.20);
--close-bg: rgba(255, 255, 255, 0.10);
--close-hover: rgba(255, 70, 70, 0.35);
--text-primary: rgba(255, 255, 255, 0.97);
--text-secondary: rgba(210, 210, 220, 0.88);
--text-disabled: rgba(160, 160, 170, 0.68);
--border-radius: 10px;
--transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.notification-window, .blank-window { background: transparent; }
.control-center {
background: var(--cc-bg);
border-radius: var(--border-radius);
border: 1px solid var(--noti-border-color);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
padding: 2px;
}
.control-center scrollbar, .control-center scrollbar slider {
background: transparent;
opacity: 0;
}
/* MPRIS */
.widget-mpris { margin: 6px 6px 4px 6px; }
.widget-mpris > box > box {
background: var(--noti-bg);
border-radius: var(--border-radius);
border: 1px solid var(--noti-border-color);
padding: 10px;
}
.mpris-album-art {
border-radius: 6px;
margin-right: 10px;
min-width: 56px;
min-height: 56px;
}
.mpris-title {
font-size: 14px;
font-weight: 600;
color: var(--text-primary);
margin-bottom: 2px;
}
.mpris-artist {
font-size: 13px;
color: var(--text-secondary);
margin-bottom: 6px;
}
.mpris-controls button {
background: var(--button-bg);
border: none;
border-radius: 6px;
color: var(--text-primary);
min-width: 32px;
min-height: 32px;
margin: 0 3px;
transition: var(--transition);
}
.mpris-controls button:hover {
background: var(--button-hover);
transform: scale(1.05);
}
.mpris-controls button:active {
background: var(--button-active);
transform: scale(0.98);
}
/* Title */
.widget-title { margin: 4px 6px 4px 6px; }
.widget-title > box { padding: 6px; }
.widget-title > box > label {
font-size: 14px;
font-weight: 700;
color: var(--text-primary);
}
.widget-title > box > button {
background: var(--button-bg);
border: 1px solid var(--noti-border-color);
border-radius: 6px;
padding: 4px 10px;
font-size: 12px;
color: var(--text-primary);
transition: var(--transition);
}
.widget-title > box > button:hover {
background: var(--button-hover);
border-color: var(--noti-border-hover);
transform: scale(1.02);
}
.widget-title > box > button:active {
background: var(--button-active);
border-color: var(--noti-border-focus);
}
/* DND */
.widget-dnd {
margin: 4px 6px 4px 6px;
/* REMOVED: text-align - not supported in GTK CSS */
}
.widget-dnd label {
/* REMOVED: display: none - use opacity instead */
opacity: 0;
min-width: 0;
min-height: 0;
}
.widget-dnd switch {
background: rgba(40, 40, 45, 0.6);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 10px;
min-height: 24px;
min-width: 44px;
}
.widget-dnd switch:checked {
background: rgba(100, 120, 140, 0.35);
border-color: rgba(120, 140, 160, 0.4);
}
.widget-dnd switch slider {
background: rgba(200, 200, 210, 0.9);
border-radius: 50%;
min-width: 18px;
min-height: 18px;
margin: 3px;
}
.widget-dnd switch:checked slider { background: rgba(140, 160, 180, 1); }
/* Notifications */
.widget-notifications { margin: 2px; }
.notification-row {
background: none;
outline: none;
}
.notification-row .notification-background { padding: 3px; }
.notification-row .notification-background .notification {
background: var(--noti-bg);
border-radius: var(--border-radius);
border: 1px solid var(--noti-border-color);
margin: 3px 0;
transition: var(--transition);
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
}
.notification-row .notification-background .notification:hover {
background: var(--noti-bg-hover);
border-color: var(--noti-border-hover);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.35);
transform: translateY(-1px);
}
.notification-row .notification-background .notification .notification-default-action {
padding: 10px;
color: var(--text-primary);
border-radius: var(--border-radius);
}
/* Floating */
.floating-notifications .notification {
background: var(--noti-bg-floating) !important;
border-radius: var(--border-radius);
border: 1px solid var(--noti-border-color);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.6);
padding: 10px;
}
/* Content */
.notification .notification-content { padding: 3px; }
.notification .summary {
font-size: 14px;
font-weight: 600;
color: var(--text-primary);
margin-bottom: 3px;
}
.notification .body {
font-size: 13px;
color: var(--text-secondary);
margin-bottom: 3px;
}
.notification .time {
font-size: 11px;
color: var(--text-disabled);
}
.notification image {
border-radius: 6px;
margin-right: 10px;
min-width: 44px;
min-height: 44px;
}
.notification .body-image {
border-radius: 6px;
margin-top: 6px;
}
/* Close */
.close-button {
background: var(--close-bg);
color: var(--text-primary);
border-radius: 100%;
min-width: 22px;
min-height: 22px;
margin: 6px;
transition: var(--transition);
}
.close-button:hover {
background: var(--close-hover);
transform: scale(1.1);
}
.close-button:active { transform: scale(0.95); }
/* Groups */
.notification-group {
margin: 3px;
}
.notification-group.collapsed {
background: var(--noti-bg);
border-radius: var(--border-radius);
border: 1px solid var(--noti-border-color);
margin: 3px 0;
transition: var(--transition);
}
.notification-group.collapsed:hover {
background: var(--noti-bg-hover);
border-color: var(--noti-border-hover);
transform: translateY(-1px);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.35);
}
.notification-group.collapsed .notification {
/* REMOVED: display: none - use opacity instead */
opacity: 0;
min-height: 0;
min-width: 0;
}
.notification-group-headers {
padding: 10px 12px;
margin: 0;
/* REMOVED: cursor - not supported in GTK CSS */
}
.notification-group-headers .notification-group-icon,
.notification-group-headers .notification-group-header {
color: var(--text-primary);
font-weight: 600;
font-size: 13px;
}
.notification-group-headers .notification-group-count {
color: var(--text-secondary);
font-size: 12px;
font-weight: 500;
}
/* Empty */
.blank-window label {
color: var(--text-disabled);
font-size: 13px;
font-style: italic;
}

View File

@@ -1,126 +0,0 @@
<div align="center">
## 🤖 mechabar
A mecha-themed, modular Waybar configuration.
| ![Mechabar](assets/catppuccin-mocha.png) |
| :--------------------------------------: |
<details>
<summary><b>Themes</b></summary>
<br>
**Catppuccin:**
| Mocha _(default)_ |
| :----------------------------------------------: |
| ![Catppuccin Mocha](assets/catppuccin-mocha.png) |
| Macchiato |
| :------------------------------------------------------: |
| ![Catppuccin Macchiato](assets/catppuccin-macchiato.png) |
| Frappe |
| :------------------------------------------------: |
| ![Catppuccin Frappe](assets/catppuccin-frappe.png) |
| Latte |
| :----------------------------------------------: |
| ![Catppuccin Latte](assets/catppuccin-latte.png) |
</details>
</div>
#
### Requirements
1. [Waybar](https://github.com/Alexays/Waybar)
> [!WARNING]
> **Version 0.14.0** has an [issue](https://github.com/Alexays/Waybar/issues/4354) with wildcard includes.
> Use the `fix/v0.14.0` branch as a temporary workaround.
2. A terminal emulator _(default: **Kitty**)_
> [!IMPORTANT]
> If you use a different terminal emulator (e.g., **Ghostty**),
> you need to replace all instances of `kitty` with your terminal command:
>
> ```diff
> - "on-click": "kitty -e ..."
> + "on-click": "ghostty -e ..."
> ```
#
### Installation
1. Back up your current configuration:
```bash
mv ~/.config/waybar{,.bak}
```
2. Clone the repository:
```bash
git clone https://github.com/sejjy/mechabar.git ~/.config/waybar
```
For **Waybar v0.14.0**:
```bash
git clone -b fix/v0.14.0 https://github.com/sejjy/mechabar.git ~/.config/waybar
```
3. Run the [install script](/install.sh):
```bash
~/.config/waybar/install.sh
```
This makes the [scripts](/scripts/) executable and installs all dependencies listed below:
| Package | Description |
| --------------------------------: | ------------------------------------------------------------------------------ |
| `bluez` | Daemons for the bluetooth protocol stack<tr></tr> |
| _(bluetoothctl)_ `bluez-utils` | Development and debugging utilities for the bluetooth protocol stack<tr></tr> |
| `brightnessctl` | Lightweight brightness control tool<tr></tr> |
| `fzf` | Command-line fuzzy finder<tr></tr> |
| _(nmcli)_ `networkmanager` | Network connection manager and user applications<tr></tr> |
| _(checkupdates)_ `pacman-contrib` | Contributed scripts and tools for pacman systems<tr></tr> |
| `pipewire-pulse` | Low-latency audio/video router and processor - PulseAudio replacement<tr></tr> |
| `ttf-0xproto-nerd` | Patched font 0xProto from nerd fonts library |
#
### Customization
- To change the theme, copy the file with your preferred theme (e.g., `catppuccin-latte.css`) to `theme.css`:
```bash
cd ~/.config/waybar
cp themes/catppuccin-latte.css theme.css
```
#
### Documentation
- [Waybar wiki](https://github.com/Alexays/Waybar/wiki)
- Man page:
```bash
man waybar
```
#
### Credits
- Font: [0xProto](https://github.com/0xType/0xProto)
- Icons: [Nerd Fonts](https://github.com/ryanoasis/nerd-fonts)
- Themes: [Catppuccin](https://github.com/catppuccin/waybar)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -1,21 +0,0 @@
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.

View File

@@ -1,128 +1,478 @@
{ {
/*------------------------------------------------------------ "layer": "top",
regression: wildcard includes are broken after v0.14.0 "position": "top",
- https://github.com/Alexays/Waybar/issues/4354 "mode": "dock",
- https://github.com/sejjy/mechabar/issues/31 "reload_style_on_change": true,
------------------------------------------------------------*/ "gtk-layer-shell": true,
/*
"include": [
"~/.config/waybar/modules/*.jsonc",
"~/.config/waybar/modules/custom/*.jsonc",
"~/.config/waybar/modules/hyprland/*.jsonc"
// modules that are not included by default: // <<--< Positions >-->>
// "~/.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/network.jsonc",
"~/.config/waybar/modules/bluetooth.jsonc",
"~/.config/waybar/modules/custom/system_update.jsonc",
// modules-right
"~/.config/waybar/modules/mpris.jsonc",
"~/.config/waybar/modules/pulseaudio.jsonc",
"~/.config/waybar/modules/backlight.jsonc",
"~/.config/waybar/modules/battery.jsonc",
"~/.config/waybar/modules/custom/power_menu.jsonc",
"~/.config/waybar/modules/custom/dividers.jsonc"
// modules that are not included by default:
// "~/.config/waybar/modules/extras/taskbar.jsonc",
// "~/.config/waybar/modules/extras/tray.jsonc",
// "~/.config/waybar/modules/extras/wireplumber.jsonc"
],
/*------------
layout
------------*/
"modules-left": [ "modules-left": [
"group/user", "custom/ws", // window icon
"custom/left_div#1", "custom/left1",
"hyprland/workspaces",
"custom/right_div#1", "hyprland/workspaces", // workspaces
"hyprland/window" "custom/right1",
"custom/paddw",
"hyprland/window" // window title
], ],
"modules-center": [ "modules-center": [
"hyprland/windowcount", "custom/paddc",
"custom/left_div#2", "custom/left2",
"temperature", "custom/temperature", // temperature
"custom/left_div#3",
"memory", "custom/left3",
"custom/left_div#4", "memory", // memory
"cpu",
"custom/left_inv#1", "custom/left4",
"custom/left_div#5", "cpu", // cpu
"custom/distro", "custom/leftin1",
"custom/right_div#2",
"custom/right_inv#1", "custom/left5",
"idle_inhibitor", "custom/distro", // distro icon
"clock#time", "custom/right2",
"custom/right_div#3",
"clock#date", "custom/rightin1",
"custom/right_div#4", "idle_inhibitor", // idle inhibitor
"network", "clock#time", // time
"bluetooth", "custom/right3",
"custom/system_update",
"custom/right_div#5" "clock#date", // date
"custom/right4",
"custom/wifi", // wi-fi
"custom/wireguard", // wireguard
"bluetooth", // bluetooth
"custom/update", // system update
"custom/right5"
], ],
"modules-right": [ "modules-right": [
"mpris", "mpris", // media info
"custom/left_div#6",
"group/pulseaudio", "custom/left6",
"custom/left_div#7", "pulseaudio", // output device
"backlight",
"custom/left_div#8", "custom/left7",
"battery", "backlight", // brightness
"custom/left_inv#2",
"custom/power_menu" "custom/left8",
"battery", // battery
"custom/leftin2",
"custom/power" // power button
], ],
/*------------- // <<--< Modules >-->>
options
-------------*/
// "expand-center": "custom/ws": {
// "expand-left": "exec": "~/.config/waybar/scripts/current-theme.sh",
// "expand-right": "return-type": "json",
"layer": "top", "format": " 󰤕 ",
// "output": "on-click": "~/.config/waybar/scripts/theme-switcher.sh",
// "position": "min-length": 3,
"height": 0, "max-length": 3
"width": 0, },
"margin": 0,
// "margin-top": "hyprland/workspaces": {
// "margin-left": "persistent-workspaces": {
// "margin-bottom": "1": [],
// "margin-right": "2": [],
// "no-center": "3": [],
"spacing": 0, "4": [],
// "name": "5": []
"mode": "dock", }
// "start_hidden": },
// "modifier-reset":
// "exclusive": "hyprland/window": {
// "fixed-center": "format": "{}",
// "passthrough": "tooltip": false,
// "ipc": "min-length": 5,
// "id":
"reload_style_on_change": true "rewrite": {
// "on-sigusr1": // Desktop
// "on-sigusr2": "":
"<span foreground='#458588'> </span> Hyprland",
// Terminal
"~": " Terminal",
"zsh": " Terminal",
"kitty": " Terminal",
"tmux(.*)":
"<span foreground='#a6e3a1'> </span> Tmux",
// Browser
"(.*)Mozilla Firefox":
"<span foreground='#cc241d'>󰈹 </span> Firefox",
"(.*) — Mozilla Firefox":
"<span foreground='#cc241d'>󰈹 </span> $1",
"(.*)Zen Browser":
"<span foreground='#d65d0e'>󰺕 </span> Zen Browser",
"(.*) — Zen Browser":
"<span foreground='#d65d0e'>󰺕 </span> $1",
// Development
"(.*) - Visual Studio Code":
"<span foreground='#458588'>󰨞 </span> $1",
"(.*)Visual Studio Code":
"<span foreground='#458588'>󰨞 </span> Visual Studio Code",
"nvim":
"<span foreground='#98971a'> </span> Neovim",
"nvim (.*)":
"<span foreground='#98971a'> </span> $1",
"vim":
"<span foreground='#98971a'> </span> Vim",
"vim (.*)":
"<span foreground='#98971a'> </span> $1",
// Media
"OBS(.*)":
"<span foreground='#d5c4a1'> </span> OBS Studio",
"VLC media player":
"<span foreground='#d65d0e'>󰕼 </span> VLC Media Player",
"(.*) - VLC media player":
"<span foreground='#d65d0e'>󰕼 </span> $1",
"(.*) - mpv":
"<span foreground='#b16286'> </span> $1",
"qView": " qView",
"(.*).jpg": " $1.jpg",
"(.*).png": " $1.png",
"(.*).svg": " $1.svg",
// Social
"• Discord(.*)": "Discord$1",
"(.*)Discord(.*)":
"<span foreground='#458588'> </span> $1Discord$2",
// Documents
"ONLYOFFICE Desktop Editors":
"<span foreground='#cc241d'> </span> OnlyOffice Desktop",
"(.*).docx":
"<span foreground='#458588'> </span> $1.docx",
"(.*).xlsx":
"<span foreground='#98971a'> </span> $1.xlsx",
"(.*).pptx":
"<span foreground='#d65d0e'> </span> $1.pptx",
"(.*).pdf":
"<span foreground='#cc241d'> </span> $1.pdf",
// System
"Authenticate": " Authenticate"
}
},
"custom/temperature": {
"exec": "~/.config/waybar/scripts/cpu-temp.sh",
"return-type": "json",
"format": "{}",
"interval": 5,
"min-length": 8,
"max-length": 8
},
"memory": {
"states": {
"warning": 75,
"critical": 90
},
"format": "󰘚 {percentage}%",
"format-critical": "󰀦 {percentage}%",
"tooltip": false,
// "tooltip-format": "Memory Used: {used:0.1f} GB / {total:0.1f} GB",
"interval": 5,
"min-length": 7,
"max-length": 7
},
"cpu": {
"format": "󰻠 {usage}%",
"tooltip": false,
"interval": 5,
"min-length": 6,
"max-length": 6
},
"custom/distro": {
"format": " ",
"tooltip": false
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "󰈈 ",
"deactivated": "󰈉 "
},
"tooltip-format-activated": "Presentation Mode",
"tooltip-format-deactivated": "Idle Mode",
"start-activated": false
},
"clock#time": {
"format": "{:%H:%M}",
"tooltip": false,
// "tooltip-format": "Standard Time: {:%I:%M %p}",
"min-length": 6,
"max-length": 6
},
"clock#date": {
"format": "󰨳 {:%m-%d}",
"tooltip-format": "<tt>{calendar}</tt>",
"calendar": {
"mode": "month",
"mode-mon-col": 6,
"weeks-pos": "right",
"on-click-right": "mode",
"format": {
"months":
"<span color='#928374'><b>{}</b></span>",
"weekdays":
"<span color='#d5c4a1' font='7'>{}</span>",
"today":
"<span color='#cc241d'><b>{}</b></span>"
}
},
"actions": {
"on-click": "mode",
"on-click-right": "mode"
},
"min-length": 8,
"max-length": 8
},
"custom/wifi": {
"exec": "~/.config/waybar/scripts/wifi-status.sh",
"return-type": "json",
"format": "{}",
"on-click": "~/.config/waybar/scripts/wifi-menu.sh",
"on-click-right": "kitty --title '󰤨 Network Manager TUI' bash -c nmtui",
"interval": 1,
"min-length": 1,
"max-length": 1
},
"custom/wireguard": {
"format": "{}",
"return-type": "json",
"interval": 10,
"exec": "~/.config/waybar/scripts/wireguard-status.sh",
"tooltip": true
},
"bluetooth": {
"format": "󰂰",
"format-disabled": "󰂲",
"format-connected": "󰂱",
"format-connected-battery": "󰂱",
"tooltip-format":
"{num_connections} connected",
"tooltip-format-disabled":
"Bluetooth Disabled",
"tooltip-format-connected":
"{device_enumerate}",
"tooltip-format-enumerate-connected":
"{device_alias}",
"tooltip-format-enumerate-connected-battery":
":: {device_alias}: 󱊣 {device_battery_percentage}%",
"on-click": "~/.config/waybar/scripts/bluetooth-menu.sh",
"on-click-right": "kitty --title '󰂯 Bluetooth TUI' bash -c bluetui",
"interval": 1,
"min-length": 1,
"max-length": 1
},
"custom/update": {
"exec": "~/.config/waybar/scripts/system-update.sh",
"return-type": "json",
"format": "{}",
"on-click": "hyprctl dispatch exec '~/.config/waybar/scripts/system-update.sh up'",
"interval": 180,
"min-length": 1,
"max-length": 1
},
"mpris": {
"format": "{player_icon} {title} - {artist}",
"format-paused": "{status_icon} {title} - {artist}",
"player-icons": {
"default": "󰝚 ",
"spotify": "<span foreground='#98971a'>󰓇 </span>",
"firefox": "<span foreground='#cc241d'>󰗃 </span>"
},
"status-icons": {
"paused": "<span color='#928374'>\u200A\u200A󰏤\u2009\u2009</span>"
},
"tooltip-format": "Playing: {title} - {artist}",
"tooltip-format-paused": "Paused: {title} - {artist}",
"min-length": 5,
"max-length": 35
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": "󰝟 {volume}%",
"format-icons": {
"default": ["󰕿", "󰖀", "󰕾"],
"headphone": "󰋋",
"headset": "󰋋"
},
"tooltip-format": "Device: {desc}",
"on-click": "~/.config/waybar/scripts/volume-control.sh -o m",
"on-scroll-up": "~/.config/waybar/scripts/volume-control.sh -o i",
"on-scroll-down": "~/.config/waybar/scripts/volume-control.sh -o d",
"min-length": 6,
"max-length": 6
},
"backlight": {
"format": "{icon} {percent}%",
"format-icons": ["", "", "", "", "", "", "", "", ""],
"tooltip": false,
"on-scroll-up": "~/.config/waybar/scripts/brightness-control.sh -o i",
"on-scroll-down": "~/.config/waybar/scripts/brightness-control.sh -o d",
"min-length": 6,
"max-length": 6
},
"battery": {
"states": {
"warning": 20,
"critical": 10
},
"format": "{icon} {capacity}%",
"format-icons": ["󰂎", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"],
"format-charging": " {capacity}%",
"tooltip-format": "Discharging: {time}",
"tooltip-format-charging": "Charging: {time}",
"interval": 1,
"min-length": 6,
"max-length": 6
},
"custom/power": {
"format": " ",
"tooltip": false,
// "tooltip-format": "Power Menu",
"on-click": "~/.config/waybar/scripts/power-menu.sh"
},
// <<--< Padding >-->>
"custom/paddw": {
"format": " ",
"tooltip": false
},
"custom/paddc": {
"format": " ",
"tooltip": false
},
// Left Arrows
"custom/left1": {
"format": "",
"tooltip": false
},
"custom/left2": {
"format": "",
"tooltip": false
},
"custom/left3": {
"format": "",
"tooltip": false
},
"custom/left4": {
"format": "",
"tooltip": false
},
"custom/left5": {
"format": "",
"tooltip": false
},
"custom/left6": {
"format": "",
"tooltip": false
},
"custom/left7": {
"format": "",
"tooltip": false
},
"custom/left8": {
"format": "",
"tooltip": false
},
// Right Arrows
"custom/right1": {
"format": "",
"tooltip": false
},
"custom/right2": {
"format": "",
"tooltip": false
},
"custom/right3": {
"format": "",
"tooltip": false
},
"custom/right4": {
"format": "",
"tooltip": false
},
"custom/right5": {
"format": "",
"tooltip": false
},
// Left Inverse
"custom/leftin1": {
"format": "",
"tooltip": false
},
"custom/leftin2": {
"format": "",
"tooltip": false
},
// Right Inverse
"custom/rightin1": {
"format": "",
"tooltip": false
}
} }

489
waybar/config.jsonc.backup Normal file
View File

@@ -0,0 +1,489 @@
{
"layer": "top",
"position": "top",
"mode": "dock",
"reload_style_on_change": true,
"gtk-layer-shell": true,
// <<--< Positions >-->>
"modules-left": [
"custom/ws", // window icon
"custom/left1",
"hyprland/workspaces", // workspaces
"custom/right1",
"custom/paddw",
"hyprland/window" // window title
],
"modules-center": [
"custom/paddc",
"custom/left2",
"custom/temperature", // temperature
"custom/left3",
"memory", // memory
"custom/left4",
"cpu", // cpu
"custom/leftin1",
"custom/left5",
"custom/distro", // distro icon
"custom/right2",
"custom/rightin1",
"idle_inhibitor", // idle inhibitor
"clock#time", // time
"custom/right3",
"clock#date", // date
"custom/right4",
"custom/wifi", // wi-fi
"custom/wireguard", // wireguard
"bluetooth", // bluetooth
"custom/update", // system update
"custom/right5"
],
"modules-right": [
"mpris", // media info
"custom/left6",
"pulseaudio", // output device
"custom/left7",
"backlight", // brightness
"custom/left8",
"battery", // battery
"custom/leftin2",
"custom/power" // power button
],
// <<--< Modules >-->>
"custom/ws": {
"exec": "~/.config/waybar/scripts/current-theme.sh",
"return-type": "json",
"format": " 󰤕 ",
"on-click": "~/.config/waybar/scripts/theme-switcher.sh",
"min-length": 3,
"max-length": 3
},
"hyprland/workspaces": {
"on-scroll-up": "hyprctl dispatch workspace -1",
"on-scroll-down": "hyprctl dispatch workspace +1",
"persistent-workspaces": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": []
}
},
"hyprland/window": {
"format": "{}",
"tooltip": false,
"min-length": 5,
"rewrite": {
// Desktop
"":
"<span foreground='#458588'> </span> Hyprland",
// Terminal
"~": " Terminal",
"zsh": " Terminal",
"kitty": " Terminal",
"tmux(.*)":
"<span foreground='#a6e3a1'> </span> Tmux",
// Browser
"(.*)Mozilla Firefox":
"<span foreground='#cc241d'>󰈹 </span> Firefox",
"(.*) — Mozilla Firefox":
"<span foreground='#cc241d'>󰈹 </span> $1",
"(.*)Zen Browser":
"<span foreground='#d65d0e'>󰺕 </span> Zen Browser",
"(.*) — Zen Browser":
"<span foreground='#d65d0e'>󰺕 </span> $1",
// Development
"(.*) - Visual Studio Code":
"<span foreground='#458588'>󰨞 </span> $1",
"(.*)Visual Studio Code":
"<span foreground='#458588'>󰨞 </span> Visual Studio Code",
"nvim":
"<span foreground='#98971a'> </span> Neovim",
"nvim (.*)":
"<span foreground='#98971a'> </span> $1",
"vim":
"<span foreground='#98971a'> </span> Vim",
"vim (.*)":
"<span foreground='#98971a'> </span> $1",
// Media
"(.*)Spotify":
"<span foreground='#98971a'> </span> Spotify",
"(.*)Spotify Premium":
"<span foreground='#98971a'> </span> Spotify Premium",
"OBS(.*)":
"<span foreground='#d5c4a1'> </span> OBS Studio",
"VLC media player":
"<span foreground='#d65d0e'>󰕼 </span> VLC Media Player",
"(.*) - VLC media player":
"<span foreground='#d65d0e'>󰕼 </span> $1",
"(.*) - mpv":
"<span foreground='#b16286'> </span> $1",
"qView": " qView",
"(.*).jpg": " $1.jpg",
"(.*).png": " $1.png",
"(.*).svg": " $1.svg",
// Social
"vesktop":
"<span foreground='#458588'> </span> Discord",
"• Discord(.*)": "Discord$1",
"(.*)Discord(.*)":
"<span foreground='#458588'> </span> $1Discord$2",
// Documents
"ONLYOFFICE Desktop Editors":
"<span foreground='#cc241d'> </span> OnlyOffice Desktop",
"(.*).docx":
"<span foreground='#458588'> </span> $1.docx",
"(.*).xlsx":
"<span foreground='#98971a'> </span> $1.xlsx",
"(.*).pptx":
"<span foreground='#d65d0e'> </span> $1.pptx",
"(.*).pdf":
"<span foreground='#cc241d'> </span> $1.pdf",
// System
"Authenticate": " Authenticate"
}
},
"custom/temperature": {
"exec": "~/.config/waybar/scripts/cpu-temp.sh",
"return-type": "json",
"format": "{}",
"interval": 5,
"min-length": 8,
"max-length": 8
},
"memory": {
"states": {
"warning": 75,
"critical": 90
},
"format": "󰘚 {percentage}%",
"format-critical": "󰀦 {percentage}%",
"tooltip": false,
// "tooltip-format": "Memory Used: {used:0.1f} GB / {total:0.1f} GB",
"interval": 5,
"min-length": 7,
"max-length": 7
},
"cpu": {
"format": "󰻠 {usage}%",
"tooltip": false,
"interval": 5,
"min-length": 6,
"max-length": 6
},
"custom/distro": {
"format": " ",
"tooltip": false
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "󰈈 ",
"deactivated": "󰈉 "
},
"tooltip-format-activated": "Presentation Mode",
"tooltip-format-deactivated": "Idle Mode",
"start-activated": false
},
"clock#time": {
"format": "{:%H:%M}",
"tooltip": false,
// "tooltip-format": "Standard Time: {:%I:%M %p}",
"min-length": 6,
"max-length": 6
},
"clock#date": {
"format": "󰨳 {:%m-%d}",
"tooltip-format": "<tt>{calendar}</tt>",
"calendar": {
"mode": "month",
"mode-mon-col": 6,
"weeks-pos": "right",
"on-click-right": "mode",
"format": {
"months":
"<span color='#928374'><b>{}</b></span>",
"weekdays":
"<span color='#d5c4a1' font='7'>{}</span>",
"today":
"<span color='#cc241d'><b>{}</b></span>"
}
},
"actions": {
"on-click": "mode",
"on-click-right": "mode"
},
"min-length": 8,
"max-length": 8
},
"custom/wifi": {
"exec": "~/.config/waybar/scripts/wifi-status.sh",
"return-type": "json",
"format": "{}",
"on-click": "~/.config/waybar/scripts/wifi-menu.sh",
"on-click-right": "kitty --title '󰤨 Network Manager TUI' bash -c nmtui",
"interval": 1,
"min-length": 1,
"max-length": 1
},
"custom/wireguard": {
"format": "{}",
"return-type": "json",
"interval": 10,
"exec": "~/.config/waybar/scripts/wireguard-status.sh",
"tooltip": true
},
"bluetooth": {
"format": "󰂰",
"format-disabled": "󰂲",
"format-connected": "󰂱",
"format-connected-battery": "󰂱",
"tooltip-format":
"{num_connections} connected",
"tooltip-format-disabled":
"Bluetooth Disabled",
"tooltip-format-connected":
"{device_enumerate}",
"tooltip-format-enumerate-connected":
"{device_alias}",
"tooltip-format-enumerate-connected-battery":
":: {device_alias}: 󱊣 {device_battery_percentage}%",
"on-click": "~/.config/waybar/scripts/bluetooth-menu.sh",
"on-click-right": "kitty --title '󰂯 Bluetooth TUI' bash -c bluetui",
"interval": 1,
"min-length": 1,
"max-length": 1
},
"custom/update": {
"exec": "~/.config/waybar/scripts/system-update.sh",
"return-type": "json",
"format": "{}",
"on-click": "hyprctl dispatch exec '~/.config/waybar/scripts/system-update.sh up'",
"interval": 180,
"min-length": 1,
"max-length": 1
},
"mpris": {
"format": "{player_icon} {title} - {artist}",
"format-paused": "{status_icon} {title} - {artist}",
"player-icons": {
"default": "󰝚 ",
"spotify": "<span foreground='#98971a'>󰓇 </span>",
"firefox": "<span foreground='#cc241d'>󰗃 </span>"
},
"status-icons": {
"paused": "<span color='#928374'>\u200A\u200A󰏤\u2009\u2009</span>"
},
"tooltip-format": "Playing: {title} - {artist}",
"tooltip-format-paused": "Paused: {title} - {artist}",
"min-length": 5,
"max-length": 35
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": "󰝟 {volume}%",
"format-icons": {
"default": ["󰕿", "󰖀", "󰕾"],
"headphone": "󰋋",
"headset": "󰋋"
},
"tooltip-format": "Device: {desc}",
"on-click": "~/.config/waybar/scripts/volume-control.sh -o m",
"on-scroll-up": "~/.config/waybar/scripts/volume-control.sh -o i",
"on-scroll-down": "~/.config/waybar/scripts/volume-control.sh -o d",
"min-length": 6,
"max-length": 6
},
"backlight": {
"format": "{icon} {percent}%",
"format-icons": ["", "", "", "", "", "", "", "", ""],
"tooltip": false,
"on-scroll-up": "~/.config/waybar/scripts/brightness-control.sh -o i",
"on-scroll-down": "~/.config/waybar/scripts/brightness-control.sh -o d",
"min-length": 6,
"max-length": 6
},
"battery": {
"states": {
"warning": 20,
"critical": 10
},
"format": "{icon} {capacity}%",
"format-icons": ["󰂎", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"],
"format-charging": " {capacity}%",
"tooltip-format": "Discharging: {time}",
"tooltip-format-charging": "Charging: {time}",
"interval": 1,
"min-length": 6,
"max-length": 6
},
"custom/power": {
"format": " ",
"tooltip": false,
// "tooltip-format": "Power Menu",
"on-click": "~/.config/waybar/scripts/power-menu.sh"
},
// <<--< Padding >-->>
"custom/paddw": {
"format": " ",
"tooltip": false
},
"custom/paddc": {
"format": " ",
"tooltip": false
},
// Left Arrows
"custom/left1": {
"format": "",
"tooltip": false
},
"custom/left2": {
"format": "",
"tooltip": false
},
"custom/left3": {
"format": "",
"tooltip": false
},
"custom/left4": {
"format": "",
"tooltip": false
},
"custom/left5": {
"format": "",
"tooltip": false
},
"custom/left6": {
"format": "",
"tooltip": false
},
"custom/left7": {
"format": "",
"tooltip": false
},
"custom/left8": {
"format": "",
"tooltip": false
},
// Right Arrows
"custom/right1": {
"format": "",
"tooltip": false
},
"custom/right2": {
"format": "",
"tooltip": false
},
"custom/right3": {
"format": "",
"tooltip": false
},
"custom/right4": {
"format": "",
"tooltip": false
},
"custom/right5": {
"format": "",
"tooltip": false
},
// Left Inverse
"custom/leftin1": {
"format": "",
"tooltip": false
},
"custom/leftin2": {
"format": "",
"tooltip": false
},
// Right Inverse
"custom/rightin1": {
"format": "",
"tooltip": false
}
}

View File

@@ -0,0 +1,478 @@
{
"layer": "top",
"position": "top",
"mode": "dock",
"reload_style_on_change": true,
"gtk-layer-shell": true,
// <<--< Positions >-->>
"modules-left": [
"custom/ws", // window icon
"custom/left1",
"hyprland/workspaces", // workspaces
"custom/right1",
"custom/paddw",
"hyprland/window" // window title
],
"modules-center": [
"custom/paddc",
"custom/left2",
"custom/temperature", // temperature
"custom/left3",
"memory", // memory
"custom/left4",
"cpu", // cpu
"custom/leftin1",
"custom/left5",
"custom/distro", // distro icon
"custom/right2",
"custom/rightin1",
"idle_inhibitor", // idle inhibitor
"clock#time", // time
"custom/right3",
"clock#date", // date
"custom/right4",
"custom/wifi", // wi-fi
"bluetooth", // bluetooth
"custom/update", // system update
"custom/right5"
],
"modules-right": [
"mpris", // media info
"custom/left6",
"pulseaudio", // output device
"custom/left7",
"backlight", // brightness
"custom/left8",
"battery", // battery
"custom/leftin2",
"custom/power" // power button
],
// <<--< Modules >-->>
"custom/ws": {
"exec": "~/.config/waybar/scripts/current-theme.sh",
"return-type": "json",
"format": " 󰤕 ",
"on-click": "~/.config/waybar/scripts/theme-switcher.sh",
"min-length": 3,
"max-length": 3
},
"hyprland/workspaces": {
"on-scroll-up": "hyprctl dispatch workspace -1",
"on-scroll-down": "hyprctl dispatch workspace +1",
"persistent-workspaces": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": []
}
},
"hyprland/window": {
"format": "{}",
"tooltip": false,
"min-length": 5,
"rewrite": {
// Desktop
"":
"<span foreground='#8aadf4'> </span> Hyprland",
// Terminal
"~": " Terminal",
"zsh": " Terminal",
"kitty": " Terminal",
"tmux(.*)":
"<span foreground='#a6e3a1'> </span> Tmux",
// Browser
"(.*)Mozilla Firefox":
"<span foreground='#ed8796'>󰈹 </span> Firefox",
"(.*) — Mozilla Firefox":
"<span foreground='#ed8796'>󰈹 </span> $1",
"(.*)Zen Browser":
"<span foreground='#f5a97f'>󰺕 </span> Zen Browser",
"(.*) — Zen Browser":
"<span foreground='#f5a97f'>󰺕 </span> $1",
// Development
"(.*) - Visual Studio Code":
"<span foreground='#8aadf4'>󰨞 </span> $1",
"(.*)Visual Studio Code":
"<span foreground='#8aadf4'>󰨞 </span> Visual Studio Code",
"nvim":
"<span foreground='#a6da95'> </span> Neovim",
"nvim (.*)":
"<span foreground='#a6da95'> </span> $1",
"vim":
"<span foreground='#a6da95'> </span> Vim",
"vim (.*)":
"<span foreground='#a6da95'> </span> $1",
// Media
"(.*)Spotify":
"<span foreground='#a6da95'> </span> Spotify",
"(.*)Spotify Premium":
"<span foreground='#a6da95'> </span> Spotify Premium",
"OBS(.*)":
"<span foreground='#a5adcb'> </span> OBS Studio",
"VLC media player":
"<span foreground='#f5a97f'>󰕼 </span> VLC Media Player",
"(.*) - VLC media player":
"<span foreground='#f5a97f'>󰕼 </span> $1",
"(.*) - mpv":
"<span foreground='#c6a0f6'> </span> $1",
"qView": " qView",
"(.*).jpg": " $1.jpg",
"(.*).png": " $1.png",
"(.*).svg": " $1.svg",
// Social
"vesktop":
"<span foreground='#8aadf4'> </span> Discord",
"• Discord(.*)": "Discord$1",
"(.*)Discord(.*)":
"<span foreground='#8aadf4'> </span> $1Discord$2",
// Documents
"ONLYOFFICE Desktop Editors":
"<span foreground='#ed8796'> </span> OnlyOffice Desktop",
"(.*).docx":
"<span foreground='#8aadf4'> </span> $1.docx",
"(.*).xlsx":
"<span foreground='#a6da95'> </span> $1.xlsx",
"(.*).pptx":
"<span foreground='#f5a97f'> </span> $1.pptx",
"(.*).pdf":
"<span foreground='#ed8796'> </span> $1.pdf",
// System
"Authenticate": " Authenticate"
}
},
"custom/temperature": {
"exec": "~/.config/waybar/scripts/cpu-temp.sh",
"return-type": "json",
"format": "{}",
"interval": 5,
"min-length": 8,
"max-length": 8
},
"memory": {
"states": {
"warning": 75,
"critical": 90
},
"format": "󰘚 {percentage}%",
"format-critical": "󰀦 {percentage}%",
"tooltip": false,
// "tooltip-format": "Memory Used: {used:0.1f} GB / {total:0.1f} GB",
"interval": 5,
"min-length": 7,
"max-length": 7
},
"cpu": {
"format": "󰻠 {usage}%",
"tooltip": false,
"interval": 5,
"min-length": 6,
"max-length": 6
},
"custom/distro": {
"format": " ",
"tooltip": false
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "󰈈 ",
"deactivated": "󰈉 "
},
"tooltip-format-activated": "Presentation Mode",
"tooltip-format-deactivated": "Idle Mode",
"start-activated": false
},
"clock#time": {
"format": "{:%H:%M}",
"tooltip": false,
// "tooltip-format": "Standard Time: {:%I:%M %p}",
"min-length": 6,
"max-length": 6
},
"clock#date": {
"format": "󰨳 {:%m-%d}",
"tooltip-format": "<tt>{calendar}</tt>",
"calendar": {
"mode": "month",
"mode-mon-col": 6,
"on-click-right": "mode",
"format": {
"months":
"<span color='#b7bdf8'><b>{}</b></span>",
"weekdays":
"<span color='#a5adcb' font='7'>{}</span>",
"today":
"<span color='#ed8796'><b>{}</b></span>"
}
},
"actions": {
"on-click": "mode",
"on-click-right": "mode"
},
"min-length": 8,
"max-length": 8
},
"custom/wifi": {
"exec": "~/.config/waybar/scripts/wifi-status.sh",
"return-type": "json",
"format": "{}",
"on-click": "~/.config/waybar/scripts/wifi-menu.sh",
"on-click-right": "kitty --title '󰤨 Network Manager TUI' bash -c nmtui",
"interval": 1,
"min-length": 1,
"max-length": 1
},
"bluetooth": {
"format": "󰂰",
"format-disabled": "󰂲",
"format-connected": "󰂱",
"format-connected-battery": "󰂱",
"tooltip-format":
"{num_connections} connected",
"tooltip-format-disabled":
"Bluetooth Disabled",
"tooltip-format-connected":
"{device_enumerate}",
"tooltip-format-enumerate-connected":
"{device_alias}",
"tooltip-format-enumerate-connected-battery":
":: {device_alias}: 󱊣 {device_battery_percentage}%",
"on-click": "~/.config/waybar/scripts/bluetooth-menu.sh",
"on-click-right": "kitty --title '󰂯 Bluetooth TUI' bash -c bluetui",
"interval": 1,
"min-length": 1,
"max-length": 1
},
"custom/update": {
"exec": "~/.config/waybar/scripts/system-update.sh",
"return-type": "json",
"format": "{}",
"on-click": "hyprctl dispatch exec '~/.config/waybar/scripts/system-update.sh up'",
"interval": 30,
"min-length": 1,
"max-length": 1
},
"mpris": {
"format": "{player_icon} {title} - {artist}",
"format-paused": "{status_icon} {title} - {artist}",
"player-icons": {
"default": "󰝚 ",
"spotify": "<span foreground='#a6da95'>󰓇 </span>",
"firefox": "<span foreground='#ed8796'>󰗃 </span>"
},
"status-icons": {
"paused": "<span color='#b7bdf8'>\u200A\u200A󰏤\u2009\u2009</span>"
},
"tooltip-format": "Playing: {title} - {artist}",
"tooltip-format-paused": "Paused: {title} - {artist}",
"min-length": 5,
"max-length": 35
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": "󰝟 {volume}%",
"format-icons": {
"default": ["󰕿", "󰖀", "󰕾"],
"headphone": "󰋋",
"headset": "󰋋"
},
"tooltip-format": "Device: {desc}",
"on-click": "~/.config/waybar/scripts/volume-control.sh -o m",
"on-scroll-up": "~/.config/waybar/scripts/volume-control.sh -o i",
"on-scroll-down": "~/.config/waybar/scripts/volume-control.sh -o d",
"min-length": 6,
"max-length": 6
},
"backlight": {
"format": "{icon} {percent}%",
"format-icons": ["", "", "", "", "", "", "", "", ""],
"tooltip": false,
"on-scroll-up": "~/.config/waybar/scripts/brightness-control.sh -o i",
"on-scroll-down": "~/.config/waybar/scripts/brightness-control.sh -o d",
"min-length": 6,
"max-length": 6
},
"battery": {
"states": {
"warning": 20,
"critical": 10
},
"format": "{icon} {capacity}%",
"format-icons": ["󰂎", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"],
"format-charging": " {capacity}%",
"tooltip-format": "Discharging: {time}",
"tooltip-format-charging": "Charging: {time}",
"interval": 1,
"min-length": 6,
"max-length": 6
},
"custom/power": {
"format": " ",
"tooltip": false,
// "tooltip-format": "Power Menu",
"on-click": "~/.config/waybar/scripts/power-menu.sh"
},
// <<--< Padding >-->>
"custom/paddw": {
"format": " ",
"tooltip": false
},
"custom/paddc": {
"format": " ",
"tooltip": false
},
// Left Arrows
"custom/left1": {
"format": "",
"tooltip": false
},
"custom/left2": {
"format": "",
"tooltip": false
},
"custom/left3": {
"format": "",
"tooltip": false
},
"custom/left4": {
"format": "",
"tooltip": false
},
"custom/left5": {
"format": "",
"tooltip": false
},
"custom/left6": {
"format": "",
"tooltip": false
},
"custom/left7": {
"format": "",
"tooltip": false
},
"custom/left8": {
"format": "",
"tooltip": false
},
// Right Arrows
"custom/right1": {
"format": "",
"tooltip": false
},
"custom/right2": {
"format": "",
"tooltip": false
},
"custom/right3": {
"format": "",
"tooltip": false
},
"custom/right4": {
"format": "",
"tooltip": false
},
"custom/right5": {
"format": "",
"tooltip": false
},
// Left Inverse
"custom/leftin1": {
"format": "",
"tooltip": false
},
"custom/leftin2": {
"format": "",
"tooltip": false
},
// Right Inverse
"custom/rightin1": {
"format": "",
"tooltip": false
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,19 +0,0 @@
{
"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":
}
}

View File

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

View File

@@ -1,38 +0,0 @@
{
"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
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,66 +0,0 @@
#!/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 "$@"

80
waybar/scripts/battery-level.sh Executable file
View File

@@ -0,0 +1,80 @@
#!/usr/bin/env bash
# Original script by Eric Murphy
# https://github.com/ericmurphyxyz/dotfiles/blob/master/.local/bin/battery-alert
#
# Modified by Jesse Mirabel (@sejjy)
# https://github.com/sejjy/mechabar
# This script sends a notification when the battery is full, low, or critical.
# icon theme used: tela-circle-icon-theme-dracula
#
# (see the bottom of the script for more information)
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
# battery levels
WARNING_LEVEL=20
CRITICAL_LEVEL=10
# get the battery state and percentage using upower (waybar dependency)
BAT_PATH=$(upower -e | grep BAT | head -n 1)
BATTERY_STATE=$(upower -i "$BAT_PATH" | awk '/state:/ {print $2}')
BATTERY_LEVEL=$(upower -i "$BAT_PATH" | awk '/percentage:/ {print $2}' | tr -d '%')
# prevent multiple notifications
FILE_FULL=/tmp/battery-full
FILE_WARNING=/tmp/battery-warning
FILE_CRITICAL=/tmp/battery-critical
# remove the files if the battery is no longer in that state
if [ "$BATTERY_STATE" == "discharging" ]; then
rm -f $FILE_FULL
elif [ "$BATTERY_STATE" == "charging" ]; then
rm -f "$FILE_WARNING" "$FILE_CRITICAL"
fi
# if the battery is full and is plugged in
if [ "$BATTERY_LEVEL" -eq 100 ] && [ "$BATTERY_STATE" == "fully-charged" ] && [ ! -f $FILE_FULL ]; then
notify-send -a "state" "Battery Charged (${BATTERY_LEVEL}%)" "You might want to unplug your PC." -i "battery-full" -r 9991
touch $FILE_FULL
# if the battery is low and is discharging
elif [ "$BATTERY_LEVEL" -le $WARNING_LEVEL ] && [ "$BATTERY_STATE" == "discharging" ] && [ ! -f $FILE_WARNING ]; then
notify-send -a "state" "Battery Low (${BATTERY_LEVEL}%)" "You might want to plug in your PC." -u critical -i "battery-caution" -r 9991 -h string:fgcolor:\#fab387 -h string:frcolor:\#fab387
touch $FILE_WARNING
# if the battery is critical and is discharging
elif [ "$BATTERY_LEVEL" -le $CRITICAL_LEVEL ] && [ "$BATTERY_STATE" == "discharging" ] && [ ! -f $FILE_CRITICAL ]; then
notify-send -a "state" "Battery Critical (${BATTERY_LEVEL}%)" "Plug in your PC now." -u critical -i "battery-empty" -r 9991
touch $FILE_CRITICAL
fi
# systemd service
# Add the following to ~/.config/systemd/user/battery-level.service:
# [Unit]
# Description=Battery Level Checker
# After=graphical.target
#
# [Service]
# ExecStart=%h/.config/waybar/scripts/battery-level.sh
# Type=oneshot
# systemd timer
# Add the following to ~/.config/systemd/user/battery-level.timer:
# [Unit]
# Description=Run Battery Level Checker
#
# [Timer]
# OnBootSec=1min
# OnUnitActiveSec=1min
# Unit=battery-level.service
#
# [Install]
# WantedBy=timers.target
# enable the timer by running the following commands:
# systemctl --user daemon-reload
# systemctl --user enable --now battery-level.timer

50
waybar/scripts/battery-state.sh Executable file
View File

@@ -0,0 +1,50 @@
#!/usr/bin/env bash
# Original script by Eric Murphy
# https://github.com/ericmurphyxyz/dotfiles/blob/master/.local/bin/battery-alert
#
# Modified by Jesse Mirabel (@sejjy)
# https://github.com/sejjy/mechabar
# This script sends a notification when the battery is charging or discharging.
# icon theme used: tela-circle-icon-theme-dracula
#
# (see the bottom of the script for more information)
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
# get the battery state from the udev rule
BATTERY_STATE=$1
# get the battery percentage using upower (waybar dependency)
BAT_PATH=$(upower -e | grep BAT | head -n 1)
BATTERY_LEVEL=$(upower -i "$BAT_PATH" | awk '/percentage:/ {print $2}' | tr -d '%')
# set the battery charging state and icon
case "$BATTERY_STATE" in
"charging")
BATTERY_CHARGING="Charging"
BATTERY_ICON="090-charging"
;;
"discharging")
BATTERY_CHARGING="Disharging"
BATTERY_ICON="090"
;;
esac
# send the notification
notify-send -a "state" "Battery ${BATTERY_CHARGING} (${BATTERY_LEVEL}%)" -u normal -i "battery-${BATTERY_ICON}" -r 9991
# udev rule
# Add the following to /etc/udev/rules.d/60-power.rules:
# ACTION=="change", SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="0", ENV{DISPLAY}=":0", RUN+="/usr/bin/su <username> -c '$HOME/.config/waybar/scripts/battery-state.sh discharging'"
# ACTION=="change", SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="1", ENV{DISPLAY}=":0", RUN+="/usr/bin/su <username> -c '$HOME/.config/waybar/scripts/battery-state.sh charging'"
# the number 60 in the udev rule can be changed to any number between 0 and 99.
# the lower the number, the higher the priority.
#
# $USER does not work, so you have to replace "<username>" with your username.
# reload udev rules by running the following command:
# sudo udevadm control --reload-rules

106
waybar/scripts/bluetooth-menu.sh Executable file
View File

@@ -0,0 +1,106 @@
#!/usr/bin/env bash
# Author: Jesse Mirabel (@sejjy)
# GitHub: https://github.com/sejjy/mechabar
# Rofi config
config="$HOME/.config/rofi/bluetooth-menu.rasi"
# Rofi window override
override_disabled="mainbox { children: [ textbox-custom, listview ]; } listview { lines: 1; padding: 6px 6px 8px; }"
get_device_icon() {
local device_mac=$1
device_info=$(bluetoothctl info "$device_mac")
device_icon=$(echo "$device_info" | grep "Icon:" | awk '{print $2}')
case "$device_icon" in
"audio-headphones" | "audio-headset") echo "󰋋 " ;; # Headphones
"video-display" | "computer") echo "󰍹 " ;; # Monitor
"audio-input-microphone") echo "󰍬 " ;; # Microphone
"input-keyboard") echo "󰌌 " ;; # Keyboard
"audio-speakers") echo "󰓃 " ;; # Speakers
"input-mouse") echo "󰍽 " ;; # Mouse
"phone") echo "󰏲 " ;; # Phone
*)
echo "󰂱 " # Default
;;
esac
}
while true; do
# Get list of paired devices
bluetooth_devices=$(bluetoothctl devices | while read -r line; do
device_mac=$(echo "$line" | awk '{print $2}')
device_name=$(echo "$line" | awk '{$1=$2=""; print substr($0, 3)}')
icon=$(get_device_icon "$device_mac")
echo "$icon $device_name"
done)
options=$(
echo "󰏌 Scan for devices"
echo "󰂲 Disable Bluetooth"
echo "$bluetooth_devices"
)
option="󰂯 Enable Bluetooth"
# Get Bluetooth status
bluetooth_status=$(bluetoothctl show | grep "Powered:" | awk '{print $2}')
if [[ "$bluetooth_status" == "yes" ]]; then
selected_option=$(echo -e "$options" | rofi -dmenu -i -selected-row 1 -config "${config}" -p " " || pkill -x rofi)
else
selected_option=$(echo -e "$option" | rofi -dmenu -i -selected-row 1 -config "${config}" -theme-str "${override_disabled}" -p " " || pkill -x rofi)
fi
# Exit if no option is selected
if [ -z "$selected_option" ]; then
exit
fi
# Actions based on selected option
case "$selected_option" in
*"Enable Bluetooth")
notify-send "Bluetooth Enabled" -i "package-installed-outdated"
rfkill unblock bluetooth
bluetoothctl power on
sleep 1
;;
*"Disable Bluetooth")
notify-send "Bluetooth Disabled" -i "package-broken"
rfkill block bluetooth
bluetoothctl power off
exit
;;
*"Scan for devices")
notify-send "Press '?' to show help." -i "package-installed-outdated"
kitty --title '󰂱 Bluetooth TUI' bash -c "bluetui" # Launch bluetui
;;
*)
# Extract device name
device_name="${selected_option#* }"
device_name="${device_name## }"
if [[ -n "$device_name" ]]; then
# Get MAC address
device_mac=$(bluetoothctl devices | grep "$device_name" | awk '{print $2}')
# Trust and pair device
bluetoothctl trust "$device_mac" >/dev/null 2>&1
bluetoothctl pair "$device_mac" >/dev/null 2>&1
# Connect to device
bluetoothctl connect "$device_mac" &
sleep 3
connection_status=$(bluetoothctl info "$device_mac" | grep "Connected:" | awk '{print $2}')
if [[ "$connection_status" == "yes" ]]; then
notify-send "Connected to \"$device_name\"." -i "package-installed-outdated"
exit
else
notify-send "Failed to connect to \"$device_name\"." -i "package-broken"
fi
fi
;;
esac
done

View File

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

View File

@@ -0,0 +1,92 @@
#!/usr/bin/env bash
# Print error message for invalid arguments
print_error() {
cat <<"EOF"
Usage: ./brightnesscontrol.sh <action>
Valid actions are:
i -- <i>ncrease brightness [+2%]
d -- <d>ecrease brightness [-2%]
EOF
}
# Send a notification with brightness info
send_notification() {
brightness=$(brightnessctl info | grep -oP "(?<=\()\d+(?=%)")
notify-send -a "state" -r 91190 -i "gpm-brightness-lcd" -h int:value:"$brightness" "Brightness: ${brightness}%" -u low
}
# Get the current brightness percentage and device name
get_brightness() {
brightness=$(brightnessctl -m | grep -o '[0-9]\+%' | head -c-2)
device=$(brightnessctl -m | head -n 1 | awk -F',' '{print $1}' | sed 's/_/ /g; s/\<./\U&/g') # Get device name
current_brightness=$(brightnessctl -m | head -n 1 | awk -F',' '{print $3}') # Get current brightness
max_brightness=$(brightnessctl -m | head -n 1 | awk -F',' '{print $5}') # Get max brightness
}
get_brightness
# Handle options
while getopts o: opt; do
case "${opt}" in
o)
case $OPTARG in
i) # Increase brightness
if [[ $brightness -lt 10 ]]; then
brightnessctl set +1%
else
brightnessctl set +2%
fi
send_notification
;;
d) # Decrease brightness
if [[ $brightness -le 1 ]]; then
brightnessctl set 1%
elif [[ $brightness -le 10 ]]; then
brightnessctl set 1%-
else
brightnessctl set 2%-
fi
send_notification
;;
*)
print_error
;;
esac
;;
*)
print_error
;;
esac
done
# Determine the icon based on brightness level
get_icon() {
if ((brightness <= 5)); then
icon=""
elif ((brightness <= 15)); then
icon=""
elif ((brightness <= 30)); then
icon=""
elif ((brightness <= 45)); then
icon=""
elif ((brightness <= 55)); then
icon=""
elif ((brightness <= 65)); then
icon=""
elif ((brightness <= 80)); then
icon=""
elif ((brightness <= 95)); then
icon=""
else
icon=""
fi
}
# Backlight module and tooltip
get_icon
module="${icon} ${brightness}%"
tooltip="Device Name: ${device}"
tooltip+="\nBrightness: ${current_brightness} / ${max_brightness}"
echo "{\"text\": \"${module}\", \"tooltip\": \"${tooltip}\"}"

67
waybar/scripts/cpu-temp.sh Executable file
View File

@@ -0,0 +1,67 @@
#!/usr/bin/env bash
model=$(awk -F ': ' '/model name/{print $2}' /proc/cpuinfo | head -n 1 | sed 's/@.*//; s/ *\((R)\|(TM)\)//g; s/^[ \t]*//; s/[ \t]*$//')
# get CPU clock speeds
get_cpu_frequency() {
freqlist=$(awk '/cpu MHz/ {print $4}' /proc/cpuinfo)
maxfreq=$(sed 's/...$//' /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq)
if [ -z "$freqlist" ] || [ -z "$maxfreq" ]; then
echo "--"
return
fi
average_freq=$(echo "$freqlist" | tr ' ' '\n' | awk "{sum+=\$1} END {printf \"%.0f/%s MHz\", sum/NR, $maxfreq}")
echo "$average_freq"
}
# get CPU temp
get_cpu_temperature() {
temp=$(sensors | awk '/Package id 0/ {print $4}' | awk -F '[+.]' '{print $2}')
if [[ -z "$temp" ]]; then
temp=$(sensors | awk '/Tctl/ {print $2}' | tr -d '+°C')
fi
if [[ -z "$temp" ]]; then
temp="--"
temp_f="--"
else
temp=${temp%.*}
temp_f=$(awk "BEGIN {printf \"%.1f\", ($temp * 9 / 5) + 32}")
fi
# Celsius and Fahrenheit
echo "${temp:---} ${temp_f:---}"
}
get_temperature_icon() {
temp_value=$1
if [ "$temp_value" = "--" ]; then
icon="󱔱" # none
elif [ "$temp_value" -ge 80 ]; then
icon="󰸁" # high
elif [ "$temp_value" -ge 70 ]; then
icon="󱃂" # medium
elif [ "$temp_value" -ge 60 ]; then
icon="󰔏" # normal
else
icon="󱃃" # low
fi
echo "$icon"
}
cpu_frequency=$(get_cpu_frequency)
read -r temp_info < <(get_cpu_temperature)
temp=$(echo "$temp_info" | awk '{print $1}')
temp_f=$(echo "$temp_info" | awk '{print $2}')
thermo_icon=$(get_temperature_icon "$temp")
# high temp warning
if [ "$temp" == "--" ] || [ "$temp" -ge 80 ]; then
text_output="<span color='#f38ba8'>${thermo_icon} ${temp}°C</span>"
else
text_output="${thermo_icon} ${temp}°C"
fi
tooltip=":: ${model}\n"
tooltip+="Clock Speed: ${cpu_frequency}\nTemperature: ${temp_f}°F"
# module and tooltip
echo "{\"text\": \"$text_output\", \"tooltip\": \"$tooltip\"}"

24
waybar/scripts/current-theme.sh Executable file
View File

@@ -0,0 +1,24 @@
#!/usr/bin/env bash
CURRENT_THEME_FILE="$HOME/.config/waybar/themes/current-theme"
# Get the current theme
current_theme=$(cat "$CURRENT_THEME_FILE" 2>/dev/null || echo "")
current_theme_name="Default"
# Get the theme name
if [[ -n "$current_theme" ]]; then
current_theme_name=$(basename "$current_theme" .css)
# Convert "theme-name" to "Theme Name"
formatted_theme_name="${current_theme_name//-/ }"
formatted_theme_name=$(echo "$formatted_theme_name" | awk '{for(i=1;i<=NF;i++) $i=toupper(substr($i,1,1)) substr($i,2)}1')
else
formatted_theme_name="Default"
fi
tooltip="Theme: $formatted_theme_name"
tooltip+="\nStyle: Classic" # hard-coded for now
# Tooltip
echo "{\"tooltip\": \"$tooltip\"}"

View File

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

View File

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

View File

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

View File

@@ -1,82 +1,107 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# # Check release
# Check for available updates and optionally upgrade packages on Arch Linux. if [ ! -f /etc/arch-release ]; then
# exit 0
# Requirements:
# - checkupdates (pacman-contrib)
# - notify-send (libnotify)
# - optional: an AUR helper (aura, paru, pikaur, trizen, yay)
#
# Author: Jesse Mirabel <sejjymvm@gmail.com>
# Created: August 16, 2025
# License: MIT
GRN='\033[1;32m'
BLU='\033[1;34m'
RST='\033[0m'
TIMEOUT=5
check-updates() {
repo=$(timeout $TIMEOUT checkupdates 2> /dev/null | wc -l)
if [[ -n $helper ]]; then
aur=$(timeout $TIMEOUT "$helper" -Quaq 2> /dev/null | wc -l)
fi
}
update-packages() {
printf '\n%bUpdating pacman packages...%b\n' "$BLU" "$RST"
sudo pacman -Syu
printf '\n%bUpdating AUR packages...%b\n' "$BLU" "$RST"
"$helper" -Syu
# use signal to update the module
pkill -RTMIN+1 waybar
notify-send 'Update Complete' -i 'package-install'
printf '\n%bUpdate Complete!%b\n' "$GRN" "$RST"
read -rs -n 1 -p 'Press any key to exit...'
}
display-module() {
local tooltip="Official: $repo"
if [[ -n $helper ]]; then
tooltip+="\nAUR($helper): $aur"
fi fi
local total=$((repo + aur)) pkg_installed() {
local pkg=$1
if ((total == 0)); then if pacman -Qi "${pkg}" &>/dev/null; then
echo "{ \"text\": \"󰸟\", \"tooltip\": \"No updates available\" }" return 0
elif command -v "${pkg}" &>/dev/null; then
return 0
else else
echo "{ \"text\": \"\", \"tooltip\": \"$tooltip\" }" return 1
fi fi
} }
main() { get_aur_helper() {
local arg=$1 if command -v yay &>/dev/null; then
local helpers=(aura paru pikaur trizen yay) aur_helper="yay"
local bin elif command -v paru &>/dev/null; then
aur_helper="paru"
bin=$(command -v "${helpers[@]}" | head -n 1) else
helper=${bin##*/} aur_helper=""
repo=0 fi
aur=0
case $arg in
'module')
check-updates
display-module
;;
*)
printf '%bChecking for updates...%b' "$BLU" "$RST"
check-updates
update-packages
;;
esac
} }
main "$@" get_aur_helper
# Trigger upgrade
if [ "$1" == "up" ]; then
trap 'pkill -RTMIN+20 waybar' EXIT
command="
echo 'Starting system update...'
$0 upgrade
if [ -n '$aur_helper' ]; then
echo 'Running AUR update with $aur_helper...'
$aur_helper -Syu
else
echo 'Running official repository update...'
sudo pacman -Syu
fi
if command -v flatpak &>/dev/null; then
echo 'Running Flatpak update...'
flatpak update -y
fi
echo ''
echo 'Update complete! Press Enter to close...'
read -r
"
ghostty -e bash -c "${command}"
exit 0
fi
# Check for official repository updates with timeout
official_updates=$(
(timeout 10 bash -c 'while pgrep -x checkupdates >/dev/null; do sleep 1; done') 2>/dev/null
checkupdates 2>/dev/null | wc -l
)
official_updates=$((official_updates + 0))
# Check for AUR updates with timeout
if [ -n "$aur_helper" ]; then
aur_updates=$(timeout 10 $aur_helper -Qua 2>/dev/null | wc -l)
aur_updates=$((aur_updates + 0))
else
aur_updates=0
fi
# Check for Flatpak updates with timeout
if pkg_installed flatpak; then
flatpak_updates=$(timeout 10 flatpak remote-ls --updates 2>/dev/null | wc -l)
flatpak_updates=$((flatpak_updates + 0))
else
flatpak_updates=0
fi
# Calculate total available updates
total_updates=$((official_updates + aur_updates + flatpak_updates))
# Handle upgrade info display
if [ "${1}" == "upgrade" ]; then
if [ "$aur_helper" == "yay" ]; then
printf "Official: %s\nAUR ($aur_helper): %s\nFlatpak: %s\n\n" "$official_updates" "$aur_updates" "$flatpak_updates"
elif [ "$aur_helper" == "paru" ]; then
printf "Official: %s\nAUR ($aur_helper): %s\nFlatpak: %s\n\n" "$official_updates" "$aur_updates" "$flatpak_updates"
else
printf "Official: %s\nFlatpak: %s\n\n" "$official_updates" "$flatpak_updates"
fi
exit 0
fi
# Create tooltip text
if [ "$aur_helper" == "yay" ]; then
tooltip="Official: $official_updates\nAUR ($aur_helper): $aur_updates\nFlatpak: $flatpak_updates"
elif [ "$aur_helper" == "paru" ]; then
tooltip="Official: $official_updates\nAUR ($aur_helper): $aur_updates\nFlatpak: $flatpak_updates"
else
tooltip="Official: $official_updates\nFlatpak: $flatpak_updates"
fi
# Output compact JSON for Waybar
if [ $total_updates -eq 0 ]; then
echo '{"text":"󰸟","tooltip":"Packages are up to date"}'
else
printf '{"text":" %s","tooltip":"%s"}\n' "$total_updates" "$tooltip"
fi

View File

@@ -0,0 +1,54 @@
#!/usr/bin/env bash
WAYBAR_CSS_DIR="$HOME/.config/waybar/themes/css"
WAYBAR_CSS_FILE="$HOME/.config/waybar/theme.css"
WAYBAR_JSONC_DIR="$HOME/.config/waybar/themes/jsonc"
WAYBAR_JSONC_FILE="$HOME/.config/waybar/config.jsonc"
ROFI_THEMES_DIR="$HOME/.config/rofi/themes"
ROFI_THEME_FILE="$HOME/.config/rofi/theme.rasi"
CURRENT_THEME_FILE="$HOME/.config/waybar/themes/current-theme"
for dir in "$WAYBAR_CSS_DIR" "$WAYBAR_JSONC_DIR" "$ROFI_THEMES_DIR"; do
[[ ! -d "$dir" ]] && echo "Error: $dir not found" && exit 1
done
# Get all themes
waybar_css=("$WAYBAR_CSS_DIR"/*.css)
waybar_jsonc=("$WAYBAR_JSONC_DIR"/*.jsonc)
rofi_themes=("$ROFI_THEMES_DIR"/*.rasi)
if [[ ${#waybar_css[@]} -eq 0 || ${#waybar_jsonc[@]} -eq 0 || ${#rofi_themes[@]} -eq 0 ]]; then
echo "Error: No themes found in one of the directories"
exit 1
fi
# Get the current theme
current_theme=$(cat "$CURRENT_THEME_FILE" 2>/dev/null || echo "")
# Find the index of the current theme
next_theme_index=0
for i in "${!waybar_css[@]}"; do
[[ "${waybar_css[$i]}" == "$current_theme" ]] && next_theme_index=$(((i + 1) % ${#waybar_css[@]})) && break
done
# Get the new theme
new_waybar_css="${waybar_css[$next_theme_index]}"
new_waybar_jsonc="${waybar_jsonc[$next_theme_index]}"
new_rofi_theme="${rofi_themes[$next_theme_index]}"
# Save the new theme
echo "$new_waybar_css" >"$CURRENT_THEME_FILE"
declare -A theme_files=(
["$new_waybar_css"]="$WAYBAR_CSS_FILE"
["$new_waybar_jsonc"]="$WAYBAR_JSONC_FILE"
["$new_rofi_theme"]="$ROFI_THEME_FILE"
)
for src in "${!theme_files[@]}"; do
cp "$src" "${theme_files[$src]}"
done
# Restart Waybar to apply changes
killall waybar || true
nohup waybar --config "$HOME/.config/waybar/config.jsonc" --style "$HOME/.config/waybar/style.css" >/dev/null 2>&1 &

123
waybar/scripts/volume-control.sh Executable file
View File

@@ -0,0 +1,123 @@
#!/usr/bin/env bash
# Define functions
print_error() {
cat <<"EOF"
Usage: ./volumecontrol.sh -[device] <actions>
...valid devices are...
i -- input device
o -- output device
p -- player application
...valid actions are...
i -- increase volume [+2]
d -- decrease volume [-2]
m -- mute [x]
EOF
exit 1
}
icon() {
vol=$(pactl get-sink-volume @DEFAULT_SINK@ | awk '{print $5}' | sed 's/%//')
mute=$(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print $2}')
if [ "$mute" = "yes" ] || [ "$vol" -eq 0 ]; then
icon="volume-level-muted"
elif [ "$vol" -lt 33 ]; then
icon="volume-level-low"
elif [ "$vol" -lt 66 ]; then
icon="volume-level-medium"
else
icon="volume-level-high"
fi
}
send_notification() {
icon
notify-send -a "state" -r 91190 -i "$icon" -h int:value:"$vol" "Volume: ${vol}%" -u low
}
notify_mute() {
mute=$(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print $2}')
if [ "$mute" = "yes" ]; then
notify-send -a "state" -r 91190 -i "volume-level-muted" "Volume: Muted" -u low
else
icon
notify-send -a "state" -r 91190 -i "$icon" "Volume: Unmuted" -u low
fi
}
action_volume() {
case "${1}" in
i)
# Increase volume if below 100
current_vol=$(pactl get-sink-volume @DEFAULT_SINK@ | awk '{print $5}' | sed 's/%//')
if [ "$current_vol" -lt 100 ]; then
new_vol=$((current_vol + 2))
[ "$new_vol" -gt 100 ] && new_vol=100
pactl set-sink-volume @DEFAULT_SINK@ "${new_vol}%"
fi
;;
d)
# Decrease volume if above 0
current_vol=$(pactl get-sink-volume @DEFAULT_SINK@ | awk '{print $5}' | sed 's/%//')
new_vol=$((current_vol - 2))
[ "$new_vol" -lt 0 ] && new_vol=0
pactl set-sink-volume @DEFAULT_SINK@ "${new_vol}%"
;;
esac
}
select_output() {
if [ "$@" ]; then
desc="$*"
device=$(pactl list sinks | grep -C2 -F "Description: $desc" | grep Name | cut -d: -f2 | xargs)
if pactl set-default-sink "$device"; then
notify-send -r 91190 "Activated: $desc"
else
notify-send -r 91190 "Error activating $desc"
fi
else
pactl list sinks | grep -ie "Description:" | awk -F ': ' '{print $2}' | sort
fi
}
# Evaluate device option
while getopts iops: DeviceOpt; do
case "${DeviceOpt}" in
i)
nsink=$(pactl list sources short | awk '{print $2}')
[ -z "${nsink}" ] && echo "ERROR: Input device not found..." && exit 0
srce="--default-source"
;;
o)
nsink=$(pactl list sinks short | awk '{print $2}')
[ -z "${nsink}" ] && echo "ERROR: Output device not found..." && exit 0
srce=""
;;
p)
nsink=$(playerctl --list-all | grep -w "${OPTARG}")
[ -z "${nsink}" ] && echo "ERROR: Player ${OPTARG} not active..." && exit 0
# shellcheck disable=SC2034
srce="${nsink}"
;;
s)
# Select an output device
select_output "$@"
exit
;;
*) print_error ;;
esac
done
# Set default variables
shift $((OPTIND - 1))
# Execute action
case "${1}" in
i) action_volume i ;;
d) action_volume d ;;
m) pactl set-sink-mute @DEFAULT_SINK@ toggle && notify_mute && exit 0 ;;
*) print_error ;;
esac
send_notification

View File

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

126
waybar/scripts/wifi-menu.sh Executable file
View File

@@ -0,0 +1,126 @@
#!/usr/bin/env bash
# Author: Jesse Mirabel (@sejjy)
# GitHub: https://github.com/sejjy/mechabar
# Rofi config
config="$HOME/.config/rofi/wifi-menu.rasi"
options=$(
echo " Manual Entry"
echo "󰤮 Disable Wi-Fi"
)
option_disabled="󰤥 Enable Wi-Fi"
# Rofi window override
override_ssid="entry { placeholder: \"Enter SSID\"; } listview { lines: 0; padding: 20px 6px; }"
override_password="entry { placeholder: \"Enter password\"; } listview { lines: 0; padding: 20px 6px; }"
override_disabled="mainbox { children: [ textbox-custom, listview ]; } listview { lines: 1; padding: 6px 6px 8px; }"
# Prompt for password
get_password() {
rofi -dmenu -password -config "${config}" -theme-str "${override_password}" -p " " || pkill -x rofi
}
while true; do
wifi_list() {
nmcli --fields "SECURITY,SSID" device wifi list |
tail -n +2 | # Skip the header line from nmcli output
sed 's/ */ /g' | # Replace multiple spaces with a single space
sed -E "s/WPA*.?\S/󰤪 /g" | # Replace 'WPA*' with a Wi-Fi lock icon
sed "s/^--/󰤨 /g" | # Replace '--' (open networks) with an open Wi-Fi icon
sed "s/󰤪 󰤪/󰤪/g" | # Remove duplicate Wi-Fi lock icons
sed "/--/d" | # Remove lines containing '--' (empty SSIDs)
awk '!seen[$0]++' # Filter out duplicate SSIDs
}
# Get Wi-Fi status
wifi_status=$(nmcli -fields WIFI g)
case "$wifi_status" in
*"enabled"*)
selected_option=$(echo "$options"$'\n'"$(wifi_list)" |
rofi -dmenu -i -selected-row 1 -config "${config}" -p " " || pkill -x rofi)
;;
*"disabled"*)
selected_option=$(echo "$option_disabled" |
rofi -dmenu -i -config "${config}" -theme-str "${override_disabled}" || pkill -x rofi)
;;
esac
# Extract selected SSID
read -r selected_ssid <<<"${selected_option:3}"
# Actions based on selected option
case "$selected_option" in
"")
exit
;;
*"Enable Wi-Fi")
notify-send "Scanning for networks..." -i "package-installed-outdated"
nmcli radio wifi on
nmcli device wifi rescan
sleep 3
;;
*"Disable Wi-Fi")
notify-send "Wi-Fi Disabled" -i "package-broken"
nmcli radio wifi off
exit
;;
*"Manual Entry")
# Prompt for SSID
manual_ssid=$(rofi -dmenu -config "${config}" -theme-str "${override_ssid}" -p " " || pkill -x rofi)
# Exit if no option is selected
if [ -z "$manual_ssid" ]; then
exit
fi
# Prompt for Wi-Fi password
wifi_password=$(get_password)
if [ -z "$wifi_password" ]; then
# Without password
if nmcli device wifi connect "$manual_ssid" | grep -q "successfully"; then
notify-send "Connected to \"$manual_ssid\"." -i "package-installed-outdated"
exit
else
notify-send "Failed to connect to \"$manual_ssid\"." -i "package-broken"
fi
else
# With password
if nmcli device wifi connect "$manual_ssid" password "$wifi_password" | grep -q "successfully"; then
notify-send "Connected to \"$manual_ssid\"." -i "package-installed-outdated"
exit
else
notify-send "Failed to connect to \"$manual_ssid\"." -i "package-broken"
fi
fi
;;
*)
# Get saved connections
saved_connections=$(nmcli -g NAME connection)
if echo "$saved_connections" | grep -qw "$selected_ssid"; then
if nmcli connection up id "$selected_ssid" | grep -q "successfully"; then
notify-send "Connected to \"$selected_ssid\"." -i "package-installed-outdated"
exit
else
notify-send "Failed to connect to \"$selected_ssid\"." -i "package-broken"
fi
else
# Handle secure network connection
if [[ "$selected_option" =~ ^"󰤪" ]]; then
wifi_password=$(get_password)
fi
if nmcli device wifi connect "$selected_ssid" password "$wifi_password" | grep -q "successfully"; then
notify-send "Connected to \"$selected_ssid\"." -i "package-installed-outdated"
exit
else
notify-send "Failed to connect to \"$selected_ssid\"." -i "package-broken"
fi
fi
;;
esac
done

84
waybar/scripts/wifi-status.sh Executable file
View File

@@ -0,0 +1,84 @@
#!/usr/bin/env bash
if ! command -v nmcli &>/dev/null; then
echo "{\"text\": \"󰤫\", \"tooltip\": \"nmcli utility is missing\"}"
exit 1
fi
# Check if Wi-Fi is enabled
wifi_status=$(nmcli radio wifi 2>/dev/null)
if [ "$wifi_status" = "disabled" ]; then
echo "{\"text\": \"󰤮\", \"tooltip\": \"Wi-Fi Disabled\"}"
exit 0
fi
# Initialize variables with defaults
essid="No Connection"
signal=0
tooltip="No Wi-Fi Connection"
ip_address="Not Connected"
security="None"
chan="N/A"
wifi_info=$(nmcli -t -f active,ssid,signal,security dev wifi 2>/dev/null | grep "^yes" | head -1)
if [ -n "$wifi_info" ]; then
# Parse the wifi info with error handling
essid=$(echo "$wifi_info" | awk -F: '{print $2}')
signal=$(echo "$wifi_info" | awk -F: '{print $3}')
security=$(echo "$wifi_info" | awk -F: '{print $4}')
# Set defaults if parsing failed
[ -z "$essid" ] && essid="Unknown"
[ -z "$signal" ] && signal=0
[ -z "$security" ] && security="None"
# Get active WiFi device, ignoring WireGuard interfaces
active_device=$(nmcli -t -f DEVICE,TYPE,STATE device status 2>/dev/null |
grep -E 'wifi:connected$' |
grep -v -E '^(wg0|wg1|wg2):' |
awk -F: '{print $1}' | head -1)
if [ -n "$active_device" ]; then
# Get IP address with error handling
ip_output=$(nmcli -e no -g ip4.address device show "$active_device" 2>/dev/null | head -1)
[ -n "$ip_output" ] && ip_address="$ip_output"
# Get channel and frequency info
wifi_details=$(nmcli -e no -t -f active,bssid,chan,freq device wifi 2>/dev/null | grep "^yes" | head -1)
if [ -n "$wifi_details" ]; then
chan_temp=$(echo "$wifi_details" | awk -F: '{print $8}')
freq_temp=$(echo "$wifi_details" | awk -F: '{print $9}')
[ -n "$chan_temp" ] && [ -n "$freq_temp" ] && chan="$chan_temp ($freq_temp)"
fi
# Build tooltip with proper formatting
tooltip="SSID: ${essid}"
tooltip+="\\nIP Address: ${ip_address}"
tooltip+="\\nSecurity: ${security}"
tooltip+="\\nChannel: ${chan}"
tooltip+="\\nStrength: ${signal}/100"
else
tooltip="Connected to: ${essid}\\nStrength: ${signal}/100\\nSecurity: ${security}"
fi
fi
# Ensure signal is a number for comparison
signal=$((signal + 0))
# Determine Wi-Fi icon based on signal strength
if [ "$signal" -ge 80 ]; then
icon="󰤨" # Strong signal
elif [ "$signal" -ge 60 ]; then
icon="󰤥" # Good signal
elif [ "$signal" -ge 40 ]; then
icon="󰤢" # Weak signal
elif [ "$signal" -ge 20 ]; then
icon="󰤟" # Very weak signal
else
icon="󰤯" # No signal
fi
# Output JSON with proper escaping
echo "{\"text\": \"${icon}\", \"tooltip\": \"${tooltip}\"}"

View File

@@ -1,12 +1,476 @@
/* ignore GTK theme */ @import "theme.css";
* { * {
all: initial; min-height: 0;
border: none;
margin: 0;
padding: 0;
} }
@import "theme.css"; /* ----------------------------------------------------- MAIN BACKGROUND --- */
@import "styles/fonts.css";
@import "styles/global.css"; window#waybar>box {
@import "styles/modules-center.css"; background: @main-bg;
@import "styles/modules-left.css"; margin: 2px;
@import "styles/modules-right.css"; }
@import "styles/states.css";
/* --------------------------------------------------------- DROP SHADOW --- */
window#waybar {
background: @shadow;
}
/* ------------------------------------------------------------ TOOLTIPS --- */
tooltip {
background: @main-bg;
border: 1.5px solid @main-br;
border-radius: 8px;
}
tooltip label {
color: @main-fg;
margin: -1.5px 3px;
}
/* ---------------------------------------- WORKSPACE BUTTONS and LABELS --- */
#workspaces button {
color: @module-fg;
border-radius: 8px;
box-shadow: none;
margin: 2px 0;
padding: 0 2px;
transition: none;
}
#workspaces button:hover {
color: @hover-fg;
background: @hover-bg;
text-shadow: none;
}
#workspaces button.active {
color: @active-fg;
background: @active-bg;
text-shadow: 0 0 2px rgba(0, 0, 0, 0.6);
box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.4);
margin: 2px;
padding: 0 6px;
}
/* ------------------------------------------------------------- GENERAL --- */
#custom-ws,
#workspaces,
#window,
#custom-temperature,
#memory,
#cpu,
#idle_inhibitor,
#clock,
#custom-wifi,
#custom-wireguard,
#bluetooth,
#custom-update,
#mpris,
#pulseaudio,
#backlight,
#battery,
#custom-power {
opacity: 1;
color: @module-fg;
padding: 0 4px;
}
#custom-left1,
#custom-left2,
#custom-left3,
#custom-left4,
#custom-left5,
#custom-left6,
#custom-left7,
#custom-left8 {
margin-bottom: 0;
text-shadow: -2px 0 2px rgba(0, 0, 0, 0.5);
}
#custom-right1,
#custom-right2,
#custom-right3,
#custom-right4,
#custom-right5 {
margin-bottom: 0;
padding-right: 3px;
text-shadow: 2px 0 2px rgba(0, 0, 0, 0.5);
}
/* ------------------------------------------------------------- MODULES --- */
/* --------------------------------------------------------- window icon --- */
#custom-ws {
background: @main-bg;
}
#custom-ws:hover {
color: @hover-fg;
}
/* ---------------------------------------------------------- workspaces --- */
#custom-left1 {
color: @workspaces;
background: @main-bg;
margin-bottom: 0;
padding-left: 2px;
}
#workspaces {
background: @workspaces;
}
#custom-right1 {
color: @workspaces;
background: @main-bg;
text-shadow: 3px 0 2px rgba(0, 0, 0, 0.4);
margin-bottom: 0;
}
/* --------------------------------------------------------- temperature --- */
#custom-paddc {
padding-right: 22px;
}
#custom-left2 {
color: @temperature;
background: @main-bg;
padding-left: 3px;
}
#custom-temperature {
background: @temperature;
padding: 0 0 0 1px;
}
/* -------------------------------------------------------------- memory --- */
#custom-left3 {
color: @memory;
background: @temperature;
padding-left: 3px;
}
#memory {
background: @memory;
padding: 0 0 0 1px;
}
#memory.warning {
color: @warning;
}
#memory.critical {
color: @critical;
}
/* ----------------------------------------------------------------- cpu --- */
#custom-left4 {
color: @cpu;
background: @memory;
padding-left: 3px;
}
#cpu {
background: @cpu;
}
#custom-leftin1 {
color: @cpu;
margin-bottom: -1px;
}
/* --------------------------------------------------------- distro icon --- */
#custom-left5 {
color: @distro-bg;
background: @main-bg;
text-shadow: none;
margin-bottom: -2px;
padding-left: 3px;
}
#custom-distro {
color: @distro-fg;
background: @distro-bg;
margin: 0 -1px -2px 0;
padding: 0 0 0 3px;
text-shadow: 0 0 1.5px rgba(0, 0, 0, 1);
}
#custom-right2 {
color: @distro-bg;
background: @main-bg;
text-shadow: none;
margin-bottom: -2px;
}
/* ---------------------------------------------------------------- time --- */
#custom-rightin1 {
color: @time;
margin-bottom: -1px;
}
#idle_inhibitor {
background: @time;
padding: 0 0 0 7px;
}
#idle_inhibitor:hover {
color: @hover-fg;
}
#clock.time {
background: @time;
margin-left: -2px;
padding: 0 3px 0 0;
}
#custom-right3 {
color: @time;
background: @date;
}
/* ---------------------------------------------------------------- date --- */
#clock.date {
background: @date;
}
#clock.date:hover {
color: @hover-fg;
}
#custom-right4 {
color: @date;
background: @tray;
}
/* ---------------------------------------------------------------- tray --- */
#custom-wifi {
background: @tray;
padding: 0 8px 0 5px;
}
#custom-wifi:hover {
color: @hover-fg;
}
#custom-wireguard {
background: @tray;
padding: 0 8px 0 5px;
}
#custom-wireguard:hover {
color: @hover-fg;
}
#bluetooth {
background: @tray;
padding-right: 5px;
}
#bluetooth:hover {
color: @hover-fg;
}
#custom-update {
padding-right: 8px;
background: @tray;
}
#custom-update:hover {
color: @hover-fg;
}
#custom-right5 {
color: @tray;
background: @main-bg;
}
/* ---------------------------------------------------------- media info --- */
#mpris {
background: @main-bg;
padding: 0 8px 0;
}
#mpris:hover {
color: @hover-fg;
}
/*
output device
*/
#custom-left6 {
color: @pulseaudio;
background: @main-bg;
padding-left: 3px;
}
#pulseaudio {
background: @pulseaudio;
}
#pulseaudio:hover {
color: @hover-fg;
}
/* ---------------------------------------------------------- brightness --- */
#custom-left7 {
color: @backlight;
background: @pulseaudio;
padding-left: 2px;
}
#backlight {
background: @backlight;
}
/* ------------------------------------------------------------- battery --- */
#custom-left8 {
color: @battery;
background: @backlight;
padding-left: 2px;
}
#battery {
color: @module-fg;
background: @battery;
}
#battery.warning {
color: @warning;
}
#battery.critical {
color: @critical;
}
#battery.charging {
color: @charging;
}
/* -------------------------------------------------------- power button --- */
#custom-leftin2 {
color: @battery;
background: @main-bg;
margin-bottom: -1px;
}
#custom-power {
color: @main-bg;
background: @power;
text-shadow: 0 0 2px rgba(0, 0, 0, 0.6);
box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.6);
border-radius: 10px;
margin: 2px 4px 2px 0;
padding: 0 6px 0 9px;
}
#custom-power:hover {
color: @hover-fg;
background: @hover-bg;
text-shadow: none;
box-shadow: none;
}
/* ---------------------------------------------------------- FONT SIZES --- */
/*
NOTE: Be careful when changing font sizes, as they
can affect alignment.
Try adjusting whole numbers first, then refine with
decimals.
If you increase or decrease a value, make the same
change to all properties in this section to keep
the layout consistent.
*/
* {
font-family: "JetBrainsMono Nerd Font";
font-size: 10px;
font-weight: bold;
}
tooltip label,
#window label,
#mpris {
font-weight: normal;
}
/* ----------------------------------------------- left and right arrows --- */
#custom-left1,
#custom-left2,
#custom-left3,
#custom-left4,
#custom-left5,
#custom-left6,
#custom-left7,
#custom-left8,
#custom-right1,
#custom-right2,
#custom-right3,
#custom-right4,
#custom-right5 {
font-size: 14.68px;
}
/* ---------------------------------------------- left and right inverse --- */
#custom-leftin1,
#custom-leftin2,
#custom-rightin1 {
font-size: 15.5px;
}
/* -------------------------------------------------------------- distro --- */
#custom-distro {
font-size: 14.6px;
}
#custom-left5,
#custom-right2 {
font-size: 15.68px;
}
/*
Adjust these properties as well to keep the design
consistent.
*/
#workspaces button {
border-radius: 8px;
padding: 0 2px;
}
#workspaces button.active {
padding: 0 6px;
}
#custom-power {
border-radius: 10px;
padding: 0 6px 0 9px;
}

View File

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

View File

@@ -1,38 +0,0 @@
* {
color: @main-fg;
}
#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;
}
.module,
#custom-left_div,
#custom-left_inv,
#custom-right_div,
#custom-right_inv {
margin-bottom: -1px;
}

View File

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

View File

@@ -1,31 +0,0 @@
/*--------------
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 {
color: @accent;
}
/*------------------
window title
------------------*/
#window {
margin-left: 12px;
}

View File

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

View File

@@ -1,37 +0,0 @@
#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;
}

View File

@@ -1,32 +1,30 @@
/* Gruvbox Dark */ /* Custom Theme - Warm Muted with Orange Accents */
@define-color bg0_h #1c1c1f;
@define-color bg0_h #1d2021; @define-color bg0 #1c1c1f;
@define-color bg0 #282828; @define-color bg1 #252529;
@define-color bg1 #3c3836; @define-color bg2 #2d2d33;
@define-color bg2 #504945; @define-color bg3 #35353d;
@define-color bg3 #665c54; @define-color bg4 #3d3d47;
@define-color bg4 #7c6f64; @define-color gray #6d6860;
@define-color gray #928374; @define-color fg4 #7d7972;
@define-color fg4 #a89984; @define-color fg3 #8a8580;
@define-color fg3 #bdae93; @define-color fg2 #ff9100;
@define-color fg2 #d5c4a1; @define-color fg1 #b39a76;
@define-color fg1 #ebdbb2; @define-color fg0 #c9b08a;
@define-color fg0 #fbf1c7; @define-color red #ff0000;
@define-color red #cc241d; @define-color bright_red #ff0000;
@define-color bright_red #fb4934; @define-color green #ff9100;
@define-color green #98971a; @define-color bright_green #b39a76;
@define-color bright_green #b8bb26; @define-color yellow #ff9100;
@define-color yellow #d79921; @define-color bright_yellow #ff9100;
@define-color bright_yellow #fabd2f; @define-color blue #ff9100;
@define-color blue #458588; @define-color bright_blue #b39a76;
@define-color bright_blue #83a598; @define-color purple #ff9100;
@define-color purple #b16286; @define-color bright_purple #b39a76;
@define-color bright_purple #d3869b; @define-color aqua #ff9100;
@define-color aqua #689d6a; @define-color bright_aqua #b39a76;
@define-color bright_aqua #8ec07c; @define-color orange #ff9100;
@define-color orange #d65d0e; @define-color bright_orange #ff9100;
@define-color bright_orange #fe8019;
@define-color white #ffffff; @define-color white #ffffff;
@define-color black #000000; @define-color black #000000;
@@ -37,40 +35,32 @@
*/ */
/* Main Colors */ /* Main Colors */
@define-color shadow shade(@bg0_h, 0.5);
@define-color outline shade(@bg0_h, 0.5); @define-color main-fg @fg2;
@define-color accent @orange;
@define-color main-fg @fg0;
@define-color main-bg @bg0_h; @define-color main-bg @bg0_h;
@define-color main-br @fg0; @define-color main-br @fg2;
@define-color active-bg @orange;
@define-color active-bg @yellow; @define-color active-fg @black;
@define-color active-fg @bg0_h;
@define-color hover-bg @bg2; @define-color hover-bg @bg2;
@define-color hover-fg alpha(@fg0, 0.75); @define-color hover-fg @fg1;
/* Module Colors */ /* Module Colors */
@define-color module-fg @fg2;
@define-color module-fg @fg0; @define-color workspaces @bg1;
@define-color workspaces @bg0; @define-color temperature @bg1;
@define-color memory @bg2;
@define-color temperature @bg0; @define-color cpu @bg3;
@define-color memory @bg1;
@define-color cpu @bg2;
@define-color distro-fg @black; @define-color distro-fg @black;
@define-color distro-bg @yellow; @define-color distro-bg @orange;
@define-color time @bg2; @define-color time @bg3;
@define-color date @bg1; @define-color date @bg2;
@define-color tray @bg0; @define-color tray @bg1;
@define-color pulseaudio @bg1;
@define-color pulseaudio @bg0; @define-color backlight @bg2;
@define-color backlight @bg1; @define-color battery @bg3;
@define-color battery @bg2; @define-color power @orange;
@define-color power @yellow;
/* State Colors */ /* State Colors */
@define-color warning @orange;
@define-color warning @bright_orange; @define-color critical @red;
@define-color critical @bright_red; @define-color charging @fg2;
@define-color charging @fg0;

View File

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

View File

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

View File

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

View File

@@ -1,63 +0,0 @@
/* 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;

View File

@@ -0,0 +1,75 @@
/* 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;
@define-color white #ffffff;
@define-color black #000000;
/*
bg - background
fg - foreground
br - border
*/
/* Main Colors */
@define-color shadow shade(@crust, 0.5);
@define-color main-fg @text;
@define-color main-bg @crust;
@define-color main-br @text;
@define-color active-bg @overlay2;
@define-color active-fg @crust;
@define-color hover-bg @surface0;
@define-color hover-fg alpha(@text, 0.75);
/* Module Colors */
@define-color module-fg @text;
@define-color workspaces @mantle;
@define-color temperature @mantle;
@define-color memory @base;
@define-color cpu @surface0;
@define-color distro-fg @black;
@define-color distro-bg @overlay2;
@define-color time @surface0;
@define-color date @base;
@define-color tray @mantle;
@define-color pulseaudio @mantle;
@define-color backlight @base;
@define-color battery @surface0;
@define-color power @overlay2;
/* State Colors */
@define-color warning @yellow;
@define-color critical @red;
@define-color charging @text;

View File

@@ -0,0 +1,75 @@
/* 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;
@define-color white #ffffff;
@define-color black #000000;
/*
bg - background
fg - foreground
br - border
*/
/* Main Colors */
@define-color shadow shade(@crust, 0.5);
@define-color main-fg @text;
@define-color main-bg @crust;
@define-color main-br @text;
@define-color active-bg @overlay2;
@define-color active-fg @crust;
@define-color hover-bg @surface0;
@define-color hover-fg alpha(@text, 0.75);
/* Module Colors */
@define-color module-fg @text;
@define-color workspaces @mantle;
@define-color temperature @mantle;
@define-color memory @base;
@define-color cpu @surface0;
@define-color distro-fg @black;
@define-color distro-bg @overlay2;
@define-color time @surface0;
@define-color date @base;
@define-color tray @mantle;
@define-color pulseaudio @mantle;
@define-color backlight @base;
@define-color battery @surface0;
@define-color power @overlay2;
/* State Colors */
@define-color warning @yellow;
@define-color critical @red;
@define-color charging @text;

View File

@@ -0,0 +1,75 @@
/* 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;
@define-color white #ffffff;
@define-color black #000000;
/*
bg - background
fg - foreground
br - border
*/
/* Main Colors */
@define-color shadow shade(@crust, 0.5);
@define-color main-fg @text;
@define-color main-bg @crust;
@define-color main-br @text;
@define-color active-bg @overlay2;
@define-color active-fg @crust;
@define-color hover-bg @surface0;
@define-color hover-fg alpha(@text, 0.75);
/* Module Colors */
@define-color module-fg @text;
@define-color workspaces @mantle;
@define-color temperature @mantle;
@define-color memory @base;
@define-color cpu @surface0;
@define-color distro-fg @black;
@define-color distro-bg @overlay2;
@define-color time @surface0;
@define-color date @base;
@define-color tray @mantle;
@define-color pulseaudio @mantle;
@define-color backlight @base;
@define-color battery @surface0;
@define-color power @overlay2;
/* State Colors */
@define-color warning @yellow;
@define-color critical @red;
@define-color charging @text;

View File

@@ -0,0 +1,75 @@
/* 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;
@define-color white #ffffff;
@define-color black #000000;
/*
bg - background
fg - foreground
br - border
*/
/* Main Colors */
@define-color shadow shade(@crust, 0.5);
@define-color main-fg @text;
@define-color main-bg @crust;
@define-color main-br @text;
@define-color active-bg @overlay2;
@define-color active-fg @crust;
@define-color hover-bg @surface0;
@define-color hover-fg alpha(@text, 0.75);
/* Module Colors */
@define-color module-fg @text;
@define-color workspaces @mantle;
@define-color temperature @mantle;
@define-color memory @base;
@define-color cpu @surface0;
@define-color distro-fg @black;
@define-color distro-bg @overlay2;
@define-color time @surface0;
@define-color date @base;
@define-color tray @mantle;
@define-color pulseaudio @mantle;
@define-color backlight @base;
@define-color battery @surface0;
@define-color power @overlay2;
/* State Colors */
@define-color warning @yellow;
@define-color critical @red;
@define-color charging @text;

View File

@@ -38,8 +38,7 @@
/* Main Colors */ /* Main Colors */
@define-color outline shade(@bg0_h, 0.5); @define-color shadow shade(@bg0_h, 0.5);
@define-color accent @orange;
@define-color main-fg @fg0; @define-color main-fg @fg0;
@define-color main-bg @bg0_h; @define-color main-bg @bg0_h;
@define-color main-br @fg0; @define-color main-br @fg0;

View File

@@ -0,0 +1,75 @@
/* Gruvbox Light */
@define-color bg0_h #f9f5d7;
@define-color bg0 #fbf1c7;
@define-color bg1 #ebdbb2;
@define-color bg2 #d5c4a1;
@define-color bg3 #bdae93;
@define-color bg4 #a89984;
@define-color gray #928374;
@define-color fg4 #7c6f64;
@define-color fg3 #665c54;
@define-color fg2 #504945;
@define-color fg1 #3c3836;
@define-color fg0 #282828;
@define-color red #cc241d;
@define-color bright_red #9d0006;
@define-color green #98971a;
@define-color bright_green #79740e;
@define-color yellow #d79921;
@define-color bright_yellow #b57614;
@define-color blue #458588;
@define-color bright_blue #076678;
@define-color purple #b16286;
@define-color bright_purple #8f3f71;
@define-color aqua #689d6a;
@define-color bright_aqua #427b58;
@define-color orange #d65d0e;
@define-color bright_orange #af3a03;
@define-color white #ffffff;
@define-color black #000000;
/*
bg - background
fg - foreground
br - border
*/
/* Main Colors */
@define-color shadow shade(@bg0_h, 0.5);
@define-color main-fg @fg0;
@define-color main-bg @bg0_h;
@define-color main-br @fg0;
@define-color active-bg @yellow;
@define-color active-fg @bg0_h;
@define-color hover-bg @bg2;
@define-color hover-fg alpha(@fg0, 0.75);
/* Module Colors */
@define-color module-fg @fg0;
@define-color workspaces @bg0;
@define-color temperature @bg0;
@define-color memory @bg1;
@define-color cpu @bg2;
@define-color distro-fg @black;
@define-color distro-bg @yellow;
@define-color time @bg2;
@define-color date @bg1;
@define-color tray @bg0;
@define-color pulseaudio @bg0;
@define-color backlight @bg1;
@define-color battery @bg2;
@define-color power @yellow;
/* State Colors */
@define-color warning @bright_orange;
@define-color critical @bright_red;
@define-color charging @fg0;

View File

@@ -0,0 +1 @@
/home/saeijou/.config/waybar/themes/css/gruvbox-dark.css

View File

@@ -0,0 +1,75 @@
/* Gruvbox Dark */
@define-color bg0_h #1d2021;
@define-color bg0 #282828;
@define-color bg1 #3c3836;
@define-color bg2 #504945;
@define-color bg3 #665c54;
@define-color bg4 #7c6f64;
@define-color gray #928374;
@define-color fg4 #a89984;
@define-color fg3 #bdae93;
@define-color fg2 #d5c4a1;
@define-color fg1 #ebdbb2;
@define-color fg0 #fbf1c7;
@define-color red #cc241d;
@define-color bright_red #fb4934;
@define-color green #98971a;
@define-color bright_green #b8bb26;
@define-color yellow #d79921;
@define-color bright_yellow #fabd2f;
@define-color blue #458588;
@define-color bright_blue #83a598;
@define-color purple #b16286;
@define-color bright_purple #d3869b;
@define-color aqua #689d6a;
@define-color bright_aqua #8ec07c;
@define-color orange #d65d0e;
@define-color bright_orange #fe8019;
@define-color white #ffffff;
@define-color black #000000;
/*
bg - background
fg - foreground
br - border
*/
/* Main Colors */
@define-color shadow shade(@bg0_h, 0.5);
@define-color main-fg @fg0;
@define-color main-bg @bg0_h;
@define-color main-br @fg0;
@define-color active-bg @yellow;
@define-color active-fg @bg0_h;
@define-color hover-bg @bg2;
@define-color hover-fg alpha(@fg0, 0.75);
/* Module Colors */
@define-color module-fg @fg0;
@define-color workspaces @bg0;
@define-color temperature @bg0;
@define-color memory @bg1;
@define-color cpu @bg2;
@define-color distro-fg @black;
@define-color distro-bg @yellow;
@define-color time @bg2;
@define-color date @bg1;
@define-color tray @bg0;
@define-color pulseaudio @bg0;
@define-color backlight @bg1;
@define-color battery @bg2;
@define-color power @yellow;
/* State Colors */
@define-color warning @bright_orange;
@define-color critical @bright_red;
@define-color charging @fg0;

View File

@@ -0,0 +1,478 @@
{
"layer": "top",
"position": "top",
"mode": "dock",
"reload_style_on_change": true,
"gtk-layer-shell": true,
// <<--< Positions >-->>
"modules-left": [
"custom/ws", // window icon
"custom/left1",
"hyprland/workspaces", // workspaces
"custom/right1",
"custom/paddw",
"hyprland/window" // window title
],
"modules-center": [
"custom/paddc",
"custom/left2",
"custom/temperature", // temperature
"custom/left3",
"memory", // memory
"custom/left4",
"cpu", // cpu
"custom/leftin1",
"custom/left5",
"custom/distro", // distro icon
"custom/right2",
"custom/rightin1",
"idle_inhibitor", // idle inhibitor
"clock#time", // time
"custom/right3",
"clock#date", // date
"custom/right4",
"custom/wifi", // wi-fi
"bluetooth", // bluetooth
"custom/update", // system update
"custom/right5"
],
"modules-right": [
"mpris", // media info
"custom/left6",
"pulseaudio", // output device
"custom/left7",
"backlight", // brightness
"custom/left8",
"battery", // battery
"custom/leftin2",
"custom/power" // power button
],
// <<--< Modules >-->>
"custom/ws": {
"exec": "~/.config/waybar/scripts/current-theme.sh",
"return-type": "json",
"format": " 󰤕 ",
"on-click": "~/.config/waybar/scripts/theme-switcher.sh",
"min-length": 3,
"max-length": 3
},
"hyprland/workspaces": {
"on-scroll-up": "hyprctl dispatch workspace -1",
"on-scroll-down": "hyprctl dispatch workspace +1",
"persistent-workspaces": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": []
}
},
"hyprland/window": {
"format": "{}",
"tooltip": false,
"min-length": 5,
"rewrite": {
// Desktop
"":
"<span foreground='#8caaee'> </span> Hyprland",
// Terminal
"~": " Terminal",
"zsh": " Terminal",
"kitty": " Terminal",
"tmux(.*)":
"<span foreground='#a6e3a1'> </span> Tmux",
// Browser
"(.*)Mozilla Firefox":
"<span foreground='#e78284'>󰈹 </span> Firefox",
"(.*) — Mozilla Firefox":
"<span foreground='#e78284'>󰈹 </span> $1",
"(.*)Zen Browser":
"<span foreground='#ef9f76'>󰺕 </span> Zen Browser",
"(.*) — Zen Browser":
"<span foreground='#ef9f76'>󰺕 </span> $1",
// Development
"(.*) - Visual Studio Code":
"<span foreground='#8caaee'>󰨞 </span> $1",
"(.*)Visual Studio Code":
"<span foreground='#8caaee'>󰨞 </span> Visual Studio Code",
"nvim":
"<span foreground='#a6d189'> </span> Neovim",
"nvim (.*)":
"<span foreground='#a6d189'> </span> $1",
"vim":
"<span foreground='#a6d189'> </span> Vim",
"vim (.*)":
"<span foreground='#a6d189'> </span> $1",
// Media
"(.*)Spotify":
"<span foreground='#a6d189'> </span> Spotify",
"(.*)Spotify Premium":
"<span foreground='#a6d189'> </span> Spotify Premium",
"OBS(.*)":
"<span foreground='#a5adce'> </span> OBS Studio",
"VLC media player":
"<span foreground='#ef9f76'>󰕼 </span> VLC Media Player",
"(.*) - VLC media player":
"<span foreground='#ef9f76'>󰕼 </span> $1",
"(.*) - mpv":
"<span foreground='#ca9ee6'> </span> $1",
"qView": " qView",
"(.*).jpg": " $1.jpg",
"(.*).png": " $1.png",
"(.*).svg": " $1.svg",
// Social
"vesktop":
"<span foreground='#8caaee'> </span> Discord",
"• Discord(.*)": "Discord$1",
"(.*)Discord(.*)":
"<span foreground='#8caaee'> </span> $1Discord$2",
// Documents
"ONLYOFFICE Desktop Editors":
"<span foreground='#e78284'> </span> OnlyOffice Desktop",
"(.*).docx":
"<span foreground='#8caaee'> </span> $1.docx",
"(.*).xlsx":
"<span foreground='#a6d189'> </span> $1.xlsx",
"(.*).pptx":
"<span foreground='#ef9f76'> </span> $1.pptx",
"(.*).pdf":
"<span foreground='#e78284'> </span> $1.pdf",
// System
"Authenticate": " Authenticate"
}
},
"custom/temperature": {
"exec": "~/.config/waybar/scripts/cpu-temp.sh",
"return-type": "json",
"format": "{}",
"interval": 5,
"min-length": 8,
"max-length": 8
},
"memory": {
"states": {
"warning": 75,
"critical": 90
},
"format": "󰘚 {percentage}%",
"format-critical": "󰀦 {percentage}%",
"tooltip": false,
// "tooltip-format": "Memory Used: {used:0.1f} GB / {total:0.1f} GB",
"interval": 5,
"min-length": 7,
"max-length": 7
},
"cpu": {
"format": "󰻠 {usage}%",
"tooltip": false,
"interval": 5,
"min-length": 6,
"max-length": 6
},
"custom/distro": {
"format": " ",
"tooltip": false
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "󰈈 ",
"deactivated": "󰈉 "
},
"tooltip-format-activated": "Presentation Mode",
"tooltip-format-deactivated": "Idle Mode",
"start-activated": false
},
"clock#time": {
"format": "{:%H:%M}",
"tooltip": false,
// "tooltip-format": "Standard Time: {:%I:%M %p}",
"min-length": 6,
"max-length": 6
},
"clock#date": {
"format": "󰨳 {:%m-%d}",
"tooltip-format": "<tt>{calendar}</tt>",
"calendar": {
"mode": "month",
"mode-mon-col": 6,
"on-click-right": "mode",
"format": {
"months":
"<span color='#babbf1'><b>{}</b></span>",
"weekdays":
"<span color='#a5adce' font='7'>{}</span>",
"today":
"<span color='#e78284'><b>{}</b></span>"
}
},
"actions": {
"on-click": "mode",
"on-click-right": "mode"
},
"min-length": 8,
"max-length": 8
},
"custom/wifi": {
"exec": "~/.config/waybar/scripts/wifi-status.sh",
"return-type": "json",
"format": "{}",
"on-click": "~/.config/waybar/scripts/wifi-menu.sh",
"on-click-right": "kitty --title '󰤨 Network Manager TUI' bash -c nmtui",
"interval": 1,
"min-length": 1,
"max-length": 1
},
"bluetooth": {
"format": "󰂰",
"format-disabled": "󰂲",
"format-connected": "󰂱",
"format-connected-battery": "󰂱",
"tooltip-format":
"{num_connections} connected",
"tooltip-format-disabled":
"Bluetooth Disabled",
"tooltip-format-connected":
"{device_enumerate}",
"tooltip-format-enumerate-connected":
"{device_alias}",
"tooltip-format-enumerate-connected-battery":
":: {device_alias}: 󱊣 {device_battery_percentage}%",
"on-click": "~/.config/waybar/scripts/bluetooth-menu.sh",
"on-click-right": "kitty --title '󰂯 Bluetooth TUI' bash -c bluetui",
"interval": 1,
"min-length": 1,
"max-length": 1
},
"custom/update": {
"exec": "~/.config/waybar/scripts/system-update.sh",
"return-type": "json",
"format": "{}",
"on-click": "hyprctl dispatch exec '~/.config/waybar/scripts/system-update.sh up'",
"interval": 30,
"min-length": 1,
"max-length": 1
},
"mpris": {
"format": "{player_icon} {title} - {artist}",
"format-paused": "{status_icon} {title} - {artist}",
"player-icons": {
"default": "󰝚 ",
"spotify": "<span foreground='#a6d189'>󰓇 </span>",
"firefox": "<span foreground='#e78284'>󰗃 </span>"
},
"status-icons": {
"paused": "<span color='#babbf1'>\u200A\u200A󰏤\u2009\u2009</span>"
},
"tooltip-format": "Playing: {title} - {artist}",
"tooltip-format-paused": "Paused: {title} - {artist}",
"min-length": 5,
"max-length": 35
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": "󰝟 {volume}%",
"format-icons": {
"default": ["󰕿", "󰖀", "󰕾"],
"headphone": "󰋋",
"headset": "󰋋"
},
"tooltip-format": "Device: {desc}",
"on-click": "~/.config/waybar/scripts/volume-control.sh -o m",
"on-scroll-up": "~/.config/waybar/scripts/volume-control.sh -o i",
"on-scroll-down": "~/.config/waybar/scripts/volume-control.sh -o d",
"min-length": 6,
"max-length": 6
},
"backlight": {
"format": "{icon} {percent}%",
"format-icons": ["", "", "", "", "", "", "", "", ""],
"tooltip": false,
"on-scroll-up": "~/.config/waybar/scripts/brightness-control.sh -o i",
"on-scroll-down": "~/.config/waybar/scripts/brightness-control.sh -o d",
"min-length": 6,
"max-length": 6
},
"battery": {
"states": {
"warning": 20,
"critical": 10
},
"format": "{icon} {capacity}%",
"format-icons": ["󰂎", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"],
"format-charging": " {capacity}%",
"tooltip-format": "Discharging: {time}",
"tooltip-format-charging": "Charging: {time}",
"interval": 1,
"min-length": 6,
"max-length": 6
},
"custom/power": {
"format": " ",
"tooltip": false,
// "tooltip-format": "Power Menu",
"on-click": "~/.config/waybar/scripts/power-menu.sh"
},
// <<--< Padding >-->>
"custom/paddw": {
"format": " ",
"tooltip": false
},
"custom/paddc": {
"format": " ",
"tooltip": false
},
// Left Arrows
"custom/left1": {
"format": "",
"tooltip": false
},
"custom/left2": {
"format": "",
"tooltip": false
},
"custom/left3": {
"format": "",
"tooltip": false
},
"custom/left4": {
"format": "",
"tooltip": false
},
"custom/left5": {
"format": "",
"tooltip": false
},
"custom/left6": {
"format": "",
"tooltip": false
},
"custom/left7": {
"format": "",
"tooltip": false
},
"custom/left8": {
"format": "",
"tooltip": false
},
// Right Arrows
"custom/right1": {
"format": "",
"tooltip": false
},
"custom/right2": {
"format": "",
"tooltip": false
},
"custom/right3": {
"format": "",
"tooltip": false
},
"custom/right4": {
"format": "",
"tooltip": false
},
"custom/right5": {
"format": "",
"tooltip": false
},
// Left Inverse
"custom/leftin1": {
"format": "",
"tooltip": false
},
"custom/leftin2": {
"format": "",
"tooltip": false
},
// Right Inverse
"custom/rightin1": {
"format": "",
"tooltip": false
}
}

View File

@@ -0,0 +1,478 @@
{
"layer": "top",
"position": "top",
"mode": "dock",
"reload_style_on_change": true,
"gtk-layer-shell": true,
// <<--< Positions >-->>
"modules-left": [
"custom/ws", // window icon
"custom/left1",
"hyprland/workspaces", // workspaces
"custom/right1",
"custom/paddw",
"hyprland/window" // window title
],
"modules-center": [
"custom/paddc",
"custom/left2",
"custom/temperature", // temperature
"custom/left3",
"memory", // memory
"custom/left4",
"cpu", // cpu
"custom/leftin1",
"custom/left5",
"custom/distro", // distro icon
"custom/right2",
"custom/rightin1",
"idle_inhibitor", // idle inhibitor
"clock#time", // time
"custom/right3",
"clock#date", // date
"custom/right4",
"custom/wifi", // wi-fi
"bluetooth", // bluetooth
"custom/update", // system update
"custom/right5"
],
"modules-right": [
"mpris", // media info
"custom/left6",
"pulseaudio", // output device
"custom/left7",
"backlight", // brightness
"custom/left8",
"battery", // battery
"custom/leftin2",
"custom/power" // power button
],
// <<--< Modules >-->>
"custom/ws": {
"exec": "~/.config/waybar/scripts/current-theme.sh",
"return-type": "json",
"format": " 󰤕 ",
"on-click": "~/.config/waybar/scripts/theme-switcher.sh",
"min-length": 3,
"max-length": 3
},
"hyprland/workspaces": {
"on-scroll-up": "hyprctl dispatch workspace -1",
"on-scroll-down": "hyprctl dispatch workspace +1",
"persistent-workspaces": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": []
}
},
"hyprland/window": {
"format": "{}",
"tooltip": false,
"min-length": 5,
"rewrite": {
// Desktop
"":
"<span foreground='#1e66f5'> </span> Hyprland",
// Terminal
"~": " Terminal",
"zsh": " Terminal",
"kitty": " Terminal",
"tmux(.*)":
"<span foreground='#a6e3a1'> </span> Tmux",
// Browser
"(.*)Mozilla Firefox":
"<span foreground='#d20f39'>󰈹 </span> Firefox",
"(.*) — Mozilla Firefox":
"<span foreground='#d20f39'>󰈹 </span> $1",
"(.*)Zen Browser":
"<span foreground='#fe640b'>󰺕 </span> Zen Browser",
"(.*) — Zen Browser":
"<span foreground='#fe640b'>󰺕 </span> $1",
// Development
"(.*) - Visual Studio Code":
"<span foreground='#1e66f5'>󰨞 </span> $1",
"(.*)Visual Studio Code":
"<span foreground='#1e66f5'>󰨞 </span> Visual Studio Code",
"nvim":
"<span foreground='#40a02b'> </span> Neovim",
"nvim (.*)":
"<span foreground='#40a02b'> </span> $1",
"vim":
"<span foreground='#40a02b'> </span> Vim",
"vim (.*)":
"<span foreground='#40a02b'> </span> $1",
// Media
"(.*)Spotify":
"<span foreground='#40a02b'> </span> Spotify",
"(.*)Spotify Premium":
"<span foreground='#40a02b'> </span> Spotify Premium",
"OBS(.*)":
"<span foreground='#6c6f85'> </span> OBS Studio",
"VLC media player":
"<span foreground='#fe640b'>󰕼 </span> VLC Media Player",
"(.*) - VLC media player":
"<span foreground='#fe640b'>󰕼 </span> $1",
"(.*) - mpv":
"<span foreground='#8839ef'> </span> $1",
"qView": " qView",
"(.*).jpg": " $1.jpg",
"(.*).png": " $1.png",
"(.*).svg": " $1.svg",
// Social
"vesktop":
"<span foreground='#1e66f5'> </span> Discord",
"• Discord(.*)": "Discord$1",
"(.*)Discord(.*)":
"<span foreground='#1e66f5'> </span> $1Discord$2",
// Documents
"ONLYOFFICE Desktop Editors":
"<span foreground='#d20f39'> </span> OnlyOffice Desktop",
"(.*).docx":
"<span foreground='#1e66f5'> </span> $1.docx",
"(.*).xlsx":
"<span foreground='#40a02b'> </span> $1.xlsx",
"(.*).pptx":
"<span foreground='#fe640b'> </span> $1.pptx",
"(.*).pdf":
"<span foreground='#d20f39'> </span> $1.pdf",
// System
"Authenticate": " Authenticate"
}
},
"custom/temperature": {
"exec": "~/.config/waybar/scripts/cpu-temp.sh",
"return-type": "json",
"format": "{}",
"interval": 5,
"min-length": 8,
"max-length": 8
},
"memory": {
"states": {
"warning": 75,
"critical": 90
},
"format": "󰘚 {percentage}%",
"format-critical": "󰀦 {percentage}%",
"tooltip": false,
// "tooltip-format": "Memory Used: {used:0.1f} GB / {total:0.1f} GB",
"interval": 5,
"min-length": 7,
"max-length": 7
},
"cpu": {
"format": "󰻠 {usage}%",
"tooltip": false,
"interval": 5,
"min-length": 6,
"max-length": 6
},
"custom/distro": {
"format": " ",
"tooltip": false
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "󰈈 ",
"deactivated": "󰈉 "
},
"tooltip-format-activated": "Presentation Mode",
"tooltip-format-deactivated": "Idle Mode",
"start-activated": false
},
"clock#time": {
"format": "{:%H:%M}",
"tooltip": false,
// "tooltip-format": "Standard Time: {:%I:%M %p}",
"min-length": 6,
"max-length": 6
},
"clock#date": {
"format": "󰨳 {:%m-%d}",
"tooltip-format": "<tt>{calendar}</tt>",
"calendar": {
"mode": "month",
"mode-mon-col": 6,
"on-click-right": "mode",
"format": {
"months":
"<span color='#7287fd'><b>{}</b></span>",
"weekdays":
"<span color='#6c6f85' font='7'>{}</span>",
"today":
"<span color='#d20f39'><b>{}</b></span>"
}
},
"actions": {
"on-click": "mode",
"on-click-right": "mode"
},
"min-length": 8,
"max-length": 8
},
"custom/wifi": {
"exec": "~/.config/waybar/scripts/wifi-status.sh",
"return-type": "json",
"format": "{}",
"on-click": "~/.config/waybar/scripts/wifi-menu.sh",
"on-click-right": "kitty --title '󰤨 Network Manager TUI' bash -c nmtui",
"interval": 1,
"min-length": 1,
"max-length": 1
},
"bluetooth": {
"format": "󰂰",
"format-disabled": "󰂲",
"format-connected": "󰂱",
"format-connected-battery": "󰂱",
"tooltip-format":
"{num_connections} connected",
"tooltip-format-disabled":
"Bluetooth Disabled",
"tooltip-format-connected":
"{device_enumerate}",
"tooltip-format-enumerate-connected":
"{device_alias}",
"tooltip-format-enumerate-connected-battery":
":: {device_alias}: 󱊣 {device_battery_percentage}%",
"on-click": "~/.config/waybar/scripts/bluetooth-menu.sh",
"on-click-right": "kitty --title '󰂯 Bluetooth TUI' bash -c bluetui",
"interval": 1,
"min-length": 1,
"max-length": 1
},
"custom/update": {
"exec": "~/.config/waybar/scripts/system-update.sh",
"return-type": "json",
"format": "{}",
"on-click": "hyprctl dispatch exec '~/.config/waybar/scripts/system-update.sh up'",
"interval": 30,
"min-length": 1,
"max-length": 1
},
"mpris": {
"format": "{player_icon} {title} - {artist}",
"format-paused": "{status_icon} {title} - {artist}",
"player-icons": {
"default": "󰝚 ",
"spotify": "<span foreground='#40a02b'>󰓇 </span>",
"firefox": "<span foreground='#d20f39'>󰗃 </span>"
},
"status-icons": {
"paused": "<span color='#7287fd'>\u200A\u200A󰏤\u2009\u2009</span>"
},
"tooltip-format": "Playing: {title} - {artist}",
"tooltip-format-paused": "Paused: {title} - {artist}",
"min-length": 5,
"max-length": 35
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": "󰝟 {volume}%",
"format-icons": {
"default": ["󰕿", "󰖀", "󰕾"],
"headphone": "󰋋",
"headset": "󰋋"
},
"tooltip-format": "Device: {desc}",
"on-click": "~/.config/waybar/scripts/volume-control.sh -o m",
"on-scroll-up": "~/.config/waybar/scripts/volume-control.sh -o i",
"on-scroll-down": "~/.config/waybar/scripts/volume-control.sh -o d",
"min-length": 6,
"max-length": 6
},
"backlight": {
"format": "{icon} {percent}%",
"format-icons": ["", "", "", "", "", "", "", "", ""],
"tooltip": false,
"on-scroll-up": "~/.config/waybar/scripts/brightness-control.sh -o i",
"on-scroll-down": "~/.config/waybar/scripts/brightness-control.sh -o d",
"min-length": 6,
"max-length": 6
},
"battery": {
"states": {
"warning": 20,
"critical": 10
},
"format": "{icon} {capacity}%",
"format-icons": ["󰂎", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"],
"format-charging": " {capacity}%",
"tooltip-format": "Discharging: {time}",
"tooltip-format-charging": "Charging: {time}",
"interval": 1,
"min-length": 6,
"max-length": 6
},
"custom/power": {
"format": " ",
"tooltip": false,
// "tooltip-format": "Power Menu",
"on-click": "~/.config/waybar/scripts/power-menu.sh"
},
// <<--< Padding >-->>
"custom/paddw": {
"format": " ",
"tooltip": false
},
"custom/paddc": {
"format": " ",
"tooltip": false
},
// Left Arrows
"custom/left1": {
"format": "",
"tooltip": false
},
"custom/left2": {
"format": "",
"tooltip": false
},
"custom/left3": {
"format": "",
"tooltip": false
},
"custom/left4": {
"format": "",
"tooltip": false
},
"custom/left5": {
"format": "",
"tooltip": false
},
"custom/left6": {
"format": "",
"tooltip": false
},
"custom/left7": {
"format": "",
"tooltip": false
},
"custom/left8": {
"format": "",
"tooltip": false
},
// Right Arrows
"custom/right1": {
"format": "",
"tooltip": false
},
"custom/right2": {
"format": "",
"tooltip": false
},
"custom/right3": {
"format": "",
"tooltip": false
},
"custom/right4": {
"format": "",
"tooltip": false
},
"custom/right5": {
"format": "",
"tooltip": false
},
// Left Inverse
"custom/leftin1": {
"format": "",
"tooltip": false
},
"custom/leftin2": {
"format": "",
"tooltip": false
},
// Right Inverse
"custom/rightin1": {
"format": "",
"tooltip": false
}
}

View File

@@ -0,0 +1,478 @@
{
"layer": "top",
"position": "top",
"mode": "dock",
"reload_style_on_change": true,
"gtk-layer-shell": true,
// <<--< Positions >-->>
"modules-left": [
"custom/ws", // window icon
"custom/left1",
"hyprland/workspaces", // workspaces
"custom/right1",
"custom/paddw",
"hyprland/window" // window title
],
"modules-center": [
"custom/paddc",
"custom/left2",
"custom/temperature", // temperature
"custom/left3",
"memory", // memory
"custom/left4",
"cpu", // cpu
"custom/leftin1",
"custom/left5",
"custom/distro", // distro icon
"custom/right2",
"custom/rightin1",
"idle_inhibitor", // idle inhibitor
"clock#time", // time
"custom/right3",
"clock#date", // date
"custom/right4",
"custom/wifi", // wi-fi
"bluetooth", // bluetooth
"custom/update", // system update
"custom/right5"
],
"modules-right": [
"mpris", // media info
"custom/left6",
"pulseaudio", // output device
"custom/left7",
"backlight", // brightness
"custom/left8",
"battery", // battery
"custom/leftin2",
"custom/power" // power button
],
// <<--< Modules >-->>
"custom/ws": {
"exec": "~/.config/waybar/scripts/current-theme.sh",
"return-type": "json",
"format": " 󰤕 ",
"on-click": "~/.config/waybar/scripts/theme-switcher.sh",
"min-length": 3,
"max-length": 3
},
"hyprland/workspaces": {
"on-scroll-up": "hyprctl dispatch workspace -1",
"on-scroll-down": "hyprctl dispatch workspace +1",
"persistent-workspaces": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": []
}
},
"hyprland/window": {
"format": "{}",
"tooltip": false,
"min-length": 5,
"rewrite": {
// Desktop
"":
"<span foreground='#8aadf4'> </span> Hyprland",
// Terminal
"~": " Terminal",
"zsh": " Terminal",
"kitty": " Terminal",
"tmux(.*)":
"<span foreground='#a6e3a1'> </span> Tmux",
// Browser
"(.*)Mozilla Firefox":
"<span foreground='#ed8796'>󰈹 </span> Firefox",
"(.*) — Mozilla Firefox":
"<span foreground='#ed8796'>󰈹 </span> $1",
"(.*)Zen Browser":
"<span foreground='#f5a97f'>󰺕 </span> Zen Browser",
"(.*) — Zen Browser":
"<span foreground='#f5a97f'>󰺕 </span> $1",
// Development
"(.*) - Visual Studio Code":
"<span foreground='#8aadf4'>󰨞 </span> $1",
"(.*)Visual Studio Code":
"<span foreground='#8aadf4'>󰨞 </span> Visual Studio Code",
"nvim":
"<span foreground='#a6da95'> </span> Neovim",
"nvim (.*)":
"<span foreground='#a6da95'> </span> $1",
"vim":
"<span foreground='#a6da95'> </span> Vim",
"vim (.*)":
"<span foreground='#a6da95'> </span> $1",
// Media
"(.*)Spotify":
"<span foreground='#a6da95'> </span> Spotify",
"(.*)Spotify Premium":
"<span foreground='#a6da95'> </span> Spotify Premium",
"OBS(.*)":
"<span foreground='#a5adcb'> </span> OBS Studio",
"VLC media player":
"<span foreground='#f5a97f'>󰕼 </span> VLC Media Player",
"(.*) - VLC media player":
"<span foreground='#f5a97f'>󰕼 </span> $1",
"(.*) - mpv":
"<span foreground='#c6a0f6'> </span> $1",
"qView": " qView",
"(.*).jpg": " $1.jpg",
"(.*).png": " $1.png",
"(.*).svg": " $1.svg",
// Social
"vesktop":
"<span foreground='#8aadf4'> </span> Discord",
"• Discord(.*)": "Discord$1",
"(.*)Discord(.*)":
"<span foreground='#8aadf4'> </span> $1Discord$2",
// Documents
"ONLYOFFICE Desktop Editors":
"<span foreground='#ed8796'> </span> OnlyOffice Desktop",
"(.*).docx":
"<span foreground='#8aadf4'> </span> $1.docx",
"(.*).xlsx":
"<span foreground='#a6da95'> </span> $1.xlsx",
"(.*).pptx":
"<span foreground='#f5a97f'> </span> $1.pptx",
"(.*).pdf":
"<span foreground='#ed8796'> </span> $1.pdf",
// System
"Authenticate": " Authenticate"
}
},
"custom/temperature": {
"exec": "~/.config/waybar/scripts/cpu-temp.sh",
"return-type": "json",
"format": "{}",
"interval": 5,
"min-length": 8,
"max-length": 8
},
"memory": {
"states": {
"warning": 75,
"critical": 90
},
"format": "󰘚 {percentage}%",
"format-critical": "󰀦 {percentage}%",
"tooltip": false,
// "tooltip-format": "Memory Used: {used:0.1f} GB / {total:0.1f} GB",
"interval": 5,
"min-length": 7,
"max-length": 7
},
"cpu": {
"format": "󰻠 {usage}%",
"tooltip": false,
"interval": 5,
"min-length": 6,
"max-length": 6
},
"custom/distro": {
"format": " ",
"tooltip": false
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "󰈈 ",
"deactivated": "󰈉 "
},
"tooltip-format-activated": "Presentation Mode",
"tooltip-format-deactivated": "Idle Mode",
"start-activated": false
},
"clock#time": {
"format": "{:%H:%M}",
"tooltip": false,
// "tooltip-format": "Standard Time: {:%I:%M %p}",
"min-length": 6,
"max-length": 6
},
"clock#date": {
"format": "󰨳 {:%m-%d}",
"tooltip-format": "<tt>{calendar}</tt>",
"calendar": {
"mode": "month",
"mode-mon-col": 6,
"on-click-right": "mode",
"format": {
"months":
"<span color='#b7bdf8'><b>{}</b></span>",
"weekdays":
"<span color='#a5adcb' font='7'>{}</span>",
"today":
"<span color='#ed8796'><b>{}</b></span>"
}
},
"actions": {
"on-click": "mode",
"on-click-right": "mode"
},
"min-length": 8,
"max-length": 8
},
"custom/wifi": {
"exec": "~/.config/waybar/scripts/wifi-status.sh",
"return-type": "json",
"format": "{}",
"on-click": "~/.config/waybar/scripts/wifi-menu.sh",
"on-click-right": "kitty --title '󰤨 Network Manager TUI' bash -c nmtui",
"interval": 1,
"min-length": 1,
"max-length": 1
},
"bluetooth": {
"format": "󰂰",
"format-disabled": "󰂲",
"format-connected": "󰂱",
"format-connected-battery": "󰂱",
"tooltip-format":
"{num_connections} connected",
"tooltip-format-disabled":
"Bluetooth Disabled",
"tooltip-format-connected":
"{device_enumerate}",
"tooltip-format-enumerate-connected":
"{device_alias}",
"tooltip-format-enumerate-connected-battery":
":: {device_alias}: 󱊣 {device_battery_percentage}%",
"on-click": "~/.config/waybar/scripts/bluetooth-menu.sh",
"on-click-right": "kitty --title '󰂯 Bluetooth TUI' bash -c bluetui",
"interval": 1,
"min-length": 1,
"max-length": 1
},
"custom/update": {
"exec": "~/.config/waybar/scripts/system-update.sh",
"return-type": "json",
"format": "{}",
"on-click": "hyprctl dispatch exec '~/.config/waybar/scripts/system-update.sh up'",
"interval": 30,
"min-length": 1,
"max-length": 1
},
"mpris": {
"format": "{player_icon} {title} - {artist}",
"format-paused": "{status_icon} {title} - {artist}",
"player-icons": {
"default": "󰝚 ",
"spotify": "<span foreground='#a6da95'>󰓇 </span>",
"firefox": "<span foreground='#ed8796'>󰗃 </span>"
},
"status-icons": {
"paused": "<span color='#b7bdf8'>\u200A\u200A󰏤\u2009\u2009</span>"
},
"tooltip-format": "Playing: {title} - {artist}",
"tooltip-format-paused": "Paused: {title} - {artist}",
"min-length": 5,
"max-length": 35
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": "󰝟 {volume}%",
"format-icons": {
"default": ["󰕿", "󰖀", "󰕾"],
"headphone": "󰋋",
"headset": "󰋋"
},
"tooltip-format": "Device: {desc}",
"on-click": "~/.config/waybar/scripts/volume-control.sh -o m",
"on-scroll-up": "~/.config/waybar/scripts/volume-control.sh -o i",
"on-scroll-down": "~/.config/waybar/scripts/volume-control.sh -o d",
"min-length": 6,
"max-length": 6
},
"backlight": {
"format": "{icon} {percent}%",
"format-icons": ["", "", "", "", "", "", "", "", ""],
"tooltip": false,
"on-scroll-up": "~/.config/waybar/scripts/brightness-control.sh -o i",
"on-scroll-down": "~/.config/waybar/scripts/brightness-control.sh -o d",
"min-length": 6,
"max-length": 6
},
"battery": {
"states": {
"warning": 20,
"critical": 10
},
"format": "{icon} {capacity}%",
"format-icons": ["󰂎", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"],
"format-charging": " {capacity}%",
"tooltip-format": "Discharging: {time}",
"tooltip-format-charging": "Charging: {time}",
"interval": 1,
"min-length": 6,
"max-length": 6
},
"custom/power": {
"format": " ",
"tooltip": false,
// "tooltip-format": "Power Menu",
"on-click": "~/.config/waybar/scripts/power-menu.sh"
},
// <<--< Padding >-->>
"custom/paddw": {
"format": " ",
"tooltip": false
},
"custom/paddc": {
"format": " ",
"tooltip": false
},
// Left Arrows
"custom/left1": {
"format": "",
"tooltip": false
},
"custom/left2": {
"format": "",
"tooltip": false
},
"custom/left3": {
"format": "",
"tooltip": false
},
"custom/left4": {
"format": "",
"tooltip": false
},
"custom/left5": {
"format": "",
"tooltip": false
},
"custom/left6": {
"format": "",
"tooltip": false
},
"custom/left7": {
"format": "",
"tooltip": false
},
"custom/left8": {
"format": "",
"tooltip": false
},
// Right Arrows
"custom/right1": {
"format": "",
"tooltip": false
},
"custom/right2": {
"format": "",
"tooltip": false
},
"custom/right3": {
"format": "",
"tooltip": false
},
"custom/right4": {
"format": "",
"tooltip": false
},
"custom/right5": {
"format": "",
"tooltip": false
},
// Left Inverse
"custom/leftin1": {
"format": "",
"tooltip": false
},
"custom/leftin2": {
"format": "",
"tooltip": false
},
// Right Inverse
"custom/rightin1": {
"format": "",
"tooltip": false
}
}

Some files were not shown because too many files have changed in this diff Show More