Migrated desktop environment from XFCE to KDE Plasma with simplified profiles.

- Replaced XFCE with KDE Plasma and SDDM display manager.
- Reduced profiles from seven to four (minimal, server, basic, office).
- Split home skeleton files into home-skel and home-skel-desktop directories.
- Added display name prompt during user setup.
- Added 7zip and fwupd to base packages.
This commit is contained in:
2026-01-17 23:02:10 -05:00
parent 63833f6da3
commit 14f7b610bb
32 changed files with 224 additions and 727 deletions

View File

@@ -28,7 +28,8 @@ MIRROR_URL='https://mirrors.logal.dev/archlinux/$repo/os/$arch'
# Paths
CA_CERTS_DIR="${SCRIPT_DIR}/files/certs"
CONFIG_SRC_DIR="${SCRIPT_DIR}/files/etc"
HOME_CONFIG_DIR="${SCRIPT_DIR}/files/home"
HOME_SKEL_DIR="${SCRIPT_DIR}/files/home-skel"
HOME_SKEL_DESKTOP_DIR="${SCRIPT_DIR}/files/home-skel-desktop"
MOUNT_POINT="/mnt"
# Base packages to install with pacstrap
@@ -51,4 +52,6 @@ BASE_PACKAGES=(
iptables-nft
openssh
usbguard
7zip
fwupd
)

View File

