initial commit

This commit is contained in:
Xanazf 2024-09-28 02:35:19 +03:00
commit 6844038616
294 changed files with 37788 additions and 0 deletions

View file

@ -0,0 +1,31 @@
{
"name": "DBusMenuHandle",
"module": "Quickshell.DBusMenu",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Handle to a DBusMenu tree.",
"details": "Handle to a menu tree provided by a remote process.\n",
"flags": [
"uncreatable"
],
"properties": {
"menu": {
"type": {
"type": "local",
"module": "Quickshell.DBusMenu",
"name": "DBusMenuItem"
},
"details": null,
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,49 @@
{
"name": "DBusMenuItem",
"module": "Quickshell.DBusMenu",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "QsMenuEntry"
},
"description": "Menu item shared by an external program.",
"details": "Menu item shared by an external program via the\n[DBusMenu specification](https://github.com/AyatanaIndicators/libdbusmenu/blob/master/libdbusmenu-glib/dbus-menu.xml).\n",
"flags": [
"uncreatable"
],
"properties": {
"menuHandle": {
"type": {
"type": "local",
"module": "Quickshell.DBusMenu",
"name": "DBusMenuHandle"
},
"details": "Handle to the root of this menu.\n",
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "updateLayout",
"id": "updateLayout",
"details": "Refreshes the menu contents.\n\nUsually you shouldn't need to call this manually but some applications providing\nmenus do not update them correctly. Call this if menus don't update their state.\n\nThe {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"signal\" mname=\"layoutUpdated\" >}} signal will be sent when a response is received.\n",
"params": []
}
],
"signals": {
"layoutUpdated": {
"name": "layoutUpdated",
"details": null,
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,5 @@
{
"name": "Quickshell.DBusMenu",
"description": "Types related to DBusMenu (used in system tray)",
"details": ""
}

View file

@ -0,0 +1,71 @@
{
"name": "GlobalShortcut",
"module": "Quickshell.Hyprland",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Hyprland global shortcut.",
"details": "Global shortcut implemented with [hyprland_global_shortcuts_v1].\n\nYou can use this within hyprland as a global shortcut:\n```\nbind = <modifiers>, <key>, global, <appid>:<name>\n```\nSee [the wiki] for details.\n\n{{< callout type=\"warning\" >}}\n The shortcuts protocol does not allow duplicate appid + name pairs.\nWithin a single instance of quickshell this is handled internally, and both\nusers will be notified, but multiple instances of quickshell or XDPH may collide.\n\nIf that happens, whichever client that tries to register the shortcuts last will crash.\n{{< /callout >}}\n\n{{< callout type=\"info\" >}}\n This type does *not* use the xdg-desktop-portal global shortcuts protocol,\nas it is not fully functional without flatpak and would cause a considerably worse\nuser experience from other limitations. It will only work with Hyprland.\nNote that, as this type bypasses xdg-desktop-portal, XDPH is not required.\n{{< /callout >}}\n\n[hyprland_global_shortcuts_v1]: https://github.com/hyprwm/hyprland-protocols/blob/main/protocols/hyprland-global-shortcuts-v1.xml\n[the wiki]: https://wiki.hyprland.org/Configuring/Binds/#dbus-global-shortcuts\n",
"properties": {
"name": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The name of the shortcut.\nYou cannot change this at runtime.\n"
},
"appid": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The appid of the shortcut. Defaults to `quickshell`.\nYou cannot change this at runtime.\n\nIf you have more than one shortcut we recommend subclassing\nGlobalShortcut to set this.\n"
},
"description": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The description of the shortcut that appears in `hyprctl globalshortcuts`.\nYou cannot change this at runtime.\n"
},
"pressed": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the keybind is currently pressed.\n",
"flags": [
"readonly"
]
},
"triggerDescription": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Have not seen this used ever, but included for completeness. Safe to ignore.\n"
}
},
"functions": [],
"signals": {
"pressed": {
"name": "pressed",
"details": "Fired when the keybind is pressed.\n",
"params": []
},
"released": {
"name": "released",
"details": "Fired when the keybind is released.\n",
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,163 @@
{
"name": "Hyprland",
"module": "Quickshell.Hyprland",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": null,
"details": null,
"flags": [
"singleton"
],
"properties": {
"focusedMonitor": {
"type": {
"type": "local",
"module": "Quickshell.Hyprland",
"name": "HyprlandMonitor"
},
"details": "The currently focused hyprland monitor. May be null.\n",
"flags": [
"readonly"
]
},
"workspaces": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell.Hyprland",
"name": "HyprlandWorkspace"
}
},
"details": "All hyprland workspaces.\n",
"flags": [
"readonly"
]
},
"monitors": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell.Hyprland",
"name": "HyprlandMonitor"
}
},
"details": "All hyprland monitors.\n",
"flags": [
"readonly"
]
},
"requestSocketPath": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Path to the request socket (.socket.sock)\n",
"flags": [
"readonly"
]
},
"eventSocketPath": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Path to the event socket (.socket2.sock)\n",
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "dispatch",
"id": "dispatch",
"details": "Execute a hyprland [dispatcher](https://wiki.hyprland.org/Configuring/Dispatchers).\n",
"params": [
{
"name": "request",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
},
{
"ret": {
"type": "local",
"module": "Quickshell.Hyprland",
"name": "HyprlandMonitor"
},
"name": "monitorFor",
"id": "monitorFor",
"details": "Get the HyprlandMonitor object that corrosponds to a quickshell screen.\n",
"params": [
{
"name": "screen",
"type": {
"type": "local",
"module": "Quickshell",
"name": "ShellScreen"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "refreshMonitors",
"id": "refreshMonitors",
"details": "Refresh monitor information.\n\nMany actions that will invalidate monitor state don't send events,\nso this function is available if required.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "refreshWorkspaces",
"id": "refreshWorkspaces",
"details": "Refresh workspace information.\n\nMany actions that will invalidate workspace state don't send events,\nso this function is available if required.\n",
"params": []
}
],
"signals": {
"rawEvent": {
"name": "rawEvent",
"details": "Emitted for every event that comes in through the hyprland event socket (socket2).\n\nSee [Hyprland Wiki: IPC](https://wiki.hyprland.org/IPC/) for a list of events.\n",
"params": [
{
"name": "event",
"type": {
"type": "local",
"module": "Quickshell.Hyprland",
"name": "HyprlandEvent"
}
}
]
}
},
"variants": {}
}

View file

@ -0,0 +1,68 @@
{
"name": "HyprlandEvent",
"module": "Quickshell.Hyprland",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Live Hyprland IPC event.",
"details": "Live Hyprland IPC event. Holding this object after the\nsignal handler exits is undefined as the event instance\nis reused.\n\nEmitted by {{< qmltypelink type=\"local\" module=\"Quickshell.Hyprland\" name=\"Hyprland\" mtype=\"signal\" mname=\"rawEvent\" >}}.\n",
"flags": [
"uncreatable"
],
"properties": {
"name": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The name of the event.\n\nSee [Hyprland Wiki: IPC](https://wiki.hyprland.org/IPC/) for a list of events.\n",
"flags": [
"readonly"
]
},
"data": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The unparsed data of the event.\n",
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
},
"name": "parse",
"id": "parse",
"details": "Parse this event with a known number of arguments.\n\nArgument count is required as some events can contain commas\nin the last argument, which can be ignored as long as the count is known.\n",
"params": [
{
"name": "argumentCount",
"type": {
"type": "qt",
"module": "qml",
"name": "int"
}
}
]
}
],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,44 @@
{
"name": "HyprlandFocusGrab",
"module": "Quickshell.Hyprland",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Input focus grabber",
"details": "Object for managing input focus grabs via the [hyprland_focus_grab_v1]\nwayland protocol.\n\nWhen enabled, all of the windows listed in the `windows` property will\nreceive input normally, and will retain keyboard focus even if the mouse\nis moved off of them. When areas of the screen that are not part of a listed\nwindow are clicked or touched, the grab will become inactive and emit the\ncleared signal.\n\nThis is useful for implementing dismissal of popup type windows.\n```qml\nimport Quickshell\nimport Quickshell.Hyprland\nimport QtQuick.Controls\n\nShellRoot {\n FloatingWindow {\n id: window\n\n Button {\n anchors.centerIn: parent\n text: grab.active ? \"Remove exclusive focus\" : \"Take exclusive focus\"\n onClicked: grab.active = !grab.active\n }\n\n HyprlandFocusGrab {\n id: grab\n windows: [ window ]\n }\n }\n}\n```\n\n[hyprland_focus_grab_v1]: https://github.com/hyprwm/hyprland-protocols/blob/main/protocols/hyprland-global-shortcuts-v1.xml\n",
"properties": {
"windows": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
"details": "The list of windows to whitelist for input.\n"
},
"active": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the focus grab is active. Defaults to false.\n\nWhen set to true, an input grab will be created for the listed windows.\n\nThis property will change to false once the grab is dismissed.\nIt will not change to true until the grab begins, which requires\nat least one visible window.\n"
}
},
"functions": [],
"signals": {
"cleared": {
"name": "cleared",
"details": "Sent whenever the compositor clears the focus grab.\n\nThis may be in response to all windows being removed\nfrom the list or simultaneously hidden, in addition to\na normal clear.\n",
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,130 @@
{
"name": "HyprlandMonitor",
"module": "Quickshell.Hyprland",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": null,
"details": null,
"flags": [
"uncreatable"
],
"properties": {
"y": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"height": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"name": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
},
"x": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"lastIpcObject": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": "Last json returned for this monitor, as a javascript object.\n\n{{< callout type=\"warning\" >}}\n This is *not* updated unless the monitor object is fetched again from\nHyprland. If you need a value that is subject to change and does not have a dedicated\nproperty, run {{< qmltypelink type=\"local\" module=\"Quickshell.Hyprland\" name=\"Hyprland\" mtype=\"func\" mname=\"refreshMonitors\" >}} and wait for this property to update.\n\n{{< /callout >}}",
"flags": [
"readonly"
]
},
"activeWorkspace": {
"type": {
"type": "local",
"module": "Quickshell.Hyprland",
"name": "HyprlandWorkspace"
},
"details": "The currently active workspace on this monitor. May be null.\n",
"flags": [
"readonly"
]
},
"description": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
},
"id": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"scale": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": null,
"flags": [
"readonly"
]
},
"width": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,64 @@
{
"name": "HyprlandWorkspace",
"module": "Quickshell.Hyprland",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": null,
"details": null,
"flags": [
"uncreatable"
],
"properties": {
"name": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
},
"id": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"lastIpcObject": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": "Last json returned for this workspace, as a javascript object.\n\n{{< callout type=\"warning\" >}}\n This is *not* updated unless the workspace object is fetched again from\nHyprland. If you need a value that is subject to change and does not have a dedicated\nproperty, run {{< qmltypelink type=\"local\" module=\"Quickshell.Hyprland\" name=\"Hyprland\" mtype=\"func\" mname=\"refreshWorkspaces\" >}} and wait for this property to update.\n\n{{< /callout >}}",
"flags": [
"readonly"
]
},
"monitor": {
"type": {
"type": "local",
"module": "Quickshell.Hyprland",
"name": "HyprlandMonitor"
},
"details": null,
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,5 @@
{
"name": "Quickshell.Hyprland",
"description": "Hyprland specific Quickshell types",
"details": ""
}

View file

@ -0,0 +1,28 @@
{
"name": "DataStream",
"module": "Quickshell.Io",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Data source that can be streamed into a parser.",
"details": "See also: {{< qmltypelink type=\"local\" module=\"Quickshell.Io\" name=\"DataStreamParser\" mtype=\"\" mname=\"\" >}}\n",
"flags": [
"uncreatable"
],
"properties": {
"parser": {
"type": {
"type": "local",
"module": "Quickshell.Io",
"name": "DataStreamParser"
},
"details": "The parser to stream data from this source into.\nIf the parser is null no data will be read.\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,34 @@
{
"name": "DataStreamParser",
"module": "Quickshell.Io",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Parser for streamed input data.",
"details": "See also: {{< qmltypelink type=\"local\" module=\"Quickshell.Io\" name=\"DataStream\" mtype=\"\" mname=\"\" >}}, {{< qmltypelink type=\"local\" module=\"Quickshell.Io\" name=\"SplitParser\" mtype=\"\" mname=\"\" >}}.\n",
"flags": [
"uncreatable"
],
"properties": {},
"functions": [],
"signals": {
"read": {
"name": "read",
"details": "Emitted when data is read from the stream.\n",
"params": [
{
"name": "data",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
}
},
"variants": {}
}

View file

@ -0,0 +1,172 @@
{
"name": "Process",
"module": "Quickshell.Io",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Child process.",
"details": "#### Example\n```qml\nQS_Quickshell00Io_Process {\n running: true\n command: [ \"some-command\", \"arg\" ]\n stdout: QS_Quickshell00Io_SplitParser {\n onRead: data => console.log(`line read: ${data}`)\n }\n}\n```\n",
"properties": {
"running": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the process is currently running. Defaults to false.\n\nSetting this property to true will start the process if command has at least\none element.\nSetting it to false will send SIGTERM. To immediately kill the process,\nuse {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"signal\" >}} with SIGKILL. The process will be killed when\nquickshell dies.\n\nIf you want to run the process in a loop, use the onRunningChanged signal handler\nto restart the process.\n```qml\nQS_Quickshell00Io_Process {\n running: true\n onRunningChanged: if (!running) running = true\n}\n```\n"
},
"workingDirectory": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The working directory of the process. Defaults to [quickshell's working directory].\n\nIf the process is already running changing this property will affect the next\nstarted process. If the property has been changed after starting a process it will\nreturn the new value, not the one for the currently running process.\n\n[quickshell's working directory]: ../../quickshell/quickshell#prop.workingDirectory\n"
},
"manageLifetime": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the process should be killed when the Process object is destroyed or quickshell exits.\nDefaults to true.\n\nThis property may be changed while the process is running and will affect it.\n\n{{< callout type=\"warning\" >}}\n If set to false the process will still be killed if the quickshell config reloads.\nIt will not be killed if quickshell exits normally or crashes.\n\n{{< /callout >}}"
},
"stderr": {
"type": {
"type": "local",
"module": "Quickshell.Io",
"name": "DataStreamParser"
},
"details": "The parser for stderr. If the parser is null the process's stdout channel will be closed\nand no further data will be read, even if a new parser is attached.\n"
},
"stdout": {
"type": {
"type": "local",
"module": "Quickshell.Io",
"name": "DataStreamParser"
},
"details": "The parser for stdout. If the parser is null the process's stdout channel will be closed\nand no further data will be read, even if a new parser is attached.\n"
},
"command": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
},
"details": "The command to execute. Each argument is its own string, which means you don't have\nto deal with quoting anything.\n\nIf the process is already running changing this property will affect the next\nstarted process. If the property has been changed after starting a process it will\nreturn the new value, not the one for the currently running process.\n\n{{< callout type=\"info\" >}}\n You can use `[\"sh\", \"-c\", <your command>]` to execute your command with\nthe system shell.\n\n{{< /callout >}}"
},
"environment": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": "Environment of the executed process.\n\nThis is a javascript object (json). Environment variables can be added by setting\nthem to a string and removed by setting them to null (except when {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"clearEnvironment\" >}} is true,\nin which case this behavior is inverted, see {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"clearEnvironment\" >}} for details).\n\n\n```qml\nenvironment: ({\n ADDED: \"value\",\n REMOVED: null,\n \"i'm different\": \"value\",\n})\n```\n\n{{< callout type=\"info\" >}}\n You need to wrap the returned object in () otherwise it won't parse due to javascript ambiguity.\n{{< /callout >}}\n\nIf the process is already running changing this property will affect the next\nstarted process. If the property has been changed after starting a process it will\nreturn the new value, not the one for the currently running process.\n"
},
"clearEnvironment": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the process's environment should be cleared prior to applying {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"environment\" >}}.\nDefaults to false.\n\nIf true, all environment variables will be removed before the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"environment\" >}}\nobject is applied, meaning the variables listed will be the only ones visible to the process.\nThis changes the behavior of `null` to pass in the system value of the variable if present instead\nof removing it.\n\n```qml\nclearEnvironment: true\nenvironment: ({\n ADDED: \"value\",\n PASSED_FROM_SYSTEM: null,\n})\n```\n\nIf the process is already running changing this property will affect the next\nstarted process. If the property has been changed after starting a process it will\nreturn the new value, not the one for the currently running process.\n"
},
"stdinEnabled": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If stdin is enabled. Defaults to false. If this property is false the process's stdin channel\nwill be closed and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"write\" >}} will do nothing, even if set back to true.\n"
},
"processId": {
"type": {
"type": "qt",
"module": "qml",
"name": "variant"
},
"details": "The process ID of the running process or `null` if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"running\" >}} is false.\n",
"flags": ["readonly"]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "signal",
"id": "signal",
"details": "Sends a signal to the process if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"running\" >}} is true, otherwise does nothing.\n",
"params": [
{
"name": "signal",
"type": {
"type": "qt",
"module": "qml",
"name": "int"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "write",
"id": "write",
"details": "Writes to the process's stdin. Does nothing if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"running\" >}} is false.\n",
"params": [
{
"name": "data",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
}
],
"signals": {
"exited": {
"name": "exited",
"details": null,
"params": [
{
"name": "exitCode",
"type": {
"type": "qt",
"module": "qml",
"name": "int"
}
},
{
"name": "exitStatus",
"type": {
"type": "unknown",
"module": "",
"name": ""
}
}
]
},
"started": {
"name": "started",
"details": null,
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,80 @@
{
"name": "Socket",
"module": "Quickshell.Io",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell.Io",
"name": "DataStream"
},
"description": "Unix socket listener.",
"details": "",
"properties": {
"connected": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "Returns if the socket is currently connected.\n\nWriting to this property will set the target connection state and will not\nupdate the property immediately. Setting the property to false will begin disconnecting\nthe socket, and setting it to true will begin connecting the socket if path is not empty.\n"
},
"path": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The path to connect this socket to when {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"connected\" >}} is set to true.\n\nChanging this property will have no effect while the connection is active.\n"
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "flush",
"id": "flush",
"details": "Flush any queued writes to the socket.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "write",
"id": "write",
"details": "Write data to the socket. Does nothing if not connected.\n\nRemember to call flush after your last write.\n",
"params": [
{
"name": "data",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
}
],
"signals": {
"error": {
"name": "error",
"details": "This signal is sent whenever a socket error is encountered.\n",
"params": [
{
"name": "error",
"type": {
"type": "unknown",
"module": "",
"name": ""
}
}
]
}
},
"variants": {}
}

View file

@ -0,0 +1,41 @@
{
"name": "SocketServer",
"module": "Quickshell.Io",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Unix socket server.",
"details": "#### Example\n```qml\nSocketServer {\n active: true\n path: \"/path/too/socket.sock\"\n handler: Socket {\n onConnectedChanged: {\n console.log(connected ? \"new connection!\" : \"connection dropped!\")\n }\n parser: SplitParser {\n onRead: message => console.log(`read message from socket: ${message}`)\n }\n }\n}\n```\n",
"properties": {
"active": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the socket server is currently active. Defaults to false.\n\nSetting this to false will destory all active connections and delete\nthe socket file on disk.\n\nIf path is empty setting this property will have no effect.\n"
},
"handler": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "Component"
},
"details": "Connection handler component. Must creeate a {{< qmltypelink type=\"local\" module=\"Quickshell.Io\" name=\"Socket\" mtype=\"\" mname=\"\" >}}.\n\nThe created socket should not set {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"connected\" >}} or {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"path\" >}} or the incoming\nsocket connection will be dropped (they will be set by the socket server.)\nSetting `connected` to false on the created socket after connection will\nclose and delete it.\n"
},
"path": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The path to create the socket server at.\n\nSetting this property while the server is active will have no effect.\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,25 @@
{
"name": "SplitParser",
"module": "Quickshell.Io",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell.Io",
"name": "DataStreamParser"
},
"description": "Parser for delimited data streams.",
"details": "Parser for delimited data streams. {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"read\" >}} is emitted once per delimited chunk of the stream.\n",
"properties": {
"splitMarker": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The delimiter for parsed data. May be multiple characters. Defaults to `\\n`.\n\nIf the delimiter is empty read lengths may be arbitrary (whatever is returned by the\nunderlying read call.)\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,5 @@
{
"name": "Quickshell.Io",
"description": "Io types",
"details": ""
}

View file

@ -0,0 +1,33 @@
{
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "System tray",
"details": "Referencing the SystemTray singleton will make quickshell start tracking\nsystem tray contents, which are updated as the tray changes, and can be\naccessed via the `items` property.\n",
"flags": [
"singleton"
],
"properties": {
"items": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "local",
"module": "Quickshell.Services.SystemTray",
"name": "SystemTrayItem"
}
},
"details": "List of all system tray icons.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {}
}

View file

@ -0,0 +1,16 @@
{
"type": "enum",
"description": null,
"details": null,
"variants": {
"ApplicationStatus": {
"details": "The fallback category for general applications or anything that does\nnot fit into a different category.\n"
},
"SystemServices": {
"details": "System services such as IMEs or disk indexing.\n"
},
"Hardware": {
"details": "Hardware controls like battery indicators or volume control.\n"
}
}
}

View file

@ -0,0 +1,156 @@
{
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "An item in the system tray.",
"details": "A system tray item, roughly conforming to the [kde/freedesktop spec]\n(there is no real spec, we just implemented whatever seemed to actually be used).\n\nThe associated context menu can be retrieved using a [SystemTrayMenuWatcher](../systemtraymenuwatcher).\n\n[kde/freedesktop spec]: https://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/StatusNotifierItem/\n",
"flags": [
"uncreatable"
],
"properties": {
"onlyMenu": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If this tray item only offers a menu and activation will do nothing.\n",
"flags": [
"readonly"
]
},
"status": {
"type": {
"type": "local",
"module": "Quickshell.Services.SystemTray",
"name": "SystemTrayStatus"
},
"details": null,
"flags": [
"readonly"
]
},
"id": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "A name unique to the application, such as its name.\n",
"flags": [
"readonly"
]
},
"tooltipTitle": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
},
"icon": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Icon source string, usable as an Image source.\n",
"flags": [
"readonly"
]
},
"title": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Text that describes the application.\n",
"flags": [
"readonly"
]
},
"category": {
"type": {
"type": "local",
"module": "Quickshell.Services.SystemTray",
"name": "SystemTrayCategory"
},
"details": null,
"flags": [
"readonly"
]
},
"tooltipDescription": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "activate",
"id": "activate)",
"details": "Primary activation action, generally triggered via a left click.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "scroll",
"id": "scroll(int_bool)",
"details": "Scroll action, such as changing volume on a mixer.\n",
"params": [
{
"name": "delta",
"type": {
"type": "qt",
"module": "qml",
"name": "int"
}
},
{
"name": "horizontal",
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "secondaryActivate",
"id": "secondaryActivate)",
"details": "Secondary activation action, generally triggered via a middle click.\n",
"params": []
}
],
"signals": {}
}

View file

@ -0,0 +1,33 @@
{
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Accessor for SystemTrayItem menus.",
"details": "SystemTrayMenuWatcher provides access to the associated\n[DBusMenuItem](../../quickshell.dbusmenu/dbusmenuitem) for a tray item.\n",
"properties": {
"trayItem": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": "The tray item to watch.\n"
},
"menu": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": "The menu associated with the tray item. Will be null if `trayItem` is null\nor has no associated menu.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {}
}

View file

@ -0,0 +1,16 @@
{
"type": "enum",
"description": null,
"details": null,
"variants": {
"NeedsAttention": {
"details": "An item that needs attention conveys very important information such as low battery.\n"
},
"Passive": {
"details": "A passive item does not convey important information and can be considered idle. You may want to hide these.\n"
},
"Active": {
"details": "An active item may have information more important than a passive one and you probably do not want to hide it.\n"
}
}
}

View file

@ -0,0 +1,4 @@
{
"description": "Types for implementing a system tray",
"details": ""
}

View file

@ -0,0 +1,291 @@
{
"name": "Greetd",
"module": "Quickshell.Services.Greetd",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": null,
"details": "This object provides access to a running greetd instance if present.\nWith it you can authenticate a user and launch a session.\n\nSee [the greetd wiki] for instructions on how to set up a graphical greeter.\n\n[the greetd wiki]: https://man.sr.ht/~kennylevinsen/greetd/#setting-up-greetd-with-gtkgreet\n",
"flags": [
"singleton"
],
"properties": {
"user": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The currently authenticating user.\n",
"flags": [
"readonly"
]
},
"state": {
"type": {
"type": "local",
"module": "Quickshell.Services.Greetd",
"name": "GreetdState"
},
"details": "The current state of the greetd connection.\n",
"flags": [
"readonly"
]
},
"available": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the greetd socket is available.\n",
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "cancelSession",
"id": "cancelSession",
"details": "Cancel the active greetd session.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "createSession",
"id": "createSession",
"details": "Create a greetd session for the given user.\n",
"params": [
{
"name": "user",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "launch",
"id": "launch",
"details": "Launch the session, exiting quickshell.\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"state\" >}} must be `GreetdState.ReadyToLaunch` to call this function.\n",
"params": [
{
"name": "command",
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "launch",
"id": "launch",
"details": "Launch the session, exiting quickshell.\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"state\" >}} must be `GreetdState.ReadyToLaunch` to call this function.\n",
"params": [
{
"name": "command",
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
},
{
"name": "environment",
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "launch",
"id": "launch",
"details": "Launch the session, exiting quickshell if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"quit\" >}} is true.\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"state\" >}} must be `GreetdState.ReadyToLaunch` to call this function.\n\nThe {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"launched\" >}} signal can be used to perform an action after greetd has acknowledged\nthe desired session.\n\n{{< callout type=\"warning\" >}}\n Note that greetd expects the greeter to terminate as soon as possible\nafter setting a target session, and waiting too long may lead to unexpected behavior\nsuch as the greeter restarting.\n\nPerforming animations and such should be done *before* calling {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"launch\" >}}.\n\n{{< /callout >}}",
"params": [
{
"name": "command",
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
},
{
"name": "environment",
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
},
{
"name": "quit",
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "respond",
"id": "respond",
"details": "Respond to an authentication message.\n\nMay only be called in response to an {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"signal\" mname=\"authMessage\" >}} with `responseRequired` set to true.\n",
"params": [
{
"name": "response",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
}
],
"signals": {
"readyToLaunch": {
"name": "readyToLaunch",
"details": "Authentication has finished successfully and greetd can now launch a session.\n",
"params": []
},
"launched": {
"name": "launched",
"details": "Greetd has acknowledged the launch request and the greeter should quit as soon as possible.\n\nThis signal is sent right before quickshell exits automatically if the launch was not specifically\nrequested not to exit. You usually don't need to use this signal.\n",
"params": []
},
"authMessage": {
"name": "authMessage",
"details": "An authentication message has been sent by greetd.\n- `message` - the text of the message\n- `error` - if the message should be displayed as an error\n- `responseRequired` - if a response via `respond()` is required for this message\n- `echoResponse` - if the response should be displayed in clear text to the user\n\nNote that `error` and `responseRequired` are mutually exclusive.\n\nErrors are sent through `authMessage` when they are recoverable, such as a fingerprint scanner\nnot being able to read a finger correctly, while definite failures such as a bad password are\nsent through `authFailure`.\n",
"params": [
{
"name": "message",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
},
{
"name": "error",
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
}
},
{
"name": "responseRequired",
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
}
},
{
"name": "echoResponse",
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
}
}
]
},
"error": {
"name": "error",
"details": "Greetd has encountered an error.\n",
"params": [
{
"name": "error",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
},
"authFailure": {
"name": "authFailure",
"details": "Authentication has failed an the session has terminated.\n\nUsually this is something like a timeout or a failed password entry.\n",
"params": [
{
"name": "message",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
}
},
"variants": {}
}

View file

@ -0,0 +1,56 @@
{
"name": "GreetdState",
"module": "Quickshell.Services.Greetd",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "State of the Greetd connection.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Greetd\" name=\"Greetd\" mtype=\"prop\" mname=\"state\" >}}.\n",
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString",
"details": null,
"params": [
{
"name": "value",
"type": {
"type": "local",
"module": "Quickshell.Services.Greetd",
"name": "GreetdState"
}
}
]
}
],
"signals": {},
"variants": {
"Inactive": {
"details": null
},
"Launching": {
"details": null
},
"ReadyToLaunch": {
"details": null
},
"Authenticating": {
"details": null
},
"Launched": {
"details": null
}
}
}

View file

@ -0,0 +1,5 @@
{
"name": "Quickshell.Services.Greetd",
"description": "Greetd integration",
"details": ""
}

View file

@ -0,0 +1,36 @@
{
"name": "Mpris",
"module": "Quickshell.Services.Mpris",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": null,
"details": null,
"flags": [
"singleton"
],
"properties": {
"players": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell.Services.Mpris",
"name": "MprisPlayer"
}
},
"details": "All connected MPRIS players.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,50 @@
{
"name": "MprisLoopState",
"module": "Quickshell.Services.Mpris",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Loop state of an MprisPlayer",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Mpris\" name=\"MprisPlayer\" mtype=\"prop\" mname=\"loopState\" >}}.\n",
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString",
"details": null,
"params": [
{
"name": "status",
"type": {
"type": "local",
"module": "Quickshell.Services.Mpris",
"name": "MprisLoopState"
}
}
]
}
],
"signals": {},
"variants": {
"Playlist": {
"details": null
},
"None": {
"details": null
},
"Track": {
"details": null
}
}
}

View file

@ -0,0 +1,50 @@
{
"name": "MprisPlaybackState",
"module": "Quickshell.Services.Mpris",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Playback state of an MprisPlayer",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Mpris\" name=\"MprisPlayer\" mtype=\"prop\" mname=\"playbackState\" >}}.\n",
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString",
"details": null,
"params": [
{
"name": "status",
"type": {
"type": "local",
"module": "Quickshell.Services.Mpris",
"name": "MprisPlaybackState"
}
}
]
}
],
"signals": {},
"variants": {
"Stopped": {
"details": null
},
"Paused": {
"details": null
},
"Playing": {
"details": null
}
}
}

View file

@ -0,0 +1,534 @@
{
"name": "MprisPlayer",
"module": "Quickshell.Services.Mpris",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "A media player exposed over MPRIS.",
"details": "A media player exposed over MPRIS.\n\n{{< callout type=\"warning\" >}}\n Support for various functionality and general compliance to\nthe MPRIS specification varies wildly by player.\nAlways check the associated `canXyz` and `xyzSupported` properties if available.\n{{< /callout >}}\n\n{{< callout type=\"info\" >}}\n The TrackList and Playlist interfaces were not implemented as we could not\nfind any media players using them to test against.\n\n{{< /callout >}}",
"flags": [
"uncreatable"
],
"properties": {
"desktopEntry": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The name of the desktop entry for the media player, or an empty string if not provided.\n",
"flags": [
"readonly"
]
},
"maxRate": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": null,
"flags": [
"readonly"
]
},
"supportedUriSchemes": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
},
"details": "Uri schemes supported by {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"openUri\" >}}.\n",
"flags": [
"readonly"
]
},
"fullscreen": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the player is currently shown in fullscreen.\n\nMay only be written to if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canSetFullscreen\" >}} is true.\n"
},
"canGoNext": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"identity": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The human readable name of the media player.\n",
"flags": [
"readonly"
]
},
"loopState": {
"type": {
"type": "local",
"module": "Quickshell.Services.Mpris",
"name": "MprisLoopState"
},
"details": "The loop state of the media player, or `None` if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"loopSupported\" >}} is false.\n\nMay only be written to if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canControl\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"loopSupported\" >}} are true.\n"
},
"canSetFullscreen": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"canControl": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"positionSupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"trackArtists": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
},
"details": "The current track's artists, or an empty list if none were provided.\n",
"flags": [
"readonly"
]
},
"volumeSupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"canPause": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"metadata": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": "Metadata of the current track.\n\nA map of common properties is available [here](https://www.freedesktop.org/wiki/Specifications/mpris-spec/metadata).\nDo not count on any of them actually being present.\n\nNote that the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"trackTitle\" >}}, {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"trackAlbum\" >}}, {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"trackAlbumArtist\" >}}, {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"trackArtists\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"trackArtUrl\" >}}\nproperties have extra logic to guard against bad players sending weird metadata, and should\nbe used over grabbing the properties directly from the metadata.\n",
"flags": [
"readonly"
]
},
"trackAlbum": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The current track's album, or \"Unknown Album\" if none was provided.\n",
"flags": [
"readonly"
]
},
"trackArtUrl": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The current track's art url, or `\"\"` if none was provided.\n",
"flags": [
"readonly"
]
},
"supportedMimeTypes": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
},
"details": "Mime types supported by {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"openUri\" >}}.\n",
"flags": [
"readonly"
]
},
"lengthSupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"position": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "The current position in the playing track, as seconds, with millisecond precision,\nor `0` if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"positionSupported\" >}} is false.\n\nMay only be written to if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canSeek\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"positionSupported\" >}} are true.\n\n{{< callout type=\"warning\" >}}\n To avoid excessive property updates wasting CPU while `position` is not\nactively monitored, `position` usually will not update reactively, unless a nonlinear\nchange in position occurs, however reading it will always return the current position.\n\nIf you want to actively monitor the position, the simplest way it to emit the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"signal\" mname=\"positionChanged\" >}}\nsignal manually for the duration you are monitoring it, Using a {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"FrameAnimation\" mtype=\"\" mname=\"\" >}} if you need\nthe value to update smoothly, such as on a slider, or a {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Timer\" mtype=\"\" mname=\"\" >}} if not, as shown below.\n\n```qml {filename=\"Using a FrameAnimation\"}\nFrameAnimation {\n // only emit the signal when the position is actually changing.\n running: player.playbackState == MprisPlaybackState.Playing\n // emit the positionChanged signal every frame.\n onTriggered: player.positionChanged()\n}\n```\n\n```qml {filename=\"Using a Timer\"}\nTimer {\n // only emit the signal when the position is actually changing.\n running: player.playbackState == MprisPlaybackState.Playing\n // Make sure the position updates at least once per second.\n interval: 1000\n repeat: true\n // emit the positionChanged signal every second.\n onTriggered: player.positionChanged()\n}\n```\n\n{{< /callout >}}"
},
"length": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "The length of the playing track, as seconds, with millisecond precision,\nor the value of {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"position\" >}} if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"lengthSupported\" >}} is false.\n",
"flags": [
"readonly"
]
},
"playbackState": {
"type": {
"type": "local",
"module": "Quickshell.Services.Mpris",
"name": "MprisPlaybackState"
},
"details": "The playback state of the media player.\n\n- If {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canPlay\" >}} is false, you cannot assign the `Playing` state.\n- If {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canPause\" >}} is false, you cannot assign the `Paused` state.\n- If {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canControl\" >}} is false, you cannot assign the `Stopped` state.\n(or any of the others, though their repsective properties will also be false)\n"
},
"volume": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "The volume of the playing track from 0.0 to 1.0, or 1.0 if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"volumeSupported\" >}} is false.\n\nMay only be written to if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canControl\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"volumeSupported\" >}} are true.\n"
},
"trackTitle": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The title of the current track, or \"Unknown Track\" if none was provided.\n",
"flags": [
"readonly"
]
},
"canPlay": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"canRaise": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"canGoPrevious": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"canTogglePlaying": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"rate": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "The speed the song is playing at, as a multiplier.\n\nOnly values between {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"minRate\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"maxRate\" >}} (inclusive) may be written to the property.\nAdditionally, It is recommended that you only write common values such as `0.25`, `0.5`, `1.0`, `2.0`\nto the property, as media players are free to ignore the value, and are more likely to\naccept common ones.\n"
},
"shuffle": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the play queue is currently being shuffled, or false if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"shuffleSupported\" >}} is false.\n\nMay only be written if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canControl\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"shuffleSupported\" >}} are true.\n"
},
"loopSupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"shuffleSupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"trackAlbumArtist": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The current track's album artist, or \"Unknown Artist\" if none was provided.\n",
"flags": [
"readonly"
]
},
"canSeek": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"canQuit": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"minRate": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": null,
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "next",
"id": "next",
"details": "Play the next song.\n\nMay only be called if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canGoNext\" >}} is true.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "openUri",
"id": "openUri",
"details": "Open the given URI in the media player.\n\nMany players will silently ignore this, especially if the uri\ndoes not match {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"supportedUriSchemes\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"supportedMimeTypes\" >}}.\n",
"params": [
{
"name": "uri",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "pause",
"id": "pause",
"details": "Equivalent to setting {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"playbackState\" >}} to `Paused`.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "play",
"id": "play",
"details": "Equivalent to setting {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"playbackState\" >}} to `Playing`.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "previous",
"id": "previous",
"details": "Play the previous song, or go back to the beginning of the current one.\n\nMay only be called if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canGoPrevious\" >}} is true.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "quit",
"id": "quit",
"details": "Quit the media player.\n\nMay only be called if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canQuit\" >}} is true.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "raise",
"id": "raise",
"details": "Bring the media player to the front of the window stack.\n\nMay only be called if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canRaise\" >}} is true.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "seek",
"id": "seek",
"details": "Change `position` by an offset.\n\nEven if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"positionSupported\" >}} is false and you cannot set `position`,\nthis function may work.\n\nMay only be called if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canSeek\" >}} is true.\n",
"params": [
{
"name": "offset",
"type": {
"type": "qt",
"module": "qml",
"name": "real"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "stop",
"id": "stop",
"details": "Equivalent to setting {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"playbackState\" >}} to `Stopped`.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "togglePlaying",
"id": "togglePlaying",
"details": "Equivalent to calling {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"play\" >}} if not playing or {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"pause\" >}} if playing.\n\nMay only be called if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canTogglePlaying\" >}} is true, which is equivalent to\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canPlay\" >}} or {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"canPause\" >}} depending on the current playback state.\n",
"params": []
}
],
"signals": {
"trackChanged": {
"name": "trackChanged",
"details": null,
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,5 @@
{
"name": "Quickshell.Services.Mpris",
"description": "Mpris Service",
"details": ""
}

View file

@ -0,0 +1,236 @@
{
"name": "Notification",
"module": "Quickshell.Services.Notifications",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "A notification emitted by a NotificationServer.",
"details": "A notification emitted by a NotificationServer.\n\n{{< callout type=\"info\" >}}\n This type is {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"\" mname=\"\" >}}. It\ncan be retained after destruction if necessary.\n\n{{< /callout >}}",
"flags": [
"uncreatable"
],
"properties": {
"hasActionIcons": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If actions associated with this notification have icons available.\n\nSee {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"NotificationAction\" mtype=\"prop\" mname=\"identifier\" >}} for details.\n",
"flags": [
"readonly"
]
},
"urgency": {
"type": {
"type": "local",
"module": "Quickshell.Services.Notifications",
"name": "NotificationUrgency"
},
"details": null,
"flags": [
"readonly"
]
},
"appIcon": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The sending application's icon. If none was provided, then the icon from an associated\ndesktop entry will be retrieved. If none was found then \"\".\n",
"flags": [
"readonly"
]
},
"desktopEntry": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The name of the sender's desktop entry or \"\" if none was supplied.\n",
"flags": [
"readonly"
]
},
"appName": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The sending application's name.\n",
"flags": [
"readonly"
]
},
"body": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
},
"resident": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If true, the notification will not be destroyed after an action is invoked.\n",
"flags": [
"readonly"
]
},
"expireTimeout": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "Time in seconds the notification should be valid for\n",
"flags": [
"readonly"
]
},
"summary": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The image associated with this notification, or \"\" if none.\n",
"flags": [
"readonly"
]
},
"lastGeneration": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If this notification was carried over from the last generation\nwhen quickshell reloaded.\n\nNotifications from the last generation will only be emitted\nif {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"NotificationServer\" mtype=\"prop\" mname=\"keepOnReload\" >}} is true.\n",
"flags": [
"readonly"
]
},
"hints": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": "All hints sent by the client application as a javascript object.\nMany common hints are exposed via other properties.\n",
"flags": [
"readonly"
]
},
"id": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "Id of the notification as given to the client.\n",
"flags": [
"readonly"
]
},
"transient": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If true, the notification should skip any kind of persistence function like a notification area.\n",
"flags": [
"readonly"
]
},
"actions": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "local",
"module": "Quickshell.Services.Notifications",
"name": "NotificationAction"
}
},
"details": "Actions that can be taken for this notification.\n",
"flags": [
"readonly"
]
},
"image": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "An image associated with the notification.\n\nThis image is often something like a profile picture in instant messaging applications.\n",
"flags": [
"readonly"
]
},
"tracked": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the notification is tracked by the notification server.\n\nSetting this property to false is equivalent to calling {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"dismiss\" >}}.\n"
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "dismiss",
"id": "dismiss",
"details": "Destroy the notification and hint to the remote application that it was\nexplicitly closed by the user.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "expire",
"id": "expire",
"details": "Destroy the notification and hint to the remote application that it has\ntimed out an expired.\n",
"params": []
}
],
"signals": {
"closed": {
"name": "closed",
"details": "Sent when a notification has been closed.\n\nThe notification object will be destroyed as soon as all signal handlers exit.\n",
"params": [
{
"name": "reason",
"type": {
"type": "local",
"module": "Quickshell.Services.Notifications",
"name": "NotificationCloseReason"
}
}
]
}
},
"variants": {}
}

