lxqt / lxqt-session Goto Github PK
View Code? Open in Web Editor NEWThe LXQt session manager
Home Page: https://lxqt.github.io
License: GNU Lesser General Public License v2.1
The LXQt session manager
Home Page: https://lxqt.github.io
License: GNU Lesser General Public License v2.1
lxqt-config-session after saving autostart element, add new backslashes before quotes even if there is exist backslashe before quotes.
lxqt-config-session before saving autostart element has to check for existing backslashe before quotes and for this case do not add a new backslashe.
lxqt-config-session after saving autostart element, add new backslashes before quotes even if there is exist backslashe before quotes.
User arthur logs in: SDDM + user/pass + session lxqt
User arthur logs out: Leave -> logout
SDDM is back at the login screen
No user is logged in anymore
Switch to tty2
Login as root
"ps aux | grep arthur" shows several processes which have been started during the lxqt session, but not stopped at logoff
See the attachment below of the processes which are still running after logoff.
The reason why I got to this point is the long shutdown time of the laptop (1-2 minutes), showing several processes still running.
Some of these processes blocking the shutdown are the same as the ones in the attachment, such as gvfs and friends.
None of those https://github.com/lxqt/lxqt-session/blob/master/lxqt-config-session/userlocationspage.cpp/#L73 are seen on mousover in Session Settings → User directories.
Tooltips are present and often translated so they should be shown.
They aren't.
I remember vaguely this issue, but it was translations missing probably.
Looking at plasma 6 I found those, added explanations I found. Maybe some of them could or should be added in startlxqt
. The last one could be interesting for mobile maybe.
The QT_ACCESSIBILITY environment variable, when set to 1, enables accessibility features in Qt-based applications. These features are designed to improve usability for individuals with disabilities by providing support for assistive technologies such as screen readers and magnifiers.
The QT_EXCLUDE_GENERIC_BEARER environment variable, when set to 1, excludes the generic network bearer plugin in Qt applications. This plugin is responsible for managing network connections in a platform-independent manner. By excluding it, Qt applications may rely solely on platform-specific network plugins, potentially optimizing performance or compatibility in certain environments.
The QT_AUTO_SCREEN_SCALE_FACTOR environment variable, when set to 0, disables automatic scaling of the user interface based on the screen's pixel density or resolution in Qt applications. This means that the application won't automatically adjust its interface elements to match the screen's characteristics, allowing developers more control over how the UI is displayed on different screens.
Applications which should start only in wayland can be added in the compositor's settings, but there is no way without scripts to achieve the opposite.
We should not start under wayland
There are other applications like redshift which could cause trouble, and some like qlipper which just won't work under wayland.
And something like X-LXQt-X11-Only=true
or X-LXQt-Wayland=false
in the desktopfile, including the ones we're shipping. @palinek ?
Switching between X11 and wayland needs some scripts to achieve this, getting rid of them is mandatory for average users.
On remote sessions the restart, hibernate, sleep, reboot and shutdown has to be disabled - or a complete other set of functionality should show up (Close Session (Logout) and Disconnect Session would be fine)
Right now i can send my NAS to sleep or shut it down via lxqt-session, not so nice 😄
Detect the running X - and react to it
This behaviour is fine, when i connect to a machine with teamviewer, anydesk or other remote tools that only transfer the client screen. It is not fine, if i open a virtual X on the machine and run LXQt on that virtual screen - my possible co-workers would hate me :D
Server: Modified CentOS (Rockstor)
Client: Siduction LXQt / Windows with a rdp client
Current README.md file links to lxqt/lxqt-l10n for localization, however this one is deprecated.
New link given in lxqt/lxqt-l10n-deprecated README.md is down: https://weblate.lxqt.org This should be fixed with https://translate.lxqt-project.org.
This last translate place (translate.lxqt-project.org) doesn’t seem to contain files for lxqt-session. Only files for lxqt-configuration/lxqt-session.
Where can we add/update translations? This should be shown in:
Atm on wayland (besides logout issue that it can't exit the compositor) all of this is not achieved, except frameless:
ui->setupUi(this);
/* This is a special dialog. We want to make it hard to ignore.
We make it:
* Undraggable
* Frameless
* Stays on top of all other windows
* Present in all desktops
*/
setWindowFlags((Qt::CustomizeWindowHint | Qt::FramelessWindowHint |
Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint));
Adding layer:overlay if on wayland should fix this
This is a continuation of bug lxqt/lxqt-session#2496
Current behavior is to loop providers both inside lxqt-leave
(user) and lxqt-session
(daemon, root priviledge).
They are tested in this order: (See lxqtpower.cpp#L41)
CustomProvider
LXQtProvider
only if not called from daemon itselfSystemdProvider
UPowerProvider
ConsoleKitProvider
LxSessionProvider
So if CustomProvider
succeeds from lxqt-leave
, the daemon will never be called (lower priority) and it will never execute custom commands with root privileges.
If CustomProvider
fails, it will fail also if called by daemon soon after so again it will never be called with root privileges.
This is because CustomProvider
fails only if command cannot be started, it does not check command exit status, so it will always treat started commands as succeeded.
Now why should the code be duplicated if CustomProvider
can never be called by lxqt-session
if not by manually calling DBus without passing through lxqt-leave
? This would also be inconsistent behavior in my opinion.
By swapping CustomProvider
with LXQtProvider
we run custom commands from daemon and if daemon is not running (is it always running?) then we execute them directly from lxqt-leave
as user.
This is same policy applied to other providers.
Screenlocking setting in lxqt-config-session
defaults always to "false" to prevent a crash:
0048ae6
Replacing xdg-screensaver
with a script that launches swaylock
works in lxqt-leave --lockscreen
.
Users should be able to set a screenlocker for wayland which will be used. There are only 4 lockers afaik:
https://github.com/swaywm/swaylock
https://github.com/ifreund/waylock
https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/
https://github.com/jovanlanik/gtklock
Only manually implementation with swayidle is working.
swayidle -w \
timeout 300 'swaylock -f -c 000000' \
timeout 600 'wlopm --off \*' \
resume 'wlopm --on \*' \
before-sleep 'swaylock -f -c 000000' >/dev/null 2>&1 &
Files:
https://github.com/lxqt/liblxqt/blob/master/lxqtscreensaver.cpp
https://github.com/lxqt/lxqt-session/blob/master/lxqt-session/src/lockscreenmanager.cpp
One of the features needed for LXQt 2.1
tmux server created inside LXQt persists after logging out and can be attached later
Since #374, the tmux server is gone upon logging out
pstree
: │ └─lxqt-session─┬─
│ ├─tmux: server───zsh
I wanted to observe how proccese are killed #374 by running journalctl --follow
in tmux.
LXQt has a system-wide session.conf which is located in Arch at /usr/share/lxqt/session.conf. This provides some defaults for LXQt, including default environment variables. These variables should be overridden on a per-user basis (i.e., as with most other Linux programs) in ~/.config/lxqt/session.conf. The opposite seems to be occurring (i.e., system-wide session.conf overrides per-user session.conf).
Setting environment variables in LXQt Session Settings should override system-wide defaults as expected.
System-wide default environment variables override per-user session.conf if the lines are blank in the per-user session.conf.
Change the precedence/load order in Session settings in case lines are blank (i.e., add a way to ignore system default environment variables when deleted from per-user session.conf)
This issue was discovered when trying to get gtk3-mushrooms working with LXQt.
lah7/gtk3-classic#15 (comment)
Issue
Text of list item header is cut-off no matter the window size (for big enough fonts)
Expected behavior
When the window is first opened, there is room for displaying all list item headers completely.
lxqt-session-git 1.0.1.14.g5f2cf72 5f2cf72
qt5-base version: 5.15.3+kde+r133-1
Qt5 theme: Fusion
All *.desktop fle in lxqt-leave which are missing GenericName= have their tooltips not translated. Many of them have Comment=
with the content what their tooltips should be, some are perfect with just Name=
and GenericName=
Looks like over the years translators had no guide what will be displayed and used mostly "Comment".
Tooltips in system language
Many are not.
Migrating to .yaml files and switch Comment=
to GenericName=
when it's more explained. Example for lt:
Desktop Entry/Name: "Pristabdyti"
Desktop Entry/GenericName: "Pristabdyti"
Desktop Entry/Comment: "Pristabdyti kompiuterį"
to
Desktop Entry/Name: "Pristabdyti"
Desktop Entry/GenericName: "Pristabdyti kompiuterį"
[ 98%] Building CXX object lxqt-config-session/CMakeFiles/lxqt-config-session.dir/LXQtAppTranslationLoader.cpp.o
cd /builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu/lxqt-config-session && /usr/lib/ccache/c++ -DLXQT_DATA_DIR=\"/usr/share\" -DLXQT_ETC_XDG_DIR=\"/etc/xdg\" -DLXQT_GRAPHICS_DIR=\"/usr/share/lxqt/graphics\" -DLXQT_MAJOR_VERSION=\"0\" -DLXQT_MINOR_VERSION=\"17\" -DLXQT_PATCH_VERSION=\"0\" -DLXQT_RELATIVE_SHARE_DIR=\"lxqt\" -DLXQT_RELATIVE_SHARE_TRANSLATIONS_DIR=\"lxqt/translations\" -DLXQT_SESSION_VERSION=\"0.17.0\" -DLXQT_SHARE_DIR=\"/usr/share/lxqt\" -DLXQT_SHARE_TRANSLATIONS_DIR=\"/usr/share/lxqt/translations\" -DLXQT_VERSION=\"0.17.0\" -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_FOREACH -DQT_NO_URL_CAST_FROM_STRING -DQT_SVG_LIB -DQT_USE_QSTRINGBUILDER -DQT_WIDGETS_LIB -DQT_X11EXTRAS_LIB -DQT_XML_LIB -I/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu/lxqt-config-session -I/builddir/build/BUILD/lxqt-session-0.17.0/lxqt-config-session -I/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu/lxqt-config-session/lxqt-config-session_autogen/include -isystem /usr/include/KF5/KWindowSystem -isystem /usr/include/KF5 -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtCore -isystem /usr/lib/qt5/./mkspecs/linux-g++ -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtDBus -isystem /usr/include/qt5/QtX11Extras -isystem /usr/include/lxqt -isystem /usr/include/lxqt/LXQt -isystem /usr/include/qt5xdg -isystem /usr/include/qt5/QtXml -isystem /usr/include/qt5xdgiconloader -isystem /usr/include/qt5xdgiconloader/3.7.0 -isystem /usr/include/qt5/QtSvg -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -fno-exceptions -Wall -Wextra -Wchar-subscripts -Wno-long-long -Wpointer-arith -Wundef -Wformat-security -Wnon-virtual-dtor -Woverloaded-virtual -Wpedantic -DNDEBUG -fPIE -fvisibility=hidden -fvisibility-inlines-hidden -fPIC -std=c++14 -o CMakeFiles/lxqt-config-session.dir/LXQtAppTranslationLoader.cpp.o -c /builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu/lxqt-config-session/LXQtAppTranslationLoader.cpp
/builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp: In member function 'virtual void ProcReaper::run()':
/builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp:61:56: error: no matching function for call to 'QWaitCondition::wait(QMutex*, std::chrono::seconds)'
mWait.wait(&mMutex, std::chrono::seconds(1));
^
In file included from /usr/include/qt5/QtCore/QWaitCondition:1:0,
from /builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.h:30,
from /builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp:28:
/usr/include/qt5/QtCore/qwaitcondition.h:63:10: note: candidate: bool QWaitCondition::wait(QMutex*, long unsigned int)
bool wait(QMutex *lockedMutex, unsigned long time = ULONG_MAX);
^~~~
/usr/include/qt5/QtCore/qwaitcondition.h:63:10: note: no known conversion for argument 2 from 'std::chrono::seconds {aka std::chrono::duration<long long int>}' to 'long unsigned int'
/usr/include/qt5/QtCore/qwaitcondition.h:64:10: note: candidate: bool QWaitCondition::wait(QMutex*, QDeadlineTimer)
bool wait(QMutex *lockedMutex, QDeadlineTimer deadline);
^~~~
/usr/include/qt5/QtCore/qwaitcondition.h:64:10: note: no known conversion for argument 2 from 'std::chrono::seconds {aka std::chrono::duration<long long int>}' to 'QDeadlineTimer'
/usr/include/qt5/QtCore/qwaitcondition.h:65:10: note: candidate: bool QWaitCondition::wait(QReadWriteLock*, long unsigned int)
bool wait(QReadWriteLock *lockedReadWriteLock, unsigned long time = ULONG_MAX);
^~~~
/usr/include/qt5/QtCore/qwaitcondition.h:65:10: note: no known conversion for argument 1 from 'QMutex*' to 'QReadWriteLock*'
/usr/include/qt5/QtCore/qwaitcondition.h:66:10: note: candidate: bool QWaitCondition::wait(QReadWriteLock*, QDeadlineTimer)
bool wait(QReadWriteLock *lockedReadWriteLock, QDeadlineTimer deadline);
^~~~
/usr/include/qt5/QtCore/qwaitcondition.h:66:10: note: no known conversion for argument 1 from 'QMutex*' to 'QReadWriteLock*'
/builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp: In member function 'void ProcReaper::stop(const std::set<long long int>&)':
/builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp:114:42: error: no matching function for call to 'ProcReaper::wait(std::chrono::seconds)'
QThread::wait(std::chrono::seconds(5));
^
In file included from /usr/include/qt5/QtCore/QThread:1:0,
from /builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.h:28,
from /builddir/build/BUILD/lxqt-session-0.17.0/lxqt-session/src/procreaper.cpp:28:
/usr/include/qt5/QtCore/qthread.h:139:10: note: candidate: bool QThread::wait(long unsigned int)
bool wait(unsigned long time = ULONG_MAX);
^~~~
/usr/include/qt5/QtCore/qthread.h:139:10: note: no known conversion for argument 1 from 'std::chrono::seconds {aka std::chrono::duration<long long int>}' to 'long unsigned int'
gmake[2]: *** [lxqt-session/CMakeFiles/lxqt-session.dir/build.make:386: lxqt-session/CMakeFiles/lxqt-session.dir/src/procreaper.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[2]: Leaving directory '/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu'
gmake[1]: *** [CMakeFiles/Makefile2:224: lxqt-session/CMakeFiles/lxqt-session.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....
[ 99%] Linking CXX executable lxqt-config-session
cd /builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu/lxqt-config-session && /usr/bin/cmake -E cmake_link_script CMakeFiles/lxqt-config-session.dir/link.txt --verbose=1
/usr/lib/ccache/c++ -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -fno-exceptions -Wall -Wextra -Wchar-subscripts -Wno-long-long -Wpointer-arith -Wundef -Wformat-security -Wnon-virtual-dtor -Woverloaded-virtual -Wpedantic -DNDEBUG -Wl,-Bsymbolic-functions -Wl,-Bsymbolic -Wl,-z,relro -rdynamic CMakeFiles/lxqt-config-session.dir/lxqt-config-session_autogen/mocs_compilation.cpp.o CMakeFiles/lxqt-config-session.dir/main.cpp.o CMakeFiles/lxqt-config-session.dir/sessionconfigwindow.cpp.o CMakeFiles/lxqt-config-session.dir/basicsettings.cpp.o CMakeFiles/lxqt-config-session.dir/modulemodel.cpp.o CMakeFiles/lxqt-config-session.dir/autostartpage.cpp.o CMakeFiles/lxqt-config-session.dir/autostartmodel.cpp.o CMakeFiles/lxqt-config-session.dir/autostartitem.cpp.o CMakeFiles/lxqt-config-session.dir/autostartedit.cpp.o CMakeFiles/lxqt-config-session.dir/autostartutils.cpp.o CMakeFiles/lxqt-config-session.dir/environmentpage.cpp.o CMakeFiles/lxqt-config-session.dir/userlocationspage.cpp.o CMakeFiles/lxqt-config-session.dir/__/lxqt-session/src/windowmanager.cpp.o CMakeFiles/lxqt-config-session.dir/LXQtAppTranslationLoader.cpp.o -o lxqt-config-session /usr/lib/liblxqt.so.0.17.0 /usr/lib/libKF5WindowSystem.so.5.76.0 /usr/lib/libQt5X11Extras.so.5.12.10 /usr/lib/libQt5Xdg.so.3.7.0 /usr/lib/libQt5DBus.so.5.12.10 /usr/lib/libQt5Xml.so.5.12.10 /usr/lib/libQt5XdgIconLoader.so.3.7.0 /usr/lib/libQt5Svg.so.5.12.10 /usr/lib/libQt5Widgets.so.5.12.10 /usr/lib/libQt5Gui.so.5.12.10 /usr/lib/libQt5Core.so.5.12.10 -lglib-2.0 -lgobject-2.0 -lgio-2.0
gmake[2]: Leaving directory '/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu'
[ 99%] Built target lxqt-config-session
gmake[1]: Leaving directory '/builddir/build/BUILD/lxqt-session-0.17.0/i686-redhat-linux-gnu'
gmake: *** [Makefile:152: all] Error 2
Build Environment:
The related code from lxqt-session/src/procreaper.cpp:
void ProcReaper::run()
{
pid_t pid = 0;
while (true)
{
if (pid <= 0)
{
QMutexLocker guard{&mMutex};
mWait.wait(&mMutex, std::chrono::seconds(1));
}
int status;
pid = ::waitpid(-1, &status, WNOHANG);
if (pid < 0)
{
if (ECHILD != errno)
qCDebug(SESSION) << "waitpid failed " << strerror(errno);
} else if (pid > 0)
{
if (WIFEXITED(status))
qCDebug(SESSION) << "Child process " << pid << " exited with status " << WEXITSTATUS(status);
else if (WIFSIGNALED(status))
qCDebug(SESSION) << "Child process " << pid << " terminated on signal " << WTERMSIG(status);
else
qCDebug(SESSION) << "Child process " << pid << " ended";
}
{
QMutexLocker guard{&mMutex};
if (!mShouldRun && pid <= 0)
break;
}
}
}
Sorry, I wasn't sure where it's best to discuss this. So I chose this place here.
If I'm not mistaken we are looking for libprocps at https://github.com/lxqt/lxqt-session/blob/master/CMakeLists.txt#L36
It seems to me that procps has been replaces by procps-ng.
The packageconfig file has been changed from libprocps to libproc-2.
Our tests probably will only look for the old version. Some distros will use the -ng variant as a drop in replacement I think.
Do we have any plans to update to the latest version of procps-ng ?
@tsujan @stefonarch what is the state in Arch about this?
default apps, current git
{
 QStringList knownBrowsers;
 knownBrowsers << QSL("firefox") << QSL("qupzilla") << QSL("arora") << QSL("konqueror") << QSL("opera");
 const QSignalBlocker guard{ui->browserComboBox};
 SessionConfigWindow::handleCfgComboBox(ui->browserComboBox, knownBrowsers, val);
 }
 else if (var == QL1S("TERM"))
 {
 QStringList knownTerms;
 knownTerms << QSL("qterminal") << QSL("xterm") << QSL("konsole") << QSL("uterm");
 const QSignalBlocker guard{ui->terminalComboBox};
 SessionConfigWindow::handleCfgComboBox(ui->terminalComboBox, knownTerms, val);
 }
Ok, not for now, but both hardcoded lists are horrible - we should not hard code such things.
qupzilla is falkon now, arora is long dead and rotten etc - same for the terminals list - we have on in pcmanfm-qt with far more options.
And as already mentioned TERM is wrong here.
startlxqt does not honor system setting of the QT_QPA_PLATFORMTHEME environment variable.
It would be helpful if the startlxqt script would check for a previous setting, and only set if not previously defined.
if [ -z "$QT_QPA_PLATFORMTHEME" ]; then
export QT_QPA_PLATFORMTHEME=lxqt
fi
I have a use case for the use of QT_QPA_PLATFORMTHEME=qt5ct
implemented like the former LXDE session profile switch. Missed it only sometimes right now - but it would really nice to have.
According to this commit 3e39f49#diff-3a2978c84b7d4bd02ebbfc37fe2717a94ca558d1c016d7e356e43382773312d1
lxqt.conf should land in /usr/share/lxqt.
However, in this case, the first session doesn't use this file, but look for the "old" location in /etc/xdg/lxqt.
A first session for a new user should use lxqt.conf for defining icon-theme.
When the default file is in /usr/share/lxqt, a new session has no icons. lxqt.conf contains:
[General]
userfile=true
When the default file is in /etc/xdg/lxqt, a new session looks fine, using the default icon theme.
Export proper environment variable for $SSH_ASKPASS, so openssh can call it properly.
Hello,
A cosmetic big on lqxt 0.17.0 used on Lubuntu
On session setting / autostart
Adding a command without a name does nothing after clicking on "ok" button...
In fact, if we want to add a program, we need to mandatory type a name !
So bug is only to indicate "name field can not be empty" if name is empty when we decide to click on OK button ;)
Actually never tested it on debian 12. Maybe I'm missing something, or there is a setting which is different on this PC (autorepeate?).
Should work like under arch.
coredumps
lxqt-session
Core was generated by `lxqt-session'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007fad12f4ce11 in XkbGetAutoRepeatRate () from /lib/x86_64-linux-gnu/libX11.so.6
[Current thread is 1 (Thread 0x7fad11203940 (LWP 39848))]
(gdb) where
#0 0x00007fad12f4ce11 in XkbGetAutoRepeatRate () from /lib/x86_64-linux-gnu/libX11.so.6
#1 0x00005632516d407f in SessionApplication::loadKeyboardSettings (this=0x7ffd06c03a60, settings=...)
at /home/stef/git/lxqt/session/lxqt-session/src/sessionapplication.cpp:186
#2 0x00005632516d3022 in SessionApplication::startup (this=0x7ffd06c03a60)
at /home/stef/git/lxqt/session/lxqt-session/src/sessionapplication.cpp:80
#3 0x00005632516c3938 in SessionApplication::qt_static_metacall (_o=0x7ffd06c03a60, _c=QMetaObject::InvokeMetaMethod, _id=0,
_a=0x5632521d0d48) at /home/stef/git/lxqt/session/build/lxqt-session/lxqt-session_autogen/UVLADIE3JM/moc_sessionapplication.cpp:72
#4 0x00007fad11add770 in QObject::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#5 0x00007fad12762f5e in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#6 0x00007fad11ab17c8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#7 0x00007fad11ab4761 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) ()
from /lib/x86_64-linux-gnu/libQt5Core.so.5
#8 0x00007fad11b0a1d3 in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#9 0x00007fad1131c7a9 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x00007fad1131ca38 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007fad1131cacc in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#12 0x00007fad11b098b6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
from /lib/x86_64-linux-gnu/libQt5Core.so.5
#13 0x00007fad11ab024b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#14 0x00007fad11ab83b6 in QCoreApplication::exec() () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00005632516c4f4a in main (argc=1, argv=0x7ffd06c03c88) at /home/stef/git/lxqt/session/lxqt-session/src/main.cpp:73
(gdb)
Disable loading keyboardsettings under wayland as they are handled in compositors configuration.
The hard way to wayland.
If lxqt-session
is started under wayland all applications that use the notification are starting with a delay of ~30sec, but also others like firefox. This is true also for lxqt-modules like lxqt-powermanagement
. This is very inconvenient as suddenly many windows open up at the same time after half a minute. For some reason this is true also for firefox.
To avoid this behavior lxqt-panel
or waybar
can be started some seconds before lxqt-session
itself in the compositors autostart settings.
Autostart is fast
It has huge delays for most apps if the notification area is not available.
The check for systray available doesn't work under wayland?
mTrayStarted = QSystemTrayIcon::isSystemTrayAvailable();
But this doesn't explain the delay of firefox while thunderbird starts just fine. More investigating is needed.
I've tested this script - inserted in autostart - which starts all the "delayed" apps and it works with lxqt module lxqt-panel
checked (started by the session).
while true; do
if dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames | grep -q org.kde.StatusNotifierWatcher; then
echo "StatusNotifierArea is available"
# Start your commands here
lxqt-powermanagement &
lxqt-notificationd &
dimmer &
cmst&
feathernotes &
telegram-desktop &
meteo-qt &
exit 0
else
echo "StatusNotifierArea is not available, retrying in 2 seconds..."
sleep 2
fi
done
Having lxqt-panel started outside of lxqt-session is not desirable, even if it works.
Hi all
Here follows a request regarding the improvement of the Lubuntu docs / user manual.
I have searched quite intensively but wasn't able to find any more detailed information about the difference between the kwin and kwin_x11 option in conjunction with the windowing manager.
Has this some relation to any sort of hardware acceleration? While the kwin option is listed as the first one most "recommendations" across the web prefer to chose kwin_x11. (Without explaining anything.)
I have tested both variants and didn't notice any difference.
This topic may became even more relevant in the future when Wayland will be officially supported in LXQT. Probably this would require a further third kwin option. 😉
Final note, when the docs are updated it might be useful to add also somewhere the information about the possibility to enable the OpenGL ES / EGL support in kwin. This might improve the overall behavior especially on ancient systems with no support of OGL3 and higher.
sudo nano /etc/profile.d/kwin.sh
add there:
export KWIN_COMPOSE=O2ES
More information can be found in KDE bug 442386.
And perhaps it would be also useful to check the Mesa MR 9989 about an important EGL on X11 limitation.
Hi!
Could you add 'lightdm' as a known window manager?
confing/windowmanagers.conf
Until now i thought that we was indipendend of xscreensaver and use xdg-screensaver in all places.
It seems that we give a damn to any other screensaver
No clue, but - maybe we should refine this
I have no problem with xscreensaver - beside the fact that the screensaver jump in to late - so it is theoretical possible to see the locked user screen (data leak, worst case an open confidential document or open passwordmanager with the passwords in cleartext). If possible i would like to have this issue solved before the next release.
Current
Desktop should be somewhat usable on mobile devices. Like having small window minimum sizes, many scrollbars etc.
Also being touch friendly would be good but that's more difficult.
This problem especially occurs with lxqt-leave
dialog which does not have window borders so it cannot be moved around.
On small screens it doesn't fit so it's impossible to click buttons on the left.
I'm working on a patch which makes it full screen with a QListView which scrolls and adjusts column count.
For some unknown reason, when I entered for a lxqt session, lxqt asked me for the default window manager
There is/was no way to take the screenshot unless was in a VM hence reused the picture shared on the forum.
now if you look at the dialog box it doesn't give you any hint how do you get out of the session to come to the default login screen and the user is sort of stuck there.
I was able to use CTRL+ALT+Fn to come to a terminal emulator, shutdown lightdm via systemctl and restart lightdm to get the login screen, go to mate-desktop, look up https://forum.lxqt.org/t/selecting-default-window-manager-in-lxqt-0-13-0/309 and use the settings shared by agaida at https://forum.lxqt.org/t/selecting-default-window-manager-in-lxqt-0-13-0/309/7 , copy the needful to /etc/xdg/lxqt/session.conf
and was able to login.
A user shouldn't need to go through such loopholes.
FWIW, there is/was no file named session.conf in /etc/xdg/lxqt/
Update - I removed session.conf in /etc/xdg/lxqt/
and tried logging in again and this time it worked, dunno the reason why it worked this time but not the other time.
System credentials in case they throw any more light -
Package: lxqt-session
Version: 0.13.1~181-gab84e77-3
Severity: normal
-- System Information:
Debian Release: buster/sid
APT prefers testing
APT policy: (990, 'testing'), (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'unstable'), (1, 'experimental-debug'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 4.18.0-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_IN, LC_CTYPE=en_IN (charmap=UTF-8), LANGUAGE=en_IN:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages lxqt-session depends on:
ii libc6 2.27-6
ii libkf5windowsystem5 5.49.0-1
ii liblxqt0 0.13.0-1
ii libqt5core5a 5.11.1+dfsg-9
ii libqt5dbus5 5.11.1+dfsg-9
ii libqt5gui5 5.11.1+dfsg-9
ii libqt5widgets5 5.11.1+dfsg-9
ii libqt5x11extras5 5.11.1-2
ii libqt5xdg3 3.2.1~11-g374f418-1
ii libstdc++6 8.2.0-7
ii libudev1 239-10
ii libx11-6 2:1.6.7-1
ii lxqt-qtplugin 0.13.0-2+b1
ii lxqt-themes [lxqt-theme] 0.13.0-1
ii x11-xkb-utils 7.7+4
Versions of packages lxqt-session recommends:
ii lxqt-config 0.13.1~502-gfd3b8c7-4
ii lxqt-notificationd 0.13.1~90-g41123bd-1
ii lxqt-policykit 0.13.1~50-g5c1a745-1
ii lxqt-powermanagement 0.13.1~137-gea33bfa-1
ii lxqt-session-l10n 0.13.1~181-gab84e77-3
ii lxqt-sudo 0.13.1~78-ga571dda-1
ii pcmanfm-qt 0.13.0-2
ii qlipper 1:5.1.2~13-g0e90641-1
ii qps 1.10.19~84-g38c3fe1-1
ii xscreensaver 5.40-1
lxqt-session suggests no packages.
-- no debconf information
lxqt-config-session
is resetting paths according to the xdg-user-dirs specification to their default value /home/<user>
if these comprise characters unsupported by the locale lxqt-config-session
is using.
Steps to reproduce
$HOME
as defined by xdg-user-dirs exists and binaries xdg-user-dir[s-update]
are available.LANG=de_DE.UTF-8
. XDG_PUBLICSHARE_DIR is set to /home/<user>/Öffentlich
, hence to a string comprising a German Umlaut. Everything is fine if lxqt-config-session
is launched with the current locale de_DE.UTF-8
, any other UTF-8 locale or not at all.lxqt-config-session
only with LANG=C
and select "Locations" in left pane of lxqt-config-session
. Path "Public Share" at the right will be empty meaning it gets reset to its default value /home/<user>
when lxqt-config-session
is quit. (The inconsistency empty path vs. /home/user
is being discussed in #780.)It's understandable that lxqt-config-session
can't cope with characters unsupported by the locale it's running in. But it should just leave the paths as is and not start tweaking them.
Binary xdg-user-dirs
itself does not create any directories corresponding to a locale that's different from the one that was valid when ~/.config/user-dirs.dirs
was initially written as long as all directories corresponding to that initial locale persist.
If ~/.config/user-dirs.dirs
is not empty but missing an entry for XDG_DESKTOP_DIR
, a crash is reported upon logging in to a fresh LXQt session.
This was encountered while updating from NixOS 21.11 to 22.05 (LXQt 0.17 to 1.1.0).
Leaving ~/.config/user-dirs.dirs
empty, removing it or adding the entry with a text editor solved the issue.
Only having e.g. an entry for XDG_PICTURES_DIR
triggered the crash.
This was confirmed on Ubuntu 22.04 (yes LTS, but very fresh) with LXQt on Mutter. Simply commenting out the line with XDG_DESKTOP_DIR
triggered the crash at next login (crash was reported for mutter).
LXQt should fall back to XDG_DESKTOP_DIR=$HOME/Desktop
See description above.
See above.
~/.config/user-dirs.dirs
is not empty, but has no entry for XDG_DESKTOP_DIR
This might not be in lxqt-session (though
Line 39 in 9d63aba
The core dump I got on NixOS:
Process 2016 (.pcmanfm-qt-wra) of user 1000 dumped core.
Module linux-vdso.so.1 with build-id 95945c6f4f0a2d417f23f38a4d5cb85d7df2f0ad
Module librt.so.1 with build-id 81dcc5b293a378ea5ee6ff8ba1e67b8f55381439
Module libnvidia-glcore.so.470.129.06 with build-id 3c47a74290af64e361d1c6d3db2d9ff58c5630ac
Module libnvidia-tls.so.470.129.06 with build-id 3ca4766f92acd8cdd390b155c8d03fc032ad9a87
Module libnvidia-glsi.so.470.129.06 with build-id c6be8cb7d79dbb9e605a54f99789ee6c745e9c57
Module libGLX_nvidia.so.0 with build-id 770adb36d1578a94a7a57f119f745b74018daacd
Module libxcb-glx.so.0 without build-id.
Module libqxcb-glx-integration.so without build-id.
Module libjpeg.so.62 without build-id.
Module libqjpeg.so without build-id.
Module libgioremote-volume-monitor.so without build-id.
Module libgvfscommon.so without build-id.
Module libgvfsdbus.so without build-id.
Module libcomposeplatforminputcontextplugin.so without build-id.
Module libQt5Svg.so.5 without build-id.
Module libQt5XdgIconLoader.so.3 without build-id.
Module libdbusmenu-qt5.so.2 without build-id.
Module libqtlxqt.so without build-id.
Module libXfixes.so.3 without build-id.
Module libXrender.so.1 without build-id.
Module libXcursor.so.1 without build-id.
Module libuuid.so.1 with build-id 7569ec2686055355f8a05497dfdb27fef759aa3e
Module libxcb-util.so.1 without build-id.
Module libexpat.so.1 without build-id.
Module libxkbcommon.so.0 without build-id.
Module libxkbcommon-x11.so.0 without build-id.
Module libICE.so.6 without build-id.
Module libSM.so.6 without build-id.
Module libxcb-xinput.so.0 without build-id.
Module libxcb-xkb.so.1 without build-id.
Module libxcb-xinerama.so.0 without build-id.
Module libxcb-xfixes.so.0 without build-id.
Module libxcb-sync.so.1 without build-id.
Module libxcb-shape.so.0 without build-id.
Module libxcb-render.so.0 without build-id.
Module libxcb-render-util.so.0 without build-id.
Module libxcb-randr.so.0 without build-id.
Module libxcb-keysyms.so.1 without build-id.
Module libxcb-shm.so.0 without build-id.
Module libxcb-image.so.0 without build-id.
Module libxcb-icccm.so.4 without build-id.
Module libX11-xcb.so.1 without build-id.
Module libfontconfig.so.1 without build-id.
Module libQt5XcbQpa.so.5 without build-id.
Module libqxcb.so without build-id.
Module libgpg-error.so.0 without build-id.
Module libbz2.so.1 without build-id.
Module libgcrypt.so.20 without build-id.
Module libcap.so.2 without build-id.
Module liblz4.so.1 without build-id.
Module liblzma.so.5 without build-id.
Module libdl.so.2 with build-id a4bfa88c56b19d9a13f5191cfe661e9b9f32140a
Module libblkid.so.1 with build-id cf73678494b22fed110740fbedf2a7f0f6c80587
Module libgraphite2.so.3 without build-id.
Module libfreetype.so.6 without build-id.
Module libGLdispatch.so.0 without build-id.
Module libXext.so.6 without build-id.
Module libX11.so.6 without build-id.
Module libGLX.so.0 without build-id.
Module libsystemd.so.0 without build-id.
Module libXdmcp.so.6 without build-id.
Module libXau.so.6 without build-id.
Module libffi.so.8 without build-id.
Module libselinux.so.1 without build-id.
Module libmount.so.1 with build-id c512478563c1864d6b835ae7023d81dc2f9c6912
Module libgmodule-2.0.so.0 with build-id a78312de0825709eb9f8e260c81f0203f45d7cb5
Module libpcre.so.1 without build-id.
Module ld-linux-x86-64.so.2 with build-id 2d4e3d041d24aa7a72377e8cc41e9336abd77ffb
Module libzstd.so.1 without build-id.
Module libpcre2-16.so.0 without build-id.
Module libicudata.so.71 without build-id.
Module libicuuc.so.71 without build-id.
Module libicui18n.so.71 without build-id.
Module libharfbuzz.so.0 without build-id.
Module libz.so.1 without build-id.
Module libpng16.so.16 without build-id.
Module libGL.so.1 without build-id.
Module libdbus-1.so.3 without build-id.
Module libpthread.so.0 with build-id bff749b993405063a72406b65328ce34b1d20b2b
Module libc.so.6 with build-id c512f38583c48b03cc0011d4583d15cea2e94d03
Module libgcc_s.so.1 without build-id.
Module libm.so.6 with build-id ab70ae196025b3056f0fc0ed85a43390cda0ea4a
Module libstdc++.so.6 without build-id.
Module libexif.so.12 without build-id.
Module libxcb.so.1 without build-id.
Module libmenu-cache.so.3 without build-id.
Module libgthread-2.0.so.0 with build-id 8ebac81baef149f7c3c15af45a2b9e96bb5c19aa
Module libgobject-2.0.so.0 with build-id aad6dfac42cb975a483059295763c1da5af4f29c
Module libgio-2.0.so.0 with build-id 6544023370a455ba189fdf104ab3622407f949c3
Module libglib-2.0.so.0 with build-id 38c99a0e74889fd6e0b4677edb87634f8d198b36
Module libQt5Core.so.5 without build-id.
Module libQt5Gui.so.5 without build-id.
Module libQt5Widgets.so.5 without build-id.
Module libQt5X11Extras.so.5 without build-id.
Module libfm-qt.so.11 without build-id.
Module libQt5DBus.so.5 without build-id.
Module .pcmanfm-qt-wrapped without build-id.
Stack trace of thread 2016:
#0 0x00007fc2e4f12ad4 __strcmp_sse2 (libc.so.6 + 0xa7ad4)
#1 0x00007fc2e6ae84bb _ZN2Fm6Folder17onDirListFinishedEv (libfm-qt.so.11 + 0x8e4bb)
#2 0x00007fc2e5a6f9be _ZN7QObject5eventEP6QEvent (libQt5Core.so.5 + 0x2f69be)
#3 0x00007fc2e65086cf _ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent (libQt5Widgets.so.5 + 0x1716cf)
#4 0x00007fc2e5a42f5a _ZN16QCoreApplication15notifyInternal2EP7QObjectP6QEvent (libQt5Core.so.5 + 0x2c9f5a)
#5 0x00007fc2e5a46067 _ZN23QCoreApplicationPrivate16sendPostedEventsEP7QObjectiP11QThreadData (libQt5Core.so.5 + 0x2cd067)
#6 0x00007fc2e5a9b363 n/a (libQt5Core.so.5 + 0x322363)
#7 0x00007fc2e5695dfb g_main_context_dispatch (libglib-2.0.so.0 + 0x56dfb)
#8 0x00007fc2e56960a8 g_main_context_iterate.constprop.0 (libglib-2.0.so.0 + 0x570a8)
#9 0x00007fc2e569615f g_main_context_iteration (libglib-2.0.so.0 + 0x5715f)
#10 0x00007fc2e5a9a9c4 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt5Core.so.5 + 0x3219c4)
#11 0x00007fc2e5a418db _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt5Core.so.5 + 0x2c88db)
#12 0x00007fc2e5a49f20 _ZN16QCoreApplication4execEv (libQt5Core.so.5 + 0x2d0f20)
#13 0x000000000042a074 main (.pcmanfm-qt-wrapped + 0x2a074)
#14 0x00007fc2e4e94237 __libc_start_call_main (libc.so.6 + 0x29237)
#15 0x00007fc2e4e942f5 __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x292f5)
#16 0x000000000042a101 _start (.pcmanfm-qt-wrapped + 0x2a101)
As it looks like that lxqt-session
has to be started by the compositor lxqt-leave -logout
will not stop the compositor running (and processes started by it).
Using wlogout
the commands can be specified in XDG_CONFIG_HOME/wlogout/layout
:
{
"label" : "logout",
"action" : "lxqt-leave --logout && loginctl terminate-user $USER",
"text" : "Logout",
"keybind" : "c"
}
{
"label" : "shutdown",
"action" : "lxqt-leave --shutdown",
"text" : "Shutdown",
"keybind" : "s"
}
{
"label" : "reboot",
"action" : "lxqt-leave --reboot",
"text" : "Reboot",
"keybind" : "r"
}
{
"label" : "lock",
"action" : "swaylock",
"text" : "Lock screen",
"keybind" : "b"
}
Except of the logout and the lockscreen this does the same as thelxqt-leave
app, which could modify those 2 commands if running under wayland. Afaik there are only 2 valid lockers (excluding gtklock), swaylock
and waylock
(which I didn't look into it yet).
Maybe a setting for preferred screenlocker under wayland is needed in lxqt-session
.
I've running a full lxqt-session (except of lxqt-panel - started by wayfire.ini
- and apps eventually started by shortcut) running now and am using wlogout
.
Lxqt-leave does not work shutdown
Not root (glibc)
(0x7ffc45978750) Warning: dbusCall: QDBusInterface is invalid "org.freedesktop.login1" "/org/freedesktop/login1" "org.freedesktop.login1.Manager" "CanPowerOff"
(0x7ffc45978750) Debug: systemd: "CanPowerOff" = "no"
Root (glibc)
(0x7ffcd1e35cf0) Warning: dbusCall: QDBusInterface is invalid "org.freedesktop.login1" "/org/freedesktop/login1" "org.freedesktop.login1.Manager" "CanPowerOff"
(0x7ffcd1e35cf0) Debug: systemd: "CanPowerOff" = "yes"
Not root (musl)
(0x7ffc0a597710) Warning: dbusCall: QDBusInterface is invalid "org.freedesktop.login1" "/org/freedesktop/login1" "org.freedesktop.login1.Manager" "CanPowerOff"
Root (musl)
(0x7ffc0a597710) Warning: dbusCall: QDBusInterface is invalid "org.freedesktop.ConsoleKit" "/org/freedesktop/ConsoleKit/Manager" "org.freedesktop.ConsoleKit.Manager" "CanPowerOff"
With the default dialog button layout of Qt, the default button of logout/reboot dialog says "Yes". That's good because the user can just press Enter and do the job.
However, when the dialog button layout is changed (some Qt widget styles can do it), that may not be the case.
I changed the layout to that of Gnome (a valid layout in Qt) with Kvantum and was confused when I couldn't log out/reboot/shut down from inside LXQt as before... For a few minutes, I thought something was wrong, until I saw that the default button was changed to "No".
It's some time now that module state after suspend isn't displayed anymore under wayland.
At login it works as usual.
$ lxqt-config-session
QObject::connect:
No such signal QDBusAbstractInterface::moduleStateChanged(QString,bool)
in /home/stef/git/lxqt/lxqt-session/lxqt-config-session/modulemodel.cpp:39
I noticed that while testing a different config file under wayland, with
lxqt-session -c /home/stef/.config/lxqt-wayland/session.conf
.
lxqt-config-session
writes to ~/.config/lxqt/session.conf
lxqt-session
process crashes because lock_screen_before_power_actions=false
is true (default) even if none of the both config files have set "true" (see #457)-c option works, write and read
It doesn't
session.conf
When the checkbox for screen locking before suspend in lxqt-config-session
is checked at first suspend lxqt-session
crashes. Logout is greyed out and list of modules running shows none running, but no other signs, so the session itself is still running but the process is dead after resume.
Disable screenlock function when running on wayland.
Afaik there is no general method as under X11, so supporting swayidle before-sleep swaylock
if running under wayland could be an option.
lxqt-session is quite useful under wayland, for modules, some settings and autostart
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.