26 Commits

Author SHA1 Message Date
nvrl 26f8c79767 update 2025-11-02 23:53:10 +01:00
nvrl a1ac6850bb updated waybar 2025-08-28 19:45:40 +02:00
nvrl bd49925080 updated style 2025-08-23 19:32:51 +02:00
nvrl f0739adf34 updated scripts 2025-08-23 19:28:41 +02:00
nvrl 98bd7c5393 styles + window rules 2025-08-23 16:19:05 +02:00
nvrl 01f7b4fb8e updated scripts and waybar 2025-08-18 19:31:04 +02:00
nvrl 6e647070d8 i have to rework the bar... too full 2025-08-15 21:13:36 +02:00
nvrl e45ea11b28 resolved merge conflict 2025-08-15 20:10:58 +02:00
nvrl df361218f9 fixed the pixelbuds script 2025-08-15 11:10:22 +02:00
nvrl ac16d751ce fucked my pixelbuds module 2025-08-15 10:08:20 +02:00
nvrl dc3133cc94 updated gpu module 2025-08-15 09:19:05 +02:00
nvrl 8eb626164b updated 2025-08-15 03:14:44 +02:00
nvrl bc86670611 fixed discord streaming 2025-08-14 03:29:50 +02:00
nvrl 0eb25b77a6 added rice pics 2025-08-12 21:12:07 +02:00
nvrl 30b83934d1 increased interval for pixelbuds 2025-08-09 20:52:06 +02:00
nvrl 087f199ca0 added own notification script 2025-08-09 20:01:04 +02:00
nvrl e2d9f5ab05 added wireplumber confs 2025-08-09 19:11:31 +02:00
nvrl b0783e09e5 updated replay command 2025-08-09 17:18:32 +02:00
nvrl eb3c74373d increased sleep timer before replay starts 2025-08-09 15:33:10 +02:00
nvrl 283a649486 added modules to waybar 2025-08-09 15:32:12 +02:00
nvrl 134a0ff79a huh 2025-08-07 06:33:06 +02:00
nvrl 6a4f312ec9 fuck btop 2025-08-07 06:32:47 +02:00
nvrl 2f7b121bda removed btop catppuccin 2025-08-07 06:31:23 +02:00
nvrl 52137e5e3b fuck submodules 2025-08-07 06:29:46 +02:00
nvrl e240822532 init? 2025-08-07 06:19:03 +02:00
nvrl b6e8123c91 init 2025-08-07 05:56:44 +02:00
103 changed files with 2271 additions and 4397 deletions
-3
View File
@@ -6,7 +6,6 @@
!alacritty/ !alacritty/
!dunst/ !dunst/
!hypr/ !hypr/
!hyprpanel/
!nvim/ !nvim/
!waybar/ !waybar/
!zathura/ !zathura/
@@ -24,5 +23,3 @@
!wireplumber/ !wireplumber/
!systemd/ !systemd/
fish/fish_variables fish/fish_variables
waybar/fluxo-rs
!fluxo/
+12 -15
View File
@@ -1,12 +1,3 @@
[submodule "waybar/catppuccin-waybar"]
path = waybar/catppuccin-waybar
url = https://github.com/catppuccin/waybar.git
[submodule "hypr/catppuccin-hyprland"]
path = hypr/catppuccin-hyprland
url = https://github.com/catppuccin/hyprland.git
[submodule "hypr/catppuccin-hyprlock"]
path = hypr/catppuccin-hyprlock
url = https://github.com/catppuccin/hyprlock.git
[submodule "zathura/catppuccin-zathura"] [submodule "zathura/catppuccin-zathura"]
path = zathura/catppuccin-zathura path = zathura/catppuccin-zathura
url = https://github.com/catppuccin/zathura.git url = https://github.com/catppuccin/zathura.git
@@ -16,12 +7,18 @@
[submodule "nvim/pack/nvim/start/nvim-lspconfig"] [submodule "nvim/pack/nvim/start/nvim-lspconfig"]
path = nvim/pack/nvim/start/nvim-lspconfig path = nvim/pack/nvim/start/nvim-lspconfig
url = https://github.com/neovim/nvim-lspconfig url = https://github.com/neovim/nvim-lspconfig
[submodule "btop/catppuccin-btop"] [submodule "waybar/catppuccin-waybar"]
path = btop/catppuccin-btop path = waybar/catppuccin-waybar
url = https://github.com/catppuccin/btop.git url = https://github.com/catppuccin/waybar.git
[submodule "hypr/catppuccin-hyprland"]
path = hypr/catppuccin-hyprland
url = https://github.com/catppuccin/hyprland.git
[submodule "hypr/catppuccin-hyprlock"]
path = hypr/catppuccin-hyprlock
url = https://github.com/catppuccin/hyprlock.git
[submodule "fuzzel/catppuccin-fuzzel"] [submodule "fuzzel/catppuccin-fuzzel"]
path = fuzzel/catppuccin-fuzzel path = fuzzel/catppuccin-fuzzel
url = https://github.com/catppuccin/fuzzel.git url = https://github.com/catppuccin/fuzzel.git
[submodule "nvim"] [submodule "btop/catppuccin-btop"]
path = nvim path = btop/catppuccin-btop
url = https://git.narl.io/nvrl/nvim-config.git url = https://github.com/catppuccin/btop.git
+1 -3
View File
@@ -1,5 +1,3 @@
# My dotfiles # desktop rice
![image not found](./rice.png) ![image not found](./rice.png)
![image not found](./rice-2.png)
![image not found](./rice-3.png)
+2 -7
View File
@@ -26,8 +26,8 @@ lines = 24
## Blank space added around the window in pixels. ## Blank space added around the window in pixels.
[window.padding] [window.padding]
x = 3 x = 30
y = 0 y = 30
## SCROLLING ------------------------------------------------------ ## SCROLLING ------------------------------------------------------
[scrolling] [scrolling]
@@ -104,8 +104,3 @@ ipc_socket = true
## Import additional configuration files. ## Import additional configuration files.
import = ["~/.config/alacritty/colors.toml", "~/.config/alacritty/fonts.toml"] import = ["~/.config/alacritty/colors.toml", "~/.config/alacritty/fonts.toml"]
[[keyboard.bindings]]
key = "Return"
mods = "Shift"
chars = "\u001B\r"
+5 -5
View File
@@ -4,26 +4,26 @@
[font] [font]
## Font size in points. ## Font size in points.
size = 10 size = 14
## When true, Alacritty will use a custom built-in font for box drawing characters and powerline symbols. ## When true, Alacritty will use a custom built-in font for box drawing characters and powerline symbols.
builtin_box_drawing = true builtin_box_drawing = true
## Normal font family. ## Normal font family.
[font.normal] [font.normal]
family = "0xProto Nerd Font Mono" family = "Fira Mono"
## If the family is not specified, it will fall back to the value specified for the normal font. ## If the family is not specified, it will fall back to the value specified for the normal font.
[font.bold] [font.bold]
family = "0xProto Nerd Font Mono" family = "Fira Mono"
## If the family is not specified, it will fall back to the value specified for the normal font. ## If the family is not specified, it will fall back to the value specified for the normal font.
[font.italic] [font.italic]
family = "0xProto Nerd Font Mono" family = "Fira Mono"
## If the family is not specified, it will fall back to the value specified for the normal font. ## If the family is not specified, it will fall back to the value specified for the normal font.
[font.bold_italic] [font.bold_italic]
family = "0xProto Nerd Font Mono" family = "Fira Mono"
## Offset is the extra space around each character. ## Offset is the extra space around each character.
## 'y' can be thought of as modifying the line spacing, and 'x' as modifying the letter spacing. ## 'y' can be thought of as modifying the line spacing, and 'x' as modifying the letter spacing.
+3 -3
View File
@@ -1,4 +1,4 @@
--enable-features=AcceleratedVideoDecodeLinuxGL,DefaultANGLEVulkan,VaapiIgnoreDriverChecks,Vulkan,VulkanFromANGLE,PlatformHEVCDecoderSupport,AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoEncoder --enable-features=AcceleratedVideoDecodeLinuxGL,DefaultANGLEVulkan,VaapiIgnoreDriverChecks,Vulkan,VulkanFromANGLE,PlatformHEVCDecoderSupport,AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoEncoder
--use-angle=vulkan --use-angle=vulkan
--use-gl=angle --use-gl=angle
--ozone-platform=wayland --ozone-platform=wayland
+50 -65
View File
@@ -1,18 +1,18 @@
#? Config file for btop v.1.4.6 #? Config file for btop v. 1.4.5
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. #* 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" #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "/home/narl/.config/btop/themes/catppuccin_mocha.theme" color_theme = "/home/narl/.config/btop/themes/catppuccin_mocha.theme"
#* If the theme set background should be shown, set to False if you want terminal background transparency. #* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = false theme_background = False
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. #* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = true truecolor = True
#* Set to true to force tty mode regardless if a real tty has been detected or not. #* 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. #* 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 force_tty = False
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. #* 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. #* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
@@ -22,13 +22,10 @@ presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:defaul
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. #* 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. #* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = true vim_keys = True
#* Rounded corners on boxes, is ignored if TTY mode is ON. #* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = true rounded_corners = True
#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
terminal_sync = true
#* Default symbols to use for graph creation, "braille", "block" or "tty". #* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts. #* "braille" offers the highest resolution but might not be included in all fonts.
@@ -56,47 +53,44 @@ graph_symbol_proc = "default"
shown_boxes = "cpu mem net proc" shown_boxes = "cpu mem net proc"
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. #* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 1000 update_ms = 2000
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", #* 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. #* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "cpu lazy" proc_sorting = "cpu direct"
#* Reverse sorting order, True or False. #* Reverse sorting order, True or False.
proc_reversed = false proc_reversed = False
#* Show processes as a tree. #* Show processes as a tree.
proc_tree = true proc_tree = True
#* Use the cpu graph colors in the process list. #* Use the cpu graph colors in the process list.
proc_colors = true proc_colors = True
#* Use a darkening gradient in the process list. #* Use a darkening gradient in the process list.
proc_gradient = true proc_gradient = True
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. #* 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 proc_per_core = True
#* Show process memory as bytes instead of percent. #* Show process memory as bytes instead of percent.
proc_mem_bytes = true proc_mem_bytes = True
#* Show cpu graph for each process. #* Show cpu graph for each process.
proc_cpu_graphs = true proc_cpu_graphs = True
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) #* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = false proc_info_smaps = False
#* Show proc box on left side of screen instead of right. #* Show proc box on left side of screen instead of right.
proc_left = false proc_left = False
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). #* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = false proc_filter_kernel = False
#* In tree-view, always accumulate child process resources in the parent process. #* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = false proc_aggregate = False
#* Should cpu and memory usage display be preserved for dead processes when paused.
keep_dead_proc_usage = false
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. #* 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. #* Select from a list of detected attributes from the options menu.
@@ -110,28 +104,28 @@ cpu_graph_lower = "Auto"
show_gpu_info = "Auto" show_gpu_info = "Auto"
#* Toggles if the lower CPU graph should be inverted. #* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = true cpu_invert_lower = True
#* Set to True to completely disable the lower CPU graph. #* Set to True to completely disable the lower CPU graph.
cpu_single_graph = false cpu_single_graph = False
#* Show cpu box at bottom of screen instead of top. #* Show cpu box at bottom of screen instead of top.
cpu_bottom = false cpu_bottom = False
#* Shows the system uptime in the CPU box. #* Shows the system uptime in the CPU box.
show_uptime = true show_uptime = True
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo. #* 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_watts = True
#* Show cpu temperature. #* Show cpu temperature.
check_temp = true check_temp = True
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. #* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto" cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. #* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = true show_coretemp = True
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. #* 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. #* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
@@ -143,20 +137,17 @@ cpu_core_map = ""
temp_scale = "celsius" temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. #* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = false base_10_sizes = False
#* Show CPU frequency. #* Show CPU frequency.
show_cpu_freq = true show_cpu_freq = True
#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average".
freq_mode = "first"
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. #* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime #* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X" 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. #* 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 background_update = True
#* Custom cpu model name, empty string to disable. #* Custom cpu model name, empty string to disable.
custom_cpu_name = "" custom_cpu_name = ""
@@ -166,43 +157,43 @@ custom_cpu_name = ""
disks_filter = "" disks_filter = ""
#* Show graphs instead of meters for memory values. #* Show graphs instead of meters for memory values.
mem_graphs = true mem_graphs = True
#* Show mem box below net box instead of above. #* Show mem box below net box instead of above.
mem_below_net = false mem_below_net = False
#* Count ZFS ARC in cached and available memory. #* Count ZFS ARC in cached and available memory.
zfs_arc_cached = true zfs_arc_cached = True
#* If swap memory should be shown in memory box. #* If swap memory should be shown in memory box.
show_swap = true show_swap = True
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. #* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = true swap_disk = True
#* If mem box should be split to also show disks info. #* If mem box should be split to also show disks info.
show_disks = true show_disks = True
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. #* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = true only_physical = True
#* Read disks list from /etc/fstab. This also disables only_physical. #* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = true use_fstab = True
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) #* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = false zfs_hide_datasets = False
#* Set to true to show available disk space for privileged users. #* Set to true to show available disk space for privileged users.
disk_free_priv = false disk_free_priv = False
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. #* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = true show_io_stat = True
#* Toggles io mode for disks, showing big graphs for disk read/write speeds. #* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = false io_mode = False
#* Set to True to show combined read/write io graphs in io mode. #* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = false 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 " ". #* 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". #* Example: "/mnt/media:100 /:20 /boot:1".
@@ -214,10 +205,10 @@ net_download = 100
net_upload = 100 net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. #* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = true net_auto = True
#* Sync the auto scaling for download and upload to whichever currently has the highest scale. #* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = true net_sync = True
#* Starts with the Network Interface specified here. #* Starts with the Network Interface specified here.
net_iface = "" net_iface = ""
@@ -226,32 +217,26 @@ net_iface = ""
base_10_bitrate = "Auto" base_10_bitrate = "Auto"
#* Show battery stats in top right if battery is present. #* Show battery stats in top right if battery is present.
show_battery = true show_battery = True
#* Which battery to use if multiple are present. "Auto" for auto detection. #* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto" selected_battery = "Auto"
#* Show power stats of battery next to charge indicator. #* Show power stats of battery next to charge indicator.
show_battery_watts = true show_battery_watts = True
#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". #* 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. #* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING" log_level = "WARNING"
#* Automatically save current settings to config file on exit.
save_config_on_exit = true
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. #* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
nvml_measure_pcie_speeds = true nvml_measure_pcie_speeds = True
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards. #* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
rsmi_measure_pcie_speeds = true rsmi_measure_pcie_speeds = True
#* Horizontally mirror the GPU graph. #* Horizontally mirror the GPU graph.
gpu_mirror_graph = true gpu_mirror_graph = True
#* Set which GPU vendors to show. Available values are "nvidia amd intel"
shown_gpus = "nvidia amd intel"
#* Custom gpu0 model name, empty string to disable. #* Custom gpu0 model name, empty string to disable.
custom_gpu_name0 = "" custom_gpu_name0 = ""
-3
View File
@@ -1,3 +0,0 @@
--enable-features=AcceleratedVideoDecodeLinuxGL,DefaultANGLEVulkan,VaapiIgnoreDriverChecks,Vulkan,VulkanFromANGLE,AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoEncoder
--use-angle=vulkan
--use-gl=angle
+2 -2
View File
@@ -1,10 +1,10 @@
[global] [global]
corner_radius = 4 corner_radius = 4
transparency = 90 transparency = 90
frame_color = "#f38ba8" frame_color = "#94e2d5"
frame_width = 1 frame_width = 1
separator_color= frame separator_color= frame
highlight = "#89dceb" highlight = "#89b4fa"
[urgency_low] [urgency_low]
background = "#1e1e2e" background = "#1e1e2e"
-14
View File
@@ -1,14 +0,0 @@
# This file was created by fish when upgrading to version 4.3, to migrate
# the 'fish_key_bindings' variable from its old default scope (universal)
# to its new default scope (global). We recommend you delete this file
# and configure key bindings in ~/.config/fish/config.fish if needed.
set --global fish_key_bindings fish_vi_key_bindings
# Prior to version 4.3, fish shipped an event handler that runs
# `set --universal fish_key_bindings fish_default_key_bindings`
# whenever the fish_key_bindings variable is erased.
# This means that as long as any fish < 4.3 is still running on this system,
# we cannot complete the migration.
# As a workaround, erase the universal variable at every shell startup.
set --erase --universal fish_key_bindings
-49
View File
@@ -1,49 +0,0 @@
# This file was created by fish when upgrading to version 4.3, to migrate
# theme variables from universal to global scope.
# Don't edit this file, as it will be written by the web-config tool (`fish_config`).
# To customize your theme, delete this file and see
# help interactive#syntax-highlighting
# or
# man fish-interactive | less +/^SYNTAX.HIGHLIGHTING
# for appropriate commands to add to ~/.config/fish/config.fish instead.
# See also the release notes for fish 4.3.0 (run `help relnotes`).
set --global fish_color_autosuggestion 6c7086
set --global fish_color_cancel f38ba8
set --global fish_color_command 89b4fa
set --global fish_color_comment 7f849c
set --global fish_color_cwd f9e2af
set --global fish_color_cwd_root red
set --global fish_color_end fab387
set --global fish_color_error f38ba8
set --global fish_color_escape eba0ac
set --global fish_color_gray 6c7086
set --global fish_color_history_current --bold
set --global fish_color_host 89b4fa
set --global fish_color_host_remote a6e3a1
set --global fish_color_keyword f38ba8
set --global fish_color_match --background=brblue
set --global fish_color_normal cdd6f4
set --global fish_color_operator f5c2e7
set --global fish_color_option a6e3a1
set --global fish_color_param f2cdcd
set --global fish_color_quote a6e3a1
set --global fish_color_redirection f5c2e7
set --global fish_color_search_match --background=313244
set --global fish_color_selection --background=313244
set --global fish_color_status f38ba8
set --global fish_color_user 94e2d5
set --global fish_color_valid_path --underline
set --global fish_pager_color_background
set --global fish_pager_color_completion cdd6f4
set --global fish_pager_color_description 6c7086
set --global fish_pager_color_prefix f5c2e7
set --global fish_pager_color_progress 6c7086
set --global fish_pager_color_secondary_background
set --global fish_pager_color_secondary_completion
set --global fish_pager_color_secondary_description
set --global fish_pager_color_secondary_prefix
set --global fish_pager_color_selected_background
set --global fish_pager_color_selected_completion
set --global fish_pager_color_selected_description
set --global fish_pager_color_selected_prefix
-7
View File
@@ -1,7 +0,0 @@
# Path to Oh My Fish install.
set -q XDG_DATA_HOME
and set -gx OMF_PATH "$XDG_DATA_HOME/omf"
or set -gx OMF_PATH "$HOME/.local/share/omf"
# Load Oh My Fish configuration.
source $OMF_PATH/init.fish
+2 -32
View File
@@ -1,39 +1,9 @@
if status is-interactive
# Commands to run in interactive sessions can go here
end
# set SPACESHIP_PROMPT_ADD_NEWLINE false
# set SPACESHIP_TIME_SHOW false
# set SPACESHIP_USER_SHOW always
# set SPACESHIP_HOST_SHOW true
# set SPACESHIP_CHAR_SYMBOL ""
# set SPACESHIP_CHAR_SYMBOL=" "
# set SPACESHIP_VI_MODE_INSERT 
# set SPACESHIP_VI_MODE_NORMAL 
# Set the cursor shapes for the different vi modes.
set fish_cursor_default block blink set fish_cursor_default block blink
set fish_cursor_insert line blink set fish_cursor_insert line blink
set fish_cursor_replace_one underscore blink set fish_cursor_replace_one underscore blink
set fish_cursor_visual block set fish_cursor_visual block
# starship init fish | source
fish_vi_key_bindings fish_vi_key_bindings
if test -e ~/.cache/wal/colors.fish
source ~/.cache/wal/colors.fish
end
zoxide init --cmd cd fish | source zoxide init --cmd cd fish | source
set -gx PATH ~/.local/bin $PATH if uwsm check may-start && uwsm select
# if not pgrep --full ssh-agent | string collect > /dev/null exec uwsm start default
# eval (ssh-agent -c)
# set -Ux SSH_AGENT_PID $SSH_AGENT_PID
# set -Ux SSH_AUTH_SOCK $SSH_AUTH_SOCK
# end
# Set SSH_AUTH_SOCK for GNOME Keyring / systemd
# The socket path is predictable
set -l GCR_SSH_SOCK $XDG_RUNTIME_DIR/gcr/ssh
if test -S "$GCR_SSH_SOCK"
set -gx SSH_AUTH_SOCK "$GCR_SSH_SOCK"
end
if status is-login && test -z "$DISPLAY" -a -z "$WAYLAND_DISPLAY"
if uwsm check may-start && uwsm select
exec uwsm start default
end
end end
+1
View File
@@ -1,2 +1,3 @@
franciscolourenco/done franciscolourenco/done
jorgebucaran/autopair.fish jorgebucaran/autopair.fish
catppuccin/fish
+130
View File
@@ -0,0 +1,130 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR CUDAToolkit_ROOT:/opt/cuda/
SETUVAR DATABASE_URL:sqlite\x3adatabase\x2esqlite
SETUVAR GLFW_IM_MODULE:ibus
SETUVAR MANPAGER:sh\x20\x2dc\x20\x27col\x20\x2dbx\x20\x7c\x20bat\x20\x2dl\x20man\x20\x2dp\x27
SETUVAR RUST_LOG:debug
SETUVAR --export SSH_AGENT_PID:967
SETUVAR --export SSH_AUTH_SOCK:/tmp/ssh\x2dXXXXXX7Ck8nI/agent\x2e966
SETUVAR SXHKD_SHELL:/usr/bin/bash
SETUVAR ZO_CMD:zo
SETUVAR Z_CMD:z
SETUVAR Z_DATA:/home/narl/\x2elocal/share/z/data
SETUVAR Z_DATA_DIR:/home/narl/\x2elocal/share/z
SETUVAR Z_EXCLUDE:\x5e/home/narl\x24
SETUVAR __done_min_cmd_duration:5000
SETUVAR __fish_initialized:3800
SETUVAR _fisher_catppuccin_2F_fish_files:\x7e/\x2econfig/fish/themes/Catppuccin\x20Frappe\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Latte\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Macchiato\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Mocha\x2etheme
SETUVAR _fisher_franciscolourenco_2F_done_files:/home/niru/\x2econfig/fish/conf\x2ed/done\x2efish
SETUVAR _fisher_jorgebucaran_2F_autopair_2E_fish_files:/home/niru/\x2econfig/fish/functions/_autopair_backspace\x2efish\x1e/home/niru/\x2econfig/fish/functions/_autopair_insert_left\x2efish\x1e/home/niru/\x2econfig/fish/functions/_autopair_insert_right\x2efish\x1e/home/niru/\x2econfig/fish/functions/_autopair_insert_same\x2efish\x1e/home/niru/\x2econfig/fish/functions/_autopair_tab\x2efish\x1e/home/niru/\x2econfig/fish/conf\x2ed/autopair\x2efish
SETUVAR _fisher_plugins:franciscolourenco/done\x1ejorgebucaran/autopair\x2efish\x1ecatppuccin/fish
SETUVAR _fisher_upgraded_to_4_4:\x1d
SETUVAR fish_color_autosuggestion:6c7086
SETUVAR fish_color_cancel:f38ba8
SETUVAR fish_color_command:89b4fa
SETUVAR fish_color_comment:7f849c
SETUVAR fish_color_cwd:f9e2af
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:fab387
SETUVAR fish_color_error:f38ba8
SETUVAR fish_color_escape:eba0ac
SETUVAR fish_color_gray:6c7086
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:89b4fa
SETUVAR fish_color_host_remote:a6e3a1
SETUVAR fish_color_keyword:f38ba8
SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
SETUVAR fish_color_normal:cdd6f4
SETUVAR fish_color_operator:f5c2e7
SETUVAR fish_color_option:a6e3a1
SETUVAR fish_color_param:f2cdcd
SETUVAR fish_color_quote:a6e3a1
SETUVAR fish_color_redirection:f5c2e7
SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d313244
SETUVAR fish_color_selection:\x2d\x2dbackground\x3d313244
SETUVAR fish_color_status:f38ba8
SETUVAR fish_color_user:94e2d5
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_greeting:\x1d
SETUVAR fish_key_bindings:fish_vi_key_bindings
SETUVAR fish_pager_color_background:\x1d
SETUVAR fish_pager_color_completion:cdd6f4
SETUVAR fish_pager_color_description:6c7086
SETUVAR fish_pager_color_prefix:f5c2e7
SETUVAR fish_pager_color_progress:6c7086
SETUVAR fish_pager_color_secondary_background:\x1d
SETUVAR fish_pager_color_secondary_completion:\x1d
SETUVAR fish_pager_color_secondary_description:\x1d
SETUVAR fish_pager_color_secondary_prefix:\x1d
SETUVAR fish_pager_color_selected_background:\x1d
SETUVAR fish_pager_color_selected_completion:\x1d
SETUVAR fish_pager_color_selected_description:\x1d
SETUVAR fish_pager_color_selected_prefix:\x1d
SETUVAR fish_user_paths:/home/narl/\x2elocal/share/nvim/mason/bin\x1e/home/niru/\x2escripts\x1e/home/niru/Documents/rust\x2ddev/practice\x2drs/target/release\x1e/opt/cuda/bin\x1e/home/niru/\x2e
SETUVAR pure_begin_prompt_with_current_directory:true
SETUVAR pure_check_for_new_release:false
SETUVAR pure_color_at_sign:pure_color_mute
SETUVAR pure_color_aws_profile:pure_color_warning
SETUVAR pure_color_command_duration:pure_color_warning
SETUVAR pure_color_current_directory:pure_color_primary
SETUVAR pure_color_danger:red
SETUVAR pure_color_dark:black
SETUVAR pure_color_git_branch:pure_color_mute
SETUVAR pure_color_git_dirty:pure_color_mute
SETUVAR pure_color_git_stash:pure_color_info
SETUVAR pure_color_git_unpulled_commits:pure_color_info
SETUVAR pure_color_git_unpushed_commits:pure_color_info
SETUVAR pure_color_hostname:pure_color_mute
SETUVAR pure_color_info:cyan
SETUVAR pure_color_jobs:pure_color_normal
SETUVAR pure_color_k8s_context:pure_color_success
SETUVAR pure_color_k8s_namespace:pure_color_primary
SETUVAR pure_color_k8s_prefix:pure_color_info
SETUVAR pure_color_light:white
SETUVAR pure_color_mute:brblack
SETUVAR pure_color_nixdevshell_prefix:pure_color_info
SETUVAR pure_color_nixdevshell_symbol:pure_color_mute
SETUVAR pure_color_normal:normal
SETUVAR pure_color_prefix_root_prompt:pure_color_danger
SETUVAR pure_color_primary:blue
SETUVAR pure_color_prompt_on_error:pure_color_danger
SETUVAR pure_color_prompt_on_success:pure_color_success
SETUVAR pure_color_success:magenta
SETUVAR pure_color_system_time:pure_color_mute
SETUVAR pure_color_username_normal:pure_color_mute
SETUVAR pure_color_username_root:pure_color_light
SETUVAR pure_color_virtualenv:pure_color_mute
SETUVAR pure_color_warning:yellow
SETUVAR pure_enable_aws_profile:true
SETUVAR pure_enable_container_detection:true
SETUVAR pure_enable_git:true
SETUVAR pure_enable_k8s:false
SETUVAR pure_enable_nixdevshell:false
SETUVAR pure_enable_single_line_prompt:false
SETUVAR pure_enable_virtualenv:true
SETUVAR pure_reverse_prompt_symbol_in_vimode:true
SETUVAR pure_separate_prompt_on_error:false
SETUVAR pure_shorten_prompt_current_directory_length:0
SETUVAR pure_shorten_window_title_current_directory_length:0
SETUVAR pure_show_jobs:true
SETUVAR pure_show_prefix_root_prompt:false
SETUVAR pure_show_subsecond_command_duration:false
SETUVAR pure_show_system_time:false
SETUVAR pure_symbol_aws_profile_prefix:
SETUVAR pure_symbol_container_prefix:
SETUVAR pure_symbol_git_dirty:\x2a
SETUVAR pure_symbol_git_stash:\u2261
SETUVAR pure_symbol_git_unpulled_commits:\u21e3
SETUVAR pure_symbol_git_unpushed_commits:\u21e1
SETUVAR pure_symbol_k8s_prefix:\u2638
SETUVAR pure_symbol_nixdevshell_prefix:\u2744\ufe0f
SETUVAR pure_symbol_prefix_root_prompt:\x23
SETUVAR pure_symbol_prompt:\x3e_
SETUVAR pure_symbol_reverse_prompt:\x7c_
SETUVAR pure_symbol_ssh_prefix:
SETUVAR pure_symbol_title_bar_separator:\x2d
SETUVAR pure_symbol_virtualenv_prefix:
SETUVAR pure_threshold_command_duration:5
SETUVAR pure_truncate_prompt_current_directory_keeps:\x2d1
SETUVAR pure_truncate_window_title_current_directory_keeps:\x2d1
+3
View File
@@ -0,0 +1,3 @@
function convert_discord --wraps='ffmpeg -i <source> -s 1280x720 <source>-discord.mp4' --description 'alias convert_discord=ffmpeg -i <source> -s 1280x720 <source>-discord.mp4'
ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -i $argv[1] -s 1280x720 (string split -r -m1 . $argv[1])[1]-discord.mp4;
end
-30
View File
@@ -1,30 +0,0 @@
function fish_prompt --description 'Write out the prompt'
set -l last_status $status
set -l normal (set_color normal)
set -l status_color (set_color brgreen)
set -l cwd_color (set_color $fish_color_cwd)
set -l vcs_color (set_color brpurple)
set -l prompt_status ""
# Since we display the prompt on a new line allow the directory names to be longer.
set -q fish_prompt_pwd_dir_length
or set -lx fish_prompt_pwd_dir_length 0
# Color the prompt differently when we're root
set -l suffix ''
if functions -q fish_is_root_user; and fish_is_root_user
if set -q fish_color_cwd_root
set cwd_color (set_color $fish_color_cwd_root)
end
set suffix '#'
end
# Color the prompt in red on error
if test $last_status -ne 0
set status_color (set_color $fish_color_error)
set prompt_status $status_color "[" $last_status "]" $normal
end
echo -s (prompt_login) ' ' $cwd_color (prompt_pwd) $vcs_color (fish_vcs_prompt) $normal ' ' $prompt_status
echo -n -s $status_color $suffix ' ' $normal
end
+3
View File
@@ -0,0 +1,3 @@
function get_open_ports --wraps='netstat -tunlp' --description 'alias get_open_ports=netstat -tunlp'
netstat -tunlp $argv;
end
-3
View File
@@ -1,3 +0,0 @@
function gitzip
git archive HEAD -o (basename $PWD).zip
end
+3
View File
@@ -0,0 +1,3 @@
function mpv_vr --wraps='mpv --script=360plugin.lua --script-opts=360plugin-enabled=yes' --description 'alias mpv_vr=mpv --script=360plugin.lua --script-opts=360plugin-enabled=yes'
mpv --script=~/.config/mpv/scripts/360plugin.lua --script-opts=360plugin-enabled=yes $argv;
end
-3
View File
@@ -1,3 +0,0 @@
function open -d "Open an application detached from the terminal"
nohup $argv >/dev/null 2>&1 &
end
-85
View File
@@ -1,85 +0,0 @@
# fluxo-rs configuration
# Location: ~/.config/fluxo/config.toml
[general]
menu_command = "fuzzel --dmenu --prompt \"$FLUXO_PROMPT\""
[signals]
network = 1
cpu = 2
memory = 3
gpu = 4
sys = 5
disk = 6
game = 7
audio = 8
bt = 9
power = 10
mpris = 11
backlight = 12
dnd = 13
[network]
format = "{interface} ({ip}):  {rx:^4.1} MB/s  {tx:^4.1} MB/s"
[cpu]
format = "CPU: {usage:^4.1}% {temp:^4.1}C"
[memory]
format = "MEM: {used:^4.1}/{total:^4.1}GB"
[sys]
format = "UP: {uptime} LOAD: {load1:^3.1} "
[disk]
format = "{mount} {used:^3.0}/{total:^3.0}G"
[power]
format = "{percentage:>3}% {icon}"
[audio]
format_sink_unmuted = "{name} {volume:>3}% <span size='large'> {icon}</span>"
format_sink_muted = "{name} <span size='large'> {icon}</span>"
format_source_unmuted = "{name} {volume:>3}% <span size='large'> {icon}</span>"
format_source_muted = "{name} <span size='large'> {icon}</span>"
[bt]
format_plugin = "{alias} [{left}|{right}] {anc} <span size='large'> 󰂰</span>"
format_connected = "{alias} <span size='large'> 󰂰</span>"
format_disconnected = "Disconnected <span size='large'> 󰂯</span>"
format_disabled = "<span size='large'>󰂲</span>"
[game]
format_active = "<span size='large'>󰊖</span>"
format_inactive = "<span size='large'></span>"
[mpris]
format = "{artist} - {title}"
max_length = 20
scroll = true
scroll_speed = 500
scroll_separator = " /// "
[pool]
enabled = false
format = "{used:>4.0}G / {total:>4.0}G"
[gpu]
enabled = false
format_amd = "AMD: {usage:>3.0}% {vram_used:>4.1}/{vram_total:>4.1}GB {temp:>4.1}C"
format_intel = "iGPU: {usage:>3.0}%"
format_nvidia = "NV: {usage:>3.0}% {vram_used:>4.1}/{vram_total:>4.1}GB {temp:>4.1}C"
[keyboard]
enabled = false
format = "{layout}"
[backlight]
enable = true
format = " {icon} {percentage}"
[dnd]
enabled = true
format_dnd = "<span size='large'>󰂛</span>"
format_normal = "<span size='large'>󰂚</span>"
+5 -20
View File
@@ -1,28 +1,13 @@
include=~/.config/fuzzel/catppuccin-fuzzel/themes/catppuccin-mocha/red.ini include=~/.config/fuzzel/catppuccin-fuzzel/themes/catppuccin-mocha/mauve.ini
include=~/.config/fuzzel/catppuccin-fuzzel/themes/catppuccin-mocha/red.ini
[main] [main]
font=FiraCode Nerd Font:size=14 font=FiraCode Nerd Font:size=14
terminal=alacritty terminal=alacritty
dpi-aware=no dpi-aware=no
prompt="> "
width=45 icon-theme=Papirus-Dark
lines=8 show-actions=yes
horizontal-pad=20
vertical-pad=20
inner-pad=10
prompt=" "
show-actions=no
layer=overlay
[border] [border]
radius=12 radius=4
width=2 width=2
[colors]
background=1e1e2e80
# Matches the background so the counter becomes invisible for a cleaner look
counter=1e1e2eff
border=f38ba8ff
-83
View File
@@ -1,83 +0,0 @@
<div align="center">
<h1>✦ Google-ish Hyprlock Theme ✦</h1>
<h3></h3>
</div>
## ▶️ Preview
<details>
<summary><b>Without Profile & User Info</b></summary>
<img src="https://github.com/user-attachments/assets/7bbacd47-b0d7-4132-9951-53dc0ead604c" alt="Hyprlock-Without-Profile" width="1280">
</details>
<details>
<summary><b>With Profile & User Info</b></summary>
<img src="https://github.com/user-attachments/assets/9a58a6e2-a71f-4b28-998a-8a45c8950aaf" alt="Hyprlock-With-Profile" width="1280">
</details>
<details>
<summary><b>With Profile & User Info [12H Format]</b></summary>
<img src="https://github.com/user-attachments/assets/e0049860-7511-432e-8814-8d17d448182b" alt="Hyprlock-With-Profile" width="1280">
</details>
## 📦 Installation
><i><b>❗ This configuration is based on a 1080p display, if you are using a higher screen resolution,</br>you may need to reconfigure the sizes and recoordinate all the components.</b></i>
<b>Auto-Installation :</b>
```bash
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Tamarindtype/googlish-hyprlock-theme/main/install.sh)"
```
</br><b>Manual Installation :</b>
```bash
# Backup your current Hyprlock config first!
# Clone the repository
git clone https://github.com/Tamarindtype/googlish-hyprlock-theme.git
# Move all the files to the hyprland config folder
mv ./googlish-hyprlock-theme/* ~/.config/hypr/
# Go to script folder
cd $HOME/.config/hypr/hyprlock/
# Change all the scripts permission to make them executable
chmod +x *.sh
# Run the Hyprlock
hyprlock
```
## 🗄️ Directory Structure
```md
$HOME
└── .config
└── hypr
├── hyprlock
│ ├── assets
│ ├── battery.sh
│ ├── bluetooth.sh
│ ├── change_wallpaper.sh
│ ├── greeting.sh
│ ├── network.sh
│ ├── medianotif.sh
│ └── weatherinfo.sh
└── hyprlock.conf
```
## 🗨️ FAQ
| Question | Answer |
| --- | --- |
| Profile & User info does not appear? | By default, it set without profile and user info. You can enable it by uncomment the `image` @PROFILE PICTURE and `label` @USER INFO in `hyprlock.conf` |
| Battery percentage number does not appear? | Change your battery module in `battery.sh`. The default is `BAT0`, you can check it by running this command `ls /sys/class/power_supply/` |
| How to change the 24H Format to 12H Format? | Comment the 24H format and uncomment the 12H format. also uncomment the AM/PM `label` & `shape` in `hyprlock.conf` |
| null location or Unable to determine your location? | Change the IP Geolocation provider in `weatherinfo.sh` |
## 🏅 Recommendations
| Type | Name | Links |
| --- | --- | --- |
| Regular | PP Neue Machina | [Pangram Pangram](https://pangrampangram.com/products/neue-machina) |
| Nerd Font | Geist & Space Mono | [Nerd Fonts](https://github.com/ryanoasis/nerd-fonts/releases) |
| Emoji | Apple Emoji | [apple-emoji-linux](https://github.com/samuelngs/apple-emoji-linux) |
## ✨ Special Thanks & Credits
| Details | Credit |
| --- | --- |
| Battery & Playerctl Widget Scripts | @ashish-kus [minimal Hyprlock](https://gist.github.com/ashish-kus/dd562b0bf5e8488a09e0b9c289f4574c) |
| Helped Me Create Dynamic WiFi, Bluetooth, Weathercast and Greeting Widget | @OPENAI [ChatGPT](https://chatgpt.com/)|
+2
View File
@@ -1,5 +1,6 @@
# narls hyprland dotfiles # narls hyprland dotfiles
source = ~/.config/hypr/modules/plugins.conf
source = ~/.config/hypr/modules/monitors.conf source = ~/.config/hypr/modules/monitors.conf
@@ -16,3 +17,4 @@ source = ~/.config/hypr/modules/input.conf
source = ~/.config/hypr/modules/keybinds.conf source = ~/.config/hypr/modules/keybinds.conf
source = ~/.config/hypr/modules/window_rules.conf source = ~/.config/hypr/modules/window_rules.conf
+75 -520
View File
@@ -1,545 +1,100 @@
# For more information visit https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/ source = $HOME/.config/hypr/catppuccin-hyprland/themes/mocha.conf
source = ~/.config/hypr/catppuccin-hyprland/themes/mocha.conf
$scrPath = ~/.config/hypr/hyprlock/
$imgPath = ~/.config/hypr/hyprlock/assets/
$USER = narl # Your Alias
$host = uname -n #Your Alias
$wifi-mode = false # Change the WiFi output. true = show SSID, false = Connected.
$bt-mode = false # Change the Bluetooth output. true = show Device name, false = Connected.
# Default geolocation provider is IP-API.COM, hardcode it if the location does not match the current location.
# Hardcode your location (If hardcode does not recognize your City, change it to IP Geolocation provider in weatherinfo.sh)
$CITY =
$COUNTRY =
# WALLPAPER
# Just comment and uncomment to select
$wallpaper = screenshot
#$wallpaper = ~/your/wallpaper-path.png
$blur = 2
# ADJUST HERE
$rounding = 12
$shape-rd = -1
$font-text = GeistMono Nerd Font Bold
$font-text0 = GeistMono Nerd Font
$font-display = PP Neue Machina Ultra-Bold
$font-symbol = JetBrainsMono Nerd Font Mono
# Input Var
$weight = 2
$inner-color = rgba($baseAlpha80)
$border-color = rgba($mauveAlpha80)
# Colors
$clock-color = $text
$fg0 = $text
$fg1 = $base
$shape-col0 = $mauve
$shape-col1 = rgba($surface0Alpha80)
$shape-col2 = rgba($surface1Alpha80)
$shadow-pass = 2
$shadow-size = 3
$shadow-color = $crust
$shadow-boost = 1.2
$text-shadow-pass = 1
$text-shadow-boost = 0.5
$accent = $mauve
$accentAlpha = $mauveAlpha
$font = JetBrainsMono Nerd Font
# GENERAL # GENERAL
general { general {
no_fade_in = true hide_cursor = true
grace = 1
disable_loading_bar = false
hide_cursor = true
ignore_empty_input = true
text_trim = true
} }
#BACKGROUND # BACKGROUND
background { background {
monitor = monitor =
path = $wallpaper path = $HOME/Pictures/wallpapers/rem-latte.jpg
blur_passes = 0
blur_passes = $blur color = $base
contrast = 0.8916
brightness = 0.7172
vibrancy = 0.1696
vibrancy_darkness = 0
} }
# PROFILE PICTURE # LAYOUT
image {
monitor =
path = $imgPath/profile.jpg
size = 120 # lesser side if not 1:1 ratio
opacity = 0.25
shadow_pass = $shadow-pass
shadow_size = $shadow-size
shadow_color = $shadow-color
shadow_boost = $shadow-boost
rounding = $rounding # negative values mean circle
border_size = 4
border_color = $mauve
rotate = 0 # degrees, counter-clockwise
position = 20, -20
halign = left
valign = top
zindex = 1
}
# USER INFO
label { label {
monitor = monitor =
text = cmd[update:1000] echo -e "$USER\n󰁥 $($host)\n\n$(uname -r)\nPackages: $(pacman -Q | wc -l) pacman" text = Layout: $LAYOUT
color = $text
shadow_passes = 1 font_size = 25
shadow_boost = 0.5 font_family = $font
position = 30, -30
color = $fg0 halign = left
font_size = 11 valign = top
font_family = $font-text
position = 170, -35
halign = left
valign = top
} }
# WEATHERCAST & LOCATION # TIME
label { label {
monitor = monitor =
text = cmd[update:1000] echo "$(bash $scrPath/weatherinfo.sh)" text = $TIME
color = $text
shadow_passes = 1 font_size = 90
shadow_boost = 0.5 font_family = $font
position = -30, 0
color = $fg0 halign = right
font_size = 11 valign = top
font_family = $font-text
position = 0, -20
halign = center
valign = top
}
# INPUT FIELD
input-field {
monitor =
size = 275, 55
rounding = $rounding
outline_thickness = $weight
outer_color = $border-color
dots_size = 0.1 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 1 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
inner_color = $inner-color
font_color = $fg0
fade_on_empty = false
font_family = $font-text
placeholder_text = <span foreground="##$textAlpha">󰢏 $USER</span>
hide_input = false
check_color = $mauve
fail_color = $red
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
capslock_color = $yellow
position = 0, -240
halign = center
valign = center
zindex = 10
}
# TIME HR
label {
monitor =
text = cmd[update:1000] echo -e "$(date +"%H")" # 24-Hour Format
#text = cmd[update:1000] echo -e "$(date +"%I")" # 12-Hour Format
color = $clock-color
shadow_pass = $shadow-pass
shadow_size = $shadow-size
shadow_color = $shadow-color
shadow_boost = $shadow-boost
font_size = 150
font_family = $font-display
position = 0, -155
halign = center
valign = top
}
# TIME MM
label {
monitor =
text = cmd[update:1000] echo -e "$(date +"%M")"
color = $clock-color
shadow_pass = $shadow-pass
shadow_size = $shadow-size
shadow_color = $shadow-color
shadow_boost = $shadow-boost
font_size = 150
font_family = $font-display
position = 0, -325
halign = center
valign = top
}
# AM/PM for 12-Hour Format
#label {
monitor =
text = cmd[update:1000] echo -e "$(date +"%p")"
color = $clock-color
shadow_pass = $shadow-pass
shadow_size = $shadow-size
shadow_color = $shadow-color
shadow_boost = $shadow-boost
font_size = 16
font_family = $font-display
position = 0, 17
halign = center
valign = center
zindex = 5
}
# AM/PM BG
#shape {
monitor =
size = 70, 40
shadow_passes = $text-shadow-pass
shadow_boost = $text-shadow-boost
color = $shape-col2
rounding = $rounding
border_size =
border_color =
position = 0, 20
halign = center
valign = center
zindex = 1
}
# GREETING
label {
monitor =
text = cmd[update:1000] echo "$(bash $scrPath/greeting.sh)"
shadow_passes = $text-shadow-pass
shadow_boost = $text-shadow-boost
color = $fg0
font_size = 11
font_family = $font-text
position = 0, -55
halign = center
valign = center
}
# TODAY IS
label {
monitor =
text = cmd[update:1000] bash -c 'day=$(date +%A); echo "Today is $day"'
shadow_passes = $text-shadow-pass
shadow_boost = $text-shadow-boost
color = $fg0
font_size = 11
font_family = $font-text
position = 0, -75
halign = center
valign = center
} }
# DATE # DATE
label { label {
monitor = monitor =
text = cmd[update:1000] bash -c 'day=$(date +%d); case "$day" in 1) suffix="st";; 2) suffix="nd";; 3) suffix="rd";; *) suffix="th";; esac; echo -e "$(date +"%B %e")'$day'$suffix, $(date +%Y)"' text = cmd[update:43200000] date +"%A, %d %B %Y"
color = $text
shadow_passes = $text-shadow-pass font_size = 25
shadow_boost = $text-shadow-boost font_family = $font
position = -30, -150
color = $fg0 halign = right
font_size = 14 valign = top
font_family = $font-text
position = 0, -115
halign = center
valign = center
} }
# BATTERY # FINGERPRINT
label { {
monitor = monitor = "";
text = cmd[update:1000] echo -e "$($scrPath/battery.sh)" text = "$FPRINTPROMPT";
color = "$text";
color = $fg1 font_size = 14;
font_size = 12 font_family = $font;
font_family = $font-text position = "0, -107";
halign = "center";
position = -37, 29 valign = "center";
halign = right
valign = bottom
zindex = 5
} }
# NETWORK # USER AVATAR
label {
monitor =
text = cmd[update:1000] echo -e "$($scrPath/network.sh)"
color = $fg1
font_size = 12
font_family = $font-text
position = 37, 29
halign = left
valign = bottom
zindex = 5
}
# BLUETOOTH
label {
monitor =
text = cmd[update:1000] echo -e "$(~/.config/hypr/hyprlock/bluetooth.sh)"
color = $fg1
font_size = 12
font_family = $font-text
position = 37, 85
halign = left
valign = bottom
zindex = 5
}
# BATTERY BG
shape {
monitor =
size = 90, 40
shadow_passes = $text-shadow-pass
shadow_boost = $text-shadow-boost
color = $shape-col0
rounding = $shape-rd
border_size =
border_color =
position = -20, 20
halign = right
valign = bottom
zindex = 1
}
# NETWORK BG
shape {
monitor =
size = 150, 40
shadow_passes = $text-shadow-pass
shadow_boost = $text-shadow-boost
color = $shape-col0
rounding = $shape-rd
border_size =
border_color =
position = 20, 20
halign = left
valign = bottom
zindex = 1
}
# BLUETOOTH BG
shape {
monitor =
size = 150, 40
shadow_passes = $text-shadow-pass
shadow_boost = $text-shadow-boost
color = $shape-col0
rounding = $shape-rd
border_size =
border_color =
position = 20, 75
halign = left
valign = bottom
zindex = 1
}
# MEDIA BG
image { image {
monitor = monitor =
path = $imgPath/media-bg-dark-25.png path = $HOME/.face
size = 8% size = 100
opacity = 0.25 border_color = $accent
position = 0, 75
rounding = 5 halign = center
border_size = 0 valign = center
rotate = 0
position = 0, -10%
halign = center
valign = center
zindex = 1
} }
shape { # INPUT FIELD
monitor = input-field {
size = 35%, 8% monitor =
size = 300, 60
shadow_passes = $text-shadow-pass outline_thickness = 4
shadow_boost = $text-shadow-boost dots_size = 0.2
dots_spacing = 0.2
color = $shape-col1 dots_center = true
rounding = $rounding outer_color = $accent
border_size = inner_color = $surface0
border_color = font_color = $text
fade_on_empty = false
position = 0, 5% placeholder_text = <span foreground="##$textAlpha"><i>󰌾 Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
halign = center hide_input = false
valign = bottom check_color = $accent
zindex = 1 fail_color = $red
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
capslock_color = $yellow
position = 0, -47
halign = center
valign = center
} }
# PLAYER TITLE
label {
monitor =
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --title)"
color = $fg0
font_size = 14
font_family = $font-text
position = 0, -40%
halign = center
valign = center
zindex = 5
}
# PLAYER ARTIST
label {
monitor =
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --artist)"
color = $fg0
font_size = 11
font_family = $font-text
position = 0, -42%
halign = center
valign = center
zindex = 5
}
# PLAYER ALBUM
label {
monitor =
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --album)"
color = $fg0
font_size = 11
font_family = $font-text0
position = 0, -44%
halign = center
valign = center
zindex = 5
}
# PLAYER STATUS SYMBOL
label {
monitor =
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --status-symbol)"
color = $fg0
font_size = 16
font_family = $font-symbol
position = 33.5%, -38%
halign = left
valign = center
zindex = 5
}
# PLAYER STATUS
label {
monitor =
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --status)"
color = $fg0
font_size = 10
font_family = $font-text
position = 35%, -38%
halign = left
valign = center
zindex = 5
}
# PLAYER SOURCE SYMBOL
label {
monitor =
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --source-symbol)"
color = rgba($subtext0Alpha99)
font_size = 16
font_family = $font-symbol
position = -33.5%, -38%
halign = right
valign = center
zindex = 5
}
# PLAYER SOURCE
label {
monitor =
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --source)"
color = rgba($subtext0Alpha99)
font_size = 10
font_family = $font-text
position = -35%, -38%
halign = right
valign = center
zindex = 5
}
label {
monitor =
text =
color = $fg0
font_size = 24
font_family = $font-symbol
position = 0, 1%
halign = center
valign = bottom
}
-155
View File
@@ -1,155 +0,0 @@
source = $HOME/.config/hypr/catppuccin-hyprland/themes/mocha.conf
$accent = $mauve
$accentAlpha = $mauveAlpha
$font = JetBrainsMono Nerd Font
# GENERAL
general {
hide_cursor = true
no_fade_in = false
grace = 0
disable_loading_bar = true
}
# BACKGROUND
background {
monitor =
path = $HOME/Pictures/reze/reze.png
blur_passes = 3
blur_size = 7
noise = 0.0117
contrast = 0.8916
brightness = 0.8172
vibrancy = 0.1696
vibrancy_darkness = 0.0
color = $base
}
# TIME
label {
monitor =
text = $TIME
color = $text
font_size = 120
font_family = $font
position = 0, 300
halign = center
valign = center
}
# DATE
label {
monitor =
text = cmd[update:43200000] date +"%A, %d %B %Y"
color = $text
font_size = 30
font_family = $font
position = 0, 200
halign = center
valign = center
}
# USER AVATAR (Center)
image {
monitor =
path = $HOME/.face
size = 120
border_color = rgba(255, 255, 255, 0.1)
position = 0, 50
halign = center
valign = center
}
# INPUT FIELD (Center)
input-field {
monitor =
size = 300, 60
outline_thickness = 2
dots_size = 0.2
dots_spacing = 0.2
dots_center = true
outer_color = rgba(255, 255, 255, 0.1)
inner_color = rgba(0, 0, 0, 0.2)
font_color = $text
fade_on_empty = false
placeholder_text = <span foreground="##$textAlpha"><i>󰌾 Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
hide_input = false
check_color = $accent
fail_color = $red
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
capslock_color = $yellow
position = 0, -60
halign = center
valign = center
}
# --- MUSIC DASHBOARD (TOP RIGHT) ---
# ALBUM ART (At the very top right, 80px high, adjusted -3px for perfect alignment)
image {
monitor =
path = /tmp/hyprlock_art.png
size = 80
rounding = 15
border_color = rgba(255, 255, 255, 0.1)
reload_time = 2
reload_cmd = ~/.config/hypr/scripts/album_art.sh
position = -20, -17
halign = right
valign = top
}
# MUSIC TEXT BOX (To the left of the image, same height)
shape {
monitor =
size = 300, 80
color = rgba(0, 0, 0, 0.3)
rounding = 15
border_size = 1
border_color = rgba(255, 255, 255, 0.1)
position = -110, -20
halign = right
valign = top
}
# MUSIC TEXT (Right aligned and vertically centered inside the 80px box)
label {
monitor =
text = cmd[update:1000] ~/.config/hypr/scripts/songdetail.sh
color = $text
font_size = 14
font_family = $font
position = -125, -37
halign = right
valign = top
text_align = right
}
# --- STATUS DASHBOARD (BOTTOM RIGHT) ---
# SYSTEM INFO BOX (Vertical stack container)
shape {
monitor =
size = 300, 100
color = rgba(0, 0, 0, 0.3)
rounding = 15
border_size = 1
border_color = rgba(255, 255, 255, 0.1)
position = -20, 20
halign = right
valign = bottom
}
# SYSTEM INFO TEXT (3 lines, top of each other, right aligned)
label {
monitor =
text = cmd[update:5000] ~/.config/hypr/scripts/status_info.sh
color = $text
font_size = 14
font_family = $font
position = -35, 35
halign = right
valign = bottom
text_align = right
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

-33
View File
@@ -1,33 +0,0 @@
#!/bin/bash
# Get the current battery percentage
battery_percentage=$(cat /sys/class/power_supply/BAT0/capacity)
# Get the battery status (Charging or Discharging)
battery_status=$(cat /sys/class/power_supply/BAT0/status)
# Define the battery icons for each 10% segment
battery_icons=("󰂃" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰁹")
# Define the charging icon
charging_icon="󰂄"
# Calculate the index for the icon array
# Ensure the index is within bounds (0 to 9) for battery percentages 0 to 100
icon_index=$((battery_percentage / 10))
# If the battery is 100%, use the last icon (index 9)
if [ "$battery_percentage" -eq 100 ]; then
icon_index=9
fi
# Get the corresponding icon
battery_icon=${battery_icons[$icon_index]}
# Check if the battery is charging
if [ "$battery_status" = "Charging" ]; then
battery_icon="$charging_icon"
fi
# Output the battery percentage and icon
echo "$battery_percentage% $battery_icon"
-47
View File
@@ -1,47 +0,0 @@
#!/bin/bash
# Path to the Hyprland configuration file
config_file="$HOME/.config/hypr/hyprlock.conf"
# Read the bt-mode value from the configuration file
bt_mode=$(grep -oP '^\$bt-mode\s*=\s*\K\S+' ~/.config/hypr/hyprlock.conf)
# Get Bluetooth power status
bluetooth_status=$(bluetoothctl show | grep "Powered:" | awk '{print $2}')
# Check if Bluetooth is powered on
if [ "$bluetooth_status" != "yes" ]; then
echo "󰂯 Bluetooth Off"
exit 0
fi
# Initialize connected devices
connected_devices=$(echo "$connected_devices" | sed 's/[[:space:]]*$//')
# Process Bluetooth devices
while read -r line; do
echo "Processing line: $line" >&2
device_mac=$(echo "$line" | awk '{print $2}')
device_name=$(echo "$line" | cut -d' ' -f3-)
echo "Device MAC: $device_mac" >&2
echo "Device Name: $device_name" >&2
if bluetoothctl info "$device_mac" | grep -q "Connected: yes"; then
connected_devices+="$device_name "
fi
echo "Finished processing $device_mac" >&2
echo "---" >&2
done < <(bluetoothctl devices)
# If no connected devices, show "No Devices"
if [ -z "$connected_devices" ]; then
echo "󰂲 No Devices"
exit 0
fi
# Display output based on bt-mode
if [ "$bt_mode" = "true" ]; then
echo "󰂯 $connected_devices"
else
echo "󰂯 Connected"
fi
-22
View File
@@ -1,22 +0,0 @@
#!/bin/bash
# Only works if you use SWWW for your wallpapers
SWWW_DIR="$HOME/.cache/swww/"
HYPRLOCK="$HOME/.config/hypr/hyprlock.conf"
# Get a Monitor Cache File
FIRST_FILE=$(find "$SWWW_DIR" -type f | head -n 1)
# Check if SWWW file exists
if [ -n "$FIRST_FILE" ] && [ -f "$FIRST_FILE" ]; then
WALLPAPER=$(sed -n '2p' "$FIRST_FILE")
sed -i "s|^\(\$wallpaper[[:space:]]*=[[:space:]]*\).*|\1$WALLPAPER # (screenshot or /path/to/your/wallpaper.jpg)|" "$HYPRLOCK"
echo "Wallpaper path updated to $WALLPAPER"
exit 0
fi
# Error
echo "Fehler: kein Wallpaper gefunden."
exit 1
-32
View File
@@ -1,32 +0,0 @@
#!/bin/bash
# Set your Username
# username="TamarindX"
# Read the username alias from hyprlock.conf
username=$(grep -oP '^\$USER\s*=\s*\K\S+' ~/.config/hypr/hyprlock.conf)
# Check if the username was successfully extracted
if [ -z "$username" ]; then
echo "Username not found in hyprlock.conf."
exit 1
fi
# Get the current hour
hour=$(date +%H)
# Determine the greeting based on the time
if [ "$hour" -ge 5 ] && [ "$hour" -lt 12 ]; then
greeting="Good Morning"
elif [ "$hour" -ge 12 ] && [ "$hour" -lt 17 ]; then
greeting="Good Afternoon"
elif [ "$hour" -ge 17 ] && [ "$hour" -lt 21 ]; then
greeting="Good Evening"
elif [ "$hour" -ge 21 ] && [ "$hour" -lt 24 ]; then
greeting="Good Night"
else
greeting="GO TO SLEEP!"
fi
# Output the combined text
echo -e "Hello, $username! $greeting"
-65
View File
@@ -1,65 +0,0 @@
#!/bin/bash
# Set this variable to control the output
# Set to "true" to show SSID, "false" to show "Connected"
# show_ssid=false
# Read the wifi-mode alias from hyprlock.conf
show_ssid=$(grep -oP '^\$wifi-mode\s*=\s*\K\S+' ~/.config/hypr/hyprlock.conf)
# Check if the SSID was successfully extracted else fallback?!
if [ -z "$show_ssid" ]; then
show_ssid=false
fi
# Check if any Ethernet connection is active
ethernet_connected=$(nmcli -t -f DEVICE,TYPE,STATE dev | grep -E 'ethernet:connected')
# If Ethernet
if [ -n "$ethernet_connected" ]; then
echo "󰈀 Ethernet"
exit 0
fi
# Get Wi-Fi connection status
wifi_status=$(nmcli -t -f WIFI g)
# Check if Wi-Fi is enabled
if [ "$wifi_status" != "enabled" ]; then
echo "󰤮 Wi-Fi Off"
exit 0
fi
# Get active Wi-Fi connection details
wifi_info=$(nmcli -t -f ACTIVE,SSID,SIGNAL dev wifi | grep '^yes')
# If no active connection, show "Disconnected"
if [ -z "$wifi_info" ]; then
echo "󰤮 No Wi-Fi"
exit 0
fi
# Extract SSID
ssid=$(echo "$wifi_info" | cut -d':' -f2)
# Extract signal strength
signal_strength=$(echo "$wifi_info" | cut -d':' -f3)
# Define Wi-Fi icons based on signal strength
wifi_icons=("󰤯" "󰤟" "󰤢" "󰤥" "󰤨") # From low to high signal
# Clamp signal strength between 0 and 100
signal_strength=$((signal_strength < 0 ? 0 : (signal_strength > 100 ? 100 : signal_strength)))
# Calculate the icon index based on signal strength
icon_index=$((signal_strength / 25))
# Get the corresponding icon
wifi_icon=${wifi_icons[$icon_index]}
# Output based on show_ssid variable
if [ "$show_ssid" = true ]; then
echo "$wifi_icon $ssid"
else
echo "$wifi_icon Connected"
fi
-116
View File
@@ -1,116 +0,0 @@
#!/bin/bash
if [ $# -eq 0 ]; then
echo "Usage: $0 --title | --artist | --album | --source | --source-symbol"
exit 1
fi
# Function to get metadata using playerctl
get_metadata() {
key=$1
playerctl metadata --player=%any,chromium,firefox --format "{{ $key }}" 2>/dev/null
}
# Check for arguments
# Function to determine the source and return an icon and text
get_source_info_symbol() {
trackid=$(get_metadata "mpris:trackid")
if [[ "$trackid" == *"firefox"* ]]; then
echo -e "󰈹"
elif [[ "$trackid" == *"spotify"* ]]; then
echo -e ""
elif [[ "$trackid" == *"chromium"* ]]; then
echo -e ""
else
echo ""
fi
}
get_source_info() {
trackid=$(get_metadata "mpris:trackid")
if [[ "$trackid" == *"firefox"* ]]; then
echo -e "Firefox"
elif [[ "$trackid" == *"spotify"* ]]; then
echo -e "Spotify"
elif [[ "$trackid" == *"chromium"* ]]; then
echo -e "Chrome"
else
echo ""
fi
}
# Function to truncate text with ellipsis if necessary
truncate_with_ellipsis() {
text=$1
max_length=$2
if [ ${#text} -gt $max_length ]; then
echo "${text:0:$((max_length - 3))}..."
else
echo "$text"
fi
}
# Parse the argument
case "$1" in
--title)
title=$(get_metadata "xesam:title")
if [ -z "$title" ]; then
echo ""
else
truncate_with_ellipsis "$title" 28 # Limit the output to 50 characters
fi
;;
--artist)
artist=$(get_metadata "xesam:artist")
if [ -z "$artist" ]; then
echo ""
else
truncate_with_ellipsis "$artist" 28 # Limit the output to 50 characters
fi
;;
--status-symbol)
status=$(playerctl status 2>/dev/null)
if [[ $status == "Playing" ]]; then
echo "󰎆"
elif [[ $status == "Paused" ]]; then
echo "󰏥"
else
echo ""
fi
;;
--status)
status=$(playerctl status 2>/dev/null)
if [[ $status == "Playing" ]]; then
echo "Playing Now"
elif [[ $status == "Paused" ]]; then
echo "Paused"
else
echo ""
fi
;;
--album)
album=$(playerctl metadata --player=%any,chromium,firefox --format "{{ xesam:album }}" 2>/dev/null)
if [[ -n $album ]]; then
echo "$album"
else
status=$(playerctl status 2>/dev/null)
if [[ -n $status ]]; then
echo "Not album"
else
truncate_with_ellipsis "$album" 28 # Limit the output to 50 characters
fi
fi
;;
--source-symbol)
get_source_info_symbol
;;
--source)
get_source_info
;;
*)
echo "Invalid option: $1"
echo "Usage: $0 --title | --artist | --album | --source | --source-symbol"
exit 1
;;
esac
-39
View File
@@ -1,39 +0,0 @@
#!/bin/bash
# Get location data using IP Geolocation
# Recommended with API, but you can try w/o API [IPINFO.IO]
# API_TOKEN="YOUR_API_TOKEN"
# location_data=$(curl -s "https://ipinfo.io?token=$API_TOKEN" 2>/dev/null)
# location_data=$(curl -s https://ipinfo.io 2>/dev/null) #[Limited requests. Require API to send 50k request/month]
# Extract city and country code (ISO 3166-1 alpha-2 code)
# CITY=$(echo "$location_data" | jq -r '.city // empty')
# COUNTRY=$(echo "$location_data" | jq -r '.country // empty')
# IPINFO Alternative [IP-API.COM]
location_data=$(curl -s "http://ip-api.com/json/" 2>/dev/null)
# Extract city and country code
CITY=$(echo "$location_data" | jq -r '.city // empty')
COUNTRY=$(echo "$location_data" | jq -r '.countryCode // empty')
# Visit http://ip-api.com/json/ to find other variables
# HARDCODE Location
# CITY=$(grep -oP '^\$CITY\s*=\s*\K.+' ~/.config/hypr/hyprlock.conf)
# COUNTRY=$(grep -oP '^\$COUNTRY\s*=\s*\K.+' ~/.config/hypr/hyprlock.conf)
# Check if CITY and COUNTRY are valid
if [[ -n "$CITY" && -n "$COUNTRY" ]]; then
# Fetch weather info for the detected city from wttr.in
weather_info=$(curl -s "wttr.in/$CITY?format=%c+%C+%t" 2>/dev/null)
# Check if the weather info is valid
if [[ -n "$weather_info" ]]; then
echo "$COUNTRY, $CITY: $weather_info"
else
echo "Weather info unavailable for $COUNTRY, $CITY"
fi
else
echo "Unable to determine your location"
fi
+4 -7
View File
@@ -1,7 +1,4 @@
wallpaper { # preload = ~/Pictures/red_moon/red_moon-latte.jpg
monitor = preload = ~/Pictures/wallpapers/rem.jpg
path = ~/Pictures/reze/reze.png # wallpaper = ,~/Pictures/red_moon/red_moon-latte.jpg
fit_mode = cover wallpaper = ,~/Pictures/wallpapers/rem.jpg
}
splash = false
+3
View File
@@ -0,0 +1,3 @@
color_scheme=/usr/share/qt6ct/colors/catppuccin-mocha-maroon.conf
icon_theme=Papirus
style=Fusion
-97
View File
@@ -1,97 +0,0 @@
#!/bin/bash
# Set paths
CONFIG_DIR="$HOME/.config/hypr"
BACKUP_DIR="$CONFIG_DIR/hyprlock-backup-$(date +%Y%m%d%H%M%S)"
REPO_URL="https://github.com/Tamarindtype/googlish-hyprlock-theme.git"
TEMP_DIR="$(mktemp -d)"
read -p "Do you want to see every command executed? [y/N]: " choice
choice=${choice,,}
if [[ "$choice" == "y" ]]; then
SHOW_COMMANDS=true
else
SHOW_COMMANDS=false
fi
run_cmd() {
local desc="$1"
local cmd="$2"
if [[ "$SHOW_COMMANDS" == true ]]; then
echo -e "\n$desc"
echo "-> $cmd"
read -p "Run command? [Y/n]: " confirm
confirm=${confirm,,}
if [[ "$confirm" == "n" ]]; then
echo "⏭ Skipped."
else
eval "$cmd"
fi
else
eval "$cmd"
fi
}
# Backup existing config
if [ -d "$CONFIG_DIR/hyprlock" ] || [ -f "$CONFIG_DIR/hyprlock.conf" ]; then
read -p "Do you want to create a backup of your config? [Y/n]: " choice
choice=${choice,,}
if [[ "$choice" != "n" ]]; then
run_cmd "Creating backup folder" "mkdir -p \"$BACKUP_DIR\""
if [ -d "$CONFIG_DIR/hyprlock" ]; then
run_cmd "Backing up folder" "mv \"$CONFIG_DIR/hyprlock\" \"$BACKUP_DIR/\""
fi
if [ -f "$CONFIG_DIR/hyprlock.conf" ]; then
run_cmd "Backing up file" "mv \"$CONFIG_DIR/hyprlock.conf\" \"$BACKUP_DIR/\""
fi
fi
else
echo "No existing hyprlock config found. Skipping backup."
fi
# Clone the repo
run_cmd "Cloning repository..." "git clone \"$REPO_URL\" \"$TEMP_DIR\""
# Move files
run_cmd "Creating config directory" "mkdir -p \"$CONFIG_DIR\""
if [ -d "$TEMP_DIR/hyprlock" ]; then
run_cmd "Moving hyprlock folder" "mv \"$TEMP_DIR/hyprlock\" \"$CONFIG_DIR/\""
fi
if [ -f "$TEMP_DIR/hyprlock.conf" ]; then
run_cmd "Moving hyprlock.conf" "mv \"$TEMP_DIR/hyprlock.conf\" \"$CONFIG_DIR/\""
fi
# Make scripts executable
if [ -d "$CONFIG_DIR/hyprlock" ]; then
run_cmd "Making scripts executable..." "chmod +x \"$CONFIG_DIR/hyprlock\"/*.sh"
fi
# Optional: Run hyprlock
run_cmd "Running Hyprlock" "hyprlock"
read -p "Do you want to install the 'hyprlock-change-wallpaper' command? [Y/n]: " choice
choice=${choice,,}
if [[ "$choice" != "n" ]]; then
run_cmd "Installing hyprlock-change-wallpaper shortcut" "sudo ln -sf $CONFIG_DIR/hyprlock/change_wallpaper.sh /usr/local/bin/hyprlock-change-wallpaper"
run_cmd "Make command runable" "chmod +x $CONFIG_DIR/hyprlock/change_wallpaper.sh"
if command -v hyprlock-change-wallpaper &>/dev/null; then
echo "hyprlock-change-wallpaper was succesfully installed"
else
echo "Error while installing hyprlock-change-wallpaper."
fi
else
echo "⏭ installation of hyprlock-change-wallpaper skipped"
fi
# Cleanup
run_cmd "Cleaning up temp files..." "rm -rf \"$TEMP_DIR\""
-1
View File
@@ -1 +0,0 @@
monitor=eDP-1, disable
+2 -3
View File
@@ -3,14 +3,13 @@
# Or execute your favorite apps at launch like this: # Or execute your favorite apps at launch like this:
# exec-once = uwsm app -- waybar # exec-once = uwsm app -- waybar
# exec-once = uwsm app -- hyprpanel
# exec-once = uwsm app -- nextcloud --background # exec-once = uwsm app -- nextcloud --background
exec-once = uwsm app -- nm-applet --indicator exec-once = uwsm app -- nm-applet --indicator
# exec-once = uwsm app -- rclone mount google_drive: ~/gdrive # exec-once = uwsm app -- rclone mount google_drive: ~/gdrive
# exec-once = uwsm app -- protonvpn-app exec-once = uwsm app -- protonvpn-app
exec-once = uwsm app -- hyprpaper exec-once = uwsm app -- hyprpaper
# exec-once = uwsm app -- /usr/bin/discord --enable-features=UseOzonePlatform --ozone-platform=wayland --start-minimized &> /dev/null # exec-once = uwsm app -- /usr/bin/discord --enable-features=UseOzonePlatform --ozone-platform=wayland --start-minimized &> /dev/null
# exec-once = sleep 5 && ~/.config/hypr/scripts/replay-ctrl.sh start exec-once = sleep 5 && ~/.config/hypr/scripts/replay-ctrl.sh start
# exec-once = uwsm app -- /usr/lib/xdg-desktop-portal-hyprland # exec-once = uwsm app -- /usr/lib/xdg-desktop-portal-hyprland
exec-once = wl-paste --type text --watch cliphist store # Stores only text data exec-once = wl-paste --type text --watch cliphist store # Stores only text data
exec-once = wl-paste --type image --watch cliphist store # Stores only image data exec-once = wl-paste --type image --watch cliphist store # Stores only image data
+4 -4
View File
@@ -1,17 +1,17 @@
# See https://wiki.hyprland.org/Configuring/Environment-variables/ # See https://wiki.hyprland.org/Configuring/Environment-variables/
# env = INTEL_DEBUG,noccs
# env = WLR_DRM_NO_ATOMIC,1
env = HYPRCURSOR_THEME,Bibata-Modern-Classic env = HYPRCURSOR_THEME,Bibata-Modern-Classic
env = HYPRCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24
env = XCURSOR_SIZE,24 env = XCURSOR_SIZE,24
env = XCURSOR_THEME,Bibata-Modern-Classic env = XCURSOR_THEME,Bibata-Modern-Classic
env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_CURRENT_DESKTOP,Hyprland
# env = debug:full_cm_proto,true env = debug:full_cm_proto,true
env = QT_QPA_PLATFORMTHEME,qt6ct env = QT_QPA_PLATFORMTHEME,qt6ct
env = LIBVA_DRIVER_NAME,radeonsi env = LIBVA_DRIVER_NAME,radeonsi
env = VDPAU_DRIVER,radeonsi env = VDPAU_DRIVER,radeonsi
env = MOZ_ENABLE_WAYLAND,1 env = MOZ_ENABLE_WAYLAND,1
env = ELECTRON_OZONE_PLATFORM_HINT,wayland env = ELECTRON_OZONE_PLATFORM_HINT,wayland
env = EDITOR,nvim env = AMD_VULKAN_ICD,RADV
env = WLR_NO_HARDWARE_CURSORS,0
env = QT_QPA_PLATFORMTHEME,hyprqt6engine
+3 -18
View File
@@ -1,13 +1,12 @@
# https://wiki.hyprland.org/Configuring/Variables/#input # https://wiki.hyprland.org/Configuring/Variables/#input
input { input {
kb_layout = us,us kb_layout = us
kb_variant = dvorak-intl, intl # kb_variant = dvorak-intl, intl
# kb_variant = intl kb_variant = intl
kb_model = kb_model =
kb_options = kb_options =
kb_rules = kb_rules =
kb_options = ctrl:nocaps
follow_mouse = 0 follow_mouse = 0
@@ -18,17 +17,3 @@ input {
natural_scroll = false natural_scroll = false
} }
} }
device {
name = at-translated-set-2-keyboard
resolve_binds_by_sym = 1
kb_layout = us
kb_variant = dvorak-intl
}
device {
name = topre-corporation-hhkb-professional
resolve_binds_by_sym = 1
kb_layout = us
kb_variant = dvorak-intl
}
+10 -13
View File
@@ -1,18 +1,13 @@
$mainMod = SUPER # Sets "Windows" key as main modifier $mainMod = SUPER # Sets "Windows" key as main modifier
bindl=,switch:on:Lid Switch,exec,~/.config/hypr/scripts/lid_handler.sh close
bindl=,switch:off:Lid Switch,exec,~/.config/hypr/scripts/lid_handler.sh open
bindr = ALT, m, exec, cliphist list | fuzzel --dmenu | cliphist decode | wl-copy bindr = ALT, m, exec, cliphist list | fuzzel --dmenu | cliphist decode | wl-copy
bind = , PRINT, exec, grim -g "$(slurp)" - | wl-copy bind = , PRINT, exec, grim -g "$(slurp)" - | wl-copy
bind = SHIFT, PRINT, exec, grim -g "$(slurp)" ~/Pictures/Screenshots/$(date +'%Y-%m-%d_%H-%M-%S').png
bindr = ALT SHIFT, z, exec, ~/.config/hypr/scripts/replay-ctrl.sh save bindr = ALT SHIFT, z, exec, ~/.config/hypr/scripts/replay-ctrl.sh save
bindr = ALT, z, exec, ~/.config/hypr/scripts/replay-ctrl.sh toggle bindr = ALT, z, exec, ~/.config/hypr/scripts/replay-ctrl.sh toggle
bindr = ALT SHIFT, c, exec, ~/.config/hypr/scripts/droidcam-ctrl.sh toggle bindr = ALT SHIFT, c, exec, ~/.config/hypr/scripts/droidcam-ctrl.sh toggle
# general binds # general binds
bind = $mainMod, B, exec, fluxo bt menu
bind = $mainMod, RETURN, exec, $terminal bind = $mainMod, RETURN, exec, $terminal
bind = $mainMod SHIFT, Q, killactive, bind = $mainMod SHIFT, Q, killactive,
bind = $mainMod CTRL, L, exec, hyprlock bind = $mainMod CTRL, L, exec, hyprlock
@@ -65,8 +60,8 @@ bind = ALT, Tab, changegroupactive, next
# Example special workspace (scratchpad) # Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, virtual bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:virtual bind = $mainMod SHIFT, S, movetoworkspace, special:magic
bind = $mainMod, D, togglespecialworkspace, discord bind = $mainMod, D, togglespecialworkspace, discord
bind = $mainMod SHIFT, D, movetoworkspace, special:discord bind = $mainMod SHIFT, D, movetoworkspace, special:discord
@@ -79,15 +74,17 @@ bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness # Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, fluxo vol up 5 bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, fluxo vol down 5 bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, fluxo vol mute bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, fluxo mic mute bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s +10% bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%- bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
# Requires playerctl # Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous bindl = , XF86AudioPrev, exec, playerctl previous
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
+9 -10
View File
@@ -1,11 +1,10 @@
# laptop screen monitor = desc:Samsung Electric Company LC27G7xT H4ZRA00734, 2560x1440@240, 0x0, 1
monitor = eDP-1, 1920x1080@60, 0x0, 1 # monitorv2 {
# samsung home monitor # desc = Samsung Electric Company LC27G7xT H4ZRA00734
monitor = desc:Samsung Electric Company LC27G7xT H4ZRA00734, 2560x1440@144, 0x-1440, 1 # mode = 2560x1440@240
# monitor = desc:Samsung Electric Company LC27G7xT H4ZRA00734, 1920x1080@144, 0x-1080, 1 # position = 0x0
# monitor = desc:Samsung Electric Company LC27G7xT H4ZRA00734, 2560x1440@60, 0x-1440, 1 # scale = 1
# bitdepth = 10
# cm = wide
# lid_state fallback # }
source = ~/.config/hypr/lid_state.conf
+15 -36
View File
@@ -12,22 +12,23 @@ general {
border_size = 3 border_size = 3
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = $mauve $lavender 45deg # col.active_border = rgba(cba6f7ee) rgba(f38ba8ee) 45deg
col.active_border = rgb($mauveAlpha) rgb($blueAlpha) 30deg
col.inactive_border = rgb($surface2Alpha) col.inactive_border = rgb($surface2Alpha)
# Set to true enable resizing windows by clicking and dragging on borders and gaps # Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false resize_on_border = false
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false allow_tearing = true
layout = dwindle layout = dwindle
} }
# https://wiki.hyprland.org/Configuring/Variables/#decoration # https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration { decoration {
rounding = 12 rounding = 4
rounding_power = 3 rounding_power = 1
# Change transparency of focused and unfocused windows # Change transparency of focused and unfocused windows
active_opacity = 1.0 active_opacity = 1.0
@@ -95,40 +96,18 @@ master {
misc { misc {
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers 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. :( disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
vrr = 1 vrr = 0
font_family = FiraCode Nerd Font font_family = FiraCode Nerd Font
} }
group { group {
# The border around the grouped windows groupbar {
col.border_active = $mauve $lavender 45deg font_size = 14
col.border_inactive = $surface1 text_color = $text
text_color_inactive = $text
groupbar { col.active = $maroon
font_family = JetBrainsMono Nerd Font col.inactive = $surface2
font_size = 11 }
col.border_active = $maroon $teal 30deg
# Increase the height so the text has room to breathe col.border_inactive = $surface2
height = 24
# Disable the default 3D gradient for a modern flat look
gradients = false
# --- Active Tab ---
# Bright background with very dark text for perfect readability
col.active = $mauve
text_color = $crust
# --- Inactive Tab ---
# Dark surface background with dimmed, soft text
col.inactive = $surface0
text_color_inactive = $subtext0
height = 1
font_size = 11
# about half the indicator height
text_offset = -7
# Make the indicator tall enough to render text inside
indicator_height = 15
}
} }
+69 -71
View File
@@ -1,89 +1,87 @@
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules # See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# ==========================================
# VARIABLES
# ==========================================
# Dialogs and utility apps that should float in the center
$dialog_titles = ^(Open Form|Open File|Select a File|Choose a file|Open Workspace|Choose Directory.*|Save As.*|Save File.*|branchdialog|pinentry-gtk-2|Confirm to replace files|File Operation Progress|Open Files.*|Anmelden.*|File Upload.*|TRuDI-Export laden)$
$dialog_classes = ^(pavucontrol|blueman-manager|nm-connection-editor|org.pulseaudio.pavucontrol)$
# App classes
$steam = ^(steam)$
$gamescope = ^(gamescope)$
# ==========================================
# GENERAL & FIXES
# ==========================================
# Ignore maximize requests from apps. You'll probably like this. # Ignore maximize requests from apps. You'll probably like this.
# windowrule = suppress_event maximize, match:class .* windowrule = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland # Fix some dragging issues with XWayland
# windowrule = no_focus 1, match:class ^$, match:title ^$, match:xwayland 1, match:floating 1, match:fullscreen 0, match:pinned 0 windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
windowrule = no_blur 1, match:class ^$, match:title ^$ windowrulev2=noblur,class:^()$,title:^()$
# ========================================== # games for tearing add the immediate rule
# FLOATING & CENTERED DIALOGS
# ==========================================
# Make them float
windowrule = float 1, match:title $dialog_titles
windowrule = float 1, match:class $dialog_classes
# Set to 800x600 # Float Windows
windowrule = size 800 600, match:title $dialog_titles windowrulev2=float,title:^(Open File)$
windowrule = size 800 600, match:class $dialog_classes windowrulev2=float,title:^(Select a File)$
windowrulev2=float,title:^(Select Folder)$
windowrulev2=float,title:^(Choose a file)$
windowrulev2=float,title:^(Save As)$
windowrulev2=float,title:^(Save File)$
windowrulev2=float,title:^(branchdialog)$
windowrulev2=float,title:^(pinentry-gtk-2)$
windowrulev2=float,title:^(Confirm to replace files)$
windowrulev2=float,title:^(File Operation Progress)$
windowrulev2=float,class:^(pavucontrol|blueman-manager|nm-connection-editor)$
# Center them on the screen # Center and Resize Windows
windowrule = center 1, match:title $dialog_titles windowrulev2=size 800 600,title:^(Open File)$
windowrule = center 1, match:class $dialog_classes windowrulev2=size 800 600,title:^(Select a File)$
windowrulev2=size 800 600,title:^(Choose a file)$
windowrulev2=size 800 600,title:^(Save As)$
windowrulev2=size 800 600,title:^(Save File)$
windowrulev2=size 800 600,title:^(branchdialog)$
windowrulev2=size 800 600,title:^(pinentry-gtk-2)$
windowrulev2=size 800 600,title:^(Confirm to replace files)$
windowrulev2=size 800 600,title:^(File Operation Progress)$
windowrulev2=size 800 600,class:^(pavucontrol|blueman-manager|nm-connection-editor)$
windowrulev2=center,title:^(Open File)$
windowrulev2=center,title:^(Select a File)$
windowrulev2=center,title:^(Choose a file)$
windowrulev2=center,title:^(Save As)$
windowrulev2=center,title:^(Save File)$
windowrulev2=center,title:^(branchdialog)$
windowrulev2=center,title:^(pinentry-gtk-2)$
windowrulev2=center,title:^(Confirm to replace files)$
windowrulev2=center,title:^(File Operation Progress)$
windowrulev2=center,class:^(pavucontrol|blueman-manager|nm-connection-editor)$
windowrulev2=noblur,title:^(Open File)$
windowrulev2=noblur,title:^(Select a File)$
windowrulev2=noblur,title:^(Choose a file)$
windowrulev2=noblur,title:^(Save As)$
windowrulev2=noblur,title:^(Save File)$
windowrulev2=noblur,title:^(branchdialog)$
windowrulev2=noblur,title:^(pinentry-gtk-2)$
windowrulev2=noblur,title:^(Confirm to replace files)$
windowrulev2=noblur,title:^(File Operation Progress)$
windowrulev2=noblur,class:^(pavucontrol|blueman-manager|nm-connection-editor)$
# Disable blur # Workspace Rules
windowrule = no_blur 1, match:title $dialog_titles # windowrule=workspace 1,class:^(firefox)$
windowrule = no_blur 1, match:class $dialog_classes # windowrule=workspace 2,class:^(kitty)$
# windowrule=workspace 3,class:^(Code)$
# ========================================== windowrulev2=workspace special:magic,class:^(Spotify)$
# WORKSPACE ASSIGNMENTS windowrulev2=workspace special:magic,class:^(spotify)$
# ========================================== windowrulev2=workspace special:discord,class:^(discord|vesktop)$
# Normal Workspaces # windowrulev2=workspace 2, class:^(brave-browser)$
# windowrule = workspace 1, match:class ^(firefox)$
# windowrule = workspace 2, match:class ^(kitty)$
# windowrule = workspace 3, match:class ^(Code)$
windowrule = workspace 1, match:class $gamescope
# Special Workspaces # steam rules
windowrule = workspace special:virtual, match:class ^(Spotify|spotify)$
windowrule = workspace special:discord, match:class ^(discord|vesktop)$
windowrulev2=workspace 3 silent, class:^(steam)$, title:^(Steam)$
windowrulev2=workspace 4, class:^(gamescope)$
# ========================================== # fixed sizes for different windows
# APP-SPECIFIC RULES: STEAM & GAMING windowrulev2=size 400 800,title:^(Friends List)$ class:^(steam)$
# ========================================== windowrulev2=size 1000 800,title:^(Steam Settings)$ class:^(steam)$
# windowrule = workspace 3 silent, match:class $steam, match:title ^(Steam)$ windowrulev2=size 1000 800,title:^(Add Non-Steam Game)$ class:^(steam)$
# Fixed sizes for specific Steam windows # float windows that arent the main steam window
windowrule = size 400 800, match:title ^(Friends List)$, match:class $steam windowrulev2 = float, class:^(steam)$, title:negative:^(Steam)$
windowrule = size 1000 800, match:title ^(Steam Settings)$, match:class $steam windowrulev2 = noblur, class:^(steam)$, title:negative:^(Steam)$
windowrule = size 1000 800, match:title ^(Add Non-Steam Game)$, match:class $steam # windowrulev2 = center, class:^(steam)$, title:negative:^(Steam)$
# Float and disable blur for Steam windows that aren't the main window # allow tearing for games started with gamescope
windowrule = float 1, match:class $steam, match:title negative:^(Steam)$ windowrulev2 = immediate, class:^(gamescope)$
windowrule = no_blur 1, match:class $steam, match:title negative:^(Steam)$
# windowrule = center 1, match:class $steam, match:title negative:^(Steam)$
# Allow tearing for games started with Gamescope
windowrule = immediate 1, match:class $gamescope
# Layer rules
# waybar blur
layerrule = blur on, match:namespace bottom
layerrule = blur on, match:namespace top
layerrule = ignore_alpha 0.5, match:namespace bottom
layerrule = ignore_alpha 0.5, match:namespace top
# launcher blur
layerrule = blur on, match:namespace launcher
layerrule = ignore_alpha 0.5, match:namespace launcher
-11
View File
@@ -1,11 +0,0 @@
#!/bin/bash
url=$(playerctl metadata mpris:artUrl 2>/dev/null)
if [[ "$url" == file://* ]]; then
cp "${url#file://}" /tmp/hyprlock_art.png
echo "/tmp/hyprlock_art.png"
elif [[ "$url" == http* ]]; then
curl -s "$url" -o /tmp/hyprlock_art.png
echo "/tmp/hyprlock_art.png"
else
echo "$HOME/.config/hypr/catppuccin-hyprland/assets/mocha.webp"
fi
+8 -2
View File
@@ -15,7 +15,13 @@ start() {
notify-send -u low "$PROGRAM_NAME" "$PROGRAM_NAME is starting ..." notify-send -u low "$PROGRAM_NAME" "$PROGRAM_NAME is starting ..."
ANDROID_SERIAL=$ANDROID_SERIAL droidcam-cli -a -v -size=1920x1080 adb 4747 &> /dev/null & ANDROID_SERIAL=$ANDROID_SERIAL droidcam-cli -a -v -size=1920x1080 adb 4747 &> /dev/null &
echo $! > "$PID_FILE" PID=$!
sleep 1
if ! ps -p "$PID" > /dev/null; then
notify-send -u critical "$PROGRAM_NAME" "$PROGRAM_NAME did not start"
exit 1
fi
echo "$PID" > "$PID_FILE"
} }
@@ -65,4 +71,4 @@ case "$1" in
exit 1 exit 1
esac esac
exit 0 exit 0
-53
View File
@@ -1,53 +0,0 @@
#!/bin/bash
# ~/.config/hypr/scripts/lid_handler.sh
# The file that tells Hyprland to keep the lid off during reloads
LID_STATE_FILE="$HOME/.config/hypr/lid_state.conf"
restart_ui() {
# Spawn in background and detach
systemctl restart --user waybar hyprpaper
}
if [[ "$1" == "close" ]]; then
# Check if ANY external monitor is connected and active
if hyprctl monitors all | grep -qE "Monitor (DP|HDMI|Type-C)-"; then
# Prevent laptop screen from turning on during manual config reloads
echo "monitor=eDP-1, disable" > "$LID_STATE_FILE"
# Extract the CURRENT live settings of all external monitors using jq
# This grabs the active resolution, refresh rate, position, and scale.
LIVE_MONITORS=$(hyprctl -j monitors | jq -c '.[] | select(.name != "eDP-1")')
# 3. Disable the laptop screen
hyprctl keyword monitor "eDP-1, disable"
# 4. Re-apply the live settings to external monitors so they don't reset
echo "$LIVE_MONITORS" | while read -r mon_json; do
NAME=$(echo "$mon_json" | jq -r '.name')
WIDTH=$(echo "$mon_json" | jq -r '.width')
HEIGHT=$(echo "$mon_json" | jq -r '.height')
REFRESH=$(echo "$mon_json" | jq -r '.refreshRate')
X=$(echo "$mon_json" | jq -r '.x')
Y=$(echo "$mon_json" | jq -r '.y')
SCALE=$(echo "$mon_json" | jq -r '.scale')
# Formats it exactly as Hyprland expects: DP-1, 1920x1080@240, 0x0, 1
hyprctl keyword monitor "$NAME, ${WIDTH}x${HEIGHT}@${REFRESH}, ${X}x${Y}, $SCALE"
done
# restart ui
restart_ui
fi
elif [[ "$1" == "open" ]]; then
# Clear the override file so the laptop screen is allowed to turn on again
echo "" > "$LID_STATE_FILE"
# Let Hyprland reload itself.
# This automatically re-enables eDP-1 based on your hardcoded hyprland.conf!
hyprctl reload
restart_ui
fi
+2 -2
View File
@@ -18,14 +18,14 @@ start() {
gpu-screen-recorder \ gpu-screen-recorder \
-w screen \ -w screen \
-f 60 \ -f 60 \
-a default_output -a default_input \ -a "default_input|default_output" \
-fm vfr \ -fm vfr \
-c mkv \ -c mkv \
-encoder gpu \ -encoder gpu \
-bm qp \ -bm qp \
-cr full \ -cr full \
-tune quality \ -tune quality \
-k av1_10bit \ -k av1 \
-q high \ -q high \
-r 120 \ -r 120 \
-replay-storage ram \ -replay-storage ram \
-13
View File
@@ -1,13 +0,0 @@
#!/bin/bash
status=$(playerctl status 2>/dev/null)
if [ "$status" = "Playing" ] || [ "$status" = "Paused" ]; then
title=$(playerctl metadata title | sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g')
artist=$(playerctl metadata artist | sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g')
if [ ${#title} -gt 25 ]; then title="${title:0:22}..."; fi
if [ ${#artist} -gt 25 ]; then artist="${artist:0:22}..."; fi
echo "<span weight='bold' foreground='#cba6f7'>$title</span>"
echo "<span foreground='#bac2de' size='small'>$artist</span>"
else
echo "<span weight='bold' foreground='#cdd6f4'>No Media</span>"
echo "<span size='small' foreground='#a6adc8'>Idling</span>"
fi
-14
View File
@@ -1,14 +0,0 @@
#!/bin/bash
# 1. Network
net=$(nmcli -t -f active,ssid dev wifi | grep '^yes' | cut -d: -f2 || echo 'Offline')
if [ ${#net} -gt 15 ]; then net="${net:0:12}..."; fi
# 2. Battery
bat_cap=$(cat /sys/class/power_supply/BAT0/capacity)
bat_stat=$(cat /sys/class/power_supply/BAT0/status)
if [ "$bat_stat" = "Charging" ]; then icon="󰂄"; else icon="󰁹"; fi
# 3. Load
cpu=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}' | cut -d. -f1)
# Output 3 lines for the vertical stack
echo "󰖩 $net"
echo "$icon $bat_cap% ($bat_stat)"
echo "󰍛 Load: $cpu%"
-166
View File
@@ -1,166 +0,0 @@
{
"log_level": "LOG_LEVEL_INFO",
"log_subprocesses_to_journal": false,
"dbus": {
"enabled": true,
"connect_timeout": "20s",
"connect_interval": "0.200s",
"notifications": {
"enabled": true
},
"systray": {
"enabled": true
},
"shortcuts": {
"enabled": true
},
"brightness": {
"enabled": true,
"adjust_step_percent": 5,
"min_brightness": 1,
"enable_logind": true,
"hud_notifications": true
},
"power": {
"enabled": true,
"low_percent": 10,
"critical_percent": 5,
"hud_notifications": true
}
},
"audio": {
"enabled": true,
"volume_step_percent": 5,
"volume_exceed_maximum": false,
"hud_notifications": true
},
"panels": [
{
"id": "panel0",
"edge": "EDGE_TOP",
"size": 34,
"monitor": "",
"modules": [
{
"pager": {
"icon_size": 14,
"active_monitor_only": false,
"scroll_wrap_workspaces": true,
"scroll_include_inactive": true,
"enable_workspace_names": false,
"pinned": [1, 2, 3, 4, 5, 6],
"preview_width": 256
}
},
{
"spacer": {
"size": 8,
"expand": false
}
},
{
"taskbar": {
"icon_size": 24,
"active_workspace_only": true,
"active_monitor_only": true,
"group_tasks": true,
"expand": false
}
},
{
"spacer": {
"expand": true
}
},
{
"clock": {
"time_format": "15:04",
"date_format": "%a %d %b",
"tooltip_time_format": "15:04",
"tooltip_date_format": "Monday, 02 January 2006"
}
},
{
"spacer": {
"expand": true
}
},
{
"systray": {
"icon_size": 18,
"menu_icon_size": 18,
"pinned": [
"nm-applet"
],
"modules": [
{
"power": {
"icon_size": 18,
"icon_symbolic": true
}
}
]
}
},
{
"spacer": {
"size": 8,
"expand": false
}
},
{
"notifications": {
"icon_size": 18,
"notification_icon_size": 48,
"default_timeout": "7s",
"position": "POSITION_TOP_RIGHT",
"margin": 24
}
},
{
"spacer": {
"size": 8,
"expand": false
}
},
{
"audio": {
"icon_size": 18,
"icon_symbolic": true,
"command_mixer": "pavucontrol",
"enable_source": true
}
},
{
"spacer": {
"size": 8,
"expand": false
}
},
{
"session": {
"icon_size": 18,
"icon_symbolic": true,
"overlay_icon_size": 64,
"overlay_icon_symbolic": true,
"command_logout": "uwsm stop",
"command_reboot": "systemctl reboot",
"command_suspend": "systemctl suspend",
"command_shutdown": "systemctl poweroff"
}
},
{
"spacer": {
"size": 8,
"expand": false
}
}
]
}
],
"launch_wrapper": [
"uwsm",
"app",
"--"
]
}
-127
View File
@@ -1,127 +0,0 @@
/* Catppuccin Mocha Palette */
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;
@define-color surface0 #313244;
@define-color surface1 #45475a;
@define-color surface2 #585b70;
@define-color text #cdd6f4;
@define-color subtext0 #a6adc8;
@define-color subtext1 #bac2de;
@define-color overlay0 #6c7086;
@define-color overlay1 #7f849c;
@define-color overlay2 #9399b2;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color sapphire #74c7ec;
@define-color sky #89dceb;
@define-color teal #94e2d5;
@define-color green #a6e3a1;
@define-color yellow #f9e2af;
@define-color peach #fab387;
@define-color maroon #eba0ac;
@define-color red #f38ba8;
@define-color mauve #cba6f7;
@define-color flamingo #f2cdcd;
@define-color rosewater #f5e0dc;
* {
font-family: "JetBrainsMono Nerd Font";
font-size: 13px;
border: none;
box-shadow: none;
}
window#panel0 {
background-color: alpha(@base, 0.7);
color: @text;
}
#pager {
margin: 4px;
}
#pager button {
background-color: @surface0;
color: @subtext0;
border-radius: 12px;
margin: 0 2px;
padding: 0 12px;
transition: all 0.2s ease-in-out;
}
#pager button.active {
background-color: @mauve;
color: @base;
}
#pager button:hover {
background-color: @surface1;
color: @text;
}
#taskbar button {
background-color: transparent;
color: @subtext1;
border-radius: 12px;
margin: 0 2px;
padding: 0 8px;
}
#taskbar button.active {
background-color: @surface0;
border-bottom: 2px solid @mauve;
}
#clock, #systray, #audio, #session, #notifications {
background-color: @surface0;
color: @text;
border-radius: 15px;
margin: 4px 3px;
padding: 0 12px;
}
#notifications {
color: @yellow;
}
#clock {
color: @mauve;
font-weight: bold;
}
#audio {
color: @sapphire;
}
#audio.muted {
color: @subtext0;
}
#session {
color: @red;
padding: 0 8px;
}
/* Notifications and HUD */
#notifications {
background-color: @base;
color: @text;
border: 1px solid @surface1;
border-radius: 12px;
}
#hud {
background-color: alpha(@base, 0.8);
color: @text;
border-radius: 20px;
padding: 10px;
}
#hud .progress-bar {
background-color: @surface1;
}
#hud .progress-bar-fill {
background-color: @mauve;
}
+19 -16
View File
@@ -1,32 +1,35 @@
[Default Applications] [Default Applications]
application/pdf=org.pwmt.zathura-pdf-poppler.desktop text/html=zen.desktop
image/jpeg=feh.desktop
image/png=feh.desktop
x-scheme-handler/http=zen.desktop x-scheme-handler/http=zen.desktop
x-scheme-handler/https=zen.desktop x-scheme-handler/https=zen.desktop
x-scheme-handler/about=brave-browser.desktop
x-scheme-handler/unknown=brave-browser.desktop
image/png=feh.desktop
x-scheme-handler/discord=vesktop.desktop
image/jpeg=feh.desktop
audio/flac=mpv.desktop
x-scheme-handler/ror2mm=r2modman.desktop
image/webp=feh.desktop
x-scheme-handler/chrome=zen.desktop x-scheme-handler/chrome=zen.desktop
text/html=zen.desktop
application/x-extension-htm=zen.desktop application/x-extension-htm=zen.desktop
application/x-extension-html=zen.desktop application/x-extension-html=zen.desktop
application/x-extension-shtml=zen.desktop application/x-extension-shtml=zen.desktop
application/xhtml+xml=zen.desktop application/xhtml+xml=zen.desktop
application/x-extension-xhtml=zen.desktop application/x-extension-xhtml=zen.desktop
application/x-extension-xht=zen.desktop application/x-extension-xht=zen.desktop
x-scheme-handler/about=google-chrome.desktop
x-scheme-handler/unknown=google-chrome.desktop
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop
x-scheme-handler/ror2mm=r2modman.desktop
image/webp=feh.desktop
x-scheme-handler/claude-cli=claude-code-url-handler.desktop
x-scheme-handler/msteams=teams-for-linux.desktop
[Added Associations] [Added Associations]
application/pdf=org.pwmt.zathura-pdf-poppler.desktop;
image/jpeg=feh.desktop;
image/png=feh.desktop; image/png=feh.desktop;
image/jpeg=feh.desktop;
audio/flac=mpv.desktop;
image/webp=feh.desktop;
x-scheme-handler/http=zen.desktop; x-scheme-handler/http=zen.desktop;
x-scheme-handler/https=zen.desktop; x-scheme-handler/https=zen.desktop;
text/html=zen.desktop;
x-scheme-handler/chrome=zen.desktop; x-scheme-handler/chrome=zen.desktop;
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop; text/html=zen.desktop;
image/webp=feh.desktop; application/x-extension-htm=zen.desktop;
application/x-extension-html=zen.desktop;
application/x-extension-shtml=zen.desktop;
application/xhtml+xml=zen.desktop;
application/x-extension-xhtml=zen.desktop;
application/x-extension-xht=zen.desktop;
Submodule nvim deleted from 8d657d0f8d
+334
View File
@@ -0,0 +1,334 @@
vim.o.number = true
vim.o.wrap = false
vim.o.tabstop = 4
vim.o.shiftwidth = 4
vim.o.smartcase = true
vim.o.ignorecase = true
vim.o.hlsearch = false
vim.o.signcolumn = 'yes'
vim.o.clipboard = 'unnamedplus'
vim.o.undofile = true
vim.o.undodir = '/home/narl/.cache/nvim-undodir'
vim.g.mapleader = ','
-- Set up 'mini.deps' (customize to your liking)
require('mini.deps').setup()
local add = MiniDeps.add
add({
source = 'williamboman/mason.nvim'
})
add({
source = 'stevearc/conform.nvim'
})
add({
source = 'williamboman/mason-lspconfig.nvim'
})
add({
source = 'mfussenegger/nvim-lint'
})
add({
source = 'akinsho/toggleterm.nvim'
})
-- Add to current session (install if absent)
add({
source = 'neovim/nvim-lspconfig',
-- Supply dependencies near target plugin
depends = { 'williamboman/mason.nvim' },
})
add({
source = 'seblyng/roslyn.nvim',
})
add({
source = 'tris203/rzls.nvim',
})
add({
source = 'nvim-treesitter/nvim-treesitter',
-- Use 'master' while monitoring updates in 'main'
checkout = 'master',
monitor = 'main',
-- Perform action after every checkout
hooks = { post_checkout = function() vim.cmd('TSUpdate') end },
})
add({
-- Completion framework:
source = 'hrsh7th/nvim-cmp',
-- LSP completion source:
depends = {'hrsh7th/cmp-nvim-lsp',
'hrsh7th/cmp-nvim-lua',
'hrsh7th/cmp-nvim-lsp-signature-help',
'hrsh7th/cmp-vsnip',
'hrsh7th/cmp-path',
'hrsh7th/cmp-buffer',
'hrsh7th/vim-vsnip',
},
})
add({ source = "catppuccin/nvim", name = "catppuccin" })
require('mini.files').setup({
mappings = {
show_help = 'gh',
},
})
require('mini.icons').setup({style = 'ascii'})
require('mini.pick').setup({})
require('mini.snippets').setup({})
require('mini.notify').setup({})
require('mini.statusline').setup({})
require('mini.tabline').setup({})
require('mini.git').setup({})
local imap_expr = function(lhs, rhs)
vim.keymap.set('i', lhs, rhs, { expr = true })
end
imap_expr('<Tab>', [[pumvisible() ? "\<C-n>" : "\<Tab>"]])
imap_expr('<S-Tab>', [[pumvisible() ? "\<C-p>" : "\<S-Tab>"]])
_G.cr_action = function()
-- If there is selected item in popup, accept it with <C-y>
if vim.fn.complete_info()['selected'] ~= -1 then return '\25' end
-- Fall back to plain `<CR>`. You might want to customize this
-- according to other plugins. For example if 'mini.pairs' is set up, replace
-- next line with `return MiniPairs.cr()`
return '\r'
end
vim.keymap.set('i', '<CR>', 'v:lua.cr_action()', { expr = true })
require("toggleterm").setup{
size = function(term)
if term.direction == "horizontal" then
return 30
elseif term.direction == "vertical" then
return 69
end
end,
open_mapping = [[<c-\>]],
hide_numbers = true,
shade_terminals = true,
persist_size = true,
direction = 'float',
close_on_exit = true,
shell = vim.o.shell,
}
require('nvim-treesitter.configs').setup {
ensure_installed = { "lua", "rust", "toml", "c_sharp" },
auto_install = true,
highlight = {
enable = true,
additional_vim_regex_highlighting=false,
},
ident = { enable = true },
rainbow = {
enable = true,
extended_mode = true,
max_file_lines = nil,
}
}
require("mason").setup({
registries = {
"github:mason-org/mason-registry",
"github:Crashdummyy/mason-registry",
},
ui = {
icons = {
package_installed = "",
package_pending = "",
package_uninstalled = ""
}
}
})
require("mason-lspconfig").setup()
vim.lsp.config('rust_analyzer', {
-- Server-specific settings. See `:help lsp-quickstart`
settings = {
['rust-analyzer'] = {},
},
})
require('roslyn').setup({
config = {
-- the rest of your Roslyn configuration
handlers = require("rzls.roslyn_handlers"),
},
})
require("catppuccin").setup({
flavour = "auto", -- latte, frappe, macchiato, mocha
background = { -- :h background
light = "latte",
dark = "mocha",
},
transparent_background = false, -- disables setting the background color.
show_end_of_buffer = false, -- shows the '~' characters after the end of buffers
term_colors = false, -- sets terminal colors (e.g. `g:terminal_color_0`)
dim_inactive = {
enabled = false, -- dims the background color of inactive window
shade = "dark",
percentage = 0.15, -- percentage of the shade to apply to the inactive window
},
no_italic = false, -- Force no italic
no_bold = false, -- Force no bold
no_underline = false, -- Force no underline
styles = { -- Handles the styles of general hi groups (see `:h highlight-args`):
comments = { "italic" }, -- Change the style of comments
conditionals = { "italic" },
loops = {},
functions = {},
keywords = {},
strings = {},
variables = {},
numbers = {},
booleans = {},
properties = {},
types = {},
operators = {},
-- miscs = {}, -- Uncomment to turn off hard-coded styles
},
color_overrides = {},
custom_highlights = {},
default_integrations = true,
integrations = {
cmp = true,
gitsigns = true,
nvimtree = true,
treesitter = true,
notify = false,
mini = {
enabled = true,
indentscope_color = "",
},
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
},
})
local sign = function(opts)
vim.fn.sign_define(opts.name, {
texthl = opts.name,
text = opts.text,
numhl = ''
})
end
sign({name = 'DiagnosticSignError', text = ''})
sign({name = 'DiagnosticSignWarn', text = ''})
sign({name = 'DiagnosticSignHint', text = ''})
sign({name = 'DiagnosticSignInfo', text = ''})
--Set completeopt to have a better completion experience
-- :help completeopt
-- menuone: popup even when there's only one match
-- noinsert: Do not insert text until a selection is made
-- noselect: Do not select, force to select one from the menu
-- shortness: avoid showing extra messages when using completion
-- updatetime: set updatetime for CursorHold
vim.opt.completeopt = {'menuone', 'noselect', 'noinsert'}
vim.opt.shortmess = vim.opt.shortmess + { c = true}
vim.api.nvim_set_option('updatetime', 300)
-- Fixed column for diagnostics to appear
-- Show autodiagnostic popup on cursor hover_range
-- Goto previous / next diagnostic warning / error
-- Show inlay_hints more frequently
vim.cmd([[
set signcolumn=yes
autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false })
]])
vim.diagnostic.config({
virtual_text = false,
signs = true,
update_in_insert = true,
underline = true,
severity_sort = false,
float = {
border = 'rounded',
source = 'always',
header = '',
prefix = '',
},
})
-- setup must be called before loading
vim.cmd.colorscheme "catppuccin"
vim.keymap.set('n', '<leader>w', '<cmd>write<cr>', {desc = 'Save file'})
vim.keymap.set('n', '<leader>q', '<cmd>quitall<cr>', {desc = 'Exit vim'})
-- Simplified clipboard mappings
-- vim.keymap.set({'n', 'x', 'o'}, '<leader>y', '"+y', {desc = 'Copy to clipboard'})
-- vim.keymap.set({'n', 'x'}, '<leader>p', '"+p', {desc = 'Paste from clipboard'})
vim.keymap.set('n', '<leader>e', '<cmd>lua MiniFiles.open()<cr>', {desc = 'File explorer'})
vim.keymap.set('n', '<leader><space>', '<cmd>Pick buffers<cr>', {desc = 'Search open files'})
vim.keymap.set('n', '<leader>ff', '<cmd>Pick files<cr>', {desc = 'Search all files'})
vim.keymap.set('n', '<leader>fh', '<cmd>Pick help<cr>', {desc = 'Search help tags'})
vim.keymap.set('n', '<leader>h', '<cmd>wincmd h<cr>')
vim.keymap.set('n', '<leader>l', '<cmd>wincmd l<cr>')
vim.keymap.set('n', '<leader>j', '<cmd>wincmd j<cr>')
vim.keymap.set('n', '<leader>k', '<cmd>wincmd k<cr>')
-- Rust
local cmp = require'cmp'
cmp.setup({
-- Enable LSP snippets
snippet = {
expand = function(args)
vim.fn["vsnip#anonymous"](args.body)
end,
},
mapping = {
['<C-p>'] = cmp.mapping.select_prev_item(),
['<C-n>'] = cmp.mapping.select_next_item(),
-- Add tab support
['<S-Tab>'] = cmp.mapping.select_prev_item(),
['<Tab>'] = cmp.mapping.select_next_item(),
['<C-S-f>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.close(),
['<CR>'] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Insert,
select = true,
})
},
-- Installed sources:
sources = {
{ name = 'path' }, -- file paths
{ name = 'nvim_lsp', keyword_length = 3 }, -- from language server
{ name = 'nvim_lsp_signature_help'}, -- display function signatures with current parameter emphasized
{ name = 'nvim_lua', keyword_length = 2}, -- complete neovim's Lua runtime API such vim.lsp.*
{ name = 'buffer', keyword_length = 2 }, -- source current buffer
{ name = 'vsnip', keyword_length = 2 }, -- nvim-cmp source for vim-vsnip
{ name = 'calc'}, -- source for math calculation
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
formatting = {
fields = {'menu', 'abbr', 'kind'},
format = function(entry, item)
local menu_icon ={
nvim_lsp = 'λ',
vsnip = '',
buffer = 'Ω',
path = '🖫',
}
item.menu = menu_icon[entry.source.name]
return item
end,
},
})
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
rm -rf ~/.config/nvim
cp -r nvim ~/.config/
git clone https://github.com/neovim/nvim-lspconfig ~/.config/nvim/pack/vendor/start/nvim-lspconfig
git clone https://github.com/echasnovski/mini.nvim ~/.config/nvim/pack/vendor/start/mini.nvim
-1799
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 658 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1017 KiB