View file

@ -0,0 +1,54 @@
{
"name": "NotificationAction",
"module": "Quickshell.Services.Notifications",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "An action associated with a Notification.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"Notification\" mtype=\"prop\" mname=\"actions\" >}}.\n",
"flags": [
"uncreatable"
],
"properties": {
"identifier": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The identifier of the action.\n\nWhen {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"Notification\" mtype=\"prop\" mname=\"hasActionIcons\" >}} is true, this property will be an icon name.\nWhen it is false, this property is irrelevant.\n",
"flags": [
"readonly"
]
},
"text": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The localized text that should be displayed on a button.\n",
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "invoke",
"id": "invoke",
"details": "Invoke the action. If {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"Notification\" mtype=\"prop\" mname=\"resident\" >}} is false it will be dismissed.\n",
"params": []
}
],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,50 @@
{
"name": "NotificationCloseReason",
"module": "Quickshell.Services.Notifications",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "The reason a Notification was closed.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"Notification\" mtype=\"signal\" mname=\"closed\" >}}.\n",
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString",
"details": null,
"params": [
{
"name": "value",
"type": {
"type": "local",
"module": "Quickshell.Services.Notifications",
"name": "NotificationCloseReason"
}
}
]
}
],
"signals": {},
"variants": {
"CloseRequested": {
"details": "The remote application requested the notification be removed.\n"
},
"Dismissed": {
"details": "The notification was explicitly dismissed by the user.\n"
},
"Expired": {
"details": "The notification expired due to a timeout.\n"
}
}
}

