state push

This commit is contained in:
Kyattsukuro 2026-08-15 16:03:36 +02:00
parent b34dfddaf1
commit 497824ebe9
43 changed files with 10823 additions and 156 deletions

BIN
eggs/assets/ljs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -1,21 +0,0 @@
[Source-applicationVersion]
dataSourceCommonSettings\activeState=true
[Source-platform]
dataSourceCommonSettings\activeState=true
[Source-qtVersion]
dataSourceCommonSettings\activeState=true
[Source-screens]
dataSourceCommonSettings\activeState=true
[Source-startCount]
dataSourceCommonSettings\activeState=true
[Source-usageTime]
dataSourceCommonSettings\activeState=true
[UserFeedback]
ApplicationStartCount=51
ApplicationTime=87191

View File

@ -1,12 +1,12 @@
[General] [General]
audioPlayerState=@Variant(\0\0\0\b\0\0\0\x6\0\0\0\x36\0\x61\0u\0\x64\0i\0o\0P\0l\0\x61\0y\0\x65\0r\0\x43\0u\0r\0r\0\x65\0n\0t\0\x41\0l\0\x62\0u\0m\0N\0\x61\0m\0\x65\0\0\0\n\xff\xff\xff\xff\0\0\0\x38\0\x61\0u\0\x64\0i\0o\0P\0l\0\x61\0y\0\x65\0r\0\x43\0u\0r\0r\0\x65\0n\0t\0\x41\0r\0t\0i\0s\0t\0N\0\x61\0m\0\x65\0\0\0\n\xff\xff\xff\xff\0\0\0.\0\x61\0u\0\x64\0i\0o\0P\0l\0\x61\0y\0\x65\0r\0\x43\0u\0r\0r\0\x65\0n\0t\0T\0i\0t\0l\0\x65\0\0\0\n\xff\xff\xff\xff\0\0\0\x12\0i\0s\0P\0l\0\x61\0y\0i\0n\0g\0\0\0\x1\0\0\0\0\x1c\0p\0l\0\x61\0y\0\x65\0r\0\x44\0u\0r\0\x61\0t\0i\0o\0n\0\0\0\x2\0\0\0\0\0\0\0\x1c\0p\0l\0\x61\0y\0\x65\0r\0P\0o\0s\0i\0t\0i\0o\0n\0\0\0\x6\0\0\0\0\0\0\0\0) audioPlayerState=@Variant(\0\0\0\b\0\0\0\x6\0\0\0\x36\0\x61\0u\0\x64\0i\0o\0P\0l\0\x61\0y\0\x65\0r\0\x43\0u\0r\0r\0\x65\0n\0t\0\x41\0l\0\x62\0u\0m\0N\0\x61\0m\0\x65\0\0\0\0\xff\xff\xff\xff\0\0\0\x38\0\x61\0u\0\x64\0i\0o\0P\0l\0\x61\0y\0\x65\0r\0\x43\0u\0r\0r\0\x65\0n\0t\0\x41\0r\0t\0i\0s\0t\0N\0\x61\0m\0\x65\0\0\0\n\0\0\0\x1c\0S\0\x61\0\x64\0M\0\x65\0l\0l\0o\0 \0M\0u\0s\0i\0\x63\0\0\0.\0\x61\0u\0\x64\0i\0o\0P\0l\0\x61\0y\0\x65\0r\0\x43\0u\0r\0r\0\x65\0n\0t\0T\0i\0t\0l\0\x65\0\0\0\n\0\0\0\x66\0S\0u\0g\0\x61\0r\0\x43\0r\0\x61\0s\0h\0!\0 \0\x32\0 \0(\0N\0o\0t\0i\0\x63\0\x65\0 \0M\0\x65\0 \0S\0\x65\0n\0p\0\x61\0i\0)\0 \0[\0\x45\0x\0t\0\x65\0n\0\x64\0\x65\0\x64\0]\0 \0-\0 \0\x42\0\x65\0m\0\x61\0x\0\0\0\x12\0i\0s\0P\0l\0\x61\0y\0i\0n\0g\0\0\0\x1\0\0\0\0\x1c\0p\0l\0\x61\0y\0\x65\0r\0\x44\0u\0r\0\x61\0t\0i\0o\0n\0\0\0\x2\0\x5\xf8\xb8\0\0\0\x1c\0p\0l\0\x61\0y\0\x65\0r\0P\0o\0s\0i\0t\0i\0o\0n\0\0\0\x6@\xdc'\0\0\0\0\0)
contentViewState=@ByteArray(\x82\xa2\x65index\0npreferredWidth\xfb@k\0\0\0\0\0\0\xa2\x65index\x2npreferredWidth\xfb\0\0\0\0\0\0\0\0) contentViewState=@ByteArray(\x82\xa2\x65index\0npreferredWidth\xfb@k\0\0\0\0\0\0\xa2\x65index\x2npreferredWidth\xfb\0\0\0\0\0\0\0\0)
expandedFilterView=false expandedFilterView=false
headerBarHeight=1e+05 headerBarHeight=1e+05
headerBarIsMaximized=false headerBarIsMaximized=false
nowPlayingPreferLyric=false nowPlayingPreferLyric=false
playControlItemMuted=false playControlItemMuted=false
playControlItemVolume=100 playControlItemVolume=57.79575892857143
playListPreferredWidth=0 playListPreferredWidth=0
playListState=@Variant(\0\0\0\b\0\0\0\x5\0\0\0\x18\0\x63\0u\0r\0r\0\x65\0n\0t\0T\0r\0\x61\0\x63\0k\0\0\0\x2\0\0\0\0\0\0\0\x10\0p\0l\0\x61\0y\0L\0i\0s\0t\0\0\0\t\0\0\0\0\0\0\0\x1a\0r\0\x61\0n\0\x64\0o\0m\0M\0\x61\0p\0p\0i\0n\0g\0\0\0\t\0\0\0\0\0\0\0\x14\0r\0\x65\0p\0\x65\0\x61\0t\0M\0o\0\x64\0\x65\0\0\0\x2\0\0\0\0\0\0\0\x16\0s\0h\0u\0\x66\0\x66\0l\0\x65\0M\0o\0\x64\0\x65\0\0\0\x2\0\0\0\0) playListState=@Variant(\0\0\0\b\0\0\0\x5\0\0\0\x18\0\x63\0u\0r\0r\0\x65\0n\0t\0T\0r\0\x61\0\x63\0k\0\0\0\x2\0\0\0\0\0\0\0\x10\0p\0l\0\x61\0y\0L\0i\0s\0t\0\0\0\t\0\0\0\x1\0\0\0\v\0\0\0\b\0\0\0\x2\0\x30\0\0\0\x66\0S\0u\0g\0\x61\0r\0\x43\0r\0\x61\0s\0h\0!\0 \0\x32\0 \0(\0N\0o\0t\0i\0\x63\0\x65\0 \0M\0\x65\0 \0S\0\x65\0n\0p\0\x61\0i\0)\0 \0[\0\x45\0x\0t\0\x65\0n\0\x64\0\x65\0\x64\0]\0 \0-\0 \0\x42\0\x65\0m\0\x61\0x\0\0\0\x1c\0S\0\x61\0\x64\0M\0\x65\0l\0l\0o\0 \0M\0u\0s\0i\0\x63\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\x2\0\x36\0\0\0\xc0\0\x66\0i\0l\0\x65\0:\0/\0/\0/\0r\0u\0n\0/\0m\0\x65\0\x64\0i\0\x61\0/\0s\0o\0m\0\x65\0o\0n\0\x65\0/\0M\0Y\0 \0I\0S\0O\0/\0\x30\0\x36\0\x36\0.\0S\0u\0g\0\x61\0r\0\x43\0r\0\x61\0s\0h\0!\0 \0\x32\0 \0(\0N\0o\0t\0i\0\x63\0\x65\0 \0M\0\x65\0 \0S\0\x65\0n\0p\0\x61\0i\0)\0 \0%\0\x35\0\x42\0\x45\0x\0t\0\x65\0n\0\x64\0\x65\0\x64\0%\0\x35\0\x44\0 \0-\0 \0\x42\0\x65\0m\0\x61\0x\0.\0m\0p\0\x33\0\0\0\x1a\0r\0\x61\0n\0\x64\0o\0m\0M\0\x61\0p\0p\0i\0n\0g\0\0\0\t\0\0\0\0\0\0\0\x14\0r\0\x65\0p\0\x65\0\x61\0t\0M\0o\0\x64\0\x65\0\0\0\x2\0\0\0\0\0\0\0\x16\0s\0h\0u\0\x66\0\x66\0l\0\x65\0M\0o\0\x64\0\x65\0\0\0\x2\0\0\0\0)
showPlaylist=true showPlaylist=true

View File

@ -143,6 +143,9 @@ Sort reversed=true
Speedbar Width=127 Speedbar Width=127
View Style=DetailTree View Style=DetailTree
[Plugins]
krohnkiteEnabled=false
[PreviewSettings] [PreviewSettings]
EnableRemoteFolderThumbnail=false EnableRemoteFolderThumbnail=false
MaximumRemoteSize=0 MaximumRemoteSize=0
@ -154,3 +157,6 @@ activeForeground=198,208,245
inactiveBackground=35,38,52 inactiveBackground=35,38,52
inactiveBlend=165,173,206 inactiveBlend=165,173,206
inactiveForeground=165,173,206 inactiveForeground=165,173,206
[kwin]
krohnkiteEnabled=false

View File

@ -1,6 +1,6 @@
Net/CursorBlinkTime 1000 Net/CursorBlinkTime 1000
Net/CursorBlink 1 Net/CursorBlink 1
Gdk/UnscaledDPI 98304 Gdk/UnscaledDPI 122880
Gdk/WindowScalingFactor 1 Gdk/WindowScalingFactor 1
Gtk/EnableAnimations 1 Gtk/EnableAnimations 1
Gtk/DecorationLayout "icon:minimize,maximize,close" Gtk/DecorationLayout "icon:minimize,maximize,close"
@ -8,7 +8,7 @@ Gtk/PrimaryButtonWarpsSlider 1
Gtk/ToolbarStyle 3 Gtk/ToolbarStyle 3
Gtk/MenuImages 1 Gtk/MenuImages 1
Gtk/ButtonImages 1 Gtk/ButtonImages 1
Gtk/CursorThemeSize 24 Gtk/CursorThemeSize 22
Gtk/CursorThemeName "catppuccin-frappe-blue-cursors" Gtk/CursorThemeName "catppuccin-frappe-blue-cursors"
Net/SoundThemeName "ocean" Net/SoundThemeName "ocean"
Net/IconThemeName "breeze-dark" Net/IconThemeName "breeze-dark"

View File

@ -1,31 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE khotnewstuff3> <!DOCTYPE khotnewstuff3>
<hotnewstuffregistry> <hotnewstuffregistry>
<stuff category="720">
<name>Truely Maximized</name>
<providerid>api.kde-look.org</providerid>
<author>fin444</author>
<homepage>https://store.kde.org/p/2136524</homepage>
<licence></licence>
<version>1.1.0</version>
<rating>57</rating>
<downloads>5913</downloads>
<installedfile>/home/someone/.local/share/kwin/scripts/truely-maximized/</installedfile>
<id>2136524</id>
<releasedate>2024-12-21</releasedate>
<summary>&lt;p>A Kwin script that truely maximizes your screen space by hiding the title bars of your windows when they are maximized. You can configure a blacklist from the script settings. There is also an optional screen edge listener to toggle it off/on (look in your screen edge listener settings).&lt;/p>
&lt;p>This is the Plasma 6 version. The Plasma 5 version can be found here: https://www.pling.com/p/2018573/&lt;/p>
&lt;p>Based on (but not forked from) bahamondev/hide-titles https://store.kde.org/p/1354715&lt;/p>
</summary>
<changelog></changelog>
<preview>https://images.pling.com/cache/100x100-4/img/00/00/71/36/84/2136524/max11.png</preview>
<previewBig>https://images.pling.com/cache/770x540-4/img/00/00/71/36/84/2136524/max11.png</previewBig>
<payload>https://files06.pling.com/api/files/download/j/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTczNDgxMzM3MCwibyI6IjEiLCJzIjoiOWI5OTJkMTFkNTMyYmMxODZlM2UxYTcxMGUzYWM1YjEyMjUzNTJhOWJhODhlZmI5MmM4OWI0NDljOTVhZDI3YmY4ZGFhOTU2OGJhZjI3YzA0YTJmZjljYzJmZDRmNDdmMzQzOTM3YzNlMDdmNTgyODk0YzJjNTQ0MTU5MDgxNDkiLCJ0IjoxNzQ4NjU0MTg2LCJzdGZwIjpudWxsLCJzdGlwIjoiODcuMTMzLjI4LjI1NSJ9.WwQ1rSrdg_ghrfdVyRNV49KjFXgwseIdVVsL0KHzEn0/truely-maximized-1.2.0.kwinscript</payload>
<tags>linux,gplv3,original-product,unix</tags>
<status>installed</status>
</stuff>
<stuff category="720"> <stuff category="720">
<name>KWin dynamic workspaces</name> <name>KWin dynamic workspaces</name>
<providerid>api.kde-look.org</providerid> <providerid>api.kde-look.org</providerid>
@ -34,31 +9,56 @@
<licence></licence> <licence></licence>
<version>3.2</version> <version>3.2</version>
<rating>75</rating> <rating>75</rating>
<downloads>13985</downloads> <downloads>21587</downloads>
<installedfile>/home/someone/.local/share/kwin/scripts/dynamic_workspaces/</installedfile> <installedfile>/home/someone/.local/share/kwin/scripts/dynamic_workspaces/</installedfile>
<id>1312691</id> <id>1312691</id>
<releasedate>2025-04-13</releasedate> <releasedate>2025-04-13</releasedate>
<summary>&lt;p>A kwin script that creates and deletes desktops as you move windows on the last one.&lt;/p> <summary>&lt;p>A kwin script that creates and deletes desktops as you move windows on the last one.&lt;br />&lt;br />I intented to replicate some of gnome-desktop's behavior with moving windows around.&lt;br />As this is a simple script for satisfying my needs, it only workds horizontally left-toright.&lt;br />The behaviour is following:&lt;br />&lt;br />- There is always an empty desktop on the right&lt;br />- When you move a window to that desktop, a new desktop is created&lt;br />- When you move window away from last desktop, or close the window,&lt;br /> the desktop is destroyed&lt;br />&lt;br />If you encounter problems, file an issue at my github repo: &lt;a href="https://github.com/d86leader/dynamic_workspaces">https://github.com/d86leader/dynamic_workspaces&lt;/a>&lt;br />If you don't encounter problems, file a star on my github repo: &lt;a href="https://github.com/d86leader/dynamic_workspaces">https://github.com/d86leader/dynamic_workspaces&lt;/a> , why don't ya.&lt;/p></summary>
&lt;p>I intented to replicate some of gnome-desktop's behavior with moving windows around.
As this is a simple script for satisfying my needs, it only workds horizontally left-toright.
The behaviour is following:&lt;/p>
&lt;ul>
&lt;li>There is always an empty desktop on the right&lt;/li>
&lt;li>When you move a window to that desktop, a new desktop is created&lt;/li>
&lt;li>When you move window away from last desktop, or close the window,
the desktop is destroyed&lt;/li>
&lt;/ul>
&lt;p>If you encounter problems, file an issue at my github repo: https://github.com/d86leader/dynamic&lt;em>workspaces
If you don't encounter problems, file a star on my github repo: https://github.com/d86leader/dynamic&lt;/em>workspaces , why don't ya.&lt;/p>
</summary>
<changelog></changelog> <changelog></changelog>
<preview>https://images.pling.com/cache/100x100-4/img/00/00/53/85/99/1312691/f3197437783b57b5ca24861dc05d50a390d1.png</preview> <preview>https://images.pling.com/cache/770x540-4/img/00/00/53/85/99/1312691/f3197437783b57b5ca24861dc05d50a390d1.png</preview>
<previewBig>https://images.pling.com/cache/770x540-4/img/00/00/53/85/99/1312691/f3197437783b57b5ca24861dc05d50a390d1.png</previewBig> <previewBig>https://images.pling.com/cache/770x540-4/img/00/00/53/85/99/1312691/f3197437783b57b5ca24861dc05d50a390d1.png</previewBig>
<payload>https://files06.pling.com/api/files/download/j/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTc0NDU1MjEyMCwibyI6IjEiLCJzIjoiZDMxYmU5ZjhiZDM5YmJmZjk0YjhkYmNiNzg3NWZlZGE4MDgzMzk1MDM5MjJmMjljYTk2NzYxYjJlZTM1OTFlYjJhY2I4N2YxM2ExMTQ3Njc3YmM4ZjFjZjQwNjY0YjBkZDU1NmE1YzQ0MjdjYzBiZmNjNmEzNWFkMGMwNjkwNmUiLCJ0IjoxNzQ4NjUzOTY0LCJzdGZwIjpudWxsLCJzdGlwIjoiODcuMTMzLjI4LjI1NSJ9.GCOII9YmPyFcft3GeHLiwZX6PAr8bDzAoZ7tc94_deg/dynamic-workspaces.tar.gz</payload> <payload>https://files06.pling.com/api/files/download/j/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTc0NDU1MjEyMCwibyI6IjEiLCJzIjoiZDMxYmU5ZjhiZDM5YmJmZjk0YjhkYmNiNzg3NWZlZGE4MDgzMzk1MDM5MjJmMjljYTk2NzYxYjJlZTM1OTFlYjJhY2I4N2YxM2ExMTQ3Njc3YmM4ZjFjZjQwNjY0YjBkZDU1NmE1YzQ0MjdjYzBiZmNjNmEzNWFkMGMwNjkwNmUiLCJ0IjoxNzQ4NjUzOTY0LCJzdGZwIjpudWxsLCJzdGlwIjoiODcuMTMzLjI4LjI1NSJ9.GCOII9YmPyFcft3GeHLiwZX6PAr8bDzAoZ7tc94_deg/dynamic-workspaces.tar.gz</payload>
<tags>bsd-license,linux,original-product,unix</tags> <tags>bsd-license,unix,original-product,linux</tags>
<status>installed</status> <status>installed</status>
</stuff> </stuff>
<stuff category="720">
<name>Krohnkite</name>
<providerid>api.kde-look.org</providerid>
<author>anametologin</author>
<homepage>https://store.kde.org/p/2144146</homepage>
<licence></licence>
<version>0.9.9.2</version>
<rating>82</rating>
<downloads>120934</downloads>
<installedfile>/home/someone/.config/yolk/eggs/kde_locals/kwin/scripts/krohnkite/</installedfile>
<id>2144146</id>
<releasedate>2026-02-09</releasedate>
<summary>&lt;p>A dynamic tiling extension for KWin6.&lt;br />&lt;br />Kr&amp;ouml;hnkite is mainly inspired by dwm from suckless folks, and aims to be &amp;quot;simple&amp;quot; in both development and usage.&lt;br />&lt;br />Features&lt;br />------------&lt;br />&lt;em> DWM-like window tiling&lt;br />- Dynamically tile windows, rather than manually placing each.&lt;br />- Floating windows&lt;br />&lt;/em> Multiple Layout Support&lt;br />- Tiling layout&lt;br />- Monocle layout&lt;br />- Desktop-friendly layouts (Spread, Stair)&lt;br />* Integrates well into KWin features, including:&lt;br />- Activities&lt;br />- Virtual desktops&lt;br />- Window switcher&lt;br />- Fullscreen (KWin can fullscreen any window)&lt;br />- Minimization&lt;br />&lt;br />Look at me&lt;br />------------&lt;br />1. Delete old or unused KWin shortcuts with reboot after it:&lt;br />qdbus org.kde.kglobalaccel /component/kwin org.kde.kglobalaccel.Component.cleanUp&lt;br />2. If you have a gap or vice versa you have gray(white etc) rectangle that means that there is a program with size 1x1 that have to be filtered by title or other ways. Make sure that the following programs, if you have them, have been added to the filter:&lt;br /> 2.1 xwaylandvideobridge&lt;/p></summary>
<changelog></changelog>
<preview>https://images.pling.com/cache/770x540-4/img/00/00/77/69/99/2144146/krohnkite1.png</preview>
<previewBig>https://images.pling.com/cache/770x540-4/img/00/00/77/69/99/2144146/krohnkite1.png</previewBig>
<payload>https://files06.pling.com/api/files/download/j/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTc1MzQyNzcxNCwibyI6IjEiLCJzIjoiNWU1NTA1MzBkNGVmOWNmMmQ0MTYxMGVjYzRlZGU3NmQ1YjVlMTM2YWFmZmM3YTc0OTEyNjViZjA4YzBlZWI1NTI5M2RiNjQ3YjdjYWYyNmM4ZTgyZjgxNDkwN2ZiOGEwNGM1Yzg3Mjg3YmU4NWJhYTYzODhjNTVjMWQ1Y2FmMTEiLCJ0IjoxNzgxMDQ0ODYzLCJzdGZwIjpudWxsLCJzdGlwIjoiODAuMTg3Ljg3LjIyMSJ9.dCoxOcFtCEX9Vg-ji2PTmZPia2uhS8mNEvWb6jiVdvk/krohnkite-0.9.9.2-1d7fd74.kwinscript</payload>
<tags>unix,tiling,efi,linux,mit-license,kwin</tags>
<status>installed</status>
</stuff>
<stuff category="720">
<name>Truely Maximized</name>
<providerid>api.kde-look.org</providerid>
<author>fin444</author>
<homepage>https://store.kde.org/p/2136524</homepage>
<licence></licence>
<version>1.1.0</version>
<rating>57</rating>
<downloads>12178</downloads>
<installedfile>/home/someone/.local/share/kwin/scripts/truely-maximized/</installedfile>
<id>2136524</id>
<releasedate>2024-12-21</releasedate>
<summary>&lt;p>A Kwin script that truely maximizes your screen space by hiding the title bars of your windows when they are maximized. You can configure a blacklist from the script settings. There is also an optional screen edge listener to toggle it off/on (look in your screen edge listener settings).&lt;br />&lt;br />This is the Plasma 6 version. The Plasma 5 version can be found here: &lt;a href="https://www.pling.com/p/2018573/">https://www.pling.com/p/2018573/&lt;/a>&lt;br />&lt;br />Based on (but not forked from) bahamondev/hide-titles &lt;a href="https://store.kde.org/p/1354715">https://store.kde.org/p/1354715&lt;/a>&lt;/p></summary>
<changelog></changelog>
<preview>https://images.pling.com/cache/770x540-4/img/00/00/71/36/84/2136524/max11.png</preview>
<previewBig>https://images.pling.com/cache/770x540-4/img/00/00/71/36/84/2136524/max11.png</previewBig>
<payload>https://files06.pling.com/api/files/download/j/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTczNDgxMzM3MCwibyI6IjEiLCJzIjoiOWI5OTJkMTFkNTMyYmMxODZlM2UxYTcxMGUzYWM1YjEyMjUzNTJhOWJhODhlZmI5MmM4OWI0NDljOTVhZDI3YmY4ZGFhOTU2OGJhZjI3YzA0YTJmZjljYzJmZDRmNDdmMzQzOTM3YzNlMDdmNTgyODk0YzJjNTQ0MTU5MDgxNDkiLCJ0IjoxNzQ4NjU0MTg2LCJzdGZwIjpudWxsLCJzdGlwIjoiODcuMTMzLjI4LjI1NSJ9.WwQ1rSrdg_ghrfdVyRNV49KjFXgwseIdVVsL0KHzEn0/truely-maximized-1.2.0.kwinscript</payload>
<tags>original-product,linux,gplv3,unix</tags>
<status>updateable</status>
</stuff>
</hotnewstuffregistry> </hotnewstuffregistry>

View File

@ -7,21 +7,18 @@
<author>antroids</author> <author>antroids</author>
<homepage>https://store.kde.org/p/2135509</homepage> <homepage>https://store.kde.org/p/2135509</homepage>
<licence></licence> <licence></licence>
<version>0.8.5</version> <version>0.9.1</version>
<rating>83</rating> <rating>86</rating>
<downloads>14232</downloads> <downloads>31611</downloads>
<installedfile>/home/someone/.local/share/plasma/plasmoids/com.github.antroids.application-title-bar/</installedfile> <installedfile>/home/someone/.config/yolk/eggs/kde_locals/plasma/plasmoids/com.github.antroids.application-title-bar/</installedfile>
<id>2135509</id> <id>2135509</id>
<releasedate>2025-04-22</releasedate> <releasedate>2026-06-13</releasedate>
<summary>&lt;p>Widget with window title and control buttons.&lt;/p> <summary>&lt;p>Widget with window title and control buttons.&lt;br />&lt;br />In cases of panel freezes or crashes: &lt;a href="https://github.com/antroids/application-title-bar?tab=readme-ov-file#-in-cases-of-panel-freezes-or-crashes">https://github.com/antroids/application-title-bar?tab=readme-ov-file#-in-cases-of-panel-freezes-or-crashes&lt;/a>-&lt;/p></summary>
&lt;p>In cases of panel freezes or crashes: https://github.com/antroids/application-title-bar?tab=readme-ov-file#-in-cases-of-panel-freezes-or-crashes-&lt;/p>
</summary>
<changelog></changelog> <changelog></changelog>
<preview>https://images.pling.com/cache/100x100-4/img/00/00/77/08/97/2135509/logonew.png</preview> <preview>https://images.pling.com/cache/770x540-4/img/00/00/77/08/97/2135509/logonew.png</preview>
<previewBig>https://images.pling.com/cache/770x540-4/img/00/00/77/08/97/2135509/logonew.png</previewBig> <previewBig>https://images.pling.com/cache/770x540-4/img/00/00/77/08/97/2135509/logonew.png</previewBig>
<payload>https://files06.pling.com/api/files/download/j/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTc0NTM0MDAyMSwibyI6IjEiLCJzIjoiZDUyZjhlNWMyMGI1MjIyM2Y4YmY0ZWVjZWFhZjRmYTE2NzdkYjUwZTgzMjAxYjA3ZmQ0MDVjYWEyOGZkMzM0MTExYzU4N2FlYWIzYzBhYmZhNjIzYzFmMzRkZDA3Njc0OWIwZDgxOTI2ZWFmODcyZDk5Nzg2Y2U4OWI0OWQ5ZTIiLCJ0IjoxNzQ4NjUzNzExLCJzdGZwIjpudWxsLCJzdGlwIjoiODcuMTMzLjI4LjI1NSJ9.F-19BHqFtfzt8DACcj6Ryw4qThwrl8FFYGsTbkdxH0g/application-title-bar-0-8-5.plasmoid</payload> <payload>https://files06.pling.com/api/files/download/j/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTc4MTM4MjQyMCwibyI6IjEiLCJzIjoiZTdmYjI1NjMyNjg5ZTIxYWQ5MzQxODNmYzg0Nzc3YTU2NDhhZmYxMWM5ODE5NzVmNmM5NDZhZGMwMGVkNjhjYjAzZTk3OTI3ZWYwYWYxNTE4ZWI3Zjg3MmZiMzVmNjliNjJjNTZiMDdkZGIyNmI2ODA0MmNkNzJlMDcyMWU3NzYiLCJ0IjoxNzgzNDE4NTI2LCJzdGZwIjpudWxsLCJzdGlwIjoiODAuMTUwLjExLjEwIn0.NdJiSRrLMCnLjzXoBx6gH4NSOTmySUoaOmZhW6OUC7I/application-title-bar-0.9.1.plasmoid</payload>
<tags>unix,original-product,plasma,plasma##majorversion=6,plasmoid,notitlebar,widget,window,linux,kde,kde-plasma,extension,gplv3,buttons</tags> <tags>extension,gplv3,kde,kde-plasma,linux,widget,window,original-product,plasma,plasma##majorversion=6,plasmoid,notitlebar,unix,buttons</tags>
<status>installed</status> <status>installed</status>
</stuff> </stuff>
</hotnewstuffregistry> </hotnewstuffregistry>

View File

@ -1,6 +1,6 @@
{ {
"$fdo_created": "1748649994", "$fdo_created": "1748649994",
"$fdo_modified": "1780476061", "$fdo_modified": "1785664260",
"Chromium Keys/Chromium Safe Storage": { "Chromium Keys/Chromium Safe Storage": {
"$fdo_created": "1748704742", "$fdo_created": "1748704742",
"$fdo_mime_type": "text/plain", "$fdo_mime_type": "text/plain",
@ -12,6 +12,17 @@
"xdg:schema": "org.qt.keychain" "xdg:schema": "org.qt.keychain"
} }
}, },
"Network Management/{14957886-4e15-40ec-afab-56548d413820};802-11-wireless-security": {
"$fdo_created": "1783511934",
"$fdo_mime_type": "text/plain",
"$fdo_modified": "1783511934",
"attributes": {
"server": "Network Management",
"type": "map",
"user": "{14957886-4e15-40ec-afab-56548d413820};802-11-wireless-security",
"xdg:schema": "org.qt.keychain"
}
},
"Network Management/{397a39fc-ebe9-4912-88cd-3548359cd7a5};802-11-wireless-security": { "Network Management/{397a39fc-ebe9-4912-88cd-3548359cd7a5};802-11-wireless-security": {
"$fdo_created": "1758984333", "$fdo_created": "1758984333",
"$fdo_mime_type": "text/plain", "$fdo_mime_type": "text/plain",
@ -34,17 +45,6 @@
"xdg:schema": "org.qt.keychain" "xdg:schema": "org.qt.keychain"
} }
}, },
"Network Management/{470e7734-143b-4bc8-9985-c64121230dae};vpn": {
"$fdo_created": "1780383175",
"$fdo_mime_type": "text/plain",
"$fdo_modified": "1780383175",
"attributes": {
"server": "Network Management",
"type": "map",
"user": "{470e7734-143b-4bc8-9985-c64121230dae};vpn",
"xdg:schema": "org.qt.keychain"
}
},
"Network Management/{51d8d773-75ef-46ff-866e-61436d7fd531};802-11-wireless-security": { "Network Management/{51d8d773-75ef-46ff-866e-61436d7fd531};802-11-wireless-security": {
"$fdo_created": "1769858713", "$fdo_created": "1769858713",
"$fdo_mime_type": "text/plain", "$fdo_mime_type": "text/plain",
@ -133,17 +133,6 @@
"xdg:schema": "org.qt.keychain" "xdg:schema": "org.qt.keychain"
} }
}, },
"Network Management/{bf7a61ad-8c5f-4623-b759-0bd0a62d2fb2};802-11-wireless-security": {
"$fdo_created": "1779069606",
"$fdo_mime_type": "text/plain",
"$fdo_modified": "1779069606",
"attributes": {
"server": "Network Management",
"type": "map",
"user": "{bf7a61ad-8c5f-4623-b759-0bd0a62d2fb2};802-11-wireless-security",
"xdg:schema": "org.qt.keychain"
}
},
"Network Management/{c18cb36a-7b3f-4377-bc34-c71a2eff8cc4};802-11-wireless-security": { "Network Management/{c18cb36a-7b3f-4377-bc34-c71a2eff8cc4};802-11-wireless-security": {
"$fdo_created": "1748855789", "$fdo_created": "1748855789",
"$fdo_mime_type": "text/plain", "$fdo_mime_type": "text/plain",
@ -199,6 +188,17 @@
"xdg:schema": "org.qt.keychain" "xdg:schema": "org.qt.keychain"
} }
}, },
"Network Management/{ce516a0e-57fb-464e-a6f2-e2ca54fefd0e};802-11-wireless-security": {
"$fdo_created": "1781508403",
"$fdo_mime_type": "text/plain",
"$fdo_modified": "1781508403",
"attributes": {
"server": "Network Management",
"type": "map",
"user": "{ce516a0e-57fb-464e-a6f2-e2ca54fefd0e};802-11-wireless-security",
"xdg:schema": "org.qt.keychain"
}
},
"Network Management/{cfd294ec-e27b-4f89-bd3e-470087e9fb7b};vpn": { "Network Management/{cfd294ec-e27b-4f89-bd3e-470087e9fb7b};vpn": {
"$fdo_created": "1763038224", "$fdo_created": "1763038224",
"$fdo_mime_type": "text/plain", "$fdo_mime_type": "text/plain",
@ -244,9 +244,9 @@
} }
}, },
"Nextcloud/someone:https://nextcloud.urmel.de/:0": { "Nextcloud/someone:https://nextcloud.urmel.de/:0": {
"$fdo_created": "1780476060", "$fdo_created": "1785584858",
"$fdo_mime_type": "text/plain", "$fdo_mime_type": "text/plain",
"$fdo_modified": "1780476060", "$fdo_modified": "1785584858",
"attributes": { "attributes": {
"server": "Nextcloud", "server": "Nextcloud",
"type": "plaintext", "type": "plaintext",
@ -266,9 +266,9 @@
} }
}, },
"Nextcloud/someone_app-password:https://nextcloud.urmel.de/:0": { "Nextcloud/someone_app-password:https://nextcloud.urmel.de/:0": {
"$fdo_created": "1780476061", "$fdo_created": "1785584983",
"$fdo_mime_type": "text/plain", "$fdo_mime_type": "text/plain",
"$fdo_modified": "1780476061", "$fdo_modified": "1785584983",
"attributes": { "attributes": {
"server": "Nextcloud", "server": "Nextcloud",
"type": "base64", "type": "base64",
@ -299,9 +299,9 @@
} }
}, },
"Passwords/smb-ljs-dc-01:-1": { "Passwords/smb-ljs-dc-01:-1": {
"$fdo_created": "1780389603", "$fdo_created": "1784296199",
"$fdo_mime_type": "text/plain", "$fdo_mime_type": "text/plain",
"$fdo_modified": "1780389603", "$fdo_modified": "1784296199",
"attributes": { "attributes": {
"server": "Passwords", "server": "Passwords",
"type": "map", "type": "map",

View File

@ -0,0 +1 @@
print("KWin need me. Don't ask why.");

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,448 @@
<?xml version="1.0" encoding="UTF-8"?>
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
<kcfgfile name=""/>
<group name="">
<entry name="dockOrderLeft" type="Int">
<label>The order of the docked window in the dock</label>
<default>1</default>
</entry>
<entry name="dockOrderTop" type="Int">
<label>The order of the docked window in the dock</label>
<default>2</default>
</entry>
<entry name="dockOrderRight" type="Int">
<label>The order of the docked window in the dock</label>
<default>3</default>
</entry>
<entry name="dockOrderBottom" type="Int">
<label>The order of the docked window in the dock</label>
<default>4</default>
</entry>
<entry name="dockHHeight" type="Int">
<label>The default height of a horizontal docked window in percent</label>
<default>15</default>
</entry>
<entry name="dockHWide" type="Int">
<label>The default width of a horizontal docked window in percent</label>
<default>100</default>
</entry>
<entry name="dockHGap" type="Int">
<label>The default Gap of a horizontal docked window in pixels</label>
<default>0</default>
</entry>
<entry name="dockHEdgeGap" type="Int">
<label>The default Vertical Gap of a horizontal docked window in pixels</label>
<default>0</default>
</entry>
<entry name="dockHAlignment" type="Int">
<label>The default Alignment of a horizontal docked window which can be Center , Left, Right</label>
<default>0</default>
</entry>
<entry name="dockHEdgeAlignment" type="Int">
<label>The default vertical Alignment of a horizontal docked window which can be Edge Screen, Middle, Center Screen</label>
<default>0</default>
</entry>
<entry name="dockVHeight" type="Int">
<label>The default height of a vertical docked window in percent</label>
<default>100</default>
</entry>
<entry name="dockVWide" type="Int">
<label>The default width of a vertical docked window in percent</label>
<default>15</default>
</entry>
<entry name="dockVEdgeGap" type="Int">
<label>The default horizontal Gap of a vertical docked window in pixels</label>
<default>0</default>
</entry>
<entry name="dockVGap" type="Int">
<label>The default Gap of a vertical docked window in pixels</label>
<default>0</default>
</entry>
<entry name="dockVEdgeAlignment" type="Int">
<label>The default horizontal Alignment of a vertical docked window which can be Edge Screen, Middle or Center Screen</label>
<default>0</default>
</entry>
<entry name="dockVAlignment" type="Int">
<label>The default vertical Alignment of a vertical docked window which can be Center, Top, Bottom</label>
<default>0</default>
</entry>
<entry name="dockSurfacesConfig" type="String">
<label>Dock settings change the default parameters for the surface</label>
<default></default>
</entry>
<entry name="dockWindowClassConfig" type="String">
<label>Dock default settings for WindowClass which with high priority.</label>
<default></default>
</entry>
<entry name="tileLayoutOrder" type="Int">
<label> Tile layout order</label>
<default>1</default>
</entry>
<entry name="tileLayoutInitialRotationAngle" type="String">
<label>Tile layout initial rotation angle</label>
<default>0</default>
</entry>
<entry name="monocleLayoutOrder" type="Int">
<label> Monocle layout order</label>
<default>2</default>
</entry>
<entry name="threeColumnLayoutOrder" type="Int">
<label> Three Column layout order</label>
<default>3</default>
</entry>
<entry name="spiralLayoutOrder" type="Int">
<label> Spiral layout order</label>
<default>4</default>
</entry>
<entry name="quarterLayoutOrder" type="Int">
<label> Quarter layout order</label>
<default>5</default>
</entry>
<entry name="quarterLayoutReset" type="Bool">
<label>Reset Quarter layout after closing a window</label>
<default>false</default>
</entry>
<entry name="stackedLayoutOrder" type="Int">
<label> Stacked layout order</label>
<default>6</default>
</entry>
<entry name="columnsLayoutOrder" type="Int">
<label> Columns layout order</label>
<default>7</default>
</entry>
<entry name="enableColumnsLayout" type="Bool">
<label>Enable/disable Columns layout</label>
<default>true</default>
</entry>
<entry name="columnsLayoutInitialRotationAngle" type="String">
<label>Columns layout initial rotation angle</label>
<default>0</default>
</entry>
<entry name="columnsBalanced" type="Bool">
<label>Enable/disable creating a new window in the shortest column</label>
<default>false</default>
</entry>
<entry name="columnsLayerConf" type="String">
<label>Columns layout default configuration.</label>
<default></default>
</entry>
<entry name="spreadLayoutOrder" type="Int">
<label> Spread layout order</label>
<default>8</default>
</entry>
<entry name="floatingLayoutOrder" type="Int">
<label> Floating layout order</label>
<default>9</default>
</entry>
<entry name="stairLayoutOrder" type="Int">
<label> Stair layout order</label>
<default>10</default>
</entry>
<entry name="stairReverse" type="Bool">
<label>Reverse the stair layout's orientation</label>
<default>false</default>
</entry>
<entry name="binaryTreeLayoutOrder" type="Int">
<label> BTree layout order</label>
<default>11</default>
</entry>
<entry name="cascadeLayoutOrder" type="Int">
<label> Cascade layout order</label>
<default>12</default>
</entry>
<entry name="ignoreActivity" type="String">
<label>Do not apply tiling on some activities(comma-separated list of activity names)</label>
<default></default>
</entry>
<entry name="ignoreClass" type="String">
<label>Ignore windows with certain classes(comma-separated list)</label>
<default>krunner,yakuake,spectacle,kded5,xwaylandvideobridge,plasmashell,ksplashqml,org.kde.plasmashell,org.kde.polkit-kde-authentication-agent-1,org.kde.kruler,kruler,kwin_wayland,ksmserver-logout-greeter</default>
</entry>
<entry name="ignoreRole" type="String">
<label>Ignore windows with specific role(comma-separated list)</label>
<default>quake</default>
</entry>
<entry name="ignoreScreen" type="String">
<label>Do not apply tiling on some screens(comma-separated list of screen names)</label>
<default></default>
</entry>
<entry name="ignoreVDesktop" type="String">
<label>Do not apply tiling on some virtual desktops(comma-separated list of virtual desktops names)</label>
<default></default>
</entry>
<entry name="ignoreTitle" type="String">
<label>Ignore windows with certain string in title(comma-separated list)</label>
<default></default>
</entry>
<entry name="screenDefaultLayout" type="String">
<label>Assigning number of layout to screen(output) by default</label>
<default></default>
</entry>
<entry name="tileNothing" type="Bool">
<label>Don't tile any windows by default</label>
<default>false</default>
</entry>
<entry name="tilingClass" type="String">
<label>Tile windows with certain classes(comma-separated list)</label>
<default></default>
</entry>
<entry name="floatingClass" type="String">
<label>Float windows with certain classes(comma-separated list)</label>
<default></default>
</entry>
<entry name="floatingTitle" type="String">
<label>Float windows with certain string in title(comma-separated list)</label>
<default></default>
</entry>
<entry name="floatUtility" type="Bool">
<label>Automatically float utility windows (Dialog, Splash, Utility)</label>
<default>true</default>
</entry>
<entry name="layoutPerActivity" type="Bool">
<label>Use separate layouts per activity.</label>
<default>true</default>
</entry>
<entry name="layoutPerDesktop" type="Bool">
<label>Use separate layouts per desktop.</label>
<default>true</default>
</entry>
<entry name="tiledWindowsLayer" type="Int">
<label>What layer will have tiled windows</label>
<default>0</default>
</entry>
<entry name="floatedWindowsLayer" type="Int">
<label>What layer will have floated windows</label>
<default>1</default>
</entry>
<entry name="soleWindowWidth" type="Int">
<label>The sole window width in percent.</label>
<default>100</default>
</entry>
<entry name="soleWindowHeight" type="Int">
<label>The sole window height in percent.</label>
<default>100</default>
</entry>
<entry name="soleWindowNoBorders" type="Bool">
<label>Do not draw borders around sole window</label>
<default>false</default>
</entry>
<entry name="soleWindowNoGaps" type="Bool">
<label>Do not draw gaps around sole window</label>
<default>false</default>
</entry>
<entry name="monocleMaximize" type="Bool">
<label>Always maximize windows in Monocle layout</label>
<default>true</default>
</entry>
<entry name="monocleMinimizeRest" type="Bool">
<label>Minimize other tiles than the current one in Monocle layout</label>
<default>false</default>
</entry>
<entry name="adjustLayout" type="Bool">
<label>Adjust layout with mouse</label>
<default>true</default>
</entry>
<entry name="adjustLayoutLive" type="Bool">
<label>Adjust as window is being resized</label>
<default>true</default>
</entry>
<entry name="keepTilingOnDrag" type="Bool">
<label>Always preserve the tiling status of a window upon dragging</label>
<default>true</default>
</entry>
<entry name="noTileBorder" type="Bool">
<label>Remove borders of tiled windows</label>
<default>false</default>
</entry>
<entry name="preventMinimize" type="Bool">
<label>Prevent windows from minimizing</label>
<default>false</default>
</entry>
<entry name="preventProtrusion" type="Bool">
<label>Prevent windows from protruding out of screen</label>
<default>true</default>
</entry>
<entry name="notificationDuration" type="Int">
<label>Duration of pop-up notifications</label>
<default>1000</default>
</entry>
<entry name="screenGapLeft" type="Int">
<label>Gap between tiles and screen borders (Left)</label>
<default>0</default>
</entry>
<entry name="screenGapRight" type="Int">
<label>Gap between tiles and screen borders (Right)</label>
<default>0</default>
</entry>
<entry name="screenGapTop" type="Int">
<label>Gap between tiles and screen borders (Top)</label>
<default>0</default>
</entry>
<entry name="screenGapBottom" type="Int">
<label>Gap between tiles and screen borders (Bottom)</label>
<default>0</default>
</entry>
<entry name="screenGapBetween" type="Int">
<label>Gap between tiles in Tile layout</label>
<default>0</default>
</entry>
<entry name="gapsOverrideConfig" type="String">
<label>Override default screen gaps</label>
<default></default>
</entry>
<entry name="floatSkipPagerWindows" type="Bool">
<label>Make the window float if its property: skipPager=true (HACK)</label>
<default>false</default>
</entry>
<entry name="directionalKeyDwm" type="Bool">
<label>Up, Down, Left, and Right shortcut behaves like dwm</label>
<default>false</default>
</entry>
<entry name="directionalKeyFocus" type="Bool">
<label>Up, Down, Left, and Right shortcut moves focus</label>
<default>true</default>
</entry>
<entry name="limitTileWidth" type="Bool">
<label>Limit the width of tiles</label>
<default>false</default>
</entry>
<entry name="limitTileWidthRatio" type="Double">
<label>Ratio of maximum tile width to the height of screen</label>
<default>1.6</default>
</entry>
<entry name="newWindowPosition" type="Int">
<label>The position every new window in the screen window array</label>
<default>0</default>
</entry>
<entry name="logging" type="Bool">
<label>Enable logging</label>
<default>false</default>
</entry>
<entry name="logNewWindows" type="Bool">
<label>Log new windows</label>
<default>false</default>
</entry>
<entry name="logFilteredWindows" type="Bool">
<label>Log filtered windows</label>
<default>false</default>
</entry>
<entry name="logUnmanagedWindows" type="Bool">
<label>Log unmanaged windows</label>
<default>false</default>
</entry>
<entry name="logWorkspaceSignals" type="Bool">
<label>Log signals from workspace</label>
<default>false</default>
</entry>
<entry name="logWorkspaceSignalsSubmodules" type="String">
<label>Specify a comma separated list of numbers workspace signals submodules</label>
<default></default>
</entry>
<entry name="logWindowSignals" type="Bool">
<label>Log signals from windows</label>
<default>false</default>
</entry>
<entry name="logWindowSignalsSubmodules" type="String">
<label>Specify a comma separated list of numbers window signals submodules</label>
<default></default>
</entry>
<entry name="logOther" type="Bool">
<label>Log all other modules</label>
<default>false</default>
</entry>
<entry name="logOtherSubmodules" type="String">
<label>Specify a comma separated list of numbers all other submodules</label>
<default></default>
</entry>
<entry name="logFilter" type="Bool">
<label>Enable log filters</label>
<default>false</default>
</entry>
<entry name="logFilterStr" type="String">
<label>Specify a comma separated list of filters</label>
<default></default>
</entry>
</group>
</kcfg>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,62 @@
// Copyright (c) 2018 Eon S. Jeon <esjeon@hyunmu.am>
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
import QtQuick 2.15
import org.kde.plasma.core as PlasmaCore;
import org.kde.plasma.components as Plasma;
import org.kde.plasma.plasma5support as Plasma5Support
import org.kde.kwin 3.0;
import org.kde.taskmanager as TaskManager
import "../code/script.js" as K
Item {
id: scriptRoot
TaskManager.ActivityInfo {
id: activityInfo
}
Loader {
id: popupDialog
source: "popup.qml"
function show(text, duration) {
var area = Workspace.clientArea(KWin.FullScreenArea, Workspace.activeScreen, Workspace.currentDesktop);
this.item.show(text, area, duration);
}
}
Component.onCompleted: {
console.log("KROHNKITE: starting the script");
const api = {
"workspace": Workspace,
// "options": Options,
"kwin": KWin,
"shortcuts": shortcutsLoader.item
};
(new K.KWinDriver(api)).main();
}
Loader {
id: shortcutsLoader;
source: "shortcuts.qml";
}
}

View File

@ -0,0 +1,78 @@
// Copyright (c) 2018 Eon S. Jeon <esjeon@hyunmu.am>
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
import QtQuick 2.15
import QtQuick.Controls 2.15
import org.kde.plasma.core as PlasmaCore;
/*
* Component Documentation
* - PlasmaCore global `theme` object:
* https://techbase.kde.org/Development/Tutorials/Plasma2/QML2/API#Plasma_Themes
* - PlasmaCore.Dialog:
* https://techbase.kde.org/Development/Tutorials/Plasma2/QML2/API#Top_Level_windows
*/
PlasmaCore.Dialog {
id: popupDialog
type: PlasmaCore.Dialog.OnScreenDisplay
flags: Qt.Popup | Qt.WindowStaysOnTopHint
location: PlasmaCore.Types.Floating
outputOnly: true
visible: false
mainItem: Item {
width: messageLabel.implicitWidth
height: messageLabel.implicitHeight
Label {
id: messageLabel
padding: 10
font.pointSize: Math.round(10)
font.weight: Font.Bold
}
/* hides the popup window when triggered */
Timer {
id: hideTimer
repeat: false
onTriggered: {
popupDialog.visible = false;
}
}
}
function show(text, area, duration) {
hideTimer.stop();
messageLabel.text = text;
this.x = (area.x + area.width / 2) - this.width / 2;
this.y = (area.y + area.height / 2) - this.height / 2;
this.visible = true;
hideTimer.interval = duration;
hideTimer.start();
}
}

View File

@ -0,0 +1,358 @@
import QtQuick;
import org.kde.kwin;
Item {
id: dbus;
function getToggleDock() {
return toggleDock;
}
ShortcutHandler {
id: toggleDock;
name: "KrohnkitetoggleDock";
text: "Krohnkite: Toggle Dock";
sequence: "";
}
function getFocusNext() {
return focusNext;
}
ShortcutHandler {
id: focusNext;
name: "KrohnkiteFocusNext";
text: "Krohnkite: Focus Next";
sequence: "Meta+.";
}
function getFocusPrev() {
return focusPrev;
}
ShortcutHandler {
id: focusPrev;
name: "KrohnkiteFocusPrev";
text: "Krohnkite: Focus Previous";
sequence: "Meta+,";
}
function getFocusDown() {
return focusDown;
}
ShortcutHandler {
id: focusDown;
name: "KrohnkiteFocusDown";
text: "Krohnkite: Focus Down";
sequence: "Meta+J";
}
function getFocusUp() {
return focusUp;
}
ShortcutHandler {
id: focusUp;
name: "KrohnkiteFocusUp";
text: "Krohnkite: Focus Up";
sequence: "Meta+K";
}
function getFocusLeft() {
return focusLeft;
}
ShortcutHandler {
id: focusLeft;
name: "KrohnkiteFocusLeft";
text: "Krohnkite: Focus Left";
sequence: "Meta+H";
}
function getFocusRight() {
return focusRight;
}
ShortcutHandler {
id: focusRight;
name: "KrohnkiteFocusRight";
text: "Krohnkite: Focus Right";
sequence: "Meta+L";
}
function getShiftDown() {
return shiftDown;
}
ShortcutHandler {
id: shiftDown;
name: "KrohnkiteShiftDown";
text: "Krohnkite: Move Down/Next";
sequence: "Meta+Shift+J";
}
function getShiftUp() {
return shiftUp;
}
ShortcutHandler {
id: shiftUp;
name: "KrohnkiteShiftUp";
text: "Krohnkite: Move Up/Prev";
sequence: "Meta+Shift+K";
}
function getShiftLeft() {
return shiftLeft;
}
ShortcutHandler {
id: shiftLeft;
name: "KrohnkiteShiftLeft";
text: "Krohnkite: Move Left";
sequence: "Meta+Shift+H";
}
function getShiftRight() {
return shiftRight;
}
ShortcutHandler {
id: shiftRight;
name: "KrohnkiteShiftRight";
text: "Krohnkite: Move Right";
sequence: "Meta+Shift+L";
}
function getGrowHeight() {
return growHeight;
}
ShortcutHandler {
id: growHeight;
name: "KrohnkiteGrowHeight";
text: "Krohnkite: Grow Height";
sequence: "Meta+Ctrl+J";
}
function getShrinkHeight() {
return shrinkHeight;
}
ShortcutHandler {
id: shrinkHeight;
name: "KrohnkiteShrinkHeight";
text: "Krohnkite: Shrink Height";
sequence: "Meta+Ctrl+K";
}
function getShrinkWidth() {
return shrinkWidth;
}
ShortcutHandler {
id: shrinkWidth;
name: "KrohnkiteShrinkWidth";
text: "Krohnkite: Shrink Width";
sequence: "Meta+Ctrl+H";
}
function getGrowWidth() {
return growWidth;
}
ShortcutHandler {
id: growWidth;
name: "KrohnkitegrowWidth";
text: "Krohnkite: Grow Width";
sequence: "Meta+Ctrl+L";
}
function getIncrease() {
return increase;
}
ShortcutHandler {
id: increase;
name: "KrohnkiteIncrease";
text: "Krohnkite: Increase";
sequence: "Meta+I";
}
function getDecrease() {
return decrease;
}
ShortcutHandler {
id: decrease;
name: "KrohnkiteDecrease";
text: "Krohnkite: Decrease";
sequence: "Meta+D";
}
function getToggleFloat() {
return toggleFloat;
}
ShortcutHandler {
id: toggleFloat;
name: "KrohnkiteToggleFloat";
text: "Krohnkite: Toggle Float";
sequence: "Meta+F";
}
function getFloatAll() {
return floatAll;
}
ShortcutHandler {
id: floatAll;
name: "KrohnkiteFloatAll";
text: "Krohnkite: Toggle Float All";
sequence: "Meta+Shift+F";
}
function getNextLayout() {
return nextLayout;
}
ShortcutHandler {
id: nextLayout;
name: "KrohnkiteNextLayout";
text: "Krohnkite: Next Layout";
sequence: "Meta+\\";
}
function getPreviousLayout() {
return previousLayout;
}
ShortcutHandler {
id: previousLayout;
name: "KrohnkitePreviousLayout";
text: "Krohnkite: Previous Layout";
sequence: "Meta+|";
}
function getRotate() {
return rotate;
}
ShortcutHandler {
id: rotate;
name: "KrohnkiteRotate";
text: "Krohnkite: Rotate";
sequence: "Meta+R";
}
function getRotatePart() {
return rotatePart;
}
ShortcutHandler {
id: rotatePart;
name: "KrohnkiteRotatePart";
text: "Krohnkite: Rotate Part";
sequence: "Meta+Shift+R";
}
function getSetMaster() {
return setMaster;
}
ShortcutHandler {
id: setMaster;
name: "KrohnkiteSetMaster";
text: "Krohnkite: Set master";
sequence: "Meta+Return";
}
function getTileLayout() {
return tileLayout;
}
ShortcutHandler {
id: tileLayout;
name: "KrohnkiteTileLayout";
text: "Krohnkite: Tile Layout";
sequence: "Meta+T";
}
function getMonocleLayout() {
return monocleLayout;
}
ShortcutHandler {
id: monocleLayout;
name: "KrohnkiteMonocleLayout";
text: "Krohnkite: Monocle Layout";
sequence: "Meta+M";
}
function getThreeColumnLayout() {
return treeColumnLayout;
}
ShortcutHandler {
id: treeColumnLayout;
name: "KrohnkiteTreeColumnLayout";
text: "Krohnkite: Three Column Layout";
sequence: "";
}
function getSpreadLayout() {
return spreadLayout;
}
ShortcutHandler {
id: spreadLayout;
name: "KrohnkiteSpreadLayout";
text: "Krohnkite: Spread Layout";
sequence: "";
}
function getStairLayout() {
return stairLayout;
}
ShortcutHandler {
id: stairLayout;
name: "KrohnkiteStairLayout";
text: "Krohnkite: Stair Layout";
sequence: "";
}
function getFloatingLayout() {
return floatingLayout;
}
ShortcutHandler {
id: floatingLayout;
name: "KrohnkiteFloatingLayout";
text: "Krohnkite: Floating Layout";
sequence: "";
}
function getQuarterLayout() {
return quarterLayout;
}
ShortcutHandler {
id: quarterLayout;
name: "KrohnkiteQuarterLayout";
text: "Krohnkite: Quarter Layout";
sequence: "";
}
function getStackedLayout() {
return stackedLayout;
}
ShortcutHandler {
id: stackedLayout;
name: "KrohnkiteStackedLayout";
text: "Krohnkite: Stacked Layout";
sequence: "";
}
function getBTreeLayout() {
return bTreeLayout;
}
ShortcutHandler {
id: bTreeLayout;
name: "KrohnkiteBTreeLayout";
text: "Krohnkite: BTree Layout";
sequence: "";
}
function getSpiralLayout() {
return spiralLayout;
}
ShortcutHandler {
id: spiralLayout;
name: "KrohnkiteSpiralLayout";
text: "Krohnkite: Spiral Layout";
sequence: "";
}
function getColumnsLayout() {
return columnsLayout;
}
ShortcutHandler {
id: columnsLayout;
name: "KrohnkiteColumnsLayout";
text: "Krohnkite: Columns Layout";
sequence: "";
}
}

View File

@ -0,0 +1,24 @@
{
"KPackageStructure": "KWin/Script",
"KPlugin": {
"Name": "Krohnkite",
"Description": "A dynamic tiling script for KWin (1d7fd74)",
"Icon": "dialog-tile-clones",
"Authors": [
{
"Email": "esjeon@hyunmu.am",
"Name": "Eon S. Jeon"
}
],
"Id": "krohnkite",
"Version": "0.9.9.2",
"License": "MIT",
"Website": "https://github.com/anametologin/krohnkite#readme"
},
"X-Plasma-API": "declarativescript",
"X-Plasma-API-Minimum-Version": "6.0",
"X-Plasma-MainScript": "ui/main.qml",
"X-KDE-ConfigModule": "kwin/effects/configs/kcm_kwin4_genericscripted",
"X-KWin-Config-TranslationDomain": "krohnkite"
}

View File

@ -116,6 +116,7 @@ TaskManager.TasksModel {
fullScreenable = tasksModel.data(activeTaskIndex, TaskManager.AbstractTasksModel.IsFullScreenable) || false; fullScreenable = tasksModel.data(activeTaskIndex, TaskManager.AbstractTasksModel.IsFullScreenable) || false;
fullScreen = tasksModel.data(activeTaskIndex, TaskManager.AbstractTasksModel.IsFullScreen) || false; fullScreen = tasksModel.data(activeTaskIndex, TaskManager.AbstractTasksModel.IsFullScreen) || false;
resizable = tasksModel.data(activeTaskIndex, TaskManager.AbstractTasksModel.IsResizable) || false; resizable = tasksModel.data(activeTaskIndex, TaskManager.AbstractTasksModel.IsResizable) || false;
excludedFromCapture = tasksModel.data(activeTaskIndex, TaskManager.AbstractTasksModel.IsExcludedFromCapture) || false;
active = tasksModel.data(activeTaskIndex, TaskManager.AbstractTasksModel.IsActive) || false; active = tasksModel.data(activeTaskIndex, TaskManager.AbstractTasksModel.IsActive) || false;
appName = tasksModel.data(activeTaskIndex, TaskManager.AbstractTasksModel.AppName); appName = tasksModel.data(activeTaskIndex, TaskManager.AbstractTasksModel.AppName);
genericAppName = tasksModel.data(activeTaskIndex, TaskManager.AbstractTasksModel.GenericAppName); genericAppName = tasksModel.data(activeTaskIndex, TaskManager.AbstractTasksModel.GenericAppName);
@ -146,6 +147,8 @@ TaskManager.TasksModel {
return tasksModel.requestToggleFullScreen(activeTaskIndex); return tasksModel.requestToggleFullScreen(activeTaskIndex);
case ActiveWindow.Action.Resize: case ActiveWindow.Action.Resize:
return tasksModel.requestResize(activeTaskIndex); return tasksModel.requestResize(activeTaskIndex);
case ActiveWindow.Action.ExcludeFromCapture:
return tasksModel.requestToggleExcludeFromCapture(activeTaskIndex);
} }
} }
} }

