Zum Inhalt springen

Mako: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
KKeine Bearbeitungszusammenfassung
 
Zeile 72: Zeile 72:
}}
}}


Die Breite des Benachrichtigungsfensters kann mittels {{ic|width=N}} angegeben werden.
Die Breite des Benachrichtigungsfensters kann mittels {{ic|1=width=N}} angegeben werden.


{{hc|1=~/.config/mako/config|2=
{{hc|1=~/.config/mako/config|2=

Aktuelle Version vom 14. März 2025, 16:16 Uhr

mako ist ein leichtgewichtiges Benachrichtigungsprogramm für Wayland-Compositoren, das die FreeDesktop Notifications Specification implementiert und sich umfangreich konfigurieren und grafisch gestalten lässt.

Installation

Das Programm ist als mako in extra verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S mako

mako wird bei Bedarf automatisch mittels D-Bus aufgerufen wenn ein Programm eine Benachrichtigung anzeigen will. Man kann mako allerdings auch explizit starten, wenn man Zum Beispiel mehrere verschiedene Benachrichtigungssysteme installiert hat, und gezielt mako verwenden will.

Hierzu kann man wahlweise mako in den Autostart des Compositors setzen, oder im Benutzerkontext den systemd-Service starten.

systemctl --user enable --now mako

Sofern man nur ein Benachrichtigungssystem benutzt, reicht die installation allerdings aus.

Für die Nutzung unter Sway wird empfohlen, exec mako in die Konfiguration zu schreiben.

Verwendung

Die einfachste Art der Verwendung von mako ist das simple Senden einer Benachrichtigung, zum Beispiel mittels notify-send aus dem Paket libnotify.

notify-send "Ich bin eine Benachrichtigung"

Diese Benachrichtigung wird standardmäßig oben rechts in der Ecke des aktiven Monitors auf allen Arbeitsflächen angezeigt. Durch anklicken der Benachrichtigung verschwindet diese wieder.

Je nachdem, in wie weit die sendenden Programme die FreeDesktop Notifications Specification umsetzen, können zudem weitere Dinge mit übergeben werden. Gemäß Spezifikation werden Icons in Standardpfaden automatisch erkannt, wenn man nur ihren Namen angibt.

notify-send -i archlinux-logo "Beispiel fürs Wiki" "Ich bin eine Benachrichtigung mit Titel, Icon, und etwas Text."

mako unterstützt standardmäßig auch einfache Textformatierung. Die optional per Spezifikation definierten Bilder und Links im Benachrichtigungstext werden von mako derzeit allerdings nicht unterstützt.

notify-send -i archlinux-logo "Beispiel fürs Wiki" "Ich bin eine Benachrichtigung mit Titel, Icon, und etwas Text."

makoctl

Das mitgelieferte Tool makoctl erlaubt das Steuern von mako zur Laufzeit, sowie die Interaktion mit diesem.

makoctl list       # Zeigt alle aktuellen Benachrichtigungen JSON-formatiert an
makoctl dismiss    # Bestätigt und entfernt die letzte Benachrichtigung
makoctl dismiss -a # Bestätigt und entfernt alle Benachrichtigungen
makoctl restore    # Stellt die letzte Benachrichtigung wieder her
makoctl reload     # Aktualisiert die Konfiguration

makoctl verfügt noch über diverse weitere Funktionen, dies sind allerdings für den Alltagsgebrauch die wichtigsten.

Konfiguration

Die Konfiguration von Mako geschieht Userbezogen in ~/.config/mako/config.

mako lädt die Konfiguration nur beim ersten starten (im Regelfall also bei der ersten per D-Bus gesendeten Benachrichtigung). Man kann während des Testens mittels makoctl reload die Konfiguration neu laden. Konfigurationsänderungen werden dabei automatisch auf aktive Benachrichtigungen angewendet.

Da die Konfiguration sehr umfangreich möglich ist, sei hier nur auf einige Optionen eingegangen.

Text wird abgeschnitten (Höhe und Breite)

Standardmäßig zeigen Benachrichtigungen nur eine gewisse Menge des Benachrichtigungstextes an, weil die Benachrichtigungsfenster in der Höhe beschränkt sind.

notify-send "Benachrichtigung mit viel Text" "Diese Benachrichtigung enthält sehr langen Text, der am Ende in der Standardkonfiguration einfach abgeschnitten wird, da das Benachrichtigungsfenster eine gewisse maximale Höhe hat."

Gerade wenn man nicht die Standardtextgröße benutzt kann es passieren, dass neben dem Titel nur einige wenige Wörter angezeigt werden. Dies kann man umgehen, indem man mako die maximale Benachrichtigungfesterhöhe mitteilt.

~/.config/mako/config
height=2000

Hier werden 2000 Pixel als maximale Höhe gesetzt, auch lange Benachrichtigungen werden damit vollständig angezeigt.

[...]

Die Breite des Benachrichtigungsfensters kann mittels width=N angegeben werden.

~/.config/mako/config
width=500

Anders als die Höhe ist die Breite nicht der Maximalwert.

notify-send "Breite Benachrichtigung" "Das Benachrichtigungsfenster ist 500 Pixel breit."

Positionierung und Anzeige der Benachrichtigungsfenster

Standardmäßig werden die Benachrichtigungsfenster oben rechts ansortiert, wobei die neueste Benachrichtigung ganz oben steht. Es werden zudem standardmäßig die letzten 5 Benachrichtigungen angezeigt. Die Benachrichtigungen sind zudem nicht gruppiert.

notify-send --app-name foo "Benachrichtigung 1 von foo"
notify-send --app-name foo "Benachrichtigung 2 von foo"
notify-send --app-name foo "Benachrichtigung 3 von foo"
notify-send --app-name bar "Benachrichtigung 4 von bar"
notify-send "Benachrichtigung 5"
notify-send "Benachrichtigung 6"
notify-send "Benachrichtigung 7"
notify-send "Benachrichtigung 8"

Mittels diesem Set an Konfigurationsoptionen lässt sich die Anzeige anpassen.

~/.config/mako/config
# Sortierung nach App-Name
group-by=app-name

# Zeige alle benachrichtigungen
max-visible=-1

# Zeige Benachrichtigungen als Overlay
layer=overlay

# Zentriere Benachrichtigungen oben mittig
anchor=top-center

Bei gleichem Set an Benachrichtigungen sieht die Anzeige nun so aus

[...]

Alle Benachrichtigungen mit dem App-Namen „foo“ werden Gruppiert, genau so wie die Fenster ohne Angabe des App-Namens gruppiert werden (notify-send trägt sich selbst ein). Gruppierte Benachrichtigungen zeigen zudem die Anzahl der Benachrichtigungen in dieser Gruppe an, bei jedem Klick wird automatisch die nächste Benachrichtigung gezeigt.

Mittels layer wird definiert, wo der Compositor die Fenster in relation zu normalen Fenstern darstellen soll. Mögliche Werte sind background, bottom, top, und overlay. Mit overlay werden – sofern vom Compositor unterstützt – Benachrichtigungen noch über Fenstern im Vollbildmodus angezeigt.

Zudem setzt die Beispielkonfiguration noch, dass die Ausrichtung der Benachrichtigungen oben mittig stattfinden soll. Mögliche Werte sind hier top-, center-, und bottom- in Kombination mit left, center, und right für die horizontale Ausrichtung. Statt center-center wird center benutzt.

Anzeige von Icons anpassen

Icons werden immer aus /usr/share/icons/hicolor und /usr/share/pixmaps geladen und angezeigt. Will man zusätzlich noch eigene Icons laden, so kann man die Pfade in der Konfiguration entsprechend hinterlegen. Auch besteht die Möglichkeit, die Maximalgröße von Icons beschränken.

~/.config/mako/config
icon-path=/pfad/zu/de/icons/:/anderer/pfad:/noch/ein/pfad:...:...
max-icon-size=13

Hierbei reicht es jedoch nicht, mittels makoctl reload die Konfiguration neu zu laden. Die neue Icongröße wird nur für neue Benachrichtigungen nach dem Neuladen der Konfiguration benutzt.

Mittels icon-location kann zudem die Seite des Icons bestimmt werden: left, right, top, und bottom. Dabei ist das Icon an der jeweiligen Seite immer zentriert. Eine Ausrichtung des Icons nach oben links zum Beispiel ist nicht möglich.

Mittels icons=0 kann die Anzeige von Icons zudem ganz unterdrückt werden.

notify-send -i archlinux-logo "Benachrichtigung mit Icon"

Im Beispiel wird das Icon auf 13 Pixel skaliert, was der Schriftgröße entspricht.

Inhaltsanzeige der Benachrichtigung anpassen

Mako zeigt standardmäßig nur das Icon, den Benachrichtigungstitel, und den Benachrichtigungstext an.

notify-send -i archlinux-logo -a foobar -u low -c Test "Benachrichtigung Details" "Dies ist eine Benachrichtigung, zu der mehrere Details übermittelt wurden."
notify-send -u critical "ACHTUNG" "Kritische Benachrichtigung"
notify-send --app-name foo "Benachrichtigung 1 von foo"
notify-send --app-name foo "Benachrichtigung 2 von foo"
notify-send --app-name foo "Benachrichtigung 3 von foo"
notify-send --app-name bar "Benachrichtigung 4 von bar"

Man kann mittels format und den entsprechenden Variablen die Anzeige individuell gestalten. Die Gestaltung (bzw. fast die komplette Konfiguration) kann zudem von mehreren Kriterien abhängig sein. Wenn kein Kriterium

~/.config/mako/config
format=<b>%s</b>\n<i>%a</i>\n\n%b
group-by=app-name

[grouped]
format=<b>%s</b>\n<i>%gx %a</i>

[urgency=low]
format=<u>Nicht so wichtig</u>\n%s\n%b
background-color=#babdb6
text-color=#2e3436
icons=0

[urgency=critical]
background-color=#dd0000
text-color=#000000
font=DejaVu Sans 15
width=400
height=2000

Dies setzt verschiedene Optionen, jeweils unter unterschiedlichen Kriterien, um die jeweiligen Benachrichtigungen unterschiedlich zu formatieren.

[...]

In der Manpage (Sektion 5) werden noch diverse weitere Möglichkeiten der Formatierung und kriterienabhängigen Darstellung aufgezeigt.

Weblinks