View file

@ -0,0 +1,133 @@
{
"name": "NotificationServer",
"module": "Quickshell.Services.Notifications",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Desktop Notifications Server.",
"details": "An implementation of the [Desktop Notifications Specification] for receiving notifications\nfrom external applications.\n\nThe server does not advertise most capabilities by default. See the individual properties for details.\n\n[Desktop Notifications Specification]: https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html\n",
"properties": {
"persistenceSupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the notification server should advertise that it can persist notifications in the background\nafter going offscreen. Defaults to false.\n"
},
"imageSupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the notification server should advertise that it supports images. Defaults to false.\n"
},
"bodyImagesSupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If notification body text should be advertised as supporting images as described in [the specification]\nDefaults to false.\n\nNote that returned notifications may still contain images if this property is false, as it is only a hint.\n\n[the specification]: https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html#images\n"
},
"trackedNotifications": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell.Services.Notifications",
"name": "Notification"
}
},
"details": "All notifications currently tracked by the server.\n",
"flags": [
"readonly"
]
},
"actionsSupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If notification actions should be advertised as supported by the notification server. Defaults to false.\n"
},
"bodyHyperlinksSupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If notification body text should be advertised as supporting hyperlinks as described in [the specification]\nDefaults to false.\n\nNote that returned notifications may still contain hyperlinks if this property is false, as it is only a hint.\n\n[the specification]: https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html#hyperlinks\n"
},
"bodySupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If notification body text should be advertised as supported by the notification server.\nDefaults to true.\n\nNote that returned notifications are likely to return body text even if this property is false,\nas it is only a hint.\n"
},
"extraHints": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
},
"details": "Extra hints to expose to notification clients.\n"
},
"keepOnReload": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If notifications should be re-emitted when quickshell reloads. Defaults to true.\n\nThe {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"Notification\" mtype=\"prop\" mname=\"lastGeneration\" >}} flag will be\nset on notifications from the prior generation for further filtering/handling.\n"
},
"bodyMarkupSupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If notification body text should be advertised as supporting markup as described in [the specification]\nDefaults to false.\n\nNote that returned notifications may still contain markup if this property is false,\nas it is only a hint. By default Text objects will try to render markup. To avoid this\nif any is sent, change {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Text\" mtype=\"prop\" mname=\"textFormat\" >}} to `PlainText`.\n"
},
"actionIconsSupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If notification actions should be advertised as supporting the display of icons. Defaults to false.\n"
}
},
"functions": [],
"signals": {
"notification": {
"name": "notification",
"details": "Sent when a notification is received by the server.\n\nIf this notification should not be discarded, set its `tracked` property to true.\n",
"params": [
{
"name": "notification",
"type": {
"type": "local",
"module": "Quickshell.Services.Notifications",
"name": "Notification"
}
}
]
}
},
"variants": {}
}

