Concepts - bakkeby/dusk GitHub Wiki

This section outlines some of the concepts used throughout this project and their definitions.

X

The X Window System (X11, or simply X) is a windowing system for bitmap displays and is common on Unix-like operating systems. This provides the basic framework for a GUI environment and it handles the drawing and moving of windows as well as the interaction with a mouse and keyboard.

Window

A window is the graphical representation of a program. This is what you see and interact with when using your computer.

Everything that you see on the screen are represented by a window; the applications, the bar, the systray, etc. This includes the root (background) window which starts out black unless it is painted with a wallpaper.

The exception to this would be the mouse pointer which is handled differently.

WM

A window manager is a program that is responsible for controlling the placement and appearance of windows within a windowing system. It can be part of a desktop environment or be used on its own.

dwm is a dynamic tiling window manager for X. Both dawn and dusk have their roots in dwm and all three are standalone window managers.

Desktop Environment

A desktop environment bundles together a variety of components to provide common graphical user interface elements such as icons, toolbars, wallpapers, and desktop widgets. Additionally, most desktop environments include a set of integrated applications and utilities.

Typically desktop environments provide their own window manager and come with a built-in compositor for handling transparency and special effects when moving or switching between windows.

Screen

Within the context of this project a screen refers to the physical display; this to avoid ambiguity when referring to a monitor.

Monitor

Within the context of this project a Monitor represents the drawable area of the screen and holds properties such as the size and position of the screen as well as per-monitor settings such as the window border width, whether the bar is shown and the gap size between windows.

A monitor can also have one or more status bars.

The monitor also holds additional information depending on what window manager is used.

Conceptually these per-monitor settings only makes a difference for the end user in a multi-monitor setup.

Client

Within the context of this project a Client represents a window that is managed by the window manager.

The client holds a series of properties such as the size and position of the window, various size restrictions, miscellaneous flags indicating state as well as references to other clients within the same workspace.

A set of clients is represented in form of a linked list, which means that one client has a reference to the next, and so on.

Layout

Within the context of this project a Layout controls how clients are arranged (tiled) respective to other visible clients.

Most layouts have a larger "master" area where the main window(s) of interest reside and one or more "stack" areas where the remaining windows are placed.

Floating clients stay on top of tiled clients and remain in their floating position regardless of how other clients are tiled.

Workspace

Within the context of this project a Workspace is that what holds (or owns) a set of clients.

A client can only belong to a single workspace and each workspace can have a different layout.

In dusk there are separate workspaces that are shared across all monitors.

It should be noted that although it goes unsaid dwm actually has workspaces, but this is transparent to the end user as the workspace is embedded in the Monitor.

Tags

In both dwm and dawn the Monitor holds the set of clients and it controls the display of them through the use of tags.

A client can be displayed on one or more tags.

One or more tags can be viewed at the same time.

This allows for a flexible way to bring clients into and out of view.

The pertag patch for dwm enables a separate layout (and other options) to be set on a per tag basis. It works by keeping a record of what layout etc. is used on each individual tag. When you switch to another tag the settings for that tag is copied across to the Monitor. This creates a form of hybrid between workspaces and tags while taking away from the purity and concept behind tags.

The idea behind the single_tagset patch for dwm is to share a single set of tags between multiple monitors. Conceptually the behaviour should be similar to how workspaces are presented in dusk.

View

Within the context of this project a View is the presentation of clients on a per-monitor basis.

In dwm and dawn a view can be for a single tag or multiple tags.

In dusk a view can be for a single workspace or multiple workspaces.

Bar

The (status) bar shows what tags or worspaces are being viewed, what layout is being used, the names of clients being shown as well as additional status info.

The bar itself is a separate window that is managed by the window manager.

If you plan to use a standalone / external bar such as polybar or lemonbar then the recommendation is that you look into using dwm with the IPC patch combined with the anybar patch. There is no explicit support for the use of external bars in neither of dusk and dawn.

Scratchpads

A Scratchpad, as the name suggests, is a notepad of sorts where you make quick notes or scribbles. When it comes to (tiling) window managers the term has become synonymous with an application that you bring into view when you need it using a keyboard shortcut and hide it using the same keyboard shortcut when you no longer need it.

Compositors

A composite manager (or compositor) handles additional rendering effects such as transparency and shadows for windows.

For window managers that do not provide their own compositing a standalone compositor can be used.

Picom, xcompmgr and compton are examples of standalone compositors that are often used with tiling window managers.

EWMH

Extended Window Manager Hints is an X Window System standard for communication between window managers and the windows they manage. These standards formulate protocols for the mediation of access to shared X resources. Communication occurs via X properties and client messages. The EWMH is a comprehensive set of protocols to implement a desktop environment.

Compared to a bare 6.2 dwm both dusk and dawn have fairly comprehensive EWMH support. This allows external applications like wmctrl to perform a range of operations like for example moving between tags or workspaces.