New laptop part 1: EndeavourOS / Archlinux on the FrameWork laptop

Tuesday, January 17, 2023



Following my previous post in this serie, New laptop part 0: Discovering the FrameWork laptop, the goal of this post is to explain the steps I had to go through after installing EndeavourOS (a gnu/linux distribution based on Archlinux) on the FrameWork laptop and all the small things I had to tweak. It isn’t 100% perfect and finished, but I’ll try to update this page (or link a new entry) if I improve the following information.

Before going into all the details, I wanted to thank the EndeavourOS community, Archlinux wiki and FrameWork communities where I found all those informations in a way or another.


As said in my previous post, I just went through the GUI installer to install EndeavourOS, selected full encryption for the hard drive and let it ran. See the official documentation for help.

Post installation

Let’s start by installing vim to edit all the configuration with a real editor :).

sudo pacman -S vim

If you look for a complete out of the box vim config, I suggest spf13 vim config.


The brightness keys (via fn+F7/8) did not work out of the box (while others do work fine). To fix this, I edited the file /etc/modprobe.d/framework-als-deactivate.conf and added:

blacklist hid_sensor_hub


I had to change the default HiDPI setting as the screen resolution is so high (2256x1504). To do so, edit the ~/.Xresources file, and add:

Xft.dpi: 120

Fixing Old OpenGL driver (i965)

I had issue with software running with openGL driver. Namely chromium and lagrange (a gemini browser).

TLDR; from archlinux wiki:

In Mesa 20.0, a new OpenGL driver, Iris, is promoted to be the default for Gen8+. Certain applications run faster with it. You may disable it and revert to use the old i965 driver by setting the MESA_LOADER_DRIVER_OVERRIDE=i965 environment variable before starting any OpenGL application. This setting does not affect Vulkan applications. –

I’m going the per application road, so I need to create a <application>.desktop file in ~/.local/share/applications/ (and create the directory if doesn’t exist).

For Chromium, there is already an existing /usr/share/applications/chromium.desktop file, so copy it in the ~/.local/share/applications/ directory and then edit it. Change all exec lines (3 times in my case) from

Exec=/usr/bin/chromium %U


Exec=env MESA_LOADER_DRIVER_OVERRIDE=i965 /usr/bin/chromium %U

For Lagrange, copy /usr/share/applications/fi.skyjake.Lagrange.desktop to ~/.local/share/applications/fi.skyjake.Lagrange.desktop and edit the Exec line to be:

Exec=env MESA_LOADER_DRIVER_OVERRIDE=i965 /usr/bin/lagrange %U

The complete file for lagrange:

[Desktop Entry]
Comment=A Beautiful Gemini Client
Exec=env MESA_LOADER_DRIVER_OVERRIDE=i965 /usr/bin/lagrange %U


To add support for the fingerprint reader, first install fprintd:

pacman -S fprintd

Then, to enable sudo via fingerprint, edit /etc/pam.d/sudo, and add:

auth      sufficient


auth      include   system-login

If you don’t want to use the fingerprint for a sudo command, use ctrl+c and then enter your password.

For lightdm, edit /etc/pam.d/lightdm and add at the top:

auth        sufficient try_first_pass likeauth nullok
auth        sufficient

This allow to use either password or the fingerprint. To activate the fingerprint, enter a empty password, and then use the fingerprint :). Using only the second line will require the fingerprint and won’t allow password alternative (which I wanted).

Fan management

So far, I have only followed the archlinux wiki installation steps. I haven’t pushed much the CPU yet and the few times the fan went on it was loud but ok. I need more testing on this when I’ll daily drive completely this laptop.

Install thermald and dptfxtract-bin:

pacman -S thermald
yay -S dptfxtract-bin

And then configure thermald and start the service.

sudo dptfxtract-bin
sudo cp /etc/thermald/ /etc/thermald/thermal.conf.xml
sudo systemctl enable themarld.service
sudo systemctl start themarld.service


Install the necessary software:

sudo pacman -S bluez bluez-utils blueman

Add yourself to the lp group in case you need bluetooth tethering. Connect the external bluetooth device using the GUI blueman-applet. Sounds from laptop to bluetooth (and inverse) works without any additional configuration.

Autostart bluetooth:

sudo systemctl enable bluetooth.service
# start if now if you want:
sudo systemctl start bluetooth.service

Autostart blueman applet in the i3 config (or use your own autostart process):

exec --no-startup-id blueman-applet

Bluetooth is disabled by default though and I only activate it on demand via the blueman-applet.


Sound speaker works out of the box, switching from speaker to jack port works also. Pipewire is really awesome :). Microphone works also out of the box and the kill switch is a nice touch on the framework laptop :).

Switching sound between bluetooth and “local” works also very smoothly and quickly.

Don’t care

I didn’t even try to use the ambient light sensor. I prefer changing it myself when needed. Could be used with iio-sensor-proxy apparently.

Conclusion and next steps

That’s it for this post, I still need to manage the hibernation, but hopefully there will be a new post later that fix the missing things :). Next post will be about additional software installation needed to make this laptop a full working workstation :).


If you find any issue or have any question about this article, feel free to reach out to me via email, mastodon, matrix or even IRC, see the About Me page for details.

See Also

New laptop part 2: Core tools

New laptop part 0: Discovering the FrameWork laptop