Compare commits

...

24 Commits

Author SHA1 Message Date
c048717831 refactor: hyprlock (from https://github.com/MrVivekRajan/Hyprlock-Styles) 2026-01-29 16:42:38 +03:00
1308399187 feat: mpris support for waybar 2026-01-27 23:36:18 +03:00
cebcd98d0f refactor: rmpc 2026-01-27 21:00:45 +03:00
edb834371c refactor: waybar 2026-01-27 21:00:29 +03:00
ed840b5554 refactor: hypr 2026-01-27 20:59:34 +03:00
02bf812d7b fix: privacy rules 2026-01-22 00:37:52 +03:00
d7b63ad132 feat: waybar alt highlight for workspaces on different monitor 2026-01-16 08:57:47 +03:00
9f6ea0e3d1 refactor: updated waybar workspaces 2026-01-16 08:57:04 +03:00
e5bd69cfc4 chore: enabled markdown-preview and disabled image 2026-01-16 08:56:08 +03:00
74e5740a77 refactor: monitor setup changed 2026-01-16 08:55:29 +03:00
d75700ce5c refactor: rofi controls 2026-01-13 13:22:28 +03:00
226c027ebf fix: Telegram media viewer fullscreen;
fix: hyprbar style;
refactor: disabled hyprbars
2026-01-09 21:09:11 +03:00
0ba43bfb80 chore: groomed up hyprland main conf, removed wiki-related comments and commented out params since it's hard to guess what's not obsolete at this point 2026-01-01 20:18:52 +03:00
c5be52cc32 fix: centering issues 2026-01-01 20:03:45 +03:00
816db39d6e fix: window and layer rules. Hypr devs had to fix what wasn't broken again. 2026-01-01 19:36:08 +03:00
f30e7d0085 feat: add hyprland sound system with event-triggered audio feedback;
feat: implement new hyprland plugins (hyprfocus, hyprbars, dynamic-cursors);
refactor: reorganize hyprland autostart with delay staging and plugin configuration;
feat: add notification urgency-based sound system to swaync;
feat: enhance waybar with battery module, mpd controls, and dock bar;
refactor: update waybar taskbar with active window indicators and sorting;
feat: add hyprland shutdown sound and login audio greeting;
fix: adjust cava sleep timer and mpd sticker database configuration;
feat: update rmpc keybindings for improved playlist management;
fix: modify rofi keybindings for better navigation;
chore: add zsh aliases and misspell corrections;
refactor: update styling across swaync, waybar, and hyprland with new border radii and accent colors.
2025-12-29 20:47:57 +03:00
b453f9efd7 feat: random notification sounds 2025-12-25 02:10:43 +03:00
deace16b64 feat: improved taskbar;
refactor: hyprland blur
2025-12-25 02:10:29 +03:00
fc6b2a4291 feat: further improvement of waybar :D 2025-12-24 23:13:38 +03:00
10bd92a88d fix: patched waybar a little 2025-12-24 21:09:29 +03:00
4f5c9fa3d5 feat: new waybar 2025-12-24 21:05:33 +03:00
bf659ad824 chore: waybar style and config cleaned up 2025-12-24 12:03:06 +03:00
9faceb2309 feat: add new waybar top configuration with separate config and style files;
feat: add waybar colors.css for centralized color definitions;
experiment: change cava visual style to solid blue foreground and disable gradient;
chore: remove nwg-dock-hyprland from hyprland autostart and toggle scripts;
refactor: update waybar launch commands to use new config_top.jsonc and style_top.css;
refactor: simplify gamemode.sh by removing STATUSBAR variable and updating waybar commands;
chore: add placeholder config_bottom.jsonc and style_bottom.css for future dual-bar setup
2025-12-23 17:02:09 +03:00
c9795e2514 feat(hypr): add nwg-dock autostart and MPD control submap;
feat(hypr): add window swallowing for kitty and Steam workspace rules;
feat(waybar): create minimal config for gamemode and add notification panel button;
refactor(waybar): simplify config, merge memory/swap displays, update workspace icons;
refactor(swaync): remove CPU slider and adjust button styling;
experiment(hypr): increase vibrancy and change screenshot sound;
experiment(rmpc): update progress bar symbols;
fix(rofi): add mouse support to all menu configurations;
chore(hypr): update gamemode script to toggle minimal waybar
2025-12-21 22:00:37 +03:00
53 changed files with 1992 additions and 1075 deletions

1
.gitignore vendored
View File

@@ -42,6 +42,7 @@ Thunar/renamerrc
!xss-lock/
!zsh/
!zsh/aliases.sh
!zsh/misspell.sh
!bluetuith/**
!bspwm/**

View File

@@ -47,7 +47,7 @@ bar_width = 1
# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and
# only check for input once per second. Cava will wake up once input is detected. 0 = disable.
; sleep_timer = 0
; sleep_timer = 5
[input]
@@ -217,7 +217,7 @@ bar_width = 1
# a terminal that can change color definitions such as Gnome-terminal or rxvt.
# default is to keep current terminal color
; background = default
; foreground = default
foreground = blue
# SDL and sdl_glsl only support hex code colors, these are the default:
; background = '#111111'
@@ -227,7 +227,7 @@ bar_width = 1
# Gradient mode, only hex defined colors are supported,
# background must also be defined in hex or remain commented out. 1 = on, 0 = off.
# You can define as many as 8 different colors. They range from bottom to top of screen
gradient = 1
gradient = 0
gradient_count = 2
gradient_color_1 = '#9E2238'
gradient_color_2 = '#9E2238'

View File

@@ -2,17 +2,12 @@
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
# monitor=eDP-1, 1920x1080, 0x0, 1
# monitor=HDMI-A-1, 1920x1080, -1920x-100, 1
source = ~/.config/hypr/monitors.conf
###################
### MY PROGRAMS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
# Set programs that you use
$terminal = kitty
$fastTerminal = kitty --single-instance
$fileManager = thunar
@@ -23,170 +18,127 @@ $powermodemenu = $HOME/.config/rofi/scripts/dmenu_powermodemenu.sh
$browser = env GTK_THEME=Adwaita:light zen-browser
$privateBrowser = env GTK_THEME=Adwaita:light zen-browser --private-window
$notificationCenter = pkill rofi & swaync-client -t -sw || notify-send --hint int:transient:1 "Error SwayNC is down"
$waybar = GTK_THEME="Simply_Circles_Dark" waybar
$mpdpass = kapuchinamusica
$startDelay = sleep 2
#################
### AUTOSTART ###
#################
exec = sh -c '[[ $(cat "$HOME/.config/waybar/goal.txt") != "." ]] && swaync-client -C && notify-send -u critical -i "$HOME/Pictures/Fetch/atheism_paint.png" "Reminder" "$(cat $HOME/.config/waybar/goal.txt)"'
exec-once = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
# Le essential hyprland crap
# exec-once = hyprpaper
exec-once = sh -c '[[ $(cat "$HOME/.config/waybar/goal.txt") != "." ]] && swaync-client -C && notify-send -u critical -i "$HOME/Pictures/Fetch/atheism_paint.png" "Reminder" "$(cat $HOME/.config/waybar/goal.txt)"'
exec-once = swww-daemon
exec-once = ~/.config/hypr/scripts/autofreeze_swww.sh
exec-once = $waybar
exec-once = swaync
exec-once = hypridle
exec-once = hyprsunset
exec-once = eww daemon
exec-once = mullvad-vpn
exec-once = ~/.config/hypr/scripts/random_wallpaper.sh
exec-once = ~/.config/hypr/scripts/autofreezer.sh
exec-once = ~/.config/fastfetch/scripts/fetch_update_count.sh
exec-once = copyq --start-server
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = thunar --daemon
exec-once = touch /tmp/toggle_ssocks
exec-once = ~/.config/hypr/scripts/toggle_proxy.sh
exec-once = nextcloud --background &
exec-once = [workspace 8 silent] AyuGram
# exec-once = [workspace 7 silent] superproductivity
# exec-once = nm-applet &
# exec-once = waybar & hyprpaper & firefox
exec-once = wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 50% && play -v 0.7 ~/.config/hypr/sound/login.ogg
exec-once = ~/.config/waybar/run.sh
exec-once = $startDelay && hypridle
exec-once = $startDelay && hyprsunset
exec-once = $startDelay && /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = $startDelay && thunar --daemon
exec-once = $startDelay && [workspace 8 silent] AyuGram
exec-once = $startDelay && swaync
exec-once = $startDelay && mullvad-vpn
exec-once = $startDelay && touch /tmp/toggle_ssocks
exec-once = $startDelay && ~/.config/hypr/scripts/autofreeze_swww.sh
exec-once = $startDelay && ~/.config/fastfetch/scripts/fetch_update_count.sh
exec-once = $startDelay && ~/.config/hypr/scripts/toggle_proxy.sh
exec-once = $startDelay && ~/.config/hypr/scripts/sounds.sh
exec-once = $startDelay && ~/.config/hypr/scripts/random_wallpaper.sh
exec-once = $startDelay && ~/.config/hypr/scripts/autofreezer.sh
exec-once = .cargo/bin/mpd-discord-rpc
exec-shutdown = play -v 0.7 $HOME/Templates/Sounds/teleport.mp3
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
# env = QT_QPA_PLATFORMTHEME,qt6ct
###################
### PERMISSIONS ###
###################
# See https://wiki.hyprland.org/Configuring/Permissions/
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
# for security reasons
# ecosystem {
# enforce_permissions = 1
# }
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 12.5
gaps_out = 20
gaps_in = 15
gaps_out = 25
border_size = 1
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(E96375ff) rgba(9E2238ff) 45deg
col.inactive_border = rgba(4B535Bff) # rgba(595959aa)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
resize_on_border = true
hover_icon_on_border = true
allow_tearing = true # false
layout = dwindle
no_focus_fallback = true
snap {
enabled = true
enabled = true
}
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 10
rounding = 15
rounding_power = 2
# Change transparency of focused and unfocused windows
border_part_of_window = 0
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = false # true
range = 4
render_power = 3
color = rgba(1a1a1aee)
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 1
passes = 4
passes = 3
ignore_opacity = true
new_optimizations = true
vibrancy = 0
vibrancy = 0.5
noise = 0
contrast = 1
}
}
group {
col.border_active = rgba(E96375ff) rgba(EB75FFff) 45deg
col.border_inactive = rgba(F9730032) rgba(FB850032) 45deg
# col.border_locked_active = rgba(E96375ff) rgba(EB75FFff) 45deg
# col.border_locked_inactive = rgba(E96375ff) rgba(EB75FFff) 45deg
groupbar {
# font_size = 12
text_color = rgba(ffffff00)
render_titles = false
indicator_height = 10
rounding = 5
round_only_edges = false
col.active = rgba(F8859Eff)
col.inactive = rgba(32323264) rgba(32323264) 45deg
gaps_in = 5
gaps_out = 5
col.border_active = rgba(E96375ff) rgba(EB75FFff) 45deg
col.border_inactive = rgba(F9730032) rgba(FB850032) 45deg
}
groupbar {
text_color = rgba(ffffff00)
render_titles = false
indicator_height = 10
rounding = 5
round_only_edges = false
col.active = rgba(F8859Eff)
col.inactive = rgba(32323264) rgba(32323264) 45deg
gaps_in = 5
gaps_out = 2
}
}
source = ~/.config/hypr/grayscale.conf
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = yes, please :)
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
enabled = true
bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1
bezier = overshoot, 0.05, 0.9, 0.1, 1.1
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windows, 1, 4.79, overshoot
animation = windowsIn, 1, 5, easeOutQuint, popin 0%
animation = windowsOut, 1, 10, linear, popin 0%
animation = fadeIn, 1, 1.73, almostLinear
@@ -205,36 +157,19 @@ animations {
animation = layers, 1, 7, default, slide
}
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
workspace = 1, monitor:eDP-1
workspace = 2, monitor:eDP-1
workspace = 3, monitor:eDP-1
workspace = 4, monitor:eDP-1
workspace = 5, monitor:eDP-1
workspace = 6, monitor:eDP-1
workspace = 7, monitor:eDP-1
workspace = 8, monitor:eDP-1
workspace = 9, monitor:eDP-1
workspace = 10, monitor:HDMI-A-1
workspace = 11, monitor:HDMI-A-1
workspace = 12, monitor:HDMI-A-1
workspace = 13, monitor:eDP-1
workspace = 14, monitor:HDMI-A-1
workspace = 13, on-created-empty:hyprctl dispatch workspace 1
workspace = 14, on-created-empty:hyprctl dispatch workspace 10
workspace = 10, monitor:eDP-1
workspace = 11, monitor:eDP-1
workspace = 12, monitor:eDP-1
workspace = 1, monitor:HDMI-A-1
workspace = 2, monitor:HDMI-A-1
workspace = 3, monitor:HDMI-A-1
workspace = 4, monitor:HDMI-A-1
workspace = 5, monitor:HDMI-A-1
workspace = 6, monitor:HDMI-A-1
workspace = 7, monitor:HDMI-A-1
workspace = 8, monitor:HDMI-A-1
workspace = 9, monitor:HDMI-A-1
# workspace = 14, on-created-empty:
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
# windowrule = rounding 0, floating:0, onworkspace:f[1]
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
@@ -242,45 +177,51 @@ dwindle {
force_split = 2
}
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
render {
direct_scanout = 1
}
misc {
force_default_wallpaper = 1 # 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. :(
force_default_wallpaper = 1
disable_hyprland_logo = true
vfr = true
animate_manual_resizes = true
enable_swallow = true
swallow_regex = ^(kitty)$
middle_click_paste = false
enable_anr_dialog = false
render_unfocused_fps = 1
size_limits_tiled = true
on_focus_under_fullscreen = 0
exit_window_retains_fullscreen = false
}
##############
### CURSOR ###
##############
cursor {
warp_on_change_workspace = 1
}
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout= us,ru
kb_options= grp:caps_toggle,grp_led:caps
# kb_variant = ,qwerty
# kb_model =
# kb_rules =
kb_layout = us,ru
kb_options = grp:caps_toggle,grp_led:caps
repeat_rate = 25
repeat_delay = 200
follow_mouse = 0 # 2
follow_mouse = 2
float_switch_override_focus = 0
# touchpad / canyon
# sensitivity = 0.2 # -1.0 - 1.0, 0 means no modification.
# ardor
sensitivity = 0.025 # -1.0 - 1.0, 0 means no modification.
sensitivity = 0.025
touchpad {
natural_scroll = true
@@ -289,12 +230,12 @@ input {
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
# Workspaces
gesture = 4, horizontal, scale: 2, workspace
workspace_swipe_forever = true
workspace_swipe_direction_lock = false
workspace_swipe_touch = true
gesture = 3, vertical, dispatcher, exec, pkill rofi || $menu
# Notification center
@@ -305,8 +246,6 @@ gestures {
gesture = 4, down, dispatcher, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 10%-
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = gxtp7863:00-27c6:01e0-touchpad
sensitivity = 0.5
@@ -316,11 +255,16 @@ device {
### KEYBINDINGS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
$mainMod = SUPER
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
binds {
allow_workspace_cycles = true
}
# Exit hyprland
bind = $mainMod ALT, Q, exit,
# Shutdown
bind = $mainMod SHIFT, delete, exec, shutdown now
# Menu dropdown
@@ -337,16 +281,16 @@ bind = $mainMod, G, exec, pkill rofi || $recorder
bind = $mainMod, N, exec, $notificationCenter
# Open floating terminal
bind = $mainMod SHIFT, Return, exec, [float; size 800 600; move center] $fastTerminal --class kitty-float
bind = $mainMod SHIFT, Return, exec, $fastTerminal --class kitty-float
# Open bluetooth
bind = $mainMod, F3, exec, [float; size 600 400; move center] $fastTerminal --class kitty-float bluetui
bind = $mainMod, F3, exec, $fastTerminal --class kitty-float bluetui
# Open alsamixer
bind = $mainMod, F2, exec, [float; size 600 400; move center] $fastTerminal --class kitty-float alsamixer -V all
bind = $mainMod, F2, exec, $fastTerminal --class kitty-float alsamixer -V all
# Open ncmpcpp
bind = $mainMod, F1, exec, [float; size 600 400; move center] $fastTerminal --class kitty-float ncmpcpp
bind = $mainMod, F1, exec, $fastTerminal --class kitty-float ncmpcpp
# Close window
binde = $mainMod, W, killactive,
@@ -371,10 +315,10 @@ bind = $mainMod SHIFT, S, centerwindow,
bind = $mainMod, D, togglesplit, # dwindle
# Screenshots
bind = $mainMod SHIFT, Print, exec, grimblast --freeze copysave area ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg && play ~/Templates/Sounds/photo.mp3
bind = $mainMod, Print, exec, play ~/Templates/Sounds/photo.mp3 & grimblast --freeze copysave output ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
bind = $mainMod SHIFT, Print, exec, grimblast --freeze copysave area ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg && play ~/Templates/Sounds/camera_shutter1.mp3
bind = $mainMod, Print, exec, play ~/Templates/Sounds/camera_shutter1.mp3 & grimblast --freeze copysave output ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
bind = $mainMod SHIFT, XF86AudioNext, exec, grimblast --freeze copysave area ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg && play ~/Templates/Sounds/photo.mp3
bind = $mainMod, XF86AudioNext, exec, play ~/Templates/Sounds/photo.mp3 & grimblast --freeze copysave output ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
bind = $mainMod, XF86AudioNext, exec, play ~/Templates/Sounds/camera_shutter1.mp3 & grimblast --freeze copysave output ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
# Move focus with mainMod + arrow keys
bind = $mainMod, h, movefocus, l
@@ -382,7 +326,7 @@ bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, d
# Switch workspaces with mainMod + [0-9]
# Switch workspaces with mainMod + [0,1,2,3,4,5,6,7,8,9,0,-,=]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
@@ -411,25 +355,30 @@ bind = $mainMod SHIFT, minus, movetoworkspacesilent, 11
bind = $mainMod SHIFT, equal, movetoworkspacesilent, 12
# Cycle monitors
bind = $mainMod CTRL, U, swapactiveworkspaces, eDP-1 HDMI-A-1
bind = $mainMod, O, focusmonitor, +1
# Move current workspace to another monitor
bind = $mainMod SHIFT, y, movecurrentworkspacetomonitor, +1
bind = $mainMod SHIFT, v, moveworkspacetomonitor, +0 +1
# Example special workspace (scratchpad)
bind = $mainMod, M, togglespecialworkspace, magic
bind = $mainMod SHIFT, M, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, bracketleft, workspace, r-1
bind = $mainMod, bracketright, workspace, r+1
# Go to previous/next workspace
bind = $mainMod, bracketleft, workspace, -1
bind = $mainMod, bracketright, workspace, +1
# Go to previous/next occupied workspace
bind = $mainMod SHIFT, bracketleft, workspace, m-1
bind = $mainMod SHIFT, bracketright, workspace, m+1
# Gaming special workspace
bind = $mainMod, grave, togglespecialworkspace, dungeon
bind = $mainMod SHIFT, grave, movetoworkspace, special:dungeon
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
#bindm = SUPER, Shift_L, swapwindow
bindm = $mainMod, mouse:273, resizewindow
bindm = SUPER, ALT_L, resizewindow
@@ -446,14 +395,24 @@ bind = $mainMod SHIFT, k, swapwindow, u
# Cycle through windows with mainMod + C
bind = $mainMod, C, cyclenext
bind = $mainMod SHIFT, C, cyclenext, prev
bind = $mainMod, X, cyclenext, visible floating
bind = $mainMod, R, swapnext
bind = $mainMod SHIFT, R, swapnext, prev
# Go to previous window and back
bind = ALT, TAB, focuscurrentorlast
bind = $mainMod, I, focusurgentorlast
bindp = $mainMod, Tab, workspace, previous
# bind = ALT, TAB, focuscurrentorlast
# Go to previous workspace and back
binds {
allow_workspace_cycles = true # does not seem to affect anything
}
allow_workspace_cycles = true # does not seem to affect anything
bind = $mainMod, Tab, workspace, previous
bind = ALT, Tab, workspace, previous_per_monitor
# Toggle swallow for window
bind = $mainMod, I, toggleswallow
# Resize windows in different directions via keyboard
binde = $mainMod ALT, h, resizeactive, -60 0
@@ -465,7 +424,7 @@ binde = $mainMod ALT SHIFT, l, resizeactive, -60 0
binde = $mainMod ALT SHIFT, j, resizeactive, 0 -60
binde = $mainMod ALT SHIFT, k, resizeactive, 0 60
# Swap windows in different directions via keyboard
# Move windows in different directions via keyboard
binde = $mainMod, Left, moveactive, -100 0
binde = $mainMod, Right, moveactive, 100 0
binde = $mainMod, Down, moveactive, 0 100
@@ -495,7 +454,6 @@ bind = $mainMod CTRL ALT, Right, movewindoworgroup, r
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
# bindl = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindl = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindl = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
@@ -503,14 +461,14 @@ bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
bindl = $mainMod, XF86MonBrightnessUp, exec, brightnessctl set 60%
bindl = $mainMod, XF86MonBrightnessDown, exec, brightnessctl set 0
# Requires playerctl
# Media controls via playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
# Toggle waybar
bind = $mainMod SHIFT, B, exec, ~/.config/hypr/scripts/toggle_waybar.sh
bind = $mainMod SHIFT, B, exec, ~/.config/waybar/run.sh toggle
# Toggle grayscale mode
bind = $mainMod CTRL, G, exec, ~/.config/hypr/scripts/grayscale-toggle.sh
@@ -560,7 +518,15 @@ bindr = , F8, sendshortcut, CTRL SHIFT, F8, class:^(vesktop)$
# Telegram PTT
binde = $mainMod CTRL, F9, tagwindow, voicechatuz
bindr = , F9, sendshortcut, , F9, class:com.ayugram.desktop
windowrule = bordercolor rgba(ffff00ff) rgba(ffff0055),tag:voicechatuz
windowrule {
name = windowrule-1
border_color = rgba(ffff00ff) rgba(ffff0055)
match:tag = voicechatuz
}
# Restart zapret
bind = $mainMod SHIFT, z, exec, sudo systemctl restart zapret_discord_youtube.service && play -v 0.4 /home/greg/.config/hypr/sound/dmenu.wav
# Zen - focus searchbar
bindrn = CTRL, Space, sendshortcut, , F6, class:^(zen)$
@@ -594,6 +560,33 @@ bind = $mainMod, Tab, submap, reset
bind = $mainMod, Escape, submap, reset
submap = reset
# Activate MPD submap with $mainMod + U
bind = $mainMod, U, submap, mpd
# Define the MPD submap
submap = mpd
# MPD controls (actions that exit submap)
bind = , P, exec, mpc toggle
bind = SHIFT, H, exec, mpc prev
bind = SHIFT, L, exec, mpc next
# MPD Seek
binde = , H, exec, mpc seek "-00:00:5"
binde = , L, exec, mpc seek "+00:00:5"
# Volume controls (remain in submap for repeated adjustments)
bind = , J, exec, mpc volume -5
bind = , K, exec, mpc volume +5
# Alternative exit methods
bind = , escape, submap, reset
bind = , Return, submap, reset
bind = , Space, submap, reset
# End the submap definition
submap = reset
##############################
### WINDOWS AND WORKSPACES ###
##############################
@@ -602,74 +595,178 @@ submap = reset
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# Floating kitty
windowrule = float,class:^(kitty-float)$
windowrule = size 600 400,class:^(kitty-float)$
windowrule = move center,class:^(kitty-float)$
windowrule {
name = windowrule-21
float = on
size = 600 400
center = on
match:class = ^(kitty-float)$
}
windowrule {
name = windowrule-3
workspace = special:dungeon
match:class = org.freedesktop.Xwayland
}
windowrule = workspace special:dungeon,class:org.freedesktop.Xwayland
# Zenity
windowrule = float,class:^(zenity)$
windowrule {
name = windowrule-4
float = on
match:class = ^(zenity)$
}
# Super Productivity
windowrule = workspace 7 silent,class:^(superProductivity)$
windowrule {
name = windowrule-5
workspace = 7 silent
match:class = ^(superProductivity)$
}
# Telegram
windowrule = workspace 8 silent,class:^(com.ayugram.desktop)$
windowrule = group set,class:^(com.ayugram.desktop)$
windowrule {
name = windowrule-6
workspace = 8 silent
group = set
suppress_event = fullscreen
match:class = ^(com.ayugram.desktop)$
}
# Telegram media viewer
windowrule {
name = telegram-media-viewer
group = deny
fullscreen = true
match:class = ^(com.ayugram.desktop)$
match:initial_title = ^(Media\ viewer)
}
# Vesktop
windowrule = workspace 8 silent,class:^(vesktop)$
windowrule = group override set always,class:^(vesktop)$
windowrule {
name = windowrule-7
workspace = 8 silent
group = override set always
match:class = ^(vesktop)$
}
# Element
windowrule = workspace 8 silent,class:^(Element)$
windowrule = group override set always,class:^(Element)$
windowrule {
name = windowrule-8
workspace = 8 silent
group = override set always
match:class = ^(Element)$
}
# Steam
windowrule {
name = windowrule-9
workspace = 7 silent
group = set
match:class = ^(steam)$
}
# Screensharing protection
source = ~/.config/hypr/privacy.conf
windowrule = noscreenshare, tag:privacy
windowrule = bordercolor rgba(cc00ffff) rgba(630063ff) 90deg,tag:privacy
windowrule = noscreenshare 0, tag:privacyexpose
windowrule = bordercolor rgba(ff0000ff) rgba(ff0000ff) 90deg,tag:privacyexpose
windowrule = dimaround, tag:privacyexpose
windowrule {
name = windowrule-10
no_screen_share = on
border_color = rgba(cc00ffff) rgba(630063ff) 90deg
match:tag = privacy
}
windowrule {
name = windowrule-11
no_screen_share = 0
border_color = rgba(ff0000ff) rgba(ff0000ff) 90deg
border_size = 5
match:tag = privacyexpose
}
# com.saivert.pwvucontrol
windowrule = float,class:^(com.saivert.pwvucontrol)$
windowrule = size 600 400,class:^(com.saivert.pwvucontrol)$
windowrule = move center,class:^(com.saivert.pwvucontrol)$
windowrule {
name = windowrule-12
float = on
size = 600 400
move = (center)
match:class = ^(com.saivert.pwvucontrol)$
}
# Frozen windows
windowrule = bordercolor rgba(E96375ff) rgba(00ffff55) 90deg,tag:zawarudo
windowrule {
name = windowrule-13
border_color = rgba(E96375ff) rgba(00ffff55) 90deg
match:tag = zawarudo
}
# Marked windows
windowrule = bordercolor rgba(0000ffff) rgba(aa00ffa5),tag:marked
windowrule {
name = windowrule-14
border_color = rgba(0000ffff) rgba(aa00ffa5)
match:tag = marked
}
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
windowrule {
name = windowrule-15
suppress_event = maximize
match:class = .*
}
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
windowrule {
name = windowrule-16
no_focus = on
match:class = ^$
match:title = ^$
match:xwayland = 1
match:float = 1
match:fullscreen = 0
match:pin = 0
}
# Animation for rofi
layerrule = ignorezero, rofi
layerrule = dimaround, rofi
layerrule = blur, rofi
layerrule = animation slide bottom, rofi
# rofi
layerrule {
name = layerrule-1
ignore_alpha = 0
dim_around = on
blur = on
animation = slide bottom
match:namespace = rofi
}
# swaync
layerrule {
name = layerrule-2
blur = on
dim_around = on
ignore_alpha = 0
animation = slideIn right
match:namespace = swaync-control-center
}
layerrule {
name = layerrule-3
blur = on
above_lock = on
ignore_alpha = 0
animation = slideIn right
match:namespace = swaync-notification-window
}
# waybar
layerrule {
name = layerrule-4
ignore_alpha = 0.6
blur = on
animation = fadeIn
match:namespace = waybar
}
# Animation fpr swaync
layerrule = blur, swaync-control-center
layerrule = blur, swaync-notification-window
layerrule = abovelock, swaync-notification-window
layerrule = dimaround, swaync-control-center
layerrule = ignorezero, swaync-control-center
layerrule = ignorezero, swaync-notification-window
layerrule = animation slideIn right, swaync-control-center
layerrule = animation slideIn right, swaync-notification-window
# Waybar blur
layerrule = ignorezero, waybar
layerrule = blur, waybar
layerrule = ignorealpha 0.6, waybar
# Adjustments for certain workspaces
workspace = special:magic, gapsin:20, gapsout:50, shadow:false
workspace = 9, gapsin:15, gapsout:40
@@ -677,7 +774,7 @@ workspace = 9, gapsin:15, gapsout:40
###############
### PLUGINS ###
###############
# exec-once = hyprpm reload -n
exec-once = hyprpm reload
# # Easymotion
# bind = SUPER, x, easymotion, action:hyprctl dispatch focuswindow address:{}
@@ -685,71 +782,106 @@ workspace = 9, gapsin:15, gapsout:40
# Close unfocused
# bind = $mainMod SHIFT, x, plugin:xtd:closeunfocused
# plugin {
#
# hyprfocus {
# animation = hyprfocusIn, 1, 3, quick
# animation = hyprfocusOut, 1, 3, quick
# fade_opacity = 0.94
# mode = flash
# }
#
# easymotion {
# #font size of the text
# textsize=72
#
# #color of the text, takes standard hyprland color format
# textcolor=rgba(ffffffff)
#
# #background color of the label box. alpha is respected
# bgcolor=rgba(ff7777a0)
#
# #enable blur. The bgcolor alpha must be at least semi-transparent.
# blur=0
#
# #Set blur alpha value. Blur must be enabled (float value)
# blurA=1.0
#
# #Set xray. Blur must be enabled
# xray=0
#
# #font to use for the label. This is passed directly to the pango font description
# textfont=Iosevka Nerd Font Mono
#
# #padding around the text (inside the label box) size in pixels, adjusted for
# #monitor scaling. This is the same format as hyprland's gapsin/gapsout workspace layout rule
# #example: textpadding=2 5 5 2 (spaces not commas)
# textpadding=5
#
# #size of the border around the label box. A border size of zero disables border rendering.
# bordersize=2
#
# #color of the border. takes the same format as hyprland's border (so it can be a gradient)
# bordercolor=rgba(ffffffff)
#
# #rounded corners? Same as hyprland's 'decoration:rounding' config
# rounding=1
#
# #what to do if a window is fullscreen
# #none: nothing. (easymotion label won't be displayed on that window)
# #toggle: take the window out of fullscreen entirely.
# #maximize: convert the window to maximized.
# #windows are restored to fullscreen after easymotion is exited/selected
# fullscreen_action=none
#
# #which keys to use for selecting windows
# motionkeys=abcdefghijklmnopqrstuvwxyZ1234567890
# #which keys to use for labeling windows
# motionlabels=ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
#
# #if a monitor has a focused special workspace, only put easymotion labels on the windows in the special workspace
# only_special = true
# }
# }
plugin {
hyprfocus {
animation = hyprfocusIn, 1, 3, quick
animation = hyprfocusOut, 1, 3, quick
fade_opacity = 0.94
mode = flash
}
hyprbars {
enabled = false
bar_height = 18
bar_color = rgba(1c1c1cce)
bar_title_enabled = false
bar_buttons_alignment = right
bar_blur = true
icon_on_hover = true
bar_part_of_window = false
bar_precedence_over_border = true
bar_text_font = "Iosevka Nerd Font Propo"
bar_text_size = 10
hyprbars-button = rgba(ff4040ff), 12, X, hyprctl dispatch killactive
hyprbars-button = rgba(11ee11ff), 12, F, hyprctl dispatch togglefloating && hyprctl dispatch resizeactive exact 1280 700 && hyprctl dispatch centerwindow
hyprbars-button = rgba(eeee11ff), 12, Z, hyprctl dispatch tagwindow zawarudo
inactive_button_color = rgba(D583995c)
on_double_click =
windowrule = match:class ^(com.ayugram.desktop), hyprbars:bar_color rgb(261B1E)
windowrule = match:class ^(zen), hyprbars:bar_color rgb(121214)
windowrule = match:class ^(thunar), hyprbars:bar_color rgb(1C1C1C)
windowrule = match:class ^(draw.io), hyprbars:bar_color rgb(F1F3F4)
windowrule = match:float 1, hyprbars:bar_color rgb(1C1C1C)
}
dynamic-cursors {
shake {
threshold = 3
limit = 15
timeout = 1
effects = true
nearest = true
}
}
easymotion {
#font size of the text
textsize=72
#color of the text, takes standard hyprland color format
textcolor=rgba(ffffffff)
#background color of the label box. alpha is respected
bgcolor=rgba(ff7777a0)
#enable blur. The bgcolor alpha must be at least semi-transparent.
blur=0
#Set blur alpha value. Blur must be enabled (float value)
blurA=1.0
#Set xray. Blur must be enabled
xray=0
#font to use for the label. This is passed directly to the pango font description
textfont=Iosevka Nerd Font Mono
#padding around the text (inside the label box) size in pixels, adjusted for
#monitor scaling. This is the same format as hyprland's gapsin/gapsout workspace layout rule
#example: textpadding=2 5 5 2 (spaces not commas)
textpadding=5
#size of the border around the label box. A border size of zero disables border rendering.
bordersize=2
#color of the border. takes the same format as hyprland's border (so it can be a gradient)
bordercolor=rgba(ffffffff)
#rounded corners? Same as hyprland's 'decoration:rounding' config
rounding=1
#what to do if a window is fullscreen
#none: nothing. (easymotion label won't be displayed on that window)
#toggle: take the window out of fullscreen entirely.
#maximize: convert the window to maximized.
#windows are restored to fullscreen after easymotion is exited/selected
fullscreen_action=none
#which keys to use for selecting windows
motionkeys=abcdefghijklmnopqrstuvwxyZ1234567890
#which keys to use for labeling windows
motionlabels=ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
#if a monitor has a focused special workspace, only put easymotion labels on the windows in the special workspace
only_special = true
}
}
debug {
disable_logs = false
overlay = false
}
source = ~/.config/hypr/monitors.conf

View File

@@ -1,111 +1,89 @@
# sample hyprlock.conf
# for more configuration options, refer https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock
#
# rendered text in all widgets supports pango markup (e.g. <b> or <i> tags)
# ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#general-remarks
#
# shortcuts to clear password buffer: ESC, Ctrl+U, Ctrl+Backspace
#
# you can get started by copying this config to ~/.config/hypr/hyprlock.conf
#
$font = Iosevka
general {
hide_cursor = true
}
# uncomment to enable fingerprint authentication
# auth {
# fingerprint {
# enabled = true
# ready_message = Scan fingerprint to unlock
# present_message = Scanning...
# retry_delay = 250 # in milliseconds
# }
# }
animations {
enabled = true
bezier = linear, 1, 1, 0, 0
animation = fadeIn, 1, 5, linear
animation = fadeOut, 1, 5, linear
animation = inputFieldDots, 1, 2, linear
}
# BACKGROUND
background {
monitor =
path = screenshot
# path = /home/greg/Pictures/Wallpapers/japan_tower_sakura.jpg
blur_passes = 3
path = /home/greg/Pictures/Wallpapers/waporvape-dark-tvlike-pink.png
blur_passes = 0
contrast = 0.8916
brightness = 0.8172
vibrancy = 0.1696
vibrancy_darkness = 0.0
}
image {
# TODO: store there images somewhere in the config dir
path = /home/greg/Pictures/Things/niko.jpg
position = 0, 40
halign = center
valign = center
size = 100, 100
rounding = -1
border_color = rgba(9E223800)
shadow_passes = 1
shadow_size = 3
shadow_color = rgb(aaaaaa)
# GENERAL
general {
no_fade_in = false
grace = 0
disable_loading_bar = false
}
input-field {
# Time-Hour
label {
monitor =
size = 15%, 5%
outline_thickness = 3
inner_color = rgba(0, 0, 0, 0.5) # no fill
outer_color = rgba(9E223800)
check_color = rgba(ffff00ff) rgba(E96375ff) 120deg
fail_color = rgba(ff6633ee) rgba(ff0066ee) 40deg
font_color = rgb(255,255,255)
fade_on_empty = false
rounding = 15
font_family = $font
placeholder_text = パスワード
fail_text = $PAMFAIL
# uncomment to use a letter instead of a dot to indicate the typed password
# dots_text_format = *
# dots_size = 0.4
dots_spacing = 0.3
# uncomment to use an input indicator that does not show the password length (similar to swaylock's input indicator)
# hide_input = true
position = 0, -100
text = cmd[update:1000] echo "<span>$(date +"%I")</span>"
color = rgba(255, 255, 255, 1)
font_size = 125
font_family = StretchPro
position = -80, 190
halign = center
valign = center
}
# TIME
# Time-Minute
label {
monitor =
text = $TIME # ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#variable-substitution
font_size = 90
font_family = $font
position = 0, -50
text = cmd[update:1000] echo "<span>$(date +"%M")</span>"
color = rgba(232, 60, 130, 1)
font_size = 125
font_family = StretchPro
position = 0, 70
halign = center
valign = top
valign = center
}
# DATE
# Day-Month-Date
label {
monitor =
text = cmd[update:60000] date +"%A, %d %B %Y" # update every 60 seconds
font_size = 25
font_family = $font
position = 0, -200
text = cmd[update:1000] echo -e "$(date +"%d %B, %a.")"
color = rgba(255, 255, 255, 100)
font_size = 22
font_family = Suisse Int'l Mono
position = 20, -8
halign = center
valign = top
valign = center
}
# USER
label {
monitor =
text =  $USER
color = rgba(232, 60, 130, 1)
outline_thickness = 2
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
font_size = 22
font_family = SF Pro Display Bold
position = 0, -220
halign = center
valign = center
}
# INPUT FIELD
input-field {
monitor =
size = 300, 60
outline_thickness = 2
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
outer_color = rgba(0, 0, 0, 0)
inner_color = rgba(255, 255, 255, 0.1)
font_color = rgb(200, 200, 200)
fade_on_empty = false
font_family = SF Pro Display Bold
placeholder_text = <i><span foreground="##FB6F7F99">パスワード</span></i>
hide_input = false
position = 0, -290
halign = center
valign = center
}

View File

@@ -1,18 +1,110 @@
windowrule = tag +privacy,class:^(org.telegram.desktop)$
windowrule = tag +privacy,class:^(com.ayugram.desktop)$
windowrule = tag +privacy,class:^(Element)$
windowrule = tag +privacy,class:^(vesktop)$
windowrule = tag +privacy,class:^(chat-simplex-desktop-MainKt)$
windowrule = tag +privacy,class:^(com.github.hluk.copyq)$
windowrule = tag +privacy,class:^(org.keepassxc.KeePassXC)$
windowrule = tag +privacy,class:^(otpclient)$
windowrule = tag +privacy,class:^(com.nextcloud.desktopclient.nextcloud)$
windowrule = tag +privacy,title:^(diary)$
windowrule = tag +privacy,class:thunar,title:.*(Downloads|Telegram Desktop).*
windowrule = tag +privacy,class:^(Mullvad VPN)$
windowrule = tag +privacy,class:^(Tor Browser)$
windowrule = tag +privacy,class:^(zen)$,title:.*Private Browsing.*
windowrule = tag +privacy,class:^(Logseq)$
windowrule = tag +privacy,class:^(com.obsproject.Studio)$
layerrule = noscreenshare, swaync-control-center
layerrule = noscreenshare, swaync-notification-window
windowrule {
name = privacy-rule-1
tag = privacy
match:class = ^(org.telegram.desktop)$
}
windowrule {
name = privacy-rule-2
tag = privacy
match:class = ^(com.ayugram.desktop)$
}
windowrule {
name = privacy-rule-3
tag = privacy
match:class = ^(Element)$
}
windowrule {
name = privacy-rule-4
tag = privacy
match:class = ^(vesktop)$
}
windowrule {
name = privacy-rule-5
tag = privacy
match:class = ^(chat-simplex-desktop-MainKt)$
}
windowrule {
name = privacy-rule-6
tag = privacy
match:class = ^(com.github.hluk.copyq)$
}
windowrule {
name = privacy-rule-7
tag = privacy
match:class = ^(org.keepassxc.KeePassXC)$
}
windowrule {
name = privacy-rule-8
tag = privacy
match:class = ^(otpclient)$
}
windowrule {
name = privacy-rule-9
tag = privacy
match:class = ^(com.nextcloud.desktopclient.nextcloud)$
}
windowrule {
name = privacy-rule-10
tag = privacy
match:title = ^(diary)$
}
windowrule {
name = privacy-rule-11
tag = privacy
match:class = thunar
match:title = .*(Downloads|Telegram Desktop).*
}
windowrule {
name = privacy-rule-12
tag = privacy
match:class = ^(Mullvad VPN)$
}
windowrule {
name = privacy-rule-13
tag = privacy
match:class = ^(Tor Browser)$
}
windowrule {
name = privacy-rule-14
tag = privacy
match:class = ^(zen)$
match:title = .*Private Browsing.*
}
windowrule {
name = privacy-rule-15
tag = privacy
match:class = ^(Logseq)$
}
windowrule {
name = privacy-rule-16
tag = privacy
match:class = ^(com.obsproject.Studio)$
}
layerrule {
name = privacy-layer-rule-1
no_screen_share = on
match:namespace = swaync-control-center
}
layerrule {
name = privacy-layer-rule-2
no_screen_share = on
match:namespace = swaync-notification-window
}

View File

@@ -5,7 +5,23 @@ if [ "$HYPRGAMEMODE" = 1 ] ; then
keyword animations:enabled 0;\
keyword decoration:shadow:enabled 0;\
keyword decoration:blur:enabled 0;\
keyword decoration:blur:ignore_opacity 1;\
keyword decoration:blur:new_optimizations 1;\
keyword decoration:blur:xray 1;\
keyword decoration:active_opacity 1;\
keyword plugin:hyprfocus:fade_opacity 1"
if pgrep waybar > /dev/null; then
pkill waybar
# TODO: lite waybar version
$HOME/.config/waybar/run.sh
fi
exit
fi
if pgrep waybar > /dev/null; then
pkill waybar
$HOME/.config/waybar/run.sh
fi
hyprctl reload

152
hypr/scripts/sounds.sh Executable file
View File

@@ -0,0 +1,152 @@
#!/usr/bin/env bash
SOUND_DIR="$HOME/.config/hypr/sound"
PLAYER="play"
VOLUME="0.1"
declare -A SOUND_MAP=(
["workspace"]="futuristic-click.wav"
["activewindow"]="popup.wav"
["activelayout"]="popup.wav"
["fullscreen"]="fullscreen.wav"
["openwindow"]="open.mp3"
["closewindow"]="close_2.wav"
["movewindow"]="popup.wav"
["changefloatingmode"]="float.wav"
)
declare -A EVENT_ENABLED=(
["workspace"]=1
["activewindow"]=1
["activelayout"]=0
["fullscreen"]=1
["openwindow"]=1
["closewindow"]=1
["movewindow"]=1
["changefloatingmode"]=1
)
declare -A EVENT_COOLDOWN=(
["activewindow"]=0.1
["movewindow"]=0.2
["changefloatingmode"]=0.3
)
DEBUG=1
declare -a SOUND_QUEUE=()
declare -A COOLDOWN_TIMERS=()
mkdir -p "$SOUND_DIR"
cp -r $SOUND_DIR "/tmp/hypr-sound"
SOUND_DIR="/tmp/hypr-sound"
log() {
if [ $DEBUG -eq 1 ]; then
echo "[$(date '+%H:%M:%S')] $1" >&2
fi
}
play_sound() {
local event="$1"
local sound_file="$2"
local full_path="$SOUND_DIR/$sound_file"
if [ ! -f "$full_path" ]; then
log "Sound file not found: $full_path"
return 1
fi
log "Playing: $event -> $sound_file"
play -v $VOLUME "$full_path" &
return 0
}
handle_event() {
local raw_event="$1"
local event_type=""
local event_data=""
if [[ "$raw_event" == *">>"* ]]; then
event_type="${raw_event%%>>*}"
event_data="${raw_event#*>>}"
else
event_type="$raw_event"
fi
log "Received event: $event_type (data: $event_data)"
case "$event_type" in
"workspace"*)
if [[ "$event_data" == *,* ]]; then
trigger_event "workspace" "$event_data"
fi
;;
"activelayout"*)
trigger_event "activelayout" "$event_data"
;;
"fullscreen"*)
trigger_event "fullscreen" "$event_data"
;;
"openwindow"*)
trigger_event "openwindow" "$event_data"
;;
"closewindow"*)
trigger_event "closewindow" "$event_data"
;;
"movewindow"*)
if [[ "$event_data" == *,*,* ]]; then
trigger_event "movewindow" "$event_data"
fi
;;
"changefloating"*)
trigger_event "changefloatingmode" "$event_data"
;;
*)
log "Unknown event: $event_type"
;;
esac
}
trigger_event() {
local event="$1"
local data="$2"
if [ "${EVENT_ENABLED[$event]:-0}" -ne 1 ]; then
log "Event $event is disabled"
return
fi
local sound_file="${SOUND_MAP[$event]}"
if [ -z "$sound_file" ]; then
log "No sound mapped for event: $event"
return
fi
if [ "$event" = "changefloatingmode" ]; then
local state="${data#*,}"
if [ "$state" -eq 1 ]; then
sound_file="float.wav"
else
sound_file="tile.wav"
fi
fi
play_sound "$event" "$sound_file"
}
echo "Sound directory: $SOUND_DIR"
echo "Enabled events:"
for event in "${!EVENT_ENABLED[@]}"; do
if [ "${EVENT_ENABLED[$event]}" -eq 1 ]; then
echo " - $event: ${SOUND_MAP[$event]}"
fi
done
socat - "UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" | \
while read -r line; do
handle_event "$line"
done

View File

@@ -1,9 +0,0 @@
#!/bin/sh
PROGRAM="waybar"
if pgrep -x "$PROGRAM" > /dev/null; then
pkill -x $PROGRAM
else
GTK_THEME="Simply_Circles_Dark" $PROGRAM &
fi

BIN
hypr/sound/add.wav Normal file

Binary file not shown.

Binary file not shown.

BIN
hypr/sound/close_2.wav Normal file

Binary file not shown.

BIN
hypr/sound/dmenu.wav Normal file

Binary file not shown.

BIN
hypr/sound/float.wav Normal file

Binary file not shown.

BIN
hypr/sound/fullscreen.wav Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
hypr/sound/login.ogg Normal file

Binary file not shown.

BIN
hypr/sound/menu_close.wav Normal file

Binary file not shown.

BIN
hypr/sound/menu_open.wav Normal file

Binary file not shown.

BIN
hypr/sound/open.mp3 Normal file

Binary file not shown.

BIN
hypr/sound/popup.wav Normal file

Binary file not shown.

BIN
hypr/sound/remove.wav Normal file

Binary file not shown.

Binary file not shown.

BIN
hypr/sound/tile.wav Normal file

Binary file not shown.

BIN
hypr/sound/volume_notif.wav Normal file

Binary file not shown.

View File

@@ -55,7 +55,7 @@ state_file "~/.mpd/state"
# The location of the sticker database. This is a database which
# manages dynamic information attached to songs.
#
#sticker_file "~/.mpd/sticker.sql"
sticker_file "~/.mpd/sticker.sql"
#
###############################################################################

View File

@@ -1,6 +1,6 @@
return {
"3rd/image.nvim",
event = 'BufEnter',
-- event = 'BufEnter',
build = false, -- so that it doesn't build the rock https://github.com/3rd/image.nvim/issues/91#issuecomment-2453430239
config = function()
require("image").setup({

View File

@@ -1,6 +1,7 @@
return {
{
"iamcco/markdown-preview.nvim",
event = 'BufEnter',
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
build = "cd app && npm install",
init = function()

View File

@@ -1,8 +0,0 @@
[window]
width=500
height=400
sinkInputType=1
sourceOutputType=1
sinkType=0
sourceType=1
showVolumeMeters=1

View File

@@ -3,7 +3,6 @@
#![enable(unwrap_variant_newtypes)]
(
address: "127.0.0.1:6600",
password: "kapuchinamusica",
theme: "kolinux",
cache_dir: None,
on_song_change: None,
@@ -65,15 +64,16 @@
"<C-l>": PaneRight,
"<C-u>": UpHalf,
"N": PreviousResult,
"<Space>": Add,
"<Space>": AddOptions(kind: Action(all: false, autoplay: None, position: EndOfQueue)),
"<CR>": AddOptions(kind: Action(all: false, autoplay: Hovered, position: EndOfQueue)),
"<S-CR>": Confirm,
"<C-Space>": AddAll,
"r": Rename,
"n": NextResult,
"g": Top,
"m": Select,
"M": InvertSelection,
"M": InvertSelection,
"G": Bottom,
"<CR>": Confirm,
"i": FocusInput,
"J": MoveDown,
"<C-d>": DownHalf,
@@ -144,6 +144,7 @@
autosens: true, // default true
sensitivity: 100, // default 100
bar_width: 1,
channels: 2,
bar_spacing: 0,
lower_cutoff_freq: 50, // not passed to cava if not provided
higher_cutoff_freq: 10000, // not passed to cava if not provided

View File

@@ -41,7 +41,7 @@
trace: (fg: "magenta", bg: "black"),
),
progress_bar: (
symbols: ["🬋", " ", "⠔"],
symbols: ["🬋", " ", "⠔"],
track_style: (fg: "blue"),
elapsed_style: (fg: "blue"),
thumb_style: (fg: "blue"),

View File

@@ -224,8 +224,14 @@ error-message {
}
configuration {
kb-mode-next: "Shift+Right,Control+Tab,L";
kb-mode-previous: "Shift+Left,H";
kb-page-prev: "K";
kb-page-next: "J";
kb-row-left: "H";
kb-row-right: "L";
kb-mode-next: "Shift+Right,Control+Tab,N";
kb-mode-previous: "Shift+Left,M";
kb-row-up: "K,Up";
kb-row-down: "J,Down";
me-select-entry: "";
me-accept-entry: "!MousePrimary";
kb-cancel: "MousePrimary,Escape";
hover-select: true;
}

View File

@@ -100,8 +100,15 @@ element-text, element-icon {
}
configuration {
kb-row-left: "h,H";
kb-row-right: "l,L";
kb-row-down: "j,J";
kb-row-up: "k,K";
kb-move-char-back: "";
kb-move-char-forward: "";
kb-row-left: "h,H,Left";
kb-row-down: "j,J,Down";
kb-row-up: "k,K,Up";
kb-row-right: "l,L,Right";
me-select-entry: "";
me-accept-entry: "!MousePrimary";
kb-cancel: "MousePrimary,Escape";
hover-select: true;
}

View File

@@ -101,8 +101,15 @@ element-text, element-icon {
}
configuration {
kb-row-left: "h,H";
kb-row-down: "j,J";
kb-row-up: "k,K";
kb-row-right: "l,L";
kb-move-char-back: "";
kb-move-char-forward: "";
kb-row-left: "h,H,Left";
kb-row-down: "j,J,Down";
kb-row-up: "k,K,Up";
kb-row-right: "l,L,Right";
me-select-entry: "";
me-accept-entry: "!MousePrimary";
kb-cancel: "MousePrimary,Escape";
hover-select: true;
}

View File

@@ -128,8 +128,15 @@ element-text, element-icon {
}
configuration {
kb-row-left: "h,H";
kb-row-down: "j,J";
kb-row-up: "k,K";
kb-row-right: "l,L";
kb-move-char-back: "";
kb-move-char-forward: "";
kb-row-left: "h,H,Left";
kb-row-down: "j,J,Down";
kb-row-up: "k,K,Up";
kb-row-right: "l,L,Right";
me-select-entry: "";
me-accept-entry: "!MousePrimary";
kb-cancel: "MousePrimary,Escape";
hover-select: true;
}

View File

@@ -27,20 +27,27 @@
"keyboard-shortcuts": true,
"notification-grouping": false,
"image-visibility": "when-available",
"show-per-app-icon": true,
"transition-time": 100,
"hide-on-clear": false,
"hide-on-action": true,
"text-empty": "No nothing",
"text-empty": "No disturbances",
"script-fail-notify": true,
"scripts": {
"example-script": {
"exec": "echo 'Do something...'",
"notification-sound-low": {
"exec": "sh $HOME/.config/swaync/scripts/sound.sh low",
"app-name": "^(?!.*AyuGram).*$",
"urgency": "Low"
},
"notification-sound-normal": {
"exec": "sh $HOME/.config/swaync/scripts/sound.sh normal",
"app-name": "^(?!.*AyuGram).*$",
"urgency": "Normal"
},
"example-action-script": {
"exec": "echo 'Do something actionable!'",
"urgency": "Normal",
"run-on": "action"
"notification-sound-critical": {
"exec": "sh $HOME/.config/swaync/scripts/sound.sh critical",
"app-name": "^(?!.*AyuGram).*$",
"urgency": "Critical"
}
},
"notification-visibility": {
@@ -53,9 +60,6 @@
"widgets": [
"menubar",
"buttons-grid",
"volume",
"slider#brightness",
"slider#cpu",
"inhibitors",
"title",
"notifications",

46
swaync/scripts/sound.sh Executable file
View File

@@ -0,0 +1,46 @@
#!/bin/bash
if [ $(swaync-client --get-dnd) == "true" ]; then
echo "Do Not Disturb is on, skipping sound"
exit 0
fi
SOUND_LOW_DIR="$HOME/.config/swaync/scripts/sounds/low"
SOUND_NORMAL_DIR="$HOME/.config/swaync/scripts/sounds/normal"
SOUND_CRITICAL_DIR="$HOME/.config/swaync/scripts/sounds/critical"
case $1 in
low)
DIR=$SOUND_LOW_DIR
;;
normal)
DIR=$SOUND_NORMAL_DIR
;;
critical)
DIR=$SOUND_CRITICAL_DIR
;;
*)
echo "Unknown urgency level '$1'"
exit 1
;;
esac
# Enable nullglob to prevent literal interpretation when no files match
shopt -s nullglob
SOUND_FILES=()
for ext in wav mp3 ogg flac; do
SOUND_FILES+=("$DIR"/*."$ext")
done
if [ ${#SOUND_FILES[@]} -eq 0 ]; then
echo "No sound files found in $SOUND_NORMAL_DIR"
exit 0
fi
RANDOM_INDEX=$((RANDOM % ${#SOUND_FILES[@]}))
RANDOM_SOUND="${SOUND_FILES[$RANDOM_INDEX]}"
play -v 0.5 "$RANDOM_SOUND" 2>/dev/null || {
echo "Failed to play $RANDOM_SOUND"
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -20,6 +20,8 @@
--button-top: #505050;
--button-on-top: #CE5268;
--button-off: #2e2d31;
--accent: #E83C82;
}
* {
@@ -30,7 +32,7 @@
button {
background: none;
background-color: var(--button-off);
border-top: 1.5px solid var(--button-top);
border-top: 1px solid var(--button-top);
border-radius: 15px;
}
@@ -66,12 +68,12 @@ button:hover {
}
.notification-row .notification-background {
padding: 6px 12px;
padding: 6px 15px;
}
.notification-row .notification-background .notification {
/* The actual notification */
border-radius: 12px;
border-radius: 15px;
border: 1px solid var(--noti-border-color);
padding: 0;
transition: background 0.15s ease-in-out;
@@ -88,18 +90,35 @@ button:hover {
.notification-row .notification-background .notification.critical {
/* Critical Priority Notification */
border-color: var(--accent);
}
/* Critical Priority Notification */
.notification-row .notification-background .notification.critical .notification-default-action .notification-content .text-box .summary {
color: var(--accent);
text-shadow: 0px 0px 8px var(--accent);
}
.notification-row .notification-background .notification.critical .notification-default-action .notification-content .text-box .summary {
color: var(--accent);
text-shadow: 0px 0px 8px var(--accent);
}
.notification-row .notification-background .notification.critical .notification-default-action .notification-content .text-box .body {
color: var(--accent);
text-shadow: 0px 0px 8px var(--accent);
}
.notification-row .notification-background .notification .notification-default-action {
/* The large action that also displays the notification summary and body */
padding: 4px;
padding: 10px;
margin: 0;
box-shadow: none;
background: transparent;
border: none;
color: var(--text-color);
transition: background 0.15s ease-in-out;
border-radius: 12px;
border-radius: 15px;
}
.notification-row:focus .notification-background .notification .notification-default-action {
@@ -118,7 +137,7 @@ button:hover {
.notification-row .notification-background .notification .notification-default-action .notification-content {
background: transparent;
border-radius: 12px;
border-radius: 15px;
padding: 0;
}
@@ -194,14 +213,14 @@ button:hover {
color: var(--text-color);
caret-color: var(--text-color);
border: 1px solid var(--noti-border-color);
border-radius: 12px;
border-radius: 15px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button {
margin-left: 4px;
background: rgba(var(--noti-bg), var(--noti-bg-alpha));
border: 1px solid var(--noti-border-color);
border-radius: 12px;
border-radius: 15px;
color: var(--text-color);
}
@@ -218,8 +237,8 @@ button:hover {
.notification-row .notification-background .notification .notification-alt-actions {
background: none;
border-bottom-left-radius: 12px;
border-bottom-right-radius: 12px;
border-bottom-left-radius: 15px;
border-bottom-right-radius: 15px;
padding: 4px;
}
@@ -230,7 +249,7 @@ button:hover {
}
.notification-row .notification-background .notification .notification-action > button {
border-radius: 12px;
border-radius: 15px;
}
.notification-group {
@@ -256,7 +275,7 @@ button:hover {
}
.notification-group .notification-group-close-button .close-button {
margin: 12px 20px;
margin: 15px 20px;
}
.notification-group .notification-group-buttons, .notification-group .notification-group-headers {
@@ -363,7 +382,7 @@ button:hover {
.widget-title > button {
margin: 0px;
border-radius: 12px;
border-radius: 15px;
}
/* DND widget */
@@ -374,7 +393,7 @@ button:hover {
}
.widget-dnd switch {
border-radius: 12px;
border-radius: 15px;
margin: 8px;
}
@@ -384,7 +403,7 @@ button:hover {
.widget-dnd switch slider {
border-radius: 12px;
border-radius: 15px;
}
/* Label widget */
@@ -410,7 +429,7 @@ button:hover {
.widget-mpris .widget-mpris-player {
margin: 16px 20px;
border-radius: 12px;
border-radius: 15px;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75);
}
@@ -429,7 +448,7 @@ button:hover {
}
.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-album-art {
border-radius: 12px;
border-radius: 15px;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75);
-gtk-icon-size: var(--mpris-album-art-icon-size);
}
@@ -464,11 +483,11 @@ button:hover {
min-height: 50px;
padding: 8px;
margin: 8px;
border-radius: 12px;
border-radius: 15px;
}
.widget-buttons-grid flowboxchild > button {
border-radius: 12px;
border-radius: 15px;
height: auto;
}
@@ -495,13 +514,13 @@ button:hover {
.widget-buttons-grid flowboxchild > button.toggle:checked {
/* style given to the active toggle button */
background-color: var(--noti-bg-selection);
border-top: 1.5px solid var(--button-on-top);
border-top: 1px solid var(--button-on-top);
}
.widget-buttons-grid flowboxchild > button.toggle:hover {
/* style given to the active toggle button */
background-color: var(--bg-selected);
border-top: 1.5px solid var(--button-on-top);
border-top: 1px solid var(--button-on-top);
}
.widget-menubar > .menu-button-bar > .start {
@@ -513,7 +532,7 @@ button:hover {
}
.widget-menubar > .menu-button-bar > .widget-menubar-container button {
border-radius: 12px;
border-radius: 15px;
padding: 0px 15px;
margin: 0 4px;
background-color: var(--noti-bg-selection);
@@ -536,7 +555,7 @@ button:hover {
}
.widget-menubar > revealer button {
border-radius: 12px;
border-radius: 15px;
margin: 8px;
margin-top: 0;
}
@@ -553,7 +572,7 @@ button:hover {
.widget-volume {
padding: 8px;
margin: 8px;
border-radius: 12px;
border-radius: 15px;
}
.widget-volume label:first-child {
@@ -573,14 +592,14 @@ button:hover {
background-color: var(--noti-bg-alt);
padding: 4px 8px 8px 8px;
margin: 0px 8px 8px 8px;
border-radius: 12px;
border-radius: 15px;
}
/* Slider widget */
.widget-slider {
padding: 8px;
margin: 8px;
border-radius: 12px;
border-radius: 15px;
}
.widget-slider trough highlight {
@@ -595,7 +614,7 @@ button:hover {
.widget-backlight {
padding: 8px;
margin: 8px;
border-radius: 12px;
border-radius: 15px;
}
/* Inhibitors widget */
@@ -606,7 +625,7 @@ button:hover {
.widget-inhibitors > button {
margin: 8px;
border-radius: 12px;
border-radius: 15px;
}
.notification-row:parent {

View File

@@ -1,293 +0,0 @@
// -*- mode: jsonc -*-
{
//"output": "eDP-1",
"output": [
"eDP-1",
"HDMI-A-1"
],
// "layer": "top", // Waybar at top layer
// "position": "bottom", // Waybar position (top|bottom|left|right)
"height": 30, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
"spacing": 0, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": [
"hyprland/workspaces",
"custom/pomodoro"
// "custom/submap"
],
"modules-center": [
"mpd"
],
"modules-right": [
"cpu",
"memory",
"memory#swap",
"pulseaudio",
"battery",
"network",
"tray",
"clock"
],
// Modules configuration
"hyprland/workspaces": {
"disable-scroll": true,
"all-outputs": false,
"active-only": true,
"warp-on-scroll": false,
"persistent-workspaces": {
// "1": [],
// "2": [],
// "3": [],
// "4": [],
// "5": [],
// "6": [],
// "7": [],
// "8": [],
// "9": [],
// "10": [],
// "11": [],
// "12": []
"eDP-1": [1,2,3,4,5,6,7,8,9],
"HDMI-A-1": [10,11,12],
"FUCKOFF": [13,14]
},
"ignore-workspaces": [
"*13",
"*14"
],
"format": "{icon}",
"format-icons": {
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"10": "0",
"11": "-",
"12": "+",
"default": "",
"empty": ""
}
},
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"hyprland/language": {
"format-ru": "RU",
"format-en": "EN"
},
"hyprland/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"hyprland/scratchpad": {
"format": "{icon} {count}",
"show-empty": false,
"format-icons": ["", ""],
"tooltip": true,
"tooltip-format": "{app}: {title}"
},
"mpd": {
"password": "kapuchinamusica",
"artist-len": 30,
"title-len": 65,
"unknown-tag": "n/a",
"format": "{stateIcon} {titleSmart}",
"interval": 1,
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)",
"format-stopped": " Stopping player...",
"on-click": "mpc toggle --password kapuchinamusica"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
// "icon-size": 21,
"spacing": 10,
"icons": {
"blueman": "bluetooth",
"*": "folder-symbolic"
}
},
"clock": {
// "timezone": "America/New_York",
"interval": 5,
"tooltip-format": "<big>{:%A ( %B %d )}</big>\n<tt><small>{calendar}</small></tt>",
"format": "{:%H:%M:%S}",
"format-alt": "{:%Y-%m-%d}",
"calendar": {
"mode": "year",
"mode-mon-col": 3,
"weeks-pos": "right",
"format": {
"months": "<span color='#ffead3'><b>{}</b></span>",
"days": "<span color='#ac8699'><b>{}</b></span>",
"weeks": "<span color='#BC4056'><b>W{}</b></span>",
"weekdays": "<span color='#F8B5CE'><b>{}</b></span>",
"today": "<span color='#00FFFF'><b><u>{}</u></b></span>"
}
},
"actions": {
"on-click-right": "mode"
}
},
"cpu": {
"format": "{max_frequency:1.2f}GHz 󰓅 {usage}%",
"tooltip": false,
"interval": 10,
"format-icons": [
"󰄰", "󰪞", "󰪟", "󰪠", "󰪡", "󰪢", "󰪣", "󰪤", "󰪥"
]
},
"memory": {
"format": "󰧑 {percentage}%",
"interval": 10,
"format-icons": [
"󰄰", "󰪞", "󰪟", "󰪠", "󰪡", "󰪢", "󰪣", "󰪤", "󰪥"
]
},
"memory#swap": {
"format": "󰋊 {swapPercentage}%",
"interval": 10,
"format-icons": [
"󰄰", "󰪞", "󰪟", "󰪠", "󰪡", "󰪢", "󰪣", "󰪤", "󰪥"
]
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{temperatureC}°C {icon}",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": "{percent} {icon}",
"format-icons": ["", "", "", "", "", "", "", "", ""]
},
"battery": {
"full-at": 98,
"states": {
"good": 85,
"warning": 30,
"critical": 18
},
"format": "{icon} {capacity}%",
"format-full": "{icon} {capacity}%",
"format-charging": "{icon}󱐋{capacity}%",
"format-plugged": "{icon} {capacity}%",
"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
"format-full": "󱈏",
"format-icons": ["󰂎", "", "", "󰁽", "", "󰁿", "", "󰂁", "󰂂", ""],
"tooltip-format": "{capacity}%, draws {power:2.1f}W, time is {time}"
},
"battery#bat2": {
"bat": "BAT2"
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "󰓅",
"performance": "󰓅",
"balanced": "󰾅",
"power-saver": "󰾆"
}
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": "{icon}",
"format-ethernet": "{ipaddr}/{cidr} ",
"tooltip-format": "{essid} {ifname} via {gwaddr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "󰤫",
"format-icons": [
"󰤯", "󰤟", "󰤢", "󰤥", "󰤨"
],
"on-click": "hyprctl dispatch exec, [float; move center] kitty -e nmtui"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{format_source} {volume}%",
"format-bluetooth": "{format_source}󰂰 {volume}%",
"format-bluetooth-muted": "{format_source} 󰂲",
"format-muted": "󰖁",
"format-source": "",
"format-source-muted": " ",
"format-icons": [
"󰄰", "󰪞", "󰪟", "󰪠", "󰪡", "󰪢", "󰪣", "󰪤", "󰪥"
],
"on-click": "pwvucontrol"
},
"custom/submap": {
"format": "{icon} {text}",
"max-length": 10,
"format-icons": {
"default": "󰥻"
},
"interval": 1,
"exec": "state=$(hyprctl submap) && [[ $state != 'default' ]] && echo $state",
"on-click": "hyprctl dispatch submap reset"
},
"custom/media": {
"format": "{icon} {text}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"custom/pomodoro": {
"format": "{}",
"return-type": "json",
"exec": "~/.local/bin/waybar-module-pomodoro --persist -w 20 -s 5 -l 20 -i 3 --autob",
"on-click": "~/.local/bin/waybar-module-pomodoro toggle",
"on-click-right": "~/.local/bin/waybar-module-pomodoro reset"
},
"custom/goal": {
"exec": "cat $HOME/.config/waybar/goal.txt",
"format": "󱓧 {}",
"interval": 60
},
"custom/power": {
"format" : "⏻ ",
"tooltip": false,
"menu": "on-click",
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
"menu-actions": {
"shutdown": "shutdown",
"reboot": "reboot",
"suspend": "systemctl suspend",
"hibernate": "systemctl hibernate"
}
}
}

143
waybar/config_bottom.jsonc Normal file
View File

@@ -0,0 +1,143 @@
// -*- mode: jsonc -*-
{
"output": [
"eDP-1",
"HDMI-A-1"
],
"height": 30,
"margin-left": 5,
"margin-right": 5,
"margin-bottom": 5,
"position": "bottom",
"layer": "top",
"spacing": 0,
"reload_style_on_change": true,
"modules-left": [
"tray"
// "custom/pomodoro"
],
"modules-center": [
"wlr/taskbar",
"custom/launcher"
],
"modules-right": [
"battery",
"cpu",
"memory",
"temperature"
],
"custom/separator": {
"format": " ",
"interval": "once",
"tooltip": false
},
"custom/launcher": {
"format": "󱗼",
"interval": "once",
"on-click": "$HOME/.config/rofi/launchers/type-1/launcher.sh",
"tooltip-format": "Open launcher"
},
"tray": {
"icon-size": 18,
"spacing": 10,
"icons": {
"blueman": "bluetooth",
"TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
}
},
"wlr/taskbar": {
"all-outputs": false,
"format": "{icon}",
"icon-size": 24,
"icon-theme": "GreyStone",
"tooltip-format": "{title}",
"on-click": "activate",
"on-click-middle": "close",
"active-first": false,
"sort-by-app-id": true,
"ignore-list": [
"Alacritty"
],
"app_ids-mapping": {
"zen": "aaa",
"vesktop": "zzz"
},
"rewrite": {
".*(steam_app_[0-9]+).*": "Game"
}
},
"battery": {
"interval": 5,
"format": "{power:.0f}W |",
"on-click": "sh -c 'swaync-client -cp & ~/.config/rofi/scripts/dmenu_powermodemenu.sh'"
},
"cpu": {
"format": "{icon}",
"tooltip": true,
"interval": 3,
"format-icons": [
"󰄰", "󰪞", "󰪟", "󰪠", "󰪡", "󰪢", "󰪣", "󰪤", "󰪥"
],
"states": {
"s1": 0,
"s2": 10,
"s3": 30,
"s4": 50,
"s5": 70
},
"on-click": "kitty btop"
},
"memory": {
"format": "{icon}",
"interval": 3,
"format-icons": [
"󰄰", "󰪞", "󰪟", "󰪠", "󰪡", "󰪢", "󰪣", "󰪤", "󰪥"
],
"states": {
"s1": 20,
"s2": 30,
"s3": 50,
"s4": 60,
"s4": 70
},
"tooltip-format": "{used:0.1f}GiB used",
"tooltip": true,
"on-click": "kitty btop"
},
"temperature": {
"format": "{icon}",
"interval": 10,
"format-icons": [
"󰄰", "󰄰", "󰄰", "󰄰", "󰄰", "󰪞", "󰪟", "󰪠", "󰪡", "󰪢", "󰪣", "󰪤", "󰪥"
],
"warning-threshold": 60,
"critical-threshold": 80,
"on-click": "kitty btop"
},
"mpd": {
"password": "kapuchinamusica",
"artist-len": 30,
"title-len": 31,
"unknown-tag": "n/a",
"format": "{stateIcon} {titleSmart}",
"interval": 1,
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)",
"format-stopped": "Stopping player...",
"on-click": "mpc toggle --password kapuchinamusica"
},
"custom/pomodoro": {
"format": "{}",
"return-type": "json",
"exec": "~/.local/bin/waybar-module-pomodoro --persist -w 20 -s 5 -l 20 -i 3 -p '' -a '' --autob",
"on-click": "~/.local/bin/waybar-module-pomodoro toggle",
"on-click-right": "~/.local/bin/waybar-module-pomodoro reset"
}
}

190
waybar/config_top.jsonc Normal file
View File

@@ -0,0 +1,190 @@
// -*- mode: jsonc -*-
{
"output": [
"eDP-1",
"HDMI-A-1"
],
"height": 30,
"margin-left": 5,
"margin-right": 5,
"margin-top": 5,
"layer": "top",
"spacing": 0,
"reload_style_on_change": true,
"modules-left": [
"mpd"
],
"modules-center": [
"hyprland/workspaces"
],
"modules-right": [
"pulseaudio",
"pulseaudio/slider",
"battery",
"network",
"clock"
],
"tray": {
"icon-size": 18,
"spacing": 10,
"icons": {
"blueman": "bluetooth",
"TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
}
},
"hyprland/workspaces": {
"disable-scroll": true,
"all-outputs": false,
"active-only": false,
"warp-on-scroll": false,
"move-to-monitor": true,
"persistent-workspaces": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": [],
"6": [],
"7": [],
"8": [],
"9": [],
"10": [],
"11": [],
"12": [],
// "eDP-1": [1,2,3,4,5,6,7,8,9],
// "HDMI-A-1": [10,11,12],
"IGNORED": [13,14]
},
"ignore-workspaces": [
"13",
"14"
],
"format": "{icon}",
"format-icons": {
"1": "󰆋",
"2": "",
"3": "󰄫",
"4": "󰅡",
"5": "󰐌",
"6": "󰲪",
"7": "󰓓",
"8": "",
"9": "󱡝",
"10": "󰥱",
"11": "󰍶",
"12": "󰐗",
"default": "󰽢"
}
},
"mpd": {
// "password": "kapuchinamusica",
"artist-len": 30,
"title-len": 50,
"unknown-tag": "n/a",
"format": "{stateIcon} {titleSmart}",
"interval": 1,
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected) | MMB - toggle, LMB/RMB - next/prev, scroll - volume",
"tooltip-format-disconnected": "MPD (disconnected) | MMB - toggle, LMB/RMB - next/prev, scroll - volume",
"format-stopped": " Stopping player...",
"on-click-right": "mpc next",
"on-click-middle": "mpc prev",
"on-click": "mpc toggle",
"on-scroll-down": "mpc volume +1",
"on-scroll-up": "mpc volume -1"
},
"mpris": {
"format": "{player_icon} {dynamic}",
"format-paused": "{status_icon} <i>{dynamic}</i>",
"dynamic-order": ["artist", "title"],
"player-icons": {
"default": "▶"
},
"status-icons": {
"paused": "⏸"
}
},
"clock": {
"timezone": "Europe/Moscow",
"interval": 5,
"tooltip-format": "<big>{:%A ( %B %d )}</big>\n<tt><small>{calendar}</small></tt>",
"format": "{:%H:%M}",
"format-alt": "{:%H:%M %d.%m.%Y}",
"calendar": {
"mode": "year",
"mode-mon-col": 3,
"weeks-pos": "right",
"format": {
"months": "<span color='#ffead3'><b>{}</b></span>",
"days": "<span color='#ac8699'><b>{}</b></span>",
"weeks": "<span color='#BC4056'><b>W{}</b></span>",
"weekdays": "<span color='#F8B5CE'><b>{}</b></span>",
"today": "<span color='#00FFFF'><b><u>{}</u></b></span>"
}
},
"actions": {
"on-click-right": "mode"
}
},
"battery": {
"full-at": 98,
"states": {
"good": 85,
"warning": 30,
"critical": 18
},
"format": "{icon}",
"format-full": "󱈏",
"format-charging": "{icon}󱐋",
"format-plugged": "{icon}",
"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
"format-icons": ["󰂎", "", "", "󰁽", "", "󰁿", "", "󰂁", "󰂂"],
"tooltip-format": "{capacity}%, draws {power:2.1f}W, time is {time}",
"on-click": "gnome-power-statistics"
},
"network": {
"format-wifi": "{icon}",
"format-ethernet": "{ipaddr}/{cidr} ",
"tooltip-format": "{essid} {ifname} via {gwaddr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "󰤫",
"format-icons": [
"󰤯", "󰤟", "󰤢", "󰤥", "󰤨"
],
"on-click": "kitty nmtui-connect"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{format_source} ",
"format-muted": "{format_source} ",
"format-bluetooth": "{format_source} 󰂰",
"format-bluetooth-muted": "{format_source} 󰂲",
"format-source": "󰍬",
"format-source-muted": "󰍭",
"on-click": "pwvucontrol"
},
"pulseaudio/slider": {
"min": 0,
"max": 100,
"orientation": "horizontal"
},
"custom/separator_invisible": {
"format": " ",
"interval": "once",
"tooltip": false
},
"custom/pomodoro": {
"format": "{}",
"return-type": "json",
"exec": "~/.local/bin/waybar-module-pomodoro --persist -w 20 -s 5 -l 20 -i 3 -p '' -a '' --autob",
"on-click": "~/.local/bin/waybar-module-pomodoro toggle",
"on-click-right": "~/.local/bin/waybar-module-pomodoro reset"
}
}

47
waybar/run.sh Executable file
View File

@@ -0,0 +1,47 @@
#!/bin/bash
DIR="$HOME/.config/waybar"
TOP_CONFIG="$DIR/config_top.jsonc"
TOP_STYLE="$DIR/style/style_top.css"
BOTTOM_CONFIG="$DIR/config_bottom.jsonc"
BOTTOM_STYLE="$DIR/style/style_bottom.css"
DOCK_CONFIG="$DIR/config_dock.jsonc"
DOCK_STYLE="$DIR/style/style_dock.css"
kill_bars() {
if pgrep waybar > /dev/null; then
pkill waybar
return 0
fi
return 1
}
run_bars() {
waybar -c "$TOP_CONFIG" -s "$TOP_STYLE" &
waybar -c "$BOTTOM_CONFIG" -s "$BOTTOM_STYLE" &
waybar -c "$DOCK_CONFIG" -s "$DOCK_STYLE" &
return 0
}
case "$1" in
"")
kill_bars
run_bars
;;
toggle)
kill_bars
if [ $? -eq 1 ]; then
run_bars
fi
;;
kill)
kill_bars
;;
*)
echo "Usage: $0 [toggle | kill]"
exit 1
;;
esac

View File

@@ -1,314 +0,0 @@
/* GTK Color Definitions */
@define-color bg-primary rgba(28, 28, 28, 0.81);
@define-color bg-secondary rgba(28, 28, 28, 0.81);
@define-color bg-opaque rgba(23, 28, 39, 0.8);
@define-color border-color rgba(90, 104, 115, 1);
@define-color text-primary #ffffff;
@define-color text-secondary #888888;
@define-color accent-color #E96375;
@define-color accent-alt #faa7b3;
@define-color attention #FFFF00;
@define-color warning #FFAA00;
@define-color warning-alt #FFDDAA;
@define-color danger #FF0000;
@define-color success #00FF00;
@define-color success-alt #AAFFAA;
@define-color info #CCEEFF;
* {
font-family: "Iosevka Nerd Font Propo";
font-size: 15px;
}
/* Window */
window#waybar {
background-color: transparent;
color: @text-primary;
transition-property: background-color;
transition-duration: 0.5s;
}
window#waybar.hidden {
opacity: 0.2;
}
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
/* Common module styling - applied to most modules */
#mpd,
#custom-pomodoro,
#custom-goal,
#custom-submap,
#cpu,
#memory,
#memory.swap,
#disk,
#clock,
#battery,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad {
background: linear-gradient(to bottom, @bg-primary, @bg-secondary);
border: 1px solid @border-color;
border-top: none;
padding: 0 10px;
color: @text-primary;
transition: color 0.3s ease, border-color 0.3s ease, background 0.3s ease;
}
/* Workspaces */
#workspaces {
background: linear-gradient(to bottom, @bg-primary, @bg-secondary);
border-right: 1px solid @border-color;
border-bottom: 1px solid @border-color;
border-radius: 0 0 10px 0;
margin-right: 10px;
padding-right: 5px;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: @text-primary;
border: none;
border-radius: 0;
box-shadow: inset 0 -3px transparent;
}
#workspaces button.empty {
color: @text-secondary;
}
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
box-shadow: inset 0 -3px @text-primary;
}
#workspaces button.active.hosting-monitor {
background-color: rgba(0, 0, 0, 0.32);
box-shadow: inset 0 -3px @accent-color;
color: @accent-color;
animation: hover 0.8s 1;
}
#workspaces button.urgent {
color: @bg-opaque;
font-weight: 700;
background-color: @attention;
box-shadow: inset 0 -13px @attention;
transition: color 0.5s, box-shadow 0.5s, background 0.5s;
}
/* Side Module Groups */
.modules-left {
border-left: none;
border-radius: 0 0 10px 0;
}
.modules-right {
border-right: none;
border-radius: 0 0 0 10px;
}
/* System Modules - specific border adjustments */
#cpu,
#memory,
#memory.swap {
margin: 0;
}
#cpu {
margin-left: 20px;
border-right: none;
border-radius: 0 0 0 10px;
}
#memory {
border-left: none;
border-right: none;
}
#memory.swap {
border-left: none;
border-radius: 0 0 10px 0;
}
/* Custom Modules */
#custom-pomodoro,
#custom-goal {
color: @warning-alt;
margin: 0 20px;
}
#custom-pomodoro {
border-radius: 0 0 10px 10px;
}
#custom-goal {
margin: 0;
border-left: none;
border-radius: 0 0 10px 0;
}
#custom-submap {
color: @accent-color;
border-radius: 0 0 10px 10px;
}
/* Pomodoro States */
#custom-pomodoro.break {
color: @success;
box-shadow: inset 0 -3px @success;
}
#custom-pomodoro.pause {
color: @warning;
box-shadow: inset 0 -3px @warning;
}
#custom-pomodoro.break + #custom-goal,
#custom-pomodoro.pause + #custom-goal {
color: inherit;
box-shadow: inherit;
}
/* System Info Modules */
#cpu,
#memory,
#memory.swap,
#disk {
color: @info;
}
/* Standard Modules - border adjustments */
#clock,
#battery,
#temperature,
#backlight,
#network,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad {
border-left: none;
border-right: none;
}
#pulseaudio {
border-left: 1px solid @border-color;
border-right: none;
border-radius: 0 0 0 10px;
margin-left: 20px;
}
/* MPD specific styles */
#mpd {
border-radius: 0 0 10px 10px;
transition: color 2s, border-color 2s, background 2s;
}
#mpd.playing {
color: @accent-alt;
}
#mpd.stopped {
border-color: transparent;
background: transparent;
color: transparent;
}
/* Hover Effects */
#mpd.playing:hover,
#mpd.paused:hover,
#clock:hover,
#battery:hover,
#disk:hover,
#temperature:hover,
#backlight:hover,
#network:hover,
#pulseaudio:hover,
#wireplumber:hover,
#custom-media:hover,
#mode:hover,
#idle_inhibitor:hover,
#scratchpad:hover,
#power-profiles-daemon:hover {
color: @accent-color;
transition: color 0.3s, box-shadow 0.3s, background 0.3s;
}
/* Battery States */
#battery.charging,
#battery.plugged {
color: @success-alt;
box-shadow: inset 0 -3px @success-alt;
}
#battery.warning:not(.charging) {
color: @warning;
border-bottom: 3px solid @warning;
}
#battery.critical:not(.charging) {
color: @danger;
border-bottom: 3px solid @danger;
}
/* Power Profiles */
#power-profiles-daemon {
color: @text-primary;
font-size: 17px;
padding: 0 7px 0 12px;
}
/* Warning States */
#temperature.critical,
#idle_inhibitor.activated {
animation: blink-warning 2s infinite;
}
/* Tray */
#tray > .needs-attention {
-gtk-icon-effect: highlight;
animation: blink-attention 2s infinite;
}
/* Animations */
@keyframes hover {
0% { color: @text-primary; }
100% { color: @accent-color; }
}
/* Layout Utilities */
#window,
#workspaces {
margin: 0 0px;
}
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#mode {
box-shadow: inset 0 -3px @text-primary;
}

