fixes waybar. moves stuff to vicinae

This commit is contained in:
2026-01-22 08:16:55 +01:00
parent 03e8aa1343
commit 810060dc10
25 changed files with 1435 additions and 558 deletions

View File

@@ -7,7 +7,7 @@
animations {
enabled = yes
bezier = overshot, 0.13, 0.99, 0.29, 1.1
animation = windowsIn, 1, 4, overshot, slide
animation = windowsIn, 1, 4, overshot, popin
animation = windowsOut, 1, 5, default, popin 80%
animation = border, 1, 5, default
animation = workspacesIn, 1, 6, overshot, slide

View File

@@ -5,7 +5,6 @@
source = ~/.config/hypr/config/defaults.conf
# Autostart wiki https://wiki.hyprland.org/0.45.0/Configuring/Keywords/#executing #
exec-once = /home/michaelb/.config/hypr/scripts/launch-waybar.sh &
exec-once = blueman-applet &
exec-once = fcitx5 -d &
@@ -26,8 +25,11 @@ exec-once = $idlehandler
# Clipboard fix
# https://github.com/hyprwm/Hyprland/issues/2319#issuecomment-2409983376
exec-once = wl-paste -t text -w xclip -selection clipboard &
exec-once = wl-paste --watch cliphist store &
#exec-once = wl-paste -t text -w xclip -selection clipboard &
#exec-once = wl-paste --watch cliphist store &
# vicinae
exec-once = vicinae server
# pyprland
exec-once = /usr/bin/pypr --debug /tmp/pypr.log

View File

@@ -1,19 +1,19 @@
$wallpaper = /usr/share/wallpapers/downloaded/pexels-eberhardgross-1421903.jpg
$background = rgb(0D0E0E)
$foreground = rgb(E9FDFF)
$color0 = rgb(383939)
$color1 = rgb(6E544A)
$color2 = rgb(727F7E)
$color3 = rgb(93796E)
$color4 = rgb(839CA5)
$color5 = rgb(BCA592)
$color6 = rgb(C0FAFF)
$color7 = rgb(D7F4F7)
$color8 = rgb(97ABAD)
$color9 = rgb(6E544A)
$color10 = rgb(727F7E)
$color11 = rgb(93796E)
$color12 = rgb(839CA5)
$color13 = rgb(BCA592)
$color14 = rgb(C0FAFF)
$color15 = rgb(D7F4F7)
$wallpaper = /usr/share/wallpapers/downloaded/pexels-jplenio-1102912.jpg
$background = rgb(0E0E11)
$foreground = rgb(FDF2DE)
$color0 = rgb(38393C)
$color1 = rgb(424652)
$color2 = rgb(6A3E40)
$color3 = rgb(736956)
$color4 = rgb(897C88)
$color5 = rgb(9B8166)
$color6 = rgb(F9D9A2)
$color7 = rgb(F4E4C8)
$color8 = rgb(AA9F8C)
$color9 = rgb(424652)
$color10 = rgb(6A3E40)
$color11 = rgb(736956)
$color12 = rgb(897C88)
$color13 = rgb(9B8166)
$color14 = rgb(F9D9A2)
$color15 = rgb(F4E4C8)

View File

@@ -9,7 +9,7 @@ source = ~/.config/hypr/config/colors.conf
decoration {
active_opacity = 1
inactive_opacity = 0.7
rounding = 3
rounding = 1
dim_inactive = true
dim_strength = 0.1

View File

@@ -3,8 +3,10 @@
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
$filemanager = nemo
$applauncher = tofi-drun --drun-launch=true
#$applauncher = tofi-drun --drun-launch=true
#$applauncher = rofi -show combi -modi window,run,combi -combi-modi window,run
$dmenu = vicinae dmenu --placeholder
$applauncher = vicinae toggle
$terminal = kitty
$idlehandler = swayidle -w timeout 300 'swaylock -f -c 000000' before-sleep 'swaylock -f -c 000000'
$capturing = grim -g "$(slurp)" - | swappy -f -

View File

@@ -1,14 +1,11 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Keybinds ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
# 0. Includes
source = ~/.config/hypr/config/defaults.conf
# 1. Applications
# https://wiki.hyprland.org/Configuring/Binds/
bindd = $mainMod, RETURN, Opens your preferred terminal emulator ($terminal), exec, $terminal
bindd = $mainMod, E, Opens your preferred filemanager ($filemanager), exec, $filemanager
bindd = $mainMod, A, Screen capture selection, exec, $capturing
#bindd = $mainMod, A, Screen capture selection, exec, $capturing
bindd = $mainMod, Q, Closes (not kill) current window, killactive,
bindd = $mainMod SHIFT, M, Exits Hyprland by terminating the user sessions, exec, loginctl terminate-user ""
bindd = $mainMod, V, Switches current window between floating and tiling mode, togglefloating,
@@ -146,14 +143,14 @@ bind = , PRINT, exec, hyprshot -m output
# Screenshot a region
bind = $shiftMod, PRINT, exec, hyprshot -m region
# Screenrec
bind = $mainMod, S, exec, ~/.config/hypr/scripts/record-or-screenshot.sh
bind = $mainMod, S, exec, ~/.config/hypr/scripts/record-or-screenshot.sh -d "$dmenu"
# ======= Color Picker =======
bindd = $mainMod, P, Launch hyprpicker to pick a color, exec, hyprpicker -a
# ======= Additional Settings =======
bind = $mainMod, c, exec, cliphist list | tofi --prompt-text="clip:" | cliphist decode | wl-copy
#bind = $mainMod, c, exec, cliphist list | tofi --prompt-text="clip:" | cliphist decode | wl-copy
bind = $mainMod, c, exec, vicinae vicinae://extensions/vicinae/clipboard/history
# https://wiki.hyprland.org/Configuring/Binds
binds {
@@ -177,4 +174,4 @@ bind = $mainMod, F8, exec, ~/.config/hypr/scripts/monitor-toggle.sh toggle-exte
# Explicit profiles
bind = $mainMod, F8, exec, ~/.config/hypr/scripts/monitor-toggle.sh laptop
bind = $mainMod, F9, exec, ~/.config/hypr/scripts/monitor-toggle.sh dual
bind = $mainMod, F10, exec, ~/.config/hypr/scripts/monitor-toggle.sh triple
bind = $mainMod, F10, exec, ~/.config/hypr/scripts/monitor-toggle.sh triple

View File

@@ -0,0 +1,12 @@
# https://github.com/sandwichfarm/hyprexpo-plus
# currently not working
plugin {
hyprexpo {
columns = 3
gap_size = 5
workspace_method = center current # [center/first] [workspace] e.g. first 1 or center m+1
keynav_enable = 1
keynav_wrap_h = 1 # wrap horizontally at row edges
keynav_wrap_v = 1 # wrap vertically at column edges
}
}

View File

@@ -58,6 +58,7 @@ misc {
vrr = 2
# Hypridle cmatrix fix:
session_lock_xray = true
middle_click_paste = false
}
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#render

View File

@@ -5,49 +5,217 @@
# Windows Rules https://wiki.hyprland.org/0.45.0/Configuring/Window-Rules/ #
# Float Necessary Windows
windowrule = float, title:Rofi
windowrule = float, class:^(org.pulseaudio.pavucontrol)
windowrule = float, class:^()$,title:^(Picture in picture)$
windowrule = float, class:^()$,title:^(Save File)$
windowrule = float, class:^()$,title:^(Open File)$
windowrule = float, class:^(LibreWolf)$,title:^(Picture-in-Picture)$
windowrule = float, class:^(blueman-manager)$
windowrule = float, class:^(xdg-desktop-portal-gtk|xdg-desktop-portal-kde|xdg-desktop-portal-hyprland)(.*)$
windowrule = float, class:^(pomodorolm)$
windowrule = float, title:^(Extension:.*)$
windowrule = float, class:^(polkit-gnome-authentication-agent-1|hyprpolkitagent|org.org.kde.polkit-kde-authentication-agent-1)(.*)$
windowrule = float, class:^(CachyOSHello)$
windowrule = float, class:^(zenity)$
windowrule = float, class:^()$,title:^(Steam - Self Updater)$
windowrule = float, class:^(Zotero)$,title:^(Progress)$
windowrule {
name = windowrule-1
float = on
match:title = Rofi
}
windowrule {
name = windowrule-2
float = on
match:class = ^(org.pulseaudio.pavucontrol)
}
windowrule {
name = windowrule-3
float = on
match:class = ^()$
match:title = ^(Picture in picture)$
}
windowrule {
name = windowrule-4
float = on
match:class = ^()$
match:title = ^(Save File)$
}
windowrule {
name = windowrule-5
float = on
match:class = ^()$
match:title = ^(Open File)$
}
windowrule {
name = windowrule-6
float = on
match:class = ^(LibreWolf)$
match:title = ^(Picture-in-Picture)$
}
windowrule {
name = windowrule-7
float = on
match:class = ^(blueman-manager)$
}
windowrule {
name = windowrule-8
float = on
match:class = ^(xdg-desktop-portal-gtk|xdg-desktop-portal-kde|xdg-desktop-portal-hyprland)(.*)$
}
windowrule {
name = windowrule-9
float = on
size = 260 340
match:class = ^(pomodorolm)$
}
windowrule {
name = windowrule-10
float = on
match:title = ^(Extension:.*)$
}
windowrule {
name = windowrule-11
float = on
match:class = ^(polkit-gnome-authentication-agent-1|hyprpolkitagent|org.org.kde.polkit-kde-authentication-agent-1)(.*)$
}
windowrule {
name = windowrule-12
float = on
match:class = ^(CachyOSHello)$
}
windowrule {
name = windowrule-13
float = on
match:class = ^(zenity)$
}
windowrule {
name = windowrule-14
float = on
match:class = ^()$
match:title = ^(Steam - Self Updater)$
}
windowrule {
name = windowrule-15
float = on
match:class = ^(Zotero)$
match:title = ^(Progress)$
}
# Increase the opacity
windowrule = opacity 0.92, class:^(thunar|nemo|dolphin)$
windowrule = opacity 0.96, class:^(discord|armcord|webcord)$
windowrule = opacity 0.95, title:^(QQ|Telegram)$
windowrule = opacity 0.95, title:^(NetEase Cloud Music Gtk4)$
windowrule = opacity 1, class:^(kitty)$
windowrule {
name = windowrule-16
opacity = 0.92
match:class = ^(thunar|nemo|dolphin)$
}
windowrule {
name = windowrule-17
opacity = 0.96
match:class = ^(discord|armcord|webcord)$
}
windowrule {
name = windowrule-18
opacity = 0.95
match:title = ^(QQ|Telegram)$
}
windowrule {
name = windowrule-19
opacity = 0.95
match:title = ^(NetEase Cloud Music Gtk4)$
}
windowrule {
name = windowrule-20
opacity = 1
match:class = ^(kitty)$
}
# General window rules
windowrule = size 260 340, class:^(pomodorolm)$
windowrule = float, title:^(Picture-in-Picture)$
windowrule = size 960 540, title:^(Picture-in-Picture)$
windowrule = move 25%-, title:^(Picture-in-Picture)$
windowrule = float, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp|nwg-look|nwg-displays)$
windowrule = move 25%-, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
windowrule = size 960 540, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
windowrule = pin, title:^(danmufloat)$
windowrule = rounding 5, title:^(danmufloat|termfloat)$
windowrule = animation slide right, class:^(kitty|Alacritty)$
windowrule = noblur, class:^(org.mozilla.firefox)$
windowrule = nodim, class:^(zen)$
windowrule = float, title:^(Zotero Settings)$
windowrule {
name = windowrule-21
float = on
size = 960 540
move = ((monitor_w*0.25)-)
match:title = ^(Picture-in-Picture)$
}
windowrule {
name = windowrule-22
float = on
match:title = ^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp|nwg-look|nwg-displays)$
}
windowrule {
name = windowrule-23
move = ((monitor_w*0.25)-)
size = 960 540
match:title = ^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
}
windowrule {
name = windowrule-24
pin = on
match:title = ^(danmufloat)$
}
windowrule {
name = windowrule-25
rounding = 5
match:title = ^(danmufloat|termfloat)$
}
windowrule {
name = windowrule-26
animation = slide right
match:class = ^(kitty|Alacritty)$
}
windowrule {
name = windowrule-27
no_blur = on
match:class = ^(org.mozilla.firefox)$
}
windowrule {
name = windowrule-28
no_dim = on
match:class = ^(zen)$
}
windowrule {
name = windowrule-29
float = on
match:title = ^(Zotero Settings)$
}
# Decorations related to floating windows on workspaces 1 to 10
windowrule = bordersize 2, floating:1, onworkspace:w[fv1-10]
windowrule = bordercolor $color4, floating:1, onworkspace:w[fv1-10]
windowrule = rounding 8, floating:1, onworkspace:w[fv1-10]
windowrule {
name = windowrule-30
border_size = 2
border_color = $color4
rounding = 8
match:float = 1
match:workspace = w[fv1-10]
}
# Decorations related to tiling windows on workspaces 1 to 10
windowrule = bordersize 3, floating:0, onworkspace:f[1-10]
windowrule = rounding 4, floating:0, onworkspace:f[1-10]
windowrule = opacity 0.9, title:^(.+nvim$)
windowrule {
name = windowrule-31
border_size = 3
rounding = 4
match:float = 0
match:workspace = f[1-10]
}
windowrule {
name = windowrule-32
opacity = 0.9
match:title = ^(.+nvim$)
}
# Windows Rules End #
# Workspaces Rules https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/ #
@@ -64,13 +232,61 @@ windowrule = opacity 0.9, title:^(.+nvim$)
# Workspaces Rules End #
# Layers Rules #
layerrule = animation slide top, logout_dialog
layerrule {
name = layerrule-1
animation = slide top
match:namespace = logout_dialog
}
# layerrule = animation popin 50%, waybar
layerrule = animation slide down, waybar
layerrule = animation fade 50%, wallpaper
layerrule {
name = layerrule-2
animation = slide down
match:namespace = waybar
}
layerrule {
name = layerrule-3
animation = fade 50%
match:namespace = wallpaper
}
# vicinae
layerrule {
name = vicinae-blur
blur = on
animation = popin
dim_around = on
ignore_alpha = 1
match:namespace = vicinae
}
# Layers Rules End #
# Zotero Libreoffice
windowrule = float,class:^(Zotero)$,title:^(Citation Dialog)$
windowrule = center,class:^(Zotero)$,title:^(Citation Dialog)$
windowrule = noanim,class:^(Zotero)$,title:^(Citation Dialog)$
windowrule {
name = windowrule-33
float = on
center = on
no_anim = on
match:class = ^(Zotero)$
match:title = ^(Citation Dialog)$
}
# gnome calendar
windowrule {
name = windowrule-cal
float = on
center = on
match:class = ^(org.gnome.Calendar)$
match:title = ^(Calendar)$
animation = popin
opacity = 0.8
}
windowrule {
name = waypaper-fix
match:class = ^(waypaper)$
float = on
center = on
}

View File

@@ -0,0 +1,77 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Windowrules Configuration ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
# Windows Rules https://wiki.hyprland.org/0.45.0/Configuring/Window-Rules/ #
# Float Necessary Windows
windowrule = float, title:Rofi
windowrule = float, class:^(org.pulseaudio.pavucontrol)
windowrule = float, class:^()$,title:^(Picture in picture)$
windowrule = float, class:^()$,title:^(Save File)$
windowrule = float, class:^()$,title:^(Save File)$
windowrule = float, class:^()$,title:^(Open File)$
windowrule = float, class:^(LibreWolf)$,title:^(Picture-in-Picture)$
windowrule = float, class:^(blueman-manager)$
windowrule = float, class:^(xdg-desktop-portal-gtk|xdg-desktop-portal-kde|xdg-desktop-portal-hyprland)(.*)$
windowrule = float, class:^(pomodorolm)$
windowrule = float, title:^(Extension:.*)$
windowrule = float, class:^(polkit-gnome-authentication-agent-1|hyprpolkitagent|org.org.kde.polkit-kde-authentication-agent-1)(.*)$
windowrule = float, class:^(CachyOSHello)$
windowrule = float, class:^(zenity)$
windowrule = float, class:^()$,title:^(Steam - Self Updater)$
windowrule = float, class:^(Zotero)$,title:^(Progress)$
# Increase the opacity
windowrule = opacity 0.92, class:^(thunar|nemo|dolphin)$
windowrule = opacity 0.96, class:^(discord|armcord|webcord)$
windowrule = opacity 0.95, title:^(QQ|Telegram)$
windowrule = opacity 0.95, title:^(NetEase Cloud Music Gtk4)$
windowrule = opacity 1, class:^(kitty)$
# General window rules
windowrule = size 260 340, class:^(pomodorolm)$
windowrule = float, title:^(Picture-in-Picture)$
windowrule = size 960 540, title:^(Picture-in-Picture)$
windowrule = move 25%-, title:^(Picture-in-Picture)$
windowrule = float, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp|nwg-look|nwg-displays)$
windowrule = move 25%-, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
windowrule = size 960 540, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
windowrule = pin, title:^(danmufloat)$
windowrule = rounding 5, title:^(danmufloat|termfloat)$
windowrule = animation slide right, class:^(kitty|Alacritty)$
windowrule = noblur, class:^(org.mozilla.firefox)$
windowrule = nodim, class:^(zen)$
windowrule = float, title:^(Zotero Settings)$
# Decorations related to floating windows on workspaces 1 to 10
windowrule = bordersize 2, floating:1, onworkspace:w[fv1-10]
windowrule = bordercolor $color4, floating:1, onworkspace:w[fv1-10]
windowrule = rounding 8, floating:1, onworkspace:w[fv1-10]
# Decorations related to tiling windows on workspaces 1 to 10
windowrule = bordersize 3, floating:0, onworkspace:f[1-10]
windowrule = rounding 4, floating:0, onworkspace:f[1-10]
windowrule = opacity 0.9, title:^(.+nvim$)
# Windows Rules End #
# Workspaces Rules https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/ #
# workspace = 1, default:true, monitor:$priMon
# workspace = 6, default:true, monitor:$secMon
# Workspace selectors https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/#workspace-selectors
# workspace = r[1-5], monitor:$priMon
# workspace = r[6-10], monitor:$secMon
# workspace = special:scratchpad, on-created-empty:$applauncher
# no_gaps_when_only deprecated instead workspaces rules with selectors can do the same
# Smart gaps from 0.45.0 https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/#smart-gaps
#workspace = w[tv1-10], gapsout:5, gapsin:3
#workspace = f[1], gapsout:5, gapsin:3
# Workspaces Rules End #
# Layers Rules #
layerrule = animation slide top, logout_dialog
# layerrule = animation popin 50%, waybar
layerrule = animation slide down, waybar
layerrule = animation fade 50%, wallpaper
# Layers Rules End #
# Zotero Libreoffice
windowrule = float,class:^(Zotero)$,title:^(Citation Dialog)$
windowrule = center,class:^(Zotero)$,title:^(Citation Dialog)$
windowrule = noanim,class:^(Zotero)$,title:^(Citation Dialog)$