View file

@ -0,0 +1,50 @@
{
"name": "NotificationUrgency",
"module": "Quickshell.Services.Notifications",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "The urgency level of a Notification.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"Notification\" mtype=\"prop\" mname=\"urgency\" >}}.\n",
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString",
"details": null,
"params": [
{
"name": "value",
"type": {
"type": "local",
"module": "Quickshell.Services.Notifications",
"name": "NotificationUrgency"
}
}
]
}
],
"signals": {},
"variants": {
"Normal": {
"details": null
},
"Low": {
"details": null
},
"Critical": {
"details": null
}
}
}

View file

@ -0,0 +1,5 @@
{
"name": "Quickshell.Services.Notifications",
"description": "Types for implementing a notification daemon",
"details": ""
}

View file

@ -0,0 +1,162 @@
{
"name": "PamContext",
"module": "Quickshell.Services.Pam",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Connection to pam.",
"details": "Connection to pam. See [the module documentation](./) for pam configuration advice.\n",
"properties": {
"configDirectory": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The pam configuration directory to use. Defaults to `/etc/pam.d`.\n\nThe configuration directory is resolved relative to the current file if not an absolute path.\n\nThis property may not be set while {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"active\" >}} is true.\n"
},
"responseVisible": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the user's response should be visible. Only valid when {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"responseRequired\" >}} is true.\n",
"flags": ["readonly"]
},
"user": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The user to authenticate as. If unset the current user will be used.\n\nThis property may not be set while {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"active\" >}} is true.\n"
},
"active": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the pam context is actively performing an authentication.\n\nSetting this value behaves exactly the same as calling {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"start\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"abort\" >}}.\n"
},
"config": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The pam configuration to use. Defaults to \"login\".\n\nThe configuration should name a file inside {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"configDirectory\" >}}.\n\nThis property may not be set while {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"active\" >}} is true.\n"
},
"message": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The last message sent by pam.\n",
"flags": ["readonly"]
},
"messageIsError": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the last message should be shown as an error.\n",
"flags": ["readonly"]
},
"responseRequired": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If pam currently wants a response.\n\nResponses can be returned with the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"respond\" >}} function.\n",
"flags": ["readonly"]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "abort",
"id": "abort",
"details": "Abort a running authentication session.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "respond",
"id": "respond",
"details": "Respond to pam.\n\nMay not be called unless {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"responseRequired\" >}} is true.\n",
"params": [
{
"name": "response",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"name": "start",
"id": "start",
"details": "Start an authentication session. Returns if the session was started successfully.\n",
"params": []
}
],
"signals": {
"pamMessage": {
"name": "pamMessage",
"details": "Emitted whenever pam sends a new message, after the change signals for\n`message`, `messageIsError`, and `responseRequired`.\n",
"params": []
},
"error": {
"name": "error",
"details": "Emitted if pam fails to perform authentication normally.\n\nA `completed(PamResult.Error)` will be emitted after this event.\n",
"params": [
{
"name": "error",
"type": {
"type": "local",
"module": "Quickshell.Services.Pam",
"name": "PamError"
}
}
]
},
"completed": {
"name": "completed",
"details": "Emitted whenever authentication completes.\n",
"params": [
{
"name": "result",
"type": {
"type": "local",
"module": "Quickshell.Services.Pam",
"name": "PamResult"
}
}
]
}
},
"variants": {}
}

View file

@ -0,0 +1,50 @@
{
"name": "PamError",
"module": "Quickshell.Services.Pam",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "An error that occurred during an authentication.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pam\" name=\"PamContext\" mtype=\"signal\" mname=\"error\" >}}.\n",
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString",
"details": null,
"params": [
{
"name": "value",
"type": {
"type": "local",
"module": "Quickshell.Services.Pam",
"name": "PamError"
}
}
]
}
],
"signals": {},
"variants": {
"TryAuthFailed": {
"details": "Failed to try to authenticate the user.\nThis is not the same as the user failing to authenticate.\n"
},
"InternalError": {
"details": "An error occurred inside quickshell's pam interface.\n"
},
"StartFailed": {
"details": "Failed to start the pam session.\n"
}
}
}

View file

@ -0,0 +1,53 @@
{
"name": "PamResult",
"module": "Quickshell.Services.Pam",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "The result of an authentication.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pam\" name=\"PamContext\" mtype=\"signal\" mname=\"completed\" >}}.\n",
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString",
"details": null,
"params": [
{
"name": "value",
"type": {
"type": "local",
"module": "Quickshell.Services.Pam",
"name": "PamResult"
}
}
]
}
],
"signals": {},
"variants": {
"Success": {
"details": "Authentication was successful.\n"
},
"Error": {
"details": "An error occurred while trying to authenticate.\n"
},
"Failed": {
"details": "Authentication failed.\n"
},
"MaxTries": {
"details": "The authentication method ran out of tries and should not be used again.\n"
}
}
}

View file

@ -0,0 +1,5 @@
{
"name": "Quickshell.Services.Pam",
"description": "Pam authentication",
"details": "## Writing pam configurations\n\nIt is a good idea to write pam configurations specifically for quickshell\nif you want to do anything other than match the default login flow.\n\nA good example of this is having a configuration that allows entering a password\nor fingerprint in any order.\n\n### Structure of a pam configuration.\nPam configuration files are a list of rules, each on a new line in the following form:\n```\n<type> <control_flag> <module_path> [options]\n```\n\nEach line runs in order.\n\nPamContext currently only works with the `auth` type, as other types require root\naccess to check.\n\n#### Control flags\nThe control flags you're likely to use are `required` and `sufficient`.\n- `required` rules must pass for authentication to succeed.\n- `sufficient` rules will bypass any remaining rules and return on success.\n\nNote that you should have at least one required rule or pam will fail with an undocumented error.\n\n#### Modules\nPam works with a set of modules that handle various authentication mechanisms.\nSome common ones include `pam_unix.so` which handles passwords and `pam_fprintd.so`\nwhich handles fingerprints.\n\nThese modules have options but none are required for basic functionality.\n\n### Examples\n\nAuthenticate with only a password:\n```\nauth required pam_unix.so\n```\n\nAuthenticate with only a fingerprint:\n```\nauth required pam_fprintd.so\n```\n\nTry to authenticate with a fingerprint first, but if that fails fall back to a password:\n```\nauth sufficient pam_fprintd.so\nauth required pam_unix.so\n```\n\nRequire both a fingerprint and a password:\n```\nauth required pam_fprintd.so\nauth required pam_unix.so\n```\n\n\nSee also: [Oracle: PAM configuration file](https://docs.oracle.com/cd/E19683-01/816-4883/pam-32/index.html)"
}

View file

@ -0,0 +1,88 @@
{
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Contains links to all pipewire objects.",
"details": "",
"flags": [
"singleton"
],
"properties": {
"defaultAudioSource": {
"type": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwNode"
},
"details": "The default audio source or `null`.\n",
"flags": [
"readonly"
]
},
"linkGroups": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwLinkGroup"
}
},
"details": "All pipewire link groups.\n",
"flags": [
"readonly"
]
},
"nodes": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwNode"
}
},
"details": "All pipewire nodes.\n",
"flags": [
"readonly"
]
},
"defaultAudioSink": {
"type": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwNode"
},
"details": "The default audio sink or `null`.\n",
"flags": [
"readonly"
]
},
"links": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwLink"
}
},
"details": "All pipewire links.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,162 @@
{
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": null,
"details": null,
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString(PwAudioChannel)",
"details": "Print a human readable representation of the given channel,\nincluding aux and custom channel ranges.\n",
"params": [
{
"name": "value",
"type": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwAudioChannel"
}
}
]
}
],
"signals": {},
"variants": {
"TopFrontLeftCenter": {
"details": null
},
"FrontLeft": {
"details": null
},
"TopSideRight": {
"details": null
},
"TopFrontRightCenter": {
"details": null
},
"TopFrontRight": {
"details": null
},
"TopSideLeft": {
"details": null
},
"SideRight": {
"details": null
},
"Mono": {
"details": null
},
"BottomCenter": {
"details": null
},
"RearLeft": {
"details": null
},
"BottomLeftCenter": {
"details": null
},
"RearLeftCenter": {
"details": null
},
"TopFrontCenter": {
"details": null
},
"FrontRightWide": {
"details": null
},
"NA": {
"details": null
},
"FrontRightCenter": {
"details": null
},
"FrontRightHigh": {
"details": null
},
"LowFrequencyEffectsRight": {
"details": null
},
"TopRearRight": {
"details": null
},
"Unknown": {
"details": null
},
"TopFrontLeft": {
"details": null
},
"TopCenter": {
"details": null
},
"CustomRangeStart": {
"details": "The end of the custom channel range.\n\nValues starting at CustomRangeStart are valid.\n"
},
"FrontLeftCenter": {
"details": null
},
"RearRightCenter": {
"details": null
},
"TopRearCenter": {
"details": null
},
"SideLeft": {
"details": null
},
"FrontCenterHigh": {
"details": null
},
"LowFrequencyEffects2": {
"details": null
},
"AuxRangeEnd": {
"details": "The end of the aux channel range.\n\nValues between AuxRangeStart and AuxRangeEnd are valid.\n"
},
"FrontLeftHigh": {
"details": null
},
"TopRearLeft": {
"details": null
},
"RearRight": {
"details": null
},
"LowFrequencyEffectsLeft": {
"details": null
},
"FrontRight": {
"details": null
},
"RearCenter": {
"details": null
},
"BottomRightCenter": {
"details": null
},
"FrontLeftWide": {
"details": null
},
"LowFrequencyEffects": {
"details": null
},
"AuxRangeStart": {
"details": "The start of the aux channel range.\n\nValues between AuxRangeStart and AuxRangeEnd are valid.\n"
},
"FrontCenter": {
"details": null
}
}
}

View file

@ -0,0 +1,62 @@
{
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "A connection between pipewire nodes.",
"details": "Note that there is one link per *channel* of a connection between nodes.\nYou usually want [PwLinkGroup](../pwlinkgroup).\n",
"flags": [
"uncreatable"
],
"properties": {
"state": {
"type": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwLinkState"
},
"details": "The current state of the link.\n\n**This property is invalid unless the link is [bound](../pwobjecttracker).**\n",
"flags": [
"readonly"
]
},
"target": {
"type": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwNode"
},
"details": "The node that is *receiving* information. (the sink)\n",
"flags": [
"readonly"
]
},
"id": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "The pipewire object id of the link.\n\nMainly useful for debugging. you can inspect the link directly\nwith `pw-cli i <id>`.\n",
"flags": [
"readonly"
]
},
"source": {
"type": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwNode"
},
"details": "The node that is *sending* information. (the source)\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,51 @@
{
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "A group of connections between pipewire nodes.",
"details": "A group of connections between pipewire nodes, one per source->target pair.\n",
"flags": [
"uncreatable"
],
"properties": {
"target": {
"type": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwNode"
},
"details": "The node that is *receiving* information. (the sink)\n",
"flags": [
"readonly"
]
},
"source": {
"type": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwNode"
},
"details": "The node that is *sending* information. (the source)\n",
"flags": [
"readonly"
]
},
"state": {
"type": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwLinkState"
},
"details": "The current state of the link group.\n\n**This property is invalid unless the link is [bound](../pwobjecttracker).**\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,60 @@
{
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": null,
"details": null,
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString(PwLinkState)",
"details": null,
"params": [
{
"name": "value",
"type": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwLinkState"
}
}
]
}
],
"signals": {},
"variants": {
"Error": {
"details": null
},
"Paused": {
"details": null
},
"Allocating": {
"details": null
},
"Active": {
"details": null
},
"Init": {
"details": null
},
"Negotiating": {
"details": null
},
"Unlinked": {
"details": null
}
}
}

View file

@ -0,0 +1,106 @@
{
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "A node in the pipewire connection graph.",
"details": "",
"flags": [
"uncreatable"
],
"properties": {
"nickname": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The node's nickname, corrosponding to the object's `node.nickname` property.\n\nMay be empty. Generally but not always more human readable than `description`.\n",
"flags": [
"readonly"
]
},
"audio": {
"type": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwNodeAudio"
},
"details": "Extra information present only if the node sends or receives audio.\n",
"flags": [
"readonly"
]
},
"isSink": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If `true`, then the node accepts audio input from other nodes,\nif `false` the node outputs audio to other nodes.\n",
"flags": [
"readonly"
]
},
"isStream": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If `true` then the node is likely to be a program, if false it is liekly to be hardware.\n",
"flags": [
"readonly"
]
},
"name": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The node's name, corrosponding to the object's `node.name` property.\n",
"flags": [
"readonly"
]
},
"properties": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": "The property set present on the node, as an object containing key-value pairs.\nYou can inspect this directly with `pw-cli i <id>`.\n\nA few properties of note, which may or may not be present:\n- `application.name` - A suggested human readable name for the node.\n- `application.icon-name` - The name of an icon recommended to display for the node.\n- `media.name` - A description of the currently playing media.\n (more likely to be present than `media.title` and `media.artist`)\n- `media.title` - The title of the currently playing media.\n- `media.artist` - The artist of the currently playing media.\n\n**This property is invalid unless the node is [bound](../pwobjecttracker).**\n",
"flags": [
"readonly"
]
},
"description": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The node's description, corrosponding to the object's `node.description` property.\n\nMay be empty. Generally more human readable than `name`.\n",
"flags": [
"readonly"
]
},
"id": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "The pipewire object id of the node.\n\nMainly useful for debugging. you can inspect the node directly\nwith `pw-cli i <id>`.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,63 @@
{
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Audio specific properties of pipewire nodes.",
"details": "",
"flags": [
"uncreatable"
],
"properties": {
"volume": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "The average volume over all channels of the node.\nSetting this property modifies the volume of all channels proportionately.\n\n**This property is invalid unless the node is [bound](../pwobjecttracker).**\n"
},
"channels": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwAudioChannel"
}
},
"details": "The audio channels present on the node.\n\n**This property is invalid unless the node is [bound](../pwobjecttracker).**\n",
"flags": [
"readonly"
]
},
"muted": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the node is currently muted. Setting this property changes the mute state.\n\n**This property is invalid unless the node is [bound](../pwobjecttracker).**\n"
},
"volumes": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "real"
}
},
"details": "The volumes of each audio channel individually. Each entry corrosponds to\nthe channel at the same index in `channels`. `volumes` and `channels` will always be\nthe same length.\n\n**This property is invalid unless the node is [bound](../pwobjecttracker).**\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,39 @@
{
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Tracks all link connections to a given node.",
"details": "",
"properties": {
"linkGroups": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwLinkGroup"
}
},
"details": "Link groups connected to the given node.\n\nIf the node is a sink, links which target the node will be tracked.\nIf the node is a source, links which source the node will be tracked.\n",
"flags": [
"readonly"
]
},
"node": {
"type": {
"type": "local",
"module": "Quickshell.Services.PipeWire",
"name": "PwNode"
},
"details": "The node to track connections to.\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,28 @@
{
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Binds pipewire objects.",
"details": "If the object list of at least one PwObjectTracker contains a given pipewire object,\nit will become *bound* and you will be able to interact with bound-only properties.\n",
"properties": {
"objects": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
"details": "The list of objects to bind.\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,4 @@
{
"description": "Pipewire API",
"details": ""
}

View file

@ -0,0 +1,90 @@
{
"name": "Pipewire",
"module": "Quickshell.Services.Pipewire",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Contains links to all pipewire objects.",
"details": "",
"flags": [
"singleton"
],
"properties": {
"nodes": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwNode"
}
},
"details": "All pipewire nodes.\n",
"flags": [
"readonly"
]
},
"defaultAudioSource": {
"type": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwNode"
},
"details": "The default audio source or `null`.\n",
"flags": [
"readonly"
]
},
"defaultAudioSink": {
"type": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwNode"
},
"details": "The default audio sink or `null`.\n",
"flags": [
"readonly"
]
},
"linkGroups": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwLinkGroup"
}
},
"details": "All pipewire link groups.\n",
"flags": [
"readonly"
]
},
"links": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwLink"
}
},
"details": "All pipewire links.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,164 @@
{
"name": "PwAudioChannel",
"module": "Quickshell.Services.Pipewire",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Audio channel of a pipewire node.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pipewire\" name=\"PwNodeAudio\" mtype=\"prop\" mname=\"channels\" >}}.\n",
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString",
"details": "Print a human readable representation of the given channel,\nincluding aux and custom channel ranges.\n",
"params": [
{
"name": "value",
"type": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwAudioChannel"
}
}
]
}
],
"signals": {},
"variants": {
"Unknown": {
"details": null
},
"FrontLeftWide": {
"details": null
},
"TopSideLeft": {
"details": null
},
"FrontRightWide": {
"details": null
},
"FrontLeft": {
"details": null
},
"TopFrontCenter": {
"details": null
},
"LowFrequencyEffects2": {
"details": null
},
"TopRearLeft": {
"details": null
},
"BottomRightCenter": {
"details": null
},
"RearLeft": {
"details": null
},
"AuxRangeStart": {
"details": "The start of the aux channel range.\n\nValues between AuxRangeStart and AuxRangeEnd are valid.\n"
},
"LowFrequencyEffectsLeft": {
"details": null
},
"RearCenter": {
"details": null
},
"Mono": {
"details": null
},
"CustomRangeStart": {
"details": "The end of the custom channel range.\n\nValues starting at CustomRangeStart are valid.\n"
},
"SideLeft": {
"details": null
},
"TopSideRight": {
"details": null
},
"TopFrontRight": {
"details": null
},
"TopCenter": {
"details": null
},
"FrontRightCenter": {
"details": null
},
"TopRearCenter": {
"details": null
},
"FrontLeftCenter": {
"details": null
},
"TopFrontLeft": {
"details": null
},
"BottomLeftCenter": {
"details": null
},
"TopFrontRightCenter": {
"details": null
},
"LowFrequencyEffectsRight": {
"details": null
},
"SideRight": {
"details": null
},
"FrontCenter": {
"details": null
},
"RearRightCenter": {
"details": null
},
"TopFrontLeftCenter": {
"details": null
},
"AuxRangeEnd": {
"details": "The end of the aux channel range.\n\nValues between AuxRangeStart and AuxRangeEnd are valid.\n"
},
"TopRearRight": {
"details": null
},
"FrontLeftHigh": {
"details": null
},
"NA": {
"details": null
},
"LowFrequencyEffects": {
"details": null
},
"BottomCenter": {
"details": null
},
"FrontRightHigh": {
"details": null
},
"FrontCenterHigh": {
"details": null
},
"FrontRight": {
"details": null
},
"RearRight": {
"details": null
},
"RearLeftCenter": {
"details": null
}
}
}

View file

@ -0,0 +1,64 @@
{
"name": "PwLink",
"module": "Quickshell.Services.Pipewire",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "A connection between pipewire nodes.",
"details": "Note that there is one link per *channel* of a connection between nodes.\nYou usually want {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pipewire\" name=\"PwLinkGroup\" mtype=\"\" mname=\"\" >}}.\n",
"flags": [
"uncreatable"
],
"properties": {
"target": {
"type": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwNode"
},
"details": "The node that is *receiving* information. (the sink)\n",
"flags": [
"readonly"
]
},
"state": {
"type": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwLinkState"
},
"details": "The current state of the link.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}",
"flags": [
"readonly"
]
},
"id": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "The pipewire object id of the link.\n\nMainly useful for debugging. you can inspect the link directly\nwith `pw-cli i <id>`.\n",
"flags": [
"readonly"
]
},
"source": {
"type": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwNode"
},
"details": "The node that is *sending* information. (the source)\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,53 @@
{
"name": "PwLinkGroup",
"module": "Quickshell.Services.Pipewire",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "A group of connections between pipewire nodes.",
"details": "A group of connections between pipewire nodes, one per source->target pair.\n",
"flags": [
"uncreatable"
],
"properties": {
"state": {
"type": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwLinkState"
},
"details": "The current state of the link group.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}",
"flags": [
"readonly"
]
},
"target": {
"type": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwNode"
},
"details": "The node that is *receiving* information. (the sink)\n",
"flags": [
"readonly"
]
},
"source": {
"type": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwNode"
},
"details": "The node that is *sending* information. (the source)\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,62 @@
{
"name": "PwLinkState",
"module": "Quickshell.Services.Pipewire",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "State of a pipewire link.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pipewire\" name=\"PwLink\" mtype=\"prop\" mname=\"state\" >}}.\n",
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString",
"details": null,
"params": [
{
"name": "value",
"type": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwLinkState"
}
}
]
}
],
"signals": {},
"variants": {
"Unlinked": {
"details": null
},
"Paused": {
"details": null
},
"Error": {
"details": null
},
"Allocating": {
"details": null
},
"Init": {
"details": null
},
"Negotiating": {
"details": null
},
"Active": {
"details": null
}
}
}

View file

@ -0,0 +1,108 @@
{
"name": "PwNode",
"module": "Quickshell.Services.Pipewire",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "A node in the pipewire connection graph.",
"details": "",
"flags": [
"uncreatable"
],
"properties": {
"isSink": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If `true`, then the node accepts audio input from other nodes,\nif `false` the node outputs audio to other nodes.\n",
"flags": [
"readonly"
]
},
"nickname": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The node's nickname, corrosponding to the object's `node.nickname` property.\n\nMay be empty. Generally but not always more human readable than {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"description\" >}}.\n",
"flags": [
"readonly"
]
},
"id": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "The pipewire object id of the node.\n\nMainly useful for debugging. you can inspect the node directly\nwith `pw-cli i <id>`.\n",
"flags": [
"readonly"
]
},
"isStream": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If `true` then the node is likely to be a program, if false it is liekly to be hardware.\n",
"flags": [
"readonly"
]
},
"name": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The node's name, corrosponding to the object's `node.name` property.\n",
"flags": [
"readonly"
]
},
"properties": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": "The property set present on the node, as an object containing key-value pairs.\nYou can inspect this directly with `pw-cli i <id>`.\n\nA few properties of note, which may or may not be present:\n- `application.name` - A suggested human readable name for the node.\n- `application.icon-name` - The name of an icon recommended to display for the node.\n- `media.name` - A description of the currently playing media.\n (more likely to be present than `media.title` and `media.artist`)\n- `media.title` - The title of the currently playing media.\n- `media.artist` - The artist of the currently playing media.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}",
"flags": [
"readonly"
]
},
"description": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The node's description, corrosponding to the object's `node.description` property.\n\nMay be empty. Generally more human readable than {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"name\" >}}.\n",
"flags": [
"readonly"
]
},
"audio": {
"type": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwNodeAudio"
},
"details": "Extra information present only if the node sends or receives audio.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,65 @@
{
"name": "PwNodeAudio",
"module": "Quickshell.Services.Pipewire",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Audio specific properties of pipewire nodes.",
"details": "Extra properties of a {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pipewire\" name=\"PwNode\" mtype=\"\" mname=\"\" >}} if the node is an audio node.\n\nSee {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pipewire\" name=\"PwNode\" mtype=\"prop\" mname=\"audio\" >}}.\n",
"flags": [
"uncreatable"
],
"properties": {
"channels": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwAudioChannel"
}
},
"details": "The audio channels present on the node.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}",
"flags": [
"readonly"
]
},
"volumes": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "real"
}
},
"details": "The volumes of each audio channel individually. Each entry corrosponds to\nthe volume of the channel at the same index in {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"channels\" >}}. {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"volumes\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"channels\" >}}\nwill always be the same length.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}"
},
"muted": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the node is currently muted. Setting this property changes the mute state.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}"
},
"volume": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "The average volume over all channels of the node.\nSetting this property modifies the volume of all channels proportionately.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,41 @@
{
"name": "PwNodeLinkTracker",
"module": "Quickshell.Services.Pipewire",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Tracks all link connections to a given node.",
"details": "",
"properties": {
"linkGroups": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwLinkGroup"
}
},
"details": "Link groups connected to the given node.\n\nIf the node is a sink, links which target the node will be tracked.\nIf the node is a source, links which source the node will be tracked.\n",
"flags": [
"readonly"
]
},
"node": {
"type": {
"type": "local",
"module": "Quickshell.Services.Pipewire",
"name": "PwNode"
},
"details": "The node to track connections to.\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,30 @@
{
"name": "PwObjectTracker",
"module": "Quickshell.Services.Pipewire",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Binds pipewire objects.",
"details": "If the object list of at least one PwObjectTracker contains a given pipewire object,\nit will become *bound* and you will be able to interact with bound-only properties.\n",
"properties": {
"objects": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
"details": "The list of objects to bind.\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,5 @@
{
"name": "Quickshell.Services.Pipewire",
"description": "Pipewire API",
"details": ""
}

View file

@ -0,0 +1,36 @@
{
"name": "SystemTray",
"module": "Quickshell.Services.SystemTray",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "System tray",
"details": "Referencing the SystemTray singleton will make quickshell start tracking\nsystem tray contents, which are updated as the tray changes, and can be\naccessed via the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"items\" >}} property.\n",
"flags": [
"singleton"
],
"properties": {
"items": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell.Services.SystemTray",
"name": "SystemTrayItem"
}
},
"details": "List of all system tray icons.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,18 @@
{
"name": "SystemTrayCategory",
"module": "Quickshell.Services.SystemTray",
"type": "enum",
"description": "Category of a SystemTrayItem.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.SystemTray\" name=\"SystemTrayItem\" mtype=\"prop\" mname=\"category\" >}}.\n",
"variants": {
"Hardware": {
"details": "Hardware controls like battery indicators or volume control.\n"
},
"SystemServices": {
"details": "System services such as IMEs or disk indexing.\n"
},
"ApplicationStatus": {
"details": "The fallback category for general applications or anything that does\nnot fit into a different category.\n"
}
}
}

View file

@ -0,0 +1,206 @@
{
"name": "SystemTrayItem",
"module": "Quickshell.Services.SystemTray",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "An item in the system tray.",
"details": "A system tray item, roughly conforming to the [kde/freedesktop spec]\n(there is no real spec, we just implemented whatever seemed to actually be used).\n\n[kde/freedesktop spec]: https://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/StatusNotifierItem/\n",
"flags": [
"uncreatable"
],
"properties": {
"status": {
"type": {
"type": "local",
"module": "Quickshell.Services.SystemTray",
"name": "SystemTrayStatus"
},
"details": null,
"flags": [
"readonly"
]
},
"tooltipTitle": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
},
"icon": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Icon source string, usable as an Image source.\n",
"flags": [
"readonly"
]
},
"onlyMenu": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If this tray item only offers a menu and activation will do nothing.\n",
"flags": [
"readonly"
]
},
"title": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Text that describes the application.\n",
"flags": [
"readonly"
]
},
"id": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "A name unique to the application, such as its name.\n",
"flags": [
"readonly"
]
},
"hasMenu": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If this tray item has an associated menu accessible via {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"display\" >}}\nor a\t{{< qmltypelink type=\"local\" module=\"Quickshell.Services.SystemTray\" name=\"SystemTrayMenuWatcher\" mtype=\"\" mname=\"\" >}}.\n",
"flags": [
"readonly"
]
},
"tooltipDescription": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
},
"category": {
"type": {
"type": "local",
"module": "Quickshell.Services.SystemTray",
"name": "SystemTrayCategory"
},
"details": null,
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "activate",
"id": "activate",
"details": "Primary activation action, generally triggered via a left click.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "display",
"id": "display",
"details": "Display a platform menu at the given location relative to the parent window.\n",
"params": [
{
"name": "parentWindow",
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
{
"name": "relativeX",
"type": {
"type": "qt",
"module": "qml",
"name": "int"
}
},
{
"name": "relativeY",
"type": {
"type": "qt",
"module": "qml",
"name": "int"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "scroll",
"id": "scroll",
"details": "Scroll action, such as changing volume on a mixer.\n",
"params": [
{
"name": "delta",
"type": {
"type": "qt",
"module": "qml",
"name": "int"
}
},
{
"name": "horizontal",
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "secondaryActivate",
"id": "secondaryActivate",
"details": "Secondary activation action, generally triggered via a middle click.\n",
"params": []
}
],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,36 @@
{
"name": "SystemTrayMenuWatcher",
"module": "Quickshell.Services.SystemTray",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Accessor for SystemTrayItem menus.",
"details": "SystemTrayMenuWatcher provides access to the associated\n{{< qmltypelink type=\"local\" module=\"Quickshell.DBusMenu\" name=\"DBusMenuItem\" mtype=\"\" mname=\"\" >}} for a tray item.\n",
"properties": {
"menu": {
"type": {
"type": "local",
"module": "Quickshell.DBusMenu",
"name": "DBusMenuItem"
},
"details": "The menu associated with the tray item. Will be null if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"trayItem\" >}} is null\nor has no associated menu.\n",
"flags": [
"readonly"
]
},
"trayItem": {
"type": {
"type": "local",
"module": "Quickshell.Services.SystemTray",
"name": "SystemTrayItem"
},
"details": "The tray item to watch.\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,18 @@
{
"name": "SystemTrayStatus",
"module": "Quickshell.Services.SystemTray",
"type": "enum",
"description": "Statis of a SystemTrayItem.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.SystemTray\" name=\"SystemTrayItem\" mtype=\"prop\" mname=\"status\" >}}.\n",
"variants": {
"NeedsAttention": {
"details": "An item that needs attention conveys very important information such as low battery.\n"
},
"Active": {
"details": "An active item may have information more important than a passive one and you probably do not want to hide it.\n"
},
"Passive": {
"details": "A passive item does not convey important information and can be considered idle. You may want to hide these.\n"
}
}
}

View file

@ -0,0 +1,5 @@
{
"name": "Quickshell.Services.SystemTray",
"description": "Types for implementing a system tray",
"details": ""
}

View file

@ -0,0 +1,58 @@
{
"name": "UPower",
"module": "Quickshell.Services.UPower",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": null,
"details": null,
"flags": [
"singleton"
],
"properties": {
"onBattery": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the system is currently running on battery power, or discharging.\n",
"flags": [
"readonly"
]
},
"devices": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell.Services.UPower",
"name": "UPowerDevice"
}
},
"details": "All connected UPower devices.\n",
"flags": [
"readonly"
]
},
"displayDevice": {
"type": {
"type": "local",
"module": "Quickshell.Services.UPower",
"name": "UPowerDevice"
},
"details": "UPower's DisplayDevice for your system. Can be `null`.\n\nThis is an aggregate device and not a physical one, meaning you will not find it in {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"devices\" >}}.\nIt is typically the device that is used for displaying information in desktop environments.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,185 @@
{
"name": "UPowerDevice",
"module": "Quickshell.Services.UPower",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "A device exposed through the UPower system service.",
"details": "",
"flags": [
"uncreatable"
],
"properties": {
"isPresent": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the power source is present in the bay or slot, useful for hot-removable batteries.\n\nIf the device `type` is not `Battery`, then the property will be invalid.\n",
"flags": [
"readonly"
]
},
"healthPercentage": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "Health of the device as a percentage of its original health.\n",
"flags": [
"readonly"
]
},
"energy": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "Current energy level of the device in watt-hours.\n",
"flags": [
"readonly"
]
},
"isLaptopBattery": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the device is a laptop battery or not. Use this to check if your device is a valid battery.\n\nThis will be equivalent to {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"type\" >}} == Battery && {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"powerSupply\" >}} == true.\n",
"flags": [
"readonly"
]
},
"iconName": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Name of the icon representing the current state of the device, or an empty string if not provided.\n",
"flags": [
"readonly"
]
},
"energyCapacity": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "Maximum energy capacity of the device in watt-hours\n",
"flags": [
"readonly"
]
},
"powerSupply": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the device is a power supply for your computer and can provide charge.\n",
"flags": [
"readonly"
]
},
"percentage": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "Current charge level as a percentage.\n\nThis would be equivalent to {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"energy\" >}} / {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"energyCapacity\" >}}.\n",
"flags": [
"readonly"
]
},
"state": {
"type": {
"type": "local",
"module": "Quickshell.Services.UPower",
"name": "UPowerDeviceState"
},
"details": "Current state of the device.\n",
"flags": [
"readonly"
]
},
"changeRate": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "Rate of energy change in watts (positive when charging, negative when discharging).\n",
"flags": [
"readonly"
]
},
"healthSupported": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"timeToEmpty": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "Estimated time until the device is fully discharged, in seconds.\n\nWill be set to `0` if charging.\n",
"flags": [
"readonly"
]
},
"timeToFull": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "Estimated time until the device is fully charged, in seconds.\n\nWill be set to `0` if discharging.\n",
"flags": [
"readonly"
]
},
"type": {
"type": {
"type": "local",
"module": "Quickshell.Services.UPower",
"name": "UPowerDeviceType"
},
"details": "The type of device.\n",
"flags": [
"readonly"
]
},
"nativePath": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Native path of the device specific to your OS.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,62 @@
{
"name": "UPowerDeviceState",
"module": "Quickshell.Services.UPower",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Power state of a UPower device.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.UPower\" name=\"UPowerDevice\" mtype=\"prop\" mname=\"state\" >}}.\n",
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString",
"details": null,
"params": [
{
"name": "status",
"type": {
"type": "local",
"module": "Quickshell.Services.UPower",
"name": "UPowerDeviceState"
}
}
]
}
],
"signals": {},
"variants": {
"PendingCharge": {
"details": "The device is waiting to be charged after it was plugged in.\n"
},
"PendingDischarge": {
"details": "The device is waiting to be discharged after being unplugged.\n"
},
"Empty": {
"details": null
},
"FullyCharged": {
"details": null
},
"Unknown": {
"details": null
},
"Discharging": {
"details": null
},
"Charging": {
"details": null
}
}
}

