Disclaimer: Everything I write comes from those tiny funny neurons firing in my own brain. Nobody (neither my employer nor Framework) told me what to write in this article.

A new adventure

I've been wanting a just-for-my-own-enjoyment Linux laptop for a looong time. Probably it all started from my time in Framestore, when CentOS was the main OS at work, and I could see the Linux Jedi there perform all kind of (useful) one-line shell trickeries. You could tell those kind of things came from running Linux as a daily driver at home, not just at your $dayjob.

And since I assembled my first SFF (see My first SFF build with Arch linux) and I tasted again the sweet sweet juice of independence and flexibility (aka I install the software I want/need, not what the hardware manifacturer thinks that I need), the desire of having a small laptop to use just for my own personal off-work stuff just kept growing. Yes, there is also the occasional chance to say "btw I use Arch" and sound like a 15 y/o and feel young again; but memes aside, there's a lot that I appreciate from a system where I start from 0 and install everything from scratch, as I need it, by myself.

Not to mention how incredibly well written and useful the Arch wiki is.

After the usual months of research I decided that for what I want to have in my life, a tiny Framework 13 was a good choice, after all.

More than the modular I/O (which is definitely welcome) I was mostly interested in owning a machine that can grow with me. And since the Framework guys are currently based in SF, and I happen to also be in California during this period of my life, I said "hey! for once let's make good use of the fact that I'm in the heart of tech bubbles Silicon Valley".

Since I've been coping with a bit of work-stress in the last months (what it means to realize that in fact you do work for a big corp, et cetera..), I have come to realize that when somebody comes up with interesting ideas, we should do our best and support and encourage them, especially since the Big Tech of this world seems to have tentacles that try to reach for every single of part of my life (cough spitting AI in everything cough). Since I think that Right to Repair is in general a good idea (philosophically and not merely on the practical plane), I thought Framework might be onto something good.

Things that I liked so far

The love and care in the assembly steps

It's nice to look at the inside of a laptop and feel it was designed to be a warm welcome. It's hard to express this feeling properly with words, but many times you open a laptop and it seems like everything has been done to keep you away from the internals and the hardware of the machine, like a giant sign saying "you're not smart enough for this - stay away please". Opening the inside of the Framework 13 felt like the beginning of a new exciting adventure, filled with ownership and care. Installing RAM and SSD was refreshingly simple.

The display

It's sooo nice! Text looks very crisp, which makes it great for programming. It's a 2256x1504 display on a 13.5" screen. The 3:2 aspect ratio is also interesting. I didn't really check gamut and other color space-y things since I'm not gonna do 3D work on this machine, but I found the matte display to be a very positive surprise since the moment I ran my first shell script.

It's a really good Linux laptop

I bought the DIY edition (of course) so that I could install whatever I wanted on it. I was initially tempted by Fedora but then I realized that I really love the Arch wiki and I could keep going with Arch+KDE, which has been a good combo so far on the other machine.

Probably the biggest pain point was realizing that it was just easier to disable Secure Boot in order to get the bootable arch drive to be recognized. I wish I could say that following the history of Secure Boot in arch (https://bugs.archlinux.org/task/53864 and https://wiki.archlinux.org/title/Unified_Extensible_Firmware_Interface/Secure_Boot) and understanding all of its moving parts was a piece of cake, but it was and it's still not, at least for a grug like me.

Other than that, I found that most other things about installing Arch on this machine worked out of the box. This time I used systemd-boot instead of GRUB as a bootloader, because every time I look at the arch wiki for GRUB (https://wiki.archlinux.org/title/GRUB) I feel overwhelmed.

While I was there, I even made the switch to Wayland! It seems that in KDE 6 it's the way to go (but on my other machine I still have X, because I also do some gaming and I'm afraid of doing the switch)!

Following (https://wiki.archlinux.org/title/KDE) was pretty easy. I chose SSDM as the display manager.

I didn't yet configure the machine to boot into KDE directly, so I just wrote a tiny bash wrapper that just boots into KDE for me without me having to remember the whole thing:

start-wayland() {
    /usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland
}

I encountered a few shenanigans in Emacs, but that has nothing to do with the laptop. Basically, Emacs (29.4, IIRC) was crashing like crazy for me (maybe due to Wayland?) until I compiled it from scratch using --with-pgtk like this:

#!/usr/bin/env sh

set -e

PREFIX=/some/path

echo "Running autogen.."
./autogen.sh

echo "Running configure.."
./configure --enable-checking='yes,glyphs' \
    --enable-check-lisp-object-type \
    --prefix "$PREFIX" \
    --with-pgtk

echo "Running make.."
make -j "$(nproc)"

make install

In any case, all of this is just part of choosing to live a hack-y, but happy, Linux life :)

Here we go again..

The keyboard

I'm writing this article from the Framework 13 itself, but from my Keycron split keyboard (which has been another life changing experience in my dev life). So I wouldn't necessrily say that the built-in keyboard is my go-to one in all cases, but that doesn't mean that it's a bad keyboard. In fact, I like it more than the built-in one of the latest MacBook, which have just too little travel for my fingers in search of tactile emotions.

Things I didn't like so far

It looks like only certain ports are working fine with HDMI, which partially defeats the point of "you can choose which port to buy". I originally mounted the HDMI port on the bottom-left side, but my external display couldn't read anything from it. So I found an article on their knowledge base (https://knowledgebase.frame.work/en_us/expansion-card-functionality-on-framework-laptop-13-amd-ryzen-7040-series-SkrVx7gAhh) that explains which ports are suited for high energy consumption use cases, like an HDMI port.

Not a big deal, but it would be nice if it was clearly shown also when choosing the ports so that you're away of it before buying them.

Here's the baby before the assembly. Chocolate snacks not included

Final considerations

I'm a happier t(h)inkerer now. I like that I have connected with the technology that I own on a deeper level than just the usual 'buy it/consume it/buy it again' cycle. Things and new toys per se don't make happiness, but they can allow us to express ourselves creatively, which for some of us is a healthy source of happiness.

Obligatory screenfetch

screenfetch
                   -`
                  .o+`
                 `ooo/                 OS: Arch Linux 
                `+oooo:                Kernel: x86_64 Linux 6.9.7-arch1-1
               `+oooooo:               Uptime: 1h 42m
               -+oooooo+:              Packages: 1325
             `/:-:++oooo+:             Shell: bash 5.2.26
            `/++++/+++++++:            Resolution: 3440x2944
           `/++++++++++++++:           DE: KDE
          `/+++ooooooooooooo/`         WM: KWin
         ./ooosssso++osssssso+`        GTK Theme: Breeze-Dark [GTK2], Breeze [GTK3]
        .oossssso-````/ossssss+`       Icon Theme: breeze-dark
       -osssssso.      :ssssssso.      Disk: 25G / 902G (3%)
      :osssssss/        osssso+++.     CPU: AMD Ryzen 7 7840U w/ Radeon 780M Graphics @ 16x 5.132GHz
     /ossssssss/        +ssssooo/-     GPU: AMD Radeon 780M (radeonsi, gfx1103_r1, LLVM 17.0.6, DRM 3.57, 6.9.7-arch1-1)
   `/ossssso+/:-        -:/+osssso+-   RAM: 7603MiB / 31276MiB
  `+sso+:-`                 `.-/+oso: 
 `++:.                           `-/+/
 .`                                 `/