September 3, 2018

Tab completion for i3 commands in Bash and zsh

Something I miss from other window managers like Herbstluftwm is tab completion in the shell for the commands and features it supports. Partly because I’m lazy and partly because it’s not that easy to remember every feature when you rarely use them.

With tab completion you can list all the available commands which makes it pretty easy to figure out how to do things and what’s available to you. And fortunately a tab completion script for both Bash and zsh do exist, it’s called i3-completion and it looks something like this:

$ i3-msg <Tab>
[              exec           kill           nop            restart        swap
append_layout  exit           layout         open           scratchpad     title_format
bar            floating       mark           reload         shmlog         unmark
border         focus          mode           rename         split          workspace
debuglog       fullscreen     move           resize         sticky

Installation

Clone the latest code from their git repository:

$ git clone https://github.com/cornerman/i3-completion

To add the script to either Bash or zsh you need to source it in you configuration (~/.bashrc or ~/zshrc):

source "<path to file>/i3_completion.sh"

And if you use zsh you also need to make sure to enable the usage of Bash scripts in zsh by adding this line before sourcing the script:

autoload bashcompinit && bashcompinit

Lastly save and reload your configuration:

Bash:

source ~/.bashrc

zsh:

source ~/.zshrc

And now you should have fancy tab completions for your i3 commands. :)

Comments

I'm looking into a good way of implementing comments on my blog that works without JavaScript, respects the users privacy and is reasonably user friendly. If you have any ideas or just want to give me some feedback on this blog post or if you just want to say hello, feel free to do so either via e-mail, XMPP or Mastodon.