Compare commits

...

32 Commits

Author SHA1 Message Date
273c4d090c Revert env 2026-04-17 15:01:12 +01:00
a88a419669 Update tmux binding 2026-04-11 14:16:05 +01:00
b5471c5f25 Remove env 2026-04-06 19:42:00 +01:00
422466e483 Improve hypr 2026-04-06 17:52:40 +01:00
ee49471228 Update neovim 2026-04-06 15:04:22 +01:00
802f0dd84e Update gradle 2026-04-06 14:13:24 +01:00
5570e58efc Update android home 2026-04-06 13:55:37 +01:00
5d687eb837 Scaling 2026-04-05 19:59:28 +01:00
e46820b5f7 Update workspaces 2026-04-04 20:36:10 +01:00
ab9854d12f Walker 2026-04-01 20:37:45 +01:00
2e83db4b69 Navigation improvements 2026-03-31 21:52:20 +01:00
b27f3fa744 Backgrounds 2026-03-30 19:40:32 +01:00
1c845777e8 Tablet settings 2026-03-28 17:49:13 +00:00
e1eb5794c5 Update env 2026-03-27 21:40:10 +00:00
b5f7738df3 Fix issue 2026-03-27 09:47:44 +00:00
6817507506 Add gemini path 2026-03-27 09:44:04 +00:00
2a993c2ceb Remove failing line 2026-03-27 09:43:32 +00:00
e2069193fe Remove warning 2026-03-27 09:08:26 +00:00
dc16123c82 Fix binding for Enpass 2026-03-24 19:02:42 +00:00
641212f0e3 Fixing lock time 2026-03-23 22:16:03 +00:00
5e57111548 env variables 2026-03-23 21:12:33 +00:00
2e148cb31a Try different scaling 2026-03-23 20:39:48 +00:00
be76b81d6e Hardcode monitor layout 2026-03-23 20:12:35 +00:00
815c1f4edb Add nix conf 2026-03-22 22:24:58 +00:00
6fb2964443 direnv 2026-03-22 22:03:39 +00:00
506e8ef15e Fix issue 2026-03-22 21:55:46 +00:00
f3f9e58805 Password directory 2026-03-22 21:28:41 +00:00
966d31c6a8 Script to set password 2026-03-22 14:01:11 +00:00
9e59127cb2 Add function for saving envs 2026-03-21 17:22:16 +00:00
22a684c1a6 Add function for saving envs 2026-03-21 17:10:09 +00:00
fd0ccc015b Improve scaling 2026-03-18 21:03:39 +00:00
fa735bac88 Update scaling 2026-03-17 20:12:11 +00:00
28 changed files with 327 additions and 183 deletions

View File

@@ -0,0 +1,110 @@
{
"Revision": "0.6.6.2",
"Profiles": [
{
"Tablet": "Wacom PTH-451",
"OutputMode": {
"Path": "OpenTabletDriver.Desktop.Output.LinuxArtistMode",
"Settings": [],
"Enable": true
},
"Filters": [],
"AbsoluteModeSettings": {
"Display": {
"Width": 2560.0,
"Height": 1440.0,
"X": 1280.0001,
"Y": 720.0,
"Rotation": 0.0
},
"Tablet": {
"Width": 157.48,
"Height": 88.5825,
"X": 78.74,
"Y": 49.2125,
"Rotation": 0.0
},
"EnableClipping": true,
"EnableAreaLimiting": false,
"LockAspectRatio": true
},
"RelativeModeSettings": {
"XSensitivity": 10.0,
"YSensitivity": 10.0,
"RelativeRotation": 0.0,
"RelativeResetDelay": "00:00:00.1000000"
},
"Bindings": {
"TipActivationThreshold": 1.0,
"TipButton": {
"Path": "OpenTabletDriver.Desktop.Binding.AdaptiveBinding",
"Settings": [
{
"Property": "Binding",
"Value": "Tip"
}
],
"Enable": true
},
"EraserActivationThreshold": 1.0,
"EraserButton": {
"Path": "OpenTabletDriver.Desktop.Binding.AdaptiveBinding",
"Settings": [
{
"Property": "Binding",
"Value": "Eraser"
}
],
"Enable": true
},
"PenButtons": [
{
"Path": "OpenTabletDriver.Desktop.Binding.AdaptiveBinding",
"Settings": [
{
"Property": "Binding",
"Value": "Button 1"
}
],
"Enable": true
},
{
"Path": "OpenTabletDriver.Desktop.Binding.AdaptiveBinding",
"Settings": [
{
"Property": "Binding",
"Value": "Button 2"
}
],
"Enable": true
}
],
"AuxButtons": [
{
"Path": "OpenTabletDriver.Desktop.Binding.MultiKeyBinding",
"Settings": [
{
"Property": "Keys",
"Value": "Control+Z"
}
],
"Enable": true
},
null,
null,
null,
null,
null
],
"MouseButtons": [],
"MouseScrollUp": null,
"MouseScrollDown": null,
"DisablePressure": false,
"DisableTilt": false
}
}
],
"LockUsableAreaDisplay": true,
"LockUsableAreaTablet": true,
"Tools": []
}

