Code Monkey home page Code Monkey logo

lxqt-session's Introduction

lxqt-session

Overview

General

Repository lxqt-session is providing tools to handle LXQt sessions.

First of all there's session manager lxqt-session. The binary is launched right at the beginning of LXQt sessions and in turn responsible for launching and monitoring all other components constituting the sessions.

GUI "LXQt Session Settings" (binary lxqt-config-session) is used to configure various settings affecting the session, e. g. which window manager to use or which applications to start automatically.

Binary lxqt-leave deals with interrupting or terminating sessions. It comes with several options expressing the action they trigger, e. g. --leave, --hibernate, --shutdown or --reboot.

LXQt Modules

Term "LXQt Modules" refers to a way to launch binaries at the beginning of LXQt sessions and to make sure these will be available all over the session.
Technically those binaries are basically launched according to the XDG Autostart Specification. But unlike binaries handled according to this specification only LXQt Modules are monitored all over the session and automatically relaunched should they exit unexpectedly.

Installation

Compiling source code

Runtime dependencies are xdg-user-dirs, liblxqt, qtxdg-tools and layer-shell-qt. Additional build dependencies are CMake and optionally Git to pull latest VCS checkouts.

Code configuration is handled by CMake. CMake variable CMAKE_INSTALL_PREFIX has to be set to /usr on most operating systems.

To build run make, to install make install which accepts variable DESTDIR as usual.

Binary packages

Official binary packages are provided by all major Linux and BSD distributions. Just use your package manager to search for string lxqt-session.

Configuration, Usage

LXQt Modules

Basically these are launched by desktop entry files according to the Autostart Specification. An additional key X-LXQt-Module=true makes binary lxqt-session recognize the binary in question as an LXQt Module and treat as such.
Corresponding configuration can be handled by "LXQt Session Settings", see below.

LXQt Session Settings

A GUI to tweak all kinds of settings affecting the session as a whole.

lxqt-config-session

It can be launched from panel's main menu - Preferences - LXQt settings - Session Settings and is provided by "Configuration Center" (binary lxqt-config) of lxqt-config as well.

Notes on some settings:

Basic Settings

Window Manager, LXQt Modules and some settings upon leaving the session. See screenshot. As for the LXQt Modules the checkbox at the left refers to launching the module at sessions' beginning, stopping and launching within running sessions works as well.

Default Applications

Defines a default terminal emulator and web browser by setting environment variables TERM and BROWSER.
The usage of TERM is faulty in this context, see lxqt #433. Usage of BROWSER is correct but not recognized by too many applications any longer.
All in all the configuration of default applications will probably be handled by a different approach one day like improving GUI "File Associations" of lxqt-config so setting environment variables TERM and BROWSER with lxqt-config-session has actually to be discouraged.

User Directories

This refers to defining directories in terms of the xdg-user-dirs concept. This is a specification to define a number of directories used for certain kinds of content like documents, audio or video files and to create those directories in each user's home directory in case they do not preexist.
This dialogue allows for setting custom directory names differing from those defined by the specification.

Autostart

Applications to launch according to the Autostart Specification.
Term "LXQt Autostart" refers to applications launched in LXQt sessions only, "Global Autostart" to those launched in all kinds of session. The distinction is relying on keys OnlyShowIn and NotShowIn of the desktop entry files in use.
The underlying desktop entry files can be edited manually, buttons Add, Edit and Delete at the right of pane "Autostart" can serve as some rudimentary editor, too.

Environment (Advanced)

Allows for setting arbitrary environment variables which will be available for all software running within LXQt sessions (so not only the components of LXQt itself).

lxqt-leave

Desktop entry files providing the various invocations of the binary as depicted above are summed up in sub-menu "Leave" of the panel's main menu.
Item "Leave" opens a dialogue window to select from all actions which are available, all other topics trigger the action stated by their title.

Translations

Translations can be done in LXQt-Weblate.

Components:

Stato traduzione

lxqt-session's People

Contributors

agaida avatar amoskvin avatar atalanttore avatar attuska avatar dglent avatar ito32bit avatar jleclanche avatar jubalh avatar luis-pereira avatar lxqtbot avatar mbouzada avatar micrococo avatar p-bo avatar paiiou avatar palinek avatar paulolieuthier avatar pcman avatar pvanek avatar rbuj avatar roxfr avatar safaalfulaij avatar scootergrisen avatar selairi avatar smarquespt avatar sokoloffa avatar stefonarch avatar tsujan avatar welaq avatar yarons avatar zoli111 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lxqt-session's Issues

Disable loading keyboard settings if running under wayland

Actually never tested it on debian 12. Maybe I'm missing something, or there is a setting which is different on this PC (autorepeate?).

Expected Behavior

Should work like under arch.

Current Behavior

coredumps

