Nächste: , Vorige: , Nach oben: Persönliche Dienste   [Inhalt][Index]


13.3.15 Sway-Fensterverwaltung

Im Modul (gnu home services sway) wird home-sway-service-type angeboten, ein Persönlicher Dienst, um die Sway-Fensterverwaltung für Wayland deklarativ zu konfigurieren.

Hier sehen Sie ein Beispiel, wie so ein Dienst aussehen und konfiguriert werden kann, wenn Sie ihn im services-Feld innerhalb von home-environment in Ihrer Persönlichen Konfiguration eintragen:

(service home-sway-service-type
         (sway-configuration
          (gestures
           '((swipe:3:down . "move to scratchpad")
             (swipe:3:up   . "scratchpad show")))
          (outputs
           (list (sway-output
                  (identifier '*)
                  (background (file-append sway
                                           "\
/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png")))))))

Obiges Beispiel stellt eine Sway-Konfiguration dar, wo

Anmerkung: Dieser Persönliche Dienst richtet nur die Konfigurationsdatei ein und legt Pakete für Sway ins Profil. Er startet Sway aber nicht von selbst. Wenn Sie das möchten, gefällt Ihnen dazu vielleicht stattdessen greetd-wlgreet-sway-session.

Die unten definierte Prozedur sway-configuration->file kann als Wert für das optionale Feld sway-configuration in greetd-wlgreet-sway-session genutzt werden.

Prozedur: sway-configuration->file config

Diese Prozedur nimmt ein Argument config entgegen, das ein sway-configuration-Verbundsobjekt (wie unten definiert) sein muss, und sie liefert ein dateiartiges Objekt, das der serialisierten Konfiguration entspricht.

Variable: home-sway-service-type

Dies ist ein Persönlicher Diensttyp zum Einrichten von Sway. Er kümmert sich um Folgendes:

  • Eine Datei ~/.config/sway/config wird bereitgestellt.
  • Sway-bezogene Pakete werden in Ihr Profil aufgenommen.
Datentyp: sway-configuration

Das Verbundsobjekt beschreibt die Sway-Konfiguration (siehe sway(5)).. Diese Felder sind verfügbar:

variables (Vorgabe: %sway-default-variables)

Der Wert dieses Feldes ist eine assoziative Liste, wo die Schlüssel Symbole sind und die Werte entweder Zeichenketten, G-Ausdrücke oder dateiartige Objekte sind (siehe G-Ausdrücke).

Beispiel:

