From eb245c4ee8b91b699c8b8897ba0d6fd2ac323b37 Mon Sep 17 00:00:00 2001 From: Alf Gaida Date: Tue, 5 Dec 2017 00:26:17 +0100 Subject: [PATCH] Cherry-picking upstream version 0.12.0. --- AUTHORS | 2 +- CHANGELOG | 116 ++- CMakeLists.txt | 43 +- CMakeLists.txt.lxqt-common | 27 + autostart/CMakeLists.txt | 17 + .../lxqt-xscreensaver-autostart.desktop.in | 9 + .../lxqt-xscreensaver-autostart_ar.desktop | 2 + .../lxqt-xscreensaver-autostart_cs.desktop | 2 + .../lxqt-xscreensaver-autostart_cs_CZ.desktop | 2 + .../lxqt-xscreensaver-autostart_da.desktop | 2 + .../lxqt-xscreensaver-autostart_de.desktop | 2 + .../lxqt-xscreensaver-autostart_el.desktop | 2 + .../lxqt-xscreensaver-autostart_eo.desktop | 2 + .../lxqt-xscreensaver-autostart_es.desktop | 2 + .../lxqt-xscreensaver-autostart_es_VE.desktop | 2 + .../lxqt-xscreensaver-autostart_eu.desktop | 2 + .../lxqt-xscreensaver-autostart_fi.desktop | 2 + .../lxqt-xscreensaver-autostart_fr.desktop | 2 + .../lxqt-xscreensaver-autostart_hu.desktop | 1 + .../lxqt-xscreensaver-autostart_ia.desktop | 1 + .../lxqt-xscreensaver-autostart_id_ID.desktop | 2 + .../lxqt-xscreensaver-autostart_it_IT.desktop | 2 + .../lxqt-xscreensaver-autostart_ja.desktop | 2 + .../lxqt-xscreensaver-autostart_ko.desktop | 1 + .../lxqt-xscreensaver-autostart_lt.desktop | 2 + .../lxqt-xscreensaver-autostart_nl.desktop | 2 + .../lxqt-xscreensaver-autostart_pl_PL.desktop | 2 + .../lxqt-xscreensaver-autostart_pt.desktop | 2 + .../lxqt-xscreensaver-autostart_pt_BR.desktop | 2 + .../lxqt-xscreensaver-autostart_ro_RO.desktop | 2 + .../lxqt-xscreensaver-autostart_ru.desktop | 2 + .../lxqt-xscreensaver-autostart_ru_RU.desktop | 2 + .../lxqt-xscreensaver-autostart_sl.desktop | 2 + .../lxqt-xscreensaver-autostart_sr.desktop | 2 + ...screensaver-autostart_sr@ijekavian.desktop | 1 + ...nsaver-autostart_sr@ijekavianlatin.desktop | 1 + ...qt-xscreensaver-autostart_sr@latin.desktop | 2 + .../lxqt-xscreensaver-autostart_th_TH.desktop | 2 + .../lxqt-xscreensaver-autostart_tr.desktop | 2 + .../lxqt-xscreensaver-autostart_uk.desktop | 2 + ...screensaver-autostart_zh_CN.GB2312.desktop | 1 + .../lxqt-xscreensaver-autostart_zh_CN.desktop | 2 + .../lxqt-xscreensaver-autostart_zh_TW.desktop | 2 + config/CMakeLists.txt | 12 + config/lxqt.conf | 11 + config/openbox/lxqt-rc.xml | 744 ++++++++++++++++++ config/session.conf | 24 + config/windowmanagers.conf | 26 + lxqt-config-session/main.cpp | 12 + .../lxqt-config-session_eu.desktop | 6 +- .../lxqt-config-session_lt.desktop | 6 +- lxqt-leave/CMakeLists.txt | 2 + lxqt-leave/leavedialog.cpp | 106 ++- lxqt-leave/leavedialog.h | 2 +- lxqt-leave/leavedialog.ui | 257 ++---- lxqt-leave/listwidget.cpp | 241 ++++++ lxqt-leave/listwidget.h | 52 ++ lxqt-leave/main.cpp | 9 +- .../translations/lxqt-hibernate_eu.desktop | 4 + .../translations/lxqt-hibernate_lt.desktop | 3 + lxqt-leave/translations/lxqt-leave_eu.desktop | 4 + lxqt-leave/translations/lxqt-leave_lt.desktop | 3 + .../translations/lxqt-lockscreen_eu.desktop | 4 + .../translations/lxqt-lockscreen_lt.desktop | 3 + .../translations/lxqt-logout_eu.desktop | 4 + .../translations/lxqt-logout_lt.desktop | 4 + .../translations/lxqt-reboot_eu.desktop | 4 + .../translations/lxqt-reboot_lt.desktop | 4 + .../translations/lxqt-shutdown_eu.desktop | 4 + .../translations/lxqt-shutdown_lt.desktop | 4 + .../translations/lxqt-suspend_eu.desktop | 4 + .../translations/lxqt-suspend_lt.desktop | 4 + lxqt-session/src/UdevNotifier.cpp | 4 +- lxqt-session/src/lockscreenmanager.cpp | 1 + lxqt-session/src/lxqtmodman.cpp | 17 +- lxqt-session/src/lxqtmodman.h | 7 +- lxqt-session/src/main.cpp | 17 + lxqt-session/src/numlock.cpp | 2 +- lxqt-session/src/sessionapplication.cpp | 41 +- lxqt-session/src/sessionapplication.h | 2 + lxqt-session/src/sessiondbusadaptor.h | 31 +- lxqt-session/src/wmselectdialog.cpp | 4 +- startlxqt.1 | 48 ++ startlxqt.in | 99 +++ xsession/CMakeLists.txt | 29 + xsession/lxqt.desktop.in | 8 + xsession/translations/lxqt_ar.desktop | 3 + xsession/translations/lxqt_cs.desktop | 3 + xsession/translations/lxqt_cs_CZ.desktop | 3 + xsession/translations/lxqt_da.desktop | 3 + xsession/translations/lxqt_de.desktop | 3 + xsession/translations/lxqt_el.desktop | 3 + xsession/translations/lxqt_eo.desktop | 3 + xsession/translations/lxqt_es.desktop | 3 + xsession/translations/lxqt_es_VE.desktop | 3 + xsession/translations/lxqt_eu.desktop | 3 + xsession/translations/lxqt_fi.desktop | 3 + xsession/translations/lxqt_fr.desktop | 3 + xsession/translations/lxqt_hu.desktop | 3 + xsession/translations/lxqt_ia.desktop | 1 + xsession/translations/lxqt_id_ID.desktop | 1 + xsession/translations/lxqt_it_IT.desktop | 3 + xsession/translations/lxqt_ja.desktop | 3 + xsession/translations/lxqt_ko.desktop | 1 + xsession/translations/lxqt_lt.desktop | 3 + xsession/translations/lxqt_nl.desktop | 3 + xsession/translations/lxqt_pl.desktop | 3 + xsession/translations/lxqt_pl_PL.desktop | 3 + xsession/translations/lxqt_pt.desktop | 3 + xsession/translations/lxqt_pt_BR.desktop | 3 + xsession/translations/lxqt_ro_RO.desktop | 3 + xsession/translations/lxqt_ru.desktop | 3 + xsession/translations/lxqt_ru_RU.desktop | 3 + xsession/translations/lxqt_sk.desktop | 3 + xsession/translations/lxqt_sl.desktop | 3 + xsession/translations/lxqt_sr.desktop | 3 + xsession/translations/lxqt_sr@latin.desktop | 3 + xsession/translations/lxqt_th_TH.desktop | 3 + xsession/translations/lxqt_tr.desktop | 3 + xsession/translations/lxqt_uk.desktop | 3 + .../translations/lxqt_zh_CN.GB2312.desktop | 1 + xsession/translations/lxqt_zh_CN.desktop | 3 + xsession/translations/lxqt_zh_TW.desktop | 3 + 123 files changed, 1987 insertions(+), 271 deletions(-) create mode 100644 CMakeLists.txt.lxqt-common create mode 100644 autostart/CMakeLists.txt create mode 100644 autostart/lxqt-xscreensaver-autostart.desktop.in create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_ar.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_cs.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_cs_CZ.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_da.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_de.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_el.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_eo.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_es.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_es_VE.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_eu.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_fi.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_fr.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_hu.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_ia.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_id_ID.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_it_IT.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_ja.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_ko.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_lt.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_nl.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_pl_PL.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_pt.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_pt_BR.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_ro_RO.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_ru.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_ru_RU.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_sl.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_sr.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_sr@ijekavian.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_sr@ijekavianlatin.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_sr@latin.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_th_TH.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_tr.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_uk.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_zh_CN.GB2312.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_zh_CN.desktop create mode 100644 autostart/translations/lxqt-xscreensaver-autostart_zh_TW.desktop create mode 100644 config/CMakeLists.txt create mode 100644 config/lxqt.conf create mode 100644 config/openbox/lxqt-rc.xml create mode 100644 config/session.conf create mode 100644 config/windowmanagers.conf create mode 100644 lxqt-leave/listwidget.cpp create mode 100644 lxqt-leave/listwidget.h create mode 100644 lxqt-leave/translations/lxqt-hibernate_eu.desktop create mode 100644 lxqt-leave/translations/lxqt-hibernate_lt.desktop create mode 100644 lxqt-leave/translations/lxqt-leave_eu.desktop create mode 100644 lxqt-leave/translations/lxqt-leave_lt.desktop create mode 100644 lxqt-leave/translations/lxqt-lockscreen_eu.desktop create mode 100644 lxqt-leave/translations/lxqt-lockscreen_lt.desktop create mode 100644 lxqt-leave/translations/lxqt-logout_eu.desktop create mode 100644 lxqt-leave/translations/lxqt-logout_lt.desktop create mode 100644 lxqt-leave/translations/lxqt-reboot_eu.desktop create mode 100644 lxqt-leave/translations/lxqt-reboot_lt.desktop create mode 100644 lxqt-leave/translations/lxqt-shutdown_eu.desktop create mode 100644 lxqt-leave/translations/lxqt-shutdown_lt.desktop create mode 100644 lxqt-leave/translations/lxqt-suspend_eu.desktop create mode 100644 lxqt-leave/translations/lxqt-suspend_lt.desktop create mode 100644 startlxqt.1 create mode 100755 startlxqt.in create mode 100644 xsession/CMakeLists.txt create mode 100644 xsession/lxqt.desktop.in create mode 100644 xsession/translations/lxqt_ar.desktop create mode 100644 xsession/translations/lxqt_cs.desktop create mode 100644 xsession/translations/lxqt_cs_CZ.desktop create mode 100644 xsession/translations/lxqt_da.desktop create mode 100644 xsession/translations/lxqt_de.desktop create mode 100644 xsession/translations/lxqt_el.desktop create mode 100644 xsession/translations/lxqt_eo.desktop create mode 100644 xsession/translations/lxqt_es.desktop create mode 100644 xsession/translations/lxqt_es_VE.desktop create mode 100644 xsession/translations/lxqt_eu.desktop create mode 100644 xsession/translations/lxqt_fi.desktop create mode 100644 xsession/translations/lxqt_fr.desktop create mode 100644 xsession/translations/lxqt_hu.desktop create mode 100644 xsession/translations/lxqt_ia.desktop create mode 100644 xsession/translations/lxqt_id_ID.desktop create mode 100644 xsession/translations/lxqt_it_IT.desktop create mode 100644 xsession/translations/lxqt_ja.desktop create mode 100644 xsession/translations/lxqt_ko.desktop create mode 100644 xsession/translations/lxqt_lt.desktop create mode 100644 xsession/translations/lxqt_nl.desktop create mode 100644 xsession/translations/lxqt_pl.desktop create mode 100644 xsession/translations/lxqt_pl_PL.desktop create mode 100644 xsession/translations/lxqt_pt.desktop create mode 100644 xsession/translations/lxqt_pt_BR.desktop create mode 100644 xsession/translations/lxqt_ro_RO.desktop create mode 100644 xsession/translations/lxqt_ru.desktop create mode 100644 xsession/translations/lxqt_ru_RU.desktop create mode 100644 xsession/translations/lxqt_sk.desktop create mode 100644 xsession/translations/lxqt_sl.desktop create mode 100644 xsession/translations/lxqt_sr.desktop create mode 100644 xsession/translations/lxqt_sr@latin.desktop create mode 100644 xsession/translations/lxqt_th_TH.desktop create mode 100644 xsession/translations/lxqt_tr.desktop create mode 100644 xsession/translations/lxqt_uk.desktop create mode 100644 xsession/translations/lxqt_zh_CN.GB2312.desktop create mode 100644 xsession/translations/lxqt_zh_CN.desktop create mode 100644 xsession/translations/lxqt_zh_TW.desktop diff --git a/AUTHORS b/AUTHORS index a66be6d..abb6e1f 100644 --- a/AUTHORS +++ b/AUTHORS @@ -4,7 +4,7 @@ Upstream Authors: Copyright: Copyright (c) 2010-2012 Razor team - Copyright (c) 2012-2016 LXQt team + Copyright (c) 2012-2017 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 index d7841c0..a7feecd 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,7 +1,121 @@ -lxqt-session-0.11.1 / 2017-01-01 +lxqt-session-0.12.0 / 2017-10-21 ================================ + * Set patch version + * lxqt-session: Unify arguments parsing + * Don't export github templates + * Add/Update Lithuanian language + * c'n'p bug + * add basic cli to lxqt-session + * lxqt-session: Provide reboot/powerOff methods + * Drops Qt5Core_VERSION_STRING + * lxqt-config-session: set Qt::AA_UseHighDpiPixmaps to true + * lxqt-leave: set Qt::AA_UseHighDpiPixmaps to true + * improved --version + * Added QCommandLineParser and basic cli interface to lxqt-conf-session + * Added default CMAKE_BUILD_TYPE and LXQT_SESSION_PATCH_VERSION + * String encoding (#103) + * Fixes a FTBFS in superbuild mode (#102) + * lxqt-leave: Fix "disabled items" key navigation + * Address "unused parameter" compiler warnings + * lxqt-leave: Redesign dialog for good key navigation + * Removed superfluous include(LXQtTranslateDesktop) + * fixed config/CMakeLists.txt + * Merged relevant parts of CMakeLists.txt.lxqt-common into CMakeLists.txt + * Rename CMakeLists.txt -> CMakeLists.txt.lxqt-common + * Add Basque translation of lxqt-leave and update Basque translation of lxqt-config-session + * leavedialog: Use "expected" tab order + * LeaveDialog: Accept enter key for action/cancel firing + * LeaveDialog: Use "override" keyword + * leavedialog: Don't trigger "cancel" on Enter + * LeaveDialog: Use correct method + * startlxqt: Consider $XDG_RUNTIME_DIR/bus for DBus + * Updated *_da.desktop files and removed *_da_DK.desktop files + * Bump year + * Update desktop entries and Replace fr_FR by fr + * Use the LXQtConfigVars module + * Fixed typo + * Remove cpack (#61) + * startlxqt: Consider LXQT_DEFAULT_OPENBOX_CONFIG + * startlxqt: Honor the pre-defined SAL_USE_VLCPLUGIN + * Replace lxqt-rc.xml with latest openbox version + * startlxqt: Consider pre-exising LXDE OB config also + * build: Revert @6d6d2bef54 + * build: Add xmessage as "dependency" + * Openbox: Fix informational message about adoption of rc.xml + * lxqt-rc.xml: Change default config install path + * startlxqt: Copy existing openbox config preferably + * Improves changed Openbox default path startup message (#51) + * Disable gtk+ 3 overlay scrollbars by default. + * Don't add XDG_DATA_HOME to XDG_DATA_DIRS (#47) + * Message about Openbox default path changed. + * Warning message about openbox settings path changed. + * startlxqt: Force XDG_CONFIG_DIRS to contain @LXQT_ETC_XDG_DIR@ + * Copy openbox defaults at session start. + * Rename openbox/rc.xml to openbox/lxqt-openbox-rc.xml + * Openbox aero snap using mouse wheel over title bar. + * Settings Openbox updated. + * Default key shortcuts added to lxqt-globalkeysd. + * CMakeLists: Use LXQT_GRAPHICS_DIR for graphics + * Add startlxqt man page + * Fixes #807 – Add XDG_CACHE_HOME definition + * startlxqt: optimization of XDG_DATA_DIRS + * corrected indentation + * startlxqt: Set proper prefix for XDG_DATA_DIRS + * Update Greek translation (el) Remove country variant from language code + * Rename LxQt to LXQt everywhere + * CMake: Adds Runtime and Devel install COMPONENTs + * Coding style changes + * Removes no added value comments + * Adds double quotes to everything that may break + * Use GNUINnstallDirs + * Updates the build system to use the Targets infrastructure + * Enable the "leave confirmation dialog" by default + * TryExec to detect proper installed lxqt-session + * Uniforms indentation + * Sets env variable XDG_CONFIG_DIRS + * Drops hardcoded /etc/xdg paths + * Set LibreOffice's plugin env var to kde4 + * config: auto-detect succesfully kwin on recent kwin versions + * Updated german translation, replaced Qt4 by Qt in all xsession/translations + * Adds an scalable start-here-lxqt icon + * use LXQt-specific menu file + * Renames some .desktop files + * Portuguese update for .desktop files + * - Unify naming for a unique lxqt. No more suffixes + * Make frost the default theme + * Defines XDG_DATA_HOME and XDG_DATA_DIRS environment variables + * Updates translations infrastructure + * Update the required minimum cmake version + * Clean up CMakeLists.txt and drop Qt 4 support + * Set environment variable GTK_CSD=0 to turn off the default client side decoration for gtk+ 3 programs. (This will not always work if a gtk+3 program explicitly sets a title bar and turns on CSD.) + * Add some more default values for Qt settings. + * Update default config file. + * Add Qt5 support. + * Support Qt5 platform plugin and add some more comments. + * Remove XDG_CURRENT_DESKTOP=Razor from environment variables. + * Set XDG_CURRENT_DESKTOP to LXQt + * remove dead template lines switch OnlyShowIn from Razor -> LXQt stringchanges LxQt -> LXQt + * Use LXQt as desktop name + * Add CPack rules for creating tarball + * Add session.conf and windowmanagers.conf. + * Change XDG_CURRENT_DESKTOP to Razor for now. (May rename to LxQt or something else in the future.) + * Export environment varialbe QT_PLATFORM_PLUGIN=lxqt to let all Qt programs load lxqt-qtplugin and apply lxqt settings. + * Support lxqt-session and add necessary xdg autostart desktop entry files. + * Run lxde-qt with XDG_CURRENT_DESKTOP=RAZOR + * Fix renaming bugs, replacing lxqt-qt with lxde-qt + * Finish the crazy razor=>lxqt renaming tasks. + * Rename dirs and replace razor with lxqt. Install lxqt.conf to /etc/xdg/lxqt and provide theme config. + * Properly set default wallpaper for pcmanfm-qt. Comment out openbox config handling in startlxde-qt since it's not needed. + * Remove custom openbox config file in desktop.conf temporarily until lxsession is fixed. + * Fix file paths, replacing razor with lxqt. * Remove Alt+F2 and Ctrl+Esc from openbox config file to avoid conflicts with lxqt-panel & lxqt-globalkeys. + * Add default configuration files for lxde-qt session. + +0.11.1 / 2017-01-01 +=================== + + * Release 0.11.1: Update changelog * Adds an nullptr check when restarting a module (#90) * Fixes a session logout crash (#88) * Updated da.desktop files and removed da_DK.desktop files diff --git a/CMakeLists.txt b/CMakeLists.txt index d62552f..3cd4112 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,10 +17,10 @@ option(WITH_LIBUDEV "Build with libudev support" ON) find_package(X11 REQUIRED) find_package(Qt5DBus REQUIRED) -find_package(Qt5LinguistTools REQUIRED QUIET) +find_package(Qt5LinguistTools REQUIRED) find_package(Qt5Widgets REQUIRED) find_package(Qt5X11Extras REQUIRED) -message(STATUS "Building with Qt${Qt5Core_VERSION_STRING}") +message(STATUS "Building with Qt${Qt5Core_VERSION}") find_package(KF5WindowSystem REQUIRED) @@ -29,6 +29,16 @@ find_package(lxqt REQUIRED) # Please don't move, must be after lxqt find_package(XdgUserDirs REQUIRED) +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + +# Patch Version +set(LXQT_SESSION_PATCH_VERSION 0) + +set(LXQT_SESSION_VERSION ${LXQT_MAJOR_VERSION}.${LXQT_MINOR_VERSION}.${LXQT_SESSION_PATCH_VERSION}) +add_definitions("-DLXQT_SESSION_VERSION=\"${LXQT_SESSION_VERSION}\"") + include(LXQtCompilerSettings NO_POLICY_SCOPE) # Translations ********************************** @@ -37,3 +47,32 @@ include(LXQtTranslate) add_subdirectory(lxqt-session) add_subdirectory(lxqt-config-session) add_subdirectory(lxqt-leave) + +# merged from lxqt-common +include(LXQtConfigVars) + +# startlxqt script +set(PREDEF_XDG_DATA_DIRS "$XDG_DATA_HOME") +if(NOT("${LXQT_DATA_DIR}" MATCHES "^/usr(/local)?/share$")) + set(PREDEF_XDG_DATA_DIRS "${PREDEF_XDG_DATA_DIRS}:${LXQT_DATA_DIR}") +endif() +set(PREDEF_XDG_DATA_DIRS "${PREDEF_XDG_DATA_DIRS}:/usr/local/share:/usr/share") +configure_file(startlxqt.in startlxqt @ONLY) +install(PROGRAMS + "${CMAKE_CURRENT_BINARY_DIR}/startlxqt" + DESTINATION "${CMAKE_INSTALL_BINDIR}" + COMPONENT Runtime +) +install(FILES + startlxqt.1 + DESTINATION "${CMAKE_INSTALL_MANDIR}/man1" + COMPONENT Runtime +) + +# default config files +add_subdirectory(config) +add_subdirectory(autostart) + +# xsession *.desktop file for display managers +add_subdirectory(xsession) + diff --git a/CMakeLists.txt.lxqt-common b/CMakeLists.txt.lxqt-common new file mode 100644 index 0000000..4415fc6 --- /dev/null +++ b/CMakeLists.txt.lxqt-common @@ -0,0 +1,27 @@ +include(LXQtTranslateDesktop) +include(LXQtConfigVars) + +# startlxqt script +set(PREDEF_XDG_DATA_DIRS "$XDG_DATA_HOME") +if(NOT("${LXQT_DATA_DIR}" MATCHES "^/usr(/local)?/share$")) + set(PREDEF_XDG_DATA_DIRS "${PREDEF_XDG_DATA_DIRS}:${LXQT_DATA_DIR}") +endif() +set(PREDEF_XDG_DATA_DIRS "${PREDEF_XDG_DATA_DIRS}:/usr/local/share:/usr/share") +configure_file(startlxqt.in startlxqt @ONLY) +install(PROGRAMS + "${CMAKE_CURRENT_BINARY_DIR}/startlxqt" + DESTINATION "${CMAKE_INSTALL_BINDIR}" + COMPONENT Runtime +) +install(FILES + startlxqt.1 + DESTINATION "${CMAKE_INSTALL_MANDIR}/man1" + COMPONENT Runtime +) + +# default config files +add_subdirectory(config) +add_subdirectory(autostart) + +# xsession *.desktop file for display managers +add_subdirectory(xsession) diff --git a/autostart/CMakeLists.txt b/autostart/CMakeLists.txt new file mode 100644 index 0000000..5fb270d --- /dev/null +++ b/autostart/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) + +file(GLOB DESKTOP_FILES_IN *.desktop.in) + +# Translations ********************************** +lxqt_translate_desktop(DESKTOP_FILES + SOURCES + ${DESKTOP_FILES_IN} +) +add_custom_target(lxqt_sesstion_autostart_desktop_files ALL DEPENDS ${DESKTOP_FILES}) +#************************************************ + +install(FILES + ${DESKTOP_FILES} + DESTINATION "${LXQT_ETC_XDG_DIR}/autostart" + COMPONENT Runtime +) diff --git a/autostart/lxqt-xscreensaver-autostart.desktop.in b/autostart/lxqt-xscreensaver-autostart.desktop.in new file mode 100644 index 0000000..199a759 --- /dev/null +++ b/autostart/lxqt-xscreensaver-autostart.desktop.in @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=XScreenSaver +TryExec=xscreensaver +Exec=xscreensaver -no-splash +OnlyShowIn=LXQt; + +#TRANSLATIONS_DIR=translations diff --git a/autostart/translations/lxqt-xscreensaver-autostart_ar.desktop b/autostart/translations/lxqt-xscreensaver-autostart_ar.desktop new file mode 100644 index 0000000..f118d67 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_ar.desktop @@ -0,0 +1,2 @@ +# Translations +Name[ar]=حافظ الشَّاشة diff --git a/autostart/translations/lxqt-xscreensaver-autostart_cs.desktop b/autostart/translations/lxqt-xscreensaver-autostart_cs.desktop new file mode 100644 index 0000000..0b613dd --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_cs.desktop @@ -0,0 +1,2 @@ +# Translations +Name[cs]=Šetřič obrazovky diff --git a/autostart/translations/lxqt-xscreensaver-autostart_cs_CZ.desktop b/autostart/translations/lxqt-xscreensaver-autostart_cs_CZ.desktop new file mode 100644 index 0000000..6faaf82 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_cs_CZ.desktop @@ -0,0 +1,2 @@ +# Translations +Name[cs_CZ]=Šetřič obrazovky diff --git a/autostart/translations/lxqt-xscreensaver-autostart_da.desktop b/autostart/translations/lxqt-xscreensaver-autostart_da.desktop new file mode 100644 index 0000000..3977f00 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_da.desktop @@ -0,0 +1,2 @@ +# Translations +Name[da]=Pauseskærm diff --git a/autostart/translations/lxqt-xscreensaver-autostart_de.desktop b/autostart/translations/lxqt-xscreensaver-autostart_de.desktop new file mode 100644 index 0000000..d357c12 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_de.desktop @@ -0,0 +1,2 @@ +# Translations +Name[de]=Bildschirmschoner diff --git a/autostart/translations/lxqt-xscreensaver-autostart_el.desktop b/autostart/translations/lxqt-xscreensaver-autostart_el.desktop new file mode 100644 index 0000000..db70514 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_el.desktop @@ -0,0 +1,2 @@ +# Translations +Name[el]=ΠροφύλαξηOθόνηςΧ diff --git a/autostart/translations/lxqt-xscreensaver-autostart_eo.desktop b/autostart/translations/lxqt-xscreensaver-autostart_eo.desktop new file mode 100644 index 0000000..ff5188c --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_eo.desktop @@ -0,0 +1,2 @@ +# Translations +Name[eo]=XEkranKurteno diff --git a/autostart/translations/lxqt-xscreensaver-autostart_es.desktop b/autostart/translations/lxqt-xscreensaver-autostart_es.desktop new file mode 100644 index 0000000..990c7ba --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_es.desktop @@ -0,0 +1,2 @@ +# Translations +Name[es]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_es_VE.desktop b/autostart/translations/lxqt-xscreensaver-autostart_es_VE.desktop new file mode 100644 index 0000000..cf3ffbb --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_es_VE.desktop @@ -0,0 +1,2 @@ +# Translations +Name[es_VE]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_eu.desktop b/autostart/translations/lxqt-xscreensaver-autostart_eu.desktop new file mode 100644 index 0000000..1c27510 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_eu.desktop @@ -0,0 +1,2 @@ +# Translations +Name[eu]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_fi.desktop b/autostart/translations/lxqt-xscreensaver-autostart_fi.desktop new file mode 100644 index 0000000..9de2c06 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_fi.desktop @@ -0,0 +1,2 @@ +# Translations +Name[fi]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_fr.desktop b/autostart/translations/lxqt-xscreensaver-autostart_fr.desktop new file mode 100644 index 0000000..a15c487 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_fr.desktop @@ -0,0 +1,2 @@ +# Translations +Name[fr_FR]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_hu.desktop b/autostart/translations/lxqt-xscreensaver-autostart_hu.desktop new file mode 100644 index 0000000..26b0d99 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_hu.desktop @@ -0,0 +1 @@ +# Translations diff --git a/autostart/translations/lxqt-xscreensaver-autostart_ia.desktop b/autostart/translations/lxqt-xscreensaver-autostart_ia.desktop new file mode 100644 index 0000000..26b0d99 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_ia.desktop @@ -0,0 +1 @@ +# Translations diff --git a/autostart/translations/lxqt-xscreensaver-autostart_id_ID.desktop b/autostart/translations/lxqt-xscreensaver-autostart_id_ID.desktop new file mode 100644 index 0000000..d9e7d2e --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_id_ID.desktop @@ -0,0 +1,2 @@ +# Translations +Name[id_ID]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_it_IT.desktop b/autostart/translations/lxqt-xscreensaver-autostart_it_IT.desktop new file mode 100644 index 0000000..73eb838 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_it_IT.desktop @@ -0,0 +1,2 @@ +# Translations +Name[it_IT]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_ja.desktop b/autostart/translations/lxqt-xscreensaver-autostart_ja.desktop new file mode 100644 index 0000000..90c84a5 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_ja.desktop @@ -0,0 +1,2 @@ +# Translations +Name[ja]=Xスクリーンセーバ diff --git a/autostart/translations/lxqt-xscreensaver-autostart_ko.desktop b/autostart/translations/lxqt-xscreensaver-autostart_ko.desktop new file mode 100644 index 0000000..26b0d99 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_ko.desktop @@ -0,0 +1 @@ +# Translations diff --git a/autostart/translations/lxqt-xscreensaver-autostart_lt.desktop b/autostart/translations/lxqt-xscreensaver-autostart_lt.desktop new file mode 100644 index 0000000..6744cc9 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_lt.desktop @@ -0,0 +1,2 @@ +# Translations +Name[lt]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_nl.desktop b/autostart/translations/lxqt-xscreensaver-autostart_nl.desktop new file mode 100644 index 0000000..a368b1c --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_nl.desktop @@ -0,0 +1,2 @@ +# Translations +Name[nl]=X-schermbeveiliging diff --git a/autostart/translations/lxqt-xscreensaver-autostart_pl_PL.desktop b/autostart/translations/lxqt-xscreensaver-autostart_pl_PL.desktop new file mode 100644 index 0000000..51f0c85 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_pl_PL.desktop @@ -0,0 +1,2 @@ +# Translations +Name[pl_PL]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_pt.desktop b/autostart/translations/lxqt-xscreensaver-autostart_pt.desktop new file mode 100644 index 0000000..2bcf851 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_pt.desktop @@ -0,0 +1,2 @@ +# Translations +Name[pt]=Proteção de ecrã diff --git a/autostart/translations/lxqt-xscreensaver-autostart_pt_BR.desktop b/autostart/translations/lxqt-xscreensaver-autostart_pt_BR.desktop new file mode 100644 index 0000000..482dd1d --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_pt_BR.desktop @@ -0,0 +1,2 @@ +# Translations +Name[pt_BR]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_ro_RO.desktop b/autostart/translations/lxqt-xscreensaver-autostart_ro_RO.desktop new file mode 100644 index 0000000..1349bc4 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_ro_RO.desktop @@ -0,0 +1,2 @@ +# Translations +Name[ro_RO]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_ru.desktop b/autostart/translations/lxqt-xscreensaver-autostart_ru.desktop new file mode 100644 index 0000000..bffcef1 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_ru.desktop @@ -0,0 +1,2 @@ +# Translations +Name[ru]=XэкранCпаситель diff --git a/autostart/translations/lxqt-xscreensaver-autostart_ru_RU.desktop b/autostart/translations/lxqt-xscreensaver-autostart_ru_RU.desktop new file mode 100644 index 0000000..789e9d7 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_ru_RU.desktop @@ -0,0 +1,2 @@ +# Translations +Name[ru_RU]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_sl.desktop b/autostart/translations/lxqt-xscreensaver-autostart_sl.desktop new file mode 100644 index 0000000..470b430 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_sl.desktop @@ -0,0 +1,2 @@ +# Translations +Name[sl]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_sr.desktop b/autostart/translations/lxqt-xscreensaver-autostart_sr.desktop new file mode 100644 index 0000000..694caf2 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_sr.desktop @@ -0,0 +1,2 @@ +# Translations +Name[sr]=Икс-ЧуварЕкрана diff --git a/autostart/translations/lxqt-xscreensaver-autostart_sr@ijekavian.desktop b/autostart/translations/lxqt-xscreensaver-autostart_sr@ijekavian.desktop new file mode 100644 index 0000000..ba7db07 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_sr@ijekavian.desktop @@ -0,0 +1 @@ +Name[sr@ijekavian]=Икс-ЧуварЕкрана diff --git a/autostart/translations/lxqt-xscreensaver-autostart_sr@ijekavianlatin.desktop b/autostart/translations/lxqt-xscreensaver-autostart_sr@ijekavianlatin.desktop new file mode 100644 index 0000000..adf75e0 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_sr@ijekavianlatin.desktop @@ -0,0 +1 @@ +Name[sr@ijekavianlatin]=Iks-ČuvarEkrana diff --git a/autostart/translations/lxqt-xscreensaver-autostart_sr@latin.desktop b/autostart/translations/lxqt-xscreensaver-autostart_sr@latin.desktop new file mode 100644 index 0000000..6f0e4f0 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_sr@latin.desktop @@ -0,0 +1,2 @@ +# Translations +Name[sr@latin]=Iks-ČuvarEkrana diff --git a/autostart/translations/lxqt-xscreensaver-autostart_th_TH.desktop b/autostart/translations/lxqt-xscreensaver-autostart_th_TH.desktop new file mode 100644 index 0000000..d9f982a --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_th_TH.desktop @@ -0,0 +1,2 @@ +# Translations +Name[th_TH]=โปรแกรมรักษาหน้าจอของX diff --git a/autostart/translations/lxqt-xscreensaver-autostart_tr.desktop b/autostart/translations/lxqt-xscreensaver-autostart_tr.desktop new file mode 100644 index 0000000..abb0253 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_tr.desktop @@ -0,0 +1,2 @@ +# Translations +Name[tr]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_uk.desktop b/autostart/translations/lxqt-xscreensaver-autostart_uk.desktop new file mode 100644 index 0000000..f491066 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_uk.desktop @@ -0,0 +1,2 @@ +# Translations +Name[uk]=XScreenSaver diff --git a/autostart/translations/lxqt-xscreensaver-autostart_zh_CN.GB2312.desktop b/autostart/translations/lxqt-xscreensaver-autostart_zh_CN.GB2312.desktop new file mode 100644 index 0000000..26b0d99 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_zh_CN.GB2312.desktop @@ -0,0 +1 @@ +# Translations diff --git a/autostart/translations/lxqt-xscreensaver-autostart_zh_CN.desktop b/autostart/translations/lxqt-xscreensaver-autostart_zh_CN.desktop new file mode 100644 index 0000000..fc4c9e6 --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_zh_CN.desktop @@ -0,0 +1,2 @@ +# Translations +Name[zh_CN]=屏保 diff --git a/autostart/translations/lxqt-xscreensaver-autostart_zh_TW.desktop b/autostart/translations/lxqt-xscreensaver-autostart_zh_TW.desktop new file mode 100644 index 0000000..0eaf52a --- /dev/null +++ b/autostart/translations/lxqt-xscreensaver-autostart_zh_TW.desktop @@ -0,0 +1,2 @@ +# Translations +Name[zh_TW]=螢幕保護程式 diff --git a/config/CMakeLists.txt b/config/CMakeLists.txt new file mode 100644 index 0000000..caabdf2 --- /dev/null +++ b/config/CMakeLists.txt @@ -0,0 +1,12 @@ +# install default config files to /etc/xdg +install(FILES + lxqt.conf + session.conf + windowmanagers.conf + DESTINATION "${LXQT_ETC_XDG_DIR}/lxqt" + COMPONENT Runtime +) +install(DIRECTORY openbox + DESTINATION "${LXQT_ETC_XDG_DIR}" + COMPONENT Runtime +) diff --git a/config/lxqt.conf b/config/lxqt.conf new file mode 100644 index 0000000..1d48e56 --- /dev/null +++ b/config/lxqt.conf @@ -0,0 +1,11 @@ +[General] +theme=frost +icon_theme=oxygen +single_click_activate=false +tool_button_style=ToolButtonTextBesideIcon + +[Qt] +font="Sans,11,-1,5,50,0,0,0,0,0" +doubleClickInterval=400 +style=Fusion +wheelScrollLines=3 diff --git a/config/openbox/lxqt-rc.xml b/config/openbox/lxqt-rc.xml new file mode 100644 index 0000000..5c19f5e --- /dev/null +++ b/config/openbox/lxqt-rc.xml @@ -0,0 +1,744 @@ + + + + + + + + 10 + 20 + + + + yes + + no + + yes + + no + + 200 + + no + + + + + Smart + +
yes
+ + Primary + + 1 + +
+ + + Onyx + NLIMC + + yes + yes + + sans + 10 + + bold + + normal + + + + sans + 10 + + bold + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + bold + + normal + + + + sans + 9 + + bold + + normal + + + + + + + 2 + 1 + + + + 875 + + + + + yes + Nonpixel + + Center + + + + + 10 + + 10 + + + + + + + 0 + 0 + 0 + 0 + + + + TopLeft + + 0 + 0 + no + Above + + Vertical + + no + 300 + + 300 + + Middle + + + + + C-g + + + + leftno + + + rightno + + + upno + + + downno + + + leftno + + + rightno + + + upno + + + downno + + + 1 + + + 2 + + + 3 + + + 4 + + + + + + + + + + + + + + + + client-menu + + + + + + + + + + + + + + + + + + + + + + + + yesyes + + + + + + + + + + + + right + + + + + left + + + + + up + + + + + down + + + + + + + + 1 + + 500 + + 400 + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + previous + + + next + + + previous + + + next + + + previous + + + next + + + + + + + + + + + + + + no + + + + + + + + + + + yes + + + + + + + + + + + + + + + + + + + + + + + + + client-menu + + + + + + top + + + + + + left + + + + + + right + + + + + + bottom + + + + + + client-menu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + client-menu + + + + + client-menu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vertical + + + horizontal + + + + + + + + + + + + + + + + + previous + + + next + + + + previous + + + next + + + previous + + + next + + + + + + + + + + + + + + + + client-list-combined-menu + + + root-menu + + + + + + previous + + + next + + + previous + + + next + + + + + + + + + menu.xml + 200 + + no + + 100 + + 400 + + yes + + yes + + + + + + + +
diff --git a/config/session.conf b/config/session.conf new file mode 100644 index 0000000..ded6aa8 --- /dev/null +++ b/config/session.conf @@ -0,0 +1,24 @@ +[General] +window_manager=openbox +leave_confirmation=true + +[Environment] +GTK_CSD=0 +GTK_OVERLAY_SCROLLING=0 + +[Mouse] +cursor_size=18 +cursor_theme=whiteglass +acc_factor=20 +acc_threshold=10 +left_handed=false + +[Keyboard] +delay=500 +interval=30 +beep=false + +[Font] +antialias=true +hinting=true +dpi=96 diff --git a/config/windowmanagers.conf b/config/windowmanagers.conf new file mode 100644 index 0000000..7545908 --- /dev/null +++ b/config/windowmanagers.conf @@ -0,0 +1,26 @@ +[KnownManagers] +openbox/Name=Openbox +openbox/Comment=Light-weight window manager + +kwin/Name=KWin +kwin/Comment=Window manager of the KDE Software Compilation + +kwin_x11/Name=KWin +kwin_x11/Comment=Window manager of the KDE Software Compilation + +metacity/Name=Metacity +metacity/Comment=Window manager of the GNOME desktop environment + +windowmaker/Name=Windowmaker +windowmaker/Comment=A classical lightweight window manager + +e16/Name=Enlightenement 16 + +fvwm2/Name=Fvwm2 +fvwm2/Comment=A classical lightweight window manager + +xfwm4/Name=Xfwm4 +xfwm4/Comment=A window manager for the Xfce desktop environment + +sawfish/Name=Sawfish +sawfish/Comment="A lightweight, flexible window manager" diff --git a/lxqt-config-session/main.cpp b/lxqt-config-session/main.cpp index a0313e6..483efd5 100644 --- a/lxqt-config-session/main.cpp +++ b/lxqt-config-session/main.cpp @@ -29,12 +29,24 @@ #include #include +#include #include "sessionconfigwindow.h" int main(int argc, char** argv) { LXQt::SingleApplication a(argc, argv); + a.setAttribute(Qt::AA_UseHighDpiPixmaps, true); + + QCommandLineParser parser; + parser.setApplicationDescription(QStringLiteral("LXQt Config Session")); + const QString VERINFO = QStringLiteral(LXQT_SESSION_VERSION + "\nliblxqt " LXQT_VERSION + "\nQt " QT_VERSION_STR); + a.setApplicationVersion(VERINFO); + parser.addVersionOption(); + parser.addHelpOption(); + parser.process(a); SessionConfigWindow w; a.setActivationWindow(&w); diff --git a/lxqt-config-session/translations/lxqt-config-session_eu.desktop b/lxqt-config-session/translations/lxqt-config-session_eu.desktop index 95a0d42..0e22683 100644 --- a/lxqt-config-session/translations/lxqt-config-session_eu.desktop +++ b/lxqt-config-session/translations/lxqt-config-session_eu.desktop @@ -1,4 +1,4 @@ # Translations -Comment[eu]=Konfiguratu LXQt saioaren modulua -GenericName[eu]=LXQt saioaren konfiguratzailea -Name[eu]=LXQt saioaren konfiguratzailea +Comment[eu]=LXQt saioen konfigurazioa +GenericName[eu]=LXQt saioaren ezarpenak +Name[eu]=Saioaren ezarpenak diff --git a/lxqt-config-session/translations/lxqt-config-session_lt.desktop b/lxqt-config-session/translations/lxqt-config-session_lt.desktop index 38f405b..59dac09 100644 --- a/lxqt-config-session/translations/lxqt-config-session_lt.desktop +++ b/lxqt-config-session/translations/lxqt-config-session_lt.desktop @@ -1,4 +1,4 @@ # Translations -Comment[lt]=Konfigūruoti LXQt sesijų modulį -GenericName[lt]=LXQt sesijų konfigūravimas -Name[lt]=LXQt sesijų konfigūravimas +Comment[lt]=LXQt seansų konfigūravimas +GenericName[lt]=LXQt seansų nustatymai +Name[lt]=Seanso nustatymai diff --git a/lxqt-leave/CMakeLists.txt b/lxqt-leave/CMakeLists.txt index 0f8038f..12d2241 100644 --- a/lxqt-leave/CMakeLists.txt +++ b/lxqt-leave/CMakeLists.txt @@ -3,10 +3,12 @@ project(lxqt-leave) set(CPP_FILES main.cpp leavedialog.cpp + listwidget.cpp ) set(H_FILES leavedialog.h + listwidget.h ) set(UI_FILES diff --git a/lxqt-leave/leavedialog.cpp b/lxqt-leave/leavedialog.cpp index 351ce14..073a880 100644 --- a/lxqt-leave/leavedialog.cpp +++ b/lxqt-leave/leavedialog.cpp @@ -26,6 +26,7 @@ * END_COMMON_COPYRIGHT_HEADER */ #include "leavedialog.h" +#include LeaveDialog::LeaveDialog(QWidget* parent) : QDialog(parent, Qt::Dialog | Qt::WindowStaysOnTopHint | Qt::CustomizeWindowHint), @@ -46,47 +47,76 @@ LeaveDialog::LeaveDialog(QWidget* parent) setWindowFlags((Qt::CustomizeWindowHint | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint)); - ui->logoutButton->setEnabled(mPower->canAction(LXQt::Power::PowerLogout)); - ui->rebootButton->setEnabled(mPower->canAction(LXQt::Power::PowerReboot)); - ui->shutdownButton->setEnabled(mPower->canAction(LXQt::Power::PowerShutdown)); - ui->suspendButton->setEnabled(mPower->canAction(LXQt::Power::PowerSuspend)); - ui->hibernateButton->setEnabled(mPower->canAction(LXQt::Power::PowerHibernate)); + // populate the items + QListWidgetItem * item = new QListWidgetItem{QIcon::fromTheme(QStringLiteral("system-log-out")), tr("Logout")}; + item->setData(Qt::UserRole, LXQt::Power::PowerLogout); + if (!mPower->canAction(LXQt::Power::PowerLogout)) + item->setFlags(item->flags() & ~Qt::ItemIsEnabled); + ui->listWidget->addItem(item); + item = new QListWidgetItem{QIcon::fromTheme(QStringLiteral("system-shutdown")), tr("Shutdown")}; + item->setData(Qt::UserRole, LXQt::Power::PowerShutdown); + if (!mPower->canAction(LXQt::Power::PowerShutdown)) + item->setFlags(item->flags() & ~Qt::ItemIsEnabled); + ui->listWidget->addItem(item); + item = new QListWidgetItem{QIcon::fromTheme(QStringLiteral("system-suspend")), tr("Suspend")}; + item->setData(Qt::UserRole, LXQt::Power::PowerSuspend); + if (!mPower->canAction(LXQt::Power::PowerSuspend)) + item->setFlags(item->flags() & ~Qt::ItemIsEnabled); + ui->listWidget->addItem(item); + item = new QListWidgetItem{QIcon::fromTheme(QStringLiteral("system-lock-screen")), tr("Lock screen")}; + item->setData(Qt::UserRole, -1); + ui->listWidget->addItem(item); + item = new QListWidgetItem{QIcon::fromTheme(QStringLiteral("system-reboot")), tr("Reboot")}; + item->setData(Qt::UserRole, LXQt::Power::PowerReboot); + if (!mPower->canAction(LXQt::Power::PowerReboot)) + item->setFlags(item->flags() & ~Qt::ItemIsEnabled); + ui->listWidget->addItem(item); + item = new QListWidgetItem{QIcon::fromTheme(QStringLiteral("system-suspend-hibernate")), tr("Hibernate")}; + item->setData(Qt::UserRole, LXQt::Power::PowerHibernate); + if (!mPower->canAction(LXQt::Power::PowerHibernate)) + item->setFlags(item->flags() & ~Qt::ItemIsEnabled); + ui->listWidget->addItem(item); - /* - * Make all the buttons have equal widths - */ - QVector buttons(6); - buttons[0] = ui->logoutButton; - buttons[1] = ui->lockscreenButton; - buttons[2] = ui->suspendButton; - buttons[3] = ui->hibernateButton; - buttons[4] = ui->rebootButton; - buttons[5] = ui->shutdownButton; + ui->listWidget->setRows(2); + ui->listWidget->setColumns(3); - int maxWidth = 0; - const int N = buttons.size(); - for (int i = 0; i < N; ++i) { - // Make sure that the button size is adjusted to the text width - buttons.at(i)->adjustSize(); - maxWidth = qMax(maxWidth, buttons.at(i)->width()); - } - for (int i = 0; i < N; ++i) - buttons.at(i)->setMinimumWidth(maxWidth); - - connect(ui->logoutButton, &QPushButton::clicked, [&] { close(); mPowerManager->logout(); }); - connect(ui->rebootButton, &QPushButton::clicked, [&] { close(); mPowerManager->reboot(); }); - connect(ui->shutdownButton, &QPushButton::clicked, [&] { close(); mPowerManager->shutdown(); }); - connect(ui->suspendButton, &QPushButton::clicked, [&] { close(); mPowerManager->suspend(); }); - connect(ui->hibernateButton, &QPushButton::clicked, [&] { close(); mPowerManager->hibernate(); }); - connect(ui->cancelButton, &QPushButton::clicked, [&] { close(); }); - connect(ui->lockscreenButton, &QPushButton::clicked, [&] { + connect(ui->listWidget, &QAbstractItemView::activated, this, [this] (const QModelIndex & index) { + bool ok = false; + const int action = index.data(Qt::UserRole).toInt(&ok); + if (!ok) + { + qWarning("Invalid internal logic, no UserRole set!?"); + return; + } close(); - QEventLoop loop; - connect(mScreensaver, &LXQt::ScreenSaver::done, &loop, &QEventLoop::quit); - mScreensaver->lockScreen(); - loop.exec(); + switch (action) + { + case LXQt::Power::PowerLogout: + mPowerManager->logout(); + break; + case LXQt::Power::PowerShutdown: + mPowerManager->shutdown(); + break; + case LXQt::Power::PowerSuspend: + mPowerManager->suspend(); + break; + case -1: + { + QEventLoop loop; + connect(mScreensaver, &LXQt::ScreenSaver::done, &loop, &QEventLoop::quit); + mScreensaver->lockScreen(); + loop.exec(); + } + break; + case LXQt::Power::PowerReboot: + mPowerManager->reboot(); + break; + case LXQt::Power::PowerHibernate: + mPowerManager->hibernate(); + break; + } }); - + connect(ui->cancelButton, &QAbstractButton::clicked, this, [this] { close(); }); } LeaveDialog::~LeaveDialog() @@ -94,7 +124,7 @@ LeaveDialog::~LeaveDialog() delete ui; } -void LeaveDialog::resizeEvent(QResizeEvent* event) +void LeaveDialog::resizeEvent(QResizeEvent* /*event*/) { QRect screen = QApplication::desktop()->screenGeometry(); move((screen.width() - this->width()) / 2, diff --git a/lxqt-leave/leavedialog.h b/lxqt-leave/leavedialog.h index 00bb391..75b1f74 100644 --- a/lxqt-leave/leavedialog.h +++ b/lxqt-leave/leavedialog.h @@ -49,7 +49,7 @@ public: ~LeaveDialog(); protected: - virtual void resizeEvent(QResizeEvent* event); + virtual void resizeEvent(QResizeEvent* event) override; private: Ui::LeaveDialog *ui; diff --git a/lxqt-leave/leavedialog.ui b/lxqt-leave/leavedialog.ui index f768dcf..c418949 100644 --- a/lxqt-leave/leavedialog.ui +++ b/lxqt-leave/leavedialog.ui @@ -20,7 +20,16 @@ Leave - + + 9 + + + 0 + + + 18 + + @@ -37,7 +46,7 @@ - + Cancel @@ -45,6 +54,9 @@ .. + + Qt::ToolButtonTextBesideIcon + @@ -67,192 +79,73 @@ - - - - 12 - - - - - 6 - - - - - - 0 - 0 - - - - Qt::NoContextMenu - - - Logout - - - - .. - - - - 64 - 64 - - - - Qt::ToolButtonTextUnderIcon - - - - - - - Lock screen - - - - .. - - - - 64 - 64 - - - - Qt::ToolButtonTextUnderIcon - - - - - - - - - 6 - - - - - Suspend - - - - .. - - - - 64 - 64 - - - - Qt::ToolButtonTextUnderIcon - - - - - - - Hibernate - - - - .. - - - - 64 - 64 - - - - Qt::ToolButtonTextUnderIcon - - - - - - - - - 6 - - - - - Shutdown - - - - .. - - - - 64 - 64 - - - - Qt::ToolButtonTextUnderIcon - - - - - - - Reboot - - - - .. - - - - 64 - 64 - - - - Qt::ToolButtonTextUnderIcon - - - - - - - - - Qt::Vertical - - - - - - - Qt::Vertical - - - - + + + Qt::NoContextMenu + + + #listWidget { background-color: palette(window); } +QAbstractItemView { activate-on-singleclick: 1; } + + + QFrame::NoFrame + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + QAbstractScrollArea::AdjustToContents + + + false + + + QAbstractItemView::NoEditTriggers + + + true + + + QAbstractItemView::NoSelection + + + + 64 + 64 + + + + Qt::ElideNone + + + QListView::LeftToRight + + + true + + + 7 + + + true + label - buttonsWidget + listWidget widget_2 - - cancelButton - logoutButton - lockscreenButton - shutdownButton - rebootButton - suspendButton - hibernateButton - + + + ListWidget + QListWidget +
listwidget.h
+
+
diff --git a/lxqt-leave/listwidget.cpp b/lxqt-leave/listwidget.cpp new file mode 100644 index 0000000..84826ce --- /dev/null +++ b/lxqt-leave/listwidget.cpp @@ -0,0 +1,241 @@ +/* BEGIN_COMMON_COPYRIGHT_HEADER + * (c)LGPL2+ + * + * LXQt - a lightweight, Qt based, desktop toolset + * http://lxqt.org/ + * + * Copyright: 2017 LXQt team + * Authors: + * Palo Kisa + * + * This program or library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * END_COMMON_COPYRIGHT_HEADER */ + +#include "listwidget.h" +#include +#include +#include + +/*! + * This private delegate does: + * - returns unified sizeHint() -> maximum of all items in (list) model + * - cahes the sizeHint() to not iterate over all items and checking their size + * - overrides decoration position to Qt::Top + * - gives the items margins (increasing sizeHint()) ~~and mimics Button visual~~ + * - overrides painting the focus around the whole item (with the decoration) + * + * \note It is a single purpose delegate and expects, that the model + * never changes (cached sizeHint() is never invalidated). + */ +class ItemDelegate : public QItemDelegate +{ +public: + static constexpr QMargins MARGINS{5, 5, 5, 5}; +public: + using QItemDelegate::QItemDelegate; + virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override + { + if (mItemSize.isValid()) + return mItemSize; + + // compute maximum item size + QStyleOptionViewItem opt = option; + opt.decorationPosition = QStyleOptionViewItem::Top; + QAbstractListModel const * model = qobject_cast(index.model()); + for (QModelIndex i = model->index(0); i.isValid(); i = model->index(i.row() + 1)) + { + mItemSize = mItemSize.expandedTo(QItemDelegate::sizeHint(opt, i)); + } + mItemSize += {MARGINS.left() + MARGINS.right(), MARGINS.top() + MARGINS.bottom()}; // add some margins + return mItemSize; + } + + virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override + { + /* + // mimic the button visual + QStyleOption button_option; + button_option.initFrom(option.widget); + button_option.rect = option.rect; + if (!(option.state & QStyle::State_HasFocus)) + button_option.state &= ~QStyle::State_HasFocus; + QStyle * style = option.widget->style() ? option.widget->style() : QApplication::style(); + style->drawPrimitive(QStyle::PE_PanelButtonTool, &button_option, painter, option.widget); + */ + QStyleOptionViewItem opt = option; + opt.decorationPosition = QStyleOptionViewItem::Top; + opt.displayAlignment = Qt::AlignHCenter | Qt::AlignTop; + return QItemDelegate::paint(painter, opt, index); + } + +protected: + // Note: We want to paint the focus rectangle around the whole (text+icon) + // (default in QItemDelegate is to draw the focus only in text rectangle) + virtual void drawFocus(QPainter *painter + , const QStyleOptionViewItem &option + , const QRect &/*rect*/) const override + { + // don't override the rectangle to the text-only + return QItemDelegate::drawFocus(painter, option, option.rect); + } + + virtual void drawDisplay(QPainter *painter + , const QStyleOptionViewItem &option + , const QRect &rect + , const QString &text) const override + { + // shrink (and move to bottom) the text rectangle + QRect r = rect.adjusted(0, MARGINS.top(), 0, 0); + return QItemDelegate::drawDisplay(painter, option, r, text); + } + + virtual void drawDecoration(QPainter *painter + , const QStyleOptionViewItem &option + , const QRect &rect + , const QPixmap &pixmap) const override + { + // move to bottom the pixmap rectangle + QRect r = rect.translated(0, MARGINS.top()); + return QItemDelegate::drawDecoration(painter, option, r, pixmap); + } +private: + mutable QSize mItemSize; //!< the cached (unified/max) item size +}; +constexpr QMargins ItemDelegate::MARGINS; + +ListWidget::ListWidget(QWidget * parent/* = nullptr*/) + : QListWidget{parent} + , mRows(3) + , mColumns(3) +{ + ItemDelegate * delegate = new ItemDelegate{this}; + { + QScopedPointer old_del{itemDelegate()}; + setItemDelegate(delegate); + } +} + +void ListWidget::setRows(int rows) +{ + mRows = rows; +} + +void ListWidget::setColumns(int columns) +{ + mColumns = columns; +} + +QSize ListWidget::viewportSizeHint() const +{ + QSize size = sizeHintForIndex(model()->index(0, 0)); + size.rwidth() = size.width() * mColumns + spacing() * mColumns * 2 + 1; + size.rheight() = size.height() * mRows + spacing() * mRows * 2 + 1; + return size; +} + +QModelIndex ListWidget::moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers/* modifiers*/) +{ + QModelIndex index = currentIndex(); + int count = model()->rowCount(rootIndex()); + int current = 0; + if (index.isValid()) + { + current = index.row(); + index = QModelIndex{}; // setting to invalid to get inside the for loop (move the position) + } else + { + current = cursorAction == MovePrevious ? count - 1 : 0; + index = model()->index(current, 0, rootIndex()); + } + + // if not enabled, try to find any next enabled + for (int tries = 1; tries < count && 0 == (model()->flags(index) & Qt::ItemIsEnabled); ++tries) + { + int next; + switch (cursorAction) + { + case MoveUp: + case MovePageUp: + next = (current - mColumns) % count; + break; + case MoveDown: + case MovePageDown: + next = (current + mColumns) % count; + break; + case MoveLeft: + if (0 == (current % mColumns)) + current += mColumns; + // fall through + case MovePrevious: + if (current == 0) + return QModelIndex{}; + next = (current - 1) % count; + break; + case MoveRight: + if ((mColumns - 1) == (current % mColumns)) + current -= mColumns; + // fall through + case MoveNext: + if (current == count - 1) + return QModelIndex{}; + next = (current + 1) % count; + break; + case MoveHome: + next = 0; + break; + case MoveEnd: + next = count - 1; + break; + } + if (next < 0) + next += count; + + index = model()->index(next, 0, rootIndex()); + current = next; + } + return index; + +} + +void ListWidget::keyPressEvent(QKeyEvent * event) +{ + if (event->key() == Qt::Key_Space) + { + // mimic the "enter" to fire activated + QKeyEvent k{event->type(), Qt::Key_Enter, event->modifiers(), event->text(), event->isAutoRepeat(), static_cast(event->count())}; + QListWidget::keyPressEvent(&k); + event->setAccepted(k.isAccepted()); + return; + } + return QListWidget::keyPressEvent(event); +} + +void ListWidget::focusInEvent(QFocusEvent * event) +{ + switch (event->reason()) + { + case Qt::TabFocusReason: + setCurrentIndex(model()->index(0, 0, rootIndex())); + break; + case Qt::BacktabFocusReason: + setCurrentIndex(model()->index(model()->rowCount(rootIndex()) - 1, 0, rootIndex())); + break; + default: + break; + } + return QListWidget::focusInEvent(event); +} diff --git a/lxqt-leave/listwidget.h b/lxqt-leave/listwidget.h new file mode 100644 index 0000000..02d9c1e --- /dev/null +++ b/lxqt-leave/listwidget.h @@ -0,0 +1,52 @@ +/* BEGIN_COMMON_COPYRIGHT_HEADER + * (c)LGPL2+ + * + * LXQt - a lightweight, Qt based, desktop toolset + * http://lxqt.org/ + * + * Copyright: 2017 LXQt team + * Authors: + * Palo Kisa + * + * This program or library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * END_COMMON_COPYRIGHT_HEADER */ + +#include + +/*! + * Single purpose QListWidget with unified item sizes (based on the + * biggest item) and showing rows x columns items. + * + * \note It expects that items aren't ever changed after show(). + */ +class ListWidget : public QListWidget +{ +public: + ListWidget(QWidget * parent = nullptr); + void setRows(int rows); + void setColumns(int columns); + +protected: + virtual QSize viewportSizeHint() const override; + virtual QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override; + virtual void keyPressEvent(QKeyEvent * event) override; + virtual void focusInEvent(QFocusEvent * event) override; + +private: + int mRows; + int mColumns; +}; diff --git a/lxqt-leave/main.cpp b/lxqt-leave/main.cpp index aad9d4c..ebec59c 100644 --- a/lxqt-leave/main.cpp +++ b/lxqt-leave/main.cpp @@ -38,13 +38,20 @@ int main(int argc, char *argv[]) { LXQt::SingleApplication a(argc, argv); + a.setAttribute(Qt::AA_UseHighDpiPixmaps, true); + LXQt::Translator::translateApplication(); LXQt::PowerManager powermanager(&a); LXQt::ScreenSaver screensaver(&a); QCommandLineParser parser; - parser.setApplicationDescription(QStringLiteral("lxqt-leave")); + parser.setApplicationDescription(QStringLiteral("LXQt Leave")); + const QString VERINFO = QStringLiteral(LXQT_SESSION_VERSION + "\nliblxqt " LXQT_VERSION + "\nQt " QT_VERSION_STR); + a.setApplicationVersion(VERINFO); + parser.addHelpOption(); parser.addVersionOption(); diff --git a/lxqt-leave/translations/lxqt-hibernate_eu.desktop b/lxqt-leave/translations/lxqt-hibernate_eu.desktop new file mode 100644 index 0000000..973ea02 --- /dev/null +++ b/lxqt-leave/translations/lxqt-hibernate_eu.desktop @@ -0,0 +1,4 @@ +#Translations +Name[eu]=Hibernatu +GenericName[eu]=Hibernatu +Comment[eu]=Hibernatu ordenagailua diff --git a/lxqt-leave/translations/lxqt-hibernate_lt.desktop b/lxqt-leave/translations/lxqt-hibernate_lt.desktop new file mode 100644 index 0000000..00c83f1 --- /dev/null +++ b/lxqt-leave/translations/lxqt-hibernate_lt.desktop @@ -0,0 +1,3 @@ +Name[lt]=Užmigdyti +GenericName[lt]=Užmigdyti +Comment[lt]=Užmigdyti kompiuterį diff --git a/lxqt-leave/translations/lxqt-leave_eu.desktop b/lxqt-leave/translations/lxqt-leave_eu.desktop new file mode 100644 index 0000000..920e90a --- /dev/null +++ b/lxqt-leave/translations/lxqt-leave_eu.desktop @@ -0,0 +1,4 @@ +#Translation +Name[eu]=Utzi +GenericName[eu]=Utzi +Comment[eu]=Utzi elkarrizketa-koadroa diff --git a/lxqt-leave/translations/lxqt-leave_lt.desktop b/lxqt-leave/translations/lxqt-leave_lt.desktop new file mode 100644 index 0000000..e7beaee --- /dev/null +++ b/lxqt-leave/translations/lxqt-leave_lt.desktop @@ -0,0 +1,3 @@ +Name[lt]=Išeiti +GenericName[lt]=Išeiti +Comment[lt]=Išėjimo dialogas diff --git a/lxqt-leave/translations/lxqt-lockscreen_eu.desktop b/lxqt-leave/translations/lxqt-lockscreen_eu.desktop new file mode 100644 index 0000000..3f9d72a --- /dev/null +++ b/lxqt-leave/translations/lxqt-lockscreen_eu.desktop @@ -0,0 +1,4 @@ +#Translation +Name[eu]=Blokeatu pantaila +GenericName[eu]=Blokeatu pantaila +Comment[eu]=Blokeatu uneko saioa diff --git a/lxqt-leave/translations/lxqt-lockscreen_lt.desktop b/lxqt-leave/translations/lxqt-lockscreen_lt.desktop new file mode 100644 index 0000000..56441b7 --- /dev/null +++ b/lxqt-leave/translations/lxqt-lockscreen_lt.desktop @@ -0,0 +1,3 @@ +Name[lt]=Užrakinti ekraną +GenericName[lt]=Užrakinti ekraną +Comment[lt]=Užrakinti esamą seansą diff --git a/lxqt-leave/translations/lxqt-logout_eu.desktop b/lxqt-leave/translations/lxqt-logout_eu.desktop new file mode 100644 index 0000000..3dbcd21 --- /dev/null +++ b/lxqt-leave/translations/lxqt-logout_eu.desktop @@ -0,0 +1,4 @@ +#Translation +Name[eu]=Itxi saioa +GenericName[eu]=Itxi saioa +Comment[eu]=Itxi uneko saioa diff --git a/lxqt-leave/translations/lxqt-logout_lt.desktop b/lxqt-leave/translations/lxqt-logout_lt.desktop new file mode 100644 index 0000000..21621cc --- /dev/null +++ b/lxqt-leave/translations/lxqt-logout_lt.desktop @@ -0,0 +1,4 @@ +#Translation +Name[lt]=Atsijungti +GenericName[lt]=Atsijungti +Comment[lt]=Atsijungti iš esamo seanso diff --git a/lxqt-leave/translations/lxqt-reboot_eu.desktop b/lxqt-leave/translations/lxqt-reboot_eu.desktop new file mode 100644 index 0000000..ddf2595 --- /dev/null +++ b/lxqt-leave/translations/lxqt-reboot_eu.desktop @@ -0,0 +1,4 @@ +#Translation +Name[eu]=Berrabiarazi +GenericName[eu]=Berrabiarazi +Comment[eu]=Berrabiarazi ordenagailua diff --git a/lxqt-leave/translations/lxqt-reboot_lt.desktop b/lxqt-leave/translations/lxqt-reboot_lt.desktop new file mode 100644 index 0000000..902e807 --- /dev/null +++ b/lxqt-leave/translations/lxqt-reboot_lt.desktop @@ -0,0 +1,4 @@ +#Translation +Name[lt]=Paleisti iš naujo +GenericName[lt]=Paleisti iš naujo +Comment[lt]=Paleisti kompiuterį iš naujo diff --git a/lxqt-leave/translations/lxqt-shutdown_eu.desktop b/lxqt-leave/translations/lxqt-shutdown_eu.desktop new file mode 100644 index 0000000..ce0f878 --- /dev/null +++ b/lxqt-leave/translations/lxqt-shutdown_eu.desktop @@ -0,0 +1,4 @@ +#Translation +Name[eu]=Itzali +GenericName[eu]=Itzali +Comment[eu]=Itzali ordenagailua diff --git a/lxqt-leave/translations/lxqt-shutdown_lt.desktop b/lxqt-leave/translations/lxqt-shutdown_lt.desktop new file mode 100644 index 0000000..5051308 --- /dev/null +++ b/lxqt-leave/translations/lxqt-shutdown_lt.desktop @@ -0,0 +1,4 @@ +#Translation +Name[lt]=Išjungti +GenericName[lt]=Išjungti +Comment[lt]=Išjungti kompiuterį diff --git a/lxqt-leave/translations/lxqt-suspend_eu.desktop b/lxqt-leave/translations/lxqt-suspend_eu.desktop new file mode 100644 index 0000000..fd550cc --- /dev/null +++ b/lxqt-leave/translations/lxqt-suspend_eu.desktop @@ -0,0 +1,4 @@ +#Translation +Name[eu]=Eseki +GenericName[eu]=Eseki +Comment[eu]=Eseki ordenagailua diff --git a/lxqt-leave/translations/lxqt-suspend_lt.desktop b/lxqt-leave/translations/lxqt-suspend_lt.desktop new file mode 100644 index 0000000..b79502f --- /dev/null +++ b/lxqt-leave/translations/lxqt-suspend_lt.desktop @@ -0,0 +1,4 @@ +#Translation +Name[lt]=Pristabdyti +GenericName[lt]=Pristabdyti +Comment[lt]=Pristabdyti kompiuterį diff --git a/lxqt-session/src/UdevNotifier.cpp b/lxqt-session/src/UdevNotifier.cpp index eb32d40..3b87f87 100644 --- a/lxqt-session/src/UdevNotifier.cpp +++ b/lxqt-session/src/UdevNotifier.cpp @@ -52,7 +52,7 @@ UdevNotifier::UdevNotifier(QString const & subsystem, QObject * parent/* = nullp return; } - int ret = udev_monitor_filter_add_match_subsystem_devtype(d->monitor, subsystem.toUtf8().constData(), nullptr); + int ret = udev_monitor_filter_add_match_subsystem_devtype(d->monitor, subsystem.toLatin1().constData(), nullptr); if (0 != ret) qCWarning(SESSION) << QStringLiteral("UdevNotifier: unable to add match subsystem, monitor will receive all devices"); @@ -75,7 +75,7 @@ UdevNotifier::~UdevNotifier() udev_unref(d->udev); } -void UdevNotifier::eventReady(int socket) +void UdevNotifier::eventReady(int /*socket*/) { struct udev_device * dev; while (nullptr != (dev = udev_monitor_receive_device(d->monitor))) diff --git a/lxqt-session/src/lockscreenmanager.cpp b/lxqt-session/src/lockscreenmanager.cpp index 1874857..ab436ff 100644 --- a/lxqt-session/src/lockscreenmanager.cpp +++ b/lxqt-session/src/lockscreenmanager.cpp @@ -34,6 +34,7 @@ LockScreenManager::LockScreenManager(QObject *parent) : QObject(parent) + , mProvider{nullptr} { } diff --git a/lxqt-session/src/lxqtmodman.cpp b/lxqt-session/src/lxqtmodman.cpp index fbb8ab8..d2954cd 100644 --- a/lxqt-session/src/lxqtmodman.cpp +++ b/lxqt-session/src/lxqtmodman.cpp @@ -57,9 +57,8 @@ using namespace LXQt; /** * @brief the constructor, needs a valid modules.conf */ -LXQtModuleManager::LXQtModuleManager(const QString & windowManager, QObject* parent) +LXQtModuleManager::LXQtModuleManager(QObject* parent) : QObject(parent), - mWindowManager(windowManager), mWmProcess(new QProcess(this)), mThemeWatcher(new QFileSystemWatcher(this)), mWmStarted(false), @@ -72,6 +71,11 @@ LXQtModuleManager::LXQtModuleManager(const QString & windowManager, QObject* par qApp->installNativeEventFilter(this); } +void LXQtModuleManager::setWindowManager(const QString & windowManager) +{ + mWindowManager = windowManager; +} + void LXQtModuleManager::startup(LXQt::Settings& s) { // The lxqt-confupdate can update the settings of the WM, so run it first. @@ -277,7 +281,7 @@ void LXQtModuleManager::startConfUpdate() startProcess(desktop); } -void LXQtModuleManager::restartModules(int exitCode, QProcess::ExitStatus exitStatus) +void LXQtModuleManager::restartModules(int /*exitCode*/, QProcess::ExitStatus exitStatus) { LXQtModule* proc = qobject_cast(sender()); if (nullptr == proc) { @@ -347,7 +351,7 @@ LXQtModuleManager::~LXQtModuleManager() /** * @brief this logs us out by terminating our session **/ -void LXQtModuleManager::logout() +void LXQtModuleManager::logout(bool doExit) { // modules ModulesMapIterator i(mNameMap); @@ -377,7 +381,8 @@ void LXQtModuleManager::logout() mWmProcess->kill(); } - QCoreApplication::exit(0); + if (doExit) + QCoreApplication::exit(0); } QString LXQtModuleManager::showWmSelectDialog() @@ -396,7 +401,7 @@ void LXQtModuleManager::resetCrashReport() mCrashReport.clear(); } -bool LXQtModuleManager::nativeEventFilter(const QByteArray & eventType, void * message, long * result) +bool LXQtModuleManager::nativeEventFilter(const QByteArray & eventType, void * /*message*/, long * /*result*/) { if (eventType != "xcb_generic_event_t") // We only want to handle XCB events return false; diff --git a/lxqt-session/src/lxqtmodman.h b/lxqt-session/src/lxqtmodman.h index 1650cf3..fbebc15 100644 --- a/lxqt-session/src/lxqtmodman.h +++ b/lxqt-session/src/lxqtmodman.h @@ -72,9 +72,12 @@ class LXQtModuleManager : public QObject, public QAbstractNativeEventFilter public: //! \brief Construct LXQtModuleManager - LXQtModuleManager(const QString& windowManager, QObject* parent = 0); + LXQtModuleManager(QObject* parent = 0); virtual ~LXQtModuleManager(); + //! \brief Set the window manager (e.g. "/usr/bin/openbox") + void setWindowManager(const QString & windowManager); + //! \brief Start a module given its file name (e.g. "lxqt-panel.desktop") void startProcess(const QString& name); @@ -96,7 +99,7 @@ public slots: gracefully (to kill it if it is not possible). Then the session exits - it returns to the kdm/gdm in most cases. */ - void logout(); + void logout(bool doExit); signals: void moduleStateChanged(QString moduleName, bool state); diff --git a/lxqt-session/src/main.cpp b/lxqt-session/src/main.cpp index b7d2a87..435660b 100644 --- a/lxqt-session/src/main.cpp +++ b/lxqt-session/src/main.cpp @@ -26,6 +26,7 @@ * END_COMMON_COPYRIGHT_HEADER */ #include "sessionapplication.h" +#include /** * @file main.cpp @@ -48,6 +49,22 @@ int main(int argc, char **argv) { SessionApplication app(argc, argv); //qDebug() << "LXQt Session start"; + QCommandLineParser parser; + parser.setApplicationDescription(QStringLiteral("LXQt Session")); + const QString VERINFO = QStringLiteral(LXQT_SESSION_VERSION + "\nliblxqt " LXQT_VERSION + "\nQt " QT_VERSION_STR); + app.setApplicationVersion(VERINFO); + const QCommandLineOption config_opt{{"c", "config"}, SessionApplication::tr("Configuration file path."), SessionApplication::tr("file")}; + const QCommandLineOption wm_opt{{"w", "window-manager"}, SessionApplication::tr("Window manager to use."), SessionApplication::tr("file")}; + const auto version_opt = parser.addVersionOption(); + const auto help_opt = parser.addHelpOption(); + parser.addOptions({config_opt, wm_opt}); + parser.process(app); + + app.setConfigName(parser.value(config_opt)); + app.setWindowManager(parser.value(wm_opt)); + app.setQuitOnLastWindowClosed(false); return app.exec(); } diff --git a/lxqt-session/src/numlock.cpp b/lxqt-session/src/numlock.cpp index 5430f7f..18fd20e 100644 --- a/lxqt-session/src/numlock.cpp +++ b/lxqt-session/src/numlock.cpp @@ -38,7 +38,7 @@ /* the XKB stuff is based on code created by Oswald Buddenhagen */ -static unsigned int xkb_mask_modifier(Display* dpy, XkbDescPtr xkb, const char *name ) +static unsigned int xkb_mask_modifier(Display* /*dpy*/, XkbDescPtr xkb, const char *name ) { int i; if( !xkb || !xkb->names ) diff --git a/lxqt-session/src/sessionapplication.cpp b/lxqt-session/src/sessionapplication.cpp index cf6ed74..570558b 100644 --- a/lxqt-session/src/sessionapplication.cpp +++ b/lxqt-session/src/sessionapplication.cpp @@ -38,30 +38,9 @@ SessionApplication::SessionApplication(int& argc, char** argv) : lockScreenManager(new LockScreenManager(this)) { listenToUnixSignals({SIGINT, SIGTERM, SIGQUIT, SIGHUP}); - char* winmanager = NULL; - int c; - while ((c = getopt (argc, argv, "c:w:")) != -1) - { - if (c == 'c') - { - configName = optarg; - break; - } - else if (c == 'w') - { - winmanager = optarg; - break; - } - } - - if(configName.isEmpty()) - configName = "session"; - - // tell the world which config file we're using. - qputenv("LXQT_SESSION_CONFIG", configName.toUtf8()); - modman = new LXQtModuleManager(winmanager); - connect(this, &LXQt::Application::unixSignal, modman, &LXQtModuleManager::logout); + modman = new LXQtModuleManager; + connect(this, &LXQt::Application::unixSignal, modman, [this] { modman->logout(true); }); new SessionDBusAdaptor(modman); // connect to D-Bus and register as an object: QDBusConnection::sessionBus().registerService("org.lxqt.session"); @@ -76,6 +55,20 @@ SessionApplication::~SessionApplication() delete modman; } +void SessionApplication::setWindowManager(const QString& windowManager) +{ + modman->setWindowManager(windowManager); +} + +void SessionApplication::setConfigName(const QString& configName) +{ + if(configName.isEmpty()) + this->configName = "session"; + + // tell the world which config file we're using. + qputenv("LXQT_SESSION_CONFIG", this->configName.toLocal8Bit()); +} + bool SessionApplication::startup() { LXQt::Settings settings(configName); @@ -135,7 +128,7 @@ void SessionApplication::loadEnvironmentSettings(LXQt::Settings& settings) Q_FOREACH (QString i, settings.childKeys()) { envVal = settings.value(i).toByteArray(); - lxqt_setenv(i.toUtf8().constData(), envVal); + lxqt_setenv(i.toLocal8Bit().constData(), envVal); } settings.endGroup(); } diff --git a/lxqt-session/src/sessionapplication.h b/lxqt-session/src/sessionapplication.h index f65da0a..421f705 100644 --- a/lxqt-session/src/sessionapplication.h +++ b/lxqt-session/src/sessionapplication.h @@ -32,6 +32,8 @@ class SessionApplication : public LXQt::Application public: SessionApplication(int& argc, char** argv); ~SessionApplication(); + void setWindowManager(const QString & windowManager); + void setConfigName(const QString & configName); private Q_SLOTS: bool startup(); diff --git a/lxqt-session/src/sessiondbusadaptor.h b/lxqt-session/src/sessiondbusadaptor.h index 283e6f0..ecb1f3f 100644 --- a/lxqt-session/src/sessiondbusadaptor.h +++ b/lxqt-session/src/sessiondbusadaptor.h @@ -29,6 +29,7 @@ #define SESSIONDBUS_H #include +#include #include "lxqtmodman.h" @@ -46,7 +47,8 @@ class SessionDBusAdaptor : public QDBusAbstractAdaptor public: SessionDBusAdaptor(LXQtModuleManager * manager) : QDBusAbstractAdaptor(manager), - m_manager(manager) + m_manager(manager), + m_power(false/*don't use ourself, just all other power providers*/) { connect(m_manager, SIGNAL(moduleStateChanged(QString,bool)), SIGNAL(moduleStateChanged(QString,bool))); } @@ -63,9 +65,33 @@ public slots: return true; } + bool canReboot() + { + return m_power.canReboot(); + } + + bool canPowerOff() + { + return m_power.canShutdown(); + } + Q_NOREPLY void logout() { - m_manager->logout(); + m_manager->logout(true); + } + + Q_NOREPLY void reboot() + { + m_manager->logout(false); + m_power.reboot(); + QCoreApplication::exit(0); + } + + Q_NOREPLY void powerOff() + { + m_manager->logout(false); + m_power.shutdown(); + QCoreApplication::exit(0); } QDBusVariant listModules() @@ -85,6 +111,7 @@ public slots: private: LXQtModuleManager * m_manager; + LXQt::Power m_power; }; #endif diff --git a/lxqt-session/src/wmselectdialog.cpp b/lxqt-session/src/wmselectdialog.cpp index f320977..7292c05 100644 --- a/lxqt-session/src/wmselectdialog.cpp +++ b/lxqt-session/src/wmselectdialog.cpp @@ -107,7 +107,7 @@ void WmSelectDialog::addWindowManager(const WindowManager &wm) } -void WmSelectDialog::selectFileDialog(const QModelIndex &index) +void WmSelectDialog::selectFileDialog(const QModelIndex &/*index*/) { QTreeWidget *wmList = ui->wmList; QTreeWidgetItem *item = wmList->currentItem(); @@ -130,7 +130,7 @@ void WmSelectDialog::selectFileDialog(const QModelIndex &index) ui->wmList->setCurrentItem(wmItem); } -void WmSelectDialog::changeBtnStatus(const QModelIndex &index) +void WmSelectDialog::changeBtnStatus(const QModelIndex &/*index*/) { QString wm = windowManager(); ui->buttonBox->setEnabled(!wm.isEmpty() && findProgram(wm)); diff --git a/startlxqt.1 b/startlxqt.1 new file mode 100644 index 0000000..9eaba03 --- /dev/null +++ b/startlxqt.1 @@ -0,0 +1,48 @@ +.TH STARTLXQT 1 2015-11-03 "LXQt 0.10.0" "LXQt session management" +.SH NAME +startlxqt \- script to initialize and launch LXQt sessions +.SH SYNOPSIS +.B startlxqt +.SH DESCRIPTION +\fBstartlxqt\fR is a shell script meant to initialize and launch LXQt sessions. +It is as such similar to counterparts of other desktop environments like startlxde in +LXDE or startkde in KDE. +.P +It's main tasks are exporting environment variables, partly after performing +corresponding checks, and launching \fBlxqt-session\fR, the LXQt session manager. +.P +It is not meant to be run by users. +Rather, it is invoked as backend, e. g. by script \fBstartx\fR on virtual terminals or display +managers like SDDM or LightDM, see section \fIEXAMPLE\fR. +.SH FILES +.I $XDG_DATA_DIRS/xsessions/lxqt.desktop +.RS 5 +Desktop entry file stating startlxqt as binary needed to start LXQt sessions. Sourced e. g. +by display managers. +.RE +.SH BUGS +None at the time of this writing. Bugs can be reported on https://github.com/lxde/lxqt/issues. +.SH EXAMPLE +To start an LXQt session from a virtual terminal (virtual console) add a line +.P +.RS 5 +exec startlxqt +.RE +.P +to file \fI~/.xinitrc\fR. An LXQt session will then be launched by running \fBstartx\fR. +.P +Display managers are making use of scripts like \fBstartlxqt\fR automatically. Information about +available desktop environments is provided by files \fI$XDG_DATA_DIRS/xsessions/*.desktop\fR, typically +\fI/usr/share/xessions/*.desktop\fR. +.br +File \fIlxqt.desktop\fR provided by LXQt is stating \fBstartlxqt\fR in key \fIExec\fR while making sure the session +manager \fBlxqt-session\fR does exist by stating it in key \fITryExec\fR. +.SH SEE ALSO +.BR lxqt-session (1) +.BR startx (1) +.BR sddm (1) +.P +.B http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec/ +.RS 5 +Desktop Entry Specification defining desktop entry files (*.desktop). +.RE diff --git a/startlxqt.in b/startlxqt.in new file mode 100755 index 0000000..02ef0c2 --- /dev/null +++ b/startlxqt.in @@ -0,0 +1,99 @@ +#!/bin/sh + +contains() +{ + local str="$1" substr="$2" + [ "$str" = "$substr" -o -z "${str##$substr:*}" -o -z "${str##*:$substr:*}" -o -z "${str%%*:$substr}" ] +} + +if [ -z "$XDG_DATA_HOME" ]; then + export XDG_DATA_HOME="$HOME/.local/share" +fi + +if [ -z "$XDG_CONFIG_HOME" ]; then + export XDG_CONFIG_HOME="$HOME/.config" +fi + +if [ -z "$XDG_DATA_DIRS" ]; then + XDG_DATA_DIRS="@PREDEF_XDG_DATA_DIRS@" +else + if ! contains "$XDG_DATA_DIRS" "@LXQT_DATA_DIR@"; then + XDG_DATA_DIRS="$XDG_DATA_DIRS:@LXQT_DATA_DIR@" + fi +fi +export XDG_DATA_DIRS + +if [ -z "$XDG_CONFIG_DIRS" ]; then + export XDG_CONFIG_DIRS="@LXQT_ETC_XDG_DIR@" +else + if ! contains "$XDG_CONFIG_DIRS" '@LXQT_ETC_XDG_DIR@'; then + XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS:@LXQT_ETC_XDG_DIR@" + fi +fi + +if [ -z "$XDG_CACHE_HOME" ]; then + export XDG_CACHE_HOME="$HOME/.cache" +fi + +# Ensure the existance of the 'Desktop' folder +if [ -e "$XDG_CONFIG_HOME/user-dirs.dirs" ]; then + . "$XDG_CONFIG_HOME/user-dirs.dirs" +else + XDG_DESKTOP_DIR="$HOME/Desktop" +fi +mkdir -p "$XDG_DESKTOP_DIR" + +# Clean up after GDM (GDM sets the number of desktops to one) +xprop -root -remove _NET_NUMBER_OF_DESKTOPS -remove _NET_DESKTOP_NAMES -remove _NET_CURRENT_DESKTOP 2> /dev/null + +# Enable Qt integration for OpenOffice.org, if available. +if [ -z "$SAL_USE_VCLPLUGIN" ]; then + export SAL_USE_VCLPLUGIN=kde4 +fi + +# Launch DBus if needed +if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then + if [ -z "$XDG_RUNTIME_DIR" ] || ! [ -S "$XDG_RUNTIME_DIR/bus" ] || ! [ -O "$XDG_RUNTIME_DIR/bus" ]; then + eval "$(dbus-launch --sh-syntax --exit-with-session)" || echo "startlxqt: error executing dbus-launch" >&2 + fi +fi + +# Copy default settings of openbox +if [ ! -e "$XDG_CONFIG_HOME/openbox/lxqt-rc.xml" ] ; then + ob_config_copied=0 + for considered_file in 'lxde-rc.xml' 'rc.xml'; do + if [ -e "$XDG_CONFIG_HOME/openbox/$considered_file" ]; then + #copy existing configuration of openbox + cp "$XDG_CONFIG_HOME/openbox/$considered_file" "$XDG_CONFIG_HOME/openbox/lxqt-rc.xml" + message="Your existing configuration for openbox '$XDG_CONFIG_HOME/openbox/$considered_file' was used to +fill the LXQt's openbox configuration '$XDG_CONFIG_HOME/openbox/lxqt-rc.xml'. +If you want to use the predefined LXQt's openbox configuration, run: + cp '@LXQT_ETC_XDG_DIR@/openbox/lxqt-rc.xml' '$XDG_CONFIG_HOME/openbox'" + echo "$message" >&2 + xmessage -center -title "LXQt Openbox configuration" "$message" & + ob_config_copied=1 + break + fi + done + if [ 0 -eq "$ob_config_copied" ]; then + #copy predefined configuration + mkdir -p "$XDG_CONFIG_HOME/openbox" + #user/distribution can change the default configuration via LXQT_DEFAULT_OPENBOX_CONFIG + [ -r "$LXQT_DEFAULT_OPENBOX_CONFIG" ] || LXQT_DEFAULT_OPENBOX_CONFIG='@LXQT_ETC_XDG_DIR@/openbox/lxqt-rc.xml' + cp "$LXQT_DEFAULT_OPENBOX_CONFIG" "$XDG_CONFIG_HOME/openbox" + fi +fi + +# Qt4 platform plugin +export QT_PLATFORM_PLUGIN=lxqt + +# Qt5 platform plugin +export QT_QPA_PLATFORMTHEME=lxqt + +# use lxqt-applications.menu for main app menu +export XDG_MENU_PREFIX="lxqt-" + +export XDG_CURRENT_DESKTOP="LXQt" + +# Start the LXQt session +exec lxqt-session diff --git a/xsession/CMakeLists.txt b/xsession/CMakeLists.txt new file mode 100644 index 0000000..00b94ab --- /dev/null +++ b/xsession/CMakeLists.txt @@ -0,0 +1,29 @@ +# TODO/FIXME: install kdm/gdm files too +# this file should be enough but it needs testing... +file(GLOB SESSION_FILES_IN *.desktop.in) + +# Translations ********************************** +lxqt_translate_desktop(SESSION_FILES + SOURCES + ${SESSION_FILES_IN} +) +add_custom_target(xsession_desktop_files ALL DEPENDS ${SESSION_FILES}) +#************************************************ + +MACRO(INSTALL_SESSION_FILES directory) +# if(EXISTS ${directory}) + install(FILES + ${SESSION_FILES} + DESTINATION "${directory}" + COMPONENT Runtime + ) +# endif() +ENDMACRO(INSTALL_SESSION_FILES) + +#INSTALL_SESSION_FILES("/etc/X11/sessions") +#INSTALL_SESSION_FILES("/usr/share/sessions") +INSTALL_SESSION_FILES("${CMAKE_INSTALL_DATAROOTDIR}/xsessions") +INSTALL_SESSION_FILES("${CMAKE_INSTALL_DATAROOTDIR}/kdm/sessions") +#INSTALL_SESSION_FILES("/usr/local/share/apps/kdm/sessions") +#INSTALL_SESSION_FILES("/usr/share/config/kdm/sessions") +#INSTALL_SESSION_FILES("/usr/local/share/config/kdm/sessions") diff --git a/xsession/lxqt.desktop.in b/xsession/lxqt.desktop.in new file mode 100644 index 0000000..42fa78f --- /dev/null +++ b/xsession/lxqt.desktop.in @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Exec=startlxqt +TryExec=lxqt-session +Name=LXQt Desktop +Comment=Lightweight Qt Desktop + +#TRANSLATIONS_DIR=translations diff --git a/xsession/translations/lxqt_ar.desktop b/xsession/translations/lxqt_ar.desktop new file mode 100644 index 0000000..59dd8c3 --- /dev/null +++ b/xsession/translations/lxqt_ar.desktop @@ -0,0 +1,3 @@ +# Translations +Name[ar]=سطح المكتب ريزر +Comment[ar]=سطح المكتب كيوت٤ diff --git a/xsession/translations/lxqt_cs.desktop b/xsession/translations/lxqt_cs.desktop new file mode 100644 index 0000000..01c0039 --- /dev/null +++ b/xsession/translations/lxqt_cs.desktop @@ -0,0 +1,3 @@ +# Translations +Name[cs]=Plocha LXQt +Comment[cs]=Pracovní plocha na Qt diff --git a/xsession/translations/lxqt_cs_CZ.desktop b/xsession/translations/lxqt_cs_CZ.desktop new file mode 100644 index 0000000..e22341a --- /dev/null +++ b/xsession/translations/lxqt_cs_CZ.desktop @@ -0,0 +1,3 @@ +# Translations +Name[cs_CZ]=Pracovní plocha LXQt +Comment[cs_CZ]=Pracovní plocha Qt diff --git a/xsession/translations/lxqt_da.desktop b/xsession/translations/lxqt_da.desktop new file mode 100644 index 0000000..7786f96 --- /dev/null +++ b/xsession/translations/lxqt_da.desktop @@ -0,0 +1,3 @@ +# Translations +Name[da]=LXQt-skrivebord +Comment[da]=Letvægts Qt-skrivebord diff --git a/xsession/translations/lxqt_de.desktop b/xsession/translations/lxqt_de.desktop new file mode 100644 index 0000000..1805817 --- /dev/null +++ b/xsession/translations/lxqt_de.desktop @@ -0,0 +1,3 @@ +# Translations +Name[de]=LXQt Arbeitsumgebung +Comment[de]=Leichtgewichtige Qt Arbeitsumgebung diff --git a/xsession/translations/lxqt_el.desktop b/xsession/translations/lxqt_el.desktop new file mode 100644 index 0000000..d5d0205 --- /dev/null +++ b/xsession/translations/lxqt_el.desktop @@ -0,0 +1,3 @@ +# Translations +Name[el]=Επιφάνεια εργασίας LXQt +Comment[el]=Ελαφριά επιφάνεια εργασίας Qt diff --git a/xsession/translations/lxqt_eo.desktop b/xsession/translations/lxqt_eo.desktop new file mode 100644 index 0000000..c82a81d --- /dev/null +++ b/xsession/translations/lxqt_eo.desktop @@ -0,0 +1,3 @@ +# Translations +Name[eo]=LXQta labortablo +Comment[eo]=Qt-labortablo diff --git a/xsession/translations/lxqt_es.desktop b/xsession/translations/lxqt_es.desktop new file mode 100644 index 0000000..ca698b2 --- /dev/null +++ b/xsession/translations/lxqt_es.desktop @@ -0,0 +1,3 @@ +# Translations +Name[es]=Escritorio LXQt +Comment[es]=Escritorio Qt diff --git a/xsession/translations/lxqt_es_VE.desktop b/xsession/translations/lxqt_es_VE.desktop new file mode 100644 index 0000000..428daa9 --- /dev/null +++ b/xsession/translations/lxqt_es_VE.desktop @@ -0,0 +1,3 @@ +# Translations +Name[es_VE]=Escritorio LXQt +Comment[es_VE]=Escritorio Qt diff --git a/xsession/translations/lxqt_eu.desktop b/xsession/translations/lxqt_eu.desktop new file mode 100644 index 0000000..2da53be --- /dev/null +++ b/xsession/translations/lxqt_eu.desktop @@ -0,0 +1,3 @@ +# Translations +Name[eu]=LXQt mahaigaina +Comment[eu]=Qt mahaigaina diff --git a/xsession/translations/lxqt_fi.desktop b/xsession/translations/lxqt_fi.desktop new file mode 100644 index 0000000..29bc2c4 --- /dev/null +++ b/xsession/translations/lxqt_fi.desktop @@ -0,0 +1,3 @@ +# Translations +Name[fi]=LXQt-työpöytä +Comment[fi]=Qt-työpöytä diff --git a/xsession/translations/lxqt_fr.desktop b/xsession/translations/lxqt_fr.desktop new file mode 100644 index 0000000..2d8006a --- /dev/null +++ b/xsession/translations/lxqt_fr.desktop @@ -0,0 +1,3 @@ +# Translations +Name[fr]=Bureau LXQt +Comment[fr]=Bureau léger pour Qt diff --git a/xsession/translations/lxqt_hu.desktop b/xsession/translations/lxqt_hu.desktop new file mode 100644 index 0000000..91da4e9 --- /dev/null +++ b/xsession/translations/lxqt_hu.desktop @@ -0,0 +1,3 @@ +# Translations +Name[hu]=LXQt asztal +Comment[hu]=Qt asztali környezet diff --git a/xsession/translations/lxqt_ia.desktop b/xsession/translations/lxqt_ia.desktop new file mode 100644 index 0000000..26b0d99 --- /dev/null +++ b/xsession/translations/lxqt_ia.desktop @@ -0,0 +1 @@ +# Translations diff --git a/xsession/translations/lxqt_id_ID.desktop b/xsession/translations/lxqt_id_ID.desktop new file mode 100644 index 0000000..26b0d99 --- /dev/null +++ b/xsession/translations/lxqt_id_ID.desktop @@ -0,0 +1 @@ +# Translations diff --git a/xsession/translations/lxqt_it_IT.desktop b/xsession/translations/lxqt_it_IT.desktop new file mode 100644 index 0000000..e9157c1 --- /dev/null +++ b/xsession/translations/lxqt_it_IT.desktop @@ -0,0 +1,3 @@ +# Translations +Name[it_IT]=Desktop LXQt +Comment[it_IT]=Desktop Qt diff --git a/xsession/translations/lxqt_ja.desktop b/xsession/translations/lxqt_ja.desktop new file mode 100644 index 0000000..0e4e77b --- /dev/null +++ b/xsession/translations/lxqt_ja.desktop @@ -0,0 +1,3 @@ +# Translations +Name[ja]=LXQt デスクトップ +Comment[ja]=Qt デスクトップ diff --git a/xsession/translations/lxqt_ko.desktop b/xsession/translations/lxqt_ko.desktop new file mode 100644 index 0000000..26b0d99 --- /dev/null +++ b/xsession/translations/lxqt_ko.desktop @@ -0,0 +1 @@ +# Translations diff --git a/xsession/translations/lxqt_lt.desktop b/xsession/translations/lxqt_lt.desktop new file mode 100644 index 0000000..22bd113 --- /dev/null +++ b/xsession/translations/lxqt_lt.desktop @@ -0,0 +1,3 @@ +# Translations +Name[lt]=LXQt darbalaukis +Comment[lt]=Supaprastintas Qt darbalaukis diff --git a/xsession/translations/lxqt_nl.desktop b/xsession/translations/lxqt_nl.desktop new file mode 100644 index 0000000..f02be27 --- /dev/null +++ b/xsession/translations/lxqt_nl.desktop @@ -0,0 +1,3 @@ +# Translations +Name[nl]=LXQt Bureaublad +Comment[nl]=Qt Bureaublad diff --git a/xsession/translations/lxqt_pl.desktop b/xsession/translations/lxqt_pl.desktop new file mode 100644 index 0000000..9f49161 --- /dev/null +++ b/xsession/translations/lxqt_pl.desktop @@ -0,0 +1,3 @@ +# Translations +Name[pl]=Pulpit LXQt +Comment[pl]=Pulpit Qt diff --git a/xsession/translations/lxqt_pl_PL.desktop b/xsession/translations/lxqt_pl_PL.desktop new file mode 100644 index 0000000..746f5fb --- /dev/null +++ b/xsession/translations/lxqt_pl_PL.desktop @@ -0,0 +1,3 @@ +# Translations +Name[pl_PL]=Pulpit LXQt +Comment[pl_PL]=Środowisko graficzne Qt diff --git a/xsession/translations/lxqt_pt.desktop b/xsession/translations/lxqt_pt.desktop new file mode 100644 index 0000000..3a601b5 --- /dev/null +++ b/xsession/translations/lxqt_pt.desktop @@ -0,0 +1,3 @@ +# Translations +Name[pt]=Ambiente de trabalho LXQt +Comment[pt]=Ambiente de trabalho em Qt diff --git a/xsession/translations/lxqt_pt_BR.desktop b/xsession/translations/lxqt_pt_BR.desktop new file mode 100644 index 0000000..1b9ef6a --- /dev/null +++ b/xsession/translations/lxqt_pt_BR.desktop @@ -0,0 +1,3 @@ +# Translations +Name[pt_BR]=Área de trabalho LXQt +Comment[pt_BR]=Área de trabalho Qt diff --git a/xsession/translations/lxqt_ro_RO.desktop b/xsession/translations/lxqt_ro_RO.desktop new file mode 100644 index 0000000..d427c49 --- /dev/null +++ b/xsession/translations/lxqt_ro_RO.desktop @@ -0,0 +1,3 @@ +# Translations +Name[ro_RO]=Desktop LXQt +Comment[ro_RO]=Desktop Qt diff --git a/xsession/translations/lxqt_ru.desktop b/xsession/translations/lxqt_ru.desktop new file mode 100644 index 0000000..89612a1 --- /dev/null +++ b/xsession/translations/lxqt_ru.desktop @@ -0,0 +1,3 @@ +# Translations +Name[ru]=Рабочий стол LXQt +Comment[ru]=Рабочий стол на Qt diff --git a/xsession/translations/lxqt_ru_RU.desktop b/xsession/translations/lxqt_ru_RU.desktop new file mode 100644 index 0000000..bbe6fa2 --- /dev/null +++ b/xsession/translations/lxqt_ru_RU.desktop @@ -0,0 +1,3 @@ +# Translations +Name[ru_RU]=Рабочий стол LXQt +Comment[ru_RU]=Среда рабочего стола, использующая Qt diff --git a/xsession/translations/lxqt_sk.desktop b/xsession/translations/lxqt_sk.desktop new file mode 100644 index 0000000..7997dd5 --- /dev/null +++ b/xsession/translations/lxqt_sk.desktop @@ -0,0 +1,3 @@ +# Translations +Name[sk]=Prostredie LXQt +Comment[sk]=Pracovné prostredie v Qt diff --git a/xsession/translations/lxqt_sl.desktop b/xsession/translations/lxqt_sl.desktop new file mode 100644 index 0000000..5390fd9 --- /dev/null +++ b/xsession/translations/lxqt_sl.desktop @@ -0,0 +1,3 @@ +# Translations +Name[sl]=Namizje LXQt +Comment[sl]=Namizje, ustvarjeno s Qt diff --git a/xsession/translations/lxqt_sr.desktop b/xsession/translations/lxqt_sr.desktop new file mode 100644 index 0000000..1edb09b --- /dev/null +++ b/xsession/translations/lxqt_sr.desktop @@ -0,0 +1,3 @@ +# Translations +Name[sr]=Рејзорова радна површ +Comment[sr]=Кјут4 радна површ diff --git a/xsession/translations/lxqt_sr@latin.desktop b/xsession/translations/lxqt_sr@latin.desktop new file mode 100644 index 0000000..e8437df --- /dev/null +++ b/xsession/translations/lxqt_sr@latin.desktop @@ -0,0 +1,3 @@ +# Translations +Name[sr@latin]=Rejzorova radna površ +Comment[sr@latin]=Qt radna površ diff --git a/xsession/translations/lxqt_th_TH.desktop b/xsession/translations/lxqt_th_TH.desktop new file mode 100644 index 0000000..b10e310 --- /dev/null +++ b/xsession/translations/lxqt_th_TH.desktop @@ -0,0 +1,3 @@ +# Translations +Name[th_TH]=เดสก์ท็อป LXQt +Comment[th_TH]=เดสก์ท็อป Qt diff --git a/xsession/translations/lxqt_tr.desktop b/xsession/translations/lxqt_tr.desktop new file mode 100644 index 0000000..7fdd7e0 --- /dev/null +++ b/xsession/translations/lxqt_tr.desktop @@ -0,0 +1,3 @@ +# Translations +Name[tr]=LXQt Masaüstü +Comment[tr]=Qt Masaüstü diff --git a/xsession/translations/lxqt_uk.desktop b/xsession/translations/lxqt_uk.desktop new file mode 100644 index 0000000..de7f29b --- /dev/null +++ b/xsession/translations/lxqt_uk.desktop @@ -0,0 +1,3 @@ +# Translations +Name[uk]=Стільниця LXQt +Comment[uk]=Стільниця Qt diff --git a/xsession/translations/lxqt_zh_CN.GB2312.desktop b/xsession/translations/lxqt_zh_CN.GB2312.desktop new file mode 100644 index 0000000..26b0d99 --- /dev/null +++ b/xsession/translations/lxqt_zh_CN.GB2312.desktop @@ -0,0 +1 @@ +# Translations diff --git a/xsession/translations/lxqt_zh_CN.desktop b/xsession/translations/lxqt_zh_CN.desktop new file mode 100644 index 0000000..c6b47fe --- /dev/null +++ b/xsession/translations/lxqt_zh_CN.desktop @@ -0,0 +1,3 @@ +# Translations +Name[zh_CN]=LXQt 桌面 +Comment[zh_CN]=Qt 桌面 diff --git a/xsession/translations/lxqt_zh_TW.desktop b/xsession/translations/lxqt_zh_TW.desktop new file mode 100644 index 0000000..758283c --- /dev/null +++ b/xsession/translations/lxqt_zh_TW.desktop @@ -0,0 +1,3 @@ +# Translations +Name[zh_TW]=LXQt桌面 +Comment[zh_TW]=輕量級Qt桌面環境