├── .git-blame-ignore-revs ├── .gitignore ├── .gitlab-ci.yml ├── .kde-ci.yml ├── CMakeLists.txt ├── COPYING ├── DESIGN ├── KScreenLockerConfig.cmake.in ├── LICENSES ├── BSD-3-Clause.txt ├── CC0-1.0.txt ├── GPL-2.0-only.txt ├── GPL-2.0-or-later.txt ├── GPL-3.0-only.txt ├── LGPL-2.1-only.txt ├── LGPL-3.0-only.txt ├── LicenseRef-KDE-Accepted-GPL.txt └── LicenseRef-KDE-Accepted-LGPL.txt ├── Messages.sh ├── README.pam ├── ScreenSaverDBusInterfaceConfig.cmake.in ├── abstractlocker.cpp ├── abstractlocker.h ├── autotests ├── CMakeLists.txt ├── data │ ├── test_db │ └── test_service.in ├── fakelogind.cpp ├── fakelogind.h ├── keyboardgrabber.cpp ├── ksldtest.cpp ├── logindtest.cpp ├── pamtest.cpp ├── pointergrabber.cpp └── x11lockertest.cpp ├── ck-unlock-session.cmake ├── cmake ├── FindConsoleKit.cmake ├── FindPAM.cmake └── Findloginctl.cmake ├── config-kscreenlocker.h.cmake ├── config-unix.h.cmake ├── dbus ├── kf6_org.kde.Solid.PowerManagement.PolicyAgent.xml ├── org.freedesktop.ScreenSaver.xml └── org.kde.screensaver.xml ├── globalaccel.cpp ├── globalaccel.h ├── greeter ├── CMakeLists.txt ├── Messages.sh ├── autotests │ ├── CMakeLists.txt │ └── killtest.cpp ├── fallbacktheme.qrc ├── fallbacktheme │ ├── Greeter.qml │ ├── LockScreen.qml │ ├── PasswordSync.qml │ └── qmldir ├── greeterapp.cpp ├── greeterapp.h ├── main.cpp ├── noaccessnetworkaccessmanagerfactory.cpp ├── noaccessnetworkaccessmanagerfactory.h ├── pamauthenticator.cpp ├── pamauthenticator.h ├── pamauthenticators.cpp ├── pamauthenticators.h ├── powermanagement.cpp ├── powermanagement.h └── themes │ └── org.kde.passworddialog │ └── metadata.desktop ├── interface.cpp ├── interface.h ├── kcm ├── CMakeLists.txt ├── Messages.sh ├── kcm.cpp ├── kcm.h ├── kcm_screenlocker.json ├── kscreenlockerdata.cpp ├── kscreenlockerdata.h ├── resources.qrc └── ui │ ├── Appearance.qml │ ├── ComboBoxWithCustomValue.qml │ ├── DurationPromptDialog.qml │ ├── ShellConfig.qml │ ├── WallpaperConfig.qml │ └── main.qml ├── kscreenlocker.notifyrc ├── ksldapp.cpp ├── ksldapp.h ├── logind.cpp ├── logind.h ├── logo.png ├── po ├── ar │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── ast │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── az │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── bg │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── bs │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── ca │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── ca@valencia │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── cs │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── da │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── de │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── el │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── en_GB │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── eo │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── es │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── et │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── eu │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── fi │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── fr │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── ga │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── gl │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── he │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── hi │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── hu │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── ia │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── id │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── is │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── it │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── ja │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── ka │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── kk │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── ko │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── lt │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── lv │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── ml │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── mr │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── nb │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── nds │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── nl │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── nn │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── pa │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── pl │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── pt │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── pt_BR │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── ro │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── ru │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── sa │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── sk │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── sl │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── sr │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── sr@ijekavian │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── sr@ijekavianlatin │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── sr@latin │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── sv │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── ta │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── tg │ ├── kcm_screenlocker.po │ └── kscreenlocker.po ├── tr │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── ug │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── uk │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── wa │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── zh_CN │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po └── zh_TW │ ├── kcm_screenlocker.po │ ├── kscreenlocker.po │ └── kscreenlocker_greet.po ├── powermanagement_inhibition.cpp ├── powermanagement_inhibition.h ├── protocols └── ksld.xml ├── settings ├── CMakeLists.txt ├── appearancesettings.cpp ├── appearancesettings.h ├── kscreenlockersettings.kcfg ├── kscreensaversettings.cpp ├── kscreensaversettings.h ├── kscreensaversettingsbase.kcfgc ├── shell_integration.cpp ├── shell_integration.h ├── wallpaper_integration.cpp └── wallpaper_integration.h ├── tests ├── CMakeLists.txt ├── README.md ├── kcheckpass_test.cpp ├── kcheckpass_test.qml ├── kscreenlocker_main.cpp ├── powermanagement.qml └── powermanagementtest.cpp ├── waylandlocker.cpp ├── waylandlocker.h ├── waylandserver.cpp ├── waylandserver.h ├── x11info.h ├── x11locker.cpp └── x11locker.h /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | # clang-format 2 | e3ee737b6ecba5e16cb6fe90abf4924580d9b67c 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .clang-format 2 | /compile_commands.json 3 | .clangd 4 | .idea 5 | /cmake-build* 6 | .cache 7 | CMakeLists.txt.user 8 | /build* 9 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: None 2 | # SPDX-License-Identifier: CC0-1.0 3 | 4 | include: 5 | - project: sysadmin/ci-utilities 6 | file: 7 | - /gitlab-templates/linux-qt6.yml 8 | - /gitlab-templates/linux-qt6-next.yml 9 | - /gitlab-templates/freebsd-qt6.yml 10 | - /gitlab-templates/xml-lint.yml 11 | - /gitlab-templates/yaml-lint.yml 12 | - /gitlab-templates/qml-lint.yml 13 | -------------------------------------------------------------------------------- /.kde-ci.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: None 2 | # SPDX-License-Identifier: CC0-1.0 3 | 4 | Dependencies: 5 | - 'on': ['@all'] 6 | 'require': 7 | 'frameworks/extra-cmake-modules': '@latest-kf6' 8 | 'frameworks/kauth': '@latest-kf6' 9 | 'frameworks/kcmutils': '@latest-kf6' 10 | 'frameworks/kcodecs': '@latest-kf6' 11 | 'frameworks/kconfig': '@latest-kf6' 12 | 'frameworks/kconfigwidgets': '@latest-kf6' 13 | 'frameworks/kcoreaddons': '@latest-kf6' 14 | 'frameworks/kcrash': '@latest-kf6' 15 | 'frameworks/kglobalaccel': '@latest-kf6' 16 | 'frameworks/ki18n': '@latest-kf6' 17 | 'frameworks/kidletime': '@latest-kf6' 18 | 'frameworks/knotifications': '@latest-kf6' 19 | 'frameworks/kservice': '@latest-kf6' 20 | 'frameworks/kwidgetsaddons': '@latest-kf6' 21 | 'frameworks/kwindowsystem': '@latest-kf6' 22 | 'frameworks/kxmlgui': '@latest-kf6' 23 | 'frameworks/ksvg': '@latest-kf6' 24 | 'plasma/libplasma': '@same' 25 | 'plasma/layer-shell-qt': '@same' 26 | 'plasma/libkscreen': '@same' 27 | 'third-party/wayland': '@latest' 28 | 29 | RuntimeDependencies: 30 | - 'on': ['@all'] 31 | 'require': 32 | 'frameworks/kdeclarative': '@latest-kf6' 33 | 'plasma/plasma-workspace': '@latest-kf6' 34 | 35 | Options: 36 | require-passing-tests-on: ['@all'] 37 | run-gcovr: true 38 | -------------------------------------------------------------------------------- /DESIGN: -------------------------------------------------------------------------------- 1 | 2 | The screenlocker is statically built into ksmserver, it gets instantiated by the main class KSldApp. 3 | It provides 3 main things: 4 | * Shows a fullscreen window (LockWindow class), that spawns into all screens, eats the input events and is black to hide everything. 5 | * Provides the usual org.freedesktop.ScreenSaver interface 6 | * starts the process that will actually show the unlock screen 7 | 8 | Security considerations. 9 | * greeter windows are marked with the _KDE_SCREEN_LOCKER atom, no windows of other processes can go over them 10 | 11 | * the screen locker is managed by ksmserver: in case of crash of a greeter or an X screen saver, the global lock window that spawns between all monitors will still be there. In case of crash of ksmserver, being the session manager, the whole session will be brought down. 12 | 13 | KSldApp may launch one of two possible unlock screen binaries, decided by the PlasmaEnable bool key in kscreensaverrc: 14 | 15 | 1) Simple 16 | The one in the greeter subdirectory, built in the kscreenlocker_greet binary. 17 | It uses a series of QML files organized in a Plasma Package to display the actual unlocker ui, one for each screen in case of multimonitor. 18 | This greeter can optionally support legacy X screensavers, for doing so creates another fullscreen window per screen on top of the greeter one, and xembends a screensaver window. 19 | The X screensaver goes away after mouse move and gets back after a minute (or user pressing esc) 20 | 21 | 2) Plasma based 22 | The source lives in kde-workspace/plasma/screensaver/shell/ and the binary is plasma-overlay. 23 | It instances a Plasma scene, a View and a Containment for each screen in case of multimonitor. 24 | Uses the same QML package to display the unlocker as kscreenlocker_greet. 25 | Does not support X screensavers. -------------------------------------------------------------------------------- /KScreenLockerConfig.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | 3 | # consume PACKAGE_PREFIX_DIR (which will be implicitly generated here) before 4 | # the first find_dependency call, as it might change due to that 5 | set(KSCREENLOCKER_DBUS_INTERFACES_DIR "@PACKAGE_KDE_INSTALL_DBUSINTERFACEDIR@") 6 | 7 | include(CMakeFindDependencyMacro) 8 | find_dependency(Qt6Core @QT_MIN_VERSION@) 9 | 10 | include("${CMAKE_CURRENT_LIST_DIR}/KScreenLockerTargets.cmake") 11 | -------------------------------------------------------------------------------- /LICENSES/BSD-3-Clause.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) . All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without modification, 4 | are permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, 7 | this list of conditions and the following disclaimer. 8 | 9 | 2. Redistributions in binary form must reproduce the above copyright notice, 10 | this list of conditions and the following disclaimer in the documentation 11 | and/or other materials provided with the distribution. 12 | 13 | 3. Neither the name of the copyright holder nor the names of its contributors 14 | may be used to endorse or promote products derived from this software without 15 | specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 23 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 24 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 26 | USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | -------------------------------------------------------------------------------- /LICENSES/LicenseRef-KDE-Accepted-GPL.txt: -------------------------------------------------------------------------------- 1 | This library is free software; you can redistribute it and/or 2 | modify it under the terms of the GNU General Public License as 3 | published by the Free Software Foundation; either version 3 of 4 | the license or (at your option) at any later version that is 5 | accepted by the membership of KDE e.V. (or its successor 6 | approved by the membership of KDE e.V.), which shall act as a 7 | proxy as defined in Section 14 of version 3 of the license. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | -------------------------------------------------------------------------------- /LICENSES/LicenseRef-KDE-Accepted-LGPL.txt: -------------------------------------------------------------------------------- 1 | This library is free software; you can redistribute it and/or 2 | modify it under the terms of the GNU Lesser General Public 3 | License as published by the Free Software Foundation; either 4 | version 3 of the license or (at your option) any later version 5 | that is accepted by the membership of KDE e.V. (or its successor 6 | approved by the membership of KDE e.V.), which shall act as a 7 | proxy as defined in Section 6 of version 3 of the license. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | -------------------------------------------------------------------------------- /Messages.sh: -------------------------------------------------------------------------------- 1 | #!bin/sh 2 | $EXTRACTRC kcfg/*.kcfg >> rc.cpp 3 | # do not include subdirectory as it has an own Messages.sh 4 | $XGETTEXT *.h *.cpp -o $podir/kscreenlocker.pot 5 | -------------------------------------------------------------------------------- /README.pam: -------------------------------------------------------------------------------- 1 | KScreenLocker and PAM 2 | --------------------- 3 | 4 | KScreenLocker requires the PAM ("Pluggable Authentication Modules") system 5 | for password checking (for unlocking the display). 6 | 7 | PAM is a flexible application-transparent configurable user-authentication 8 | system found on FreeBSD, Solaris, and Linux (and maybe other unixes). 9 | 10 | Information about PAM may be found on its homepage 11 | http://www.kernel.org/pub/linux/libs/pam/ 12 | (Despite the location, this information is NOT Linux-specific.) 13 | 14 | 15 | Known Solaris Issues: 16 | -------------------- 17 | 18 | For compiling PAM support on Solaris, PAM_MESSAGE_CONST must NOT 19 | be defined. This should now be handled automatically by the 20 | configure script. 21 | 22 | 23 | Using PAM 24 | --------- 25 | 26 | Plasma by default uses the PAM service "kde". You may override it for 27 | KScreenLocker by using -DKSCREENLOCKER_PAM_SERVICE=. 28 | 29 | A valid PAM service definition must be specified, either by installing 30 | files into /etc/pam.d/ or by adding service configuration to /etc/pam.conf. 31 | 32 | Either a valid "kde" service must be installed (or copied from the "login" 33 | service), or an alternative service must be specified using one of the 34 | definitions above. If the service is misconfigured, you will NOT be able 35 | to unlock a locked screen! 36 | 37 | If there is ever any doubt about which PAM service a program was 38 | compiled with, it can be determined by examining the PAM-generated 39 | entries in the system log associated with KScreenLocker authentication 40 | failures. 41 | 42 | PAM configuration files have four types of entries for each service, 43 | however KScreenLocker only uses the "auth" entries. Other programs 44 | using PAM may use other entries. 45 | 46 | There may be more than one entry of each type. Check existing PAM 47 | configuration files and PAM documentation on your system for guidance as 48 | to what entries to make. If you call a PAM service that is not 49 | configured, the default action of PAM is likely to be denial of service. 50 | 51 | Note: Screen lockers typically only authenticate a user to allow her to 52 | continue working. They may also renew tokens etc., where supported. 53 | See the Linux PAM Administrators guide, which is part of the PAM 54 | distribution, for more details. 55 | 56 | 57 | -------------------------------------------------------------------------------- /ScreenSaverDBusInterfaceConfig.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | 3 | set(SCREENSAVER_DBUS_INTERFACE "@PACKAGE_KDE_INSTALL_DBUSINTERFACEDIR@/kf6_org.freedesktop.ScreenSaver.xml") 4 | -------------------------------------------------------------------------------- /abstractlocker.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 1999 Martin R. Jones 3 | SPDX-FileCopyrightText: 2002 Luboš Luňák 4 | SPDX-FileCopyrightText: 2003 Oswald Buddenhagen 5 | SPDX-FileCopyrightText: 2008 Chani Armitage 6 | SPDX-FileCopyrightText: 2011 Martin Gräßlin 7 | SPDX-FileCopyrightText: 2015 Bhushan Shah 8 | 9 | SPDX-License-Identifier: GPL-2.0-or-later 10 | */ 11 | 12 | #pragma once 13 | 14 | #include 15 | #include 16 | 17 | class GlobalAccel; 18 | 19 | namespace ScreenLocker 20 | { 21 | class AbstractLocker; 22 | 23 | class BackgroundWindow : public QRasterWindow 24 | { 25 | Q_OBJECT 26 | public: 27 | explicit BackgroundWindow(AbstractLocker *lock); 28 | ~BackgroundWindow() override; 29 | 30 | void emergencyShow(); 31 | 32 | protected: 33 | void paintEvent(QPaintEvent *) override; 34 | 35 | private: 36 | AbstractLocker *m_lock; 37 | bool m_greeterFailure = false; 38 | }; 39 | 40 | class AbstractLocker : public QObject 41 | { 42 | Q_OBJECT 43 | public: 44 | explicit AbstractLocker(QObject *parent); 45 | ~AbstractLocker() override; 46 | 47 | virtual void showLockWindow() = 0; 48 | virtual void hideLockWindow() = 0; 49 | 50 | virtual void addAllowedWindow(quint32 window); 51 | 52 | void setGlobalAccel(GlobalAccel *ga) 53 | { 54 | m_globalAccel = ga; 55 | } 56 | 57 | void emergencyShow(); 58 | 59 | Q_SIGNALS: 60 | void userActivity(); 61 | void lockWindowShown(); 62 | 63 | protected: 64 | virtual void stayOnTop() = 0; 65 | 66 | GlobalAccel *globalAccel() 67 | { 68 | return m_globalAccel; 69 | } 70 | QScopedPointer m_background; 71 | 72 | private: 73 | GlobalAccel *m_globalAccel = nullptr; 74 | 75 | friend class BackgroundWindow; 76 | }; 77 | 78 | } 79 | -------------------------------------------------------------------------------- /autotests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(ECMMarkAsTest) 2 | 3 | ####################################### 4 | # LogindTest 5 | ####################################### 6 | set(logindTest_SRCS 7 | logindtest.cpp 8 | fakelogind.cpp 9 | ../logind.cpp 10 | ../kscreenlocker_logging.cpp 11 | ) 12 | 13 | add_executable(logindTest ${logindTest_SRCS}) 14 | target_link_libraries(logindTest Qt::DBus Qt::Test KF6::I18n) 15 | add_test(NAME ksmserver-logindTest COMMAND logindTest) 16 | ecm_mark_as_test(logindTest) 17 | 18 | ####################################### 19 | # PamTest 20 | ####################################### 21 | 22 | pkg_search_module(PamWrapper pam_wrapper) 23 | # We're turning it off on the CI until pam_wrapper 1.15 is available on our image (which adds sanitizer support.) 24 | # see https://invent.kde.org/plasma/kscreenlocker/-/issues/11 for more details 25 | if (PamWrapper_FOUND AND NOT "$ENV{KDECI_BUILD}" STREQUAL "TRUE") 26 | pkg_get_variable(PamWrapperModuleDir pam_wrapper "modules") 27 | configure_file(data/test_service.in ./test_service) 28 | add_executable(pamTest pamtest.cpp) 29 | target_link_libraries(pamTest Qt::Test kscreenlocker_authenticator) 30 | add_test(NAME ksmserver-pamTest COMMAND pamTest) 31 | # they made a mistake in the env name, so set both old and new 32 | set_tests_properties(ksmserver-pamTest PROPERTIES ENVIRONMENT "UID_WRAPPER_DISABLE_DEEPBIND=1;PAM_WRAPPER_DISABLE_DEEPBIND=1") 33 | ecm_mark_as_test(pamTest) 34 | set_property(TEST ksmserver-pamTest 35 | PROPERTY 36 | ENVIRONMENT "LD_PRELOAD=libpam_wrapper.so;ASAN_OPTIONS=verify_asan_link_order=0") 37 | endif() 38 | 39 | ####################################### 40 | # KSldTest 41 | ####################################### 42 | add_executable(ksldTest ksldtest.cpp) 43 | target_link_libraries(ksldTest 44 | Qt::GuiPrivate 45 | Qt::Test 46 | Qt::Widgets 47 | KF6::IdleTime 48 | KF6::WindowSystem 49 | XCB::XTEST 50 | settings 51 | KScreenLocker 52 | ) 53 | add_test(NAME ksmserver-ksldTest COMMAND ksldTest) 54 | ecm_mark_as_test(ksldTest) 55 | 56 | ####################################### 57 | # KeyboardGrabber 58 | ####################################### 59 | add_executable(keyboardGrabber keyboardgrabber.cpp) 60 | target_link_libraries(keyboardGrabber Qt::Core XCB::XCB) 61 | ecm_mark_as_test(keyboardGrabber) 62 | 63 | ####################################### 64 | # PointerGrabber 65 | ####################################### 66 | add_executable(pointerGrabber pointergrabber.cpp) 67 | target_link_libraries(pointerGrabber Qt::Core XCB::XCB) 68 | ecm_mark_as_test(pointerGrabber) 69 | 70 | ####################################### 71 | # LockWindowTest 72 | ####################################### 73 | set(x11LockerTest_SRCS 74 | x11lockertest.cpp 75 | ../x11locker.cpp 76 | ../globalaccel.cpp 77 | ../abstractlocker.cpp 78 | ../kscreenlocker_logging.cpp 79 | ) 80 | 81 | add_executable(x11LockerTest ${x11LockerTest_SRCS}) 82 | target_link_libraries(x11LockerTest 83 | KF6::GlobalAccel 84 | KF6::I18n 85 | KF6::WindowSystem 86 | Qt::Test 87 | Qt::Widgets 88 | X11::X11 89 | XCB::XCB 90 | XCB::KEYSYMS 91 | ) 92 | 93 | target_link_libraries(x11LockerTest Qt::GuiPrivate) 94 | 95 | add_test(NAME ksmserver-x11LockerTest COMMAND x11LockerTest) 96 | ecm_mark_as_test(x11LockerTest) 97 | -------------------------------------------------------------------------------- /autotests/data/test_db: -------------------------------------------------------------------------------- 1 | test_user:my_password:test_service 2 | -------------------------------------------------------------------------------- /autotests/data/test_service.in: -------------------------------------------------------------------------------- 1 | auth required @PamWrapperModuleDir@/pam_matrix.so verbose 2 | account required @PamWrapperModuleDir@/pam_matrix.so verbose 3 | password required @PamWrapperModuleDir@/pam_matrix.so verbose 4 | session required @PamWrapperModuleDir@/pam_matrix.so verbose 5 | -------------------------------------------------------------------------------- /autotests/fakelogind.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2014 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | #include "fakelogind.h" 7 | 8 | FakeLogind::FakeLogind(QObject *parent) 9 | : QObject(parent) 10 | , m_session(new FakeLogindSession(QStringLiteral("/org/freedesktop/login1/session/auto"), this)) 11 | { 12 | QDBusConnection::sessionBus().registerObject(QStringLiteral("/org/freedesktop/login1"), this, QDBusConnection::ExportScriptableContents); 13 | QDBusConnection::sessionBus().registerService(QStringLiteral("org.freedesktop.login1")); 14 | } 15 | 16 | FakeLogind::~FakeLogind() 17 | { 18 | QDBusConnection::sessionBus().unregisterObject(QStringLiteral("/org/freedesktop/login1")); 19 | QDBusConnection::sessionBus().unregisterService(QStringLiteral("org.freedesktop.login1")); 20 | } 21 | 22 | QDBusObjectPath FakeLogind::GetSession(const QString &session) 23 | { 24 | Q_UNUSED(session) 25 | return QDBusObjectPath(m_session->path()); 26 | } 27 | 28 | void FakeLogind::lock() 29 | { 30 | m_session->lock(); 31 | } 32 | 33 | void FakeLogind::unlock() 34 | { 35 | m_session->unlock(); 36 | } 37 | 38 | FakeLogindSession::FakeLogindSession(const QString &path, QObject *parent) 39 | : QObject(parent) 40 | , m_path(path) 41 | { 42 | QDBusConnection::sessionBus().registerObject(m_path, this, QDBusConnection::ExportScriptableContents); 43 | } 44 | 45 | FakeLogindSession::~FakeLogindSession() 46 | { 47 | QDBusConnection::sessionBus().unregisterObject(m_path); 48 | } 49 | 50 | void FakeLogindSession::lock() 51 | { 52 | Q_EMIT Lock(); 53 | } 54 | 55 | void FakeLogindSession::unlock() 56 | { 57 | Q_EMIT Unlock(); 58 | } 59 | 60 | #include "moc_fakelogind.cpp" 61 | -------------------------------------------------------------------------------- /autotests/fakelogind.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2014 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | #pragma once 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | class FakeLogindSession; 13 | 14 | class FakeLogind : public QObject 15 | { 16 | Q_OBJECT 17 | Q_CLASSINFO("D-Bus Interface", "org.freedesktop.login1.Manager") 18 | public: 19 | explicit FakeLogind(QObject *parent = nullptr); 20 | ~FakeLogind() override; 21 | 22 | FakeLogindSession *session() const 23 | { 24 | return m_session; 25 | } 26 | 27 | public Q_SLOTS: 28 | Q_SCRIPTABLE QDBusObjectPath GetSession(const QString &session); 29 | Q_SCRIPTABLE void lock(); 30 | Q_SCRIPTABLE void unlock(); 31 | 32 | private: 33 | FakeLogindSession *m_session; 34 | }; 35 | 36 | class FakeLogindSession : public QObject 37 | { 38 | Q_OBJECT 39 | Q_CLASSINFO("D-Bus Interface", "org.freedesktop.login1.Session") 40 | public: 41 | explicit FakeLogindSession(const QString &path, QObject *parent = nullptr); 42 | ~FakeLogindSession() override; 43 | 44 | const QString &path() 45 | { 46 | return m_path; 47 | } 48 | 49 | void lock(); 50 | void unlock(); 51 | 52 | Q_SIGNALS: 53 | Q_SCRIPTABLE void Lock(); 54 | Q_SCRIPTABLE void Unlock(); 55 | 56 | private: 57 | QString m_path; 58 | }; 59 | -------------------------------------------------------------------------------- /autotests/keyboardgrabber.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2014 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | #include 7 | #include 8 | 9 | xcb_screen_t *defaultScreen(xcb_connection_t *c, int screen) 10 | { 11 | for (auto it = xcb_setup_roots_iterator(xcb_get_setup(c)); it.rem; --screen, xcb_screen_next(&it)) { 12 | if (screen == 0) { 13 | return it.data; 14 | } 15 | } 16 | 17 | return nullptr; 18 | } 19 | 20 | xcb_window_t rootWindow(xcb_connection_t *c, int screen) 21 | { 22 | xcb_screen_t *s = defaultScreen(c, screen); 23 | if (!s) { 24 | return XCB_WINDOW_NONE; 25 | } 26 | return s->root; 27 | } 28 | 29 | /** 30 | * This app grabs the keyboard from X. 31 | * It is used from ksldtest to verify we report if grabbing failed when the keyboard has been grabbed by another 32 | * X Client. It needs to be another application, otherwise the grab cannot fail. 33 | **/ 34 | int main(int argc, char **argv) 35 | { 36 | QCoreApplication app(argc, argv); 37 | 38 | // connect to xcb 39 | int screen = 0; 40 | xcb_connection_t *c = xcb_connect(nullptr, &screen); 41 | Q_ASSERT(c); 42 | 43 | xcb_grab_keyboard(c, 1, rootWindow(c, screen), XCB_CURRENT_TIME, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC); 44 | xcb_flush(c); 45 | 46 | const int exitCode = app.exec(); 47 | 48 | xcb_ungrab_keyboard(c, XCB_CURRENT_TIME); 49 | xcb_flush(c); 50 | xcb_disconnect(c); 51 | 52 | return exitCode; 53 | } 54 | -------------------------------------------------------------------------------- /autotests/logindtest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2014 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | #include "../logind.h" 7 | #include "fakelogind.h" 8 | // Qt 9 | #include 10 | #include 11 | #include 12 | 13 | class LogindTest : public QObject 14 | { 15 | Q_OBJECT 16 | private Q_SLOTS: 17 | void testLockUnlock(); 18 | void testLogindPresent(); 19 | void testRegisterUnregister(); 20 | }; 21 | 22 | void LogindTest::testLockUnlock() 23 | { 24 | QScopedPointer logindIntegration(new LogindIntegration(QDBusConnection::sessionBus(), this)); 25 | QSignalSpy lockSpy(logindIntegration.data(), SIGNAL(requestLock())); 26 | QSignalSpy unlockSpy(logindIntegration.data(), SIGNAL(requestUnlock())); 27 | QSignalSpy connectedSpy(logindIntegration.data(), SIGNAL(connectedChanged())); 28 | 29 | FakeLogind fakeLogind; 30 | 31 | // need to wait till we got the pending reply 32 | QVERIFY(connectedSpy.wait()); 33 | QVERIFY(logindIntegration->isConnected()); 34 | 35 | fakeLogind.lock(); 36 | QVERIFY(lockSpy.wait()); 37 | fakeLogind.lock(); 38 | 39 | QVERIFY(lockSpy.wait()); 40 | QCOMPARE(lockSpy.count(), 2); 41 | 42 | fakeLogind.unlock(); 43 | QVERIFY(unlockSpy.wait()); 44 | QCOMPARE(unlockSpy.count(), 1); 45 | } 46 | 47 | void LogindTest::testLogindPresent() 48 | { 49 | QTest::qWait(100); 50 | FakeLogind fakeLogind; 51 | QScopedPointer logindIntegration(new LogindIntegration(QDBusConnection::sessionBus(), this)); 52 | 53 | QSignalSpy connectedSpy(logindIntegration.data(), SIGNAL(connectedChanged())); 54 | QVERIFY(connectedSpy.wait()); 55 | QVERIFY(logindIntegration->isConnected()); 56 | 57 | QSignalSpy lockSpy(logindIntegration.data(), SIGNAL(requestLock())); 58 | fakeLogind.lock(); 59 | QVERIFY(lockSpy.wait()); 60 | QCOMPARE(lockSpy.count(), 1); 61 | } 62 | 63 | void LogindTest::testRegisterUnregister() 64 | { 65 | QTest::qWait(100); 66 | QScopedPointer fakeLogind(new FakeLogind(this)); 67 | QScopedPointer logindIntegration(new LogindIntegration(QDBusConnection::sessionBus(), this)); 68 | 69 | // should get connected 70 | QSignalSpy connectedSpy(logindIntegration.data(), SIGNAL(connectedChanged())); 71 | QVERIFY(connectedSpy.wait()); 72 | QVERIFY(logindIntegration->isConnected()); 73 | connectedSpy.clear(); 74 | 75 | fakeLogind.reset(); 76 | // should no longer be connected 77 | QVERIFY(connectedSpy.wait()); 78 | QVERIFY(!logindIntegration->isConnected()); 79 | connectedSpy.clear(); 80 | 81 | fakeLogind.reset(new FakeLogind(this)); 82 | // should be connected again 83 | QVERIFY(connectedSpy.wait()); 84 | QVERIFY(logindIntegration->isConnected()); 85 | } 86 | 87 | QTEST_MAIN(LogindTest) 88 | #include "logindtest.moc" 89 | -------------------------------------------------------------------------------- /autotests/pamtest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2022 David Edmundson 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | #include "../greeter/pamauthenticator.h" 11 | 12 | // This test runs under the expectation that 13 | // we are run with LD_PRELOAD=libpam_wrapper.so pamTest 14 | 15 | class PamTest : public QObject 16 | { 17 | Q_OBJECT 18 | public: 19 | PamTest(); 20 | private Q_SLOTS: 21 | void testLogin(); 22 | }; 23 | 24 | PamTest::PamTest() 25 | { 26 | if (!qgetenv("LD_PRELOAD").contains("libpam_wrapper.so")) { 27 | qFatal("This test must be run with pam_wrapper. See ctest"); 28 | } 29 | 30 | qputenv("PAM_WRAPPER", "1"); 31 | qputenv("PAM_WRAPPER_DEBUGLEVEL", "2"); // DEBUG level 32 | qputenv("PAM_WRAPPER_SERVICE_DIR", QFINDTESTDATA("data").toUtf8()); 33 | qputenv("PAM_MATRIX_PASSWD", QFINDTESTDATA("data/test_db").toUtf8()); 34 | } 35 | 36 | void PamTest::testLogin() 37 | { 38 | PamAuthenticator auth(QStringLiteral("test_service"), QStringLiteral("test_user")); 39 | QSignalSpy promptSpy(&auth, &PamAuthenticator::prompt); 40 | QSignalSpy promptForSecretSpy(&auth, &PamAuthenticator::promptForSecret); 41 | QSignalSpy succeededSpy(&auth, &PamAuthenticator::succeeded); 42 | QSignalSpy failedSpy(&auth, &PamAuthenticator::failed); 43 | QSignalSpy busyChangedSpy(&auth, &PamAuthenticator::busyChanged); 44 | 45 | // invalid password 46 | auth.tryUnlock(); 47 | 48 | QVERIFY(promptForSecretSpy.wait()); 49 | auth.respond("not_my_password"); 50 | QVERIFY(failedSpy.wait()); 51 | 52 | QVERIFY(promptSpy.count() == 0); 53 | QVERIFY(succeededSpy.count() == 0); 54 | QVERIFY(busyChangedSpy.count() == 2); // changed to busy and back again. 55 | 56 | // try again, with the right password 57 | auth.tryUnlock(); 58 | QVERIFY(promptForSecretSpy.wait()); 59 | auth.respond("my_password"); 60 | QVERIFY(succeededSpy.wait()); 61 | 62 | QVERIFY(busyChangedSpy.count() == 4); 63 | } 64 | 65 | QTEST_MAIN(PamTest) 66 | #include "pamtest.moc" 67 | -------------------------------------------------------------------------------- /autotests/pointergrabber.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2014 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | #include 7 | #include 8 | 9 | xcb_screen_t *defaultScreen(xcb_connection_t *c, int screen) 10 | { 11 | for (auto it = xcb_setup_roots_iterator(xcb_get_setup(c)); it.rem; --screen, xcb_screen_next(&it)) { 12 | if (screen == 0) { 13 | return it.data; 14 | } 15 | } 16 | 17 | return nullptr; 18 | } 19 | 20 | xcb_window_t rootWindow(xcb_connection_t *c, int screen) 21 | { 22 | xcb_screen_t *s = defaultScreen(c, screen); 23 | if (!s) { 24 | return XCB_WINDOW_NONE; 25 | } 26 | return s->root; 27 | } 28 | 29 | /** 30 | * This app grabs the pointer from X. 31 | * It is used from ksldtest to verify we report if grabbing failed when the pointer has been grabbed by another 32 | * X Client. It needs to be another application, otherwise the grab cannot fail. 33 | **/ 34 | int main(int argc, char **argv) 35 | { 36 | QCoreApplication app(argc, argv); 37 | 38 | // connect to xcb 39 | int screen = 0; 40 | xcb_connection_t *c = xcb_connect(nullptr, &screen); 41 | Q_ASSERT(c); 42 | 43 | const uint8_t events = XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE | XCB_EVENT_MASK_POINTER_MOTION; 44 | xcb_grab_pointer(c, 1, rootWindow(c, screen), events, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC, XCB_WINDOW_NONE, XCB_CURSOR_NONE, XCB_CURRENT_TIME); 45 | xcb_flush(c); 46 | 47 | const int exitCode = app.exec(); 48 | 49 | xcb_ungrab_pointer(c, XCB_CURRENT_TIME); 50 | xcb_flush(c); 51 | xcb_disconnect(c); 52 | 53 | return exitCode; 54 | } 55 | -------------------------------------------------------------------------------- /ck-unlock-session.cmake: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # This helper script unlocks the Plasma5 screenlocker of the session given by argument, 3 | # should the locker ever crash. 4 | # 5 | # Requirements: ConsoleKit[2] & qdbus 6 | # 7 | 8 | # list running sesions 9 | list_sessions () 10 | { 11 | ${cklistsessions_EXECUTABLE} | grep -oE '^Session[^:]*' 12 | } 13 | 14 | # unlock_session 15 | unlock_session () 16 | { 17 | ${qdbus_EXECUTABLE} --system org.freedesktop.ConsoleKit "/org/freedesktop/ConsoleKit/$1" org.freedesktop.ConsoleKit.Session.Unlock 18 | } 19 | 20 | if [ $# -ne 1 ] ; then 21 | list_sessions 22 | else 23 | unlock_session $1 24 | fi 25 | 26 | -------------------------------------------------------------------------------- /cmake/FindConsoleKit.cmake: -------------------------------------------------------------------------------- 1 | #============================================================================= 2 | # SPDX-FileCopyrightText: 2017 Tobias C. Berner 3 | # 4 | # SPDX-License-Identifier: BSD-3-Clause 5 | #============================================================================= 6 | find_program(cklistsessions_EXECUTABLE NAMES ck-list-sessions) 7 | find_program(qdbus_EXECUTABLE NAMES qdbus) 8 | find_package_handle_standard_args(ConsoleKit 9 | FOUND_VAR 10 | ConsoleKit_FOUND 11 | REQUIRED_VARS 12 | cklistsessions_EXECUTABLE 13 | qdbus_EXECUTABLE 14 | ) 15 | mark_as_advanced(ConsoleKit_FOUND cklistsessions_EXECUTABLE qdbus_EXECUTABLE) 16 | -------------------------------------------------------------------------------- /cmake/FindPAM.cmake: -------------------------------------------------------------------------------- 1 | # - Try to find the PAM libraries 2 | # Once done this will define 3 | # 4 | # PAM_FOUND - system has pam 5 | # PAM_INCLUDE_DIR - the pam include directory 6 | # PAM_LIBRARIES - libpam library 7 | 8 | if (PAM_INCLUDE_DIR AND PAM_LIBRARY) 9 | # Already in cache, be silent 10 | set(PAM_FIND_QUIETLY TRUE) 11 | endif (PAM_INCLUDE_DIR AND PAM_LIBRARY) 12 | 13 | find_path(PAM_INCLUDE_DIR NAMES security/pam_appl.h pam/pam_appl.h) 14 | find_library(PAM_LIBRARY pam) 15 | find_library(DL_LIBRARY dl) 16 | 17 | if (PAM_INCLUDE_DIR AND PAM_LIBRARY) 18 | set(PAM_FOUND TRUE) 19 | if (DL_LIBRARY) 20 | set(PAM_LIBRARIES ${PAM_LIBRARY} ${DL_LIBRARY}) 21 | else (DL_LIBRARY) 22 | set(PAM_LIBRARIES ${PAM_LIBRARY}) 23 | endif (DL_LIBRARY) 24 | 25 | if (EXISTS ${PAM_INCLUDE_DIR}/pam/pam_appl.h) 26 | # darwin claims to be something special 27 | set(HAVE_PAM_PAM_APPL_H 1) 28 | endif (EXISTS ${PAM_INCLUDE_DIR}/pam/pam_appl.h) 29 | 30 | if (NOT DEFINED PAM_MESSAGE_CONST) 31 | include(CheckCXXSourceCompiles) 32 | # XXX does this work with plain c? 33 | check_cxx_source_compiles(" 34 | #if ${HAVE_PAM_PAM_APPL_H}+0 35 | # include 36 | #else 37 | # include 38 | #endif 39 | 40 | static int PAM_conv( 41 | int num_msg, 42 | const struct pam_message **msg, /* this is the culprit */ 43 | struct pam_response **resp, 44 | void *ctx) 45 | { 46 | return 0; 47 | } 48 | 49 | int main(void) 50 | { 51 | struct pam_conv PAM_conversation = { 52 | &PAM_conv, /* this bombs out if the above does not match */ 53 | 0 54 | }; 55 | 56 | return 0; 57 | } 58 | " PAM_MESSAGE_CONST) 59 | endif (NOT DEFINED PAM_MESSAGE_CONST) 60 | set(PAM_MESSAGE_CONST ${PAM_MESSAGE_CONST} CACHE BOOL "PAM expects a conversation function with const pam_message") 61 | 62 | endif (PAM_INCLUDE_DIR AND PAM_LIBRARY) 63 | 64 | if (PAM_FOUND) 65 | if (NOT PAM_FIND_QUIETLY) 66 | message(STATUS "Found PAM: ${PAM_LIBRARIES}") 67 | endif (NOT PAM_FIND_QUIETLY) 68 | else (PAM_FOUND) 69 | if (PAM_FIND_REQUIRED) 70 | message(FATAL_ERROR "PAM was not found") 71 | endif(PAM_FIND_REQUIRED) 72 | endif (PAM_FOUND) 73 | 74 | mark_as_advanced(PAM_INCLUDE_DIR PAM_LIBRARY DL_LIBRARY PAM_MESSAGE_CONST) 75 | -------------------------------------------------------------------------------- /cmake/Findloginctl.cmake: -------------------------------------------------------------------------------- 1 | #============================================================================= 2 | # SPDX-FileCopyrightText: 2016 Martin Gräßlin 3 | # 4 | # SPDX-License-Identifier: BSD-3-Clause 5 | #============================================================================= 6 | find_program(loginctl_EXECUTABLE NAMES loginctl) 7 | find_package_handle_standard_args(loginctl 8 | FOUND_VAR 9 | loginctl_FOUND 10 | REQUIRED_VARS 11 | loginctl_EXECUTABLE 12 | ) 13 | mark_as_advanced(loginctl_FOUND loginctl_EXECUTABLE) 14 | -------------------------------------------------------------------------------- /config-kscreenlocker.h.cmake: -------------------------------------------------------------------------------- 1 | #cmakedefine01 HAVE_SYS_PRCTL_H 2 | #cmakedefine01 HAVE_PR_SET_DUMPABLE 3 | #cmakedefine01 HAVE_SYS_PROCCTL_H 4 | #cmakedefine01 HAVE_PROC_TRACE_CTL 5 | -------------------------------------------------------------------------------- /config-unix.h.cmake: -------------------------------------------------------------------------------- 1 | /* The PAM service to be used by kscreensaver */ 2 | #cmakedefine KSCREENSAVER_PAM_SERVICE ${KSCREENSAVER_PAM_SERVICE} 3 | 4 | #cmakedefine01 X11_Xinput_FOUND 5 | -------------------------------------------------------------------------------- /dbus/kf6_org.kde.Solid.PowerManagement.PolicyAgent.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /dbus/org.freedesktop.ScreenSaver.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /dbus/org.kde.screensaver.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /greeter/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | remove_definitions(-DTRANSLATION_DOMAIN=\"kscreenlocker\") 2 | add_definitions(-DTRANSLATION_DOMAIN=\"kscreenlocker_greet\") 3 | 4 | include_directories( 5 | ${CMAKE_CURRENT_BINARY_DIR} 6 | ${CMAKE_CURRENT_BINARY_DIR}/../ 7 | ) 8 | 9 | set(kscreenlocker_authenticator_SRCS 10 | pamauthenticators.cpp 11 | pamauthenticators.h 12 | pamauthenticator.cpp 13 | pamauthenticator.h 14 | ) 15 | 16 | ecm_qt_declare_logging_category(kscreenlocker_authenticator_SRCS 17 | HEADER kscreenlocker_greet_logging.h 18 | IDENTIFIER KSCREENLOCKER_GREET 19 | CATEGORY_NAME kscreenlocker_greet 20 | DEFAULT_SEVERITY Info 21 | DESCRIPTION "KScreenLocker (greeter)" 22 | EXPORT KSCREENLOCKER 23 | ) 24 | 25 | set(kscreenlocker_greet_SRCS 26 | greeterapp.cpp 27 | main.cpp 28 | powermanagement.cpp 29 | noaccessnetworkaccessmanagerfactory.cpp 30 | greeterapp.h 31 | powermanagement.h 32 | noaccessnetworkaccessmanagerfactory.h 33 | ) 34 | 35 | add_library(kscreenlocker_authenticator OBJECT ${kscreenlocker_authenticator_SRCS}) 36 | target_link_libraries(kscreenlocker_authenticator 37 | Qt::Core 38 | ${PAM_LIBRARIES} 39 | ) 40 | 41 | qt_add_resources(kscreenlocker_greet_SRCS fallbacktheme.qrc) 42 | 43 | ecm_add_wayland_client_protocol(kscreenlocker_greet_SRCS 44 | PROTOCOL ../protocols/ksld.xml 45 | BASENAME ksld 46 | ) 47 | 48 | add_executable(kscreenlocker_greet ${kscreenlocker_greet_SRCS}) 49 | 50 | target_link_libraries(kscreenlocker_greet 51 | settings 52 | kscreenlocker_authenticator 53 | KF6::Package 54 | KF6::Crash 55 | KF6::I18n 56 | KF6::ConfigGui 57 | KF6::KIOCore 58 | KF6::WindowSystem 59 | KF6::I18nQml 60 | Plasma::PlasmaQuick 61 | Qt::Quick 62 | Qt::Qml 63 | X11::X11 64 | Wayland::Client 65 | LayerShellQt::Interface 66 | KF6::ScreenDpms 67 | ) 68 | 69 | # KSCREENLOCKER_PAM_SERVICE, if defined, will already have been 70 | # enclosed in double quotes by the define_pam_service macro. 71 | if (NOT DEFINED KSCREENLOCKER_PAM_PASSWORD_SERVICE) 72 | set(KSCREENLOCKER_PAM_PASSWORD_SERVICE "\"kde\"") 73 | endif() 74 | 75 | if (NOT DEFINED KSCREENLOCKER_PAM_FINGERPRINT_SERVICE) 76 | set(KSCREENLOCKER_PAM_FINGERPRINT_SERVICE "\"kde-fingerprint\"") 77 | endif() 78 | 79 | if (NOT DEFINED KSCREENLOCKER_PAM_SMARTCARD_SERVICE) 80 | set(KSCREENLOCKER_PAM_SMARTCARD_SERVICE "\"kde-smartcard\"") 81 | endif() 82 | 83 | target_compile_definitions(kscreenlocker_greet PRIVATE 84 | KCHECKPASS_BIN="kcheckpass" 85 | KSCREENLOCKER_PAM_SERVICE=${KSCREENLOCKER_PAM_SERVICE} 86 | KSCREENLOCKER_PAM_FINGERPRINT_SERVICE=${KSCREENLOCKER_PAM_FINGERPRINT_SERVICE} 87 | KSCREENLOCKER_PAM_SMARTCARD_SERVICE=${KSCREENLOCKER_PAM_SMARTCARD_SERVICE} 88 | ) 89 | 90 | install(TARGETS kscreenlocker_greet DESTINATION ${KDE_INSTALL_LIBEXECDIR}) 91 | 92 | install(DIRECTORY themes/org.kde.passworddialog DESTINATION ${KDE_INSTALL_DATADIR}/ksmserver/screenlocker) 93 | 94 | if(BUILD_TESTING) 95 | add_subdirectory(autotests) 96 | endif() 97 | -------------------------------------------------------------------------------- /greeter/Messages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # SPDX-License-Identifier: BSD-2-Clause 3 | # SPDX-FileCopyrightText: 2020-2025 Harald Sitter 4 | 5 | # Ensure passing shellcheck: 6 | # Our l10n scripting isn't working with spaces anywhere and we actively rely on word splitting in our Messages.sh. 7 | # shellcheck disable=SC2046 8 | podir=${podir:?} # ensure it is defined 9 | 10 | $XGETTEXT $(find . -name \*.cpp -o -name \*.h) -o "$podir"/kscreenlocker_greet.pot 11 | # Extract JavaScripty files as what they are, otherwise for example template literals won't work correctly (by default we extract as C++). 12 | # https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals 13 | $XGETTEXT --join-existing --language=JavaScript $(find . -name \*.qml -o -name \*.js) -o "$podir"/kscreenlocker_greet.pot 14 | -------------------------------------------------------------------------------- /greeter/autotests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(ECMMarkAsTest) 2 | 3 | ####################################### 4 | # KillTest 5 | ####################################### 6 | add_executable(killTest killtest.cpp) 7 | target_compile_definitions(killTest PRIVATE KSCREENLOCKER_GREET_BIN_REL="kscreenlocker_greet") 8 | add_test(NAME kscreenlocker-killTest COMMAND killTest) 9 | 10 | # We want ASAN to step out of our way, we need to handle these kill types 11 | if (DEFINED ECM_ENABLE_SANITIZERS OR "$ENV{KDECI_BUILD}" STREQUAL "TRUE") 12 | set_tests_properties(kscreenlocker-killTest PROPERTIES ENVIRONMENT "ASAN_OPTIONS=handle_segv=0,poison_heap=0,handle_sigbus=0,handle_sigill=0,handle_sigfpe=0") 13 | endif() 14 | 15 | ecm_mark_as_test(killTest) 16 | target_link_libraries(killTest KF6::CoreAddons Qt::Test) 17 | -------------------------------------------------------------------------------- /greeter/fallbacktheme.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | fallbacktheme/LockScreen.qml 4 | fallbacktheme/Greeter.qml 5 | fallbacktheme/PasswordSync.qml 6 | fallbacktheme/qmldir 7 | 8 | 9 | -------------------------------------------------------------------------------- /greeter/fallbacktheme/LockScreen.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2011 Martin Gräßlin 3 | SPDX-FileCopyrightText: 2023 Nate Graham 4 | 5 | SPDX-License-Identifier: GPL-2.0-or-later 6 | */ 7 | 8 | import QtQuick 2.15 9 | import QtQuick.Controls as QQC2 10 | 11 | import org.kde.kirigami 2.20 as Kirigami 12 | import org.kde.kquickcontrolsaddons 2.0 13 | import org.kde.ksvg 1.0 as KSvg 14 | import org.kde.plasma.private.sessions 2.0 15 | 16 | Item { 17 | id: lockScreen 18 | 19 | property alias capsLockOn: unlockUI.capsLockOn 20 | property bool locked: false 21 | 22 | signal unlockRequested() 23 | 24 | Rectangle { 25 | width: parent.width 26 | height: parent.height 27 | color: "#1d99f3" 28 | } 29 | 30 | SessionManagement { 31 | id: sessionManagment 32 | } 33 | 34 | KSvg.FrameSvgItem { 35 | id: dialog 36 | 37 | visible: lockScreen.locked 38 | anchors.centerIn: parent 39 | width: mainStack.currentItem.implicitWidth + margins.left + margins.right 40 | height: mainStack.currentItem.implicitHeight + margins.top + margins.bottom 41 | imagePath: "widgets/background" 42 | 43 | Behavior on height { 44 | enabled: mainStack.currentItem != null 45 | NumberAnimation { 46 | duration: Kirigami.Units.longDuration 47 | } 48 | } 49 | Behavior on width { 50 | enabled: mainStack.currentItem != null 51 | NumberAnimation { 52 | duration: Kirigami.Units.longDuration 53 | } 54 | } 55 | 56 | QQC2.StackView { 57 | id: mainStack 58 | 59 | clip: true 60 | anchors { 61 | fill: parent 62 | leftMargin: dialog.margins.left 63 | topMargin: dialog.margins.top 64 | rightMargin: dialog.margins.right 65 | bottomMargin: dialog.margins.bottom 66 | } 67 | initialItem: unlockUI 68 | } 69 | } 70 | 71 | Greeter { 72 | id: unlockUI 73 | 74 | switchUserEnabled: sessionManagment.canSwitchUser 75 | 76 | visible: opacity > 0 77 | opacity: mainStack.currentItem == unlockUI 78 | Behavior on opacity { 79 | NumberAnimation { 80 | duration: Kirigami.Units.longDuration 81 | } 82 | } 83 | 84 | Connections { 85 | function onAccepted() { 86 | lockScreen.unlockRequested(); 87 | } 88 | function onSwitchUserClicked() { 89 | sessionManagment.switchUser(); 90 | } 91 | } 92 | } 93 | 94 | function returnToLogin() { 95 | mainStack.pop(); 96 | unlockUI.resetFocus(); 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /greeter/fallbacktheme/PasswordSync.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2025 Yifan Zhu 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | 7 | pragma Singleton 8 | 9 | import QtQuick 2.15 10 | 11 | QtObject { 12 | property string password 13 | } 14 | -------------------------------------------------------------------------------- /greeter/fallbacktheme/qmldir: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2025 Yifan Zhu 2 | # SPDX-License-Identifier: GPL-2.0-or-later 3 | 4 | singleton PasswordSync 1.0 PasswordSync.qml 5 | -------------------------------------------------------------------------------- /greeter/greeterapp.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2011 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | #pragma once 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | namespace KWayland 14 | { 15 | namespace Client 16 | { 17 | class ConnectionThread; 18 | class Registry; 19 | } 20 | } 21 | 22 | namespace PlasmaQuick 23 | { 24 | class QuickViewSharedEngine; 25 | } 26 | 27 | class Authenticator; 28 | 29 | struct org_kde_ksld; 30 | 31 | class PamAuthenticators; 32 | 33 | namespace ScreenLocker 34 | { 35 | class WallpaperIntegration; 36 | class ShellIntegration; 37 | 38 | class UnlockApp : public QGuiApplication 39 | { 40 | Q_OBJECT 41 | public: 42 | explicit UnlockApp(int &argc, char **argv); 43 | ~UnlockApp() override; 44 | 45 | void initialViewSetup(); 46 | 47 | void setTesting(bool enable); 48 | void setShell(const QString &shell); 49 | void setImmediateLock(bool immediateLock); 50 | void lockImmediately(); 51 | void setGraceTime(int milliseconds); 52 | void setNoLock(bool noLock); 53 | void setKsldSocket(int socket); 54 | 55 | void updateCanSuspend(); 56 | void updateCanHibernate(); 57 | 58 | public Q_SLOTS: 59 | void osdProgress(const QString &icon, int percent, const int maximumPercent, const QString &additionalText); 60 | void osdText(const QString &icon, const QString &additionalText); 61 | 62 | protected: 63 | bool eventFilter(QObject *obj, QEvent *event) override; 64 | 65 | private Q_SLOTS: 66 | void handleScreen(QScreen *screen); 67 | PlasmaQuick::QuickViewSharedEngine *createViewForScreen(QScreen *screen); 68 | void resetRequestIgnore(); 69 | void suspendToRam(); 70 | void suspendToDisk(); 71 | void getFocus(); 72 | void markViewsAsVisible(PlasmaQuick::QuickViewSharedEngine *view); 73 | void graceLockEnded(); 74 | 75 | private: 76 | void initialize(); 77 | PlasmaQuick::SharedQmlEngine *loadWallpaperPlugin(PlasmaQuick::QuickViewSharedEngine *view); 78 | void setWallpaperItemProperties(PlasmaQuick::SharedQmlEngine *wallpaperObject, PlasmaQuick::QuickViewSharedEngine *view); 79 | void screenGeometryChanged(QScreen *screen, const QRect &geo); 80 | QWindow *getActiveScreen(); 81 | 82 | QString m_packageName; 83 | QUrl m_mainQmlPath; 84 | QList m_views; 85 | QTimer *m_resetRequestIgnoreTimer; 86 | QTimer *m_delayedLockTimer; 87 | bool m_testing; 88 | bool m_ignoreRequests; 89 | bool m_immediateLock; 90 | bool m_runtimeInitialized; 91 | PamAuthenticators *m_authenticators; 92 | int m_graceTime; 93 | bool m_noLock; 94 | 95 | bool m_canSuspend = false; 96 | bool m_canHibernate = false; 97 | QString m_userName, m_userImage; 98 | 99 | wl_display *m_display = nullptr; 100 | org_kde_ksld *m_ksldInterface = nullptr; 101 | 102 | KPackage::Package m_wallpaperPackage; 103 | ShellIntegration *m_shellIntegration; 104 | }; 105 | } // namespace 106 | -------------------------------------------------------------------------------- /greeter/noaccessnetworkaccessmanagerfactory.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2015 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | #include "noaccessnetworkaccessmanagerfactory.h" 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | namespace ScreenLocker 13 | { 14 | class AccessDeniedNetworkReply : public QNetworkReply 15 | { 16 | Q_OBJECT 17 | public: 18 | explicit AccessDeniedNetworkReply(QNetworkAccessManager::Operation op, const QNetworkRequest &req, QObject *parent) 19 | : QNetworkReply(parent) 20 | { 21 | setRequest(req); 22 | setOpenMode(QIODevice::ReadOnly); 23 | setUrl(req.url()); 24 | setOperation(op); 25 | setError(QNetworkReply::ContentAccessDenied, QStringLiteral("Blocked request.")); 26 | const auto networkError = error(); 27 | QMetaObject::invokeMethod(this, &QNetworkReply::errorOccurred, Qt::QueuedConnection, networkError); 28 | 29 | setFinished(true); 30 | Q_EMIT QMetaObject::invokeMethod(this, &QNetworkReply::finished, Qt::QueuedConnection); 31 | } 32 | qint64 readData(char * /*data*/, qint64 /*maxSize*/) override 33 | { 34 | return 0; 35 | } 36 | void abort() override{}; 37 | }; 38 | 39 | class NoAccessNetworkAccessManager : public QNetworkAccessManager 40 | { 41 | Q_OBJECT 42 | using QNetworkAccessManager::QNetworkAccessManager; 43 | 44 | public: 45 | QNetworkReply *createRequest(Operation op, const QNetworkRequest &req, QIODevice *outgoingData) override 46 | { 47 | if (!isLocalRequest(req.url())) { 48 | return new ScreenLocker::AccessDeniedNetworkReply(op, req, this); 49 | } 50 | return QNetworkAccessManager::createRequest(op, req, outgoingData); 51 | } 52 | 53 | private: 54 | bool isLocalRequest(const QUrl &url) 55 | { 56 | const QString scheme(url.scheme()); 57 | return (KProtocolInfo::isKnownProtocol(scheme) && KProtocolInfo::protocolClass(scheme).compare(QStringLiteral(":local"), Qt::CaseInsensitive) == 0); 58 | } 59 | }; 60 | 61 | QNetworkAccessManager *NoAccessNetworkAccessManagerFactory::create(QObject *parent) 62 | { 63 | return new NoAccessNetworkAccessManager(parent); 64 | } 65 | } 66 | 67 | #include "noaccessnetworkaccessmanagerfactory.moc" 68 | -------------------------------------------------------------------------------- /greeter/noaccessnetworkaccessmanagerfactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2015 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | #pragma once 7 | 8 | #include 9 | 10 | namespace ScreenLocker 11 | { 12 | class NoAccessNetworkAccessManagerFactory : public QQmlNetworkAccessManagerFactory 13 | { 14 | public: 15 | QNetworkAccessManager *create(QObject *parent) override; 16 | }; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /greeter/pamauthenticator.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2020 David Edmundson 3 | 4 | SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 5 | */ 6 | 7 | #pragma once 8 | 9 | #include 10 | #include 11 | 12 | class PamWorker; 13 | 14 | class PamAuthenticator : public QObject 15 | { 16 | Q_OBJECT 17 | 18 | Q_PROPERTY(bool busy READ isBusy NOTIFY busyChanged) 19 | Q_PROPERTY(bool available READ isAvailable NOTIFY availableChanged) 20 | Q_PROPERTY(NoninteractiveAuthenticatorTypes authenticatorType READ authenticatorType CONSTANT) 21 | 22 | Q_PROPERTY(QString prompt READ getPrompt NOTIFY prompt) 23 | Q_PROPERTY(QString promptForSecret READ getPromptForSecret NOTIFY promptForSecret) 24 | 25 | Q_PROPERTY(QString infoMessage READ getInfoMessage NOTIFY infoMessage) 26 | Q_PROPERTY(QString errorMessage READ getErrorMessage NOTIFY errorMessage) 27 | 28 | Q_PROPERTY(bool unlocked READ isUnlocked NOTIFY succeeded) 29 | 30 | public: 31 | enum NoninteractiveAuthenticatorType { 32 | None = 0, 33 | Fingerprint = 1 << 0, 34 | Smartcard = 2 << 0, 35 | }; 36 | Q_DECLARE_FLAGS(NoninteractiveAuthenticatorTypes, NoninteractiveAuthenticatorType) 37 | Q_FLAG(NoninteractiveAuthenticatorTypes) 38 | 39 | PamAuthenticator(const QString &service, 40 | const QString &user, 41 | NoninteractiveAuthenticatorTypes authenticatorType = NoninteractiveAuthenticatorType::None, 42 | QObject *parent = nullptr); 43 | ~PamAuthenticator() override; 44 | Q_DISABLE_COPY_MOVE(PamAuthenticator) 45 | 46 | bool isBusy() const; 47 | bool isUnlocked() const; 48 | bool isAvailable() const; 49 | NoninteractiveAuthenticatorTypes authenticatorType() const; 50 | 51 | // Get prefix to de-duplicate from their signals. 52 | QString getPrompt() const; 53 | QString getPromptForSecret() const; 54 | QString getInfoMessage() const; 55 | QString getErrorMessage() const; 56 | 57 | QString service() const; 58 | 59 | Q_SIGNALS: 60 | void busyChanged(); 61 | void promptForSecret(const QString &msg); 62 | void prompt(const QString &msg); 63 | void infoMessage(const QString &msg); 64 | void errorMessage(const QString &msg); 65 | void succeeded(); 66 | void failed(); 67 | void availableChanged(); 68 | void loginFailedDelayStarted(const uint uSecDelay); 69 | 70 | public Q_SLOTS: 71 | void tryUnlock(); 72 | void respond(const QByteArray &response); 73 | void cancel(); 74 | 75 | protected: 76 | void init(const QString &service, const QString &user); 77 | 78 | private: 79 | void setBusy(bool busy); 80 | 81 | const std::vector> m_signalsToMembers; 82 | // NOTE Don't forget to reset in cancel as necessary 83 | QString m_prompt; 84 | QString m_promptForSecret; 85 | QString m_errorMessage; 86 | QString m_infoMessage; 87 | QString m_service; 88 | bool m_busy = false; 89 | bool m_unlocked = false; 90 | bool m_inAuthentication = false; 91 | bool m_unavailable = false; 92 | NoninteractiveAuthenticatorTypes m_authenticatorType; 93 | QThread m_thread; 94 | PamWorker *d; 95 | }; 96 | 97 | Q_DECLARE_OPERATORS_FOR_FLAGS(PamAuthenticator::NoninteractiveAuthenticatorTypes) 98 | -------------------------------------------------------------------------------- /greeter/powermanagement.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2016 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 5 | */ 6 | #pragma once 7 | 8 | #include 9 | 10 | class PowerManagement : public QObject 11 | { 12 | Q_OBJECT 13 | Q_PROPERTY(bool canSuspend READ canSuspend NOTIFY canSuspendChanged) 14 | Q_PROPERTY(bool canHibernate READ canHibernate NOTIFY canHibernateChanged) 15 | public: 16 | ~PowerManagement() override; 17 | 18 | bool canSuspend() const; 19 | bool canHibernate() const; 20 | 21 | static PowerManagement *instance(); 22 | 23 | public Q_SLOTS: 24 | void suspend(); 25 | void hibernate(); 26 | 27 | Q_SIGNALS: 28 | void canSuspendChanged(); 29 | void canHibernateChanged(); 30 | 31 | protected: 32 | explicit PowerManagement(); 33 | 34 | private: 35 | class Private; 36 | QScopedPointer d; 37 | }; 38 | -------------------------------------------------------------------------------- /kcm/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # KI18N Translation Domain for this library 2 | add_definitions(-DTRANSLATION_DOMAIN=\"kcm_screenlocker\") 3 | 4 | set(screenlocker_kcm_SRCS 5 | kcm.cpp 6 | kscreenlockerdata.cpp 7 | ) 8 | include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../) 9 | include_directories(${CMAKE_CURRENT_BINARY_DIR}/../) 10 | 11 | qt_add_dbus_interface(screenlocker_kcm_SRCS ../dbus/org.kde.screensaver.xml screenlocker_interface) 12 | 13 | kcmutils_add_qml_kcm(kcm_screenlocker SOURCES ${screenlocker_kcm_SRCS}) 14 | 15 | target_link_libraries(kcm_screenlocker PRIVATE 16 | settings 17 | Qt::DBus 18 | KF6::KCMUtilsCore # KCModuleData 19 | KF6::KCMUtilsQuick # KQuickManagedConfigModule 20 | KF6::I18n 21 | KF6::GlobalAccel 22 | ) 23 | -------------------------------------------------------------------------------- /kcm/Messages.sh: -------------------------------------------------------------------------------- 1 | #!bin/sh 2 | $XGETTEXT `find . -name "*.cpp" -o -name "*.qml"` -o $podir/kcm_screenlocker.pot 3 | -------------------------------------------------------------------------------- /kcm/kcm.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2014 Martin Gräßlin 3 | SPDX-FileCopyrightText: 2014 Marco Martin 4 | SPDX-FileCopyrightText: 2019 Kevin Ottens 5 | SPDX-FileCopyrightText: 2020 David Redondo 6 | 7 | SPDX-License-Identifier: GPL-2.0-or-later 8 | */ 9 | #pragma once 10 | 11 | #include 12 | #include 13 | 14 | #include "kscreensaversettings.h" 15 | #include "wallpaper_integration.h" 16 | 17 | class ScreenLockerKcmForm; 18 | class AppearanceSettings; 19 | namespace ScreenLocker 20 | { 21 | class ShellIntegration; 22 | } 23 | 24 | class ScreenLockerKcm : public KQuickManagedConfigModule 25 | { 26 | Q_OBJECT 27 | public: 28 | explicit ScreenLockerKcm(QObject *parent, const KPluginMetaData &data); 29 | 30 | Q_PROPERTY(KScreenSaverSettings *settings READ settings CONSTANT) 31 | Q_PROPERTY(KConfigPropertyMap *wallpaperConfiguration READ wallpaperConfiguration NOTIFY currentWallpaperChanged) 32 | Q_PROPERTY(KConfigPropertyMap *shellConfiguration READ shellConfiguration CONSTANT) 33 | Q_PROPERTY(QUrl shellConfigFile READ shellConfigFile CONSTANT) 34 | Q_PROPERTY(QUrl wallpaperConfigFile READ wallpaperConfigFile NOTIFY currentWallpaperChanged) 35 | Q_PROPERTY(ScreenLocker::WallpaperIntegration *wallpaperIntegration READ wallpaperIntegration NOTIFY currentWallpaperChanged) 36 | Q_PROPERTY(QString currentWallpaper READ currentWallpaper NOTIFY currentWallpaperChanged) 37 | Q_PROPERTY(bool isDefaultsAppearance READ isDefaultsAppearance NOTIFY isDefaultsAppearanceChanged) 38 | 39 | Q_INVOKABLE QList availableWallpaperPlugins() 40 | { 41 | return KScreenSaverSettings::getInstance().availableWallpaperPlugins(); 42 | } 43 | 44 | KScreenSaverSettings *settings() const; 45 | QUrl shellConfigFile() const; 46 | QUrl wallpaperConfigFile() const; 47 | ScreenLocker::WallpaperIntegration *wallpaperIntegration() const; 48 | QString currentWallpaper() const; 49 | bool isDefaultsAppearance() const; 50 | 51 | public Q_SLOTS: 52 | void load() override; 53 | void save() override; 54 | void defaults() override; 55 | void updateState(); 56 | void forceUpdateState(); 57 | 58 | Q_SIGNALS: 59 | void currentWallpaperChanged(); 60 | 61 | /** 62 | * Emitted when the defaults function is called. 63 | */ 64 | void defaultsCalled(); 65 | 66 | void isDefaultsAppearanceChanged(); 67 | 68 | /** 69 | * Emitted when the load function is called. 70 | */ 71 | void loadCalled(); 72 | 73 | private: 74 | bool isSaveNeeded() const override; 75 | bool isDefaults() const override; 76 | 77 | KConfigPropertyMap *wallpaperConfiguration() const; 78 | KConfigPropertyMap *shellConfiguration() const; 79 | 80 | AppearanceSettings *m_appearanceSettings; 81 | QString m_currentWallpaper; 82 | bool m_forceUpdateState = false; 83 | }; 84 | -------------------------------------------------------------------------------- /kcm/kscreenlockerdata.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2020 Cyril Rossi 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | 7 | #include "kscreenlockerdata.h" 8 | #include "appearancesettings.h" 9 | #include "kscreensaversettings.h" 10 | 11 | KScreenLockerData::KScreenLockerData(QObject *parent) 12 | : KCModuleData(parent) 13 | , m_appearanceSettings(new AppearanceSettings(this)) 14 | { 15 | m_appearanceSettings->load(); 16 | } 17 | 18 | bool KScreenLockerData::isDefaults() const 19 | { 20 | return KScreenSaverSettings::getInstance().isDefaults() && m_appearanceSettings->isDefaults(); 21 | } 22 | 23 | #include "kscreenlockerdata.moc" 24 | 25 | #include "moc_kscreenlockerdata.cpp" 26 | -------------------------------------------------------------------------------- /kcm/kscreenlockerdata.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2020 Cyril Rossi 3 | SPDX-License-Identifier: GPL-2.0-or-later 4 | */ 5 | 6 | #pragma once 7 | 8 | #include 9 | 10 | #include "kcmoduledata.h" 11 | 12 | class AppearanceSettings; 13 | 14 | class KScreenLockerData : public KCModuleData 15 | { 16 | Q_OBJECT 17 | 18 | public: 19 | explicit KScreenLockerData(QObject *parent); 20 | 21 | bool isDefaults() const override; 22 | 23 | private: 24 | AppearanceSettings *m_appearanceSettings = nullptr; 25 | }; 26 | -------------------------------------------------------------------------------- /kcm/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | wallpaperconfig.qml 5 | lnfconfig.qml 6 | 7 | 8 | -------------------------------------------------------------------------------- /kcm/ui/Appearance.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2020 David Redondo 3 | 4 | SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 5 | */ 6 | 7 | import QtQuick 2.15 8 | import QtQuick.Controls 2.15 as QQC2 9 | import QtQuick.Layouts 1.15 10 | 11 | import org.kde.kcmutils as KCM 12 | import org.kde.kirigami 2.20 as Kirigami 13 | 14 | Kirigami.ScrollablePage { 15 | // The following two must be set for correct alignment with wallpaper config 16 | id: appearanceRoot 17 | property alias parentLayout: parentLayout 18 | // Plugins expect these two properties 19 | property var wallpaper: kcm.wallpaperIntegration 20 | property var configDialog: kcm 21 | 22 | title: i18nc("@title", "Appearance") 23 | 24 | padding: 6 // Layout_ChildMarginWidth from Breeze 25 | 26 | ColumnLayout { 27 | height: Math.max(implicitHeight, appearanceRoot.availableHeight) 28 | width: appearanceRoot.availableWidth 29 | spacing: Kirigami.Units.smallSpacing 30 | 31 | ShellConfig { 32 | sourceFile: kcm.shellConfigFile 33 | onConfigurationChanged: kcm.updateState() 34 | } 35 | 36 | Kirigami.FormLayout { 37 | id: parentLayout // Don't change needed for correct alignment with shell and wallpaper config 38 | 39 | QQC2.ComboBox { 40 | Kirigami.FormData.label: i18n("Wallpaper type:") 41 | model: kcm.availableWallpaperPlugins() 42 | textRole: "name" 43 | valueRole: "id" 44 | currentIndex: model.findIndex(wallpaper => wallpaper["id"] === kcm.settings.wallpaperPluginId) 45 | displayText: model[currentIndex]["name"] 46 | 47 | onActivated: index => { 48 | kcm.settings.wallpaperPluginId = model[index]["id"] 49 | } 50 | 51 | KCM.SettingStateBinding { 52 | configObject: kcm.settings 53 | settingName: "wallpaperPluginId" 54 | } 55 | } 56 | } 57 | 58 | WallpaperConfig { 59 | sourceFile: kcm.wallpaperConfigFile 60 | onConfigurationChanged: kcm.updateState() 61 | onConfigurationForceChanged: kcm.forceUpdateState() 62 | // Cancel out page margins so it touches the edges 63 | Layout.margins: -appearanceRoot.padding 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /kcm/ui/ShellConfig.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2016 Martin Gräßlin 3 | SPDX-FileCopyrightText: 2019 Kevin Ottens 4 | 5 | SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 6 | */ 7 | 8 | import QtQuick 2.15 9 | import QtQuick.Controls 2.15 as QQC2 10 | import QtQuick.Layouts 1.15 11 | 12 | QQC2.StackView { 13 | id: main 14 | 15 | signal configurationChanged 16 | 17 | property string sourceFile 18 | 19 | implicitHeight: currentItem && currentItem.implicitHeight || 0 20 | Layout.fillWidth: true 21 | 22 | onSourceFileChanged: { 23 | pop() 24 | if (sourceFile) { 25 | const props = {} 26 | const shellConfiguration = configDialog.shellConfiguration 27 | shellConfiguration.keys().forEach(key => { 28 | props["cfg_" + key] = shellConfiguration[key] 29 | }); 30 | 31 | const newItem = push(sourceFile, props, QQC2.StackView.ReplaceTransition) 32 | 33 | shellConfiguration.valueChanged.connect((key, value) => { 34 | if (newItem["cfg_" + key] !== undefined) { 35 | newItem["cfg_" + key] = value 36 | } 37 | }) 38 | 39 | const createSignalHandler = key => { 40 | return () => { 41 | configDialog.shellConfiguration[key] = newItem["cfg_" + key] 42 | configurationChanged() 43 | } 44 | } 45 | 46 | for (const key in shellConfiguration) { 47 | const changedSignal = newItem["cfg_" + key + "Changed"] 48 | if (changedSignal) { 49 | changedSignal.connect(createSignalHandler(key)) 50 | } 51 | } 52 | } else { 53 | push(empty) 54 | } 55 | } 56 | 57 | Component { 58 | id: empty 59 | Item {} 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /kcm/ui/WallpaperConfig.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2016 Martin Gräßlin 3 | SPDX-FileCopyrightText: 2019 Kevin Ottens 4 | 5 | SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 6 | */ 7 | 8 | import QtQuick 2.15 9 | import QtQuick.Controls 2.15 as QQC2 10 | import QtQuick.Layouts 1.15 11 | 12 | import org.kde.kirigami 2.20 as Kirigami 13 | 14 | QQC2.StackView { 15 | id: main 16 | 17 | property string sourceFile 18 | 19 | signal configurationChanged 20 | signal configurationForceChanged 21 | 22 | Layout.fillHeight: true 23 | Layout.fillWidth: true 24 | 25 | implicitHeight: main.empty ? 0 : (currentItem?.implicitHeight ?? 0) 26 | 27 | onSourceFileChanged: { 28 | if (sourceFile) { 29 | const wallpaperConfig = configDialog.wallpaperConfiguration 30 | const props = { 31 | "configDialog": configDialog, 32 | "wallpaperConfiguration": wallpaperConfig 33 | } 34 | 35 | // Some third-party wallpaper plugins need the config keys to be set initially. 36 | // We should not break them within one Plasma major version, but setting everything 37 | // will lead to an error message for every unused property (and some, like KConfigXT 38 | // default values, are used by almost no plugin configuration). We load the config 39 | // page in a temp variable first, then use that to figure out which ones we need to 40 | // set initially. 41 | // TODO Plasma 7: consider whether we can drop this workaround 42 | const temp = Qt.createComponent(Qt.resolvedUrl(sourceFile)).createObject(appearanceRoot, props) 43 | wallpaperConfig.keys().forEach(key => { 44 | const cfgKey = "cfg_" + key; 45 | if (cfgKey in temp) { 46 | props[cfgKey] = wallpaperConfig[key] 47 | } 48 | }) 49 | temp.destroy() 50 | 51 | const newItem = replace(sourceFile, props, QQC2.StackView.ReplaceTransition) 52 | 53 | wallpaperConfig.valueChanged.connect((key, value) => { 54 | if (newItem["cfg_" + key] !== undefined) { 55 | newItem["cfg_" + key] = value 56 | } 57 | }) 58 | 59 | const createSignalHandler = key => { 60 | return () => { 61 | configDialog.wallpaperConfiguration[key] = newItem["cfg_" + key] 62 | configurationChanged() 63 | } 64 | } 65 | 66 | for (const key in wallpaperConfig) { 67 | const changedSignal = newItem["cfg_" + key + "Changed"] 68 | if (changedSignal) { 69 | changedSignal.connect(createSignalHandler(key)) 70 | } 71 | } 72 | 73 | const configurationChangedSignal = newItem.configurationChanged 74 | if (configurationChangedSignal) { 75 | configurationChangedSignal.connect(main.configurationForceChanged) // BUG 438585 76 | } 77 | } else { 78 | replace(empty) 79 | } 80 | } 81 | 82 | Component { 83 | id: empty 84 | Item {} 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /logind.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2014 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | #pragma once 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | class QDBusServiceWatcher; 14 | 15 | class LogindIntegration : public QObject 16 | { 17 | Q_OBJECT 18 | public: 19 | explicit LogindIntegration(QObject *parent = nullptr); 20 | ~LogindIntegration() override; 21 | 22 | bool isConnected() const 23 | { 24 | return m_connected; 25 | } 26 | 27 | void inhibit(); 28 | void uninhibit(); 29 | 30 | bool isInhibited() const; 31 | 32 | /** 33 | * Notify logind of our current state 34 | */ 35 | void setLocked(bool locked); 36 | bool isLocked() const; 37 | 38 | Q_SIGNALS: 39 | /** 40 | * signalled when logind asks us to lock 41 | */ 42 | void requestLock(); 43 | void requestUnlock(); 44 | void connectedChanged(); 45 | void prepareForSleep(bool); 46 | void inhibited(); 47 | 48 | private: 49 | friend class LogindTest; 50 | /** 51 | * The DBusConnection argument is needed for the unit test. Logind uses the system bus 52 | * on which the unit test's fake logind cannot register to. Thus the unit test need to 53 | * be able to do everything over the session bus. This ctor allows the LogindTest to 54 | * create a LogindIntegration which listens on the session bus. 55 | **/ 56 | explicit LogindIntegration(const QDBusConnection &connection, QObject *parent = nullptr); 57 | void logindServiceRegistered(); 58 | void consolekitServiceRegistered(); 59 | void commonServiceRegistered(QDBusPendingCallWatcher *watcher); 60 | QDBusConnection m_bus; 61 | QDBusServiceWatcher *m_logindServiceWatcher; 62 | bool m_connected; 63 | QDBusUnixFileDescriptor m_inhibitFileDescriptor; 64 | const QString *m_service; 65 | const QString *m_path; 66 | QString m_sessionPath; 67 | const QString *m_managerInterface; 68 | const QString *m_sessionInterface; 69 | }; 70 | -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KDE/kscreenlocker/7b391e42825580ff30fd0e2b30060ea6c5821e8f/logo.png -------------------------------------------------------------------------------- /po/ar/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Language translations for PACKAGE package. 2 | # Copyright (C) 2013 This_file_is_part_of_KDE 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # Safa Alfulaij , 2013. 5 | # SPDX-FileCopyrightText: 2021, 2024, 2025 Zayed Al-Saidi 6 | # Automatically generated, 2013. 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: \n" 10 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 11 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 12 | "PO-Revision-Date: 2025-08-03 08:34+0400\n" 13 | "Last-Translator: Zayed Al-Saidi \n" 14 | "Language-Team: ar\n" 15 | "Language: ar\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " 20 | "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" 21 | "X-Generator: Lokalize 23.08.5\n" 22 | 23 | #: fallbacktheme/Greeter.qml:59 24 | msgid "Warning: Caps Lock on" 25 | msgstr "تحذير: مفتاح Caps Lock مفعّل" 26 | 27 | #: fallbacktheme/Greeter.qml:75 28 | msgid "The session is locked" 29 | msgstr "الجلسة مقفلة" 30 | 31 | #: fallbacktheme/Greeter.qml:76 32 | msgid "The session has been locked by %1" 33 | msgstr "الجلسة مقفلة بواسطة %1" 34 | 35 | #: fallbacktheme/Greeter.qml:100 36 | msgid "(or place your fingerprint on the reader)" 37 | msgstr "(أو امحُ بصمة إصبعك على القارئ)" 38 | 39 | #: fallbacktheme/Greeter.qml:106 40 | msgid "(or use your smartcard)" 41 | msgstr "(أو استعمل بطاقتك الذكية)" 42 | 43 | #: fallbacktheme/Greeter.qml:115 44 | msgid "&Switch Users" 45 | msgstr "&بدل بين المستخدمين" 46 | 47 | #: fallbacktheme/Greeter.qml:122 48 | msgid "Un&lock" 49 | msgstr "&فك القفل" 50 | 51 | #: fallbacktheme/Greeter.qml:134 52 | msgid "Unlocking failed" 53 | msgstr "فشل فكّ القفل" 54 | 55 | #: main.cpp:123 56 | #, kde-format 57 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 58 | msgstr "مرحّب لقفل شاشة مساحات عمل بلازما كِيدِي" 59 | 60 | #: main.cpp:127 61 | #, kde-format 62 | msgid "Starts the greeter in testing mode" 63 | msgstr "ابدأ المرحّب في وضع الإختبار" 64 | 65 | #: main.cpp:130 66 | #, kde-format 67 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 68 | msgstr "ابدأ المرحّب بالسمة المحددة (في وضع الاختبار فقط)" 69 | 70 | #: main.cpp:134 71 | #, kde-format 72 | msgid "Lock immediately, ignoring any grace time etc." 73 | msgstr "اقفل مباشرة وتجاهل أي مهلة." 74 | 75 | #: main.cpp:136 76 | #, kde-format 77 | msgid "Delay till the lock user interface gets shown in milliseconds." 78 | msgstr "تأخر حتى تظهر واجهة قفل المستخدم في مللي ثواني." 79 | 80 | #: main.cpp:139 81 | #, kde-format 82 | msgid "Don't show any lock user interface." 83 | msgstr "لا تظهر أي واجهة قفل المستخدم" 84 | 85 | #: main.cpp:141 86 | #, kde-format 87 | msgid "File descriptor for connecting to ksld." 88 | msgstr "واصف الملف لتوصيل مع ksld." 89 | 90 | #~ msgid "Default to the switch user UI." 91 | #~ msgstr "المبدئي لتبديل واجهة المستخدم" 92 | 93 | #~ msgid "Session" 94 | #~ msgstr "الجلسة" 95 | 96 | #~ msgid "Location" 97 | #~ msgstr "الموقع" 98 | -------------------------------------------------------------------------------- /po/ast/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) YEAR This file is copyright: 2 | # This file is distributed under the same license as the kscreenlocker package. 3 | # 4 | # Enol P. , 2023. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: kscreenlocker\n" 8 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 9 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 10 | "PO-Revision-Date: 2023-05-03 21:16+0200\n" 11 | "Last-Translator: Enol P. \n" 12 | "Language-Team: \n" 13 | "Language: ast\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 18 | "X-Generator: Lokalize 23.04.0\n" 19 | 20 | #: fallbacktheme/Greeter.qml:59 21 | msgid "Warning: Caps Lock on" 22 | msgstr "" 23 | 24 | #: fallbacktheme/Greeter.qml:75 25 | msgid "The session is locked" 26 | msgstr "" 27 | 28 | #: fallbacktheme/Greeter.qml:76 29 | msgid "The session has been locked by %1" 30 | msgstr "" 31 | 32 | #: fallbacktheme/Greeter.qml:100 33 | msgid "(or place your fingerprint on the reader)" 34 | msgstr "" 35 | 36 | #: fallbacktheme/Greeter.qml:106 37 | msgid "(or use your smartcard)" 38 | msgstr "" 39 | 40 | #: fallbacktheme/Greeter.qml:115 41 | msgid "&Switch Users" 42 | msgstr "" 43 | 44 | #: fallbacktheme/Greeter.qml:122 45 | msgid "Un&lock" 46 | msgstr "" 47 | 48 | #: fallbacktheme/Greeter.qml:134 49 | msgid "Unlocking failed" 50 | msgstr "" 51 | 52 | #: main.cpp:123 53 | #, kde-format 54 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 55 | msgstr "" 56 | 57 | #: main.cpp:127 58 | #, kde-format 59 | msgid "Starts the greeter in testing mode" 60 | msgstr "" 61 | 62 | #: main.cpp:130 63 | #, kde-format 64 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 65 | msgstr "" 66 | 67 | #: main.cpp:134 68 | #, kde-format 69 | msgid "Lock immediately, ignoring any grace time etc." 70 | msgstr "" 71 | 72 | #: main.cpp:136 73 | #, kde-format 74 | msgid "Delay till the lock user interface gets shown in milliseconds." 75 | msgstr "" 76 | 77 | #: main.cpp:139 78 | #, kde-format 79 | msgid "Don't show any lock user interface." 80 | msgstr "" 81 | 82 | #: main.cpp:141 83 | #, kde-format 84 | msgid "File descriptor for connecting to ksld." 85 | msgstr "" 86 | -------------------------------------------------------------------------------- /po/az/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 This file is copyright: 2 | # This file is distributed under the same license as the kscreenlocker package. 3 | # 4 | # SPDX-FileCopyrightText: 2025 linux 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: kscreenlocker\n" 8 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 9 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 10 | "PO-Revision-Date: 2025-09-28 23:25+0400\n" 11 | "Last-Translator: linux \n" 12 | "Language-Team: Azerbaijani \n" 13 | "Language: az\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 18 | "X-Generator: Lokalize 25.08.1\n" 19 | 20 | #: fallbacktheme/Greeter.qml:59 21 | msgid "Warning: Caps Lock on" 22 | msgstr "Xəbərdarlıq: Caps Lock açıq" 23 | 24 | #: fallbacktheme/Greeter.qml:75 25 | msgid "The session is locked" 26 | msgstr "Sessiya kilidlənib" 27 | 28 | #: fallbacktheme/Greeter.qml:76 29 | msgid "The session has been locked by %1" 30 | msgstr "Sessiya %1 tərəfindən kilidlənib" 31 | 32 | #: fallbacktheme/Greeter.qml:100 33 | msgid "(or place your fingerprint on the reader)" 34 | msgstr "(və ya barmağınızı oxuyucuya yerləşdirin)" 35 | 36 | #: fallbacktheme/Greeter.qml:106 37 | msgid "(or use your smartcard)" 38 | msgstr "(və ya smart kartdan istifadə edin)" 39 | 40 | #: fallbacktheme/Greeter.qml:115 41 | msgid "&Switch Users" 42 | msgstr "&İstiifadəçini dəyişmək" 43 | 44 | #: fallbacktheme/Greeter.qml:122 45 | msgid "Un&lock" 46 | msgstr "Ki&liddən çıxartmaq" 47 | 48 | #: fallbacktheme/Greeter.qml:134 49 | msgid "Unlocking failed" 50 | msgstr "Kiliddən çıxarılmadı" 51 | 52 | #: main.cpp:123 53 | #, kde-format 54 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 55 | msgstr "KDE Plasma iş sahələri ekran kilidləyicisi ilə salamlaşma" 56 | 57 | #: main.cpp:127 58 | #, kde-format 59 | msgid "Starts the greeter in testing mode" 60 | msgstr "Salamlayıcını sınaq rejimində başlatmaq" 61 | 62 | #: main.cpp:130 63 | #, kde-format 64 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 65 | msgstr "" 66 | "Slamlayıcını seçilmiş üz qabığı mövzusu ilə başladır (yalnız sınaq rejimində)" 67 | 68 | #: main.cpp:134 69 | #, kde-format 70 | msgid "Lock immediately, ignoring any grace time etc." 71 | msgstr "Ekranı dərhal, gecikmə olmadan kilidləmək" 72 | 73 | #: main.cpp:136 74 | #, kde-format 75 | msgid "Delay till the lock user interface gets shown in milliseconds." 76 | msgstr "İstifadəçi interfeysi göstərilmədən öncə millisaniyərlə gecikmə." 77 | 78 | #: main.cpp:139 79 | #, kde-format 80 | msgid "Don't show any lock user interface." 81 | msgstr "Ekran kilidlənməsini göstərməmək." 82 | 83 | #: main.cpp:141 84 | #, kde-format 85 | msgid "File descriptor for connecting to ksld." 86 | msgstr "ksld ilə bağlantı üçün fayl deskriptoru" 87 | -------------------------------------------------------------------------------- /po/bg/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 This file is copyright: 2 | # This file is distributed under the same license as the kscreenlocker package. 3 | # 4 | # SPDX-FileCopyrightText: 2024, 2025 Mincho Kondarev 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: kscreenlocker\n" 8 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 9 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 10 | "PO-Revision-Date: 2025-07-28 17:35+0200\n" 11 | "Last-Translator: Mincho Kondarev \n" 12 | "Language-Team: Bulgarian \n" 13 | "Language: bg\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "X-Generator: Lokalize 25.07.70\n" 18 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 19 | 20 | #: fallbacktheme/Greeter.qml:59 21 | msgid "Warning: Caps Lock on" 22 | msgstr "Предупреждение: Caps Lock е включен" 23 | 24 | #: fallbacktheme/Greeter.qml:75 25 | msgid "The session is locked" 26 | msgstr "Сесията е заключена" 27 | 28 | #: fallbacktheme/Greeter.qml:76 29 | msgid "The session has been locked by %1" 30 | msgstr "Сесията е заключена от %1" 31 | 32 | #: fallbacktheme/Greeter.qml:100 33 | msgid "(or place your fingerprint on the reader)" 34 | msgstr "(или поставете пръстовия си отпечатък върху четеца)" 35 | 36 | #: fallbacktheme/Greeter.qml:106 37 | msgid "(or use your smartcard)" 38 | msgstr "(или използвайте смарткартата си)" 39 | 40 | #: fallbacktheme/Greeter.qml:115 41 | msgid "&Switch Users" 42 | msgstr "&Превключване на потребител" 43 | 44 | #: fallbacktheme/Greeter.qml:122 45 | msgid "Un&lock" 46 | msgstr "&Отключване" 47 | 48 | #: fallbacktheme/Greeter.qml:134 49 | msgid "Unlocking failed" 50 | msgstr "Отключването е неуспешно" 51 | 52 | #: main.cpp:123 53 | #, kde-format 54 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 55 | msgstr "Приветствен прозорец при заключване на екрана на KDE Plasma" 56 | 57 | #: main.cpp:127 58 | #, kde-format 59 | msgid "Starts the greeter in testing mode" 60 | msgstr "Стартира Приветствен прозорец в режим на тестване" 61 | 62 | #: main.cpp:130 63 | #, kde-format 64 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 65 | msgstr "Стартира Приветствен прозорец с избраната тема (само в режим Тестване)" 66 | 67 | #: main.cpp:134 68 | #, kde-format 69 | msgid "Lock immediately, ignoring any grace time etc." 70 | msgstr "Незабавно заключване, пренебрегвайки всяко време за декорации и т.н." 71 | 72 | #: main.cpp:136 73 | #, kde-format 74 | msgid "Delay till the lock user interface gets shown in milliseconds." 75 | msgstr "" 76 | "Забавяне в милисекунди, докато потребителският интерфейс за заключване не се " 77 | "покаже." 78 | 79 | #: main.cpp:139 80 | #, kde-format 81 | msgid "Don't show any lock user interface." 82 | msgstr "Без показване на потребителски интерфейс за заключване." 83 | 84 | #: main.cpp:141 85 | #, kde-format 86 | msgid "File descriptor for connecting to ksld." 87 | msgstr "Файлов дескриптор за свързване към ksld." 88 | 89 | #~ msgid "Default to the switch user UI." 90 | #~ msgstr "По подразбиране за интерфейс на превключване на потребител." 91 | -------------------------------------------------------------------------------- /po/bs/kscreenlocker.po: -------------------------------------------------------------------------------- 1 | # Bosnian translations for kde package. 2 | # Copyright (C) 2012 This_file_is_part_of_KDE 3 | # This file is distributed under the same license as the kde package. 4 | # Samir Ribic , 2012. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kde 49i410\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-09-21 00:43+0000\n" 11 | "PO-Revision-Date: 2015-01-07 00:34+0000\n" 12 | "Last-Translator: Samir Ribić \n" 13 | "Language-Team: Bosnian\n" 14 | "Language: bs\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Launchpad-Export-Date: 2015-01-08 07:00+0000\n" 19 | "X-Generator: Launchpad (build 17298)\n" 20 | "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" 21 | "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" 22 | 23 | #: abstractlocker.cpp:43 24 | #, kde-format 25 | msgid "" 26 | "The screen locker is broken and unlocking is not possible anymore.\n" 27 | "In order to unlock it either ConsoleKit or LoginD is needed, neither\n" 28 | "of which could be found on your system." 29 | msgstr "" 30 | 31 | #: abstractlocker.cpp:47 32 | #, kde-format 33 | msgctxt "%1 = other terminal" 34 | msgid "" 35 | "The screen locker is broken and unlocking is not possible anymore.\n" 36 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 37 | "log in as root and execute the command:\n" 38 | "\n" 39 | "# ck-unlock-session \n" 40 | "\n" 41 | msgstr "" 42 | 43 | #: abstractlocker.cpp:52 44 | #, kde-format 45 | msgctxt "%1 = other terminal, %2 = session ID, %3 = this terminal" 46 | msgid "" 47 | "The screen locker is broken and unlocking is not possible anymore.\n" 48 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 49 | "log in to your account and execute the command:\n" 50 | "\n" 51 | "loginctl unlock-session %2\n" 52 | "\n" 53 | "Then log out of the virtual session by pressing Ctrl+D, and switch\n" 54 | "back to the running session (Ctrl+Alt+F%3).\n" 55 | "Should you have forgotten the instructions, you can get back to this\n" 56 | "screen by pressing Ctrl+Alt+F%3\n" 57 | "\n" 58 | msgstr "" 59 | 60 | #: ksldapp.cpp:183 61 | #, kde-format 62 | msgctxt "" 63 | "Name of a category in System Settings' Shortcuts KCM; match it exactly" 64 | msgid "Session Management" 65 | msgstr "" 66 | 67 | #: ksldapp.cpp:185 68 | #, kde-format 69 | msgid "Lock Session" 70 | msgstr "Zaključaj sesiju" 71 | 72 | #: ksldapp.cpp:451 73 | #, kde-format 74 | msgid "Screen locked" 75 | msgstr "" 76 | 77 | #: ksldapp.cpp:619 78 | #, kde-format 79 | msgid "Screen unlocked" 80 | msgstr "" 81 | 82 | #: logind.cpp:161 83 | #, kde-format 84 | msgid "Screen Locker" 85 | msgstr "" 86 | 87 | #: logind.cpp:161 88 | #, kde-format 89 | msgid "Ensuring that the screen gets locked before going to sleep" 90 | msgstr "" 91 | 92 | #~ msgid "Screen saver timeout" 93 | #~ msgstr "Prekovrijeme čuvara ekrana" 94 | 95 | #, fuzzy 96 | #~| msgid "Sets the minutes after which the screen saver is started." 97 | #~ msgid "Sets the minutes after which the screen is locked." 98 | #~ msgstr "Postavlja minute nakon što je pokrenut čuvar ekrana." 99 | -------------------------------------------------------------------------------- /po/bs/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Bosnian translations for kde package. 2 | # Copyright (C) 2012 This_file_is_part_of_KDE 3 | # This file is distributed under the same license as the kde package. 4 | # Samir Ribic , 2012. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kde 49i410\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 11 | "PO-Revision-Date: 2015-02-04 15:48+0000\n" 12 | "Last-Translator: Samir Ribić \n" 13 | "Language-Team: Bosnian\n" 14 | "Language: bs\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Launchpad-Export-Date: 2015-02-05 06:42+0000\n" 19 | "X-Generator: Launchpad (build 17331)\n" 20 | "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" 21 | "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" 22 | 23 | #: fallbacktheme/Greeter.qml:59 24 | msgid "Warning: Caps Lock on" 25 | msgstr "" 26 | 27 | #: fallbacktheme/Greeter.qml:75 28 | msgid "The session is locked" 29 | msgstr "" 30 | 31 | #: fallbacktheme/Greeter.qml:76 32 | msgid "The session has been locked by %1" 33 | msgstr "" 34 | 35 | #: fallbacktheme/Greeter.qml:100 36 | msgid "(or place your fingerprint on the reader)" 37 | msgstr "" 38 | 39 | #: fallbacktheme/Greeter.qml:106 40 | msgid "(or use your smartcard)" 41 | msgstr "" 42 | 43 | #: fallbacktheme/Greeter.qml:115 44 | msgid "&Switch Users" 45 | msgstr "" 46 | 47 | #: fallbacktheme/Greeter.qml:122 48 | msgid "Un&lock" 49 | msgstr "" 50 | 51 | #: fallbacktheme/Greeter.qml:134 52 | msgid "Unlocking failed" 53 | msgstr "" 54 | 55 | #: main.cpp:123 56 | #, kde-format 57 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 58 | msgstr "Pozdravni program za zaključavanje ekrana u KDE Plasma radnoj površini" 59 | 60 | #: main.cpp:127 61 | #, kde-format 62 | msgid "Starts the greeter in testing mode" 63 | msgstr "Pokreće pozdrav u testnom režimu" 64 | 65 | #: main.cpp:130 66 | #, fuzzy, kde-format 67 | #| msgid "Starts the greeter in testing mode" 68 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 69 | msgstr "Pokreće pozdrav u testnom režimu" 70 | 71 | #: main.cpp:134 72 | #, kde-format 73 | msgid "Lock immediately, ignoring any grace time etc." 74 | msgstr "Zaključaj odmah. Ignoriši dopušteno vrijeme itd." 75 | 76 | #: main.cpp:136 77 | #, kde-format 78 | msgid "Delay till the lock user interface gets shown in milliseconds." 79 | msgstr "" 80 | "Kašnjenje dpl se zaključani korisnički interfejs ne pokaže u milisekundama." 81 | 82 | #: main.cpp:139 83 | #, kde-format 84 | msgid "Don't show any lock user interface." 85 | msgstr "Ne prikazuj i ne zaključavaj korisnički interfejs." 86 | 87 | #: main.cpp:141 88 | #, kde-format 89 | msgid "File descriptor for connecting to ksld." 90 | msgstr "" 91 | 92 | #~ msgid "Session" 93 | #~ msgstr "Sesija" 94 | 95 | #~ msgid "Location" 96 | #~ msgstr "Lokacija" 97 | -------------------------------------------------------------------------------- /po/ca@valencia/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Translation of kscreenlocker_greet.po to Catalan (Valencian) 2 | # Copyright (C) 2012-2025 This_file_is_part_of_KDE 3 | # This file is distributed under the license LGPL version 2.1 or 4 | # version 3 or later versions approved by the membership of KDE e.V. 5 | # 6 | # SPDX-FileCopyrightText: 2012, 2013, 2014, 2015, 2016, 2024, 2025 Josep M. Ferrer 7 | # SPDX-FileCopyrightText: 2015, 2016, 2020 Antoni Bella Pérez 8 | # SPDX-FileCopyrightText: 2019 Empar Montoro Martín 9 | msgid "" 10 | msgstr "" 11 | "Project-Id-Version: kscreenlocker\n" 12 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 13 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 14 | "PO-Revision-Date: 2025-07-23 11:18+0200\n" 15 | "Last-Translator: Josep M. Ferrer \n" 16 | "Language-Team: Catalan \n" 17 | "Language: ca@valencia\n" 18 | "MIME-Version: 1.0\n" 19 | "Content-Type: text/plain; charset=UTF-8\n" 20 | "Content-Transfer-Encoding: 8bit\n" 21 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 22 | "X-Accelerator-Marker: &\n" 23 | "X-Generator: Lokalize 25.04.3\n" 24 | 25 | #: fallbacktheme/Greeter.qml:59 26 | msgid "Warning: Caps Lock on" 27 | msgstr "Avís: El bloqueig de majúscules està activat" 28 | 29 | #: fallbacktheme/Greeter.qml:75 30 | msgid "The session is locked" 31 | msgstr "La sessió està bloquejada" 32 | 33 | #: fallbacktheme/Greeter.qml:76 34 | msgid "The session has been locked by %1" 35 | msgstr "%1 ha bloquejat la sessió" 36 | 37 | #: fallbacktheme/Greeter.qml:100 38 | msgid "(or place your fingerprint on the reader)" 39 | msgstr "(o col·loqueu l'empremta dactilar al lector)" 40 | 41 | #: fallbacktheme/Greeter.qml:106 42 | msgid "(or use your smartcard)" 43 | msgstr "(o utilitzeu la targeta intel·ligent)" 44 | 45 | #: fallbacktheme/Greeter.qml:115 46 | msgid "&Switch Users" 47 | msgstr "Canvia d'u&suari" 48 | 49 | #: fallbacktheme/Greeter.qml:122 50 | msgid "Un&lock" 51 | msgstr "Desb&loqueja" 52 | 53 | #: fallbacktheme/Greeter.qml:134 54 | msgid "Unlocking failed" 55 | msgstr "Ha fallat el desbloqueig" 56 | 57 | #: main.cpp:123 58 | #, kde-format 59 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 60 | msgstr "" 61 | "Benvinguda per al bloqueig de la pantalla dels espais de treball Plasma de " 62 | "KDE" 63 | 64 | #: main.cpp:127 65 | #, kde-format 66 | msgid "Starts the greeter in testing mode" 67 | msgstr "Inicia la pantalla de benvinguda en el mode de prova" 68 | 69 | #: main.cpp:130 70 | #, kde-format 71 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 72 | msgstr "" 73 | "Inicia la pantalla de benvinguda amb el tema seleccionat de l'intèrpret " 74 | "d'ordres (només en el mode de prova)" 75 | 76 | #: main.cpp:134 77 | #, kde-format 78 | msgid "Lock immediately, ignoring any grace time etc." 79 | msgstr "Bloqueja immediatament, ignorant qualsevol període de gràcia, etc." 80 | 81 | #: main.cpp:136 82 | #, kde-format 83 | msgid "Delay till the lock user interface gets shown in milliseconds." 84 | msgstr "" 85 | "Retard fins que es mostra la interfície de bloqueig d'usuari, en " 86 | "mil·lisegons." 87 | 88 | #: main.cpp:139 89 | #, kde-format 90 | msgid "Don't show any lock user interface." 91 | msgstr "No mostres cap interfície de bloqueig d'usuari." 92 | 93 | #: main.cpp:141 94 | #, kde-format 95 | msgid "File descriptor for connecting to ksld." 96 | msgstr "Descriptor de fitxer per a connectar amb «ksld»." 97 | -------------------------------------------------------------------------------- /po/cs/kscreenlocker.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) YEAR This_file_is_part_of_KDE 2 | # This file is distributed under the same license as the PACKAGE package. 3 | # SPDX-FileCopyrightText: 2012, 2013, 2014, 2015, 2020, 2025 Vit Pelcak 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: \n" 8 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 9 | "POT-Creation-Date: 2025-09-21 00:43+0000\n" 10 | "PO-Revision-Date: 2025-05-16 14:52+0200\n" 11 | "Last-Translator: Vit Pelcak \n" 12 | "Language-Team: Czech \n" 13 | "Language: cs\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" 18 | "X-Generator: Lokalize 25.04.1\n" 19 | "X-Language: cs_CZ\n" 20 | "X-Source-Language: en_US\n" 21 | 22 | #: abstractlocker.cpp:43 23 | #, kde-format 24 | msgid "" 25 | "The screen locker is broken and unlocking is not possible anymore.\n" 26 | "In order to unlock it either ConsoleKit or LoginD is needed, neither\n" 27 | "of which could be found on your system." 28 | msgstr "" 29 | 30 | #: abstractlocker.cpp:47 31 | #, kde-format 32 | msgctxt "%1 = other terminal" 33 | msgid "" 34 | "The screen locker is broken and unlocking is not possible anymore.\n" 35 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 36 | "log in as root and execute the command:\n" 37 | "\n" 38 | "# ck-unlock-session \n" 39 | "\n" 40 | msgstr "" 41 | 42 | #: abstractlocker.cpp:52 43 | #, kde-format 44 | msgctxt "%1 = other terminal, %2 = session ID, %3 = this terminal" 45 | msgid "" 46 | "The screen locker is broken and unlocking is not possible anymore.\n" 47 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 48 | "log in to your account and execute the command:\n" 49 | "\n" 50 | "loginctl unlock-session %2\n" 51 | "\n" 52 | "Then log out of the virtual session by pressing Ctrl+D, and switch\n" 53 | "back to the running session (Ctrl+Alt+F%3).\n" 54 | "Should you have forgotten the instructions, you can get back to this\n" 55 | "screen by pressing Ctrl+Alt+F%3\n" 56 | "\n" 57 | msgstr "" 58 | 59 | #: ksldapp.cpp:183 60 | #, kde-format 61 | msgctxt "" 62 | "Name of a category in System Settings' Shortcuts KCM; match it exactly" 63 | msgid "Session Management" 64 | msgstr "Správa sezení" 65 | 66 | #: ksldapp.cpp:185 67 | #, kde-format 68 | msgid "Lock Session" 69 | msgstr "Uzamknout sezení" 70 | 71 | #: ksldapp.cpp:451 72 | #, kde-format 73 | msgid "Screen locked" 74 | msgstr "Obrazovka uzamčena" 75 | 76 | #: ksldapp.cpp:619 77 | #, kde-format 78 | msgid "Screen unlocked" 79 | msgstr "Obrazovka odemknuta" 80 | 81 | #: logind.cpp:161 82 | #, kde-format 83 | msgid "Screen Locker" 84 | msgstr "Zámek obrazovky" 85 | 86 | #: logind.cpp:161 87 | #, kde-format 88 | msgid "Ensuring that the screen gets locked before going to sleep" 89 | msgstr "Zajistí, že se obrazovka zamkne před přechodem do režimu spánku" 90 | -------------------------------------------------------------------------------- /po/cs/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) YEAR This_file_is_part_of_KDE 2 | # This file is distributed under the same license as the PACKAGE package. 3 | # SPDX-FileCopyrightText: 2012, 2013, 2014, 2016, 2021, 2024 Vit Pelcak 4 | # Tomáš Chvátal , 2013. 5 | # Lukáš Tinkl , 2013. 6 | # 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: \n" 10 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 11 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 12 | "PO-Revision-Date: 2024-07-03 10:41+0200\n" 13 | "Last-Translator: Vit Pelcak \n" 14 | "Language-Team: Czech \n" 15 | "Language: cs\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" 20 | "X-Generator: Lokalize 24.05.1\n" 21 | "X-Language: cs_CZ\n" 22 | "X-Source-Language: en_US\n" 23 | 24 | #: fallbacktheme/Greeter.qml:59 25 | msgid "Warning: Caps Lock on" 26 | msgstr "Varování: CapsLock zapnut" 27 | 28 | #: fallbacktheme/Greeter.qml:75 29 | msgid "The session is locked" 30 | msgstr "Sezení je uzamčeno" 31 | 32 | #: fallbacktheme/Greeter.qml:76 33 | msgid "The session has been locked by %1" 34 | msgstr "Sezení bylo uzamčeno uživatelem %1" 35 | 36 | #: fallbacktheme/Greeter.qml:100 37 | msgid "(or place your fingerprint on the reader)" 38 | msgstr "" 39 | 40 | #: fallbacktheme/Greeter.qml:106 41 | msgid "(or use your smartcard)" 42 | msgstr "" 43 | 44 | #: fallbacktheme/Greeter.qml:115 45 | msgid "&Switch Users" 46 | msgstr "&Přepnout uživatele" 47 | 48 | #: fallbacktheme/Greeter.qml:122 49 | msgid "Un&lock" 50 | msgstr "Odem&knout" 51 | 52 | #: fallbacktheme/Greeter.qml:134 53 | msgid "Unlocking failed" 54 | msgstr "Odemčení selhalo" 55 | 56 | #: main.cpp:123 57 | #, kde-format 58 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 59 | msgstr "Uvítací obrazovka pro zámek obrazovky KDE Plasma Workspaces" 60 | 61 | #: main.cpp:127 62 | #, kde-format 63 | msgid "Starts the greeter in testing mode" 64 | msgstr "Spustit sezení v testovacím režimu" 65 | 66 | #: main.cpp:130 67 | #, kde-format 68 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 69 | msgstr "" 70 | "Spustí uvítací obrazovku se zvoleným motivem (pouze v testovacím režimu)" 71 | 72 | #: main.cpp:134 73 | #, kde-format 74 | msgid "Lock immediately, ignoring any grace time etc." 75 | msgstr "Okamžitě uzamknout bez čekání apod." 76 | 77 | #: main.cpp:136 78 | #, kde-format 79 | msgid "Delay till the lock user interface gets shown in milliseconds." 80 | msgstr "" 81 | "Nastavit zpoždění v milisekundách před tím, než se objeví zámek obrazovky." 82 | 83 | #: main.cpp:139 84 | #, kde-format 85 | msgid "Don't show any lock user interface." 86 | msgstr "Nezobrazovat rozhraní pro zamčení uživatele." 87 | 88 | #: main.cpp:141 89 | #, kde-format 90 | msgid "File descriptor for connecting to ksld." 91 | msgstr "Popisovač souboru pro připojení ke ksld." 92 | -------------------------------------------------------------------------------- /po/en_GB/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) YEAR This_file_is_part_of_KDE 2 | # This file is distributed under the same license as the PACKAGE package. 3 | # 4 | # SPDX-FileCopyrightText: 2014, 2015, 2016, 2024 Steve Allewell 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: \n" 8 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 9 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 10 | "PO-Revision-Date: 2024-06-29 11:25+0100\n" 11 | "Last-Translator: Steve Allewell \n" 12 | "Language-Team: British English\n" 13 | "Language: en_GB\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 18 | "X-Generator: Lokalize 24.05.0\n" 19 | 20 | #: fallbacktheme/Greeter.qml:59 21 | msgid "Warning: Caps Lock on" 22 | msgstr "" 23 | 24 | #: fallbacktheme/Greeter.qml:75 25 | msgid "The session is locked" 26 | msgstr "" 27 | 28 | #: fallbacktheme/Greeter.qml:76 29 | msgid "The session has been locked by %1" 30 | msgstr "" 31 | 32 | #: fallbacktheme/Greeter.qml:100 33 | msgid "(or place your fingerprint on the reader)" 34 | msgstr "" 35 | 36 | #: fallbacktheme/Greeter.qml:106 37 | msgid "(or use your smartcard)" 38 | msgstr "" 39 | 40 | #: fallbacktheme/Greeter.qml:115 41 | msgid "&Switch Users" 42 | msgstr "" 43 | 44 | #: fallbacktheme/Greeter.qml:122 45 | msgid "Un&lock" 46 | msgstr "" 47 | 48 | #: fallbacktheme/Greeter.qml:134 49 | msgid "Unlocking failed" 50 | msgstr "" 51 | 52 | #: main.cpp:123 53 | #, kde-format 54 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 55 | msgstr "Greeter for the KDE Plasma Workspaces Screen locker" 56 | 57 | #: main.cpp:127 58 | #, kde-format 59 | msgid "Starts the greeter in testing mode" 60 | msgstr "Starts the greeter in testing mode" 61 | 62 | #: main.cpp:130 63 | #, kde-format 64 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 65 | msgstr "" 66 | "Starts the greeter with the selected shell theme (only in Testing mode)" 67 | 68 | #: main.cpp:134 69 | #, kde-format 70 | msgid "Lock immediately, ignoring any grace time etc." 71 | msgstr "Lock immediately, ignoring any grace time etc." 72 | 73 | #: main.cpp:136 74 | #, kde-format 75 | msgid "Delay till the lock user interface gets shown in milliseconds." 76 | msgstr "Delay till the lock user interface gets shown in milliseconds." 77 | 78 | #: main.cpp:139 79 | #, kde-format 80 | msgid "Don't show any lock user interface." 81 | msgstr "Do not show any lock user interface." 82 | 83 | #: main.cpp:141 84 | #, kde-format 85 | msgid "File descriptor for connecting to ksld." 86 | msgstr "File descriptor for connecting to ksld." 87 | 88 | #~ msgid "Default to the switch user UI." 89 | #~ msgstr "Default to the switch user UI." 90 | 91 | #~ msgid "Session" 92 | #~ msgstr "Session" 93 | 94 | #~ msgid "Location" 95 | #~ msgstr "Location" 96 | -------------------------------------------------------------------------------- /po/eo/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # translation of kscreenlocker_greet.pot to Esperanto 2 | # Copyright (C) 2022 Free Software Foundation, Inc. 3 | # This file is distributed under the same license as the kscreenlocker package. 4 | # Oliver Kellogg , 2023. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kscreenlocker\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 11 | "PO-Revision-Date: 2024-06-29 10:05+0200\n" 12 | "Last-Translator: Oliver Kellogg \n" 13 | "Language-Team: Esperanto \n" 14 | "Language: eo\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Generator: translate-po (https://github.com/zcribe/translate-po)\n" 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 20 | 21 | #: fallbacktheme/Greeter.qml:59 22 | msgid "Warning: Caps Lock on" 23 | msgstr "" 24 | 25 | #: fallbacktheme/Greeter.qml:75 26 | msgid "The session is locked" 27 | msgstr "" 28 | 29 | #: fallbacktheme/Greeter.qml:76 30 | msgid "The session has been locked by %1" 31 | msgstr "" 32 | 33 | #: fallbacktheme/Greeter.qml:100 34 | msgid "(or place your fingerprint on the reader)" 35 | msgstr "" 36 | 37 | #: fallbacktheme/Greeter.qml:106 38 | msgid "(or use your smartcard)" 39 | msgstr "" 40 | 41 | #: fallbacktheme/Greeter.qml:115 42 | msgid "&Switch Users" 43 | msgstr "" 44 | 45 | #: fallbacktheme/Greeter.qml:122 46 | msgid "Un&lock" 47 | msgstr "" 48 | 49 | #: fallbacktheme/Greeter.qml:134 50 | msgid "Unlocking failed" 51 | msgstr "" 52 | 53 | #: main.cpp:123 54 | #, kde-format 55 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 56 | msgstr "Salutilo por la KDE Plasma Workspaces Ekranŝlosilo" 57 | 58 | #: main.cpp:127 59 | #, kde-format 60 | msgid "Starts the greeter in testing mode" 61 | msgstr "Lanĉas la salutilon en prova reĝimo" 62 | 63 | #: main.cpp:130 64 | #, kde-format 65 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 66 | msgstr "Lanĉas la salutilon kun la elektita ŝel-etoso (nur en Testa reĝimo)" 67 | 68 | #: main.cpp:134 69 | #, kde-format 70 | msgid "Lock immediately, ignoring any grace time etc." 71 | msgstr "Ŝlosi tuj, ignorante ajnan gracan tempon ktp." 72 | 73 | #: main.cpp:136 74 | #, kde-format 75 | msgid "Delay till the lock user interface gets shown in milliseconds." 76 | msgstr "Prokrasto ĝis la ŝlosila uzantinterfaco montriĝas en milisekundoj." 77 | 78 | #: main.cpp:139 79 | #, kde-format 80 | msgid "Don't show any lock user interface." 81 | msgstr "Ne montri ajnan seruran uzantinterfacon." 82 | 83 | #: main.cpp:141 84 | #, kde-format 85 | msgid "File descriptor for connecting to ksld." 86 | msgstr "Dosiera priskribilo por konekti al ksld." 87 | 88 | #~ msgid "Default to the switch user UI." 89 | #~ msgstr "Defaŭlte al la ŝanĝa uzanto UI." 90 | -------------------------------------------------------------------------------- /po/es/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Spanish translations for kscreenlocker_greet.po package. 2 | # Copyright (C) 2012-2025 This file is copyright: 3 | # This file is distributed under the same license as the kscreenlocker package. 4 | # 5 | # SPDX-FileCopyrightText: 2012, 2013, 2014, 2015, 2016, 2024, 2025 Eloy Cuadra 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kscreenlocker_greet\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 11 | "PO-Revision-Date: 2025-07-24 19:50+0100\n" 12 | "Last-Translator: Eloy Cuadra \n" 13 | "Language-Team: Spanish \n" 14 | "Language: es\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 19 | "X-Generator: Lokalize 25.04.3\n" 20 | 21 | #: fallbacktheme/Greeter.qml:59 22 | msgid "Warning: Caps Lock on" 23 | msgstr "Advertencia: Bloqueo de mayúsculas activado" 24 | 25 | #: fallbacktheme/Greeter.qml:75 26 | msgid "The session is locked" 27 | msgstr "La sesión está bloqueada" 28 | 29 | #: fallbacktheme/Greeter.qml:76 30 | msgid "The session has been locked by %1" 31 | msgstr "La sesión ha sido bloqueada por %1" 32 | 33 | #: fallbacktheme/Greeter.qml:100 34 | msgid "(or place your fingerprint on the reader)" 35 | msgstr "(o coloque el dedo en el lector de huellas)" 36 | 37 | #: fallbacktheme/Greeter.qml:106 38 | msgid "(or use your smartcard)" 39 | msgstr "(o use su tarjeta inteligente)" 40 | 41 | #: fallbacktheme/Greeter.qml:115 42 | msgid "&Switch Users" 43 | msgstr "&Cambiar usuarios" 44 | 45 | #: fallbacktheme/Greeter.qml:122 46 | msgid "Un&lock" 47 | msgstr "Desb&loquear" 48 | 49 | #: fallbacktheme/Greeter.qml:134 50 | msgid "Unlocking failed" 51 | msgstr "El desbloqueo ha fallado" 52 | 53 | #: main.cpp:123 54 | #, kde-format 55 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 56 | msgstr "" 57 | "Bienvenida del bloqueo de pantalla del espacio de trabajo Plasma de KDE" 58 | 59 | #: main.cpp:127 60 | #, kde-format 61 | msgid "Starts the greeter in testing mode" 62 | msgstr "Inicia la bienvenida en modo de pruebas" 63 | 64 | #: main.cpp:130 65 | #, kde-format 66 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 67 | msgstr "" 68 | "Inicia la bienvenida con el tema seleccionado en la interfaz gráfica (solo " 69 | "en modo de pruebas)" 70 | 71 | #: main.cpp:134 72 | #, kde-format 73 | msgid "Lock immediately, ignoring any grace time etc." 74 | msgstr "Bloquear inmediatamente, ignorando cualquier tiempo concedido, etc." 75 | 76 | #: main.cpp:136 77 | #, kde-format 78 | msgid "Delay till the lock user interface gets shown in milliseconds." 79 | msgstr "" 80 | "Retrasar hasta que la interfaz de usuario de bloqueo se muestre (en " 81 | "milisegundos)." 82 | 83 | #: main.cpp:139 84 | #, kde-format 85 | msgid "Don't show any lock user interface." 86 | msgstr "No mostrar ninguna interfaz de usuario de bloqueo." 87 | 88 | #: main.cpp:141 89 | #, kde-format 90 | msgid "File descriptor for connecting to ksld." 91 | msgstr "Descriptor de archivo para conectar a ksld." 92 | 93 | #~ msgid "Default to the switch user UI." 94 | #~ msgstr "Por omisión para la interfaz de cambio de usuario." 95 | -------------------------------------------------------------------------------- /po/eu/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Translation of kscreenlocker_greet.po to Euskara/Basque (eu). 2 | # Copyright (C) 2017, The Free Software Foundation. 3 | # Copyright (C) 2018-2025 This file is copyright: 4 | # This file is distributed under the same license as the kscreenlocker package. 5 | # SPDX-FileCopyrightText: 2024, 2025 KDE Euskaratzeko proiektuaren arduraduna 6 | # 7 | # Translators: 8 | # Iñigo Salvador Azurmendi , 2017, 2025. 9 | msgid "" 10 | msgstr "" 11 | "Project-Id-Version: kscreenlocker_greet\n" 12 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 13 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 14 | "PO-Revision-Date: 2025-07-23 13:03+0200\n" 15 | "Last-Translator: Iñigo Salvador Azurmendi \n" 16 | "Language-Team: Basque \n" 17 | "Language: eu\n" 18 | "MIME-Version: 1.0\n" 19 | "Content-Type: text/plain; charset=UTF-8\n" 20 | "Content-Transfer-Encoding: 8bit\n" 21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 22 | "X-Generator: Lokalize 25.04.3\n" 23 | 24 | #: fallbacktheme/Greeter.qml:59 25 | msgid "Warning: Caps Lock on" 26 | msgstr "Abisua: Maius Giltzatuta" 27 | 28 | #: fallbacktheme/Greeter.qml:75 29 | msgid "The session is locked" 30 | msgstr "Saioa giltzatuta dago" 31 | 32 | #: fallbacktheme/Greeter.qml:76 33 | msgid "The session has been locked by %1" 34 | msgstr "Saioa %1(e)k giltzatu du" 35 | 36 | #: fallbacktheme/Greeter.qml:100 37 | msgid "(or place your fingerprint on the reader)" 38 | msgstr "(edo ipini zure hatz-marka irakurgailuan)" 39 | 40 | #: fallbacktheme/Greeter.qml:106 41 | msgid "(or use your smartcard)" 42 | msgstr "(edo erabili zure txartel-adimenduna)" 43 | 44 | #: fallbacktheme/Greeter.qml:115 45 | msgid "&Switch Users" 46 | msgstr "Al&datu erabiltzaileak" 47 | 48 | #: fallbacktheme/Greeter.qml:122 49 | msgid "Un&lock" 50 | msgstr "Gi<zapetik askatu" 51 | 52 | #: fallbacktheme/Greeter.qml:134 53 | msgid "Unlocking failed" 54 | msgstr "Giltzapetik askatzea huts egin du" 55 | 56 | #: main.cpp:123 57 | #, kde-format 58 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 59 | msgstr "KDE Plasma Languneen pantaila giltzatzailearen harreragilea" 60 | 61 | #: main.cpp:127 62 | #, kde-format 63 | msgid "Starts the greeter in testing mode" 64 | msgstr "Harreragilea proba moduan abiarazten du" 65 | 66 | #: main.cpp:130 67 | #, kde-format 68 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 69 | msgstr "" 70 | "Harreragilea hautatutako oskolerako gaiarekin abiarazten du (Proba moduan " 71 | "bakarrik)" 72 | 73 | #: main.cpp:134 74 | #, kde-format 75 | msgid "Lock immediately, ignoring any grace time etc." 76 | msgstr "Giltzatu berehala, luzapen denborei etab. begiratu gabe" 77 | 78 | #: main.cpp:136 79 | #, kde-format 80 | msgid "Delay till the lock user interface gets shown in milliseconds." 81 | msgstr "" 82 | "Atzeratu erabiltzailea giltzatzeko interfazea milisegundotan erakutsi arte." 83 | 84 | #: main.cpp:139 85 | #, kde-format 86 | msgid "Don't show any lock user interface." 87 | msgstr "Ez erakutsi erabiltzailea giltzatzeko interfazerik." 88 | 89 | #: main.cpp:141 90 | #, kde-format 91 | msgid "File descriptor for connecting to ksld." 92 | msgstr "ksld-ra konektatzeko fitxategi deskriptorea." 93 | 94 | #~ msgid "Default to the switch user UI." 95 | #~ msgstr "Lehenetsi aldatu erabiltzailea erabiltzaile interfazera." 96 | -------------------------------------------------------------------------------- /po/he/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) YEAR This_file_is_part_of_KDE 2 | # This file is distributed under the same license as the PACKAGE package. 3 | # 4 | # Diego Iastrubni , 2012, 2013. 5 | # elkana bardugo , 2016. 6 | # Elkana Bardugo , 2017. #zanata 7 | # SPDX-FileCopyrightText: 2023, 2024, 2025 Yaron Shahrabani 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: kscreenlocker_greet\n" 11 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 12 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 13 | "PO-Revision-Date: 2025-07-24 09:55+0300\n" 14 | "Last-Translator: Yaron Shahrabani \n" 15 | "Language-Team: צוות התרגום של KDE ישראל\n" 16 | "Language: he\n" 17 | "MIME-Version: 1.0\n" 18 | "Content-Type: text/plain; charset=UTF-8\n" 19 | "Content-Transfer-Encoding: 8bit\n" 20 | "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " 21 | "n % 10 == 0) ? 2 : 3));\n" 22 | "X-Generator: Lokalize 25.04.3\n" 23 | 24 | #: fallbacktheme/Greeter.qml:59 25 | msgid "Warning: Caps Lock on" 26 | msgstr "אזהרה: Caps Lock פעיל" 27 | 28 | #: fallbacktheme/Greeter.qml:75 29 | msgid "The session is locked" 30 | msgstr "ההפעלה נעולה" 31 | 32 | #: fallbacktheme/Greeter.qml:76 33 | msgid "The session has been locked by %1" 34 | msgstr "ההפעלה ננעלה על ידי %1" 35 | 36 | #: fallbacktheme/Greeter.qml:100 37 | msgid "(or place your fingerprint on the reader)" 38 | msgstr "(או להניח את טביעת האצבע שלך על הקורא)" 39 | 40 | #: fallbacktheme/Greeter.qml:106 41 | msgid "(or use your smartcard)" 42 | msgstr "(או להשתמש בכרטיס החכם שלך)" 43 | 44 | #: fallbacktheme/Greeter.qml:115 45 | msgid "&Switch Users" 46 | msgstr "ה&חלפת משתמשים" 47 | 48 | #: fallbacktheme/Greeter.qml:122 49 | msgid "Un&lock" 50 | msgstr "&שחרור נעילה" 51 | 52 | #: fallbacktheme/Greeter.qml:134 53 | msgid "Unlocking failed" 54 | msgstr "שחרור הנעילה נכשל" 55 | 56 | #: main.cpp:123 57 | #, kde-format 58 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 59 | msgstr "מנהל כניסה לנועל המסך של KDE" 60 | 61 | #: main.cpp:127 62 | #, kde-format 63 | msgid "Starts the greeter in testing mode" 64 | msgstr "מפעיל את מנהל הכניסה במצב בדיקה" 65 | 66 | #: main.cpp:130 67 | #, kde-format 68 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 69 | msgstr "מפעיל את מנהל הכניסה עם ערכת העיצוב הנבחרת למעטפת (במצב בדיקה בלבד)" 70 | 71 | #: main.cpp:134 72 | #, kde-format 73 | msgid "Lock immediately, ignoring any grace time etc." 74 | msgstr "לנעול מייד, ללא המתנה וכו׳." 75 | 76 | #: main.cpp:136 77 | #, kde-format 78 | msgid "Delay till the lock user interface gets shown in milliseconds." 79 | msgstr "זמן המתנה עד להופעת ממשק נעילת משתמש במילישניות." 80 | 81 | #: main.cpp:139 82 | #, kde-format 83 | msgid "Don't show any lock user interface." 84 | msgstr "לא להציע שום ממשק משתמש לנעילה." 85 | 86 | #: main.cpp:141 87 | #, kde-format 88 | msgid "File descriptor for connecting to ksld." 89 | msgstr "קובץ מגשר לחיבור ל־ksld." 90 | 91 | #~ msgid "Default to the switch user UI." 92 | #~ msgstr "ייסוג לממשק החלפת משתמשים." 93 | -------------------------------------------------------------------------------- /po/hi/kscreenlocker.po: -------------------------------------------------------------------------------- 1 | # Hindi translations for kscreenlocker package. 2 | # Copyright (C) 2024 This file is copyright: 3 | # This file is distributed under the same license as the kscreenlocker package. 4 | # Kali , 2024. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kscreenlocker\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-09-21 00:43+0000\n" 11 | "PO-Revision-Date: 2024-12-15 15:58+0530\n" 12 | "Last-Translator: Kali \n" 13 | "Language-Team: Hindi \n" 14 | "Language: hi\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n!=1);\n" 19 | 20 | #: abstractlocker.cpp:43 21 | #, kde-format 22 | msgid "" 23 | "The screen locker is broken and unlocking is not possible anymore.\n" 24 | "In order to unlock it either ConsoleKit or LoginD is needed, neither\n" 25 | "of which could be found on your system." 26 | msgstr "" 27 | 28 | #: abstractlocker.cpp:47 29 | #, kde-format 30 | msgctxt "%1 = other terminal" 31 | msgid "" 32 | "The screen locker is broken and unlocking is not possible anymore.\n" 33 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 34 | "log in as root and execute the command:\n" 35 | "\n" 36 | "# ck-unlock-session \n" 37 | "\n" 38 | msgstr "" 39 | 40 | #: abstractlocker.cpp:52 41 | #, kde-format 42 | msgctxt "%1 = other terminal, %2 = session ID, %3 = this terminal" 43 | msgid "" 44 | "The screen locker is broken and unlocking is not possible anymore.\n" 45 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 46 | "log in to your account and execute the command:\n" 47 | "\n" 48 | "loginctl unlock-session %2\n" 49 | "\n" 50 | "Then log out of the virtual session by pressing Ctrl+D, and switch\n" 51 | "back to the running session (Ctrl+Alt+F%3).\n" 52 | "Should you have forgotten the instructions, you can get back to this\n" 53 | "screen by pressing Ctrl+Alt+F%3\n" 54 | "\n" 55 | msgstr "" 56 | 57 | #: ksldapp.cpp:183 58 | #, kde-format 59 | msgctxt "" 60 | "Name of a category in System Settings' Shortcuts KCM; match it exactly" 61 | msgid "Session Management" 62 | msgstr "" 63 | 64 | #: ksldapp.cpp:185 65 | #, kde-format 66 | msgid "Lock Session" 67 | msgstr "" 68 | 69 | #: ksldapp.cpp:451 70 | #, kde-format 71 | msgid "Screen locked" 72 | msgstr "" 73 | 74 | #: ksldapp.cpp:619 75 | #, kde-format 76 | msgid "Screen unlocked" 77 | msgstr "" 78 | 79 | #: logind.cpp:161 80 | #, kde-format 81 | msgid "Screen Locker" 82 | msgstr "" 83 | 84 | #: logind.cpp:161 85 | #, kde-format 86 | msgid "Ensuring that the screen gets locked before going to sleep" 87 | msgstr "" 88 | -------------------------------------------------------------------------------- /po/hi/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Hindi translations for kscreenlocker package. 2 | # Copyright (C) 2024 This file is copyright: 3 | # This file is distributed under the same license as the kscreenlocker package. 4 | # Kali , 2024. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kscreenlocker\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 11 | "PO-Revision-Date: 2024-12-15 15:58+0530\n" 12 | "Last-Translator: Kali \n" 13 | "Language-Team: Hindi \n" 14 | "Language: hi\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n!=1);\n" 19 | 20 | #: fallbacktheme/Greeter.qml:59 21 | msgid "Warning: Caps Lock on" 22 | msgstr "" 23 | 24 | #: fallbacktheme/Greeter.qml:75 25 | msgid "The session is locked" 26 | msgstr "" 27 | 28 | #: fallbacktheme/Greeter.qml:76 29 | msgid "The session has been locked by %1" 30 | msgstr "" 31 | 32 | #: fallbacktheme/Greeter.qml:100 33 | msgid "(or place your fingerprint on the reader)" 34 | msgstr "" 35 | 36 | #: fallbacktheme/Greeter.qml:106 37 | msgid "(or use your smartcard)" 38 | msgstr "" 39 | 40 | #: fallbacktheme/Greeter.qml:115 41 | msgid "&Switch Users" 42 | msgstr "" 43 | 44 | #: fallbacktheme/Greeter.qml:122 45 | msgid "Un&lock" 46 | msgstr "" 47 | 48 | #: fallbacktheme/Greeter.qml:134 49 | msgid "Unlocking failed" 50 | msgstr "" 51 | 52 | #: main.cpp:123 53 | #, kde-format 54 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 55 | msgstr "" 56 | 57 | #: main.cpp:127 58 | #, kde-format 59 | msgid "Starts the greeter in testing mode" 60 | msgstr "" 61 | 62 | #: main.cpp:130 63 | #, kde-format 64 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 65 | msgstr "" 66 | 67 | #: main.cpp:134 68 | #, kde-format 69 | msgid "Lock immediately, ignoring any grace time etc." 70 | msgstr "" 71 | 72 | #: main.cpp:136 73 | #, kde-format 74 | msgid "Delay till the lock user interface gets shown in milliseconds." 75 | msgstr "" 76 | 77 | #: main.cpp:139 78 | #, kde-format 79 | msgid "Don't show any lock user interface." 80 | msgstr "" 81 | 82 | #: main.cpp:141 83 | #, kde-format 84 | msgid "File descriptor for connecting to ksld." 85 | msgstr "" 86 | -------------------------------------------------------------------------------- /po/id/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) YEAR This_file_is_part_of_KDE 2 | # This file is distributed under the same license as the PACKAGE package. 3 | # Wantoyo , 2018, 2019. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: \n" 8 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 9 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 10 | "PO-Revision-Date: 2019-01-31 07:47+0700\n" 11 | "Last-Translator: Wantoyo \n" 12 | "Language-Team: Indonesian \n" 13 | "Language: id\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 18 | 19 | #: fallbacktheme/Greeter.qml:59 20 | msgid "Warning: Caps Lock on" 21 | msgstr "" 22 | 23 | #: fallbacktheme/Greeter.qml:75 24 | msgid "The session is locked" 25 | msgstr "" 26 | 27 | #: fallbacktheme/Greeter.qml:76 28 | msgid "The session has been locked by %1" 29 | msgstr "" 30 | 31 | #: fallbacktheme/Greeter.qml:100 32 | msgid "(or place your fingerprint on the reader)" 33 | msgstr "" 34 | 35 | #: fallbacktheme/Greeter.qml:106 36 | msgid "(or use your smartcard)" 37 | msgstr "" 38 | 39 | #: fallbacktheme/Greeter.qml:115 40 | msgid "&Switch Users" 41 | msgstr "" 42 | 43 | #: fallbacktheme/Greeter.qml:122 44 | msgid "Un&lock" 45 | msgstr "" 46 | 47 | #: fallbacktheme/Greeter.qml:134 48 | msgid "Unlocking failed" 49 | msgstr "" 50 | 51 | #: main.cpp:123 52 | #, kde-format 53 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 54 | msgstr "Greeter untuk pengunci Layar Workspaces Plasma KDE" 55 | 56 | #: main.cpp:127 57 | #, kde-format 58 | msgid "Starts the greeter in testing mode" 59 | msgstr "Jalankan greeter dalam mode pengujian" 60 | 61 | #: main.cpp:130 62 | #, fuzzy, kde-format 63 | #| msgid "Starts the greeter with the selected theme (only in Testing mode)" 64 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 65 | msgstr "Jalankan greeter dengan tema terpilih (hanya dalam mode Pengujian)" 66 | 67 | #: main.cpp:134 68 | #, kde-format 69 | msgid "Lock immediately, ignoring any grace time etc." 70 | msgstr "Kunci seketika, abaikan perwaktuan dll." 71 | 72 | #: main.cpp:136 73 | #, kde-format 74 | msgid "Delay till the lock user interface gets shown in milliseconds." 75 | msgstr "Tunda sampai UI kunci tampil dalam milidetik." 76 | 77 | #: main.cpp:139 78 | #, kde-format 79 | msgid "Don't show any lock user interface." 80 | msgstr "Jangan tampilkan UI kunci apa pun." 81 | 82 | #: main.cpp:141 83 | #, kde-format 84 | msgid "File descriptor for connecting to ksld." 85 | msgstr "Pendeskripsi file untuk mengkoneksikan ke ksld." 86 | 87 | #~ msgid "Default to the switch user UI." 88 | #~ msgstr "Bakukan ke UI alihan pengguna." 89 | -------------------------------------------------------------------------------- /po/is/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2023 This file is copyright: 2 | # This file is distributed under the same license as the kscreenlocker package. 3 | # 4 | # SPDX-FileCopyrightText: 2023, 2024 Guðmundur Erlingsson 5 | # SPDX-FileCopyrightText: 2025 Sveinn í Felli 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kscreenlocker\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 11 | "PO-Revision-Date: 2025-10-23 14:08+0000\n" 12 | "Last-Translator: Sveinn í Felli \n" 13 | "Language-Team: Icelandic\n" 14 | "Language: is\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" 19 | "X-Generator: Lokalize 23.08.5\n" 20 | 21 | #: fallbacktheme/Greeter.qml:59 22 | msgid "Warning: Caps Lock on" 23 | msgstr "Aðvörun: Caps Lock hástafalás er á" 24 | 25 | #: fallbacktheme/Greeter.qml:75 26 | msgid "The session is locked" 27 | msgstr "Setan er læst" 28 | 29 | #: fallbacktheme/Greeter.qml:76 30 | msgid "The session has been locked by %1" 31 | msgstr "Setunni var læst af %1" 32 | 33 | #: fallbacktheme/Greeter.qml:100 34 | msgid "(or place your fingerprint on the reader)" 35 | msgstr "(eða settu fingrafarið þitt á lesarann)" 36 | 37 | #: fallbacktheme/Greeter.qml:106 38 | msgid "(or use your smartcard)" 39 | msgstr "(eða notaðu snjallkortið þitt)" 40 | 41 | #: fallbacktheme/Greeter.qml:115 42 | msgid "&Switch Users" 43 | msgstr "&Skipta um notendur" 44 | 45 | #: fallbacktheme/Greeter.qml:122 46 | msgid "Un&lock" 47 | msgstr "Af&læsa" 48 | 49 | #: fallbacktheme/Greeter.qml:134 50 | msgid "Unlocking failed" 51 | msgstr "Mistókst að aflæsa" 52 | 53 | #: main.cpp:123 54 | #, kde-format 55 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 56 | msgstr "Kveðjuviðmót fyrir KDE Plasma skjálæsinguna" 57 | 58 | #: main.cpp:127 59 | #, kde-format 60 | msgid "Starts the greeter in testing mode" 61 | msgstr "Byrjar kveðjuviðmótið í prufusniði" 62 | 63 | #: main.cpp:130 64 | #, kde-format 65 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 66 | msgstr "Byrjar kveðjuviðmótið með valda skeljaþemana (aðeins í prufusniði)" 67 | 68 | #: main.cpp:134 69 | #, kde-format 70 | msgid "Lock immediately, ignoring any grace time etc." 71 | msgstr "Læsa strax, hunsa allan náðartíma o.s.frv." 72 | 73 | #: main.cpp:136 74 | #, kde-format 75 | msgid "Delay till the lock user interface gets shown in milliseconds." 76 | msgstr "Bið þar til læsiviðmótið birtist í millisekúndum." 77 | 78 | #: main.cpp:139 79 | #, kde-format 80 | msgid "Don't show any lock user interface." 81 | msgstr "Ekki sýna neitt læsiviðmót." 82 | 83 | #: main.cpp:141 84 | #, kde-format 85 | msgid "File descriptor for connecting to ksld." 86 | msgstr "Skráarlýsir fyrir tengingu við ksld." 87 | 88 | #~ msgid "Default to the switch user UI." 89 | #~ msgstr "Fara sjálfgefið í viðmót til að skipta um notanda." 90 | -------------------------------------------------------------------------------- /po/ja/kscreenlocker.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2022, 2025 Ryuichi Yamada 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: kscreenlocker\n" 5 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 6 | "POT-Creation-Date: 2025-09-21 00:43+0000\n" 7 | "PO-Revision-Date: 2025-03-15 14:28+0900\n" 8 | "Last-Translator: Ryuichi Yamada \n" 9 | "Language-Team: Japanese \n" 10 | "Language: ja\n" 11 | "MIME-Version: 1.0\n" 12 | "Content-Type: text/plain; charset=UTF-8\n" 13 | "Content-Transfer-Encoding: 8bit\n" 14 | "Plural-Forms: nplurals=1; plural=0;\n" 15 | "X-Accelerator-Marker: &\n" 16 | "X-Text-Markup: kde4\n" 17 | "X-Generator: Lokalize 24.12.3\n" 18 | 19 | #: abstractlocker.cpp:43 20 | #, kde-format 21 | msgid "" 22 | "The screen locker is broken and unlocking is not possible anymore.\n" 23 | "In order to unlock it either ConsoleKit or LoginD is needed, neither\n" 24 | "of which could be found on your system." 25 | msgstr "" 26 | "スクリーンロッカーが壊れているため、アンロックできません。\n" 27 | "アンロックするためには ConsoleKit か LoginD が必要ですが、\n" 28 | "どちらともシステム上に見つかりませんでした。" 29 | 30 | #: abstractlocker.cpp:47 31 | #, kde-format 32 | msgctxt "%1 = other terminal" 33 | msgid "" 34 | "The screen locker is broken and unlocking is not possible anymore.\n" 35 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 36 | "log in as root and execute the command:\n" 37 | "\n" 38 | "# ck-unlock-session \n" 39 | "\n" 40 | msgstr "" 41 | "スクリーンロッカーが壊れているため、アンロックできません。\n" 42 | "アンロックするには、仮想ターミナルに切り替えて (例: Ctrl+Alt+F%1)\n" 43 | "root としてログインし、以下のコマンドを実行してください:\n" 44 | "\n" 45 | "# ck-unlock-session \n" 46 | "\n" 47 | 48 | #: abstractlocker.cpp:52 49 | #, kde-format 50 | msgctxt "%1 = other terminal, %2 = session ID, %3 = this terminal" 51 | msgid "" 52 | "The screen locker is broken and unlocking is not possible anymore.\n" 53 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 54 | "log in to your account and execute the command:\n" 55 | "\n" 56 | "loginctl unlock-session %2\n" 57 | "\n" 58 | "Then log out of the virtual session by pressing Ctrl+D, and switch\n" 59 | "back to the running session (Ctrl+Alt+F%3).\n" 60 | "Should you have forgotten the instructions, you can get back to this\n" 61 | "screen by pressing Ctrl+Alt+F%3\n" 62 | "\n" 63 | msgstr "" 64 | "スクリーンロッカーが壊れているため、アンロックできません。\n" 65 | "アンロックするには、仮想ターミナルに切り替えて (例: Ctrl+Alt+F%1)\n" 66 | "あなたのアカウントにログインし、以下のコマンドを実行してください:\n" 67 | "\n" 68 | "loginctl unlock-session %2\n" 69 | "\n" 70 | "その後、Ctrl+D を押して仮想セッションからログアウトし、\n" 71 | "実行中のセッションに戻ってください。(Ctrl+Alt+F%3)\n" 72 | "手順を忘れた場合は、Ctrl+Alt+F%3を押すと\n" 73 | "この画面に戻ることができます。\n" 74 | "\n" 75 | 76 | #: ksldapp.cpp:183 77 | #, kde-format 78 | msgctxt "" 79 | "Name of a category in System Settings' Shortcuts KCM; match it exactly" 80 | msgid "Session Management" 81 | msgstr "セッション管理" 82 | 83 | #: ksldapp.cpp:185 84 | #, kde-format 85 | msgid "Lock Session" 86 | msgstr "スクリーンをロック" 87 | 88 | #: ksldapp.cpp:451 89 | #, kde-format 90 | msgid "Screen locked" 91 | msgstr "スクリーンがロックされました" 92 | 93 | #: ksldapp.cpp:619 94 | #, kde-format 95 | msgid "Screen unlocked" 96 | msgstr "スクリーンがアンロックされました" 97 | 98 | #: logind.cpp:161 99 | #, kde-format 100 | msgid "Screen Locker" 101 | msgstr "スクリーンロッカー" 102 | 103 | #: logind.cpp:161 104 | #, kde-format 105 | msgid "Ensuring that the screen gets locked before going to sleep" 106 | msgstr "スリープする前にスクリーンがロックされることを確実にしています" 107 | -------------------------------------------------------------------------------- /po/ja/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: kscreenlocker_greet\n" 4 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 5 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 6 | "PO-Revision-Date: 2012-10-08 18:39-0700\n" 7 | "Last-Translator: Japanese KDE translation team \n" 8 | "Language-Team: Japanese \n" 9 | "Language: ja\n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "Plural-Forms: nplurals=1; plural=0;\n" 14 | "X-Accelerator-Marker: &\n" 15 | "X-Text-Markup: kde4\n" 16 | 17 | #: fallbacktheme/Greeter.qml:59 18 | msgid "Warning: Caps Lock on" 19 | msgstr "" 20 | 21 | #: fallbacktheme/Greeter.qml:75 22 | msgid "The session is locked" 23 | msgstr "" 24 | 25 | #: fallbacktheme/Greeter.qml:76 26 | msgid "The session has been locked by %1" 27 | msgstr "" 28 | 29 | #: fallbacktheme/Greeter.qml:100 30 | msgid "(or place your fingerprint on the reader)" 31 | msgstr "" 32 | 33 | #: fallbacktheme/Greeter.qml:106 34 | msgid "(or use your smartcard)" 35 | msgstr "" 36 | 37 | #: fallbacktheme/Greeter.qml:115 38 | msgid "&Switch Users" 39 | msgstr "" 40 | 41 | #: fallbacktheme/Greeter.qml:122 42 | msgid "Un&lock" 43 | msgstr "" 44 | 45 | #: fallbacktheme/Greeter.qml:134 46 | msgid "Unlocking failed" 47 | msgstr "" 48 | 49 | #: main.cpp:123 50 | #, kde-format 51 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 52 | msgstr "" 53 | 54 | #: main.cpp:127 55 | #, kde-format 56 | msgid "Starts the greeter in testing mode" 57 | msgstr "" 58 | 59 | #: main.cpp:130 60 | #, kde-format 61 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 62 | msgstr "" 63 | 64 | #: main.cpp:134 65 | #, kde-format 66 | msgid "Lock immediately, ignoring any grace time etc." 67 | msgstr "" 68 | 69 | #: main.cpp:136 70 | #, kde-format 71 | msgid "Delay till the lock user interface gets shown in milliseconds." 72 | msgstr "" 73 | 74 | #: main.cpp:139 75 | #, kde-format 76 | msgid "Don't show any lock user interface." 77 | msgstr "" 78 | 79 | #: main.cpp:141 80 | #, kde-format 81 | msgid "File descriptor for connecting to ksld." 82 | msgstr "" 83 | -------------------------------------------------------------------------------- /po/ka/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR This file is copyright: 3 | # This file is distributed under the same license as the kscreenlocker package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kscreenlocker\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 11 | "PO-Revision-Date: 2025-07-23 03:53+0200\n" 12 | "Last-Translator: Temuri Doghonadze \n" 13 | "Language-Team: Georgian \n" 14 | "Language: ka\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | "X-Generator: Poedit 3.6\n" 20 | 21 | #: fallbacktheme/Greeter.qml:59 22 | msgid "Warning: Caps Lock on" 23 | msgstr "გაფრთხილება: CapsLock ჩართულია" 24 | 25 | #: fallbacktheme/Greeter.qml:75 26 | msgid "The session is locked" 27 | msgstr "სესია დაბლოკილია" 28 | 29 | #: fallbacktheme/Greeter.qml:76 30 | msgid "The session has been locked by %1" 31 | msgstr "სესია დაბლოკილია %1-ის მიერ" 32 | 33 | #: fallbacktheme/Greeter.qml:100 34 | msgid "(or place your fingerprint on the reader)" 35 | msgstr "(ან მოათავსეთ თითი ანაბეჭდის წამკითხავზე)" 36 | 37 | #: fallbacktheme/Greeter.qml:106 38 | msgid "(or use your smartcard)" 39 | msgstr "(ან გამოიყენეთ თქვენი სმარტ-ბარათი)" 40 | 41 | #: fallbacktheme/Greeter.qml:115 42 | msgid "&Switch Users" 43 | msgstr "მომხმარებლები&ს გადართვა" 44 | 45 | #: fallbacktheme/Greeter.qml:122 46 | msgid "Un&lock" 47 | msgstr "განბ&ლოკვა" 48 | 49 | #: fallbacktheme/Greeter.qml:134 50 | msgid "Unlocking failed" 51 | msgstr "განბლოკვის შეცდომა" 52 | 53 | #: main.cpp:123 54 | #, kde-format 55 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 56 | msgstr "KDE Plasma სამუშაო გარემოს ეკრანის დამბლოკის შემგებებელი" 57 | 58 | #: main.cpp:127 59 | #, kde-format 60 | msgid "Starts the greeter in testing mode" 61 | msgstr "შემგებებლის სატესტო რეჟიმში გაშვება" 62 | 63 | #: main.cpp:130 64 | #, kde-format 65 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 66 | msgstr "შემგებებებლის მითითებული გარსის თემით გაშვება (მხოლოდ სატესტო რეჟიმში)" 67 | 68 | #: main.cpp:134 69 | #, kde-format 70 | msgid "Lock immediately, ignoring any grace time etc." 71 | msgstr "მაშინვე დაბლოკვა და ყველაფერი სხვის იგნორი." 72 | 73 | #: main.cpp:136 74 | #, kde-format 75 | msgid "Delay till the lock user interface gets shown in milliseconds." 76 | msgstr "ბლოკის ჩვენების ინტერფეისის ჩვენების დაყოვნება, მილიწამებში." 77 | 78 | #: main.cpp:139 79 | #, kde-format 80 | msgid "Don't show any lock user interface." 81 | msgstr "დაბლოკვის მომხმარებლის ინტერფეისი ნაჩვენები არ იქნება." 82 | 83 | #: main.cpp:141 84 | #, kde-format 85 | msgid "File descriptor for connecting to ksld." 86 | msgstr "ფაილის დესკრიპტორი ksld-სთან მისაერთებლად." 87 | 88 | #~ msgid "Default to the switch user UI." 89 | #~ msgstr "ნაგულისხმევად მომხმარებლის UI-ზე გადართვა." 90 | -------------------------------------------------------------------------------- /po/lt/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Lithuanian translations for l package. 2 | # Copyright (C) 2012 This_file_is_part_of_KDE 3 | # This file is distributed under the same license as the l package. 4 | # Automatically generated, 2012. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: l 10n\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 11 | "PO-Revision-Date: 2025-10-10 23:44+0300\n" 12 | "Last-Translator: Moo\n" 13 | "Language-Team: lt\n" 14 | "Language: lt\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" 19 | "%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" 20 | "X-Generator: Poedit 3.6\n" 21 | 22 | #: fallbacktheme/Greeter.qml:59 23 | msgid "Warning: Caps Lock on" 24 | msgstr "Įspėjimas: Įjungtos didžiosios raidės" 25 | 26 | #: fallbacktheme/Greeter.qml:75 27 | msgid "The session is locked" 28 | msgstr "Seansas užrakintas" 29 | 30 | #: fallbacktheme/Greeter.qml:76 31 | msgid "The session has been locked by %1" 32 | msgstr "%1 užrakino seansą" 33 | 34 | #: fallbacktheme/Greeter.qml:100 35 | msgid "(or place your fingerprint on the reader)" 36 | msgstr "(arba padėkite ant skaitytuvo piršto atspaudą)" 37 | 38 | #: fallbacktheme/Greeter.qml:106 39 | msgid "(or use your smartcard)" 40 | msgstr "(arba naudokite lustinę kortelę)" 41 | 42 | #: fallbacktheme/Greeter.qml:115 43 | msgid "&Switch Users" 44 | msgstr "Perjungti naudotoju&s" 45 | 46 | #: fallbacktheme/Greeter.qml:122 47 | msgid "Un&lock" 48 | msgstr "At&rakinti" 49 | 50 | #: fallbacktheme/Greeter.qml:134 51 | msgid "Unlocking failed" 52 | msgstr "Atrakinti nepavyko" 53 | 54 | #: main.cpp:123 55 | #, kde-format 56 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 57 | msgstr "Pasisveikinimo langas, skirtas KDE Plasma darbo sričių ekrano užraktui" 58 | 59 | #: main.cpp:127 60 | #, kde-format 61 | msgid "Starts the greeter in testing mode" 62 | msgstr "Paleidžia pasisveikinimo langą testavimo veiksenoje" 63 | 64 | #: main.cpp:130 65 | #, kde-format 66 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 67 | msgstr "" 68 | "Paleidžia pasisveikinimo langą naudojant pasirinktą apvalkalo " 69 | "apipavidalinimą (tik testavimo veiksenoje)" 70 | 71 | #: main.cpp:134 72 | #, kde-format 73 | msgid "Lock immediately, ignoring any grace time etc." 74 | msgstr "Nedelsiant užrakinti, nepaisant jokio malonės laiko ir t.t." 75 | 76 | #: main.cpp:136 77 | #, kde-format 78 | msgid "Delay till the lock user interface gets shown in milliseconds." 79 | msgstr "Delsa, kol užrakto naudotojo sąsaja bus rodoma, milisekundėmis." 80 | 81 | #: main.cpp:139 82 | #, kde-format 83 | msgid "Don't show any lock user interface." 84 | msgstr "Nerodyti jokios užrakto naudotojo sąsajos." 85 | 86 | #: main.cpp:141 87 | #, kde-format 88 | msgid "File descriptor for connecting to ksld." 89 | msgstr "Failo deskriptorius, skirtas prisijungimui prie ksld." 90 | 91 | #~ msgid "Default to the switch user UI." 92 | #~ msgstr "Pereiti į naudotojų perjungimo naudotojo sąsają." 93 | 94 | #~ msgid "Session" 95 | #~ msgstr "Sesija" 96 | 97 | #~ msgid "Location" 98 | #~ msgstr "Vieta" 99 | -------------------------------------------------------------------------------- /po/lv/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2024 This file is copyright: 2 | # This file is distributed under the same license as the kscreenlocker package. 3 | # 4 | # Maris Nartiss , 2019. 5 | # SPDX-FileCopyrightText: 2024, 2025 Toms Trasuns 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kscreenlocker\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 11 | "PO-Revision-Date: 2025-08-22 15:03+0300\n" 12 | "Last-Translator: Toms Trasuns \n" 13 | "Language-Team: Latvian \n" 14 | "Language: lv\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " 19 | "2);\n" 20 | "X-Generator: Lokalize 25.08.0\n" 21 | 22 | #: fallbacktheme/Greeter.qml:59 23 | msgid "Warning: Caps Lock on" 24 | msgstr "Uzmanību: ir ieslēgts burtslēga taustiņš" 25 | 26 | #: fallbacktheme/Greeter.qml:75 27 | msgid "The session is locked" 28 | msgstr "Sesija ir bloķēta" 29 | 30 | #: fallbacktheme/Greeter.qml:76 31 | msgid "The session has been locked by %1" 32 | msgstr "Sesiju ir bloķējis %1" 33 | 34 | #: fallbacktheme/Greeter.qml:100 35 | msgid "(or place your fingerprint on the reader)" 36 | msgstr "(vai novietojiet pirkstgalu uz pirkstu nospieduma lasītāja)" 37 | 38 | #: fallbacktheme/Greeter.qml:106 39 | msgid "(or use your smartcard)" 40 | msgstr "(vai izmantojiet viedkarti)" 41 | 42 | #: fallbacktheme/Greeter.qml:115 43 | msgid "&Switch Users" 44 | msgstr "&Pārslēgt lietotājus" 45 | 46 | #: fallbacktheme/Greeter.qml:122 47 | msgid "Un&lock" 48 | msgstr "At&bloķēt" 49 | 50 | #: fallbacktheme/Greeter.qml:134 51 | msgid "Unlocking failed" 52 | msgstr "Atbloķēšana neizdevās" 53 | 54 | #: main.cpp:123 55 | #, kde-format 56 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 57 | msgstr "KDE „Plasma“ darbvirsmas ekrāna bloķētāja sveicinātājs" 58 | 59 | #: main.cpp:127 60 | #, kde-format 61 | msgid "Starts the greeter in testing mode" 62 | msgstr "Palaiž sveicinātāju testēšanas režīmā" 63 | 64 | #: main.cpp:130 65 | #, kde-format 66 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 67 | msgstr "" 68 | "Palaiž sveicinātāju ar izvēlēto čaulas motīvu (tikai testēšanas režīmā)" 69 | 70 | #: main.cpp:134 71 | #, kde-format 72 | msgid "Lock immediately, ignoring any grace time etc." 73 | msgstr "Bloķēt nekavējoties. Ignorēt jebkādu gaidīšanas laiku u.tml." 74 | 75 | #: main.cpp:136 76 | #, kde-format 77 | msgid "Delay till the lock user interface gets shown in milliseconds." 78 | msgstr "Noildze bloķēšanas saskarnes parādīšanai (milisekundēs)." 79 | 80 | #: main.cpp:139 81 | #, kde-format 82 | msgid "Don't show any lock user interface." 83 | msgstr "Nerādīt bloķēšanas saskarni" 84 | 85 | #: main.cpp:141 86 | #, kde-format 87 | msgid "File descriptor for connecting to ksld." 88 | msgstr "„klsd“ savienojuma datnes deskriptors." 89 | 90 | #~ msgid "Default to the switch user UI." 91 | #~ msgstr "Pēc noklusējuma rādīt lietotāju pārslēgšanas saskarni" 92 | -------------------------------------------------------------------------------- /po/ml/kscreenlocker.po: -------------------------------------------------------------------------------- 1 | # Malayalam translations for kscreenlocker package. 2 | # Copyright (C) 2019 This file is copyright: 3 | # This file is distributed under the same license as the kscreenlocker package. 4 | # Automatically generated, 2019. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kscreenlocker\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-09-21 00:43+0000\n" 11 | "PO-Revision-Date: 2018-08-16 09:15+0200\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് \n" 15 | "Language: ml\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 20 | 21 | #: abstractlocker.cpp:43 22 | #, kde-format 23 | msgid "" 24 | "The screen locker is broken and unlocking is not possible anymore.\n" 25 | "In order to unlock it either ConsoleKit or LoginD is needed, neither\n" 26 | "of which could be found on your system." 27 | msgstr "" 28 | 29 | #: abstractlocker.cpp:47 30 | #, kde-format 31 | msgctxt "%1 = other terminal" 32 | msgid "" 33 | "The screen locker is broken and unlocking is not possible anymore.\n" 34 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 35 | "log in as root and execute the command:\n" 36 | "\n" 37 | "# ck-unlock-session \n" 38 | "\n" 39 | msgstr "" 40 | 41 | #: abstractlocker.cpp:52 42 | #, kde-format 43 | msgctxt "%1 = other terminal, %2 = session ID, %3 = this terminal" 44 | msgid "" 45 | "The screen locker is broken and unlocking is not possible anymore.\n" 46 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 47 | "log in to your account and execute the command:\n" 48 | "\n" 49 | "loginctl unlock-session %2\n" 50 | "\n" 51 | "Then log out of the virtual session by pressing Ctrl+D, and switch\n" 52 | "back to the running session (Ctrl+Alt+F%3).\n" 53 | "Should you have forgotten the instructions, you can get back to this\n" 54 | "screen by pressing Ctrl+Alt+F%3\n" 55 | "\n" 56 | msgstr "" 57 | 58 | #: ksldapp.cpp:183 59 | #, kde-format 60 | msgctxt "" 61 | "Name of a category in System Settings' Shortcuts KCM; match it exactly" 62 | msgid "Session Management" 63 | msgstr "" 64 | 65 | #: ksldapp.cpp:185 66 | #, kde-format 67 | msgid "Lock Session" 68 | msgstr "" 69 | 70 | #: ksldapp.cpp:451 71 | #, kde-format 72 | msgid "Screen locked" 73 | msgstr "" 74 | 75 | #: ksldapp.cpp:619 76 | #, kde-format 77 | msgid "Screen unlocked" 78 | msgstr "" 79 | 80 | #: logind.cpp:161 81 | #, kde-format 82 | msgid "Screen Locker" 83 | msgstr "" 84 | 85 | #: logind.cpp:161 86 | #, kde-format 87 | msgid "Ensuring that the screen gets locked before going to sleep" 88 | msgstr "" 89 | -------------------------------------------------------------------------------- /po/ml/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Malayalam translations for kscreenlocker package. 2 | # Copyright (C) 2019 This file is copyright: 3 | # This file is distributed under the same license as the kscreenlocker package. 4 | # Automatically generated, 2019. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kscreenlocker\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 11 | "PO-Revision-Date: 2019-01-17 03:23+0100\n" 12 | "Last-Translator: Automatically generated\n" 13 | "Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് \n" 15 | "Language: ml\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 20 | 21 | #: fallbacktheme/Greeter.qml:59 22 | msgid "Warning: Caps Lock on" 23 | msgstr "" 24 | 25 | #: fallbacktheme/Greeter.qml:75 26 | msgid "The session is locked" 27 | msgstr "" 28 | 29 | #: fallbacktheme/Greeter.qml:76 30 | msgid "The session has been locked by %1" 31 | msgstr "" 32 | 33 | #: fallbacktheme/Greeter.qml:100 34 | msgid "(or place your fingerprint on the reader)" 35 | msgstr "" 36 | 37 | #: fallbacktheme/Greeter.qml:106 38 | msgid "(or use your smartcard)" 39 | msgstr "" 40 | 41 | #: fallbacktheme/Greeter.qml:115 42 | msgid "&Switch Users" 43 | msgstr "" 44 | 45 | #: fallbacktheme/Greeter.qml:122 46 | msgid "Un&lock" 47 | msgstr "" 48 | 49 | #: fallbacktheme/Greeter.qml:134 50 | msgid "Unlocking failed" 51 | msgstr "" 52 | 53 | #: main.cpp:123 54 | #, kde-format 55 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 56 | msgstr "" 57 | 58 | #: main.cpp:127 59 | #, kde-format 60 | msgid "Starts the greeter in testing mode" 61 | msgstr "" 62 | 63 | #: main.cpp:130 64 | #, kde-format 65 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 66 | msgstr "" 67 | 68 | #: main.cpp:134 69 | #, kde-format 70 | msgid "Lock immediately, ignoring any grace time etc." 71 | msgstr "" 72 | 73 | #: main.cpp:136 74 | #, kde-format 75 | msgid "Delay till the lock user interface gets shown in milliseconds." 76 | msgstr "" 77 | 78 | #: main.cpp:139 79 | #, kde-format 80 | msgid "Don't show any lock user interface." 81 | msgstr "" 82 | 83 | #: main.cpp:141 84 | #, kde-format 85 | msgid "File descriptor for connecting to ksld." 86 | msgstr "" 87 | -------------------------------------------------------------------------------- /po/nb/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Translation of kscreenlocker_greet to Norwegian Bokmål 2 | # 3 | # Bjørn Steensrud , 2012, 2013, 2014, 2015. 4 | # Øystein Steffensen-Alværvik , 2018. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: \n" 8 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 9 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 10 | "PO-Revision-Date: 2025-03-23 18:59+0100\n" 11 | "Last-Translator: Martin Hansen \n" 12 | "Language-Team: Norwegian Bokmål \n" 13 | "Language: nb\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 18 | "X-Generator: Lokalize 24.12.3\n" 19 | "X-Environment: kde\n" 20 | "X-Accelerator-Marker: &\n" 21 | "X-Text-Markup: kde4\n" 22 | 23 | #: fallbacktheme/Greeter.qml:59 24 | msgid "Warning: Caps Lock on" 25 | msgstr "" 26 | 27 | #: fallbacktheme/Greeter.qml:75 28 | msgid "The session is locked" 29 | msgstr "" 30 | 31 | #: fallbacktheme/Greeter.qml:76 32 | msgid "The session has been locked by %1" 33 | msgstr "" 34 | 35 | #: fallbacktheme/Greeter.qml:100 36 | msgid "(or place your fingerprint on the reader)" 37 | msgstr "" 38 | 39 | #: fallbacktheme/Greeter.qml:106 40 | msgid "(or use your smartcard)" 41 | msgstr "" 42 | 43 | #: fallbacktheme/Greeter.qml:115 44 | msgid "&Switch Users" 45 | msgstr "" 46 | 47 | #: fallbacktheme/Greeter.qml:122 48 | msgid "Un&lock" 49 | msgstr "" 50 | 51 | #: fallbacktheme/Greeter.qml:134 52 | msgid "Unlocking failed" 53 | msgstr "" 54 | 55 | #: main.cpp:123 56 | #, kde-format 57 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 58 | msgstr "Velkomstbilde for skjermlåser i KDE Plasma-arbeidsområde" 59 | 60 | #: main.cpp:127 61 | #, kde-format 62 | msgid "Starts the greeter in testing mode" 63 | msgstr "Starter velkomstbildet i testmodus" 64 | 65 | #: main.cpp:130 66 | #, kde-format 67 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 68 | msgstr "Starter velkomstbildet med det valgte skalltemaet (bare i testmodus)" 69 | 70 | #: main.cpp:134 71 | #, kde-format 72 | msgid "Lock immediately, ignoring any grace time etc." 73 | msgstr "Lås med en gang, uten å ta hensyn til ventetid e.l." 74 | 75 | #: main.cpp:136 76 | #, kde-format 77 | msgid "Delay till the lock user interface gets shown in milliseconds." 78 | msgstr "Forsinkelse i millisekunder til låsebildet vises." 79 | 80 | #: main.cpp:139 81 | #, kde-format 82 | msgid "Don't show any lock user interface." 83 | msgstr "Ikke vis noe låsebilde." 84 | 85 | #: main.cpp:141 86 | #, kde-format 87 | msgid "File descriptor for connecting to ksld." 88 | msgstr "Filbeskrivelse for tilkobling til ksld." 89 | -------------------------------------------------------------------------------- /po/nn/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Translation of kscreenlocker_greet to Norwegian Nynorsk 2 | # 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: \n" 6 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 7 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 8 | "PO-Revision-Date: 2024-07-06 15:02+0200\n" 9 | "Last-Translator: Karl Ove Hufthammer \n" 10 | "Language-Team: Norwegian Nynorsk \n" 11 | "Language: nn\n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=UTF-8\n" 14 | "Content-Transfer-Encoding: 8bit\n" 15 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 16 | "X-Generator: Lokalize 24.05.1\n" 17 | "X-Environment: kde\n" 18 | "X-Accelerator-Marker: &\n" 19 | "X-Text-Markup: kde4\n" 20 | 21 | #: fallbacktheme/Greeter.qml:59 22 | msgid "Warning: Caps Lock on" 23 | msgstr "" 24 | 25 | #: fallbacktheme/Greeter.qml:75 26 | msgid "The session is locked" 27 | msgstr "" 28 | 29 | #: fallbacktheme/Greeter.qml:76 30 | msgid "The session has been locked by %1" 31 | msgstr "" 32 | 33 | #: fallbacktheme/Greeter.qml:100 34 | msgid "(or place your fingerprint on the reader)" 35 | msgstr "" 36 | 37 | #: fallbacktheme/Greeter.qml:106 38 | msgid "(or use your smartcard)" 39 | msgstr "" 40 | 41 | #: fallbacktheme/Greeter.qml:115 42 | msgid "&Switch Users" 43 | msgstr "" 44 | 45 | #: fallbacktheme/Greeter.qml:122 46 | msgid "Un&lock" 47 | msgstr "" 48 | 49 | #: fallbacktheme/Greeter.qml:134 50 | msgid "Unlocking failed" 51 | msgstr "" 52 | 53 | #: main.cpp:123 54 | #, kde-format 55 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 56 | msgstr "Velkomstbilete for skjermlåsar for KDE Plasma-arbeidsområde" 57 | 58 | #: main.cpp:127 59 | #, kde-format 60 | msgid "Starts the greeter in testing mode" 61 | msgstr "Startar velkomstbiletet i testmodus" 62 | 63 | #: main.cpp:130 64 | #, kde-format 65 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 66 | msgstr "Startar velkomstbiletet med det valde skaltemaet (berre i testmodus)" 67 | 68 | #: main.cpp:134 69 | #, kde-format 70 | msgid "Lock immediately, ignoring any grace time etc." 71 | msgstr "Låser med ein gong, utan å ta omsyn til ventetid e.l." 72 | 73 | #: main.cpp:136 74 | #, kde-format 75 | msgid "Delay till the lock user interface gets shown in milliseconds." 76 | msgstr "Forseinking i millisekund til låsarbiletet vert vist." 77 | 78 | #: main.cpp:139 79 | #, kde-format 80 | msgid "Don't show any lock user interface." 81 | msgstr "Ikkje vis noko låsarbilete." 82 | 83 | #: main.cpp:141 84 | #, kde-format 85 | msgid "File descriptor for connecting to ksld." 86 | msgstr "Filskildring for kopling til ksld." 87 | -------------------------------------------------------------------------------- /po/pt/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: kscreenlocker_greet\n" 4 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 5 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 6 | "PO-Revision-Date: 2016-08-25 17:12+0100\n" 7 | "Last-Translator: José Nuno Coelho Pires \n" 8 | "Language-Team: Portuguese \n" 9 | "Language: pt\n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "X-POFile-SpellExtra: Jones Lock Chris Howells Luňák Caps Buddenhagen\n" 14 | "X-POFile-SpellExtra: Armitage Chani Oswald Gräßlin KScreenLocker Luboš\n" 15 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 16 | "X-POFile-SpellExtra: ksld\n" 17 | 18 | #: fallbacktheme/Greeter.qml:59 19 | msgid "Warning: Caps Lock on" 20 | msgstr "" 21 | 22 | #: fallbacktheme/Greeter.qml:75 23 | msgid "The session is locked" 24 | msgstr "" 25 | 26 | #: fallbacktheme/Greeter.qml:76 27 | msgid "The session has been locked by %1" 28 | msgstr "" 29 | 30 | #: fallbacktheme/Greeter.qml:100 31 | msgid "(or place your fingerprint on the reader)" 32 | msgstr "" 33 | 34 | #: fallbacktheme/Greeter.qml:106 35 | msgid "(or use your smartcard)" 36 | msgstr "" 37 | 38 | #: fallbacktheme/Greeter.qml:115 39 | msgid "&Switch Users" 40 | msgstr "" 41 | 42 | #: fallbacktheme/Greeter.qml:122 43 | msgid "Un&lock" 44 | msgstr "" 45 | 46 | #: fallbacktheme/Greeter.qml:134 47 | msgid "Unlocking failed" 48 | msgstr "" 49 | 50 | #: main.cpp:123 51 | #, kde-format 52 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 53 | msgstr "Boas-vindas do bloqueio do ecrã da Área de Trabalho Plasma do KDE" 54 | 55 | #: main.cpp:127 56 | #, kde-format 57 | msgid "Starts the greeter in testing mode" 58 | msgstr "Inicia as boas-vindas no modo de testes" 59 | 60 | #: main.cpp:130 61 | #, fuzzy, kde-format 62 | #| msgid "Starts the greeter with the selected theme (only in Testing mode)" 63 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 64 | msgstr "" 65 | "Inicia as boas-vindas com o tema seleccionado (apenas no modo de Testes)" 66 | 67 | #: main.cpp:134 68 | #, kde-format 69 | msgid "Lock immediately, ignoring any grace time etc." 70 | msgstr "Bloqueia imediatamente, ignorando qualquer período de espera, etc." 71 | 72 | #: main.cpp:136 73 | #, kde-format 74 | msgid "Delay till the lock user interface gets shown in milliseconds." 75 | msgstr "" 76 | "O atraso até a interface de bloqueio do utilizador aparecer, em milisegundos." 77 | 78 | #: main.cpp:139 79 | #, kde-format 80 | msgid "Don't show any lock user interface." 81 | msgstr "Não mostrar nenhuma interface de bloqueio do utilizador." 82 | 83 | #: main.cpp:141 84 | #, kde-format 85 | msgid "File descriptor for connecting to ksld." 86 | msgstr "O descritor de ficheiros para contactar o 'ksld'." 87 | 88 | #~ msgid "Default to the switch user UI." 89 | #~ msgstr "A definição por omissão da UI da mudança de utilizador." 90 | -------------------------------------------------------------------------------- /po/pt_BR/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Translation of kscreenlocker_greet.po to Brazilian Portuguese 2 | # Copyright (C) 2012-2016 This_file_is_part_of_KDE 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Marcus Gama , 2012. 6 | # André Marcelo Alvarenga , 2012, 2013, 2014, 2015, 2016. 7 | # Luiz Fernando Ranghetti , 2016. 8 | # SPDX-FileCopyrightText: 2024, 2025 Geraldo Simiao 9 | msgid "" 10 | msgstr "" 11 | "Project-Id-Version: kscreenlocker_greet\n" 12 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 13 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 14 | "PO-Revision-Date: 2025-07-23 00:36-0300\n" 15 | "Last-Translator: Geraldo Simiao \n" 16 | "Language-Team: Brazilian Portuguese \n" 17 | "Language: pt_BR\n" 18 | "MIME-Version: 1.0\n" 19 | "Content-Type: text/plain; charset=UTF-8\n" 20 | "Content-Transfer-Encoding: 8bit\n" 21 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" 22 | "X-Generator: Lokalize 25.04.3\n" 23 | 24 | #: fallbacktheme/Greeter.qml:59 25 | msgid "Warning: Caps Lock on" 26 | msgstr "Aviso: Caps Lock ativado" 27 | 28 | #: fallbacktheme/Greeter.qml:75 29 | msgid "The session is locked" 30 | msgstr "A sessão está bloqueada" 31 | 32 | #: fallbacktheme/Greeter.qml:76 33 | msgid "The session has been locked by %1" 34 | msgstr "A sessão foi bloqueada por %1" 35 | 36 | #: fallbacktheme/Greeter.qml:100 37 | msgid "(or place your fingerprint on the reader)" 38 | msgstr "(ou coloque sua impressão digital no leitor)" 39 | 40 | #: fallbacktheme/Greeter.qml:106 41 | msgid "(or use your smartcard)" 42 | msgstr "(ou use seu cartão com chip)" 43 | 44 | #: fallbacktheme/Greeter.qml:115 45 | msgid "&Switch Users" 46 | msgstr "&Trocar usuário" 47 | 48 | #: fallbacktheme/Greeter.qml:122 49 | msgid "Un&lock" 50 | msgstr "&Desbloquear" 51 | 52 | #: fallbacktheme/Greeter.qml:134 53 | msgid "Unlocking failed" 54 | msgstr "Desbloqueio falhou" 55 | 56 | #: main.cpp:123 57 | #, kde-format 58 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 59 | msgstr "Autenticador para bloquear telas nos Espaços de Trabalho Plasma do KDE" 60 | 61 | #: main.cpp:127 62 | #, kde-format 63 | msgid "Starts the greeter in testing mode" 64 | msgstr "Inicia o autenticador no modo de teste" 65 | 66 | #: main.cpp:130 67 | #, kde-format 68 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 69 | msgstr "" 70 | "Inicia as boas-vindas com o tema de shell selecionado (apenas no modo de " 71 | "testes)" 72 | 73 | #: main.cpp:134 74 | #, kde-format 75 | msgid "Lock immediately, ignoring any grace time etc." 76 | msgstr "Bloquear imediatamente, ignorando qualquer tempo concedido, etc." 77 | 78 | #: main.cpp:136 79 | #, kde-format 80 | msgid "Delay till the lock user interface gets shown in milliseconds." 81 | msgstr "" 82 | "Tempo necessário para que a interface de bloqueio do usuário apareça, em " 83 | "milissegundos." 84 | 85 | #: main.cpp:139 86 | #, kde-format 87 | msgid "Don't show any lock user interface." 88 | msgstr "Não mostrar nenhuma interface de bloqueio do usuário." 89 | 90 | #: main.cpp:141 91 | #, kde-format 92 | msgid "File descriptor for connecting to ksld." 93 | msgstr "O descritor de arquivos para conectar ao ksld." 94 | 95 | #~ msgid "Default to the switch user UI." 96 | #~ msgstr "Padrão para alternar a interface do usuário" 97 | -------------------------------------------------------------------------------- /po/ro/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) YEAR This_file_is_part_of_KDE 2 | # This file is distributed under the same license as the PACKAGE package. 3 | # SPDX-FileCopyrightText: 2012, 2013, 2015, 2020, 2025 Sergiu Bivol 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: \n" 8 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 9 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 10 | "PO-Revision-Date: 2025-10-19 23:03+0100\n" 11 | "Last-Translator: Sergiu Bivol \n" 12 | "Language-Team: Romanian \n" 13 | "Language: ro\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " 18 | "20)) ? 1 : 2;\n" 19 | "X-Generator: Lokalize 25.08.1\n" 20 | 21 | #: fallbacktheme/Greeter.qml:59 22 | msgid "Warning: Caps Lock on" 23 | msgstr "Atenție: Caps Lock pornit" 24 | 25 | #: fallbacktheme/Greeter.qml:75 26 | msgid "The session is locked" 27 | msgstr "Sesiunea e blocată" 28 | 29 | #: fallbacktheme/Greeter.qml:76 30 | msgid "The session has been locked by %1" 31 | msgstr "Sesiunea a fost blocată de către %1" 32 | 33 | #: fallbacktheme/Greeter.qml:100 34 | msgid "(or place your fingerprint on the reader)" 35 | msgstr "(sau puneți amprenta pe cititor)" 36 | 37 | #: fallbacktheme/Greeter.qml:106 38 | msgid "(or use your smartcard)" 39 | msgstr "(sau folosiți smartcard-ul)" 40 | 41 | #: fallbacktheme/Greeter.qml:115 42 | msgid "&Switch Users" 43 | msgstr "&Schimbă utilizatorul" 44 | 45 | #: fallbacktheme/Greeter.qml:122 46 | msgid "Un&lock" 47 | msgstr "Deb&lochează" 48 | 49 | #: fallbacktheme/Greeter.qml:134 50 | msgid "Unlocking failed" 51 | msgstr "Deblocare eșuată" 52 | 53 | #: main.cpp:123 54 | #, kde-format 55 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 56 | msgstr "Ecran de salut pentru blocarea ecranului din Plasma Workspaces" 57 | 58 | #: main.cpp:127 59 | #, kde-format 60 | msgid "Starts the greeter in testing mode" 61 | msgstr "Pornește ecranul de salut în regim de testare" 62 | 63 | #: main.cpp:130 64 | #, kde-format 65 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 66 | msgstr "" 67 | "Pornește ecranul de salut cu tematica aleasă a învelișului (doar în regim de " 68 | "testare)" 69 | 70 | #: main.cpp:134 71 | #, kde-format 72 | msgid "Lock immediately, ignoring any grace time etc." 73 | msgstr "Blochează imediat, ignorând orice interval de grație" 74 | 75 | #: main.cpp:136 76 | #, kde-format 77 | msgid "Delay till the lock user interface gets shown in milliseconds." 78 | msgstr "Întârziere până la afișarea interfeței de blocare, în milisecunde" 79 | 80 | #: main.cpp:139 81 | #, kde-format 82 | msgid "Don't show any lock user interface." 83 | msgstr "Nu arăta nicio interfață de blocare." 84 | 85 | #: main.cpp:141 86 | #, kde-format 87 | msgid "File descriptor for connecting to ksld." 88 | msgstr "Descriptor de fișier pentru conectarea la ksld." 89 | 90 | #~ msgid "Default to the switch user UI." 91 | #~ msgstr "Folosește implicit interfața de comutare a utilizatorilor." 92 | -------------------------------------------------------------------------------- /po/sa/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Sanskrit translations for kscreenlocker package. 2 | # Copyright (C) 2024 This file is copyright: 3 | # This file is distributed under the same license as the kscreenlocker package. 4 | # Kali , 2024. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kscreenlocker\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 11 | "PO-Revision-Date: 2024-12-13 19:10+0530\n" 12 | "Last-Translator: Kali \n" 13 | "Language-Team: Sanskrit \n" 14 | "Language: sa\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n>2);\n" 19 | 20 | #: fallbacktheme/Greeter.qml:59 21 | msgid "Warning: Caps Lock on" 22 | msgstr "" 23 | 24 | #: fallbacktheme/Greeter.qml:75 25 | msgid "The session is locked" 26 | msgstr "" 27 | 28 | #: fallbacktheme/Greeter.qml:76 29 | msgid "The session has been locked by %1" 30 | msgstr "" 31 | 32 | #: fallbacktheme/Greeter.qml:100 33 | msgid "(or place your fingerprint on the reader)" 34 | msgstr "" 35 | 36 | #: fallbacktheme/Greeter.qml:106 37 | msgid "(or use your smartcard)" 38 | msgstr "" 39 | 40 | #: fallbacktheme/Greeter.qml:115 41 | msgid "&Switch Users" 42 | msgstr "" 43 | 44 | #: fallbacktheme/Greeter.qml:122 45 | msgid "Un&lock" 46 | msgstr "" 47 | 48 | #: fallbacktheme/Greeter.qml:134 49 | msgid "Unlocking failed" 50 | msgstr "" 51 | 52 | #: main.cpp:123 53 | #, kde-format 54 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 55 | msgstr "KDE Plasma Workspaces Screen locker इत्यस्य अभिवादनम्" 56 | 57 | #: main.cpp:127 58 | #, kde-format 59 | msgid "Starts the greeter in testing mode" 60 | msgstr "परीक्षणविधाने अभिवादकं आरभते" 61 | 62 | #: main.cpp:130 63 | #, kde-format 64 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 65 | msgstr "चयनितेन शेल् विषयेण सह अभिवादकं आरभते (केवलं Testing मोड् मध्ये)" 66 | 67 | #: main.cpp:134 68 | #, kde-format 69 | msgid "Lock immediately, ignoring any grace time etc." 70 | msgstr "तत्क्षणं तालान् स्थापयन्तु, कस्यापि अनुग्रहसमयादिना अवहेलना।" 71 | 72 | #: main.cpp:136 73 | #, kde-format 74 | msgid "Delay till the lock user interface gets shown in milliseconds." 75 | msgstr "यावत् lock उपयोक्तृ-अन्तरफलकं मिलीसेकेण्ड्-मध्ये दर्शितं न भवति तावत् विलम्बं कुर्वन्तु ।" 76 | 77 | #: main.cpp:139 78 | #, kde-format 79 | msgid "Don't show any lock user interface." 80 | msgstr "किमपि लॉक् उपयोक्तृ-अन्तरफलकं न दर्शयन्तु ।" 81 | 82 | #: main.cpp:141 83 | #, kde-format 84 | msgid "File descriptor for connecting to ksld." 85 | msgstr "ksld इत्यनेन सह सम्बद्धतायै सञ्चिकावर्णकः ।" 86 | 87 | #~ msgid "Default to the switch user UI." 88 | #~ msgstr "स्विच उपयोक्तृ UI कृते पूर्वनिर्धारितम्।" 89 | -------------------------------------------------------------------------------- /po/sr/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Translation of kscreenlocker_greet.po into Serbian. 2 | # Chusslove Illich , 2012, 2013, 2014, 2015, 2016. 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: kscreenlocker_greet\n" 6 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 7 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 8 | "PO-Revision-Date: 2016-11-23 19:27+0100\n" 9 | "Last-Translator: Chusslove Illich \n" 10 | "Language-Team: Serbian \n" 11 | "Language: sr\n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=UTF-8\n" 14 | "Content-Transfer-Encoding: 8bit\n" 15 | "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" 16 | "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" 17 | "X-Accelerator-Marker: &\n" 18 | "X-Text-Markup: kde4\n" 19 | "X-Environment: kde\n" 20 | 21 | #: fallbacktheme/Greeter.qml:59 22 | msgid "Warning: Caps Lock on" 23 | msgstr "" 24 | 25 | #: fallbacktheme/Greeter.qml:75 26 | msgid "The session is locked" 27 | msgstr "" 28 | 29 | #: fallbacktheme/Greeter.qml:76 30 | msgid "The session has been locked by %1" 31 | msgstr "" 32 | 33 | #: fallbacktheme/Greeter.qml:100 34 | msgid "(or place your fingerprint on the reader)" 35 | msgstr "" 36 | 37 | #: fallbacktheme/Greeter.qml:106 38 | msgid "(or use your smartcard)" 39 | msgstr "" 40 | 41 | #: fallbacktheme/Greeter.qml:115 42 | msgid "&Switch Users" 43 | msgstr "" 44 | 45 | #: fallbacktheme/Greeter.qml:122 46 | msgid "Un&lock" 47 | msgstr "" 48 | 49 | #: fallbacktheme/Greeter.qml:134 50 | msgid "Unlocking failed" 51 | msgstr "" 52 | 53 | # rewrite-msgid: /KDE Plasma Workspaces// 54 | #: main.cpp:123 55 | #, kde-format 56 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 57 | msgstr "Поздравни дијалог закључавача екрана" 58 | 59 | #: main.cpp:127 60 | #, kde-format 61 | msgid "Starts the greeter in testing mode" 62 | msgstr "Покреће поздравни дијалог у пробном режиму" 63 | 64 | #: main.cpp:130 65 | #, fuzzy, kde-format 66 | #| msgid "Starts the greeter with the selected theme (only in Testing mode)" 67 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 68 | msgstr "Покреће поздравни дијалог са изабраном темом (само у пробном режиму)" 69 | 70 | #: main.cpp:134 71 | #, kde-format 72 | msgid "Lock immediately, ignoring any grace time etc." 73 | msgstr "Закључај одмах, занемаривши допусно време, итд." 74 | 75 | #: main.cpp:136 76 | #, kde-format 77 | msgid "Delay till the lock user interface gets shown in milliseconds." 78 | msgstr "Застој пре приказивања закључаног сучеља, у милисекундама." 79 | 80 | #: main.cpp:139 81 | #, kde-format 82 | msgid "Don't show any lock user interface." 83 | msgstr "Без приказивања закључаног сучеља." 84 | 85 | # rewrite-msgid: /ksld/KScreenLocker daemon/ 86 | #: main.cpp:141 87 | #, kde-format 88 | msgid "File descriptor for connecting to ksld." 89 | msgstr "Описник фајла за повезивање са демоном К‑закључавача-екрана." 90 | 91 | #~ msgid "Default to the switch user UI." 92 | #~ msgstr "Подразумевано на сучеље за промену корисника." 93 | -------------------------------------------------------------------------------- /po/sr@ijekavian/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Translation of kscreenlocker_greet.po into Serbian. 2 | # Chusslove Illich , 2012, 2013, 2014, 2015, 2016. 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: kscreenlocker_greet\n" 6 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 7 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 8 | "PO-Revision-Date: 2016-11-23 19:27+0100\n" 9 | "Last-Translator: Chusslove Illich \n" 10 | "Language-Team: Serbian \n" 11 | "Language: sr@ijekavian\n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=UTF-8\n" 14 | "Content-Transfer-Encoding: 8bit\n" 15 | "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" 16 | "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" 17 | "X-Accelerator-Marker: &\n" 18 | "X-Text-Markup: kde4\n" 19 | "X-Environment: kde\n" 20 | 21 | #: fallbacktheme/Greeter.qml:59 22 | msgid "Warning: Caps Lock on" 23 | msgstr "" 24 | 25 | #: fallbacktheme/Greeter.qml:75 26 | msgid "The session is locked" 27 | msgstr "" 28 | 29 | #: fallbacktheme/Greeter.qml:76 30 | msgid "The session has been locked by %1" 31 | msgstr "" 32 | 33 | #: fallbacktheme/Greeter.qml:100 34 | msgid "(or place your fingerprint on the reader)" 35 | msgstr "" 36 | 37 | #: fallbacktheme/Greeter.qml:106 38 | msgid "(or use your smartcard)" 39 | msgstr "" 40 | 41 | #: fallbacktheme/Greeter.qml:115 42 | msgid "&Switch Users" 43 | msgstr "" 44 | 45 | #: fallbacktheme/Greeter.qml:122 46 | msgid "Un&lock" 47 | msgstr "" 48 | 49 | #: fallbacktheme/Greeter.qml:134 50 | msgid "Unlocking failed" 51 | msgstr "" 52 | 53 | # rewrite-msgid: /KDE Plasma Workspaces// 54 | #: main.cpp:123 55 | #, kde-format 56 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 57 | msgstr "Поздравни дијалог закључавача екрана" 58 | 59 | #: main.cpp:127 60 | #, kde-format 61 | msgid "Starts the greeter in testing mode" 62 | msgstr "Покреће поздравни дијалог у пробном режиму" 63 | 64 | #: main.cpp:130 65 | #, fuzzy, kde-format 66 | #| msgid "Starts the greeter with the selected theme (only in Testing mode)" 67 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 68 | msgstr "Покреће поздравни дијалог са изабраном темом (само у пробном режиму)" 69 | 70 | #: main.cpp:134 71 | #, kde-format 72 | msgid "Lock immediately, ignoring any grace time etc." 73 | msgstr "Закључај одмах, занемаривши допусно време, итд." 74 | 75 | #: main.cpp:136 76 | #, kde-format 77 | msgid "Delay till the lock user interface gets shown in milliseconds." 78 | msgstr "Застој пре приказивања закључаног сучеља, у милисекундама." 79 | 80 | #: main.cpp:139 81 | #, kde-format 82 | msgid "Don't show any lock user interface." 83 | msgstr "Без приказивања закључаног сучеља." 84 | 85 | # rewrite-msgid: /ksld/KScreenLocker daemon/ 86 | #: main.cpp:141 87 | #, kde-format 88 | msgid "File descriptor for connecting to ksld." 89 | msgstr "Описник фајла за повезивање са демоном К‑закључавача-екрана." 90 | 91 | #~ msgid "Default to the switch user UI." 92 | #~ msgstr "Подразумевано на сучеље за промену корисника." 93 | -------------------------------------------------------------------------------- /po/sr@ijekavianlatin/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Translation of kscreenlocker_greet.po into Serbian. 2 | # Chusslove Illich , 2012, 2013, 2014, 2015, 2016. 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: kscreenlocker_greet\n" 6 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 7 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 8 | "PO-Revision-Date: 2016-11-23 19:27+0100\n" 9 | "Last-Translator: Chusslove Illich \n" 10 | "Language-Team: Serbian \n" 11 | "Language: sr@ijekavianlatin\n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=UTF-8\n" 14 | "Content-Transfer-Encoding: 8bit\n" 15 | "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" 16 | "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" 17 | "X-Accelerator-Marker: &\n" 18 | "X-Text-Markup: kde4\n" 19 | "X-Environment: kde\n" 20 | 21 | #: fallbacktheme/Greeter.qml:59 22 | msgid "Warning: Caps Lock on" 23 | msgstr "" 24 | 25 | #: fallbacktheme/Greeter.qml:75 26 | msgid "The session is locked" 27 | msgstr "" 28 | 29 | #: fallbacktheme/Greeter.qml:76 30 | msgid "The session has been locked by %1" 31 | msgstr "" 32 | 33 | #: fallbacktheme/Greeter.qml:100 34 | msgid "(or place your fingerprint on the reader)" 35 | msgstr "" 36 | 37 | #: fallbacktheme/Greeter.qml:106 38 | msgid "(or use your smartcard)" 39 | msgstr "" 40 | 41 | #: fallbacktheme/Greeter.qml:115 42 | msgid "&Switch Users" 43 | msgstr "" 44 | 45 | #: fallbacktheme/Greeter.qml:122 46 | msgid "Un&lock" 47 | msgstr "" 48 | 49 | #: fallbacktheme/Greeter.qml:134 50 | msgid "Unlocking failed" 51 | msgstr "" 52 | 53 | # rewrite-msgid: /KDE Plasma Workspaces// 54 | #: main.cpp:123 55 | #, kde-format 56 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 57 | msgstr "Pozdravni dijalog zaključavača ekrana" 58 | 59 | #: main.cpp:127 60 | #, kde-format 61 | msgid "Starts the greeter in testing mode" 62 | msgstr "Pokreće pozdravni dijalog u probnom režimu" 63 | 64 | #: main.cpp:130 65 | #, fuzzy, kde-format 66 | #| msgid "Starts the greeter with the selected theme (only in Testing mode)" 67 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 68 | msgstr "Pokreće pozdravni dijalog sa izabranom temom (samo u probnom režimu)" 69 | 70 | #: main.cpp:134 71 | #, kde-format 72 | msgid "Lock immediately, ignoring any grace time etc." 73 | msgstr "Zaključaj odmah, zanemarivši dopusno vreme, itd." 74 | 75 | #: main.cpp:136 76 | #, kde-format 77 | msgid "Delay till the lock user interface gets shown in milliseconds." 78 | msgstr "Zastoj pre prikazivanja zaključanog sučelja, u milisekundama." 79 | 80 | #: main.cpp:139 81 | #, kde-format 82 | msgid "Don't show any lock user interface." 83 | msgstr "Bez prikazivanja zaključanog sučelja." 84 | 85 | # rewrite-msgid: /ksld/KScreenLocker daemon/ 86 | #: main.cpp:141 87 | #, kde-format 88 | msgid "File descriptor for connecting to ksld." 89 | msgstr "Opisnik fajla za povezivanje sa demonom K‑zaključavača-ekrana." 90 | 91 | #~ msgid "Default to the switch user UI." 92 | #~ msgstr "Podrazumevano na sučelje za promenu korisnika." 93 | -------------------------------------------------------------------------------- /po/sr@latin/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Translation of kscreenlocker_greet.po into Serbian. 2 | # Chusslove Illich , 2012, 2013, 2014, 2015, 2016. 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: kscreenlocker_greet\n" 6 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 7 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 8 | "PO-Revision-Date: 2016-11-23 19:27+0100\n" 9 | "Last-Translator: Chusslove Illich \n" 10 | "Language-Team: Serbian \n" 11 | "Language: sr@latin\n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=UTF-8\n" 14 | "Content-Transfer-Encoding: 8bit\n" 15 | "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" 16 | "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" 17 | "X-Accelerator-Marker: &\n" 18 | "X-Text-Markup: kde4\n" 19 | "X-Environment: kde\n" 20 | 21 | #: fallbacktheme/Greeter.qml:59 22 | msgid "Warning: Caps Lock on" 23 | msgstr "" 24 | 25 | #: fallbacktheme/Greeter.qml:75 26 | msgid "The session is locked" 27 | msgstr "" 28 | 29 | #: fallbacktheme/Greeter.qml:76 30 | msgid "The session has been locked by %1" 31 | msgstr "" 32 | 33 | #: fallbacktheme/Greeter.qml:100 34 | msgid "(or place your fingerprint on the reader)" 35 | msgstr "" 36 | 37 | #: fallbacktheme/Greeter.qml:106 38 | msgid "(or use your smartcard)" 39 | msgstr "" 40 | 41 | #: fallbacktheme/Greeter.qml:115 42 | msgid "&Switch Users" 43 | msgstr "" 44 | 45 | #: fallbacktheme/Greeter.qml:122 46 | msgid "Un&lock" 47 | msgstr "" 48 | 49 | #: fallbacktheme/Greeter.qml:134 50 | msgid "Unlocking failed" 51 | msgstr "" 52 | 53 | # rewrite-msgid: /KDE Plasma Workspaces// 54 | #: main.cpp:123 55 | #, kde-format 56 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 57 | msgstr "Pozdravni dijalog zaključavača ekrana" 58 | 59 | #: main.cpp:127 60 | #, kde-format 61 | msgid "Starts the greeter in testing mode" 62 | msgstr "Pokreće pozdravni dijalog u probnom režimu" 63 | 64 | #: main.cpp:130 65 | #, fuzzy, kde-format 66 | #| msgid "Starts the greeter with the selected theme (only in Testing mode)" 67 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 68 | msgstr "Pokreće pozdravni dijalog sa izabranom temom (samo u probnom režimu)" 69 | 70 | #: main.cpp:134 71 | #, kde-format 72 | msgid "Lock immediately, ignoring any grace time etc." 73 | msgstr "Zaključaj odmah, zanemarivši dopusno vreme, itd." 74 | 75 | #: main.cpp:136 76 | #, kde-format 77 | msgid "Delay till the lock user interface gets shown in milliseconds." 78 | msgstr "Zastoj pre prikazivanja zaključanog sučelja, u milisekundama." 79 | 80 | #: main.cpp:139 81 | #, kde-format 82 | msgid "Don't show any lock user interface." 83 | msgstr "Bez prikazivanja zaključanog sučelja." 84 | 85 | # rewrite-msgid: /ksld/KScreenLocker daemon/ 86 | #: main.cpp:141 87 | #, kde-format 88 | msgid "File descriptor for connecting to ksld." 89 | msgstr "Opisnik fajla za povezivanje sa demonom K‑zaključavača-ekrana." 90 | 91 | #~ msgid "Default to the switch user UI." 92 | #~ msgstr "Podrazumevano na sučelje za promenu korisnika." 93 | -------------------------------------------------------------------------------- /po/ta/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 This file is copyright: 2 | # This file is distributed under the same license as the kscreenlocker package. 3 | # 4 | # SPDX-FileCopyrightText: 2022, 2025 Kishore G 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: kscreenlocker\n" 8 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 9 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 10 | "PO-Revision-Date: 2025-08-03 12:20+0530\n" 11 | "Last-Translator: Kishore G \n" 12 | "Language-Team: Tamil \n" 13 | "Language: ta\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 18 | "X-Generator: Lokalize 25.04.3\n" 19 | 20 | #: fallbacktheme/Greeter.qml:59 21 | msgid "Warning: Caps Lock on" 22 | msgstr "எச்சரிக்கை: Caps Lock செயலிலுள்ளது" 23 | 24 | #: fallbacktheme/Greeter.qml:75 25 | msgid "The session is locked" 26 | msgstr "இந்த அமர்வு பூட்டியுள்ளது" 27 | 28 | #: fallbacktheme/Greeter.qml:76 29 | msgid "The session has been locked by %1" 30 | msgstr "இந்த அமர்வு %1 தனால் பூட்டப்பட்டுள்ளது" 31 | 32 | #: fallbacktheme/Greeter.qml:100 33 | msgid "(or place your fingerprint on the reader)" 34 | msgstr "(அல்லது வருடியால் கைரேகையை வருடவும்)" 35 | 36 | #: fallbacktheme/Greeter.qml:106 37 | msgid "(or use your smartcard)" 38 | msgstr "(அல்லது அட்டையை வருடவும்)" 39 | 40 | #: fallbacktheme/Greeter.qml:115 41 | msgid "&Switch Users" 42 | msgstr "பயனர் மாற்று" 43 | 44 | #: fallbacktheme/Greeter.qml:122 45 | msgid "Un&lock" 46 | msgstr "திற" 47 | 48 | #: fallbacktheme/Greeter.qml:134 49 | msgid "Unlocking failed" 50 | msgstr "திறப்பது தோல்வியடைந்தது" 51 | 52 | #: main.cpp:123 53 | #, kde-format 54 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 55 | msgstr "கே.டீ.யீ. பிளாஸ்மா பணிமேடையின் திரைப்பூட்டிக்கான வரவேற்பு திரை" 56 | 57 | #: main.cpp:127 58 | #, kde-format 59 | msgid "Starts the greeter in testing mode" 60 | msgstr "வரவேற்பு திரையை சோதனை முறையில் துவக்கும்" 61 | 62 | #: main.cpp:130 63 | #, kde-format 64 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 65 | msgstr "வரவேற்பு திரையை குறிப்பிட்ட தோற்றத்திட்டத்துடன் துவக்கும் (சோதனை முறையில் மட்டும்)" 66 | 67 | #: main.cpp:134 68 | #, kde-format 69 | msgid "Lock immediately, ignoring any grace time etc." 70 | msgstr "அவகாச நேரத்தை பொருட்படுத்தாமல் உடனே பூட்டு." 71 | 72 | #: main.cpp:136 73 | #, kde-format 74 | msgid "Delay till the lock user interface gets shown in milliseconds." 75 | msgstr "பூட்டியதற்குரிய இடைமுகப்பை காட்டுமுன் எத்தனை மில்லிநொடிகள் காத்திருக்க வேண்டும்." 76 | 77 | #: main.cpp:139 78 | #, kde-format 79 | msgid "Don't show any lock user interface." 80 | msgstr "பூட்டியதற்குரிய இடைமுகப்பை காட்டாதே" 81 | 82 | #: main.cpp:141 83 | #, kde-format 84 | msgid "File descriptor for connecting to ksld." 85 | msgstr "ksld-உடன் இணைய பயன்படுத்த வேண்டிய கோப்பு" 86 | 87 | #~ msgid "Default to the switch user UI." 88 | #~ msgstr "பயனர் மாற்ற இடைமுகப்பை இயல்பிருப்பாக காட்டு." 89 | -------------------------------------------------------------------------------- /po/tg/kscreenlocker.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) YEAR This file is copyright: 2 | # This file is distributed under the same license as the kscreenlocker package. 3 | # 4 | # Victor Ibragimov , 2019. 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: kscreenlocker\n" 8 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 9 | "POT-Creation-Date: 2025-09-21 00:43+0000\n" 10 | "PO-Revision-Date: 2019-09-19 17:52+0500\n" 11 | "Last-Translator: Victor Ibragimov \n" 12 | "Language-Team: English \n" 13 | "Language: tg\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 18 | "X-Generator: Lokalize 19.04.3\n" 19 | 20 | #: abstractlocker.cpp:43 21 | #, kde-format 22 | msgid "" 23 | "The screen locker is broken and unlocking is not possible anymore.\n" 24 | "In order to unlock it either ConsoleKit or LoginD is needed, neither\n" 25 | "of which could be found on your system." 26 | msgstr "" 27 | 28 | #: abstractlocker.cpp:47 29 | #, kde-format 30 | msgctxt "%1 = other terminal" 31 | msgid "" 32 | "The screen locker is broken and unlocking is not possible anymore.\n" 33 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 34 | "log in as root and execute the command:\n" 35 | "\n" 36 | "# ck-unlock-session \n" 37 | "\n" 38 | msgstr "" 39 | 40 | #: abstractlocker.cpp:52 41 | #, kde-format 42 | msgctxt "%1 = other terminal, %2 = session ID, %3 = this terminal" 43 | msgid "" 44 | "The screen locker is broken and unlocking is not possible anymore.\n" 45 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 46 | "log in to your account and execute the command:\n" 47 | "\n" 48 | "loginctl unlock-session %2\n" 49 | "\n" 50 | "Then log out of the virtual session by pressing Ctrl+D, and switch\n" 51 | "back to the running session (Ctrl+Alt+F%3).\n" 52 | "Should you have forgotten the instructions, you can get back to this\n" 53 | "screen by pressing Ctrl+Alt+F%3\n" 54 | "\n" 55 | msgstr "" 56 | 57 | #: ksldapp.cpp:183 58 | #, kde-format 59 | msgctxt "" 60 | "Name of a category in System Settings' Shortcuts KCM; match it exactly" 61 | msgid "Session Management" 62 | msgstr "" 63 | 64 | #: ksldapp.cpp:185 65 | #, kde-format 66 | msgid "Lock Session" 67 | msgstr "Қулф кардани ҷаласа" 68 | 69 | #: ksldapp.cpp:451 70 | #, kde-format 71 | msgid "Screen locked" 72 | msgstr "Экран қулф карда шуд" 73 | 74 | #: ksldapp.cpp:619 75 | #, kde-format 76 | msgid "Screen unlocked" 77 | msgstr "Қулфи экран кушода шуд" 78 | 79 | #: logind.cpp:161 80 | #, kde-format 81 | msgid "Screen Locker" 82 | msgstr "Қулфкунандаи экран" 83 | 84 | #: logind.cpp:161 85 | #, kde-format 86 | msgid "Ensuring that the screen gets locked before going to sleep" 87 | msgstr "" 88 | 89 | #~ msgid "Screen lock enabled" 90 | #~ msgstr "Қулфи экран фаъол шуд" 91 | -------------------------------------------------------------------------------- /po/tr/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) YEAR This_file_is_part_of_KDE 2 | # This file is distributed under the same license as the PACKAGE package. 3 | # 4 | # Volkan Gezer , 2013, 2014, 2015, 2017. 5 | # SPDX-FileCopyrightText: 2023, 2024, 2025 Emir SARI 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: \n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 11 | "PO-Revision-Date: 2025-07-24 20:18+0300\n" 12 | "Last-Translator: Emir SARI \n" 13 | "Language-Team: Turkish \n" 14 | "Language: tr\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" 19 | "X-Generator: Lokalize 25.04.2\n" 20 | 21 | #: fallbacktheme/Greeter.qml:59 22 | msgid "Warning: Caps Lock on" 23 | msgstr "Uyarı: Büyük Harf düğmesi açık" 24 | 25 | #: fallbacktheme/Greeter.qml:75 26 | msgid "The session is locked" 27 | msgstr "Oturum kilitli" 28 | 29 | #: fallbacktheme/Greeter.qml:76 30 | msgid "The session has been locked by %1" 31 | msgstr "Oturum %1 tarafından kilitlendi" 32 | 33 | #: fallbacktheme/Greeter.qml:100 34 | msgid "(or place your fingerprint on the reader)" 35 | msgstr "(veya parmağınızı okuyucuya taratın)" 36 | 37 | #: fallbacktheme/Greeter.qml:106 38 | msgid "(or use your smartcard)" 39 | msgstr "(veya akıllı kartınızı kullanın)" 40 | 41 | #: fallbacktheme/Greeter.qml:115 42 | msgid "&Switch Users" 43 | msgstr "&Kullanıcı Değiştir" 44 | 45 | #: fallbacktheme/Greeter.qml:122 46 | msgid "Un&lock" 47 | msgstr "Kilidi &Aç" 48 | 49 | #: fallbacktheme/Greeter.qml:134 50 | msgid "Unlocking failed" 51 | msgstr "Kilit açılamadı" 52 | 53 | #: main.cpp:123 54 | #, kde-format 55 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 56 | msgstr "KDE Plasma Çalışma Alanı ekran kilitleyicisi için karşılayıcı" 57 | 58 | #: main.cpp:127 59 | #, kde-format 60 | msgid "Starts the greeter in testing mode" 61 | msgstr "Karşılayıcıyı sınama kipinde başlatır" 62 | 63 | #: main.cpp:130 64 | #, kde-format 65 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 66 | msgstr "" 67 | "Karşılayıcıyı seçili kabuk temasını kullanarak başlatır (yalnızca sınama " 68 | "kipinde)" 69 | 70 | #: main.cpp:134 71 | #, kde-format 72 | msgid "Lock immediately, ignoring any grace time etc." 73 | msgstr "Erteleme süresini yok sayarak hemen kilitleyin." 74 | 75 | #: main.cpp:136 76 | #, kde-format 77 | msgid "Delay till the lock user interface gets shown in milliseconds." 78 | msgstr "Milisaniye türünden kilitli arayüzün gösterilmesi için gecikme zamanı." 79 | 80 | #: main.cpp:139 81 | #, kde-format 82 | msgid "Don't show any lock user interface." 83 | msgstr "Bir kilit kullanıcı arayüzü göstermeyin." 84 | 85 | #: main.cpp:141 86 | #, kde-format 87 | msgid "File descriptor for connecting to ksld." 88 | msgstr "Ksld bağlantısı için dosya tanımlayıcısı." 89 | 90 | #~ msgid "Default to the switch user UI." 91 | #~ msgstr "Kullanıcı arayüzü değiştirme olarak öntanımlı kılın." 92 | -------------------------------------------------------------------------------- /po/uk/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Translation of kscreenlocker_greet.po to Ukrainian 2 | # Copyright (C) 2012-2016 This_file_is_part_of_KDE 3 | # This file is distributed under the license LGPL version 2.1 or 4 | # version 3 or later versions approved by the membership of KDE e.V. 5 | # 6 | # Yuri Chornoivan , 2012, 2013, 2014, 2015, 2016, 2024, 2025. 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: kscreenlocker_greet\n" 10 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 11 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 12 | "PO-Revision-Date: 2025-07-23 16:11+0300\n" 13 | "Last-Translator: Yuri Chornoivan \n" 14 | "Language-Team: Ukrainian \n" 15 | "Language: uk\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" 20 | "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" 21 | "X-Generator: Lokalize 23.04.3\n" 22 | 23 | #: fallbacktheme/Greeter.qml:59 24 | msgid "Warning: Caps Lock on" 25 | msgstr "Попередження: увімкнено Caps Lock" 26 | 27 | #: fallbacktheme/Greeter.qml:75 28 | msgid "The session is locked" 29 | msgstr "Сеанс заблоковано" 30 | 31 | #: fallbacktheme/Greeter.qml:76 32 | msgid "The session has been locked by %1" 33 | msgstr "Сеанс було заблоковано %1" 34 | 35 | #: fallbacktheme/Greeter.qml:100 36 | msgid "(or place your fingerprint on the reader)" 37 | msgstr "(або розмістіть ваш палець на зчитувачі)" 38 | 39 | #: fallbacktheme/Greeter.qml:106 40 | msgid "(or use your smartcard)" 41 | msgstr "(або скористайтеся вашою смарт-карткою)" 42 | 43 | #: fallbacktheme/Greeter.qml:115 44 | msgid "&Switch Users" 45 | msgstr "П&еремикання користувачів" 46 | 47 | #: fallbacktheme/Greeter.qml:122 48 | msgid "Un&lock" 49 | msgstr "Роз&блокувати" 50 | 51 | #: fallbacktheme/Greeter.qml:134 52 | msgid "Unlocking failed" 53 | msgstr "Помилка розблокування" 54 | 55 | #: main.cpp:123 56 | #, kde-format 57 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 58 | msgstr "Вікно вітання для блокувальника екрана робочих просторів Плазми KDE" 59 | 60 | #: main.cpp:127 61 | #, kde-format 62 | msgid "Starts the greeter in testing mode" 63 | msgstr "Запускає вітальне вікно у тестовому режимі" 64 | 65 | #: main.cpp:130 66 | #, kde-format 67 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 68 | msgstr "" 69 | "Запускає вітальне вікно для вибраної теми оболонки (лише у режимі тестування)" 70 | 71 | #: main.cpp:134 72 | #, kde-format 73 | msgid "Lock immediately, ignoring any grace time etc." 74 | msgstr "Заблокувати негайно, ігноруючи будь-які періоди лояльності тощо." 75 | 76 | #: main.cpp:136 77 | #, kde-format 78 | msgid "Delay till the lock user interface gets shown in milliseconds." 79 | msgstr "Затримка показу інтерфейсу блокування користувача у мілісекундах." 80 | 81 | #: main.cpp:139 82 | #, kde-format 83 | msgid "Don't show any lock user interface." 84 | msgstr "Не показувати інтерфейс блокування користувача." 85 | 86 | #: main.cpp:141 87 | #, kde-format 88 | msgid "File descriptor for connecting to ksld." 89 | msgstr "Дескриптор файла для встановлення з’єднання із ksld." 90 | 91 | #~ msgid "Default to the switch user UI." 92 | #~ msgstr "Повернутися до типового інтерфейсу перемикання користувачів." 93 | 94 | #~ msgid "Session" 95 | #~ msgstr "Сеанс" 96 | 97 | #~ msgid "Location" 98 | #~ msgstr "Розташування" 99 | -------------------------------------------------------------------------------- /po/zh_CN/kscreenlocker.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: kdeorg\n" 4 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 5 | "POT-Creation-Date: 2025-09-21 00:43+0000\n" 6 | "PO-Revision-Date: 2024-04-22 15:58\n" 7 | "Last-Translator: \n" 8 | "Language-Team: Chinese Simplified\n" 9 | "Language: zh_CN\n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "Plural-Forms: nplurals=1; plural=0;\n" 14 | "X-Crowdin-Project: kdeorg\n" 15 | "X-Crowdin-Project-ID: 269464\n" 16 | "X-Crowdin-Language: zh-CN\n" 17 | "X-Crowdin-File: /kf6-trunk/messages/kscreenlocker/kscreenlocker.pot\n" 18 | "X-Crowdin-File-ID: 43547\n" 19 | 20 | #: abstractlocker.cpp:43 21 | #, kde-format 22 | msgid "" 23 | "The screen locker is broken and unlocking is not possible anymore.\n" 24 | "In order to unlock it either ConsoleKit or LoginD is needed, neither\n" 25 | "of which could be found on your system." 26 | msgstr "" 27 | "锁屏程序已经损坏,无法解锁。\n" 28 | "要解锁系统,您需要 ConsoleKit 或者 LoginD,\n" 29 | "但是在本机系统中无法找到它们。" 30 | 31 | #: abstractlocker.cpp:47 32 | #, kde-format 33 | msgctxt "%1 = other terminal" 34 | msgid "" 35 | "The screen locker is broken and unlocking is not possible anymore.\n" 36 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 37 | "log in as root and execute the command:\n" 38 | "\n" 39 | "# ck-unlock-session \n" 40 | "\n" 41 | msgstr "" 42 | "锁屏程序已经损坏,无法解锁。\n" 43 | "要解锁系统,请切换至虚拟终端 (例如按 Ctrl+Alt+F%1),\n" 44 | "登录为 root 身份并执行以下命令:\n" 45 | "\n" 46 | "# ck-unlock-session \n" 47 | "\n" 48 | 49 | #: abstractlocker.cpp:52 50 | #, kde-format 51 | msgctxt "%1 = other terminal, %2 = session ID, %3 = this terminal" 52 | msgid "" 53 | "The screen locker is broken and unlocking is not possible anymore.\n" 54 | "In order to unlock it, switch to a virtual terminal (e.g. Ctrl+Alt+F%1),\n" 55 | "log in to your account and execute the command:\n" 56 | "\n" 57 | "loginctl unlock-session %2\n" 58 | "\n" 59 | "Then log out of the virtual session by pressing Ctrl+D, and switch\n" 60 | "back to the running session (Ctrl+Alt+F%3).\n" 61 | "Should you have forgotten the instructions, you can get back to this\n" 62 | "screen by pressing Ctrl+Alt+F%3\n" 63 | "\n" 64 | msgstr "" 65 | "锁屏程序已经损坏,无法解锁。\n" 66 | "要解锁系统,请切换至虚拟终端 (例如按 Ctrl+Alt+F%1),\n" 67 | "登录并执行以下命令:\n" 68 | "\n" 69 | "loginctl unlock-session %2\n" 70 | "\n" 71 | "然后按 Ctrl+D 注销登录,并切换回正在运行的会话 (Ctrl+Alt+F%3)。\n" 72 | "如果你忘记了本指引的内容,可以按 Ctrl+Alt+F%3 返回到此屏幕。\n" 73 | "\n" 74 | 75 | #: ksldapp.cpp:183 76 | #, kde-format 77 | msgctxt "" 78 | "Name of a category in System Settings' Shortcuts KCM; match it exactly" 79 | msgid "Session Management" 80 | msgstr "会话管理" 81 | 82 | #: ksldapp.cpp:185 83 | #, kde-format 84 | msgid "Lock Session" 85 | msgstr "锁定会话" 86 | 87 | #: ksldapp.cpp:451 88 | #, kde-format 89 | msgid "Screen locked" 90 | msgstr "屏幕已锁定" 91 | 92 | #: ksldapp.cpp:619 93 | #, kde-format 94 | msgid "Screen unlocked" 95 | msgstr "屏幕已解锁" 96 | 97 | #: logind.cpp:161 98 | #, kde-format 99 | msgid "Screen Locker" 100 | msgstr "锁屏程序" 101 | 102 | #: logind.cpp:161 103 | #, kde-format 104 | msgid "Ensuring that the screen gets locked before going to sleep" 105 | msgstr "确保在休眠前锁定屏幕" 106 | -------------------------------------------------------------------------------- /po/zh_CN/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: kdeorg\n" 4 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 5 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 6 | "PO-Revision-Date: 2024-04-22 15:58\n" 7 | "Last-Translator: \n" 8 | "Language-Team: Chinese Simplified\n" 9 | "Language: zh_CN\n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "Plural-Forms: nplurals=1; plural=0;\n" 14 | "X-Crowdin-Project: kdeorg\n" 15 | "X-Crowdin-Project-ID: 269464\n" 16 | "X-Crowdin-Language: zh-CN\n" 17 | "X-Crowdin-File: /kf6-trunk/messages/kscreenlocker/kscreenlocker_greet.pot\n" 18 | "X-Crowdin-File-ID: 42501\n" 19 | 20 | #: fallbacktheme/Greeter.qml:59 21 | msgid "Warning: Caps Lock on" 22 | msgstr "警告:大写锁定开启" 23 | 24 | #: fallbacktheme/Greeter.qml:75 25 | msgid "The session is locked" 26 | msgstr "会话已锁定" 27 | 28 | #: fallbacktheme/Greeter.qml:76 29 | msgid "The session has been locked by %1" 30 | msgstr "会话已被 %1 锁定" 31 | 32 | #: fallbacktheme/Greeter.qml:100 33 | msgid "(or place your fingerprint on the reader)" 34 | msgstr "(或者在指纹传感器上扫描您的指纹)" 35 | 36 | #: fallbacktheme/Greeter.qml:106 37 | msgid "(or use your smartcard)" 38 | msgstr "(或扫描您的智能卡)" 39 | 40 | #: fallbacktheme/Greeter.qml:115 41 | msgid "&Switch Users" 42 | msgstr "切换用户(&S)" 43 | 44 | #: fallbacktheme/Greeter.qml:122 45 | msgid "Un&lock" 46 | msgstr "解锁(&L)" 47 | 48 | #: fallbacktheme/Greeter.qml:134 49 | msgid "Unlocking failed" 50 | msgstr "解锁失败" 51 | 52 | #: main.cpp:123 53 | #, kde-format 54 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 55 | msgstr "KDE Plasma 工作空间屏幕锁定程序" 56 | 57 | #: main.cpp:127 58 | #, kde-format 59 | msgid "Starts the greeter in testing mode" 60 | msgstr "以测试模式启动欢迎画面" 61 | 62 | #: main.cpp:130 63 | #, kde-format 64 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 65 | msgstr "用指定 Shell 主题启动欢迎画面 (仅在测试模式中)" 66 | 67 | #: main.cpp:134 68 | #, kde-format 69 | msgid "Lock immediately, ignoring any grace time etc." 70 | msgstr "立即锁定,忽略任何等待时间。" 71 | 72 | #: main.cpp:136 73 | #, kde-format 74 | msgid "Delay till the lock user interface gets shown in milliseconds." 75 | msgstr "显示锁屏界面前的延迟毫秒数。" 76 | 77 | #: main.cpp:139 78 | #, kde-format 79 | msgid "Don't show any lock user interface." 80 | msgstr "不显示锁屏界面。" 81 | 82 | #: main.cpp:141 83 | #, kde-format 84 | msgid "File descriptor for connecting to ksld." 85 | msgstr "连接到 ksld 的文件描述符。" 86 | -------------------------------------------------------------------------------- /po/zh_TW/kscreenlocker_greet.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) YEAR This_file_is_part_of_KDE 2 | # This file is distributed under the same license as the PACKAGE package. 3 | # 4 | # Franklin Weng , 2012, 2013, 2014, 2015. 5 | # Jeff Huang , 2016. 6 | # SPDX-FileCopyrightText: 2024, 2025 Kisaragi Hiu 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: \n" 10 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 11 | "POT-Creation-Date: 2025-11-07 00:44+0000\n" 12 | "PO-Revision-Date: 2025-08-08 02:35+0900\n" 13 | "Last-Translator: Kisaragi Hiu \n" 14 | "Language-Team: Traditional Chinese \n" 15 | "Language: zh_TW\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=1; plural=0;\n" 20 | "X-Generator: Lokalize 25.07.70\n" 21 | 22 | #: fallbacktheme/Greeter.qml:59 23 | msgid "Warning: Caps Lock on" 24 | msgstr "警告:大寫鎖定已開啟" 25 | 26 | #: fallbacktheme/Greeter.qml:75 27 | msgid "The session is locked" 28 | msgstr "工作階段已鎖定" 29 | 30 | #: fallbacktheme/Greeter.qml:76 31 | msgid "The session has been locked by %1" 32 | msgstr "工作階段已被 %1 鎖定" 33 | 34 | #: fallbacktheme/Greeter.qml:100 35 | msgid "(or place your fingerprint on the reader)" 36 | msgstr "(或是在將您的指紋放在辨識器上)" 37 | 38 | #: fallbacktheme/Greeter.qml:106 39 | msgid "(or use your smartcard)" 40 | msgstr "(或是使用您的智慧卡)" 41 | 42 | #: fallbacktheme/Greeter.qml:115 43 | msgid "&Switch Users" 44 | msgstr "切換使用者(&S)" 45 | 46 | #: fallbacktheme/Greeter.qml:122 47 | msgid "Un&lock" 48 | msgstr "解除鎖定(&L)" 49 | 50 | #: fallbacktheme/Greeter.qml:134 51 | msgid "Unlocking failed" 52 | msgstr "解除鎖定失敗" 53 | 54 | #: main.cpp:123 55 | #, kde-format 56 | msgid "Greeter for the KDE Plasma Workspaces Screen locker" 57 | msgstr "KDE Plasma 工作空間螢幕鎖定程式的招呼器" 58 | 59 | #: main.cpp:127 60 | #, kde-format 61 | msgid "Starts the greeter in testing mode" 62 | msgstr "以測試模式啟動招呼器" 63 | 64 | #: main.cpp:130 65 | #, kde-format 66 | msgid "Starts the greeter with the selected shell theme (only in Testing mode)" 67 | msgstr "以選取的殼層主題啟動招呼器(只在測試模式下)" 68 | 69 | #: main.cpp:134 70 | #, kde-format 71 | msgid "Lock immediately, ignoring any grace time etc." 72 | msgstr "立刻鎖定,忽略任何其他時間設定。" 73 | 74 | #: main.cpp:136 75 | #, kde-format 76 | msgid "Delay till the lock user interface gets shown in milliseconds." 77 | msgstr "鎖定使用者介面顯示的延遲時間,以毫秒為單位。" 78 | 79 | #: main.cpp:139 80 | #, kde-format 81 | msgid "Don't show any lock user interface." 82 | msgstr "不顯示任何鎖定使用者介面。" 83 | 84 | #: main.cpp:141 85 | #, kde-format 86 | msgid "File descriptor for connecting to ksld." 87 | msgstr "連線到 ksld 的檔案描述子。" 88 | 89 | #~ msgid "Default to the switch user UI." 90 | #~ msgstr "預設為切換使用者的介面。" 91 | -------------------------------------------------------------------------------- /powermanagement_inhibition.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2016 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | #pragma once 7 | 8 | #include 9 | 10 | class QDBusServiceWatcher; 11 | 12 | using InhibitionInfo = QPair; 13 | 14 | class PowerManagementInhibition : public QObject 15 | { 16 | Q_OBJECT 17 | public: 18 | explicit PowerManagementInhibition(QObject *parent = nullptr); 19 | ~PowerManagementInhibition() override; 20 | 21 | bool isInhibited() const 22 | { 23 | return m_inhibited; 24 | } 25 | 26 | Q_SIGNAL void inhibitedChanged(); 27 | 28 | private Q_SLOTS: 29 | void inhibitionsChanged(const QList &added, const QStringList &removed); 30 | 31 | private: 32 | void checkInhibition(); 33 | void update(); 34 | 35 | QDBusServiceWatcher *m_solidPowerServiceWatcher; 36 | bool m_serviceRegistered = false; 37 | bool m_inhibited = false; 38 | }; 39 | -------------------------------------------------------------------------------- /protocols/ksld.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /settings/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(settings STATIC 2 | kscreensaversettings.cpp 3 | shell_integration.cpp 4 | wallpaper_integration.cpp 5 | appearancesettings.cpp 6 | ) 7 | set_property(TARGET settings PROPERTY POSITION_INDEPENDENT_CODE ON) 8 | 9 | kconfig_add_kcfg_files(settings GENERATE_MOC kscreensaversettingsbase.kcfgc) 10 | target_link_libraries(settings 11 | Qt6::Quick 12 | KF6::ConfigQml 13 | KF6::GlobalAccel 14 | KF6::I18n 15 | KF6::Package 16 | KF6::XmlGui 17 | ) 18 | -------------------------------------------------------------------------------- /settings/appearancesettings.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2020 Cyril Rossi 3 | SPDX-License-Identifier: GPL-2.0-or-later 4 | */ 5 | 6 | #pragma once 7 | 8 | #include 9 | 10 | #include 11 | #include 12 | 13 | namespace ScreenLocker 14 | { 15 | class WallpaperIntegration; 16 | class ShellIntegration; 17 | } 18 | 19 | class KConfigPropertyMap; 20 | 21 | class AppearanceSettings : public QObject 22 | { 23 | Q_OBJECT 24 | 25 | public: 26 | explicit AppearanceSettings(QObject *parent = nullptr); 27 | 28 | QUrl shellConfigFile() const; 29 | QUrl wallpaperConfigFile() const; 30 | 31 | KConfigPropertyMap *wallpaperConfiguration() const; 32 | KConfigPropertyMap *shellConfiguration() const; 33 | 34 | ScreenLocker::WallpaperIntegration *wallpaperIntegration() const; 35 | 36 | void load(); 37 | void save(); 38 | void defaults(); 39 | 40 | bool isDefaults() const; 41 | bool isSaveNeeded() const; 42 | 43 | void loadWallpaperConfig(); 44 | 45 | Q_SIGNALS: 46 | void currentWallpaperChanged(); 47 | 48 | private: 49 | void loadShellConfig(); 50 | 51 | KPackage::Package m_package; 52 | ScreenLocker::WallpaperIntegration *m_wallpaperIntegration = nullptr; 53 | KCoreConfigSkeleton *m_wallpaperSettings = nullptr; 54 | QUrl m_wallpaperConfigFile; 55 | ScreenLocker::ShellIntegration *m_shellIntegration = nullptr; 56 | KCoreConfigSkeleton *m_shellSettings = nullptr; 57 | QUrl m_shellConfigFile; 58 | }; 59 | -------------------------------------------------------------------------------- /settings/kscreenlockersettings.kcfg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | true 10 | 11 | Sets whether the screen will be locked after the specified time. 12 | 13 | 14 | 5 15 | 16 | Sets the minutes after which the screen is locked. 17 | 18 | 19 | true 20 | 21 | 22 | 23 | 24 | 5 25 | 26 | 27 | 28 | 29 | true 30 | 31 | Sets whether the password is required to unlock the screen. 32 | 33 | 34 | true 35 | 36 | 37 | false 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | org.kde.image 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /settings/kscreensaversettings.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2019 Kevin Ottens 3 | SPDX-License-Identifier: GPL-2.0-or-later 4 | */ 5 | #pragma once 6 | 7 | #include 8 | 9 | #include "kscreensaversettingsbase.h" 10 | 11 | class QAction; 12 | class KActionCollection; 13 | 14 | class KScreenSaverSettingsStore; 15 | 16 | struct WallpaperInfo { 17 | Q_PROPERTY(QString name MEMBER name CONSTANT) 18 | Q_PROPERTY(QString id MEMBER id CONSTANT) 19 | QString name; 20 | QString id; 21 | Q_GADGET 22 | }; 23 | 24 | class KScreenSaverSettings : public KScreenSaverSettingsBase 25 | { 26 | Q_OBJECT 27 | Q_PROPERTY(QKeySequence shortcut READ shortcut WRITE setShortcut NOTIFY shortcutChanged) 28 | public: 29 | static KScreenSaverSettings &getInstance(); 30 | 31 | static QList defaultShortcuts(); 32 | static QString defaultWallpaperPlugin(); 33 | 34 | ~KScreenSaverSettings() override; 35 | 36 | QList availableWallpaperPlugins() const; 37 | 38 | QKeySequence shortcut() const; 39 | void setShortcut(const QKeySequence &sequence); 40 | 41 | KScreenSaverSettings(KScreenSaverSettings const &) = delete; 42 | void operator=(KScreenSaverSettings const &) = delete; 43 | 44 | Q_SIGNALS: 45 | void shortcutChanged(); 46 | 47 | protected: 48 | KScreenSaverSettings(QObject *parent = nullptr); 49 | 50 | private: 51 | QList m_availableWallpaperPlugins; 52 | KScreenSaverSettingsStore *m_store; 53 | }; 54 | -------------------------------------------------------------------------------- /settings/kscreensaversettingsbase.kcfgc: -------------------------------------------------------------------------------- 1 | File=kscreenlockersettings.kcfg 2 | ClassName=KScreenSaverSettingsBase 3 | Singleton=true 4 | Mutators=true 5 | GenerateProperties=true 6 | -------------------------------------------------------------------------------- /settings/shell_integration.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2016 Martin Gräßlin 3 | SPDX-FileCopyrightText: 2017 David Edmundson 4 | 5 | SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 6 | */ 7 | #include "shell_integration.h" 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | #include 14 | 15 | namespace ScreenLocker 16 | { 17 | ShellIntegration::ShellIntegration(QObject *parent) 18 | : QObject(parent) 19 | { 20 | qRegisterMetaType(); 21 | } 22 | 23 | ShellIntegration::~ShellIntegration() = default; 24 | 25 | void ShellIntegration::init() 26 | { 27 | if (!m_package.isValid()) { 28 | return; 29 | } 30 | if (auto config = configScheme()) { 31 | m_configuration = new KConfigPropertyMap(config, this); 32 | } 33 | } 34 | 35 | QString ShellIntegration::defaultShell() const 36 | { 37 | KSharedConfig::Ptr startupConf = KSharedConfig::openConfig(QStringLiteral("plasmashellrc")); 38 | KConfigGroup startupConfGroup(startupConf, QStringLiteral("Shell")); 39 | const QString defaultValue = qEnvironmentVariable("PLASMA_DEFAULT_SHELL", QStringLiteral("org.kde.plasma.desktop")); 40 | QString value = startupConfGroup.readEntry("ShellPackage", defaultValue); 41 | 42 | // In the global theme an empty value was written, make sure we still return a shell package 43 | return value.isEmpty() ? defaultValue : value; 44 | } 45 | 46 | KConfigLoader *ShellIntegration::configScheme() 47 | { 48 | if (!m_configLoader) { 49 | const QString xmlPath = m_package.filePath(QByteArrayLiteral("lockscreen"), QStringLiteral("config.xml")); 50 | 51 | const KConfigGroup cfg = m_config->group(QStringLiteral("Greeter")).group(QStringLiteral("LnF")); 52 | 53 | if (xmlPath.isEmpty()) { 54 | m_configLoader = new KConfigLoader(cfg, nullptr, this); 55 | } else { 56 | QFile file(xmlPath); 57 | m_configLoader = new KConfigLoader(cfg, &file, this); 58 | } 59 | } 60 | return m_configLoader; 61 | } 62 | 63 | } 64 | 65 | #include "moc_shell_integration.cpp" 66 | -------------------------------------------------------------------------------- /settings/shell_integration.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2016 Martin Gräßlin 3 | SPDX-FileCopyrightText: 2017 David Edmundson 4 | 5 | SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 6 | */ 7 | #pragma once 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | class KConfigLoader; 14 | 15 | namespace ScreenLocker 16 | { 17 | class ShellIntegration : public QObject 18 | { 19 | Q_OBJECT 20 | 21 | Q_PROPERTY(KConfigPropertyMap *configuration READ configuration NOTIFY configurationChanged) 22 | 23 | public: 24 | explicit ShellIntegration(QObject *parent); 25 | ~ShellIntegration() override; 26 | 27 | void init(); 28 | 29 | QString defaultShell() const; 30 | 31 | void setConfig(const KSharedConfig::Ptr &config) 32 | { 33 | m_config = config; 34 | } 35 | 36 | void setPackage(const KPackage::Package &package) 37 | { 38 | m_package = package; 39 | } 40 | 41 | KPackage::Package package() const 42 | { 43 | return m_package; 44 | } 45 | 46 | KConfigPropertyMap *configuration() const 47 | { 48 | return m_configuration; 49 | } 50 | 51 | KConfigLoader *configScheme(); 52 | 53 | Q_SIGNALS: 54 | void packageChanged(); 55 | void configurationChanged(); 56 | 57 | private: 58 | KPackage::Package m_package; 59 | KSharedConfig::Ptr m_config; 60 | KConfigLoader *m_configLoader = nullptr; 61 | KConfigPropertyMap *m_configuration = nullptr; 62 | }; 63 | 64 | } 65 | -------------------------------------------------------------------------------- /settings/wallpaper_integration.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2016 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 5 | */ 6 | #include "wallpaper_integration.h" 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #include 14 | 15 | namespace ScreenLocker 16 | { 17 | WallpaperIntegration::WallpaperIntegration(QQuickItem *parent) 18 | : QQuickItem(parent) 19 | , m_package(KPackage::PackageLoader::self()->loadPackage(QStringLiteral("Plasma/Wallpaper"))) 20 | { 21 | qRegisterMetaType(); 22 | } 23 | 24 | WallpaperIntegration::~WallpaperIntegration() = default; 25 | 26 | void WallpaperIntegration::init() 27 | { 28 | if (!m_package.isValid()) { 29 | return; 30 | } 31 | if (auto config = configScheme()) { 32 | m_configuration = new KConfigPropertyMap(config, this); 33 | // potd (picture of the day) is using a kded to monitor changes and 34 | // cache data for the lockscreen. Let's notify it. 35 | m_configuration->setNotify(true); 36 | } 37 | } 38 | 39 | void WallpaperIntegration::setPluginName(const QString &name) 40 | { 41 | if (m_pluginName == name) { 42 | return; 43 | } 44 | m_pluginName = name; 45 | m_package.setPath(name); 46 | Q_EMIT packageChanged(); 47 | } 48 | 49 | KConfigLoader *WallpaperIntegration::configScheme() 50 | { 51 | if (!m_configLoader) { 52 | const QString xmlPath = m_package.filePath(QByteArrayLiteral("config"), QStringLiteral("main.xml")); 53 | 54 | const KConfigGroup cfg = m_config->group(QStringLiteral("Greeter")).group(QStringLiteral("Wallpaper")).group(m_pluginName); 55 | 56 | if (xmlPath.isEmpty()) { 57 | m_configLoader = new KConfigLoader(cfg, nullptr, this); 58 | } else { 59 | QFile file(xmlPath); 60 | m_configLoader = new KConfigLoader(cfg, &file, this); 61 | } 62 | } 63 | return m_configLoader; 64 | } 65 | 66 | QColor WallpaperIntegration::accentColor() const 67 | { 68 | return QColor(); 69 | } 70 | 71 | void WallpaperIntegration::setAccentColor(const QColor &) 72 | { 73 | } 74 | } 75 | 76 | #include "moc_wallpaper_integration.cpp" 77 | -------------------------------------------------------------------------------- /settings/wallpaper_integration.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2016 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 5 | */ 6 | #pragma once 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | class KConfigLoader; 14 | 15 | namespace ScreenLocker 16 | { 17 | 18 | class WallpaperIntegration : public QQuickItem 19 | { 20 | Q_OBJECT 21 | 22 | Q_PROPERTY(QString pluginName READ pluginName NOTIFY packageChanged) 23 | Q_PROPERTY(KConfigPropertyMap *configuration READ configuration NOTIFY configurationChanged) 24 | Q_PROPERTY(QQmlListProperty contextualActions READ qmlContextualActions NOTIFY contextualActionsChanged) 25 | Q_PROPERTY(bool loading MEMBER m_loading NOTIFY isLoadingChanged) 26 | Q_PROPERTY(QColor accentColor READ accentColor WRITE setAccentColor NOTIFY accentColorChanged) 27 | 28 | public: 29 | explicit WallpaperIntegration(QQuickItem *parent = nullptr); 30 | ~WallpaperIntegration() override; 31 | 32 | void init(); 33 | 34 | void setConfig(const KSharedConfig::Ptr &config) 35 | { 36 | m_config = config; 37 | } 38 | QString pluginName() const 39 | { 40 | return m_pluginName; 41 | } 42 | void setPluginName(const QString &name); 43 | 44 | KPackage::Package package() const 45 | { 46 | return m_package; 47 | } 48 | 49 | KConfigPropertyMap *configuration() const 50 | { 51 | return m_configuration; 52 | } 53 | 54 | KConfigLoader *configScheme(); 55 | 56 | QQmlListProperty qmlContextualActions() 57 | { 58 | static QList list; 59 | return {this, &list}; 60 | } 61 | 62 | QColor accentColor() const; 63 | void setAccentColor(const QColor &newColor); 64 | 65 | Q_SIGNALS: 66 | void packageChanged(); 67 | void configurationChanged(); 68 | 69 | /** 70 | * This is to keep compatible with WallpaperInterface in plasma-framework. 71 | * It doesn't have any practical use. 72 | */ 73 | void isLoadingChanged(); 74 | void accentColorChanged(); 75 | void openUrlRequested(const QUrl &url); 76 | void contextualActionsChanged(const QList &actions); 77 | 78 | private: 79 | QString m_pluginName; 80 | KPackage::Package m_package; 81 | KSharedConfig::Ptr m_config; 82 | KConfigLoader *m_configLoader = nullptr; 83 | KConfigPropertyMap *m_configuration = nullptr; 84 | bool m_loading = false; 85 | }; 86 | 87 | } 88 | -------------------------------------------------------------------------------- /tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(kscreenlocker_test kscreenlocker_main.cpp) 2 | target_link_libraries(kscreenlocker_test KScreenLocker Qt::Gui KF6::I18n) 3 | ecm_mark_as_test(kscreenlocker_test) 4 | 5 | add_executable(powermanagement_test powermanagementtest.cpp ../greeter/powermanagement.cpp) 6 | target_compile_definitions(powermanagement_test PRIVATE -DQML_PATH="${CMAKE_CURRENT_SOURCE_DIR}/powermanagement.qml") 7 | target_link_libraries(powermanagement_test Qt::Gui Qt::DBus Qt::Quick) 8 | ecm_mark_as_test(powermanagement_test) 9 | 10 | add_executable(kcheckpass_test kcheckpass_test.cpp) 11 | target_compile_definitions(kcheckpass_test PRIVATE -DQML_FILE="${CMAKE_CURRENT_SOURCE_DIR}/kcheckpass_test.qml") 12 | target_link_libraries(kcheckpass_test kscreenlocker_authenticator KF6::CoreAddons Qt::Gui Qt::Quick) 13 | ecm_mark_as_test(kcheckpass_test) 14 | -------------------------------------------------------------------------------- /tests/README.md: -------------------------------------------------------------------------------- 1 | Integration tests for kscreenlocker are in the [kwin repository](https://invent.kde.org/plasma/kwin/-/blob/master/autotests/integration/lockscreen.cpp). 2 | -------------------------------------------------------------------------------- /tests/kcheckpass_test.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | #include "../greeter/pamauthenticator.h" 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | QGuiApplication app(argc, argv); 16 | QCommandLineParser parser; 17 | parser.addHelpOption(); 18 | parser.process(app); 19 | PamAuthenticator authenticator(QStringLiteral("kde"), KUser().loginName()); 20 | 21 | QQmlApplicationEngine engine; 22 | engine.rootContext()->setContextProperty(QStringLiteral("authenticator"), &authenticator); 23 | engine.load(QUrl::fromLocalFile(QStringLiteral(QML_FILE))); 24 | return app.exec(); 25 | } 26 | -------------------------------------------------------------------------------- /tests/kcheckpass_test.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | import QtQuick 2.1 7 | import QtQuick.Controls 2.4 8 | import QtQuick.Layouts 1.3 9 | 10 | ApplicationWindow { 11 | visible: true 12 | ColumnLayout { 13 | anchors.fill: parent 14 | Label { 15 | id: message 16 | Connections { 17 | target: authenticator 18 | function onPromptForSecretChanged() { 19 | authenticator.respond(password.text) 20 | } 21 | function onSucceeded() { 22 | message.text = "Authentication succeeded"; 23 | } 24 | function onFailed() { 25 | message.text = "Failed" 26 | } 27 | } 28 | } 29 | TextField { 30 | id: password 31 | enabled: true 32 | echoMode: TextInput.Password 33 | } 34 | Button { 35 | text: "Authenticate" 36 | onClicked: { 37 | console.log("unlock") 38 | authenticator.tryUnlock() 39 | } 40 | } 41 | Item { 42 | Layout.fillHeight: true 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /tests/kscreenlocker_main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2014 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | #include "../ksldapp.h" 7 | #include 8 | #include 9 | 10 | int main(int argc, char **argv) 11 | { 12 | QGuiApplication app(argc, argv); 13 | 14 | QCommandLineParser parser; 15 | parser.setApplicationDescription( 16 | QStringLiteral("This test application starts the screen locker immediately and\n" 17 | "exits once the screen got successfully unlocked. The purpose is\n" 18 | "to test changes in KSLD without having to restart KSMServer.\n" 19 | "Thus it's a good way to verify grabbing of keyboard/pointer and\n" 20 | "the communication with kscreenlocker_greet. If the lock is not\n" 21 | "working properly the test application can be killed and the\n" 22 | "screen is unlocked again. If one just wants to test the greeter\n" 23 | "it's better to start just kscreenlocker_greet.")); 24 | 25 | parser.addHelpOption(); 26 | 27 | parser.process(app); 28 | 29 | ScreenLocker::KSldApp locker(&app); 30 | locker.initialize(); 31 | QObject::connect(&locker, &ScreenLocker::KSldApp::unlocked, &app, &QGuiApplication::quit); 32 | locker.lock(ScreenLocker::EstablishLock::Immediate); 33 | 34 | return app.exec(); 35 | } 36 | -------------------------------------------------------------------------------- /tests/powermanagement.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2016 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 5 | */ 6 | import QtQuick 2.0 7 | import QtQuick.Layouts 1.2 8 | import QtQuick.Controls 2.15 9 | 10 | Rectangle { 11 | color: "white" 12 | 13 | RowLayout { 14 | Button { 15 | enabled: powerManagement.canSuspend 16 | text: "Suspend" 17 | onClicked: powerManagement.suspend() 18 | } 19 | Button { 20 | enabled: powerManagement.canHibernate 21 | text: "Hibernate" 22 | onClicked: powerManagement.hibernate() 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /tests/powermanagementtest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2016 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 5 | */ 6 | #include "../greeter/powermanagement.h" 7 | #include 8 | #include 9 | #include 10 | 11 | int main(int argc, char **argv) 12 | { 13 | QGuiApplication app(argc, argv); 14 | 15 | QQuickView view; 16 | view.rootContext()->setContextProperty(QStringLiteral("powerManagement"), PowerManagement::instance()); 17 | view.setSource(QUrl::fromLocalFile(QStringLiteral(QML_PATH))); 18 | 19 | view.show(); 20 | 21 | return app.exec(); 22 | } 23 | -------------------------------------------------------------------------------- /waylandlocker.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2015 Bhushan Shah 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | 7 | #include "waylandlocker.h" 8 | 9 | #include 10 | #include 11 | 12 | namespace ScreenLocker 13 | { 14 | WaylandLocker::WaylandLocker(QObject *parent) 15 | : AbstractLocker(parent) 16 | { 17 | if (m_background) { 18 | updateGeometryOfBackground(); 19 | const auto screens = qApp->screens(); 20 | for (auto s : screens) { 21 | connect(s, &QScreen::geometryChanged, this, &WaylandLocker::updateGeometryOfBackground); 22 | } 23 | connect(qApp, &QGuiApplication::screenAdded, this, [this](QScreen *s) { 24 | connect(s, &QScreen::geometryChanged, this, &WaylandLocker::updateGeometryOfBackground); 25 | updateGeometryOfBackground(); 26 | }); 27 | connect(qApp, &QGuiApplication::screenRemoved, this, &WaylandLocker::updateGeometryOfBackground); 28 | } 29 | } 30 | 31 | WaylandLocker::~WaylandLocker() 32 | { 33 | } 34 | 35 | void WaylandLocker::updateGeometryOfBackground() 36 | { 37 | QRect combined; 38 | const auto screens = qApp->screens(); 39 | for (auto s : screens) { 40 | combined = combined.united(s->geometry()); 41 | } 42 | m_background->setGeometry(combined); 43 | m_background->update(); 44 | } 45 | 46 | void WaylandLocker::showLockWindow() 47 | { 48 | } 49 | 50 | void WaylandLocker::hideLockWindow() 51 | { 52 | } 53 | 54 | void WaylandLocker::addAllowedWindow(quint32 window) 55 | { 56 | Q_UNUSED(window) 57 | Q_EMIT lockWindowShown(); 58 | } 59 | 60 | void WaylandLocker::stayOnTop() 61 | { 62 | } 63 | 64 | } 65 | 66 | #include "moc_waylandlocker.cpp" 67 | -------------------------------------------------------------------------------- /waylandlocker.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2015 Bhushan Shah 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | 7 | #pragma once 8 | 9 | #include "abstractlocker.h" 10 | 11 | namespace KWayland 12 | { 13 | namespace Server 14 | { 15 | class Display; 16 | } 17 | } 18 | 19 | namespace ScreenLocker 20 | { 21 | class WaylandLocker : public AbstractLocker 22 | { 23 | Q_OBJECT 24 | 25 | public: 26 | WaylandLocker(QObject *parent); 27 | ~WaylandLocker() override; 28 | 29 | void showLockWindow() override; 30 | void hideLockWindow() override; 31 | 32 | void addAllowedWindow(quint32 window) override; 33 | 34 | private: 35 | void stayOnTop() override; 36 | void updateGeometryOfBackground(); 37 | }; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /waylandserver.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2014 Martin Gräßlin 3 | 4 | SPDX-License-Identifier: GPL-2.0-or-later 5 | */ 6 | #pragma once 7 | 8 | #include 9 | 10 | #include 11 | 12 | namespace ScreenLocker 13 | { 14 | class WaylandServer : public QObject 15 | { 16 | Q_OBJECT 17 | public: 18 | explicit WaylandServer(QObject *parent = nullptr); 19 | ~WaylandServer() override; 20 | int start(); 21 | void stop(); 22 | 23 | Q_SIGNALS: 24 | void x11WindowAdded(quint32 window); 25 | 26 | private: 27 | void flush(); 28 | void dispatchEvents(); 29 | 30 | static void bind(wl_client *client, void *data, uint32_t version, uint32_t id); 31 | 32 | QSocketNotifier *m_notifier = nullptr; 33 | ::wl_display *m_display = nullptr; 34 | ::wl_client *m_greeter = nullptr; 35 | ::wl_global *m_interface = nullptr; 36 | 37 | struct Listener { 38 | ::wl_listener listener; 39 | WaylandServer *server; 40 | } m_listener; 41 | }; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /x11info.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2023 Fushan Wen 3 | 4 | SPDX-License-Identifier: LGPL-2.1-or-later 5 | */ 6 | 7 | #pragma once 8 | 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | using namespace Qt::StringLiterals; 15 | 16 | namespace X11Info 17 | { 18 | [[nodiscard]] inline bool isPlatformX11() 19 | { 20 | return QGuiApplication::platformName() == "xcb"_L1; 21 | } 22 | 23 | [[nodiscard]] inline auto display() 24 | { 25 | return qGuiApp->nativeInterface()->display(); 26 | } 27 | 28 | [[nodiscard]] inline auto connection() 29 | { 30 | return qGuiApp->nativeInterface()->connection(); 31 | } 32 | 33 | [[nodiscard]] inline Window appRootWindow() 34 | { 35 | return DefaultRootWindow(display()); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /x11locker.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 1999 Martin R. Jones 3 | SPDX-FileCopyrightText: 2002 Luboš Luňák 4 | SPDX-FileCopyrightText: 2003 Oswald Buddenhagen 5 | SPDX-FileCopyrightText: 2008 Chani Armitage 6 | SPDX-FileCopyrightText: 2011 Martin Gräßlin 7 | 8 | SPDX-License-Identifier: GPL-2.0-or-later 9 | */ 10 | #pragma once 11 | 12 | #include "abstractlocker.h" 13 | 14 | #include 15 | #include 16 | #include 17 | 18 | namespace ScreenLocker 19 | { 20 | class AbstractLocker; 21 | 22 | class X11Locker : public AbstractLocker, public QAbstractNativeEventFilter 23 | { 24 | Q_OBJECT 25 | public: 26 | explicit X11Locker(QObject *parent = nullptr); 27 | ~X11Locker() override; 28 | 29 | void showLockWindow() override; 30 | void hideLockWindow() override; 31 | 32 | void addAllowedWindow(quint32 window) override; 33 | 34 | bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override; 35 | 36 | private Q_SLOTS: 37 | void updateGeo(); 38 | 39 | private: 40 | void initialize(); 41 | void saveVRoot(); 42 | void setVRoot(Window win, Window vr); 43 | void removeVRoot(Window win); 44 | int findWindowInfo(Window w); 45 | void fakeFocusIn(WId window); 46 | void stayOnTop() override; 47 | struct WindowInfo { 48 | Window window; 49 | bool viewable; 50 | }; 51 | QList m_windowInfo; 52 | QList m_lockWindows; 53 | QList m_allowedWindows; 54 | WId m_focusedLockWindow; 55 | }; 56 | } 57 | --------------------------------------------------------------------------------