diff --git a/.gitignore b/.gitignore
index d2631ad..e6f286a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,15 +2,23 @@
*
# Then selectively include the directories you want to keep
+!btop/
!hypr/
+!ghostty/
!kitty/
!nvim/
+!swaync/
!waybar/
+!rofi/
!wofi/
+!btop/**
!hypr/**
+!ghostty/**
!kitty/**
!nvim/**
+!swaync/**
!waybar/**
+!rofi/**
!wofi/**
diff --git a/btop/btop.conf b/btop/btop.conf
new file mode 100644
index 0000000..417efe3
--- /dev/null
+++ b/btop/btop.conf
@@ -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 = ""
diff --git a/btop/themes/mytheme.theme b/btop/themes/mytheme.theme
new file mode 100644
index 0000000..7c38bc7
--- /dev/null
+++ b/btop/themes/mytheme.theme
@@ -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"
diff --git a/btop/themes/orange.theme b/btop/themes/orange.theme
new file mode 100644
index 0000000..c26cfca
--- /dev/null
+++ b/btop/themes/orange.theme
@@ -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"
diff --git a/ghostty/config b/ghostty/config
new file mode 100644
index 0000000..1ef8d82
--- /dev/null
+++ b/ghostty/config
@@ -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
diff --git a/ghostty/themes/gruvbox_dark.conf b/ghostty/themes/gruvbox_dark.conf
new file mode 100644
index 0000000..369da8d
--- /dev/null
+++ b/ghostty/themes/gruvbox_dark.conf
@@ -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
diff --git a/ghostty/themes/theme b/ghostty/themes/theme
new file mode 100644
index 0000000..92fa166
--- /dev/null
+++ b/ghostty/themes/theme
@@ -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
diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf
index ebfd7a0..b9bcb92 100644
--- a/hypr/hyprland.conf
+++ b/hypr/hyprland.conf
@@ -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 ###
###################
-# See https://wiki.hyprland.org/Configuring/Keywords/
-
-# Set programs that you use
$terminal = ghostty
$fileManager = thunar
-$menu = wofi --show drun
+$menu = rofi -show drun
+$browser = librewolf
+$browser2 = google-chrome-stable
+# Configurations
-#################
-### AUTOSTART ###
-#################
+source = ~/.config/hypr/hyprland/animations.conf
+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
diff --git a/hypr/hyprland/animations.conf b/hypr/hyprland/animations.conf
new file mode 100644
index 0000000..b5cc7a7
--- /dev/null
+++ b/hypr/hyprland/animations.conf
@@ -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
+}
diff --git a/hypr/hyprland/autostart.conf b/hypr/hyprland/autostart.conf
new file mode 100644
index 0000000..9f94ff2
--- /dev/null
+++ b/hypr/hyprland/autostart.conf
@@ -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"
diff --git a/hypr/hyprland/bindings.conf b/hypr/hyprland/bindings.conf
new file mode 100644
index 0000000..d059c2d
--- /dev/null
+++ b/hypr/hyprland/bindings.conf
@@ -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
diff --git a/hypr/hyprland/env.conf b/hypr/hyprland/env.conf
new file mode 100644
index 0000000..a5f68ec
--- /dev/null
+++ b/hypr/hyprland/env.conf
@@ -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
diff --git a/hypr/hyprland/input.conf b/hypr/hyprland/input.conf
new file mode 100644
index 0000000..2e36236
--- /dev/null
+++ b/hypr/hyprland/input.conf
@@ -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
+}
+
+
diff --git a/hypr/hyprland/looknfeel.conf b/hypr/hyprland/looknfeel.conf
new file mode 100644
index 0000000..575a2c9
--- /dev/null
+++ b/hypr/hyprland/looknfeel.conf
@@ -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. :(
+}
diff --git a/hypr/hyprland/monitors.conf b/hypr/hyprland/monitors.conf
new file mode 100644
index 0000000..f52f480
--- /dev/null
+++ b/hypr/hyprland/monitors.conf
@@ -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
diff --git a/hypr/hyprland/windowrules.conf b/hypr/hyprland/windowrules.conf
new file mode 100644
index 0000000..0553559
--- /dev/null
+++ b/hypr/hyprland/windowrules.conf
@@ -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
+
+
diff --git a/rofi/bluetooth-menu.rasi b/rofi/bluetooth-menu.rasi
new file mode 100644
index 0000000..3a02cf2
--- /dev/null
+++ b/rofi/bluetooth-menu.rasi
@@ -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;
+}
diff --git a/rofi/power-menu.rasi b/rofi/power-menu.rasi
new file mode 100644
index 0000000..2f8fff8
--- /dev/null
+++ b/rofi/power-menu.rasi
@@ -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;
+}
diff --git a/rofi/theme.rasi b/rofi/theme.rasi
new file mode 100644
index 0000000..044f436
--- /dev/null
+++ b/rofi/theme.rasi
@@ -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;
+}
diff --git a/rofi/themes/catppuccin-frappe.rasi b/rofi/themes/catppuccin-frappe.rasi
new file mode 100644
index 0000000..2377415
--- /dev/null
+++ b/rofi/themes/catppuccin-frappe.rasi
@@ -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;
+}
diff --git a/rofi/themes/catppuccin-latte.rasi b/rofi/themes/catppuccin-latte.rasi
new file mode 100644
index 0000000..9460b95
--- /dev/null
+++ b/rofi/themes/catppuccin-latte.rasi
@@ -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;
+}
diff --git a/rofi/themes/catppuccin-macchiato.rasi b/rofi/themes/catppuccin-macchiato.rasi
new file mode 100644
index 0000000..044f436
--- /dev/null
+++ b/rofi/themes/catppuccin-macchiato.rasi
@@ -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;
+}
diff --git a/rofi/themes/catppuccin-mocha.rasi b/rofi/themes/catppuccin-mocha.rasi
new file mode 100644
index 0000000..c2b8954
--- /dev/null
+++ b/rofi/themes/catppuccin-mocha.rasi
@@ -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;
+}
diff --git a/rofi/themes/gruvbox-dark.rasi b/rofi/themes/gruvbox-dark.rasi
new file mode 100644
index 0000000..fccdc27
--- /dev/null
+++ b/rofi/themes/gruvbox-dark.rasi
@@ -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;
+}
diff --git a/rofi/themes/gruvbox-light.rasi b/rofi/themes/gruvbox-light.rasi
new file mode 100644
index 0000000..aa48597
--- /dev/null
+++ b/rofi/themes/gruvbox-light.rasi
@@ -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;
+}
diff --git a/rofi/wifi-menu.rasi b/rofi/wifi-menu.rasi
new file mode 100644
index 0000000..ca8663d
--- /dev/null
+++ b/rofi/wifi-menu.rasi
@@ -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;
+}
diff --git a/swaync/config.json b/swaync/config.json
new file mode 100644
index 0000000..87a7120
--- /dev/null
+++ b/swaync/config.json
@@ -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
+ }
+ }
+}
diff --git a/swaync/style.css b/swaync/style.css
new file mode 100644
index 0000000..bc121fc
--- /dev/null
+++ b/swaync/style.css
@@ -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;
+}
diff --git a/waybar/.github/README.md b/waybar/.github/README.md
deleted file mode 100644
index f3e8b31..0000000
--- a/waybar/.github/README.md
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-## 🤖 mechabar
-
-A mecha-themed, modular Waybar configuration.
-
-|  |
-| :--------------------------------------: |
-
-
-Themes
-
-
-**Catppuccin:**
-
-| Mocha _(default)_ |
-| :----------------------------------------------: |
-|  |
-
-| Macchiato |
-| :------------------------------------------------------: |
-|  |
-
-| Frappe |
-| :------------------------------------------------: |
-|  |
-
-| Latte |
-| :----------------------------------------------: |
-|  |
-
-
-
-
-#
-
-### 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
|
- | _(bluetoothctl)_ `bluez-utils` | Development and debugging utilities for the bluetooth protocol stack
|
- | `brightnessctl` | Lightweight brightness control tool
|
- | `fzf` | Command-line fuzzy finder
|
- | _(nmcli)_ `networkmanager` | Network connection manager and user applications
|
- | _(checkupdates)_ `pacman-contrib` | Contributed scripts and tools for pacman systems
|
- | `pipewire-pulse` | Low-latency audio/video router and processor - PulseAudio replacement
|
- | `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)
diff --git a/waybar/.github/assets/catppuccin-frappe.png b/waybar/.github/assets/catppuccin-frappe.png
deleted file mode 100644
index 30640f6..0000000
Binary files a/waybar/.github/assets/catppuccin-frappe.png and /dev/null differ
diff --git a/waybar/.github/assets/catppuccin-latte.png b/waybar/.github/assets/catppuccin-latte.png
deleted file mode 100644
index 5d877b6..0000000
Binary files a/waybar/.github/assets/catppuccin-latte.png and /dev/null differ
diff --git a/waybar/.github/assets/catppuccin-macchiato.png b/waybar/.github/assets/catppuccin-macchiato.png
deleted file mode 100644
index 6dbb312..0000000
Binary files a/waybar/.github/assets/catppuccin-macchiato.png and /dev/null differ
diff --git a/waybar/.github/assets/catppuccin-mocha.png b/waybar/.github/assets/catppuccin-mocha.png
deleted file mode 100644
index 2138776..0000000
Binary files a/waybar/.github/assets/catppuccin-mocha.png and /dev/null differ
diff --git a/waybar/LICENSE b/waybar/LICENSE
deleted file mode 100644
index 355f2ba..0000000
--- a/waybar/LICENSE
+++ /dev/null
@@ -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.
diff --git a/waybar/config.jsonc b/waybar/config.jsonc
index 604f3f5..1fc4bff 100644
--- a/waybar/config.jsonc
+++ b/waybar/config.jsonc
@@ -1,128 +1,478 @@
{
- /*------------------------------------------------------------
- regression: wildcard includes are broken after v0.14.0
- - https://github.com/Alexays/Waybar/issues/4354
- - https://github.com/sejjy/mechabar/issues/31
- ------------------------------------------------------------*/
- /*
- "include": [
- "~/.config/waybar/modules/*.jsonc",
- "~/.config/waybar/modules/custom/*.jsonc",
- "~/.config/waybar/modules/hyprland/*.jsonc"
+ "layer": "top",
+ "position": "top",
+ "mode": "dock",
+ "reload_style_on_change": true,
+ "gtk-layer-shell": true,
- // modules that are not included by default:
- // "~/.config/waybar/modules/extras/*.jsonc"
- ],
- */
+ // <<--< Positions >-->>
- "include": [
- // modules-left
- "~/.config/waybar/modules/custom/user.jsonc",
- "~/.config/waybar/modules/hyprland/workspaces.jsonc",
- "~/.config/waybar/modules/hyprland/window.jsonc",
+ "modules-left": [
+ "custom/ws", // window icon
+ "custom/left1",
- // 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",
+ "hyprland/workspaces", // workspaces
+ "custom/right1",
- // 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",
+ "custom/paddw",
+ "hyprland/window" // window title
+ ],
- "~/.config/waybar/modules/custom/dividers.jsonc"
+ "modules-center": [
+ "custom/paddc",
+ "custom/left2",
+ "custom/temperature", // temperature
- // 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"
- ],
+ "custom/left3",
+ "memory", // memory
- /*------------
- layout
- ------------*/
+ "custom/left4",
+ "cpu", // cpu
+ "custom/leftin1",
- "modules-left": [
- "group/user",
- "custom/left_div#1",
- "hyprland/workspaces",
- "custom/right_div#1",
- "hyprland/window"
- ],
- "modules-center": [
- "hyprland/windowcount",
- "custom/left_div#2",
- "temperature",
- "custom/left_div#3",
- "memory",
- "custom/left_div#4",
- "cpu",
- "custom/left_inv#1",
- "custom/left_div#5",
- "custom/distro",
- "custom/right_div#2",
- "custom/right_inv#1",
- "idle_inhibitor",
- "clock#time",
- "custom/right_div#3",
- "clock#date",
- "custom/right_div#4",
- "network",
- "bluetooth",
- "custom/system_update",
- "custom/right_div#5"
- ],
- "modules-right": [
- "mpris",
- "custom/left_div#6",
- "group/pulseaudio",
- "custom/left_div#7",
- "backlight",
- "custom/left_div#8",
- "battery",
- "custom/left_inv#2",
- "custom/power_menu"
- ],
+ "custom/left5",
+ "custom/distro", // distro icon
+ "custom/right2",
- /*-------------
- options
- -------------*/
+ "custom/rightin1",
+ "idle_inhibitor", // idle inhibitor
+ "clock#time", // time
+ "custom/right3",
- // "expand-center":
- // "expand-left":
- // "expand-right":
- "layer": "top",
- // "output":
- // "position":
- "height": 0,
- "width": 0,
- "margin": 0,
- // "margin-top":
- // "margin-left":
- // "margin-bottom":
- // "margin-right":
- // "no-center":
- "spacing": 0,
- // "name":
- "mode": "dock",
- // "start_hidden":
- // "modifier-reset":
- // "exclusive":
- // "fixed-center":
- // "passthrough":
- // "ipc":
- // "id":
- "reload_style_on_change": true
- // "on-sigusr1":
- // "on-sigusr2":
+ "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": {
+ "persistent-workspaces": {
+ "1": [],
+ "2": [],
+ "3": [],
+ "4": [],
+ "5": []
+ }
+ },
+
+ "hyprland/window": {
+ "format": "{}",
+ "tooltip": false,
+ "min-length": 5,
+
+ "rewrite": {
+ // Desktop
+ "":
+ " Hyprland",
+
+ // Terminal
+ "~": " Terminal",
+ "zsh": " Terminal",
+ "kitty": " Terminal",
+
+ "tmux(.*)":
+ " Tmux",
+
+ // Browser
+
+ "(.*)Mozilla Firefox":
+ " Firefox",
+ "(.*) — Mozilla Firefox":
+ " $1",
+
+ "(.*)Zen Browser":
+ " Zen Browser",
+ "(.*) — Zen Browser":
+ " $1",
+
+ // Development
+
+ "(.*) - Visual Studio Code":
+ " $1",
+ "(.*)Visual Studio Code":
+ " Visual Studio Code",
+
+ "nvim":
+ " Neovim",
+ "nvim (.*)":
+ " $1",
+
+ "vim":
+ " Vim",
+ "vim (.*)":
+ " $1",
+
+ // Media
+ "OBS(.*)":
+ " OBS Studio",
+
+ "VLC media player":
+ " VLC Media Player",
+ "(.*) - VLC media player":
+ " $1",
+
+ "(.*) - mpv":
+ " $1",
+
+ "qView": " qView",
+
+ "(.*).jpg": " $1.jpg",
+ "(.*).png": " $1.png",
+ "(.*).svg": " $1.svg",
+
+ // Social
+
+ "• Discord(.*)": "Discord$1",
+ "(.*)Discord(.*)":
+ " $1Discord$2",
+
+ // Documents
+
+ "ONLYOFFICE Desktop Editors":
+ " OnlyOffice Desktop",
+
+ "(.*).docx":
+ " $1.docx",
+ "(.*).xlsx":
+ " $1.xlsx",
+ "(.*).pptx":
+ " $1.pptx",
+ "(.*).pdf":
+ " $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": "{calendar}",
+
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 6,
+ "weeks-pos": "right",
+ "on-click-right": "mode",
+
+ "format": {
+ "months":
+ "{}",
+ "weekdays":
+ "{}",
+ "today":
+ "{}"
+ }
+ },
+
+ "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": " ",
+ "firefox": " "
+ },
+ "status-icons": {
+ "paused": "\u200A\u200A\u2009\u2009"
+ },
+
+ "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
+ }
}
diff --git a/waybar/config.jsonc.backup b/waybar/config.jsonc.backup
new file mode 100644
index 0000000..fc9305c
--- /dev/null
+++ b/waybar/config.jsonc.backup
@@ -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
+ "":
+ " Hyprland",
+
+ // Terminal
+ "~": " Terminal",
+ "zsh": " Terminal",
+ "kitty": " Terminal",
+
+ "tmux(.*)":
+ " Tmux",
+
+ // Browser
+
+ "(.*)Mozilla Firefox":
+ " Firefox",
+ "(.*) — Mozilla Firefox":
+ " $1",
+
+ "(.*)Zen Browser":
+ " Zen Browser",
+ "(.*) — Zen Browser":
+ " $1",
+
+ // Development
+
+ "(.*) - Visual Studio Code":
+ " $1",
+ "(.*)Visual Studio Code":
+ " Visual Studio Code",
+
+ "nvim":
+ " Neovim",
+ "nvim (.*)":
+ " $1",
+
+ "vim":
+ " Vim",
+ "vim (.*)":
+ " $1",
+
+ // Media
+
+ "(.*)Spotify":
+ " Spotify",
+ "(.*)Spotify Premium":
+ " Spotify Premium",
+
+ "OBS(.*)":
+ " OBS Studio",
+
+ "VLC media player":
+ " VLC Media Player",
+ "(.*) - VLC media player":
+ " $1",
+
+ "(.*) - mpv":
+ " $1",
+
+ "qView": " qView",
+
+ "(.*).jpg": " $1.jpg",
+ "(.*).png": " $1.png",
+ "(.*).svg": " $1.svg",
+
+ // Social
+
+ "vesktop":
+ " Discord",
+
+ "• Discord(.*)": "Discord$1",
+ "(.*)Discord(.*)":
+ " $1Discord$2",
+
+ // Documents
+
+ "ONLYOFFICE Desktop Editors":
+ " OnlyOffice Desktop",
+
+ "(.*).docx":
+ " $1.docx",
+ "(.*).xlsx":
+ " $1.xlsx",
+ "(.*).pptx":
+ " $1.pptx",
+ "(.*).pdf":
+ " $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": "{calendar}",
+
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 6,
+ "weeks-pos": "right",
+ "on-click-right": "mode",
+
+ "format": {
+ "months":
+ "{}",
+ "weekdays":
+ "{}",
+ "today":
+ "{}"
+ }
+ },
+
+ "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": " ",
+ "firefox": " "
+ },
+ "status-icons": {
+ "paused": "\u200A\u200A\u2009\u2009"
+ },
+
+ "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
+ }
+}
diff --git a/waybar/config.jsonc.original b/waybar/config.jsonc.original
new file mode 100644
index 0000000..86194e0
--- /dev/null
+++ b/waybar/config.jsonc.original
@@ -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
+ "":
+ " Hyprland",
+
+ // Terminal
+ "~": " Terminal",
+ "zsh": " Terminal",
+ "kitty": " Terminal",
+
+ "tmux(.*)":
+ " Tmux",
+
+ // Browser
+
+ "(.*)Mozilla Firefox":
+ " Firefox",
+ "(.*) — Mozilla Firefox":
+ " $1",
+
+ "(.*)Zen Browser":
+ " Zen Browser",
+ "(.*) — Zen Browser":
+ " $1",
+
+ // Development
+
+ "(.*) - Visual Studio Code":
+ " $1",
+ "(.*)Visual Studio Code":
+ " Visual Studio Code",
+
+ "nvim":
+ " Neovim",
+ "nvim (.*)":
+ " $1",
+
+ "vim":
+ " Vim",
+ "vim (.*)":
+ " $1",
+
+ // Media
+
+ "(.*)Spotify":
+ " Spotify",
+ "(.*)Spotify Premium":
+ " Spotify Premium",
+
+ "OBS(.*)":
+ " OBS Studio",
+
+ "VLC media player":
+ " VLC Media Player",
+ "(.*) - VLC media player":
+ " $1",
+
+ "(.*) - mpv":
+ " $1",
+
+ "qView": " qView",
+
+ "(.*).jpg": " $1.jpg",
+ "(.*).png": " $1.png",
+ "(.*).svg": " $1.svg",
+
+ // Social
+
+ "vesktop":
+ " Discord",
+
+ "• Discord(.*)": "Discord$1",
+ "(.*)Discord(.*)":
+ " $1Discord$2",
+
+ // Documents
+
+ "ONLYOFFICE Desktop Editors":
+ " OnlyOffice Desktop",
+
+ "(.*).docx":
+ " $1.docx",
+ "(.*).xlsx":
+ " $1.xlsx",
+ "(.*).pptx":
+ " $1.pptx",
+ "(.*).pdf":
+ " $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": "{calendar}",
+
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 6,
+ "on-click-right": "mode",
+
+ "format": {
+ "months":
+ "{}",
+ "weekdays":
+ "{}",
+ "today":
+ "{}"
+ }
+ },
+
+ "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": " ",
+ "firefox": " "
+ },
+ "status-icons": {
+ "paused": "\u200A\u200A\u2009\u2009"
+ },
+
+ "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
+ }
+}
diff --git a/waybar/install.sh b/waybar/install.sh
deleted file mode 100755
index 70a5095..0000000
--- a/waybar/install.sh
+++ /dev/null
@@ -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
diff --git a/waybar/modules/backlight.jsonc b/waybar/modules/backlight.jsonc
deleted file mode 100644
index d5b53fc..0000000
--- a/waybar/modules/backlight.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/modules/battery.jsonc b/waybar/modules/battery.jsonc
deleted file mode 100644
index 1df2f70..0000000
--- a/waybar/modules/battery.jsonc
+++ /dev/null
@@ -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'"
- }
- }
-}
diff --git a/waybar/modules/bluetooth.jsonc b/waybar/modules/bluetooth.jsonc
deleted file mode 100644
index 3113870..0000000
--- a/waybar/modules/bluetooth.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/modules/clock.jsonc b/waybar/modules/clock.jsonc
deleted file mode 100644
index 13c7edf..0000000
--- a/waybar/modules/clock.jsonc
+++ /dev/null
@@ -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": "{}",
- "days": "{}",
- // "weeks":
- "weekdays": "{}",
- "today": "{}"
- }
- },
- "actions": {
- "on-click": "mode"
- // "on-click-middle":
- // "on-click-right":
- // "on-scroll-up":
- // "on-scroll-down":
- }
- }
-}
diff --git a/waybar/modules/cpu.jsonc b/waybar/modules/cpu.jsonc
deleted file mode 100644
index 67ac8a5..0000000
--- a/waybar/modules/cpu.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/modules/custom/distro.jsonc b/waybar/modules/custom/distro.jsonc
deleted file mode 100644
index 62c86ea..0000000
--- a/waybar/modules/custom/distro.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/modules/custom/dividers.jsonc b/waybar/modules/custom/dividers.jsonc
deleted file mode 100644
index b1944a0..0000000
--- a/waybar/modules/custom/dividers.jsonc
+++ /dev/null
@@ -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
- }
-}
diff --git a/waybar/modules/custom/power_menu.jsonc b/waybar/modules/custom/power_menu.jsonc
deleted file mode 100644
index c438735..0000000
--- a/waybar/modules/custom/power_menu.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/modules/custom/system_update.jsonc b/waybar/modules/custom/system_update.jsonc
deleted file mode 100644
index b3106cf..0000000
--- a/waybar/modules/custom/system_update.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/modules/custom/user.jsonc b/waybar/modules/custom/user.jsonc
deleted file mode 100644
index 9046dfe..0000000
--- a/waybar/modules/custom/user.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/modules/extras/taskbar.jsonc b/waybar/modules/extras/taskbar.jsonc
deleted file mode 100644
index 245ca32..0000000
--- a/waybar/modules/extras/taskbar.jsonc
+++ /dev/null
@@ -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
- }
-}
diff --git a/waybar/modules/extras/tray.jsonc b/waybar/modules/extras/tray.jsonc
deleted file mode 100644
index c576fdb..0000000
--- a/waybar/modules/extras/tray.jsonc
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "tray": {
- "icon-size": 16,
- // "show-passive-items":
- // "smooth-scrolling-threshold":
- "spacing": 12,
- // "reverse-direction":
- // "on-update":
- // "expand":
- // "icons":
- "cursor": true
- }
-}
diff --git a/waybar/modules/extras/wireplumber.jsonc b/waybar/modules/extras/wireplumber.jsonc
deleted file mode 100644
index 7bfc14e..0000000
--- a/waybar/modules/extras/wireplumber.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/modules/hyprland/window.jsonc b/waybar/modules/hyprland/window.jsonc
deleted file mode 100644
index caca1cd..0000000
--- a/waybar/modules/hyprland/window.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/modules/hyprland/windowcount.jsonc b/waybar/modules/hyprland/windowcount.jsonc
deleted file mode 100644
index 65e959d..0000000
--- a/waybar/modules/hyprland/windowcount.jsonc
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "hyprland/windowcount": {
- "format": "[{}]",
- // "format-empty":
- // "format-windowed":
- // "format-fullscreen":
- // "separate-outputs":
- // "min-length":
- // "max-length":
- "swap-icon-label": false
- }
-}
diff --git a/waybar/modules/hyprland/workspaces.jsonc b/waybar/modules/hyprland/workspaces.jsonc
deleted file mode 100644
index 864fcac..0000000
--- a/waybar/modules/hyprland/workspaces.jsonc
+++ /dev/null
@@ -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
- }
-}
diff --git a/waybar/modules/idle_inhibitor.jsonc b/waybar/modules/idle_inhibitor.jsonc
deleted file mode 100644
index 36f3186..0000000
--- a/waybar/modules/idle_inhibitor.jsonc
+++ /dev/null
@@ -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: {status}",
- "tooltip-format-deactivated": "Keep Screen On: {status}",
- "start-activated": false
- // "timeout":
- // "menu":
- // "menu-file":
- // "menu-actions":
- // "expand":
- }
-}
diff --git a/waybar/modules/memory.jsonc b/waybar/modules/memory.jsonc
deleted file mode 100644
index e9d6ab8..0000000
--- a/waybar/modules/memory.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/modules/mpris.jsonc b/waybar/modules/mpris.jsonc
deleted file mode 100644
index 51218b4..0000000
--- a/waybar/modules/mpris.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/modules/network.jsonc b/waybar/modules/network.jsonc
deleted file mode 100644
index 5095e90..0000000
--- a/waybar/modules/network.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/modules/pulseaudio.jsonc b/waybar/modules/pulseaudio.jsonc
deleted file mode 100644
index b32c9e2..0000000
--- a/waybar/modules/pulseaudio.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/modules/temperature.jsonc b/waybar/modules/temperature.jsonc
deleted file mode 100644
index 9c7b0d1..0000000
--- a/waybar/modules/temperature.jsonc
+++ /dev/null
@@ -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":
- }
-}
diff --git a/waybar/scripts/backlight.sh b/waybar/scripts/backlight.sh
deleted file mode 100755
index bba254a..0000000
--- a/waybar/scripts/backlight.sh
+++ /dev/null
@@ -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
-# 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 Increase brightness by
- down Decrease brightness by
- 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 "$@"
diff --git a/waybar/scripts/battery-level.sh b/waybar/scripts/battery-level.sh
new file mode 100755
index 0000000..ddde6ea
--- /dev/null
+++ b/waybar/scripts/battery-level.sh
@@ -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
diff --git a/waybar/scripts/battery-state.sh b/waybar/scripts/battery-state.sh
new file mode 100755
index 0000000..d7cf5fc
--- /dev/null
+++ b/waybar/scripts/battery-state.sh
@@ -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 -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 -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 "" with your username.
+
+# reload udev rules by running the following command:
+# sudo udevadm control --reload-rules
diff --git a/waybar/scripts/bluetooth-menu.sh b/waybar/scripts/bluetooth-menu.sh
new file mode 100755
index 0000000..40642fd
--- /dev/null
+++ b/waybar/scripts/bluetooth-menu.sh
@@ -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
diff --git a/waybar/scripts/bluetooth.sh b/waybar/scripts/bluetooth.sh
deleted file mode 100755
index 5037204..0000000
--- a/waybar/scripts/bluetooth.sh
+++ /dev/null
@@ -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
-# 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
diff --git a/waybar/scripts/brightness-control.sh b/waybar/scripts/brightness-control.sh
new file mode 100755
index 0000000..28fa223
--- /dev/null
+++ b/waybar/scripts/brightness-control.sh
@@ -0,0 +1,92 @@
+#!/usr/bin/env bash
+
+# Print error message for invalid arguments
+print_error() {
+ cat <<"EOF"
+Usage: ./brightnesscontrol.sh
+Valid actions are:
+ i -- ncrease brightness [+2%]
+ 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}\"}"
diff --git a/waybar/scripts/cpu-temp.sh b/waybar/scripts/cpu-temp.sh
new file mode 100755
index 0000000..b6f2355
--- /dev/null
+++ b/waybar/scripts/cpu-temp.sh
@@ -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="${thermo_icon} ${temp}°C"
+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\"}"
diff --git a/waybar/scripts/current-theme.sh b/waybar/scripts/current-theme.sh
new file mode 100755
index 0000000..b7d5db6
--- /dev/null
+++ b/waybar/scripts/current-theme.sh
@@ -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\"}"
diff --git a/waybar/scripts/fzf-colors.sh b/waybar/scripts/fzf-colors.sh
deleted file mode 100755
index ae577ba..0000000
--- a/waybar/scripts/fzf-colors.sh
+++ /dev/null
@@ -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
diff --git a/waybar/scripts/network.sh b/waybar/scripts/network.sh
deleted file mode 100755
index db34eec..0000000
--- a/waybar/scripts/network.sh
+++ /dev/null
@@ -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
-# 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
diff --git a/waybar/scripts/power-menu.sh b/waybar/scripts/power-menu.sh
index b1430fd..ae971c9 100755
--- a/waybar/scripts/power-menu.sh
+++ b/waybar/scripts/power-menu.sh
@@ -1,49 +1,30 @@
#!/usr/bin/env bash
-#
-# Display a power menu to perform system actions
-#
-# Requirements:
-# - fzf
-#
-# Author: Jesse Mirabel
-# Created: August 19, 2025
-# License: MIT
-LIST=(
- 'Lock'
- 'Shutdown'
- 'Reboot'
- 'Logout'
- 'Hibernate'
- 'Suspend'
-)
+config="$HOME/.config/rofi/power-menu.rasi"
-main() {
- # shellcheck disable=SC1090
- . ~/.config/waybar/scripts/fzf-colors.sh 2> /dev/null
+actions=$(echo -e " Lock\n Shutdown\n Reboot\n Suspend\n Hibernate\n Logout")
- local opts=(
- --border=sharp
- --border-label=' Power Menu '
- --height=~100%
- --highlight-line
- --no-input
- --pointer=
- --reverse
- "${COLORS[@]}"
- )
+# Display logout menu
+selected_option=$(echo -e "$actions" | rofi -dmenu -i -config "${config}" || pkill -x rofi)
- local selected
- selected=$(printf '%s\n' "${LIST[@]}" | fzf "${opts[@]}")
-
- case $selected in
- 'Lock') loginctl lock-session ;;
- 'Shutdown') systemctl poweroff ;;
- 'Reboot') systemctl reboot ;;
- 'Logout') loginctl terminate-session "$XDG_SESSION_ID" ;;
- 'Hibernate') systemctl hibernate ;;
- 'Suspend') systemctl suspend ;;
- esac
-}
-
-main
+# Perform actions based on the selected option
+case "$selected_option" in
+*Lock)
+ loginctl lock-session
+ ;;
+*Shutdown)
+ systemctl poweroff
+ ;;
+*Reboot)
+ systemctl reboot
+ ;;
+*Suspend)
+ systemctl suspend
+ ;;
+*Hibernate)
+ systemctl hibernate
+ ;;
+*Logout)
+ loginctl kill-session "$XDG_SESSION_ID"
+ ;;
+esac
diff --git a/waybar/scripts/system-update.sh b/waybar/scripts/system-update.sh
index 35c4cf9..f68cbbf 100755
--- a/waybar/scripts/system-update.sh
+++ b/waybar/scripts/system-update.sh
@@ -1,82 +1,107 @@
#!/usr/bin/env bash
-#
-# Check for available updates and optionally upgrade packages on Arch Linux.
-#
-# Requirements:
-# - checkupdates (pacman-contrib)
-# - notify-send (libnotify)
-# - optional: an AUR helper (aura, paru, pikaur, trizen, yay)
-#
-# Author: Jesse Mirabel
-# Created: August 16, 2025
-# License: MIT
+# Check release
+if [ ! -f /etc/arch-release ]; then
+ exit 0
+fi
-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
+pkg_installed() {
+ local pkg=$1
+ if pacman -Qi "${pkg}" &>/dev/null; then
+ return 0
+ elif command -v "${pkg}" &>/dev/null; then
+ return 0
+ else
+ return 1
+ 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...'
+get_aur_helper() {
+ if command -v yay &>/dev/null; then
+ aur_helper="yay"
+ elif command -v paru &>/dev/null; then
+ aur_helper="paru"
+ else
+ aur_helper=""
+ fi
}
-display-module() {
- local tooltip="Official: $repo"
+get_aur_helper
- if [[ -n $helper ]]; then
- tooltip+="\nAUR($helper): $aur"
- fi
+# 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
- local total=$((repo + aur))
+# 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))
- if ((total == 0)); then
- echo "{ \"text\": \"\", \"tooltip\": \"No updates available\" }"
- else
- echo "{ \"text\": \"\", \"tooltip\": \"$tooltip\" }"
- fi
-}
+# 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
-main() {
- local arg=$1
- local helpers=(aura paru pikaur trizen yay)
- local bin
+# 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
- bin=$(command -v "${helpers[@]}" | head -n 1)
- helper=${bin##*/}
- repo=0
- aur=0
+# Calculate total available updates
+total_updates=$((official_updates + aur_updates + flatpak_updates))
- case $arg in
- 'module')
- check-updates
- display-module
- ;;
- *)
- printf '%bChecking for updates...%b' "$BLU" "$RST"
- check-updates
- update-packages
- ;;
- esac
-}
+# 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
-main "$@"
+# 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
diff --git a/waybar/scripts/theme-switcher.sh b/waybar/scripts/theme-switcher.sh
new file mode 100755
index 0000000..d5f1aca
--- /dev/null
+++ b/waybar/scripts/theme-switcher.sh
@@ -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 &
diff --git a/waybar/scripts/volume-control.sh b/waybar/scripts/volume-control.sh
new file mode 100755
index 0000000..76bb2f7
--- /dev/null
+++ b/waybar/scripts/volume-control.sh
@@ -0,0 +1,123 @@
+#!/usr/bin/env bash
+
+# Define functions
+print_error() {
+ cat <<"EOF"
+Usage: ./volumecontrol.sh -[device]
+...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
diff --git a/waybar/scripts/volume.sh b/waybar/scripts/volume.sh
deleted file mode 100755
index 7105acf..0000000
--- a/waybar/scripts/volume.sh
+++ /dev/null
@@ -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
-# 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 Raise volume by
- lower Lower volume by
- 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 "$@"
diff --git a/waybar/scripts/wifi-menu.sh b/waybar/scripts/wifi-menu.sh
new file mode 100755
index 0000000..470722c
--- /dev/null
+++ b/waybar/scripts/wifi-menu.sh
@@ -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
diff --git a/waybar/scripts/wifi-status.sh b/waybar/scripts/wifi-status.sh
new file mode 100755
index 0000000..8e52bca
--- /dev/null
+++ b/waybar/scripts/wifi-status.sh
@@ -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}\"}"
diff --git a/waybar/style.css b/waybar/style.css
index d988247..0a44cfe 100644
--- a/waybar/style.css
+++ b/waybar/style.css
@@ -1,12 +1,476 @@
-/* ignore GTK theme */
+@import "theme.css";
+
* {
- all: initial;
+ min-height: 0;
+ border: none;
+ margin: 0;
+ padding: 0;
}
-@import "theme.css";
-@import "styles/fonts.css";
-@import "styles/global.css";
-@import "styles/modules-center.css";
-@import "styles/modules-left.css";
-@import "styles/modules-right.css";
-@import "styles/states.css";
+/* ----------------------------------------------------- MAIN BACKGROUND --- */
+
+window#waybar>box {
+ background: @main-bg;
+ margin: 2px;
+}
+
+/* --------------------------------------------------------- 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;
+}
diff --git a/waybar/styles/fonts.css b/waybar/styles/fonts.css
deleted file mode 100644
index 0fd69f9..0000000
--- a/waybar/styles/fonts.css
+++ /dev/null
@@ -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;
-}
diff --git a/waybar/styles/global.css b/waybar/styles/global.css
deleted file mode 100644
index e0d2daf..0000000
--- a/waybar/styles/global.css
+++ /dev/null
@@ -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;
-}
diff --git a/waybar/styles/modules-center.css b/waybar/styles/modules-center.css
deleted file mode 100644
index 8647310..0000000
--- a/waybar/styles/modules-center.css
+++ /dev/null
@@ -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;
-}
diff --git a/waybar/styles/modules-left.css b/waybar/styles/modules-left.css
deleted file mode 100644
index 45b2959..0000000
--- a/waybar/styles/modules-left.css
+++ /dev/null
@@ -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;
-}
diff --git a/waybar/styles/modules-right.css b/waybar/styles/modules-right.css
deleted file mode 100644
index 50f2598..0000000
--- a/waybar/styles/modules-right.css
+++ /dev/null
@@ -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;
-}
diff --git a/waybar/styles/states.css b/waybar/styles/states.css
deleted file mode 100644
index a1c52f8..0000000
--- a/waybar/styles/states.css
+++ /dev/null
@@ -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;
-}
diff --git a/waybar/theme.css b/waybar/theme.css
index 7e5a575..881c68e 100644
--- a/waybar/theme.css
+++ b/waybar/theme.css
@@ -1,32 +1,30 @@
-/* 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;
-
+/* Custom Theme - Warm Muted with Orange Accents */
+@define-color bg0_h #1c1c1f;
+@define-color bg0 #1c1c1f;
+@define-color bg1 #252529;
+@define-color bg2 #2d2d33;
+@define-color bg3 #35353d;
+@define-color bg4 #3d3d47;
+@define-color gray #6d6860;
+@define-color fg4 #7d7972;
+@define-color fg3 #8a8580;
+@define-color fg2 #ff9100;
+@define-color fg1 #b39a76;
+@define-color fg0 #c9b08a;
+@define-color red #ff0000;
+@define-color bright_red #ff0000;
+@define-color green #ff9100;
+@define-color bright_green #b39a76;
+@define-color yellow #ff9100;
+@define-color bright_yellow #ff9100;
+@define-color blue #ff9100;
+@define-color bright_blue #b39a76;
+@define-color purple #ff9100;
+@define-color bright_purple #b39a76;
+@define-color aqua #ff9100;
+@define-color bright_aqua #b39a76;
+@define-color orange #ff9100;
+@define-color bright_orange #ff9100;
@define-color white #ffffff;
@define-color black #000000;
@@ -37,40 +35,32 @@
*/
/* Main Colors */
-
-@define-color outline shade(@bg0_h, 0.5);
-@define-color accent @orange;
-@define-color main-fg @fg0;
+@define-color shadow shade(@bg0_h, 0.5);
+@define-color main-fg @fg2;
@define-color main-bg @bg0_h;
-@define-color main-br @fg0;
-
-@define-color active-bg @yellow;
-@define-color active-fg @bg0_h;
-
+@define-color main-br @fg2;
+@define-color active-bg @orange;
+@define-color active-fg @black;
@define-color hover-bg @bg2;
-@define-color hover-fg alpha(@fg0, 0.75);
+@define-color hover-fg @fg1;
/* 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 module-fg @fg2;
+@define-color workspaces @bg1;
+@define-color temperature @bg1;
+@define-color memory @bg2;
+@define-color cpu @bg3;
@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;
+@define-color distro-bg @orange;
+@define-color time @bg3;
+@define-color date @bg2;
+@define-color tray @bg1;
+@define-color pulseaudio @bg1;
+@define-color backlight @bg2;
+@define-color battery @bg3;
+@define-color power @orange;
/* State Colors */
-
-@define-color warning @bright_orange;
-@define-color critical @bright_red;
-@define-color charging @fg0;
+@define-color warning @orange;
+@define-color critical @red;
+@define-color charging @fg2;
diff --git a/waybar/themes/catppuccin-frappe.css b/waybar/themes/catppuccin-frappe.css
deleted file mode 100644
index d83c7bd..0000000
--- a/waybar/themes/catppuccin-frappe.css
+++ /dev/null
@@ -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;
diff --git a/waybar/themes/catppuccin-latte.css b/waybar/themes/catppuccin-latte.css
deleted file mode 100644
index fa1aaf8..0000000
--- a/waybar/themes/catppuccin-latte.css
+++ /dev/null
@@ -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;
diff --git a/waybar/themes/catppuccin-macchiato.css b/waybar/themes/catppuccin-macchiato.css
deleted file mode 100644
index 97b3be9..0000000
--- a/waybar/themes/catppuccin-macchiato.css
+++ /dev/null
@@ -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;
diff --git a/waybar/themes/catppuccin-mocha.css b/waybar/themes/catppuccin-mocha.css
deleted file mode 100644
index 68f2927..0000000
--- a/waybar/themes/catppuccin-mocha.css
+++ /dev/null
@@ -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;
diff --git a/waybar/themes/css/catppuccin-frappe.css b/waybar/themes/css/catppuccin-frappe.css
new file mode 100644
index 0000000..a079f18
--- /dev/null
+++ b/waybar/themes/css/catppuccin-frappe.css
@@ -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;
diff --git a/waybar/themes/css/catppuccin-latte.css b/waybar/themes/css/catppuccin-latte.css
new file mode 100644
index 0000000..ecd734f
--- /dev/null
+++ b/waybar/themes/css/catppuccin-latte.css
@@ -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;
diff --git a/waybar/themes/css/catppuccin-macchiato.css b/waybar/themes/css/catppuccin-macchiato.css
new file mode 100644
index 0000000..cdc4737
--- /dev/null
+++ b/waybar/themes/css/catppuccin-macchiato.css
@@ -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;
diff --git a/waybar/themes/css/catppuccin-mocha.css b/waybar/themes/css/catppuccin-mocha.css
new file mode 100644
index 0000000..244598f
--- /dev/null
+++ b/waybar/themes/css/catppuccin-mocha.css
@@ -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;
diff --git a/waybar/themes/gruvbox-dark.css b/waybar/themes/css/gruvbox-dark.css
similarity index 96%
rename from waybar/themes/gruvbox-dark.css
rename to waybar/themes/css/gruvbox-dark.css
index 7e5a575..32ce8d7 100644
--- a/waybar/themes/gruvbox-dark.css
+++ b/waybar/themes/css/gruvbox-dark.css
@@ -38,8 +38,7 @@
/* Main Colors */
-@define-color outline shade(@bg0_h, 0.5);
-@define-color accent @orange;
+@define-color shadow shade(@bg0_h, 0.5);
@define-color main-fg @fg0;
@define-color main-bg @bg0_h;
@define-color main-br @fg0;
diff --git a/waybar/themes/css/gruvbox-light.css b/waybar/themes/css/gruvbox-light.css
new file mode 100644
index 0000000..01db6d1
--- /dev/null
+++ b/waybar/themes/css/gruvbox-light.css
@@ -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;
diff --git a/waybar/themes/current-theme b/waybar/themes/current-theme
new file mode 100644
index 0000000..6a7a63c
--- /dev/null
+++ b/waybar/themes/current-theme
@@ -0,0 +1 @@
+/home/saeijou/.config/waybar/themes/css/gruvbox-dark.css
diff --git a/waybar/themes/gruvbox-theme.css b/waybar/themes/gruvbox-theme.css
new file mode 100644
index 0000000..32ce8d7
--- /dev/null
+++ b/waybar/themes/gruvbox-theme.css
@@ -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;
diff --git a/waybar/themes/jsonc/catppuccin-frappe.jsonc b/waybar/themes/jsonc/catppuccin-frappe.jsonc
new file mode 100644
index 0000000..d740ef9
--- /dev/null
+++ b/waybar/themes/jsonc/catppuccin-frappe.jsonc
@@ -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
+ "":
+ " Hyprland",
+
+ // Terminal
+ "~": " Terminal",
+ "zsh": " Terminal",
+ "kitty": " Terminal",
+
+ "tmux(.*)":
+ " Tmux",
+
+ // Browser
+
+ "(.*)Mozilla Firefox":
+ " Firefox",
+ "(.*) — Mozilla Firefox":
+ " $1",
+
+ "(.*)Zen Browser":
+ " Zen Browser",
+ "(.*) — Zen Browser":
+ " $1",
+
+ // Development
+
+ "(.*) - Visual Studio Code":
+ " $1",
+ "(.*)Visual Studio Code":
+ " Visual Studio Code",
+
+ "nvim":
+ " Neovim",
+ "nvim (.*)":
+ " $1",
+
+ "vim":
+ " Vim",
+ "vim (.*)":
+ " $1",
+
+ // Media
+
+ "(.*)Spotify":
+ " Spotify",
+ "(.*)Spotify Premium":
+ " Spotify Premium",
+
+ "OBS(.*)":
+ " OBS Studio",
+
+ "VLC media player":
+ " VLC Media Player",
+ "(.*) - VLC media player":
+ " $1",
+
+ "(.*) - mpv":
+ " $1",
+
+ "qView": " qView",
+
+ "(.*).jpg": " $1.jpg",
+ "(.*).png": " $1.png",
+ "(.*).svg": " $1.svg",
+
+ // Social
+
+ "vesktop":
+ " Discord",
+
+ "• Discord(.*)": "Discord$1",
+ "(.*)Discord(.*)":
+ " $1Discord$2",
+
+ // Documents
+
+ "ONLYOFFICE Desktop Editors":
+ " OnlyOffice Desktop",
+
+ "(.*).docx":
+ " $1.docx",
+ "(.*).xlsx":
+ " $1.xlsx",
+ "(.*).pptx":
+ " $1.pptx",
+ "(.*).pdf":
+ " $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": "{calendar}",
+
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 6,
+ "on-click-right": "mode",
+
+ "format": {
+ "months":
+ "{}",
+ "weekdays":
+ "{}",
+ "today":
+ "{}"
+ }
+ },
+
+ "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": " ",
+ "firefox": " "
+ },
+ "status-icons": {
+ "paused": "\u200A\u200A\u2009\u2009"
+ },
+
+ "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
+ }
+}
diff --git a/waybar/themes/jsonc/catppuccin-latte.jsonc b/waybar/themes/jsonc/catppuccin-latte.jsonc
new file mode 100644
index 0000000..a76e81f
--- /dev/null
+++ b/waybar/themes/jsonc/catppuccin-latte.jsonc
@@ -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
+ "":
+ " Hyprland",
+
+ // Terminal
+ "~": " Terminal",
+ "zsh": " Terminal",
+ "kitty": " Terminal",
+
+ "tmux(.*)":
+ " Tmux",
+
+ // Browser
+
+ "(.*)Mozilla Firefox":
+ " Firefox",
+ "(.*) — Mozilla Firefox":
+ " $1",
+
+ "(.*)Zen Browser":
+ " Zen Browser",
+ "(.*) — Zen Browser":
+ " $1",
+
+ // Development
+
+ "(.*) - Visual Studio Code":
+ " $1",
+ "(.*)Visual Studio Code":
+ " Visual Studio Code",
+
+ "nvim":
+ " Neovim",
+ "nvim (.*)":
+ " $1",
+
+ "vim":
+ " Vim",
+ "vim (.*)":
+ " $1",
+
+ // Media
+
+ "(.*)Spotify":
+ " Spotify",
+ "(.*)Spotify Premium":
+ " Spotify Premium",
+
+ "OBS(.*)":
+ " OBS Studio",
+
+ "VLC media player":
+ " VLC Media Player",
+ "(.*) - VLC media player":
+ " $1",
+
+ "(.*) - mpv":
+ " $1",
+
+ "qView": " qView",
+
+ "(.*).jpg": " $1.jpg",
+ "(.*).png": " $1.png",
+ "(.*).svg": " $1.svg",
+
+ // Social
+
+ "vesktop":
+ " Discord",
+
+ "• Discord(.*)": "Discord$1",
+ "(.*)Discord(.*)":
+ " $1Discord$2",
+
+ // Documents
+
+ "ONLYOFFICE Desktop Editors":
+ " OnlyOffice Desktop",
+
+ "(.*).docx":
+ " $1.docx",
+ "(.*).xlsx":
+ " $1.xlsx",
+ "(.*).pptx":
+ " $1.pptx",
+ "(.*).pdf":
+ " $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": "{calendar}",
+
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 6,
+ "on-click-right": "mode",
+
+ "format": {
+ "months":
+ "{}",
+ "weekdays":
+ "{}",
+ "today":
+ "{}"
+ }
+ },
+
+ "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": " ",
+ "firefox": " "
+ },
+ "status-icons": {
+ "paused": "\u200A\u200A\u2009\u2009"
+ },
+
+ "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
+ }
+}
diff --git a/waybar/themes/jsonc/catppuccin-macchiato.jsonc b/waybar/themes/jsonc/catppuccin-macchiato.jsonc
new file mode 100644
index 0000000..86194e0
--- /dev/null
+++ b/waybar/themes/jsonc/catppuccin-macchiato.jsonc
@@ -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
+ "":
+ " Hyprland",
+
+ // Terminal
+ "~": " Terminal",
+ "zsh": " Terminal",
+ "kitty": " Terminal",
+
+ "tmux(.*)":
+ " Tmux",
+
+ // Browser
+
+ "(.*)Mozilla Firefox":
+ " Firefox",
+ "(.*) — Mozilla Firefox":
+ " $1",
+
+ "(.*)Zen Browser":
+ " Zen Browser",
+ "(.*) — Zen Browser":
+ " $1",
+
+ // Development
+
+ "(.*) - Visual Studio Code":
+ " $1",
+ "(.*)Visual Studio Code":
+ " Visual Studio Code",
+
+ "nvim":
+ " Neovim",
+ "nvim (.*)":
+ " $1",
+
+ "vim":
+ " Vim",
+ "vim (.*)":
+ " $1",
+
+ // Media
+
+ "(.*)Spotify":
+ " Spotify",
+ "(.*)Spotify Premium":
+ " Spotify Premium",
+
+ "OBS(.*)":
+ " OBS Studio",
+
+ "VLC media player":
+ " VLC Media Player",
+ "(.*) - VLC media player":
+ " $1",
+
+ "(.*) - mpv":
+ " $1",
+
+ "qView": " qView",
+
+ "(.*).jpg": " $1.jpg",
+ "(.*).png": " $1.png",
+ "(.*).svg": " $1.svg",
+
+ // Social
+
+ "vesktop":
+ " Discord",
+
+ "• Discord(.*)": "Discord$1",
+ "(.*)Discord(.*)":
+ " $1Discord$2",
+
+ // Documents
+
+ "ONLYOFFICE Desktop Editors":
+ " OnlyOffice Desktop",
+
+ "(.*).docx":
+ " $1.docx",
+ "(.*).xlsx":
+ " $1.xlsx",
+ "(.*).pptx":
+ " $1.pptx",
+ "(.*).pdf":
+ " $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": "{calendar}",
+
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 6,
+ "on-click-right": "mode",
+
+ "format": {
+ "months":
+ "{}",
+ "weekdays":
+ "{}",
+ "today":
+ "{}"
+ }
+ },
+
+ "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": " ",
+ "firefox": " "
+ },
+ "status-icons": {
+ "paused": "\u200A\u200A\u2009\u2009"
+ },
+
+ "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
+ }
+}
diff --git a/waybar/themes/jsonc/catppuccin-mocha.jsonc b/waybar/themes/jsonc/catppuccin-mocha.jsonc
new file mode 100644
index 0000000..4125b3d
--- /dev/null
+++ b/waybar/themes/jsonc/catppuccin-mocha.jsonc
@@ -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
+ "":
+ " Hyprland",
+
+ // Terminal
+ "~": " Terminal",
+ "zsh": " Terminal",
+ "kitty": " Terminal",
+
+ "tmux(.*)":
+ " Tmux",
+
+ // Browser
+
+ "(.*)Mozilla Firefox":
+ " Firefox",
+ "(.*) — Mozilla Firefox":
+ " $1",
+
+ "(.*)Zen Browser":
+ " Zen Browser",
+ "(.*) — Zen Browser":
+ " $1",
+
+ // Development
+
+ "(.*) - Visual Studio Code":
+ " $1",
+ "(.*)Visual Studio Code":
+ " Visual Studio Code",
+
+ "nvim":
+ " Neovim",
+ "nvim (.*)":
+ " $1",
+
+ "vim":
+ " Vim",
+ "vim (.*)":
+ " $1",
+
+ // Media
+
+ "(.*)Spotify":
+ " Spotify",
+ "(.*)Spotify Premium":
+ " Spotify Premium",
+
+ "OBS(.*)":
+ " OBS Studio",
+
+ "VLC media player":
+ " VLC Media Player",
+ "(.*) - VLC media player":
+ " $1",
+
+ "(.*) - mpv":
+ " $1",
+
+ "qView": " qView",
+
+ "(.*).jpg": " $1.jpg",
+ "(.*).png": " $1.png",
+ "(.*).svg": " $1.svg",
+
+ // Social
+
+ "vesktop":
+ " Discord",
+
+ "• Discord(.*)": "Discord$1",
+ "(.*)Discord(.*)":
+ " $1Discord$2",
+
+ // Documents
+
+ "ONLYOFFICE Desktop Editors":
+ " OnlyOffice Desktop",
+
+ "(.*).docx":
+ " $1.docx",
+ "(.*).xlsx":
+ " $1.xlsx",
+ "(.*).pptx":
+ " $1.pptx",
+ "(.*).pdf":
+ " $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": "{calendar}",
+
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 6,
+ "on-click-right": "mode",
+
+ "format": {
+ "months":
+ "{}",
+ "weekdays":
+ "{}",
+ "today":
+ "{}"
+ }
+ },
+
+ "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": " ",
+ "firefox": " "
+ },
+ "status-icons": {
+ "paused": "\u200A\u200A\u2009\u2009"
+ },
+
+ "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
+ }
+}
diff --git a/waybar/themes/jsonc/gruvbox-dark.jsonc b/waybar/themes/jsonc/gruvbox-dark.jsonc
new file mode 100644
index 0000000..64dad16
--- /dev/null
+++ b/waybar/themes/jsonc/gruvbox-dark.jsonc
@@ -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
+ "":
+ " Hyprland",
+
+ // Terminal
+ "~": " Terminal",
+ "zsh": " Terminal",
+ "kitty": " Terminal",
+
+ "tmux(.*)":
+ " Tmux",
+
+ // Browser
+
+ "(.*)Mozilla Firefox":
+ " Firefox",
+ "(.*) — Mozilla Firefox":
+ " $1",
+
+ "(.*)Zen Browser":
+ " Zen Browser",
+ "(.*) — Zen Browser":
+ " $1",
+
+ // Development
+
+ "(.*) - Visual Studio Code":
+ " $1",
+ "(.*)Visual Studio Code":
+ " Visual Studio Code",
+
+ "nvim":
+ " Neovim",
+ "nvim (.*)":
+ " $1",
+
+ "vim":
+ " Vim",
+ "vim (.*)":
+ " $1",
+
+ // Media
+
+ "(.*)Spotify":
+ " Spotify",
+ "(.*)Spotify Premium":
+ " Spotify Premium",
+
+ "OBS(.*)":
+ " OBS Studio",
+
+ "VLC media player":
+ " VLC Media Player",
+ "(.*) - VLC media player":
+ " $1",
+
+ "(.*) - mpv":
+ " $1",
+
+ "qView": " qView",
+
+ "(.*).jpg": " $1.jpg",
+ "(.*).png": " $1.png",
+ "(.*).svg": " $1.svg",
+
+ // Social
+
+ "vesktop":
+ " Discord",
+
+ "• Discord(.*)": "Discord$1",
+ "(.*)Discord(.*)":
+ " $1Discord$2",
+
+ // Documents
+
+ "ONLYOFFICE Desktop Editors":
+ " OnlyOffice Desktop",
+
+ "(.*).docx":
+ " $1.docx",
+ "(.*).xlsx":
+ " $1.xlsx",
+ "(.*).pptx":
+ " $1.pptx",
+ "(.*).pdf":
+ " $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": "{calendar}",
+
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 6,
+ "on-click-right": "mode",
+
+ "format": {
+ "months":
+ "{}",
+ "weekdays":
+ "{}",
+ "today":
+ "{}"
+ }
+ },
+
+ "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": " ",
+ "firefox": " "
+ },
+ "status-icons": {
+ "paused": "\u200A\u200A\u2009\u2009"
+ },
+
+ "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
+ }
+}
diff --git a/waybar/themes/jsonc/gruvbox-light.jsonc b/waybar/themes/jsonc/gruvbox-light.jsonc
new file mode 100644
index 0000000..42e5f7d
--- /dev/null
+++ b/waybar/themes/jsonc/gruvbox-light.jsonc
@@ -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
+ "":
+ " Hyprland",
+
+ // Terminal
+ "~": " Terminal",
+ "zsh": " Terminal",
+ "kitty": " Terminal",
+
+ "tmux(.*)":
+ " Tmux",
+
+ // Browser
+
+ "(.*)Mozilla Firefox":
+ " Firefox",
+ "(.*) — Mozilla Firefox":
+ " $1",
+
+ "(.*)Zen Browser":
+ " Zen Browser",
+ "(.*) — Zen Browser":
+ " $1",
+
+ // Development
+
+ "(.*) - Visual Studio Code":
+ " $1",
+ "(.*)Visual Studio Code":
+ " Visual Studio Code",
+
+ "nvim":
+ " Neovim",
+ "nvim (.*)":
+ " $1",
+
+ "vim":
+ " Vim",
+ "vim (.*)":
+ " $1",
+
+ // Media
+
+ "(.*)Spotify":
+ " Spotify",
+ "(.*)Spotify Premium":
+ " Spotify Premium",
+
+ "OBS(.*)":
+ " OBS Studio",
+
+ "VLC media player":
+ " VLC Media Player",
+ "(.*) - VLC media player":
+ " $1",
+
+ "(.*) - mpv":
+ " $1",
+
+ "qView": " qView",
+
+ "(.*).jpg": " $1.jpg",
+ "(.*).png": " $1.png",
+ "(.*).svg": " $1.svg",
+
+ // Social
+
+ "vesktop":
+ " Discord",
+
+ "• Discord(.*)": "Discord$1",
+ "(.*)Discord(.*)":
+ " $1Discord$2",
+
+ // Documents
+
+ "ONLYOFFICE Desktop Editors":
+ " OnlyOffice Desktop",
+
+ "(.*).docx":
+ " $1.docx",
+ "(.*).xlsx":
+ " $1.xlsx",
+ "(.*).pptx":
+ " $1.pptx",
+ "(.*).pdf":
+ " $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": "{calendar}",
+
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 6,
+ "on-click-right": "mode",
+
+ "format": {
+ "months":
+ "{}",
+ "weekdays":
+ "{}",
+ "today":
+ "{}"
+ }
+ },
+
+ "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": " ",
+ "firefox": " "
+ },
+ "status-icons": {
+ "paused": "\u200A\u200A\u2009\u2009"
+ },
+
+ "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
+ }
+}