Steps to Reproduce (for bugs)
  1. Open a wayland session
  2. Execute 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)
Possible Solution

Disable loading keyboardsettings under wayland as they are handled in compositors configuration.

Context

The hard way to wayland.

System Information
  • Distribution & Version: Debian Bookworm 12
  • Package version: 1.2.0

lxqt-config-session - under "Environment" page - text layout issue

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

lxqt-config-session

User processes keep running after logout

Steps to reproduce

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.


System Information
  • Distribution & Version: Arch Linux
  • Kernel: 5.8.7
  • Qt Version: 5.15.0
  • liblxqt Version: 0.15.1
  • lxqt packages: 0.15.0 / 0.15.1

lxqt-processes-after-logout.txt

Localization place should be updated in README.md

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:

logout/reboot/shutdown dialog default buttons have issue

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".

#374 breaks tmux

Expected Behavior

tmux server created inside LXQt persists after logging out and can be attached later

Current Behavior

Since #374, the tmux server is gone upon logging out

Possible Solution
  • A whitelist for procceses that should not be killed? See comments at #374 for previous discussions.
  • Check how other desktop environments work?
Steps to Reproduce (for bugs)
  1. Run qterminal from within LXQt (click the quicklaunch button in my case)
  2. Run tmux
  3. Detach the tmux session. Now the tmux server is a sub-process of lxqt-session. Here are partial outputs of pstree:
        │                        └─lxqt-session─┬─
        │                                       ├─tmux: server───zsh
  1. Log out of the LXQt session
Context

I wanted to observe how proccese are killed #374 by running journalctl --follow in tmux.

System Information
  • Distribution & Version: Arch Linux
  • Kernel: 5.10.28
  • Qt Version: 5.15
  • liblxqt Version: git
  • lxqt-build-tools Version: git
  • Package version: git

Heads up: procps-ng

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?

docs, manual: describe the difference between the options "kwin" and "kwin_x11"

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.

Support for the use of qt5ct

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

LXQt on mobile with small screen

Expected Behavior

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.

Current Behavior

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.

Possible Solution

I'm working on a patch which makes it full screen with a QListView which scrolls and adjusts column count.

Steps to Reproduce (for bugs)
Context
System Information
  • Distribution & Version:
  • Kernel:
  • Qt Version:
  • liblxqt Version: master
  • lxqt-build-tools Version:
  • Package version:

Many tooltips in other languages are not translated

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".

Expected Behavior

Tooltips in system language

Current Behavior

Many are not.

Possible Solution

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į"

example for german:
schermata-01-22-35-16

Modules state not displayed after resume under wayland

It's some time now that module state after suspend isn't displayed anymore under wayland.
At login it works as usual.

screen_window_dom_10:02:53_


$ 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

Steps to Reproduce (for bugs)
  1. Start lxqt-session under wayland
  2. Suspend
  3. After resume open lxqt-config-session
System Information
  • Distribution & Version: arch, latest git

Adding more Qt env vars?

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.

QT_ACCESSIBILITY=1

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.

QT_EXCLUDE_GENERIC_BEARER=1

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.

QT_AUTO_SCREEN_SCALE_FACTOR=0

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.

Add layer-shell to lxqt-leave if on wayland

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

/etc/xdg/autostart/lxqt-xscreensaver-autostart.desktop - really?

Expected Behavior

Until now i thought that we was indipendend of xscreensaver and use xdg-screensaver in all places.

Current Behavior

It seems that we give a damn to any other screensaver

Possible Solution

No clue, but - maybe we should refine this

Context

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.

System Information

Current

Implement screenlocking on wayland

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.

Expected Behavior

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

Current Behavior

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 &
Possible Solution

Files:
https://github.com/lxqt/liblxqt/blob/master/lxqtscreensaver.cpp
https://github.com/lxqt/lxqt-session/blob/master/lxqt-session/src/lockscreenmanager.cpp

Context

One of the features needed for LXQt 2.1

lxqt-config-session/xdg-user-dirs: resetting of paths featuring characters unsupported by current locale

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

  • Make sure none of the directories in $HOME as defined by xdg-user-dirs exists and binaries xdg-user-dir[s-update] are available.
  • Launch an LXQt session with 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.
  • Launch the LXQt session as a whole or 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.

lxqt-session crashes when suspend/hibernate on wayland if "lock screen" is checked

Current Behavior

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.

Possible Solution

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.

Context

lxqt-session is quite useful under wayland, for modules, some settings and autostart

System Information

crash on startup if XDG_DESKTOP_DIR not set in user-dirs.dirs

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).

Expected Behavior

LXQt should fall back to XDG_DESKTOP_DIR=$HOME/Desktop

Current Behavior

See description above.

Possible Solution

See above.