View file

@ -0,0 +1,128 @@
{
"name": "UPowerDeviceType",
"module": "Quickshell.Services.UPower",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Type of a UPower device.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.UPower\" name=\"UPowerDevice\" mtype=\"prop\" mname=\"type\" >}}.\n",
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString",
"details": null,
"params": [
{
"name": "type",
"type": {
"type": "local",
"module": "Quickshell.Services.UPower",
"name": "UPowerDeviceType"
}
}
]
}
],
"signals": {},
"variants": {
"Monitor": {
"details": null
},
"Touchpad": {
"details": null
},
"Unknown": {
"details": null
},
"Keyboard": {
"details": null
},
"Battery": {
"details": null
},
"Video": {
"details": null
},
"RemoteControl": {
"details": null
},
"Printer": {
"details": null
},
"Scanner": {
"details": null
},
"Pen": {
"details": null
},
"Phone": {
"details": null
},
"OtherAudio": {
"details": null
},
"Headset": {
"details": null
},
"Mouse": {
"details": null
},
"Camera": {
"details": null
},
"Computer": {
"details": null
},
"GamingInput": {
"details": null
},
"Pda": {
"details": null
},
"BluetoothGeneric": {
"details": null
},
"Wearable": {
"details": null
},
"LinePower": {
"details": null
},
"MediaPlayer": {
"details": null
},
"Speakers": {
"details": null
},
"Tablet": {
"details": null
},
"Headphones": {
"details": null
},
"Toy": {
"details": null
},
"Ups": {
"details": null
},
"Modem": {
"details": null
},
"Network": {
"details": null
}
}
}

View file

@ -0,0 +1,5 @@
{
"name": "Quickshell.Services.UPower",
"description": "UPower Service",
"details": ""
}

View file

