From 4c013ae78322079c21d991f99631c4f61f521914 Mon Sep 17 00:00:00 2001 From: Igor Pecovnik Date: Wed, 8 Apr 2026 23:07:48 +0200 Subject: [PATCH 1/4] Fix xmonad branding and add default config - Add xmonad.hs skel with wallpaper, xmobar, nm-applet, dunst - Add libghc-xmonad-contrib-dev (needed for DynamicLog, ManageDocks) - Add fonts-ubuntu, dmz-cursor-theme - Fix postinst: set wallpaper via feh, add NM coexistence - Remove xterm (terminator from common is enough) --- tools/include/branding/postinst/xmonad.sh | 18 +++++++++++++++-- tools/include/branding/skel/.xmonad/xmonad.hs | 20 +++++++++++++++++++ .../modules/system/module_desktop_packages.sh | 4 +++- 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 tools/include/branding/skel/.xmonad/xmonad.hs diff --git a/tools/include/branding/postinst/xmonad.sh b/tools/include/branding/postinst/xmonad.sh index 048f0dc0f..02bd038af 100644 --- a/tools/include/branding/postinst/xmonad.sh +++ b/tools/include/branding/postinst/xmonad.sh @@ -6,6 +6,20 @@ if [ -d /etc/armbian/lightdm ]; then cp -R /etc/armbian/lightdm /etc/; fi # Disable Pulseaudio timer scheduling which does not work with sndhdmi driver if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi -# set wallpapper to armbian - +# set wallpaper via feh +mkdir -p /etc/xmonad +cat > /etc/xmonad/wallpaper.sh <<- 'WALLEOF' +#!/bin/bash +feh --bg-scale /usr/share/backgrounds/armbian/armbian03-Dre0x-Minum-dark-3840x2160.jpg +WALLEOF +chmod +x /etc/xmonad/wallpaper.sh +# Let NetworkManager coexist with systemd-networkd +if command -v NetworkManager > /dev/null 2>&1; then + mkdir -p /etc/NetworkManager/conf.d + cat > /etc/NetworkManager/conf.d/10-armbian-unmanaged.conf <<- NMEOF + [keyfile] + unmanaged-devices=type:ethernet + NMEOF + systemctl restart NetworkManager 2>/dev/null || true +fi diff --git a/tools/include/branding/skel/.xmonad/xmonad.hs b/tools/include/branding/skel/.xmonad/xmonad.hs new file mode 100644 index 000000000..c5a642667 --- /dev/null +++ b/tools/include/branding/skel/.xmonad/xmonad.hs @@ -0,0 +1,20 @@ +import XMonad +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.ManageDocks +import XMonad.Util.Run +import XMonad.Util.SpawnOnce + +myTerminal = "terminator" + +myStartupHook = do + spawnOnce "feh --bg-scale /usr/share/backgrounds/armbian/armbian03-Dre0x-Minum-dark-3840x2160.jpg" + spawnOnce "xmobar" + spawnOnce "nm-applet" + spawnOnce "dunst" + +main = xmonad $ docks def + { terminal = myTerminal + , modMask = mod4Mask + , startupHook = myStartupHook + , borderWidth = 2 + } diff --git a/tools/modules/system/module_desktop_packages.sh b/tools/modules/system/module_desktop_packages.sh index 05679e7c5..37aa631c2 100644 --- a/tools/modules/system/module_desktop_packages.sh +++ b/tools/modules/system/module_desktop_packages.sh @@ -430,15 +430,17 @@ function module_desktop_packages() { # xmonad - Haskell tiling window manager packages+=( "xmonad" + "libghc-xmonad-contrib-dev" "xmobar" "lightdm" "slick-greeter" "xserver-xorg" - "xterm" "dbus-x11" "dmenu" + "dmz-cursor-theme" "dunst" "feh" + "fonts-ubuntu" "lm-sensors" "network-manager-gnome" "pavucontrol" From f064d825198bef2448f3d523b4adac40c9bbadae Mon Sep 17 00:00:00 2001 From: Igor Pecovnik Date: Wed, 8 Apr 2026 23:17:22 +0200 Subject: [PATCH 2/4] Fix xmonad: add session file, simplify config, drop ghc-contrib - Create /usr/share/xsessions/xmonad.desktop (LightDM needs it) - Simplify xmonad.hs to basic config without contrib imports - Move startup apps to .xprofile (no Haskell compilation needed) - Remove libghc-xmonad-contrib-dev (~500MB dependency) --- tools/include/branding/postinst/xmonad.sh | 10 ++++++++++ tools/include/branding/skel/.xmonad/xmonad.hs | 17 ++--------------- tools/include/branding/skel/.xprofile | 5 +++++ tools/modules/system/module_desktop_packages.sh | 1 - 4 files changed, 17 insertions(+), 16 deletions(-) create mode 100644 tools/include/branding/skel/.xprofile diff --git a/tools/include/branding/postinst/xmonad.sh b/tools/include/branding/postinst/xmonad.sh index 02bd038af..d71c4fb41 100644 --- a/tools/include/branding/postinst/xmonad.sh +++ b/tools/include/branding/postinst/xmonad.sh @@ -3,6 +3,16 @@ set +e # overwrite stock lightdm greeter configuration if [ -d /etc/armbian/lightdm ]; then cp -R /etc/armbian/lightdm /etc/; fi +# create xmonad session file for LightDM +mkdir -p /usr/share/xsessions +cat > /usr/share/xsessions/xmonad.desktop <<- 'XSEOF' +[Desktop Entry] +Name=Xmonad +Comment=Lightweight tiling window manager +Exec=xmonad +Type=Application +XSEOF + # Disable Pulseaudio timer scheduling which does not work with sndhdmi driver if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/tools/include/branding/skel/.xmonad/xmonad.hs b/tools/include/branding/skel/.xmonad/xmonad.hs index c5a642667..34294512b 100644 --- a/tools/include/branding/skel/.xmonad/xmonad.hs +++ b/tools/include/branding/skel/.xmonad/xmonad.hs @@ -1,20 +1,7 @@ import XMonad -import XMonad.Hooks.DynamicLog -import XMonad.Hooks.ManageDocks -import XMonad.Util.Run -import XMonad.Util.SpawnOnce -myTerminal = "terminator" - -myStartupHook = do - spawnOnce "feh --bg-scale /usr/share/backgrounds/armbian/armbian03-Dre0x-Minum-dark-3840x2160.jpg" - spawnOnce "xmobar" - spawnOnce "nm-applet" - spawnOnce "dunst" - -main = xmonad $ docks def - { terminal = myTerminal +main = xmonad def + { terminal = "terminator" , modMask = mod4Mask - , startupHook = myStartupHook , borderWidth = 2 } diff --git a/tools/include/branding/skel/.xprofile b/tools/include/branding/skel/.xprofile new file mode 100644 index 000000000..6704a9a10 --- /dev/null +++ b/tools/include/branding/skel/.xprofile @@ -0,0 +1,5 @@ +#!/bin/sh +feh --bg-scale /usr/share/backgrounds/armbian/armbian03-Dre0x-Minum-dark-3840x2160.jpg & +xmobar & +nm-applet & +dunst & diff --git a/tools/modules/system/module_desktop_packages.sh b/tools/modules/system/module_desktop_packages.sh index 37aa631c2..94d5004c4 100644 --- a/tools/modules/system/module_desktop_packages.sh +++ b/tools/modules/system/module_desktop_packages.sh @@ -430,7 +430,6 @@ function module_desktop_packages() { # xmonad - Haskell tiling window manager packages+=( "xmonad" - "libghc-xmonad-contrib-dev" "xmobar" "lightdm" "slick-greeter" From 9185afc05e58266d1475dc949ff64a90b0575460 Mon Sep 17 00:00:00 2001 From: Igor Pecovnik Date: Wed, 8 Apr 2026 23:25:22 +0200 Subject: [PATCH 3/4] Fix xmonad session: use Xsession wrapper for proper dbus/session setup --- tools/include/branding/postinst/xmonad.sh | 3 ++- tools/include/branding/skel/.xmonad/xmonad.hs | 7 ------- 2 files changed, 2 insertions(+), 8 deletions(-) delete mode 100644 tools/include/branding/skel/.xmonad/xmonad.hs diff --git a/tools/include/branding/postinst/xmonad.sh b/tools/include/branding/postinst/xmonad.sh index d71c4fb41..3d70365d2 100644 --- a/tools/include/branding/postinst/xmonad.sh +++ b/tools/include/branding/postinst/xmonad.sh @@ -9,8 +9,9 @@ cat > /usr/share/xsessions/xmonad.desktop <<- 'XSEOF' [Desktop Entry] Name=Xmonad Comment=Lightweight tiling window manager -Exec=xmonad +Exec=/etc/X11/Xsession xmonad Type=Application +DesktopNames=Xmonad XSEOF # Disable Pulseaudio timer scheduling which does not work with sndhdmi driver diff --git a/tools/include/branding/skel/.xmonad/xmonad.hs b/tools/include/branding/skel/.xmonad/xmonad.hs deleted file mode 100644 index 34294512b..000000000 --- a/tools/include/branding/skel/.xmonad/xmonad.hs +++ /dev/null @@ -1,7 +0,0 @@ -import XMonad - -main = xmonad def - { terminal = "terminator" - , modMask = mod4Mask - , borderWidth = 2 - } From 84e7876056397d62e4f99852d1b16566713aea96 Mon Sep 17 00:00:00 2001 From: Igor Pecovnik Date: Wed, 8 Apr 2026 23:31:04 +0200 Subject: [PATCH 4/4] Use gnome-session-flashback for xmonad session, add xinit --- tools/include/branding/postinst/xmonad.sh | 11 +---------- tools/modules/system/module_desktop_packages.sh | 4 +++- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/tools/include/branding/postinst/xmonad.sh b/tools/include/branding/postinst/xmonad.sh index 3d70365d2..e8b29991d 100644 --- a/tools/include/branding/postinst/xmonad.sh +++ b/tools/include/branding/postinst/xmonad.sh @@ -3,16 +3,7 @@ set +e # overwrite stock lightdm greeter configuration if [ -d /etc/armbian/lightdm ]; then cp -R /etc/armbian/lightdm /etc/; fi -# create xmonad session file for LightDM -mkdir -p /usr/share/xsessions -cat > /usr/share/xsessions/xmonad.desktop <<- 'XSEOF' -[Desktop Entry] -Name=Xmonad -Comment=Lightweight tiling window manager -Exec=/etc/X11/Xsession xmonad -Type=Application -DesktopNames=Xmonad -XSEOF +# xmonad session is provided by gnome-session-flashback # Disable Pulseaudio timer scheduling which does not work with sndhdmi driver if [ -f /etc/pulse/default.pa ]; then sed "s/load-module module-udev-detect$/& tsched=0/g" -i /etc/pulse/default.pa; fi diff --git a/tools/modules/system/module_desktop_packages.sh b/tools/modules/system/module_desktop_packages.sh index 94d5004c4..c90532664 100644 --- a/tools/modules/system/module_desktop_packages.sh +++ b/tools/modules/system/module_desktop_packages.sh @@ -427,13 +427,15 @@ function module_desktop_packages() { ) ;; "${de[11]}") - # xmonad - Haskell tiling window manager + # xmonad - tiling WM via gnome-session-flashback packages+=( "xmonad" + "gnome-session-flashback" "xmobar" "lightdm" "slick-greeter" "xserver-xorg" + "xinit" "dbus-x11" "dmenu" "dmz-cursor-theme"