I'm using i3wm and Keepassx2 on an Arch-Linux installation. I configured i3 to automatically move a window with the window class "Keepassx2" to a certain workspace $WSKP. I also configured $mod+P to execute Keepassx2. Now I would like to write a custom script that is executed by $mod+P instead. This script should:

  • launch Keepassx2 when no other instance of it is currently running
  • maximize Keepassx2 and move focus to the specific workspace $WSKP when there already is a running instance

I want this because I don't need the Keepass-Workspace to be open all the time and it takes another unnecessary keypress when tabbing through the workspaces.

Checking whether there already is a running instance is easy:

if [ $(pidof keepassx2) ]; then 
    # maximize the running instance and move focus with i3-msg

But how do I accomplish maximizing the running instance?

  • If Keepassx2 is running in its own workspace, isn't it maximized anyway?
    – pfnuesel
    Sep 6 '17 at 15:06
  • I forgot to add that - I would like to have it minimized per default so that it does not take up a workspace. Only when I need it.
    – herhuf
    Sep 6 '17 at 15:31
  • You cannot minimize or maximize a window in i3. Use tabbed mode. i3 has a hidden workspace to hide windows: i3wm.org/docs/userguide.html#_scratchpad
    – ctx
    Sep 6 '17 at 17:06

i3 has no 'maximize' function, you want to focus your window and you might want to make the window fullscreen.

You can use this snipped:

winid="$(printf "%u\n" $windowid 2>/dev/null)
i3-msg "[id=\"$winid\"] "focus; fullscreen"

How you get the windowid from the pid is described in this question.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.