Releases: nferhat/fht-compositor
v0.1.1
fht-compositor
is a Wayland compositor that aims to have simple window management inspired by X11 window managers, mainly DWM and AwesomeWM.
Not a lot of groundbreaking stuff, but still some improvements over the previous release.
fht-share-picker
moved out
Due to dependency conflicts (between egui
and iced
dependencies), fht-share-picker
moved out to a different repository, and with it got a rewrite! I personally really like it, since it describes what output you are going to use better.
xdg-activation
support
I actually forgot to implement this protocol, and left a TODO message in the implementation. Well, now its working! Example here is with pcmanfm focusing its child window.
xdg-activation-preview.mp4
Interactive window resizing
For quite some time, we supported dragging a tile out of its usual area in order to swap it with another one, in this release, I am really happy to announce that we now have the resizing of tiles! This was quite a tricky to implement, as we are in a tiled environment, meaning that every other window that is managed by the workspace layout needs to adapt.
Another challenge is to actually make resizing any tile, in any direction, be sensible and logical for the user. A tile can only grow its own stack (in our case, we have the master and slave stack(s)). This is possibly by tweaking both the master width factor (commonly known as mwfact) and the cfact (a proportion of how much the tile should take space relative to its siblings)
On the actual implementation, I wrote custom code that adapts the mouse delta position to make this happen, but it was 100% worth it! Take a look at the result:
interactive-resize.mp4
Other fixes and improvements
- New
insert_window_strategy
option, to decide where should we insert a window inside a workspace 5a462e3 - New
focused_window_opacity
andnormal_window_opacity
options. 2d386b9 - Various fixes to focusing, on cases where a layer-shell/window dies 0c27ad7, 26c638d
- Fix parent workspace detection db206cf
- Re-implement fullscreening 651d27a
- Re-implement some xdg-shell requests for maximizing/fullscreening ac6279b
- Egui can now get the
GL_MAX_TEXTURE_SIZE
value from the renderer b151c01 - Remove egui's ability to get keyboard input, as this could lock up input 186456e
0.1.0
The first official release of fht-compositor, finally!
fht-compositor
is a Wayland compositor built using the rust language, with a window management system inspired by DWM and AwesomeWM; in other words, we have static workspaces managed in a single set. Each output has its own workspace set. Each workspace tiles dynamically its windows based on a layout, and some parameters like the size percentage of the master width area, and the number of master clients
Even though this is the first release, we got quite a good part of the basics down
- Can be spawned nested into another compositor (using an X11 window), or from a TTY
- Core protocols supported + Additional wp/wlr ones:
-wlr_screencopy
for legacy screen recording/screen shotting clients
-xdg_decoration
to force clients to use SSD/CSD
-wlr_layer_shell
for your beautiful panels and overlays
- Very preliminarywp_fractional_scale
support
-wp_security_context
+wlr_data_control
- In addition to these protocols, we have some nice-to-have features
- Output recording support via the XDG screen cast portal (version 5 is supported, restore tokens soon)
- Customizable window borders, with rounded corner support, and gradient borders!
- Window rules to organize your workspace(s)
- Other debugging features: debug overlay, damage drawing, etc.
With this said, I'd like to thank the following projects for code and helping me figure out how to handle Wayland stuff properly:
- pop-os/cosmic-comp: Mainly for udev backend and some rendering logic
- YaLTeR/niri: PipeWire code for screencast portal + some rendering logic
- pinnacle-comp/pinnacle:
wlr_screencopy
stuff (the good way)