6
.config/direnv/direnvrc Normal file
View File

@@ -0,0 +1,6 @@
# Better support for Nix flakes
use_flake() {
watch_file flake.nix
watch_file flake.lock
eval "$(nix print-dev-env)"
}

View File

@@ -102,11 +102,17 @@ windowrule = tag -default-opacity, match:class com.libretro.RetroArch
windowrule = opacity 1 1, match:class com.libretro.RetroArch windowrule = opacity 1 1, match:class com.libretro.RetroArch
windowrule = idle_inhibit fullscreen, match:class com.libretro.RetroArch windowrule = idle_inhibit fullscreen, match:class com.libretro.RetroArch
# Scratchpad apps
windowrule = workspace special:scratchpad, match:class Spotify
windowrule = workspace special:scratchpad, match:class signal
windowrule = workspace special:scratchpad, match:class ^(chrome-discord.com__channels_@me-Default)$
windowrule = workspace special:scratchpad, match:class ^(chrome-web.whatsapp.com__-Default)$
# Float Nextcloud # Float Nextcloud
windowrule = float on, match:class com.nextcloud.desktopclient.nextcloud windowrule = float on, match:class com.nextcloud.desktopclient.nextcloud
# Position drawing # Position drawing
windowrule = workspace 4, match:class (krita) windowrule = workspace 5, match:class (krita)
windowrule = tag -default-opacity, match:class (krita) windowrule = tag -default-opacity, match:class (krita)
windowrule = opacity 1 1, match:class (krita) windowrule = opacity 1 1, match:class (krita)
@@ -116,7 +122,7 @@ windowrule = workspace 7, match:class ^(chrome-netflix.com__-Default)$
# Float Steam # Float Steam
windowrule = float on, match:class steam windowrule = float on, match:class steam
windowrule = workspace 5, match:class steam windowrule = workspace 7, match:class steam
windowrule = center on, match:class steam, match:title Steam windowrule = center on, match:class steam, match:title Steam
windowrule = tag -default-opacity, match:class steam.* windowrule = tag -default-opacity, match:class steam.*
windowrule = opacity 1 1, match:class steam.* windowrule = opacity 1 1, match:class steam.*
@@ -126,7 +132,7 @@ windowrule = idle_inhibit fullscreen, match:class steam
# Float Lunar Client # Float Lunar Client
windowrule = float on, match:class lunarclient windowrule = float on, match:class lunarclient
windowrule = workspace 5, match:class lunarclient windowrule = workspace 7, match:class lunarclient
windowrule = center on, match:class lunarclient windowrule = center on, match:class lunarclient
windowrule = tag -default-opacity, match:class lunarclient windowrule = tag -default-opacity, match:class lunarclient
windowrule = opacity 1 1, match:class lunarclient windowrule = opacity 1 1, match:class lunarclient

View File

@@ -1,8 +1,9 @@
exec-once = uwsm-app -- hypridle exec-once = uwsm-app -- hypridle
exec-once = uwsm-app -- mako exec-once = uwsm-app -- mako
# exec-once = Enpass
# exec-once = uwsm-app -- waybar # exec-once = uwsm-app -- waybar
exec-once = uwsm-app -- fcitx5 --disable notificationitem exec-once = uwsm-app -- fcitx5 --disable notificationitem
exec-once = uwsm-app -- swaybg -i ~/.config/station/current/background -m fill exec-once = station-bg-random
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
# Slow app launch fix -- set systemd vars # Slow app launch fix -- set systemd vars

View File

