add a bunch of faq entries
This commit is contained in:
parent
1f91f786b5
commit
11a58d8e60
1 changed files with 105 additions and 22 deletions
|
@ -8,30 +8,24 @@ This page is being actively expanded as common questions come up again.
|
||||||
Make sure to also read the [Item Size and Position](/docs/guide/size-position) and
|
Make sure to also read the [Item Size and Position](/docs/guide/size-position) and
|
||||||
[QML Language](/docs/guide/qml-language) pages for questions related to
|
[QML Language](/docs/guide/qml-language) pages for questions related to
|
||||||
|
|
||||||
|
## Misc
|
||||||
|
|
||||||
|
### What will breaking changes look like
|
||||||
|
Quickshell will have breaking changes in future releases. These changes can
|
||||||
|
span the APIs exposed by Quickshell, as well as best practice across all
|
||||||
|
APIs, but will not change the language syntax or anything exposed by Qt.
|
||||||
|
|
||||||
|
Most changes will be relatively trivial, though you may have to make the same
|
||||||
|
trivial change a great number of times if you have a large configuration.
|
||||||
|
|
||||||
|
Migration guides will be provided between each release version.
|
||||||
|
|
||||||
|
### Should I use a process per widget
|
||||||
|
No. Using a process per widget will use significantly more memory than using a
|
||||||
|
single process.
|
||||||
|
|
||||||
## How do I
|
## How do I
|
||||||
|
|
||||||
### Reduce memory usage
|
|
||||||
The main thing you can do to reduce the memory usage of a given configuration
|
|
||||||
is to use loaders. Loaders can be used to create objects only when needed,
|
|
||||||
and destroy them when not needed.
|
|
||||||
|
|
||||||
- Use @@QtQuick.Loader when the component being loaded inherits from @@QtQuick.Item.
|
|
||||||
- Use @@Quickshell.LazyLoader in other cases.
|
|
||||||
|
|
||||||
### Show widgets conditionally
|
|
||||||
The @@QtQuick.Item.visible property can be used to change the visibility of an
|
|
||||||
Item conditionally, as well as Loaders.
|
|
||||||
|
|
||||||
Note that you can change out a loader's component conditionally:
|
|
||||||
```qml
|
|
||||||
@@QtQuick.Loader {
|
|
||||||
readonly property Component thing1: ...
|
|
||||||
readonly property Component thing2: ...
|
|
||||||
|
|
||||||
sourceComponent: condition ? thing1 : thing2
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Make a rounded window
|
### Make a rounded window
|
||||||
Rounded windows are simply transparent square ones with a rounded rectangle
|
Rounded windows are simply transparent square ones with a rounded rectangle
|
||||||
inside of them.
|
inside of them.
|
||||||
|
@ -50,6 +44,75 @@ inside of them.
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Make a list of widgets
|
||||||
|
If you have a short list of items to display, such as a list of active music
|
||||||
|
players or system tray items, you want a @@QtQuick.Repeater, usually combined
|
||||||
|
with a @@QtQuick.Layouts.RowLayout or @@QtQuick.Layouts.ColumnLayout.
|
||||||
|
|
||||||
|
If you have a longer list, such as a list of entries in an application launcher,
|
||||||
|
or a list that needs to scroll, you may want a @@QtQuick.ListView instead.
|
||||||
|
|
||||||
|
### Run a program or script
|
||||||
|
Use @@Quickshell.Io.Process.
|
||||||
|
|
||||||
|
If you want the entire output of the process as a single string, use
|
||||||
|
@@Quickshell.Io.StdioCollector to collect the Process's stdio.
|
||||||
|
|
||||||
|
If the process is intended to run for a long time and stream in data,
|
||||||
|
e.g. a command that listens to window manager IPC commands, use
|
||||||
|
@@Quickshell.Io.SplitParser to return each datum as it arrives.
|
||||||
|
|
||||||
|
### Show widgets conditionally
|
||||||
|
The @@QtQuick.Item.visible property can be used to change the visibility of an
|
||||||
|
Item conditionally, as well as Loaders.
|
||||||
|
|
||||||
|
Note that you can change out a loader's component conditionally:
|
||||||
|
```qml
|
||||||
|
@@QtQuick.Loader {
|
||||||
|
readonly property Component thing1: ...
|
||||||
|
readonly property Component thing2: ...
|
||||||
|
|
||||||
|
sourceComponent: condition ? thing1 : thing2
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Round an image
|
||||||
|
The easiest way to round an image is with @@Quickshell.Widgets.ClippingWrapperRectangle.
|
||||||
|
ClippingWrapperRectangle is a [MarginWrapper] component, which will attempt to match
|
||||||
|
the size of its contained item.
|
||||||
|
|
||||||
|
```qml
|
||||||
|
@@Quickshell.Widgets.ClippingWrapperRectangle {
|
||||||
|
radius: 10
|
||||||
|
|
||||||
|
@@Quickshell.Widgets.IconImage { // or a normal @@QtQuick.Image
|
||||||
|
source: ...
|
||||||
|
implicitSize: ...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
[MarginWrapper]: /docs/guide/size-position#marginwrapper-components
|
||||||
|
|
||||||
|
### Reference images and resources
|
||||||
|
By default, paths passed to components such as @@QtQuick.Image or
|
||||||
|
@@Quickshell.Io.FileView as strings are relative to Quickshell's working
|
||||||
|
directory. Usually this is not the desired behavior.
|
||||||
|
|
||||||
|
To get a file path relative to the current QML file, you can use @@QtQml.Qt.resolvedUrl().
|
||||||
|
|
||||||
|
To get a file path relative to your shell's reserved cache, data, or state directories,
|
||||||
|
you can use @@Quickshell.Quickshell.cachePath(), @@Quickshell.Quickshell.dataPath() or
|
||||||
|
@@Quickshell.Quickshell.statePath(),
|
||||||
|
|
||||||
|
### Add a drop-shadow
|
||||||
|
If you want a *rectangular*, *round rectangular*, or *circular* drop shadow,
|
||||||
|
use @@QtQuick.Effects.RectangularShadow.
|
||||||
|
For any other shape, you will have to use a @@QtQuick.Effects.MultiEffect.
|
||||||
|
|
||||||
|
When using a MultiEffect, set @@QtQuick.Effects.MultiEffect.shadowEnabled,
|
||||||
|
as well as its other shadow and blur related properties.
|
||||||
|
|
||||||
### Get rid of the purple/black icons
|
### Get rid of the purple/black icons
|
||||||
The @@Quickshell.Quickshell.iconPath() function has three variants:
|
The @@Quickshell.Quickshell.iconPath() function has three variants:
|
||||||
- One draws a purple/black square if the icon is missing.
|
- One draws a purple/black square if the icon is missing.
|
||||||
|
@ -58,6 +121,26 @@ The @@Quickshell.Quickshell.iconPath() function has three variants:
|
||||||
|
|
||||||
Either of the last two variants can be used to avoid the purple/black square.
|
Either of the last two variants can be used to avoid the purple/black square.
|
||||||
|
|
||||||
|
### Work with an unsupported WM
|
||||||
|
Quickshell currently only bundles interfaces for working with Hyprland and i3,
|
||||||
|
however you can implement your own using @@Quickshell.Io.Socket or @@Quickshell.Io.Process,
|
||||||
|
which can be used to parse and send IPC messages.
|
||||||
|
|
||||||
|
### Open/close windows with commands
|
||||||
|
Quickshell doesn't come with a command to open or close a window, however you can
|
||||||
|
make your own using @@Quickshell.Io.IpcHandler, which allows you to call functions
|
||||||
|
inside of Quickshell with a command. Said functions can change the
|
||||||
|
@@Quickshell.QsWindow.visible property of a window, or load/unload it using a
|
||||||
|
@@Quickshell.LazyLoader.
|
||||||
|
|
||||||
|
### Reduce memory usage
|
||||||
|
The main thing you can do to reduce the memory usage of a given configuration
|
||||||
|
is to use loaders. Loaders can be used to create objects only when needed,
|
||||||
|
and destroy them when not needed.
|
||||||
|
|
||||||
|
- Use @@QtQuick.Loader when the component being loaded inherits from @@QtQuick.Item.
|
||||||
|
- Use @@Quickshell.LazyLoader in other cases.
|
||||||
|
|
||||||
## Something is broken
|
## Something is broken
|
||||||
|
|
||||||
### There is a hole in my window
|
### There is a hole in my window
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue