I3 startup window at 0,0

Hi!

When I start specific apps (Shotwell is main example, but are others I cant remember right now) there appears a smaller start up window saying ‘loading photos’ or whatever. This window appears at pixels 0,0 and so only the bottom right hand quarter of it is shown

When the app itself opens, all is well

How can I control the position of these ‘stattup’ windows?

Please!

My config:

ArchLabs i3 config

Modified by Leigh

mod key used for most binds

Mod1 = Alt

Mod4 = Super

set $Mod Mod4

set keyboard repeat rate

exec --no-startup-id xset r rate 350 60

set super key alone to emulate alt+F1

exec --no-startup-id ksuperkey -e 'Super_L=Alt_L|F1' &
exec --no-startup-id ksuperkey -e 'Super_R=Alt_L|F1' &

left hand mouse

exec --no-startup-id xmodmap -e "pointer = 3 2 1"

border & title

for_window [class="^.*"] border pixel 1, title_format " %class >> %title "

gaps

gaps inner 2
gaps outer 0

bindsym $Mod+shift+b border toggle

set display timeout, sleep, and power off times

exec --no-startup-id xset dpms 600 900 1200

Monitors (Now in .xinitrc)

#exec --no-startup-id xrandr --output eDP-1 --mode 1920x1200 --pos 0x1080 --output DP-3 --primary --mode 1920x1080 --pos 0x0

wallpaper

exec --no-startup-id ~/.fehbg
#exec --no-startup-id feh --bg-scale /home/leigh/Pictures/Wallpapers/ArchLabsLeigh.png /home/leigh/Pictures/Wallpapers/ArchLabsLeigh3.png

Setting border style to pixel eliminates title bars

default_border pixel

Font for window titles. Will also be used by the bar unless a different font

is used in the bar {} block below.

font pango:DejaVu Sans 10

###############        Bar         ##################
bar {
output primary
position top

font pango:DejaVu Sans 10

status_command i3status --config ~/.config/i3/i3status.conf
colors {
                background #353535
                statusline #FFFFFF
                separator #1ABC9C
                # colorclass       <border> <background> <text>
                focused_workspace  #353535  #353535     #33FF33
                inactive_workspace #353535  #353535     #FFFFFF
}
tray_output primary

}

#Toggle Hide bar
bindsym $mod+a bar mode toggle

###############     Autostart      ##################

run with reload

#exec_always --no-startup-id xrdb -load ~/.Xresources

start the gnome polkit agent

exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1

start the compositor (transparency, fade, shadows, blur, etc.)

exec --no-startup-id picom -b

start the network tray application

exec --no-startup-id nm-applet

start Bluetooth tray application

exec --no-startup-id blueman-applet

start the volume tray application

exec --no-startup-id pasystray
#exec --no-startup-id volumeicon

activate numlock

exec --no-startup-id numlockx

turn off caps-lock

exec --no-startup-id setxkbmap -option ctrl:nocaps

autotiling

exec --no-startup-id autotiling -w 1

rsync dotfiles

exec --no-startup-id rsync -ah --files-from=/home/leigh/RsyncList ~/ ~/DotFiles

start nextcloud-client

exec --no-startup-id nextcloud

start Bitwarden

exec --no-startup-id bitwarden-desktop

Joplin

#exec --no-startup-id joplin-desktop

touchpad-indicator

exec --no-startup-id touchpad-indicator

start BSC Webcam in Firefox Fullscreen

Doesnt work anymore, don't know why

#exec --no-startup-id firefox "https://camsecure.co/httpswebcam/brightlingsea/brightlingsea.html" #; [class="Firefox"] focus

#############         Bindings           ##################

launchers

bindsym $mod+r exec --no-startup-id rofi_run -r

kill focused window

bindsym $Mod+q kill

core

#bindsym $Mod+w             exec --no-startup-id al-browser
#bindsym $Mod+f             exec --no-startup-id al-filemanager
#bindsym $Mod+t             exec --no-startup-id al-terminal

bindsym $Mod+w             exec --no-startup-id firefox
bindsym $Mod+f             exec --no-startup-id thunar
bindsym $Mod+t             exec --no-startup-id xfce4-terminal

logout script

bindsym $Mod+x exec --no-startup-id rofi_run -l

reboot to Windows

NB starts at 0 & submenu items not counted, e.g. submenu item 3 of 2: 2>3)

pkexec runs as root & gives polkit password prompt, reboot needs no root.

#bindsym $Mod+a exec --no-startup-id "pkexec grub-reboot 2 && reboot"

Screenshot

