nferhat / fht-compositor

Experiment to write a full desktop environment in Rust.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

fht-compositor

fht-compositor is a Wayland compositor that aims to have simple window management that is easy to understand and get accommodated to, inspired by X11 window managers, mainly DWM and AwesomeWM.

Every output has its workspace set, each constituting of 9 workspaces. When using keybinds, their effects are scoped to the active output, and if needed, the active workspace, and the active workspace window.

Each workspace provides a dynamic tiling layout (currently supporting bottom stack and tile), with a system of "tiles" that contain windows.

preview_compress.mp4

preview video, showcasing some features of the compositor

Features

  • Can be ran user an X11 window, or under a TTY.
  • Workspaces with dynamic layout system
  • Some basic animations .
  • Window borders, with rounded corners support
  • Configuration:
  • Input configuration (global and per-device), with both keybinds and mousebinds.
  • Window rules (based on title/app_id/current workspace/etc.)
  • Output Screencast/Screen recording support through the XDG ScreenCast portal interface.

TO-DOs

  • Xwayland support (very unlikely, but you can use a Xwayland rootful window)
  • Session lock support

Install

  1. Building
cargo build --release
# Or, if you want to customize features (see Cargo.toml)
cargo build --no-default-features --features=egl,udev_backend --profile opt

# Optional, if you want xdg-screencast-portal feature
cd ./fht-share-picker
cargo build --release
  1. Installing required files
cp target/release/fht-compositor /somewhere/inside/PATH

# Optional, if you want xdg-screencast-portal feature
cp res/fht-compositor.portal $XDG_CONFIG_HOME/xdg-desktop-portal/portals/
cd ../fht-share-picker
cp target/release/fht-share-picker /somewhere/inside/PATH
# You can also configure portals.conf(5) (see man page), but it should work by default.
  1. Running. Note that fht-compositor should write a starter configuration inside $XDG_CONFIG_HOME/fht/compositor.ron, if not, you can copy over res/compositor.ron there.
  • When it comes to portals, the compositor itself is a portal, meaning that it will expose the required DBus interfaces without any intervention.

About

Experiment to write a full desktop environment in Rust.

License:GNU General Public License v3.0


Languages

Language:Rust 99.1%Language:GLSL 0.9%