These are my personal notes about setting up an X1 Carbon for use as a linux dev machine.

  • Thinkpad X1 Carbon Gen 7
  • Ubuntu 19.10
  • i3wm 4.16.1

Initial setup

sudo apt install i3

Log out, select i3 from gear menu and log back in.

Use start wizard to create config file with windows key as mod key. Wizard creates default config files in the XDG directory scheme (~/.config/i3/).


Hardware Support

First, ensure you are running 7th Gen Carbon with:

sudo dmidecode -s system-version

Firmware updates

Install fwupd

sudo apt install fwupd

Update firmware with fwupdmgr get-updates. Reboot.

Improve power saving & battery life

Install TLP:

sudo apt install tlp

See trackpad issues for note about trackpad and tlp compatibility.

Fix trackpad

Trackpad does come up after boot (both Gnome and i3).

  1. Add psmouse.synaptics_intertouch=1 to GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub.
  2. Update grub with sudo update-grub
  3. Reboot

Re-run steps 2 and 3 if trackpad fails again (this happened after an MOK update). If this doesn't help, trackpad issues might be related to power saving.

If tlp is installed, edit /etc/default/tlp and add:

USB_BLACKLIST="06cb:00bd"

Get the correct hardware ID from running lsusb and getting the UUID for "Synaptics, Inc.". Reboot.

Set up inertial and natural (reversed, Mac-like) scrolling:

Install synaptics drivers with:

sudo apt install xserver-xorg-input-synaptics

In ~/.config/i3/config

exec --no-startup-id synclient HorizEdgeScroll=1 VertEdgeScroll=1 VertScrollDelta=-60

It's not great, but play with VertScrollDelta options. Higher negative (closer to 0) is a faster scroll.

Stop screen tearing on Intel GPU

TearFree is disabled by default. To enable it create the directory,

sudo mkdir /etc/X11/xorg.conf.d/

Then add to the file /etc/X11/xorg.conf.d/20-intel.conf

Section "Device"
Identifier  "Intel Graphics"
Driver      "intel"
Option      "AccelMethod" "sna"
Option      "TearFree" "true"
EndSection

Restart X11.

Enable volume keys

sudo apt update; sudo apt install xbacklight alsa-utils pulseaudio

Add to ~/.config/i3/config

# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl -- set-sink-volume 0 +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl -- set-sink-volume 0 -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound

# Sreen brightness controls
bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness
bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness

Note: the sink number might change depending on how many audio outputs you have. For example, after pairing bluetooth headphones, the default speakers changed from "#0" to "#1". Check sinks with pactl list sinks.

2nd Note: Apparently this allows infinite volume, so you can set volume way above 100% (why is this possible...?). Need to figure out volume limiter.

Add second mod key

PrtSc button on the X1 isn't super useful and I prefer to use it as a second mod key.

Add to ~/.config/i3/config

exec --no-startup-id xmodmap -e 'keycode 107 = Super_R' && xset -r 107
  • xmodmap -e 'keycode 107 = Super_R' sets physical PrtSc key (should have key code 107; you can check this with xev) to send the key symbol Super_R, the right Windows key. You can also use Super_L for a second left Windows key, both should be recognized as modifier Mod4 by i3. `
  • xset -r 107 disables autorepeat for the PrtSc (now right Windows) key, as is already the case for the usual modifier keys.

Connect to Wifi

Use this if possible:

nmtui

If you need to use cli:

List available wifi access points:

nmcli dev wifi

Join access point:

nmcli device wifi connect "SSID NAME" PASSWORD

Bluetooth

sudo apt install blueman

Run blueman-manager from D menu.

Need to pair and then connect as a sink for output.

Change audio and output device

sudo apt install pavucontrol

Run pavucontrol from D menu.

Internal speakers sound best when set to 4.0 audio channels, though they are still pretty bad. Boost audio volume over 100% for output more like Windows.

Connect to wireguard

First, install wireguard. This may require a reboot and approval of firmware modifications (if secure boot is enabled). If so, just set a password and do the MOK update process on reboot.

sudo apt install wireguard

Create (sudo) /etc/wireguard/wg0.conf

[Interface]
PrivateKey = <contents of mobile-privatekey>
Address = <desired ip of laptop>/32
DNS = <optional, ip of gateway>

[Peer]
PublicKey = <contents of server-publickey>
Endpoint = <server ip/domain>:51820
AllowedIPs = 0.0.0.0/0

Start wireguard:

sudo wg-quick up wg0

Stop wireguard:

wg-quick down wg0

Customization & Personalization

Wallpaper

Install feh:

sudo apt install feh

Add to ~/.config/i3/config

exec --no-startup-id feh --bg-scale ~/Pictures/fly_eagles_fly.jpg

Install NASC

Soulver for Linux (an app I miss from MacOS)

git clone https://github.com/parnold-x/nasc.git
cd nasc
mkdir build && cd build

Install build deps:

sudo apt install valac glib-2.0 cmake build-essential gee-0.8 gtk+-3.0 libgranite-dev libsoup2.4-dev libgtksourceview-3.0-dev libqalculate-dev

Build:

cmake -DCMAKE_INSTALL_LIBDIR=/usr/lib -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
make -j 8 && sudo make install