mirror of
https://github.com/Ahwxorg/nixos-config.git
synced 2025-12-04 23:00:14 +01:00
fix: adds script for smart borders since default opt doesnt work anymore
This commit is contained in:
parent
ad0f62da1b
commit
71e0ae0d55
3 changed files with 135 additions and 2 deletions
|
|
@ -138,7 +138,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
dwindle = {
|
dwindle = {
|
||||||
no_gaps_when_only = true;
|
# no_gaps_when_only = true; # Returns errors for some reason
|
||||||
force_split = 0;
|
force_split = 0;
|
||||||
special_scale_factor = 1.0;
|
special_scale_factor = 1.0;
|
||||||
split_width_multiplier = 1.0;
|
split_width_multiplier = 1.0;
|
||||||
|
|
@ -149,7 +149,7 @@
|
||||||
|
|
||||||
master = {
|
master = {
|
||||||
special_scale_factor = 1;
|
special_scale_factor = 1;
|
||||||
no_gaps_when_only = true;
|
# no_gaps_when_only = true; # Returns errors for some reason
|
||||||
};
|
};
|
||||||
|
|
||||||
decoration = {
|
decoration = {
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
{
|
{
|
||||||
imports = [ (import ./hyprland.nix) ]
|
imports = [ (import ./hyprland.nix) ]
|
||||||
++ [ (import ./config.nix) ]
|
++ [ (import ./config.nix) ]
|
||||||
|
++ [ (import ./scripts.nix) ]
|
||||||
++ [ (import ./variables.nix) ]
|
++ [ (import ./variables.nix) ]
|
||||||
++ [ (import ./hyprlock.nix) ]
|
++ [ (import ./hyprlock.nix) ]
|
||||||
++ [ inputs.hyprland.homeManagerModules.default ];
|
++ [ inputs.hyprland.homeManagerModules.default ];
|
||||||
|
|
|
||||||
132
modules/home/hyprland/scripts.nix
Normal file
132
modules/home/hyprland/scripts.nix
Normal file
|
|
@ -0,0 +1,132 @@
|
||||||
|
{ pkgs, username, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.file = {
|
||||||
|
"/home/${username}/.local/bin/hyprland-smart-borders" = {
|
||||||
|
executable = true;
|
||||||
|
text = ''
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
function handle {
|
||||||
|
if [[ ''${1:0:10} == "openwindow" ]]
|
||||||
|
then
|
||||||
|
window_id=$(echo $1 | cut --delimiter ">" --fields=3 | cut --delimiter "," --fields=1)
|
||||||
|
workspace_id=$(echo $1 | cut --delimiter ">" --fields=3 | cut --delimiter "," --fields=2)
|
||||||
|
if [[ $workspace_id == "special" ]]
|
||||||
|
then
|
||||||
|
workspace_id=-99
|
||||||
|
fi
|
||||||
|
windows=$(hyprctl workspaces -j | jq ".[] | select(.id == $workspace_id) | .windows")
|
||||||
|
|
||||||
|
if [[ $windows -eq 1 ]]
|
||||||
|
then
|
||||||
|
floating_status=$(hyprctl clients -j | jq ".[] | select(.address == \"0x$window_id\" ) | .floating" )
|
||||||
|
if [[ $floating_status == "false" ]]
|
||||||
|
then
|
||||||
|
hyprctl setprop address:0x$window_id forcenoborder 1 lock
|
||||||
|
else
|
||||||
|
hyprctl setprop address:0x$window_id forcenoborder 0 lock
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif [[ $windows -eq 2 ]]
|
||||||
|
then
|
||||||
|
addresses=$(hyprctl clients -j | jq -r --arg foo "$foo" ".[] | select(.workspace.id == $workspace_id) | .address")
|
||||||
|
for address in $addresses
|
||||||
|
do
|
||||||
|
if [[ "$address" != "$window_id" ]]; then
|
||||||
|
hyprctl setprop address:$(echo $address | xargs) forcenoborder 0 lock
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif [[ ''${1:0:10} == "movewindow" ]]
|
||||||
|
then
|
||||||
|
window_id=$(echo $1 | cut --delimiter ">" --fields=3 | cut --delimiter "," --fields=1)
|
||||||
|
workspace_id=$(echo $1 | cut --delimiter ">" --fields=3 | cut --delimiter "," --fields=2)
|
||||||
|
|
||||||
|
# Sepcial workspaces have an id of -99, they need to be handled separately
|
||||||
|
if [[ $workspace_id == "special" ]]
|
||||||
|
then
|
||||||
|
workspace_id=-99
|
||||||
|
fi
|
||||||
|
|
||||||
|
windows=$(hyprctl workspaces -j | jq ".[] | select(.id == $workspace_id) | .windows")
|
||||||
|
|
||||||
|
if [[ $windows -eq 1 ]]
|
||||||
|
then
|
||||||
|
# Check if the current window is floating and then set the border accordingly
|
||||||
|
floating_status=$(hyprctl clients -j | jq ".[] | select(.address == \"0x$window_id\" ) | .floating" )
|
||||||
|
if [[ $floating_status == "false" ]]
|
||||||
|
then
|
||||||
|
hyprctl setprop address:0x$window_id forcenoborder 1 lock
|
||||||
|
else
|
||||||
|
hyprctl setprop address:0x$window_id forcenoborder 0 lock
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
elif [[ $windows -eq 2 ]]
|
||||||
|
then
|
||||||
|
addresses=$(hyprctl clients -j | jq -r --arg foo "$foo" ".[] | select(.workspace.id == $workspace_id) | .address")
|
||||||
|
for address in $addresses
|
||||||
|
do
|
||||||
|
if [[ "$address" != "$window_id" ]]; then
|
||||||
|
hyprctl setprop address:$(echo $address | xargs) forcenoborder 0 lock
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Handle all the other workspaces with only one window
|
||||||
|
single_window_workspaces=$(hyprctl workspaces -j | jq '.[] | select(.windows == 1)' | jq ".id")
|
||||||
|
for workspace in $single_window_workspaces
|
||||||
|
do
|
||||||
|
window=$(hyprctl clients -j | jq ".[] | select(.workspace.id == $workspace) | .address")
|
||||||
|
hyprctl setprop address:$(echo $window | xargs) forcenoborder 1 lock
|
||||||
|
done
|
||||||
|
|
||||||
|
elif [[ ''${1:0:11} == "closewindow" ]]
|
||||||
|
then
|
||||||
|
workspace_id=$(hyprctl activewindow -j | jq ".workspace.id")
|
||||||
|
windows=$(hyprctl workspaces -j | jq ".[] | select(.id == $workspace_id) | .windows")
|
||||||
|
|
||||||
|
if [[ $windows -eq 1 ]]
|
||||||
|
then
|
||||||
|
window_id=$(hyprctl activewindow -j | jq -r ".address")
|
||||||
|
floating_status=$(hyprctl activewindow -j | jq ".floating")
|
||||||
|
if [[ $floating_status == "false" ]]
|
||||||
|
then
|
||||||
|
hyprctl setprop address:$window_id forcenoborder 1 lock
|
||||||
|
else
|
||||||
|
hyprctl setprop address:$window_id forcenoborder 0 lock
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif [[ ''${1:0:18} == "changefloatingmode" ]]
|
||||||
|
then
|
||||||
|
floating_status=$(echo $1 | cut --delimiter ">" --fields 3 | cut --delimiter "," --fields 2)
|
||||||
|
address="0x$(echo $1 | cut --delimiter ">" --fields 3 | cut --delimiter "," --fields 1)"
|
||||||
|
workspace_id=$(hyprctl clients -j | jq --arg address "$address" '.[] | select(.address == $address) | .workspace.id')
|
||||||
|
if [[ $floating_status -eq 1 ]]
|
||||||
|
then
|
||||||
|
hyprctl setprop address:$address forcenoborder 0 lock
|
||||||
|
else
|
||||||
|
no_windows=$(hyprctl workspaces -j | jq ".[] | select(.id == $workspace_id) | .windows")
|
||||||
|
if [[ $no_windows -eq 1 ]]
|
||||||
|
then
|
||||||
|
hyprctl setprop address:$address forcenoborder 1 lock
|
||||||
|
else
|
||||||
|
hyprctl setprop address:$address forcenoborder 0 lock
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Socket directory has changed in Hyprland v0.40.0
|
||||||
|
# socat - UNIX-CONNECT:/tmp/hypr/$(echo $HYPRLAND_INSTANCE_SIGNATURE)/.socket2.sock | while read line; do handle $line; done
|
||||||
|
socat - UNIX-CONNECT:$(echo $XDG_RUNTIME_DIR)/hypr/$(echo $HYPRLAND_INSTANCE_SIGNATURE)/.socket2.sock | while read line; do handle $line; done
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue