summaryrefslogtreecommitdiff
path: root/README.Wayland.txt
diff options
context:
space:
mode:
Diffstat (limited to 'README.Wayland.txt')
-rw-r--r--README.Wayland.txt246
1 files changed, 0 insertions, 246 deletions
diff --git a/README.Wayland.txt b/README.Wayland.txt
deleted file mode 100644
index 87d5164ce..000000000
--- a/README.Wayland.txt
+++ /dev/null
@@ -1,246 +0,0 @@
-README.Wayland.txt - Wayland Platform Support for FLTK
-------------------------------------------------------
-
-
-Contents
-========
-
- 1 Introduction
-
- 2 Wayland Support for FLTK
- 2.1 Disabling Wayland for Backwards Compatibility
- 2.2 Configuration
- 2.3 Known Limitations
-
- 3 Platform Specific Notes
- 3.1 Debian and Derivatives (like Ubuntu, Mint, RaspberryPiOS)
- 3.2 Fedora
- 3.3 FreeBSD
-
-
-1 Introduction
-==============
-
-Version 1.4 of the FLTK library introduces support of the public FLTK API on
-the Wayland platform. It requires a Wayland-equipped OS, namely Linux or FreeBSD.
-Pre-existing platform-independent source code for FLTK 1.3.x should build and
-run unchanged with FLTK 1.4 and the Wayland platform.
-The code has been tested on Debian, Ubuntu, RaspberryPiOS and Fedora with
-3 distinct Wayland compositors: Mutter (Gnome's compositor), Weston, and KWin.
-The code has also been tested under FreeBSD and the Sway Wayland compositor.
-CJK text-input methods, as well as dead and compose keys are supported.
-
-
-2 Wayland Support for FLTK
-==========================
-
-On Linux and FreeBSD systems, the FLTK library is by default configured so FLTK
-apps do all their windowing through the Wayland protocol, all their graphics
-with Cairo or EGL, and all text-drawing with Pango. If no Wayland compositor
-is available at run-time, FLTK apps fall back to using X11 for windowing.
-Cairo and Pango remain used for graphics and text, respectively.
-
-Environment variable FLTK_BACKEND can be used to control whether Wayland or
-X11 is used at run time as follows:
-- if FLTK_BACKEND is not defined, Wayland is used when possible, otherwise
- X11 is used;
-- if $FLTK_BACKEND equals "wayland", the library stops with error if no
- Wayland compositor is available;
-- if $FLTK_BACKEND equals "x11", the library uses X11 even if a Wayland
- compositor is available;
-- if $FLTK_BACKEND has another value, the library stops with error.
-
-On pure Wayland systems without the X11 headers and libraries, FLTK can be built
-with its Wayland backend only (see below).
-
-
- 2.1 Disabling Wayland for Backwards Compatibility
----------------------------------------------------
-
-Programs using X11 specific functions may need to disable the automatic
-detection of Wayland at runtime so they fall back to X11 only.
-
-It is possible to force a program linked to a Wayland-enabled FLTK library
-to use X11 in all situations by putting this declaration somewhere in the
-source code:
-
- FL_EXPORT bool fl_disable_wayland = true;
-
-FLTK source code and also X11-specific source code conceived for FLTK 1.3
-should run with a Wayland-enabled FLTK 1.4 library with this single change.
-
-
-Note 1: this may require some linker flags to enable exporting symbols
-from *executable* programs which FLTK uses to "read" the global symbol
-'fl_disable_wayland'. For GNU `ld` or any GNU compiler this would
-be "-rdynamic".
-
-
-Note 2: When building a user project with CMake 3.4 or higher, i.e. using
-
- cmake_minimum_required (VERSION 3.4)
-
-or any higher (minimum) CMake version users need to use at least one of
-the following techniques:
-
-Option 1: Set target property 'ENABLE_EXPORTS' on all executable
- targets that require to disable the Wayland backend.
- This is the preferred solution because it works per target.
-
- CMake example:
-
- set_target_properties(myprog PROPERTIES ENABLE_EXPORTS TRUE)
-
-Option 2: Set CMake policy CMP0065 to 'OLD' (i.e. pre-3.4 behavior).
- This is a quick solution but discouraged because setting
- CMake policies to 'OLD' is "deprecated by definition".
- CMake may issue warnings or ignore this in the future.
-
- CMake code:
-
- cmake_policy(SET CMP0065 OLD)
-
-Option 3: Set CMake variable 'CMAKE_ENABLE_EXPORTS' to 'TRUE'.
- Note: use this to be compatible with CMake < 3.27.
-
-Option 4: Set CMake variable 'CMAKE_EXECUTABLE_ENABLE_EXPORTS' to 'TRUE'.
- Note: new in CMake 3.27, ignored in older versions.
-
-Options 3 and 4 can be used as quick solutions like option 2 but these
-options affect all targets that are created while the CMake variable is
-set. As said above, option 1 should be preferred.
-
-This applies to the FLTK test and demo programs as well, hence we use
-option 1 in our build system.
-
-
- 2.2 Configuration
-------------------
-
-On Linux and FreeBSD systems equipped with the adequate software packages
-(see section 3 below), the default building procedure produces a Wayland/X11
-hybrid library. On systems lacking all or part of Wayland-required packages,
-the default building procedure produces a X11-based library.
-
-Use "-D FLTK_BACKEND_WAYLAND=OFF" with CMake to build FLTK for the X11
-library when the default would build for Wayland.
-
-CMake option FLTK_BACKEND_X11=OFF can be used to produce a Wayland-only
-library which can be useful, e.g., when cross-compiling for systems that
-lack X11 headers and libraries.
-
-The FLTK Wayland platform uses a library called libdecor which handles window decorations
-(i.e., titlebars, shade). On very recent Linux distributions (e.g., Debian trixie)
-libdecor is available as Linux packages (libdecor-0-dev and libdecor-0-plugin-1-gtk).
-FLTK requires version 0.2.0 or more recent of these packages.
-When libdecor is not available or not recent enough, FLTK uses a copy of libdecor
-bundled in the FLTK source code.
-FLTK equipped with libdecor supports both the client-side decoration mode (CSD) and the
-server-side decoration mode (SSD) as determined by the active Wayland compositor.
-Mutter (gnome's Wayland compositor) and Weston use CSD mode, KWin and Sway use SSD mode.
-Furthermore, setting environment variable LIBDECOR_FORCE_CSD to 1 will make FLTK use CSD
-mode even if the compositor would have selected SSD mode.
-
- 2.3 Known Limitations
-----------------------
-
-* A deliberate design trait of Wayland makes application windows ignorant of their exact
-placement on screen. It's possible, though, to position a popup window relatively to
-another window. This allows FLTK to properly position menu and tooltip windows. But
-Fl_Window::position() has no effect on other top-level windows.
-
-* With Wayland, there is no way to know if a window is currently minimized, nor is there any
-way to programmatically unset minimization of a window. Consequently, Fl_Window::show() of
-a minimized window has no effect.
-
-* Although the FLTK API to read from and write to the system clipboard is fully functional,
-it's currently not possible for an app to be notified of changes to the content of
-the system clipboard, that is, Fl::add_clipboard_notify() has no effect.
-
-* Copying data to the clipboard is best done when the app has focus. Any copy operation
-performed when the app did not get the focus yet does not change the clipboard. A copy
-operation performed when the app has lost the focus is successful only if the type of
-the copied data, that is, text or image, is the same as the last data type copied when
-the app had the focus.
-
-* Narrow windows with a titlebar are silently forced to be wide enough
-for the titlebar to display window buttons and a few letters of the title.
-
-* Text input methods are known to work well for Chinese and Japanese.
-Feedback for other writing systems would be helpful.
-
-* Using OpenGL inside Wayland windows doesn't seem to work on RaspberryPi hardware,
-although it works inside X11 windows on the same hardware.
-
-* Drag-and-drop initiation from a subwindow doesn't work under the KDE/Plasma desktop.
-That is most probably a KWin bug because no such problem occurs with 3 other
-Wayland compositors (Mutter, Weston, Sway). A workaround is proposed in issue #997
-of the FLTK github repository (https://github.com/fltk/fltk/issues/997).
-
-3 Platform Specific Notes
-=========================
-
-The following are notes about building FLTK for the Wayland platform
-on the various supported Linux distributions/OS.
-
-3.1 Debian and Derivatives (like Ubuntu, Mint, RaspberryPiOS)
--------------------------------------------------------------
-
-Under Debian, the Wayland platform requires version 11 (a.k.a. Bullseye) or more recent.
-Under Ubuntu, the Wayland platform requires version 20.04 (focal fossa) or more recent.
-
-These packages are necessary to build the FLTK library, in addition to those listed
-in section 2.1 of file README.Unix.txt :
-
- sudo apt-get install libpango1.0-dev
- sudo apt-get install libwayland-dev
- sudo apt-get install wayland-protocols
- sudo apt-get install libxkbcommon-dev
- sudo apt-get install libxinerama-dev # except if option FLTK_BACKEND_X11=off is used
- sudo apt-get install libdbus-1-dev # recommended to query current cursor theme
- sudo apt-get install libglew-dev # necessary to use OpenGL version 3 or above
- sudo apt-get install libdecor-0-dev # recommended if available and if in version ≥ 0.2.0
- sudo apt-get install libgtk-3-dev # highly recommended if libdecor-0-dev is not installed
-
-These packages allow to run FLTK apps under the Gnome-Wayland desktop:
-
- sudo apt-get install gnome-core
- sudo apt-get install libdecor-0-plugin-1-gtk # install if libdecor-0-dev is installed
-
-These packages allow to run FLTK apps under the KDE/Plasma-Wayland desktop:
-
- sudo apt-get install kde-plasma-desktop
-
-
-3.2 Fedora
-----------
-
-The Wayland platform is known to work with Fedora version 35 or more recent.
-
-These packages are necessary to build the FLTK library, in addition to
-package groups listed in section 2.2 of file README.Unix.txt :
-
- sudo yum install wayland-devel
- sudo yum install wayland-protocols-devel
- sudo yum install cairo-devel
- sudo yum install libxkbcommon-devel
- sudo yum install pango-devel
- sudo yum install mesa-libGLU-devel
- sudo yum install dbus-devel # recommended to query current cursor theme
- sudo yum install libdecor-devel # recommended, draws window titlebars
- sudo yum install gtk3-devel # highly recommended if libdecor-devel is not installed
- sudo yum install glew-devel # necessary to use OpenGL version 3 or above
-
-Package installation command: sudo yum install <package-name ...>
-
-
-3.3 FreeBSD
------------
-
-The Wayland platform is known to work with FreeBSD version 13.1 and the Sway compositor.
-
-These packages are necessary to build the FLTK library and use the Sway compositor:
-
- git autoconf pkgconf xorg urwfonts gnome glew seatd sway dmenu-wayland dmenu evdev-proto
-
-Package installation command: sudo pkg install <package-name ...>