#Then open gthumb
bindsym Print exec --no-startup-id "scrot '%S.png' -e 'mv $f ~/Pictures/ScreenShots/ScreenShot_%y-%m-%d_%H-%M-%S.png ; gthumb ~/Pictures/ScreenShots/ScreenShot_%y-%m-%d_%H-%M-%S.png'"
#No gthumb
bindsym Ctrl+Print exec --no-startup-id "scrot '%S.png' -e 'mv $f ~/Pictures/ScreenShots/ScreenShot_%y-%m-%d_%H-%M-%S.png' "

audio

bindsym XF86AudioPlay        exec --no-startup-id playerctl play-pause
bindsym XF86AudioNext        exec --no-startup-id playerctl next
bindsym XF86AudioPrev        exec --no-startup-id playerctl previous
bindsym XF86AudioStop        exec --no-startup-id playerctl stop

pamixer --list-sinks

bindsym XF86AudioMute        exec --no-startup-id "pamixer --sink 3 -t && pamixer --sink 4 -t"

pamixer --list-sources

bindsym XF86AudioMicMute     exec --no-startup-id "pamixer --source 0 -t && pamixer --source 6 -t"
bindsym XF86AudioRaiseVolume exec --no-startup-id pamixer -i 2
bindsym XF86AudioLowerVolume exec --no-startup-id pamixer -d 2

backlight

bindsym XF86MonBrightnessUp   exec --no-startup-id brightnessctl set +10%
bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 10%-

start Calibre

bindsym $mod+c exec calibre

start Editor (xed)

bindsym $mod+e exec xed

start Grsync

bindsym $mod+g exec grsync

Start Joplin

bindsym $mod+j exec joplin-desktop

start Nextcloud

bindsym $mod+n exec nextcloud

start Signal

bindsym $mod+s exec signal-desktop

start VirtualBox

bindsym $mod+v exec virtualbox

start Zoom

bindsym $mod+Shift+z exec zoom

start Photos (Shotwell)

bindsym $mod+p exec shotwell

start Music (Spotify)

bindsym $mod+m exec spotify

start Textmakernx (Word)

bindsym $mod+Shift+w exec XDG_CURRENT_DESKTOP=GNOME textmakernx

start Planmakernx (Excel)

bindsym $mod+Shift+e exec XDG_CURRENT_DESKTOP=GNOME planmakernx

start Presentationsrnx (Powerpoint)

bindsym $mod+Shift+p exec XDG_CURRENT_DESKTOP=GNOME presentationsnx

start Zotero

bindsym $mod+z exec zotero

start Inkscape

bindsym $mod+i exec inkscape

start PDF Studio 2024

bindsym $mod+Ctrl+p exec /home/leigh/pdfstudio2024/pdfstudio2024

start BSC Webcam in Firefox Fullscreen

#bindsym $mod+b exec firefox --kiosk "https://camsecure.co/httpswebcam/brightlingsea/brightlingsea.html" #; move container to workspace $ws10

###########          Workspace Bindings          ###############

Define names for default workspaces for which we configure key bindings later on.

We use variables to avoid repeating the names in multiple places.

set $ws1 "1 "
set $ws2 "2 "
set $ws3 "3 "
set $ws4 "4 "
set $ws5 "5 "
set $ws6 "6 "
set $ws7 "7 "
set $ws8 "8  "
set $ws9 "9  "
set $ws10 "10 "

bind program to workspace and focus to them on startup:

window rules, you can find the window class using xprop

(?i) means case insensitive

assign [class=Xfce4-terminal|GParted|Gnome-disks|transmission-gtk] $ws1
assign [class=Thunar|Grsync] $ws2
assign [class=(?i)firefox|Yad] $ws3
assign [class=Joplin] $ws4
assign [class=Shotwell|gThumb|Inkscape|Spotify|(?i)parole|gimp] $ws5
assign [class=Xed|calibre|Atril|Evince|PDF|Geany] $ws6
assign [class=zoom|signal] $ws7
assign [class=ONLYOFFICE|tm|pm|pr|(?i)soffice|(?i)libreoffice.*] $ws8
assign [class=Zotero] $ws9

assign [class="VirtualBox Manager"] $ws1
for_window [class="VirtualBox Machine"] move container to workspace $ws10

automatic set focus new window if it opens on a workspace other than the current one:

for_window [class=Xfce4-terminal|Grsync|GParted|Gnome-disks|transmission-gtk] focus
for_window [class=Thunar|Grsync] focus
for_window [class=(?i)firefox|Yad] focus
for_window [class=Joplin] focus
for_window [class=Shotwell|'Org.gnome.gThumb'|Inkscape|Spotify|(?i)parole|gimp] focus
for_window [class=Xed|calibre|Atril|Evince|PDF|Geany] focus
for_window [class=zoom|signal] focus
for_window [class=ONLYOFFICE|tm|pm|pr|(?i)soffice|(?i)libreoffice.] focus
for_window [class=Zotero] focus
for_window [class=VirtualBox] focus