View File

@ -23,7 +23,8 @@ QtObject {
AppMenu, AppMenu,
Activate, Activate,
FullScreen, FullScreen,
Resize Resize,
ExcludeFromCapture
} }
property bool minimizable: false property bool minimizable: false
@ -42,6 +43,7 @@ QtObject {
property bool fullScreen: false property bool fullScreen: false
property bool resizable: false property bool resizable: false
property bool active: false property bool active: false
property bool excludedFromCapture: false
property var appName property var appName
property var genericAppName property var genericAppName
property var decoration property var decoration
@ -84,6 +86,8 @@ QtObject {
return keepBelow; return keepBelow;
case WindowControlButton.Type.ShadeButton: case WindowControlButton.Type.ShadeButton:
return shaded; return shaded;
case WindowControlButton.Type.ExcludeFromCaptureButton:
return excludedFromCapture;
default: default:
return false; return false;
} }

View File

@ -34,6 +34,20 @@ QtObject {
checkable: false checkable: false
onTriggered: tasksModel.activeWindow.actionCall(ActiveWindow.Action.Minimize) onTriggered: tasksModel.activeWindow.actionCall(ActiveWindow.Action.Minimize)
}, },
PlasmaCore.Action {
text: i18n("&Move")
icon.name: "transform-move"
enabled: tasksModel.activeTask.movable
checkable: false
onTriggered: tasksModel.activeWindow.actionCall(ActiveWindow.Action.Move)
},
PlasmaCore.Action {
text: i18n("&Resize")
icon.name: "image-resize-symbolic"
enabled: tasksModel.activeTask.resizable
checkable: false
onTriggered: tasksModel.activeWindow.actionCall(ActiveWindow.Action.Resize)
},
PlasmaCore.Action { PlasmaCore.Action {
text: i18n("Keep &Above Others") text: i18n("Keep &Above Others")
checked: tasksModel.activeWindow.keepAbove checked: tasksModel.activeWindow.keepAbove
@ -57,18 +71,11 @@ QtObject {
onTriggered: tasksModel.activeWindow.actionCall(ActiveWindow.Action.FullScreen) onTriggered: tasksModel.activeWindow.actionCall(ActiveWindow.Action.FullScreen)
}, },
PlasmaCore.Action { PlasmaCore.Action {
text: i18n("&Move") text: i18n("&Hide from Screencast")
icon.name: "transform-move" checked: tasksModel.activeWindow.excludedFromCapture
enabled: tasksModel.activeTask.movable icon.name: "view-private"
checkable: false checkable: true
onTriggered: tasksModel.activeWindow.actionCall(ActiveWindow.Action.Move) onTriggered: tasksModel.activeWindow.actionCall(ActiveWindow.Action.ExcludeFromCapture)
},
PlasmaCore.Action {
text: i18n("&Resize")
icon.name: "image-resize-symbolic"
enabled: tasksModel.activeTask.resizable
checkable: false
onTriggered: tasksModel.activeWindow.actionCall(ActiveWindow.Action.Resize)
}, },
PlasmaCore.Action { PlasmaCore.Action {
text: i18n("&Close") text: i18n("&Close")

View File

@ -119,7 +119,7 @@ Item {
} }
function updateQdbusCommandName() { function updateQdbusCommandName() {
updateCommandName(["/usr/lib/qt6/bin/qdbus", "qdbus", "qdbus6", "qdbus-qt6"], function (commandName) { updateCommandName(["qdbus", "qdbus6", "qdbus-qt6", "/usr/lib/qt6/bin/qdbus"], function (commandName) {
qdbusCommandName = commandName; qdbusCommandName = commandName;
qdbusCommandNameChanged(); qdbusCommandNameChanged();
}); });

View File

@ -13,6 +13,21 @@ Item {
property alias model: listItemsRepeater.model property alias model: listItemsRepeater.model
property Component sourceComponent property Component sourceComponent
property bool dragActive: false
MouseArea {
id: backgroundCursorShapeMouseArea
anchors.fill: parent
enabled: false
states: State {
when: listItemsContainer.dragActive
PropertyChanges {
backgroundCursorShapeMouseArea.cursorShape: Qt.DragMoveCursor
}
}
}
RowLayout { RowLayout {
Component { Component {
@ -27,6 +42,7 @@ Item {
drag.target: contentLoader drag.target: contentLoader
Layout.preferredWidth: contentLoader.width Layout.preferredWidth: contentLoader.width
Layout.preferredHeight: contentLoader.height Layout.preferredHeight: contentLoader.height
cursorShape: listItemsContainer.dragActive ? backgroundCursorShapeMouseArea.cursorShape : Qt.OpenHandCursor
DropArea { DropArea {
anchors.fill: parent anchors.fill: parent
@ -47,6 +63,12 @@ Item {
sourceComponent: listItemsContainer.sourceComponent sourceComponent: listItemsContainer.sourceComponent
} }
Binding {
target: listItemsContainer
property: "dragActive"
value: dragArea.drag.active
}
states: State { states: State {
when: dragArea.drag.active when: dragArea.drag.active

View File

@ -17,12 +17,14 @@ TapHandler {
property int pressedButtons: 0 property int pressedButtons: 0
interval: Qt.styleHints.mousePressAndHoldInterval interval: Qt.styleHints.mousePressAndHoldInterval
onTriggered: function () { onTriggered: function () {
longPressEventHandled = true;
if (pressedButtons & Qt.LeftButton && cfg.widgetMouseAreaLeftLongPressAction != "") if (pressedButtons & Qt.LeftButton && cfg.widgetMouseAreaLeftLongPressAction != "")
invokeKWinShortcut(cfg.widgetMouseAreaLeftLongPressAction); invokeKWinShortcut(cfg.widgetMouseAreaLeftLongPressAction);
else if (pressedButtons & Qt.MiddleButton && cfg.widgetMouseAreaMiddleLongPressAction != "") else if (pressedButtons & Qt.MiddleButton && cfg.widgetMouseAreaMiddleLongPressAction != "")
invokeKWinShortcut(cfg.widgetMouseAreaMiddleLongPressAction); invokeKWinShortcut(cfg.widgetMouseAreaMiddleLongPressAction);
} }
} }
property bool longPressEventHandled: true
signal invokeKWinShortcut(string shortcut) signal invokeKWinShortcut(string shortcut)
@ -31,17 +33,22 @@ TapHandler {
longPressThreshold: 0 longPressThreshold: 0
exclusiveSignals: TapHandler.SingleTap | TapHandler.DoubleTap exclusiveSignals: TapHandler.SingleTap | TapHandler.DoubleTap
onSingleTapped: function (eventPoint, button) { onSingleTapped: function (eventPoint, button) {
if (!isLongPressEventHandled()) {
if (button === Qt.LeftButton && cfg.widgetMouseAreaLeftClickAction != "") if (button === Qt.LeftButton && cfg.widgetMouseAreaLeftClickAction != "")
invokeKWinShortcut(cfg.widgetMouseAreaLeftClickAction); invokeKWinShortcut(cfg.widgetMouseAreaLeftClickAction);
else if (button === Qt.MiddleButton && cfg.widgetMouseAreaMiddleClickAction != "") else if (button === Qt.MiddleButton && cfg.widgetMouseAreaMiddleClickAction != "")
invokeKWinShortcut(cfg.widgetMouseAreaMiddleClickAction); invokeKWinShortcut(cfg.widgetMouseAreaMiddleClickAction);
} }
}
onDoubleTapped: function (eventPoint, button) { onDoubleTapped: function (eventPoint, button) {
if (!isLongPressEventHandled()) {
stopLongPressTimer();
if (button === Qt.LeftButton && cfg.widgetMouseAreaLeftDoubleClickAction != "") if (button === Qt.LeftButton && cfg.widgetMouseAreaLeftDoubleClickAction != "")
invokeKWinShortcut(cfg.widgetMouseAreaLeftDoubleClickAction); invokeKWinShortcut(cfg.widgetMouseAreaLeftDoubleClickAction);
else if (button === Qt.MiddleButton && cfg.widgetMouseAreaMiddleDoubleClickAction != "") else if (button === Qt.MiddleButton && cfg.widgetMouseAreaMiddleDoubleClickAction != "")
invokeKWinShortcut(cfg.widgetMouseAreaMiddleDoubleClickAction); invokeKWinShortcut(cfg.widgetMouseAreaMiddleDoubleClickAction);
} }
}
onPointChanged: function () { onPointChanged: function () {
if (point.pressedButtons & acceptedButtons) { if (point.pressedButtons & acceptedButtons) {
@ -53,10 +60,15 @@ TapHandler {
function restartLongPressTimer(pressedButtons) { function restartLongPressTimer(pressedButtons) {
longPressTimer.restart(); longPressTimer.restart();
longPressEventHandled = false;
longPressTimer.pressedButtons = pressedButtons; longPressTimer.pressedButtons = pressedButtons;
} }
function stopLongPressTimer() { function stopLongPressTimer() {
longPressTimer.stop(); longPressTimer.stop();
} }
function isLongPressEventHandled() {
return longPressEventHandled;
}
} }

View File

@ -22,7 +22,8 @@ Item {
ShadeButton, ShadeButton,
HelpButton, HelpButton,
MenuButton, MenuButton,
AppMenuButton AppMenuButton,
ExcludeFromCaptureButton
} }
function getAccessibleName(type) { function getAccessibleName(type) {
@ -49,6 +50,8 @@ Item {
return "Menu"; return "Menu";
case WindowControlButton.Type.AppMenuButton: case WindowControlButton.Type.AppMenuButton:
return "Application Menu"; return "Application Menu";
case WindowControlButton.Type.ExcludeFromCaptureButton:
return "Hide from Screencast";
default: default:
return ""; return "";
} }

View File

@ -47,6 +47,11 @@ ComboBox {
value: "windowShadeButton" value: "windowShadeButton"
} }
ListElement {
name: "Hide from Screencast button"
value: "excludeFromCaptureButton"
}
ListElement { ListElement {
name: "Window title" name: "Window title"
value: "windowTitle" value: "windowTitle"

View File

@ -165,6 +165,22 @@ RowLayout {
Layout.margins: 1 Layout.margins: 1
radius: 2 radius: 2
property bool dragActive: false
MouseArea {
id: cursorShapeMouseArea
anchors.fill: parent
enabled: false
states: State {
when: elementRemoveArea.dragActive
PropertyChanges {
cursorShapeMouseArea.cursorShape: Qt.DragMoveCursor
}
}
}
Kirigami.Icon { Kirigami.Icon {
anchors.fill: parent anchors.fill: parent
source: "delete" source: "delete"
@ -179,11 +195,13 @@ RowLayout {
anchors.margins: 5 anchors.margins: 5
onEntered: dragEvent => { onEntered: dragEvent => {
dragSource = dragEvent.source; dragSource = dragEvent.source;
elementRemoveArea.dragActive = true;
} }
onExited: () => { onExited: () => {
if (dragSource && !dragSource.pressed) if (dragSource && !dragSource.pressed)
widgetElements.model.remove(dragSource.DelegateModel.itemsIndex); widgetElements.model.remove(dragSource.DelegateModel.itemsIndex);
dragSource = undefined; dragSource = undefined;
elementRemoveArea.dragActive = false;
} }
states: State { states: State {

View File

@ -9,6 +9,7 @@ import "../"
Canvas { Canvas {
property color titleBarColor: "gray" property color titleBarColor: "gray"
property color fontColor: "white" property color fontColor: "white"
property color redColor: "red"
property color foregroundWarningColor: "red" property color foregroundWarningColor: "red"
property bool outlineCloseButton: false property bool outlineCloseButton: false
property color backgroundColor: calculateBackgroundColor() property color backgroundColor: calculateBackgroundColor()
@ -39,7 +40,7 @@ Canvas {
ctx.fillStyle = foregroundColor; ctx.fillStyle = foregroundColor;
ctx.lineJoin = "miter"; ctx.lineJoin = "miter";
ctx.lineCap = "round"; ctx.lineCap = "round";
ctx.lineWidth = Math.max(1, 20 / width); ctx.lineWidth = Math.max(1, 22.0 / width);
switch (buttonType) { switch (buttonType) {
case WindowControlButton.Type.MinimizeButton: case WindowControlButton.Type.MinimizeButton:
ctx.moveTo(4, 7); ctx.moveTo(4, 7);
@ -139,6 +140,26 @@ Canvas {
ctx.rect(3.5, 4.5, 11, 1); ctx.rect(3.5, 4.5, 11, 1);
ctx.rect(3.5, 8.5, 11, 1); ctx.rect(3.5, 8.5, 11, 1);
ctx.rect(3.5, 12.5, 11, 1); ctx.rect(3.5, 12.5, 11, 1);
ctx.stroke();
break;
case WindowControlButton.Type.ExcludeFromCaptureButton:
ctx.moveTo(4.9, 6.5);
ctx.lineTo(5.8, 2.9);
ctx.lineTo(9, 4);
ctx.lineTo(12.2, 2.9);
ctx.lineTo(13.1, 6.5);
ctx.closePath();
ctx.fill();
ctx.moveTo(2.8, 8.5);
ctx.lineTo(15.2, 8.5);
ctx.ellipse(5 - 2.3, 10.5, 4.6, 4.6);
ctx.ellipse(13 - 2.3, 10.5, 4.6, 4.6);
ctx.moveTo(7.5, 12.8);
ctx.lineTo(10.5, 12.8);
ctx.stroke(); ctx.stroke();
break; break;
} }
@ -181,6 +202,8 @@ Canvas {
return fontColor; return fontColor;
} else if (buttonType == WindowControlButton.Type.CloseButton && outlineCloseButton) { } else if (buttonType == WindowControlButton.Type.CloseButton && outlineCloseButton) {
return active ? foregroundWarningColor : fontColor; return active ? foregroundWarningColor : fontColor;
} else if (buttonType == WindowControlButton.Type.ExcludeFromCaptureButton && checked) {
return redColor;
} }
return Qt.rgba(0, 0, 0, 0); return Qt.rgba(0, 0, 0, 0);
} }
@ -190,7 +213,7 @@ Canvas {
return titleBarColor; return titleBarColor;
else if (buttonType == WindowControlButton.Type.CloseButton && outlineCloseButton) else if (buttonType == WindowControlButton.Type.CloseButton && outlineCloseButton)
return titleBarColor; return titleBarColor;
else if ((buttonType == WindowControlButton.Type.KeepAboveButton || buttonType == WindowControlButton.Type.KeepBelowButton || buttonType == WindowControlButton.Type.ShadeButton) && checked) else if ((buttonType == WindowControlButton.Type.KeepAboveButton || buttonType == WindowControlButton.Type.KeepBelowButton || buttonType == WindowControlButton.Type.ShadeButton || buttonType == WindowControlButton.Type.ExcludeFromCaptureButton) && checked)
return titleBarColor; return titleBarColor;
else if (hovered) else if (hovered)
return titleBarColor; return titleBarColor;

View File

@ -133,6 +133,8 @@ Item {
return "plasma-symbolic"; return "plasma-symbolic";
case WindowControlButton.Type.AppMenuButton: case WindowControlButton.Type.AppMenuButton:
return "application-menu"; return "application-menu";
case WindowControlButton.Type.ExcludeFromCaptureButton:
return "view-private";
default: default:
return ""; return "";
} }

View File

@ -97,6 +97,11 @@ function widgetElementModelFromName(name) {
"type": WidgetElement.Type.WindowControlButton, "type": WidgetElement.Type.WindowControlButton,
"windowControlButtonType": WindowControlButton.Type.AppMenuButton "windowControlButtonType": WindowControlButton.Type.AppMenuButton
}; };
case "excludeFromCaptureButton":
return {
"type": WidgetElement.Type.WindowControlButton,
"windowControlButtonType": WindowControlButton.Type.ExcludeFromCaptureButton
};
case "windowTitle": case "windowTitle":
return { return {
"type": WidgetElement.Type.WindowTitle "type": WidgetElement.Type.WindowTitle

View File

@ -79,6 +79,8 @@ function getAction(buttonType) {
return ActiveWindow.Action.Menu; return ActiveWindow.Action.Menu;
case WindowControlButton.Type.AppMenuButton: case WindowControlButton.Type.AppMenuButton:
return ActiveWindow.Action.AppMenu; return ActiveWindow.Action.AppMenu;
case WindowControlButton.Type.ExcludeFromCaptureButton:
return ActiveWindow.Action.ExcludeFromCapture;
default: default:
return ""; return "";
} }

View File

@ -12,7 +12,7 @@
"Id": "com.github.antroids.application-title-bar", "Id": "com.github.antroids.application-title-bar",
"Name": "Application Title Bar", "Name": "Application Title Bar",
"License": "GPL-3.0+", "License": "GPL-3.0+",
"Version": "0.8.5", "Version": "0.9.1",
"Website": "https://github.com/antroids/application-title-bar", "Website": "https://github.com/antroids/application-title-bar",
"FormFactors": [ "FormFactors": [
"desktop" "desktop"

View File

@ -1,2 +1,2 @@
Gilroy Medium;0xProto Nerd Font Mono;Gilroy Medium Gilroy Medium;Gilroy Medium

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
Host 128.140.8.193 openslides.bak-it.de dedicated1.bak-it.de www.linksjugend-solid.de monitoring.bak-it.de 91.107.234.106 vaultwarden.bak-it.de 167.233.38.143 78.46.239.229 168.119.171.217 78.47.196.196 5.75.139.112 mail.bak-it.de web.bak-it.de cloud.linksjugend-solid.de forum.linksjugend-solid.de backuppc.bak-it.de login.bak-it.de login.linksjugend-solid.de stuff.bak-it.de Host shop.linksjugend-solid.de vaultwarden.bak-it.de matrix.bak-it.de openslides.bak-it.de bv-mainpage.bak-it.de 91.107.234.106 bibliothek.linksjugend-solid.de 167.233.38.143 78.46.239.229 168.119.171.217 78.47.196.196 5.75.139.112 mail.bak-it.de web.bak-it.de cloud.linksjugend-solid.de forum.linksjugend-solid.de backuppc.bak-it.de login.bak-it.de login.linksjugend-solid.de stuff.bak-it.de
User root User root
IdentityFile ~/.ssh/solidProd IdentityFile ~/.ssh/solidProd

View File

@ -4,7 +4,7 @@ gtk-button-images=true
gtk-cursor-blink=true gtk-cursor-blink=true
gtk-cursor-blink-time=1000 gtk-cursor-blink-time=1000
gtk-cursor-theme-name=catppuccin-frappe-blue-cursors gtk-cursor-theme-name=catppuccin-frappe-blue-cursors
gtk-cursor-theme-size=24 gtk-cursor-theme-size=18
gtk-decoration-layout=icon:minimize,maximize,close gtk-decoration-layout=icon:minimize,maximize,close
gtk-enable-animations=true gtk-enable-animations=true
gtk-enable-event-sounds=1 gtk-enable-event-sounds=1
@ -19,6 +19,6 @@ gtk-theme-name=Catppuccin-Frappe-Standard-Blue-Dark
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-toolbar-style=3 gtk-toolbar-style=3
gtk-xft-antialias=1 gtk-xft-antialias=1
gtk-xft-dpi=98304 gtk-xft-dpi=122880
gtk-xft-hinting=1 gtk-xft-hinting=1
gtk-xft-hintstyle=hintfull gtk-xft-hintstyle=hintfull

View File

@ -3,7 +3,7 @@ gtk-application-prefer-dark-theme=true
gtk-cursor-blink=true gtk-cursor-blink=true
gtk-cursor-blink-time=1000 gtk-cursor-blink-time=1000
gtk-cursor-theme-name=catppuccin-frappe-blue-cursors gtk-cursor-theme-name=catppuccin-frappe-blue-cursors
gtk-cursor-theme-size=24 gtk-cursor-theme-size=18
gtk-decoration-layout=icon:minimize,maximize,close gtk-decoration-layout=icon:minimize,maximize,close
gtk-enable-animations=true gtk-enable-animations=true
gtk-font-name=Noto Sans, 10 gtk-font-name=Noto Sans, 10
@ -11,4 +11,4 @@ gtk-icon-theme-name=breeze-dark
gtk-modules=colorreload-gtk-module gtk-modules=colorreload-gtk-module
gtk-primary-button-warps-slider=true gtk-primary-button-warps-slider=true
gtk-sound-theme-name=ocean gtk-sound-theme-name=ocean
gtk-xft-dpi=98304 gtk-xft-dpi=122880

View File

@ -55,7 +55,7 @@
}, },
"edit_predictions": { "edit_predictions": {
"ollama": { "ollama": {
"model": "qwen2.5-coder:7b-base" "model": "qwen2.5-coder:7b-base",
}, },
"provider": "open_ai_compatible_api", "provider": "open_ai_compatible_api",
"open_ai_compatible_api": { "open_ai_compatible_api": {
@ -116,6 +116,11 @@
"enable_preview_multibuffer_from_code_navigation": true, "enable_preview_multibuffer_from_code_navigation": true,
"enable_preview_from_file_finder": true, "enable_preview_from_file_finder": true,
}, },
"file_scan_exclusions": [
"**/.venv/**/*",
"**/node_modules/**/*",
"**/dist/**/*",
],
"tabs": { "tabs": {
"show_close_button": "always", "show_close_button": "always",
"activate_on_close": "neighbour", "activate_on_close": "neighbour",
@ -133,7 +138,7 @@
"close_on_file_delete": true, "close_on_file_delete": true,
"search": { "search": {
"include_ignored": true, "include_ignored": true,
"center_on_match": false, "center_on_match": true,
}, },
"use_smartcase_search": false, "use_smartcase_search": false,
"diagnostics": { "diagnostics": {
@ -211,4 +216,10 @@
"light": "One Light", "light": "One Light",
"dark": "Catppuccin Frappé", "dark": "Catppuccin Frappé",
}, },
"dap": {
"CodeLLDB": {
"binary": "/run/current-system/sw/bin/lldb-dap",
"args": [],
},
},
} }

View File

@ -115,6 +115,7 @@ in
# KDE # KDE
kdePackages.bluedevil kdePackages.bluedevil
kdePackages.krdc kdePackages.krdc
kdePackages.plasma-keyboard
# Net # Net
pkgs-unstable.gns3-gui pkgs-unstable.gns3-gui

View File

@ -175,7 +175,6 @@ in
grim grim
slurp slurp
swappy swappy
wl-clipboard
copyq copyq
python312Packages.pillow python312Packages.pillow
@ -195,11 +194,6 @@ in
blender blender
freecad freecad
# Dev
python3
qemu
virt-manager
# Comms # Comms
discord-ptb discord-ptb
kdePackages.kdeconnect-kde kdePackages.kdeconnect-kde

View File

@ -76,7 +76,7 @@
uid = 1000; uid = 1000;
isNormalUser = true; isNormalUser = true;
description = "someone"; description = "someone";
extraGroups = [ "wheel" "docker" "libvirtd" "gpio" "wireshark" "adbusers" ]; extraGroups = [ "wheel" "docker" "libvirtd" "gpio" "wireshark" "adbusers" "networking" ];
packages = with pkgs; []; packages = with pkgs; [];
shell = pkgs.zsh; shell = pkgs.zsh;
}; };
@ -175,10 +175,17 @@
# Graphics # Graphics
gimp3 gimp3
virtiofsd
ciscoPacketTracer9 ciscoPacketTracer9
pkgs-unstable.zed-editor pkgs-unstable.zed-editor
# VM
qemu
virtiofsd
virt-manager
spice
spice-gtk
spice-protocol
# Printing # Printing
cnijfilter2 # canon printer cnijfilter2 # canon printer
@ -186,7 +193,10 @@
wireshark wireshark
# Misc # Misc
python3
lldb
hunspell hunspell
wl-clipboard
hunspellDicts.en_US hunspellDicts.en_US
hunspellDicts.de_DE hunspellDicts.de_DE
docker-buildx docker-buildx