@@ -16,52 +16,95 @@
# profiles.conf - Profile and desktop environment package definitions
#
# Defines XFCE packages and installation profiles. Adding a new profile
# Defines KDE packages and installation profiles. Adding a new profile
# requires only adding entries here - no code changes needed.
#===============================================================================
# DESKTOP ENVIRONMENT PACKAGES
#===============================================================================
# XFCE base packages
XFCE_PACKAGES=(
lightdm
lightdm-gtk-greeter
lightdm-gtk-greeter-settings
thunar
thunar-archive-plugin
gvfs
xfce4-panel
xfce4-power-manager
xfce4-session
xfce4-settings
xfce4-terminal
xfdesktop
xfwm4
papirus-icon-theme
xfce4-battery-plugin
xfce4-notifyd
xfce4-whiskermenu-plugin
xfce4-screensaver
xfce4-screenshooter
mousepad
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
noto-fonts-extra
# KDE Plasma base packages
KDE_PACKAGES=(
# Display manager
sddm
# Core Plasma
plasma-desktop
plasma-workspace
plasma-pa
powerdevil
kscreen
# Multimedia backend
phonon-qt6-vlc
vlc-plugin-ffmpeg
ffmpeg
# System settings
systemsettings
kinfocenter
sddm-kcm
kde-gtk-config
breeze-gtk
# Essential applications
konsole
dolphin
kate
ark
spectacle
gwenview
kcalc
# Browser and media
chromium
haruna
elisa
okular
# File management
filelight
kfind
# Text and diff tools
kompare
# Security
plasma-vault
kleopatra
kwalletmanager
# Accessibility
kmousetool
# Network analysis
wireshark-qt
# Utilities
kcolorchooser
kcharselect
kalarm
sweeper
kdialog
# Thumbnails and previews
kdegraphics-thumbnailers
ffmpegthumbs
markdownpart
svgpart
# Audio
pipewire
pipewire-alsa
pipewire-pulse
pipewire-jack
wireplumber
pavucontrol
xfce4-pulseaudio-plugin
ristretto
webp-pixbuf-loader
libopenraw
xarchiver
7zip
xreader
# Fonts
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
noto-fonts-extra
)
#===============================================================================
@@ -69,12 +112,12 @@ XFCE_PACKAGES=(
#===============================================================================
# Profile registry - order determines menu numbering
PROFILES=(minimal server minimal_desktop htpc htpc_gaming office dev)
PROFILES=(minimal server basic office)
# Each profile defines:
# PROFILE_<key>_NAME - Display name
# PROFILE_<key>_DESC - Description shown in menu
# PROFILE_<key>_XFCE - Whether to install XFCE (true/false)
# PROFILE_<key>_KDE - Whether to install KDE (true/false)
# PROFILE_<key>_PACKAGES - Package array
# PROFILE_<key>_SERVICES - Services to enable array
@@ -83,7 +126,7 @@ PROFILES=(minimal server minimal_desktop htpc htpc_gaming office dev)
#---------------------------------------------------------------------------
PROFILE_minimal_NAME="Minimal"
PROFILE_minimal_DESC="Base Arch Linux system, no additional packages."
PROFILE_minimal_XFCE=false
PROFILE_minimal_KDE=false
PROFILE_minimal_PACKAGES=()
PROFILE_minimal_SERVICES=()
@@ -92,7 +135,7 @@ PROFILE_minimal_SERVICES=()
#---------------------------------------------------------------------------
PROFILE_server_NAME="Server"
PROFILE_server_DESC="Adds Restic, Docker, and Docker Compose."
PROFILE_server_XFCE=false
PROFILE_server_KDE=false
PROFILE_server_PACKAGES=(
restic
docker
@@ -101,92 +144,42 @@ PROFILE_server_PACKAGES=(
PROFILE_server_SERVICES=(docker.service)
#---------------------------------------------------------------------------
# Profile: Minimal Desktop
# Profile: Basic Desktop
#---------------------------------------------------------------------------
PROFILE_minimal_desktop_NAME="Minimal Desktop"
PROFILE_minimal_desktop_DESC="XFCE 4 with no additional applications."
PROFILE_minimal_desktop_XFCE=true
PROFILE_minimal_desktop_PACKAGES=()
PROFILE_minimal_desktop_SERVICES=()
#---------------------------------------------------------------------------
# Profile: Home Theater PC
#---------------------------------------------------------------------------
PROFILE_htpc_NAME="Home Theater PC"
PROFILE_htpc_DESC="XFCE 4 with Chromium and VLC media player."
PROFILE_htpc_XFCE=true
PROFILE_htpc_PACKAGES=(
chromium
vlc
vlc-plugin-ffmpeg
)
PROFILE_htpc_SERVICES=()
#---------------------------------------------------------------------------
# Profile: Home Theater PC with Gaming
#---------------------------------------------------------------------------
PROFILE_htpc_gaming_NAME="Home Theater PC with Gaming"
PROFILE_htpc_gaming_DESC="XFCE 4 with Chromium, VLC media player, and Dolphin."
PROFILE_htpc_gaming_XFCE=true
PROFILE_htpc_gaming_PACKAGES=(
dolphin-emu
chromium
vlc
vlc-plugin-ffmpeg
)
PROFILE_htpc_gaming_SERVICES=()
PROFILE_basic_NAME="Basic Desktop"
PROFILE_basic_DESC="KDE Plasma with Chromium and multimedia applications."
PROFILE_basic_KDE=true
PROFILE_basic_PACKAGES=()
PROFILE_basic_SERVICES=()
#---------------------------------------------------------------------------
# Profile: Office Workstation
#---------------------------------------------------------------------------
PROFILE_office_NAME="Office Workstation"
PROFILE_office_DESC="XFCE 4 with a full suite of desktop applications aimed at general office work."
PROFILE_office_XFCE=true
PROFILE_office_DESC="KDE Plasma with office and productivity applications."
PROFILE_office_KDE=true
PROFILE_office_PACKAGES=(
chromium
vlc
vlc-plugin-ffmpeg
hunspell-en_us
# Office and documents
libreoffice-fresh
keepassxc
qalculate-gtk
ffmpeg
hunspell-en_us
ghostwriter
marknote
# Graphics and multimedia
gimp
syncthing
kdenlive
kid3
tenacity
git
# Communication
neochat
tokodon
akregator
# Utilities
keepassxc
syncthing
gnucash
git
)
PROFILE_office_SERVICES=()
#---------------------------------------------------------------------------
# Profile: Software Development Workstation
#---------------------------------------------------------------------------
PROFILE_dev_NAME="Software Development Workstation"
PROFILE_dev_DESC="XFCE 4 with a suite of software development applications."
PROFILE_dev_XFCE=true
PROFILE_dev_PACKAGES=(
chromium
vlc
vlc-plugin-ffmpeg
hunspell-en_us
libreoffice-fresh
keepassxc
qalculate-gtk
ffmpeg
gimp
syncthing
tenacity
git
docker
docker-compose
python
python-virtualenv
pycharm-community-edition
jdk-openjdk
intellij-idea-community-edition
go
code
wireshark-qt
)
PROFILE_dev_SERVICES=(docker.service)

View File

@@ -0,0 +1,2 @@
[ContextMenu]
ShowShareActions=false

View File

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
NoDisplay=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
NoDisplay=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
NoDisplay=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
NoDisplay=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
NoDisplay=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
NoDisplay=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
NoDisplay=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
NoDisplay=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
NoDisplay=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
NoDisplay=true

View File

@@ -0,0 +1,2 @@
[Desktop Entry]
NoDisplay=true

0
files/home-skel/.gitkeep Normal file
View File

View File

@@ -1,32 +0,0 @@
<?xml version="1.1" encoding="UTF-8"?>
<channel name="thunar" version="1.0">
<property name="last-view" type="string" value="ThunarDetailsView"/>
<property name="misc-single-click" type="bool" value="false"/>
<property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_100_PERCENT"/>
<property name="misc-change-window-icon" type="bool" value="false"/>
<property name="default-view" type="string" value="ThunarDetailsView"/>
<property name="last-details-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_38_PERCENT"/>
<property name="last-separator-position" type="int" value="170"/>
<property name="last-details-view-column-widths" type="string" value="50,50,141,360,141,219,50,50,710,50,111,69,50,78"/>
<property name="misc-file-size-binary" type="bool" value="true"/>
<property name="misc-thumbnail-mode" type="string" value="THUNAR_THUMBNAIL_MODE_NEVER"/>
<property name="misc-thumbnail-max-file-size" type="uint64" value="524288"/>
<property name="misc-date-style" type="string" value="THUNAR_DATE_STYLE_SHORT"/>
<property name="shortcuts-icon-emblems" type="bool" value="true"/>
<property name="tree-icon-emblems" type="bool" value="true"/>
<property name="misc-image-preview-mode" type="string" value="THUNAR_IMAGE_PREVIEW_MODE_STANDALONE"/>
<property name="misc-full-path-in-tab-title" type="bool" value="false"/>
<property name="misc-exec-shell-scripts-by-default" type="string" value="THUNAR_EXECUTE_SHELL_SCRIPT_NEVER"/>
<property name="misc-volume-management" type="bool" value="false"/>
<property name="last-window-maximized" type="bool" value="true"/>
<property name="hidden-bookmarks" type="array">
<value type="string" value="network:///"/>
<value type="string" value="computer:///"/>
</property>
<property name="last-details-view-visible-columns" type="string" value="THUNAR_COLUMN_DATE_MODIFIED,THUNAR_COLUMN_NAME,THUNAR_COLUMN_PERMISSIONS,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE"/>
<property name="last-window-width" type="int" value="640"/>
<property name="last-window-height" type="int" value="480"/>
<property name="last-sort-column" type="string" value="THUNAR_COLUMN_DATE_MODIFIED"/>
<property name="last-sort-order" type="string" value="GTK_SORT_DESCENDING"/>
</channel>

View File

@@ -1,22 +0,0 @@
<?xml version="1.1" encoding="UTF-8"?>
<channel name="xfce4-desktop" version="1.0">
<property name="last-settings-migration-version" type="uint" value="1"/>
<property name="windowlist-menu" type="empty">
<property name="show" type="bool" value="false"/>
</property>
<property name="desktop-menu" type="empty">
<property name="show" type="bool" value="false"/>
<property name="show-delete" type="bool" value="false"/>
</property>
<property name="desktop-icons" type="empty">
<property name="show-thumbnails" type="bool" value="false"/>
<property name="file-icons" type="empty">
<property name="show-filesystem" type="bool" value="false"/>
</property>
</property>
<property name="last" type="empty">
<property name="window-width" type="int" value="640"/>
<property name="window-height" type="int" value="559"/>
</property>
</channel>

View File

@@ -1,196 +0,0 @@
<?xml version="1.1" encoding="UTF-8"?>
<channel name="xfce4-keyboard-shortcuts" version="1.0">
<property name="commands" type="empty">
<property name="default" type="empty">
<property name="&lt;Alt&gt;F1" type="empty"/>
<property name="&lt;Alt&gt;F2" type="empty">
<property name="startup-notify" type="empty"/>
</property>
<property name="&lt;Alt&gt;F3" type="empty">
<property name="startup-notify" type="empty"/>
</property>
<property name="&lt;Primary&gt;&lt;Alt&gt;Delete" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;l" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;t" type="empty"/>
<property name="XF86Display" type="empty"/>
<property name="&lt;Super&gt;p" type="empty"/>
<property name="&lt;Primary&gt;Escape" type="empty"/>
<property name="XF86WWW" type="empty"/>
<property name="HomePage" type="empty"/>
<property name="XF86Mail" type="empty"/>
<property name="Print" type="empty"/>
<property name="&lt;Alt&gt;Print" type="empty"/>
<property name="&lt;Shift&gt;Print" type="empty"/>
<property name="&lt;Super&gt;e" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;f" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Escape" type="empty"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;Escape" type="empty"/>
<property name="&lt;Super&gt;r" type="empty">
<property name="startup-notify" type="empty"/>
</property>
<property name="&lt;Alt&gt;&lt;Super&gt;s" type="empty"/>
</property>
<property name="custom" type="empty">
<property name="&lt;Alt&gt;F2" type="string" value="xfce4-appfinder --collapsed">
<property name="startup-notify" type="bool" value="true"/>
</property>
<property name="&lt;Alt&gt;Print" type="string" value="xfce4-screenshooter -w"/>
<property name="&lt;Super&gt;r" type="string" value="xfce4-appfinder -c">
<property name="startup-notify" type="bool" value="true"/>
</property>
<property name="XF86WWW" type="string" value="exo-open --launch WebBrowser"/>
<property name="XF86Mail" type="string" value="exo-open --launch MailReader"/>
<property name="&lt;Alt&gt;F3" type="string" value="xfce4-appfinder">
<property name="startup-notify" type="bool" value="true"/>
</property>
<property name="Print" type="string" value="xfce4-screenshooter"/>
<property name="&lt;Primary&gt;Escape" type="string" value="xfdesktop --menu"/>
<property name="&lt;Shift&gt;Print" type="string" value="xfce4-screenshooter -r"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Delete" type="string" value="xfce4-session-logout"/>
<property name="&lt;Alt&gt;&lt;Super&gt;s" type="string" value="orca"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;t" type="string" value="exo-open --launch TerminalEmulator"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;f" type="string" value="thunar"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;l" type="string" value="xflock4"/>
<property name="&lt;Alt&gt;F1" type="string" value="xfce4-popup-applicationsmenu"/>
<property name="&lt;Super&gt;p" type="string" value="xfce4-display-settings --minimal"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;Escape" type="string" value="xfce4-taskmanager"/>
<property name="&lt;Super&gt;e" type="string" value="thunar"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Escape" type="string" value="xkill"/>
<property name="HomePage" type="string" value="exo-open --launch WebBrowser"/>
<property name="XF86Display" type="string" value="xfce4-display-settings --minimal"/>
<property name="override" type="bool" value="true"/>
</property>
</property>
<property name="xfwm4" type="empty">
<property name="default" type="empty">
<property name="&lt;Alt&gt;Insert" type="empty"/>
<property name="Escape" type="empty"/>
<property name="Left" type="empty"/>
<property name="Right" type="empty"/>
<property name="Up" type="empty"/>
<property name="Down" type="empty"/>
<property name="&lt;Alt&gt;Tab" type="empty"/>
<property name="&lt;Alt&gt;&lt;Shift&gt;Tab" type="empty"/>
<property name="&lt;Alt&gt;Delete" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Down" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Left" type="empty"/>
<property name="&lt;Shift&gt;&lt;Alt&gt;Page_Down" type="empty"/>
<property name="&lt;Alt&gt;F4" type="empty"/>
<property name="&lt;Alt&gt;F6" type="empty"/>
<property name="&lt;Alt&gt;F7" type="empty"/>
<property name="&lt;Alt&gt;F8" type="empty"/>
<property name="&lt;Alt&gt;F9" type="empty"/>
<property name="&lt;Alt&gt;F10" type="empty"/>
<property name="&lt;Alt&gt;F11" type="empty"/>
<property name="&lt;Alt&gt;F12" type="empty"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Left" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;End" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Home" type="empty"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Right" type="empty"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Up" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_1" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_2" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_3" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_4" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_5" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_6" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_7" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_8" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_9" type="empty"/>
<property name="&lt;Alt&gt;space" type="empty"/>
<property name="&lt;Shift&gt;&lt;Alt&gt;Page_Up" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Right" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;d" type="empty"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Up" type="empty"/>
<property name="&lt;Super&gt;Tab" type="empty"/>
<property name="&lt;Primary&gt;F1" type="empty"/>
<property name="&lt;Primary&gt;F2" type="empty"/>
<property name="&lt;Primary&gt;F3" type="empty"/>
<property name="&lt;Primary&gt;F4" type="empty"/>
<property name="&lt;Primary&gt;F5" type="empty"/>
<property name="&lt;Primary&gt;F6" type="empty"/>
<property name="&lt;Primary&gt;F7" type="empty"/>
<property name="&lt;Primary&gt;F8" type="empty"/>
<property name="&lt;Primary&gt;F9" type="empty"/>
<property name="&lt;Primary&gt;F10" type="empty"/>
<property name="&lt;Primary&gt;F11" type="empty"/>
<property name="&lt;Primary&gt;F12" type="empty"/>
<property name="&lt;Super&gt;KP_Left" type="empty"/>
<property name="&lt;Super&gt;KP_Right" type="empty"/>
<property name="&lt;Super&gt;KP_Down" type="empty"/>
<property name="&lt;Super&gt;KP_Up" type="empty"/>
<property name="&lt;Super&gt;KP_Page_Up" type="empty"/>
<property name="&lt;Super&gt;KP_Home" type="empty"/>
<property name="&lt;Super&gt;KP_End" type="empty"/>
<property name="&lt;Super&gt;KP_Next" type="empty"/>
</property>
<property name="custom" type="empty">
<property name="&lt;Primary&gt;F12" type="string" value="workspace_12_key"/>
<property name="&lt;Super&gt;KP_Down" type="string" value="tile_down_key"/>
<property name="&lt;Alt&gt;F4" type="string" value="close_window_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_3" type="string" value="move_window_workspace_3_key"/>
<property name="&lt;Primary&gt;F2" type="string" value="workspace_2_key"/>
<property name="&lt;Primary&gt;F6" type="string" value="workspace_6_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Down" type="string" value="down_workspace_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_9" type="string" value="move_window_workspace_9_key"/>
<property name="&lt;Super&gt;KP_Up" type="string" value="tile_up_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;End" type="string" value="move_window_next_workspace_key"/>
<property name="&lt;Primary&gt;F8" type="string" value="workspace_8_key"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Left" type="string" value="move_window_left_key"/>
<property name="&lt;Super&gt;KP_Right" type="string" value="tile_right_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_4" type="string" value="move_window_workspace_4_key"/>
<property name="Right" type="string" value="right_key"/>
<property name="Down" type="string" value="down_key"/>
<property name="&lt;Primary&gt;F3" type="string" value="workspace_3_key"/>
<property name="&lt;Shift&gt;&lt;Alt&gt;Page_Down" type="string" value="lower_window_key"/>
<property name="&lt;Primary&gt;F9" type="string" value="workspace_9_key"/>
<property name="&lt;Alt&gt;Tab" type="string" value="cycle_windows_key"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Right" type="string" value="move_window_right_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Right" type="string" value="right_workspace_key"/>
<property name="&lt;Alt&gt;F6" type="string" value="stick_window_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_5" type="string" value="move_window_workspace_5_key"/>
<property name="&lt;Primary&gt;F11" type="string" value="workspace_11_key"/>
<property name="&lt;Alt&gt;F10" type="string" value="maximize_window_key"/>
<property name="&lt;Alt&gt;Delete" type="string" value="del_workspace_key"/>
<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;d" type="string" value="show_desktop_key"/>
<property name="&lt;Primary&gt;F4" type="string" value="workspace_4_key"/>
<property name="&lt;Super&gt;KP_Page_Up" type="string" value="tile_up_right_key"/>
<property name="&lt;Alt&gt;F7" type="string" value="move_window_key"/>
<property name="Up" type="string" value="up_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_6" type="string" value="move_window_workspace_6_key"/>
<property name="&lt;Alt&gt;F11" type="string" value="fullscreen_key"/>
<property name="&lt;Alt&gt;space" type="string" value="popup_menu_key"/>
<property name="&lt;Super&gt;KP_Home" type="string" value="tile_up_left_key"/>
<property name="Escape" type="string" value="cancel_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_1" type="string" value="move_window_workspace_1_key"/>
<property name="&lt;Super&gt;KP_Next" type="string" value="tile_down_right_key"/>
<property name="&lt;Super&gt;KP_Left" type="string" value="tile_left_key"/>
<property name="&lt;Shift&gt;&lt;Alt&gt;Page_Up" type="string" value="raise_window_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Home" type="string" value="move_window_prev_workspace_key"/>
<property name="&lt;Alt&gt;&lt;Shift&gt;Tab" type="string" value="cycle_reverse_windows_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Left" type="string" value="left_workspace_key"/>
<property name="&lt;Alt&gt;F12" type="string" value="above_key"/>
<property name="&lt;Primary&gt;&lt;Shift&gt;&lt;Alt&gt;Up" type="string" value="move_window_up_key"/>
<property name="&lt;Primary&gt;F5" type="string" value="workspace_5_key"/>
<property name="&lt;Alt&gt;F8" type="string" value="resize_window_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_7" type="string" value="move_window_workspace_7_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_2" type="string" value="move_window_workspace_2_key"/>
<property name="&lt;Super&gt;KP_End" type="string" value="tile_down_left_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;Up" type="string" value="up_workspace_key"/>
<property name="&lt;Alt&gt;F9" type="string" value="hide_window_key"/>
<property name="&lt;Primary&gt;F7" type="string" value="workspace_7_key"/>
<property name="&lt;Primary&gt;F10" type="string" value="workspace_10_key"/>
<property name="Left" type="string" value="left_key"/>
<property name="&lt;Primary&gt;&lt;Alt&gt;KP_8" type="string" value="move_window_workspace_8_key"/>
<property name="&lt;Alt&gt;Insert" type="string" value="add_workspace_key"/>
<property name="&lt;Primary&gt;F1" type="string" value="workspace_1_key"/>
<property name="override" type="bool" value="true"/>
</property>
</property>
<property name="providers" type="array">
<value type="string" value="xfwm4"/>
<value type="string" value="commands"/>
</property>
</channel>

View File

@@ -1,7 +0,0 @@
<?xml version="1.1" encoding="UTF-8"?>
<channel name="xfce4-notifyd" version="1.0">
<property name="log-max-size-enabled" type="bool" value="true"/>
<property name="date-time-custom-format" type="string" value="%a %H:%M:%S"/>
<property name="show-text-with-gauge" type="bool" value="true"/>
</channel>

View File

@@ -1,82 +0,0 @@
<?xml version="1.1" encoding="UTF-8"?>
<channel name="xfce4-panel" version="1.0">
<property name="configver" type="int" value="2"/>
<property name="panels" type="array">
<value type="int" value="1"/>
<property name="dark-mode" type="bool" value="true"/>
<property name="panel-1" type="empty">
<property name="position" type="string" value="p=8;x=640;y=786"/>
<property name="length" type="uint" value="100"/>
<property name="position-locked" type="bool" value="true"/>
<property name="icon-size" type="uint" value="16"/>
<property name="size" type="uint" value="26"/>
<property name="plugin-ids" type="array">
<value type="int" value="1"/>
<value type="int" value="2"/>
<value type="int" value="3"/>
<value type="int" value="4"/>
<value type="int" value="5"/>
<value type="int" value="6"/>
<value type="int" value="10"/>
<value type="int" value="7"/>
<value type="int" value="11"/>
</property>
</property>
</property>
<property name="plugins" type="empty">
<property name="plugin-1" type="string" value="whiskermenu">
<property name="show-button-title" type="bool" value="true"/>
<property name="profile-shape" type="int" value="0"/>
<property name="show-command-profile" type="bool" value="false"/>
<property name="show-command-menueditor" type="bool" value="false"/>
<property name="show-command-settings" type="bool" value="true"/>
<property name="search-actions" type="int" value="0"/>
<property name="favorites" type="array">
</property>
<property name="recent" type="array">
<value type="string" value="xfce4-terminal.desktop"/>
<value type="string" value="xfce4-terminal-emulator.desktop"/>
</property>
</property>
<property name="plugin-2" type="string" value="tasklist">
<property name="flat-buttons" type="bool" value="true"/>
<property name="show-handle" type="bool" value="true"/>
<property name="grouping" type="bool" value="true"/>
<property name="include-all-workspaces" type="bool" value="false"/>
</property>
<property name="plugin-3" type="string" value="separator">
<property name="expand" type="bool" value="true"/>
<property name="style" type="uint" value="0"/>
</property>
<property name="plugin-4" type="string" value="pager">
<property name="rows" type="uint" value="1"/>
<property name="workspace-scrolling" type="bool" value="false"/>
<property name="miniature-view" type="bool" value="true"/>
</property>
<property name="plugin-6" type="string" value="systray">
<property name="single-row" type="bool" value="true"/>
<property name="square-icons" type="bool" value="true"/>
<property name="known-legacy-items" type="array">
<value type="string" value="xfce4-power-manager"/>
</property>
</property>
<property name="plugin-10" type="string" value="pulseaudio">
<property name="enable-keyboard-shortcuts" type="bool" value="true"/>
<property name="play-sound" type="bool" value="true"/>
<property name="rec-indicator-persistent" type="bool" value="false"/>
</property>
<property name="plugin-11" type="string" value="clock">
<property name="show-week-numbers" type="bool" value="false"/>
<property name="digital-date-font" type="string" value="Noto Sans 8"/>
<property name="digital-time-font" type="string" value="Noto Sans 8"/>
<property name="digital-time-format" type="string" value="%l:%M:%S %P"/>
<property name="digital-date-format" type="string" value="%a, %b %d, %Y"/>
</property>
<property name="plugin-5" type="string" value="separator">
<property name="style" type="uint" value="0"/>
<property name="expand" type="bool" value="false"/>
</property>
<property name="plugin-7" type="string" value="power-manager-plugin"/>
</property>
</channel>

View File

@@ -1,15 +0,0 @@
<?xml version="1.1" encoding="UTF-8"?>
<channel name="xfce4-power-manager" version="1.0">
<property name="xfce4-power-manager" type="empty">
<property name="lock-screen-suspend-hibernate" type="bool" value="true"/>
<property name="power-button-action" type="uint" value="4"/>
<property name="hibernate-button-action" type="uint" value="3"/>
<property name="sleep-button-action" type="uint" value="3"/>
<property name="battery-button-action" type="uint" value="3"/>
<property name="show-tray-icon" type="bool" value="false"/>
<property name="inactivity-on-ac" type="uint" value="0"/>
<property name="dpms-on-ac-off" type="uint" value="60"/>
<property name="dpms-on-ac-sleep" type="uint" value="15"/>
</property>
</channel>

View File

@@ -1,31 +0,0 @@
<?xml version="1.1" encoding="UTF-8"?>
<channel name="xfce4-screensaver" version="1.0">
<property name="saver" type="empty">
<property name="mode" type="int" value="2"/>
<property name="themes" type="empty">
<property name="list" type="array">
<value type="string" value="screensavers-xfce-floaters"/>
</property>
</property>
<property name="enabled" type="bool" value="true"/>
<property name="fullscreen-inhibit" type="bool" value="true"/>
<property name="idle-activation" type="empty">
<property name="delay" type="int" value="1"/>
</property>
</property>
<property name="lock" type="empty">
<property name="enabled" type="bool" value="true"/>
<property name="saver-activation" type="empty">
<property name="delay" type="int" value="2"/>
<property name="enabled" type="bool" value="true"/>
</property>
<property name="sleep-activation" type="bool" value="true"/>
<property name="status-messages" type="empty">
<property name="enabled" type="bool" value="false"/>
</property>
<property name="user-switching" type="empty">
<property name="enabled" type="bool" value="false"/>
</property>
</property>
</channel>

View File

@@ -1,12 +0,0 @@
<?xml version="1.1" encoding="UTF-8"?>
<channel name="xfce4-terminal" version="1.0">
<property name="scrolling-lines" type="uint" value="10000"/>
<property name="misc-cursor-blinks" type="bool" value="true"/>
<property name="color-use-theme" type="bool" value="false"/>
<property name="color-background-vary" type="bool" value="false"/>
<property name="misc-tab-close-middle-click" type="bool" value="false"/>
<property name="misc-middle-click-opens-uri" type="bool" value="false"/>
<property name="misc-bell" type="bool" value="false"/>
<property name="misc-bell-urgent" type="bool" value="false"/>
</channel>

View File

@@ -1,91 +0,0 @@
<?xml version="1.1" encoding="UTF-8"?>
<channel name="xfwm4" version="1.0">
<property name="general" type="empty">
<property name="activate_action" type="string" value="bring"/>
<property name="borderless_maximize" type="bool" value="true"/>
<property name="box_move" type="bool" value="false"/>
<property name="box_resize" type="bool" value="false"/>
<property name="button_layout" type="string" value="O|SHMC"/>
<property name="button_offset" type="int" value="0"/>
<property name="button_spacing" type="int" value="0"/>
<property name="click_to_focus" type="bool" value="true"/>
<property name="cycle_apps_only" type="bool" value="false"/>
<property name="cycle_draw_frame" type="bool" value="true"/>
<property name="cycle_raise" type="bool" value="false"/>
<property name="cycle_hidden" type="bool" value="true"/>
<property name="cycle_minimum" type="bool" value="true"/>
<property name="cycle_minimized" type="bool" value="false"/>
<property name="cycle_preview" type="bool" value="true"/>
<property name="cycle_tabwin_mode" type="int" value="0"/>
<property name="cycle_workspaces" type="bool" value="false"/>
<property name="double_click_action" type="string" value="maximize"/>
<property name="double_click_distance" type="int" value="5"/>
<property name="double_click_time" type="int" value="250"/>
<property name="easy_click" type="string" value="Alt"/>
<property name="focus_delay" type="int" value="250"/>
<property name="focus_hint" type="bool" value="true"/>
<property name="focus_new" type="bool" value="true"/>
<property name="frame_opacity" type="int" value="100"/>
<property name="frame_border_top" type="int" value="0"/>
<property name="full_width_title" type="bool" value="true"/>
<property name="horiz_scroll_opacity" type="bool" value="false"/>
<property name="inactive_opacity" type="int" value="100"/>
<property name="maximized_offset" type="int" value="0"/>
<property name="mousewheel_rollup" type="bool" value="false"/>
<property name="move_opacity" type="int" value="100"/>
<property name="placement_mode" type="string" value="center"/>
<property name="placement_ratio" type="int" value="20"/>
<property name="popup_opacity" type="int" value="100"/>
<property name="prevent_focus_stealing" type="bool" value="false"/>
<property name="raise_delay" type="int" value="250"/>
<property name="raise_on_click" type="bool" value="true"/>
<property name="raise_on_focus" type="bool" value="false"/>
<property name="raise_with_any_button" type="bool" value="true"/>
<property name="repeat_urgent_blink" type="bool" value="false"/>
<property name="resize_opacity" type="int" value="100"/>
<property name="scroll_workspaces" type="bool" value="false"/>
<property name="shadow_delta_height" type="int" value="0"/>
<property name="shadow_delta_width" type="int" value="0"/>
<property name="shadow_delta_x" type="int" value="0"/>
<property name="shadow_delta_y" type="int" value="-3"/>
<property name="shadow_opacity" type="int" value="50"/>
<property name="show_app_icon" type="bool" value="false"/>
<property name="show_dock_shadow" type="bool" value="true"/>
<property name="show_frame_shadow" type="bool" value="true"/>
<property name="show_popup_shadow" type="bool" value="false"/>
<property name="snap_resist" type="bool" value="false"/>
<property name="snap_to_border" type="bool" value="true"/>
<property name="snap_to_windows" type="bool" value="false"/>
<property name="snap_width" type="int" value="10"/>
<property name="vblank_mode" type="string" value="auto"/>
<property name="theme" type="string" value="Default"/>
<property name="tile_on_move" type="bool" value="true"/>
<property name="title_alignment" type="string" value="center"/>
<property name="title_font" type="string" value="Noto Sans Bold 9"/>
<property name="title_horizontal_offset" type="int" value="0"/>
<property name="titleless_maximize" type="bool" value="false"/>
<property name="title_shadow_active" type="string" value="false"/>
<property name="title_shadow_inactive" type="string" value="false"/>
<property name="title_vertical_offset_active" type="int" value="0"/>
<property name="title_vertical_offset_inactive" type="int" value="0"/>
<property name="toggle_workspaces" type="bool" value="false"/>
<property name="unredirect_overlays" type="bool" value="true"/>
<property name="urgent_blink" type="bool" value="false"/>
<property name="use_compositing" type="bool" value="true"/>
<property name="workspace_count" type="int" value="4"/>
<property name="wrap_cycle" type="bool" value="true"/>
<property name="wrap_layout" type="bool" value="true"/>
<property name="wrap_resistance" type="int" value="10"/>
<property name="wrap_windows" type="bool" value="false"/>
<property name="wrap_workspaces" type="bool" value="false"/>
<property name="zoom_desktop" type="bool" value="true"/>
<property name="zoom_pointer" type="bool" value="true"/>
<property name="workspace_names" type="array">
<value type="string" value="Workspace 1"/>
<value type="string" value="Workspace 2"/>
<value type="string" value="Workspace 3"/>
<value type="string" value="Workspace 4"/>
</property>
</property>
</channel>

View File

@@ -1,42 +0,0 @@
<?xml version="1.1" encoding="UTF-8"?>
<channel name="xsettings" version="1.0">
<property name="Net" type="empty">
<property name="ThemeName" type="string" value="Adwaita-dark"/>
<property name="IconThemeName" type="string" value="Papirus-Dark"/>
<property name="DoubleClickTime" type="empty"/>
<property name="DoubleClickDistance" type="empty"/>
<property name="DndDragThreshold" type="empty"/>
<property name="CursorBlink" type="empty"/>
<property name="CursorBlinkTime" type="empty"/>
<property name="SoundThemeName" type="empty"/>
<property name="EnableEventSounds" type="empty"/>
<property name="EnableInputFeedbackSounds" type="empty"/>
</property>
<property name="Xft" type="empty">
<property name="DPI" type="empty"/>
<property name="Antialias" type="empty"/>
<property name="Hinting" type="empty"/>
<property name="HintStyle" type="empty"/>
<property name="RGBA" type="empty"/>
</property>
<property name="Gtk" type="empty">
<property name="CanChangeAccels" type="empty"/>
<property name="ColorPalette" type="empty"/>
<property name="FontName" type="string" value="Noto Sans 10"/>
<property name="MonospaceFontName" type="string" value="Noto Sans Mono 10"/>
<property name="IconSizes" type="empty"/>
<property name="KeyThemeName" type="empty"/>
<property name="MenuImages" type="empty"/>
<property name="ButtonImages" type="empty"/>
<property name="MenuBarAccel" type="empty"/>
<property name="CursorThemeName" type="string" value="Adwaita"/>
<property name="CursorThemeSize" type="empty"/>
<property name="DecorationLayout" type="string" value="icon,menu:minimize,maximize,close"/>
<property name="DialogsUseHeader" type="empty"/>
<property name="TitlebarMiddleClick" type="empty"/>
</property>
<property name="Gdk" type="empty">
<property name="WindowScalingFactor" type="empty"/>
</property>
</channel>

View File

@@ -39,7 +39,7 @@ source "${SCRIPT_DIR}/lib/system/security.sh"
source "${SCRIPT_DIR}/lib/system/user.sh"
# Source desktop modules
source "${SCRIPT_DIR}/lib/desktop/xfce.sh"
source "${SCRIPT_DIR}/lib/desktop/kde.sh"
source "${SCRIPT_DIR}/lib/desktop/drivers.sh"
# Source profile system

49
lib/desktop/kde.sh Normal file
View File

@@ -0,0 +1,49 @@
#!/bin/bash
# Copyright 2026 Logan Fick
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# kde.sh - KDE Plasma desktop environment installation
#
# Installs KDE Plasma with SDDM display manager.
# KDE_PACKAGES is defined in config/profiles.conf.
# Install KDE base packages
install_kde_packages() {
chroot_pacman_install "${KDE_PACKAGES[@]}"
}
# Copy desktop skeleton files to user home
# Arguments:
# $1 - username
copy_desktop_skel() {
local username="$1"
local home_dir="${MOUNT_POINT}/home/${username}"
cp -r "${HOME_SKEL_DESKTOP_DIR}/." "${home_dir}/"
rm -f "${home_dir}/.gitkeep"
chown -R 1000:1000 "${home_dir}"
}
# Full KDE installation
# Arguments:
# $1 - username
install_kde() {
local username="$1"
install_kde_packages
chroot_systemd_enable sddm.service
copy_desktop_skel "$username"
chroot_run usermod -aG wireshark "$username"
}

View File

@@ -1,70 +0,0 @@
#!/bin/bash
# Copyright 2026 Logan Fick
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# xfce.sh - XFCE desktop environment installation
#
# Installs XFCE4 with LightDM and copies pre-configured user settings.
# XFCE_PACKAGES is defined in config/profiles.conf.
# Install XFCE base packages
install_xfce_packages() {
chroot_pacman_install "${XFCE_PACKAGES[@]}"
}
# Configure LightDM greeter
configure_lightdm() {
chroot_run sh -c "cat > /etc/lightdm/lightdm-gtk-greeter.conf" <<EOF
[greeter]
hide-user-image = true
font-name = Noto Sans 10
clock-format = %A, %B %d, %Y,%l:%M:%S %p
theme-name = Adwaita-dark
icon-theme-name = Papirus-Dark
screensaver-timeout = 10
user-background = false
background = #77767b
indicators = ~host;~spacer;~clock;~spacer;~power
EOF
}
# Copy default XFCE configuration to user home
# Arguments:
# $1 - username
copy_xfce_config() {
local username="$1"
local home_dir="${MOUNT_POINT}/home/${username}"
cp -r "${HOME_CONFIG_DIR}" "${home_dir}/.config"
# Disable tumblerd (thumbnail service)
mkdir -p "${home_dir}/.config/systemd/user"
ln -s /dev/null "${home_dir}/.config/systemd/user/tumblerd.service"
# Set correct ownership (UID 1000 is typically first user)
chown -R 1000:1000 "${home_dir}/.config"
}
# Full XFCE installation
# Arguments:
# $1 - username
install_xfce() {
local username="$1"
install_xfce_packages
chroot_systemd_enable lightdm.service
configure_lightdm
copy_xfce_config "$username"
}

View File

@@ -33,13 +33,39 @@ prompt_username() {
done
}
# Prompt for display name
# Sets:
# DISPLAY_NAME - the entered display name (empty if skipped)
prompt_display_name() {
prompt "Please enter your display name, or press Enter to skip (e.g., John Smith):" DISPLAY_NAME
}
# Copy base skeleton files to user home
# Arguments:
# $1 - username
copy_home_skel() {
local username="$1"
local home_dir="${MOUNT_POINT}/home/${username}"
cp -r "${HOME_SKEL_DIR}/." "${home_dir}/"
rm -f "${home_dir}/.gitkeep"
chown -R 1000:1000 "${home_dir}"
}
# Create a user account
# Arguments:
# $1 - username
# $2 - display name (optional)
create_user() {
local username="$1"
local display_name="${2:-}"
chroot_run useradd -m -G wheel "$username"
if [[ -n "$display_name" ]]; then
chroot_run useradd -m -G wheel -c "$display_name" "$username"
else
chroot_run useradd -m -G wheel "$username"
fi
copy_home_skel "$username"
}
# Set password for a user
@@ -55,8 +81,10 @@ set_user_password() {
# Full user setup
# Sets:
# USERNAME - the created username
# DISPLAY_NAME - the user's display name
setup_user() {
prompt_username
create_user "$USERNAME"
prompt_display_name
create_user "$USERNAME" "$DISPLAY_NAME"
set_user_password "$USERNAME"
}

View File

@@ -66,15 +66,15 @@ get_profile_services() {
echo "${!svc_var}"
}
# Check if profile requires XFCE
# Check if profile requires KDE
# Arguments:
# $1 - profile key
# Returns:
# 0 if requires XFCE, 1 otherwise
profile_requires_xfce() {
# 0 if requires KDE, 1 otherwise
profile_requires_kde() {
local profile_key="$1"
local xfce_var="PROFILE_${profile_key}_XFCE"
[ "${!xfce_var}" = "true" ]
local kde_var="PROFILE_${profile_key}_KDE"
[ "${!kde_var}" = "true" ]
}
# Validate profile selection
@@ -98,9 +98,9 @@ install_profile() {
local packages
local services
# Install XFCE if required
if profile_requires_xfce "$profile_key"; then
install_xfce "$username"
# Install KDE if required
if profile_requires_kde "$profile_key"; then
install_kde "$username"
prompt_install_graphics
fi