Switch to focused Workspace

for_window [urgent=latest] focus

use workspaces on different displays:

where you have to replace VGA-0/HDMI-0 with the names for your displays

you can get from xrandr command

workspace $ws1 output eDP-1
workspace $ws2 output eDP-1
workspace $ws3 output DP-3 HDMI-1
workspace $ws4 output DP-3 HDMI-1
workspace $ws5 output DP-3 HDMI-1
workspace $ws6 output DP-3 HDMI-1
workspace $ws7 output DP-3 HDMI-1
workspace $ws8 output DP-3 HDMI-1
workspace $ws9 output DP-3 HDMI-1
workspace $ws10 output DP-3 HDMI-1

switch to workspace

bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10

cycle through workspaces

bindsym Mod1+Tab workspace next

move focused container to workspace

bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10

##############     Reload configs           ################

restart i3 inplace (preserves your layout/session, can be used to upgrade i3)

bindsym $Mod+Shift+r restart

reload the configuration file

bindsym $Mod+Shift+c reload

############      Container/Window control  ############

Stop mouse hover moving focus

focus_follows_mouse no

Floating

bindsym $Mod+space floating toggle
#floating_modifier  ctrl+Mod2
for_window [class="Blueberry.py" instance="blueberry.py"] floating enable
for_window [class="Yad" instance="yad"] floating enable
#for_window [class="Grsync"] floating enable
#for_window [class="GParted"] floating enable
#for_window [class="Gnome-disks"] floating enable

Keyhints

for_window [title="Keyhints"] sticky enable # keep on top
bindsym $mod+F1 exec ~/.local/bin/keyhint.sh

#Scratchpad
bindsym $Mod+Shift+d move scratchpad
bindsym $Mod+d scratchpad show

change focus with the cursor keys:

bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right

move focused window with the cursor keys:

bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right

container layout

split in horizontal orientation

bindsym $mod+Shift+h split h

split in vertical orientation

bindsym $mod+Shift+v split v

default_orientation horizontal

resize window using arrows

bindsym Control+r mode "resize"

mode "resize" {
# These bindings trigger as soon as you enter the resize mode

    # Pressing left will shrink the window’s width.
    # Pressing right will grow the window’s width.
    # Pressing up will shrink the window’s height.
    # Pressing down will grow the window’s height.
    bindsym Left resize shrink width 10 px or 10 ppt
    bindsym Down resize grow height 10 px or 10 ppt
    bindsym Up resize shrink height 10 px or 10 ppt
    bindsym Right resize grow width 10 px or 10 ppt

    # back to normal: Enter or Escape or Control+r
    bindsym Return mode "default"
    bindsym Escape mode "default"
    bindsym Control+r mode "default"

}

#################

Used keybinds

#################

$mod+a Toggle Bar

$mod+b BSC Webcam (but disabled, now in Autostart)

$mod+c Calibre

$mod+d Scratchpad

$mod+e Editor (xed)

$mod+f File Manager

$mod+g Grsync

$mod+h FREE

$mod+i Xed i3 config

$mod+j Joplin

$mod+k FREE

$mod+l FREE

$mod+m Music (Spotify)

$mod+n Nextcloud

$mod+o FREE

$mod+p Photos (Shotwell)

$mod+q Kill window

$mod+r Rofi_run

$mod+s Signal

$mod+t Terminal

$mod+u FREE

$mod+v VirtualBox

$mod+w Web Browser

$mod+x Logout

$mod+y FREE

$mod+z Zotero



$mod+Shift+w Textmakernx (Word)

$mod+Shift+e Planmakernx (Excel)

$mod+Shift+p Presentationsrnx (Powerpoint)


You can try the brute force method. In your i3 config

for_window [class=".*"] move position center

That will center any floating window, and appears to work on transient startup windows, although a bit problematic on dual monitors.

What’s your full setup?

i3 documentation; section 6 - You might be able to do this with the window_type. Something like:

for_window [window_type="splash"] move position center

Cheers!Will try the brute force method this pm

is that spalsh or splash?

Full setup is in the config isnt it (Monitors stuff is in my xinitrc is shown there commented out)

It’ssplash.

This worked!

Thanks!

Corrected; thanks.

@Leigh - try it with “splash”. I tested that and the the splash screen for LibreOffice moved accordingly. That way you won’t be forcing everything to center.

I will, as the other way worked but messed other things up :rofl:

for_window [window_type="splash"] move position center

didnt work for Shotwell,

But the below did

for_window [floating_from="auto"] move position center

https://i3wm.org/docs/userguide.html#list_of_commands

floating_from

Like floating but this criterion takes two possible values: “auto” and “user”. With “auto”, only windows that were automatically opened as floating are matched. With “user”, only windows that the user made floating are matched.