Recently, I bought a used ThinkPad X230 for around $60. It came with a 3rd-gen i7 CPU, 8GB RAM, and a 180GB SSD. Decent specs for a family laptop.

The previous owner had a fresh install of Windows 10 on it, and idle RAM usage was over 2GB:

Minimum RAM usage on a fresh install of Windows 10

While on Arch + XFCE, it dropped to under 1GB:

RAM usage on a fresh install of Arch + XFCE

Here is how.

Hardware#

Bofor installing Linux, I wanted to replace the thermal paste on the CPU and also swap the coin battery. This way, booting without the main battery (which was the upgraded 9-cell version, but completely dead anyway) would not require manually setting the date and time every time.

The error I got when trying to boot without the main battery

Alright, you got me. I had no reason to tear the whole thing apart. I just wanted to =)

Let the tear-down begin#

In the middle of it tearup

I removed the old coin battery and replaced it with a new one:

New coin battery (back)

Then I cleaned off the old thermal paste:

Old thermal paste on CPU

And replaced it with new paste (probably a little too much):

CPU with the new thermal paste

Software#

Installing Arch#

With the help of the Arch Wiki, I went to the official Arch Linux download page, picked a mirror close to my location, and downloaded archlinux-2025.08.01-x86_64.iso (around 900MB).

Then I plugged in a USB drive (8GB was enough) and opened Rufus to make it bootable with these settings:

  • Device: my USB stick
  • Boot selection: archlinux-2025.08.01-x86_64.iso
  • Partition scheme: GPT
  • Target system: UEFI (non-CSM)

Then I clicked START and selected Write in ISO Image Mode (Recommended)

After that, I switched the BIOS mode from Legacy to UEFI because apparently it’s the less painful option nowadays.

archinstall#

After booting into Arch ISO, I connected to Wi-Fi using the iwctl network configuration tool.

Then I typed archinstall to go to the guided installer. Because I’m not a wierdo.

These were my settings:

  • Language/keyboard: en_US (added Persian later)
  • mirror regions::
    • Iran (failed at first attempt)
    • Germany
    • Netherlands
    • Sweden
    • Finland

archinstall mirrors

  • Disk: selected the 180GB SSD
  • Disk layout: Erase all
  • Bootloader: systemd-boot
  • Filesystem: ext4
  • Hostname: jfryusef
  • Root password: I’m not gonna tell you that
  • User account: created one and enabled (wheel) (admin)
  • Network: NetworkManager
  • Kernel: linux
  • Microcode: intel-ucode
  • Profile: DesktopXFCE4 (light and stable)
  • Audio: pipewire (could not get it working at first)
  • Optional packages: firefox and a few others (optional)
  • Timezone: Asia/Tehran

Then I hit Install.

Once the installation finished, I rebooted the system and removed the USB drive. XFCE booted correctly and I could log in immediately.

The hard-freeze problem#

Appearently, sometimes some old ThinkPads on modern Linux kernels hard-freeze because of aggressive C-states. Mine had it too.

Fix: add this kernel boot parameter: intel_idle.max_cstate=1

Installing stuff#

I opened a terminal and installed these packages:

  • sudo pacman -S man-db man-pages
    (built-in documentation system for commands)

  • sudo pacman -S fwupd
    (firmware updater)

  • sudo pacman -S bluez bluez-utils
    (Bluetooth stack)

  • sudo pacman -S gvfs gvfs-mtp
    (virtual filesystem support + Android MTP support)

  • sudo pacman -S thunar-archive-plugin p7zip unzip unrar
    (archive utilities + Thunar integration)

  • sudo pacman -S brightnessctl
    (screen brightness utility)

  • sudo pacman -S pipewire pipewire-pulse wireplumber
    (Linux audio stack)

  • sudo pacman -S blueman
    (GUI Bluetooth manager)

Then I enabled the required services:

systemctl --user enable -- now pipewire pipewire-pulse wireplumber
sudo systemctl enable --now bluetooth
sudo timedatectl set-ntp true

I also needed an AUR helper, so I installed yay:

sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
pacman yay
sudo pacman -S firefox yay -S obsidian
sudo pacman -S obs-studio yay -S anydesk-bin
sudo pacman -S qbittorrent yay -S hiddify-app-bin
–snip– –snip–

Tweaking things#

Keyboard shortcuts#

  • Alt+T: terminal (xfce4-terminal)
  • Super: application finder (xfce4-appfinder)
  • Super+E: Thunar (thunar)
  • ThinkVantage button (Launch1): logout menu (xfce4-session-logout)

I also changed the volume step size to 10% in xfce4-pulseaudio-plugin.

Workspace shortcut#

  • Alt+1: workspace 1
  • Alt+2: workspace 2
  • Alt+3: workspace 3
  • Alt+4: workspace 4

Winndows management#

  • Alt+F: maximize window
  • Alt+Up: tile window to the left
  • Alt+Down: tile window to the right
  • Alt+Page Up: tile window to the top-left
  • Alt+Page Down: tile window to the top-right
  • Alt+Left: tile window to the bottom-left
  • Alt+Right: tile window to the bottom-right

(later regretted using Alt+Left and Alt+Right because they interfere with browser navigation shortcuts. But I kept using them anyway.)

Ricing?#

I used Open Sans + JetBrains Mono as my main fonts, and Gruvbox as the primary color palatte using this GTK theme.

For icons and cursors, I kept the default elementary theme.

These:

Panel items

are the items on my panel (a 24px bottom row):

Panel ScreenShot

I set Smoothwall as my window decoration theme. A practical choice.

Then I switched my display manager from LightDM:

sudo systemctl disable lightdm.service

to Ly (a TUI login manager):

sudo pacman -S ly
sudo systemctl enable ly.service

I also installed this Gruvbox Firefox theme and this VS Code theme.

My Obsidian theme#

Since I couldn’t find any good ones for my usecases, I created my own Obsidian Gruvbox theme that uses Minimal theme as the base.

Once again, feel free to share similar projects.