hyprland updates; nvim updates; misc updates
This commit is contained in:
@ -23,12 +23,13 @@ $menu = wofi --show drun
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
exec-once = waybar
|
||||
# exec-once = waybar
|
||||
exec-once = /usr/lib//hhyprpolkitagent/hyprpolkitagent
|
||||
exec-once = hyprpanel
|
||||
exec-once = dunst
|
||||
exec-once = firefox
|
||||
exec-once = hyprpaper
|
||||
exec-once = [workspace 9 silent] spotify
|
||||
exec-once = [workspace 9 silent] deezer-desktop
|
||||
|
||||
# gnome keyring secret service
|
||||
exec-once = dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE
|
||||
@ -136,14 +137,14 @@ decoration {
|
||||
}
|
||||
|
||||
# wofi
|
||||
layerrule = blur, wofi # apply compositor blur
|
||||
layerrule = ignorezero, wofi # keep blur even on near-opaque colors
|
||||
layerrule = dimaround, wofi # optional: dim background behind wofi
|
||||
layerrule = ignorealpha 0.90, wofi # target overall opacity for the layer
|
||||
|
||||
# waybar
|
||||
layerrule = blur, waybar
|
||||
layerrule = ignorealpha 0.15, waybar
|
||||
# layerrule = blur, wofi # apply compositor blur
|
||||
# layerrule = ignorezero, wofi # keep blur even on near-opaque colors
|
||||
# layerrule = dimaround, wofi # optional: dim background behind wofi
|
||||
# layerrule = ignorealpha 0.90, wofi # target overall opacity for the layer
|
||||
#
|
||||
# # waybar
|
||||
# layerrule = blur, waybar
|
||||
# layerrule = ignorealpha 0.15, waybar
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#animations
|
||||
animations {
|
||||
@ -210,18 +211,18 @@ misc {
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us
|
||||
kb_layout = us,de
|
||||
kb_variant = altgr-intl
|
||||
kb_model =
|
||||
kb_options =
|
||||
# kb_options = grp:caps_toggle
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 2
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
scroll_method = on_button_down
|
||||
scroll_button = 274
|
||||
# scroll_method = on_button_down
|
||||
# scroll_button = 274
|
||||
}
|
||||
|
||||
# Example per-device config
|
||||
@ -282,12 +283,12 @@ bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
|
||||
|
||||
# Requires playerctl
|
||||
# Spotify controls
|
||||
bind = CTRL ALT, K, exec, playerctl --player=spotify play-pause
|
||||
bind = CTRL ALT, Left, exec, playerctl --player=spotify previous
|
||||
bind = CTRL ALT, Right, exec, playerctl --player=spotify next
|
||||
bind = CTRL ALT, Up, exec, playerctl --player=spotify volume 0.05+
|
||||
bind = CTRL ALT, Down, exec, playerctl --player=spotify volume 0.05-
|
||||
# Deezer controls
|
||||
bind = CTRL ALT, K, exec, playerctl --player=deezer play-pause
|
||||
bind = CTRL ALT, Left, exec, playerctl --player=deezer previous
|
||||
bind = CTRL ALT, Right, exec, playerctl --player=deezer next
|
||||
bind = CTRL ALT, Up, exec, ~/.config/hypr/scripts/deezer-volume.sh +5%
|
||||
bind = CTRL ALT, Down, exec, ~/.config/hypr/scripts/deezer-volume.sh -5%
|
||||
|
||||
bind = ,F7,pass,class:^(discord)$
|
||||
bind = ,F8,pass,class:^(discord)$
|
||||
@ -305,18 +306,47 @@ bind = , Print, exec, hyprshot -zm region
|
||||
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrule = suppressevent maximize, class:.*
|
||||
windowrule {
|
||||
name = suppress-maximize-events
|
||||
match:class = .*
|
||||
|
||||
suppress_event = maximize
|
||||
}
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
windowrule {
|
||||
name = fix-xwayland-drags
|
||||
match:class = ^$
|
||||
match:title = ^$
|
||||
match:xwayland = true
|
||||
match:float = true
|
||||
match:fullscreen = false
|
||||
match:pin = false
|
||||
|
||||
windowrulev2 = tag +jb, class:^jetbrains-.+$,floating:1
|
||||
windowrulev2 = stayfocused, tag:jb
|
||||
windowrulev2 = noinitialfocus, tag:jb
|
||||
no_focus = true
|
||||
}
|
||||
|
||||
# 1) Do not allow these windows to inhibit Hyprland shortcuts
|
||||
windowrulev2 = noshortcutsinhibit, class:^(jetbrains-.*|android-studio)$
|
||||
windowrule {
|
||||
name = jetbrains-shortcuts
|
||||
match:class = ^(jetbrains-.*|android-studio)$
|
||||
|
||||
no_shortcuts_inhibit = 1
|
||||
}
|
||||
|
||||
windowrule {
|
||||
name = jetbrains-tile
|
||||
match:class = ^(jetbrains-.*|android-studio)$
|
||||
float = 0
|
||||
}
|
||||
|
||||
windowrule {
|
||||
name = jetbrains-tab-drag
|
||||
match:class = ^(jetbrains-.*|android-studio)$
|
||||
match:title = ^(\s*)$
|
||||
|
||||
no_initial_focus = 1
|
||||
stay_focused = 1
|
||||
float = 1
|
||||
center = 1
|
||||
}
|
||||
|
||||
# 2) Float and center transient dialogs from these apps
|
||||
windowrulev2 = float, class:^(jetbrains-.*|android-studio)$, windowtype:^(dialog|utility|popup)$
|
||||
windowrulev2 = center, class:^(jetbrains-.*|android-studio)$, windowtype:^(dialog|utility|popup)$
|
||||
|
||||
@ -1,7 +1,24 @@
|
||||
preload = /home/johannes/Pictures/Wallpapers/wallhaven-5g22q5.png
|
||||
|
||||
wallpaper = DP-1,/home/johannes/Pictures/Wallpapers/wallhaven-5g22q5.png
|
||||
wallpaper = DP-2,/home/johannes/Pictures/Wallpapers/wallhaven-5g22q5.png
|
||||
wallpaper = HDMI-A-2,/home/johannes/Pictures/Wallpapers/wallhaven-5g22q5.png
|
||||
wallpaper {
|
||||
monitor = DP-1
|
||||
path =/home/johannes/Pictures/Wallpapers/wallhaven-5g22q5.png
|
||||
# fitmode = cover
|
||||
}
|
||||
wallpaper {
|
||||
monitor = DP-2
|
||||
path =/home/johannes/Pictures/Wallpapers/wallhaven-5g22q5.png
|
||||
# fitmode = cover
|
||||
}
|
||||
wallpaper {
|
||||
monitor = HDMI-A-1
|
||||
path =/home/johannes/Pictures/Wallpapers/wallhaven-5g22q5.png
|
||||
# fitmode = cover
|
||||
}
|
||||
wallpaper {
|
||||
monitor = HDMI-A-2
|
||||
path =/home/johannes/Pictures/Wallpapers/wallhaven-5g22q5.png
|
||||
# fitmode = cover
|
||||
}
|
||||
|
||||
splash = false
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# Generated by nwg-displays on 2025-11-09 at 17:18:32. Do not edit manually.
|
||||
# Generated by nwg-displays on 2025-12-26 at 06:40:37. Do not edit manually.
|
||||
|
||||
monitor=DP-1,2560x1440@165.0,6626x876,1.0
|
||||
monitor=DP-2,2560x1440@165.0,4066x876,1.0
|
||||
|
||||
77
roles/hyprland/files/hypr/scripts/deezer-volume.sh
Executable file
77
roles/hyprland/files/hypr/scripts/deezer-volume.sh
Executable file
@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
change="$1"
|
||||
|
||||
if [ -z "$change" ]; then
|
||||
echo "Usage: $0 [+5%|-5%|50%]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "=== Deezer Volume Debug (FIXED) ==="
|
||||
|
||||
# 1) Deezer window PID
|
||||
root_pid=$(hyprctl clients -j | jq -r '.[] | select(.class == "deezer-desktop") | .pid' | head -n1)
|
||||
echo "[INFO] Deezer window PID: $root_pid"
|
||||
|
||||
if [ -z "$root_pid" ] || [ "$root_pid" = "null" ]; then
|
||||
echo "[ERROR] Deezer window not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 2) Gather ALL descendant PIDs
|
||||
declare -a pid_array
|
||||
pid_array+=("$root_pid")
|
||||
|
||||
# Direct children
|
||||
children=($(pgrep -P "$root_pid"))
|
||||
echo "[INFO] Children: ${children[*]}"
|
||||
|
||||
for c in "${children[@]}"; do
|
||||
pid_array+=("$c")
|
||||
gc=($(pgrep -P "$c"))
|
||||
echo "[INFO] Grandchildren of $c: ${gc[*]}"
|
||||
for g in "${gc[@]}"; do
|
||||
pid_array+=("$g")
|
||||
done
|
||||
done
|
||||
|
||||
echo "[INFO] All collected PIDs: ${pid_array[*]}"
|
||||
|
||||
echo "----------------------------------"
|
||||
echo "[INFO] Checking sink inputs..."
|
||||
echo "----------------------------------"
|
||||
|
||||
sink=""
|
||||
|
||||
while IFS= read -r block; do
|
||||
pid=$(echo "$block" | jq -r '.properties["application.process.id"] // empty')
|
||||
index=$(echo "$block" | jq -r '.index')
|
||||
|
||||
echo "[SINK] index=$index pid=$pid"
|
||||
|
||||
[ -z "$pid" ] && { echo " -> Skipping"; continue; }
|
||||
|
||||
for candidate in "${pid_array[@]}"; do
|
||||
if [ "$pid" = "$candidate" ]; then
|
||||
echo " -> MATCH with PID $candidate"
|
||||
sink="$index"
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
|
||||
echo " -> No match"
|
||||
|
||||
done < <(pactl -f json list sink-inputs | jq -c '.[]')
|
||||
|
||||
echo "----------------------------------"
|
||||
|
||||
if [ -z "$sink" ]; then
|
||||
echo "[ERROR] No audio stream found for Deezer."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[INFO] Deezer sink index: $sink"
|
||||
echo "[INFO] Applying: $change"
|
||||
|
||||
pactl set-sink-input-volume "$sink" "$change"
|
||||
|
||||
45
roles/hyprland/files/hyprpanel/config.json
Normal file
45
roles/hyprland/files/hyprpanel/config.json
Normal file
@ -0,0 +1,45 @@
|
||||
{
|
||||
"bar.customModules.storage.paths": [
|
||||
"/"
|
||||
],
|
||||
"menus.power.showLabel": false,
|
||||
"theme.font.size": "1rem",
|
||||
"theme.font.weight": 500,
|
||||
"scalingPriority": "gdk",
|
||||
"menus.power.lowBatteryNotification": false,
|
||||
"bar.customModules.worldclock.tz": [
|
||||
"Europe/Vienna"
|
||||
],
|
||||
"theme.bar.buttons.modules.power.enableBorder": false,
|
||||
"menus.dashboard.powermenu.avatar.image": "/home/johannes/Pictures/Wallpapers/wallhaven-852q62.png",
|
||||
"menus.dashboard.shortcuts.left.shortcut1.tooltip": "Firefox",
|
||||
"menus.dashboard.shortcuts.left.shortcut1.command": "firefox",
|
||||
"menus.dashboard.shortcuts.left.shortcut1.icon": "",
|
||||
"menus.clock.time.military": true,
|
||||
"menus.clock.weather.location": "Vienna",
|
||||
"menus.clock.weather.unit": "metric",
|
||||
"menus.volume.raiseMaximumVolume": true,
|
||||
"theme.bar.floating": true,
|
||||
"bar.autoHide": "never",
|
||||
"theme.bar.buttons.enableBorders": true,
|
||||
"theme.bar.border.width": "0.1em",
|
||||
"bar.workspaces.show_icons": false,
|
||||
"bar.workspaces.show_numbered": false,
|
||||
"bar.workspaces.workspaceMask": false,
|
||||
"bar.workspaces.showWsIcons": true,
|
||||
"bar.workspaces.showApplicationIcons": true,
|
||||
"bar.workspaces.showAllActive": true,
|
||||
"bar.workspaces.numbered_active_indicator": "highlight",
|
||||
"theme.bar.buttons.workspaces.smartHighlight": true,
|
||||
"theme.bar.buttons.windowtitle.enableBorder": false,
|
||||
"bar.windowtitle.custom_title": true,
|
||||
"bar.windowtitle.class_name": true,
|
||||
"theme.bar.buttons.clock.enableBorder": false,
|
||||
"bar.clock.format": "%a %b %d %H:%M:%S",
|
||||
"theme.bar.menus.menu.battery.scaling": 100,
|
||||
"theme.bar.buttons.battery.visible": false,
|
||||
"bar.battery.label": false,
|
||||
"bar.battery.hideLabelWhenFull": true,
|
||||
"theme.bar.buttons.battery.enableBorder": false,
|
||||
"theme.osd.enable": true
|
||||
}
|
||||
1
roles/hyprland/files/hyprpanel/modules.json
Normal file
1
roles/hyprland/files/hyprpanel/modules.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
0
roles/hyprland/files/hyprpanel/modules.scss
Normal file
0
roles/hyprland/files/hyprpanel/modules.scss
Normal file
@ -27,3 +27,9 @@
|
||||
state: link
|
||||
force: true
|
||||
|
||||
- name: Symlink hyprpanel
|
||||
file:
|
||||
src: "{{ role_path }}/files/hyprpanel"
|
||||
dest: "{{ config_dir }}/hyprpanel"
|
||||
state: link
|
||||
force: true
|
||||
|
||||
Reference in New Issue
Block a user