@@ -60,68 +60,15 @@ bindd = SUPER, L, Move window focus right, movefocus, r
bindd = SUPER, K, Move window focus up, movefocus, u bindd = SUPER, K, Move window focus up, movefocus, u
bindd = SUPER, J, Move window focus down, movefocus, d bindd = SUPER, J, Move window focus down, movefocus, d
# Switch workspaces with SUPER + [1-9; 0]
bindd = SUPER, code:10, Switch to workspace 1, workspace, 1
bindd = SUPER, code:11, Switch to workspace 2, workspace, 2
bindd = SUPER, code:12, Switch to workspace 3, workspace, 3
bindd = SUPER, code:13, Switch to workspace 4, workspace, 4
bindd = SUPER, code:14, Switch to workspace 5, workspace, 5
bindd = SUPER, code:15, Switch to workspace 6, workspace, 6
bindd = SUPER, code:16, Switch to workspace 7, workspace, 7
bindd = SUPER, code:17, Switch to workspace 8, workspace, 8
bindd = SUPER, code:18, Switch to workspace 9, workspace, 9
bindd = SUPER, code:19, Switch to workspace 10, workspace, 10
# Move active window to a workspace with SUPER + SHIFT + [1-9; 0]
bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1
bindd = SUPER SHIFT, code:11, Move window to workspace 2, movetoworkspace, 2
bindd = SUPER SHIFT, code:12, Move window to workspace 3, movetoworkspace, 3
bindd = SUPER SHIFT, code:13, Move window to workspace 4, movetoworkspace, 4
bindd = SUPER SHIFT, code:14, Move window to workspace 5, movetoworkspace, 5
bindd = SUPER SHIFT, code:15, Move window to workspace 6, movetoworkspace, 6
bindd = SUPER SHIFT, code:16, Move window to workspace 7, movetoworkspace, 7
bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8
bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9
bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10
# Move active window silently to a workspace with SUPER + SHIFT + ALT + [1-9; 0]
bindd = SUPER SHIFT ALT, code:10, Move window silently to workspace 1, movetoworkspacesilent, 1
bindd = SUPER SHIFT ALT, code:11, Move window silently to workspace 2, movetoworkspacesilent, 2
bindd = SUPER SHIFT ALT, code:12, Move window silently to workspace 3, movetoworkspacesilent, 3
bindd = SUPER SHIFT ALT, code:13, Move window silently to workspace 4, movetoworkspacesilent, 4
bindd = SUPER SHIFT ALT, code:14, Move window silently to workspace 5, movetoworkspacesilent, 5
bindd = SUPER SHIFT ALT, code:15, Move window silently to workspace 6, movetoworkspacesilent, 6
bindd = SUPER SHIFT ALT, code:16, Move window silently to workspace 7, movetoworkspacesilent, 7
bindd = SUPER SHIFT ALT, code:17, Move window silently to workspace 8, movetoworkspacesilent, 8
bindd = SUPER SHIFT ALT, code:18, Move window silently to workspace 9, movetoworkspacesilent, 9
bindd = SUPER SHIFT ALT, code:19, Move window silently to workspace 10, movetoworkspacesilent, 10
# Control scratchpad # Control scratchpad
bindd = SUPER, S, Toggle scratchpad, togglespecialworkspace, scratchpad bindd = SUPER, S, Toggle scratchpad, togglespecialworkspace, scratchpad
bindd = SUPER ALT, S, Move window to scratchpad, movetoworkspacesilent, special:scratchpad bindd = SUPER ALT, S, Move window to scratchpad, movetoworkspacesilent, special:scratchpad
# TAB between workspaces
bindd = SUPER, TAB, Next workspace, workspace, e+1
bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1
bindd = SUPER CTRL, TAB, Former workspace, workspace, previous
# Move workspaces to other monitors
bindd = SUPER SHIFT ALT, LEFT, Move workspace to left monitor, movecurrentworkspacetomonitor, l
bindd = SUPER SHIFT ALT, RIGHT, Move workspace to right monitor, movecurrentworkspacetomonitor, r
bindd = SUPER SHIFT ALT, UP, Move workspace to up monitor, movecurrentworkspacetomonitor, u
bindd = SUPER SHIFT ALT, DOWN, Move workspace to down monitor, movecurrentworkspacetomonitor, d
# Swap active window with the one next to it with SUPER + SHIFT + arrow keys
bindd = SUPER SHIFT, LEFT, Swap window to the left, swapwindow, l
bindd = SUPER SHIFT, RIGHT, Swap window to the right, swapwindow, r
bindd = SUPER SHIFT, UP, Swap window up, swapwindow, u
bindd = SUPER SHIFT, DOWN, Swap window down, swapwindow, d
# Cycle through applications on active workspace # Cycle through applications on active workspace
bindd = ALT, TAB, Cycle to next window, cyclenext bindd = SUPER, TAB, Cycle to next window, cyclenext, visible
bindd = ALT SHIFT, TAB, Cycle to prev window, cyclenext, prev bindd = SUPER SHIFT, TAB, Cycle to prev window, cyclenext, visible prev
bindd = ALT, TAB, Reveal active window on top, bringactivetotop bindd = SUPER, TAB, Reveal active window on top, bringactivetotop
bindd = ALT SHIFT, TAB, Reveal active window on top, bringactivetotop bindd = SUPER SHIFT, TAB, Reveal active window on top, bringactivetotop
# Resize active window # Resize active window
bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key
@@ -233,7 +180,7 @@ bindd = SUPER CTRL, L, Lock system, exec, station-lock-screen
# ========================== # ==========================
# Applications # Applications
# ========================== # ==========================
bindd = SUPER, RETURN, Terminal, exec, uwsm-app -- xdg-terminal-exec --dir="$(station-cmd-terminal-cwd)" bindd = SUPER, RETURN, Terminal, exec, uwsm-app -- xdg-terminal-exec
bindd = SUPER ALT, RETURN, Tmux, exec, uwsm-app -- xdg-terminal-exec --dir="$(station-cmd-terminal-cwd)" tmux new bindd = SUPER ALT, RETURN, Tmux, exec, uwsm-app -- xdg-terminal-exec --dir="$(station-cmd-terminal-cwd)" tmux new
bindd = SUPER SHIFT, F, File manager, exec, uwsm-app -- nautilus --new-window bindd = SUPER SHIFT, F, File manager, exec, uwsm-app -- nautilus --new-window
bindd = SUPER ALT SHIFT, F, File manager (cwd), exec, uwsm-app -- nautilus --new-window "$(station-cmd-terminal-cwd)" bindd = SUPER ALT SHIFT, F, File manager (cwd), exec, uwsm-app -- nautilus --new-window "$(station-cmd-terminal-cwd)"
@@ -245,7 +192,7 @@ bindd = SUPER SHIFT, N, Editor, exec, station-launch-editor
bindd = SUPER SHIFT, G, Signal, exec, station-launch-or-focus ^signal$ "uwsm-app -- signal-desktop" bindd = SUPER SHIFT, G, Signal, exec, station-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"
bindd = SUPER SHIFT, O, Obsidian, exec, station-launch-or-focus ^obsidian$ "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime" bindd = SUPER SHIFT, O, Obsidian, exec, station-launch-or-focus ^obsidian$ "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime"
# bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora --enable-wayland-ime # bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora --enable-wayland-ime
bindd = SUPER SHIFT, SLASH, Passwords, exec, uwsm-app -- Enpass bindd = SUPER SHIFT, SLASH, Passwords, exec, Enpass showassistant
bindd = SUPER SHIFT, E, Email, exec, station-launch-or-focus mailspring bindd = SUPER SHIFT, E, Email, exec, station-launch-or-focus mailspring
# If your web app url contains #, type it as ## to prevent hyprland treating it as a comment # If your web app url contains #, type it as ## to prevent hyprland treating it as a comment

