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. - -| ![Mechabar](assets/catppuccin-mocha.png) | -| :--------------------------------------: | - -
-Themes -
- -**Catppuccin:** - -| Mocha _(default)_ | -| :----------------------------------------------: | -| ![Catppuccin Mocha](assets/catppuccin-mocha.png) | - -| Macchiato | -| :------------------------------------------------------: | -| ![Catppuccin Macchiato](assets/catppuccin-macchiato.png) | - -| Frappe | -| :------------------------------------------------: | -| ![Catppuccin Frappe](assets/catppuccin-frappe.png) | - -| Latte | -| :----------------------------------------------: | -| ![Catppuccin Latte](assets/catppuccin-latte.png) | - -
-
- -# - -### 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 + } +}