dovetail is an opinionated window manager based on awesome.
-
The paradigm
- A set of specialized tiling layouts
- Simple, powerful tiling paradigm that unifies window and visibility management.
- Virtual desktops as dynamically created workspaces
- Spawn new workspaces and accompanying clients on the fly.
- Only the workspaces you're using exist. Allows fast and intuitive navigation.
- Largely ignores the mouse
- The cursor is hidden by default.
- Declarative configuration
- Minimal theming.
- Straightforward key and button binding.
- Client rules.
- A set of specialized tiling layouts
-
Requires a modern, DBus-capable Linux environment
-
RPM package available from copr.
Install with:
dnf copr enable jcrd/dovetail dnf install dovetail
Copy the default configuration from /etc/xdg/dovetail/config.lua
to
~/.config/dovetail/config.lua
and edit as needed.
See the comments in config.def.lua for descriptions of options and bindings.
Keys and buttons are bound to commands using this syntax: <meta>-<mod>-<key>
.
<meta>
can be one of:
M
(super key, typically the Windows key)A
(alt key)
<mod>
can be one of:
S
(shift key)C
(control key)
<key>
can be the name of any keysym as given by xev
.
For example, the keybinding M-S-Return
is triggered by pressing and holding
the super and shift keys, then pressing Return
.
Information widgets to be displayed in the bar are defined in the widgets
list
of the configuration file.
After installing dovetail, enable the service with
systemctl --user enable dovetail
.
Now, start a sessiond session
via your display manager.
See sessiond's Session management for information about running other services in this session.
The workspace paradigm in dovetail follows these rules:
- workspaces exist only if non-empty
- a
main
workspace always exists
Navigate to a new workspace using (by default) these keybindings:
Meta-2
to select the second workspace- press again to select the previously selected workspace, in this case
main
- press again to select the previously selected workspace, in this case
Meta-Shift-j
to select the next workspace- press again to wrap to the start of the workspace list, selecting
main
- press again to wrap to the start of the workspace list, selecting
Meta-Shift-k
to select the previous workspace- press again to wrap to the end of the workspace list, selecting
main
- press again to wrap to the end of the workspace list, selecting
Meta-Tab
to select the previously selected workspace, or the second if onlymain
exists
If these keys are pressed again, the second workspace will be removed since it does not contain clients.
Project-specific workspaces are configured in a .workspace
file in a project's directory.
The default keybinding M-w
opens a menu to create a new workspace based on the
selected project's .workspace
file.
These files are searched for in the paths of the workspace_search_paths
option.
In dovetail, there can be at most two visible tiled clients: the top client in the stack, and the master client. By default, a newly spawned client will enter the stack.
Interact with clients using (by default) these keybindings:
Meta-a
to set the focused client as the master, replacing the current masterMeta-o
to toggle maximized state, effectively placing all clients in the stackMeta-f
to toggle focal state, centering the master client above the stackMeta-s
to toggle focus between the master and the top stack clientMeta-j
to focus the next client in the stackMeta-k
to focus the previous client in the stackMeta-Shift-d
to close the focused client
Minimized clients will be displayed in the bar but will not be visible.
Handle minimization using (by default) these keybindings:
Meta-x
to minimize the focused clientMeta-S-x
to restore the most recently minimized clientMeta-z
to minimize the focused client when a new client is launched
dovetail can be configured to prevent the session from idling while a specific client has focus, for example a media player.
This is set up in the rules
section of the configuration file by setting
the inhibit
option of a rule to true
.
See awesome's client rule documentation for more information.
Print
takes a screenshotS-Print
takes a screenshot of the specified region
Screenshots are by default saved to ~/screenshots
. This location can be
customized with the option screenshot_directory
.
Ensure pomodoro
is part of the widgets list in the configuration
file, then use these keybindings:
M-t
starts or pauses the timerM-S-t
stops the timerM-S-r
restarts the timer
-
awesome == latest [runtime]
- dovetail currently tracks awesome's master branch
-
luarocks [build]
-
make [build]
-
bash [runtime]
-
pulseaudio [runtime]
-
rofi [runtime]
-
sessiond >= 0.6.0 [runtime]
-
wm-launch >= 0.5.0 [runtime]
-
ImageMagick [runtime,optional]
- for screenshot feature
-
upower [runtime,optional]
- for laptop battery stats feature
Ensure the above build dependencies are satisfied and run: make
.
Install with make install
.
This project is licensed under the MIT License (see LICENSE).