FLTK logo

Re: [fltk.coredev] Please vote: add a Wayland platform to FLTK

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.coredev  ]
 
Previous Message ]New Message | Reply ]Next Message ]

Re: Please vote: add a Wayland platform to FLTK Sanel Zukan Jan 05, 2022  
 
+1 looking forward to test it in the future (waiting for Slackware
upgrade first). 

Best,
Sanel

Manolo <manolo.gouy@gmail.com> writes:
> I'd like to invite fellow FLTK developers to vote about
> adding a Wayland platform to the FLTK library.
> ++++++++++++++++
> Manolo
>
>
> The candidate code is in branch "wayland" of 
> https://github.com/ManoloFLTK/fltk
> See file README.Wayland.txt therein for installation instructions, including
> a short list of required Debian packages.
> That software should install on any Wayland-running Linux system.
> It's been tested on Debian and Ubuntu.
> The new code contains no change to platform-independent FLTK code;
> it's therefore completely compatible with extant FLTK user code.
>
> Major features of the Wayland branch 
> ====================================
>
> * FLTK uses the Wayland protocol for its windowing,
> Cairo or OpenGL (EGL, really) for its drawing, Pango for font handling and 
> text drawing.
> Copy/paste of text or images, and drag-n-drop of text are supported.
>
> * Both CMake-based and configure-based building methods are possible.
> With both, the install and build shared libs options are possible.
>
> * All test/ and examples/ apps build and run.
>
> * CJ(K?) text input methods, dead keys (important with some keyboard 
> layouts) and 
> compose keys are supported.
>
> * Wayland integrates a support for HighDPI displays in the form of an 
> integer-valued
> scale factor (typically, 200 % on a standard HighDPI display) recognized by 
> FLTK.
> In addition, the user can scale all FLTK windows up and down with ctrl/+/-/ 
> keys.
>
> * The code has been tested using 3 distinct Wayland implementations:
> Mutter (that of Gnome), Weston (which is extremely rudimentary and has 
> bugs), and KDE.
>
> * User applications should build and run under the Wayland platform without 
> source code change. Nevertheless, X11-specific code delimited by
> #if !defined(__APPLE__) && !defined(_WIN32)
> ... X11-specific code ...
> #endif
> will choke at compile-time because it will expose X11-specific function 
> calls. Such
> source code should be changed to :
> #include <FL/fl_config.h>
> #if defined(FLTK_USE_X11)
> ... X11-specific code ...
> #endif
> which is the new, correct way to identify X11-specific code in 1.4
>
> * `fltk-config --cxxflags --ldflags` can be used in makefiles as usual.
>
> * OpenGL and GLUT are supported as for other FLTK platforms. OpenGL3 is 
> supported too,
> but a minor source code change is required after the glewInit() call :
>   GLenum err = glewInit(); // defines pters to functions of OpenGL V 1.2 
> and above
> #ifdef FLTK_USE_WAYLAND
>   if (err == GLEW_ERROR_NO_GLX_DISPLAY) err = GLEW_OK;
> #endif
> That's because glewInit() returns an error code value in the Wayland 
> context.
>
> * The Wayland protocol accomodates either client-based or server-based 
> window
> decoration. The Gnome and Weston Wayland implementations do not contain 
> server-based
> window decoration and instead expect each client program to decorate its 
> windows.
> For that reason, the FLTK library is extended by a library, libdecor,
> (see https://gitlab.gnome.org/jadahl/libdecor) which produces window 
> decoration
> for each FLTK client program. That library is governed by the MIT license 
> which
> allows unrestricted use, even in a commercial setting, but asks for a copy 
> of the
> license to be included in any copy of the software.
> The CMake-based build method has an option to use the system-level
> libdecor package available on recent Linux distributions. FLTK uses by 
> default a
> copy of libdecor bundled into its source tree.
>
> * The FLTK/Cairo interface is unchanged : test/cairo_test runs OK.
>
> * Some platform-related code is identical for the Wayland and X11 platforms.
> Timeout support is in that case.
> The new code defines a new class, Fl_Nix_System_Driver, where all such code 
> is located.
> After inclusion of the Wayland branch, the X11-platform code will also use
> class Fl_Nix_System_Driver.
>
> * The complete FLTK drawing API is implemented using Cairo (plus Pango for 
> text).
> This opens the possibility to define in the future a new option for the X11 
> platform 
> of FLTK where all drawing would be Cairo-based, and thus antialiased.
>
>
> Known limitations of the Wayland branch 
> =======================================
>
> * It's not yet been tested on a setting with several displays, but should 
> accomodate
> that in principle.
>
> * Wayland, deliberately as a security measure, keeps client programs 
> ignorant 
> of the position of a window in a display or of whether it is minimized. 
> Consequently, Fl_Window::position(x, y) has no effect except for subwindows 
> and
> menu and tooltip windows, and Fl_Window::show() has no effect on a 
> minimized window.
>
> * When running Fl_Native_File_Chooser, the GTK file chooser window is not 
> made
> transient for the originating FLTK window, as it should, because the GTK 
> API necessary
> for that doesn't exist or has not been identified.
>
> -- 
> You received this message because you are subscribed to the Google Groups "fltk.coredev" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to fltkcoredev+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/fltkcoredev/53ecaf4c-39ff-4513-b4c5-e8e0136839b3n%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups "fltk.coredev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fltkcoredev+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/fltkcoredev/87czl6xsic.fsf%40example.com.
Direct Link to Message ]
 
     
Previous Message ]New Message | Reply ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.