View File

@@ -1,20 +1,22 @@
#!/bin/env bash
# Menu launcher wrapper
menu_prompt() {
if command -v tofi &>/dev/null; then
printf "%b" "$1" | tofi --prompt-text="$2"
elif command -v fuzzel &>/dev/null; then
printf "%b" "$1" | fuzzel -d -p "$2" -w 25 -l 10
elif command -v wofi &>/dev/null; then
printf "%b" "$1" | wofi --dmenu --prompt="$2"
elif command -v rofi &>/dev/null; then
printf "%b" "$1" | rofi -dmenu -p "$2"
else
notify-send "No compatible launcher found" "Install tofi, fuzzel, wofi, or rofi."
exit 1
fi
}
# CLI options
DMENU_CMD=""
while getopts ":d:" opt; do
case "$opt" in
d) DMENU_CMD="$OPTARG" ;;
*) ;;
esac
done
shift $((OPTIND - 1))
if [ -z "$DMENU_CMD" ]; then
notify-send "Missing launcher" "Use -d to provide a dmenu command"
exit 1
fi
read -r -a DMENU_ARR <<< "$DMENU_CMD"
DMENU_BIN="${DMENU_ARR[0]}"
command -v "$DMENU_BIN" &>/dev/null || { notify-send "Launcher not found" "$DMENU_BIN is not installed"; exit 1; }
# Directories
SCREENSHOT_DIR="${HOME}/Pictures"
@@ -29,7 +31,7 @@ if pgrep -u "$USER" wl-screenrec > /dev/null; then
notify-send "Recording stopped"
# Ask if user wants to compress the video
COMPRESS=$(menu_prompt "✅ compress\n❌ keep original" "🗜️ Compress video?")
COMPRESS=$(printf "%b" "✅ compress\n❌ keep original" | "${DMENU_ARR[@]}" "🗜️ Compress video?")
if [[ "$COMPRESS" == "✅ compress" ]]; then
# Find the most recent video file
LATEST_VIDEO=$(find "$RECORDING_DIR" -name "*.mp4" -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -d' ' -f2-)
@@ -39,7 +41,7 @@ if pgrep -u "$USER" wl-screenrec > /dev/null; then
if ffmpeg -i "$LATEST_VIDEO" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k "$COMPRESSED_VIDEO" -y &>/dev/null; then
notify-send "Compression complete" "$COMPRESSED_VIDEO"
# Ask if user wants to delete original
DELETE_ORIGINAL=$(menu_prompt "🗑️ delete original\n📁 keep both" "Delete original?")
DELETE_ORIGINAL=$(printf "%b" "🗑️ delete original\n📁 keep both" | "${DMENU_ARR[@]}" "Delete original?")
if [[ "$DELETE_ORIGINAL" == "🗑️ delete original" ]]; then
rm "$LATEST_VIDEO"
notify-send "Original deleted" "Keeping compressed version only"
@@ -66,12 +68,12 @@ record all
EOF
)
SELECTION=$(menu_prompt "$OPTIONS" "󰄀 ")
SELECTION=$(printf "%b" "$OPTIONS" | "${DMENU_ARR[@]}" "󰄀 ")
[ -z "$SELECTION" ] && exit 0
# Ask for audio mode if it's a recording
select_audio_mode() {
AUDIO_MODE=$(menu_prompt "🎤 mic\n💻 internal\n🚫 none" "🎙️ Audio?")
AUDIO_MODE=$(printf "%b" "🎤 mic\n💻 internal\n🚫 none" | "${DMENU_ARR[@]}" "🎙️ Audio?")
[ -z "$AUDIO_MODE" ] && echo "__cancel__" && return
case "$AUDIO_MODE" in