178 lines
4.2 KiB
Markdown
178 lines
4.2 KiB
Markdown
Sway Ansible role
|
|
------------------
|
|
|
|
Role to configure Sway window manager
|
|
|
|
## Variables
|
|
|
|
This role have multiples variables for managing all configurations, all
|
|
variables are initalized to reproduce default configuration.
|
|
|
|
There is no bar configured by this role because it is out of his scope. A futur
|
|
role will be created for installing and configuring Waybar.
|
|
|
|
### Packages
|
|
|
|
`sway_packages` list packages to install.
|
|
|
|
### variables
|
|
|
|
`sway_variables` contains a list of variable needed for configuration files like
|
|
`$term` or `$menu`
|
|
|
|
```yaml
|
|
sway_variables:
|
|
- name: '$term'
|
|
value: 'foot'
|
|
- name: '$menu'
|
|
value: 'dmenu_path | dmenu | xargs swaymsg exec --'
|
|
```
|
|
|
|
### output
|
|
|
|
Manage displays and options
|
|
|
|
```yaml
|
|
sway_outputs:
|
|
- id: 'all'
|
|
name: '*'
|
|
options:
|
|
bg: '/usr/share/backgrounds/sway/sway_wallpaper_blue_1920x1080.png fill'
|
|
``````
|
|
This example reproduce default beaviour:
|
|
|
|
* `id`: display id, useful for (future) kanshi configuration role
|
|
* `name`: name of display, this can be found with `swaymsg -t get_outputs`
|
|
* `options`: list of options, format: `<option>: <value>`
|
|
|
|
### Input
|
|
|
|
Manage input configuration
|
|
|
|
```yaml
|
|
sway_inputs:
|
|
- name: '*'
|
|
options:
|
|
- option: 'xkb_layout'
|
|
value: 'us'
|
|
- option: 'xkb_variant'
|
|
value: 'altgr-intl'
|
|
```
|
|
|
|
* `name`: name of input, can be found with `swaymsg -t get_inputs`
|
|
* `options`: list of options
|
|
|
|
### Keybinding
|
|
|
|
Keybinding require two variables: `sway_keys_variables` and `sway_keybindings`.
|
|
`sway_keys_variables` defined variables for keybinding. Because configuration
|
|
file checking throw an error if the first argument of `bindsym` contains a
|
|
variable not defined is the file (because `10-variables.config` is not included
|
|
when testing)
|
|
|
|
```yaml
|
|
sway_keys_variables:
|
|
- name: '$left'
|
|
value: 'h'
|
|
- name: '$down'
|
|
value: 'j'
|
|
- name: '$up'
|
|
value: 'k'
|
|
- name: '$right'
|
|
value: 'l'
|
|
- name: '$mod'
|
|
value: 'Mod4'
|
|
```
|
|
|
|
```yaml
|
|
sway_keybindings:
|
|
- mode: 'normal'
|
|
bindings:
|
|
- bindsym: '$mod+Return'
|
|
action: 'exec $term'
|
|
- bindsym: '$mod+Shift+q'
|
|
action: 'kill'
|
|
# ...
|
|
- mode: 'resize'
|
|
bindings:
|
|
- bindsym: '$left'
|
|
action: 'resize shrink width 10 px or 10 ppt'
|
|
- bindsym: '$down'
|
|
action: 'resize grow height 10 px or 10 ppt'
|
|
# ...
|
|
```
|
|
|
|
You can define different modes, `normal` mode is mandatory, others are
|
|
optionnals. This example reflect the default configuration with `normal` and
|
|
`resize` modes. `bindings` contains a list of keyboard shortcuts and actions
|
|
|
|
### theme configuration
|
|
|
|
This part is divided in two parts, one for theme options, one for colors
|
|
|
|
```yaml
|
|
sway_theme_parameters:
|
|
default_orientation: 'auto'
|
|
workspace_layout: 'default'
|
|
# ...
|
|
|
|
sway_theme_colors:
|
|
focused:
|
|
border: '#4c7899'
|
|
backgound: '#385579'
|
|
text: '#ffffff'
|
|
indicator: '#2efef4'
|
|
child_border: '#285577'
|
|
focused_inactive:
|
|
# ...
|
|
```
|
|
|
|
`theme_parameters` contains a list of key:value, each `key` represent a
|
|
configuration parameter, `value` represent ... his value.
|
|
|
|
`theme_colors` represent a list of client classes, each classe contains list of
|
|
colors. Check sway manual with `man 5 sway`.
|
|
|
|
### Workspaces
|
|
|
|
Like theming, there is two list for two puposes:
|
|
|
|
1. The first to manage workspaces name
|
|
2. The second to manage assign and rules:
|
|
|
|
|
|
``` yaml
|
|
sway_workspaces:
|
|
1: '1'
|
|
2: '2'
|
|
3: '3'
|
|
# ...
|
|
sway_rules:
|
|
- verb: 'assign'
|
|
query: '[app_id="^firefox$"]'
|
|
action: 3
|
|
- verb: 'assign'
|
|
query: '[app_id="KeePassXC$"]'
|
|
action: 3
|
|
# ...
|
|
- verb: 'for_window'
|
|
query: '[app_id="org.pwmt.zathura"]'
|
|
action: 'floating enable'
|
|
- verb: 'for_window'
|
|
query: '[app_id="^launcher$"]'
|
|
action: 'floating enable, resize set 800px 400px'
|
|
# ...
|
|
```
|
|
|
|
`sway_workspace` represent a list of workspaces defined by a *key* that
|
|
represent the keyboard key to press with `$mod` to access this workspace and a
|
|
*value* that represent the workspace name.
|
|
|
|
`sway_rules` reprensents the list of rules for managing windows :
|
|
|
|
* `verb`: type of rule - `assign` to assign a program to a specific
|
|
workspace and `for_windows` for managing windows rules (float, size etc.)
|
|
* `query`: witch windows to target
|
|
* `action`: what you want to do with window
|
|
|
|
Sway manual can be useful : `man 5 sway`
|