Steps to Reproduce (for bugs)
  1. Use a system with recent LXQt
  2. Ensure ~/.config/user-dirs.dirsis not empty, but has no entry for XDG_DESKTOP_DIR
  3. If necessary, log out.
  4. Log in to a new LXQt session, observe crash.
Context

This might not be in lxqt-session (though

if [ -e "$XDG_CONFIG_HOME/user-dirs.dirs" ]; then
looks suspicious, but also this https://github.com/lxqt/pcmanfm-qt/blob/4659da4f7428abb43326b794a9983006dbead3a3/pcmanfm/xdgdir.cpp#L35)

System Information

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)

Autostart much delayed under 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.

Expected Behavior

Autostart is fast

Current Behavior

It has huge delays for most apps if the notification area is not available.

Possible Solution

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

Context

Having lxqt-panel started outside of lxqt-session is not desirable, even if it works.

System Information
  • Distribution & Version: arch, git

LXQt Session Settings: Add a way to Ignore Default Environment Variables Per User - or unset them

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)

lxqt-leave should detect remote sessions

Expected Behavior

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)

Current Behavior

Right now i can send my NAS to sleep or shut it down via lxqt-session, not so nice 😄

Possible Solution

Detect the running X - and react to it

Steps to Reproduce (for bugs)
  1. Setup a xrdp-server or vnc-server
  2. Connect to it
  3. Hit shutdown or reboot in lxqt-leave
  4. Be speechles and watch the remote machine :)
Context

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

System Information

Server: Modified CentOS (Rockstor)
Client: Siduction LXQt / Windows with a rdp client

-c option not working for lxqt-session

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)
Expected Behavior

-c option works, write and read

Current Behavior

It doesn't

Steps to Reproduce (for bugs)
  1. Use a different location, restart session
  2. Change some setting and look at the timestamps or settings in both session.conf
Context
System Information
  • Distribution & Version: arch, git

Lxqt-leave no shutdown

Lxqt-leave does not work shutdown

  • Distribution & Version: Void Linux
  • Kernel: 4.19.58_1
  • Qt Version: 5.11.3
  • liblxqt Version: 0.14.1
  • Package version: lxqt-session-0.14.1

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"  

Fails to build with Qt5 5.12.10.

[ 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:

  • GCC 7.3.1
  • GLIBC 2.26
  • Qt5 5.12.10

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;
        }
    }
}

CustomProvider is never called from daemon

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)

  1. CustomProvider
  2. LXQtProvider only if not called from daemon itself
  3. SystemdProvider
  4. UPowerProvider
  5. ConsoleKitProvider
  6. 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.

Name can not be missed when we want to add an autostart program

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 ;)

Feature request: make lxqt-leave work completely under wayland

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).

Possible Solution

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-leaveapp, 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.

Context

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.

System Information
  • Distribution & Version: arch, git

lxqt-session: default apps

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.

Add a method to disable autostarting for applications under wayland

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

  • lxqt-globalkeys module (does no harm but is misleading)
  • xscreensaver (it works under xwayland but can't lock which is expected)

There are other applications like redshift which could cause trouble, and some like qlipper which just won't work under wayland.

Possible Solution

immagine

And something like X-LXQt-X11-Only=true or X-LXQt-Wayland=false in the desktopfile, including the ones we're shipping. @palinek ?

Context

Switching between X11 and wayland needs some scripts to achieve this, getting rid of them is mandatory for average users.

lxqt-config-session after saving autostart element, add new backslashes before quotes

lxqt-config-session after saving autostart element, add new backslashes before quotes even if there is exist backslashe before quotes.

Expected Behavior

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.

Current Behavior

lxqt-config-session after saving autostart element, add new backslashes before quotes even if there is exist backslashe before quotes.

Possible Solution
Steps to Reproduce (for bugs)
  1. Launch lxqt-config-session
  2. Create test autostart element with command sh -c "sleep 12 && _some_cmd"
  3. Save it
  4. Try to edit this autostart element: the command became sh -c "sleep 12 && _some_cmd"
  5. Save it. After each saving, there is more and more backslashes before quotes: sh -c \"sleep 12 && _some_cmd\"
Context
System Information
  • Distribution & Version: Debian buster
  • Kernel: 4.19
  • Qt Version: 0.14.1
  • liblxqt Version:0.14.1-1
  • lxqt-build-tools Version: 0.6.0-2
  • Package version: lxqt-session (0.14.1-2)

lxqt-session - make WM selection smarter

For some unknown reason, when I entered for a lxqt session, lxqt asked me for the default window manager
lxqt-window-manager-asked

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

Using default files doesn't follow the expected location

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.

Expected Behavior

A first session for a new user should use lxqt.conf for defining icon-theme.

Current Behavior

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.

System Information
  • Distribution & Version: Mageia Cauldron
  • Qt Version: 5.15.2
  • liblxqt Version: 0.16.0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.