Raspberry Pi: how to install Raspberry Pi OS (64-bit) with the Xfce Desktop

Back to the home page

Contents of this page:

Raspberry Pi OS Desktop features the austere lightweight PIXEL desktop (actually a modified LXDE). But you can also install the 64-bit version of Raspberry Pi OS Lite as base, and use it to create a "mean and lean" Xfce desktop on your computer (with your own set of installed applications).

Xfce looks nicer, is more user-friendly and is more full-fledged than PIXEL (LXDE). This is how to get it:


1. This how-to is written based on my experience with the Raspberry Pi 400 with 4 GB RAM, which is 64-bit hardware. The oldest editions of the Raspberry Pi are 32-bit, which makes them unfit for this how-to.

Downloading and installing

2. The clearest and easiest way to download and install is this:

2.1. First download the official 64-bit edition of Raspberry Pi OS Lite, so not the Desktop edition.

The Lite edition is essentially Debian 11 stripped bare; it doesn't even have a graphical desktop environment. That's important, because you're going to install a totally different desktop environment than the default PIXEL. In this way, you prevent "pollution" of your system by (remnants of) PIXEL.

2.2. Then you put that on a micro SD card, by means of the official tool "Imager" of the Raspberry Pi (CHOOSE OS - Use custom).

Note: Before you click on the "button" WRITE, I recommend to click first on the small gear wheel below on the right. In the dialogue window that appears, make these choices:

a. Image customization options - set that to: to always use

b. Scroll down and tick:
Set username and password

Compose your own username and password. The username shouldn't contain capital letters!

c. Then tick:
Configure wifi

Fill out the name of your wireless network and its password. Also -and this is important!- select your Wifi country. Because by doing so, you also regulate the number of available wireless channels for your WiFi.

d. Scroll to the bottom and deselect:
Enable telemetry

Reason: telemetry is nearly always bad for your privacy. Why oh why was this option enabled by default in the first place?

e. Click on the "button" SAVE and then on the "button" WRITE.

2.3. Boot your Pi from that micro SD card.

Note: it's rather unclear when you can log in. Because after the login prompt has appeared, there'll still follow a lot of lines from the boot sequence (sigh....). When the boot process clearly has come to a halt, the moment has probably arrived that you can log in.

When you haven't changed it, the default login name is: pi
The default password is: raspberry

Establish internet connection

3. If you haven't established internet connection yet as described above, now establish a temporary internet connection by means of a network cable (ethernet). Or establish a wireless connection like this:

sudo raspi-config

In that tool, select 1. System Options. Then hit the Tab key in order to activate the <Select> "button". Hit Enter to confirm that choice. Then: S1 Wireless LAN - select your country by means of the arrow keys - SSID: fill out the name of your wireless network - enter its passphrase (password) - <Finish> - Reboot.


4. Always do these things, in this order:

Apply all available updates

4.1. Start by updating everything:

sudo apt-get update && sudo apt-get dist-upgrade

Install the Xfce desktop environment

4.2. Then you install the graphical desktop environment Xfce (lightweight yet full-featured):

sudo apt-get install xfce4

Install Xfce Terminal

4.3. Then you install the Xfce terminal:

sudo apt-get install xfce4-terminal

Reboot and log in graphically

4.4. Now do a reboot:

sudo reboot

This time, you should be able to log in by means of a nice graphical login window.

Install Firefox ESR

4.5. Open Xfce Terminal. Then you're going to install the long term supported edition of web browser Firefox:

sudo apt-get install firefox-esr

Now launch Firefox on the Raspberry, and go to this web page (so that from now on, you can copy/paste terminal commands into the terminal, which is much easier and prevents typos).

Install some essential applications

4.6. Then you're going to install a couple of must-have applications:

Copy/paste the following command line into the terminal (it's just one long line, don't chop it up):

