Hi all,
I started using Guix with XFCE on Xorg (with the default desktop
configuration), and couldn't change the theme. I fixed the issue by
installing dconf, which is needed by xfce to edit its own configuration.
I think the problem could be fixed by adding dconf as a dependency of
the xfce package.
What I did:
Editing the ThemeName property directly in
~/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml or using the
GTK_THEME="Greybird:dark" environment variable did not work (the xml
edit was reverted after restarting the session, and the environment
variable was only followed by my web browser, Librewolf, and not xfce
utilities like Thunar or xfce4-terminal).
By running xfsettingsd manually with `xfsettingsd --replace
--no-daemon`, I got a Dbus warning about not being able to commit the
configuration changes due to a missing `ca.desrt.dconf` .service file
when I tried changeing the theme in the XFCE settings.
After googling hard and configuring guix home to have a user dbus
service, I learnt about the dconf-service and fixed the issue by simply
installing the dconf package. After removing what I added, it turns out
the guix home dbus service was not needed, but removing dconf and
restarting makes the theme impossible to change again.
My system is a VM installed from the iso following the manual
installation, running on a baremetal LUKS-encrypted LVM logical volume.
My system configuration (based on the desktop example):
```
;; This is an operating system configuration template
;; for a "desktop" setup with GNOME and Xfce where the
;; root partition is encrypted with LUKS, and a swap file.
(use-modules (gnu) (gnu system nss) (guix utils))
(use-service-modules desktop sddm xorg ssh spice)
(use-modules (gnu home services desktop))
(use-package-modules certs gnome ssh password-utils emacs gnome-xyz
librewolf libreoffice)
; sshfs -> (gnu packages linux) ???
(use-package-modules linux)
(operating-system
(host-name "geeksos")
(timezone "Europe/Paris")
(locale "fr_FR.utf8")
;; Choose US English keyboard layout. The "altgr-intl"
;; variant provides dead keys for accented characters.
(keyboard-layout (keyboard-layout "fr" "bepo"))
;; Use the UEFI variant of GRUB with the EFI System
;; Partition mounted on /boot/efi.
(bootloader (bootloader-configuration
(bootloader grub-efi-bootloader)
(targets '("/boot/efi"))
(keyboard-layout keyboard-layout)))
;; Specify a mapped device for the encrypted root partition.
;; The UUID is that returned by 'cryptsetup luksUUID'.
;(mapped-devices
; (list (mapped-device
; (source (uuid "12345678-1234-1234-1234-123456789abc"))
; (target "my-root")
; (type luks-device-mapping))))
(file-systems (append
(list (file-system
(device (file-system-label "root"))
(mount-point "/")
(type "btrfs"))
(file-system
(device (uuid "04AB-4473" 'fat))
(mount-point "/boot/efi")
(type "vfat")))
%base-file-systems))
;; Specify a swap file for the system, which resides on the
;; root file system.
(swap-devices (list (swap-space
(target "/swapfile"))))
;; Create user `bob' with `alice' as its initial password.
(users (cons (user-account
(name "yacine")
;(comment "Alice's brother")
;(password #f)
(group "yacine")
(supplementary-groups '("wheel" "netdev"
"audio" "video")))
%base-user-accounts))
;; Add the `students' group
(groups (cons* (user-group
(name "yacine"))
%base-groups))
;; This is where we specify system-wide packages.
(packages (append (list
;; for HTTPS access
;nss-certs
;; for user mounts
gvfs
; does not work
greybird-gtk-theme
; core
openssh
emacs
librewolf
libreoffice
; user utils
sshfs
password-store)
%base-packages))
;; Add GNOME and Xfce---we can choose at the log-in screen
;; by clicking the gear. Use the "desktop" services, which
;; include the X11 log-in service, networking with
;; NetworkManager, and more.
(services
(append
(list
;(service home-dbus-service-type ; only works in
guix home configurations
; (home-dbus-configuration))
(service spice-vdagent-service-type
(spice-vdagent-configuration))
; TODO: add authorized keys
(service openssh-service-type
(openssh-configuration
(x11-forwarding? #t)
(permit-root-login 'prohibit-password)
(gateway-ports? #t))))
(if (target-x86-64?)
(append (list ;(service gnome-desktop-service-type)
(service xfce-desktop-service-type)
(set-xorg-configuration
(xorg-configuration
(keyboard-layout keyboard-layout))))
%desktop-services)
;; FIXME: Since GDM depends on Rust (gdm -> gnome-shell
-> gjs
;; -> mozjs -> rust) and Rust is currently unavailable on
;; non-x86_64 platforms, we use SDDM and Mate here
instead of
;; GNOME and GDM.
(append (list ;(service mate-desktop-service-type)
(service xfce-desktop-service-type)
(set-xorg-configuration
(xorg-configuration
(keyboard-layout keyboard-layout))
sddm-service-type))
%desktop-services))))
;; Allow resolution of '.local' host names with mDNS.
(name-service-switch %mdns-host-lookup-nss))
```
My home configuration:
```
(use-modules (gnu)
(gnu home)
(gnu home services shells))
(use-modules (gnu home services desktop))
(use-modules (gnu home services dotfiles))
(home-environment
; (packages
; (specifications->packages
; (list
; "xfce4-settings")))
(services
(list
(service home-dotfiles-service-type
(home-dotfiles-configuration
(layout 'stow)
(packages '("ssh"))
(directories
'("."))))
; excluding .git does not work, and keeping it breaks
project management in doom emacs
; hack solution: using stow to whitelist directories to deploy
;(excluded '("./\\.git" "config\\.scm"))))
; (service home-dbus-service-type
; (home-dbus-configuration))
(service home-bash-service-type
(home-bash-configuration
(environment-variables '(("PS1" . "\\[\\e[1;32m\\]\\u
\\[\\e[1;34m\\]\\w \\[\\e[0m\\]λ ")
("EDITOR" .
"emacsclient"))))))))
;(aliases '(("gs" . "git status"))))))))
;(packages (specifications->packages
; (list "git"
; "emacs-no-x-toolkit")))
;(services (list (service home-bash-service-type
; (home-bash-configuration
; (environment-variables '(("PS1" .
"\\[\\e[1;32m\\]\\u \\[\\e[1;34m\\]\\w \\[\\e[0m\\]λ ")
; ("EDITOR" .
"emacsclient")))
; (aliases '(("gs" . "git status"))))))))
```
Thank you