fix(i3): window startup

This commit is contained in:
AquaAI 2026-07-26
2026-07-26 17:15:20 -04:00
parent 1960e0ed57
commit fe212c0a92
5 changed files with 65 additions and 24 deletions
@@ -22,15 +22,6 @@ function fixPulse() {
fi fi
} }
# Start up programs that use audio.
function launchi3() {
if [ -z "$skipi3" ]; then
echo Opening i3wm sound workspaces
sleep .1 && i3-msg 'workspace 5; exec brave-browser'
#sleep 5.1 && python ~/bin/start-firefox.py
fi
}
# Set up sinks. # Set up sinks.
function setupSinks() { function setupSinks() {
pactl set-default-sink speakers pactl set-default-sink speakers
@@ -66,23 +57,12 @@ function restartWireplumber() {
systemctl --user restart wireplumber systemctl --user restart wireplumber
} }
# arg parser
for arg in "$@"
do
# Skip commands for i3wm
if [[ $arg == *"-s"* ]]; then
skipi3=true
fi
done
# Wire sinks # Wire sinks
setupSinks setupSinks
# Eurorack audio interface # Eurorack audio interface
sh ~/bin/audio/es9start.sh sh ~/bin/audio/es9start.sh
launchi3
systemctl --user restart polybar systemctl --user restart polybar
sleep 5 sleep 5
restartWireplumber restartWireplumber
+29
View File
@@ -0,0 +1,29 @@
#!/bin/bash
# Restore Brave and place its windows after they finish opening.
preferences="$HOME/.config/BraveSoftware/Brave-Browser/Default/Preferences"
function enable_session_restore {
if [ ! -f "$preferences" ] || ! command -v jq &> /dev/null; then
return
fi
temp_file="$(mktemp "${preferences}.XXXXXX")"
if jq '.session.restore_on_startup = 1 | .profile.exit_type = "Normal"' \
"$preferences" > "$temp_file"; then
mv "$temp_file" "$preferences"
else
rm -f "$temp_file"
fi
}
enable_session_restore
i3-msg 'workspace 9; append_layout ~/.config/i3/brave-workspace-9.json; workspace 5'
brave-browser --restore-last-session &
# Brave creates restored windows asynchronously and after startup focus has moved.
for _ in {1..20}; do
sleep 0.5
i3-msg '[class="^Brave-browser$" workspace="^(?!9$).*"] move to workspace 5' \
> /dev/null
done
+32
View File
@@ -0,0 +1,32 @@
{
"border": "normal",
"floating": "auto_off",
"layout": "splitv",
"type": "con",
"nodes": [
{
"border": "pixel",
"floating": "auto_off",
"percent": 0.5,
"swallows": [
{
"class": "^Brave-browser$",
"title": ".*Music Assistant.*"
}
],
"type": "con"
},
{
"border": "pixel",
"floating": "auto_off",
"percent": 0.5,
"swallows": [
{
"class": "^Brave-browser$",
"title": ".*YouTube.*"
}
],
"type": "con"
}
]
}
+3 -3
View File
@@ -264,7 +264,7 @@ exec_always --no-startup-id g13d --config ~/.config/g13/resolve.bind --logo ~/.c
# Startup programs # Startup programs
exec --no-startup-id i3-msg "workspace $wsSignal; exec flatpak run org.signal.Signal;" exec --no-startup-id i3-msg "workspace $wsSignal; exec flatpak run org.signal.Signal;"
exec --no-startup-id i3-msg "workspace $ws5" exec --no-startup-id ~/bin/start-brave.sh
exec --no-startup-id i3-msg "workspace $ws1; exec alacritty" exec --no-startup-id i3-msg "workspace $ws1; exec alacritty"
# Starts Jack for audio # Starts Jack for audio
@@ -338,8 +338,8 @@ for_window [class="Minecraft*" title="Minecraft*"] move to workspace $wsGames
for_window [class="Minecraft*" title="Minecraft*"] exec --no-startup-id cat ~/.config/g13/minecraft.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/minecraft.lpbm > /tmp/g13-0 for_window [class="Minecraft*" title="Minecraft*"] exec --no-startup-id cat ~/.config/g13/minecraft.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/minecraft.lpbm > /tmp/g13-0
# Arkham Knight # Arkham Knight
for_window [class="steam_app_208650" title="*"] move to workspace $wsGames for_window [class="steam_app_208650" title=".*"] move to workspace $wsGames
for_window [class="steam_app_208650" title="*"] exec --no-startup-id cat ~/.config/g13/arkham-knight.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/arkham-knight.lpbm > /tmp/g13-0 for_window [class="steam_app_208650" title=".*"] exec --no-startup-id cat ~/.config/g13/arkham-knight.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/arkham-knight.lpbm > /tmp/g13-0
# Factorio # Factorio
for_window [class="factorio" title="Factorio*"] move to workspace $wsGames for_window [class="factorio" title="Factorio*"] move to workspace $wsGames