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).
- Add
psmouse.synaptics_intertouch=1
toGRUB_CMDLINE_LINUX_DEFAULT
in/etc/default/grub
. - Update grub with
sudo update-grub
- 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