Tag Archives: i3wm

py3status v1.3

I’m glad to announce the release of py3status v1.3 which brings to life a feature request from @tasse and @ttyE0. Guys, I hope this one will please you !

what’s new ?

Along with a localization bug fix thanks to @zetok from Poland, the main new feature is that py3status now supports a standalone mode which you can use when you only want your own modules displayed in an i3bar !

As usual, this release is already available for my fellow Gentoo Linux users and on pypi !

Changelog is here and quick to get, enjoy !

Drop-down terminal in i3

One of the reasons I switched from KDE to i3wm is that I love and need terminals. In my field of work you happen to spawn dozens of them and you always end up running out of space / workspaces.

Yakuake has been a real ally to me for years as I intensively use a drop-down terminal for sporadic usages. It is hard to match Yakuake’s efficiency and ability to split terminals but I couldn’t stand all those KDE dependencies anymore; I had to find a great drop-down terminal solution in i3.

So I started looking at other drop-down terminals such as Terra and Guake but they didn’t fit my low dependencies and features list requirements.

Drop-down Terminator

My current solution is to take advantage of the floating mode of i3, use it with my beloved terminator et voilà ! Nothing more to install, no extra dependency, using the same shortcuts of my main $TERMINAL and all of its features 🙂

The idea is simple, we’ll create a special profile in terminator and have it spawned in floating mode upon i3 start. This profile must cover the following drop-down behaviors :

  • respond to a configurable show/hide key binding
  • present a drop-down terminal at the center of the screen
  • the interface should be dead simple and efficient and support splitting

Just edit your terminator configuration in ~/.config/terminator/conf and add :

  hide_window = F1

Then add the dropdown profile under the [profiles] section :

  exit_action = close
  scrollback_lines = 10000
  background_image = None
  scroll_on_output = False
  show_titlebar = False

That’s my minimal config, you can add your own stuff to it as well. Now we only need to configure i3 to spawn this profile at login and have it in floating mode.

Modify your i3 config file, usually ~/.i3/config :

exec terminator -c dropdown -p dropdown -T "Le Terminator" -H --geometry=1550x800

for_window [class="Terminator" instance="dropdown"] floating enable

That’s as simple as this.

EDIT: as per Joe’s comment, you can also configure i3 to place your floating Terminator window wherever you want (in his case, top off the screen). This still goes into your i3 config from above :

for_window [class=”Terminator” instance=”dropdown”] floating enable move absolute position 0 0

There’s still one limitation which I didn’t come across yet :

  • Unlike Yakuake, our drop-down terminator has a fixed geometry which you must set in the i3 config above and does not support percentage values. So if you have multiple screens of different resolutions it won’t adapt on them based on the screen you want to show your drop-down terminator.

So long, Yakuake !

py3status v0.5

Since the first release of py3status, quite a bunch of bugfixes and features came such as python3 support and SIGUSR1 signal handling to force an update of the bar.


  • bugfix : fix delta variable declaration
  • examples : add GLPI open tickets counter module example
  • python3 compatibility inspired by waaaaargh (Johannes Firlefanz)
  • improvement : iterate over user classes in a sorted manner to allow a predictive ordering of outputs
  • bugfix : dont fail if i3status output comes slower than py3status message polling interval
  • feature : signal SIGUSR1 forces i3status and i3bar refresh, feature request by Michael Schaefer

Meet py3status

This is the first public release of one of my open-source projects, don’t hesitate to share some feedback and/or thoughts with me.


As a sysadmin, I have a lot of consoles open on multiples desktops and my 30″ screen was still not enough to cover my needs. To make things short, I needed to spare every pixel I could and KDE was really frustrating me as it was wasting a lot of space and ran quite a bunch of useless stuff in the background (akonadi/nepomuk anyone ?).

Then came my cyclic rage about it and I finally found my precious : i3wm. I just love it as it is what I ever needed : a lightweight yet very functional and handy WM.

  • No more resizing my consoles to fit next to each other and I can still use floating windows for the needed applications.
  • No more huge and pixel-hungry task bar, just a simple and very efficient one.


The problem when you start using something new and awesome is that you get a lot of ideas on what you could do with it and how you’d love to customize it. I mean, when using KDE or Gnome, your ideas are quickly shaped by the fact that you’d have to learn some exotic framework or language to implement them.

  • Did you ever ask yourself how to add your own stuff in your task bar on KDE or Gnome ?
  • What if the customization options you want are not available in your WM menus ?

Well, my answer was “never mind” tbh and I slowly even lost the idea of implementing anything on my task bar.

i3bar & i3status

After switching to i3wm, my first customization was to name my workspaces and setup my own colors to adjust the look & feel of my desktop. Then I started to tune the program responsible for displaying useful information on my bar : i3status. As you may know, you have some limited modules which can take care of displaying some useful information on your bar such as the free disk space on a disk partition or your wired/wireless network status.

But then I asked myself the same questions as I used to on my KDE days : what if I want more ? my own stuff on my task bar ?

Introducing py3status

Thanks to the i3bar open and simple protocol and the robust (even if somewhat limited) i3status program, I could finally hack into my bar. Naturally, I had to do it myself and there was a few examples available on the net but nothing really handy and extensible enough. That’s how I had the idea of developping py3status !

philosophy & goals

  • no extra configuration file needed
  • rely on i3status and its existing configuration as much as possible
  • be extensible, it must be easy for users to add their own stuff/output by writing a simple python class which will be loaded and executed dynamically
  • add some built-in enhancement/transformation of basic i3status modules output

available now on github

I’m glad to announce that I pushed it today on github ! You can start using py3status now and give your feedback. I hope this project will help users get more of their i3wm environment and encourage their hacking power !