strand

Services

A service is a live value: read it and the shell updates when it changes (spec.md, section 8.1). It starts the first time a program reads it and stops a few seconds after nothing does. A field marked rw can be written (assignment, <->, strand set); an action is called only from a handler; on name.event(…) handles an event. The records they hand out are in types.md.

Each service has a page of its own. These pages are generated from the schema strand check checks against.

appsInstalled apps, from the desktop entries in every applications/ directory ($XDG_DATA_HOME, then $XDG_DATA_DIRS; NoDisplay, Hidden, OnlyShowIn/NotShowIn and TryExec honoured), watched live. audioAudio devices and the programs' streams, from PipeWire, and levels for a visualiser of one's own (audio.levels). authThe lock screen's password check: a PAM helper of its own (strand-auth, a separate process) checks each password with the strand PAM service, or login when /etc/pam.d/strand is missing. batteryThe battery, from UPower: its combined display device, followed live, and every power source it reports. bluetoothBluetooth, from BlueZ, followed live: the first adapter, the devices paired with it, and the devices in range while a pairing page reads them. brightnessThe screen backlight: read from /sys/class/backlight (watched, so a brightness key shows at once) and set through logind's SetBrightness (no root or udev rules). calendarMonth grids for calendars. clipboardThe clipboard, from the compositor's data control (ext-data-control-v1, else wlr-data-control: Hyprland, sway, niri, labwc): the selection, a value copied from a handler, and the history. clockThe date and time. cpuProcessor load, sampled once a second while a reader is visible. diskDisk usage of the mounted filesystems (statvfs), read every 10 s while a reader is visible. greetdA login screen for greetd: when Strand runs as greetd's greeter, its socket ($GREETD_SOCK) logs a user in and starts their session. idleWhether the user is away, from the compositor's idle notifications (ext-idle-notify-v1). keyboardThe keyboard's lock keys, layouts and modifiers. mediaThe active media player, over MPRIS: every org.mpris.MediaPlayer2.* on the session bus, the one playing (the latest to start) chosen, else the latest to pause, unless one was picked with p.select(), which holds until that player leaves or another starts playing; players lists them all. memoryMemory use, sampled once a second while a reader is visible. networkThe network, followed live: from NetworkManager, or from iwd (net.connman.iwd) where NetworkManager does not run. notificationsThe notification server: the shell owns the freedesktop notification name, and says so clearly if another daemon (dunst, mako) has it. outputsThe monitors' configuration, from the compositor's zwlr_output_manager_v1 (wlr-output-management: sway, Hyprland, niri, labwc): every output, on or off, with its modes, place, scale and rotation, changed together with outputs.apply and checked first with outputs.test. polkitStrand's own polkit authentication agent: the password dialog when a program asks for something that needs one. screensMonitors. sessionThe login session and the machine's power, from logind (org.freedesktop.login1): a power menu. systemThe desktop's appearance settings, from the XDG desktop portal and followed live, and the machine's host name, kernel and uptime. trayThe system tray: a StatusNotifierItem host, with a watcher of its own when the session has none, and each item's DBusMenu. videoThe programs taking video, from PipeWire: a camera or screen-cast indicator. windowsToplevel windows, from ext-foreign-toplevel-list. wmThe compositor. workspacesWorkspaces, from ext-workspace-v1; Hyprland, niri and sway IPC fill in what the protocol does not cover yet.

This page as Markdownllms.txt