@nfg

Were you able to build sway without basu? The other ones don't need it for building or running, but the basu problem comes about when one wants to make use of the portals "feature" - xdg-desktop-portal-wlr and a dependency of xdg-desktop-portal-hyprland require it.

I could care less about any of the other portals features, but I unfortunately need to be able to share my screen regulary on video calls over Zoom (via Firefox). It does work, though a bit clumsily.

Try with the new release of seatd (0.8.0-2) available on [obextra]. Then do not forget to

  • add your account to the seat group

     $ sudo usermod -aG "seat" <accountName>
  • restart the seatd daemon

    with old version of 66

     $ sudo 66-start -R seatd

    with the new version of 66

     $ sudo 66 restart seatd
25 days later

How do you bypass the sd-bus provider option when compiling sway? Do you have any alternatives other than using the options:

-D sd-bus-provider=basu -D tray=disabled
  • Edited

No tested with sway, works with hyprland, labwc, wayfire. I have trouble about the shutdown call. Actually, Consolekit do not support wayland, i need to patch it to make it works.

4 months later

I've been attempting to get labwc working here and while I've had some success, I'm at a bit of a loss about the startup procedure, with user services and environment variables. More specifically, how to translate the Xorg procedure to wayland..
Presently, with X, i use .xinitrc with this:

#!/usr/bin/bash

if [ -d /etc/X11/xinit/xinitrc.d ] ; then
 for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
  [ -x "$f" ] && . "$f"
 done
 unset f
fi

list=( $(ls -A1 /home/monkey/.66/conf/svscan@monkey | sort) )
for i in ${list[@]};do
    var=( $(</home/monkey/.66/conf/svscan@monkey/${i}) )
    for j in ${var[@]}; do
        export ${j}
    done
done

66 tree start

## Try consolekit
if 66-which -q ck-launch-session; then
    cmd="exec ck-launch-session $@"
else
    cmd="exec $@"
fi

## Select the session to start
${cmd} openbox-session

I presume the relevant part is in the middle, that exports the env variables and then starts the user tree.
(I've added seatd, added my user to seat group & enabled it's service)
I tried making a script using that central part and tacking exec dbus-run-session labwc at the end, but that fails..
..seems labwc fails to find the exported env vars..
if I log out of a previous X session, where everything has been set and started, i can start labwc with

XDG_RUNTIME_DIR=/run/user/1000 dbus-run-session labwc
  • Edited

you can use something like this:

  • create a file ~/.wayland.sh containing
#!/bin/bash

list=( $(ls -A1 $HOME/.66/conf/svscan@obarun | sort) )

for i in ${list[@]};do
    var=( $(<$HOME/.66/conf/svscan@obarun/${i}) )
    for j in ${var[@]}; do
        export ${j}
    done
done

66 tree start

# printenv

dbus-run-session labwc

You obviously need scandir@monkey running and a dbus-user@monkey.
I'm not sure about the need of the dbus-run-session invocation. Maybe can just try both, with and without to see the difference. I don' t use it to start hyprland.

  • make this file executable
    % chmod +x ~/.wayland.sh
  • exec the script to start your session.

