First commit
This commit is contained in:
commit
3e88db9045
5 changed files with 191 additions and 0 deletions
74
README.md
Normal file
74
README.md
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
Mako Ansible role
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
This role install and configure [Mako](https://github.com/emersion/mako)
|
||||||
|
notifiction daemon.
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
This role needs two variables for creating Mako configuration file
|
||||||
|
|
||||||
|
* `mako_options`: list of lkey-value abour default Mako options;
|
||||||
|
* `mako_rules`: list of mako criteria-driven Mako configuration;
|
||||||
|
|
||||||
|
The former ils a simple list like in example below:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
mako_options:
|
||||||
|
max_history: 5
|
||||||
|
sort: -time
|
||||||
|
on-button-left:
|
||||||
|
on-button-middle:
|
||||||
|
on-button-right:
|
||||||
|
on-touch:
|
||||||
|
on-notify:
|
||||||
|
# [...]
|
||||||
|
```
|
||||||
|
|
||||||
|
The latter is a little bit more complex:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
mako_rules:
|
||||||
|
- criterias:
|
||||||
|
- field: app-name
|
||||||
|
value: Firefox
|
||||||
|
options:
|
||||||
|
border-color: '#FF0000'
|
||||||
|
- criterias:
|
||||||
|
- field: app-name
|
||||||
|
value: Thunderbird
|
||||||
|
- field: urgency
|
||||||
|
value: low
|
||||||
|
options:
|
||||||
|
border-color: '#00FFFF'
|
||||||
|
```
|
||||||
|
|
||||||
|
Each rule is divided into 2 parts: *criterias* and *options*. *Criterias*
|
||||||
|
contains list of field (selector) and values to target notifications. *Options*
|
||||||
|
contains list of options to apply on targeted notifications.
|
||||||
|
|
||||||
|
## 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
|
38
defaults/main.yml
Normal file
38
defaults/main.yml
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
---
|
||||||
|
mako_options:
|
||||||
|
max_history: 5
|
||||||
|
sort: -time
|
||||||
|
on-button-left:
|
||||||
|
on-button-middle:
|
||||||
|
on-button-right:
|
||||||
|
on-touch:
|
||||||
|
on-notify:
|
||||||
|
font: monospace 10
|
||||||
|
background-color: '#285577FF'
|
||||||
|
text-color: '#FFFFFFFF'
|
||||||
|
width: 300
|
||||||
|
height: 100
|
||||||
|
outer-margin: 10
|
||||||
|
padding: 5
|
||||||
|
border-size: 2
|
||||||
|
border-color: '#4C7899FF'
|
||||||
|
border-radius: 0
|
||||||
|
progress-color: 'over #5588AAFF'
|
||||||
|
icons: 1
|
||||||
|
max-icon-size: 64
|
||||||
|
icon-path:
|
||||||
|
icon-location: left
|
||||||
|
markup: 1
|
||||||
|
actions: 1
|
||||||
|
history: 1
|
||||||
|
format: '<b>%s</b>\n%b'
|
||||||
|
text-alignement: left
|
||||||
|
default-timeout: 0
|
||||||
|
ignore-timeout: 0
|
||||||
|
group-by: none
|
||||||
|
max-visible: 5
|
||||||
|
output:
|
||||||
|
layer: top
|
||||||
|
anchor: top-right
|
||||||
|
|
||||||
|
mako_rules: []
|
15
files/mako.service
Normal file
15
files/mako.service
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Lightweight Wayland notification daemon
|
||||||
|
Documentation=man:mako(1)
|
||||||
|
PartOf=graphical-session.target
|
||||||
|
After=graphical-session.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=dbus
|
||||||
|
BusName=org.freedesktop.Notifications
|
||||||
|
ExecCondition=/bin/sh -c '[ -n "$WAYLAND_DISPLAY" ]'
|
||||||
|
ExecStart=/usr/bin/mako
|
||||||
|
ExecReload=/usr/bin/makoctl reload
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=sway-session.target
|
44
tasks/main.yml
Normal file
44
tasks/main.yml
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
---
|
||||||
|
- name: Install Mako package
|
||||||
|
ansible.builtin.package:
|
||||||
|
name: mako
|
||||||
|
state: present
|
||||||
|
become: true
|
||||||
|
|
||||||
|
- name: Create Mako config dirs
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: '{{ ansible_user_dir ~ "/.config/mako" }}'
|
||||||
|
state: directory
|
||||||
|
mode: 0750
|
||||||
|
owner: '{{ ansible_user_uid }}'
|
||||||
|
group: '{{ ansible_user_gid }}'
|
||||||
|
|
||||||
|
- name: Render templates for Mako config file
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: mako.j2
|
||||||
|
dest: '{{ ansible_user_dir}}/.config/mako/config'
|
||||||
|
owner: '{{ ansible_user_uid }}'
|
||||||
|
group: '{{ ansible_user_gid }}'
|
||||||
|
lstrip_blocks: yes
|
||||||
|
trim_blocks: yes
|
||||||
|
mode: 0640
|
||||||
|
|
||||||
|
- name: Copy Mako systemd service file
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: 'mako.service'
|
||||||
|
dest: '{{ ansible_user_dir }}/.config/systemd/user/'
|
||||||
|
mode: 0640
|
||||||
|
register: service_file
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: Reload Systemd daemon
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
scope: user
|
||||||
|
daemon-reload: true
|
||||||
|
|
||||||
|
- name: Activate Mako service
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: 'mako.service'
|
||||||
|
scope: user
|
||||||
|
state: started
|
||||||
|
when: service_file is changed
|
20
templates/mako.j2
Normal file
20
templates/mako.j2
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{% if mako_options is defined %}
|
||||||
|
{% for option, value in mako_options.items() %}
|
||||||
|
{{ option }}="{{ value }}"
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% if mako_rules %}
|
||||||
|
|
||||||
|
{% for rule in mako_rules %}
|
||||||
|
[ {%- for criteria in rule['criterias'] %}
|
||||||
|
{{ criteria.field ~ '="' ~ criteria.value ~ '"' }}
|
||||||
|
{%- if not loop.last %}{{ ' ' }}{% endif %}
|
||||||
|
{%- endfor %}]
|
||||||
|
{% for option, value in rule['options'].items() %}
|
||||||
|
{{ option }}={{ value }}
|
||||||
|
{% endfor %}
|
||||||
|
{% if not loop.last %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
Loading…
Add table
Add a link
Reference in a new issue