@ -0,0 +1,165 @@
{
"name": "Toplevel",
"module": "Quickshell.Wayland",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Window from another application.",
"details": "A window/toplevel from another application, retrievable from\nthe {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"ToplevelManager\" mtype=\"\" mname=\"\" >}}.\n",
"flags": [
"uncreatable"
],
"properties": {
"appId": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
},
"minimized": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the window is currently minimized.\n\nMinimization can be requested by setting this property, though it may\nbe ignored by the compositor.\n"
},
"fullscreen": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the window is currently fullscreen.\n\nFullscreen can be requested by setting this property, though it may\nbe ignored by the compositor.\nFullscreen can be requested on a specific screen with the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"fullscreenOn\" >}} function.\n"
},
"activated": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the window is currently activated or focused.\n\nActivation can be requested with the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"activate\" >}} function.\n",
"flags": [
"readonly"
]
},
"maximized": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the window is currently maximized.\n\nMaximization can be requested by setting this property, though it may\nbe ignored by the compositor.\n"
},
"parent": {
"type": {
"type": "local",
"module": "Quickshell.Wayland",
"name": "Toplevel"
},
"details": "Parent toplevel if this toplevel is a modal/dialog, otherwise null.\n",
"flags": [
"readonly"
]
},
"title": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "activate",
"id": "activate",
"details": "Request that this toplevel is activated.\nThe request may be ignored by the compositor.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "fullscreenOn",
"id": "fullscreenOn",
"details": "Request that this toplevel is fullscreened on a specific screen.\nThe request may be ignored by the compositor.\n",
"params": [
{
"name": "screen",
"type": {
"type": "local",
"module": "Quickshell",
"name": "ShellScreen"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "setRectangle",
"id": "setRectangle",
"details": "Provide a hint to the compositor where the visual representation\nof this toplevel is relative to a quickshell window.\nThis hint can be used visually in operations like minimization.\n",
"params": [
{
"name": "window",
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
{
"name": "rect",
"type": {
"type": "qt",
"module": "qml",
"name": "rect"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "unsetRectangle",
"id": "unsetRectangle",
"details": null,
"params": []
}
],
"signals": {
"closed": {
"name": "closed",
"details": null,
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,36 @@
{
"name": "ToplevelManager",
"module": "Quickshell.Wayland",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Exposes a list of Toplevels.",
"details": "Exposes a list of windows from other applications as {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"Toplevel\" mtype=\"\" mname=\"\" >}}s via the\n[zwlr-foreign-toplevel-management-v1](https://wayland.app/protocols/wlr-foreign-toplevel-management-unstable-v1)\nwayland protocol.\n",
"flags": [
"singleton"
],
"properties": {
"toplevels": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell.Wayland",
"name": "Toplevel"
}
},
"details": null,
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,47 @@
{
"name": "WlSessionLock",
"module": "Quickshell.Wayland",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "Reloadable"
},
"description": "Wayland session locker.",
"details": "Wayland session lock implemented using the [ext_session_lock_v1] protocol.\n\nWlSessionLock will create an instance of its `surface` component for every screen when\n`locked` is set to true. The `surface` component must create a {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlSessionLockSurface\" mtype=\"\" mname=\"\" >}}\nwhich will be displayed on each screen.\n\nThe below example will create a session lock that disappears when the button is clicked.\n```qml\nWlSessionLock {\n id: lock\n\n WlSessionLockSurface {\n Button {\n text: \"unlock me\"\n onClicked: lock.locked = false\n }\n }\n}\n\n// ...\nlock.locked = true\n```\n\n{{< callout type=\"warning\" >}}\n If the WlSessionLock is destroyed or quickshell exits without setting `locked`\nto false, conformant compositors will leave the screen locked and painted with a solid\ncolor.\n\nThis is what makes the session lock secure. The lock dying will not expose your session,\nbut it will render it inoperable.\n{{< /callout >}}\n\n[ext_session_lock_v1]: https://wayland.app/protocols/ext-session-lock-v1\n",
"properties": {
"locked": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "Controls the lock state.\n\n{{< callout type=\"warning\" >}}\n Only one WlSessionLock may be locked at a time. Attempting to enable a lock while\nanother lock is enabled will do nothing.\n\n{{< /callout >}}"
},
"secure": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "The compositor lock state.\n\nThis is set to true once the compositor has confirmed all screens are covered with locks.\n",
"flags": [
"readonly"
]
},
"surface": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "Component"
},
"details": "The surface that will be created for each screen. Must create a {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlSessionLockSurface\" mtype=\"\" mname=\"\" >}}.\n",
"flags": [
"default"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,97 @@
{
"name": "WlSessionLockSurface",
"module": "Quickshell.Wayland",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "Reloadable"
},
"description": "Surface to display with a `WlSessionLock`.",
"details": "Surface displayed by a {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlSessionLock\" mtype=\"\" mname=\"\" >}} when it is locked.\n",
"properties": {
"screen": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ShellScreen"
},
"details": "The screen that the surface is displayed on.\n",
"flags": [
"readonly"
]
},
"data": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
"details": null,
"flags": [
"default",
"readonly"
]
},
"visible": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the surface has been made visible.\n\nNote: SessionLockSurfaces will never become invisible, they will only be destroyed.\n",
"flags": [
"readonly"
]
},
"color": {
"type": {
"type": "qt",
"module": "qml",
"name": "color"
},
"details": "The background color of the window. Defaults to white.\n\n{{< callout type=\"warning\" >}}\n This seems to behave weirdly when using transparent colors on some systems.\nUsing a colored content item over a transparent window is the recommended way to work around this:\n```qml\nProxyWindow {\n Rectangle {\n anchors.fill: parent\n color: \"#20ffffff\"\n\n // your content here\n }\n}\n```\n... but you probably shouldn't make a transparent lock,\nand most compositors will ignore an attempt to do so.\n\n{{< /callout >}}"
},
"height": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"width": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"contentItem": {
"type": {
"type": "qt",
"module": "qml.QtQuick",
"name": "Item"
},
"details": null,
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,18 @@
{
"name": "WlrKeyboardFocus",
"module": "Quickshell.Wayland",
"type": "enum",
"description": "WlrLayershell keyboard focus mode",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlrLayershell\" mtype=\"prop\" mname=\"keyboardFocus\" >}}.\n",
"variants": {
"OnDemand": {
"details": "Access to the keyboard as determined by the operating system.\n\n{{< callout type=\"warning\" >}}\n On some systems, `OnDemand` may cause the shell window to\nretain focus over another window unexpectedly.\nYou should try `None` if you experience issues.\n\n{{< /callout >}}"
},
"None": {
"details": "No keyboard input will be accepted.\n"
},
"Exclusive": {
"details": "Exclusive access to the keyboard, locking out all other windows.\n\n{{< callout type=\"warning\" >}}\n You **CANNOT** use this to make a secure lock screen.\n\nIf you want to make a lock screen, use {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlSessionLock\" mtype=\"\" mname=\"\" >}}.\n\n{{< /callout >}}"
}
}
}

View file

@ -0,0 +1,21 @@
{
"name": "WlrLayer",
"module": "Quickshell.Wayland",
"type": "enum",
"description": "WlrLayershell layer.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlrLayershell\" mtype=\"prop\" mname=\"layer\" >}}.\n",
"variants": {
"Bottom": {
"details": "Above background, usually below windows\n"
},
"Top": {
"details": "Commonly used for panels, app launchers, and docks.\nUsually renders over normal windows and below fullscreen windows.\n"
},
"Overlay": {
"details": "Usually renders over fullscreen windows\n"
},
"Background": {
"details": "Below bottom\n"
}
}
}

View file

@ -0,0 +1,41 @@
{
"name": "WlrLayershell",
"module": "Quickshell.Wayland",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "PanelWindow"
},
"description": "Wlroots layershell window",
"details": "Decorationless window that can be attached to the screen edges using the [zwlr_layer_shell_v1] protocol.\n\n#### Attached object\n`WlrLayershell` works as an attached object of {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"PanelWindow\" mtype=\"\" mname=\"\" >}} which you should use instead if you can,\nas it is platform independent.\n\n```qml\nPanelWindow {\n // When PanelWindow is backed with WlrLayershell this will work\n WlrLayershell.layer: WlrLayer.Bottom\n}\n```\n\nTo maintain platform compatibility you can dynamically set layershell specific properties.\n```qml\nPanelWindow {\n Component.onCompleted: {\n if (this.WlrLayershell != null) {\n this.WlrLayershell.layer = WlrLayer.Bottom;\n }\n }\n}\n```\n\n[zwlr_layer_shell_v1]: https://wayland.app/protocols/wlr-layer-shell-unstable-v1\n",
"properties": {
"keyboardFocus": {
"type": {
"type": "local",
"module": "Quickshell.Wayland",
"name": "WlrKeyboardFocus"
},
"details": "The degree of keyboard focus taken. Defaults to `KeyboardFocus.None`.\n"
},
"namespace": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Similar to the class property of windows. Can be used to identify the window to external tools.\n\nCannot be set after windowConnected.\n"
},
"layer": {
"type": {
"type": "local",
"module": "Quickshell.Wayland",
"name": "WlrLayer"
},
"details": "The shell layer the window sits in. Defaults to `WlrLayer.Top`.\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,5 @@
{
"name": "Quickshell.Wayland",
"description": "Wayland specific Quickshell types",
"details": ""
}

View file

@ -0,0 +1,74 @@
{
"name": "BoundComponent",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQuick",
"name": "Item"
},
"description": "Component loader that allows setting initial properties.",
"details": "Component loader that allows setting initial properties, primarily useful for\nescaping cyclic dependency errors.\n\nProperties defined on the BoundComponent will be applied to its loaded component,\nincluding required properties, and will remain reactive. Functions created with\nthe names of signal handlers will also be attached to signals of the loaded component.\n\n```qml {filename=\"MyComponent.qml\"}\nMouseArea {\n required property color color;\n width: 100\n height: 100\n\n Rectangle {\n anchors.fill: parent\n color: parent.color\n }\n}\n```\n\n```qml\nBoundComponent {\n source: \"MyComponent.qml\"\n\n // this is the same as assigning to `color` on MyComponent if loaded normally.\n property color color: \"red\";\n\n // this will be triggered when the `clicked` signal from the MouseArea is sent.\n function onClicked() {\n color = \"blue\";\n }\n}\n```\n",
"properties": {
"implicitHeight": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": null,
"flags": [
"readonly"
]
},
"implicitWidth": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": null,
"flags": [
"readonly"
]
},
"item": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"details": "The loaded component. Will be null until it has finished loading.\n",
"flags": [
"readonly"
]
},
"sourceComponent": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "Component"
},
"details": "The source to load, as a Component.\n"
},
"bindValues": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If property values should be bound after they are initially set. Defaults to `true`.\n"
},
"source": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The source to load, as a Url.\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,76 @@
{
"name": "DesktopAction",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": null,
"details": "An action of a {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"DesktopEntry\" mtype=\"\" mname=\"\" >}}.\n",
"flags": [
"uncreatable"
],
"properties": {
"icon": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
},
"id": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
},
"name": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
},
"execString": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The raw `Exec` string from the desktop entry. You probably want {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"execute\" >}}.\n",
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "execute",
"id": "execute",
"details": "Run the application. Currently ignores {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"DesktopEntry\" mtype=\"prop\" mname=\"runInTerminal\" >}} and field codes.\n",
"params": []
}
],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,57 @@
{
"name": "DesktopEntries",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Desktop entry index.",
"details": "Index of desktop entries according to the [desktop entry specification].\n\nPrimarily useful for looking up icons and metadata from an id, as there is\ncurrently no mechanism for usage based sorting of entries and other launcher niceties.\n\n[desktop entry specification]: https://specifications.freedesktop.org/desktop-entry-spec/latest/\n",
"flags": [
"singleton"
],
"properties": {
"applications": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel",
"of": {
"type": "local",
"module": "Quickshell",
"name": "DesktopEntry"
}
},
"details": "All desktop entries of type Application that are not Hidden or NoDisplay.\n",
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "local",
"module": "Quickshell",
"name": "DesktopEntry"
},
"name": "byId",
"id": "byId",
"details": "Look up a desktop entry by name. Includes NoDisplay entries. May return null.\n",
"params": [
{
"name": "id",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
}
],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,179 @@
{
"name": "DesktopEntry",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": null,
"details": "A desktop entry. See {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"DesktopEntries\" mtype=\"\" mname=\"\" >}} for details.\n",
"flags": [
"uncreatable"
],
"properties": {
"categories": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
},
"details": null,
"flags": [
"readonly"
]
},
"genericName": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Short description of the application, such as \"Web Browser\". May be empty.\n",
"flags": [
"readonly"
]
},
"name": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Name of the specific application, such as \"Firefox\".\n",
"flags": [
"readonly"
]
},
"comment": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Long description of the application, such as \"View websites on the internet\". May be empty.\n",
"flags": [
"readonly"
]
},
"id": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
},
"runInTerminal": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the application should run in a terminal.\n",
"flags": [
"readonly"
]
},
"workingDirectory": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The working directory to execute from.\n",
"flags": [
"readonly"
]
},
"noDisplay": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If true, this application should not be displayed in menus and launchers.\n",
"flags": [
"readonly"
]
},
"icon": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Name of the icon associated with this application. May be empty.\n",
"flags": [
"readonly"
]
},
"actions": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "local",
"module": "Quickshell",
"name": "DesktopAction"
}
},
"details": null,
"flags": [
"readonly"
]
},
"keywords": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
},
"details": null,
"flags": [
"readonly"
]
},
"execString": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The raw `Exec` string from the desktop entry. You probably want {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"execute\" >}}.\n",
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "execute",
"id": "execute",
"details": "Run the application. Currently ignores {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"runInTerminal\" >}} and field codes.\n",
"params": []
}
],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,154 @@
{
"name": "EasingCurve",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Easing curve.",
"details": "Directly accessible easing curve as used in property animations.\n",
"properties": {
"curve": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": "Easing curve settings. Works exactly the same as\n[PropertyAnimation.easing](https://doc.qt.io/qt-6/qml-qtquick-propertyanimation.html#easing-prop).\n"
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "real"
},
"name": "interpolate",
"id": "interpolate",
"details": "Interpolates between two values using the given X coordinate.\n",
"params": [
{
"name": "x",
"type": {
"type": "qt",
"module": "qml",
"name": "real"
}
},
{
"name": "a",
"type": {
"type": "qt",
"module": "qml",
"name": "real"
}
},
{
"name": "b",
"type": {
"type": "qt",
"module": "qml",
"name": "real"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "point"
},
"name": "interpolate",
"id": "interpolate",
"details": "Interpolates between two points using the given X coordinate.\n",
"params": [
{
"name": "x",
"type": {
"type": "qt",
"module": "qml",
"name": "real"
}
},
{
"name": "a",
"type": {
"type": "qt",
"module": "qml",
"name": "point"
}
},
{
"name": "b",
"type": {
"type": "qt",
"module": "qml",
"name": "point"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "rect"
},
"name": "interpolate",
"id": "interpolate",
"details": "Interpolates two rects using the given X coordinate.\n",
"params": [
{
"name": "x",
"type": {
"type": "qt",
"module": "qml",
"name": "real"
}
},
{
"name": "a",
"type": {
"type": "qt",
"module": "qml",
"name": "rect"
}
},
{
"name": "b",
"type": {
"type": "qt",
"module": "qml",
"name": "rect"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "real"
},
"name": "valueAt",
"id": "valueAt",
"details": "Returns the Y value for the given X value on the curve\nfrom 0.0 to 1.0.\n",
"params": [
{
"name": "x",
"type": {
"type": "qt",
"module": "qml",
"name": "real"
}
}
]
}
],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,83 @@
{
"name": "ElapsedTimer",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Measures time between events",
"details": "The ElapsedTimer measures time since its last restart, and is useful\nfor determining the time between events that don't supply it.\n",
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "real"
},
"name": "elapsed",
"id": "elapsed",
"details": "Return the number of seconds since the timer was last\nstarted or restarted, with nanosecond precision.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "int"
},
"name": "elapsedMs",
"id": "elapsedMs",
"details": "Return the number of milliseconds since the timer was last\nstarted or restarted.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "int"
},
"name": "elapsedNs",
"id": "elapsedNs",
"details": "Return the number of nanoseconds since the timer was last\nstarted or restarted.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "real"
},
"name": "restart",
"id": "restart",
"details": "Restart the timer, returning the number of seconds since\nthe timer was last started or restarted, with nanosecond precision.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "int"
},
"name": "restartMs",
"id": "restartMs",
"details": "Restart the timer, returning the number of milliseconds since\nthe timer was last started or restarted.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "int"
},
"name": "restartNs",
"id": "restartNs",
"details": "Restart the timer, returning the number of nanoseconds since\nthe timer was last started or restarted.\n",
"params": []
}
],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,18 @@
{
"name": "ExclusionMode",
"module": "Quickshell",
"type": "enum",
"description": "Panel exclusion mode",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"PanelWindow\" mtype=\"prop\" mname=\"exclusionMode\" >}}.\n",
"variants": {
"Normal": {
"details": "Respect the exclusion zone of other shell layers and optionally set one\n"
},
"Auto": {
"details": "Decide the exclusion zone based on the window dimensions and anchors.\n\nWill attempt to reseve exactly enough space for the window and its margins if\nexactly 3 anchors are connected.\n"
},
"Ignore": {
"details": "Ignore exclusion zones of other shell layers. You cannot set an exclusion zone in this mode.\n"
}
}
}

View file

@ -0,0 +1,16 @@
{
"name": "FloatingWindow",
"module": "Quickshell",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "QsWindow"
},
"description": "Standard toplevel operating system window that looks like any other application.",
"details": "",
"properties": {},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,21 @@
{
"name": "Intersection",
"module": "Quickshell",
"type": "enum",
"description": "Intersection strategy for Regions.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Region\" mtype=\"prop\" mname=\"intersection\" >}}.\n",
"variants": {
"Xor": {
"details": "Create an intersection of this region and the other, leaving only\nthe area not covered by both. (opposite of `Intersect`)\n"
},
"Intersect": {
"details": "Create an intersection of this region and the other, leaving only\nthe area covered by both. (opposite of `Xor`)\n"
},
"Subtract": {
"details": "Subtract this region, cutting this region out of the other. (opposite of `Combine`)\n"
},
"Combine": {
"details": "Combine this region, leaving a union of this and the other region. (opposite of `Subtract`)\n"
}
}
}

View file

