186 lines
4.9 KiB
Markdown
186 lines
4.9 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 one variables: `sway_keys_variables`.
|
|
|
|
```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`
|
|
|
|
## Licence
|
|
|
|
This script is released under le [MIT licence][l_mit]
|
|
|
|
Copyright © 2021 Yorick Barbanneau
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
this software and associated documentation files (the "Software"), to deal in
|
|
the Software without restriction, including without limitation the rights to
|
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
|
subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice (including the next
|
|
paragraph) shall be included in all copies or substantial portions of the
|
|
Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
[l_mit]:https://opensource.org/licenses/mit-license.php
|