I got a new laptop, so this felt like the right time to migrate to Wayland.
Delta Link to heading
| what | before | after |
|---|---|---|
| hardware | ||
| laptop | Asus UX501V | Lenovo X1 Extreme Gen 3 |
| CPU | i7-6700HQ | i7-10750H |
| GPU | GTX 960M | GTX 1650 |
| RAM | 16GB | 64GB |
| OS | ||
| bootloader | Grub | EFISTUB |
| OS | Windows + Arch dualboot | Windows + Arch dualboot |
| networking | netctl | systemd-networkd |
| dns/dhcp | dhcpcd | systemd-resolved |
| wifi | wpa_supplicant | iwd |
| Wayland | ||
| display/login manager | - | - |
| display server | X | Wayland |
| window manager | i3 | Sway |
| bar | i3blocks | waybar |
| backlight | xbacklight | light |
| night mode | redshift | gammastep |
| clipboard | - | wl-clipboard, clipman |
| program launcher | rofi | rofi [wayland] |
| password finder | rofi-pass | rofi-pass-git |
| key remapping | setxkbmap, xcape, xmodmap | interception-tools |
| Tools | ||
| terminal emulator | urxvt | foot |
| shell | zsh | fish |
| shell highlighting | zsh-syntax-highlight | - |
| environment variables | .zshrc | environment.d |
| text editor | vim | emacs doom |
| aur helper | packer | yay |
| directory usage | du | dust |
| password manager | pass | pass |
| search tool | ag [silver searcher] | ag + ripgrep + fd |
| file browser | terminal | terminal + ranger |
| calculator | qalc | qalc, rofi-calc |
| notification deamon | dunst | mako |
| image viewer | feh | feh + sxiv |
| music | - | spotifyd + spotify-tui + waybar custom/media |
| screenshot | teiler+scrot | grimshot (from sway) + custom upload wrapper |
| wallpaper | feh | sway |
| messenger | slack, signal-desktop | slack, signal-desktop [wayland] |
| system monitor | htop | htop |
| remote shell | ssh | ssh |
| browser | chromium | chromium |
| pdf viewer | zathura | zathura |
| vpn | - | openconnect |
see also the i3 -> sway migration guide.
:CUSTOM_ID: hardware
BIOS Link to heading
I made the following BIOS changes for the X1 Extreme Gen 3 (X1E3):
- swap Fn and Ctrl -> on
- Make F1-F12 primary function
- Set sleep mode to linux preference
- keyboard beep -> off
- turn off security->secure boot; otherwise arch installation usb wont boot https://forums.lenovo.com/t5/ThinkPad-X-Series-Laptops/X1-6gen-won-t-boot-from-USB/m-p/4230171?page=1#4230185
- [optional] move usb up in the bios->startup->boot order menu
windows Link to heading
In order to keep the existing Windows installation with dual boot, we need to finish its installation and shrink the partition.
- Use airplane mode (F8) to skip signing in to a microsoft account.
- Install chromium and delete Edge.
- Disable hibernation.
- Disable virtual memory (i.e. swap) to save some disk space.
- Shrink the C volume in device memory.
- Update drivers/bios using lenovo vantage.
Install Arch Link to heading
- Download the ISO: https://archlinux.org/download/
- Create a flash USB: https://wiki.archlinux.org/title/USB_flash_installation_medium
- Follow the installation guide: https://wiki.archlinux.org/title/installation_guide
- I’m using a single ext4 partition for the entire OS
- Using
noatimeandlazytimeoptions infstab. - Disable
systemd-udev-settleto potentially save on boot time (checksystemd-analyze critical-chainfirst):systemctl mask systemd-udev-settle - https://wiki.archlinux.org/title/Lenovo_ThinkPad_X1_Extreme_(Gen_3) and gen2 and carbon 6/7/8 are also usefull
fwupdfor firmware updatestlpfor battery statscpupowerfor setting cpu governor- powersave is a bit slow/unresponsive at times
- performance gets hot and always has fans on
efistub Link to heading
https://wiki.archlinux.org/title/EFISTUB
- Mount existing efi partition to
/boot - May have to (re)install the kernel to make sure
vmlinuz-linuxis written to the mounted efi partition at/boot - install
intel-ucode - https://wiki.archlinux.org/title/Microcode
- run
efibootmgrcommand as explained, but add in the microcode part
Network Link to heading
systemd-networkdsystemd-resolvediwdfor adding/changing wireless connections usingiwctl.
Bluetooth Link to heading
- start
blueman-appletfrom sway - enable
bluetooth.service
Spotify Link to heading
spotifyd-full-git,spotify-tui- Note: spotifyd itself doesn’t currently support playerctl, needed for waybar module updates: https://www.reddit.com/r/archlinux/comments/dp9czu/spotifyd_with_playerctl/
password_cmd = "pass spotify.com | head -1"TODO: fix waybar module coredumping every minute
Audio: pipewire
Link to heading
I have been using
pipewire as my audio
backend, and so far it has been working without problems. Installing it
together with pipewire-alsa, pipewire-jack, pipewire-pulse and
pavucontrol gives everything I need.
Wayland Link to heading
See this post.
SWAY Link to heading
See this post.
Environment variables: environment.d
Link to heading
I’m using environment.d to set my environment variables.
This post has the details.
| |
Homedir cleanup Link to heading
Have a look at XDG Base directory to keep your homedir tidy.
Emacs Link to heading
See this post.