sudo apt-get install synaptic gdebi ufw inxi baobab mousepad abiword gnome-logs network-manager-gnome package-update-indicator file-roller vlc photoflare epiphany-browser catfish xfce4-whiskermenu-plugin thunar-archive-plugin shotwell gnumeric gnome-calculator xpad xfce4-power-manager xfce4-screenshooter

Make Network Manager work properly

4.7. Now you need to remove some packages in order to make Network Manager work properly. Because if you wouldn't do that, Network Manager would (after the next reboot) show up OK with a nice icon in the system tray of the desktop panel, but... it would wrongly say that your wireless chipset is inactive.

Don't worry about the packages that you're going to remove: they're superfluous now and aren't even installed by default in the closely related relatives Ubuntu and Linux Mint.

So do this, in order to make Network Manager behave correctly right away:

a. Execute the following terminal command, in order to remove the offending packages:

sudo apt-get purge openresolv dhcpcd5

b. Reboot the Pi.

Now you should be able to connect to a wireless network, by clicking on the icon of Network Manager in the system tray.

Note: If you're also connected to the internet by network (ethernet) cable: disconnect the ethernet cable, because otherwise the two simultaneous connections might interfere with each other.

Set the Pi to your own language

4.8. Non-English user? If you want a Pi that speaks your non-English language, you can install some of the available localization (translation) packages for your language. An example makes it easier. If you're a Dutch speaker, you can install those packages like this:

a. Installing the Dutch packages:

sudo apt-get install firefox-esr-l10n-nl hunspell-nl wdutch hyphen-nl

b. Then you're going to set everything to your language:

sudo dpkg-reconfigure locales

Navigate with the arrow keys to your language. For example for Dutch:

nl_NL.UTF-8 UTF-8

Select it by means of a tap on the spacebar.

Hit the Tab key in order to activate the <Ok> "button" and press Enter.

In the window that appears then, confirm your language. For example for Dutch:
nl_NL UTF-8.

c. Reboot. The Pi should speak your language now.

Note: Firefox might still be in English, the first time that you launch it. In that case, simply close Firefox and launch it again. After that, it should be fully localized.

Select the right keyboard layout

4.9. Then you can change your keyboard layout. For example: for Dutch you'll want "US international (with dead keys)". Like this:

sudo dpkg-reconfigure keyboard-configuration

Whenever you select something, activate the <Ok> "button" by means of the Tab key. For Dutch, you select: Generic 105-key PC (intl.) - Other - English (US) -
English (US) - English (US, intl., with dead keys)


Configure the right time zone

4.10. Configure the right timezone. First check the available zones with:

timedatectl list-timezones

... browse the available options by means of the arrow keys.

Then you can set the desired timezone. For The Netherlands, that's as follows:

sudo timedatectl set-timezone Europe/Amsterdam

Wait a bit until the right time has been detected (might last a couple of minutes).


Do these things if and when you have the time:

Enable the firewall

5.1. Enable the firewall, but disable its useless spammy log, with these two commands:

sudo ufw enable

sudo ufw logging off

Update inxi

5.2. Update inxi, so that it recognizes all hardware. Proceed as described below.

a. First remove the update block:

sudo rm -v /etc/inxi.conf

b. Then apply the actual update:

sudo inxi -U
(when you type the commands: note that the U is a capital letter!)

c. Check (first make the terminal window full screen, to avoid chopped lines in the output):

inxi -Fxpmr
(when you type the command: note that the F is a capital letter!)

Improve the stability of your WiFi

5.3. Disable power management for the wireless chipset (only for that chipset, no worries!), in order to increase the stability of the network connection. It's probably "on".

a. Check whether it's "on" with this terminal command:

sudo iw wlan0 get power_save

b. If it's indeed "on", turn it off with this command:

sudo iw wlan0 set power_save off

c. Check whether it's "off" now, by means of this command again:

sudo iw wlan0 get power_save

