I am a big fan of i3 window manager -- it is fast, it has a minimalistic design, and if you add a couple of simple tools and scripts it really replaces complex desktop environments. The main purpose of this repository is to gather such tools and share it with other i3 users.
Also, Michael has very strong opinions about the amount of features and functions that i3 should have. Well, that's his baby, however, I do not share that strictness. Having said that, I would also like to have a collection of patches which work, but which will be never merged due to ideological reasons.
Further down I will describe the extras that I am using right now, and I hope to get some more stuff from you guys!
- Patches
- Nagbar replacements
i3lock
related- Switching windows
- Closing windows
- Status bar related
- Vim syntax for i3 config
##Patches##
###Title of the focused window###
This is an ancient patch from Kevin Murphy that was never accepted to the main line. I didn't had a chance to test if it still works, but I like the idea.
###Icons in i3bar###
The file i3bar-xbm-icons.patch
is a patch that adds a support for xbm icons to
the i3bar. The patch adds two fields to the IPC protocol of i3bar which are:
icon
and icon_color
.
Here is a picture how it looks like:
Here is a configuration file for conky in order to produce the picture from above.
####TODO####
- Xlib has a function to draw xbm, but it didn't work for me, so I am using something like putpixel to draw the pixels of the parsed image.
- Caching. Currently the pictures are parsed every time the status changes, which is every second or so. It doesn't waste a lot of CPU, however a tiny hash-table would be much cleaner.
###Higher optimisation level###
The makefile-gcc-opt.patch
increases default optimisation level. This patch
assumes that you are going to use GCC compiler, however it should work with
icc -gcc
and with clang
as well.
###Patches for size, borders, cwd###
0x2493 kept a set of small patches to customise borders, i3bar and window header sizes and use extract cwd from focused window. He had a repository on github and later moved it on bitbucket and then deleted it all, so please find some of his patches stored locally:
-
cwd-exec
extracts current working directory from the focused window before spawning the child. That would allow to have smarterMod + return
, which may open a new terminal with cwd taken from the old one. -
smart-border
doesn't draw a border around the window it is the only window on a workspace. -
tiny-bar
removes extra spaces around the font in i3bar, which makes the i3bar tinier. -
tiny-titles
removes extra spaces around the font in window titles.
###Window icons### Maris Muja wrote a patch to draw an application icon in the left corner of the window bar. Please have a look at his i3wm repository, you can find some more patches there.
##Nagbar replacements##
###Nagbar replacement (i3-exit) [1]###
The file i3-exit
is a python script that throws a simple menu in the middle of
the active workspace which allows you to chose your action on exit. It uses
i3-py to find out an active space and
geometry and it uses dzen2 to draw a menu.
Here is a picture of how it looks like:
- Sometimes the keys does not go to the application. Don't really know why. It might be a problem of dzen2 itself, it might be the case that i3 switches the focus as the mouse cursor is not on the window. Don't know.
###Nagbar replacement (i3-exit) [2]###
Here is [another version of i3-exit] (http://github.com/uranix/i3-settings/blob/master/i3-exit)
created by Ivan Tsybulin. He uses pygtk
with
buttons and have much more sophisticated choices than I do.
##i3lock
related##
###Wrapper around i3lock###
The i3lock-wrapper
is a very simple shell script that uses i3lock and
imagemagick to grab a
screenshot, blur it and launch i3lock with it. The blurring constant is chosen
in such a way to hide the text, but leave the overall structure of windows etc.
If you don't know that it's a screensaver, the first instinct is to configure
your monitor. Very nice.
Here is a picture of how it looks like:
For Arch Linux users here is an AUR created by Thiago Perrotta.
###Centered image in i3lock###
Ivan Tsybulin have created a patch for i3lock that allows to centre the image of the size smaller than the screen resolution.
##Switching windows##
There are two scripts doing a very similar task -- list all the windows, pipe it
through dmenu
, focus the selected one. One implementation can be found in
Jure Ziberna i3-py/examples
repository. The script is called winmenu.py
.
Another implementation can be found in quickswitch-for-i3 repository.
- Unicode characters are not rendered properly. Probably it has something to do
with the encoding that
dmenu
expects.
AladW have created a patch that allows you to close a window via the middle mouse click.
##Status bar related##
###wsbar
replacement###
In Jure Ziberna i3-py/examples
you can find a script called wsbar.py
which replaces an original wsbar
from the i3 repository.
The main difference -- this script is written in Python.
###i3bar
replacement###
lynks-- is maintaining an i3bar replacement called lifebar. This is a i3bar-like panel combined with functionality of i3statys. It has transparency by default, confiuration is set via config file. The project in its early stages but is being actively developed. Here is a default liefbar screenshot:
###Scripts for i3bar/i3status###
enkore is maintaining a python framework called i3pystatus that allows configure an output that can be piped into i3bar. You can do a very similar thing using conky, however here the tool is tailor-made for i3bar. Its modular design allows to contibute fuctionality in the form of modules which can be imported later in the output-generator.
py3status has a similiar name, but uses a different approach: It wraps i3status and can add additional functionality through modules. It is maintained by ultrabug.
###Status for i3+dzen2 [1]###
gpix13 Wrote a shell script to generate the status bar. He uses
dzen
to display it. Here is a screenshot of what the bar produced by status.sh looks like:
- Here is a general problem with
dzen
-- it doesn't have a support for tray. So the alternatives are either to show dzen and i3bar, which is a waste of space, or using something else for tray. - Most of the output here, can be obtained from
conky
. Wouldn't it be faster?
###Status for i3+dzen2 [2]###
Wang Chao has another implementation of the status
information piped through dzen. Her is an
implementation. He uses
i3status
to generate the information and the he uses a custom python script
that parse the output of i3status
, appends it with icons and does some extra
massaging. Finally dzen is displaying the output. Here is how it looks like:
He also has a very nice icons which you can hopefully steal from here :)
###i3blocks###
Vivien Didelot maintains the i3blocks project i3blocks is a highly flexible status line for the i3 window manager. It handles clicks, signals and language-agnostic user scripts. The content of each block (e.g. time, battery status, network state, ...) is the output of a command provided by the user. Blocks are updated on click, at a given interval of time or on a given signal, also specified by the user. It aims to respect the i3bar protocol, providing customization such as text alignment, urgency, color, and more. See their wiki for more details.
##Vim syntax for i3 config##
Emanuel Guével wrote a syntax file for i3 config. Thanks for that, the repository can be found here.
In order to enable it you can add # vim:filetype=i3
as a comment to your file,
or you can do it manually. Another option is to recognise the path to the i3
config and write an autocmd: autocmd BufEnter *i3/config setlocal filetype=i3