diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf index 7d53fda..38f7bd4 100644 --- a/hypr/hyprland.conf +++ b/hypr/hyprland.conf @@ -59,7 +59,7 @@ env = HYPRCURSOR_SIZE,24 general { gaps_in = 15 - gaps_out = 25 + gaps_out = 30 border_size = 1 col.active_border = rgba(E96375ff) rgba(9E2238ff) 45deg col.inactive_border = rgba(4B535Bff) # rgba(595959aa) @@ -139,7 +139,7 @@ animations { animation = fadeOut, 1, 1.46, almostLinear animation = fade, 1, 3.03, quick animation = layers, 1, 3.81, easeOutQuint - animation = layersIn, 1, 4, easeOutQuint, fade + animation = layersIn, 1, 3, easeOutQuint, fade animation = layersOut, 1, 1.5, linear, fade animation = fadeLayersIn, 1, 1.79, almostLinear animation = fadeLayersOut, 1, 1.39, almostLinear @@ -151,9 +151,9 @@ animations { animation = layers, 1, 7, default, slide } -workspace = 10, monitor:eDP-1 -workspace = 11, monitor:eDP-1 -workspace = 12, monitor:eDP-1 +workspace = 10, monitor:HDMI-A-1 +workspace = 11, monitor:HDMI-A-1 +workspace = 12, monitor:HDMI-A-1 workspace = 1, monitor:HDMI-A-1 workspace = 2, monitor:HDMI-A-1 workspace = 3, monitor:HDMI-A-1 @@ -166,6 +166,8 @@ workspace = 9, monitor:HDMI-A-1 workspace = special:magic workspace = special:dungeon +workspace = r[13-255], animation:none, on-created-empty:hyprctl dispatch workspace previous + 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 @@ -281,6 +283,9 @@ bind = $mainMod, N, exec, $notificationCenter # Open floating terminal bind = $mainMod SHIFT, Return, exec, $fastTerminal --class kitty-float +# Open btop +bind = CTRL SHIFT, Escape, exec, kitty --class kitty-float-large btop + # Open bluetooth bind = $mainMod, F3, exec, $fastTerminal --class kitty-float bluetui @@ -301,6 +306,7 @@ bind = $mainMod, S, togglefloating, bind = $mainMod, T, settiled, bind = $mainMod, F, fullscreen, bind = $mainMod CTRL, P, pin +bind = $mainMod CTRL, S, pseudo # Bring to top bind = $mainMod, Z, bringactivetotop @@ -339,18 +345,18 @@ bindr = $mainMod, minus, workspace, 11 bindr = $mainMod, equal, workspace, 12 # Switch to workspace and send it to another monitor -bindo = $mainMod, 1, exec, hyprctl dispatch workspace 1 && hyprctl dispatch movecurrentworkspacetomonitor +1 -bindo = $mainMod, 2, exec, hyprctl dispatch workspace 2 && hyprctl dispatch movecurrentworkspacetomonitor +1 -bindo = $mainMod, 3, exec, hyprctl dispatch workspace 3 && hyprctl dispatch movecurrentworkspacetomonitor +1 -bindo = $mainMod, 4, exec, hyprctl dispatch workspace 4 && hyprctl dispatch movecurrentworkspacetomonitor +1 -bindo = $mainMod, 5, exec, hyprctl dispatch workspace 5 && hyprctl dispatch movecurrentworkspacetomonitor +1 -bindo = $mainMod, 6, exec, hyprctl dispatch workspace 6 && hyprctl dispatch movecurrentworkspacetomonitor +1 -bindo = $mainMod, 7, exec, hyprctl dispatch workspace 7 && hyprctl dispatch movecurrentworkspacetomonitor +1 -bindo = $mainMod, 8, exec, hyprctl dispatch workspace 8 && hyprctl dispatch movecurrentworkspacetomonitor +1 -bindo = $mainMod, 9, exec, hyprctl dispatch workspace 9 && hyprctl dispatch movecurrentworkspacetomonitor +1 -bindo = $mainMod, 0, exec, hyprctl dispatch workspace 10 && hyprctl dispatch movecurrentworkspacetomonitor +1 -bindo = $mainMod, minus, exec, hyprctl dispatch workspace 11 && hyprctl dispatch movecurrentworkspacetomonitor +1 -bindo = $mainMod, equal, exec, hyprctl dispatch workspace 12 && hyprctl dispatch movecurrentworkspacetomonitor +1 +bindo = $mainMod, 1, exec, ~/.config/hypr/scripts/focus_workspace_with_monitor_swap.sh 1 +bindo = $mainMod, 2, exec, ~/.config/hypr/scripts/focus_workspace_with_monitor_swap.sh 2 +bindo = $mainMod, 3, exec, ~/.config/hypr/scripts/focus_workspace_with_monitor_swap.sh 3 +bindo = $mainMod, 4, exec, ~/.config/hypr/scripts/focus_workspace_with_monitor_swap.sh 4 +bindo = $mainMod, 5, exec, ~/.config/hypr/scripts/focus_workspace_with_monitor_swap.sh 5 +bindo = $mainMod, 6, exec, ~/.config/hypr/scripts/focus_workspace_with_monitor_swap.sh 6 +bindo = $mainMod, 7, exec, ~/.config/hypr/scripts/focus_workspace_with_monitor_swap.sh 7 +bindo = $mainMod, 8, exec, ~/.config/hypr/scripts/focus_workspace_with_monitor_swap.sh 8 +bindo = $mainMod, 9, exec, ~/.config/hypr/scripts/focus_workspace_with_monitor_swap.sh 9 +bindo = $mainMod, 0, exec, ~/.config/hypr/scripts/focus_workspace_with_monitor_swap.sh 10 +bindo = $mainMod, minus, exec, ~/.config/hypr/scripts/focus_workspace_with_monitor_swap.sh 11 +bindo = $mainMod, equal, exec, ~/.config/hypr/scripts/focus_workspace_with_monitor_swap.sh 12 # Move active window to a workspace with mainMod + SHIFT + [0-9] bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1 @@ -584,6 +590,23 @@ windowrule { match:class = ^(kitty-float)$ } +# Floating large kitty +windowrule { + name = windowrule-21 + float = on + size = 1200 800 + center = on + match:class = ^(kitty-float-large)$ +} + +# Floating large kitty +windowrule { + name = waydroid + float = on + size = 520 960 + center = on + match:class = ^(Waydroid)$ +} windowrule { name = windowrule-3 @@ -750,7 +773,6 @@ layerrule { # Adjustments for certain workspaces workspace = special:magic, gapsin:20, gapsout:50, shadow:false -workspace = 9, gapsin:15, gapsout:40 ############### ### PLUGINS ### diff --git a/hypr/scripts/focus_workspace_with_monitor_swap.sh b/hypr/scripts/focus_workspace_with_monitor_swap.sh new file mode 100755 index 0000000..42bc546 --- /dev/null +++ b/hypr/scripts/focus_workspace_with_monitor_swap.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env bash + +# focus_workspace_with_monitor_swap.sh – move workspace to the other monitor and focus it +# Usage: focus_workspace_with_monitor_swap.sh + +workspace="$1" +if [[ -z "$workspace" ]]; then + echo "Usage: $0 " + exit 1 +fi + +# Get monitor information (plain text) +monitor_output=$(hyprctl monitors) + +# Extract monitor IDs and find the focused one +declare -a monitor_ids=() +focused_id="" +while IFS= read -r line; do + if [[ "$line" =~ Monitor[[:space:]]([^[:space:]]+)[[:space:]]\(ID[[:space:]]([0-9]+)\) ]]; then + mon_name="${BASH_REMATCH[1]}" + mon_id="${BASH_REMATCH[2]}" + monitor_ids+=("$mon_id") + fi + if [[ "$line" =~ focused:[[:space:]]yes ]]; then + # The focused monitor is the one we just parsed (the previous line had its ID) + focused_id="$mon_id" + fi +done <<< "$monitor_output" + +if [[ ${#monitor_ids[@]} -ne 2 ]]; then + echo "Warning: Expected exactly 2 monitors, found ${#monitor_ids[@]}. Using fallback (+1)." + # Fallback: just move to next monitor (original behaviour) + hyprctl dispatch moveworkspacetomonitor "$workspace" +1 + hyprctl dispatch workspace "$workspace" + exit 0 +fi + +# Determine the "other" monitor ID +other_id="" +for id in "${monitor_ids[@]}"; do + if [[ "$id" != "$focused_id" ]]; then + other_id="$id" + break + fi +done + +if [[ -z "$other_id" ]]; then + echo "Error: Could not determine the other monitor." + exit 1 +fi + +# Check if the workspace already exists and find its current monitor +current_monitor_id="" +workspace_output=$(hyprctl workspaces) +in_workspace_block=false +while IFS= read -r line; do + if [[ "$line" =~ workspace[[:space:]]ID[[:space:]]([0-9]+)[[:space:]] ]]; then + wid="${BASH_REMATCH[1]}" + if [[ "$wid" == "$workspace" ]]; then + in_workspace_block=true + else + in_workspace_block=false + fi + fi + if $in_workspace_block && [[ "$line" =~ monitorID:[[:space:]]([0-9]+) ]]; then + current_monitor_id="${BASH_REMATCH[1]}" + break + fi +done <<< "$workspace_output" + +if [[ -n "$current_monitor_id" ]]; then + # Workspace exists – move it to the monitor that is NOT its current one + if [[ "$current_monitor_id" == "$focused_id" ]]; then + target_id="$other_id" + else + target_id="$focused_id" + fi +else + # Workspace does not exist – create it on the monitor that is NOT focused + target_id="$other_id" +fi + +# Move the workspace (creates it if needed) and then focus it +hyprctl dispatch moveworkspacetomonitor "$workspace" "$target_id" +hyprctl dispatch workspace "$workspace" diff --git a/hypr/scripts/toggle_mirror_display.sh b/hypr/scripts/toggle_mirror_display.sh index 5f4d0b4..bebb66e 100755 --- a/hypr/scripts/toggle_mirror_display.sh +++ b/hypr/scripts/toggle_mirror_display.sh @@ -3,7 +3,7 @@ # Define the file to modify FILE="$HOME/.config/hypr/monitors.conf" -DELAY="0.5" +DELAY="1" # Get specific lines from the file LINE_DISABLE=$(sed -n '3p' "$FILE") # 3rd line: disable HDMI diff --git a/hypr/scripts/toggle_proxy.sh b/hypr/scripts/toggle_proxy.sh index 2bd1270..f907424 100755 --- a/hypr/scripts/toggle_proxy.sh +++ b/hypr/scripts/toggle_proxy.sh @@ -2,22 +2,41 @@ TOGGLE_FILE="/tmp/toggle_ssocks" -kill_process() { - local process_name="$1" - killall "$process_name" 2>/dev/null - sleep 0.25 - killall -9 "$process_name" 2>/dev/null 2>&1 +report_running_status() { + if [ -f "$TOGGLE_FILE" ]; then + echo "true" + else + echo "false" + fi } +kill_process() { + local process_name="$1" + # Graceful kill + killall "$process_name" 2>/dev/null + sleep 0.25 + # Force kill if still running, suppressing all output + killall -9 "$process_name" &>/dev/null +} + +# Handle the "get" command +if [ "$1" = "get" ]; then + report_running_status + exit +fi + +# If no argument or any other argument, perform toggle kill_process sslocal kill_process spoof-dpi if [ -f "$TOGGLE_FILE" ]; then - echo "Enabling spoofdpi" - http_proxy="" spoof-dpi -addr 127.0.0.1 -port 1080 >/dev/null 2>&1 & - rm "$TOGGLE_FILE" + echo "Enabling spoofdpi" + http_proxy="" spoof-dpi -addr 127.0.0.1 -port 1080 >/dev/null 2>&1 & + http_proxy="" sslocal -c /etc/shadowsocks-rust/hostvds.json >/dev/null 2>&1 & + rm "$TOGGLE_FILE" else - echo "Enabling shadowsocks" - http_proxy="" sslocal -c /etc/shadowsocks-rust/mega.json >/dev/null 2>&1 & - touch "$TOGGLE_FILE" + echo "Enabling shadowsocks" + http_proxy="" sslocal -c /etc/shadowsocks-rust/mega.json >/dev/null 2>&1 & + http_proxy="" sslocal -c /etc/shadowsocks-rust/hostvds.json >/dev/null 2>&1 & + touch "$TOGGLE_FILE" fi