d. Make this change for the power management of your WiFi chipset permanent, so that it'll survive a reboot. With these three terminal commands:

sudo touch /etc/NetworkManager/conf.d/default-wifi-powersave-off.conf

echo "[connection]" | sudo tee /etc/NetworkManager/conf.d/default-wifi-powersave-off.conf

echo "wifi.powersave = 2" | sudo tee -a /etc/NetworkManager/conf.d/default-wifi-powersave-off.conf

Explanation of those three magical incantations, because it's always nice to know what the heck you've been doing:
First you've created a new text file called default-wifi-powersave-off.conf in the folder /etc/NetworkManager/conf.d.
In that text file you've added the following two lines:
wifi.powersave = 2

Decrease swappiness

5.4. Now you're going to reduce the swappiness (the inclination to use the RAM swap on the micro SD card) from 60 to 25, thus decreasing the usage of the micro SD card:

a. First check the current swappiness:

cat /proc/sys/vm/swappiness

b. Apply the reduction:

echo "vm.swappiness=25" | sudo tee -a /etc/sysctl.conf

c. Reboot. Then test:

cat /proc/sys/vm/swappiness

Activate zswap

5.5. Then activate zswap, thus decreasing the usage of the micro SD card even further:

sudo nano /boot/cmdline.txt

This text file contains one long line, with several parameters that are separated by a simple single space. At the very end, add these two parameters:



So that it becomes:

console=serial0,115200 console=tty1 root=PARTUUID=044dc5fa-02 rootfstype=ext4 fsck.repair=yes rootwait zswap.enabled=1 zswap.max_pool_percent=30

Save the change with: Ctrl x - y - Enter

Reboot and test with the following command:

dmesg | grep zswap

Warning: there's also RAM swap feature called zRam. Don't install that, because it's counterproductive in combination with zswap! Both zswap and zRam provide a compressed cache and would, when used simultaneously, wind up using more system memory than each individually. It makes no sense.

Tame your Firefox

5.6. Now tame your Firefox, so that it won't write to the micro SD card overly and unnecessarily.

Increase security with the sudo password

5.7. In Raspberry Pi OS there's an unfortunate and exaggerated attempt to increase user-friendliness. The developers have namely disabled the normally required password for using sudo in the terminal.

That's a serious mistake, because with sudo you can execute commands with root permissions; you then have system administrator authority. When no password is required for that, you essentially open up your system for attackers.

Thankfully you can easily fix this serious security problem, in the following way:

a. Remove the offending setting:

sudo rm -v /etc/sudoers.d/010_pi-nopasswd

b. From now on, whenever you use sudo, you'll be asked for your password. And the first time you'll see a patronizing warning, but that's thankfully one-time only.

Try it with:

sudo apt-get update

You get to see no feedback when you type your password, not even dots will show, which is normal. But your password is being registered correctly anyway.

c. Would you like to see feedback in the form of asterisks when you type your password? That can be achieved like this:

sudo visudo

Use the arrow keys to go to this line:

Defaults env_reset

Delete it and replace it by the following line (use copy/paste):

Defaults env_reset,pwfeedback

Save the change with: Ctrl x - y - Enter

Improve the updating

5.8. The way that the software on your computer is being updated, can be improved. Like this:

a. Applications - Settings - Software & Updates
Tab Updates:
Automatically check for updates: set that to Daily
When there are security updates: set that to Display immediately

Reason for these choices: you need to know immediately about the availability of new updates. But it's bad when they're being installed automatically, because that might disrupt your work.

Close Software & Updates.

b. Applications - Settings - Package Update Indicator Preferences:
Refresh cache: set that to every hour

Close Package Update Indicator Preferences.

Do you want more tips and tweaks? There's a lot more of them on this website!

For example:

Speed up your Linux Mint!

Clean your Linux Mint safely

Avoid 10 fatal mistakes

To the content of this website applies a Creative Commons license.

Back to the home page