diff --git a/.gitignore b/.gitignore index 378eac2..c0213f5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ build +translations/lxqt-policykit diff --git a/AUTHORS b/AUTHORS index 5b94db3..a66be6d 100644 --- a/AUTHORS +++ b/AUTHORS @@ -4,7 +4,7 @@ Upstream Authors: Copyright: Copyright (c) 2010-2012 Razor team - Copyright (c) 2012-2014 LXQt team + Copyright (c) 2012-2016 LXQt team License: LGPL-2.1+ The full text of the licenses can be found in the 'COPYING' file. diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000..562ca19 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,80 @@ + +lxqt-policykit-0.11.0 / 2016-09-24 +================================== + + * agentGui: Use default icon + * agentGui: Choose current user in identities combo + * agentGui: Handle setting the prompt correctly + * agent: Handle multiple identities correctly + * Update README.md + * Fixed typo prefered -> preferred + * Add README.md + * build: Use external translations + * ts-files removal (#21) + * Bump year in AUTHORS + * Italian translation update + * Updated Russian translation Removed ru_RU file + * update: lxqt-policykit-agent_hu.ts + +0.10.0 / 2015-10-31 +=================== + + * Update translations + * Fix license file + * GPL2 not used - removed in AUTHORS Fixed link to Github LXQt issues Fix wording in manpage - 'can be used by others' was nuts for a file under LGPL root license + * Add Greek (el) translation + * Rename LxQt to LXQt everywhere + * Added german translation. + * Added missing tr() call. + * Handles CMake policy CMP0063 + * Use the LXQtCompilerSettings CMake module + * Adds Runtime install COMPONENT + * Use GNUInstallDirs + * Removes unneede entries from include_directories() + * Uses CMAKE_AUTOUIC + * Updates the build system to use the Targets infrastructure + * Remove trailing whitespaces + * Fix naming and links + * Hungarian translation + * - Add a choice option for install binary. Some distributions use libexec instead os default usr/bin installs. It defauls to bin + +0.9.0 / 2015-01-19 +================== + + * File name was ok but language name wasn´t. My mistake. + * Makes filename match translation language + * Portuguese update + * - Unify naming for a unique lxqt. No more suffixes + * CMakeLists.txt maintenance. + * Uses the new translations cmake modules + * Add Russian translation + * CMakeLists.txt cleanups + +0.8.0 / 2014-06-28 +================== + + * Use portable Polkit headers + * Deal with a bug in polkit-qt1 cmake file + * Choose Qt5 version of PolkitQt when build with Qt5. + * Add initial Qt5 support. + * Use new LXQt header files. + +0.7.0 / 2014-05-01 +================== + + * Update AUTHORS and COPYING files + * Add CPack rules for creating tarball + * Removed CMAKE_SOURCE_DIR usage from CMakeLists.txt + * Fix renaming bugs, replacing lxqt-qt with lxde-qt + * Finish the crazy razor=>lxqt renaming tasks. + * Rename binary to lxqt-policykit-agent and migrate to the latest liblxqt. + * Add COPYING and AUTHORS + * Fix authentization->authentication misspelling + * Trtanslations + * Translation support for policykit agent + * preliminary manpages primary for razorqt and usefully in venenux + * Add build option to make policykit optional, even if installed. + * RazorApplication class implemented; all modules ported to this class + * Relicense + * initial but finally working policykit integration (agent) + * initial revision of the policykit integration (non-functional) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a02dfe..d8ef2f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -68,6 +68,16 @@ lxqt_translate_ts(lxqt-policykit-agent_QM_FILES ${lxqt-policykit-agent_UI} INSTALL_DIR "${LXQT_TRANSLATIONS_DIR}/${PROJECT_NAME}" + PULL_TRANSLATIONS + ${PULL_TRANSLATIONS} + CLEAN_TRANSLATIONS + ${CLEAN_TRANSLATIONS} + TRANSLATIONS_REPO + ${TRANSLATIONS_REPO} + TRANSLATIONS_REFSPEC + ${TRANSLATIONS_REFSPEC} + REPO_SUBDIR + "lxqt-policykit/${PROJECT_NAME}" ) lxqt_app_translation_loader(QM_LOADER ${PROJECT_NAME}) diff --git a/README.md b/README.md new file mode 100644 index 0000000..cdd9e0a --- /dev/null +++ b/README.md @@ -0,0 +1,55 @@ +# lxqt-policykit + +## Overview + +lxqt-policykit is the polkit authentification agent of LXQt. + +[polkit](https://www.freedesktop.org/wiki/Software/polkit/) is a software framework to handle privileges of processes. +In LXQt it is e. g. used to extend the privileges of the GUI tools of [lxqt-admin](https://github.com/lxde/lxqt-admin/). These are launched by a regular user. But in order to apply the settings they deal with root privileges are needed and acquired via polkit. +Among the various components of polkit the authentication agent is the one to query the user for credentials by dialogue windows like this one of lxqt-policykit. +![lxqt-policykit: GUI](lxqt-policykit_gui.png) +While there's only a single implementation of all other polkit components various different authentication agents are provided by the various desktop environments. Basically these can be used interchangeably, that is lxqt-policykit can be used in an LXDE session or lxpolkit, the authentication agent of LXDE, can be used in an Xfce session. Most of the time it's better to use the implementation provided by a distinct desktop environment as it integrates better, though. + +Technically, lxqt-policykit is just a single binary `lxqt-policykit-agent` which is running as [LXQt Module](https://github.com/lxde/lxqt-session#lxqt-modules) and launching the GUI on demand. + +Note that the naming lxqt-policykit is strictly speaking an anachronism. It refers to Policykit which was the predecessor +of polkit. The name wasn't changed when Policykit was replaced by polkit as both provide roughly the same features albeit +they are technically different. + +## Installing + +### Compiling sources + +Runtime dependencies are polkit-qt5 and [liblxqt](https://github.com/lxde/liblxqt). +Additional build dependencies are CMake and optionally Git to pull latest VCS checkouts. The localization files were outsourced to repository [lxqt-l10n](https://github.com/lxde/lxqt-l10n) so the corresponding dependencies are needed, too. Please refer to this repository's `README.md` for further information. + +Code configuration is handled by CMake. CMake variable `CMAKE_INSTALL_PREFIX` has to be set to `/usr` on most operating systems. + +To build run `make`, to install `make install` which accepts variable `DESTDIR` as usual. + +### Binary packages + +#### Arch Linux + +The latest release is provided by package `lxqt-policykit` in repository community, the actual master checkout can be +compiled by packages `lxqt-policykit-git` from the [AUR](https://aur.archlinux.org). + +#### Debian + +Package `lxqt-policykit` is available in the official repositories as of Debian stretch. For now it is comprising the +translations as well but these will probably be outsourced in package `lxqt-policykit-l10n` one day. + +#### Fedora + +Package `lxqt-policykit` is available as of Fedora 22. + +#### openSUSE + +Package `lxqt-policykit` is providing the binary, `lxqt-policykit-lang` the translations. Both are available as of +openSUSE Leap 42.1. + +## Configuration, Usage + +Like all LXQt Modules `lxqt-policykit-agent` can be adjusted from section "Basic Settings" in configuration dialogue [LXQt Session Settings](https://github.com/lxde/lxqt-session#lxqt-session-settings) of [lxqt-session](https://github.com/lxde/lxqt-session). + +From a user's point of view the usage is limited to interacting with the GUI as seen above. diff --git a/debian/changelog b/debian/changelog index 9d19f1c..d924588 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,23 @@ +lxqt-policykit (0.11.0-3) unstable; urgency=medium + + * Cherry-picking upstream release 0.11.0 + * Sync debian foo with experimental + * Bumped compat to 10 + * Removed --parallel from rules, standard in compat 10 + * Bumped minimum version debhelper (>= 10) + * Bumped minimum version liblxqt-dev (>= 0.11.0) + * Bumped minimum version libqtxdg-dev (>= 2.0.0) + * Added build dependency libqt5svg5-dev + * Added build dependency libqt5xdgiconloader-dev (>= 2.0.0) + * Added Recommends lxqt-policykit-l10n + * Bumped copyright years + * Added translation control to rules + * Set CMAKE_BUILD_TYPE=RelWithDebInfo + * Added README.md to docs + * Added manpages + + -- Alf Gaida Tue, 18 Oct 2016 17:04:36 +0200 + lxqt-policykit (0.10.0-4) unstable; urgency=medium * Bump Standards to 3.9.8, no changes needed diff --git a/debian/compat b/debian/compat index ec63514..f599e28 100644 --- a/debian/compat +++ b/debian/compat @@ -1 +1 @@ -9 +10 diff --git a/debian/control b/debian/control index 0f59c1d..211f696 100644 --- a/debian/control +++ b/debian/control @@ -6,20 +6,22 @@ Uploaders: Alf Gaida , Yukiharu YABUKI Section: x11 Priority: optional -Build-Depends: debhelper (>= 9), +Build-Depends: debhelper (>= 10), cmake (>= 3.0.2), - libpolkit-agent-1-dev, - libx11-dev, libkf5windowsystem-dev, - liblxqt0-dev (>= 0.10.0), + liblxqt0-dev (>= 0.11.0), + libpolkit-agent-1-dev, libpolkit-qt5-1-dev, + libqt5svg5-dev, libqt5x11extras5-dev, - libqt5xdg-dev (>= 1.3.0), + libqt5xdg-dev (>= 2.0.0), + libqt5xdgiconloader-dev (>= 2.0.0), + libx11-dev, pkg-config, qttools5-dev, qttools5-dev-tools Standards-Version: 3.9.8 -Vcs-Browser: http://anonscm.debian.org/git/pkg-lxqt/lxqt-policykit.git/?h=debian/sid +Vcs-Browser: https://anonscm.debian.org/cgit/pkg-lxqt/lxqt-policykit.git/?h=debian/sid Vcs-Git: https://anonscm.debian.org/git/pkg-lxqt/lxqt-policykit.git -b debian/sid Homepage: https://github.com/lxde/lxqt-policykit @@ -27,6 +29,7 @@ Package: lxqt-policykit Architecture: any Depends: ${misc:Depends}, ${shlibs:Depends} +Recommends: lxqt-policykit-l10n Description: LXQt authentication agent for PolicyKit The lxqt-policykit D-Bus session bus service that is used to bring up authentication dialogs used for obtaining privileges. diff --git a/debian/copyright b/debian/copyright index 4500b1d..ba0c576 100644 --- a/debian/copyright +++ b/debian/copyright @@ -3,7 +3,7 @@ Upstream-Name: lxqt-policykit Source: https://github.com/lxde/lxqt-policykit Files: * -Copyright: 2012-2015 LXQt team +Copyright: 2012-2016 LXQt team 2010-2012 Razor team License: LGPL-2.1+ diff --git a/debian/docs b/debian/docs index 62deb04..0b6e0f3 100644 --- a/debian/docs +++ b/debian/docs @@ -1 +1,2 @@ AUTHORS +README.md diff --git a/debian/lintian-overrides b/debian/lintian-overrides deleted file mode 100644 index 2582e9d..0000000 --- a/debian/lintian-overrides +++ /dev/null @@ -1,3 +0,0 @@ -# there will be no manpage in a foreseable future -lxqt-policykit: binary-without-manpage usr/bin/lxqt-policykit-agent - diff --git a/debian/manpages b/debian/manpages new file mode 100644 index 0000000..730ddc8 --- /dev/null +++ b/debian/manpages @@ -0,0 +1 @@ +man/lxqt-policykit-agent.1 diff --git a/debian/rules b/debian/rules index ab09a6b..9dbedc2 100755 --- a/debian/rules +++ b/debian/rules @@ -6,5 +6,10 @@ export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed export DEB_BUILD_MAINT_OPTIONS = hardening=+all %: - dh ${@} --buildsystem cmake\ - --parallel + dh ${@} --buildsystem cmake + +override_dh_auto_configure: + dh_auto_configure -- \ + -DPULL_TRANSLATIONS=OFF\ + -DUPDATE_TRANSLATIONS=OFF\ + -DCMAKE_BUILD_TYPE=RelWithDebInfo diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc index 05cd1df..4936633 100644 --- a/debian/upstream/signing-key.asc +++ b/debian/upstream/signing-key.asc @@ -1,63 +1,50 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v2.0.22 (GNU/Linux) -mQINBFJevCYBEACx+Hvy+Vsuf+V5jeLUnzjAmHoy8DfTeGWr3ts30IapLHrfi0+U -WpzNnISO77yTr4VNboVZH+GHM/rnPfieODfB4ZW6CZLlInMSKUXcgQsEqXpyBZhA -Ib/SPy2bOfHly1uRJes0uRDsH5+v/hD74sByfnjQlrvI68O6wvGZmDFMNNPVO8+/ -OWBSBNkBuVrrZOMSPsLwQGJ4UtUQ4whburaPJG4VZJc5DLbzJGbEuACc0IAEYJS3 -7AfXVXn4j4Gc9F3o1xTUnbOBnwGPquWwUIm3FM7Ec2OdkvMt3EwvnkMAfeVrq3iE -FDD/KZTxdL0BZH3QD8gB7Jm4v4f3Nkobg6JCvCbcH3wBdZW4mASbwWzfRaDC2zHb -ErTglD7PpShLKZZ0pr9okWZEGw4Ku3q8ALi1JXK/ePTmsBlvkVskOJ3Nnd0avgH4 -+Q/vZoKfH8EhNY745rI+8CE9iv6V9XiSUt4CKEWAENt4A8hq6U2vV+jZv3B6AgD7 -ZjiI59yD4YuYubu8rCnNizTgh1voVw3ietknn/x2H5yH8fByWZ5uL87C0ky/uma6 -ZGbiiAtM4kdkyDMrfRV5nlEG9EKAGPVu5mjeSCrfkETwZ9OFPz1AuDye4ZEXrrcC -iRQ7RX6/GtW18aHER0kzGnfwx5KJzkDrRBY8A2PdXLBcrsN4WpK9EX01PQARAQAB -tCNKZXJvbWUgTGVjbGFuY2hlIDxqZXJvbWVAbGVjbGFuLmNoPokCPwQTAQIAKQUC -Ul68JgIbAwUJAeEzgAcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEDfgrx/a -SPNzSHIP/1ewXcC0TFBcvDD7MrIP7anyNfiWfW7cxkR8GSamkg6HTa6Ndyr1FFjJ -OoDFUP37jWhu59CsHxs2D0zRWJktezfvElscRgqbHcdpIznqsGdI8hXCZafhBGVb -sdAB2LRawcXGxnXt7XajPcSVwLWRE62caBqohznU2iWvI780WNjEbZoA0LhZwaFF -UUPJm8ea9v0IkZVKUyg9WONZ1U7FEG9SaEiSpI8kJdx1fvCwZVDV/NRO5GqnJaho -P1LCne4YdwS6pt1/fRgk32IHxxZfHlLzLHxb6v1JmIg72x28qCmGyK9oFBDbbnYu -6Aq8XbHogOrD5vJM2Pfm2IhV0+JHOjfQbddv8tsAH1M+LI+tToXmg5st1AU3wnTn -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 -=fF8P +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 +=h7ww -----END PGP PUBLIC KEY BLOCK----- diff --git a/debian/watch b/debian/watch index ecfea0f..9ffe7f3 100644 --- a/debian/watch +++ b/debian/watch @@ -1,3 +1,3 @@ -version=3 +version=4 opts="pgpsigurlmangle=s/$/.asc/" \ - https://github.com/lxde/lxqt-policykit/releases .*/([\d\.]+).tar.gz + https://github.com/lxde/lxqt-policykit/releases .*/lxqt-policykit-([\d\.]+).tar.xz diff --git a/lxqt-policykit_gui.png b/lxqt-policykit_gui.png new file mode 100644 index 0000000..cb72296 Binary files /dev/null and b/lxqt-policykit_gui.png differ diff --git a/man/lxqt-policykit-agent.1 b/man/lxqt-policykit-agent.1 index 008856b..72501f4 100644 --- a/man/lxqt-policykit-agent.1 +++ b/man/lxqt-policykit-agent.1 @@ -32,7 +32,7 @@ The module detected on shares privilege escalation, and maintain a security dial that ask for the user's key need for action. .SH AUTOSTART The module only are showed on \fBLXQt\fR desktop, but u can create an autostart action -for u prefered desktop environment. +for u preferred desktop environment. .SH "REPORTING BUGS" Report bugs to https://github.com/lxde/lxqt/issues .SH "SEE ALSO" diff --git a/src/policykitagent.cpp b/src/policykitagent.cpp index 0c12bb8..e1fa30c 100644 --- a/src/policykitagent.cpp +++ b/src/policykitagent.cpp @@ -116,27 +116,36 @@ void PolicykitAgent::request(const QString &request, bool echo) PolkitQt1::Identity identity = m_SessionIdentity[session]; m_gui->setPrompt(identity, request, echo); - if (m_gui->exec()) - session->setResponse(m_gui->response()); - else - session->setResponse(""); + connect(m_gui, &QDialog::finished, [this, session] (int result) + { + if (result == QDialog::Accepted && m_gui->identity() == m_SessionIdentity[session].toString()) + session->setResponse(m_gui->response()); + else + session->cancel(); + }); + m_gui->show(); } void PolicykitAgent::completed(bool gainedAuthorization) { PolkitQt1::Agent::Session * session = qobject_cast(sender()); Q_ASSERT(session); + Q_ASSERT(m_gui); - if (!gainedAuthorization) + if (m_gui->identity() == m_SessionIdentity[session].toString()) { - QMessageBox::information(0, tr("Authorization Failed"), tr("Authorization failed for some reason")); + if (!gainedAuthorization) + { + QMessageBox::information(0, tr("Authorization Failed"), tr("Authorization failed for some reason")); + } + + // Note: the setCompleted() must be called exacly once (as the + // AsyncResult is shared by all the sessions) + session->result()->setCompleted(); + m_inProgress = false; } - session->result()->setCompleted(); - delete session; - - m_inProgress = false; } void PolicykitAgent::showError(const QString &text) diff --git a/src/policykitagentgui.cpp b/src/policykitagentgui.cpp index 1cbdc12..5d3858d 100644 --- a/src/policykitagentgui.cpp +++ b/src/policykitagentgui.cpp @@ -25,8 +25,9 @@ * * END_COMMON_COPYRIGHT_HEADER */ -#include +#include #include "policykitagentgui.h" +#include namespace LXQtPolicykit { @@ -44,30 +45,47 @@ PolicykitAgentGUI::PolicykitAgentGUI(const QString &actionId, Q_UNUSED(details); // it seems too confusing for end user (=me) messageLabel->setText(message); - iconLabel->setPixmap(XdgIcon::fromTheme(iconName).pixmap(64, 64)); + QIcon icon = QIcon::fromTheme(iconName); + if (icon.isNull()) + icon = QIcon::fromTheme(QLatin1String("dialog-question")); + iconLabel->setPixmap(icon.pixmap(64, 64)); + const uid_t current_uid = getuid(); + int current_user_index = -1; foreach (PolkitQt1::Identity identity, identities) { - m_identityMap[identity.toString()] = identity; + const int i = identityComboBox->count(); // index of the added item identityComboBox->addItem(identity.toString()); + PolkitQt1::UnixUserIdentity const * const u_id = static_cast(&identity); + if (u_id != nullptr && u_id->uid() == current_uid) + current_user_index = i; } + if (current_user_index != -1) + identityComboBox->setCurrentIndex(current_user_index); + connect(identityComboBox, static_cast(&QComboBox::currentIndexChanged), this, &PolicykitAgentGUI::onIdentityChanged); + passwordEdit->setFocus(Qt::OtherFocusReason); } void PolicykitAgentGUI::setPrompt(const PolkitQt1::Identity &identity, const QString &text, bool echo) { - int ix = identityComboBox->findText(identity.toString()); + const int ix = identityComboBox->findText(identity.toString()); if (ix != -1) { - identityComboBox->setCurrentIndex(ix); - passwordEdit->setFocus(Qt::OtherFocusReason); + identityComboBox->setItemData(ix, text, RolePromptText); + identityComboBox->setItemData(ix, echo, RolePromptEcho); + + if (ix == identityComboBox->currentIndex()) + { + promptLabel->setText(text); + passwordEdit->setEchoMode(echo ? QLineEdit::Normal : QLineEdit::Password); + } } - promptLabel->setText(text); - passwordEdit->setEchoMode(echo ? QLineEdit::Normal : QLineEdit::Password); } -PolkitQt1::Identity PolicykitAgentGUI::identity() +QString PolicykitAgentGUI::identity() { - return m_identityMap[identityComboBox->currentText()]; + Q_ASSERT(identityComboBox->currentIndex() != -1); + return identityComboBox->currentText(); } QString PolicykitAgentGUI::response() @@ -75,4 +93,14 @@ QString PolicykitAgentGUI::response() return passwordEdit->text(); } +void PolicykitAgentGUI::onIdentityChanged(int index) +{ + QVariant text = identityComboBox->itemData(index, RolePromptText); + QVariant echo = identityComboBox->itemData(index, RolePromptEcho); + if (text != QVariant{}) + promptLabel->setText(text.toString()); + if (echo != QVariant{}) + passwordEdit->setEchoMode(echo.toBool() ? QLineEdit::Normal : QLineEdit::Password); +} + } // namespace diff --git a/src/policykitagentgui.h b/src/policykitagentgui.h index c757238..2b0bc0e 100644 --- a/src/policykitagentgui.h +++ b/src/policykitagentgui.h @@ -40,6 +40,13 @@ class PolicykitAgentGUI : public QDialog, public Ui::PolicykitAgentGUI { Q_OBJECT +private: + enum DataRoles + { + RolePromptText = Qt::UserRole + , RolePromptEcho + }; + public: PolicykitAgentGUI(const QString &actionId, const QString &message, @@ -48,11 +55,14 @@ public: const PolkitQt1::Identity::List &identities); void setPrompt(const PolkitQt1::Identity &identity, const QString &text, bool echo); - PolkitQt1::Identity identity(); + /*! \brief Returns currently selected identity (serialized by toString()) + */ + QString identity(); QString response(); -private: - QHash m_identityMap; +public slots: + void onIdentityChanged(int index); + }; } // namespace diff --git a/translations/lxqt-policykit-agent.ts b/translations/lxqt-policykit-agent.ts deleted file mode 100644 index 31ee586..0000000 --- a/translations/lxqt-policykit-agent.ts +++ /dev/null @@ -1,51 +0,0 @@ - - - - - LXQtPolicykit::PolicykitAgent - - - - PolicyKit Information - - - - - Another authentization in progress. Please try it again later. - - - - - Authorization Failed - - - - - Authorization failed for some reason - - - - - PolicyKit Error - - - - - PolicykitAgentGUI - - - Authentication Required - - - - - Identity: - - - - - Password: - - - - diff --git a/translations/lxqt-policykit-agent_de.ts b/translations/lxqt-policykit-agent_de.ts deleted file mode 100644 index f889855..0000000 --- a/translations/lxqt-policykit-agent_de.ts +++ /dev/null @@ -1,51 +0,0 @@ - - - - - LXQtPolicykit::PolicykitAgent - - - - PolicyKit Information - PolicyKit Information - - - - Another authentization in progress. Please try it again later. - Eine andere Authentisierung wird gerade durchgeführt. Bitte später noch einmal versuchen. - - - - Authorization Failed - Autorisierung fehlgeschlagen - - - - Authorization failed for some reason - Autorisierung aus irgendeinem Grund fehlgeschlagen - - - - PolicyKit Error - PolicyKit Fehler - - - - PolicykitAgentGUI - - - Authentication Required - Authentisierung benötigt - - - - Identity: - Identität: - - - - Password: - Kennwort: - - - diff --git a/translations/lxqt-policykit-agent_el.ts b/translations/lxqt-policykit-agent_el.ts deleted file mode 100644 index d229859..0000000 --- a/translations/lxqt-policykit-agent_el.ts +++ /dev/null @@ -1,51 +0,0 @@ - - - - - LXQtPolicykit::PolicykitAgent - - - - PolicyKit Information - Πληροφορίες PolicyKit - - - - Another authentization in progress. Please try it again later. - Μια άλλη ταυτοποίηση είναι σε εξέλιξη. Παρακαλώ προσπαθήστε ξανά αργότερα. - - - - Authorization Failed - Η ταυτοποίηση απέτυχε - - - - Authorization failed for some reason - Η ταυτοποίηση για κάποια αιτία απέτυχε - - - - PolicyKit Error - Σφάλμα PolicyKit - - - - PolicykitAgentGUI - - - Authentication Required - Απαιτείται ταυτοποίηση - - - - Identity: - Ταυτότητα: - - - - Password: - Κωδικός πρόσβασης: - - - diff --git a/translations/lxqt-policykit-agent_hu.ts b/translations/lxqt-policykit-agent_hu.ts deleted file mode 100644 index 20df8b9..0000000 --- a/translations/lxqt-policykit-agent_hu.ts +++ /dev/null @@ -1,51 +0,0 @@ - - - - - LXQtPolicykit::PolicykitAgent - - - - PolicyKit Information - Policykit információ - - - - Another authentization in progress. Please try it again later. - - - - - Authorization Failed - Hitelesítés sikertelen - - - - Authorization failed for some reason - Hitelesítés valami miatt sikertelen - - - - PolicyKit Error - Policykit hiba - - - - PolicykitAgentGUI - - - Authentication Required - Hitelesítés kell - - - - Identity: - Név: - - - - Password: - Jelszó: - - - diff --git a/translations/lxqt-policykit-agent_pt.ts b/translations/lxqt-policykit-agent_pt.ts deleted file mode 100644 index cc56168..0000000 --- a/translations/lxqt-policykit-agent_pt.ts +++ /dev/null @@ -1,51 +0,0 @@ - - - - - LXQtPolicykit::PolicykitAgent - - - - PolicyKit Information - Informaçoes PolicyKit - - - - Another authentization in progress. Please try it again later. - - - - - Authorization Failed - Falha de autenticação - - - - Authorization failed for some reason - A autenticação falhou por alguma razão - - - - PolicyKit Error - Erro PolicyKit - - - - PolicykitAgentGUI - - - Authentication Required - Requer autenticação - - - - Identity: - Identidade: - - - - Password: - Senha: - - - diff --git a/translations/lxqt-policykit-agent_ru.ts b/translations/lxqt-policykit-agent_ru.ts deleted file mode 100644 index 1ad2255..0000000 --- a/translations/lxqt-policykit-agent_ru.ts +++ /dev/null @@ -1,51 +0,0 @@ - - - - - LXQtPolicykit::PolicykitAgent - - - - PolicyKit Information - Информация PolicyKit - - - - Another authentization in progress. Please try it again later. - - - - - Authorization Failed - Авторизация не удалась - - - - Authorization failed for some reason - Авторизация не удалась по какой-то причине - - - - PolicyKit Error - Ошибка PolicyKit - - - - PolicykitAgentGUI - - - Authentication Required - Требуется аутентификация - - - - Identity: - Идентификация: - - - - Password: - Пароль: - - - diff --git a/translations/lxqt-policykit-agent_ru_RU.ts b/translations/lxqt-policykit-agent_ru_RU.ts deleted file mode 100644 index 06c8602..0000000 --- a/translations/lxqt-policykit-agent_ru_RU.ts +++ /dev/null @@ -1,51 +0,0 @@ - - - - - LXQtPolicykit::PolicykitAgent - - - - PolicyKit Information - Информация PolicyKit - - - - Another authentization in progress. Please try it again later. - - - - - Authorization Failed - Авторизация не удалась - - - - Authorization failed for some reason - Авторизация не удалась по какой-то причине - - - - PolicyKit Error - Ошибка PolicyKit - - - - PolicykitAgentGUI - - - Authentication Required - Требуется аутентификация - - - - Identity: - Идентификация: - - - - Password: - Пароль: - - -