pretty much what i did :) (and again)
the scandir@ is all good.. ...seems like the variables export is getting lost somehow?
they show if i use the printenv in the script, but they're gone at the labwc line and also after the script exits..
labwc fails at what i assume is xwayland(some xcb connection) which needs the $XDG_RUNTIME_DIR
and yeah, dbus-run-session doesn't seem to be needed.(edit) seems to be needed for dunst at least..
is there some way to check if seatd is setting the seat correctly? (though i would think labwc wouldn't start at all if that were the case)

  • eric replied to this.
    • Edited

    This is interesting.
    Can please you share some output logs of the different components needed to launch labwc?

    I don't know exactly how much you understand about variables, so maybe the explanation below won't help you understand what's going on at all.

    Each program launch through the script inherit of the value of the exported variables make at the start of the script. That's why you can see it calling the printenv command.

    I don't know exactly by

    ncmprhnsbl but they're gone at the labwc

    Variable are not vanished. if you take a look at the /proc/<labwc_pid>/environ file you should see the environment variables passed to labwc given by the scripts.

    ncmprhnsbl and also after the script exits..

    Well, let me take an example. I have a script file named exp.sh with the following:

    #!/bin/sh
    
    export varexported=fromscript
    
    echo value of varexported: $varexported

    now i execute the script then i check the environment variable define in my shell by a printenv.

    $ ./exp.sh
    $ printenv

    The variable varexported doesn't exist. That means that the export variable call only concern future instructions made inside the scripts.
    Now i change my ex.sh scripts by the following:

    #!/bin/sh
    
    export varexported=$fromoutside
    
    echo value of varexported: $varexported

    Then i do an export command before lauching the ex.sh script

    $ export fromoutside=itworks
    $ ./ex.sh
    $ printenv

    Here i get the correct replacement of my variable $fromoutside inside the script and get the correct value for varexported variable.

    ncmprhnsbl is there some way to check if seatd is setting the seat correctly?

    Did you take a look at seatd log?(66 status seatd)

    Did you tried to start labwc through a service?

      eric I don't know exactly by

      yeah :) i didn't express it well and was making some wrong assumptions..
      first up, some output, starting labwc via the script:

      start: info: Initialized successfully: wireplumber
      start: info: Initialized successfully: wireplumber-log
      signal: info: Successfully started service: wireplumber-log
      signal: info: Successfully started service: pipewire-log
      signal: info: Successfully started service: pipewire-pulse-log
      signal: info: Successfully started service: dbus@monkey-log
      signal: info: Successfully started service: xdg-user-dirs
      signal: info: Successfully started service: pipewire
      signal: info: Successfully started service: wireplumber
      signal: info: Successfully started service: pipewire-pulse
      signal: info: Successfully started service: dbus@monkey
      tree: info: Successfully started tree: global
      00:00:00.000 [../labwc-0.7.4/src/config/session.c:70] read environment file /home/monkey/.config/labwc/environment
      00:00:00.001 [../labwc-0.7.4/src/config/tablet.c:95] Adding button map for 0x140 with 0x110
      00:00:00.001 [../labwc-0.7.4/src/config/tablet.c:95] Adding button map for 0x14b with 0x111
      00:00:00.002 [../labwc-0.7.4/src/config/tablet.c:95] Adding button map for 0x14c with 0x112
      00:00:00.002 [../labwc-0.7.4/src/config/rcxml.c:1663] read config file /home/monkey/.config/labwc/rc.xml
      00:00:00.004 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Frame
      00:00:00.005 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Frame
      00:00:00.005 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Frame
      00:00:00.005 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Frame
      00:00:00.006 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Top
      00:00:00.006 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Left
      00:00:00.006 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Right
      00:00:00.006 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Bottom
      00:00:00.007 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for TRCorner
      00:00:00.007 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for BRCorner
      00:00:00.007 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for TLCorner
      00:00:00.008 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for BLCorner
      00:00:00.008 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for TitleBar
      00:00:00.008 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for TitleBar
      00:00:00.009 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for TitleBar
      00:00:00.009 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for TitleBar
      00:00:00.009 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for TitleBar
      00:00:00.010 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for TitleBar
      00:00:00.010 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Maximize
      00:00:00.010 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for WindowMenu
      00:00:00.010 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Iconify
      00:00:00.011 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Close
      00:00:00.011 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Client
      00:00:00.011 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Client
      00:00:00.012 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Client
      00:00:00.012 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Root
      00:00:00.012 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Root
      00:00:00.013 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for Root
      00:00:00.013 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for All
      00:00:00.013 [../labwc-0.7.4/src/config/rcxml.c:446] create mousebind for All
      00:00:00.015 [../labwc-0.7.4/src/main.c:191] LABWC_PID=1391
      00:00:00.015 [backend/x11/backend.c:396] Creating X11 backend
      00:00:25.084 [backend/x11/backend.c:409] Failed to open xcb connection
      00:00:25.085 [../labwc-0.7.4/src/server.c:351] unable to create backend
      Some friendly trouble-shooting help
      ===================================
      If a seat could not be created, this may be caused by lack of permission to the
      seat, input and video groups. If you are using a systemd setup, try installing
      polkit (sometimes called policykit-1). For other setups, search your OS/Distro's
      documentation on how to use seatd, elogind or similar. This is likely to involve
      manually adding users to groups. If the above does not work, try running with `WLR_RENDERER=pixman labwc` in
      order to use the software rendering fallback
      ```  

      everything is correct up till:

      00:00:00.015 [backend/x11/backend.c:396] Creating X11 backend
      00:00:25.084 [backend/x11/backend.c:409] Failed to open xcb connection
      00:00:25.085 [../labwc-0.7.4/src/server.c:351] unable to create backend

      seatd log has just this: which looks like it's misinterpreting my wacom tablet as a display?

      08:03:24.431 [ERROR] [seatd/seat.c:242] /sys/devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-6/1-6:1.0/0003:056A:0026.0004/input/input17/input17::wacom-0.3/brightness is not a supported device type 
      08:03:24.431 [ERROR] [seatd/client.c:238] Could not open device: No such file or directory

      some things i've done:

      • configured my user tree: specifically, setting the console tracker to seatd (this meant dbus now worked without dbus-run-session)

      • installed hyprland and can confirm that works using the script but am i correct in saying our hyprland is built without xwayland support?
        also there is an xcb issue there, with qt apps failing.

      to summarize:
      labwc seems to be allergic to starting via script (and specifically requires XDG_RUNTIME_DIR passed to it on the command line)
      "Failed to open xcb connection" seems to be key(as also seen in hyprland, but after startup).
      i havn't tried starting via a service yet.. i'm thinking that i'd need to create extra user trees to enable switching between openbox/labwc/hyprland/other ?

      • eric replied to this.
        5 days later
        • Edited

        ncmprhnsbl nstalled hyprland and can confirm that works using the script but am i correct in saying our hyprland is built without xwayland support?

        Apparently, @nfg build hyprland without it support. It may cause the xcb issue. You can try to rebuild it supporting the xwayland feature and see if that change something.

        You can also take a look if you have the DISPLAY variable set. If yes, try to unset it. see this issue

          eric It may cause the xcb issue.

          i had another look, and while no xwayland contributes, it's not really the cause in this case.
          for some things it was me using QT_QPA_PLATFORMTHEME=gtk2 (for consistent theming)
          which appears to force qt into using the xcb plugin instead of wayland or maybe just trying to use xwayland because "gtk2"..
          so unsetting that fixes that issue
          krita explicitly looks for xcb, so maybe it's xwayland only at this stage( it's still qt5 where others like ark etc are qt6)
          unsetting $DISPLAY doesn't seem to have any effect that i can see.
          using my workaround with labwc seems to be working ok so far..
          i may open an issue with them about it's seeming inability to accept exported variables within a script, if that's what it is..

          Powered by Obarun