Look, I’m a ‘mac guy’. As ‘mac guy’ as it gets really. But, I like playing with tech and I like knowing that if I had to switch to something else, I could.
I’ve used many of the main distros before, mostly for servers, but I’ve always steered clear of the final Linux boss. It is finally time. I purchased a refurbished ThinkPad on eBay and spun up the live boot USB.
A painful amount of debugging later and I’ve got a working setup that is actually kind of nice.

Here’s my full terminal history with what I can remember doing and why for the next time I need to do all this again.
The live boot kinda sucks, but it has a shortcut. Connect to wifi, then run archinstall
for the guided install script.
Install some base packages.
sudo pacman -S lxappearance
sudo pacman -S tmux
sudo pacman -S neovim
sudo pacman -S wget
sudo pacman -S neofetch
sudo pacman -S noto-fonts-emoji
Energy use
I’m not sure if this did anything good (or bad). Battery use is pretty good so happy for now.
sudo pacman -S thinkfan
sudo pacman -S tlp
sudo pacman -S tp_smapi
systemctl enable tlp
Terminal
Install a nicer terminal emulator.
sudo pacman -S alacritty
Theme and tweaks
Lots of .config tweaks to apply themes and get everything to look a bit nicer. Copy from dotfiles on github.
For themes in the dotfiles I got everything from the dracula theme as the base.
VS Code
Install VS Code from AUR, because normal packed one doesn’t have “settings sync” feature. Which makes it unusable.
pacman -S –needed base-devel git
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
yay --version
yay -S visual-studio-code-bin
Trackpad
Set trackpad sensitivity / pointer speed and enable tap to click.
sudo pacman -S xorg-xinput
# Assuming trackpad is on 12
xinput list-props 12
xinput --set-prop 12 "libinput Tapping Enabled" 1
xinput --set-prop 12 "libinput Accel Speed" 0.2
When happy with the settings above, create a permanent config.
sudo nvim /etc/X11/xorg.conf.d/90-touchpad-speed.conf
# File content:
Section "InputClass"
Identifier "touchpad configuration"
MatchIsTouchpad "on"
Driver "libinput"
Option "Tapping" "on" # Enables tap-to-click
Option "AccelSpeed" "0.2" # Sets acceleration speed
EndSection
Fix screen tearing
Scrolling browser pages is painful, fix the screen tearing.
sudo nvim /etc/X11/xorg.conf.d/10-amdgpu.conf
# File content:
Section "OutputClass"
Identifier "AMDgpu"
MatchDriver "amdgpu"
Driver "amdgpu"
Option "HotplugDriver" "amdgpu"
Option "TearFree" "true" # no tearing
EndSection
Audio
Get sound working (I should have enabled this as part of the install script).
sudo pacman -S alsa-utils
sudo pacman -S alsa-firmware
sudo pacman -S wireless-regdb
alsactl init
acmd list-cards
pacmd list-cards
sudo alsactl store
aplay -l
sudo pacman -S pulseaudio pulseaudio-alsa
pulseaudio --start
alsamixer
speaker-test -c 2
pavucontrol
systemctl --user status pulseaudio.socket
systemctl --user enable pulseaudio
systemctl reboot
Screen brightness
Fix display brightness. Multiple commands to test.
# Test we can set them directly
cd /sys/class/backlight/
ls
sudo sh -c 'echo "50" > /sys/class/backlight/amdgpu_bl1/brightness '
# If that works, install some stuff and check for keyboard events
# from: https://wiki.gentoo.org/wiki/ACPI/ThinkPad-special-buttons
sudo pacman -S acpilight acpid
sudo acpid -c /etc/acpi/events/ -s /var/run/acpid.socket -f -d -l | tee tmp
sudo systemctl enable acpid.service
sudo systemctl start acpid.service
# Note the event names, make matching events in folder
cd /etc/acpi/events
sudo nvim brightnessup
Brightness up keypress event file content (down is same, just change event name). Note they point to scripts we will create in ../actions after.
# video/brightnessup BRTUP 00000086 00000000
event=video/brightnessup
action=/etc/acpi/actions/brightnessup.sh
Brightness up keypress event script content
IncVal=20
# Get the Maximum value for use.
read -r MaxVal < "/sys/class/backlight/amdgpu_bl1/max_brightness"
# Get the current brightness value.
read -r CurrVal < "/sys/class/backlight/amdgpu_bl1/brightness"
# Set the new value minus the decrement value.
NewVal=$(($CurrVal + $IncVal));
echo $NewVal
# Set it to the threshold of the max value.
ThresholdVal=$(($NewVal<$MaxVal?$NewVal:$MaxVal))
echo $ThresholdVal
# Set the new value directly.
echo -n $ThresholdVal > /sys/class/backlight/amdgpu_bl1/brightness
logger "[ACPI] brightnessup |$CurrVal| |$NewVal| |$ThresholdVal|"
Brightness down keypress event script content
DecVal=20
# Set the Minimum we will accept.
MinVal=0
# Get the current brightness value.
read -r CurrVal < "/sys/class/backlight/amdgpu_bl1/brightness"
# Set the new value minus the decrement value.
NewVal=$(($CurrVal - $DecVal));
echo $NewVal
# Set it to the threshold of the min value.
ThresholdVal=$(($NewVal>$MinVal?$NewVal:$MinVal))
echo $ThresholdVal
# Set the new value directly.
echo -n $ThresholdVal > /sys/class/backlight/amdgpu_bl1/brightness
logger "[ACPI] brightnessdown |$CurrVal| |$NewVal| |$ThresholdVal|"
And remember to make those two scripts you just created executable
sudo chmod 777 brightnessup.sh
sudo chmod 777 brightnessdown.sh
Custom boot image
Not the biggest fan of the standard Lenovo boot image. Following this reddit guide, download the required boot firmware image for your device. For me its here direct or mirror. I’ve also added the final logo image I’m using to the mirror.
cd Downloads
# Get USB drive id
lsblk
# sdb for me in this case
yay -S geteltorito
sudo geteltorito.pl -o bios.img r12uj64wd.iso
sudo dd if=bios.img of=/dev/sdb bs=4M
sudo mkdir /mnt/sdb
sudo mount /dev/sdb1 /mnt/sdb
cd /mnt/sdb/FLASH
sudo cp ~/Downloads/LOGO.JPG LOGO.JPG
Reboot onto the USB by pressing enter and then f12 to choose it as boot option. Press option 2 from the menu and yes / enter to run the update.
Quick boot
We don’t need to wait 3s for the default boot option on startup.
sudo nvim /boot/loader/loader.conf
# Update value for timeout in the file
timeout 0
Change network manager
For easy VPN use we can swop from ‘systemd-networkd’ which I enabled with the archinstall script initially to networkmanager.
sudo pacman -S networkmanager network-manager-applet
sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service
nmcli
nmcli device wifi list
sudo systemctl stop systemd-networkd
sudo systemctl disable systemd-networkd
sudo systemctl stop iwd
sudo systemctl disable iwd
systemctl reboot
# now a vpn client like ProtonVPN should work directly
sudo pacman -S proton-vpn-gtk-app
Prepare for screenshots
Make it possible to take screenshots - via this github gist.
sudo pacman -S maim xclip
sudo nvim ~/.config/i3/config
sudo mkdir ~/screenshots
The final checkpoint, of course.
[jacob@thinkpad .config]$ neofetch
-` jacob@thinkpad
.o+` --------------
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: 20NJ0007US ThinkPad T495
`+oooooo: Kernel: 6.13.2-arch1-1
-+oooooo+: Uptime: 1 hour, 10 mins
`/:-:++oooo+: Packages: 442 (pacman)
`/++++/+++++++: Shell: bash 5.2.37
`/++++++++++++++: Resolution: 1920x1080
`/+++ooooooooooooo/` WM: i3
./ooosssso++osssssso+` Theme: Adwaita [GTK2/3]
.oossssso-````/ossssss+` Icons: Adwaita [GTK2/3]
-osssssso. :ssssssso. Terminal: alacritty
:osssssss/ osssso+++. CPU: AMD Ryzen 7 PRO 3700U w/ Radeon Vega Mobile Gfx (8) @ 2.300GHz
/ossssssss/ +ssssooo/- GPU: AMD ATI Radeon Vega Series / Radeon Vega Mobile Series
`/ossssso+/:- -:/+osssso+- Memory: 3836MiB / 13861MiB
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
And yes, the ThinkPad has been great. My laptop preference list:
macbook pro > thinkpad > dell xps > no thanks.
Thanks for stopping by.