View File

@@ -6,12 +6,12 @@ general {
} }
listener { listener {
timeout = 150 # 2.5min timeout = 300 # 5min
on-timeout = pidof hyprlock || station-launch-screensaver # start screensaver (if we haven't locked already) on-timeout = pidof hyprlock || station-launch-screensaver # start screensaver (if we haven't locked already)
} }
listener { listener {
timeout = 151 # 5min timeout = 301 # 5min
on-timeout = loginctl lock-session # lock screen when timeout has passed on-timeout = loginctl lock-session # lock screen when timeout has passed
} }
@@ -23,6 +23,6 @@ listener {
listener { listener {
timeout = 330 # 5.5min timeout = 330 # 5.5min
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed on-timeout = station-system-suspend # suspend when timeout has passed
on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected
} }

View File

@@ -7,4 +7,4 @@ source = ~/.config/hypr/windows.conf
source = ~/.config/hypr/monitors.conf source = ~/.config/hypr/monitors.conf
source = ~/.config/hypr/looknfeel.conf source = ~/.config/hypr/looknfeel.conf
source = ~/.config/hypr/autostart.conf source = ~/.config/hypr/autostart.conf
# source = ~/.config/hypr/theme.conf source = ~/.config/hypr/workspaces.conf

View File

@@ -134,6 +134,7 @@ misc {
focus_on_activate = true focus_on_activate = true
anr_missed_pings = 3 anr_missed_pings = 3
on_focus_under_fullscreen = 1 on_focus_under_fullscreen = 1
disable_watchdog_warning = true
} }
# https://wiki.hypr.land/Configuring/Variables/#cursor # https://wiki.hypr.land/Configuring/Variables/#cursor

View File

@@ -3,11 +3,9 @@
# Format: monitor = [port], resolution, position, scale # Format: monitor = [port], resolution, position, scale
# Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K. # Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K.
# env = GDK_SCALE,2 # monitor=eDP-1,3840x2160,0x0,2
env = QT_AUTO_SCREEN_SCALE_FACTOR,1 monitor=desc:Samsung Electric Company LU28R55 HNMN500475,3840x2160,auto-left,1.5
env = QT_ENABLE_HIGHDPI_SCALING,1 monitor=desc:Samsung Electric Company LU28R55 HNMN500462,3840x2160,auto-right,1.5
# env = QT_SCREEN_SCALE_FACTORS,2
monitor=eDP-1,3840x2160,0x0,2
# monitor=HDMI-A-1,preferred,auto,auto # monitor=HDMI-A-1,preferred,auto,auto
# Good compromise for 27" or 32" 4K monitors (but fractional!) # Good compromise for 27" or 32" 4K monitors (but fractional!)

View File

