Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wayland support? #6

Open
trading-peter opened this issue Jul 16, 2021 · 13 comments
Open

Wayland support? #6

trading-peter opened this issue Jul 16, 2021 · 13 comments

Comments

@trading-peter
Copy link

Hey quick question. Are there plans to support wayland in the future?
Thank you for you time :)

@changkun
Copy link
Member

Hi, thanks for writing it up. Yes, it should be a support to get in, the problem for me is I do not have Wayland to test it properly. VM might be an option but the disk space is quite tight at the moment :)

@changkun changkun added enhancement New feature or request help wanted Extra attention is needed NeedsInvestigation labels Jul 17, 2021
@changkun
Copy link
Member

I took a quick look at Wayland systems. It looks like it is fully compatible with X11 and the clipboard package works if we just install libx11-dev.

It seems we don't have to do anything else here.

Did I misunderstand anything?

@changkun
Copy link
Member

Looks like nothing is needed for Wayland porting. Close.

(clarify if anything was a misunderstanding.)

@wakatara
Copy link

@changkun

Can you elaborate a bit more on how this library supports wayland if I am trying to build an app to centralize (and act as a dispatcher - think greenclip on i3/xwindows or the copy/paste and snippets functionality of Alfred on OSX), copies and pastes from sway window manger on wayland.

Is it just the api for libx11-dev is the same if you are sending messages from wayland to the library, or it's actually using xwindows conventions (which for me would be a no go because of the xwindows security model which does not insulate apps.).

lemme know. Still in the investigative stage of how to build this, so it might just be me not understanding how the mechanics of this works on X11 or Wayland...

thanks!

@changkun
Copy link
Member

@wakatara Thanks for the inquiry. In fact, I am still suspect the support regarding Wayland support. As I remember from the last time, I tested the demo cli gclip on Wayland (Switched to Wayland on an X11 Ubuntu). After I installed the libx11-dev, the gclip is able to build and could work, although I lack the understanding of if x11 is running on the background or not.

Feel free to let me know if the package could really work from different feedback, as I lack much experience with Wayland systems, but also interested to support it if not yet.

@changkun changkun reopened this Oct 31, 2021
@changkun changkun added WaitingForInfo and removed enhancement New feature or request help wanted Extra attention is needed labels Oct 31, 2021
@microo8
Copy link
Contributor

microo8 commented Jan 22, 2022

Just an idea. Have you considered using wl-clipboard?

Then just check if we are on wayland:

if os.Getenv("WAYLAND_DISPLAY") != "" {
     //call wl-clipboard with os/exec
}

@changkun
Copy link
Member

Yes, I know about wl-clipboard, but it would be an external dependency.

Although it is a temporary solution, I don't have a Wayland environment for testing.

changkun pushed a commit that referenced this issue Jan 24, 2022
Removing linking of libX11 and replacing it with dlopen to call the
functions dynamically.
For the future wayland support, the library will not require the libX11
library to be installed on the running system.
For compiling it we need it, because of the huge and complicated type
definitions, but the compiled binary will run also on a system without
libX11.

References: #6
Signed-off-by: Vladimír Magyar <[email protected]>
@changkun changkun added help wanted Extra attention is needed and removed WaitingForInfo labels Jan 24, 2022
@microo8
Copy link
Contributor

microo8 commented Feb 21, 2022

So @emersion has pointed me to his blog post: https://emersion.fr/blog/2020/wayland-clipboard-drag-and-drop/
I'll try to do something from it. But first a quick question:

  1. Can I introduce a new dependency: libwayland (I try to load it dynamically as the libX11)
  2. In the Init() function, can I first try to load libwayland and if it fails, then libX11?

EDIT: new dependency for libwayland, not for wlroots

@emersion
Copy link

Can I introduce a new dependency: wlroots (I try to load it dynamically as the libX11)

This really shouldn't be necessary. wlroots is a library for building compositors, clients must not depend on it.

@changkun
Copy link
Member

  1. Can I introduce a new dependency: libwayland (I try to load it dynamically as the libX11)
  2. In the Init() function, can I first try to load wlroots and if it fails, then libX11?

This sounds like a nice plan. Since I am not entirely familiar with libwayland, is it the official dev distribution for wayland support?
Another case is: What happens if a user is using X but also installed libwayland? When we load libwayland before libX11. In this case would result a successful libwayland loading, but I guess the user cannot really use the package as the user's desktop environment is X. Is there a way to determine which desktop environment is used at the moment? Moreover, what happens if user changes the desktop environment (is this a possible case)?

@emersion
Copy link

emersion commented Feb 21, 2022

is it the official dev distribution for wayland support?

libwayland is the official C library to connect to a Wayland compositor. It's like libX11 or libxcb.

What happens if a user is using X but also installed libwayland?

The WAYLAND_DISPLAY env variable will be set if the user is inside a Wayland session.

Moreover, what happens if user changes the desktop environment (is this a possible case)?

Not really, not without quitting the terminal emulator.

@microo8
Copy link
Contributor

microo8 commented Feb 22, 2022

So I'll get to it :)

@laineeded
Copy link

Hello, are there any plans to support wayland soon? or just implementing a temporary solution? thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants