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,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"
]
},
"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"
},
"sourceComponent": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "Component"
},
"details": "The source to load, as a Component.\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 TYPE99MQS_Quickshell99NDesktopEntry99TYPE.\n",
"flags": [
"uncreatable"
],
"properties": {
"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 TYPE99Vexecute99Tfunc99TYPE.\n",
"flags": [
"readonly"
]
},
"icon": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "execute",
"id": "execute",
"details": "Run the application. Currently ignores TYPE99MQS_Quickshell99NDesktopEntry99VrunInTerminal99Tprop99TYPE 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 TYPE99MQS_Quickshell99NDesktopEntries99TYPE for details.\n",
"flags": [
"uncreatable"
],
"properties": {
"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"
]
},
"execString": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The raw `Exec` string from the desktop entry. You probably want TYPE99Vexecute99Tfunc99TYPE.\n",
"flags": [
"readonly"
]
},
"keywords": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "string"
}
},
"details": null,
"flags": [
"readonly"
]
},
"categories": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"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"
]
},
"actions": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "local",
"module": "Quickshell",
"name": "DesktopAction"
}
},
"details": null,
"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"
]
},
"genericName": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Short description of the application, such as \"Web Browser\". May be empty.\n",
"flags": [
"readonly"
]
},
"id": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": null,
"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"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "execute",
"id": "execute",
"details": "Run the application. Currently ignores TYPE99VrunInTerminal99Tprop99TYPE 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,24 @@
{
"name": "Edges",
"module": "Quickshell",
"type": "enum",
"description": "Top Left Right Bottom flags.",
"details": "Edge flags can be combined with the `|` operator.\n",
"variants": {
"Top": {
"details": null
},
"Left": {
"details": null
},
"None": {
"details": null
},
"Bottom": {
"details": null
},
"Right": {
"details": null
}
}
}

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 TYPE99MQS_Quickshell99NPanelWindow99VexclusionMode99Tprop99TYPE.\n",
"variants": {
"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"
},
"Normal": {
"details": "Respect the exclusion zone of other shell layers and optionally set one\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 TYPE99MQS_Quickshell99NRegion99Vintersection99Tprop99TYPE.\n",
"variants": {
"Intersect": {
"details": "Create an intersection of this region and the other, leaving only\nthe area covered by both. (opposite of `Xor`)\n"
},
"Combine": {
"details": "Combine this region, leaving a union of this and the other region. (opposite of `Subtract`)\n"
},
"Xor": {
"details": "Create an intersection of this region and the other, leaving only\nthe area not covered by both. (opposite of `Intersect`)\n"
},
"Subtract": {
"details": "Subtract this region, cutting this region out of the other. (opposite of `Combine`)\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\nShellRoot {\n PanelWindow {\n id: window\n height: 50\n\n anchors {\n bottom: true\n left: true\n right: true\n }\n\n 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 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 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] Components that internally load other components must explicitly\n> support asynchronous loading to avoid blocking.\n>\n> Notably, TYPE99MQS_Quickshell99NVariants99TYPE does not corrently 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] 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",
"properties": {
"item": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"details": "The fully loaded item if the loader is TYPE99Vloading99Tprop99TYPE or TYPE99Vactive99Tprop99TYPE, or `null`\nif neither TYPE99Vloading99Tprop99TYPE nor TYPE99Vactive99Tprop99TYPE.\n\nNote that the item is owned by the LazyLoader, and destroying the LazyLoader\nwill destroy the item.\n\n> [!WARNING] 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 TYPE99Vloading99Tprop99TYPE and listen to TYPE99VactiveChanged99Tsignal99TYPE signal to\n> ensure loading happens asynchronously.\n",
"flags": [
"readonly"
]
},
"source": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The URI to load the component from. Mutually exclusive to TYPE99Vcomponent99Tprop99TYPE.\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: TYPE99VactiveAsync99Tprop99TYPE.\n"
},
"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: TYPE99VactiveAsync99Tprop99TYPE.\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\nTYPE99Vloading99Tprop99TYPE. Reading it or setting it to false will behanve\nthe same as TYPE99Vactive99Tprop99TYPE.\n"
},
"component": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "Component"
},
"details": "The component to load. Mutually exclusive to TYPE99Vsource99Tprop99TYPE.\n",
"flags": [
"default"
]
}
},
"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 TYPE99Vvalues99Tprop99TYPE 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": {
"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"
}
}
]
},
"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"
}
}
]
},
"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"
}
}
]
},
"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,35 @@
{
"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": "> [!CAUTION] Removed in favor of TYPE99MQT_qml_QtQml_Models99NInstantiator99TYPE\n\nThe ObjectRepeater creates instances of the provided delegate for every entry in the\ngiven model, similarly to a TYPE99MQT_qml_QtQuick99NRepeater99TYPE 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: TYPE99MQS_Quickshell99NObjectModel99TYPE 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: TYPE99MQS_Quickshell99NObjectModel99TYPE 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": {
"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 TYPE99VexclusionMode99Tprop99TYPE to `ExclusionMode.Normal`.\n\n> [!NOTE] Either 1 or 3 anchors are required for the zone to take effect.\n"
},
"exclusionMode": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "ExclusionMode"
},
"details": "Defaults to `ExclusionMode.Auto`.\n"
},
"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> [!NOTE] Only applies to edges with anchors\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 TYPE99MQS_Quickshell_Wayland99NWlrLayershell99VkeyboardFocus99Tprop99TYPE.\n"
},
"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 TYPE99MQS_Quickshell_Wayland99NWlrLayershell99Vlayer99Tprop99TYPE.\n"
},
"anchors": {
"type": {
"gadget": {
"right": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"left": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"bottom": {
"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> [!NOTE] 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.\n> Margins can be used to create anchored windows that are also disconnected from the monitor sides.\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": "Adjustment strategy for popups that do not fit on screen.",
"details": "Adjustment strategy for popups. See TYPE99MQS_Quickshell99NPopupAnchor99Vadjustment99Tprop99TYPE.\n\nAdjustment flags can be combined with the `|` operator.\n\n`Flip` will be applied first, then `Slide`, then `Resize`.\n",
"variants": {
"FlipY": {
"details": "If the Y axis is constrained, the popup will invert its vertical gravity if any.\n"
},
"ResizeX": {
"details": "If the X axis is constrained, the width of the popup will be reduced to fit on screen.\n"
},
"Resize": {
"details": "Alias for `ResizeX | ResizeY`\n"
},
"ResizeY": {
"details": "If the Y axis is constrained, the height of the popup will be reduced to fit on screen.\n"
},
"All": {
"details": "Alias for `Flip | Slide | Resize`.\n"
},
"Slide": {
"details": "Alias for `SlideX | SlideY`.\n"
},
"SlideX": {
"details": "If the X axis is constrained, the popup will slide along the X axis until it fits onscreen.\n"
},
"SlideY": {
"details": "If the Y axis is constrained, the popup will slide along the Y axis until it fits onscreen.\n"
},
"Flip": {
"details": "Alias for `FlipX | FlipY`.\n"
},
"None": {
"details": null
},
"FlipX": {
"details": "If the X axis is constrained, the popup will invert its horizontal gravity if any.\n"
}
}
}

View file

@ -0,0 +1,89 @@
{
"name": "PopupAnchor",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Anchorpoint or positioner for popup windows.",
"details": "",
"flags": [
"uncreatable"
],
"properties": {
"edges": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "Edges"
},
"details": "The point on the anchor rectangle the popup should anchor to.\nOpposing edges suchs as `Edges.Left | Edges.Right` are not allowed.\n\nDefaults to `Edges.Top | Edges.Left`.\n"
},
"adjustment": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "PopupAdjustment"
},
"details": "The strategy used to adjust the popup's position if it would otherwise not fit on screen,\nbased on the anchor TYPE99Vrect99Tprop99TYPE, preferred TYPE99Vedges99Tprop99TYPE, and TYPE99Vgravity99Tprop99TYPE.\n\nSee the documentation for TYPE99MQS_Quickshell99NPopupAdjustment99TYPE for details.\n"
},
"gravity": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "Edges"
},
"details": "The direction the popup should expand towards, relative to the anchorpoint.\nOpposing edges suchs as `Edges.Left | Edges.Right` are not allowed.\n\nDefaults to `Edges.Bottom | Edges.Right`.\n"
},
"rect": {
"type": {
"gadget": {
"x": {
"type": "qt",
"module": "qml",
"name": "int"
},
"y": {
"type": "qt",
"module": "qml",
"name": "int"
},
"w": {
"type": "qt",
"module": "qml",
"name": "int"
},
"h": {
"type": "qt",
"module": "qml",
"name": "int"
},
"width": {
"type": "qt",
"module": "qml",
"name": "int"
},
"height": {
"type": "qt",
"module": "qml",
"name": "int"
}
}
},
"details": "The anchorpoints the popup will attach to. Which anchors will be used is\ndetermined by the TYPE99Vedges99Tprop99TYPE, TYPE99Vgravity99Tprop99TYPE, and TYPE99Vadjustment99Tprop99TYPE.\n\nIf you leave TYPE99Vedges99Tprop99TYPE, TYPE99Vgravity99Tprop99TYPE and TYPE99Vadjustment99Tprop99TYPE at their default values,\nsetting more than `x` and `y` does not matter.\n\n> [!NOTE] The anchor rect cannot be smaller than 1x1 pixels.\n"
},
"window": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"details": "The window to anchor / attach the popup to.\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

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": {
"parentWindow": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"details": "> [!CAUTION] Deprecated in favor of `anchor.window`.\n\nThe parent window of this popup.\n\nChanging this property reparents the popup.\n"
},
"visible": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the window is shown or hidden. Defaults to false.\n\nThe popup will not be shown until TYPE99Vanchor99Tprop99TYPE is valid, regardless of this property.\n"
},
"anchor": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "PopupAnchor"
},
"details": "The popup's anchor / positioner relative to another window. The popup will not be\nshown until it has a valid anchor relative to a window and TYPE99Vvisible99Tprop99TYPE is true.\n\nYou can set properties of the anchor like so:\n```qml\nPopupWindow {\n anchor.window: parentwindow\n // or\n anchor {\n window: parentwindow\n }\n}\n```\n",
"flags": [
"readonly"
]
},
"relativeX": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "> [!CAUTION] Deprecated in favor of `anchor.rect.x`.\n\nThe X position of the popup relative to the parent window.\n"
},
"relativeY": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "> [!CAUTION] Deprecated in favor of `anchor.rect.y`.\n\nThe 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,81 @@
{
"name": "QsMenuAnchor",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Display anchor for platform menus.",
"details": "",
"properties": {
"anchor": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "PopupAnchor"
},
"details": "The menu's anchor / positioner relative to another window. The menu will not be\nshown until it has a valid anchor.\n\n> [!NOTE] *The following is subject to change and NOT a guarantee of future behavior.*\n>\n> A snapshot of the anchor at the time TYPE99Vopened99Tsignal99TYPE is emitted will be\n> used to position the menu. Additional changes to the anchor after this point\n> will not affect the placement of the menu.\n\nYou can set properties of the anchor like so:\n```qml\nQsMenuAnchor {\n anchor.window: parentwindow\n // or\n anchor {\n window: parentwindow\n }\n}\n```\n",
"flags": [
"readonly"
]
},
"menu": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "QsMenuHandle"
},
"details": "The menu that should be displayed on this anchor.\n\nSee also: TYPE99MQS_Quickshell_Services_SystemTray99NSystemTrayItem99Vmenu99Tprop99TYPE.\n"
},
"visible": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the menu is currently open and visible.\n\nSee also: TYPE99Vopen99Tfunc99TYPE, TYPE99Vclose99Tfunc99TYPE.\n",
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "close",
"id": "close",
"details": "Close the open menu.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "open",
"id": "open",
"details": "Open the given menu on this menu Requires that TYPE99Vanchor99Tprop99TYPE is valid.\n",
"params": []
}
],
"signals": {
"closed": {
"name": "closed",
"details": "Sent when the menu is closed.\n",
"params": []
},
"opened": {
"name": "opened",
"details": "Sent when the menu is displayed onscreen which may be after TYPE99Vvisible99Tprop99TYPE\nbecomes true.\n",
"params": []
}
},
"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 TYPE99MQS_Quickshell99NQsMenuEntry99VbuttonType99Tprop99TYPE.\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": {
"None": {
"details": "This menu item does not have a checkbox or a radiobutton associated with it.\n"
},
"CheckBox": {
"details": "This menu item should draw a checkbox.\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": "local",
"module": "Quickshell",
"name": "QsMenuHandle"
},
"description": null,
"details": null,
"flags": [
"uncreatable"
],
"properties": {
"enabled": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": null,
"flags": [
"readonly"
]
},
"hasChildren": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If this menu item has children that can be accessed through a TYPE99MQS_Quickshell99NQsMenuOpener99TYPE.\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 TYPE99VisSeparator99Tprop99TYPE is true.\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"
]
},
"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"
]
},
"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"
]
},
"text": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Text of the menu item.\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,19 @@
{
"name": "QsMenuHandle",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Menu handle for QsMenuOpener",
"details": "See TYPE99MQS_Quickshell99NQsMenuOpener99TYPE.\n",
"flags": [
"uncreatable"
],
"properties": {},
"functions": [],
"signals": {},
"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": "QsMenuHandle"
},
"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,124 @@
{
"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 TYPE99MQT_qml_QtQuick99NItem99TYPE.\nIt provides the following properties\n- `window` - the `QSWindow` object.\n- `contentItem` - the `contentItem` property of the window.\n",
"flags": [
"uncreatable"
],
"properties": {
"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"
},
"height": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null
},
"width": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null
},
"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"
]
},
"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"
},
"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 window should be shown or hidden. Defaults to true.\n"
},
"color": {
"type": {
"type": "qt",
"module": "qml",
"name": "color"
},
"details": "The background color of the window. Defaults to white.\n\n> [!WARNING] This seems to behave weirdly when using transparent colors on some systems.\n> Using a colored content item over a transparent window is the recommended way to work around this:\n> ```qml\n> ProxyWindow {\n> color: \"transparent\"\n> Rectangle {\n> anchors.fill: parent\n> color: \"#20ffffff\"\n>\n> // your content here\n> }\n> }\n> ```\n"
},
"backingWindowVisible": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the window is currently shown. You should generally prefer [visible](#prop.visible).\n\nThis property is useful for ensuring windows spawn in a specific order, and you should\nnot use it in place of [visible](#prop.visible).\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {
"windowConnected": {
"name": "windowConnected",
"details": null,
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,149 @@
{
"name": "Quickshell",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": null,
"details": null,
"flags": [
"singleton"
],
"properties": {
"screens": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "local",
"module": "Quickshell",
"name": "ShellScreen"
}
},
"details": "All currently connected screens.\n\nThis property updates as connected screens change.\n\n#### Reusing a window on every screen\n```qml\nShellRoot {\n Variants {\n // see Variants for details\n variants: Quickshell.screens\n PanelWindow {\n property var modelData\n screen: modelData\n }\n }\n}\n```\n\nThis creates an instance of your window once on every screen.\nAs screens are added or removed your window will be created or destroyed on those screens.\n",
"flags": [
"readonly"
]
},
"watchFiles": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If true then the configuration will be reloaded whenever any files change.\nDefaults to true.\n"
},
"processId": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "Quickshell's process id.\n",
"flags": [
"readonly"
]
},
"workingDirectory": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Quickshell's working directory. Defaults to whereever quickshell was launched from.\n"
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "variant"
},
"name": "env",
"id": "env",
"details": "Returns the string value of an environment variable or null if it is not set.\n",
"params": [
{
"name": "variable",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "iconPath",
"id": "iconPath",
"details": "Returns a string usable for a TYPE99MQT_qml_QtQuick99NImage99Vsource99Tprop99TYPE for a given system icon.\n",
"params": [
{
"name": "icon",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "reload",
"id": "reload",
"details": "Reload the shell.\n\n`hard` - perform a hard reload. If this is false, Quickshell will attempt to reuse windows\nthat already exist. If true windows will be recreated.\n\nSee TYPE99MQS_Quickshell99NReloadable99TYPE for more information on what can be reloaded and how.\n",
"params": [
{
"name": "hard",
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
}
}
]
}
],
"signals": {
"reloadCompleted": {
"name": "reloadCompleted",
"details": "The reload sequence has completed successfully.\n",
"params": []
},
"reloadFailed": {
"name": "reloadFailed",
"details": "The reload sequence has failed.\n",
"params": [
{
"name": "errorString",
"type": {
"type": "qt",
"module": "qml",
"name": "string"
}
}
]
},
"lastWindowClosed": {
"name": "lastWindowClosed",
"details": "Sent when the last window is closed.\n\nTo make the application exit when the last window is closed run `Qt.quit()`.\n",
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,42 @@
{
"name": "QuickshellSettings",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Accessor for some options under the Quickshell type.",
"details": "",
"flags": [
"uncreatable"
],
"properties": {
"workingDirectory": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Quickshell's working directory. Defaults to whereever quickshell was launched from.\n"
},
"watchFiles": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If true then the configuration will be reloaded whenever any files change.\nDefaults to true.\n"
}
},
"functions": [],
"signals": {
"lastWindowClosed": {
"name": "lastWindowClosed",
"details": "Sent when the last window is closed.\n\nTo make the application exit when the last window is closed run `Qt.quit()`.\n",
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,101 @@
{
"name": "Region",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "A composable region used as a mask.",
"details": "See TYPE99MQS_Quickshell99NQsWindow99Vmask99Tprop99TYPE.\n",
"properties": {
"shape": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "RegionShape"
},
"details": "Defaults to `Rect`.\n"
},
"regions": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "local",
"module": "Quickshell",
"name": "Region"
}
},
"details": "Regions to apply on top of this region.\n\nRegions can be nested to create a more complex region.\nFor example this will create a square region with a cutout in the middle.\n```qml\nRegion {\n width: 100; height: 100;\n\n Region {\n x: 50; y: 50;\n width: 50; height: 50;\n intersection: Intersection.Subtract\n }\n}\n```\n",
"flags": [
"default",
"readonly"
]
},
"height": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "Defaults to 0. Does nothing if TYPE99Vitem99Tprop99TYPE is set.\n"
},
"item": {
"type": {
"type": "qt",
"module": "qml.QtQuick",
"name": "Item"
},
"details": "The item that determines the geometry of the region.\n`item` overrides TYPE99Vx99Tprop99TYPE, TYPE99Vy99Tprop99TYPE, TYPE99Vwidth99Tprop99TYPE and TYPE99Vheight99Tprop99TYPE.\n"
},
"width": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "Defaults to 0. Does nothing if TYPE99Vitem99Tprop99TYPE is set.\n"
},
"intersection": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "Intersection"
},
"details": "The way this region interacts with its parent region. Defaults to `Combine`.\n"
},
"x": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "Defaults to 0. Does nothing if TYPE99Vitem99Tprop99TYPE is set.\n"
},
"y": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "Defaults to 0. Does nothing if TYPE99Vitem99Tprop99TYPE is set.\n"
}
},
"functions": [],
"signals": {
"childrenChanged": {
"name": "childrenChanged",
"details": null,
"params": []
},
"changed": {
"name": "changed",
"details": null,
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,15 @@
{
"name": "RegionShape",
"module": "Quickshell",
"type": "enum",
"description": "Shape of a Region.",
"details": "See TYPE99MQS_Quickshell99NRegion99Vshape99Tprop99TYPE.\n",
"variants": {
"Rect": {
"details": null
},
"Ellipse": {
"details": null
}
}
}

View file

@ -0,0 +1,28 @@
{
"name": "Reloadable",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "The base class of all types that can be reloaded.",
"details": "Reloadables will attempt to take specific state from previous config revisions if possible.\nSome examples are TYPE99MQS_Quickshell99NProxyWindowBase99TYPE and TYPE99MQS_Quickshell99NPersistentProperties99TYPE\n",
"flags": [
"uncreatable"
],
"properties": {
"reloadableId": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "An additional identifier that can be used to try to match a reloadable object to its\nprevious state.\n\nSimply keeping a stable identifier across config versions (saves) is\nenough to help the reloader figure out which object in the old revision corrosponds to\nthis object in the current revision, and facilitate smoother reloading.\n\nNote that identifiers are scoped, and will try to do the right thing in context.\nFor example if you have a TYPE99MQS_Quickshell99NVariants99TYPE wrapping an object with an identified element inside,\na scope is created at the variant level.\n\n```qml\nVariants {\n // multiple variants of the same object tree\n variants: [ { foo: 1 }, { foo: 2 } ]\n\n // any non `Reloadable` object\n QtObject {\n FloatingWindow {\n // this FloatingWindow will now be matched to the same one in the previous\n // widget tree for its variant. \"myFloatingWindow\" refers to both the variant in\n // `foo: 1` and `foo: 2` for each tree.\n reloadableId: \"myFloatingWindow\"\n\n // ...\n }\n }\n}\n```\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,76 @@
{
"name": "Retainable",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Attached object for types that can have delayed destruction.",
"details": "Retainable works as an attached property that allows objects to be\nkept around (retained) after they would normally be destroyed, which\nis especially useful for things like exit transitions.\n\nAn object that is retainable will have TYPE99MQS_Quickshell99NRetainable99TYPE as an attached property.\nAll retainable objects will say that they are retainable on their respective\ntypeinfo pages.\n\n> [!NOTE] Working directly with TYPE99MQS_Quickshell99NRetainable99TYPE is often overly complicated and\n> error prone. For this reason TYPE99MQS_Quickshell99NRetainableLock99TYPE should\n> usually be used instead.\n",
"flags": [
"uncreatable"
],
"properties": {
"retained": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the object is currently in a retained state.\n",
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "forceUnlock",
"id": "forceUnlock",
"details": "Forcibly remove all locks, destroying the object.\n\nTYPE99Vunlock99Tfunc99TYPE should usually be preferred.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "lock",
"id": "lock",
"details": "Hold a lock on the object so it cannot be destroyed.\n\nA counter is used to ensure you can lock the object from multiple places\nand it will not be unlocked until the same number of unlocks as locks have occurred.\n\n> [!WARNING] It is easy to forget to unlock a locked object.\n> Doing so will create what is effectively a memory leak.\n>\n> Using TYPE99MQS_Quickshell99NRetainableLock99TYPE is recommended as it will help\n> avoid this scenario and make misuse more obvious.\n",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "unlock",
"id": "unlock",
"details": "Remove a lock on the object. See TYPE99Vlock99Tfunc99TYPE for more information.\n",
"params": []
}
],
"signals": {
"dropped": {
"name": "dropped",
"details": "This signal is sent when the object would normally be destroyed.\n\nIf all signal handlers return and no locks are in place, the object will be destroyed.\nIf at least one lock is present the object will be retained until all are removed.\n",
"params": []
},
"aboutToDestroy": {
"name": "aboutToDestroy",
"details": "This signal is sent immediately before the object is destroyed.\nAt this point destruction cannot be interrupted.\n",
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,55 @@
{
"name": "RetainableLock",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "A helper for easily using Retainable.",
"details": "A RetainableLock provides extra safety and ease of use for locking\nTYPE99MQS_Quickshell99NRetainable99TYPE objects. A retainable object can be locked by multiple\nlocks at once, and each lock re-exposes relevant properties\nof the retained objects.\n\n#### Example\nThe code below will keep a retainable object alive for as long as the\nRetainableLock exists.\n\n```qml\nRetainableLock {\n object: aRetainableObject\n locked: true\n}\n```\n",
"properties": {
"retained": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the object is currently in a retained state.\n",
"flags": [
"readonly"
]
},
"object": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"details": "The object to lock. Must be TYPE99MQS_Quickshell99NRetainable99TYPE.\n"
},
"locked": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the object should be locked.\n"
}
},
"functions": [],
"signals": {
"dropped": {
"name": "dropped",
"details": "Rebroadcast of the object's TYPE99MQS_Quickshell99NRetainable99Vdropped99Tsignal99TYPE.\n",
"params": []
},
"aboutToDestroy": {
"name": "aboutToDestroy",
"details": "Rebroadcast of the object's TYPE99MQS_Quickshell99NRetainable99VaboutToDestroy99Tsignal99TYPE.\n",
"params": []
}
},
"variants": {}
}

View file

@ -0,0 +1,34 @@
{
"name": "Scope",
"module": "Quickshell",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "Reloadable"
},
"description": "Scope that propagates reloads to child items in order.",
"details": "Convenience type equivalent to setting TYPE99MQS_Quickshell99NReloadable99VreloadableId99Tprop99TYPE for all children.\n\nNote that this does not work for visible TYPE99MQT_qml_QtQuick99NItem99TYPEs (all widgets).\n\n```qml\nShellRoot {\n Variants {\n variants: ...\n\n Scope {\n // everything in here behaves the same as if it was defined\n // directly in `Variants` reload-wise.\n }\n }\n}\n",
"properties": {
"children": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
"details": null,
"flags": [
"default",
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,28 @@
{
"name": "ShellRoot",
"module": "Quickshell",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "Scope"
},
"description": "Root config element",
"details": "",
"properties": {
"settings": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "QuickshellSettings"
},
"details": null,
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,142 @@
{
"name": "ShellScreen",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": null,
"details": "Monitor object useful for setting the monitor for a TYPE99MQS_Quickshell99NQsWindow99TYPE\nor querying information about the monitor.\n\n> [!WARNING] If the monitor is disconnected than any stored copies of its ShellMonitor will\n> be marked as dangling and all properties will return default values.\n> Reconnecting the monitor will not reconnect it to the ShellMonitor object.\n\nDue to some technical limitations, it was not possible to reuse the native qml TYPE99MQT_qml_QtQuick99NScreen99TYPE type.\n",
"flags": [
"uncreatable"
],
"properties": {
"orientation": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": null,
"flags": [
"readonly"
]
},
"width": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"y": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"logicalPixelDensity": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "The number of device-independent (scaled) pixels per millimeter.\n",
"flags": [
"readonly"
]
},
"physicalPixelDensity": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "The number of physical pixels per millimeter.\n",
"flags": [
"readonly"
]
},
"x": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"devicePixelRatio": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "The ratio between physical pixels and device-independent (scaled) pixels.\n",
"flags": [
"readonly"
]
},
"height": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"name": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "The name of the screen as seen by the operating system.\n\nUsually something like `DP-1`, `HDMI-1`, `eDP-1`.\n",
"flags": [
"readonly"
]
},
"primatyOrientation": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": null,
"flags": [
"readonly"
]
}
},
"functions": [
{
"ret": {
"type": "qt",
"module": "qml",
"name": "string"
},
"name": "toString",
"id": "toString",
"details": null,
"params": []
}
],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,16 @@
{
"name": "Singleton",
"module": "Quickshell",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "Scope"
},
"description": "The root component for reloadable singletons.",
"details": "All singletons should inherit from this type.\n",
"properties": {},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,79 @@
{
"name": "SystemClock",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "System clock accessor.",
"details": "",
"flags": [
"enum"
],
"properties": {
"precision": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "SystemClock"
},
"details": "The precision the clock should measure at. Defaults to `SystemClock.Seconds`.\n"
},
"minutes": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "The current minute, or 0 if TYPE99Vprecision99Tprop99TYPE is `SystemClock.Hours`.\n",
"flags": [
"readonly"
]
},
"enabled": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the clock should update. Defaults to true.\n\nSetting enabled to false pauses the clock.\n"
},
"hours": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "The current hour.\n",
"flags": [
"readonly"
]
},
"seconds": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "The current second, or 0 if TYPE99Vprecision99Tprop99TYPE is `SystemClock.Hours` or `SystemClock.Minutes`.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {
"Hours": {
"details": null
},
"Seconds": {
"details": null
},
"Minutes": {
"details": null
}
}
}

View file

@ -0,0 +1,52 @@
{
"name": "TransformWatcher",
"module": "Quickshell",
"type": "class",
"super": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"description": "Monitor of all geometry changes between two objects.",
"details": "The TransformWatcher monitors all properties that affect the geometry\nof two TYPE99MQT_qml_QtQuick99NItem99TYPEs relative to eachother.\n\n> [!NOTE] The algorithm responsible for determining the relationship\n> between `a` and `b` is biased towards `a` being a parent of `b`,\n> or `a` being closer to the common parent of `a` and `b` than `b`.\n",
"properties": {
"a": {
"type": {
"type": "qt",
"module": "qml.QtQuick",
"name": "Item"
},
"details": null
},
"commonParent": {
"type": {
"type": "qt",
"module": "qml.QtQuick",
"name": "Item"
},
"details": "Known common parent of both `a` and `b`. Defaults to `null`.\n\nThis property can be used to optimize the algorithm that figures out\nthe relationship between `a` and `b`. Setting it to something that is not\na common parent of both `a` and `b` will prevent the path from being determined\ncorrectly, and setting it to `null` will disable the optimization.\n"
},
"b": {
"type": {
"type": "qt",
"module": "qml.QtQuick",
"name": "Item"
},
"details": null
},
"transform": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"details": "This property is updated whenever the geometry of any item in the path from `a` to `b` changes.\n\nIts value is undefined, and is intended to trigger an expression update.\n",
"flags": [
"readonly"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

@ -0,0 +1,57 @@
{
"name": "Variants",
"module": "Quickshell",
"type": "class",
"super": {
"type": "local",
"module": "Quickshell",
"name": "Reloadable"
},
"description": "Creates instances of a component based on a given model.",
"details": "Creates and destroys instances of the given component when the given property changes.\n\n`Variants` is similar to TYPE99MQT_qml_QtQuick99NRepeater99TYPE except it is for *non TYPE99MQT_qml_QtQuick99NItem99TYPE* objects, and acts as\na reload scope.\n\nEach non duplicate value passed to TYPE99Vmodel99Tprop99TYPE will create a new instance of\nTYPE99Vdelegate99Tprop99TYPE with a `modelData` property set to that value.\n\nSee TYPE99MQS_Quickshell99NQuickshell99Vscreens99Tprop99TYPE for an example of using `Variants` to create copies of a window per\nscreen.\n\n> [!WARNING] BUG: Variants currently fails to reload children if the variant set is changed as\n> it is instantiated. (usually due to a mutation during variant creation)\n",
"properties": {
"delegate": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "Component"
},
"details": "The component to create instances of.\n\nThe delegate should define a `modelData` property that will be popuplated with a value\nfrom the TYPE99Vmodel99Tprop99TYPE.\n",
"flags": [
"default"
]
},
"instances": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
}
},
"details": "Current instances of the delegate.\n",
"flags": [
"readonly"
]
},
"model": {
"type": {
"type": "qt",
"module": "qml",
"name": "list",
"of": {
"type": "qt",
"module": "qml",
"name": "variant"
}
},
"details": "The list of sets of properties to create instances with.\nEach set creates an instance of the component, which are updated when the input sets update.\n"
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

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