Debian and i3 on a Dell XPS 13

2017-02-05

Way back in middle school I stumbled across the Ubuntu website, where Canoncial was offering to ship CDs of Feisty Fawn for free. Ubuntu was a gateway introduction to Linux for me, and I spent the next few months installing and reinstalling every possible distribution I could find. Eventually I bought an Apple computer, but never entirely forgot the tiling WM dream.

It's now nine years later, and I just impulsively sold my MacBook Pro for a Dell XPS 13 9360. Here are my notes for setting up a dual boot install of Windows 10 and Debian Stretch, with a rather sparse i3 configuration. Happy year of Linux of the desktop :P

Preliminaries: base Windows 10 install

Dell only offers configurations of the XPS 13 with at most a 256 GB SSD. I bought a larger SSD and installed it with the following steps:

  1. Create a Windows 10 install USB using this tool from Microsoft.
  2. Download Windows drivers here to the USB, since the clean install of Windows won't include all of the correct drivers. I grabbed the video, audio, and wifi drivers.
  3. Install the new SSD.
  4. Disable SecureBoot and change the SATA operation from "RAID On" to "AHCI" in the BIOS. This is required for installing Debian.
  5. Install Windows.
  6. Install the drivers downloaded on the USB stick.
  7. Disable Windows "Fast Startup."

Installing Debian

Install Debian as usual, but use this image. It includes non-free firmware necessary for the wifi card.

Configuring the install

I started without any graphical software installed, and roughly followed these steps:

  1. Secure a network connection, either with wicd-curses or nmcli.

  2. Install X.org, i3, alsa, fonts, and aptitude:

    # apt-get install xorg i3 libasound2 alsa-base alsa-utils alsa-oss alsamixergui fonts-liberation fonts-firacode fonts-dejavu aptitude
    
  3. Configure X.org:

    # Xorg -configure
    # cp /root/xorg.conf.new /etc/X11
    
  4. Configure the trackpad:

    # mkdir /etc/X11/xorg.conf.d
    # cp /usr/share/X11/xorg.conf.d/70-synaptics.conf /etc/X11/xorg.conf.d/
    

    I found the following settings (in the 70-synaptics.conf file) to be the most comfortable:

    Option "VertScrollDelta" "-111"
    Option "HorizScrollDelta" "-111"
    Option "HorizTwoFingerScroll" "1"
    Option "PalmDetect" "1"
    Option "CoastingSpeed" "1"
    Option "CoastingFriction" "10"
    
  5. X.Org can't alter the brightness setting out of the box (i.e. xbacklight doesn't work). Fix this by placing the following under Device section in the X.Org configuration:

    Driver      "intel"
    Option      "Backlight"  "intel_backlight"
    

    You may also have to edit your bootloader settings.

  6. Create a non-root user for yourself.

  7. Configure font smoothing by placing into ~/.fonts.conf

    <?xml version='1.0'?>
    <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
    <fontconfig>
        <match target="font">
            <edit mode="assign" name="rgba">
                <const>rgb</const>
            </edit>
        </match>
        <match target="font">
            <edit mode="assign" name="hinting">
                <bool>true</bool>
            </edit>
        </match>
        <match target="font">
            <edit mode="assign" name="hintstyle">
                <const>hintslight</const>
            </edit>
        </match>
        <match target="font">
            <edit mode="assign" name="antialias">
                <bool>true</bool>
            </edit>
        </match>
        <match target="font">
            <edit mode="assign" name="lcdfilter">
                <const>lcddefault</const>
            </edit>
        </match>
    </fontconfig>
    
  8. Test it out! Run startx.

Optional extras

I also made the following tweaks:

  1. Remaps Control to Caps Lock using xorg.conf:

    Section "InputClass"
            Identifier            "Keyboard Setting"
            MatchIsKeyboard       "yes"
            Option                "XkbOptions" "ctrl:nocaps"
    EndSection
    
  2. Map media keys with i3 by adding the following to ~/.config/i3/config:

    bindsym XF86AudioRaiseVolume exec amixer set Master 5%+
    bindsym XF86AudioLowerVolume exec amixer set Master 5%-
    bindsym XF86AudioMute exec amixer set Master toggle
    
  3. Install extra software: Chrome, urxvt, Git, GnuPG, NeoVim, Dropbox, TeXLive, Zathura, etc. Installing NeoVim requires a few pieces:

    # aptitude install neovim python3 python3-pip
    $ pip3 install neovim neovim-remote
    

    As does Dropbox:

    # aptitude install libxslt1.1