Warning, /plasma/plasma-desktop/kcms/ksmserver/ui/main.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2020 Carl Schwan <carl@carlschwan.eu>
0003
0004 SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.10
0008 import QtQuick.Controls 2.10
0009 import QtQuick.Layouts 1.11
0010 import org.kde.kirigami 2.13 as Kirigami
0011 import QtQuick.Dialogs 6.3
0012 import org.kde.desktopsession.private 1.0
0013 import org.kde.kcmutils as KCM
0014
0015 KCM.SimpleKCM {
0016 id: root
0017
0018 implicitHeight: Kirigami.Units.gridUnit * 28
0019 implicitWidth: Kirigami.Units.gridUnit * 28
0020
0021 ColumnLayout {
0022 spacing: Kirigami.Units.smallSpacing
0023
0024 Kirigami.InlineMessage {
0025 id: manualSessionRestoreRebootMessage
0026 Layout.fillWidth: true
0027 Layout.margins: Kirigami.Units.smallSpacing
0028 type: Kirigami.MessageType.Information
0029 visible: false
0030 text: i18n("The system must be restarted before manual session saving becomes active.")
0031 showCloseButton: true
0032 actions: [
0033 Kirigami.Action {
0034 icon.name: "system-reboot"
0035 text: i18n("Restart")
0036 onTriggered: kcm.reboot();
0037 }
0038 ]
0039 Connections {
0040 target: kcm
0041 function onKsmserverSettingsChanged() {
0042 if (loginManual.checked) {
0043 manualSessionRestoreRebootMessage.visible = true;
0044 } else {
0045 manualSessionRestoreRebootMessage.visible = false;
0046 }
0047 }
0048 }
0049 }
0050
0051 Kirigami.InlineMessage {
0052 Layout.fillWidth: true
0053 Layout.margins: Kirigami.Units.smallSpacing
0054 type: kcm.error.length > 0 ? Kirigami.MessageType.Error : Kirigami.MessageType.Information
0055 visible: kcm.restartInSetupScreen || kcm.error.length > 0
0056 text: kcm.error.length > 0
0057 ? i18n("Failed to request restart to firmware setup: %1", kcm.error)
0058 : kcm.isUefi ? i18n("Next time the computer is restarted, it will enter the UEFI setup screen.")
0059 : i18n("Next time the computer is restarted, it will enter the firmware setup screen.")
0060 showCloseButton: true
0061 actions: Kirigami.Action {
0062 icon.name: "system-reboot"
0063 onTriggered: kcm.reboot();
0064 text: i18n("Restart Now")
0065 }
0066 }
0067 Kirigami.FormLayout {
0068
0069 Item {
0070 Kirigami.FormData.isSection: true
0071 Kirigami.FormData.label: i18nc("@title:group", "Logout Screen")
0072 }
0073
0074 RowLayout {
0075 Kirigami.FormData.label: i18n("Show:")
0076 Kirigami.FormData.buddyFor: logoutScreenCheckbox
0077 spacing: 0
0078
0079 CheckBox {
0080 id: logoutScreenCheckbox
0081 checked: Settings.confirmLogout
0082 onToggled: Settings.confirmLogout = checked
0083 KCM.SettingStateBinding {
0084 configObject: Settings
0085 settingName: "confirmLogout"
0086 }
0087 }
0088 KCM.ContextualHelpButton {
0089 toolTipText: xi18nc("@info", "When this setting is turned on, the logout confirmation screen will be shown when you log out, shut down, restart, press the power button, or click on buttons or menu items labeled <interface>Leaveā¦</interface>.")
0090 }
0091 }
0092
0093 Item {
0094 Kirigami.FormData.isSection: true
0095 Kirigami.FormData.label: i18nc("@title:group", "Session Restore")
0096 }
0097
0098 ButtonGroup {
0099 buttons: [loginRestore, loginManual, loginEmpty]
0100 }
0101 RadioButton {
0102 id: loginRestore
0103 Kirigami.FormData.label: i18n("On login, launch apps that were open:")
0104 text: i18nc("@option:radio Automatic style of session restoration", "On last logout")
0105 checked: Settings.loginMode === 0
0106 onToggled: Settings.loginMode = 0
0107 KCM.SettingStateBinding {
0108 configObject: Settings
0109 settingName: "loginMode"
0110 }
0111 }
0112 RowLayout {
0113 spacing: 0
0114
0115 RadioButton {
0116 id: loginManual
0117 text: i18nc("@option:radio Manual style of session restoration", "When session was manually saved")
0118 checked: Settings.loginMode === 1
0119 onToggled: Settings.loginMode = 1
0120 KCM.SettingStateBinding {
0121 configObject: Settings
0122 settingName: "loginMode"
0123 }
0124 }
0125 KCM.ContextualHelpButton {
0126 toolTipText: xi18nc("@info", "A <interface>Save Session</interface> button will appear in the <interface>Application Launcher</interface> menu. When you click it, Plasma will remember the apps that are open and restore them on the next login. Click it again to replace the set of remembered apps.")
0127 }
0128 }
0129 RadioButton {
0130 id: loginEmpty
0131 text: i18nc("@option:radio Here 'session' refers to the technical concept of session restoration, whereby the windows that were open on logout are re-opened on the next login", "Start with an empty session")
0132 checked: Settings.loginMode === 2
0133 onToggled: Settings.loginMode = 2
0134 KCM.SettingStateBinding {
0135 configObject: Settings
0136 settingName: "loginMode"
0137 }
0138 }
0139
0140 Item {
0141 Kirigami.FormData.isSection: true
0142 }
0143
0144 ColumnLayout {
0145 Kirigami.FormData.label: i18n("Ignored applications:")
0146 Kirigami.FormData.buddyFor: ignoredAppsTextField
0147 spacing: Kirigami.Units.smallSpacing
0148
0149 RowLayout {
0150 spacing: 0
0151
0152 TextField {
0153 id: ignoredAppsTextField
0154 Layout.preferredWidth: Kirigami.Units.gridUnit * 16
0155 text: Settings.excludeApps
0156 enabled: !loginEmpty.checked
0157 // onTextEdited instead of onAccepted because otherwise the apply and
0158 // reset buttons won't work, since otherwise in many case no change will
0159 // be sent to the kconfigXt backend.
0160 onTextEdited: Settings.excludeApps = text
0161
0162 KCM.SettingStateBinding {
0163 configObject: Settings
0164 settingName: "excludeApps"
0165 }
0166 }
0167 KCM.ContextualHelpButton {
0168 toolTipText: i18n("Write apps' executable names here (separated by commas or colons, for example 'xterm:konsole' or 'xterm,konsole') to prevent them from autostarting along with other session-restored apps.")
0169 }
0170 }
0171 }
0172
0173 Item {
0174 Kirigami.FormData.isSection: true
0175 Kirigami.FormData.label: i18nc("@title:group", "Firmware")
0176 visible: uefi.visible
0177 }
0178
0179 CheckBox {
0180 id: uefi
0181 Kirigami.FormData.label: i18nc("@label:check part of a sentence: After next restart enter UEFI/Firmware setup screen", "After next restart:")
0182 text: kcm.isUefi ? i18nc("@option:check", "Enter UEFI setup screen")
0183 : i18nc("@option:check", "Enter firmware setup screen")
0184 visible: kcm.canFirmwareSetup
0185 checked: kcm.restartInSetupScreen
0186 onToggled: kcm.restartInSetupScreen = checked
0187 }
0188 }
0189 }
0190 }