client: describe notification center metadata

parent 32c90270
......@@ -3,6 +3,150 @@
"title": "XimperShellNotificationCenter JSON schema",
"type": "object",
"additionalProperties": false,
"x-ximper-options": {
"reload-command": "ximper-shell-notification-center-client --reload-config",
"config-path": "~/.config/ximper-shell/notification-center/config.json",
"style-path": "~/.config/ximper-shell/notification-center/style.css"
},
"x-ximper-widgets": [
{
"type": "backlight",
"title": "Backlight",
"description": "Unified display, DDC/CI monitor, and keyboard brightness control",
"repeatable": true,
"config-ref": "#/widgets/backlight"
},
{
"type": "volume",
"title": "Volume",
"description": "PulseAudio volume control",
"repeatable": true,
"config-ref": "#/widgets/volume",
"optional-feature": "pulse-audio"
},
{
"type": "quick-settings",
"title": "Quick Settings",
"description": "GNOME-style quick settings toggle tiles",
"repeatable": true,
"config-ref": "#/widgets/quick-settings"
},
{
"type": "inhibitors",
"title": "Inhibitors",
"description": "Notification center inhibitors",
"repeatable": true,
"config-ref": "#/widgets/inhibitors"
},
{
"type": "mpris",
"title": "MPRIS",
"description": "Media player controls",
"repeatable": true,
"config-ref": "#/widgets/mpris"
},
{
"type": "notifications",
"title": "Notifications",
"description": "Notification history",
"repeatable": false,
"config-ref": "#/widgets/notifications"
},
{
"type": "label",
"title": "Label",
"description": "Custom text label",
"repeatable": true,
"config-ref": "#/widgets/label"
}
],
"x-ximper-quick-settings-tiles": [
{
"type": "wifi",
"title": "Wi-Fi",
"description": "Wi-Fi control through NetworkManager",
"repeatable": false
},
{
"type": "vpn",
"title": "VPN",
"description": "VPN control through NetworkManager",
"repeatable": false
},
{
"type": "bluetooth",
"title": "Bluetooth",
"description": "Bluetooth control through BlueZ",
"repeatable": false
},
{
"type": "power-profiles",
"title": "Power Profiles",
"description": "Power profile switching through power-profiles-daemon",
"repeatable": false
},
{
"type": "dnd",
"title": "Do Not Disturb",
"description": "Notification Do Not Disturb toggle",
"repeatable": false,
"requires-widget": "notifications"
},
{
"type": "dark-mode",
"title": "Dark Mode",
"description": "GNOME color scheme toggle",
"repeatable": false
},
{
"type": "night-light",
"title": "Night Light",
"description": "Night light control through hyprsunset",
"repeatable": false,
"properties": {
"temperature": {
"type": "integer",
"description": "Color temperature in Kelvin",
"default": 4500
}
}
},
{
"type": "caffeine",
"title": "Caffeine",
"description": "Idle inhibitor toggle through logind",
"repeatable": false
},
{
"type": "command",
"title": "Command",
"description": "Custom command toggle",
"repeatable": true,
"properties": {
"label": {
"type": "string",
"description": "Button label"
},
"icon": {
"type": "string",
"description": "Icon name"
},
"command": {
"type": "string",
"description": "Command to run on toggle"
},
"update-command": {
"type": "string",
"description": "Command to check state when control center opens"
},
"active": {
"type": "boolean",
"description": "Initial active state",
"default": false
}
}
}
],
"properties": {
"$schema": {
"type": "string",
......@@ -28,7 +172,8 @@
"layer-shell": {
"type": "boolean",
"description": "Whether or not the windows should be opened as layer-shell surfaces. Note: Requires ximper-shell-notification-center restart to apply",
"default": true
"default": true,
"x-ximper-requires-restart": true
},
"layer-shell-cover-screen": {
"type": "boolean",
......@@ -230,8 +375,8 @@
"widgets": {
"type": "array",
"uniqueItems": true,
"description": "Which order and which widgets to display. If the \"notifications\" widget isn't specified, it will be placed at the bottom.",
"default": ["inhibitors", "title", "notifications"],
"description": "Which order and which widgets to display.",
"default": ["backlight", "volume", "quick-settings", "inhibitors", "mpris", "notifications"],
"items": {
"type": "string",
"$comment": "Sadly can't use regex and enums at the same time. Fix in the future?",
......
......@@ -3,5 +3,8 @@ public class Constants {
public const string VERSIONNUM = @VERSION_NUM@;
public const string GETTEXT_PACKAGE = @GETTEXT_PACKAGE@;
public const string LOCALEDIR = @LOCALEDIR@;
public const string CONFIG_PATH = @CONFIG_PATH@;
public const string CONFIG_SCHEMA_PATH = @CONFIG_SCHEMA_PATH@;
public const string STYLE_PATH = @STYLE_PATH@;
public const uint ANIMATION_DURATION = 400;
}
......@@ -18,6 +18,9 @@ const_config_data.set_quoted('VERSION', version)
const_config_data.set_quoted('VERSION_NUM', meson.project_version())
const_config_data.set_quoted('GETTEXT_PACKAGE', meson.project_name())
const_config_data.set_quoted('LOCALEDIR', get_option('prefix') / get_option('localedir'))
const_config_data.set_quoted('CONFIG_PATH', join_paths('/', config_path, 'config.json'))
const_config_data.set_quoted('CONFIG_SCHEMA_PATH', join_paths('/', config_path, 'configSchema.json'))
const_config_data.set_quoted('STYLE_PATH', join_paths('/', config_path, 'style.css'))
constants = configure_file(
input : 'constants.vala.in',
output : 'constants.vala',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment