Xfce Wiki

Sub domains
 

This is an old revision of the document!


Merge dialogs contextually

This link will be updated from time to time during development.

WIP: Screenshots

Unified Xfwm4 Settings

  • [ Style ] (if xfce4-settings is installed)
  • [ Keyboard ] (if xfce4-settings is installed)
  • Focus
    • Focus model
    • New window focus
    • Raise on focus
    • Raise on click
    • Focus stealing/hints
    • When a window raises itself
  • Placement (+ xfwm4 advanced)
    • Windows snapping
    • Wrap workspaces when reaching the screen edge
    • Hide content of windows
    • Double click action
    • Min size to trigger smart placement
    • By default, place windows:
  • Cycling (as is)
  • Compositor (as is)
  • Accessibility (as is)

Workspace Settings

  • General
  • Margins
  • Behavior (xfwm4 workspaces)

Keyboard Settings

  • Behavior
  • Application Shortcuts
  • Window Manager Shortcuts (if xfwm4 is installed)
  • Layout

Appearance Settings

  • Style
  • Icons
  • Window Borders (if xfwm4 is installed)
  • Fonts
  • Settings

Implementation

Different implementations are possible. Below are suggestions open for discussion.

Detection

How should xfwm4 be detected:

  • running instance (detect the current running window manager)
  • xfconf channel presence
  • xfwm4 binary included in PATH

How should xfce4-settings be detected:

  • running instance of xfsettingsd (part of the session)
  • xfconf channel presence
  • xfce4-keyboard-settings and xfce4-appearance-settings present in PATH (or .desktop file)

libxfce4kbd

xfwm4_shortcut_values in libxfce4kbd-private/xfce-shortcuts-xfwm4.c needs to match xfwm4 src/settings.h KEY enum. Meaning libxfce4kbd can't be updated independently from xfwm4 in case of a shortcut change. (Appending is possible)

Possible solutions:

  • Accept we can only append (add a comment)
  • Add a mapping table to xfwm4
  • Move the mapping to xfwm4 and solve the xfce4-keyboard-settings in a different way
  • Add the enum to libxfce4kbd and use static linking on the mappings
  • Don't use the enum, use g_intern_string or GQuark

Embed xfwm's tabs

Use a GtkPlug/GtkSocket setup to embed the specific xfwm tabs into the settings dialogs. It would be similar to how the settings manager embeds processes and keep coupling loose for new shortcut/settings updates.

Discussion

  • The next logical move seems to be a merge of the xfwm4 and xfwm4-tweaks dialogs, however, this bears a few problems:
    • There'd be 2 tabs with the same title (Focus), they'd either have to be merged or one of them renamed
    • There'd be 8 tabs (or 7, if Focus tabs are merged) in this dialog, which seems a bit hefty