13
waybar/style/colors.css Normal file
View File

@@ -0,0 +1,13 @@
/* Normal view */
@define-color bg-panel rgba(28, 28, 28, 0.81);
@define-color text-secondary rgba(86, 86, 86, 0.81);
@define-color bg-opaque rgba(23, 28, 39, 0.8);
@define-color border-color-section rgba(0,0,0,0);
@define-color border-color rgba(90, 104, 115, 0.8); /* Matches --noti-border-color */
@define-color text-primary #ffffff;
@define-color text-secondary alpha(@text-primary,.2);
@define-color accent #E83C82;
@define-color attention #FFFF00;
@define-color warning #FFAA00;
@define-color danger #FF0000;
@define-color success #00FF00;

View File

@@ -0,0 +1,387 @@
/* --------------------------------------------------------------------------
IMPORTS & GLOBAL STYLES
-------------------------------------------------------------------------- */
@import "colors.css";
/* --------------------------------------------------------------------------
BASE CONTAINER
-------------------------------------------------------------------------- */
window#waybar {
/* Layout & Box Model */
/* border: 1px solid @border-color; */
/* border-bottom: none; */
/* border-radius: 10px 10px 0 0; */
/* Typography */
font-family: "Iosevka Nerd Font Propo";
font-size: 15px;
/* Colors */
background-color: transparent;
/* color: @text-primary; */
/* Effects & Transitions */
/* transition-property: background-color; */
/* transition-duration: 0.5s; */
}
/* Window States */
window#waybar.hidden {
opacity: 0.2;
}
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
/* --------------------------------------------------------------------------
MODULE COMMON STYLES
-------------------------------------------------------------------------- */
/* Common styling applied to all modules */
#mpd,
#custom-pomodoro,
#clock,
#battery,
#network,
#pulseaudio,
#pulseaudio-slider,
#custom-separator,
#custom-launcher,
#tray,
#taskbar,
#cpu,
#memory,
#temperature,
#scratchpad {
padding: 0 10px;
color: @text-primary;
transition: color 0.3s ease, text-shadow 0.3s ease, background 0.3s ease, padding 0.3s ease;
}
/* --------------------------------------------------------------------------
WORKSPACES
-------------------------------------------------------------------------- */
#workspaces {
font-size: 18px;
background-color: transparent;
}
#workspaces button {
padding: 0 6px;
min-width: 20px;
background-color: transparent;
color: alpha(@accent, 0.5);
border: none;
border-radius: 0;
}
/* Workspace States */
#workspaces button.empty {
color: @text-secondary;
}
#workspaces button.active.hosting-monitor {
color: @accent;
text-shadow: 0px 0px 8px @accent;
animation: hover 0.8s 1;
}
#workspaces button.urgent {
color: @attention;
font-weight: 700;
text-shadow: 0px 0px 8px @attention;
transition: color 0.5s, box-shadow 0.5s, background 0.5s;
}
#workspaces button:hover {
color: @foreground;
background-color: transparent;
text-shadow: 0px 0px 2px rgba(233, 99, 117, 1);
}
/* --------------------------------------------------------------------------
TASKBAR
-------------------------------------------------------------------------- */
#taskbar {
padding-right: 0;
}
#taskbar button {
padding: 0 5px;
min-height: 20px;
min-width: 20px;
}
#taskbar image {
min-width: 20px;
min-height: 20px;
}
#taskbar.empty {
padding: 0;
}
/* --------------------------------------------------------------------------
BATTERY
-------------------------------------------------------------------------- */
#battery {
padding-right: 0;
}
/* --------------------------------------------------------------------------
CPU
-------------------------------------------------------------------------- */
#cpu {
font-size: 20px;
}
/* --------------------------------------------------------------------------
MEMORY
-------------------------------------------------------------------------- */
#memory {
font-size: 20px;
padding: 0;
}
/* --------------------------------------------------------------------------
TEMPERATURE
-------------------------------------------------------------------------- */
#temperature {
font-size: 20px;
}
/* --------------------------------------------------------------------------
SIDE PANEL GROUPS
-------------------------------------------------------------------------- */
.modules-left, .modules-right {
/* Layout & Box Model */
border: 1px solid @border-color;
border-radius: 15px;
/* Colors */
background-color: @bg-panel;
/* color: @text-primary; */
/* Effects & Transitions */
/* transition-property: background-color; */
/* transition-duration: 0.5s; */
}
.modules-center {
background:
/* Top border gradient */
linear-gradient(to right,
transparent 0%,
@border-color 25%,
@border-color 75%,
transparent 100%
) 0 0 / 100% 1px no-repeat,
/* Bottom border gradient */
linear-gradient(to right,
transparent 0%,
@border-color 25%,
@border-color 75%,
transparent 100%
) 0 100% / 100% 1px no-repeat,
/* Main background */
linear-gradient(to right,
alpha(#000000, 0) 0%,
alpha(@bg-panel, 1) 25%,
alpha(@bg-panel, 1) 75%,
alpha(#000000, 0) 100%
);
padding: 0 20px;
}
.modules-left {
}
.modules-right {
}
/* --------------------------------------------------------------------------
AUDIO CONTROL MODULES
-------------------------------------------------------------------------- */
#pulseaudio {
padding-right: 0;
border-right: none;
}
#pulseaudio-slider slider {
min-height: 0px;
min-width: 0px;
opacity: 0;
background-image: none;
border: none;
box-shadow: none;
}
#pulseaudio-slider trough {
min-height: 10px;
min-width: 25px;
border-radius: 5px;
background: alpha(@text-primary, 0.2);
}
#pulseaudio-slider highlight {
min-width: 10px;
border-radius: 5px;
background: @text-primary;
}
/* --------------------------------------------------------------------------
CUSTOM MODULES
-------------------------------------------------------------------------- */
#custom-pomodoro {
color: @text-secondary;
border-radius: 0 0 10px 10px;
}
#custom-launcher {
font-size: 23px;
}
/* --------------------------------------------------------------------------
STATE-BASED STYLES
-------------------------------------------------------------------------- */
/* TASKBAR STATES */
#taskbar button {
transition: none;
}
#taskbar button.active {
background: radial-gradient(circle, alpha(@text-primary, 1) 0%, alpha(@text-primary, 1) 30%, rgba(0, 0, 0, 0) 70%, rgba(0, 0, 0, 0) 100%);
transition: color 0.3s, box-shadow 0.3s, background 0.3s;
}
#taskbar button.active image {
min-width: 24px;
min-height: 24px;
/* padding: 0 5px; */
}
/* POMODORO STATES */
#custom-pomodoro.work {
color: @accent;
}
#custom-pomodoro.break {
color: @success;
text-shadow: 0px 0px 4px rgba(0, 255, 0, 1);
}
#custom-pomodoro.pause {
color: @attention;
text-shadow: 0px 0px 4px @attention;
}
/* MPD STATES */
#mpd {
font-weight: 700;
transition: color 2s, background 2s, border-color 2s;
}
#mpd.playing {
color: @accent;
}
#mpd.stopped {
color: transparent;
background: transparent;
border-color: transparent;
}
#mpd.paused {
font-weight: normal;
color: @text-secondary;
}
/* CPU && MEMORY STATES */
#cpu.s1, #memory.s1, #temperature.s1 {
color: @text-primary;
transition: color 0.3s, text-shadow 0.3s, background 0.3s;
}
#cpu.s2, #memory.s2 {
color: @text-primary;
text-shadow: 0px 0px 2px @text-primary;
transition: color 0.3s, text-shadow 0.3s, background 0.3s;
}
#cpu.s3, #memory.s3 {
color: @attention;
text-shadow: 0px 0px 2px @attention;
transition: color 0.3s, text-shadow 0.3s, background 0.3s;
}
#cpu.s4, #memory.s4, #temperature.warning {
color: @warning;
text-shadow: 0px 0px 2px @warning;
transition: color 0.3s, text-shadow 0.3s, background 0.3s;
}
#cpu.s5, #memory.s5, #temperature.critical {
color: @danger;
text-shadow: 0px 0px 2px @danger;
transition: color 0.3s, text-shadow 0.3s, background 0.3s;
}
/* --------------------------------------------------------------------------
HOVER EFFECTS
-------------------------------------------------------------------------- */
#mpd.playing:hover,
#mpd.paused:hover,
#clock:hover,
#battery:hover,
#network:hover,
#pulseaudio:hover,
#custom-pomodoro:hover,
#custom-launcher:hover,
#scratchpad:hover,
#tray:hover,
#taskbar:hover,
#cpu:hover,
#memory:hover
#temperature:hover {
color: @accent;
text-shadow: 0px 0px 8px @accent;
transition: color 0.3s, box-shadow 0.3s, background 0.3s;
}
#pulseaudio-slider:hover highlight {
background: @accent;
box-shadow: 0px 0px 8px @accent;
transition: color 0.3s, box-shadow 0.3s, background 0.3s;
}
/* --------------------------------------------------------------------------
LAYOUT UTILITIES
-------------------------------------------------------------------------- */
#window,
#workspaces {
margin: 0 0px;
}
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
/* --------------------------------------------------------------------------
ANIMATIONS
-------------------------------------------------------------------------- */
@keyframes hover {
0% { color: @text-primary; }
100% { color: @accent; }
}