@@ -0,0 +1,33 @@
workspace = 1, monitor:DP-1
workspace = 2, monitor:DP-2
workspace = 3, monitor:DP-1
workspace = 4, monitor:DP-2
workspace = 5, monitor:DP-1
workspace = 6, monitor:DP-2
workspace = 7, monitor:DP-1
workspace = 8, monitor:DP-2
workspace = 9, monitor:DP-1
workspace = 10, monitor:DP-2
bindd = SUPER, code:10, Switch to Home, workspace, 2
bindd = SUPER, code:10, Switch to Home, workspace, 1
bindd = SUPER, code:11, Switch to Dev, workspace, 4
bindd = SUPER, code:11, Switch to Dev, workspace, 3
bindd = SUPER, code:12, Switch to Art, workspace, 6
bindd = SUPER, code:12, Switch to Art, workspace, 5
bindd = SUPER, code:13, Switch to Gaming, workspace, 8
bindd = SUPER, code:13, Switch to Gaming, workspace, 7
bindd = SUPER, code:14, Switch to Writing, workspace, 10
bindd = SUPER, code:14, Switch to Writing, workspace, 9
# Move active window to a workspace with SUPER + SHIFT + [1-9; 0]
bindd = SUPER SHIFT, code:10, Move window to workspace 1, exec, station-move-to-workspace 1
bindd = SUPER SHIFT, code:11, Move window to workspace 1, exec, station-move-to-workspace 2
bindd = SUPER SHIFT, code:12, Move window to workspace 1, exec, station-move-to-workspace 3
bindd = SUPER SHIFT, code:13, Move window to workspace 1, exec, station-move-to-workspace 4
bindd = SUPER SHIFT, code:14, Move window to workspace 1, exec, station-move-to-workspace 5
bindd = SUPER SHIFT, L, Move window to right monitor, movewindow, r
bindd = SUPER SHIFT, H, Move window to left monitor, movewindow, l
bindd = SUPER SHIFT, J, Move window to right monitor, movewindow, d
bindd = SUPER SHIFT, K, Move window to left monitor, movewindow, u

1
.config/nix/nix.conf Normal file
View File

@@ -0,0 +1 @@
extra-experimental-features = flakes nix-command

View File

@@ -1,35 +0,0 @@
OPENROUTER_API_KEY=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
OPENROUTER_API_BASE=https://openrouter.ai/api
AIHUBMIX_API_KEY=sk-0ArIwI5NaUF1U1Z6F9D9CeF8C155436bA7E8A8107cFf7f7b
AIHUBMIX_API_BASE=https://aihubmix.com/api
#COPILOT_API_KEY=ghu_XOB0IcwvOBthQxxZea0EBhZHjn0aBW17UHml
#COPILOT_API_BASE=https://api.githubcopilot.com
COPILOT_API_KEY=
COPILOT_API_BASE=
DEFAULT_OPENAI_API_KEY=${OPENROUTER_API_KEY}
DEFAULT_OPENAI_API_BASE=${OPENROUTER_API_BASE}
# DEFAULT_AI_MODEL=openai/gpt-5.2-codex
DEFAULT_AI_MODEL=auto
REASONING_OPENAI_API_KEY=${OPENROUTER_API_KEY}
REASONING_OPENAI_API_BASE=${OPENROUTER_API_BASE}
#REASONING_MODEL=openai/gpt-5.1-codex
# REASONING_MODEL=moonshotai/kimi-k2-thinking
REASONING_MODEL=anthropic/claude-opus-4.6
FAST_OPENAI_API_KEY=${OPENROUTER_API_KEY}
FAST_OPENAI_API_BASE=${OPENROUTER_API_BASE}
FAST_MODEL=qwen/qwen3-max
COMPLETION_OPENAI_API_KEY=${OPENROUTER_API_KEY}
COMPLETION_OPENAI_API_BASE=${OPENROUTER_API_BASE}
COMPLETION_MODEL=google/gemini-3-flash-preview
# COMPLETION_MODEL=anthropic/claude-3-haiku
OPENAI_API_KEY=${DEFAULT_OPENAI_API_KEY}
OPENAI_API_BASE=${DEFAULT_OPENAI_API_BASE}
AIDER_OPENAI_API_KEY=${DEFAULT_OPENAI_API_KEY}
AIDER_OPENAI_API_BASE=${DEFAULT_OPENAI_API_BASE}

View File

@@ -89,10 +89,6 @@ alias \
notes="cd ~/Tower/Notes && nvim ." \ notes="cd ~/Tower/Notes && nvim ." \
aid="aider" aid="aider"
# Projects
alias \
src="tmuxinator start runcats"
# Dev # Dev
alias \ alias \
sail='[ -f sail ] && sh sail || sh vendor/bin/sail' \ sail='[ -f sail ] && sh sail || sh vendor/bin/sail' \

View File

