Provided by: sway-notification-center_0.10.1-2_amd64
NAME
swaync - Configuration file
CONFIGURATION
Using a text editor with a JSON language server is recommended when editing the config file to be able to detect config errors positionX type: string default: right values: left, right, center description: Horizontal position of control center and notification window positionY type: string default: top values: top, center, bottom description: Vertical position of control center and notification window layer type: string default: overlay values: background, bottom, top, overlay description: Layer of notification window relative to normal windows. background is below all windows, overlay is above all windows. layer-shell type: bool default: true description: Wether or not the windows should be opened as layer-shell surfaces. Note: Requires swaync restart to apply cssPriority type: string default: application values: application, user description: Which GTK priority to use when loading the default and user CSS files. Pick "user" to override XDG_CONFIG_HOME/gtk-3.0/gtk.css control-center-margin-top type: integer default: 0 description: The margin (in pixels) at the top of the notification center. 0 to disable control-center-margin-bottom type: integer default: 0 description: The margin (in pixels) at the bottom of the notification center. 0 to disable control-center-margin-right type: integer default: 0 description: The margin (in pixels) at the right of the notification center. 0 to disable control-center-margin-left type: integer default: 0 description: The margin (in pixels) at the left of the notification center. 0 to disable control-center-layer type: string default: top values: background, bottom, top, overlay description: Layer of control center window relative to normal windows. background is below all windows, overlay is above all windows. control-center-exclusive-zone type: bool default: true description: Whether or not the control center should follow the compositors exclusive zones. An example would be setting it to false to cover your panel/dock. notification-2fa-action type: bool default: true description: If each notification should display a 'COPY "1234"' action timeout type: integer default: 10 description: The notification timeout for notifications with normal priority timeout-low type: integer default: 5 description: The notification timeout for notifications with low priority timeout-critical type: integer default: 0 description: The notification timeout for notifications with critical priority. 0 to disable notification-window-width type: integer default: 500 description: Width of the notification in pixels keyboard-shortcuts type: bool default: true description: If control center should use keyboard shortcuts image-visibility type: string default: always values: always, when-available, never description: An explanation about the purpose of this instance. transition-time type: integer default: 200 description: The notification animation duration. 0 to disable hide-on-clear type: bool default: false description: Hides the control center after pressing "Clear All" hide-on-action type: bool default: true description: Hides the control center when clicking on notification action fit-to-screen type: bool default: true description: Whether the control center should expand vertically to fill the screen relative-timestamps type: bool default: true description: Display notification timestamps relative to now e.g. "26 minutes ago". If false, a local iso8601-formatted absolute timestamp is displayed. control-center-height type: integer default: 500 description: The control center height in pixels This setting is ignored when fit-to-screen is set to "true". control-center-width type: integer default: 500 description: The control center width in pixels notification-visibility type: object visibility object properties: state type: string optional: false default: enabled values: ignored, muted, transient, enabled description: The notification visibility state. override-urgency type: string optional: true default: unset values: unset, low, normal, critical description: The new urgency for the notification if set. app-name type: string optional: true description: The app-name. Uses Regex. desktop-entry type: string optional: true description: The desktop-entry. Uses Regex. summary type: string optional: true description: The summary of the notification. Uses Regex. body type: string optional: true description: The body of the notification. Uses Regex. urgency type: string optional: true default: Normal values: Low, Normal, Critical description: The urgency of the notification. category type: string optional: true description: Which category the notification belongs to. Uses Regex. description: Set the visibility or override urgency of each incoming notification. If the notification doesn't include one of the properties, that property will be ignored. All properties (except for state) use regex. If all properties match the given notification, the notification will be follow the provided state. Only the first matching object will be used. example: { "notification-visibility": { "example-name": { "state": "The notification state", "app-name": "Notification app-name Regex", "summary": "Notification summary Regex", "body": "Notification body Regex", "urgency": "Low or Normal or Critical", "category": "Notification category Regex" } } } widgets type: array Default values: ["title", "dnd", "notifications"] Valid array values (see widget-config for more information): notifications required: true optional: false title optional: true dnd optional: true label optional: true mpris optional: true menubar optional: true buttons-grid optional: true volume optional: true backlight optional: true inhibitors optional: true description: Which order and which widgets to display. If the "notifications" widget isn't specified, it will be placed at the bottom. multiple of same widget: Append a # with any value to the end of the widget name. Example: "title#TheMainTitle" To address this widget specifically in the css file use the css class .TheMainTitle example: { "widgets": [ "inhibitors", "title", "dnd", "notifications" ] } widget-config type: object description: Configure specific widget properties. multiple of same widget: Append a # with any value to the end of the widget name. Example: "title#TheMainTitle" To address this widget specifically in the css file use the css class .TheMainTitle Widgets to customize: title type: object css class: widget-title properties: text: type: string optional: true default: "Notifications" description: The title of the widget clear-all-button: type: bool optional: true default: true description: Whether to display a "Clear All" button button-text: type: string optional: true default: "Clear All" description: "Clear All" button text description: The notification visibility state. dnd type: object css class: widget-dnd properties: text: type: string optional: true default: "Do Not Disturb" description: The title of the widget description: Control Center Do Not Disturb Widget. label type: object css class: widget-label properties: text: type: string optional: true default: "Label Text" description: The text content of the widget clear-all-button: type: integer optional: true default: 5 description: The maximum lines description: A generic widget that allows the user to add custom text. mpris type: object css classes: widget-mpris widget-mpris-player widget-mpris-title widget-mpris-subtitle properties: image-size: type: integer optional: true default: 96 description: The size of the album art. image-radius: type: integer optional: true default: 12 description: The border radius of the album art. description: A widget that displays multiple music players. menubar type: object css classes: widget-menubar .widget-menubar>box>.menu-button-bar name of element given after menu or buttons with # patternProperties: menu#<name>: type: object properties: label: type: string optional: true default: "Menu" description: Label of button to show/hide menu dropdown position: type: string optional: true default: "right" description: Horizontal position of the button in the bar enum: ["right", "left"] animation-type: type: string optional: true default: "slide_down" description: Animation type for menu enum: ["slide_down", "slide_up", "none"] animation-duration: type: integer optional: true default: 250 description: Duration of animation in milliseconds actions: type: array Default values: [] Valid array values: type: object properties: label: type: string default: "label" description: Text to be displayed in button command: type: string default: "" description: "Command to be executed on click" type: type: string default: "normal" description: Type of the button. Toggle buttons receive the '.active' css class enum: ["normal", "toggle"] update-command: type: string default: "" description: "Command to be executed on visibility change of cc to update the active state of the toggle button (should echo true or false)" active: type: bool default: false description: Wether the toggle button is active as default or not description: A list of actions containing a label and a command description: A button to reveal a dropdown with action-buttons buttons#<name>: type: object properties: position: type: string optional: true default: "right" description: Horizontal position of the buttons in the bar enum: ["right", "left"] actions: type: array Default values: [] Valid array values: type: object properties: label: type: string default: "label" description: Text to be displayed in button command: type: string default: "" description: "Command to be executed on click" type: type: string default: "normal" description: Type of the button Toggle buttons receive the '.active' css class and an env variable "SWAYNC_TOGGLE_STATE" is set. See example usage in the default config.json enum: ["normal", "toggle"] update-command: type: string default: "" description: "Command to be executed on visibility change of cc to update the active state of the toggle button (should echo true or false)" active: type: bool default: false description: Wether the toggle button is active as default or not description: A list of actions containing a label and a command description: A list of buttons to be displayed in the menu- button-bar buttons-grid type: object css class: widget-buttons (access buttons with >flowbox>flowboxchild>button) properties: actions: type: array Default values: [] Valid array values: type: object properties: label: type: string default: "label" description: Text to be displayed in button command: type: string default: "" description: "Command to be executed on click" type: type: string default: "normal" description: Type of the button Toggle buttons receive the '.active' css class and an env variable "SWAYNC_TOGGLE_STATE" is set. See example usage in the default config.json enum: ["normal", "toggle"] active: type: bool default: false description: Wether the toggle button is active as default or not description: A list of actions containing a label and a command description: A grid of buttons that execute shell commands volume type: object css class: widget-volume per-app-volume properties: label: type: string optional: true default: "Volume" description: Text displayed in front of the volume slider show-per-app: type: bool optional: true default: false description: Show per app volume control show-per-app-icon: type: bool optional: true default: false description: Show application icon in per app control show-per-app-label: type: bool optional: true default: false description: Show application name in per app control empty-list-label: type: string optional: true default: "No active sink input" description: Text displayed when there are not active sink inputs expand-button-label: type: string optional: true default: "⇧" description: Label displayed on button to show per app volume control collapse-button-label: type: string optional: true default: "⇩" description: Label displayed on button to hide per app volume control icon-size: type: integer optional: true default: 24 description: Size of the application icon in per app volume control animation-type: type: string optional: true default: "slide_down" description: Animation type for the per app volume control enum: ["slide_down", "slide_up", "none"] animation-duration: type: integer optional: true default: 250 description: Duration of animation in milliseconds description: Slider to control pulse volume backlight type: object css class: widget-backlight properties: label: type: string optional: true default: "Brightness" description: Text displayed in front of the backlight slider device: type: string optional: true default: "intel_backlight" description: Device in `/sys/class/backlight` or `/sys/class/leds` subsystem: type: string optional: true default: "backlight" description: Kernel subsystem for brightness control enum: ["backlight", "leds"] min: type: integer optional: true default: 0 description: Lowest possible value for brightness description: Slider to control screen brightness inhibitors type: object css class: widget-inhibitors properties: text: type: string optional: true default: "Inhibitors" description: The title of the widget clear-all-button: type: bool optional: true default: true description: Whether to display a "Clear All" button button-text: type: string optional: true default: "Clear All" description: "Clear All" button text description: Displayed if notifications are inhibited. example: { "widget-config": { "title": { "text": "Notifications", "clear-all-button": true, "button-text": "Clear All" }, "dnd": { "text": "Do Not Disturb" }, "label": { "max-lines": 5, "text": "Label Text" }, "mpris": { "image-size": 96, "image-radius": 12 }, "menubar": { "menu#power": { "label": "Power", "position": "right", "actions": [ { "label": "Shut down", "command": "systemctl poweroff" }, ... ] }, "buttons#screenshot": { "position": "left", "actions": [ { "label": "Screenshot", "command": "grim" }, ... ] } }, "buttons": { "actions": [ { "label": "wifi", "command": "rofi-wifi-menu" }, ... ] } } }
Scripts
script-fail-notify type: bool default: true description: Sends a notification if a script fails to run scripts type: object script object properties: exec type: string optional: false description: The script to run. Can also run regular shell commands. app-name type: string optional: true description: The app-name. Uses Regex. desktop-entry type: string optional: true description: The desktop-entry. Uses Regex. summary type: string optional: true description: The summary of the notification. Uses Regex. body type: string optional: true description: The body of the notification. Uses Regex. urgency type: string optional: true default: Normal values: Low, Normal, Critical description: The urgency of the notification. category type: string optional: true description: Which category the notification belongs to. Uses Regex. run-on type: string optional: true values: action, receive default: receive description: Whether to run this action when the notification is received, or when an action is taken on it. description: Which scripts to check and potentially run for every notification. If the notification doesn't include one of the properties, that property will be ignored. All properties (except for exec) use regex. If all properties match the given notification, the script will be run. Only the first matching script will be run. example: { "scripts": { "example-script": { "exec": "Your shell command or script here...", "app-name": "Notification app-name Regex", "summary": "Notification summary Regex", "body": "Notification body Regex", "urgency": "Low or Normal or Critical", "category": "Notification category Regex" } } } You can also use these environment variables in your script: SWAYNC_BODY="Notification body content" SWAYNC_DESKTOP_ENTRY="Desktop entry" SWAYNC_URGENCY="Notification urgency" SWAYNC_TIME="Notification time" SWAYNC_APP_NAME="Notification app name" SWAYNC_CATEGORY="SwayNC notification category" SWAYNC_REPLACES_ID="ID of notification to replace" SWAYNC_ID="SwayNC notification ID" SWAYNC_SUMMARY="Notification summary" 2024-05-21 swaync(5)