This was tested on a FRESH Raspbian Bookworm Lite installation. Proceed with caution.
EDIT 23/12/2023: Removed dead download link and added own release
EDIT 09/06/2024: Force wayland after install
EDIT 06/07/2024: Add Troubleshooting section
EDIT 11/09/2024: Rearrange config file
sudo apt update && sudo apt -y full-upgrade
sudo apt install wayfire seatd xdg-user-dirs
mkdir -p ~/.config
touch ~/.config/wayfire.ini
See https://raspberrypi.stackexchange.com/a/144867 ---> REBOOT
On systems older than Pi4: you need wayland=on
See https://www.raspberrypi.com/documentation/computers/configuration.html#wayland ---> REBOOT
wayfire
---> A black screen should appear with the mouse pointer at the center. Otherwise see Troubleshooting
Note: if you are controlling your Pi with a physical keyboard, you might not be able to terminate the process from the same session. This is because no keybindings exist in the config file yet. You can spawn a second tty with ctrl+alt+f2
and kill it from there.
sudo apt install wlr-randr
Rotate display: WAYLAND_DISPLAY=wayland-1 wlr-randr --output HDMI-A-1 --transform 180
(------------------------has to be launched from within the session. Keep reading---------------------------)
You'll need the wayfire-plugins-extra
package. Unfortunately it is not available in the Bookworm repos. You have two ways to install it [1]
- Choose your arch
- Decompress with
tar xf /path/to/wayfire-plugins-extra.tar.xz
- Each plugin comes with a .so and a an .xml file. You will need to copy those files to their correct paths:
/usr/lib/<your-arch-linux-gnu>/wayfire/<desired-plugin>.so
/usr/share/wayfire/metadata/<desired-plugin>.xml
- Install dev packages:
sudo apt install libglibmm-2.4-dev libglm-dev libxml2-dev libpango1.0-dev libcairo2-dev wayfire-dev libwlroots-dev libwf-config-dev
- Follow the instructions in https://github.com/seffs/wayfire-plugins-extra-raspbian/
- Each plugin comes with a .so and .xml file.
meson
should take care of the installation. Otherwise check if the following path exists for any new extra plugin:
ls /usr/lib/<your-arch-linux-gnu>/wayfire/<new-extra-plugin>.so
ls /usr/share/wayfire/metadata/<new-extra-plugin>.xml
I was only interested in hiding the mouse pointer. This can be accomplished with the hide_cursor
plugin. The same concept applies to the rest of plugins.
Open your ~/.config/wayfire.ini
file and paste the following:
[core]
plugins = \
autostart \
### We need to add the extra plugin to the list ###
hide-cursor
### We can tweak it to our liking. You will find the documentation inside of each plugin's XML file. ###
#[hide-cursor]
#toggle = <alt> KEY_Z
#hide_delay = 3
### Execute commands on compositor startup ###
[autostart]
# my_script = /path/to/script
rotate_display = WAYLAND_DISPLAY=wayland-1 wlr-randr --output HDMI-A-1 --transform 360
Adjust my_script = /path/to/script
to your needs. Don't forget to uncomment it.
wayfire -c ~/.config/wayfire.ini
---> See? No pointer!
sudo apt install libgl1-mesa-dri
sudo apt install mesa-utils
--> If you want to test the mesa drivers
sudo apt install vulkan-tools mesa-vulkan-drivers
sudo apt install xwayland
--> Lots of dependencies. Install if necessary
[1] Based on bjtheone's instructions
I am somewhat of a novice but I think I followed all these instructions. I see the paths of the hide curser .so and .xml. I created the config and added hide-curser config. But the curser never disappears. When I start wayfire I get the below. I probably did something wrong but I don't know where. Anyway to dumb it down more? HA. Thanks
swvalenti@raspberrypiwx:~ $ wayfire -c ~/.config/wayfire.ini II 09-04-24 18:12:46.202 - [src/main.cpp:280] Starting wayfire version 0.7.5 EE 09-04-24 18:12:46.203 - [libseat] [libseat/backend/seatd.c:308] Could not poll connection: Broken pipe II 09-04-24 18:12:46.203 - [libseat] [libseat/libseat.c:76] Backend 'seatd' failed to open seat, skipping II 09-04-24 18:12:46.203 - [libseat] [libseat/libseat.c:76] Backend 'logind' failed to open seat, skipping II 09-04-24 18:12:46.205 - [libseat] [seatd/seat.c:39] Created VT-bound seat seat0 II 09-04-24 18:12:46.205 - [libseat] [seatd/server.c:145] New client connected (pid: 1924, uid: 1000, gid: 1000) II 09-04-24 18:12:46.205 - [libseat] [libseat/backend/seatd.c:633] Started embedded seatd EE 09-04-24 18:12:46.205 - [libseat] [common/terminal.c:162] Could not open target tty: Permission denied EE 09-04-24 18:12:46.205 - [libseat] [seatd/seat.c:61] Could not open tty0 to update VT: Permission denied II 09-04-24 18:12:46.205 - [libseat] [seatd/seat.c:170] Added client 0 to seat0 EE 09-04-24 18:12:46.205 - [libseat] [common/terminal.c:162] Could not open target tty: Permission denied EE 09-04-24 18:12:46.205 - [libseat] [seatd/seat.c:72] Could not open terminal for VT 0: Permission denied EE 09-04-24 18:12:46.205 - [libseat] [seatd/seat.c:461] Could not open VT for client EE 09-04-24 18:12:46.206 - [libseat] [common/terminal.c:162] Could not open target tty: Permission denied EE 09-04-24 18:12:46.206 - [libseat] [seatd/seat.c:86] Could not open terminal to clean up VT 0: Permission denied II 09-04-24 18:12:46.206 - [libseat] [libseat/libseat.c:73] Seat opened with backend 'builtin' II 09-04-24 18:12:46.206 - [backend/session/session.c:109] Successfully loaded libseat session II 09-04-24 18:12:46.206 - [backend/backend.c:91] Waiting for a session to become active EE 09-04-24 18:12:56.216 - [backend/backend.c:114] Timeout waiting session to become active EE 09-04-24 18:12:56.216 - [backend/backend.c:352] Failed to start a DRM session EE 09-04-24 18:12:56.217 - [src/main.cpp:144] Fatal error: Segmentation fault EE 09-04-24 18:12:56.299 - #1 wf::print_trace(bool) ??:? addr2line: '?,ߥ': No such file addr2line: '?,ߥ': No such file EE 09-04-24 18:12:56.317 - #2 ??? ??? EE 09-04-24 18:12:56.346 - #3 wlr_backend_get_drm_fd ??:? EE 09-04-24 18:12:56.379 - #4 main ??:? EE 09-04-24 18:12:56.742 - #5 __libc_start_call_main ../sysdeps/unix/sysv/linux/aarch64/libc-start.c:74 EE 09-04-24 18:12:56.928 - #6 call_init ../csu/libc-start.c:128 EE 09-04-24 18:12:56.948 - #7 _start ??:? II 09-04-24 18:12:56.949 - [libseat] [seatd/client.c:471] Client disconnected EE 09-04-24 18:12:56.950 - [libseat] [common/terminal.c:162] Could not open target tty: Permission denied