/* * SDDM Fedora configuration */ #ifndef SDDM_CONFIGURATION_H #define SDDM_CONFIGURATION_H #include #include #include #include #include #include #include "Constants.h" #include "ConfigReader.h" namespace SDDM { // Name File Sections and/or Entries (but anything else too, it's a class) - Entries in a Config are assumed to be in the General section Config(MainConfig, CONFIG_FILE, enum NumState { NUM_NONE, NUM_SET_ON, NUM_SET_OFF }; // Name Type Default value Description Entry(HaltCommand, QString, _S("/usr/bin/systemctl poweroff"), _S("Halt command")); Entry(RebootCommand, QString, _S("/usr/bin/systemctl reboot"), _S("Reboot command")); Entry(Numlock, NumState, NUM_NONE, _S("Initial NumLock state\n" "Valid values: on|off|none\n" "If property is set to none, numlock won't be changed")); // Name Entries (but it's a regular class again) Section(Theme, Entry(ThemeDir, QString, _S(DATA_INSTALL_DIR "/themes"), _S("Theme directory path")); Entry(Current, QString, _S("fedora"), _S("Current theme name")); Entry(FacesDir, QString, _S(DATA_INSTALL_DIR "/faces"), _S("Face icon directory\n" "The files should be in username.face.icon format")); Entry(CursorTheme, QString, QString(), _S("Cursor theme")); ); // TODO: Not absolutely sure if everything belongs here. Xsessions, VT and probably some more seem universal Section(XDisplay, Entry(ServerPath, QString, _S("/usr/bin/X"), _S("X server path")); Entry(XauthPath, QString, _S("/usr/bin/xauth"), _S("Xauth path")); Entry(SessionDir, QString, _S("/usr/share/xsessions"), _S("Session description directory")); Entry(SessionCommand, QString, _S("/etc/X11/xinit/Xsession"), _S("Xsession script path\n" "A script to execute when starting the desktop session")); Entry(DisplayCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xsetup"), _S("Xsetup script path\n" "A script to execute when starting the display server")); Entry(MinimumVT, int, 1, _S("Minimum VT\n" "The lowest virtual terminal number that will be used.")); ); Section(Users, Entry(DefaultPath, QString, _S("/usr/local/bin:/usr/bin:/bin"), _S("Default $PATH")); Entry(MinimumUid, int, 1000, _S("Minimum user id for displayed users")); Entry(MaximumUid, int, 65000, _S("Maximum user id for displayed users")); Entry(HideUsers, QStringList, QStringList(), _S("Hidden users")); Entry(HideShells, QStringList, QStringList(), _S("Hidden shells\n" "Users with these shells as their default won't be listed")); Entry(RememberLastUser, bool, true, _S("Remember the last successfully logged in user")); Entry(RememberLastSession, bool, true, _S("Remember the session of the last successfully logged in user")); ); Section(Autologin, Entry(User, QString, QString(), _S("Autologin user")); Entry(Session, QString, QString(), _S("Autologin session")); Entry(Relogin, bool, false, _S("Autologin again on session exit")); ); ); Config(StateConfig, []()->QString{auto tmp = getpwnam("sddm"); return tmp ? tmp->pw_dir : STATE_DIR;}().append("/state.conf"), Section(Last, Entry(Session, QString, QString(), _S("Name of the session file of the last session selected. This session will be preselected when the login screen shows up.")); Entry(User, QString, QString(), _S("Name of the last logged-in user. This username will be preselected/shown when the login screen shows up")); ); ); extern MainConfig mainConfig; extern StateConfig stateConfig; inline QTextStream& operator>>(QTextStream &str, MainConfig::NumState &state) { QString text = str.readLine().trimmed(); if (text.compare("on", Qt::CaseInsensitive) == 0) state = MainConfig::NUM_SET_ON; else if (text.compare("off", Qt::CaseInsensitive) == 0) state = MainConfig::NUM_SET_OFF; else state = MainConfig::NUM_NONE; return str; } inline QTextStream& operator<<(QTextStream &str, const MainConfig::NumState &state) { if (state == MainConfig::NUM_SET_ON) str << "on"; else if (state == MainConfig::NUM_SET_OFF) str << "off"; else str << "none"; return str; } } #endif // SDDM_CONFIGURATION_H