After

Width:  |  Height:  |  Size: 1.5 MiB

+1
View File
@@ -0,0 +1 @@
/usr/lib/systemd/user/gamemoded.service
@@ -0,0 +1 @@
/usr/lib/systemd/user/gnome-keyring-daemon.service
@@ -1 +0,0 @@
/home/narl/.config/systemd/user/narl_io_mount.service
@@ -1 +0,0 @@
/home/narl/.config/systemd/user/vaulthunters_mount.service
-17
View File
@@ -1,17 +0,0 @@
[Unit]
Description=Fluxo — high-performance Waybar module daemon
Documentation=https://github.com/narl/fluxo-rs
PartOf=graphical-session.target
After=graphical-session.target
[Service]
Type=simple
ExecStart=%h/.cargo/bin/fluxo daemon
Restart=on-failure
RestartSec=3
# Ensure the daemon can reach the user's D-Bus session and Wayland/Hyprland sockets.
Slice=app-graphical.slice
[Install]
WantedBy=graphical-session.target
+1 -1
View File
@@ -9,7 +9,7 @@ After=network-online.target
# The command to start the mount. # The command to start the mount.
# Replace "my-remote:" and "/path/to/local/mount" accordingly. # Replace "my-remote:" and "/path/to/local/mount" accordingly.
# The flags below are highly recommended for a good experience. # The flags below are highly recommended for a good experience.
ExecStart=rclone mount google_drive: %h/remote/gdrive \ ExecStart=rclone mount google_drive: %h/gdrive \
--vfs-cache-mode writes \ --vfs-cache-mode writes \
--log-file /tmp/rclone.log \ --log-file /tmp/rclone.log \
--log-level INFO --log-level INFO
@@ -1 +0,0 @@
/home/narl/.config/systemd/user/fluxo.service
@@ -0,0 +1 @@
/home/narl/.config/systemd/user/openrgb.service
@@ -1 +0,0 @@
/usr/lib/systemd/user/wayvnc.service
-21
View File
@@ -1,21 +0,0 @@
# ~/.config/systemd/user/rclone-mount.service
[Unit]
Description=sshfs mount for narl.io server
# This ensures your network is ready before it tries to mount
After=network-online.target
[Service]
# The command to start the mount.
# Replace "my-remote:" and "/path/to/local/mount" accordingly.
# The flags below are highly recommended for a good experience.
ExecStart=sshfs -f -p 420 narl@narl.io:/opt %h/remote/narl.io
# The command to unmount gracefully.
ExecStop=fusermount -u %h/narl_io
Restart=on-failure
RestartSec=10
[Install]
# This tells systemd to start the service at user login.
WantedBy=default.target
+10
View File
@@ -0,0 +1,10 @@
[Unit]
Description=OpenRGB Autostart
After=graphical-session.target
[Service]
ExecStart=/usr/bin/openrgb --profile white_static
Restart=on-failure
[Install]
WantedBy=graphical-session.target
+1
View File
@@ -0,0 +1 @@
/usr/lib/systemd/user/wireplumber.service
@@ -0,0 +1 @@
/usr/lib/systemd/user/wireplumber.service
+1
View File
@@ -0,0 +1 @@
/dev/null
@@ -1 +0,0 @@
/usr/lib/systemd/user/gcr-ssh-agent.socket
@@ -0,0 +1 @@
/usr/lib/systemd/user/gnome-keyring-daemon.socket
-10
View File
@@ -1,10 +0,0 @@
[Unit]
Description=SSH key agent
[Service]
Type=forking
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -a $SSH_AUTH_SOCK
[Install]
WantedBy=default.target
-22
View File
@@ -1,22 +0,0 @@
# ~/.config/systemd/user/rclone-mount.service
[Unit]
Description=sshfs mount for narl.io vaulthunters server
# This ensures your network is ready before it tries to mount
After=network-online.target
[Service]
# The command to start the mount.
# Replace "my-remote:" and "/path/to/local/mount" accordingly.
# The flags below are highly recommended for a good experience.
ExecStart=sshfs -f -p 420 narl@vh3.narl.io:/opt/minecraft_vaulthunters %h/remote/vh3.narl.io
# The command to unmount gracefully.
ExecStop=fusermount -u %h/vaulthunters_server
Restart=on-failure
RestartSec=10
[Install]
# This tells systemd to start the service at user login.
WantedBy=default.target
@@ -1 +0,0 @@
/usr/lib/systemd/user/sunshine.service
+211 -205
View File
@@ -1,211 +1,217 @@
// ~/.config/waybar/config.jsonc // ~/.config/waybar/config.jsonc
[ {
{ "layer": "top",
"name": "top", "position": "top",
"layer": "top", "height": 36,
"position": "top", "modules-left": [
"height": 39, "hyprland/workspaces"
"spacing": 4, ],
"margin-top": 6, "modules-center": [
"margin-left": 10, ],
"margin-right": 10, "modules-right": [
// "custom/bluetooth-audio",
"modules-left": [ // "custom/pixelbuds_pro",
"group/spaces" "custom/mem",
], "custom/cpu",
"modules-center": [ "custom/gpu",
"group/center" "custom/network",
], "custom/disk-root",
"modules-right": [ // "custom/disk-gdrive",
"group/powertray" "custom/disk-data",
], "custom/disk-games",
// "network",
// --- Standard Modules --- "custom/audio-output",
"hyprland/workspaces": { "wireplumber",
"format": "{icon}", "tray",
"on-click": "activate" "custom/gpu-screen-recorder",
}, "custom/droidcam",
"hyprland/window": { "custom/gamemode",
"format": "{}", "clock"
"max-length": 50 ],
}, "custom/network": {
"clock": { "exec": "~/.config/waybar/scripts/network.sh",
"format": "{:%a %d %b %H:%M}", "interval": 2, // in seconds
"tooltip": false "format": "{}",
}, "return-type": "json"
"custom/mpris": { },
"format": "{}", "hyprland/workspaces": {
"return-type": "json", "format": "{icon}",
"exec": "fluxo mpris", "on-click": "activate"
"on-click": "playerctl play-pause", },
"signal": 11 "hyprland/window": {
}, "format": "{}",
"tray": { "max-length": 35
"icon-size": 18, },
"spacing": 10 "clock": {
}, "format": "{:%a %d %b %H:%M}",
"custom/dnd": { "format-alt": false,
"format": "{}", "on-click-right": "xdg-open https://calendar.proton.me/u/0/month > /dev/null ",
"return-type": "json", "tooltip": false,
"exec": "fluxo dnd", },
"on-click": "dunstctl set-paused toggle", "cpu": {
"signal": 13, "format": "CPU: {usage}%",
"interval": 5 "tooltip": true,
}, "interval": 1
"group/spaces": { },
"orientation": "horizontal", "memory": {
"modules": [ "format": "MEM: {used}/{total}GB",
"hyprland/workspaces", "interval": 3
"hyprland/window" },
] "network": {
}, "format-wifi": "{essid} ({signalStrength}%): {ipaddr}",
"group/powertray": { "format-ethernet": "{ifname}: {ipaddr}",
"orientation": "horizontal", "format-disconnected": "Disconnected",
"modules": [ "tooltip-format": "{ifname} via {gwaddr}"
"custom/dnd", },
"tray", "wireplumber": {
"custom/gamemode", "format": "{volume}% {icon}",
"custom/power_status" "format-muted": "--- ",
] "format-icons": {
}, "headphone": "",
"group/center": { "hands-free": "",
"orientation": "horizontal", "default": ["", "", ""]
"modules": [ },
"custom/mpris", "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle ",
"clock" "on-click-right": "~/.config/waybar/scripts/audio.sh cycle ",
] "on-click-middle": "pavucontrol",
}, "scroll-step": 1
"custom/gamemode": {
"format": "{}",
"return-type": "json",
"exec": "fluxo game",
"on-click": "~/.config/hypr/scripts/gamemode.sh",
"signal": 7,
"interval": 5
},
"custom/power_status": {
"format": "{} ",
"return-type": "json",
"exec": "fluxo power",
"on-click": "~/.config/hypr/scripts/powermenu.sh & disown",
"signal": 10,
"interval": 5
}
}, },
{
"name": "bottom",
"layer": "top",
"position": "bottom",
"height": 35,
"spacing": 4,
"margin-bottom": 6,
"margin-left": 10,
"margin-right": 10,
"modules-left": [ "custom/bluetooth-audio": {
"group/hardware" "format": "{}",
], "return-type": "json",
"group/hardware": { "exec": "~/.config/waybar/scripts/bluetooth_audio.sh",
"orientation": "horizontal", "interval": 3,
"modules": [ "on-click": "~/.config/waybar/scripts/bluetooth_audio.sh disconnect "
"custom/sys", },
"custom/cpu",
"custom/mem",
"custom/disk-root",
"custom/network",
"custom/backlight"
]
},
"modules-center": [
],
"modules-right": [
"custom/bluetooth-audio",
"custom/volume",
"custom/mic"
],
// --- fluxo System & Hardware --- "pulseaudio": {
"custom/sys": { "format": "{icon} {volume}%",
"format": "{}", "format-muted": " Muted",
"return-type": "json", "format-icons": {
"exec": "fluxo sys", "headphone": "",
"signal": 5, "hands-free": "",
"interval": 5 "headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", ""]
}, },
"custom/cpu": { "on-click": "pavucontrol "
"format": "{}", },
"return-type": "json", "tray": {
"exec": "fluxo cpu", "icon-size": 18,
"on-click": "zenmonitor & disown", "spacing": 10
"signal": 2 },
}, "custom/power": {
"custom/mem": { "format": "",
"format": "{}", "tooltip": false,
"return-type": "json", "on-click": "~/.config/hypr/scripts/powermenu.sh "
"exec": "fluxo mem", },
"signal": 3 "custom/tlp": {
}, "format": "{}",
"custom/gpu": { "exec": "~/.config/waybar/scripts/tlp-profile.sh",
"format": "{}", "return-type": "json",
"return-type": "json", "interval": 5
"exec": "fluxo gpu", },
"signal": 4 "battery": {
}, "states": {
"custom/network": { "warning": 30,
"format": "{}", "critical": 15
"return-type": "json", },
"exec": "fluxo net", "format": "{capacity}%",
"signal": 1 "format-charging": "{capacity}%",
}, "format-plugged": "{capacity}%",
"format-alt": "{time} {icon}",
"custom/disk-root": { "format-full": "{capacity}%",
"format": "{}", "format-icons": ["", "", "", "", ""]
"return-type": "json", },
"exec": "fluxo disk /", "custom/pixelbuds_pro": {
"signal": 6 "format": "{}",
}, "return-type": "json",
"exec": "~/.config/waybar/scripts/pixelbuds_pro_control.sh",
// --- fluxo Audio & BT --- "interval": 5,
"custom/volume": { "on-click": "~/.config/waybar/scripts/pixelbuds_pro_control.sh connect ",
"format": "{}", "on-click-right": "~/.config/waybar/scripts/pixelbuds_pro_control.sh cycle_anc "
"return-type": "json", },
"exec": "fluxo vol", "custom/audio-output": {
"on-click": "fluxo vol mute", "format": "{}",
"on-scroll-up": "fluxo vol up 5", "return-type": "json",
"on-scroll-down": "fluxo vol down 5", "exec": "/home/narl/.config/waybar/scripts/audio.sh show",
"on-click-right": "fluxo vol cycle", "on-click": "/home/narl/.config/waybar/scripts/audio.sh cycle ",
"on-click-middle": "pavucontrol", "interval": 1
"signal": 8 },
}, "custom/gamemode": {
"custom/mic": { "format": "{}",
"format": "{}", "return-type": "json",
"return-type": "json", "exec": "~/.config/waybar/scripts/gamemode_status.sh",
"exec": "fluxo mic", "on-click": "~/.config/hypr/scripts/gamemode.sh ",
"on-click": "fluxo mic mute", "interval": 1
"on-scroll-up": "fluxo mic up 5", },
"on-scroll-down": "fluxo mic down 5", "custom/droidcam": {
"on-click-right": "fluxo mic cycle", "format": "{}",
"on-click-middle": "pavucontrol", "return-type": "json",
"signal": 8 "exec": "~/.config/waybar/scripts/droidcam_status.sh",
}, "on-click": "~/.config/hypr/scripts/droidcam-ctrl.sh toggle",
"custom/bluetooth-audio": { "interval": 1
"format": "{}", },
"return-type": "json", "custom/gpu-screen-recorder": {
"exec": "fluxo bt", "format": "{}",
"on-click": "fluxo bt menu", "return-type": "json",
"on-click-right": "fluxo bt cycle", "exec": "~/.config/waybar/scripts/gpu-screen-recorder-status.sh",
"on-click-middle": "fluxo bt cycle_mode", "on-click-right": "~/.config/hypr/scripts/replay-ctrl.sh save ",
"signal": 9, "on-click-middle": "nautilus ~/Videos/replay ",
"tooltip": true "on-click": "~/.config/waybar/scripts/toggle-replay.sh ",
}, "interval": 1
"custom/backlight": { },
"format": "{}", "custom/gpu": {
"return-type": "json", "format": "{}",
"exec": "fluxo backlight", "return-type": "json",
"on-scroll-up": "brightnessctl s +10%", "exec": "~/.config/waybar/scripts/gpu_info.sh",
"on-scroll-down": "brightnessctl s 10%-", "on-click": "lact gui ",
"signal": 12 "interval": 3
} },
"custom/cpu": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/cpu_info.sh",
"on-click": "zenmonitor ",
"interval": 3
},
"custom/mem": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/memory.sh",
"interval": 3
},
"custom/btrfs": {
"format": "{}",
"exec": "~/.config/waybar/scripts/btrfs.sh",
"return-type": "json",
"interval": 30
},
"custom/disk-root": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/disk_info.sh /",
"interval": 30
},
"custom/disk-gdrive": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/disk_info.sh ~/gdrive",
"interval": 30
},
"custom/disk-data": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/disk_info.sh ~/data",
"interval": 30
},
"custom/disk-games": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/disk_info.sh ~/games",
"interval": 30
} }
] }
+402
View File
@@ -0,0 +1,402 @@
// ~/.config/waybar/config.jsonc
[{
"layer": "top",
"position": "top",
"output": "eDP-1",
"height": 30,
"modules-left": ["hyprland/workspaces"],
"modules-center": [],
"modules-right": [
"custom/pixelbuds_pro",
"wireplumber",
"custom/audio-output",
"custom/network",
"custom/mem",
"custom/cpu",
"custom/disk-root",
"custom/disk-gdrive",
"custom/tlp",
"tray",
"clock"
],
"hyprland/workspaces": {
"format": "{icon}",
"on-click": "activate"
},
"hyprland/window": {
"format": "{}",
"max-length": 35
},
"clock": {
"format": "{:%a %d %b %H:%M}",
"format-alt": false,
"on-click-right": "xdg-open https://calendar.proton.me/u/0/month &> /dev/null & disown",
"tooltip": false,
},
"cpu": {
"format": "CPU: {usage}%",
"tooltip": true,
"interval": 1
},
"memory": {
"format": "MEM: {used}/{total}GB",
"interval": 3
},
"network": {
"format-wifi": "{essid} ({signalStrength}%): {ipaddr}",
"format-ethernet": "{ifname}: {ipaddr}",
"format-disconnected": "Disconnected",
"tooltip-format": "{ifname} via {gwaddr}"
},
"wireplumber": {
"format": "{volume}% {icon}",
"format-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"default": ["", "", ""]
},
"on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle",
"on-click-right": "~/.config/waybar/scripts/audio.sh cycle",
"on-click-middle": "pavucontrol",
"scroll-step": 1
},
"custom/bluetooth-audio": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/bluetooth_audio.sh",
"interval": 3,
"on-click": "~/.config/waybar/scripts/bluetooth_audio.sh disconnect & disown"
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": " Muted",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", ""]
},
"on-click": "pavucontrol & disown"
},
"tray": {
"icon-size": 18,
"spacing": 6
},
"custom/power": {
"format": "",
"tooltip": false,
"on-click": "~/.config/hypr/scripts/powermenu.sh & disown"
},
"custom/tlp": {
"format": "{}",
"exec": "~/.config/waybar/scripts/tlp-profile.sh",
"return-type": "json",
"interval": 5
},
"battery": {
"states": {
"warning": 30,
"critical": 15
},
"format": "{capacity}%",
"format-charging": "{capacity}%",
"format-plugged": "{capacity}%",
"format-alt": "{time} {icon}",
"format-full": "{capacity}%",
"format-icons": ["", "", "", "", ""]
},
"custom/pixelbuds_pro": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/pixelbuds_pro_control.sh",
"interval": 5,
"on-click": "~/.config/waybar/scripts/pixelbuds_pro_control.sh connect & disown",
"on-click-right": "~/.config/waybar/scripts/pixelbuds_pro_control.sh cycle_anc & disown"
},
"custom/audio-output": {
"format": "{}",
"return-type": "json",
"exec": "/home/narl/.config/waybar/scripts/audio.sh show",
"on-click": "/home/narl/.config/waybar/scripts/audio.sh cycle & disown",
"interval": 1
},
"custom/gamemode": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/gamemode_status.sh",
"on-click": "~/.config/hypr/scripts/gamemode.sh & disown",
"interval": 1
},
"custom/gpu-screen-recorder": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/gpu-screen-recorder-status.sh",
"on-click-right": "~/.config/hypr/scripts/replay-ctrl.sh save & disown",
"on-click-middle": "nautilus ~/Videos/replay & disown",
"on-click": "~/.config/waybar/scripts/toggle-replay.sh & disown",
"interval": 1
},
"custom/gpu": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/gpu_info.sh",
"on-click": "lact gui & disown",
"interval": 3
},
"custom/cpu": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/cpu_info.sh",
"on-click": "zenmonitor & disown",
"interval": 3
},
"custom/mem": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/memory.sh",
"interval": 3
},
"custom/btrfs": {
"format": "{}",
"exec": "~/.config/waybar/scripts/btrfs.sh",
"return-type": "json",
"interval": 30
},
"custom/disk-root": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/disk_info.sh /",
"interval": 30
},
"custom/disk-gdrive": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/disk_info.sh ~/gdrive",
"interval": 30
},
"custom/disk-data": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/disk_info.sh ~/data",
"interval": 30
},
"custom/disk-games": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/disk_info.sh ~/games",
"interval": 30
},
"custom/network": {
"exec": "~/.config/waybar/scripts/network.sh",
"interval": 2, // in seconds
"format": "{}",
"return-type": "json"
}
},{
"layer": "top",
"position": "top",
"output": "!eDP-1",
"height": 30,
"modules-left": ["hyprland/workspaces"],
"modules-center": [],
"modules-right": [
// "custom/pixelbuds_pro",
"wireplumber",
"custom/audio-output",
"custom/network",
"custom/mem",
"custom/cpu",
"custom/disk-root",
"custom/disk-gdrive",
"custom/tlp",
"tray",
"clock"
],
"hyprland/workspaces": {
"format": "{icon}",
"on-click": "activate"
},
"hyprland/window": {
"format": "{}",
"max-length": 35
},
"clock": {
"format": "{:%a %d %b %H:%M}",
"format-alt": false,
"on-click-right": "xdg-open https://calendar.proton.me/u/0/month &> /dev/null & disown",
"tooltip": false,
},
"cpu": {
"format": "CPU: {usage}%",
"tooltip": true,
"interval": 1
},
"memory": {
"format": "MEM: {used}/{total}GB",
"interval": 3
},
"network": {
"format-wifi": "{essid} ({signalStrength}%): {ipaddr}",
"format-ethernet": "{ifname}: {ipaddr}",
"format-disconnected": "Disconnected",
"tooltip-format": "{ifname} via {gwaddr}"
},
"wireplumber": {
"format": "{volume}% {icon}",
"format-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"default": ["", "", ""]
},
"on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle",
"on-click-right": "~/.config/waybar/scripts/audio.sh cycle",
"on-click-middle": "pavucontrol",
"scroll-step": 1
},
"custom/bluetooth-audio": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/bluetooth_audio.sh",
"interval": 3,
"on-click": "~/.config/waybar/scripts/bluetooth_audio.sh disconnect & disown"
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": " Muted",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", ""]
},
"on-click": "pavucontrol & disown"
},
"tray": {
"icon-size": 18,
"spacing": 6
},
"custom/power": {
"format": "",
"tooltip": false,
"on-click": "~/.config/hypr/scripts/powermenu.sh & disown"
},
"custom/tlp": {
"format": "{}",
"exec": "~/.config/waybar/scripts/tlp-profile.sh",
"return-type": "json",
"interval": 5
},
"battery": {
"states": {
"warning": 30,
"critical": 15
},
"format": "{capacity}%",
"format-charging": "{capacity}%",
"format-plugged": "{capacity}%",
"format-alt": "{time} {icon}",
"format-full": "{capacity}%",
"format-icons": ["", "", "", "", ""]
},
"custom/pixelbuds_pro": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/pixelbuds_pro_control.sh",
"interval": 5,
"on-click": "~/.config/waybar/scripts/pixelbuds_pro_control.sh connect & disown",
"on-click-right": "~/.config/waybar/scripts/pixelbuds_pro_control.sh cycle_anc & disown"
},
"custom/audio-output": {
"format": "{}",
"return-type": "json",
"exec": "/home/narl/.config/waybar/scripts/audio.sh show",
"on-click": "/home/narl/.config/waybar/scripts/audio.sh cycle & disown",
"interval": 1
},
"custom/gamemode": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/gamemode_status.sh",
"on-click": "~/.config/hypr/scripts/gamemode.sh & disown",
"interval": 1
},
"custom/gpu-screen-recorder": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/gpu-screen-recorder-status.sh",
"on-click-right": "~/.config/hypr/scripts/replay-ctrl.sh save & disown",
"on-click-middle": "nautilus ~/Videos/replay & disown",
"on-click": "~/.config/waybar/scripts/toggle-replay.sh & disown",
"interval": 1
},
"custom/gpu": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/gpu_info.sh",
"on-click": "lact gui & disown",
"interval": 3
},
"custom/cpu": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/cpu_info.sh",
"on-click": "zenmonitor & disown",
"interval": 3
},
"custom/mem": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/memory.sh",
"interval": 3
},
"custom/btrfs": {
"format": "{}",
"exec": "~/.config/waybar/scripts/btrfs.sh",
"return-type": "json",
"interval": 30
},
"custom/disk-root": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/disk_info.sh /",
"interval": 30
},
"custom/disk-gdrive": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/disk_info.sh ~/gdrive",
"interval": 30
},
"custom/disk-data": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/disk_info.sh ~/data",
"interval": 30
},
"custom/disk-games": {
"format": "{}",
"return-type": "json",
"exec": "~/.config/waybar/scripts/disk_info.sh ~/games",
"interval": 30
},
"custom/network": {
"exec": "~/.config/waybar/scripts/network.sh",
"interval": 2, // in seconds
"format": "{}",
"return-type": "json"
}
}]
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
DEFAULT_SINK=$(pactl info | grep 'Default Sink' | cut -d ' ' -f3)
DESCRIPTION=$(pactl list sinks | grep -A2 "Name: $DEFAULT_SINK" | grep "Description:" | cut -d ' ' -f2-)
case $1 in
cycle)
SINKS=($(pactl list short sinks | awk '{print $2}'))
NUM_SINKS=${#SINKS[@]}
CURRENT_SINK=$(pactl info | grep 'Default Sink' | cut -d ' ' -f3)
for i in "${!SINKS[@]}"; do
if [[ "${SINKS[$i]}" == "$CURRENT_SINK" ]]; then
NEXT_INDEX=$(( (i + 1) % NUM_SINKS ))
pactl set-default-sink "${SINKS[$NEXT_INDEX]}"
exit 0
fi
done
;;
show)
TEXT=$(echo "$DESCRIPTION" | cut -c -20)
if [ -z "$DESCRIPTION" ]; then
DESCRIPTION=$DEFAULT_SINK
fi
CLASS=""
case $(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print $2}') in
yes)
CLASS="muted"
;;
no)
CLASS="unmuted"
;;
esac
printf '{"text": "%s", "tooltip": "%s", "class": "%s"}' "$TEXT" "$DESCRIPTION" "$CLASS"
;;
*)
echo "usage audio.sh {cycle|show}"
;;
esac
+118
View File
@@ -0,0 +1,118 @@
#!/bin/bash
bt-audio-info() {
# Check if a MAC address was provided as the first argument.
if [ -z "$1" ]; then
echo "Usage: $0 <MAC_ADDRESS>"
echo "Example: $0 00:11:22:33:AA:BB"
exit 1
fi
MAC_ADDRESS="$1"
# --- Main Logic ---
# Construct the PipeWire sink name from the MAC address.
# The format is typically: bluez_output.XX_XX_XX_XX_XX_XX.a2dp_sink
# We replace colons with underscores for the format.
SINK_IDENTIFIER="bluez_output.$(echo "$MAC_ADDRESS" | tr ':' '_')"
# Use pactl to get the full details for all sinks, then find the one
# that contains our device's identifier. We use awk to print the
# entire block of text for that specific sink.
# We check for a partial match on the sink identifier because the profile
# (e.g., .a2dp_sink) can change.
sink_info=$(pactl list sinks | awk -v id="$SINK_IDENTIFIER" '/Sink #/ {p=0} $0 ~ "Name: " id {p=1} p')
# If sink_info is empty, the device might not be an audio sink or isn't connected.
if [ -z "$sink_info" ]; then
echo "Error: Could not find an active audio sink for MAC ${MAC_ADDRESS}"
echo "Please ensure the device is connected and is an audio output device."
exit 1
fi
# Get the full block of info for the device from bluetoothctl.
device_info=$(bluetoothctl info "$MAC_ADDRESS")
# --- Parse Information ---
# Parse bluetoothctl output for general device details.
alias=$(echo "$device_info" | rg "Alias:" | cut -d ' ' -f 2-)
trusted=$(echo "$device_info" | rg "Trusted:" | awk '{print $2}')
battery_raw=$(echo "$device_info" | rg "Battery Percentage:" | awk -F'[()]' '{print $2}')
# Parse pactl output for audio-specific details.
volume=$(echo "$sink_info" | rg "Volume:" | head -n1 | awk '{print $5}')
codec=$(echo "$sink_info" | rg -e 'bluetooth.codec|api.bluez5.codec' | awk -F'"' '{print $2}')
# --- Build and Display Compact Output ---
# Build the output string with all the information.
output_string="${alias} | MAC: ${MAC_ADDRESS}\n"
output_string+="Trusted: ${trusted}"
# Append battery info if available, otherwise show N/A.
if [ -n "$battery_raw" ]; then
output_string+=" | Bat: ${battery_raw}%"
else
output_string+=" | Bat: N/A"
fi
output_string+=" | Vol: ${volume} | Codec: ${codec:-N/A}"
# Print the final, single-line string.
echo "$output_string"
}
# Find the MAC address of the first connected device that is an audio sink
find_audio_device() {
default_sink_name=$(pactl get-default-sink)
# Check if the default sink is a Bluetooth device. Their names typically
# start with "bluez_output.". If not, print a message and exit.
if [[ "$default_sink_name" == bluez_output* ]]; then
# Extract the MAC address from the sink name.
# The format is bluez_output.XX_XX_XX_XX_XX_XX.profile
# We extract the middle part and replace underscores with colons.
mac_with_underscores=$(echo "$default_sink_name" | cut -d '.' -f 2)
mac=$(echo "$mac_with_underscores" | tr '_' ':')
echo "$mac"
return
fi
# else look for the first bluetooth device that provides a sink
bluetoothctl devices Connected | rg '^Device ' | awk '{print $2}' | while read -r mac;
do
# Check if the device provides the "Audio Sink" service
if bluetoothctl info "$mac" | rg -q "0000110b-0000-1000-8000-00805f9b34fb"; then
echo "$mac"
# If you only want the first audio device found, you can 'break' or 'exit' here.
break
fi
done
}
# If the script is called with "disconnect"
if [ "$1" == "disconnect" ]; then
device_mac=$(find_audio_device)
if [ -n "$device_mac" ]; then
bluetoothctl disconnect "$device_mac"
fi
echo "{}"
exit 0
fi
# Main logic to display the device name
device_mac=$(find_audio_device)
if [ -n "$device_mac" ]; then
# Get the device alias (name)
device_name=$(bluetoothctl info "$device_mac" | rg "Alias:" | cut -d ' ' -f 2-)
# Output in Waybar's JSON format
tooltip=$(bt-audio-info $device_mac)
echo "{\"text\": \"$device_name <span size='large'>󰂰</span>\", \"tooltip\": \"$tooltip\"}"
else
# Output empty string when no device is connected
echo "{}"
fi
+45
View File
@@ -0,0 +1,45 @@
#!/bin/bash
# Get BTRFS filesystems
btrfs_filesystems=$(df -hT | grep btrfs)
# Initialize variables
total_used=0
total_size=0
# Process each BTRFS filesystem
while read -r line; do
size_str=$(echo "$line" | awk '{print $3}')
used_str=$(echo "$line" | awk '{print $4}')
size=$(echo "$size_str" | sed 's/[GT]//')
used=$(echo "$used_str" | sed 's/[GT]//')
if [[ $size_str == *T ]]; then
size=$(awk -v s="$size" 'BEGIN {print s*1024}')
fi
if [[ $used_str == *T ]]; then
used=$(awk -v u="$used" 'BEGIN {print u*1024}')
fi
total_size=$(awk -v total="$total_size" -v size="$size" 'BEGIN {print total+size}')
total_used=$(awk -v total="$total_used" -v used="$used" 'BEGIN {print total+used}')
done <<< "$btrfs_filesystems"
# Calculate usage percentage
usage_percentage=$(awk -v used="$total_used" -v total="$total_size" 'BEGIN {printf "%.0f", (used/total)*100}')
# Set class based on usage
if [ "$usage_percentage" -gt 95 ]; then
class="max"
elif [ "$usage_percentage" -gt 80 ]; then
class="high"
else
class="normal"
fi
text="$(printf "%.0f" $total_used)G / $(printf "%.0f" $total_size)G"
# Manually construct the JSON output
echo "{\"text\": \"$text\", \"tooltip\": \"\", \"class\": \"$class\"}"
+22
View File
@@ -0,0 +1,22 @@
#!/bin/bash
USAGE=$(mpstat 1 1 | awk '/Average:/ {print 100 - $12}')
TEMP=$(cat /sys/class/hwmon/hwmon3/temp1_input)
TEXT="$(printf "%.1f" $(echo "$USAGE"))% $(printf "%.1f" $(echo "scale=2; $TEMP"/1000 | bc -l))C"
CPU=$(lscpu | grep 'Model name' | awk -F': ' '{print $2}' | sed 's/^[ \t]*//')
# TOOLTIP=$(ps -eo %cpu,comm --sort=-%cpu | head -n 6 | sed '1d' | awk '{output = output sprintf("%.1f%%\t%s\\n", $1, $2)} END {printf "%s", output}')
# TOOLTIP=$(ps -eo %cpu,comm --sort=-%cpu | head -n 6 | sed '1d' | awk -v ncores=$(nproc) '{printf "%.1f%%\t%s\n", $1/ncores, $2}')
# TOOLTIP=$(ps -eo %cpu,comm --sort=-%cpu | head -n 6 | sed '1d' | awk -v ncores=$(nproc) '{printf "%.1f%%\t%s\\n", $1/ncores, $2}')
# TOOLTIP=$(top -b -n 1 | sed '1,7d' | head -n 5 | awk '{output = output sprintf("%.1f%%\t%s\\n", $9, $12)} END {printf "%s", output}')
CLASS=""
if (( $(echo "$USAGE > 95" | bc -l) )); then
CLASS="max"
elif (( $(echo "$USAGE > 75" | bc -l) )); then
CLASS="high"
else
CLASS="normal"
fi
# echo "{\"text\":\"CPU: $TEXT\", \"tooltip\": \"$TOOLTIP\", \"class\":\"$CLASS\"}"
echo "{\"text\":\"CPU: $TEXT\", \"class\":\"$CLASS\"}"
+31
View File
@@ -0,0 +1,31 @@
#!/bin/sh
if [ -z "$1" ]; then
echo "Usage: $0 <mountpoint>"
exit 1
fi
MOUNTPOINT=$1
# Get disk usage info
USED=$(df -h --output=used "$MOUNTPOINT" | sed '1d' | awk '{print $1}')
TOTAL=$(df -h --output=size "$MOUNTPOINT" | sed '1d' | awk '{print $1}')
PERCENTAGE=$(df --output=pcent "$MOUNTPOINT" | sed '1d' | tr -d '%' | awk '{print $1}')
# Set class based on usage
CLASS="normal"
if [ "$PERCENTAGE" -gt 95 ]; then
CLASS="max"
elif [ "$PERCENTAGE" -gt 80 ]; then
CLASS="high"
fi
# Create tooltip with more details
TOOLTIP=$(df -h "$MOUNTPOINT" | sed '1d' | awk '{printf "Used: %s\nTotal: %s\nFree: %s", $3, $2, $4}')
# Output JSON for Waybar using jq
jq -n -c \
--arg text "$1 $USED/$TOTAL" \
--arg tooltip "$TOOLTIP" \
--arg class "$CLASS" \
'{"text": $text, "tooltip": $tooltip, "class": $class}'
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
if [ -f /tmp/droidcam.pid ]; then
echo "{\"text\": \"\", \"class\": \"active\"}"
else
echo "{\"text\": \"\"}"
fi
+10
View File
@@ -0,0 +1,10 @@
#!/usr/bin/env sh
FORMAT_ACTIVATED="<span size='large'>󰊖</span>"
FORMAT_DEACTIVATED="<span size='large'></span>"
HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
if [ "$HYPRGAMEMODE" = 1 ] ; then
printf "{\"text\": \"$FORMAT_DEACTIVATED\", \"tooltip\": \"Gamemode deactivated\"}"
else
printf "{\"text\": \"$FORMAT_ACTIVATED\", \"tooltip\": \"Gamemode activated\", \"class\": \"active\"}"
fi
+2 -2
View File
@@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
PID_FILE="/tmp/gpu-screen-recorder.pid" PID_FILE="/tmp/gpu-screen-recorder.pid"
FORMAT_RECORDING="<span size='large'></span>" FORMAT_RECORDING="<span size='large'>󰄄</span>"
FORMAT_STOPPED="<span size='large'></span>" FORMAT_STOPPED="<span size='large'>󰄄</span>"
if [ -f "$PID_FILE" ]; then if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE") PID=$(cat "$PID_FILE")
+22
View File
@@ -0,0 +1,22 @@
#!/bin/bash
USAGE=$(cat /sys/class/drm/card1/device/gpu_busy_percent)
MEM_USED=$(cat /sys/class/drm/card1/device/mem_info_vram_used)
MEM_TOTAL=$(cat /sys/class/drm/card1/device/mem_info_vram_total)
EDGE_TEMP=$(cat /sys/class/drm/card1/device/hwmon/hwmon2/temp1_input)
JUNC_TEMP=$(cat /sys/class/drm/card1/device/hwmon/hwmon2/temp2_input)
MEM_TEMP=$(cat /sys/class/drm/card1/device/hwmon/hwmon2/temp3_input)
GPU=$(/opt/rocm/bin/rocm-smi --showproductname | grep "Card Series" | awk -F':' '{print $3}' | xargs)
TEXT="$USAGE% $(printf "%.1f" $(echo "scale=2; $MEM_USED/1024/1024/1024" | bc -l))/$(printf "%.1f" $(echo "scale=2; $MEM_TOTAL/1024/1024/1024" | bc -l))GB $(printf "%.1f" $(echo "scale=2; $EDGE_TEMP/1000" | bc -l))/$(printf "%.1f" $(echo "scale=2; $MEM_TEMP/1000" | bc -l))C"
RATIO=$(echo "$MEM_USED/ $MEM_TOTAL" | bc -l)
CLASS=""
if (( $(echo "$USAGE > 95" | bc -l) )); then
CLASS="max"
elif (( $(echo "$USAGE > 75" | bc -l) )); then
CLASS="high"
else
CLASS="normal"
fi
echo "{\"text\":\"GPU: $TEXT\", \"tooltip\": \"$GPU\", \"class\":\"$CLASS\"}"
+19
View File
@@ -0,0 +1,19 @@
#!/bin/sh
# TOOLTIP=$(ps -eo rss,comm --sort=-rss | head -n 6 | sed '1d' | awk '{output = output sprintf("%.2f GB\t%s\\n", $1/1024/1024, $2)} END {printf "%s", output}')
TOTAL=$(awk '/MemTotal/ {printf "%.2f\n", $2/1024/1024}' /proc/meminfo)
USED=$(awk '/MemTotal/ {total=$2} /MemAvailable/ {available=$2} END {printf "%.2f\n", (total-available)/1024/1024}' /proc/meminfo)
RATIO=$(echo "$USED/ $TOTAL" | bc -l)
CLASS=""
if (( $(echo "$RATIO> 95" | bc -l) )); then
CLASS="max"
elif (( $(echo "$RATIO> 75" | bc -l) )); then
CLASS="high"
else
CLASS="normal"
fi
# printf '{"text": "%s/%sGB", "tooltip": "%s", "class": "%s"}' "$USED" "$TOTAL" "$TOOLTIP" "$CLASS"
printf '{"text": "%s/%sGB", "class": "%s"}' "$USED" "$TOTAL" "$CLASS"
+62
View File
@@ -0,0 +1,62 @@
#!/bin/bash
# Path for the temporary file to store previous stats
STATS_FILE="/tmp/waybar_net_stats"
# Find the primary default network interface by sorting routing metrics.
# This correctly prioritizes a VPN connection when it's active.
INTERFACE_INFO=$(ip route list | grep '^default' | sort -k 9 -n | head -n1)
INTERFACE=$(echo "$INTERFACE_INFO" | awk '{print $5}')
# Exit if no active interface is found
if [ -z "$INTERFACE" ]; then
echo "{\"text\": \"No connection\"}"
exit 0
fi
# Get the IP address for the interface
IP_ADDR=$(ip -4 addr show "$INTERFACE" | grep -oP 'inet \K[\d.]+')
# Get current time and byte counts
TIME_NOW=$(date +%s)
RX_BYTES_NOW=$(cat "/sys/class/net/$INTERFACE/statistics/rx_bytes")
TX_BYTES_NOW=$(cat "/sys/class/net/$INTERFACE/statistics/tx_bytes")
# Initialize speeds to 0
RX_MBPS="0.00"
TX_MBPS="0.00"
# Read previous values if the stats file exists
if [ -f "$STATS_FILE" ]; then
source "$STATS_FILE" # This loads PREV_TIME, PREV_RX_BYTES, PREV_TX_BYTES
fi
# Calculate speed if we have previous data and time has passed
if [ -n "$PREV_TIME" ] && [ "$TIME_NOW" -gt "$PREV_TIME" ]; then
TIME_DIFF=$((TIME_NOW - PREV_TIME))
RX_BPS=$(( (RX_BYTES_NOW - PREV_RX_BYTES) / TIME_DIFF ))
TX_BPS=$(( (TX_BYTES_NOW - PREV_TX_BYTES) / TIME_DIFF ))
# Using printf for better formatting (forces two decimal places)
RX_MBPS=$(printf "%.2f" "$(echo "$RX_BPS / 1024 / 1024" | bc -l)")
TX_MBPS=$(printf "%.2f" "$(echo "$TX_BPS / 1024 / 1024" | bc -l)")
fi
# Save current values for the next run
echo "PREV_TIME=$TIME_NOW" > "$STATS_FILE"
echo "PREV_RX_BYTES=$RX_BYTES_NOW" >> "$STATS_FILE"
echo "PREV_TX_BYTES=$TX_BYTES_NOW" >> "$STATS_FILE"
# Format the main output string
OUTPUT_TEXT="$INTERFACE ($IP_ADDR):  ${RX_MBPS} MB/s  ${TX_MBPS} MB/s"
# Prepend a VPN icon if a common VPN interface is active
case "$INTERFACE" in
tun*|wg*|ppp*|pvpn*)
OUTPUT_TEXT="$OUTPUT_TEXT"
;;
esac
# Output JSON for Waybar
echo "{\"text\": \"$OUTPUT_TEXT\"}"
+126
View File
@@ -0,0 +1,126 @@
#!/bin/bash
# --- CONFIGURATION ---
# Your Pixel Buds Pro's MAC Address
MAC_ADDRESS="B4:23:A2:09:D3:53"
# --- END CONFIGURATION ---
not_connected() {
printf "{\"text\": \"<span size='large'></span>\", \"tooltip\": \"Pixel Buds Pro 2 not connected\", \"class\": \"disconnected\"}\n"
exit
}
# This function gets the current status and formats it for Waybar.
get_status() {
# Get all info from pbpctrl in one go. Redirect errors to null.
battery_output=$(pbpctrl show battery 2>/dev/null)
# Fallback: If pbpctrl fails or returns 'unknown', hide the module.
if [[ $? -ne 0 || -z "$battery_output" ]]; then
not_connected
fi
# --- PARSE BATTERY INFO ---
left_bud=$(echo "$battery_output" | grep "left bud:" | awk '{print $3}')
right_bud=$(echo "$battery_output" | grep "right bud:" | awk '{print $3}')
if ([[ "$left_bud" == "unknown" ]] && [[ "$right_bud" == "unknown" ]]) || \
[[ -z "$left_bud" && -z "$right_bud" ]]; then
echo "{}"
exit
fi
if [[ "$left_bud" == "unknown" ]]; then
left_display="L: ---"
else
left_display="L: $left_bud"
fi
if [[ "$right_bud" == "unknown" ]]; then
right_display="R: ---"
else
right_display="R: $right_bud"
fi
# --- PARSE ANC INFO ---
current_mode=$(pbpctrl get anc 2>/dev/null)
case "$current_mode" in
"active")
anc_icon="ANC"
class="anc-active"
;;
"aware")
anc_icon="Aware"
class="anc-aware"
;;
"off")
anc_icon="Off"
class="anc-off"
;;
*)
anc_icon="?"
class="anc-unknown"
;;
esac
# --- FORMAT OUTPUT ---
printf '{"text": "%s | %s | %s", "tooltip": "Pixel Buds Pro 2", "class": "%s"}\n' \
"$left_display" "$right_display" "$anc_icon" "$class"
exit
}
status() {
# First, check if the device is connected using bluetoothctl.
if bluetoothctl info "$MAC_ADDRESS" | grep -q "Connected: yes"; then
# --- DEVICE IS CONNECTED ---
get_status
else
# --- DEVICE IS NOT CONNECTED ---
not_connected
fi
}
# Handle click actions passed from Waybar.
case "$1" in
cycle_anc)
current_mode=$(pbpctrl get anc 2>/dev/null)
next_mode="active"
case "$current_mode" in
active)
next_mode="aware"
;;
aware)
next_mode="off"
;;
off)
next_mode="active"
;;
esac
pbpctrl set anc "$next_mode"
sleep 0.1
exit
;;
connect)
if bluetoothctl info "$MAC_ADDRESS" | grep -q "Connected: yes"; then
notify-send "Pixel Buds Pro 2 are already connected"
exit
else
bluetoothctl connect "$MAC_ADDRESS"
exit
fi
;;
disconnect)
if bluetoothctl info "$MAC_ADDRESS" | grep -q "Connected: yes"; then
bluetoothctl disconnect "$MAC_ADDRESS"
exit
else
notify-send "Pixel Buds Pro 2 aren't connected"
exit
fi
;;
*)
status
exit
;;
esac
+54
View File
@@ -0,0 +1,54 @@
#!/bin/bash
# --- Configuration ---
CRITICAL_THRESHOLD=15
WARNING_THRESHOLD=50
# ---------------------
# Get the battery path from upower
battery_path=$(upower -e | grep 'BAT')
# Handle case where no battery is found
if [ -z "$battery_path" ]; then
# Check if we are on AC power anyway
if [[ $(tlp-stat -s | grep "Power source" | awk '{print $4}') == "AC" ]]; then
printf '{"text": "", "tooltip": "AC Power (No Battery)", "class": "ac"}\n'
else
printf '{"text": "", "tooltip": "Error: Battery not found", "class": "unknown"}\n'
fi
exit 0
fi
# Get battery percentage and state
percentage=$(upower -i "$battery_path" | grep "percentage" | awk '{print $2}' | tr -d '%')
state=$(upower -i "$battery_path" | grep "state" | awk '{print $2}')
tlp_profile=$(tlp-stat -s | grep "Power source" | awk '{print $4}')
# Set icon, class, and tooltip based on state and percentage
if [ "$state" == "charging" ] || [ "$tlp_profile" == "AC" ]; then
icon=""
class="charging"
tooltip="TLP: AC | Charging at ${percentage}%"
elif [ "$state" == "discharging" ]; then
tooltip="TLP: Battery | Discharging at ${percentage}%"
if [ "$percentage" -le "$CRITICAL_THRESHOLD" ]; then
icon="" # Very low
class="critical"
elif [ "$percentage" -le "$WARNING_THRESHOLD" ]; then
icon="" # Low
class="warning"
elif [ "$percentage" -le 85 ]; then
icon="" # Healthy
class="bat"
else
icon="" # Full
class="bat"
fi
else # Fallback for "fully-charged", "pending-charge", etc.
icon=""
class="charging"
tooltip="TLP: AC | Fully Charged at ${percentage}%"
fi
# Output JSON for Waybar
printf '{"text": "%s%% %s", "tooltip": "%s", "class": "%s"}\n' "$percentage" "$icon" "$tooltip" "$class"
+234 -186
View File
@@ -1,218 +1,266 @@
/* ~/.config/waybar/style.css */ /* ~/.config/waybar/style.css */
@import "./catppuccin-waybar/themes/mocha.css"; @import "./catppuccin-waybar/themes/mocha.css";
/* ==========================================================================
Global Reset & Bar
========================================================================== */
* { * {
border: none; border: none;
border-radius: 12px; border-radius: 0;
min-height: 0; min-height: 0;
font-family: "JetBrainsMono Nerd Font", sans-serif; font-family: JetBrainsMono Nerd Font;
font-size: 12px; font-size: 13px;
transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
} }
window#waybar { window#waybar {
background-color: transparent; background-color: alpha(@base, 0.4);
padding: 10px;
transition-property: background-color;
transition-duration: 0.5s;
color: @text; color: @text;
} }
/* ========================================================================== window#waybar.hidden {
Base Islands (Containers) opacity: 0.5;
========================================================================== */
/* Groups and standalone modules receive the floating island styling */
#spaces,
#powertray,
#hardware,
#center,
#custom-bluetooth-audio,
#custom-volume,
#custom-buds,
#custom-mic {
background-color: alpha(@surface0, 0.8);
margin: 4px 6px;
padding: 4px 16px;
border: 1px solid alpha(@surface1, 0.5);
box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);
color: @text;
}
/* Group-specific sizing overrides */
#hardware,
#powertray,
#spaces {
border-radius: 24px;
padding: 4px 10px;
}
/* Center Pill (Clock + MPRIS) Override */
#center {
background: linear-gradient(45deg, @mauve, @lavender);
color: @surface0;
font-weight: 900;
padding: 4px 20px;
}
/* ==========================================================================
Grouped Modules (Inner Items)
========================================================================== */
/* Strip backgrounds and borders from items that live inside groups */
#workspaces,
#window,
#custom-cpu,
#custom-mem,
#custom-sys,
#custom-gpu,
#custom-disk-root,
#custom-mpris,
#custom-network,
#custom-backlight,
#clock,
#tray,
#custom-gamemode,
#custom-dnd,
#custom-power_status {
background-color: transparent;
border: none;
box-shadow: none;
margin: 0;
padding: 0 8px;
}
/* Subtle vertical separator line between inner items */
#custom-cpu,
#custom-mem,
#custom-sys,
#custom-gpu,
#custom-disk-root,
#custom-mpris,
#custom-network,
#tray,
#custom-gamemode,
#custom-dnd {
border-right: 1px solid alpha(@surface1, 0.5);
border-radius: 0;
}
/* ==========================================================================
Specific Module Overrides & Alerts
========================================================================== */
/* --- Workspaces --- */
#workspaces {
padding: 0px 8px; /* Override the inner item padding */
} }
#workspaces button { #workspaces button {
padding: 0; all: initial;
margin: 4px; /* Remove GTK theme values (waybar #1351) */
min-width: 12px; min-width: 0;
min-height: 12px; /* Fix weird spacing in materia (waybar #450) */
background-color: @subtext0; box-shadow: inset 0 -3px transparent;
color: transparent; /* Use box-shadow instead of border so the text isn't offset */
border-radius: 12px; padding: 6px 18px;
margin: 0px 3px;
border-radius: 10px;
background-color: @base;
color: @subtext0;
} }
#workspaces button.active, #workspaces button.active {
#workspaces button.active:hover { color: @text;
min-width: 30px; border-bottom: 3px solid @blue;
background-color: @mauve;
} }
#workspaces button:hover { #workspaces button:hover {
background-color: @lavender; box-shadow: inherit;
min-width: 20px; text-shadow: inherit;
background-color: @surface0;
color: @text;
} }
#workspaces button.urgent { #workspaces button.urgent {
background-color: @red; border-bottom: 3px solid @maroon;
} }
/* --- Hardware Semantic Alerts --- */ #memory,
.normal { color: @mauve; } #cpu,
.high { color: @peach; } #custom-gpu,
.max { color: @red; } #custom-cpu,
#custom-mem,
#custom-network { color: @mauve; } #custom-power,
#custom-gamemode.active { color: @mauve; } #custom-gamemode,
#custom-tlp,
/* --- Media / Controls --- */ #battery,
#custom-volume.unmuted, #backlight,
#custom-mic.unmuted { #wireplumber,
color: @mauve; #network,
} #custom-network,
#custom-volume.muted, #clock,
#custom-mic.muted { #tray,
color: @overlay1; #custom-disk-root,
} #custom-disk-gdrive,
#custom-disk-games,
/* --- Bluetooth Audio --- */ #custom-disk-data,
#custom-bluetooth-audio.disabled, #custom-pixelbuds_pro,
#custom-bluetooth-audio.disconnected { #custom-bluetooth-audio,
color: @overlay1; #custom-audio-output,
} #custom-btrfs,
#custom-gpu-screen-recorder,
#custom-bluetooth-audio.connected { #custom-droidcam {
color: @blue; border-radius: 10px;
} margin: 0px 3px;
padding: 6px 12px;
/* ANC States */ background-color: @base;
#custom-bluetooth-audio.anc-active,
#custom-bluetooth-audio.connected.anc-active,
#custom-bluetooth-audio.connected\ anc-active {
color: @mauve;
}
#custom-bluetooth-audio.anc-aware,
#custom-bluetooth-audio.connected.anc-aware,
#custom-bluetooth-audio.connected\ anc-aware {
color: @green;
}
#custom-bluetooth-audio.anc-off,
#custom-bluetooth-audio.connected.anc-off,
#custom-bluetooth-audio.connected\ anc-off {
color: @blue;
}
/* --- Power Status --- */
#custom-power_status.charging { color: @green; }
#custom-power_status.warning { color: @peach; }
#custom-power_status.critical {
color: @red;
animation: blink 1s infinite alternate;
}
/* Interactive Hover States for Standalone Modules */
#custom-volume:hover,
#custom-buds:hover,
#custom-mic:hover,
#custom-bluetooth-audio:hover,
#custom-power_status:hover {
background-color: @surface1;
color: @mauve;
}
/* ==========================================================================
Tooltips & Animations
========================================================================== */
tooltip {
background-color: alpha(@base, 0.9);
border: 1px solid @surface1;
border-radius: 8px;
}
tooltip label {
color: @text; color: @text;
padding: 8px; }
#wireplumber.muted, #custom-pixelbuds_pro, #custom-audio-output.muted {
background-color: @base;
color: @subtext1;
border-bottom: 3px solid @subtext1;
}
#custom-pixelbuds_pro.disconnected {
padding-right: 16px;
padding-left: 12px;
}
#custom-gpu-screen-recorder,
#custom-gpu-screen-recorder.recording {
padding-right: 14px;
padding-left: 10px;
}
#custom-droidcam,
#custom-droidcam.active {
padding-right: 14px;
padding-left: 10px;
}
#custom-gamemode {
padding-right: 15px;
padding-left: 11px;
}
#custom-pixelbuds_pro.anc-active {
color: @sapphire;
border-bottom: 3px solid @sapphire;
}
#custom-bluetooth-audio {
color: @sapphire;
border-bottom: 3px solid @sapphire;
}
#custom-pixelbuds_pro.anc-aware {
color: @sapphire;
border-bottom: 3px solid @sapphire;
}
#custom-pixelbuds_pro.anc-off {
color: @text;
border-bottom: 3px solid @text;
}
#custom-gpu-screen-recorder,
#custom-gamemode,
#custom-droidcam {
background-color: @base;
color: @subtext1;
border-bottom: 3px solid @subtext1;
}
#custom-power {
color: @maroon;
}
#custom-gpu-screen-recorder.recording,
#custom-gamemode.active,
#custom-droidcam.active {
color: @maroon;
border-bottom: 3px solid @maroon;
}
#custom-tlp {
padding: 0 10px;
min-width: 10px;
}
#custom-tlp.charging {
color: @teal;
border-bottom: 3px solid @teal;
}
#custom-tlp.bat {
color: @sapphire;
border-bottom: 3px solid @sapphire;
}
#custom-tlp.warning {
color: @yellow;
border-bottom: 3px solid @yellow;
}
#custom-tlp.critical {
color: @red;
border-bottom: 3px solid @red;
animation-name: blink;
animation-duration: 0.8s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
} }
@keyframes blink { @keyframes blink {
to { to {
color: @base; color: @yellow;
background-color: @red; border-bottom: 3px solid @yellow;
opacity: 0.6;
} }
} }
#custom-gpu.max,
#custom-cpu.max,
#custom-mem.max,
#custom-btrfs.max,
#custom-disk-root.max,
#custom-disk-gdrive.max,
#custom-disk-games.max,
#custom-disk-data.max {
color: @maroon;
/* border-bottom: 3px solid @maroon; */
}
#custom-gpu.high,
#custom-gpu.high,
#custom-mem.high,
#custom-btrfs.high,
#custom-disk-root.high,
#custom-disk-gdrive.high,
#custom-disk-games.high,
#custom-disk-data.high {
color: @yellow;
/* border-bottom: 3px solid @yellow; */
}
#memory,
#cpu,
#disk,
#custom-network,
#custom-gpu.normal,
#custom-cpu.normal,
#custom-mem.normal,
#custom-btrfs.normal,
#custom-disk-root.normal,
#custom-disk-gdrive.normal,
#custom-disk-games.normal,
#custom-disk-data.normal {
color: @blue;
/* border-bottom: 3px solid @mauve; */
}
#backlight {
color: @mauve;
}
#wireplumber {
padding-right: 16px;
}
#network {
color: @maroon;
}
#custom-audio-output.unmuted, #wireplumber {
color: @mauve;
border-bottom: 3px solid @mauve;
}
#clock {
color: @mauve;
}
#network {
padding-right: 15px;
}
tooltip {
border-radius: 10px;
padding: 15px;
background-color: @base;
}
tooltip label {
padding: 5px;
background-color: @base;
}

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