mirror of
https://github.com/swaywm/sway.git
synced 2026-06-13 14:33:19 -04:00
docs: document append_layout and sway-save-tree
Add sway(5) entry next to assign and a sway-save-tree(1) page; register the new manpage in meson.build.
This commit is contained in:
parent
cc4ba936e9
commit
b1ad1b3df3
3 changed files with 93 additions and 0 deletions
|
|
@ -127,6 +127,7 @@ if scdoc.found()
|
|||
'sway/sway-output.5.scd',
|
||||
'swaybar/swaybar-protocol.7.scd',
|
||||
'swaymsg/swaymsg.1.scd',
|
||||
'swaysavetree/sway-save-tree.1.scd',
|
||||
]
|
||||
|
||||
if get_option('swaynag')
|
||||
|
|
|
|||
|
|
@ -414,6 +414,46 @@ set|plus|minus|toggle <amount>
|
|||
The following commands may be used either in the configuration file or at
|
||||
runtime.
|
||||
|
||||
*append_layout* <path>
|
||||
Appends the container tree described by the JSON file at _path_ to the
|
||||
currently focused workspace. Useful for restoring a saved layout: each
|
||||
leaf container in the JSON is a _placeholder_ with a *swallows* array of
|
||||
matchers; when a window opens whose properties match an unmatched
|
||||
placeholder, sway installs that window into the placeholder's slot
|
||||
instead of the usual focus-based placement.
|
||||
|
||||
The format mirrors i3's, with one extension: in addition to i3's
|
||||
*class*, *instance*, *title*, *window_role*, and *window_type* keys
|
||||
(which target xwayland views), each *swallows* entry may include
|
||||
*app_id* to match Wayland views. The *machine* key is logged and
|
||||
ignored. All values are PCRE2 regex strings.
|
||||
|
||||
A minimal example targeting one Wayland and one xwayland window in
|
||||
a vertical split:
|
||||
|
||||
```
|
||||
[
|
||||
{
|
||||
"layout": "splitv",
|
||||
"nodes": [
|
||||
{ "swallows": [{ "app_id": "^foot$" }] },
|
||||
{ "swallows": [{ "class": "^Firefox$" }] }
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
The companion command-line tool *sway-save-tree*(1) generates such
|
||||
files from a live workspace. The i3-save-tree(1) concatenated-object
|
||||
output form is also accepted.
|
||||
|
||||
Floating placeholders (the *floating_nodes* JSON array) are not
|
||||
supported in this release; entries are skipped with a debug-log entry.
|
||||
Placeholder match runs before *assign* rules: an explicit slot wins
|
||||
over workspace assignment. *for_window* rules still run on the
|
||||
swallowed view after placement. If multiple placeholders match the
|
||||
same incoming view, the depth-first, document-order first match wins.
|
||||
|
||||
*assign* <criteria> [→] [workspace] [number] <workspace>
|
||||
Assigns windows matching _criteria_ (see *CRITERIA* for details) to
|
||||
_workspace_. The → (U+2192) is optional and cosmetic. This command is
|
||||
|
|
|
|||
52
swaysavetree/sway-save-tree.1.scd
Normal file
52
swaysavetree/sway-save-tree.1.scd
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
sway-save-tree(1)
|
||||
|
||||
# NAME
|
||||
|
||||
sway-save-tree - Dump a workspace's tiling tree as append_layout-compatible JSON.
|
||||
|
||||
# SYNOPSIS
|
||||
|
||||
_sway-save-tree_ --workspace <name>
|
||||
|
||||
# DESCRIPTION
|
||||
|
||||
Reads the live tree of the running sway instance over the IPC socket, walks
|
||||
the named workspace, prunes runtime fields, and emits a JSON document
|
||||
suitable for *swaymsg append_layout*(5). Each leaf view becomes a
|
||||
placeholder entry whose *swallows* array contains a regex-anchored match on
|
||||
the view's *app_id* (Wayland) or *class* / *instance* (xwayland).
|
||||
|
||||
The output is sent to standard output. Pre-existing placeholders that were
|
||||
loaded by *append_layout* and have not yet swallowed a window are echoed
|
||||
verbatim from their *swallows* array.
|
||||
|
||||
This is the sway counterpart of i3-save-tree(1).
|
||||
|
||||
# OPTIONS
|
||||
|
||||
*--workspace* <name>
|
||||
Name (or number, as a string) of the workspace to dump. Required.
|
||||
|
||||
*-h, --help*
|
||||
Show help and exit.
|
||||
|
||||
# LIMITATIONS
|
||||
|
||||
Floating windows are skipped in this release; only tiling children of the
|
||||
workspace are emitted. A warning is printed to stderr when floating windows
|
||||
are present.
|
||||
|
||||
# EXAMPLES
|
||||
|
||||
Save the layout of workspace 1 to a file, kill the running windows, and
|
||||
restore the layout:
|
||||
|
||||
```
|
||||
$ sway-save-tree --workspace 1 > /tmp/layout.json
|
||||
$ swaymsg [workspace=1] kill
|
||||
$ swaymsg append_layout /tmp/layout.json
|
||||
```
|
||||
|
||||
# SEE ALSO
|
||||
|
||||
*sway*(5), *sway*(1), *swaymsg*(1)
|
||||
Loading…
Add table
Add a link
Reference in a new issue