I have installed Arch Linux on a Microsoft Surface Book 3 to use as my “focus” machine. This page outlines some things I’ve had to install and tweak.

Most everything works out of the box except the cameras, which I’ve disabled in the BIOS. Suspend only supports ACPI state 0 Suspend-To-Idle and eats up 20%+ of the battery life overnight. Resume from Hibernate has keyboard issues.

This is not a recommended laptop for running Linux.

Visual Studio Code hangs on launch

Had this issue.

Work around add to ~/.vscode-oss/argv.json

        "password-store": "basic"

Toshy - Mac key bindings

Installed Toshy because apparently it works better with Wayland.

Install xremap-gnome for this to work on Wayland.

SSH Agent

Add this to ~/.bashrc

# ssh-agent modified from: https://wiki.archlinux.org/title/SSH_keys#ssh-agent
if ! pgrep -u "$USER" ssh-agent > /dev/null; then
    ssh-agent > "$XDG_RUNTIME_DIR/ssh-agent.env"
fi
if [[ ! -f "$SSH_AUTH_SOCK" ]]; then
    source "$XDG_RUNTIME_DIR/ssh-agent.env" >/dev/null
fi

Realized that the timeout is set to 1 hour with the “-t 1h” flag. I removed this since it was annoying.

Jetbrains Mono, Apple and Microsoft fonts

Arch has this

sudo pacman -S ttf-jetbrains-mono apple-fonts ttf-ms-win11-auto

Set the default for Visual Studio Code: https://stackoverflow.com/questions/59776906/how-do-i-change-vs-code-settings-to-use-jetbrains-mono-font

Avahi

Install

sudo pacman -S avahi nss-mdns

Enable and start

sudo systemctl enable avahi-daemon.service
sudo systemctl start avahi-daemon.service

Enable hostname resolution. Modify line in /etc/nsswitch.conf

hosts: mymachines mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns

Brother HL-3170CDW printer

Install CUPS

sudo pacman -S cups
systemctl enable cups.service
systemctl restart cups.service
systemctl status cups.service

Install driver

yay -S brother-hl3170cdw

Add printer via CUPS Administration http://localhost:631/admin

Other

chromium
code
freetube
git
go
hugo
jq
rust
sudo
vim

Unresolved issues

dmesg output:

[  861.301517] i915 0000:00:02.0: [drm] *ERROR* Link Training Unsuccessful

Similar to: https://github.com/NixOS/nixpkgs/issues/36392

Appears to be an issue with the dock and using a USBC to Display Port cable.

Unplugging the power cable (which connects to the dock) seems to help get the external screen displaying again. Annoying workaround.

Resume from Hibernate has keyboard issues

Tracking the issue: https://github.com/linux-surface/linux-surface/issues/1412

The system Hibernates fine. Resume from Hibernate seems to work except some keys on the keyboard (both USB keyboard and built-in keyboard) didn’t work on the one test I did. Was able to SSH into the laptop and reboot it from there.