@ -0,0 +1,71 @@
{
"name": "LazyLoader",
"module": "Quickshell",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "Reloadable"
},
"description": "Asynchronous component loader.",
"details": "The LazyLoader can be used to prepare components that don't need to be\ncreated immediately, such as windows that aren't visible until triggered\nby another action. It works on creating the component in the gaps between\nframe rendering to prevent blocking the interface thread.\nIt can also be used to preserve memory by loading components only\nwhen you need them and unloading them afterward.\n\nNote that when reloading the UI due to changes, lazy loaders will always\nload synchronously so windows can be reused.\n\n#### Example\nThe following example creates a PopupWindow asynchronously as the bar loads.\nThis means the bar can be shown onscreen before the popup is ready, however\ntrying to show the popup before it has finished loading in the background\nwill cause the UI thread to block.\n\n```qml\nimport QtQuick\nimport QtQuick.Controls\nimport Quickshell\n\nQS_Quickshell_ShellRoot {\n QS_Quickshell_PanelWindow {\n id: window\n height: 50\n\n anchors {\n bottom: true\n left: true\n right: true\n }\n\n QS_Quickshell_LazyLoader {\n id: popupLoader\n\n // start loading immediately\n loading: true\n\n // this window will be loaded in the background during spare\n // frame time unless active is set to true, where it will be\n // loaded in the foreground\n QS_Quickshell_PopupWindow {\n // position the popup above the button\n parentWindow: window\n relativeX: window.width / 2 - width / 2\n relativeY: -height\n\n // some heavy component here\n\n width: 200\n height: 200\n }\n }\n\n QT_qtquick11controls_Button {\n anchors.centerIn: parent\n text: \"show popup\"\n\n // accessing popupLoader.item will force the loader to\n // finish loading on the UI thread if it isn't finished yet.\n onClicked: popupLoader.item.visible = !popupLoader.item.visible\n }\n }\n}\n```\n\n> [!WARNING]\n> Components that internally load other components must explicitly\n> support asynchronous loading to avoid blocking.\n> \n> Notably, {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Variants\" mtype=\"\" mname=\"\" >}} does not currently support asynchronous\n> loading, meaning using it inside a LazyLoader will block similarly to not\n> having a loader to start with.\n\n> [!WARNING]\n> LazyLoaders do not start loading before the first window is created,\n> meaning if you create all windows inside of lazy loaders, none of them will ever load.\n\n",
"properties": {
"loading": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the loader is actively loading.\n\nIf the component is not loaded, setting this property to true will start\nloading it asynchronously. If the component is already loaded, setting\nthis property has no effect.\n\nSee also: {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"activeAsync\" >}}.\n"
},
"activeAsync": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the component is fully loaded.\n\nSetting this property to true will asynchronously load the component similarly to\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"loading\" >}}. Reading it or setting it to false will behanve\nthe same as {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"active\" >}}.\n"
},
"source": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The URI to load the component from. Mutually exclusive to {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"component\" >}}.\n"
},
"active": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the component is fully loaded.\n\nSetting this property to `true` will force the component to load to completion,\nblocking the UI, and setting it to `false` will destroy the component, requiring\nit to be loaded again.\n\nSee also: {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"activeAsync\" >}}.\n"
},
"component": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "Component"
},
"details": "The component to load. Mutually exclusive to {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"source\" >}}.\n",
"flags": [
"default"
]
},
"item": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"details": "The fully loaded item if the loader is {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"loading\" >}} or {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"active\" >}}, or `null`\nif neither {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"loading\" >}} nor {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"active\" >}}.\n\nNote that the item is owned by the LazyLoader, and destroying the LazyLoader\nwill destroy the item.\n\n> [!WARNING]\n> If you access the `item` of a loader that is currently loading,\n> it will block as if you had set `active` to true immediately beforehand.\n> \n> You can instead set {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"loading\" >}} and listen to {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"signal\" mname=\"activeChanged\" >}} signal to\n> ensure loading happens asynchronously.\n\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,146 @@
{
"name": "ObjectModel",
"module": "Quickshell",
"type": "class",
"super": {
"type": "unknown",
"module": "",
"name": ""
},
"description": "View into a list of objets",
"details": "Typed view into a list of objects.\n\nAn ObjectModel works as a QML [Data Model], allowing efficient interaction with\ncomponents that act on models. It has a single role named `modelData`, to match the\nbehavior of lists.\nThe same information contained in the list model is available as a normal list\nvia the `values` property.\n\n#### Differences from a list\nUnlike with a list, the following property binding will never be updated when `model[3]` changes.\n```qml\n// will not update reactively\nproperty var foo: model[3]\n```\n\nYou can work around this limitation using the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"values\" >}} property of the model to view it as a list.\n```qml\n// will update reactively\nproperty var foo: model.values[3]\n```\n\n[Data Model]: https://doc.qt.io/qt-6/qtquick-modelviewsdata-modelview.html#qml-data-models\n",
"flags": [
"uncreatable"
],
"properties": {
"values": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
"details": "The content of the object model, as a QML list.\nThe values of this property will always be of the type of the model.\n",
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "int"
},
"name": "indexOf",
"id": "indexOf",
"details": null,
"params": [
{
"name": "object",
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
}
]
}
],
"signals": {
"objectRemovedPost": {
"name": "objectRemovedPost",
"details": "Sent immediately after an object is removed from the list.\n",
"params": [
{
"name": "object",
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
{
"name": "index",
"type": {
"type": "qt",
"module": "qml",
"name": "int"
}
}
]
},
"objectInsertedPre": {
"name": "objectInsertedPre",
"details": "Sent immediately before an object is inserted into the list.\n",
"params": [
{
"name": "object",
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
{
"name": "index",
"type": {
"type": "qt",
"module": "qml",
"name": "int"
}
}
]
},
"objectInsertedPost": {
"name": "objectInsertedPost",
"details": "Sent immediately after an object is inserted into the list.\n",
"params": [
{
"name": "object",
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
{
"name": "index",
"type": {
"type": "qt",
"module": "qml",
"name": "int"
}
}
]
},
"objectRemovedPre": {
"name": "objectRemovedPre",
"details": "Sent immediately before an object is removed from the list.\n",
"params": [
{
"name": "object",
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
{
"name": "index",
"type": {
"type": "qt",
"module": "qml",
"name": "int"
}
}
]
}
},
"variants": {}
}

View file

@ -0,0 +1,39 @@
{
"name": "ObjectRepeater",
"module": "Quickshell",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "ObjectModel"
},
"description": "A Repeater / for loop / map for non Item derived objects.",
"details": "{{< callout type=\"error\" >}}\n Removed in favor of {{< qmltypelink type=\"qt\" module=\"qml.QtQml.Models\" name=\"Instantiator\" mtype=\"\" mname=\"\" >}}\n{{< /callout >}}\n\nThe ObjectRepeater creates instances of the provided delegate for every entry in the\ngiven model, similarly to a {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Repeater\" mtype=\"\" mname=\"\" >}} but for non visual types.\n",
"flags": [
"uncreatable"
],
"properties": {
"model": {
"type": {
"type": "qt",
"module": "qml",
"name": "variant"
},
"details": "The model providing data to the ObjectRepeater.\n\nCurrently accepted model types are `list<T>` lists, javascript arrays,\nand [QAbstractListModel] derived models, though only one column will be repeated\nfrom the latter.\n\nNote: {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"ObjectModel\" mtype=\"\" mname=\"\" >}} is a [QAbstractListModel] with a single column.\n\n[QAbstractListModel]: https://doc.qt.io/qt-6/qabstractlistmodel.html\n"
},
"delegate": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "Component"
},
"details": "The delegate component to repeat.\n\nThe delegate is given the same properties as in a Repeater, except `index` which\nis not currently implemented.\n\nIf the model is a `list<T>` or javascript array, a `modelData` property will be\nexposed containing the entry from the model. If the model is a [QAbstractListModel],\nthe roles from the model will be exposed.\n\nNote: {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"ObjectModel\" mtype=\"\" mname=\"\" >}} has a single role named `modelData` for compatibility with normal lists.\n\n[QAbstractListModel]: https://doc.qt.io/qt-6/qabstractlistmodel.html\n",
"flags": [
"default"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,103 @@
{
"name": "PanelWindow",
"module": "Quickshell",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "QsWindow"
},
"description": "Decorationless window attached to screen edges by anchors.",
"details": "Decorationless window attached to screen edges by anchors.\n\n#### Example\nThe following snippet creates a white bar attached to the bottom of the screen.\n\n```qml\nPanelWindow {\n anchors {\n left: true\n bottom: true\n right: true\n }\n\n Text {\n anchors.centerIn: parent\n text: \"Hello!\"\n }\n}\n```\n",
"properties": {
"anchors": {
"type": {
"gadget": {
"bottom": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"left": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"right": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"top": {
"type": "qt",
"module": "qml",
"name": "bool"
}
}
},
"details": "Anchors attach a shell window to the sides of the screen.\nBy default all anchors are disabled to avoid blocking the entire screen due to a misconfiguration.\n\n{{< callout type=\"info\" >}}\n When two opposite anchors are attached at the same time, the corrosponding dimension\n(width or height) will be forced to equal the screen width/height.\nMargins can be used to create anchored windows that are also disconnected from the monitor sides.\n\n{{< /callout >}}"
},
"exclusiveZone": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "The amount of space reserved for the shell layer relative to its anchors.\nSetting this property sets {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"exclusionMode\" >}} to `ExclusionMode.Normal`.\n\n{{< callout type=\"info\" >}}\n Either 1 or 3 anchors are required for the zone to take effect.\n\n{{< /callout >}}"
},
"margins": {
"type": {
"gadget": {
"left": {
"type": "qt",
"module": "qml",
"name": "int"
},
"bottom": {
"type": "qt",
"module": "qml",
"name": "int"
},
"right": {
"type": "qt",
"module": "qml",
"name": "int"
},
"top": {
"type": "qt",
"module": "qml",
"name": "int"
}
}
},
"details": "Offsets from the sides of the screen.\n\n{{< callout type=\"info\" >}}\n Only applies to edges with anchors\n\n{{< /callout >}}"
},
"aboveWindows": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the panel should render above standard windows. Defaults to true.\n\nNote: On Wayland this property corrosponds to {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlrLayershell\" mtype=\"prop\" mname=\"layer\" >}}.\n"
},
"exclusionMode": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ExclusionMode"
},
"details": "Defaults to `ExclusionMode.Auto`.\n"
},
"focusable": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the panel should accept keyboard focus. Defaults to false.\n\nNote: On Wayland this property corrosponds to {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlrLayershell\" mtype=\"prop\" mname=\"keyboardFocus\" >}}.\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,27 @@
{
"name": "PersistentProperties",
"module": "Quickshell",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "Reloadable"
},
"description": "Object that holds properties that can persist across a config reload.",
"details": "PersistentProperties holds properties declated in it across a reload, which is\noften useful for things like keeping expandable popups open and styling them.\n\nBelow is an example of using `PersistentProperties` to keep track of the state\nof an expandable panel. When the configuration is reloaded, the `expanderOpen` property\nwill be saved and the expandable panel will stay in the open/closed state.\n\n```qml\nPersistentProperties {\n id: persist\n reloadableId: \"persistedStates\"\n\n property bool expanderOpen: false\n}\n\nButton {\n id: expanderButton\n anchors.centerIn: parent\n text: \"toggle expander\"\n onClicked: persist.expanderOpen = !persist.expanderOpen\n}\n\nRectangle {\n anchors.top: expanderButton.bottom\n anchors.left: expanderButton.left\n anchors.right: expanderButton.right\n height: 100\n\n color: \"lightblue\"\n visible: persist.expanderOpen\n}\n```\n",
"properties": {},
"functions": [],
"signals": {
"loaded": {
"name": "loaded",
"details": "Called every time the reload stage completes.\nWill be called every time, including when nothing was loaded from an old instance.\n",
"params": []
},
"reloaded": {
"name": "reloaded",
"details": "Called every time the properties are reloaded.\nWill not be called if no old instance was loaded.\n",
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,42 @@
{
"name": "PopupAdjustment",
"module": "Quickshell",
"type": "enum",
"description": null,
"details": null,
"variants": {
"Resize": {
"details": null
},
"All": {
"details": null
},
"ResizeX": {
"details": null
},
"ResizeY": {
"details": null
},
"SlideY": {
"details": null
},
"SlideX": {
"details": null
},
"FlipX": {
"details": null
},
"None": {
"details": null
},
"Slide": {
"details": null
},
"FlipY": {
"details": null
},
"Flip": {
"details": null
}
}
}

View file

@ -0,0 +1,71 @@
{
"name": "PopupWindow",
"module": "Quickshell",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "QsWindow"
},
"description": "Popup window.",
"details": "Popup window that can display in a position relative to a floating\nor panel window.\n\n#### Example\nThe following snippet creates a panel with a popup centered over it.\n\n```qml\nPanelWindow {\n id: toplevel\n\n anchors {\n bottom: true\n left: true\n right: true\n }\n\n PopupWindow {\n parentWindow: toplevel\n relativeX: parentWindow.width / 2 - width / 2\n relativeY: parentWindow.height\n width: 500\n height: 500\n visible: true\n }\n}\n```\n",
"properties": {
"relativeX": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "The X position of the popup relative to the parent window.\n"
},
"anchor": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": null,
"flags": [
"readonly"
]
},
"visible": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the window is shown or hidden. Defaults to false.\n"
},
"parentWindow": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"details": "The parent window of this popup.\n\nChanging this property reparents the popup.\n"
},
"relativeY": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "The Y position of the popup relative to the parent window.\n"
},
"screen": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ShellScreen"
},
"details": "The screen that the window currently occupies.\n\nThis may be modified to move the window to the given screen.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,50 @@
{
"name": "QsMenuButtonType",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Button type associated with a QsMenuEntry.",
"details": "See {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"QsMenuEntry\" mtype=\"prop\" mname=\"buttonType\" >}}.\n",
"flags": [
"enum"
],
"properties": {},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString",
"details": null,
"params": [
{
"name": "value",
"type": {
"type": "local",
"module": "Quickshell",
"name": "QsMenuButtonType"
}
}
]
}
],
"signals": {},
"variants": {
"CheckBox": {
"details": "This menu item should draw a checkbox.\n"
},
"None": {
"details": "This menu item does not have a checkbox or a radiobutton associated with it.\n"
},
"RadioButton": {
"details": "This menu item should draw a radiobutton.\n"
}
}
}

View file

@ -0,0 +1,140 @@
{
"name": "QsMenuEntry",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": null,
"details": null,
"flags": [
"uncreatable"
],
"properties": {
"hasChildren": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If this menu item has children that can be accessed through a {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"QsMenuOpener\" mtype=\"\" mname=\"\" >}}.\n",
"flags": [
"readonly"
]
},
"buttonType": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "QsMenuButtonType"
},
"details": "If this menu item has an associated checkbox or radiobutton.\n",
"flags": [
"readonly"
]
},
"text": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Text of the menu item.\n",
"flags": [
"readonly"
]
},
"icon": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Url of the menu item's icon or `\"\"` if it doesn't have one.\n\nThis can be passed to [Image.source](https://doc.qt.io/qt-6/qml-qtquick-image.html#source-prop)\nas shown below.\n\n```qml\nImage {\n source: menuItem.icon\n // To get the best image quality, set the image source size to the same size\n // as the rendered image.\n sourceSize.width: width\n sourceSize.height: height\n}\n```\n",
"flags": [
"readonly"
]
},
"isSeparator": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If this menu item should be rendered as a separator between other items.\n\nNo other properties have a meaningful value when {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"isSeparator\" >}} is true.\n",
"flags": [
"readonly"
]
},
"enabled": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"checkState": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": "The check state of the checkbox or radiobutton if applicable, as a\n[Qt.CheckState](https://doc.qt.io/qt-6/qt.html#CheckState-enum).\n",
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "display",
"id": "display",
"details": "Display a platform menu at the given location relative to the parent window.\n",
"params": [
{
"name": "parentWindow",
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
{
"name": "relativeX",
"type": {
"type": "qt",
"module": "qml",
"name": "int"
}
},
{
"name": "relativeY",
"type": {
"type": "qt",
"module": "qml",
"name": "int"
}
}
]
}
],
"signals": {
"triggered": {
"name": "triggered",
"details": "Send a trigger/click signal to the menu entry.\n",
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,41 @@
{
"name": "QsMenuOpener",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Provides access to children of a QsMenuEntry",
"details": "",
"properties": {
"menu": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "QsMenuEntry"
},
"details": "The menu to retrieve children from.\n"
},
"children": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "local",
"module": "Quickshell",
"name": "QsMenuEntry"
}
},
"details": "The children of the given menu.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,113 @@
{
"name": "QsWindow",
"module": "Quickshell",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "Reloadable"
},
"description": "Base class of Quickshell windows",
"details": "Base class of Quickshell windows\n### Attached properties\n`QSWindow` can be used as an attached object of anything that subclasses {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Item\" mtype=\"\" mname=\"\" >}}.\nIt provides the following properties\n- `window` - the `QSWindow` object.\n- `contentItem` - the `contentItem` property of the window.\n",
"flags": ["uncreatable"],
"properties": {
"width": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null
},
"height": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null
},
"data": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
"details": null,
"flags": ["default", "readonly"]
},
"backingWindowVisible": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the window is currently shown. You should generally prefer [prop||visible](#visible).\n\nThis property is useful for ensuring windows spawn in a specific order, and you should\nnot use it in place of [prop||visible](#visible).\n",
"flags": ["readonly"]
},
"contentItem": {
"type": {
"type": "qt",
"module": "qml.QtQuick",
"name": "Item"
},
"details": null,
"flags": ["readonly"]
},
"screen": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ShellScreen"
},
"details": "The screen that the window currently occupies.\n\nThis may be modified to move the window to the given screen.\n"
},
"mask": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "Region"
},
"details": "The clickthrough mask. Defaults to null.\n\nIf non null then the clickable areas of the window will be determined by the provided region.\n\n```qml\nShellWindow {\n // The mask region is set to `rect`, meaning only `rect` is clickable.\n // All other clicks pass through the window to ones behind it.\n mask: Region { item: rect }\n\n Rectangle {\n id: rect\n\n anchors.centerIn: parent\n width: 100\n height: 100\n }\n}\n```\n\nIf the provided region's intersection mode is `Combine` (the default),\nthen the region will be used as is. Otherwise it will be applied on top of the window region.\n\nFor example, setting the intersection mode to `Xor` will invert the mask and make everything in\nthe mask region not clickable and pass through clicks inside it through the window.\n\n```qml\nShellWindow {\n // The mask region is set to `rect`, but the intersection mode is set to `Xor`.\n // This inverts the mask causing all clicks inside `rect` to be passed to the window\n // behind this one.\n mask: Region { item: rect; intersection: Intersection.Xor }\n\n Rectangle {\n id: rect\n\n anchors.centerIn: parent\n width: 100\n height: 100\n }\n}\n```\n"
},
"color": {
"type": {
"type": "qt",
"module": "qml",
"name": "color"
},
"details": "The background color of the window. Defaults to white.\n\n{{< callout type=\"warning\" >}}\n This seems to behave weirdly when using transparent colors on some systems.\nUsing a colored content item over a transparent window is the recommended way to work around this:\n```qml\nProxyWindow {\n color: \"transparent\"\n Rectangle {\n anchors.fill: parent\n color: \"#20ffffff\"\n\n // your content here\n }\n}\n```\n\n{{< /callout >}}"
},
"visible": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the window should be shown or hidden. Defaults to true.\n"
},
"windowTransform": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"details": "Opaque property that will receive an update when factors that affect the window's position\nand transform changed.\n\nThis property is intended to be used to force a binding update,\nalong with map[To|From]Item (which is not reactive).\n",
"flags": ["readonly"]
}
},
"functions": [],
"signals": {
"windowConnected": {
"name": "windowConnected",
"details": null,
"params": []
}
},
"variants": {}
}

Some files were not shown because too many files have changed in this diff Show more