# i3


GNOME 3 finally pushed me over the edge. After I brief stint with [cinnamon](http://cinnamon.linuxmint.com/),
I decided the only thing left was to configure a tiling window manager and some tweaks to make it more
usable. For no reason at all, I settled on [i3](http://i3wm.org/), which seems really nice and
simple to configure.

But how to use i3 comfortable? i3 is a tiling window manager, which makes it ubercool, but with it
you loose things like automount, brightness keys, etc.; all the things you expect from a Linux
desktop nowadays. This blog item deals with getting the goodies from i3, without giving up
on all the other things you like. I basically use a lot of GNOME tools, but let them run
in the background.

See <http://i3wm.org/docs/user-contributed/lzap-config.html>,
and the Arch Wiki for some good documentation too <https://wiki.archlinux.org/index.php/I3> to get this
going.

I took the following steps to get it going, this is still rough around the edges, because I'm lazy.
See this screenshot: ![i3 comfy screenshot](/downloads/2013/i3-screenshot.png "i3 screenshot")

* gnome-session-daemon
    1. Start this daemon, it makes stuff much easier, like default keys for brightness, etc.
    1. Also makes your gtk-apps look nice, because they are themed.
* Keys
    1. Volume - works with gnome-session-daemon.
    1. Keyboard - idem.
    1. Screen - idem.
* Locking
    1. `gnome-screensaver`
    1. Create a keycombo in your config to lock your screen:
       `bindsym $mod+Control+l exec --no-startup-id gnome-screensaver-command -l`
* Network manager
    1. Start `nm-applet`.
* Bluetooth
    1. apt-get install blueman, it gives you `blueman-applet`.
* Sane cut&paste
    1. apt-get install parcellite.
* Notification
    1. There is dunst, but this was also  fixed by running gnome-settings-daemon, but needs some
        extra configuration for automounting notifications.
* Mounting external disks with *notifications*.
    1. Install the debian package of udisks-glue (64 bit)
        from: <https://packages.debian.org/sid/amd64/udisks-glue/download>
    1. Add some config for notifications: start with: `udisks-glue -c <file>` and in that config file
        add or set:

            match disks {
                post_insertion_command = "udisks --mount %device_file --mount-options sync"
                post_mount_command = "notify-send %device_file 'mounted %device_file %mount_point'"
                post_unmount_command = "notify-send %device_file 'unmounted %device_file %mount_point'"
            }

* puvacontrol for sound stuff other than volume control
    1. Add a shortcut that starts pavucontrol.
* Solarized colors: <https://github.com/lkraav/dotfiles/tree/master/.i3>, which you can then tweak, to make
    them even better.

# Config file

~/.i3/config

Add the following lines, to implement some of the above.

    exec --no-startup-id /usr/bin/gnome-settings-daemon
    exec --no-startup-id nm-applet
    exec --no-startup-id blueman-applet
    exec --no-startup-id udisks-glue -c ~/.udisk-glue.conf
    exec --no-startup-id parcellite

# Dmenu

I had some truetype font problems with demnu, this was fix by:

`~/.i3/dmenu_run -b -fn 'Source Code Pro-9'`, basically use dmenu.xft instead of dmenu, fix dmenu_run for this:

    #!/bin/sh
    cachedir=${XDG_CACHE_HOME:-"$HOME/.cache"}
    if [ -d "$cachedir" ]; then
            cache=$cachedir/dmenu_run
    else
            cache=$HOME/.dmenu_cache # if no xdg dir, fall back to dotfile in ~
    fi
    (
            IFS=:
            if stest -dqr -n "$cache" $PATH; then
                    stest -flx $PATH | sort -u | tee "$cache" | dmenu.xft "$@"
            else
                    dmenu.xft "$@" < "$cache"
            fi
    ) | ${SHELL:-"/bin/sh"} &

