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"
]
},
"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": {}
}

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"
},
"workingDirectory": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Quickshell's working directory. Defaults to whereever quickshell was launched from.\n"
},
"processId": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "Quickshell's process id.\n",
"flags": [
"readonly"
]
}
},
"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 {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Image\" mtype=\"prop\" mname=\"source\" >}} 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 {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Reloadable\" mtype=\"\" mname=\"\" >}} 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": {
"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"
},
"workingDirectory": {
"type": {
"type": "qt",
"module": "qml",
"name": "string"
},
"details": "Quickshell's working directory. Defaults to whereever quickshell was launched from.\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 {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"QsWindow\" mtype=\"prop\" mname=\"mask\" >}}.\n",
"properties": {
"item": {
"type": {
"type": "qt",
"module": "qml.QtQuick",
"name": "Item"
},
"details": "The item that determines the geometry of the region.\n`item` overrides {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"x\" >}}, {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"y\" >}}, {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"width\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"height\" >}}.\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"
]
},
"intersection": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "Intersection"
},
"details": "The way this region interacts with its parent region. Defaults to `Combine`.\n"
},
"y": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "Defaults to 0. Does nothing if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"item\" >}} is set.\n"
},
"width": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "Defaults to 0. Does nothing if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"item\" >}} is set.\n"
},
"height": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "Defaults to 0. Does nothing if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"item\" >}} is set.\n"
},
"shape": {
"type": {
"type": "local",
"module": "Quickshell",
"name": "RegionShape"
},
"details": "Defaults to `Rect`.\n"
},
"x": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": "Defaults to 0. Does nothing if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"item\" >}} 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 {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Region\" mtype=\"prop\" mname=\"shape\" >}}.\n",
"variants": {
"Ellipse": {
"details": null
},
"Rect": {
"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 {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"ProxyWindowBase\" mtype=\"\" mname=\"\" >}} and {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"PersistentProperties\" mtype=\"\" mname=\"\" >}}\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 {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Variants\" mtype=\"\" mname=\"\" >}} 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 {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"\" mname=\"\" >}} as an attached property.\nAll retainable objects will say that they are retainable on their respective\ntypeinfo pages.\n\n{{< callout type=\"info\" >}}\n Working directly with {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"\" mname=\"\" >}} is often overly complicated and\nerror prone. For this reason {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"RetainableLock\" mtype=\"\" mname=\"\" >}} should\nusually be used instead.\n\n{{< /callout >}}",
"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\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"unlock\" >}} 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{{< callout type=\"warning\" >}}\n It is easy to forget to unlock a locked object.\nDoing so will create what is effectively a memory leak.\n\nUsing {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"RetainableLock\" mtype=\"\" mname=\"\" >}} is recommended as it will help\navoid this scenario and make misuse more obvious.\n\n{{< /callout >}}",
"params": []
},
{
"ret": {
"type": "qt",
"module": "qml",
"name": "void"
},
"name": "unlock",
"id": "unlock",
"details": "Remove a lock on the object. See {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"lock\" >}} for more information.\n",
"params": []
}
],
"signals": {
"aboutToDestroy": {
"name": "aboutToDestroy",
"details": "This signal is sent immediately before the object is destroyed.\nAt this point destruction cannot be interrupted.\n",
"params": []
},
"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": []
}
},
"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\n{{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"\" mname=\"\" >}} 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": {
"object": {
"type": {
"type": "qt",
"module": "qml.QtQml",
"name": "QtObject"
},
"details": "The object to lock. Must be {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"\" mname=\"\" >}}.\n"
},
"retained": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the object is currently in a retained state.\n",
"flags": [
"readonly"
]
},
"locked": {
"type": {
"type": "qt",
"module": "qml",
"name": "bool"
},
"details": "If the object should be locked.\n"
}
},
"functions": [],
"signals": {
"aboutToDestroy": {
"name": "aboutToDestroy",
"details": "Rebroadcast of the object's {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"signal\" mname=\"aboutToDestroy\" >}}.\n",
"params": []
},
"dropped": {
"name": "dropped",
"details": "Rebroadcast of the object's {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"signal\" mname=\"dropped\" >}}.\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 {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Reloadable\" mtype=\"prop\" mname=\"reloadableId\" >}} for all children.\n\nNote that this does not work for visible {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Item\" mtype=\"\" mname=\"\" >}}s (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 {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"QsWindow\" mtype=\"\" mname=\"\" >}}\nor querying information about the monitor.\n\n{{< callout type=\"warning\" >}}\n If the monitor is disconnected than any stored copies of its ShellMonitor will\nbe marked as dangling and all properties will return default values.\nReconnecting the monitor will not reconnect it to the ShellMonitor object.\n{{< /callout >}}\n\nDue to some technical limitations, it was not possible to reuse the native qml {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Screen\" mtype=\"\" mname=\"\" >}} type.\n",
"flags": [
"uncreatable"
],
"properties": {
"devicePixelRatio": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "The ratio between physical pixels and device-independent (scaled) pixels.\n",
"flags": [
"readonly"
]
},
"width": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"orientation": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"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"
]
},
"primatyOrientation": {
"type": {
"type": "unknown",
"module": "",
"name": ""
},
"details": null,
"flags": [
"readonly"
]
},
"y": {
"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"
]
},
"height": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"x": {
"type": {
"type": "qt",
"module": "qml",
"name": "int"
},
"details": null,
"flags": [
"readonly"
]
},
"physicalPixelDensity": {
"type": {
"type": "qt",
"module": "qml",
"name": "real"
},
"details": "The number of physical pixels per millimeter.\n",
"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,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 {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Item\" mtype=\"\" mname=\"\" >}}s relative to eachother.\n\n{{< callout type=\"info\" >}}\n The algorithm responsible for determining the relationship\nbetween `a` and `b` is biased towards `a` being a parent of `b`,\nor `a` being closer to the common parent of `a` and `b` than `b`.\n\n{{< /callout >}}",
"properties": {
"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"
},
"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"
]
},
"b": {
"type": {
"type": "qt",
"module": "qml.QtQuick",
"name": "Item"
},
"details": null
},
"a": {
"type": {
"type": "qt",
"module": "qml.QtQuick",
"name": "Item"
},
"details": null
}
},
"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 {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Repeater\" mtype=\"\" mname=\"\" >}} except it is for *non {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Item\" mtype=\"\" mname=\"\" >}}* objects, and acts as\na reload scope.\n\nEach non duplicate value passed to {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"model\" >}} will create a new instance of\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"delegate\" >}} with a `modelData` property set to that value.\n\nSee {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Quickshell\" mtype=\"prop\" mname=\"screens\" >}} for an example of using `Variants` to create copies of a window per\nscreen.\n\n{{< callout type=\"warning\" >}}\n BUG: Variants currently fails to reload children if the variant set is changed as\nit is instantiated. (usually due to a mutation during variant creation)\n\n{{< /callout >}}",
"properties": {
"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"
},
"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 {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"model\" >}}.\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"
]
}
},
"functions": [],
"signals": {},
"variants": {}
}

View file

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