@@ -225,10 +225,10 @@ img2png() {
-define png:compression-strategy=1 \ -define png:compression-strategy=1 \
-define png:exclude-chunk=all \ -define png:exclude-chunk=all \
"${img%.*}-optimized.png" "${img%.*}-optimized.png"
} }
# Create a new worktree and branch from within current git directory. # Create a new worktree and branch from within current git directory.
ga() { gwa() {
if [[ -z "$1" ]]; then if [[ -z "$1" ]]; then
echo "Usage: ga [branch name]" echo "Usage: ga [branch name]"
return 1 return 1
@@ -244,7 +244,7 @@ ga() {
} }
# Remove worktree and branch from within active worktree directory. # Remove worktree and branch from within active worktree directory.
gd() { gwd() {
if gum confirm "Remove worktree and branch?"; then if gum confirm "Remove worktree and branch?"; then
local cwd base branch root local cwd base branch root
@@ -263,3 +263,43 @@ gd() {
fi fi
fi fi
} }
linkenv() {
local env="${1:-dev}"
local env_files_directory="$HOME/Tower/.backups/Development/Environments"
# Fetch the closest git parent or current directory if not
local root_dir=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
local project_name=$(basename "$root_dir")
local source_file="$env_files_directory/${project_name}-${env}-env"
local target_file="$root_dir/.env"
if [[ -f "$target_file" ]]; then
if gum confirm "Overwrite existing .env file?"; then
if [[ -L "$target_file" ]]; then
rm "$target_file"
else
mv "$target_file" "${target_file}.bak"
echo "Existing .env backed up to .env.bak"
fi
else
return 1
fi
fi
if [[ -f "$source_file" ]]; then
ln -sf "$source_file" "$target_file"
echo "Linked $source_file -> $target_file"
else
echo "No environment file found for $project_name at $source_file copying example, copying example if exists"
if [[ -f "$root_dir/.env.example" ]]; then
cp "$root_dir/.env.example" "$source_file"
ln -sf "$source_file" "$target_file"
echo "Copied .env.example to $source_file and linked"
else
echo "No .env.example found."
fi
fi
}

View File

@@ -47,6 +47,7 @@ export ANDROID_AVD_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/android/avd"
export ANDROID_USER_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/android" export ANDROID_USER_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/android"
export CODEX_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/codex" export CODEX_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/codex"
export XCOMPOSEFILE="${XDG_CONFIG_HOME:-$HOME/.config}/xcompose" export XCOMPOSEFILE="${XDG_CONFIG_HOME:-$HOME/.config}/xcompose"
export GEMINI_CLI_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
# Export OPENAI_API_KEY from GitHub Copilot config # Export OPENAI_API_KEY from GitHub Copilot config
# if [ -f "$HOME/.config/github-copilot/apps.json" ]; then # if [ -f "$HOME/.config/github-copilot/apps.json" ]; then
@@ -76,8 +77,9 @@ export MOZ_USE_XINPUT2="1" # Mozilla smooth scrolling/touchpads.
export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm
# Development variables # Development variables
export ANDROID_SDK_ROOT="$HOME/Android/Sdk" export ANDROID_SDK_ROOT="$HOME/.local/share/android/Sdk"
export ANDROID_HOME="$ANDROID_SDK_ROOT" export ANDROID_HOME="$ANDROID_SDK_ROOT"
export GRADLE_USER_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/gradle"
export PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/cmdline-tools/bin:$ANDROID_HOME/platform-tools:$ANDROID_AVD_HOME:$ANDROID_HOME/emulator:$XDG_DATA_HOME/cargo/bin" export PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/cmdline-tools/bin:$ANDROID_HOME/platform-tools:$ANDROID_AVD_HOME:$ANDROID_HOME/emulator:$XDG_DATA_HOME/cargo/bin"
export PATH="$HOME/development/flutter/bin:$PATH" export PATH="$HOME/development/flutter/bin:$PATH"
@@ -176,8 +178,6 @@ export NVM_DIR="$HOME/.config/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
source "$HOME/.local/share/../bin/env"
env_file="$HOME/.config/shell/.env" env_file="$HOME/.config/shell/.env"
if [ -f "$env_file" ]; then if [ -f "$env_file" ]; then
set -a set -a

View File

@@ -81,7 +81,6 @@ bind-key -n User0 send-keys C-S-o
bind-key -n User0 send-keys C-S-y bind-key -n User0 send-keys C-S-y
bind-key -n User0 send-keys C-S-a bind-key -n User0 send-keys C-S-a
# Prefix # Prefix
set -g prefix C-Space set -g prefix C-Space
set -g prefix2 C-b set -g prefix2 C-b
@@ -106,7 +105,6 @@ bind -n C-M-S-Right resize-pane -R 5
# Window navigation # Window navigation
bind r command-prompt -I "#W" "rename-window -- '%%'" bind r command-prompt -I "#W" "rename-window -- '%%'"
bind c new-window -c "#{pane_current_path}" bind c new-window -c "#{pane_current_path}"
bind k kill-window
bind -n M-1 select-window -t 1 bind -n M-1 select-window -t 1
bind -n M-2 select-window -t 2 bind -n M-2 select-window -t 2
@@ -126,7 +124,7 @@ bind -n M-S-Right swap-window -t +1 \; select-window -t +1
# Session controls # Session controls
bind R command-prompt -I "#S" "rename-session -- '%%'" bind R command-prompt -I "#S" "rename-session -- '%%'"
bind C new-session -c "#{pane_current_path}" bind C new-session -c "#{pane_current_path}"
bind K kill-session bind X kill-session
bind P switch-client -p bind P switch-client -p
bind N switch-client -n bind N switch-client -n

View File

@@ -4,6 +4,11 @@
export STATION_PATH=$HOME/.local/share/station export STATION_PATH=$HOME/.local/share/station
export PATH=$STATION_PATH/bin:$PATH export PATH=$STATION_PATH/bin:$PATH
export GDK_SCALE=2
# export QT_AUTO_SCALE_FACTOR=1
# export QT_ENABLE_HIGHDPI_SCALING=1
export QT_SCALE_FACTOR=1.5
# Set default terminal and editor # Set default terminal and editor
source ~/.config/uwsm/default source ~/.config/uwsm/default

View File

@@ -20,24 +20,19 @@
"format-icons": { "format-icons": {
"default": "", "default": "",
"1": "", "1": "",
"2": "", "2": "",
"3": "", "3": "",
"4": "", "4": "",
"5": "", "5": "",
"6": "󱚍", "6": "",
"7": "", "7": "",
"8": "8", "8": "",
"9": "9", "9": "󱚍",
"10": "0", "10": "󱚍",
}, },
"persistent-workspaces": { "persistent-workspaces": {
"1": [], "DP-1": [1, 3, 5, 7, 9],
"2": [], "DP-2": [2, 4, 6, 8, 10]
"3": [],
"4": [],
"5": [],
"6": [],
"7": []
} }
}, },
"custom/station": { "custom/station": {

View File

@@ -187,6 +187,8 @@ eval "$(zoxide init --cmd cd zsh)"
eval "$(try init ~/src/tries)" eval "$(try init ~/src/tries)"
eval "$(direnv hook zsh)"
[ -f ~/.cache/wal/sequences ] && \cat ~/.cache/wal/sequences [ -f ~/.cache/wal/sequences ] && \cat ~/.cache/wal/sequences
[ -f ~/.cache/wal/colors-tty.sh ] && source ~/.cache/wal/colors-tty.sh [ -f ~/.cache/wal/colors-tty.sh ] && source ~/.cache/wal/colors-tty.sh

View File

@@ -1,29 +0,0 @@
#!/bin/bash
input_dir="$1" # Replace with your input directory path
output_dir="$2" # Replace with your output directory path
# Ensure the output directory exists or create it
mkdir -p "$output_dir"
# Loop through all JPEG files in the input directory
for file in "$input_dir"/*.jpg; do
if [ -e "$file" ]; then
filename=$(basename "$file")
filename_without_extension="${filename%.*}"
output_file1="$output_dir/${filename_without_extension}_left.jpg"
output_file2="$output_dir/${filename_without_extension}_right.jpg"
# Get the width of the image
width=$(identify -format "%w" "$file")
# Use ImageMagick to split the image in half
convert "$file" -crop "50%x100%+0+0" "$output_file1"
convert "$file" -crop "50%x100%+$((width / 2))+0" "$output_file2"
echo "Split $filename into $output_file1 and $output_file2"
fi
done
echo "Splitting completed."

View File

@@ -2,8 +2,9 @@
# Picks and sets a random background # Picks and sets a random background
BACKGROUNDS_PATH="$HOME/Tower/Library/Pictures/Wallpapers/3840x2160/" width=$(hyprctl monitors -j | jq 'map(.width) | add')
CURRENT_BACKGROUND_LINK="$HOME/.local/state/station/background" height=$(hyprctl monitors -j | jq '.[0].height')
BACKGROUNDS_PATH="$HOME/Tower/Library/Pictures/Wallpapers/${width}x${height}/"
mapfile -d '' -t BACKGROUNDS < <(find -L "$BACKGROUNDS_PATH" -maxdepth 1 -type f -print0 2>/dev/null | sort -z) mapfile -d '' -t BACKGROUNDS < <(find -L "$BACKGROUNDS_PATH" -maxdepth 1 -type f -print0 2>/dev/null | sort -z)
TOTAL=${#BACKGROUNDS[@]} TOTAL=${#BACKGROUNDS[@]}

View File

@@ -17,4 +17,13 @@ wal -i "$CURRENT_BACKGROUND_LINK"
# Kill existing swaybg and start new one # Kill existing swaybg and start new one
pkill -x swaybg pkill -x swaybg
setsid uwsm-app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 &
if [[ $(hyprctl monitors -j | jq 'length') -eq 2 ]]; then
station-bg-split "$CURRENT_BACKGROUND_LINK" "/tmp/bg"
first_mon=$(hyprctl monitors -j | jq -r '.[0].name')
second_mon=$(hyprctl monitors -j | jq -r '.[1].name')
setsid uwsm-app -- swaybg -o "$first_mon" -i /tmp/bg/background_left -m fill >/dev/null 2>&1 &
setsid uwsm-app -- swaybg -o "$second_mon" -i /tmp/bg/background_right -m fill >/dev/null 2>&1 &
else
setsid uwsm-app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 &
fi

40
.local/bin/station-bg-split Executable file
View File

@@ -0,0 +1,40 @@
#!/bin/bash
input="$1" # Replace with your input directory path
output_dir="$2" # Replace with your output directory path
# Ensure the output directory exists or create it
mkdir -p "$output_dir"
split_img() {
file=$1
filename=$(basename "$file")
filename_without_extension="${filename%.*}"
extension="${filename##$filename_without_extension}"
output_file1="$output_dir/${filename_without_extension}_left${extension}"
output_file2="$output_dir/${filename_without_extension}_right${extension}"
# Get the width of the image
width=$(identify -format "%w" "$file")
# Use ImageMagick to split the image in half
magick "$file" -crop "50%x100%+0+0" "$output_file1"
magick "$file" -crop "50%x100%+$((width / 2))+0" "$output_file2"
echo "Split $filename into $output_file1 and $output_file2"
}
# Loop through all JPEG files in the input directory
if [[ -d $input ]]; then
echo "Processing images in directory: $input"
for file in "$input/*.(jpg|jpeg|png)"; do
if [ -e "$file" ]; then
split_img "$file"
fi
done
else
split_img $input
fi
echo "Splitting completed."

View File

@@ -4,12 +4,12 @@
# Ensure elephant is running before launching walker # Ensure elephant is running before launching walker
if ! pgrep -x elephant > /dev/null; then if ! pgrep -x elephant > /dev/null; then
setsid uwsm-app -- elephant & setsid uwsm-app -- elephant > /dev/null 2>&1 &
fi fi
# Ensure walker service is running # Ensure walker service is running
if ! pgrep -f "walker --gapplication-service" > /dev/null; then if ! pgrep -f "walker --gapplication-service" > /dev/null; then
setsid uwsm-app -- walker --gapplication-service & setsid uwsm-app -- walker --gapplication-service > /dev/null 2>&1 &
fi fi
exec walker --width 644 --maxheight 300 --minheight 300 "$@" exec walker --width 644 --maxheight 300 --minheight 300 "$@"

View File

@@ -236,6 +236,7 @@ show_system_menu() {
local options="󱄄 Screensaver\n Lock\n󰒲 Suspend" local options="󱄄 Screensaver\n Lock\n󰒲 Suspend"
station-hibernation-available && options="$options\n󰤁 Hibernate" station-hibernation-available && options="$options\n󰤁 Hibernate"
options="$options\n󰍃 Logout\n󰜉 Restart\n󰐥 Shutdown" options="$options\n󰍃 Logout\n󰜉 Restart\n󰐥 Shutdown"
echo $options
case $(menu "System" "$options") in case $(menu "System" "$options") in
*Screensaver*) station-launch-screensaver force ;; *Screensaver*) station-launch-screensaver force ;;
@@ -257,6 +258,7 @@ go_to_menu() {
case "${1,,}" in case "${1,,}" in
*apps*) walker -p "Launch…" ;; *apps*) walker -p "Launch…" ;;
*trigger*) show_trigger_menu ;; *trigger*) show_trigger_menu ;;
*share*) show_share_menu ;;
*background*) show_background_menu ;; *background*) show_background_menu ;;
*setup*) show_setup_menu ;; *setup*) show_setup_menu ;;
*update*) show_update_menu ;; *update*) show_update_menu ;;

View File

@@ -0,0 +1,12 @@
#!/bin/bash
# Moves the active window to the relevant workspace
workspace=$1
active_window=$(hyprctl activewindow -j | jq -r ".address")
active_workspace=$(hyprctl activeworkspace -j | jq -r ".id")
new_workspace=$((($workspace*2)-($active_workspace%2)))
hyprctl dispatch movetoworkspacesilent "$new_workspace,address:$active_window"

View File

@@ -5,18 +5,23 @@ echo "Password Setup Script"
echo "-------------------------------------" echo "-------------------------------------"
if gum confirm "Do you need to change your password?"; then if gum confirm "Do you need to change your password?"; then
while true; do new_password=$(gum input --password --placeholder "Enter new password")
if passwd; then confirm_password=$(gum input --password --placeholder "Confirm new password")
echo "Password successfully updated."
break
else
echo "Failed to update password."
if ! gum confirm "Would you like to try again?"; then if [ "$new_password" != "$confirm_password" ]; then
break echo "Passwords do not match."
exit 1
elif [[ $new_password == "" ]]; then
echo "Password cannot be empty."
exit 1
fi fi
if [[ ! -d /persist/passwords ]]; then
sudo mkdir -p /persist/passwords
fi fi
done sudo sh -c "mkpasswd -m sha-512 \"$new_password\" > /persist/passwords/$USER"
else echo
echo "New password written to /persist/passwords/$USER"
echo "Password will become active next time you run:"
echo "sudo nixos-rebuild switch"
echo "Password change skipped." echo "Password change skipped."
fi fi