• C++ 54.6%
  • QML 35.5%
  • CMake 8.2%
  • JavaScript 1%
  • Shell 0.7%
Find a file
Bart Ribbers f854654f57 sysuser.conf: change plasma-setup user shell to /bin/sh
There doesn't seem to be a good reason to "force" Bash, especially when
some distributions (like Alpine Linux and postmarketOS) don't even have
it installed at all by default.
On distributions where Bash is the default /bin/sh will point to Bash
anyway.
2026-02-24 20:49:18 +01:00
.gitlab/merge_request_templates chore: add default merge request template 2026-02-19 15:40:21 -05:00
docs Mention the install location of the KPackage 2025-12-06 09:23:38 -05:00
files sysuser.conf: change plasma-setup user shell to /bin/sh 2026-02-24 20:49:18 +01:00
LICENSES Add missing license files 2025-06-07 09:27:08 +02:00
modules SVN_SILENT made messages (.desktop file) - always resolve ours 2026-02-23 01:40:24 +00:00
po GIT_SILENT Sync po/docbooks with svn 2026-02-22 01:52:07 +00:00
scripts Rename project from "KDE Initial System Setup" to "Plasma Setup" 2025-09-27 11:12:06 -04:00
src SVN_SILENT made messages (.desktop file) - always resolve ours 2026-02-22 01:42:33 +00:00
.contextProperties.ini chore: globally disable i18n unqualified warnings for qmllint 2026-01-26 14:35:37 -05:00
.editorconfig chore: fix license statements 2025-12-29 11:46:37 -05:00
.gitignore add gitignore 2025-05-09 16:15:27 -04:00
.gitlab-ci.yml ci: add reuse linting job 2025-12-29 11:46:37 -05:00
.kde-ci.yml ci: enable lsan to automatically detect memory leaks 2026-01-28 20:55:29 +00:00
CMakeLists.txt Update version for new release 6.6.80 2026-01-13 22:04:04 +05:30
config-plasma-setup.h.cmake feat: skip user creation if existing users are detected 2025-12-05 15:54:12 -05:00
config-plasma-setup.h.cmake.license chore: fix license statements 2025-12-29 11:46:37 -05:00
Messages.sh Rename project from "KDE Initial System Setup" to "Plasma Setup" 2025-09-27 11:12:06 -04:00
README.md docs: add promo video to README 2026-02-18 10:17:43 -05:00

Plasma Setup

The Out-of-the-box (OOTB) experience that greets a user after system installation or when starting up a new computer. Guides the user in creating the system's first user account and configuring initial settings.

Features

  • User account creation
  • Language selection
  • Keyboard layout selection
  • Time zone selection
  • Network configuration

Promo video showing off a run through Plasma Setup{width=800px}

Getting Started

Caution

It is not recommended to install this on your system — you should use a virtual machine instead. Installing this on real hardware will leave behind files not trivially uninstallable and could leave your system in a non-function state.

  • Clone the repository:

    git clone https://invent.kde.org/plasma/plasma-setup.git
    
  • Build and install:

    cmake -B build/
    cmake --build build/ --parallel
    sudo cmake --install build/
    
  • Trigger system user creation:

    sudo systemd-sysusers
    
  • Enable the systemd service:

    sudo systemctl enable plasma-setup.service
    
  • Reboot:

With the systemd service enabled, reboot your system and the initial setup will run automatically.

Completion flag file

When setup finishes successfully it creates a flag file to indicate this at /etc/plasma-setup-done. The systemd unit checks for this flag and only runs if it does not exist, so the out-of-box experience only runs once. If you intentionally want to re-run the wizard (for example while developing Plasma Setup), remove the file manually and reboot:

sudo rm /etc/plasma-setup-done

Configuration

Plasma Setup can be customized via a system-wide configuration file located at /etc/xdg/plasmasetuprc. This file allows administrators to set default values and preferences, as well as control certain aspects of the setup process.

Build-time options

Option Default Description
LOGIN_DEFS_PATH /etc/login.defs Path Plasma Setup reads to determine the minimum UID for regular users.

Override any option at configure time, for example:

cmake -B build/ -DLOGIN_DEFS_PATH=/usr/lib/sysusers/login.defs

Development Overrides

For development and testing purposes it may be useful to override some of the behaviors of Plasma Setup. The following environment variables can be set to modify the behavior:

  • PLASMA_SETUP_USER_CREATION_OVERRIDE=1: Forces the account creation page to always be shown, whereas normally it would be skipped if existing users are detected.

Creating Custom Modules (for Distributions/Administrators)

Plasma Setup supports extending the wizard with custom pages via KPackage modules. These modules can provide QML user interfaces and optional C++ backends.

For a complete guide on creating custom modules, see docs/CUSTOM_MODULES.md.


The project is under active development and is not yet ready for production use. Contributions and suggestions are very welcome.