Xfce Wiki

Sub domains
 

Xfce 4.16 CSD Release Preview (Proposal)

This is an alternative proposal to the Xfce CSD proposals.

Proposal

Xfce 4.16 extends CSD support while addressing GTK CSD concerns, with the Xfce CSD implementation being an optional release preview. To achieve this:

  • Xfce 4.16 adds optional, disabled-by-default, support for the CSD titlebars.
  • The optional CSD support is tested and release ready for each component. It will not be default, but the user should have the option to use the CSD decorations if they choose to.
  • Toggling Xfce CSD settings should be possible and easily discoverable from within the Xfce Settings Manager.
  • Using GTK_CSD=0 should revert the layout to classic Xfce.
  • And finally, we should explore and implement ways to improve the current state of CSD titlebars and headerbars in Xfce (see the frequently voiced concerns below).

Xfce CSD continues to have the same implementation described in Scenario 2, but optional as described above:

  • Replacing XfceTitledDialog with a HeaderBar containing “[icon] [title|subtitle] [window controls]”
  • Re-designing those apps that seem like low-hanging fruit (Taskmanager?)
  • Using CSD only as simple window decorations for applications

Rationale

The feedback from many of our active contributors and users has been largely negative regarding the recent announcement to move to Scenario 2: Full CSD, not full HeaderBar. In an attempt to not alienate our team and to improve Xfce, our first steps should be to alleviate the existing concerns and improve usability within Xfce. Some frequently voiced concerns are:

  • Applications utilizing headerbar layouts are difficult to grab and move. Hamburger menus reduce usability and discoverability.
  • CSD windows look different than those managed by Xfwm. Even when using a theme that supports both, there is no consistency.
  • CSD shadows are drawn differently than those by a compositor. Some compositors display double shadows for CSD windows.
  • Window controls differ with CSD windows.
  • Window rolling is not possible with CSD windows.

Resources

  • headeraway, which catches calls to the GtkHeaderBar API and converts it into a toolbar.
  • gtk3-nocsd, a GTK hack that prevents CSDs from being loaded in the current user session.