Hide bar in i3wm

I love i3 window manager, and I love that you can create minimalists system, both in function and look. Recently I thought to myself, what if I hide polybar and there is only window on screen? But I don't want a permament hide, I need a shortcut to show it, if I need it.

Here comes in r/i3wm subreddit, and here is the solution. Note, that I use Manjaro and package names probably are different on other distros.

There is no built-in solution for this, but there is a tool, called xdo which let's you do some things with windows, and since polybar is a window, it works!

1. Install xdo and xprops

We need these packages.

$ sudo pacman -S xdo xorg-xprops

2. Create the bash script

Copy these lines in your favorite text editor and save it somewhere as a bash script (sh).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#!/bin/sh
# Check if xdo is installed
xdo_path=$(which xdo)
if [ $? -ne 0 ]; then
    echo "Cannot find \`xdo\` command." 1>&2
    exit 1
fi
# Obtain bar's window id
id=$(xdo id -N "Polybar")
# Toggle bar visibility
if xprop -id $id | grep -q "Normal"; then
    xdo hide -N "Polybar"
else
    xdo show -N "Polybar"
fi

Make it executable:

$ chmod +x name_of_script.sh

3. Edit your i3 config file, and assign a shortcut

For me it become $mod+p, but you can use it whatever you want and free.

bindsym $mod+p exec ~/.config/scripts/poly_hide.sh

Refresh your i3wm, and try it out! So far it works well, and instantly, even with using compton.