[Guide] Customize Qubes OS 4.3 Login Screen (Avatar + Dark Mode) revisions

Go back to topic: [Guide] Customize Qubes OS 4.3 Login Screen (Avatar + Dark Mode)

  1. v6 anchor; v6 full version
  2. v5 anchor; v5 full version
  3. v4 anchor; v4 full version
  4. v3 anchor; v3 full version
  5. v2 anchor; v2 full version

Revision #6

Edited on
2026-01-20
Edited by user
Villa
[details="(IMG) Lock Screen Example"] ![QubesLockscreen|376x500](upload://nIeiMohpVwnoH8DRRchm11va6b7.jpeg) [/details] [details="(IMG) lightdm-gtk-greeter.conf Example"] ![WallpaperExample2|690x254](upload://6YG8sdS8Llox05DNlijc2zPfgmw.jpeg) [/details] [details="(IMG) Wallpaper Example"] ![WallpaperExample1|690x345](upload://zCjuaiKGk2JtszvlMvJsVkgyrHy.jpeg) [/details]

Revision #5

Edited on
2026-01-20
Edited by user
Villa
## [Guide] Customize Qubes OS 4.3 Login Screen (Avatar + Dark Mode) #guides #version-r43 #configuration #dom0 #gui #theme This is a step‑by‑step guide for changing the **user avatar** and enabling a **dark theme** on the Qubes OS 4.3 login screen (LightDM). It also explains why the **lock screen** behaves differently and what is (and isn’t) possible there. If you see any errors in this guide, please inform me so I can make the necessary corrections. [details="(IMG) Example"] ## Customize Qubes OS 4.3 Login & Lock Screen (Avatar + Dark Mode) #guides #version-r43 #configuration #dom0 #gui #theme *If you see any errors in this guide, please inform me so I can make the necessary corrections.* This is a step‑by‑step guide for changing the user avatar and enabling a dark theme on the Qubes OS 4.3 login screen (LightDM), and for changing the avatar used by the lock screen (xfce‑screensaver). It also includes: * An optional **GUI tool** (`lightdm-gtk-greeter-settings`) for editing the LightDM greeter config. * A way to get an avatar image **without copying a file into dom0**, by using dom0 screenshots. * A way to add a **custom wallpaper** so it appears in the standard Qubes wallpaper chooser. ## :bangbang: Bottom Line, Up Front :bangbang: * Point theme & avatar in: `/etc/lightdm/lightdm-gtk-greeter.conf` * Copy avatar to `~/.face` [details="(IMG) Initial Login Screen Example"]
## Overview Qubes OS 4.3 uses **LightDM** as the display manager for the **initial login screen**. That’s where you can: - Set a **custom user avatar** - Switch the **login window to a dark theme** When you **lock your session**, however, Qubes uses **XScreenSaver**, which works differently and has separate limitations (covered below). All changes in this guide happen in **dom0**. ## 1. Overview Qubes OS 4.3 uses: * **LightDM** for the initial login screen after boot. * **xfce‑screensaver** for the lock screen when you lock an active session. This guide shows how to: * Set a custom user avatar for **LightDM** (login screen). * Enable a **dark theme** for the LightDM greeter. * Set a custom user avatar for the **xfce‑screensaver lock screen** (via your user icon). * Optionally configure LightDM via a **GUI tool** instead of editing the config file by hand. * Import an avatar image and wallpapers into dom0 via **dom0 screenshots** from AppVMs/DispVMs. All changes happen in **dom0**.
## Prerequisites & Warnings - All commands are run in **dom0** unless otherwise noted. - Be careful when editing files in `/etc` in dom0 — mistakes can affect your ability to log in. - Only copy files into dom0 that you **fully trust**. Dom0 is the most security‑critical domain; treat any file you import into dom0 as potentially compromising if it comes from an untrusted source. ## 2. Prerequisites & Warnings * All commands below are run in **dom0** unless otherwise noted. * Be careful editing anything under `/etc` in dom0; mistakes can affect your ability to log in. * Only copy files into dom0 that you fully trust. Dom0 is security‑critical. * Installing additional packages in dom0 (like `lightdm-gtk-greeter-settings`) increases dom0’s complexity and attack surface. If you prefer minimal dom0 changes, stick to the manual config‑file method.
## Change the Login Screen User Avatar LightDM’s GTK greeter supports a **default user image**. You can point it to any PNG (or similar) image available in dom0. ## 3. Change the Login Screen User Avatar (LightDM) LightDM’s GTK greeter supports a default user image. You can point it to any PNG/JPEG image available in dom0.
1. Open a terminal in **dom0**. 2. Copy an existing image or add your own. Example using the Qubes logo: ```bash # In dom0 sudo cp /usr/share/icons/hicolor/96x96/apps/qubes-logo-icon.png \ /usr/share/pixmaps/my-user.png sudo chmod 644 /usr/share/pixmaps/my-user.png ``` You can replace the source path with any image you’ve placed in dom0, but putting the final file under `/usr/share/pixmaps/` is a simple, standard choice. ### 3.2 Copy a profile picture from an AppVM or DispVM If your profile picture is in an AppVM or DispVM (for example, `disp1234`), you can copy it into dom0 with `qvm-run --pass-io`. **Warning:** Only do this for images you **fully trust**. Importing files into dom0 can weaken your overall security if those files are malicious or come from untrusted sources. 1. Make sure the picture exists in the VM, e.g. in `~/Downloads/ProfilePicture.jpg`. 2. In **dom0**, run: ```bash qvm-run --pass-io disp1234 'cat /home/user/Downloads/ProfilePicture.jpg' \ > /usr/share/pixmaps/ProfilePicture.jpg ``` 3. Set safe permissions in dom0: ```bash sudo chmod 644 /usr/share/pixmaps/ProfilePicture.jpg ``` 4. You can now use `/usr/share/pixmaps/ProfilePicture.jpg` as your avatar path in the LightDM config (next section). Again, before copying anything into dom0, be sure you **trust** the file and the VM it comes from. Dom0 is supposed to stay as clean and secure as possible. The avatar image ultimately needs to exist as a file in dom0, but there are **two main ways** to get it there: * **Option A (no direct file copy from VM):** Show the image in an AppVM/DispVM and use a **dom0 screenshot** to create the avatar file in dom0. * **Option B (direct file copy):** Copy the image file from an AppVM/DispVM into dom0 using `qvm-run --pass-io`. #### Option A: Use a dom0 screenshot to avoid copying files into dom0 1. In an AppVM/DispVM, open the image you want (e.g. in an image viewer or browser). 2. **Maximize/fullscreen** the AppVM window so the image fills the desktop area as much as possible. 3. In dom0, open the screenshot tool and choose to capture the **region or entire screen**. 4. Save the screenshot in dom0, e.g.: * Suggested path: `~/Pictures/avatar.jpg` 5. Place it in a standard location: ``` # In dom0 sudo mkdir -p /usr/share/pixmaps sudo cp ~/Pictures/avatar.jpg /usr/share/pixmaps/my-user.jpg sudo chmod 644 /usr/share/pixmaps/my-user.jpg ``` This way, you never copy the **original** file from the VM into dom0; you only create a new image in dom0 via a fullscreen screenshot of what is displayed on the screen. #### Option B: Copy an image file directly into dom0 If you’re okay copying the file itself into dom0, you can use `qvm-run --pass-io` (see next subsection). ### 3.2 Copy or “import” a profile picture from an AppVM/DispVM If your profile picture is in an AppVM/DispVM (e.g. `disp1234`), and you **do want** to copy the actual file into dom0, use: **Warning:** Only do this for images you fully trust. 1. Ensure the picture exists in the VM, e.g. `~/Downloads/ProfilePicture.jpg`. 2. In dom0: ``` qvm-run --pass-io disp1234 'cat /home/user/Downloads/ProfilePicture.jpg' \ > /usr/share/pixmaps/ProfilePicture.jpg sudo chmod 644 /usr/share/pixmaps/ProfilePicture.jpg ``` You can now use `/usr/share/pixmaps/ProfilePicture.jpg` as your avatar path in the LightDM config.
1. Edit the LightDM GTK greeter configuration in dom0: ```bash sudo nano /etc/lightdm/lightdm-gtk-greeter.conf ``` 2. Find the `[greeter]` section. If it doesn’t exist, create it. Then add or edit (pick the filename you used above): ```ini [greeter] default-user-image=/usr/share/pixmaps/ProfilePicture.jpg ``` or, if you used the earlier example: ```ini [greeter] default-user-image=/usr/share/pixmaps/my-user.png ``` Make sure there is only **one** `default-user-image=` line in the `[greeter]` section. 3. Save and exit (`Ctrl+O`, `Enter`, `Ctrl+X` in nano). 4. Reboot (simplest and safest) so LightDM reloads the config: ```bash sudo reboot ``` After reboot, your **initial login screen** should show the new avatar instead of the default icon. 1. Edit the LightDM GTK greeter configuration in dom0: ``` sudo nano /etc/lightdm/lightdm-gtk-greeter.conf ``` 2. Find the `[greeter]` section (create it if it doesn’t exist), then add or edit: ``` [greeter] default-user-image=/usr/share/pixmaps/ProfilePicture.jpg ``` or, if you used the earlier example: ``` [greeter] default-user-image=/usr/share/pixmaps/my-user.png ``` Make sure there is only **one** `default-user-image=` line in `[greeter]`. 3. Save and exit (`Ctrl+O`, `Enter`, `Ctrl+X` in nano). 4. Reboot so LightDM reloads the config: ``` sudo reboot ``` After reboot, the login screen should show the new avatar. ### 3.4 (Optional) Use a GUI: `lightdm-gtk-greeter-settings` Instead of manually editing `/etc/lightdm/lightdm-gtk-greeter.conf`, you can install a **graphical configuration tool**: * **Pros:** Easier, user‑friendly way to adjust the theme, user image, and other greeter options. * **Cons:** Requires installing **additional packages in dom0**, which some users prefer to avoid for security/minimalism reasons. 1. In dom0, install the tool (for Fedora‑based dom0): ``` sudo dnf install lightdm-gtk-greeter-settings ``` 2. Launch it from the dom0 application menu (e.g. **“LightDM GTK+ Greeter settings”**) or run: ``` lightdm-gtk-greeter-settings ``` 3. Use the GUI to: * Select your **user image** (point it at the file you prepared in `/usr/share/pixmaps/` or another location). * Adjust **theme**, **icons**, and other greeter appearance settings. The GUI will update `/etc/lightdm/lightdm-gtk-greeter.conf` for you. You still need to **reboot** for LightDM to apply the changes. If you don’t want extra packages in dom0, skip this and stick to the manual editing described in 3.3 and 4.1.
## Set a Dark Theme for the Login Screen You can tell the LightDM GTK greeter to use a **dark GTK theme**, and you can control the background image by changing your desktop wallpaper in System Settings. ## 4. Set a Dark Theme for the Login Screen (LightDM) You can tell the LightDM GTK greeter to use a dark GTK theme, and you can control its background via your desktop wallpaper. You can do this either: * Manually (edit the config file), or * Via the `lightdm-gtk-greeter-settings` GUI (if installed, see 3.4).
1. In dom0: ```bash sudo nano /etc/lightdm/lightdm-gtk-greeter.conf ``` 2. Under `[greeter]`, add or update this line (adjust theme name if you like): ```ini [greeter] theme-name=Adwaita-dark ``` Notes: - `theme-name`: The GTK theme. Common dark options in Xfce/Qubes include `Adwaita-dark`, `Greybird-dark`, or others you’ve installed. 3. If the file already has a `theme-name=` line, either: - Replace it with your value, or - Comment it out with `#` and add your own line. 4. Save and exit, then reboot: ```bash sudo reboot ``` After reboot, the **login window** (the LightDM greeter) should use the dark GTK theme. 1. In dom0: ``` sudo nano /etc/lightdm/lightdm-gtk-greeter.conf ``` 2. Under `[greeter]`, add or update: ``` [greeter] theme-name=Adwaita-dark ``` Notes: * `theme-name` is the GTK theme. Common dark options in Xfce/Qubes include **Adwaita-dark**, **Greybird-dark**, or other installed themes. * If there is already a `theme-name=` line: * Replace it, or * Comment it out with `#` and add your own line. 3. Save and exit, then reboot: ``` sudo reboot ``` If you installed `lightdm-gtk-greeter-settings`, you can instead open it and set the theme from the GUI; it will edit this file for you.
The login screen background typically follows the system’s desktop background configuration. To change it through the graphical settings: 1. In dom0, open the menu: - **Start (Qube Menu)** → **Settings (Gear/Cog Icon)** → **System Settings** → **Desktop** 2. Change your **desktop wallpaper** to the image or color you prefer. 3. Apply the changes and log out or reboot. Your new **desktop wallpaper** should now be reflected on the **login screen background** as well. The LightDM background usually follows your desktop background configuration. #### Basic method: Use existing wallpapers 1. In dom0, open: * Start (Qube Menu) → Settings (gear/cog icon) → **System Settings** → **Desktop** 2. Choose one of the existing wallpapers. 3. Apply changes and log out or reboot. Your selected desktop wallpaper should now appear as the login screen background. #### Custom wallpaper: fullscreen screenshot from a Qube If you want a custom wallpaper that also appears in the standard wallpaper list: 1. In an AppVM/DispVM, open the image or content you want as a wallpaper and **fullscreen** the window so it covers the entire desktop. 2. In dom0, use the screenshot tool to capture the **entire desktop** (full screen). 3. Save the screenshot temporarily, e.g.: ``` # Screenshot saved via GUI to e.g. ~/Pictures/custom-wallpaper.png ``` 4. Move or copy it into the Qubes wallpapers directory so it shows up alongside the default Qubes wallpapers: ``` sudo mkdir -p /usr/share/backgrounds/images/ sudo cp ~/Pictures/custom-wallpaper.png /usr/share/backgrounds/images/ sudo chmod 644 /usr/share/backgrounds/images/custom-wallpaper.png ``` 5. Now open: * Start (Qube Menu) → Settings → **System Settings** → **Desktop** 7. Your new image should appear with the other Qubes OS wallpapers. Select it and apply. After you log out or reboot, LightDM should use this custom wallpaper as the login screen background.
## Important: Login Screen vs Lock Screen A key point that often causes confusion: - The **first login screen** after boot is handled by **LightDM**. - The **“Lock screen”** when you lock your running session is handled by **XScreenSaver**, not LightDM. Consequences: - Your custom **avatar** and **dark theme** apply to the **LightDM login greeter**. - When you lock your session, the lock dialog from XScreenSaver: - Does **not** show the LightDM user icon. - Does **not** use the LightDM greeter configuration. ### Can I make the lock screen show the same user icon? Not in any simple, supported way. To do that you would need to: - Patch XScreenSaver’s code to add user-avatar support, then - Rebuild and maintain a custom `xscreensaver` package for Qubes dom0. This is well outside normal configuration and would be **unsupported** and fragile across updates. Practically speaking, you should treat: - **LightDM** customization = first login screen only. - **XScreenSaver** lock screen = separate, more limited UI with no built‑in user avatar. ## 5. Change the Lock Screen Avatar (xfce‑screensaver) On Qubes OS 4.3, the lock screen is handled by **xfce‑screensaver**. It does **not** have its own separate avatar setting; instead, it shows your **user icon**, typically taken from `~/.face` (and/or AccountsService). So the easiest way to change the **lock screen avatar** is to set `~/.face` for your dom0 user. You can obtain this image either by: * Using the **fullscreen screenshot method**, or * Copying a file directly from a VM. ### 5.1 Copy a trusted picture into dom0 Example using `qvm-run --pass-io` (direct copy): ``` # In dom0 qvm-run --pass-io disp1234 'cat /home/user/Downloads/ProfilePicture.jpg' \ > ~/ProfilePicture.jpg chmod 644 ~/ProfilePicture.jpg ``` Or, if you prefer not to copy the file, use the **dom0 screenshot approach**: 1. Open the desired image in an AppVM/DispVM. 2. **Fullscreen** the window showing the image. 3. In dom0, take a **screenshot** and save it, e.g. `~/Pictures/avatar-lock.png`. ### 5.2 Set it as your user icon via `~/.face` Once the image exists in dom0 (via screenshot or file copy), set it as your user icon: ``` cp ~/ProfilePicture.jpg ~/.face # or e.g. cp ~/Pictures/avatar-lock.png ~/.face chmod 644 ~/.face ``` `~/.face` is the standard per‑user icon path that xfce‑screensaver (and other desktop components) will read. ### 5.3 Restart your session and test 1. Log out of your dom0 desktop session, then log back in. 2. Lock the screen (via the Xfce menu or the lock shortcut). 3. The xfce‑screensaver lock screen should now show your new avatar next to your username. No extra xfce‑screensaver configuration is needed; it simply uses your user icon.
## Troubleshooting - **No avatar appears after changes** - Confirm the image file exists in dom0: ```bash ls -l /usr/share/pixmaps/ProfilePicture.jpg ``` or: ```bash ls -l /usr/share/pixmaps/my-user.png ``` - Ensure permissions are readable: ```bash sudo chmod 644 /usr/share/pixmaps/ProfilePicture.jpg ``` - Check that `default-user-image=` is under `[greeter]` and not misspelled. - **Login screen is not using the dark theme** - Double‑check the theme name is correct and installed (e.g. `Adwaita-dark`). - Ensure you don’t have multiple conflicting `theme-name=` lines; keep just one. - Reboot fully; don’t rely on just logging out. - **Background didn’t change on the login screen** - Verify that your desktop wallpaper has changed via: - **Start (Qube Menu)****Settings (Gear/Cog Icon)** **System Settings** **Desktop** - Log out and back in, or reboot, so the display manager can pick up the change. ## 6. Troubleshooting ### 6.1 No avatar on the login screen (LightDM) * Confirm the image file exists in dom0: ``` ls -l /usr/share/pixmaps/ProfilePicture.jpg # or ls -l /usr/share/pixmaps/my-user.png ``` * Ensure permissions are readable: ``` sudo chmod 644 /usr/share/pixmaps/ProfilePicture.jpg ``` * Check that `default-user-image=` is under `[greeter]` and not misspelled in `/etc/lightdm/lightdm-gtk-greeter.conf`. * If you used the `lightdm-gtk-greeter-settings` GUI, reopen it and confirm the selected image path is correct and accessible. ### 6.2 Login screen is not using the dark theme * Verify the theme name is correct and installed (e.g. `Adwaita-dark`). * Ensure there is only **one** `theme-name=` line in the `[greeter]` section. * Fully reboot; don’t rely only on logging out. * If using the GUI tool, reopen it and verify it shows the dark theme as selected. ### 6.3 Background didn’t change on the login screen * Verify that your desktop wallpaper has changed via: Start (Qube Menu) → Settings → System Settings → Desktop. * If using a custom wallpaper: * Confirm it exists in `/usr/share/backgrounds/images/` and has readable permissions (`chmod 644`). * Log out and back in, or reboot, so the display manager picks up the change. ### 6.4 Lock screen avatar didn’t change (xfce‑screensaver) * Confirm `~/.face` exists and is readable: ``` ls -l ~/.face ``` If needed: ``` chmod 644 ~/.face ``` * Make sure you: * Logged out of your dom0 session and back in, or * Restarted the Xfce session (full logout is more reliable). * If you used a screenshot, confirm it actually captured the correct image and is not blank or very low resolution.

Revision #4

Edited on
2026-01-18
Edited by user
parulin
- Log out and back in, or reboot, so the display manager can pick up the change. - Log out and back in, or reboot, so the display manager can pick up the change. <div data-theme-toc="true"> </div>

Revision #3

Edited on
2026-01-18
Edited by user
Villa
#guides #version-r43 #configuration #dom0 #guides #version-r43 #configuration #dom0 #gui #theme
[/details] [/details] <div data-theme-toc="true"> </div>
## Table of Contents 1. [Overview](#overview) 2. [Prerequisites & Warnings](#prerequisites--warnings) 3. [Change the Login Screen User Avatar](#change-the-login-screen-user-avatar) - 3.1 [Choose or add an image in dom0](#31-choose-or-add-an-image-in-dom0) - 3.2 [Copy a profile picture from an AppVM or DispVM](#32-copy-a-profile-picture-from-an-appvm-or-dispvm) - 3.3 [Point LightDM to your custom image](#33-point-lightdm-to-your-custom-image) 4. [Set a Dark Theme for the Login Screen](#set-a-dark-theme-for-the-login-screen) - 4.1 [Edit the LightDM GTK greeter config (theme only)](#41-edit-the-lightdm-gtk-greeter-config-theme-only) - 4.2 [Change your desktop wallpaper (reflected on login)](#42-change-your-desktop-wallpaper-reflected-on-login) 5. [Important: Login Screen vs Lock Screen](#important-login-screen-vs-lock-screen) 6. [Troubleshooting](#troubleshooting) ---

Revision #2

Edited on
2026-01-18
Edited by user
Villa
If you see any errors in this guide, please inform me so I can make the necessary corrections. If you see any errors in this guide, please inform me so I can make the necessary corrections. [details="(IMG) Example"] ![Qubes|376x500](upload://ygPlPMbnedBTsfpXLGZDdN5lU26.jpeg) [/details]