(variables `((mod . "Mod4") ; Zeichenkette
             (term ; file-append
              . ,(file-append foot "/bin/foot"))
             (Term ; G-Ausdruck
              . ,#~(string-append #$foot "/bin/foot"))))

Anmerkung: Die vorgegebenen Tastenbelegungen funktionieren nur, wenn Variable namens $mod, $left, $right, $up und $down zugewiesen wurden. Wenn Sie sie nicht alle definieren möchten, dann müssen Sie die Tastenbelegungen entfernen, die auf sie verweisen.

keybindings (Vorgabe: %sway-default-keybindings)

Dieses Feld beschreibt die Tastenbelegungen im voreingestellten Modus default. Als Wert wird eine assoziative Liste angegeben; Schlüssel sind Symbole und Werte sind entweder Zeichenketten oder G-Ausdrücke.

Mit diesem Schnipsel würde man das Terminal über die Tastenkombination $mod+t aufrufen und auch durch Drücken von $mod+Shift+t (vorausgesetzt eine Variable $term ist definiert):

`(($mod+t . ,#~(string-append "exec " #$foot "/bin/foot"))
  ($mod+Shift+t . "exec $term"))
gestures (Vorgabe: %sway-default-gestures)

Genau wie im vorherigen Feld, aber für Fingergesten.

Mit folgendem Schnipsel wird es möglich, durch Wischen mit drei Fingern nach rechts und links durch die Arbeitsflächen zu navigieren:

'((swipe:3:right . "workspace next_on_output")
  (swipe:3:left  . "workspace prev_on_output"))
packages (Vorgabe: %sway-default-packages)

In diesem Feld wird eine Liste von Paketen aufgeführt, die ins Benutzerprofil aufgenommen werden sollen. Derzeit besagt der Vorgabewert nur, dass sway zum Profil hinzugefügt werden soll.

inputs (Vorgabe: '())

Eine Liste von sway-input-Verbundsobjekten (unten beschrieben).

outputs (Vorgabe: '())

Eine Liste von sway-output-Verbundsobjekten (unten beschrieben).

bar (optional sway-bar-Verbundsobjekt)

Optional ein sway-bar-Verbundsobjekt (unten beschrieben), um eine Leiste „Sway bar“ einzufügen.

modes (Vorgabe: %sway-default-modes)

Eine Liste von sway-mode-Verbundsobjekten (unten beschrieben), um Modi zur Sway-Konfiguration hinzuzufügen. Beim Vorgabewert %sway-default-modes wird ein Modus „resize“ wie in Sways Voreinstellungen hinzugefügt (wie unten beschrieben).

startup+reload-programs (Vorgabe: '())

Welche Programme beim Start sowie nach jedem Neuladen der Konfiguration ausgeführt werden. Der Wert dieses Feldes ist eine Liste von Zeichenketten, G-Ausdrücken oder dateiartigen Objekten (siehe G-Ausdrücke).

startup-programs (Vorgabe: %sway-default-execs)

Welche Programme beim Start ausgeführt werden. Der Wert dieses Feldes ist eine Liste von Zeichenketten, G-Ausdrücken oder dateiartigen Objekten (siehe G-Ausdrücke).

Beim Vorgabewert %sway-default-execs läuft swayidle, damit nach 50 Minuten der Inaktivität der Bildschirm gesperrt wird (als Hintergrund wird ein mit Sway mitgeliefertes Bild eingeblendet) und nach 100 Minuten Inaktivität wird der Bildschirm gesperrt.

extra-content (Vorgabe: '())

Weitere Zeilen, die an die Konfigurationsdatei angehängt werden. Als Wert für das Feld wird eine Liste von Zeichenketten oder G-Ausdrücken angegeben.

Datentyp: sway-input

sway-input-Verbundsobjekte beschreiben Blöcke für Eingabemethoden (siehe sway-input(5)). Zum Beispiel wendet folgendes Schnipsel eine französische Tastaturbelegung auf alle Tastaturen an und belegt zudem die Taste capslock auf ctrl:

(sway-input (identifier "type:keyboard")
            (layout
              (keyboard-layout "fr" #:options '("ctrl:nocaps"))))

Verfügbare Felder für ein sway-input-Verbundsobjekt sind:

identifier (Vorgabe: '*)

Identifikator der Eingabe. Für das Feld können Sie ein Symbol oder eine Zeichenkette angeben. Wenn identifier ein Symbol ist, wird es einfach eingefügt; wenn es eine Zeichenkette ist, wird sie in der Konfigurationsdatei in Anführungszeichen gesetzt.

layout (optional <keyboard-layout>-Verbundsobjekt)

Eine Option nur für Tastaturen. Das Feld gibt die für die Eingabe verwendete Tastenbelegung an. Als Wert müssen Sie ein <keyboard-layout>-Verbundsobjekt angeben (siehe Tastaturbelegung).

Anmerkung: (gnu home services sway) re-exportiert nicht die Prozedur keyboard-layout.

disable-while-typing (optional Boolescher-Ausdruck)

Wenn es auf #t (bzw. #f) steht, wird mit der Option „disable while typing“ das Abschalten beim Tippen dieser Eingabe aktiviert (bzw. deaktiviert).

disable-while-trackpointing (optional Boolescher-Ausdruck)

Wenn es auf #t (bzw. #f) steht, wird mit der Option „disable while track-pointing“ das Abschalten bei Trackpointnutzung dieser Eingabe aktiviert (bzw. deaktiviert).

tap (optional Boolescher-Ausdruck)

Aktiviert oder deaktiviert die Option „tap“, durch die ein Antippen des Tastfelds als Klicken verstanden wird.

extra-content (Vorgabe: '())

Weitere Zeilen, die an den Eingabeblock angehängt werden. Als Wert für das Feld wird eine Liste von Zeichenketten oder G-Ausdrücken angegeben.

Datentyp: sway-output

sway-output-Verbundsobjekte beschreiben Ausgaben für Sway (siehe sway-output(5)). Verfügbare Felder sind:

identifier (Vorgabe: '*)

Identifikator des Monitors. Für das Feld können Sie ein Symbol oder eine Zeichenkette angeben. Wenn identifier ein Symbol ist, wird es einfach eingefügt; wenn es eine Zeichenkette ist, wird sie in der Konfigurationsdatei in Anführungszeichen gesetzt.

resolution (optional Zeichenkette)

Diese Zeichenkette gibt die Auflösung des Monitors.

position (optional)

Der (optionale) Wert dieses Feldes muss ein point sein. Beispiel:

(position
 (point (x 1920)
        (y 0)))
background (optional)

Der Wert dieses Feld benennt, welches Hintergrundbild diese Ausgabe zieren soll. Als Typ für den Wert des Feldes gibt es folgende Möglichkeiten:

  • eine Zeichenkette,
  • ein G-Ausdruck,
  • ein dateiartiges Objekt,
  • ein Paar. In letzterem Fall muss sein erstes Argument eine Zeichenkette, ein G-Ausdruck oder ein dateiartiges Objekt sein. Das zweite Argument im Paar beschreibt, auf welche Art das Hintergrundbild angezeigt werden soll. Es muss eines der Symbole stretch, fill, fit, center oder tile sein.

    Wenn das zweite Argument nicht angegeben wird (d.h. wenn als Wert kein Paar benutzt wird), wird der fill-Modus angewandt.

Anmerkung: Um eine SVG-Datei benutzen zu können, muss librsvg in Ihrem Profil installiert sein (z.B. indem Sie es im Feld packages der sway-configuration eintragen).

extra-content (Vorgabe: '())

Liste mit weiteren Zeilen, die an den Ausgabe-Konfigurationsblock angehängt werden. Elemente der Liste müssen Zeichenketten oder G-Ausdrücke sein.

Datentyp: sway-border-color
border

Die Farbe des Randes.

background

Die Farbe des Hintergrunds.

text

Die Farbe des Textes.

Datentyp: sway-color
background (optional Zeichenkette)

Hintergrundfarbe der Leiste.

statusline (optional Zeichenkette)

Textfarbe der Statuszeile.

focused-background (optional Zeichenkette)

Hintergrundfarbe der Leiste auf dem Monitor, der den Fokus hat.

focused-statusline (optional Zeichenkette)

Textfarbe der Statuszeile auf dem Monitor, der den Fokus hat.

focused-workspace (optional sway-border-color)

Farbschema der Arbeitsflächen. die den Fokus haben.

active-workspace (optional sway-border-color)

Farbschema aktiver Arbeitsflächen.

inactive-workspace (optional sway-border-color)

Farbschema inaktiver Arbeitsflächen.

urgent-workspace (optional sway-border-color)

Farbschema von Arbeitsflächen mit „dringenden“ Fenstern.

binding-mode (optional sway-border-color)

Farbschema für den Indikator eines Belegungsmodus.

Datentyp: sway-bar

Beschreibt die „Sway bar“, eine Leiste für Sway (siehe sway-bar(5)).

identifier (Vorgabe: 'bar0)

Identifikator der Leiste. Der Wert muss ein Symbol sein.

position (optional)

Gibt die Position der Leiste an. Akzeptierte Werte sind 'top für oben oder 'bottom für unten.

hidden-state (optional)

Specify the appearance of the bar when it is hidden. Accepted values are 'hide or 'show.

binding-mode-indicator (optional)

Boolescher Ausdruck, mit dem der Indikator des Belegungsmodus an- oder ausgeschaltet wird.

colors (optional)

Optional ein sway-color-Verbundsobjekt.

status-command (optional)

This field accept strings, G-expressions and executable file-like values. The default value is a command (string) that prints the date and time every second.

Each line printed on stdout by this command (or script) will be displayed on the status area of the bar.

Hier sind ein paar Beispiele mit:

mouse-bindings (Vorgabe: '())

This field accepts an associative list. Keys are integers describing mouse events. Values can either be strings or G-expressions.

The module (gnu home services sway) exports constants %ev-code-mouse-left, %ev-code-mouse-right and %ev-code-mouse-scroll-click whose values are integers corresponding to left, right and scroll click respectively. For example, with (mouse-bindings `((,%ev-code-mouse-left . "exec $term"))), left clicks in the status bar open the terminal (assuming that the variable $term is bound to a terminal).

Datentyp: sway-mode

Describes a Sway mode (see sway(5)). For example, the following snippet defines the resize mode of the default Sway configuration:

(sway-mode
 (mode-name "resize")
 (keybindings
  '(($left  . "resize shrink width 10px")
    ($right . "resize grow width 10px")
    ($down  . "resize grow height 10px")
    ($up    . "resize shrink height 10px")
    (Left   . "resize shrink width 10px")
    (Right  . "resize grow width 10px")
    (Down   . "resize grow height 10px")
    (Up     . "resize shrink height 10px")
    (Return . "mode \"default\"")
    (Escape . "mode \"default\""))))
mode-name (Vorgabe: "default")

Name of the mode. This field accepts strings.

keybindings (Vorgabe: '())

This field describes keybindings. The value is an association list: keys are symbols and values are either strings or G-expressions, as above.

mouse-bindings (Vorgabe: '())

Ditto, but keys are mouse events (integers). Constants %ev-code-mouse-* described above can be used as helpers to define mouse bindings.


Nächste: Persönliche Netzwerkdienste, Vorige: Persönliche Mediendienste, Nach oben: Persönliche Dienste   [Inhalt][Index]