GNOME 3 finally pushed me over the edge. After I brief stint with cinnamon, 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, 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

  • gnome-session-daemon

    1. Start this daemon, it makes stuff much easier, like default keys for brightness, etc.
    2. Also makes your gtk-apps look nice, because they are themed.
  • Keys

    1. Volume - works with gnome-session-daemon.
    2. Keyboard - idem.
    3. Screen - idem.
  • Locking

    1. gnome-screensaver
    2. 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

    2. 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"} &