289
waybar/style/style_top.css Normal file
View File

@@ -0,0 +1,289 @@
/* --------------------------------------------------------------------------
IMPORTS & GLOBAL STYLES
-------------------------------------------------------------------------- */
@import "colors.css";
/* --------------------------------------------------------------------------
BASE CONTAINER
-------------------------------------------------------------------------- */
window#waybar {
/* Layout & Box Model */
/* border: 1px solid @border-color; */
/* border-bottom: none; */
/* border-radius: 10px 10px 0 0; */
/* Typography */
font-family: "Iosevka Nerd Font Propo";
font-size: 15px;
/* Colors */
background-color: transparent;
/* color: @text-primary; */
/* Effects & Transitions */
/* transition-property: background-color; */
/* transition-duration: 0.5s; */
}
/* Window States */
window#waybar.hidden {
opacity: 0.2;
}
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
/* --------------------------------------------------------------------------
MODULE COMMON STYLES
-------------------------------------------------------------------------- */
/* Common styling applied to all modules */
#mpd,
#mpris,
#custom-pomodoro,
#clock,
#battery,
#network,
#pulseaudio,
#pulseaudio-slider,
#custom-separator,
#scratchpad,
#tray {
padding: 0 10px;
color: @text-primary;
transition: color 0.3s ease, text-shadow 0.3s ease, background 0.3s ease;
}
/* --------------------------------------------------------------------------
WORKSPACES
-------------------------------------------------------------------------- */
#workspaces {
font-size: 18px;
background-color: transparent;
}
#workspaces button {
padding: 0 6px;
min-width: 20px;
background-color: transparent;
color: alpha(@accent, 0.5);
border: none;
border-radius: 0;
}
/* Workspace States */
#workspaces button.empty {
color: @text-secondary;
}
#workspaces button.empty:not(.hosting-monitor) {
color: alpha(@text-secondary, 0.1);
}
#workspaces button.active.hosting-monitor {
color: @accent;
text-shadow: 0px 0px 8px @accent;
animation: hover 0.8s 1;
}
#workspaces button.urgent {
color: @attention;
font-weight: 700;
text-shadow: 0px 0px 8px @attention;
transition: color 0.5s, box-shadow 0.5s, background 0.5s;
}
#workspaces button:hover {
color: @text-primary;
background: none;
box-shadow: none;
text-shadow: 0px -2px 3px @text-primary;
}
#workspaces button:not(.hosting-monitor):not(.empty) {
color: alpha(@accent, 0.2);
}
#workspaces button.active.hosting-monitor:hover {
color: @text-primary;
background: none;
box-shadow: none;
text-shadow: 0px 0px 8px @text-primary;
}
/* --------------------------------------------------------------------------
SIDE PANEL GROUPS
-------------------------------------------------------------------------- */
#mpd, #mpris, .modules-center, .modules-right {
/* Layout & Box Model */
border: 1px solid @border-color;
border-radius: 15px;
/* Colors */
background-color: @bg-panel;
/* color: @text-primary; */
/* Effects & Transitions */
/* transition-property: background-color; */
/* transition-duration: 0.5s; */
}
.modules-left {
}
.modules-right {
}
/* --------------------------------------------------------------------------
AUDIO CONTROL MODULES
-------------------------------------------------------------------------- */
#pulseaudio {
padding-right: 0;
border-right: none;
}
#pulseaudio-slider slider {
min-height: 0px;
min-width: 0px;
opacity: 0;
background-image: none;
border: none;
box-shadow: none;
}
#pulseaudio-slider trough {
min-height: 10px;
min-width: 25px;
border-radius: 5px;
background: alpha(@text-primary, 0.2);
}
#pulseaudio-slider highlight {
min-width: 10px;
border-radius: 5px;
background: @text-primary;
}
/* --------------------------------------------------------------------------
CUSTOM MODULES
-------------------------------------------------------------------------- */
#custom-pomodoro {
color: @text-secondary;
border-radius: 0 0 10px 10px;
}
/* --------------------------------------------------------------------------
STATE-BASED STYLES
-------------------------------------------------------------------------- */
/* POMODORO STATES */
#custom-pomodoro.work {
color: @accent;
}
#custom-pomodoro.break {
color: @success;
text-shadow: 0px 0px 4px rgba(0, 255, 0, 1);
}
#custom-pomodoro.pause {
color: @attention;
text-shadow: 0px 0px 4px @attention;
}
/* MPD STATES */
#mpd, #mpris {
transition: color 2s, background 2s;
}
#mpd.playing, #mpris.playing {
color: @accent;
font-weight: 700;
/* color: @text-primary; */
}
#mpd.stopped, #mrpis.stopped {
color: transparent;
background: transparent;
border-color: transparent;
transition: color 2s, background 2s;
}
#mpd.paused, #mpris.paused {
font-weight: normal;
color: @text-secondary;
}
/* BATTERY STATES */
#battery.charging,
#battery.plugged {
color: @success;
text-shadow: 0px 0px 8px @success;
transition: color 0.3s, box-shadow 0.3s, background 0.3s;
}
#battery.warning:not(.charging) {
color: @warning;
text-shadow: 0px 0px 8px @warning;
transition: color 0.3s, box-shadow 0.3s, background 0.3s;
}
#battery.critical:not(.charging) {
color: @danger;
text-shadow: 0px 0px 8px @danger;
transition: color 0.3s, box-shadow 0.3s, background 0.3s;
}
/* --------------------------------------------------------------------------
HOVER EFFECTS
-------------------------------------------------------------------------- */
#mpd.playing:hover,
#mpd.paused:hover,
#mpris.playing:hover,
#mpris.paused:hover,
#clock:hover,
#battery:hover,
#network:hover,
#pulseaudio:hover,
#custom-pomodoro:hover,
#scratchpad:hover,
#tray:hover {
color: @accent;
text-shadow: 0px 0px 8px @accent;
transition: color 0.3s, box-shadow 0.3s, background 0.3s;
}
#pulseaudio-slider:hover highlight {
background: @accent;
box-shadow: 0px 0px 8px @accent;
transition: color 0.3s, box-shadow 0.3s, background 0.3s;
}
/* --------------------------------------------------------------------------
LAYOUT UTILITIES
-------------------------------------------------------------------------- */
#window,
#workspaces {
margin: 0 0px;
}
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
/* --------------------------------------------------------------------------
ANIMATIONS
-------------------------------------------------------------------------- */
@keyframes hover {
0% { color: @text-primary; }
100% { color: @accent; }
}

View File

@@ -10,6 +10,7 @@ alias cl="clear"
alias pi="source ~/.venv/bin/activate"
alias pivenv="source ~/.venv312/bin/activate"
alias nvim="http_proxy='' nvim"
alias n="nvim"
alias updatew="sudo pacman -Syuw --noconfirm"
alias insta="sudo pacman -S"
alias detdom="sudo pacman -Qdtq | sudo pacman -Rns -"

2
zsh/misspell.sh Normal file
View File

@@ -0,0 +1,2 @@
alias hyrpm="hyprpm"
alias hyrppm="hyprpm"