From 7c72d065858f55d42697cc3728f1f7ada762bc21 Mon Sep 17 00:00:00 2001 From: Domenico Ferraro Date: Sat, 3 Jan 2026 11:25:03 +0100 Subject: [PATCH 01/35] set version to 17.3 --- package.json | 2 +- resources/metadata.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index a53e786b..30504186 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tilingshell", - "version": "17.2", + "version": "17.3", "author": "Domenico Ferraro ", "private": true, "license": "GPL v2.0", diff --git a/resources/metadata.json b/resources/metadata.json index 36cb8841..d3ba685a 100644 --- a/resources/metadata.json +++ b/resources/metadata.json @@ -13,7 +13,7 @@ "49" ], "version": 99, - "version-name": "17.2", + "version-name": "17.3", "url": "https://github.com/domferr/tilingshell", "settings-schema": "org.gnome.shell.extensions.tilingshell", "gettext-domain": "tilingshell", From a2857724f0d9a3e6df8656214da1d7443a0a1c2b Mon Sep 17 00:00:00 2001 From: albanobattistella <34811668+albanobattistella@users.noreply.github.com> Date: Sat, 3 Jan 2026 11:31:17 +0100 Subject: [PATCH 02/35] Update Italian translations in it.po (#466) Updated Italian translations for various strings. --- translations/it.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/it.po b/translations/it.po index 7c344ab9..826b9b32 100644 --- a/translations/it.po +++ b/translations/it.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Tiling Shell\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-11-09 11:35+0100\n" -"PO-Revision-Date: 2025-10-09 20:11+0200\n" +"PO-Revision-Date: 2026-01-02 21:11+0200\n" "Last-Translator: Albano Battistella \n" "Language-Team: Italian <>\n" "Language: it\n" @@ -632,11 +632,11 @@ msgstr "Apri una nuova issue su" #: dist/prefs.js:1814 msgid "Choose custom color" -msgstr "" +msgstr "Scegli colore personalizzato" #: dist/prefs.js:1815 msgid "Use system accent color" -msgstr "" +msgstr "Usa il colore predefinito del sistema" #: dist/prefs.js:1866 dist/prefs.js:1889 msgid "New accelerator…" From 8f8bfc7fd003b63801caaebf8ed029b798547a2f Mon Sep 17 00:00:00 2001 From: Christian Lauinger Date: Sat, 3 Jan 2026 11:33:05 +0100 Subject: [PATCH 03/35] Updates German translation (de) (#448) Updates the German translation file with new and updated translations. This includes translations for: - Adding tiled windows to ALT+TAB menu - Edge tiling offset - Restricting directional focus to tiled windows - Choosing custom color - Use system accent color - Cycle layouts This ensures that the user interface is properly translated into German for a better user experience. --- translations/de.po | 928 ++++++++++++++++++++++++++++++++------------- 1 file changed, 665 insertions(+), 263 deletions(-) diff --git a/translations/de.po b/translations/de.po index bad34420..d46b735e 100644 --- a/translations/de.po +++ b/translations/de.po @@ -9,178 +9,701 @@ msgstr "" "Project-Id-Version: Tiling Shell\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-11-09 11:35+0100\n" -"PO-Revision-Date: 2025-03-30 22:18+0200\n" -"Last-Translator: Christoph Haas \n" +"PO-Revision-Date: 2025-11-22 16:08+0100\n" +"Last-Translator: Christian Lauinger \n" "Language-Team: German\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.5\n" +"X-Generator: Poedit 3.6\n" -#: dist/prefs.js:793 +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:7 +msgid "Last version installed" +msgstr "Letzte installierte Version" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:8 +msgid "Last version installed of this extension." +msgstr "Letzte installierte Version dieser Erweiterung." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:12 +msgid "Enable tiling system" +msgstr "Kachel-System aktivieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:13 +msgid "Hold CTRL while moving a window to tile it." +msgstr "" +"Halten Sie die STRG-Taste gedrückt, während Sie ein Fenster verschieben, um " +"es nebeneinander anzuordnen." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:17 +msgid "Tiling system activation key" +msgstr "Aktivierungstaste des Kachel-Systems" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:18 +msgid "Which key to hold while moving a window to activate the tiling system." +msgstr "" +"Welche Taste muss beim Verschieben eines Fensters gedrückt gehalten werden, " +"um das Kachelsystem zu aktivieren." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:22 +msgid "Tiling system deactivation key" +msgstr "Deaktivierungstaste des Kachel-Systems" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:23 +msgid "" +"Which key to hold while moving a window to deactivate the tiling system." +msgstr "" +"Welche Taste muss gedrückt gehalten werden, während ein Fenster verschoben " +"wird, um das Kachelsystem zu deaktivieren." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:27 +msgid "Enable snap assist" +msgstr "Snap-Assistent aktivieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:28 +msgid "Move the window on top of the screen to snap assist it." +msgstr "" +"Bewegen Sie das Fenster an den oberen Bildschirmrand, um es anzudocken." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:32 +msgid "Shows indicator" +msgstr "Zeigt Indikator an" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:33 +msgid "Shows an indicator on top panel." +msgstr "Zeigt einen Indikator auf dem oberen Bedienfeld an." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:37 +#: src/prefs.ts:89 +msgid "Inner gaps" +msgstr "Innere Abstände" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:38 +msgid "Internal gaps between tiles in a layout." +msgstr "Interne Abstände zwischen Kacheln in einem Layout." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:42 +#: src/prefs.ts:96 +msgid "Outer gaps" +msgstr "Äußere Abstände" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:43 +msgid "External gaps between the layout and the monitor borders." +msgstr "Abstände zwischen Fenstern und Monitorrändern." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:47 +#: src/prefs.ts:247 +msgid "Span multiple tiles" +msgstr "Mehrere Kacheln vereinen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:48 +msgid "Hold ALT to span multiple tiles." +msgstr "Aktivierungstaste halten, um mehrere Kacheln zu vereinen." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:52 +msgid "Key to span multiple tiles" +msgstr "Taste zum Überspannen mehrerer Kacheln" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:53 +msgid "Which key to hold to span multiple tiles." +msgstr "Aktivierungstaste halten, um mehrere Kacheln zu vereinen." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:57 +#: src/prefs.ts:405 +msgid "Layouts" +msgstr "Layouts" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:58 +msgid "The layouts available to the tiling managers and the snap assist." +msgstr "" +"Die Layouts, die den Kachelungsmanagern und der Ausrichtungshilfe zur " +"Verfügung stehen." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:62 +msgid "Selected layouts" +msgstr "Ausgewählte Layouts" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:63 +msgid "Each monitor's active layout used by the monitor tiling manager." +msgstr "" +"Das aktive Layout jedes Monitors, das vom Monitor-Tiling-Manager verwendet " +"wird." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:67 +#: src/prefs.ts:275 +msgid "Restore window size" +msgstr "Fenstergröße wiederherstellen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:68 +msgid "Restore the windows to their original size when untiled." +msgstr "" +"Ob bei Fenstern nach Aufhebung der Kachelung ihre ursprüngliche Größe " +"wiederhergestellt werden soll." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:72 +#: src/prefs.ts:801 +msgid "Enable next/previous window focus to wrap around" +msgstr "Zyklisches Fokussieren des nächsten/vorherigen Fensters aktivieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:73 +#: src/prefs.ts:803 +msgid "When focusing next or previous window, wrap around at the window edge" +msgstr "" +"Beim Fokussieren des nächsten oder vorherigen Fensters am Rand umspringen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:77 +#: src/prefs.ts:810 +msgid "Restrict directional focus to tiled windows" +msgstr "Richtungsfokus auf gekachelte Fenster beschränken" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:78 +#: src/prefs.ts:812 +msgid "When using directional focus navigation, only consider tiled windows" +msgstr "" +"Bei Verwendung der gerichteten Fokusnavigation nur gekachelte Fenster " +"berücksichtigen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:82 +#: src/prefs.ts:266 +msgid "Enable auto-resize of the complementing tiled windows" +msgstr "Automatische Größenänderung ergänzender gekachelter Fenster aktivieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:83 +msgid "" +"When a tiled window is resized, auto-resize the other tiled windows near it." +msgstr "" +"Wenn die Größe eines gekachelten Fensters geändert wird, werden die anderen " +"gekachelten Fenster in seiner Nähe automatisch in der Größe angepasst." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:87 +msgid "Enable Snap Assistant blur" +msgstr "Snap-Assistent verwischen aktivieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:88 +msgid "Blur snap assistant" +msgstr "Snap-Assistent verwischen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:92 +msgid "Enable selected tile preview blur" +msgstr "Vorschaubildschirm für ausgewählte Kacheln unscharf darstellen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:93 +msgid "Blur selected tile previews" +msgstr "Ausgewählte Kachelvorschauen verwischen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:97 +msgid "Enable keybindings" +msgstr "Tastenkombinationen aktivieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:98 +msgid "Move focused window through tiles by using keybindings." +msgstr "" +"Verschieben Sie das fokussierte Fenster mithilfe von Tastenkombinationen " +"durch die Kacheln." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:102 +msgid "Enable auto tiling" +msgstr "Automatisches Kacheln aktivieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:103 +msgid "" +"Automatically tile a new window to the best tile according to the current " +"layout." +msgstr "" +"Ein neues Fenster automatisch entsprechend dem aktuellen Layout optimal " +"anordnen." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:107 +msgid "Overridden settings" +msgstr "Überschriebene Einstellungen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:108 +msgid "The settings that are overridden and their old value." +msgstr "Die überschriebenen Einstellungen und ihre alten Werte." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:112 +msgid "Active Screen Edges" +msgstr "Aktive Bildschirmränder" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:113 +msgid "" +"Drag windows against the top, left and right screen edges to resize them." +msgstr "" +"Ziehen Sie Fenster an den oberen, linken und rechten Bildschirmrand, um ihre " +"Größe zu ändern." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:117 +msgid "Drag agains top edge to maximize window" +msgstr "Ziehen Sie an der Oberkante, um das Fenster zu maximieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:118 +#: src/prefs.ts:320 +msgid "Drag windows against the top edge to maximize them" +msgstr "Ziehen Sie Fenster an den oberen Rand, um sie zu maximieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:122 +#: src/prefs.ts:284 +msgid "Add snap assistant and auto-tile buttons to window menu" +msgstr "" +"Snap-Assistent und Auto-Kachel Schaltflächen zum Fenstermenü hinzufügen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:123 +msgid "" +"Add snap assistant and auto-tile buttons in the menu that shows up when you " +"right click on a window title." +msgstr "" +"Fügen Sie die Schaltflächen „Ausrichten“ und „Automatisch anordnen“ in das " +"Menü ein, das angezeigt wird, wenn Sie mit der rechten Maustaste auf einen " +"Fenstertitel klicken." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:127 +msgid "Add tiled windows group to alt+tab menu" +msgstr "Gruppierte Fenster zum Alt+Tab-Menü hinzufügen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:128 +msgid "" +"Add the tiled windows to the alt+tab menu to open all the tiled windows at " +"once" +msgstr "" +"Fügen Sie die gekachelten Fenster zum Alt+Tab-Menü hinzu, um alle " +"gekachelten Fenster gleichzeitig zu öffnen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:132 +#: src/prefs.ts:111 +msgid "Snap Assistant threshold" +msgstr "Snap-Assistent Schwellenwert" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:133 +msgid "Snap Assistant's threshold to enlarge, shrink, open and close it." +msgstr "" +"Die Schwelle von Snap Assistant zum Vergrößern, Verkleinern, Öffnen und " +"Schließen." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:137 +msgid "Quarter tiling threshold" +msgstr "Viertel-Kachelschwelle" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:138 +msgid "Threshold to trigger quarter tiling." +msgstr "Schwellenwert zum Auslösen der Viertel-Kachelung." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:142 +#: src/prefs.ts:348 +msgid "Edge tiling offset" +msgstr "Kantenversatz" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:143 +msgid "Offset to trigger edge tiling (left and right edge)." +msgstr "Versatz zum Auslösen der Kantenanpassung (linker und rechter Rand)." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:147 +msgid "Enable window border" +msgstr "Fensterrahmen aktivieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:148 +msgid "Show a border around focused window." +msgstr "Zeige einen Rahmen um das fokussierte Fenster an." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:152 +msgid "Focused window border color" +msgstr "Farbe des fokussierten Fensterrahmens" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:153 +msgid "The color of the focused window's border." +msgstr "Die Farbe des Rahmens des fokussierten Fensters." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:157 +msgid "Use custom color" +msgstr "Benutzerdefinierte Farbe verwenden" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:158 +msgid "Use the color defined here for the focused window's border." +msgstr "" +"Verwenden Sie die hier definierte Farbe für den Rahmen des fokussierten " +"Fensters." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:162 +msgid "Focused window border width" +msgstr "Breite des fokussierten Fensterrahmens" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:163 +msgid "The width of the focused window's border." +msgstr "Die Breite des Rahmens des fokussierten Fensters." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:167 +msgid "Enable smart window border radius" +msgstr "Intelligenten Rahmenradius aktivieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:168 +msgid "Dinamically adapt to the window's border radius." +msgstr "" +"Rahmenradius dynamisch an den tatsächlichen Fensterrahmenradius anpassen." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:172 +msgid "Snap assistant animation time (milliseconds)" +msgstr "Animationsdauer des Snap-Assistenten (Millisekunden)" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:173 +msgid "Animation time in milliseconds of the snap assistant" +msgstr "Animationsdauer des Snap-Assistenten in Millisekunden" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:177 +msgid "Tile animation time (milliseconds)" +msgstr "Animationsdauer der Kacheln (Millisekunden)" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:178 +msgid "Animation time in milliseconds of the tiles" +msgstr "Animationsdauer der Kacheln in Millisekunden" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:182 +#: src/prefs.ts:376 +msgid "Enable window suggestions for the tiling system" +msgstr "Fenstervorschläge für das Kachelsystem aktivieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:183 +msgid "" +"Provides smart suggestions to fill empty tiles when using the tiling system." +msgstr "" +"Bietet intelligente Vorschläge, um leere Kacheln beim Verwenden des " +"Kachelsystems zu füllen." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:187 +#: src/prefs.ts:385 +msgid "Enable window suggestions for the snap assistant" +msgstr "Fenstervorschläge für den Snap-Assistenten aktivieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:188 +msgid "" +"Offers suggestions to populate empty tiles when using the snap assistant." +msgstr "" +"Bietet Vorschläge, um leere Kacheln beim Verwenden des Snap-Assistenten zu " +"füllen." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:192 +#: src/prefs.ts:394 +msgid "Enable window suggestions for screen edge snapping" +msgstr "Fenstervorschläge für das Einrasten an Bildschirmrändern aktivieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:193 +msgid "Suggests windows to occupy empty tiles when snapping to screen edges." +msgstr "" +"Schlägt Fenster vor, um leere Kacheln beim Einrasten an Bildschirmrändern zu " +"besetzen." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:199 +msgid "Move focused window to the tile to its right" +msgstr "" +"Verschieben Sie das fokussierte Fenster zur Kachel auf der rechten Seite" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:203 +msgid "Move focused window to the tile to its left" +msgstr "" +"Verschieben Sie das fokussierte Fenster zur Kachel auf der linken Seite" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:207 +msgid "Move focused window to the tile above" +msgstr "Verschieben Sie das fokussierte Fenster zur oberen Kachel" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:211 +msgid "Move focused window to the tile below" +msgstr "Verschieben Sie das fokussierte Fenster zur unteren Kachel" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:215 +msgid "Span focused window to the tile to its right" +msgstr "" +"Dehnen Sie das fokussierte Fenster auf die Kachel auf der rechten Seite aus" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:219 +msgid "Span focused window to the tile to its left" +msgstr "" +"Dehnen Sie das fokussierte Fenster auf die Kachel auf der linken Seite aus" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:223 +msgid "Span focused window to the tile above" +msgstr "Das fokussierte Fenster auf die obere Kachel ausdehnen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:227 +msgid "Span focused window to the tile below" +msgstr "Das fokussierte Fenster auf die untere Kachel ausdehnen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:231 +msgid "Resize the focused window to span all tiles" +msgstr "Das fokussierte Fenster über alle Kacheln ausdehnen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:235 +msgid "Untile the focused window" +msgstr "Kachelung des fokussierten Fensters aufheben" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:239 +#: src/prefs.ts:653 +msgid "Move the focused window to the center of the screen" +msgstr "Das fokussierte Fenster in die Bildschirmmitte verschieben" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:243 +msgid "Focus the window to the right the current focused window" +msgstr "Das Fenster rechts neben dem aktuell fokussierten Fenster fokussieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:247 +#: src/prefs.ts:669 +msgid "Focus the window to the left of the current focused window" +msgstr "Das Fenster links neben dem aktuell fokussierten Fenster fokussieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:251 +#: src/prefs.ts:676 +msgid "Focus the window above the current focused window" +msgstr "Das Fenster oberhalb des aktuell fokussierten Fensters fokussieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:255 +#: src/prefs.ts:683 +msgid "Focus the window below the current focused window" +msgstr "Das Fenster unterhalb des aktuell fokussierten Fensters fokussieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:259 +#: src/prefs.ts:690 +msgid "Focus the window next to the current focused window" +msgstr "Das nächste Fenster neben dem aktuell fokussierten Fenster fokussieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:263 +#: src/prefs.ts:697 +msgid "Focus the window prior to the current focused window" +msgstr "Das vorherige Fenster vor dem aktuell fokussierten Fenster fokussieren" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:267 +#: src/prefs.ts:705 +msgid "Minimize all the other windows and show only the focused window" +msgstr "" +"Alle anderen Fenster minimieren und nur das fokussierte Fenster anzeigen" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:271 +#: src/prefs.ts:713 +msgid "Cycle through available workspace layouts" +msgstr "Durch die verfügbaren Arbeitsbereichslayouts blättern" + +#: src/components/altTab/MultipleWindowsIcon.ts:59 +msgid "Tiled windows" +msgstr "Gekachelte Fenster" + +#: src/components/editor/editorDialog.ts:47 +msgid "Select the layout to edit" +msgstr "Wählen Sie das zu bearbeitende Layout aus" + +#: src/components/editor/editorDialog.ts:71 +msgid "Close" +msgstr "Schliessen" + +#: src/components/editor/editorDialog.ts:100 +msgid "to split a tile" +msgstr "um eine Kachel zu teilen" + +#: src/components/editor/editorDialog.ts:141 +msgid "to split a tile vertically" +msgstr "um eine Kachel vertikal zu teilen" + +#: src/components/editor/editorDialog.ts:163 +msgid "to delete a tile" +msgstr "um eine Kachel zu löschen" + +#: src/components/editor/editorDialog.ts:189 +msgid "use the indicator button to save or cancel" +msgstr "Verwenden Sie die Indikator-Schaltfläche zum Speichern oder Abbrechen" + +#: src/components/editor/editorDialog.ts:209 +msgid "How to use the editor" +msgstr "Wie man den Editor verwendet" + +#: src/components/editor/editorDialog.ts:219 +msgid "Start editing" +msgstr "Editieren starten" + +#: src/components/window_menu/overriddenWindowMenu.ts:167 +msgid "Move to best tile" +msgstr "Fenster zur besten Kachel verschieben" + +#: src/components/window_menu/overriddenWindowMenu.ts:189 +msgid "Move to leftmost tile" +msgstr "Fenster zur linken Kachel verschieben" + +#: src/components/window_menu/overriddenWindowMenu.ts:212 +msgid "Move to rightmost tile" +msgstr "Fenster zur rechten Kachel verschieben" + +#: src/indicator/defaultMenu.ts:312 +msgid "Edit Layouts" +msgstr "Layouts bearbeiten" + +#: src/indicator/defaultMenu.ts:321 +msgid "New Layout" +msgstr "Neues Layout" + +#: src/indicator/editingMenu.ts:24 +msgid "Menu" +msgstr "Menü" + +#: src/indicator/editingMenu.ts:32 +msgid "Info" +msgstr "Info" + +#: src/indicator/editingMenu.ts:40 src/prefs.ts:427 src/prefs.ts:835 +msgid "Save" +msgstr "Speichern" + +#: src/indicator/editingMenu.ts:51 src/prefs.ts:428 src/prefs.ts:485 +#: src/prefs.ts:836 src/prefs.ts:895 +msgid "Cancel" +msgstr "Abbrechen" + +#: src/prefs.ts:68 msgid "General" msgstr "Allgemein" -#: dist/prefs.js:798 +#: src/prefs.ts:75 msgid "Appearance" msgstr "Erscheinungsbild" -#: dist/prefs.js:799 +#: src/prefs.ts:76 msgid "Configure the appearance of Tiling Shell" msgstr "Das Erscheinungsbild der Tiling Shell konfigurieren" -#: dist/prefs.js:804 +#: src/prefs.ts:82 msgid "Show Indicator" msgstr "Indikator anzeigen" -#: dist/prefs.js:805 +#: src/prefs.ts:83 msgid "Whether to show the panel indicator" msgstr "Ob der Panel-Indikator angezeigt wird" -#: dist/prefs.js:810 -msgid "Inner gaps" -msgstr "Innere Abstände" - -#: dist/prefs.js:811 +#: src/prefs.ts:90 msgid "Gaps between windows" msgstr "Abstände zwischen Fenstern" -#: dist/prefs.js:816 -msgid "Outer gaps" -msgstr "Äußere Abstände" - -#: dist/prefs.js:817 +#: src/prefs.ts:97 msgid "Gaps between a window and the monitor borders" msgstr "Abstände zwischen Fenstern und Monitorrändern" -#: dist/prefs.js:821 +#: src/prefs.ts:102 msgid "Blur (experimental feature)" msgstr "Unschärfe (experimentelle Funktion)" -#: dist/prefs.js:823 +#: src/prefs.ts:104 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "Unschärfe-Effekt auf Snap-Assistent und Kachel-Vorschauen anwenden" -#: dist/prefs.js:829 -msgid "Snap Assistant threshold" -msgstr "Snap-Assistent Schwellenwert" - -#: dist/prefs.js:831 +#: src/prefs.ts:113 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "" "Mindestabstand zwischen Snap-Assistent und Mauszeiger, um ihn zu öffnen" -#: dist/prefs.js:840 +#: src/prefs.ts:123 msgid "Snap Assistant" msgstr "Snap-Assistent" -#: dist/prefs.js:841 +#: src/prefs.ts:124 msgid "Apply blur effect to Snap Assistant" msgstr "Unschärfe-Effekt auf den Snap-Assistenten anwenden" -#: dist/prefs.js:847 +#: src/prefs.ts:130 msgid "Selected tile preview" msgstr "Vorschau der ausgewählten Kachel" -#: dist/prefs.js:848 +#: src/prefs.ts:131 msgid "Apply blur effect to selected tile preview" msgstr "Unschärfe-Effekt auf die ausgewählte Kachelvorschau anwenden" -#: dist/prefs.js:852 +#: src/prefs.ts:136 msgid "Window border" msgstr "Fensterrahmen" -#: dist/prefs.js:853 dist/prefs.js:860 +#: src/prefs.ts:137 src/prefs.ts:144 msgid "Show a border around focused window" msgstr "Rahmen um das fokussierte Fenster anzeigen" -#: dist/prefs.js:859 +#: src/prefs.ts:143 msgid "Enable" msgstr "Aktivieren" -#: dist/prefs.js:866 +#: src/prefs.ts:150 msgid "Smart border radius" msgstr "Intelligenter Rahmenradius" -#: dist/prefs.js:867 +#: src/prefs.ts:151 msgid "Dynamically adapt to the window’s actual border radius" msgstr "" "Rahmenradius dynamisch an den tatsächlichen Fensterrahmenradius anpassen" -#: dist/prefs.js:873 +#: src/prefs.ts:157 msgid "Width" msgstr "Breite" -#: dist/prefs.js:874 +#: src/prefs.ts:158 msgid "The size of the border" msgstr "Stärke des Rahmens" -#: dist/prefs.js:883 +#: src/prefs.ts:167 msgid "Border color" msgstr "Rahmenfarbe" -#: dist/prefs.js:884 +#: src/prefs.ts:168 msgid "Choose the color of the border" msgstr "Rahmenfarbe auswählen" -#: dist/prefs.js:900 +#: src/prefs.ts:185 msgid "Animations" msgstr "Animationen" -#: dist/prefs.js:901 +#: src/prefs.ts:186 msgid "Customize animations" msgstr "Animationen anpassen" -#: dist/prefs.js:907 +#: src/prefs.ts:192 msgid "Snap assistant animation time" msgstr "Animationsdauer des Snap-Assistenten" -#: dist/prefs.js:908 +#: src/prefs.ts:193 msgid "The snap assistant animation time in milliseconds" msgstr "Animationsdauer des Snap-Assistenten in Millisekunden" -#: dist/prefs.js:916 +#: src/prefs.ts:201 msgid "Tiles animation time" msgstr "Animationsdauer der Kacheln" -#: dist/prefs.js:917 +#: src/prefs.ts:202 msgid "The tiles animation time in milliseconds" msgstr "Animationsdauer der Kacheln in Millisekunden" -#: dist/prefs.js:923 +#: src/prefs.ts:210 msgid "Behaviour" msgstr "Verhalten" -#: dist/prefs.js:924 +#: src/prefs.ts:211 msgid "Configure the behaviour of Tiling Shell" msgstr "Verhalten der Tiling Shell konfigurieren" -#: dist/prefs.js:929 +#: src/prefs.ts:217 msgid "Enable Snap Assistant" msgstr "Snap-Assistent aktivieren" -#: dist/prefs.js:930 +#: src/prefs.ts:218 msgid "Move the window on top of the screen to snap assist it" msgstr "" "Fenster an den oberen Bildschirmrand bewegen, um den Snap-Assistenten zu " "verwenden" -#: dist/prefs.js:935 +#: src/prefs.ts:224 msgid "Enable Tiling System" msgstr "Kachel-System aktivieren" -#: dist/prefs.js:936 +#: src/prefs.ts:225 msgid "Hold the activation key while moving a window to tile it" msgstr "" "Aktivierungstaste beim Verschieben eines Fensters halten, um das Kachel-" "System zu aktivieren" -#: dist/prefs.js:944 +#: src/prefs.ts:235 msgid "Tiling System deactivation key" msgstr "Deaktivierungstaste des Kachel-Systems" -#: dist/prefs.js:946 +#: src/prefs.ts:237 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -188,49 +711,32 @@ msgstr "" "Deaktivierungstaste beim Verschieben eines Fensters halten, um das Kachel-" "System zu deaktivieren" -#: dist/prefs.js:954 -msgid "Span multiple tiles" -msgstr "Mehrere Kacheln vereinen" - -#: dist/prefs.js:955 +#: src/prefs.ts:248 msgid "Hold the activation key to span multiple tiles" msgstr "Aktivierungstaste halten, um mehrere Kacheln zu vereinen" -#: dist/prefs.js:964 +#: src/prefs.ts:259 msgid "Enable Auto Tiling" msgstr "Automatische Kachelung aktivieren" -#: dist/prefs.js:965 +#: src/prefs.ts:260 msgid "Automatically tile new windows to the best tile" msgstr "Neue Fenster automatisch der besten Kachel zuweisen" -#: dist/prefs.js:970 -msgid "Enable auto-resize of the complementing tiled windows" -msgstr "Automatische Größenänderung ergänzender gekachelter Fenster aktivieren" - -#: dist/prefs.js:972 +#: src/prefs.ts:268 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "Andere gekachelte Fenster automatisch anpassen, wenn ein Fenster verändert " "wird" -#: dist/prefs.js:978 -msgid "Restore window size" -msgstr "Fenstergröße wiederherstellen" - -#: dist/prefs.js:980 +#: src/prefs.ts:277 msgid "Whether to restore the windows to their original size when untiled" msgstr "" "Ob bei Fenstern nach Aufhebung der Kachelung ihre ursprüngliche Größe " "wiederhergestellt werden soll" -#: dist/prefs.js:986 -msgid "Add snap assistant and auto-tile buttons to window menu" -msgstr "" -"Snap-Assistent und Auto-Kachel Schaltflächen zum Fenstermenü hinzufügen" - -#: dist/prefs.js:988 +#: src/prefs.ts:286 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -238,439 +744,335 @@ msgstr "" "Snap-Assistent- und Auto-Kachel-Schaltflächen zum Kontextmenü des Fensters " "hinzufügen" -#: dist/prefs.js:994 +#: src/prefs.ts:293 msgid "Add tiled windows to ALT+TAB menu" -msgstr "" +msgstr "Kachelfenster zum ALT+TAB-Menü hinzufügen" -#: dist/prefs.js:996 +#: src/prefs.ts:295 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "" +"Fügen Sie die gekachelten Fenster zum ALT+TAB-Menü hinzu, um alle " +"gekachelten Fenster gleichzeitig zu öffnen" -#: dist/prefs.js:1001 +#: src/prefs.ts:302 msgid "Screen Edges" msgstr "Bildschirmränder" -#: dist/prefs.js:1003 +#: src/prefs.ts:304 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" "Ziehen Sie Fenster an die oberen, linken und rechten Bildschirmränder, um " "sie zu skalieren" -#: dist/prefs.js:1017 +#: src/prefs.ts:319 msgid "Drag against top edge to maximize window" msgstr "Ziehen Sie Fenster an den oberen Rand, um sie zu maximieren" -#: dist/prefs.js:1018 -msgid "Drag windows against the top edge to maximize them" -msgstr "Ziehen Sie Fenster an den oberen Rand, um sie zu maximieren" - -#: dist/prefs.js:1027 +#: src/prefs.ts:330 msgid "Quarter tiling activation area" msgstr "Aktivierungsbereich für Viertelkacheln" -#: dist/prefs.js:1028 +#: src/prefs.ts:331 #, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "Aktivierungsbereich, um Viertelkacheln auszulösen (%% des Bildschirms)" -#: dist/prefs.js:1044 -msgid "Edge tiling offset" -msgstr "" - -#: dist/prefs.js:1045 +#: src/prefs.ts:349 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" +"Versatz vom Bildschirmrand zum Auslösen der Kantenanpassung (in Pixeln)" -#: dist/prefs.js:1062 +#: src/prefs.ts:369 msgid "Windows suggestions" msgstr "Fenstervorschläge" -#: dist/prefs.js:1063 +#: src/prefs.ts:370 msgid "Enable and disable windows suggestions" msgstr "Fenstervorschläge aktivieren und deaktivieren" -#: dist/prefs.js:1068 -msgid "Enable window suggestions for the tiling system" -msgstr "Fenstervorschläge für das Kachelsystem aktivieren" - -#: dist/prefs.js:1070 +#: src/prefs.ts:378 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" "Bietet intelligente Vorschläge, um leere Kacheln beim Verwenden des " "Kachelsystems zu füllen" -#: dist/prefs.js:1076 -msgid "Enable window suggestions for the snap assistant" -msgstr "Fenstervorschläge für den Snap-Assistenten aktivieren" - -#: dist/prefs.js:1078 +#: src/prefs.ts:387 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" "Bietet Vorschläge, um leere Kacheln beim Verwenden des Snap-Assistenten zu " "füllen" -#: dist/prefs.js:1084 -msgid "Enable window suggestions for screen edge snapping" -msgstr "Fenstervorschläge für das Einrasten an Bildschirmrändern aktivieren" - -#: dist/prefs.js:1086 +#: src/prefs.ts:396 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" "Schlägt Fenster vor, um leere Kacheln beim Einrasten an Bildschirmrändern zu " "besetzen" -#: dist/prefs.js:1092 -msgid "Layouts" -msgstr "Layouts" - -#: dist/prefs.js:1093 +#: src/prefs.ts:406 msgid "Configure the layouts of Tiling Shell" msgstr "Konfigurieren Sie die Layouts der Tiling Shell" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: src/prefs.ts:411 src/prefs.ts:412 msgid "Edit layouts" msgstr "Layouts bearbeiten" -#: dist/prefs.js:1099 +#: src/prefs.ts:413 msgid "Open the layouts editor" msgstr "Öffnen Sie den Layout-Editor" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: src/prefs.ts:419 src/prefs.ts:420 src/prefs.ts:424 msgid "Export layouts" msgstr "Layouts exportieren" -#: dist/prefs.js:1106 +#: src/prefs.ts:421 msgid "Export layouts to a file" msgstr "Layouts in eine Datei exportieren" -#: dist/prefs.js:1112 dist/prefs.js:1496 -msgid "Save" -msgstr "Speichern" - -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 -msgid "Cancel" -msgstr "Abbrechen" - -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: src/prefs.ts:476 src/prefs.ts:477 msgid "Import layouts" msgstr "Layouts importieren" -#: dist/prefs.js:1160 +#: src/prefs.ts:478 msgid "Import layouts from a file" msgstr "Layouts aus einer Datei importieren" -#: dist/prefs.js:1163 +#: src/prefs.ts:481 msgid "Select layouts file" msgstr "Layouts-Datei auswählen" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: src/prefs.ts:484 src/prefs.ts:894 msgid "Open" msgstr "Öffnen" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: src/prefs.ts:538 src/prefs.ts:539 msgid "Reset layouts" msgstr "Layouts zurücksetzen" -#: dist/prefs.js:1216 +#: src/prefs.ts:540 msgid "Bring back the default layouts" msgstr "Standardlayouts wiederherstellen" -#: dist/prefs.js:1229 +#: src/prefs.ts:556 msgid "Keybindings" msgstr "Tastenkombinationen" -#: dist/prefs.js:1231 +#: src/prefs.ts:558 msgid "Use hotkeys to perform actions on the focused window" msgstr "" "Verwenden Sie Tastenkombinationen, um Aktionen am fokussierten Fenster " "auszuführen" -#: dist/prefs.js:1249 +#: src/prefs.ts:582 msgid "Move window to right tile" msgstr "Fenster zur rechten Kachel verschieben" -#: dist/prefs.js:1251 +#: src/prefs.ts:583 msgid "Move the focused window to the tile on its right" msgstr "" "Verschieben Sie das fokussierte Fenster zur Kachel auf der rechten Seite" -#: dist/prefs.js:1260 +#: src/prefs.ts:589 msgid "Move window to left tile" msgstr "Fenster zur linken Kachel verschieben" -#: dist/prefs.js:1261 +#: src/prefs.ts:590 msgid "Move the focused window to the tile on its left" msgstr "" "Verschieben Sie das fokussierte Fenster zur Kachel auf der linken Seite" -#: dist/prefs.js:1267 +#: src/prefs.ts:596 msgid "Move window to tile above" msgstr "Fenster zur oberen Kachel verschieben" -#: dist/prefs.js:1268 +#: src/prefs.ts:597 msgid "Move the focused window to the tile above" msgstr "Verschieben Sie das fokussierte Fenster zur oberen Kachel" -#: dist/prefs.js:1274 +#: src/prefs.ts:603 msgid "Move window to tile below" msgstr "Fenster zur unteren Kachel verschieben" -#: dist/prefs.js:1275 +#: src/prefs.ts:604 msgid "Move the focused window to the tile below" msgstr "Verschieben Sie das fokussierte Fenster zur unteren Kachel" -#: dist/prefs.js:1281 +#: src/prefs.ts:610 msgid "Span window to right tile" msgstr "Fenster auf rechte Kachel ausdehnen" -#: dist/prefs.js:1282 +#: src/prefs.ts:611 msgid "Span the focused window to the tile on its right" msgstr "" "Dehnen Sie das fokussierte Fenster auf die Kachel auf der rechten Seite aus" -#: dist/prefs.js:1288 +#: src/prefs.ts:617 msgid "Span window to left tile" msgstr "Fenster auf linke Kachel ausdehnen" -#: dist/prefs.js:1289 +#: src/prefs.ts:618 msgid "Span the focused window to the tile on its left" msgstr "" "Dehnen Sie das fokussierte Fenster auf die Kachel auf der linken Seite aus" -#: dist/prefs.js:1295 +#: src/prefs.ts:624 msgid "Span window above" msgstr "Fenster nach oben ausdehnen" -#: dist/prefs.js:1296 +#: src/prefs.ts:625 msgid "Span the focused window to the tile above" msgstr "Das fokussierte Fenster auf die obere Kachel ausdehnen" -#: dist/prefs.js:1302 +#: src/prefs.ts:631 msgid "Span window down" msgstr "Fenster nach unten ausdehnen" -#: dist/prefs.js:1303 +#: src/prefs.ts:632 msgid "Span the focused window to the tile below" msgstr "Das fokussierte Fenster auf die untere Kachel ausdehnen" -#: dist/prefs.js:1309 +#: src/prefs.ts:638 msgid "Span window to all tiles" msgstr "Fenster auf alle Kacheln ausdehnen" -#: dist/prefs.js:1310 +#: src/prefs.ts:639 msgid "Span the focused window to all the tiles" msgstr "Das fokussierte Fenster über alle Kacheln ausdehnen" -#: dist/prefs.js:1316 +#: src/prefs.ts:645 msgid "Untile focused window" msgstr "Kachelung des fokussierten Fensters aufheben" -#: dist/prefs.js:1324 +#: src/prefs.ts:652 msgid "Move window to the center" msgstr "Fenster in die Mitte verschieben" -#: dist/prefs.js:1326 -msgid "Move the focused window to the center of the screen" -msgstr "Das fokussierte Fenster in die Bildschirmmitte verschieben" - -#: dist/prefs.js:1335 +#: src/prefs.ts:659 msgid "Focus window to the right" msgstr "Fenster rechts fokussieren" -#: dist/prefs.js:1337 +#: src/prefs.ts:661 msgid "Focus the window to the right of the current focused window" msgstr "Das Fenster rechts neben dem aktuell fokussierten Fenster fokussieren" -#: dist/prefs.js:1344 +#: src/prefs.ts:668 msgid "Focus window to the left" msgstr "Fenster links fokussieren" -#: dist/prefs.js:1345 -msgid "Focus the window to the left of the current focused window" -msgstr "Das Fenster links neben dem aktuell fokussierten Fenster fokussieren" - -#: dist/prefs.js:1351 +#: src/prefs.ts:675 msgid "Focus window above" msgstr "Fenster oben fokussieren" -#: dist/prefs.js:1352 -msgid "Focus the window above the current focused window" -msgstr "Das Fenster oberhalb des aktuell fokussierten Fensters fokussieren" - -#: dist/prefs.js:1358 +#: src/prefs.ts:682 msgid "Focus window below" msgstr "Fenster unten fokussieren" -#: dist/prefs.js:1359 -msgid "Focus the window below the current focused window" -msgstr "Das Fenster unterhalb des aktuell fokussierten Fensters fokussieren" - -#: dist/prefs.js:1365 +#: src/prefs.ts:689 msgid "Focus next window" msgstr "Nächstes Fenster fokussieren" -#: dist/prefs.js:1366 -msgid "Focus the window next to the current focused window" -msgstr "Das nächste Fenster neben dem aktuell fokussierten Fenster fokussieren" - -#: dist/prefs.js:1372 +#: src/prefs.ts:696 msgid "Focus previous window" msgstr "Vorheriges Fenster fokussieren" -#: dist/prefs.js:1373 -msgid "Focus the window prior to the current focused window" -msgstr "Das vorherige Fenster vor dem aktuell fokussierten Fenster fokussieren" - -#: dist/prefs.js:1379 +#: src/prefs.ts:703 msgid "Highlight focused window" msgstr "Fokussiertes Fenster hervorheben" -#: dist/prefs.js:1381 -msgid "Minimize all the other windows and show only the focused window" -msgstr "" -"Alle anderen Fenster minimieren und nur das fokussierte Fenster anzeigen" - -#: dist/prefs.js:1388 -#, fuzzy +#: src/prefs.ts:712 msgid "Cycle layouts" -msgstr "Layouts zurücksetzen" +msgstr "Layouts durchblättern" -#: dist/prefs.js:1389 -msgid "Cycle through available workspace layouts" -msgstr "" - -#: dist/prefs.js:1415 +#: src/prefs.ts:746 msgid "View and Customize all the Shortcuts" msgstr "Alle Tastenkombinationen anzeigen und anpassen" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: src/prefs.ts:774 src/prefs.ts:775 msgid "View and Customize Shortcuts" msgstr "Tastenkombinationen anzeigen und anpassen" -#: dist/prefs.js:1466 -msgid "Enable next/previous window focus to wrap around" -msgstr "Zyklisches Fokussieren des nächsten/vorherigen Fensters aktivieren" - -#: dist/prefs.js:1468 -msgid "When focusing next or previous window, wrap around at the window edge" -msgstr "" -"Beim Fokussieren des nächsten oder vorherigen Fensters am Rand umspringen" - -#: dist/prefs.js:1474 -msgid "Restrict directional focus to tiled windows" -msgstr "" - -#: dist/prefs.js:1476 -msgid "When using directional focus navigation, only consider tiled windows" -msgstr "" - -#: dist/prefs.js:1481 +#: src/prefs.ts:819 msgid "Import, export and reset" msgstr "Importieren, exportieren und zurücksetzen" -#: dist/prefs.js:1483 +#: src/prefs.ts:821 msgid "Import, export and reset the settings of Tiling Shell" msgstr "" "Einstellungen der Tiling Shell importieren, exportieren und zurücksetzen" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: src/prefs.ts:827 src/prefs.ts:828 msgid "Export settings" msgstr "Einstellungen exportieren" -#: dist/prefs.js:1490 +#: src/prefs.ts:829 msgid "Export settings to a file" msgstr "Einstellungen in eine Datei exportieren" -#: dist/prefs.js:1493 +#: src/prefs.ts:832 msgid "Export settings to a text file" msgstr "Einstellungen in eine Textdatei exportieren" -#: dist/prefs.js:1500 +#: src/prefs.ts:839 msgid "Text file" msgstr "Textdatei" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: src/prefs.ts:886 src/prefs.ts:887 msgid "Import settings" msgstr "Einstellungen importieren" -#: dist/prefs.js:1545 +#: src/prefs.ts:888 msgid "Import settings from a file" msgstr "Einstellungen aus einer Datei importieren" -#: dist/prefs.js:1548 +#: src/prefs.ts:891 msgid "Select a text file to import from" msgstr "Wählen Sie eine Textdatei zum Importieren aus" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: src/prefs.ts:937 src/prefs.ts:938 msgid "Reset settings" msgstr "Einstellungen zurücksetzen" -#: dist/prefs.js:1592 +#: src/prefs.ts:939 msgid "Bring back the default settings" msgstr "Standardeinstellungen wiederherstellen" -#: dist/prefs.js:1607 +#: src/prefs.ts:957 msgid "Donate on ko-fi" msgstr "Auf ko-fi spenden" -#: dist/prefs.js:1613 +#: src/prefs.ts:963 msgid "Report a bug" msgstr "Fehler melden" -#: dist/prefs.js:1619 +#: src/prefs.ts:969 msgid "Request a feature" msgstr "Feature anfordern" -#: dist/prefs.js:1627 +#: src/prefs.ts:978 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "" "Haben Sie Probleme, möchten Sie ein neues Feature vorschlagen oder beitragen?" -#: dist/prefs.js:1634 +#: src/prefs.ts:985 msgid "Open a new issue on" msgstr "Neuen Issue öffnen auf" -#: dist/prefs.js:1814 +#: src/prefs.ts:1238 msgid "Choose custom color" -msgstr "" +msgstr "Wählen Sie eine benutzerdefinierte Farbe" -#: dist/prefs.js:1815 +#: src/prefs.ts:1239 msgid "Use system accent color" -msgstr "" +msgstr "Systemakzentfarbe verwenden" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: src/prefs.ts:1328 src/prefs.ts:1357 msgid "New accelerator…" msgstr "Neues Tastenkürzel…" -#: dist/prefs.js:1892 +#: src/prefs.ts:1360 msgid "Use Backspace to clear" msgstr "Backspace zum Löschen verwenden" - -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "Layouts bearbeiten" - -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "Neues Layout" - -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "um eine Kachel zu teilen" - -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "um eine Kachel vertikal zu teilen" - -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "um eine Kachel zu löschen" - -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "Verwenden Sie die Indikator-Schaltfläche zum Speichern oder Abbrechen" From 128675002059a52175a662d6ecb591206385147c Mon Sep 17 00:00:00 2001 From: Adam Lewicki <160427461+alewicki95@users.noreply.github.com> Date: Sat, 3 Jan 2026 11:36:29 +0100 Subject: [PATCH 04/35] Update pl.po and tilingshell@ferrarodomenico.com.pot from source (#445) * Update tilingshell@ferrarodomenico.com.pot * Update pl.po --- translations/pl.po | 1183 +++++++++-------- .../tilingshell@ferrarodomenico.com.pot | 861 ++++++++---- 2 files changed, 1254 insertions(+), 790 deletions(-) diff --git a/translations/pl.po b/translations/pl.po index 5d85006a..6fa6ef3c 100644 --- a/translations/pl.po +++ b/translations/pl.po @@ -1,4 +1,3 @@ -# # pkly @github <>, 2025. # Adam Lewicki , 2025. # @@ -6,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: Tiling Shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" -"PO-Revision-Date: 2025-09-28 11:45+0200\n" +"POT-Creation-Date: 2025-11-13 19:40+0100\n" +"PO-Revision-Date: 2025-11-13 19:42+0100\n" "Last-Translator: Adam Lewicki \n" "Language-Team: Polish\n" "Language: pl\n" @@ -16,167 +15,675 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 3.7\n" +"X-Generator: Poedit 3.8\n" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:7 +msgid "Last version installed" +msgstr "Zainstalowano najnowszą wersję" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:8 +msgid "Last version installed of this extension." +msgstr "Ostatnia wersja tego rozszerzenia." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:12 +msgid "Enable tiling system" +msgstr "Włącz system układania okien" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:13 +msgid "Hold CTRL while moving a window to tile it." +msgstr "Przytrzymaj klawisz CTRL podczas przesuwania okna, aby je ułożyć." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:17 +msgid "Tiling system activation key" +msgstr "Klawisz aktywacji systemu układania okien" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:18 +msgid "Which key to hold while moving a window to activate the tiling system." +msgstr "" +"Klawisz do przytrzymania podczas przesuwania okna, aby włączyć system " +"układania okien." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:22 +msgid "Tiling system deactivation key" +msgstr "Klawisz deaktywacji systemu układania okien" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:23 +msgid "" +"Which key to hold while moving a window to deactivate the tiling system." +msgstr "" +"Klawisz do przytrzymania podczas przesuwania okna, aby wyłączyć system " +"układania okien." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:27 +msgid "Enable snap assist" +msgstr "Włącz Asystenta przyciągania" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:28 +msgid "Move the window on top of the screen to snap assist it." +msgstr "" +"Przesuń okno na górną krawędź ekranu, aby wywołać Asystenta przyciągania." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:32 +msgid "Shows indicator" +msgstr "Pokaż wskaźnik" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:33 +msgid "Shows an indicator on top panel." +msgstr "Wyświetla wskaźnik na górnym panelu." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:37 +#: src/prefs.ts:89 +msgid "Inner gaps" +msgstr "Wewnętrzna przerwa" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:38 +msgid "Internal gaps between tiles in a layout." +msgstr "Wewnętrzna przerwa między kafelkami w układzie." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:42 +#: src/prefs.ts:96 +msgid "Outer gaps" +msgstr "Zewnętrzne przerwy" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:43 +msgid "External gaps between the layout and the monitor borders." +msgstr "Zewnętrzne przerwy między układem a granicami monitora." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:47 +#: src/prefs.ts:247 +msgid "Span multiple tiles" +msgstr "Rozciągnij na wiele kafelków" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:48 +msgid "Hold ALT to span multiple tiles." +msgstr "Przytrzymaj klawisz ALT, aby rozciągnąć na wiele kafelków." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:52 +msgid "Key to span multiple tiles" +msgstr "Klawisz do rozciągania na wiele kafelków" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:53 +msgid "Which key to hold to span multiple tiles." +msgstr "Klawisz do przytrzymania, aby rozciągnąć na wiele kafelków." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:57 +#: src/prefs.ts:405 +msgid "Layouts" +msgstr "Układy" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:58 +msgid "The layouts available to the tiling managers and the snap assist." +msgstr "Układy dostępne dla menedżerów układania i Asystenta przyciągania." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:62 +msgid "Selected layouts" +msgstr "Wybrane układy" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:63 +msgid "Each monitor's active layout used by the monitor tiling manager." +msgstr "" +"Aktywny układ każdego monitora używany przez menedżera układania monitora." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:67 +#: src/prefs.ts:275 +msgid "Restore window size" +msgstr "Przywróć rozmiar okna" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:68 +msgid "Restore the windows to their original size when untiled." +msgstr "Przywracaj okna do ich oryginalnego rozmiaru po usunięciu z układu." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:72 +#: src/prefs.ts:801 +msgid "Enable next/previous window focus to wrap around" +msgstr "Włącz zawijanie aktywnego okna do następnego/poprzedniego" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:73 +#: src/prefs.ts:803 +msgid "When focusing next or previous window, wrap around at the window edge" +msgstr "" +"Podczas przełączania na następne lub poprzednie aktywne okno, zawijaj po " +"osiągnięciu krawędzi okien" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:77 +#: src/prefs.ts:810 +msgid "Restrict directional focus to tiled windows" +msgstr "Ogranicz aktywację kierunkową do ułożonych okien" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:78 +#: src/prefs.ts:812 +msgid "When using directional focus navigation, only consider tiled windows" +msgstr "" +"Podczas przełączania na następne lub poprzednie aktywne okno, zawijaj po " +"osiągnięciu krawędzi okien" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:82 +#: src/prefs.ts:266 +msgid "Enable auto-resize of the complementing tiled windows" +msgstr "Włącz automatyczną zmianę rozmiaru sąsiednich ułożonych okien" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:83 +msgid "" +"When a tiled window is resized, auto-resize the other tiled windows near it." +msgstr "" +"Gdy rozmiar ułożonego okna jest zmieniany, automatycznie zmień rozmiar " +"sąsiednich ułożonych okien." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:87 +msgid "Enable Snap Assistant blur" +msgstr "Włącz rozmycie asystenta przyciągania" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:88 +msgid "Blur snap assistant" +msgstr "Rozmycie Asystenta przyciągania" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:92 +msgid "Enable selected tile preview blur" +msgstr "Włącz rozmycie podglądu wybranego kafelka" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:93 +msgid "Blur selected tile previews" +msgstr "Rozmyj podglądy wybranych kafelków" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:97 +msgid "Enable keybindings" +msgstr "Włącz skróty klawiszowe" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:98 +msgid "Move focused window through tiles by using keybindings." +msgstr "Przenieś aktywne okno przez kafelki, używając skrótów klawiszowych." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:102 +msgid "Enable auto tiling" +msgstr "Włącz automatyczne układanie" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:103 +msgid "" +"Automatically tile a new window to the best tile according to the current " +"layout." +msgstr "" +"Automatycznie układaj nowe okno do najlepszego kafelka zgodnie z bieżącym " +"układem." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:107 +msgid "Overridden settings" +msgstr "Nadpisane ustawienia" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:108 +msgid "The settings that are overridden and their old value." +msgstr "Ustawienia, które są nadpisane, oraz ich stara wartość." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:112 +msgid "Active Screen Edges" +msgstr "Aktywne krawędzie ekranu" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:113 +msgid "" +"Drag windows against the top, left and right screen edges to resize them." +msgstr "" +"Przeciągnij okna do górnej, lewej lub prawej krawędzi ekranu, aby zmienić " +"ich rozmiar." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:117 +msgid "Drag agains top edge to maximize window" +msgstr "Przeciągnij do górnej krawędzi, aby zmaksymalizować okno" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:118 +#: src/prefs.ts:320 +msgid "Drag windows against the top edge to maximize them" +msgstr "Przeciągnij okna do górnej krawędzi, aby je zmaksymalizować" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:122 +#: src/prefs.ts:284 +msgid "Add snap assistant and auto-tile buttons to window menu" +msgstr "" +"Dodaj przyciski Asystenta przyciągania i automatycznego układania do menu " +"okna" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:123 +msgid "" +"Add snap assistant and auto-tile buttons in the menu that shows up when you " +"right click on a window title." +msgstr "" +"Dodaj przyciski Asystenta przyciągania i automatycznego układania do menu " +"wyświetlanego po kliknięciu prawym przyciskiem myszy na pasku tytułu okna." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:127 +msgid "Add tiled windows group to alt+tab menu" +msgstr "Dodaj grupę ułożonych okien do menu ALT+TAB" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:128 +msgid "" +"Add the tiled windows to the alt+tab menu to open all the tiled windows at " +"once" +msgstr "" +"Dodaj ułożone okna do menu ALT+TAB, aby otworzyć wszystkie ułożone okna " +"jednocześnie" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:132 +#: src/prefs.ts:111 +msgid "Snap Assistant threshold" +msgstr "Progi Asystenta przyciągania" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:133 +msgid "Snap Assistant's threshold to enlarge, shrink, open and close it." +msgstr "" +"Progi Asystenta przyciągania do powiększania, pomniejszania, otwierania i " +"zamykania." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:137 +msgid "Quarter tiling threshold" +msgstr "Próg aktywacji ćwiartkowego układania" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:138 +msgid "Threshold to trigger quarter tiling." +msgstr "Próg aktywacji ćwiartkowego układania." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:142 +#: src/prefs.ts:348 +msgid "Edge tiling offset" +msgstr "Przesunięcie krawędzi układania" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:143 +msgid "Offset to trigger edge tiling (left and right edge)." +msgstr "" +"Przesunięcie do aktywacji układania krawędziowego (lewa i prawa krawędź)." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:147 +msgid "Enable window border" +msgstr "Włącz obramowanie okna" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:148 +msgid "Show a border around focused window." +msgstr "Pokaż obramowanie wokół aktywnego okna." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:152 +msgid "Focused window border color" +msgstr "Kolor obramowania aktywnego okna" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:153 +msgid "The color of the focused window's border." +msgstr "Kolor obramowania aktywnego okna." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:157 +msgid "Use custom color" +msgstr "Użyj własnego koloru" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:158 +msgid "Use the color defined here for the focused window's border." +msgstr "Użyj zdefiniowanego tutaj koloru dla obramowania aktywnego okna." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:162 +msgid "Focused window border width" +msgstr "Szerokość obramowania aktywnego okna" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:163 +msgid "The width of the focused window's border." +msgstr "Szerokość obramowania aktywnego okna." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:167 +msgid "Enable smart window border radius" +msgstr "Włącz inteligentny promień obramowania okna" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:168 +msgid "Dinamically adapt to the window's border radius." +msgstr "Dynamicznie dopasowuj do rzeczywistego promienia obramowania okna." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:172 +msgid "Snap assistant animation time (milliseconds)" +msgstr "Czas trwania animacji Asystenta przyciągania (w milisekundach)" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:173 +msgid "Animation time in milliseconds of the snap assistant" +msgstr "Czas trwania animacji Asystenta przyciągania w milisekundach" -#: dist/prefs.js:793 +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:177 +msgid "Tile animation time (milliseconds)" +msgstr "Czas trwania animacji kafelka (w milisekundach)" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:178 +msgid "Animation time in milliseconds of the tiles" +msgstr "Czas trwania animacji kafelków w milisekundach" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:182 +#: src/prefs.ts:376 +msgid "Enable window suggestions for the tiling system" +msgstr "Włącz podpowiedzi okien dla systemu układania" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:183 +msgid "" +"Provides smart suggestions to fill empty tiles when using the tiling system." +msgstr "" +"Wyświetlaj inteligentne podpowiedzi wypełniania pustych kafelków podczas " +"korzystania z systemu układania." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:187 +#: src/prefs.ts:385 +msgid "Enable window suggestions for the snap assistant" +msgstr "Włącz podpowiedzi okien dla Asystenta przyciągania" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:188 +msgid "" +"Offers suggestions to populate empty tiles when using the snap assistant." +msgstr "" +"Wyświetlaj podpowiedzi wypełniania pustych kafelków podczas korzystania z " +"Asystenta przyciągania." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:192 +#: src/prefs.ts:394 +msgid "Enable window suggestions for screen edge snapping" +msgstr "Włącz podpowiedzi okien dla przyciągania do krawędzi ekranu" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:193 +msgid "Suggests windows to occupy empty tiles when snapping to screen edges." +msgstr "" +"Sugeruj okna do zajęcia pustych kafelków podczas przyciągania do krawędzi " +"ekranu." + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:199 +msgid "Move focused window to the tile to its right" +msgstr "Przenieś aktywne okno do kafelka po prawej" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:203 +msgid "Move focused window to the tile to its left" +msgstr "Przenieś aktywne okno do kafelka po lewej" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:207 +msgid "Move focused window to the tile above" +msgstr "Przenieś aktywne okno do kafelka powyżej" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:211 +msgid "Move focused window to the tile below" +msgstr "Przenieś aktywne okno do kafelka poniżej" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:215 +msgid "Span focused window to the tile to its right" +msgstr "Rozciągnij aktywne okno na kafelek po prawej" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:219 +msgid "Span focused window to the tile to its left" +msgstr "Rozciągnij aktywne okno na kafelek po lewej" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:223 +msgid "Span focused window to the tile above" +msgstr "Rozciągnij aktywne okno na kafelek powyżej" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:227 +msgid "Span focused window to the tile below" +msgstr "Rozciągnij aktywne okno na kafelek poniżej" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:231 +msgid "Resize the focused window to span all tiles" +msgstr "Rozciągnij aktywne okno na wszystkie kafelki" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:235 +msgid "Untile the focused window" +msgstr "Usuń aktywne okno z układu" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:239 +#: src/prefs.ts:653 +msgid "Move the focused window to the center of the screen" +msgstr "Przenieś aktywne okno na środek ekranu" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:243 +msgid "Focus the window to the right the current focused window" +msgstr "Aktywuj okno po prawej od bieżącego aktywnego okna" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:247 +#: src/prefs.ts:669 +msgid "Focus the window to the left of the current focused window" +msgstr "Aktywuj okno po lewej stronie od aktualnie aktywnego okna" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:251 +#: src/prefs.ts:676 +msgid "Focus the window above the current focused window" +msgstr "Aktywuj okno powyżej aktualnie aktywnego okna" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:255 +#: src/prefs.ts:683 +msgid "Focus the window below the current focused window" +msgstr "Aktywuj okno poniżej aktualnie aktywnego okna" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:259 +#: src/prefs.ts:690 +msgid "Focus the window next to the current focused window" +msgstr "Aktywuj następne okno obok aktualnie aktywnego" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:263 +#: src/prefs.ts:697 +msgid "Focus the window prior to the current focused window" +msgstr "Aktywuj poprzednie okno obok aktualnie aktywnego" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:267 +#: src/prefs.ts:705 +msgid "Minimize all the other windows and show only the focused window" +msgstr "Zminimalizuj wszystkie inne okna i pokaż tylko aktywne okno" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:271 +#: src/prefs.ts:713 +msgid "Cycle through available workspace layouts" +msgstr "Przełączaj dostępne układy obszaru roboczego" + +#: src/components/altTab/MultipleWindowsIcon.ts:59 +msgid "Tiled windows" +msgstr "Ułożone okna" + +#: src/components/editor/editorDialog.ts:47 +msgid "Select the layout to edit" +msgstr "Wybierz układ do edycji" + +#: src/components/editor/editorDialog.ts:71 +msgid "Close" +msgstr "Zamknij" + +#: src/components/editor/editorDialog.ts:100 +msgid "to split a tile" +msgstr "aby podzielić kafelek" + +#: src/components/editor/editorDialog.ts:141 +msgid "to split a tile vertically" +msgstr "aby podzielić kafelek pionowo" + +#: src/components/editor/editorDialog.ts:163 +msgid "to delete a tile" +msgstr "aby usunąć kafelek" + +#: src/components/editor/editorDialog.ts:189 +msgid "use the indicator button to save or cancel" +msgstr "użyj przycisku wskaźnika, aby zapisać lub anulować" + +#: src/components/editor/editorDialog.ts:209 +msgid "How to use the editor" +msgstr "Jak używać edytora" + +#: src/components/editor/editorDialog.ts:219 +msgid "Start editing" +msgstr "Rozpocznij edycje" + +#: src/components/window_menu/overriddenWindowMenu.ts:167 +msgid "Move to best tile" +msgstr "Przesuń do najlepszej strefy" + +#: src/components/window_menu/overriddenWindowMenu.ts:189 +msgid "Move to leftmost tile" +msgstr "Przesuń do strefy najbardziej po lewej" + +#: src/components/window_menu/overriddenWindowMenu.ts:212 +msgid "Move to rightmost tile" +msgstr "Przesuń do strefy najbardziej po prawej" + +#: src/indicator/defaultMenu.ts:312 +msgid "Edit Layouts" +msgstr "Edytuj układy" + +#: src/indicator/defaultMenu.ts:321 +msgid "New Layout" +msgstr "Nowy układ" + +#: src/indicator/editingMenu.ts:24 +msgid "Menu" +msgstr "Menu" + +#: src/indicator/editingMenu.ts:32 +msgid "Info" +msgstr "Info" + +#: src/indicator/editingMenu.ts:40 src/prefs.ts:427 src/prefs.ts:835 +msgid "Save" +msgstr "Zapisz" + +#: src/indicator/editingMenu.ts:51 src/prefs.ts:428 src/prefs.ts:485 +#: src/prefs.ts:836 src/prefs.ts:895 +msgid "Cancel" +msgstr "Anuluj" + +#: src/prefs.ts:68 msgid "General" msgstr "Ogólne" -#: dist/prefs.js:798 +#: src/prefs.ts:75 msgid "Appearance" msgstr "Wygląd" -#: dist/prefs.js:799 +#: src/prefs.ts:76 msgid "Configure the appearance of Tiling Shell" msgstr "Skonfiguruj wygląd Układania okien" -#: dist/prefs.js:804 +#: src/prefs.ts:82 msgid "Show Indicator" msgstr "Pokaż wskaźnik" -#: dist/prefs.js:805 +#: src/prefs.ts:83 msgid "Whether to show the panel indicator" msgstr "Pokazywanie ikony wskaźnika na panelu" -#: dist/prefs.js:810 -msgid "Inner gaps" -msgstr "Wewnętrzna przerwa" - -#: dist/prefs.js:811 +#: src/prefs.ts:90 msgid "Gaps between windows" msgstr "Przerwy między oknami" -#: dist/prefs.js:816 -msgid "Outer gaps" -msgstr "Zewnętrzne przerwy" - -#: dist/prefs.js:817 +#: src/prefs.ts:97 msgid "Gaps between a window and the monitor borders" msgstr "Przerwy pomiędzy oknami i granicami monitora" -#: dist/prefs.js:821 +#: src/prefs.ts:102 msgid "Blur (experimental feature)" msgstr "Rozmycie (funkcja eksperymentalna)" -#: dist/prefs.js:823 +#: src/prefs.ts:104 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "Zastosuj efekt rozmycia do Asystenta przyciągania i podglądów kafelków" -#: dist/prefs.js:829 -msgid "Snap Assistant threshold" -msgstr "Progi Asystenta przyciągania" - -#: dist/prefs.js:831 +#: src/prefs.ts:113 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "" "Minimalna odległość otwarcia względem wskaźnika od Asystenta przyciągania" -#: dist/prefs.js:840 +#: src/prefs.ts:123 msgid "Snap Assistant" msgstr "Asystent przyciągania" -#: dist/prefs.js:841 +#: src/prefs.ts:124 msgid "Apply blur effect to Snap Assistant" msgstr "Zastosuj efekt rozmycia do Asystenta przyciągania" -#: dist/prefs.js:847 +#: src/prefs.ts:130 msgid "Selected tile preview" msgstr "Podgląd wybra kafelka" -#: dist/prefs.js:848 +#: src/prefs.ts:131 msgid "Apply blur effect to selected tile preview" msgstr "Zastosuj efekt rozmycia do zaznaczonej strefy" -#: dist/prefs.js:852 +#: src/prefs.ts:136 msgid "Window border" msgstr "Obramowanie okna" -#: dist/prefs.js:853 dist/prefs.js:860 +#: src/prefs.ts:137 src/prefs.ts:144 msgid "Show a border around focused window" msgstr "Pokaż obramowanie wokół aktywnego okna" -#: dist/prefs.js:859 +#: src/prefs.ts:143 msgid "Enable" msgstr "Włącz" -#: dist/prefs.js:866 +#: src/prefs.ts:150 msgid "Smart border radius" msgstr "Inteligentny promień obramowania" -#: dist/prefs.js:867 +#: src/prefs.ts:151 msgid "Dynamically adapt to the window’s actual border radius" msgstr "Dynamicznie dopasowuj do rzeczywistego promienia obramowania okna" -#: dist/prefs.js:873 +#: src/prefs.ts:157 msgid "Width" msgstr "Szerokość" -#: dist/prefs.js:874 +#: src/prefs.ts:158 msgid "The size of the border" msgstr "Rozmiar obramowania" -#: dist/prefs.js:883 +#: src/prefs.ts:167 msgid "Border color" msgstr "Kolor obramowania" -#: dist/prefs.js:884 +#: src/prefs.ts:168 msgid "Choose the color of the border" msgstr "Wybiera kolor obramowania" -#: dist/prefs.js:900 +#: src/prefs.ts:185 msgid "Animations" msgstr "Animacje" -#: dist/prefs.js:901 +#: src/prefs.ts:186 msgid "Customize animations" msgstr "Dostosuj animacje" -#: dist/prefs.js:907 +#: src/prefs.ts:192 msgid "Snap assistant animation time" msgstr "Czas trwania animacji Asystenta przyciągania" -#: dist/prefs.js:908 +#: src/prefs.ts:193 msgid "The snap assistant animation time in milliseconds" msgstr "Czas trwania animacji Asystenta przyciągania w milisekundach" -#: dist/prefs.js:916 +#: src/prefs.ts:201 msgid "Tiles animation time" msgstr "Czas animacji" -#: dist/prefs.js:917 +#: src/prefs.ts:202 msgid "The tiles animation time in milliseconds" msgstr "Czas trwania animacji kafelków w milisekundach" -#: dist/prefs.js:923 +#: src/prefs.ts:210 msgid "Behaviour" msgstr "Zachowanie" -#: dist/prefs.js:924 +#: src/prefs.ts:211 msgid "Configure the behaviour of Tiling Shell" msgstr "Skonfiguruj zachowanie Układania okien" -#: dist/prefs.js:929 +#: src/prefs.ts:217 msgid "Enable Snap Assistant" msgstr "Włącz Asystenta przyciągania" -#: dist/prefs.js:930 +#: src/prefs.ts:218 msgid "Move the window on top of the screen to snap assist it" msgstr "" "Przesuń okno na górną krawędź ekranu, aby wywołać Asystenta przyciągania" -#: dist/prefs.js:935 +#: src/prefs.ts:224 msgid "Enable Tiling System" msgstr "Włącz system układania okien" -#: dist/prefs.js:936 +#: src/prefs.ts:225 msgid "Hold the activation key while moving a window to tile it" msgstr "Przytrzymaj klawisz aktywacji podczas przesuwania okna, aby je ułożyć" -#: dist/prefs.js:944 +#: src/prefs.ts:235 msgid "Tiling System deactivation key" msgstr "Klawisz deaktywacji systemu układania okien" -#: dist/prefs.js:946 +#: src/prefs.ts:237 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -184,48 +691,30 @@ msgstr "" "Przytrzymaj klawisz deaktywacji podczas przesuwania okna, aby wyłączyć " "system układania okien" -#: dist/prefs.js:954 -msgid "Span multiple tiles" -msgstr "Rozciągnij na wiele kafelków" - -#: dist/prefs.js:955 +#: src/prefs.ts:248 msgid "Hold the activation key to span multiple tiles" msgstr "Przytrzymaj klawisz aktywacji, aby rozciągnąć na wiele kafelków" -#: dist/prefs.js:964 +#: src/prefs.ts:259 msgid "Enable Auto Tiling" msgstr "Włącz automatyczne układanie" -#: dist/prefs.js:965 +#: src/prefs.ts:260 msgid "Automatically tile new windows to the best tile" msgstr "Automatycznie układaj nowe okna do najlepszego kafelka" -#: dist/prefs.js:970 -msgid "Enable auto-resize of the complementing tiled windows" -msgstr "Włącz automatyczną zmianę rozmiaru sąsiednich ułożonych okien" - -#: dist/prefs.js:972 +#: src/prefs.ts:268 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "Gdy rozmiar ułożonego okna jest zmieniany, automatycznie zmień rozmiar " "sąsiednich ułożonych okien" -#: dist/prefs.js:978 -msgid "Restore window size" -msgstr "Przywróć rozmiar okna" - -#: dist/prefs.js:980 +#: src/prefs.ts:277 msgid "Whether to restore the windows to their original size when untiled" msgstr "Przywracaj okna do ich oryginalnego rozmiaru po usunięciu z układu" -#: dist/prefs.js:986 -msgid "Add snap assistant and auto-tile buttons to window menu" -msgstr "" -"Dodaj przyciski Asystenta przyciągania i automatycznego układania do menu " -"okna" - -#: dist/prefs.js:988 +#: src/prefs.ts:286 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -233,709 +722,327 @@ msgstr "" "Dodaj przyciski Asystenta przyciągania i automatycznego układania do menu " "wyświetlanego po kliknięciu prawym przyciskiem myszy na pasku tytułu okna" -#: dist/prefs.js:994 +#: src/prefs.ts:293 msgid "Add tiled windows to ALT+TAB menu" msgstr "Dodaj ułożone okna do menu ALT+TAB" -#: dist/prefs.js:996 +#: src/prefs.ts:295 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "" "Dodaj ułożone okna do menu ALT+TAB, aby otworzyć je wszystkie jednocześnie" -#: dist/prefs.js:1001 +#: src/prefs.ts:302 msgid "Screen Edges" msgstr "Krawędzie ekranu" -#: dist/prefs.js:1003 +#: src/prefs.ts:304 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" "Przeciągnij okna do górnej, lewej lub prawej krawędzi ekranu, aby zmienić " "ich rozmiar" -#: dist/prefs.js:1017 +#: src/prefs.ts:319 msgid "Drag against top edge to maximize window" msgstr "Przeciągnij do górnej krawędzi, aby zmaksymalizować okno" -#: dist/prefs.js:1018 -msgid "Drag windows against the top edge to maximize them" -msgstr "Przeciągnij okna do górnej krawędzi, aby je zmaksymalizować" - -#: dist/prefs.js:1027 +#: src/prefs.ts:330 msgid "Quarter tiling activation area" msgstr "Obszar aktywacji ćwiartkowego układania" -#: dist/prefs.js:1028 +#: src/prefs.ts:331 #, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "Obszar aktywacji ćwiartkowego układania (%% ekranu)" -#: dist/prefs.js:1044 -msgid "Edge tiling offset" -msgstr "Przesunięcie krawędzi układania" - -#: dist/prefs.js:1045 +#: src/prefs.ts:349 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" "Odległość od krawędzi ekranu do aktywacji układania krawędziowego (w " "pikselach)" -#: dist/prefs.js:1062 +#: src/prefs.ts:369 msgid "Windows suggestions" msgstr "Sugestie okien" -#: dist/prefs.js:1063 +#: src/prefs.ts:370 msgid "Enable and disable windows suggestions" msgstr "Włącz i wyłącz sugestie okien" -#: dist/prefs.js:1068 -msgid "Enable window suggestions for the tiling system" -msgstr "Włącz podpowiedzi okien dla systemu układania" - -#: dist/prefs.js:1070 +#: src/prefs.ts:378 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" "Wyświetlaj inteligentne podpowiedzi wypełniania pustych kafelków podczas " "korzystania z systemu układania" -#: dist/prefs.js:1076 -msgid "Enable window suggestions for the snap assistant" -msgstr "Włącz podpowiedzi okien dla Asystenta przyciągania" - -#: dist/prefs.js:1078 +#: src/prefs.ts:387 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" "Wyświetlaj podpowiedzi wypełniania pustych kafelków podczas korzystania z " "Asystenta przyciągania" -#: dist/prefs.js:1084 -msgid "Enable window suggestions for screen edge snapping" -msgstr "Włącz podpowiedzi okien dla przyciągania do krawędzi ekranu" - -#: dist/prefs.js:1086 +#: src/prefs.ts:396 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" "Sugeruj okna do zajęcia pustych kafelków podczas przyciągania do krawędzi " "ekranu" -#: dist/prefs.js:1092 -msgid "Layouts" -msgstr "Układy" - -#: dist/prefs.js:1093 +#: src/prefs.ts:406 msgid "Configure the layouts of Tiling Shell" msgstr "Skonfiguruj układy Układania okien" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: src/prefs.ts:411 src/prefs.ts:412 msgid "Edit layouts" msgstr "Edytuj układy" -#: dist/prefs.js:1099 +#: src/prefs.ts:413 msgid "Open the layouts editor" msgstr "Otwórz edytor układów" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: src/prefs.ts:419 src/prefs.ts:420 src/prefs.ts:424 msgid "Export layouts" msgstr "Eksportuj układy" -#: dist/prefs.js:1106 +#: src/prefs.ts:421 msgid "Export layouts to a file" msgstr "Eksportuj układy do pliku" -#: dist/prefs.js:1112 dist/prefs.js:1496 -msgid "Save" -msgstr "Zapisz" - -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 -msgid "Cancel" -msgstr "Anuluj" - -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: src/prefs.ts:476 src/prefs.ts:477 msgid "Import layouts" msgstr "Importuj układy" -#: dist/prefs.js:1160 +#: src/prefs.ts:478 msgid "Import layouts from a file" msgstr "Importuj układy z pliku" -#: dist/prefs.js:1163 +#: src/prefs.ts:481 msgid "Select layouts file" msgstr "Wybierz plik układów" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: src/prefs.ts:484 src/prefs.ts:894 msgid "Open" msgstr "Otwórz" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: src/prefs.ts:538 src/prefs.ts:539 msgid "Reset layouts" msgstr "Resetuj układy" -#: dist/prefs.js:1216 +#: src/prefs.ts:540 msgid "Bring back the default layouts" msgstr "Przywróć domyślne układy" -#: dist/prefs.js:1229 +#: src/prefs.ts:556 msgid "Keybindings" msgstr "Skróty klawiszowe" -#: dist/prefs.js:1231 +#: src/prefs.ts:558 msgid "Use hotkeys to perform actions on the focused window" msgstr "Używaj skrótów klawiszowych do wykonywania akcji na aktywnym oknie" -#: dist/prefs.js:1249 +#: src/prefs.ts:582 msgid "Move window to right tile" msgstr "Przenieś okno do prawego kafelka" -#: dist/prefs.js:1251 +#: src/prefs.ts:583 msgid "Move the focused window to the tile on its right" msgstr "Przenieś aktywne okno do kafelka po prawej" -#: dist/prefs.js:1260 +#: src/prefs.ts:589 msgid "Move window to left tile" msgstr "Przenieś okno do lewego kafelka" -#: dist/prefs.js:1261 +#: src/prefs.ts:590 msgid "Move the focused window to the tile on its left" msgstr "Przenieś aktywne okno do kafelka po lewej" -#: dist/prefs.js:1267 +#: src/prefs.ts:596 msgid "Move window to tile above" msgstr "Przenieś okno do kafelka powyżej" -#: dist/prefs.js:1268 +#: src/prefs.ts:597 msgid "Move the focused window to the tile above" msgstr "Przenieś aktywne okno do kafelka powyżej" -#: dist/prefs.js:1274 +#: src/prefs.ts:603 msgid "Move window to tile below" msgstr "Przenieś okno do kafelka poniżej" -#: dist/prefs.js:1275 +#: src/prefs.ts:604 msgid "Move the focused window to the tile below" msgstr "Przenieś aktywne okno do kafelka poniżej" -#: dist/prefs.js:1281 +#: src/prefs.ts:610 msgid "Span window to right tile" msgstr "Rozciągnij okno na prawy kafelek" -#: dist/prefs.js:1282 +#: src/prefs.ts:611 msgid "Span the focused window to the tile on its right" msgstr "Rozciągnij aktywne okno na kafelek po prawej" -#: dist/prefs.js:1288 +#: src/prefs.ts:617 msgid "Span window to left tile" msgstr "Rozciągnij okno na lewy kafelek" -#: dist/prefs.js:1289 +#: src/prefs.ts:618 msgid "Span the focused window to the tile on its left" msgstr "Rozciągnij aktywne okno na kafelek po lewej" -#: dist/prefs.js:1295 +#: src/prefs.ts:624 msgid "Span window above" msgstr "Rozciągnij okno na kafelek powyżej" -#: dist/prefs.js:1296 +#: src/prefs.ts:625 msgid "Span the focused window to the tile above" msgstr "Rozciągnij aktywne okno na kafelek powyżej" -#: dist/prefs.js:1302 +#: src/prefs.ts:631 msgid "Span window down" msgstr "Rozciągnij okno na kafelek poniżej" -#: dist/prefs.js:1303 +#: src/prefs.ts:632 msgid "Span the focused window to the tile below" msgstr "Rozciągnij aktywne okno na kafelek poniżej" -#: dist/prefs.js:1309 +#: src/prefs.ts:638 msgid "Span window to all tiles" msgstr "Rozciągnij okno na wszystkie kafelki" -#: dist/prefs.js:1310 +#: src/prefs.ts:639 msgid "Span the focused window to all the tiles" msgstr "Rozciągnij aktywne okno na wszystkie kafelki" -#: dist/prefs.js:1316 +#: src/prefs.ts:645 msgid "Untile focused window" msgstr "Usuń aktywne okno z układu" -#: dist/prefs.js:1324 +#: src/prefs.ts:652 msgid "Move window to the center" msgstr "Przenieś okno na środek" -#: dist/prefs.js:1326 -msgid "Move the focused window to the center of the screen" -msgstr "Przenieś aktywne okno na środek ekranu" - -#: dist/prefs.js:1335 +#: src/prefs.ts:659 msgid "Focus window to the right" msgstr "Aktywuj okno po prawej" -#: dist/prefs.js:1337 +#: src/prefs.ts:661 msgid "Focus the window to the right of the current focused window" msgstr "Aktywuj okno po prawej stronie od aktualnie aktywnego okna" -#: dist/prefs.js:1344 +#: src/prefs.ts:668 msgid "Focus window to the left" msgstr "Aktywuj okno po lewej" -#: dist/prefs.js:1345 -msgid "Focus the window to the left of the current focused window" -msgstr "Aktywuj okno po lewej stronie od aktualnie aktywnego okna" - -#: dist/prefs.js:1351 +#: src/prefs.ts:675 msgid "Focus window above" msgstr "Aktywuj okno powyżej" -#: dist/prefs.js:1352 -msgid "Focus the window above the current focused window" -msgstr "Aktywuj okno powyżej aktualnie aktywnego okna" - -#: dist/prefs.js:1358 +#: src/prefs.ts:682 msgid "Focus window below" msgstr "Aktywuj okno poniżej" -#: dist/prefs.js:1359 -msgid "Focus the window below the current focused window" -msgstr "Aktywuj okno poniżej aktualnie aktywnego okna" - -#: dist/prefs.js:1365 +#: src/prefs.ts:689 msgid "Focus next window" msgstr "Aktywuj następne okno" -#: dist/prefs.js:1366 -msgid "Focus the window next to the current focused window" -msgstr "Aktywuj następne okno obok aktualnie aktywnego" - -#: dist/prefs.js:1372 +#: src/prefs.ts:696 msgid "Focus previous window" msgstr "Aktywuj poprzednie okno" -#: dist/prefs.js:1373 -msgid "Focus the window prior to the current focused window" -msgstr "Aktywuj poprzednie okno obok aktualnie aktywnego" - -#: dist/prefs.js:1379 +#: src/prefs.ts:703 msgid "Highlight focused window" msgstr "Podświetl aktywne okno" -#: dist/prefs.js:1381 -msgid "Minimize all the other windows and show only the focused window" -msgstr "Zminimalizuj wszystkie inne okna i pokaż tylko aktywne okno" - -#: dist/prefs.js:1388 +#: src/prefs.ts:712 msgid "Cycle layouts" msgstr "Przełącz układy" -#: dist/prefs.js:1389 -msgid "Cycle through available workspace layouts" -msgstr "Przełączaj dostępne układy obszaru roboczego" - -#: dist/prefs.js:1415 +#: src/prefs.ts:746 msgid "View and Customize all the Shortcuts" msgstr "Wyświetl i dostosuj wszystkie skróty" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: src/prefs.ts:774 src/prefs.ts:775 msgid "View and Customize Shortcuts" msgstr "Wyświetl i dostosuj skróty" -#: dist/prefs.js:1466 -msgid "Enable next/previous window focus to wrap around" -msgstr "Włącz zawijanie aktywnego okna do następnego/poprzedniego" - -#: dist/prefs.js:1468 -msgid "When focusing next or previous window, wrap around at the window edge" -msgstr "" -"Podczas przełączania na następne lub poprzednie aktywne okno, zawijaj po " -"osiągnięciu krawędzi okien" - -#: dist/prefs.js:1474 -msgid "Restrict directional focus to tiled windows" -msgstr "Ogranicz aktywację kierunkową do ułożonych okien" - -#: dist/prefs.js:1476 -msgid "When using directional focus navigation, only consider tiled windows" -msgstr "" -"Podczas przełączania na następne lub poprzednie aktywne okno, zawijaj po " -"osiągnięciu krawędzi okien" - -#: dist/prefs.js:1481 +#: src/prefs.ts:819 msgid "Import, export and reset" msgstr "Import, eksport i reset" -#: dist/prefs.js:1483 +#: src/prefs.ts:821 msgid "Import, export and reset the settings of Tiling Shell" msgstr "Importuj, eksportuj i resetuj ustawienia Układania okien" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: src/prefs.ts:827 src/prefs.ts:828 msgid "Export settings" msgstr "Eksportuj ustawienia" -#: dist/prefs.js:1490 +#: src/prefs.ts:829 msgid "Export settings to a file" msgstr "Eksportuj ustawienia do pliku" -#: dist/prefs.js:1493 +#: src/prefs.ts:832 msgid "Export settings to a text file" msgstr "Eksportuj ustawienia do pliku tekstowego" -#: dist/prefs.js:1500 +#: src/prefs.ts:839 msgid "Text file" msgstr "Plik tekstowy" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: src/prefs.ts:886 src/prefs.ts:887 msgid "Import settings" msgstr "Importuj ustawienia" -#: dist/prefs.js:1545 +#: src/prefs.ts:888 msgid "Import settings from a file" msgstr "Importuj ustawienia z pliku" -#: dist/prefs.js:1548 +#: src/prefs.ts:891 msgid "Select a text file to import from" msgstr "Wybierz plik tekstowy do importu" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: src/prefs.ts:937 src/prefs.ts:938 msgid "Reset settings" msgstr "Resetuj ustawienia" -#: dist/prefs.js:1592 +#: src/prefs.ts:939 msgid "Bring back the default settings" msgstr "Przywróć ustawienia domyślne" -#: dist/prefs.js:1607 +#: src/prefs.ts:957 msgid "Donate on ko-fi" msgstr "Dotacja na ko-fi" -#: dist/prefs.js:1613 +#: src/prefs.ts:963 msgid "Report a bug" msgstr "Zgłoś błąd" -#: dist/prefs.js:1619 +#: src/prefs.ts:969 msgid "Request a feature" msgstr "Zgłoś propozycję funkcji" -#: dist/prefs.js:1627 +#: src/prefs.ts:978 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "Masz problemy, chcesz zasugerować nową funkcję lub wnieść swój wkład?" -#: dist/prefs.js:1634 +#: src/prefs.ts:985 msgid "Open a new issue on" msgstr "Otwórz nowe zgłoszenie na" -#: dist/prefs.js:1814 +#: src/prefs.ts:1238 msgid "Choose custom color" -msgstr "" +msgstr "Wybierz własny kolor" -#: dist/prefs.js:1815 +#: src/prefs.ts:1239 msgid "Use system accent color" -msgstr "" +msgstr "Użyj systemowego koloru akcentu" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: src/prefs.ts:1328 src/prefs.ts:1357 msgid "New accelerator…" msgstr "Nowy skrót…" -#: dist/prefs.js:1892 +#: src/prefs.ts:1360 msgid "Use Backspace to clear" msgstr "Użyj Backspace, aby wyczyścić" - -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "Edytuj układy" - -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "Nowy układ" - -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "aby podzielić kafelek" - -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "aby podzielić kafelek pionowo" - -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "aby usunąć kafelek" - -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "użyj przycisku wskaźnika, aby zapisać lub anulować" - -#~ msgid "Last version installed" -#~ msgstr "Zainstalowano najnowszą wersję" - -#~ msgid "Last version installed of this extension." -#~ msgstr "Ostatnia wersja tego rozszerzenia." - -#~ msgid "Enable tiling system" -#~ msgstr "Włącz system układania okien" - -#~ msgid "Hold CTRL while moving a window to tile it." -#~ msgstr "Przytrzymaj klawisz CTRL podczas przesuwania okna, aby je ułożyć." - -#~ msgid "Tiling system activation key" -#~ msgstr "Klawisz aktywacji systemu układania okien" - -#~ msgid "" -#~ "Which key to hold while moving a window to activate the tiling system." -#~ msgstr "" -#~ "Klawisz do przytrzymania podczas przesuwania okna, aby włączyć system " -#~ "układania okien." - -#~ msgid "Tiling system deactivation key" -#~ msgstr "Klawisz deaktywacji systemu układania okien" - -#~ msgid "" -#~ "Which key to hold while moving a window to deactivate the tiling system." -#~ msgstr "" -#~ "Klawisz do przytrzymania podczas przesuwania okna, aby wyłączyć system " -#~ "układania okien." - -#~ msgid "Enable snap assist" -#~ msgstr "Włącz Asystenta przyciągania" - -#~ msgid "Move the window on top of the screen to snap assist it." -#~ msgstr "" -#~ "Przesuń okno na górną krawędź ekranu, aby wywołać Asystenta przyciągania." - -#~ msgid "Shows indicator" -#~ msgstr "Pokaż wskaźnik" - -#~ msgid "Shows an indicator on top panel." -#~ msgstr "Wyświetla wskaźnik na górnym panelu." - -#~ msgid "Internal gaps between tiles in a layout." -#~ msgstr "Wewnętrzna przerwa między kafelkami w układzie." - -#~ msgid "External gaps between the layout and the monitor borders." -#~ msgstr "Zewnętrzne przerwy między układem a granicami monitora." - -#~ msgid "Hold ALT to span multiple tiles." -#~ msgstr "Przytrzymaj klawisz ALT, aby rozciągnąć na wiele kafelków." - -#~ msgid "Key to span multiple tiles" -#~ msgstr "Klawisz do rozciągania na wiele kafelków" - -#~ msgid "Which key to hold to span multiple tiles." -#~ msgstr "Klawisz do przytrzymania, aby rozciągnąć na wiele kafelków." - -#~ msgid "The layouts available to the tiling managers and the snap assist." -#~ msgstr "Układy dostępne dla menedżerów układania i Asystenta przyciągania." - -#~ msgid "Selected layouts" -#~ msgstr "Wybrane układy" - -#~ msgid "Each monitor's active layout used by the monitor tiling manager." -#~ msgstr "" -#~ "Aktywny układ każdego monitora używany przez menedżera układania monitora." - -#~ msgid "Restore the windows to their original size when untiled." -#~ msgstr "Przywracaj okna do ich oryginalnego rozmiaru po usunięciu z układu." - -#~ msgid "" -#~ "When a tiled window is resized, auto-resize the other tiled windows near " -#~ "it." -#~ msgstr "" -#~ "Gdy rozmiar ułożonego okna jest zmieniany, automatycznie zmień rozmiar " -#~ "sąsiednich ułożonych okien." - -#~ msgid "Enable Snap Assistant blur" -#~ msgstr "Włącz rozmycie asystenta przyciągania" - -#~ msgid "Blur snap assistant" -#~ msgstr "Rozmycie Asystenta przyciągania" - -#~ msgid "Enable selected tile preview blur" -#~ msgstr "Włącz rozmycie podglądu wybranego kafelka" - -#~ msgid "Blur selected tile previews" -#~ msgstr "Rozmyj podglądy wybranych kafelków" - -#~ msgid "Enable keybindings" -#~ msgstr "Włącz skróty klawiszowe" - -#~ msgid "Move focused window through tiles by using keybindings." -#~ msgstr "Przenieś aktywne okno przez kafelki, używając skrótów klawiszowych." - -#~ msgid "Enable auto tiling" -#~ msgstr "Włącz automatyczne układanie" - -#~ msgid "" -#~ "Automatically tile a new window to the best tile according to the current " -#~ "layout." -#~ msgstr "" -#~ "Automatycznie układaj nowe okno do najlepszego kafelka zgodnie z bieżącym " -#~ "układem." - -#~ msgid "Overridden settings" -#~ msgstr "Nadpisane ustawienia" - -#~ msgid "The settings that are overridden and their old value." -#~ msgstr "Ustawienia, które są nadpisane, oraz ich stara wartość." - -#~ msgid "Active Screen Edges" -#~ msgstr "Aktywne krawędzie ekranu" - -#~ msgid "" -#~ "Drag windows against the top, left and right screen edges to resize them." -#~ msgstr "" -#~ "Przeciągnij okna do górnej, lewej lub prawej krawędzi ekranu, aby zmienić " -#~ "ich rozmiar." - -#~ msgid "Drag agains top edge to maximize window" -#~ msgstr "Przeciągnij do górnej krawędzi, aby zmaksymalizować okno" - -#~ msgid "" -#~ "Add snap assistant and auto-tile buttons in the menu that shows up when " -#~ "you right click on a window title." -#~ msgstr "" -#~ "Dodaj przyciski Asystenta przyciągania i automatycznego układania do menu " -#~ "wyświetlanego po kliknięciu prawym przyciskiem myszy na pasku tytułu okna." - -#~ msgid "Add tiled windows group to alt+tab menu" -#~ msgstr "Dodaj grupę ułożonych okien do menu ALT+TAB" - -#~ msgid "" -#~ "Add the tiled windows to the alt+tab menu to open all the tiled windows " -#~ "at once" -#~ msgstr "" -#~ "Dodaj ułożone okna do menu ALT+TAB, aby otworzyć wszystkie ułożone okna " -#~ "jednocześnie" - -#~ msgid "Snap Assistant's threshold to enlarge, shrink, open and close it." -#~ msgstr "" -#~ "Progi Asystenta przyciągania do powiększania, pomniejszania, otwierania i " -#~ "zamykania." - -#~ msgid "Quarter tiling threshold" -#~ msgstr "Próg aktywacji ćwiartkowego układania" - -#~ msgid "Threshold to trigger quarter tiling." -#~ msgstr "Próg aktywacji ćwiartkowego układania." - -#~ msgid "Offset to trigger edge tiling (left and right edge)." -#~ msgstr "" -#~ "Przesunięcie do aktywacji układania krawędziowego (lewa i prawa krawędź)." - -#~ msgid "Enable window border" -#~ msgstr "Włącz obramowanie okna" - -#~ msgid "Show a border around focused window." -#~ msgstr "Pokaż obramowanie wokół aktywnego okna." - -#~ msgid "Focused window border color" -#~ msgstr "Kolor obramowania aktywnego okna" - -#~ msgid "The color of the focused window's border." -#~ msgstr "Kolor obramowania aktywnego okna." - -#~ msgid "Focused window border width" -#~ msgstr "Szerokość obramowania aktywnego okna" - -#~ msgid "The width of the focused window's border." -#~ msgstr "Szerokość obramowania aktywnego okna." - -#~ msgid "Enable smart window border radius" -#~ msgstr "Włącz inteligentny promień obramowania okna" - -#~ msgid "Dinamically adapt to the window's border radius." -#~ msgstr "Dynamicznie dopasowuj do rzeczywistego promienia obramowania okna." - -#~ msgid "Snap assistant animation time (milliseconds)" -#~ msgstr "Czas trwania animacji Asystenta przyciągania (w milisekundach)" - -#~ msgid "Animation time in milliseconds of the snap assistant" -#~ msgstr "Czas trwania animacji Asystenta przyciągania w milisekundach" - -#~ msgid "Tile animation time (milliseconds)" -#~ msgstr "Czas trwania animacji kafelka (w milisekundach)" - -#~ msgid "Animation time in milliseconds of the tiles" -#~ msgstr "Czas trwania animacji kafelków w milisekundach" - -#~ msgid "" -#~ "Provides smart suggestions to fill empty tiles when using the tiling " -#~ "system." -#~ msgstr "" -#~ "Wyświetlaj inteligentne podpowiedzi wypełniania pustych kafelków podczas " -#~ "korzystania z systemu układania." - -#~ msgid "" -#~ "Offers suggestions to populate empty tiles when using the snap assistant." -#~ msgstr "" -#~ "Wyświetlaj podpowiedzi wypełniania pustych kafelków podczas korzystania z " -#~ "Asystenta przyciągania." - -#~ msgid "" -#~ "Suggests windows to occupy empty tiles when snapping to screen edges." -#~ msgstr "" -#~ "Sugeruj okna do zajęcia pustych kafelków podczas przyciągania do krawędzi " -#~ "ekranu." - -#~ msgid "Move focused window to the tile to its right" -#~ msgstr "Przenieś aktywne okno do kafelka po prawej" - -#~ msgid "Move focused window to the tile to its left" -#~ msgstr "Przenieś aktywne okno do kafelka po lewej" - -#~ msgid "Move focused window to the tile above" -#~ msgstr "Przenieś aktywne okno do kafelka powyżej" - -#~ msgid "Move focused window to the tile below" -#~ msgstr "Przenieś aktywne okno do kafelka poniżej" - -#~ msgid "Span focused window to the tile to its right" -#~ msgstr "Rozciągnij aktywne okno na kafelek po prawej" - -#~ msgid "Span focused window to the tile to its left" -#~ msgstr "Rozciągnij aktywne okno na kafelek po lewej" - -#~ msgid "Span focused window to the tile above" -#~ msgstr "Rozciągnij aktywne okno na kafelek powyżej" - -#~ msgid "Span focused window to the tile below" -#~ msgstr "Rozciągnij aktywne okno na kafelek poniżej" - -#~ msgid "Resize the focused window to span all tiles" -#~ msgstr "Rozciągnij aktywne okno na wszystkie kafelki" - -#~ msgid "Untile the focused window" -#~ msgstr "Usuń aktywne okno z układu" - -#~ msgid "Focus the window to the right the current focused window" -#~ msgstr "Aktywuj okno po prawej od bieżącego aktywnego okna" - -#~ msgid "Tiled windows" -#~ msgstr "Ułożone okna" - -#~ msgid "Select the layout to edit" -#~ msgstr "Wybierz układ do edycji" - -#~ msgid "Close" -#~ msgstr "Zamknij" - -#~ msgid "How to use the editor" -#~ msgstr "Jak używać edytora" - -#~ msgid "Start editing" -#~ msgstr "Rozpocznij edycje" - -#~ msgid "Move to best tile" -#~ msgstr "Przesuń do najlepszej strefy" - -#~ msgid "Move to leftmost tile" -#~ msgstr "Przesuń do strefy najbardziej po lewej" - -#~ msgid "Move to rightmost tile" -#~ msgstr "Przesuń do strefy najbardziej po prawej" - -#~ msgid "Menu" -#~ msgstr "Menu" - -#~ msgid "Info" -#~ msgstr "Info" diff --git a/translations/tilingshell@ferrarodomenico.com.pot b/translations/tilingshell@ferrarodomenico.com.pot index f8464da1..e0e8460e 100644 --- a/translations/tilingshell@ferrarodomenico.com.pot +++ b/translations/tilingshell@ferrarodomenico.com.pot @@ -17,625 +17,982 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: dist/prefs.js:793 -msgid "General" +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:7 +msgid "Last version installed" msgstr "" -#: dist/prefs.js:798 -msgid "Appearance" +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:8 +msgid "Last version installed of this extension." msgstr "" -#: dist/prefs.js:799 -msgid "Configure the appearance of Tiling Shell" +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:12 +msgid "Enable tiling system" msgstr "" -#: dist/prefs.js:804 -msgid "Show Indicator" +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:13 +msgid "Hold CTRL while moving a window to tile it." msgstr "" -#: dist/prefs.js:805 -msgid "Whether to show the panel indicator" +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:17 +msgid "Tiling system activation key" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:18 +msgid "Which key to hold while moving a window to activate the tiling system." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:22 +msgid "Tiling system deactivation key" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:23 +msgid "" +"Which key to hold while moving a window to deactivate the tiling system." msgstr "" -#: dist/prefs.js:810 +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:27 +msgid "Enable snap assist" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:28 +msgid "Move the window on top of the screen to snap assist it." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:32 +msgid "Shows indicator" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:33 +msgid "Shows an indicator on top panel." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:37 +#: src/prefs.ts:89 msgid "Inner gaps" msgstr "" -#: dist/prefs.js:811 -msgid "Gaps between windows" +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:38 +msgid "Internal gaps between tiles in a layout." msgstr "" -#: dist/prefs.js:816 +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:42 +#: src/prefs.ts:96 msgid "Outer gaps" msgstr "" -#: dist/prefs.js:817 -msgid "Gaps between a window and the monitor borders" +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:43 +msgid "External gaps between the layout and the monitor borders." msgstr "" -#: dist/prefs.js:821 -msgid "Blur (experimental feature)" +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:47 +#: src/prefs.ts:247 +msgid "Span multiple tiles" msgstr "" -#: dist/prefs.js:823 -msgid "Apply blur effect to Snap Assistant and tile previews" +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:48 +msgid "Hold ALT to span multiple tiles." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:52 +msgid "Key to span multiple tiles" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:53 +msgid "Which key to hold to span multiple tiles." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:57 +#: src/prefs.ts:405 +msgid "Layouts" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:58 +msgid "The layouts available to the tiling managers and the snap assist." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:62 +msgid "Selected layouts" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:63 +msgid "Each monitor's active layout used by the monitor tiling manager." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:67 +#: src/prefs.ts:275 +msgid "Restore window size" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:68 +msgid "Restore the windows to their original size when untiled." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:72 +#: src/prefs.ts:801 +msgid "Enable next/previous window focus to wrap around" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:73 +#: src/prefs.ts:803 +msgid "When focusing next or previous window, wrap around at the window edge" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:77 +#: src/prefs.ts:810 +msgid "Restrict directional focus to tiled windows" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:78 +#: src/prefs.ts:812 +msgid "When using directional focus navigation, only consider tiled windows" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:82 +#: src/prefs.ts:266 +msgid "Enable auto-resize of the complementing tiled windows" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:83 +msgid "" +"When a tiled window is resized, auto-resize the other tiled windows near it." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:87 +msgid "Enable Snap Assistant blur" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:88 +msgid "Blur snap assistant" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:92 +msgid "Enable selected tile preview blur" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:93 +msgid "Blur selected tile previews" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:97 +msgid "Enable keybindings" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:98 +msgid "Move focused window through tiles by using keybindings." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:102 +msgid "Enable auto tiling" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:103 +msgid "" +"Automatically tile a new window to the best tile according to the current " +"layout." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:107 +msgid "Overridden settings" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:108 +msgid "The settings that are overridden and their old value." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:112 +msgid "Active Screen Edges" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:113 +msgid "" +"Drag windows against the top, left and right screen edges to resize them." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:117 +msgid "Drag agains top edge to maximize window" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:118 +#: src/prefs.ts:320 +msgid "Drag windows against the top edge to maximize them" msgstr "" -#: dist/prefs.js:829 +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:122 +#: src/prefs.ts:284 +msgid "Add snap assistant and auto-tile buttons to window menu" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:123 +msgid "" +"Add snap assistant and auto-tile buttons in the menu that shows up when you " +"right click on a window title." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:127 +msgid "Add tiled windows group to alt+tab menu" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:128 +msgid "" +"Add the tiled windows to the alt+tab menu to open all the tiled windows at " +"once" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:132 +#: src/prefs.ts:111 msgid "Snap Assistant threshold" msgstr "" -#: dist/prefs.js:831 +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:133 +msgid "Snap Assistant's threshold to enlarge, shrink, open and close it." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:137 +msgid "Quarter tiling threshold" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:138 +msgid "Threshold to trigger quarter tiling." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:142 +#: src/prefs.ts:348 +msgid "Edge tiling offset" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:143 +msgid "Offset to trigger edge tiling (left and right edge)." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:147 +msgid "Enable window border" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:148 +msgid "Show a border around focused window." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:152 +msgid "Focused window border color" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:153 +msgid "The color of the focused window's border." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:157 +msgid "Use custom color" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:158 +msgid "Use the color defined here for the focused window's border." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:162 +msgid "Focused window border width" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:163 +msgid "The width of the focused window's border." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:167 +msgid "Enable smart window border radius" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:168 +msgid "Dinamically adapt to the window's border radius." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:172 +msgid "Snap assistant animation time (milliseconds)" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:173 +msgid "Animation time in milliseconds of the snap assistant" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:177 +msgid "Tile animation time (milliseconds)" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:178 +msgid "Animation time in milliseconds of the tiles" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:182 +#: src/prefs.ts:376 +msgid "Enable window suggestions for the tiling system" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:183 +msgid "" +"Provides smart suggestions to fill empty tiles when using the tiling system." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:187 +#: src/prefs.ts:385 +msgid "Enable window suggestions for the snap assistant" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:188 +msgid "" +"Offers suggestions to populate empty tiles when using the snap assistant." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:192 +#: src/prefs.ts:394 +msgid "Enable window suggestions for screen edge snapping" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:193 +msgid "Suggests windows to occupy empty tiles when snapping to screen edges." +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:199 +msgid "Move focused window to the tile to its right" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:203 +msgid "Move focused window to the tile to its left" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:207 +msgid "Move focused window to the tile above" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:211 +msgid "Move focused window to the tile below" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:215 +msgid "Span focused window to the tile to its right" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:219 +msgid "Span focused window to the tile to its left" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:223 +msgid "Span focused window to the tile above" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:227 +msgid "Span focused window to the tile below" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:231 +msgid "Resize the focused window to span all tiles" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:235 +msgid "Untile the focused window" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:239 +#: src/prefs.ts:653 +msgid "Move the focused window to the center of the screen" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:243 +msgid "Focus the window to the right the current focused window" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:247 +#: src/prefs.ts:669 +msgid "Focus the window to the left of the current focused window" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:251 +#: src/prefs.ts:676 +msgid "Focus the window above the current focused window" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:255 +#: src/prefs.ts:683 +msgid "Focus the window below the current focused window" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:259 +#: src/prefs.ts:690 +msgid "Focus the window next to the current focused window" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:263 +#: src/prefs.ts:697 +msgid "Focus the window prior to the current focused window" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:267 +#: src/prefs.ts:705 +msgid "Minimize all the other windows and show only the focused window" +msgstr "" + +#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:271 +#: src/prefs.ts:713 +msgid "Cycle through available workspace layouts" +msgstr "" + +#: src/components/altTab/MultipleWindowsIcon.ts:59 +msgid "Tiled windows" +msgstr "" + +#: src/components/editor/editorDialog.ts:47 +msgid "Select the layout to edit" +msgstr "" + +#: src/components/editor/editorDialog.ts:71 +msgid "Close" +msgstr "" + +#: src/components/editor/editorDialog.ts:100 +msgid "to split a tile" +msgstr "" + +#: src/components/editor/editorDialog.ts:141 +msgid "to split a tile vertically" +msgstr "" + +#: src/components/editor/editorDialog.ts:163 +msgid "to delete a tile" +msgstr "" + +#: src/components/editor/editorDialog.ts:189 +msgid "use the indicator button to save or cancel" +msgstr "" + +#: src/components/editor/editorDialog.ts:209 +msgid "How to use the editor" +msgstr "" + +#: src/components/editor/editorDialog.ts:219 +msgid "Start editing" +msgstr "" + +#: src/components/window_menu/overriddenWindowMenu.ts:167 +msgid "Move to best tile" +msgstr "" + +#: src/components/window_menu/overriddenWindowMenu.ts:189 +msgid "Move to leftmost tile" +msgstr "" + +#: src/components/window_menu/overriddenWindowMenu.ts:212 +msgid "Move to rightmost tile" +msgstr "" + +#: src/indicator/defaultMenu.ts:312 +msgid "Edit Layouts" +msgstr "" + +#: src/indicator/defaultMenu.ts:321 +msgid "New Layout" +msgstr "" + +#: src/indicator/editingMenu.ts:24 +msgid "Menu" +msgstr "" + +#: src/indicator/editingMenu.ts:32 +msgid "Info" +msgstr "" + +#: src/indicator/editingMenu.ts:40 src/prefs.ts:427 src/prefs.ts:835 +msgid "Save" +msgstr "" + +#: src/indicator/editingMenu.ts:51 src/prefs.ts:428 src/prefs.ts:485 +#: src/prefs.ts:836 src/prefs.ts:895 +msgid "Cancel" +msgstr "" + +#: src/prefs.ts:68 +msgid "General" +msgstr "" + +#: src/prefs.ts:75 +msgid "Appearance" +msgstr "" + +#: src/prefs.ts:76 +msgid "Configure the appearance of Tiling Shell" +msgstr "" + +#: src/prefs.ts:82 +msgid "Show Indicator" +msgstr "" + +#: src/prefs.ts:83 +msgid "Whether to show the panel indicator" +msgstr "" + +#: src/prefs.ts:90 +msgid "Gaps between windows" +msgstr "" + +#: src/prefs.ts:97 +msgid "Gaps between a window and the monitor borders" +msgstr "" + +#: src/prefs.ts:102 +msgid "Blur (experimental feature)" +msgstr "" + +#: src/prefs.ts:104 +msgid "Apply blur effect to Snap Assistant and tile previews" +msgstr "" + +#: src/prefs.ts:113 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "" -#: dist/prefs.js:840 +#: src/prefs.ts:123 msgid "Snap Assistant" msgstr "" -#: dist/prefs.js:841 +#: src/prefs.ts:124 msgid "Apply blur effect to Snap Assistant" msgstr "" -#: dist/prefs.js:847 +#: src/prefs.ts:130 msgid "Selected tile preview" msgstr "" -#: dist/prefs.js:848 +#: src/prefs.ts:131 msgid "Apply blur effect to selected tile preview" msgstr "" -#: dist/prefs.js:852 +#: src/prefs.ts:136 msgid "Window border" msgstr "" -#: dist/prefs.js:853 dist/prefs.js:860 +#: src/prefs.ts:137 src/prefs.ts:144 msgid "Show a border around focused window" msgstr "" -#: dist/prefs.js:859 +#: src/prefs.ts:143 msgid "Enable" msgstr "" -#: dist/prefs.js:866 +#: src/prefs.ts:150 msgid "Smart border radius" msgstr "" -#: dist/prefs.js:867 +#: src/prefs.ts:151 msgid "Dynamically adapt to the window’s actual border radius" msgstr "" -#: dist/prefs.js:873 +#: src/prefs.ts:157 msgid "Width" msgstr "" -#: dist/prefs.js:874 +#: src/prefs.ts:158 msgid "The size of the border" msgstr "" -#: dist/prefs.js:883 +#: src/prefs.ts:167 msgid "Border color" msgstr "" -#: dist/prefs.js:884 +#: src/prefs.ts:168 msgid "Choose the color of the border" msgstr "" -#: dist/prefs.js:900 +#: src/prefs.ts:185 msgid "Animations" msgstr "" -#: dist/prefs.js:901 +#: src/prefs.ts:186 msgid "Customize animations" msgstr "" -#: dist/prefs.js:907 +#: src/prefs.ts:192 msgid "Snap assistant animation time" msgstr "" -#: dist/prefs.js:908 +#: src/prefs.ts:193 msgid "The snap assistant animation time in milliseconds" msgstr "" -#: dist/prefs.js:916 +#: src/prefs.ts:201 msgid "Tiles animation time" msgstr "" -#: dist/prefs.js:917 +#: src/prefs.ts:202 msgid "The tiles animation time in milliseconds" msgstr "" -#: dist/prefs.js:923 +#: src/prefs.ts:210 msgid "Behaviour" msgstr "" -#: dist/prefs.js:924 +#: src/prefs.ts:211 msgid "Configure the behaviour of Tiling Shell" msgstr "" -#: dist/prefs.js:929 +#: src/prefs.ts:217 msgid "Enable Snap Assistant" msgstr "" -#: dist/prefs.js:930 +#: src/prefs.ts:218 msgid "Move the window on top of the screen to snap assist it" msgstr "" -#: dist/prefs.js:935 +#: src/prefs.ts:224 msgid "Enable Tiling System" msgstr "" -#: dist/prefs.js:936 +#: src/prefs.ts:225 msgid "Hold the activation key while moving a window to tile it" msgstr "" -#: dist/prefs.js:944 +#: src/prefs.ts:235 msgid "Tiling System deactivation key" msgstr "" -#: dist/prefs.js:946 +#: src/prefs.ts:237 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" msgstr "" -#: dist/prefs.js:954 -msgid "Span multiple tiles" -msgstr "" - -#: dist/prefs.js:955 +#: src/prefs.ts:248 msgid "Hold the activation key to span multiple tiles" msgstr "" -#: dist/prefs.js:964 +#: src/prefs.ts:259 msgid "Enable Auto Tiling" msgstr "" -#: dist/prefs.js:965 +#: src/prefs.ts:260 msgid "Automatically tile new windows to the best tile" msgstr "" -#: dist/prefs.js:970 -msgid "Enable auto-resize of the complementing tiled windows" -msgstr "" - -#: dist/prefs.js:972 +#: src/prefs.ts:268 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" -#: dist/prefs.js:978 -msgid "Restore window size" -msgstr "" - -#: dist/prefs.js:980 +#: src/prefs.ts:277 msgid "Whether to restore the windows to their original size when untiled" msgstr "" -#: dist/prefs.js:986 -msgid "Add snap assistant and auto-tile buttons to window menu" -msgstr "" - -#: dist/prefs.js:988 +#: src/prefs.ts:286 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" msgstr "" -#: dist/prefs.js:994 +#: src/prefs.ts:293 msgid "Add tiled windows to ALT+TAB menu" msgstr "" -#: dist/prefs.js:996 +#: src/prefs.ts:295 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "" -#: dist/prefs.js:1001 +#: src/prefs.ts:302 msgid "Screen Edges" msgstr "" -#: dist/prefs.js:1003 +#: src/prefs.ts:304 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" -#: dist/prefs.js:1017 +#: src/prefs.ts:319 msgid "Drag against top edge to maximize window" msgstr "" -#: dist/prefs.js:1018 -msgid "Drag windows against the top edge to maximize them" -msgstr "" - -#: dist/prefs.js:1027 +#: src/prefs.ts:330 msgid "Quarter tiling activation area" msgstr "" -#: dist/prefs.js:1028 +#: src/prefs.ts:331 #, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "" -#: dist/prefs.js:1044 -msgid "Edge tiling offset" -msgstr "" - -#: dist/prefs.js:1045 +#: src/prefs.ts:349 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" -#: dist/prefs.js:1062 +#: src/prefs.ts:369 msgid "Windows suggestions" msgstr "" -#: dist/prefs.js:1063 +#: src/prefs.ts:370 msgid "Enable and disable windows suggestions" msgstr "" -#: dist/prefs.js:1068 -msgid "Enable window suggestions for the tiling system" -msgstr "" - -#: dist/prefs.js:1070 +#: src/prefs.ts:378 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" -#: dist/prefs.js:1076 -msgid "Enable window suggestions for the snap assistant" -msgstr "" - -#: dist/prefs.js:1078 +#: src/prefs.ts:387 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" -#: dist/prefs.js:1084 -msgid "Enable window suggestions for screen edge snapping" -msgstr "" - -#: dist/prefs.js:1086 +#: src/prefs.ts:396 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" -#: dist/prefs.js:1092 -msgid "Layouts" -msgstr "" - -#: dist/prefs.js:1093 +#: src/prefs.ts:406 msgid "Configure the layouts of Tiling Shell" msgstr "" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: src/prefs.ts:411 src/prefs.ts:412 msgid "Edit layouts" msgstr "" -#: dist/prefs.js:1099 +#: src/prefs.ts:413 msgid "Open the layouts editor" msgstr "" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: src/prefs.ts:419 src/prefs.ts:420 src/prefs.ts:424 msgid "Export layouts" msgstr "" -#: dist/prefs.js:1106 +#: src/prefs.ts:421 msgid "Export layouts to a file" msgstr "" -#: dist/prefs.js:1112 dist/prefs.js:1496 -msgid "Save" -msgstr "" - -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 -msgid "Cancel" -msgstr "" - -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: src/prefs.ts:476 src/prefs.ts:477 msgid "Import layouts" msgstr "" -#: dist/prefs.js:1160 +#: src/prefs.ts:478 msgid "Import layouts from a file" msgstr "" -#: dist/prefs.js:1163 +#: src/prefs.ts:481 msgid "Select layouts file" msgstr "" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: src/prefs.ts:484 src/prefs.ts:894 msgid "Open" msgstr "" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: src/prefs.ts:538 src/prefs.ts:539 msgid "Reset layouts" msgstr "" -#: dist/prefs.js:1216 +#: src/prefs.ts:540 msgid "Bring back the default layouts" msgstr "" -#: dist/prefs.js:1229 +#: src/prefs.ts:556 msgid "Keybindings" msgstr "" -#: dist/prefs.js:1231 +#: src/prefs.ts:558 msgid "Use hotkeys to perform actions on the focused window" msgstr "" -#: dist/prefs.js:1249 +#: src/prefs.ts:582 msgid "Move window to right tile" msgstr "" -#: dist/prefs.js:1251 +#: src/prefs.ts:583 msgid "Move the focused window to the tile on its right" msgstr "" -#: dist/prefs.js:1260 +#: src/prefs.ts:589 msgid "Move window to left tile" msgstr "" -#: dist/prefs.js:1261 +#: src/prefs.ts:590 msgid "Move the focused window to the tile on its left" msgstr "" -#: dist/prefs.js:1267 +#: src/prefs.ts:596 msgid "Move window to tile above" msgstr "" -#: dist/prefs.js:1268 +#: src/prefs.ts:597 msgid "Move the focused window to the tile above" msgstr "" -#: dist/prefs.js:1274 +#: src/prefs.ts:603 msgid "Move window to tile below" msgstr "" -#: dist/prefs.js:1275 +#: src/prefs.ts:604 msgid "Move the focused window to the tile below" msgstr "" -#: dist/prefs.js:1281 +#: src/prefs.ts:610 msgid "Span window to right tile" msgstr "" -#: dist/prefs.js:1282 +#: src/prefs.ts:611 msgid "Span the focused window to the tile on its right" msgstr "" -#: dist/prefs.js:1288 +#: src/prefs.ts:617 msgid "Span window to left tile" msgstr "" -#: dist/prefs.js:1289 +#: src/prefs.ts:618 msgid "Span the focused window to the tile on its left" msgstr "" -#: dist/prefs.js:1295 +#: src/prefs.ts:624 msgid "Span window above" msgstr "" -#: dist/prefs.js:1296 +#: src/prefs.ts:625 msgid "Span the focused window to the tile above" msgstr "" -#: dist/prefs.js:1302 +#: src/prefs.ts:631 msgid "Span window down" msgstr "" -#: dist/prefs.js:1303 +#: src/prefs.ts:632 msgid "Span the focused window to the tile below" msgstr "" -#: dist/prefs.js:1309 +#: src/prefs.ts:638 msgid "Span window to all tiles" msgstr "" -#: dist/prefs.js:1310 +#: src/prefs.ts:639 msgid "Span the focused window to all the tiles" msgstr "" -#: dist/prefs.js:1316 +#: src/prefs.ts:645 msgid "Untile focused window" msgstr "" -#: dist/prefs.js:1324 +#: src/prefs.ts:652 msgid "Move window to the center" msgstr "" -#: dist/prefs.js:1326 -msgid "Move the focused window to the center of the screen" -msgstr "" - -#: dist/prefs.js:1335 +#: src/prefs.ts:659 msgid "Focus window to the right" msgstr "" -#: dist/prefs.js:1337 +#: src/prefs.ts:661 msgid "Focus the window to the right of the current focused window" msgstr "" -#: dist/prefs.js:1344 +#: src/prefs.ts:668 msgid "Focus window to the left" msgstr "" -#: dist/prefs.js:1345 -msgid "Focus the window to the left of the current focused window" -msgstr "" - -#: dist/prefs.js:1351 +#: src/prefs.ts:675 msgid "Focus window above" msgstr "" -#: dist/prefs.js:1352 -msgid "Focus the window above the current focused window" -msgstr "" - -#: dist/prefs.js:1358 +#: src/prefs.ts:682 msgid "Focus window below" msgstr "" -#: dist/prefs.js:1359 -msgid "Focus the window below the current focused window" -msgstr "" - -#: dist/prefs.js:1365 +#: src/prefs.ts:689 msgid "Focus next window" msgstr "" -#: dist/prefs.js:1366 -msgid "Focus the window next to the current focused window" -msgstr "" - -#: dist/prefs.js:1372 +#: src/prefs.ts:696 msgid "Focus previous window" msgstr "" -#: dist/prefs.js:1373 -msgid "Focus the window prior to the current focused window" -msgstr "" - -#: dist/prefs.js:1379 +#: src/prefs.ts:703 msgid "Highlight focused window" msgstr "" -#: dist/prefs.js:1381 -msgid "Minimize all the other windows and show only the focused window" -msgstr "" - -#: dist/prefs.js:1388 +#: src/prefs.ts:712 msgid "Cycle layouts" msgstr "" -#: dist/prefs.js:1389 -msgid "Cycle through available workspace layouts" -msgstr "" - -#: dist/prefs.js:1415 +#: src/prefs.ts:746 msgid "View and Customize all the Shortcuts" msgstr "" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: src/prefs.ts:774 src/prefs.ts:775 msgid "View and Customize Shortcuts" msgstr "" -#: dist/prefs.js:1466 -msgid "Enable next/previous window focus to wrap around" -msgstr "" - -#: dist/prefs.js:1468 -msgid "When focusing next or previous window, wrap around at the window edge" -msgstr "" - -#: dist/prefs.js:1474 -msgid "Restrict directional focus to tiled windows" -msgstr "" - -#: dist/prefs.js:1476 -msgid "When using directional focus navigation, only consider tiled windows" -msgstr "" - -#: dist/prefs.js:1481 +#: src/prefs.ts:819 msgid "Import, export and reset" msgstr "" -#: dist/prefs.js:1483 +#: src/prefs.ts:821 msgid "Import, export and reset the settings of Tiling Shell" msgstr "" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: src/prefs.ts:827 src/prefs.ts:828 msgid "Export settings" msgstr "" -#: dist/prefs.js:1490 +#: src/prefs.ts:829 msgid "Export settings to a file" msgstr "" -#: dist/prefs.js:1493 +#: src/prefs.ts:832 msgid "Export settings to a text file" msgstr "" -#: dist/prefs.js:1500 +#: src/prefs.ts:839 msgid "Text file" msgstr "" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: src/prefs.ts:886 src/prefs.ts:887 msgid "Import settings" msgstr "" -#: dist/prefs.js:1545 +#: src/prefs.ts:888 msgid "Import settings from a file" msgstr "" -#: dist/prefs.js:1548 +#: src/prefs.ts:891 msgid "Select a text file to import from" msgstr "" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: src/prefs.ts:937 src/prefs.ts:938 msgid "Reset settings" msgstr "" -#: dist/prefs.js:1592 +#: src/prefs.ts:939 msgid "Bring back the default settings" msgstr "" -#: dist/prefs.js:1607 +#: src/prefs.ts:957 msgid "Donate on ko-fi" msgstr "" -#: dist/prefs.js:1613 +#: src/prefs.ts:963 msgid "Report a bug" msgstr "" -#: dist/prefs.js:1619 +#: src/prefs.ts:969 msgid "Request a feature" msgstr "" -#: dist/prefs.js:1627 +#: src/prefs.ts:978 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "" -#: dist/prefs.js:1634 +#: src/prefs.ts:985 msgid "Open a new issue on" msgstr "" -#: dist/prefs.js:1814 +#: src/prefs.ts:1238 msgid "Choose custom color" msgstr "" -#: dist/prefs.js:1815 +#: src/prefs.ts:1239 msgid "Use system accent color" msgstr "" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: src/prefs.ts:1328 src/prefs.ts:1357 msgid "New accelerator…" msgstr "" -#: dist/prefs.js:1892 +#: src/prefs.ts:1360 msgid "Use Backspace to clear" msgstr "" - -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "" - -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "" - -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "" - -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "" - -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "" - -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "" From efec8a2217c834288360a2b5987512611ef0c170 Mon Sep 17 00:00:00 2001 From: Ekaterine Papava Date: Sat, 3 Jan 2026 11:37:30 +0100 Subject: [PATCH 05/35] po: Add Georgian translation (#457) --- translations/ka.po | 659 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 659 insertions(+) create mode 100644 translations/ka.po diff --git a/translations/ka.po b/translations/ka.po new file mode 100644 index 00000000..6935d9ef --- /dev/null +++ b/translations/ka.po @@ -0,0 +1,659 @@ +# Georgian translation for tilingshell +# Copyright (c) 2025 tilingshell's authors +# This file is distributed under the same license as the tilingshell package. +# Ekaterine Papava , 2025. +# +msgid "" +msgstr "" +"Project-Id-Version: tilingshell\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"PO-Revision-Date: 2025-12-13 06:31+0100\n" +"Last-Translator: Ekaterine Papava \n" +"Language-Team: Georgian <(nothing)>\n" +"Language: ka\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.8\n" + +#: dist/prefs.js:793 +msgid "General" +msgstr "ზოგადი" + +#: dist/prefs.js:798 +msgid "Appearance" +msgstr "გარეგნობა" + +#: dist/prefs.js:799 +msgid "Configure the appearance of Tiling Shell" +msgstr "Tiling Shell-ის გარეგნობის მორგება" + +#: dist/prefs.js:804 +msgid "Show Indicator" +msgstr "მაჩვენებლის ვერსია" + +#: dist/prefs.js:805 +msgid "Whether to show the panel indicator" +msgstr "ნაჩვენები იქნება თუ არა პანელის მაჩვენებელი" + +#: dist/prefs.js:810 +msgid "Inner gaps" +msgstr "შიდა გამოტოვებები" + +#: dist/prefs.js:811 +msgid "Gaps between windows" +msgstr "გამოტოვებები ფანჯრებს შორის" + +#: dist/prefs.js:816 +msgid "Outer gaps" +msgstr "გარე გამოტოვებები" + +#: dist/prefs.js:817 +msgid "Gaps between a window and the monitor borders" +msgstr "გამოტოვებები ფანჯრებსა და ეკრანის საზღვრებს შორის" + +#: dist/prefs.js:821 +msgid "Blur (experimental feature)" +msgstr "გაბუნდოვნება (ექსპერიმენტული ფუნქცია)" + +#: dist/prefs.js:823 +msgid "Apply blur effect to Snap Assistant and tile previews" +msgstr "" +"ბუნდოვნების ეფექტის გადატარება მიმაგრების დამხმარეზე და ფილის მინიატურებზე" + +#: dist/prefs.js:829 +msgid "Snap Assistant threshold" +msgstr "მიმაგრების დამხმარის ზღვარი" + +#: dist/prefs.js:831 +msgid "Minimum distance from the Snap Assistant to the pointer to open it" +msgstr "" +"მინიმალური დაშორება მიმაგრების დამხმარიდან კურსორამდე, მის გასახსნელად" + +#: dist/prefs.js:840 +msgid "Snap Assistant" +msgstr "მიმაგრების დამხმარე" + +#: dist/prefs.js:841 +msgid "Apply blur effect to Snap Assistant" +msgstr "ბუნდოვნების ეფექტის გადატარება მიმაგრების დამხმარეზე" + +#: dist/prefs.js:847 +msgid "Selected tile preview" +msgstr "არჩეული ფილის მინიატურა" + +#: dist/prefs.js:848 +msgid "Apply blur effect to selected tile preview" +msgstr "ბუნდოვნების ეფექტის გადატარება მონიშნული ფილის მინიატურაზე" + +#: dist/prefs.js:852 +msgid "Window border" +msgstr "ფანჯარის ჩარჩო" + +#: dist/prefs.js:853 dist/prefs.js:860 +msgid "Show a border around focused window" +msgstr "საზღვრის დახატვა ფოკუსის მქონე ფანჯრის გარშემო" + +#: dist/prefs.js:859 +msgid "Enable" +msgstr "ჩართვა" + +#: dist/prefs.js:866 +msgid "Smart border radius" +msgstr "ჭკვიანი საზღვრის რადიუსი" + +#: dist/prefs.js:867 +msgid "Dynamically adapt to the window’s actual border radius" +msgstr "ფანჯრის მიმდინარე საზღვრის რადიუსის დინამიკური მორგება" + +#: dist/prefs.js:873 +msgid "Width" +msgstr "სიგანე" + +#: dist/prefs.js:874 +msgid "The size of the border" +msgstr "საზღვრის ზომა" + +#: dist/prefs.js:883 +msgid "Border color" +msgstr "საზღვრის ფერი" + +#: dist/prefs.js:884 +msgid "Choose the color of the border" +msgstr "საზღვრის ფერის არჩევა" + +#: dist/prefs.js:900 +msgid "Animations" +msgstr "ანიმაციები" + +#: dist/prefs.js:901 +msgid "Customize animations" +msgstr "ანიმაციების მორგება" + +#: dist/prefs.js:907 +msgid "Snap assistant animation time" +msgstr "მიმაგრების დამხმარის ანიმაციის დრო" + +#: dist/prefs.js:908 +msgid "The snap assistant animation time in milliseconds" +msgstr "მიმაგრების დამხმარის ანიმაციის დრო მილიწამებში" + +#: dist/prefs.js:916 +msgid "Tiles animation time" +msgstr "ფილების ანიმაციის დრო" + +#: dist/prefs.js:917 +msgid "The tiles animation time in milliseconds" +msgstr "ფილების ანიმაციის დრო მილიწამებში" + +#: dist/prefs.js:923 +msgid "Behaviour" +msgstr "ქცევა" + +#: dist/prefs.js:924 +msgid "Configure the behaviour of Tiling Shell" +msgstr "Tiling Shell-ის ქცევის მორგება" + +#: dist/prefs.js:929 +msgid "Enable Snap Assistant" +msgstr "მიმაგრების დამხმარის ჩართვა" + +#: dist/prefs.js:930 +msgid "Move the window on top of the screen to snap assist it" +msgstr "" +"გადაიტანეთ ფანჯარა ეკრანის ზედა მხარეს მიმაგრების დამხმარის გამოსაძახებლად" + +#: dist/prefs.js:935 +msgid "Enable Tiling System" +msgstr "ფილების სისტემის ჩართვა" + +#: dist/prefs.js:936 +msgid "Hold the activation key while moving a window to tile it" +msgstr "გეჭიროთ აქტივაციის ღილაკზე ფანჯრის მოძრაობისას მის მოსათავსებლად" + +#: dist/prefs.js:944 +msgid "Tiling System deactivation key" +msgstr "ფილების სისტემის დეაქტივაციის ღილაკი" + +#: dist/prefs.js:946 +msgid "" +"Hold the deactivation key while moving a window to deactivate the tiling " +"system" +msgstr "" +"გეჭიროთ დეაქტივაციის ღილაკზე ფანჯრის მოძრაობისას ფილების სისტემის " +"დეაქტივაციისთვის" + +#: dist/prefs.js:954 +msgid "Span multiple tiles" +msgstr "გაწელვა ერთზე მეტ ფილაზე" + +#: dist/prefs.js:955 +msgid "Hold the activation key to span multiple tiles" +msgstr "გეჭიროთ აქტივაციის ღილაკზე ერთზე მეტ ფილაზე გასაწელად" + +#: dist/prefs.js:964 +msgid "Enable Auto Tiling" +msgstr "ავტოფილების ჩართვა" + +#: dist/prefs.js:965 +msgid "Automatically tile new windows to the best tile" +msgstr "ახალი ფანჯრების ავტომატური განთავსება საუკეთესო ფილაზე" + +#: dist/prefs.js:970 +msgid "Enable auto-resize of the complementing tiled windows" +msgstr "მეზობელი ფილების ზომის ავტომატური შეცვლის ცართვა" + +#: dist/prefs.js:972 +msgid "" +"When a tiled window is resized, auto-resize the other tiled windows near it" +msgstr "" +"როცა ფანჯარას ზომა შეეცვლება, მისო ახლომდებარე ფანჯრების ზომის ავტომატური " +"შეცვლა" + +#: dist/prefs.js:978 +msgid "Restore window size" +msgstr "ფანჯრის ზომის აღდგენა" + +#: dist/prefs.js:980 +msgid "Whether to restore the windows to their original size when untiled" +msgstr "აღდგება თუ არა ფანჯრები მათ ორიგინალ ზომებამდე მათი ფილიდან მოხსნისას" + +#: dist/prefs.js:986 +msgid "Add snap assistant and auto-tile buttons to window menu" +msgstr "" + +#: dist/prefs.js:988 +msgid "" +"Add snap assistant and auto-tile buttons in the menu that shows up when you " +"right click on a window title" +msgstr "" + +#: dist/prefs.js:994 +msgid "Add tiled windows to ALT+TAB menu" +msgstr "" + +#: dist/prefs.js:996 +msgid "" +"Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " +"once" +msgstr "" + +#: dist/prefs.js:1001 +msgid "Screen Edges" +msgstr "ეკრანის კიდეები" + +#: dist/prefs.js:1003 +msgid "" +"Drag windows against the top, left and right screen edges to resize them" +msgstr "" + +#: dist/prefs.js:1017 +msgid "Drag against top edge to maximize window" +msgstr "" + +#: dist/prefs.js:1018 +msgid "Drag windows against the top edge to maximize them" +msgstr "" + +#: dist/prefs.js:1027 +msgid "Quarter tiling activation area" +msgstr "მეოთხედი ფილის აქტივაციის არე" + +#: dist/prefs.js:1028 +#, javascript-format +msgid "Activation area to trigger quarter tiling (%% of the screen)" +msgstr "" + +#: dist/prefs.js:1044 +msgid "Edge tiling offset" +msgstr "წიბოს ფილის წანაცვლება" + +#: dist/prefs.js:1045 +msgid "Offset from the screen edge to trigger edge tiling (in pixels)" +msgstr "" + +#: dist/prefs.js:1062 +msgid "Windows suggestions" +msgstr "ფანჯრის მინიშნებები" + +#: dist/prefs.js:1063 +msgid "Enable and disable windows suggestions" +msgstr "ფანჯრის მინიშნებების ჩართვა და გამორთვა" + +#: dist/prefs.js:1068 +msgid "Enable window suggestions for the tiling system" +msgstr "ფანჯრის მინიშნებების ჩართვა ფილების სისტემისთვის" + +#: dist/prefs.js:1070 +msgid "" +"Provides smart suggestions to fill empty tiles when using the tiling system" +msgstr "" + +#: dist/prefs.js:1076 +msgid "Enable window suggestions for the snap assistant" +msgstr "" + +#: dist/prefs.js:1078 +msgid "" +"Offers suggestions to populate empty tiles when using the snap assistant" +msgstr "" + +#: dist/prefs.js:1084 +msgid "Enable window suggestions for screen edge snapping" +msgstr "" + +#: dist/prefs.js:1086 +msgid "Suggests windows to occupy empty tiles when snapping to screen edges" +msgstr "" + +#: dist/prefs.js:1092 +msgid "Layouts" +msgstr "განლაგებები" + +#: dist/prefs.js:1093 +msgid "Configure the layouts of Tiling Shell" +msgstr "Tiling Shell-ის განლაგებების მორგება" + +#: dist/prefs.js:1097 dist/prefs.js:1098 +msgid "Edit layouts" +msgstr "განლაგებების ჩასწორება" + +#: dist/prefs.js:1099 +msgid "Open the layouts editor" +msgstr "განლაგებების რედაქტორის გახსნა" + +#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +msgid "Export layouts" +msgstr "განლაგებების გატანა" + +#: dist/prefs.js:1106 +msgid "Export layouts to a file" +msgstr "განლაგებების გატანა ფაილში" + +#: dist/prefs.js:1112 dist/prefs.js:1496 +msgid "Save" +msgstr "შენახვა" + +#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 +msgid "Cancel" +msgstr "გაუქმება" + +#: dist/prefs.js:1158 dist/prefs.js:1159 +msgid "Import layouts" +msgstr "განლაგებების შემოტანა" + +#: dist/prefs.js:1160 +msgid "Import layouts from a file" +msgstr "განლაგებების შემოტანა ფაილიდან" + +#: dist/prefs.js:1163 +msgid "Select layouts file" +msgstr "აირჩიეთ განლაგებების ფაილი" + +#: dist/prefs.js:1166 dist/prefs.js:1551 +msgid "Open" +msgstr "გახსნა" + +#: dist/prefs.js:1214 dist/prefs.js:1215 +msgid "Reset layouts" +msgstr "განლაგებების ჩამოყრა" + +#: dist/prefs.js:1216 +msgid "Bring back the default layouts" +msgstr "ნაგულისხმევი განლაგებების დაბრუნება" + +#: dist/prefs.js:1229 +msgid "Keybindings" +msgstr "კლავიატურის მალსახმობები" + +#: dist/prefs.js:1231 +msgid "Use hotkeys to perform actions on the focused window" +msgstr "" +"გამოიყენეთ კლავიატურის მალსახმობები ფოკუსის მქონე ფანჯარაზე ქმედებების " +"განსახორციელებლად" + +#: dist/prefs.js:1249 +msgid "Move window to right tile" +msgstr "ფანჯრის გადატანა მარჯვენა ფილაზე" + +#: dist/prefs.js:1251 +msgid "Move the focused window to the tile on its right" +msgstr "ფოკუსის მქონე ფანჯრის გადატანა ფილაზე მარჯვნივ" + +#: dist/prefs.js:1260 +msgid "Move window to left tile" +msgstr "ფანჯრის გადატანა მარცხენა ფილაზე" + +#: dist/prefs.js:1261 +msgid "Move the focused window to the tile on its left" +msgstr "ფოკუსის მქონე ფანჯრის გადატანა ფილაზე მარცხნივ" + +#: dist/prefs.js:1267 +msgid "Move window to tile above" +msgstr "ფანჯრის გადატანა ზედა ფილაზე" + +#: dist/prefs.js:1268 +msgid "Move the focused window to the tile above" +msgstr "ფოკუსის მქონე ფანჯრის გადატანა ფილაზე ზემოთ" + +#: dist/prefs.js:1274 +msgid "Move window to tile below" +msgstr "ფანჯრის გადატანა ქვედა ფილაზე" + +#: dist/prefs.js:1275 +msgid "Move the focused window to the tile below" +msgstr "ფოკუსის მქონე ფანჯრის გადატანა ფილაზე ქვემოთ" + +#: dist/prefs.js:1281 +msgid "Span window to right tile" +msgstr "ფანჯრის გაწელვა მარჯვენა ფილამდე" + +#: dist/prefs.js:1282 +msgid "Span the focused window to the tile on its right" +msgstr "ფოკუსის მქონე ფანჯრის გაწელვა ფილამდე მარჯვნივ" + +#: dist/prefs.js:1288 +msgid "Span window to left tile" +msgstr "ფანჯრის გაწელვა მარცხენა ფილამდე" + +#: dist/prefs.js:1289 +msgid "Span the focused window to the tile on its left" +msgstr "ფოკუსის მქონე ფანჯრის გაწელვა ფილამდე მარცხნივ" + +#: dist/prefs.js:1295 +msgid "Span window above" +msgstr "ფანჯრის გაწელვა ზედა ფილამდე" + +#: dist/prefs.js:1296 +msgid "Span the focused window to the tile above" +msgstr "ფოკუსის მქონე ფანჯრის გაწელვა ფილამდე ზემოთ" + +#: dist/prefs.js:1302 +msgid "Span window down" +msgstr "ფანჯრის გაწელვა ქვედა ფილამდე" + +#: dist/prefs.js:1303 +msgid "Span the focused window to the tile below" +msgstr "ფოკუსის მქონე ფანჯრის გაწელვა ფილამდე ქვემოთ" + +#: dist/prefs.js:1309 +msgid "Span window to all tiles" +msgstr "ფანჯრის გაწელვა ყველა ფილამდე" + +#: dist/prefs.js:1310 +msgid "Span the focused window to all the tiles" +msgstr "ფოკუსის მქონე ფანჯრის გაწელვა ყველა ფილამდე" + +#: dist/prefs.js:1316 +msgid "Untile focused window" +msgstr "ფოკუსის მქონე ფანჯრის ფილიდან მოცილება" + +#: dist/prefs.js:1324 +msgid "Move window to the center" +msgstr "ფანჯრის გადატანა ცენტრისკენ" + +#: dist/prefs.js:1326 +msgid "Move the focused window to the center of the screen" +msgstr "" + +#: dist/prefs.js:1335 +msgid "Focus window to the right" +msgstr "ფოკუსის გადართვა მარჯვენა ფანჯარაზე" + +#: dist/prefs.js:1337 +msgid "Focus the window to the right of the current focused window" +msgstr "" +"ფოკუსის გადატანა ამჟამად ფოკუსის მქონე ფანჯრიდან მარჯვენა მხარეს არსებულ " +"ფანჯარაზე" + +#: dist/prefs.js:1344 +msgid "Focus window to the left" +msgstr "ფოკუსის გადართვა მარცხენა ფანჯარაზე" + +#: dist/prefs.js:1345 +msgid "Focus the window to the left of the current focused window" +msgstr "" +"ფოკუსის გადატანა ამჟამად ფოკუსის მქონე ფანჯრიდან მარცხენა მხარეს არსებულ " +"ფანჯარაზე" + +#: dist/prefs.js:1351 +msgid "Focus window above" +msgstr "ფოკუსის გადართვა ზედა ფანჯარაზე" + +#: dist/prefs.js:1352 +msgid "Focus the window above the current focused window" +msgstr "" +"ფოკუსის გადატანა ამჟამად ფოკუსის მქონე ფანჯრიდან ზემო მხარეს არსებულ " +"ფანჯარაზე" + +#: dist/prefs.js:1358 +msgid "Focus window below" +msgstr "ფოკუსის გადართვა ქვედა ფანჯარაზე" + +#: dist/prefs.js:1359 +msgid "Focus the window below the current focused window" +msgstr "" +"ფოკუსის გადატანა ამჟამად ფოკუსის მქონე ფანჯრიდან ქვემო მხარეს არსებულ " +"ფანჯარაზე" + +#: dist/prefs.js:1365 +msgid "Focus next window" +msgstr "ფოკუსის გადართვა შემდეგ ფანჯარაზე" + +#: dist/prefs.js:1366 +msgid "Focus the window next to the current focused window" +msgstr "ფოკუსის გადატანა ამჟამად ფოკუსის მქონე ფანჯრიდან შემდეგ ფანჯარაზე" + +#: dist/prefs.js:1372 +msgid "Focus previous window" +msgstr "ფოკუსის გადართვა წინა ფანჯარაზე" + +#: dist/prefs.js:1373 +msgid "Focus the window prior to the current focused window" +msgstr "ფოკუსის გადატანა ამჟამად ფოკუსის მქონე ფანჯრიდან წინა ფანჯარაზე" + +#: dist/prefs.js:1379 +msgid "Highlight focused window" +msgstr "ფოკუსის მქონე ფანჯრის გამოკვეთა" + +#: dist/prefs.js:1381 +msgid "Minimize all the other windows and show only the focused window" +msgstr "ყველა სხვა ფანჯრის ჩაკეცვა და, მხოლოდ, ფოკუსის მქონე ფანჯრის ჩვენება" + +#: dist/prefs.js:1388 +msgid "Cycle layouts" +msgstr "გადართვა განლაგებების შორის" + +#: dist/prefs.js:1389 +msgid "Cycle through available workspace layouts" +msgstr "წრიული გადართვა ხელმისაწვდომი სამუშაო სივრცის განლაგებების შორის" + +#: dist/prefs.js:1415 +msgid "View and Customize all the Shortcuts" +msgstr "ნახეთ და მოირგეთ ყველა მალსახმობი" + +#: dist/prefs.js:1443 dist/prefs.js:1444 +msgid "View and Customize Shortcuts" +msgstr "მალსახმობების ნახვა და მორცება" + +#: dist/prefs.js:1466 +msgid "Enable next/previous window focus to wrap around" +msgstr "" + +#: dist/prefs.js:1468 +msgid "When focusing next or previous window, wrap around at the window edge" +msgstr "" + +#: dist/prefs.js:1474 +msgid "Restrict directional focus to tiled windows" +msgstr "" + +#: dist/prefs.js:1476 +msgid "When using directional focus navigation, only consider tiled windows" +msgstr "" + +#: dist/prefs.js:1481 +msgid "Import, export and reset" +msgstr "შემოტანა, გატანა და ჩამოყრა" + +#: dist/prefs.js:1483 +msgid "Import, export and reset the settings of Tiling Shell" +msgstr "Tiling Shell-ის პარამეტრების შემოტანა, გატანა და ჩამოყრა" + +#: dist/prefs.js:1488 dist/prefs.js:1489 +msgid "Export settings" +msgstr "გატანის მორგება" + +#: dist/prefs.js:1490 +msgid "Export settings to a file" +msgstr "პარამეტრების გატანა ფაილში" + +#: dist/prefs.js:1493 +msgid "Export settings to a text file" +msgstr "პარამეტრების გატანა ტექსტურ ფაილში" + +#: dist/prefs.js:1500 +msgid "Text file" +msgstr "ტექსტური ფაილი" + +#: dist/prefs.js:1543 dist/prefs.js:1544 +msgid "Import settings" +msgstr "პარამეტრების შემოტანა" + +#: dist/prefs.js:1545 +msgid "Import settings from a file" +msgstr "პარამეტრების შემოტანა ფაილიდან" + +#: dist/prefs.js:1548 +msgid "Select a text file to import from" +msgstr "აირჩიეთ შემოსატანი ტექსტური ფაილი" + +#: dist/prefs.js:1590 dist/prefs.js:1591 +msgid "Reset settings" +msgstr "პარამეტრების ნაგულისხმებ მნიშვნელობაზე დაბრუნება" + +#: dist/prefs.js:1592 +msgid "Bring back the default settings" +msgstr "ნაგულისხმევი პარამეტრების დაბრუნება" + +#: dist/prefs.js:1607 +msgid "Donate on ko-fi" +msgstr "შემოგვწირეთ ko-fi-ზე" + +#: dist/prefs.js:1613 +msgid "Report a bug" +msgstr "შეცდომის პატაკი" + +#: dist/prefs.js:1619 +msgid "Request a feature" +msgstr "ფუნქციის მოთხოვნა" + +#: dist/prefs.js:1627 +msgid "Have issues, you want to suggest a new feature or contribute?" +msgstr "" +"გაქვთ პრობლემები, გნებავთ, შემოგვთავაზოთ ახალი ფუნქცია, ან იყოთ მოხალისე?" + +#: dist/prefs.js:1634 +msgid "Open a new issue on" +msgstr "გახსენით ახალი ბილეთი პრობლემის შესახებ ბმულზე" + +#: dist/prefs.js:1814 +msgid "Choose custom color" +msgstr "აირჩიეთ სასურველი ფერი" + +#: dist/prefs.js:1815 +msgid "Use system accent color" +msgstr "სისტემური აქცენტის ფერის გამოყენება" + +#: dist/prefs.js:1866 dist/prefs.js:1889 +msgid "New accelerator…" +msgstr "ახალი აქსელერატორი…" + +#: dist/prefs.js:1892 +msgid "Use Backspace to clear" +msgstr "გასასუფთავებლად გამოიყენეთ ღილაკი Backspace" + +#: dist/extension.js:5809 +msgid "Edit Layouts" +msgstr "განლაგებების ჩასწორება" + +#: dist/extension.js:5819 +msgid "New Layout" +msgstr "ახალი განლაგება" + +#: dist/extension.js:6004 +msgid "to split a tile" +msgstr "ფილის გასაყოფად" + +#: dist/extension.js:6043 +msgid "to split a tile vertically" +msgstr "ფილის ვერტიკალურად გასაყოფად" + +#: dist/extension.js:6063 +msgid "to delete a tile" +msgstr "ფილის წასაშლელად" + +#: dist/extension.js:6087 +msgid "use the indicator button to save or cancel" +msgstr "გამოიყენეთ მაჩვენებლის ღილაკი შესანახად, ან გასაუქმებლად" From 883fc916efe2126e02231ba4595dbe367a166e31 Mon Sep 17 00:00:00 2001 From: taijuin Date: Sat, 3 Jan 2026 18:38:45 +0800 Subject: [PATCH 06/35] Add files via upload (#453) --- translations/zh_TW.po | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/translations/zh_TW.po b/translations/zh_TW.po index dfc056be..3d3e8665 100644 --- a/translations/zh_TW.po +++ b/translations/zh_TW.po @@ -9,14 +9,14 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-11-09 11:35+0100\n" -"PO-Revision-Date: 2025-04-03 18:17+0800\n" -"Last-Translator: taijuin \n" +"PO-Revision-Date: 2025-12-01 01:58+0800\n" +"Last-Translator: taijuin\n" "Language-Team: \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.6\n" +"X-Generator: Poedit 3.8\n" #: dist/prefs.js:793 msgid "General" @@ -227,13 +227,13 @@ msgstr "" #: dist/prefs.js:994 msgid "Add tiled windows to ALT+TAB menu" -msgstr "" +msgstr "在 ALT+TAB 選單中新增平鋪的視窗" #: dist/prefs.js:996 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" -msgstr "" +msgstr "將平鋪的視窗新增至 ALT+TAB 選單,即可同時開啟所有平鋪的視窗" #: dist/prefs.js:1001 msgid "Screen Edges" @@ -263,11 +263,11 @@ msgstr "觸發四分之一平鋪的啟動區域(佔螢幕百分比)" #: dist/prefs.js:1044 msgid "Edge tiling offset" -msgstr "" +msgstr "邊緣平鋪偏移量" #: dist/prefs.js:1045 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" -msgstr "" +msgstr "從螢幕邊緣到觸發邊緣的偏移量(以像素為單位)" #: dist/prefs.js:1062 msgid "Windows suggestions" @@ -373,7 +373,7 @@ msgstr "將視窗移到右側區塊" #: dist/prefs.js:1251 msgid "Move the focused window to the tile on its right" -msgstr "將聚焦的視窗移至其右側的區塊上" +msgstr "將聚焦的視窗移至其右側的區塊" #: dist/prefs.js:1260 msgid "Move window to left tile" @@ -381,7 +381,7 @@ msgstr "將視窗移到左側區塊" #: dist/prefs.js:1261 msgid "Move the focused window to the tile on its left" -msgstr "將對焦的視窗移至其左側的區塊上" +msgstr "將對焦的視窗移至其左側的區塊" #: dist/prefs.js:1267 msgid "Move window to tile above" @@ -389,7 +389,7 @@ msgstr "將視窗移到上方區塊" #: dist/prefs.js:1268 msgid "Move the focused window to the tile above" -msgstr "將聚焦的視窗移至其上方的區塊上" +msgstr "將聚焦的視窗移至其上方的區塊" #: dist/prefs.js:1274 msgid "Move window to tile below" @@ -397,7 +397,7 @@ msgstr "將視窗移到下方區塊" #: dist/prefs.js:1275 msgid "Move the focused window to the tile below" -msgstr "將聚焦的視窗移至其下方的區塊上" +msgstr "將聚焦的視窗移至其下方的區塊" #: dist/prefs.js:1281 msgid "Span window to right tile" @@ -508,13 +508,12 @@ msgid "Minimize all the other windows and show only the focused window" msgstr "最小化所有其他視窗,只顯示焦點視窗" #: dist/prefs.js:1388 -#, fuzzy msgid "Cycle layouts" -msgstr "重設版面配置" +msgstr "循環版面配置" #: dist/prefs.js:1389 msgid "Cycle through available workspace layouts" -msgstr "" +msgstr "循環切換可用工作區版面配置" #: dist/prefs.js:1415 msgid "View and Customize all the Shortcuts" @@ -534,11 +533,11 @@ msgstr "對焦下一個或上一個視窗時,環繞視窗邊緣" #: dist/prefs.js:1474 msgid "Restrict directional focus to tiled windows" -msgstr "" +msgstr "將方向性聚焦限制於平鋪的視窗" #: dist/prefs.js:1476 msgid "When using directional focus navigation, only consider tiled windows" -msgstr "" +msgstr "使用方向性焦點導航時,僅考慮平鋪的視窗" #: dist/prefs.js:1481 msgid "Import, export and reset" @@ -606,11 +605,11 @@ msgstr "開啟一個新的議題" #: dist/prefs.js:1814 msgid "Choose custom color" -msgstr "" +msgstr "選擇自訂顏色" #: dist/prefs.js:1815 msgid "Use system accent color" -msgstr "" +msgstr "使用系統強調色" #: dist/prefs.js:1866 dist/prefs.js:1889 msgid "New accelerator…" From 9156f120ab12b5fa6b33736b49f181703b6fc2db Mon Sep 17 00:00:00 2001 From: Domenico Ferraro Date: Sat, 3 Jan 2026 18:06:27 +0100 Subject: [PATCH 07/35] add gresources support to preferences and create row for edge tiling behaviour --- esbuild.mjs | 9 +- package.json | 4 +- resources/icons/edge-adaptive-symbolic.svg | 8 ++ resources/icons/edge-default-symbolic.svg | 8 ++ resources/icons/edge-granular-symbolic.svg | 7 ++ resources/resources.gresource.xml | 8 ++ src/prefs.ts | 120 ++++++++++++++++++++- src/styles/prefs.scss | 21 ++++ 8 files changed, 180 insertions(+), 5 deletions(-) create mode 100644 resources/icons/edge-adaptive-symbolic.svg create mode 100644 resources/icons/edge-default-symbolic.svg create mode 100644 resources/icons/edge-granular-symbolic.svg create mode 100644 resources/resources.gresource.xml create mode 100644 src/styles/prefs.scss diff --git a/esbuild.mjs b/esbuild.mjs index 1f78905a..a2dc54d4 100644 --- a/esbuild.mjs +++ b/esbuild.mjs @@ -56,8 +56,9 @@ function init(meta) { const prefsBanner = `// For GNOME Shell version before 45 const Me = imports.misc.extensionUtils.getCurrentExtension(); class ExtensionPreferences { - constructor(metadata) { + constructor(metadata, path) { this.metadata = metadata; + this.path = path; } getSettings() { @@ -73,7 +74,7 @@ function init() { function fillPreferencesWindow(window) { const metadata = imports.misc.extensionUtils.getCurrentExtension().metadata; - const prefs = new TilingShellExtensionPreferences(metadata); + const prefs = new TilingShellExtensionPreferences(metadata, Me.dir.get_path()); prefs.fillPreferencesWindow(window); } `; @@ -302,7 +303,7 @@ async function processLegacyFiles(files) { // build extension build({ logLevel: "info", - entryPoints: ['src/**/*.ts', 'src/styles/stylesheet.scss', 'src/prefs.ts'], + entryPoints: ['src/**/*.ts', 'src/styles/stylesheet.scss', 'src/styles/prefs.scss', 'src/prefs.ts'], outdir: distDir, bundle: false, treeShaking: false, @@ -319,6 +320,8 @@ build({ // Post-build sync steps fsSync.renameSync(path.resolve(distDir, "styles/stylesheet.css"), path.resolve(distDir, "stylesheet.css")); fsSync.cpSync(resourcesDir, distDir, { recursive: true }); + fsSync.renameSync(path.resolve(distDir, "styles/prefs.css"), path.resolve(distDir, "prefs.css")); + fsSync.cpSync(resourcesDir, distDir, { recursive: true }); // preprocess extension files in parallel console.log(" 🛠️ ", "Preprocessing extension files..."); diff --git a/package.json b/package.json index 30504186..5131575b 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,13 @@ "private": true, "license": "GPL v2.0", "scripts": { - "build": "npm run clean && node esbuild.mjs && npm run build:schema", + "build": "npm run clean && node esbuild.mjs && npm run build:schema && npm run build:resources", "clean": "rm -rf dist; rm -rf dist_legacy", "update-translations": "npm run create:translations && npm run merge:translations && npm run build:translations", "build:schema": "npm run clean:schema && glib-compile-schemas ./resources/schemas --targetdir=./dist/schemas/ && cp ./dist/schemas/ ./dist_legacy/ -r", + "build:resources": "npm run clean:resources && glib-compile-resources --sourcedir=./resources --target=./dist/resources.gresource ./resources/resources.gresource.xml && cp ./dist/*.gresource ./dist_legacy/ -r", "clean:schema": "rm -rf ./dist/schemas/*.compiled; rm -rf ./dist_legacy/schemas/*.compiled", + "clean:resources": "rm -rf ./dist/*.gresource; rm -rf ./dist_legacy/*.gresource", "build:package": "npm run clean:package; npm run build && cd ./dist && zip -qr ../tilingshell@ferrarodomenico.com.zip * && cd ../dist_legacy && zip -qr ../GNOME.42-44.tilingshell@ferrarodomenico.com.zip *", "clean:package": "rm -rf './dist/tilingshell@ferrarodomenico.com.zip'; rm -rf './dist_legacy/tilingshell@ferrarodomenico.com.zip'", "install:extension": "mkdir -p ~/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com && cp ./dist$([ $(gnome-shell --version | grep -o -E '[0-9]+' | head -n 1) -le 44 ] && echo '_legacy')/* ~/.local/share/gnome-shell/extensions/tilingshell@ferrarodomenico.com/ -r", diff --git a/resources/icons/edge-adaptive-symbolic.svg b/resources/icons/edge-adaptive-symbolic.svg new file mode 100644 index 00000000..d1ce9177 --- /dev/null +++ b/resources/icons/edge-adaptive-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/icons/edge-default-symbolic.svg b/resources/icons/edge-default-symbolic.svg new file mode 100644 index 00000000..65d3c463 --- /dev/null +++ b/resources/icons/edge-default-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/icons/edge-granular-symbolic.svg b/resources/icons/edge-granular-symbolic.svg new file mode 100644 index 00000000..84f52562 --- /dev/null +++ b/resources/icons/edge-granular-symbolic.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/resources/resources.gresource.xml b/resources/resources.gresource.xml new file mode 100644 index 00000000..0676ec01 --- /dev/null +++ b/resources/resources.gresource.xml @@ -0,0 +1,8 @@ + + + + icons/edge-adaptive-symbolic.svg + icons/edge-default-symbolic.svg + icons/edge-granular-symbolic.svg + + diff --git a/src/prefs.ts b/src/prefs.ts index c9dc0bb6..5583f042 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -31,10 +31,29 @@ import { gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensio import * as Config from 'resource:///org/gnome/Shell/Extensions/js/misc/config.js'; const debug = logger('prefs'); +const RESOURCES_PREFIX = "/org/gnome/Shell/Extensions/tilingshell"; // must match the prefix in resources.gresources.xml export default class TilingShellExtensionPreferences extends ExtensionPreferences { private GNOME_VERSION_MAJOR = Number(Config.PACKAGE_VERSION.split('.')[0]); + loadCssAndResources() { + const resource = Gio.Resource.load(`${this.path}/resources.gresource`); + Gio.resources_register(resource); + + const provider = new Gtk.CssProvider(); + provider.load_from_path(`${this.path}/prefs.css`); + + Gtk.StyleContext.add_provider_for_display( + Gdk.Display.get_default(), + provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION + ); + + Gtk.IconTheme + .get_for_display(Gdk.Display.get_default()) + .add_resource_path(`${RESOURCES_PREFIX}/icons`); + } + /** * This function is called when the preferences window is first created to fill * the `Adw.PreferencesWindow`. @@ -43,6 +62,7 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference */ fillPreferencesWindow(window: Adw.PreferencesWindow): Promise { Settings.initialize(this.getSettings()); + this.loadCssAndResources(); const prefsPage = new Adw.PreferencesPage({ name: 'general', @@ -64,7 +84,6 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference _('Whether to show the panel indicator'), ); appearenceGroup.add(showIndicatorRow); - const innerGapsRow = this._buildSpinButtonRow( Settings.KEY_INNER_GAPS, _('Inner gaps'), @@ -343,6 +362,8 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference ); activeScreenEdgesGroup.add(edgeTilingOffset); + // const edgeTilingBehaviourRow = this._buildEdgeTilingBehaviourRow(); + // activeScreenEdgesGroup.add(edgeTilingBehaviourRow); prefsPage.add(activeScreenEdgesGroup); // Windows suggestions section @@ -985,6 +1006,103 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference return Promise.resolve(); } + _createEdgeTilingBehaviourOption(title: string, subtitle: string, iconName: string) { + const button = new Gtk.ToggleButton({ + canFocus: true, + valign: Gtk.Align.FILL, + cssClasses: ['option'], + hexpand: true, + vexpand: false, + }); + + const distance = 12; + + const content = new Gtk.Box({ + orientation: Gtk.Orientation.VERTICAL, + margin_top: 0, + margin_bottom: distance, + margin_start: 0, + margin_end: 0, + }); + + const image = new Gtk.Image({ + iconName: iconName, + pixel_size: 96, + margin_top: distance, + margin_bottom: distance, + margin_start: 0, + margin_end: 0, + }); + + const titleLabel = new Gtk.Label({ + label: title, + wrap: true, + xalign: 0, + css_classes: ['title'] + }); + + const subtitleLabel = new Gtk.Label({ + label: subtitle, + wrap: true, + xalign: 0, + css_classes: ['caption'] + }); + + content.append(image); + content.append(titleLabel); + content.append(subtitleLabel); + + button.set_child(content); + + return button; + } + + _buildEdgeTilingBehaviourRow() { + const row = new Adw.ActionRow({ + activatable: false, + title: _("Behaviour"), + subtitle: _("Choose how windows snap to screen edges"), + cssClasses: ['edge-tiling-behaviour'] + }); + (row.get_child() as Gtk.Box).set_orientation(Gtk.Orientation.VERTICAL); + + const content = new Gtk.Box({ + orientation: Gtk.Orientation.HORIZONTAL, + halign: Gtk.Align.FILL, + valign: Gtk.Align.FILL, + homogeneous: true, // all children same size + spacing: 2, + cssClasses: ['content'] + //margin_top: 6, + }); + const defaultBtn = this._createEdgeTilingBehaviourOption( + _('Default'), + _('Snap to quarters and halves'), + 'edge-default-symbolic' + ); + const adaptiveBtn = this._createEdgeTilingBehaviourOption( + _('Adaptive'), + _('Snap to corners and columns'), + 'edge-adaptive-symbolic' + ); + const granularBtn = this._createEdgeTilingBehaviourOption( + _('Granular'), + _('Snap window to layout tiles'), + 'edge-granular-symbolic' + ); + content.append(defaultBtn); + content.append(adaptiveBtn); + content.append(granularBtn); + // make them mutually exclusive + defaultBtn.set_group(adaptiveBtn); + granularBtn.set_group(adaptiveBtn); + // set the currently activated one + defaultBtn.set_active(true); + (row.get_child() as Gtk.Box).append(content); + + return row; + } + _buildSwitchRow( settingsKey: string, title: string, diff --git a/src/styles/prefs.scss b/src/styles/prefs.scss new file mode 100644 index 00000000..182f5c6d --- /dev/null +++ b/src/styles/prefs.scss @@ -0,0 +1,21 @@ +.edge-tiling-behaviour .content { + border-radius: 12px; + background-color: transparent; + border: 2px solid rgb(128, 128, 128, .8); +} + +.edge-tiling-behaviour .option { + border-radius: 10px; + background-color: transparent; + border: 2px solid transparent; +} + +.edge-tiling-behaviour .option:hover { + background-color: #{'alpha(@accent_color, 0.2)'};//rgba(31, 170, 229, .2); + border: 2px solid #{'@accent_color'}; +} + +.edge-tiling-behaviour .option:checked { + background-color: #{'alpha(@accent_color, 0.4)'}; //rgba(31, 170, 229, .4); + border: 2px solid #{'@accent_color'}; +} From cbfb7a3a444d024378c170b53744e4a291c38d6f Mon Sep 17 00:00:00 2001 From: Domenico Ferraro Date: Sun, 4 Jan 2026 11:30:58 +0100 Subject: [PATCH 08/35] feat: add Wacom tablet support --- src/components/tilingsystem/tilingManager.ts | 26 ++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/components/tilingsystem/tilingManager.ts b/src/components/tilingsystem/tilingManager.ts index 07738a19..76aabb9e 100644 --- a/src/components/tilingsystem/tilingManager.ts +++ b/src/components/tilingsystem/tilingManager.ts @@ -507,6 +507,32 @@ export class TilingManager { TouchPointer.get().onTouchEvent(x, y); }, ); + // Add Wacom tablet support, listen to tablet events + this._signals.connect( + global.stage, + 'captured-event', + (_source, event: Clutter.Event) => { + const device = event.get_source_device(); + if (!device) return; + + const deviceType = device.get_device_type(); + + // Check for tablet device types + if (deviceType === Clutter.InputDeviceType.TABLET_DEVICE || + deviceType === Clutter.InputDeviceType.PEN_DEVICE) { + + const eventType = event.type(); + // Capture motion events from tablet + if (eventType === Clutter.EventType.MOTION) { + const [x, y] = event.get_coords(); + TouchPointer.get().onTouchEvent(x, y); + // Move the actual mouse cursor to match tablet position + const seat = Clutter.get_default_backend().get_default_seat(); + seat.warp_pointer(x, y); + } + } + }, + ); // workaround for gnome-shell bug https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2857 if ( From 6769ac267cf232b0bbc5b5efc858f4f7d162d1cc Mon Sep 17 00:00:00 2001 From: Domenico Ferraro Date: Sun, 4 Jan 2026 12:13:39 +0100 Subject: [PATCH 09/35] feat: reorder layouts --- resources/icons/chevron-left-symbolic.svg | 8 +++ resources/icons/chevron-right-symbolic.svg | 8 +++ src/components/editor/editorDialog.ts | 63 ++++++++++++++++++++-- src/indicator/indicator.ts | 5 +- src/utils/globalState.ts | 8 +++ 5 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 resources/icons/chevron-left-symbolic.svg create mode 100644 resources/icons/chevron-right-symbolic.svg diff --git a/resources/icons/chevron-left-symbolic.svg b/resources/icons/chevron-left-symbolic.svg new file mode 100644 index 00000000..cb38cced --- /dev/null +++ b/resources/icons/chevron-left-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/icons/chevron-right-symbolic.svg b/resources/icons/chevron-right-symbolic.svg new file mode 100644 index 00000000..1408ff6a --- /dev/null +++ b/resources/icons/chevron-right-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/components/editor/editorDialog.ts b/src/components/editor/editorDialog.ts index 62d99234..7bbd0ef9 100644 --- a/src/components/editor/editorDialog.ts +++ b/src/components/editor/editorDialog.ts @@ -32,6 +32,7 @@ export default class EditorDialog extends ModalDialog.ModalDialog { legend: boolean; onClose: () => void; path: string; + onReorderLayout: (_fromIndex: number, _toIndex: number) => void; }) { super({ destroyOnClose: true, @@ -233,26 +234,57 @@ export default class EditorDialog extends ModalDialog.ModalDialog { onSelectLayout: (_ind: number, _lay: Layout) => void; onNewLayout: () => void; onClose: () => void; + onReorderLayout: (_fromIndex: number, _toIndex: number) => void; path: string; }) { const gaps = Settings.get_inner_gaps(1).top > 0 ? this._gapsSize : 0; this._layoutsBoxLayout.destroy_all_children(); params.layouts.forEach((lay, btnInd) => { - const box = new St.BoxLayout({ + const layoutBox = new St.BoxLayout({ xAlign: Clutter.ActorAlign.CENTER, styleClass: 'layout-button-container', ...widgetOrientation(true), }); - this._layoutsBoxLayout.add_child(box); + this._layoutsBoxLayout.add_child(layoutBox); const btn = new LayoutButton( - box, + layoutBox, lay, gaps, this._layoutHeight, this._layoutWidth, ); + const moveAndDeleteButtonsBox = new St.BoxLayout({ + xAlign: Clutter.ActorAlign.CENTER, + //styleClass: 'layout-button-container', + ...widgetOrientation(false), + }); + layoutBox.add_child(moveAndDeleteButtonsBox); if (params.layouts.length > 1) { + // move left button if not first layout + if (btnInd >= 1) { + const moveLeftBtn = new St.Button({ + xExpand: false, + xAlign: Clutter.ActorAlign.CENTER, + styleClass: + 'message-list-clear-button icon-button button delete-layout-button', + }); + moveLeftBtn.child = new St.Icon({ + gicon: Gio.icon_new_for_string( + `${params.path}/icons/chevron-left-symbolic.svg`, + ), + iconSize: 16, + }); + moveLeftBtn.connect('clicked', () => { + params.onReorderLayout(btnInd, btnInd-1); + this._drawLayouts({ + ...params, + layouts: GlobalState.get().layouts, + }); + }); + moveAndDeleteButtonsBox.add_child(moveLeftBtn); + } + // delete button const deleteBtn = new St.Button({ xExpand: false, xAlign: Clutter.ActorAlign.CENTER, @@ -272,7 +304,30 @@ export default class EditorDialog extends ModalDialog.ModalDialog { layouts: GlobalState.get().layouts, }); }); - box.add_child(deleteBtn); + moveAndDeleteButtonsBox.add_child(deleteBtn); + // move right button if not last layout + if (btnInd + 1 < params.layouts.length) { + const moveRightBtn = new St.Button({ + xExpand: false, + xAlign: Clutter.ActorAlign.CENTER, + styleClass: + 'message-list-clear-button icon-button button delete-layout-button', + }); + moveRightBtn.child = new St.Icon({ + gicon: Gio.icon_new_for_string( + `${params.path}/icons/chevron-right-symbolic.svg`, + ), + iconSize: 16, + }); + moveRightBtn.connect('clicked', () => { + params.onReorderLayout(btnInd, btnInd+1); + this._drawLayouts({ + ...params, + layouts: GlobalState.get().layouts, + }); + }); + moveAndDeleteButtonsBox.add_child(moveRightBtn); + } } btn.connect('clicked', () => { params.onSelectLayout(btnInd, lay); diff --git a/src/indicator/indicator.ts b/src/indicator/indicator.ts index 37c4ab0a..213e83b0 100644 --- a/src/indicator/indicator.ts +++ b/src/indicator/indicator.ts @@ -21,7 +21,7 @@ enum IndicatorState { export default class Indicator extends PanelMenu.Button { static { registerGObjectClass(this) } - + private _layoutEditor: LayoutEditor | null; private _editorDialog: EditorDialog | null; private _currentMenu: CurrentMenu | null; @@ -162,6 +162,9 @@ export default class Indicator extends PanelMenu.Button { this._editorDialog?.destroy(); this._editorDialog = null; }, + onReorderLayout: (fromIndex: number, toIndex: number) => { + GlobalState.get().swapLayouts(fromIndex, toIndex); + }, path: this._path, legend: showLegend, }); diff --git a/src/utils/globalState.ts b/src/utils/globalState.ts index 585ccfc5..73996f38 100644 --- a/src/utils/globalState.ts +++ b/src/utils/globalState.ts @@ -283,6 +283,14 @@ export default class GlobalState extends GObject.Object { this.layouts = this._layouts; } + public swapLayouts(first: number, second: number) { + const tmp = this._layouts[first]; + this._layouts[first] = this._layouts[second]; + this._layouts[second] = tmp; + // easy way to trigger save and signal emission + this.layouts = this._layouts; + } + set layouts(layouts: Layout[]) { this._layouts = layouts; Settings.save_layouts_json(layouts); From 882246f961693ff835dc615f24eba7d261b760e3 Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Wed, 17 Dec 2025 21:35:39 -0300 Subject: [PATCH 10/35] feat: adds a settings panel and scheme for blacklist applications --- ...e.shell.extensions.tilingshell.gschema.xml | 5 + src/prefs.ts | 330 ++++++++++++++++++ src/settings/settings.ts | 32 ++ 3 files changed, 367 insertions(+) diff --git a/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml b/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml index fe670da7..2b304af4 100644 --- a/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml +++ b/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml @@ -192,6 +192,11 @@ Enable window suggestions for screen edge snapping Suggests windows to occupy empty tiles when snapping to screen edges. + + '[]' + Application blacklist + List of applications with custom feature settings (custom border, tiling, snap to border). + diff --git a/src/prefs.ts b/src/prefs.ts index 5583f042..85f5dc3d 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -402,6 +402,190 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference prefsPage.add(windowsSuggestionsGroup); + // Blacklist section + const blacklistGroup = new Adw.PreferencesGroup({ + title: _('Application Blacklist'), + description: _( + 'Configure which features are enabled for specific applications', + ), + }); + prefsPage.add(blacklistGroup); + + // Store WM classes to validate duplicates + const existingWmClasses = new Set(); + // Store all application rows for accordion behavior + const applicationRows: Array<{ + row: Adw.ExpanderRow; + switches: { + customBorder: Gtk.Switch; + tiling: Gtk.Switch; + snapToBorder: Gtk.Switch; + }; + }> = []; + + // Helper function to save blacklist to settings + const saveBlacklist = () => { + const blacklist = applicationRows.map(({ row, switches }) => { + const wmClass = row.get_subtitle().replace('WM Class: ', ''); + return { + name: row.get_title(), + wmClass, + customBorder: switches.customBorder.get_active(), + tiling: switches.tiling.get_active(), + snapToBorder: switches.snapToBorder.get_active(), + }; + }); + Settings.save_application_blacklist(blacklist); + }; + + // Helper function to create application row + const createBlacklistApplicationRow = ( + appName: string, + wmClass: string, + customBorder = true, + tiling = true, + snapToBorder = true, + ) => { + const appRow = new Adw.ExpanderRow({ + title: appName, + subtitle: `WM Class: ${wmClass}`, + }); + + existingWmClasses.add(wmClass.toLowerCase()); + + // Custom border toggle + const customBorderSwitch = new Gtk.Switch({ + vexpand: false, + valign: Gtk.Align.CENTER, + active: customBorder, + }); + customBorderSwitch.connect('notify::active', () => saveBlacklist()); + const customBorderRow = new Adw.ActionRow({ + title: _('Custom border'), + subtitle: _('Show custom border for this application'), + activatableWidget: customBorderSwitch, + }); + customBorderRow.add_suffix(customBorderSwitch); + appRow.add_row(customBorderRow); + + // Tiling toggle + const tilingSwitch = new Gtk.Switch({ + vexpand: false, + valign: Gtk.Align.CENTER, + active: tiling, + }); + tilingSwitch.connect('notify::active', () => saveBlacklist()); + const tilingRow = new Adw.ActionRow({ + title: _('Tiling'), + subtitle: _('Enable tiling for this application'), + activatableWidget: tilingSwitch, + }); + tilingRow.add_suffix(tilingSwitch); + appRow.add_row(tilingRow); + + // Snap to border toggle + const snapToBorderSwitch = new Gtk.Switch({ + vexpand: false, + valign: Gtk.Align.CENTER, + active: snapToBorder, + }); + snapToBorderSwitch.connect('notify::active', () => saveBlacklist()); + const snapToBorderRow = new Adw.ActionRow({ + title: _('Snap to border'), + subtitle: _('Enable snap to border for this application'), + activatableWidget: snapToBorderSwitch, + }); + snapToBorderRow.add_suffix(snapToBorderSwitch); + appRow.add_row(snapToBorderRow); + + // Store row with switch references + const rowData = { + row: appRow, + switches: { + customBorder: customBorderSwitch, + tiling: tilingSwitch, + snapToBorder: snapToBorderSwitch, + }, + }; + applicationRows.push(rowData); + + // Implement accordion behavior: collapse others when this one expands + appRow.connect('notify::enable-expansion', () => { + if (appRow.get_enable_expansion()) { + applicationRows.forEach(({ row }) => { + if (row !== appRow) row.set_enable_expansion(false); + }); + } + }); + + // Delete button + const deleteButton = new Gtk.Button({ + label: _('Delete'), + css_classes: ['destructive-action'], + halign: Gtk.Align.CENTER, + margin_top: 12, + margin_bottom: 6, + }); + deleteButton.connect('clicked', () => { + existingWmClasses.delete(wmClass.toLowerCase()); + // Remove from array + const index = applicationRows.findIndex( + (item) => item.row === appRow, + ); + if (index > -1) applicationRows.splice(index, 1); + + blacklistGroup.remove(appRow); + saveBlacklist(); + }); + const deleteRow = new Adw.ActionRow({ + activatable: false, + }); + deleteRow.set_child(deleteButton); + appRow.add_row(deleteRow); + + return appRow; + }; + + // Load blacklist from settings + const savedBlacklist = Settings.get_application_blacklist(); + savedBlacklist.forEach((app) => { + const appRow = createBlacklistApplicationRow( + app.name, + app.wmClass, + app.customBorder, + app.tiling, + app.snapToBorder, + ); + blacklistGroup.add(appRow); + }); + + // Add button to add new application to blacklist + const addAppBtn = this._buildButtonRow( + _('Add Application'), + _('Add application to blacklist'), + _('Configure features for a new application'), + () => { + this._showAddApplicationDialog( + window, + existingWmClasses, + (appName, wmClass) => { + debug(`Adding application: ${appName} (${wmClass})`); + const newAppRow = createBlacklistApplicationRow( + appName, + wmClass, + ); + // Insert before the "Add Application" button + // Remove button, add new row, then re-add button to keep it at the bottom + blacklistGroup.remove(addAppBtn); + blacklistGroup.add(newAppRow); + blacklistGroup.add(addAppBtn); + saveBlacklist(); + }, + ); + }, + ); + blacklistGroup.add(addAppBtn); + // Layouts section const layoutsGroup = new Adw.PreferencesGroup({ title: _('Layouts'), @@ -1212,6 +1396,152 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference } } + _showAddApplicationDialog( + parentWindow: Adw.PreferencesWindow, + existingWmClasses: Set, + onAdd: (appName: string, wmClass: string) => void, + ) { + // Create dialog window + const dialog = new Adw.Window({ + modal: true, + hide_on_close: true, + transient_for: parentWindow, + default_width: 400, + default_height: 300, + }); + + // Create header bar + const headerBar = new Adw.HeaderBar(); + dialog.set_title(_('Add Application')); + + // Create content + const toolbarView = new Adw.ToolbarView(); + toolbarView.add_top_bar(headerBar); + + const contentBox = new Gtk.Box({ + orientation: Gtk.Orientation.VERTICAL, + margin_top: 24, + margin_bottom: 24, + margin_start: 24, + margin_end: 24, + spacing: 18, + }); + + // Application name entry + const nameEntry = new Gtk.Entry({ + placeholder_text: _('Application Name (e.g., Firefox)'), + hexpand: true, + }); + const nameRow = new Gtk.Box({ + orientation: Gtk.Orientation.VERTICAL, + spacing: 6, + }); + nameRow.append( + new Gtk.Label({ + label: _('Application Name'), + halign: Gtk.Align.START, + }), + ); + nameRow.append(nameEntry); + + // WM Class entry + const wmClassEntry = new Gtk.Entry({ + placeholder_text: _('WM Class (e.g., firefox, gnome-terminal)'), + hexpand: true, + }); + const wmClassRow = new Gtk.Box({ + orientation: Gtk.Orientation.VERTICAL, + spacing: 6, + }); + wmClassRow.append( + new Gtk.Label({ + label: _('WM Class'), + halign: Gtk.Align.START, + }), + ); + wmClassRow.append(wmClassEntry); + + // Error label for duplicate WM Class + const errorLabel = new Gtk.Label({ + label: _('This WM Class already exists in the list'), + wrap: true, + halign: Gtk.Align.START, + css_classes: ['error', 'caption'], + visible: false, + }); + + // Help text + const helpLabel = new Gtk.Label({ + label: _( + 'Tip: You can find the WM Class by running "xprop WM_CLASS" in terminal and clicking the application window.', + ), + wrap: true, + halign: Gtk.Align.START, + css_classes: ['dim-label', 'caption'], + }); + + contentBox.append(nameRow); + contentBox.append(wmClassRow); + contentBox.append(errorLabel); + contentBox.append(helpLabel); + + // Buttons + const buttonBox = new Gtk.Box({ + orientation: Gtk.Orientation.HORIZONTAL, + spacing: 6, + halign: Gtk.Align.END, + margin_top: 12, + }); + + const cancelButton = new Gtk.Button({ + label: _('Cancel'), + }); + cancelButton.connect('clicked', () => { + dialog.close(); + }); + + const addButton = new Gtk.Button({ + label: _('Add'), + css_classes: ['suggested-action'], + }); + addButton.connect('clicked', () => { + const appName = nameEntry.get_text().trim(); + const wmClass = wmClassEntry.get_text().trim(); + + if (appName && wmClass) { + onAdd(appName, wmClass); + dialog.close(); + } + }); + + // Enable/disable add button based on input and validation + const updateAddButton = () => { + const hasName = nameEntry.get_text().trim().length > 0; + const wmClass = wmClassEntry.get_text().trim(); + const hasWmClass = wmClass.length > 0; + const isDuplicate = + hasWmClass && existingWmClasses.has(wmClass.toLowerCase()); + + // Show/hide error message + errorLabel.set_visible(isDuplicate); + + // Enable button only if both fields have values and no duplicate + addButton.set_sensitive(hasName && hasWmClass && !isDuplicate); + }; + + nameEntry.connect('changed', updateAddButton); + wmClassEntry.connect('changed', updateAddButton); + updateAddButton(); // Initial state + + buttonBox.append(cancelButton); + buttonBox.append(addButton); + contentBox.append(buttonBox); + + toolbarView.set_content(contentBox); + dialog.set_content(toolbarView); + dialog.present(); + } + _buildActivationKeysDropDown( initialValue: ActivationKey, onChange: (_: ActivationKey) => void, diff --git a/src/settings/settings.ts b/src/settings/settings.ts index 4ba2931f..b8c6dd68 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -114,6 +114,7 @@ export default class Settings { static KEY_ENABLE_TILING_SYSTEM_WINDOWS_SUGGESTIONS = 'enable-tiling-system-windows-suggestions'; static KEY_ENABLE_SNAP_ASSISTANT_WINDOWS_SUGGESTIONS = 'enable-snap-assistant-windows-suggestions'; static KEY_ENABLE_SCREEN_EDGES_WINDOWS_SUGGESTIONS = 'enable-screen-edges-windows-suggestions'; + static KEY_APPLICATION_BLACKLIST = 'application-blacklist'; static SETTING_MOVE_WINDOW_RIGHT = 'move-window-right'; static SETTING_MOVE_WINDOW_LEFT = 'move-window-left'; @@ -675,6 +676,37 @@ export default class Settings { ); } + static get_application_blacklist(): Array<{ + name: string; + wmClass: string; + customBorder: boolean; + tiling: boolean; + snapToBorder: boolean; + }> { + try { + const json = get_string(Settings.KEY_APPLICATION_BLACKLIST); + return JSON.parse(json); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + } catch (e) { + return []; + } + } + + static save_application_blacklist( + blacklist: Array<{ + name: string; + wmClass: string; + customBorder: boolean; + tiling: boolean; + snapToBorder: boolean; + }>, + ) { + set_string( + Settings.KEY_APPLICATION_BLACKLIST, + JSON.stringify(blacklist), + ); + } + static connect(key: string, func: (..._arg: unknown[]) => void): number { return this._settings?.connect(`changed::${key}`, func) || -1; } From 39d5592e05b0b83da2728d3e7719ac8a8d14ad8e Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Wed, 17 Dec 2025 22:55:24 -0300 Subject: [PATCH 11/35] feat: expand settings for blacklisted apps --- src/components/blacklistManager.ts | 166 ++++++++++++++++++ src/components/windowBorder/windowBorder.ts | 3 +- .../windowBorder/windowBorderManager.ts | 23 ++- src/extension.ts | 14 +- src/prefs.ts | 133 ++++++++++---- src/settings/settings.ts | 14 +- 6 files changed, 315 insertions(+), 38 deletions(-) create mode 100644 src/components/blacklistManager.ts diff --git a/src/components/blacklistManager.ts b/src/components/blacklistManager.ts new file mode 100644 index 00000000..c4fe598c --- /dev/null +++ b/src/components/blacklistManager.ts @@ -0,0 +1,166 @@ +import { GObject, Meta } from '@gi.ext'; +import SignalHandling from '@utils/signalHandling'; +import { logger } from '@utils/logger'; +import { registerGObjectClass } from '@utils/gjs'; +import Settings from '@settings/settings'; + +const debug = logger('BlacklistManager'); + +export interface BlacklistApplication { + name: string; + wmClass: string; + customBorder: boolean; + autoTiling: boolean; + snapAssist: boolean; + windowSuggestions: boolean; + resizeComplementing: boolean; + spanMultipleTiles: boolean; +} + +@registerGObjectClass +export class BlacklistManager extends GObject.Object { + static metaInfo: GObject.MetaInfo = { + GTypeName: 'BlacklistManager', + Signals: { + 'blacklist-changed': {}, + }, + }; + + private readonly _signals: SignalHandling; + private _blacklist: BlacklistApplication[]; + + constructor() { + super(); + this._signals = new SignalHandling(); + this._blacklist = []; + } + + public enable(): void { + this._loadBlacklist(); + + // reload blacklist when settings change + this._signals.connect( + Settings, + Settings.KEY_APPLICATION_BLACKLIST, + () => { + this._loadBlacklist(); + }, + ); + } + + public destroy(): void { + this._signals.disconnect(); + this._blacklist = []; + } + + private _loadBlacklist(): void { + this._blacklist = Settings.get_application_blacklist(); + debug(`Loaded blacklist with ${this._blacklist.length} applications`); + this.emit('blacklist-changed'); + } + + /** + * Get the blacklist entry for a window by its WM class + * @param window The window to check + * @returns The blacklist entry if found, undefined otherwise + */ + private _getBlacklistEntry( + window: Meta.Window, + ): BlacklistApplication | undefined { + const wmClass = window.get_wm_class(); + if (!wmClass) return undefined; + + return this._blacklist.find( + (entry) => entry.wmClass.toLowerCase() === wmClass.toLowerCase(), + ); + } + + /** + * Check if custom border is enabled for a window + * @param window The window to check + * @returns true if custom border should be enabled, false otherwise + */ + public isCustomBorderEnabled(window: Meta.Window): boolean { + const entry = this._getBlacklistEntry(window); + + if (!entry) return true; + return entry.customBorder; + } + + /** + * Check if auto-tiling is enabled for a window + * @param window The window to check + * @returns true if auto-tiling should be enabled, false otherwise + */ + public isAutoTilingEnabled(window: Meta.Window): boolean { + const entry = this._getBlacklistEntry(window); + + if (!entry) return true; + return entry.autoTiling; + } + + /** + * Check if snap assistant is enabled for a window + * @param window The window to check + * @returns true if snap assistant should be enabled, false otherwise + */ + public isSnapAssistEnabled(window: Meta.Window): boolean { + const entry = this._getBlacklistEntry(window); + + if (!entry) return true; + return entry.snapAssist; + } + + /** + * Check if window suggestions are enabled for a window + * @param window The window to check + * @returns true if window suggestions should be enabled, false otherwise + */ + public isWindowSuggestionsEnabled(window: Meta.Window): boolean { + const entry = this._getBlacklistEntry(window); + + if (!entry) return true; + return entry.windowSuggestions; + } + + /** + * Check if resize complementing windows is enabled for a window + * @param window The window to check + * @returns true if resize complementing should be enabled, false otherwise + */ + public isResizeComplementingEnabled(window: Meta.Window): boolean { + const entry = this._getBlacklistEntry(window); + + if (!entry) return true; + return entry.resizeComplementing; + } + + /** + * Check if span multiple tiles is enabled for a window + * @param window The window to check + * @returns true if span multiple tiles should be enabled, false otherwise + */ + public isSpanMultipleTilesEnabled(window: Meta.Window): boolean { + const entry = this._getBlacklistEntry(window); + + if (!entry) return true; + return entry.spanMultipleTiles; + } + + /** + * Check if a window is blacklisted (any feature disabled) + * @param window The window to check + * @returns true if the window is in the blacklist, false otherwise + */ + public isBlacklisted(window: Meta.Window): boolean { + return this._getBlacklistEntry(window) !== undefined; + } + + /** + * Get all blacklist entries + * @returns Array of blacklist applications + */ + public getBlacklist(): BlacklistApplication[] { + return [...this._blacklist]; + } +} diff --git a/src/components/windowBorder/windowBorder.ts b/src/components/windowBorder/windowBorder.ts index 50dadb3d..21778c30 100644 --- a/src/components/windowBorder/windowBorder.ts +++ b/src/components/windowBorder/windowBorder.ts @@ -9,6 +9,7 @@ import { getScalingFactorOf, getScalingFactorSupportString, } from '../../utils/ui'; +import { BlacklistManager } from './blacklistManager'; Gio._promisify(Shell.Screenshot, 'composite_to_stream'); @@ -459,4 +460,4 @@ export default class WindowBorder extends St.DrawingArea { this.set_opacity(0); this.hide(); } -} +} \ No newline at end of file diff --git a/src/components/windowBorder/windowBorderManager.ts b/src/components/windowBorder/windowBorderManager.ts index b4d45773..0b38cb2d 100644 --- a/src/components/windowBorder/windowBorderManager.ts +++ b/src/components/windowBorder/windowBorderManager.ts @@ -9,14 +9,16 @@ export class WindowBorderManager { private _border: WindowBorder | null; private _enableScaling: boolean; private _interfaceSettings: Gio.Settings; + private _blacklistManager: BlacklistManager; - constructor(enableScaling: boolean) { + constructor(enableScaling: boolean, blacklistManager: BlacklistManager) { this._signals = new SignalHandling(); this._border = null; this._enableScaling = enableScaling; this._interfaceSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface', }); + this._blacklistManager = blacklistManager; } public enable(): void { @@ -31,6 +33,15 @@ export class WindowBorderManager { else this._turnOff(); }, ); + + // re-evaluate current window when blacklist changes + this._signals.connect( + this._blacklistManager, + 'blacklist-changed', + () => { + this._onWindowFocused(); + }, + ); } private _turnOn() { @@ -70,6 +81,7 @@ export class WindowBorderManager { private _onWindowFocused(): void { // connect signals on the window and create the border const metaWindow = global.display.focus_window; + if ( !metaWindow || metaWindow.get_wm_class() === null || @@ -80,6 +92,13 @@ export class WindowBorderManager { return; } + // Check if window is blacklisted for custom border + if (!this._blacklistManager.isCustomBorderEnabled(metaWindow)) { + this._border?.destroy(); + this._border = null; + return; + } + if (!this._border) this._border = new WindowBorder(metaWindow, this._enableScaling); else this._border.trackWindow(metaWindow); @@ -98,4 +117,4 @@ display.connect('restacked', (display) => { wg.set_child_above_sibling(winBorder, winActor); }); }); -*/ +*/ \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index d96c98b6..091ef895 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -50,6 +50,7 @@ import OverriddenAltTab from './components/altTab/overriddenAltTab'; import { LayoutSwitcherPopup } from './components/layoutSwitcher/layoutSwitcher'; import { unmaximizeWindow } from './utils/gnomesupport'; import * as Config from 'resource:///org/gnome/shell/misc/config.js'; +import { BlacklistManager } from '@components/blacklistManager'; const debug = logger('extension'); @@ -62,7 +63,8 @@ export default class TilingShellExtension extends Extension { private _keybindings: KeyBindings | null; private _resizingManager: ResizingManager | null; private _windowBorderManager: WindowBorderManager | null; - + private _blacklistManager: BlacklistManager | null; + constructor(metadata: ExtensionMetadata) { super(metadata); this._signals = null; @@ -73,6 +75,7 @@ export default class TilingShellExtension extends Extension { this._keybindings = null; this._resizingManager = null; this._windowBorderManager = null; + this._blacklistManager = null; } createIndicator() { @@ -152,9 +155,14 @@ export default class TilingShellExtension extends Extension { this._resizingManager = new ResizingManager(); this._resizingManager.enable(); + if (this._blacklistManager) this._blacklistManager.destroy(); + this._blacklistManager = new BlacklistManager(); + this._blacklistManager.enable(); + if (this._windowBorderManager) this._windowBorderManager.destroy(); this._windowBorderManager = new WindowBorderManager( !this._fractionalScalingEnabled, + this._blacklistManager, ); this._windowBorderManager.enable(); @@ -225,6 +233,7 @@ export default class TilingShellExtension extends Extension { this._windowBorderManager.destroy(); this._windowBorderManager = new WindowBorderManager( this._fractionalScalingEnabled, + this._blacklistManager!, ); this._windowBorderManager.enable(); }, @@ -767,6 +776,9 @@ export default class TilingShellExtension extends Extension { this._windowBorderManager?.destroy(); this._windowBorderManager = null; + this._blacklistManager?.destroy(); + this._blacklistManager = null; + // disable dbus this._dbus?.disable(); this._dbus = null; diff --git a/src/prefs.ts b/src/prefs.ts index 85f5dc3d..fc66d36f 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -418,8 +418,11 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference row: Adw.ExpanderRow; switches: { customBorder: Gtk.Switch; - tiling: Gtk.Switch; - snapToBorder: Gtk.Switch; + autoTiling: Gtk.Switch; + snapAssist: Gtk.Switch; + windowSuggestions: Gtk.Switch; + resizeComplementing: Gtk.Switch; + spanMultipleTiles: Gtk.Switch; }; }> = []; @@ -431,8 +434,12 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference name: row.get_title(), wmClass, customBorder: switches.customBorder.get_active(), - tiling: switches.tiling.get_active(), - snapToBorder: switches.snapToBorder.get_active(), + autoTiling: switches.autoTiling.get_active(), + snapAssist: switches.snapAssist.get_active(), + windowSuggestions: switches.windowSuggestions.get_active(), + resizeComplementing: + switches.resizeComplementing.get_active(), + spanMultipleTiles: switches.spanMultipleTiles.get_active(), }; }); Settings.save_application_blacklist(blacklist); @@ -443,8 +450,11 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference appName: string, wmClass: string, customBorder = true, - tiling = true, - snapToBorder = true, + autoTiling = true, + snapAssist = true, + windowSuggestions = true, + resizeComplementing = true, + spanMultipleTiles = true, ) => { const appRow = new Adw.ExpanderRow({ title: appName, @@ -468,43 +478,103 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference customBorderRow.add_suffix(customBorderSwitch); appRow.add_row(customBorderRow); - // Tiling toggle - const tilingSwitch = new Gtk.Switch({ + // Auto-tiling toggle + const autoTilingSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: tiling, + active: autoTiling, }); - tilingSwitch.connect('notify::active', () => saveBlacklist()); - const tilingRow = new Adw.ActionRow({ - title: _('Tiling'), - subtitle: _('Enable tiling for this application'), - activatableWidget: tilingSwitch, + autoTilingSwitch.connect('notify::active', () => saveBlacklist()); + const appAutoTilingRow = new Adw.ActionRow({ + title: _('Auto-tiling'), + subtitle: _( + 'Automatically tile new windows for this application', + ), + activatableWidget: autoTilingSwitch, + }); + appAutoTilingRow.add_suffix(autoTilingSwitch); + appRow.add_row(appAutoTilingRow); + + // Snap assistant toggle + const snapAssistSwitch = new Gtk.Switch({ + vexpand: false, + valign: Gtk.Align.CENTER, + active: snapAssist, + }); + snapAssistSwitch.connect('notify::active', () => saveBlacklist()); + const appSnapAssistRow = new Adw.ActionRow({ + title: _('Snap assistant'), + subtitle: _('Enable snap assistant for this application'), + activatableWidget: snapAssistSwitch, }); - tilingRow.add_suffix(tilingSwitch); - appRow.add_row(tilingRow); + appSnapAssistRow.add_suffix(snapAssistSwitch); + appRow.add_row(appSnapAssistRow); - // Snap to border toggle - const snapToBorderSwitch = new Gtk.Switch({ + // Window suggestions toggle + const windowSuggestionsSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: snapToBorder, + active: windowSuggestions, }); - snapToBorderSwitch.connect('notify::active', () => saveBlacklist()); - const snapToBorderRow = new Adw.ActionRow({ - title: _('Snap to border'), - subtitle: _('Enable snap to border for this application'), - activatableWidget: snapToBorderSwitch, + windowSuggestionsSwitch.connect('notify::active', () => + saveBlacklist(), + ); + const appWindowSuggestionsRow = new Adw.ActionRow({ + title: _('Window suggestions'), + subtitle: _( + "Suggest this application's windows to fill empty tiles", + ), + activatableWidget: windowSuggestionsSwitch, + }); + appWindowSuggestionsRow.add_suffix(windowSuggestionsSwitch); + appRow.add_row(appWindowSuggestionsRow); + + // Resize complementing windows toggle + const resizeComplementingSwitch = new Gtk.Switch({ + vexpand: false, + valign: Gtk.Align.CENTER, + active: resizeComplementing, + }); + resizeComplementingSwitch.connect('notify::active', () => + saveBlacklist(), + ); + const appResizeComplementingRow = new Adw.ActionRow({ + title: _('Resize complementing windows'), + subtitle: _( + 'Auto-resize nearby windows when this window is resized', + ), + activatableWidget: resizeComplementingSwitch, + }); + appResizeComplementingRow.add_suffix(resizeComplementingSwitch); + appRow.add_row(appResizeComplementingRow); + + // Span multiple tiles toggle + const spanMultipleTilesSwitch = new Gtk.Switch({ + vexpand: false, + valign: Gtk.Align.CENTER, + active: spanMultipleTiles, + }); + spanMultipleTilesSwitch.connect('notify::active', () => + saveBlacklist(), + ); + const appSpanMultipleTilesRow = new Adw.ActionRow({ + title: _('Span multiple tiles'), + subtitle: _('Allow this application to span multiple tiles'), + activatableWidget: spanMultipleTilesSwitch, }); - snapToBorderRow.add_suffix(snapToBorderSwitch); - appRow.add_row(snapToBorderRow); + appSpanMultipleTilesRow.add_suffix(spanMultipleTilesSwitch); + appRow.add_row(appSpanMultipleTilesRow); // Store row with switch references const rowData = { row: appRow, switches: { customBorder: customBorderSwitch, - tiling: tilingSwitch, - snapToBorder: snapToBorderSwitch, + autoTiling: autoTilingSwitch, + snapAssist: snapAssistSwitch, + windowSuggestions: windowSuggestionsSwitch, + resizeComplementing: resizeComplementingSwitch, + spanMultipleTiles: spanMultipleTilesSwitch, }, }; applicationRows.push(rowData); @@ -553,8 +623,11 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference app.name, app.wmClass, app.customBorder, - app.tiling, - app.snapToBorder, + app.autoTiling, + app.snapAssist, + app.windowSuggestions, + app.resizeComplementing, + app.spanMultipleTiles, ); blacklistGroup.add(appRow); }); diff --git a/src/settings/settings.ts b/src/settings/settings.ts index b8c6dd68..39b8bd12 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -680,8 +680,11 @@ export default class Settings { name: string; wmClass: string; customBorder: boolean; - tiling: boolean; - snapToBorder: boolean; + autoTiling: boolean; + snapAssist: boolean; + windowSuggestions: boolean; + resizeComplementing: boolean; + spanMultipleTiles: boolean; }> { try { const json = get_string(Settings.KEY_APPLICATION_BLACKLIST); @@ -697,8 +700,11 @@ export default class Settings { name: string; wmClass: string; customBorder: boolean; - tiling: boolean; - snapToBorder: boolean; + autoTiling: boolean; + snapAssist: boolean; + windowSuggestions: boolean; + resizeComplementing: boolean; + spanMultipleTiles: boolean; }>, ) { set_string( From 57f43bb60dcf80370e00b4e619dd50decfcf5473 Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Thu, 18 Dec 2025 07:51:34 -0300 Subject: [PATCH 12/35] refact: rename from blacklist to custom rules --- ...e.shell.extensions.tilingshell.gschema.xml | 4 +- ...cklistManager.ts => customRulesManager.ts} | 72 ++++++++++--------- src/components/windowBorder/windowBorder.ts | 3 +- .../windowBorder/windowBorderManager.ts | 20 +++--- src/extension.ts | 20 +++--- src/prefs.ts | 62 ++++++++-------- src/settings/settings.ts | 15 ++-- 7 files changed, 103 insertions(+), 93 deletions(-) rename src/components/{blacklistManager.ts => customRulesManager.ts} (65%) diff --git a/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml b/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml index 2b304af4..27524079 100644 --- a/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml +++ b/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml @@ -192,9 +192,9 @@ Enable window suggestions for screen edge snapping Suggests windows to occupy empty tiles when snapping to screen edges. - + '[]' - Application blacklist + Application custom rules List of applications with custom feature settings (custom border, tiling, snap to border). diff --git a/src/components/blacklistManager.ts b/src/components/customRulesManager.ts similarity index 65% rename from src/components/blacklistManager.ts rename to src/components/customRulesManager.ts index c4fe598c..7c24132b 100644 --- a/src/components/blacklistManager.ts +++ b/src/components/customRulesManager.ts @@ -4,9 +4,9 @@ import { logger } from '@utils/logger'; import { registerGObjectClass } from '@utils/gjs'; import Settings from '@settings/settings'; -const debug = logger('BlacklistManager'); +const debug = logger('CustomRulesManager'); -export interface BlacklistApplication { +export interface CustomRulesByApp { name: string; wmClass: string; customBorder: boolean; @@ -18,59 +18,61 @@ export interface BlacklistApplication { } @registerGObjectClass -export class BlacklistManager extends GObject.Object { +export class CustomRulesManager extends GObject.Object { static metaInfo: GObject.MetaInfo = { - GTypeName: 'BlacklistManager', + GTypeName: 'CustomRulesManager', Signals: { - 'blacklist-changed': {}, + 'customRules-changed': {}, }, }; private readonly _signals: SignalHandling; - private _blacklist: BlacklistApplication[]; + private _customRules: CustomRulesByApp[]; constructor() { super(); this._signals = new SignalHandling(); - this._blacklist = []; + this._customRules = []; } public enable(): void { - this._loadBlacklist(); + this._loadCustomRules(); - // reload blacklist when settings change + // reload customRules when settings change this._signals.connect( Settings, - Settings.KEY_APPLICATION_BLACKLIST, + Settings.KEY_APPLICATION_CUSTOMRULES, () => { - this._loadBlacklist(); + this._loadCustomRules(); }, ); } public destroy(): void { this._signals.disconnect(); - this._blacklist = []; + this._customRules = []; } - private _loadBlacklist(): void { - this._blacklist = Settings.get_application_blacklist(); - debug(`Loaded blacklist with ${this._blacklist.length} applications`); - this.emit('blacklist-changed'); + private _loadCustomRules(): void { + this._customRules = Settings.get_application_custom_rules(); + debug( + `Loaded customRules with ${this._customRules.length} applications`, + ); + this.emit('customRules-changed'); } /** - * Get the blacklist entry for a window by its WM class + * Get the customRules entry for a window by its WM class * @param window The window to check - * @returns The blacklist entry if found, undefined otherwise + * @returns The customRules entry if found, undefined otherwise */ - private _getBlacklistEntry( + private _getCustomRulesEntry( window: Meta.Window, - ): BlacklistApplication | undefined { + ): CustomRulesByApp | undefined { const wmClass = window.get_wm_class(); if (!wmClass) return undefined; - return this._blacklist.find( + return this._customRules.find( (entry) => entry.wmClass.toLowerCase() === wmClass.toLowerCase(), ); } @@ -81,7 +83,7 @@ export class BlacklistManager extends GObject.Object { * @returns true if custom border should be enabled, false otherwise */ public isCustomBorderEnabled(window: Meta.Window): boolean { - const entry = this._getBlacklistEntry(window); + const entry = this._getCustomRulesEntry(window); if (!entry) return true; return entry.customBorder; @@ -93,7 +95,7 @@ export class BlacklistManager extends GObject.Object { * @returns true if auto-tiling should be enabled, false otherwise */ public isAutoTilingEnabled(window: Meta.Window): boolean { - const entry = this._getBlacklistEntry(window); + const entry = this._getCustomRulesEntry(window); if (!entry) return true; return entry.autoTiling; @@ -105,7 +107,7 @@ export class BlacklistManager extends GObject.Object { * @returns true if snap assistant should be enabled, false otherwise */ public isSnapAssistEnabled(window: Meta.Window): boolean { - const entry = this._getBlacklistEntry(window); + const entry = this._getCustomRulesEntry(window); if (!entry) return true; return entry.snapAssist; @@ -117,7 +119,7 @@ export class BlacklistManager extends GObject.Object { * @returns true if window suggestions should be enabled, false otherwise */ public isWindowSuggestionsEnabled(window: Meta.Window): boolean { - const entry = this._getBlacklistEntry(window); + const entry = this._getCustomRulesEntry(window); if (!entry) return true; return entry.windowSuggestions; @@ -129,7 +131,7 @@ export class BlacklistManager extends GObject.Object { * @returns true if resize complementing should be enabled, false otherwise */ public isResizeComplementingEnabled(window: Meta.Window): boolean { - const entry = this._getBlacklistEntry(window); + const entry = this._getCustomRulesEntry(window); if (!entry) return true; return entry.resizeComplementing; @@ -141,26 +143,26 @@ export class BlacklistManager extends GObject.Object { * @returns true if span multiple tiles should be enabled, false otherwise */ public isSpanMultipleTilesEnabled(window: Meta.Window): boolean { - const entry = this._getBlacklistEntry(window); + const entry = this._getCustomRulesEntry(window); if (!entry) return true; return entry.spanMultipleTiles; } /** - * Check if a window is blacklisted (any feature disabled) + * Check if a window is customRulesed (any feature disabled) * @param window The window to check - * @returns true if the window is in the blacklist, false otherwise + * @returns true if the window is in the customRules, false otherwise */ - public isBlacklisted(window: Meta.Window): boolean { - return this._getBlacklistEntry(window) !== undefined; + public isCustomRulesed(window: Meta.Window): boolean { + return this._getCustomRulesEntry(window) !== undefined; } /** - * Get all blacklist entries - * @returns Array of blacklist applications + * Get all customRules entries + * @returns Array of customRules applications */ - public getBlacklist(): BlacklistApplication[] { - return [...this._blacklist]; + public getCustomRules(): CustomRulesByApp[] { + return [...this._customRules]; } } diff --git a/src/components/windowBorder/windowBorder.ts b/src/components/windowBorder/windowBorder.ts index 21778c30..2b748bc6 100644 --- a/src/components/windowBorder/windowBorder.ts +++ b/src/components/windowBorder/windowBorder.ts @@ -9,6 +9,7 @@ import { getScalingFactorOf, getScalingFactorSupportString, } from '../../utils/ui'; +import { CustomRulesManager } from './customRulesManager'; import { BlacklistManager } from './blacklistManager'; Gio._promisify(Shell.Screenshot, 'composite_to_stream'); @@ -460,4 +461,4 @@ export default class WindowBorder extends St.DrawingArea { this.set_opacity(0); this.hide(); } -} \ No newline at end of file +} diff --git a/src/components/windowBorder/windowBorderManager.ts b/src/components/windowBorder/windowBorderManager.ts index 0b38cb2d..bf12fe55 100644 --- a/src/components/windowBorder/windowBorderManager.ts +++ b/src/components/windowBorder/windowBorderManager.ts @@ -2,6 +2,7 @@ import { Gio } from '../../gi/ext'; import WindowBorder from './windowBorder'; import SignalHandling from '../../utils/signalHandling'; import Settings from '../../settings/settings'; +import { CustomRulesManager } from '../customRulesManager'; export class WindowBorderManager { private readonly _signals: SignalHandling; @@ -9,16 +10,19 @@ export class WindowBorderManager { private _border: WindowBorder | null; private _enableScaling: boolean; private _interfaceSettings: Gio.Settings; - private _blacklistManager: BlacklistManager; + private _customRulesManager: CustomRulesManager; - constructor(enableScaling: boolean, blacklistManager: BlacklistManager) { + constructor( + enableScaling: boolean, + customRulesManager: CustomRulesManager, + ) { this._signals = new SignalHandling(); this._border = null; this._enableScaling = enableScaling; this._interfaceSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface', }); - this._blacklistManager = blacklistManager; + this._customRulesManager = customRulesManager; } public enable(): void { @@ -34,10 +38,10 @@ export class WindowBorderManager { }, ); - // re-evaluate current window when blacklist changes + // re-evaluate current window when customRules changes this._signals.connect( - this._blacklistManager, - 'blacklist-changed', + this._customRulesManager, + 'customRules-changed', () => { this._onWindowFocused(); }, @@ -92,8 +96,8 @@ export class WindowBorderManager { return; } - // Check if window is blacklisted for custom border - if (!this._blacklistManager.isCustomBorderEnabled(metaWindow)) { + // Check if window is customRulesed for custom border + if (!this._customRulesManager.isCustomBorderEnabled(metaWindow)) { this._border?.destroy(); this._border = null; return; diff --git a/src/extension.ts b/src/extension.ts index 091ef895..3947eea5 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -50,7 +50,7 @@ import OverriddenAltTab from './components/altTab/overriddenAltTab'; import { LayoutSwitcherPopup } from './components/layoutSwitcher/layoutSwitcher'; import { unmaximizeWindow } from './utils/gnomesupport'; import * as Config from 'resource:///org/gnome/shell/misc/config.js'; -import { BlacklistManager } from '@components/blacklistManager'; +import { CustomRulesManager } from '@components/customRulesManager'; const debug = logger('extension'); @@ -63,7 +63,7 @@ export default class TilingShellExtension extends Extension { private _keybindings: KeyBindings | null; private _resizingManager: ResizingManager | null; private _windowBorderManager: WindowBorderManager | null; - private _blacklistManager: BlacklistManager | null; + private _customRulesManager: CustomRulesManager | null; constructor(metadata: ExtensionMetadata) { super(metadata); @@ -75,7 +75,7 @@ export default class TilingShellExtension extends Extension { this._keybindings = null; this._resizingManager = null; this._windowBorderManager = null; - this._blacklistManager = null; + this._customRulesManager = null; } createIndicator() { @@ -155,14 +155,14 @@ export default class TilingShellExtension extends Extension { this._resizingManager = new ResizingManager(); this._resizingManager.enable(); - if (this._blacklistManager) this._blacklistManager.destroy(); - this._blacklistManager = new BlacklistManager(); - this._blacklistManager.enable(); + if (this._customRulesManager) this._customRulesManager.destroy(); + this._customRulesManager = new CustomRulesManager(); + this._customRulesManager.enable(); if (this._windowBorderManager) this._windowBorderManager.destroy(); this._windowBorderManager = new WindowBorderManager( !this._fractionalScalingEnabled, - this._blacklistManager, + this._customRulesManager, ); this._windowBorderManager.enable(); @@ -233,7 +233,7 @@ export default class TilingShellExtension extends Extension { this._windowBorderManager.destroy(); this._windowBorderManager = new WindowBorderManager( this._fractionalScalingEnabled, - this._blacklistManager!, + this._customRulesManager!, ); this._windowBorderManager.enable(); }, @@ -776,8 +776,8 @@ export default class TilingShellExtension extends Extension { this._windowBorderManager?.destroy(); this._windowBorderManager = null; - this._blacklistManager?.destroy(); - this._blacklistManager = null; + this._customRulesManager?.destroy(); + this._customRulesManager = null; // disable dbus this._dbus?.disable(); diff --git a/src/prefs.ts b/src/prefs.ts index fc66d36f..71f2f09d 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -402,14 +402,14 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference prefsPage.add(windowsSuggestionsGroup); - // Blacklist section - const blacklistGroup = new Adw.PreferencesGroup({ - title: _('Application Blacklist'), + // Custom Rules section + const customRulesGroup = new Adw.PreferencesGroup({ + title: _('Application Custom Rules'), description: _( 'Configure which features are enabled for specific applications', ), }); - prefsPage.add(blacklistGroup); + prefsPage.add(customRulesGroup); // Store WM classes to validate duplicates const existingWmClasses = new Set(); @@ -426,9 +426,9 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference }; }> = []; - // Helper function to save blacklist to settings - const saveBlacklist = () => { - const blacklist = applicationRows.map(({ row, switches }) => { + // Helper function to save customRules to settings + const saveCustomRules = () => { + const customRules = applicationRows.map(({ row, switches }) => { const wmClass = row.get_subtitle().replace('WM Class: ', ''); return { name: row.get_title(), @@ -442,11 +442,11 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference spanMultipleTiles: switches.spanMultipleTiles.get_active(), }; }); - Settings.save_application_blacklist(blacklist); + Settings.save_application_custom_rules(customRules); }; // Helper function to create application row - const createBlacklistApplicationRow = ( + const createCustomRulesApplicationRow = ( appName: string, wmClass: string, customBorder = true, @@ -469,7 +469,9 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference valign: Gtk.Align.CENTER, active: customBorder, }); - customBorderSwitch.connect('notify::active', () => saveBlacklist()); + customBorderSwitch.connect('notify::active', () => + saveCustomRules(), + ); const customBorderRow = new Adw.ActionRow({ title: _('Custom border'), subtitle: _('Show custom border for this application'), @@ -484,7 +486,7 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference valign: Gtk.Align.CENTER, active: autoTiling, }); - autoTilingSwitch.connect('notify::active', () => saveBlacklist()); + autoTilingSwitch.connect('notify::active', () => saveCustomRules()); const appAutoTilingRow = new Adw.ActionRow({ title: _('Auto-tiling'), subtitle: _( @@ -501,7 +503,7 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference valign: Gtk.Align.CENTER, active: snapAssist, }); - snapAssistSwitch.connect('notify::active', () => saveBlacklist()); + snapAssistSwitch.connect('notify::active', () => saveCustomRules()); const appSnapAssistRow = new Adw.ActionRow({ title: _('Snap assistant'), subtitle: _('Enable snap assistant for this application'), @@ -517,7 +519,7 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference active: windowSuggestions, }); windowSuggestionsSwitch.connect('notify::active', () => - saveBlacklist(), + saveCustomRules(), ); const appWindowSuggestionsRow = new Adw.ActionRow({ title: _('Window suggestions'), @@ -536,7 +538,7 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference active: resizeComplementing, }); resizeComplementingSwitch.connect('notify::active', () => - saveBlacklist(), + saveCustomRules(), ); const appResizeComplementingRow = new Adw.ActionRow({ title: _('Resize complementing windows'), @@ -555,7 +557,7 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference active: spanMultipleTiles, }); spanMultipleTilesSwitch.connect('notify::active', () => - saveBlacklist(), + saveCustomRules(), ); const appSpanMultipleTilesRow = new Adw.ActionRow({ title: _('Span multiple tiles'), @@ -604,8 +606,8 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference ); if (index > -1) applicationRows.splice(index, 1); - blacklistGroup.remove(appRow); - saveBlacklist(); + customRulesGroup.remove(appRow); + saveCustomRules(); }); const deleteRow = new Adw.ActionRow({ activatable: false, @@ -616,10 +618,10 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference return appRow; }; - // Load blacklist from settings - const savedBlacklist = Settings.get_application_blacklist(); - savedBlacklist.forEach((app) => { - const appRow = createBlacklistApplicationRow( + // Load customRules from settings + const savedCustomRules = Settings.get_application_custom_rules(); + savedCustomRules.forEach((app) => { + const appRow = createCustomRulesApplicationRow( app.name, app.wmClass, app.customBorder, @@ -629,13 +631,13 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference app.resizeComplementing, app.spanMultipleTiles, ); - blacklistGroup.add(appRow); + customRulesGroup.add(appRow); }); - // Add button to add new application to blacklist + // Add button to add new application to customRules const addAppBtn = this._buildButtonRow( _('Add Application'), - _('Add application to blacklist'), + _('Add application to customRules'), _('Configure features for a new application'), () => { this._showAddApplicationDialog( @@ -643,21 +645,21 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference existingWmClasses, (appName, wmClass) => { debug(`Adding application: ${appName} (${wmClass})`); - const newAppRow = createBlacklistApplicationRow( + const newAppRow = createCustomRulesApplicationRow( appName, wmClass, ); // Insert before the "Add Application" button // Remove button, add new row, then re-add button to keep it at the bottom - blacklistGroup.remove(addAppBtn); - blacklistGroup.add(newAppRow); - blacklistGroup.add(addAppBtn); - saveBlacklist(); + customRulesGroup.remove(addAppBtn); + customRulesGroup.add(newAppRow); + customRulesGroup.add(addAppBtn); + saveCustomRules(); }, ); }, ); - blacklistGroup.add(addAppBtn); + customRulesGroup.add(addAppBtn); // Layouts section const layoutsGroup = new Adw.PreferencesGroup({ diff --git a/src/settings/settings.ts b/src/settings/settings.ts index 39b8bd12..1471e514 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -114,7 +114,8 @@ export default class Settings { static KEY_ENABLE_TILING_SYSTEM_WINDOWS_SUGGESTIONS = 'enable-tiling-system-windows-suggestions'; static KEY_ENABLE_SNAP_ASSISTANT_WINDOWS_SUGGESTIONS = 'enable-snap-assistant-windows-suggestions'; static KEY_ENABLE_SCREEN_EDGES_WINDOWS_SUGGESTIONS = 'enable-screen-edges-windows-suggestions'; - static KEY_APPLICATION_BLACKLIST = 'application-blacklist'; + + static KEY_APPLICATION_CUSTOMRULES = 'application-custom-rules'; static SETTING_MOVE_WINDOW_RIGHT = 'move-window-right'; static SETTING_MOVE_WINDOW_LEFT = 'move-window-left'; @@ -676,7 +677,7 @@ export default class Settings { ); } - static get_application_blacklist(): Array<{ + static get_application_custom_rules(): Array<{ name: string; wmClass: string; customBorder: boolean; @@ -687,7 +688,7 @@ export default class Settings { spanMultipleTiles: boolean; }> { try { - const json = get_string(Settings.KEY_APPLICATION_BLACKLIST); + const json = get_string(Settings.KEY_APPLICATION_CUSTOMRULES); return JSON.parse(json); // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (e) { @@ -695,8 +696,8 @@ export default class Settings { } } - static save_application_blacklist( - blacklist: Array<{ + static save_application_custom_rules( + customRules: Array<{ name: string; wmClass: string; customBorder: boolean; @@ -708,8 +709,8 @@ export default class Settings { }>, ) { set_string( - Settings.KEY_APPLICATION_BLACKLIST, - JSON.stringify(blacklist), + Settings.KEY_APPLICATION_CUSTOMRULES, + JSON.stringify(customRules), ); } From 8c132b4af76789b188540abad40e01559e62fa13 Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Thu, 18 Dec 2025 20:42:13 -0300 Subject: [PATCH 13/35] feat: integrate CustomRulesManager into TilingManager and extension initialization --- src/components/tilingsystem/tilingManager.ts | 32 +++++++++++++++----- src/extension.ts | 17 +++++++---- src/settings/settings.ts | 6 ++-- 3 files changed, 38 insertions(+), 17 deletions(-) diff --git a/src/components/tilingsystem/tilingManager.ts b/src/components/tilingsystem/tilingManager.ts index 76aabb9e..0d16aecf 100644 --- a/src/components/tilingsystem/tilingManager.ts +++ b/src/components/tilingsystem/tilingManager.ts @@ -30,6 +30,7 @@ import { KeyBindingsDirection } from '../../keybindings'; import TilingShellWindowManager from '../../components/windowManager/tilingShellWindowManager'; import TilingLayoutWithSuggestions from '../windowsSuggestions/tilingLayoutWithSuggestions'; import { maximizeWindow, unmaximizeWindow } from '../../utils/gnomesupport'; +import { CustomRulesManager } from '../customRulesManager'; const MINIMUM_DISTANCE_TO_RESTORE_ORIGINAL_SIZE = 90; @@ -78,12 +79,19 @@ export class TilingManager { private readonly _signals: SignalHandling; private readonly _debug: (..._content: unknown[]) => void; + private readonly _customRulesManager: CustomRulesManager; /** * Constructs a new TilingManager instance. * @param monitor The monitor to manage tiling for. + * @param enableScaling Whether to enable scaling for the monitor. + * @param customRulesManager The custom rules manager instance. */ - constructor(monitor: Monitor, enableScaling: boolean) { + constructor( + monitor: Monitor, + enableScaling: boolean, + customRulesManager: CustomRulesManager, + ) { this._isGrabbingWindow = false; this._wasSpanMultipleTilesActivated = false; this._wasTilingSystemActivated = false; @@ -91,6 +99,7 @@ export class TilingManager { this._enableScaling = enableScaling; this._monitor = monitor; this._signals = new SignalHandling(); + this._customRulesManager = customRulesManager; this._debug = logger(`TilingManager ${monitor.index}`); @@ -689,11 +698,14 @@ export class TilingManager { ? false : this._activationKeyStatus(modifier, deactivationKey); const allowSpanMultipleTiles = - Settings.SPAN_MULTIPLE_TILES && isSpanMultiTilesActivated; + Settings.SPAN_MULTIPLE_TILES && + isSpanMultiTilesActivated && + this._customRulesManager.isSpanMultipleTilesEnabled(window); const showTilingSystem = Settings.TILING_SYSTEM && isTilingSystemActivated && - !isTilingSystemDeactivated; + !isTilingSystemDeactivated && + this._customRulesManager.isAutoTilingEnabled(window); // ensure we handle window movement only when needed // if the snap assistant activation key status is not changed and the mouse is on the same position as before // and the tiling system activation key status is not changed, we have nothing to do @@ -847,12 +859,13 @@ export class TilingManager { this._edgeTilingManager.abortEdgeTiling(); const canShowTilingSuggestions = - (wasSnapAssistingLayout && + ((wasSnapAssistingLayout && Settings.ENABLE_SNAP_ASSISTANT_WINDOWS_SUGGESTIONS) || - (wasEdgeTiling && - Settings.ENABLE_SCREEN_EDGES_WINDOWS_SUGGESTIONS) || - (isTilingSystemActivated && - Settings.ENABLE_TILING_SYSTEM_WINDOWS_SUGGESTIONS); + (wasEdgeTiling && + Settings.ENABLE_SCREEN_EDGES_WINDOWS_SUGGESTIONS) || + (isTilingSystemActivated && + Settings.ENABLE_TILING_SYSTEM_WINDOWS_SUGGESTIONS)) && + this._customRulesManager.isWindowSuggestionsEnabled(window); // abort if the pointer is moving on another monitor: the user moved // the window to another monitor not handled by this tiling manager @@ -1288,6 +1301,9 @@ export class TilingManager { ) return; + // check custom rules for this window + if (!this._customRulesManager.isAutoTilingEnabled(window)) return; + (window as ExtendedWindow).assignedTile = undefined; const vacantTile = this._findEmptyTile(window); if (!vacantTile) return; diff --git a/src/extension.ts b/src/extension.ts index 3947eea5..a90dfb3d 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -138,6 +138,11 @@ export default class TilingShellExtension extends Extension { ); } + // initialize CustomRulesManager before creating TilingManagers + if (this._customRulesManager) this._customRulesManager.destroy(); + this._customRulesManager = new CustomRulesManager(); + this._customRulesManager.enable(); + if (Main.layoutManager._startingUp) { this._signals.connect( Main.layoutManager, @@ -155,10 +160,6 @@ export default class TilingShellExtension extends Extension { this._resizingManager = new ResizingManager(); this._resizingManager.enable(); - if (this._customRulesManager) this._customRulesManager.destroy(); - this._customRulesManager = new CustomRulesManager(); - this._customRulesManager.enable(); - if (this._windowBorderManager) this._windowBorderManager.destroy(); this._windowBorderManager = new WindowBorderManager( !this._fractionalScalingEnabled, @@ -187,7 +188,11 @@ export default class TilingShellExtension extends Extension { this._tilingManagers.forEach((tm) => tm.destroy()); this._tilingManagers = getMonitors().map( (monitor) => - new TilingManager(monitor, !this._fractionalScalingEnabled), + new TilingManager( + monitor, + !this._fractionalScalingEnabled, + this._customRulesManager as CustomRulesManager, + ), ); this._tilingManagers.forEach((tm) => tm.enable()); } @@ -233,7 +238,7 @@ export default class TilingShellExtension extends Extension { this._windowBorderManager.destroy(); this._windowBorderManager = new WindowBorderManager( this._fractionalScalingEnabled, - this._customRulesManager!, + this._customRulesManager as CustomRulesManager, ); this._windowBorderManager.enable(); }, diff --git a/src/settings/settings.ts b/src/settings/settings.ts index 1471e514..07ad703c 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -680,12 +680,12 @@ export default class Settings { static get_application_custom_rules(): Array<{ name: string; wmClass: string; - customBorder: boolean; - autoTiling: boolean; + customBorder: boolean; // ✅ + autoTiling: boolean; // ✅ snapAssist: boolean; windowSuggestions: boolean; resizeComplementing: boolean; - spanMultipleTiles: boolean; + spanMultipleTiles: boolean; // ✅ }> { try { const json = get_string(Settings.KEY_APPLICATION_CUSTOMRULES); From 3587a341f3ce420e3ab9bac52d256ccca9d2b197 Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Sun, 21 Dec 2025 20:56:47 -0300 Subject: [PATCH 14/35] feat: integrate CustomRulesManager into ResizingManager and TilingManager for enhanced window management --- src/components/tilingsystem/resizeManager.ts | 11 ++++++++++- src/components/tilingsystem/tilingManager.ts | 13 ++++++++++--- src/extension.ts | 2 +- src/settings/settings.ts | 6 +++--- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/components/tilingsystem/resizeManager.ts b/src/components/tilingsystem/resizeManager.ts index 35125834..d68b6dc4 100644 --- a/src/components/tilingsystem/resizeManager.ts +++ b/src/components/tilingsystem/resizeManager.ts @@ -3,12 +3,15 @@ import SignalHandling from '../../utils/signalHandling'; import Settings from '../../settings/settings'; import ExtendedWindow from './extendedWindow'; import { getWindows } from '../../utils/ui'; +import { CustomRulesManager } from '@components/customRulesManager'; export class ResizingManager { private _signals: SignalHandling | null; + private readonly _customRulesManager: CustomRulesManager; - constructor() { + constructor(customRulesManager: CustomRulesManager) { this._signals = null; + this._customRulesManager = customRulesManager; } public enable() { @@ -27,6 +30,12 @@ export class ResizingManager { grabOp === Meta.GrabOp.KEYBOARD_MOVING || grabOp === Meta.GrabOp.MOVING; if (moving || !Settings.RESIZE_COMPLEMENTING_WINDOWS) return; + if ( + !this._customRulesManager.isResizeComplementingEnabled( + window, + ) + ) + return; this._onWindowResizingBegin(window, grabOp & ~1024); }, diff --git a/src/components/tilingsystem/tilingManager.ts b/src/components/tilingsystem/tilingManager.ts index 0d16aecf..c8798f3b 100644 --- a/src/components/tilingsystem/tilingManager.ts +++ b/src/components/tilingsystem/tilingManager.ts @@ -751,7 +751,10 @@ export class TilingManager { this._edgeTilingManager.abortEdgeTiling(); } - if (Settings.SNAP_ASSIST) { + if ( + Settings.SNAP_ASSIST && + this._customRulesManager.isSnapAssistEnabled(window) + ) { this._snapAssist.onMovingWindow( window, currPointerPos, @@ -962,7 +965,10 @@ export class TilingManager { (extWin as ExtendedWindow).assignedTile ) tiledWindows.push(extWin as ExtendedWindow); - else nontiledWindows.push(extWin); + else if ( + this._customRulesManager.isWindowSuggestionsEnabled(extWin) + ) + nontiledWindows.push(extWin); }); if (nontiledWindows.length === 0) return; @@ -1321,7 +1327,8 @@ export class TilingManager { !window.maximizedHorizontally && !window.maximizedVertically && window.get_transient_for() === null && - !window.is_attached_dialog() + !window.is_attached_dialog() && + this._customRulesManager.isAutoTilingEnabled(window) ) this._easeWindowRectFromTile(vacantTile, window, true); diff --git a/src/extension.ts b/src/extension.ts index a90dfb3d..1d678218 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -157,7 +157,7 @@ export default class TilingShellExtension extends Extension { this._setupSignals(); } - this._resizingManager = new ResizingManager(); + this._resizingManager = new ResizingManager(this._customRulesManager); this._resizingManager.enable(); if (this._windowBorderManager) this._windowBorderManager.destroy(); diff --git a/src/settings/settings.ts b/src/settings/settings.ts index 07ad703c..1471e514 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -680,12 +680,12 @@ export default class Settings { static get_application_custom_rules(): Array<{ name: string; wmClass: string; - customBorder: boolean; // ✅ - autoTiling: boolean; // ✅ + customBorder: boolean; + autoTiling: boolean; snapAssist: boolean; windowSuggestions: boolean; resizeComplementing: boolean; - spanMultipleTiles: boolean; // ✅ + spanMultipleTiles: boolean; }> { try { const json = get_string(Settings.KEY_APPLICATION_CUSTOMRULES); From d8e29a0aade2d2744b8bcab2fb755aca97987737 Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Mon, 22 Dec 2025 21:34:15 -0300 Subject: [PATCH 15/35] feat: enhance CustomRulesManager with fullscreen default rule and refactor application config --- src/components/customRulesManager.ts | 48 ++++-- src/prefs.ts | 228 ++++++++++++++++++--------- src/settings/settings.ts | 15 +- 3 files changed, 193 insertions(+), 98 deletions(-) diff --git a/src/components/customRulesManager.ts b/src/components/customRulesManager.ts index 7c24132b..48d8c125 100644 --- a/src/components/customRulesManager.ts +++ b/src/components/customRulesManager.ts @@ -6,15 +6,19 @@ import Settings from '@settings/settings'; const debug = logger('CustomRulesManager'); -export interface CustomRulesByApp { - name: string; - wmClass: string; +export type CustomRulesApplicationConfig = { customBorder: boolean; autoTiling: boolean; snapAssist: boolean; windowSuggestions: boolean; resizeComplementing: boolean; spanMultipleTiles: boolean; +}; + +export interface CustomRulesByApp { + name: string; + wmClass: string; + ruleConfig?: CustomRulesApplicationConfig; } @registerGObjectClass @@ -61,6 +65,29 @@ export class CustomRulesManager extends GObject.Object { this.emit('customRules-changed'); } + /** + * Get the default rule for fullscreen applications + * @returns The default rule with all features disabled + */ + private _getFullscreenDefaultRule(): CustomRulesByApp { + return ( + this._customRules.find( + (entry) => entry.wmClass.toLowerCase() === 'fullscreen', + ) || { + name: 'Fullscreen Applications', + wmClass: 'fullscreen', + ruleConfig: { + customBorder: false, + autoTiling: false, + snapAssist: false, + windowSuggestions: false, + resizeComplementing: false, + spanMultipleTiles: false, + }, + } + ); + } + /** * Get the customRules entry for a window by its WM class * @param window The window to check @@ -69,6 +96,9 @@ export class CustomRulesManager extends GObject.Object { private _getCustomRulesEntry( window: Meta.Window, ): CustomRulesByApp | undefined { + // Check if the window is fullscreen first - apply default rule + if (window.is_fullscreen()) return this._getFullscreenDefaultRule(); + const wmClass = window.get_wm_class(); if (!wmClass) return undefined; @@ -86,7 +116,7 @@ export class CustomRulesManager extends GObject.Object { const entry = this._getCustomRulesEntry(window); if (!entry) return true; - return entry.customBorder; + return entry.ruleConfig?.customBorder ?? true; } /** @@ -98,7 +128,7 @@ export class CustomRulesManager extends GObject.Object { const entry = this._getCustomRulesEntry(window); if (!entry) return true; - return entry.autoTiling; + return entry.ruleConfig?.autoTiling ?? true; } /** @@ -110,7 +140,7 @@ export class CustomRulesManager extends GObject.Object { const entry = this._getCustomRulesEntry(window); if (!entry) return true; - return entry.snapAssist; + return entry.ruleConfig?.snapAssist ?? true; } /** @@ -122,7 +152,7 @@ export class CustomRulesManager extends GObject.Object { const entry = this._getCustomRulesEntry(window); if (!entry) return true; - return entry.windowSuggestions; + return entry.ruleConfig?.windowSuggestions ?? true; } /** @@ -134,7 +164,7 @@ export class CustomRulesManager extends GObject.Object { const entry = this._getCustomRulesEntry(window); if (!entry) return true; - return entry.resizeComplementing; + return entry.ruleConfig?.resizeComplementing ?? true; } /** @@ -146,7 +176,7 @@ export class CustomRulesManager extends GObject.Object { const entry = this._getCustomRulesEntry(window); if (!entry) return true; - return entry.spanMultipleTiles; + return entry.ruleConfig?.spanMultipleTiles ?? true; } /** diff --git a/src/prefs.ts b/src/prefs.ts index 71f2f09d..a59ebd64 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -29,6 +29,7 @@ import SettingsExport from './settings/settingsExport'; import { gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; // @ts-expect-error "Module exists" import * as Config from 'resource:///org/gnome/Shell/Extensions/js/misc/config.js'; +import { CustomRulesApplicationConfig } from '@components/customRulesManager'; const debug = logger('prefs'); const RESOURCES_PREFIX = "/org/gnome/Shell/Extensions/tilingshell"; // must match the prefix in resources.gresources.xml @@ -433,13 +434,17 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference return { name: row.get_title(), wmClass, - customBorder: switches.customBorder.get_active(), - autoTiling: switches.autoTiling.get_active(), - snapAssist: switches.snapAssist.get_active(), - windowSuggestions: switches.windowSuggestions.get_active(), - resizeComplementing: - switches.resizeComplementing.get_active(), - spanMultipleTiles: switches.spanMultipleTiles.get_active(), + ruleConfig: { + customBorder: switches.customBorder.get_active(), + autoTiling: switches.autoTiling.get_active(), + snapAssist: switches.snapAssist.get_active(), + windowSuggestions: + switches.windowSuggestions.get_active(), + resizeComplementing: + switches.resizeComplementing.get_active(), + spanMultipleTiles: + switches.spanMultipleTiles.get_active(), + }, }; }); Settings.save_application_custom_rules(customRules); @@ -449,29 +454,49 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference const createCustomRulesApplicationRow = ( appName: string, wmClass: string, - customBorder = true, - autoTiling = true, - snapAssist = true, - windowSuggestions = true, - resizeComplementing = true, - spanMultipleTiles = true, + config: CustomRulesApplicationConfig = { + customBorder: true, + autoTiling: true, + snapAssist: true, + windowSuggestions: true, + resizeComplementing: true, + spanMultipleTiles: true, + }, + isDefault = false, ) => { + const ruleConfig = Object.assign( + { + customBorder: true, + autoTiling: true, + snapAssist: true, + windowSuggestions: true, + resizeComplementing: true, + spanMultipleTiles: true, + }, + config, + ); + const appRow = new Adw.ExpanderRow({ title: appName, - subtitle: `WM Class: ${wmClass}`, + subtitle: isDefault + ? _('Default rule (cannot be deleted)') + : `WM Class: ${wmClass}`, }); - existingWmClasses.add(wmClass.toLowerCase()); + if (!isDefault) existingWmClasses.add(wmClass.toLowerCase()); // Custom border toggle const customBorderSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: customBorder, + active: ruleConfig.customBorder, + sensitive: !isDefault, }); - customBorderSwitch.connect('notify::active', () => - saveCustomRules(), - ); + if (!isDefault) { + customBorderSwitch.connect('notify::active', () => + saveCustomRules(), + ); + } const customBorderRow = new Adw.ActionRow({ title: _('Custom border'), subtitle: _('Show custom border for this application'), @@ -484,9 +509,14 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference const autoTilingSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: autoTiling, + active: ruleConfig.autoTiling, + sensitive: !isDefault, }); - autoTilingSwitch.connect('notify::active', () => saveCustomRules()); + if (!isDefault) { + autoTilingSwitch.connect('notify::active', () => + saveCustomRules(), + ); + } const appAutoTilingRow = new Adw.ActionRow({ title: _('Auto-tiling'), subtitle: _( @@ -501,9 +531,14 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference const snapAssistSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: snapAssist, + active: ruleConfig.snapAssist, + sensitive: !isDefault, }); - snapAssistSwitch.connect('notify::active', () => saveCustomRules()); + if (!isDefault) { + snapAssistSwitch.connect('notify::active', () => + saveCustomRules(), + ); + } const appSnapAssistRow = new Adw.ActionRow({ title: _('Snap assistant'), subtitle: _('Enable snap assistant for this application'), @@ -516,11 +551,14 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference const windowSuggestionsSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: windowSuggestions, + active: ruleConfig.windowSuggestions, + sensitive: !isDefault, }); - windowSuggestionsSwitch.connect('notify::active', () => - saveCustomRules(), - ); + if (!isDefault) { + windowSuggestionsSwitch.connect('notify::active', () => + saveCustomRules(), + ); + } const appWindowSuggestionsRow = new Adw.ActionRow({ title: _('Window suggestions'), subtitle: _( @@ -535,11 +573,14 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference const resizeComplementingSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: resizeComplementing, + active: ruleConfig.resizeComplementing, + sensitive: !isDefault, }); - resizeComplementingSwitch.connect('notify::active', () => - saveCustomRules(), - ); + if (!isDefault) { + resizeComplementingSwitch.connect('notify::active', () => + saveCustomRules(), + ); + } const appResizeComplementingRow = new Adw.ActionRow({ title: _('Resize complementing windows'), subtitle: _( @@ -554,11 +595,14 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference const spanMultipleTilesSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: spanMultipleTiles, + active: ruleConfig.spanMultipleTiles, + sensitive: !isDefault, }); - spanMultipleTilesSwitch.connect('notify::active', () => - saveCustomRules(), - ); + if (!isDefault) { + spanMultipleTilesSwitch.connect('notify::active', () => + saveCustomRules(), + ); + } const appSpanMultipleTilesRow = new Adw.ActionRow({ title: _('Span multiple tiles'), subtitle: _('Allow this application to span multiple tiles'), @@ -567,19 +611,21 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference appSpanMultipleTilesRow.add_suffix(spanMultipleTilesSwitch); appRow.add_row(appSpanMultipleTilesRow); - // Store row with switch references - const rowData = { - row: appRow, - switches: { - customBorder: customBorderSwitch, - autoTiling: autoTilingSwitch, - snapAssist: snapAssistSwitch, - windowSuggestions: windowSuggestionsSwitch, - resizeComplementing: resizeComplementingSwitch, - spanMultipleTiles: spanMultipleTilesSwitch, - }, - }; - applicationRows.push(rowData); + // Store row with switch references (only for custom rules) + if (!isDefault) { + const rowData = { + row: appRow, + switches: { + customBorder: customBorderSwitch, + autoTiling: autoTilingSwitch, + snapAssist: snapAssistSwitch, + windowSuggestions: windowSuggestionsSwitch, + resizeComplementing: resizeComplementingSwitch, + spanMultipleTiles: spanMultipleTilesSwitch, + }, + }; + applicationRows.push(rowData); + } // Implement accordion behavior: collapse others when this one expands appRow.connect('notify::enable-expansion', () => { @@ -590,46 +636,74 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference } }); - // Delete button - const deleteButton = new Gtk.Button({ - label: _('Delete'), - css_classes: ['destructive-action'], - halign: Gtk.Align.CENTER, - margin_top: 12, - margin_bottom: 6, - }); - deleteButton.connect('clicked', () => { - existingWmClasses.delete(wmClass.toLowerCase()); - // Remove from array - const index = applicationRows.findIndex( - (item) => item.row === appRow, + // Delete button or info row + if (isDefault) { + const infoRow = new Adw.ActionRow({ + title: _('This is a default rule'), + subtitle: _( + `All features are disabled for ${appName} by default`, + ), + activatable: false, + }); + infoRow.add_prefix( + new Gtk.Image({ + icon_name: 'dialog-information-symbolic', + valign: Gtk.Align.CENTER, + }), ); - if (index > -1) applicationRows.splice(index, 1); - - customRulesGroup.remove(appRow); - saveCustomRules(); - }); - const deleteRow = new Adw.ActionRow({ - activatable: false, - }); - deleteRow.set_child(deleteButton); - appRow.add_row(deleteRow); + appRow.add_row(infoRow); + } else { + const deleteButton = new Gtk.Button({ + label: _('Delete'), + css_classes: ['destructive-action'], + halign: Gtk.Align.CENTER, + margin_top: 12, + margin_bottom: 6, + }); + deleteButton.connect('clicked', () => { + existingWmClasses.delete(wmClass.toLowerCase()); + // Remove from array + const index = applicationRows.findIndex( + (item) => item.row === appRow, + ); + if (index > -1) applicationRows.splice(index, 1); + + customRulesGroup.remove(appRow); + saveCustomRules(); + }); + const deleteRow = new Adw.ActionRow({ + activatable: false, + }); + deleteRow.set_child(deleteButton); + appRow.add_row(deleteRow); + } return appRow; }; + // Add fullscreen default rule first (non-deletable) + const fullscreenDefaultRow = createCustomRulesApplicationRow( + _('Fullscreen Applications'), + 'fullscreen', + { + customBorder: false, + autoTiling: false, + snapAssist: false, + windowSuggestions: false, + resizeComplementing: false, + spanMultipleTiles: false, + }, + true, // isDefault + ); + customRulesGroup.add(fullscreenDefaultRow); + // Load customRules from settings const savedCustomRules = Settings.get_application_custom_rules(); savedCustomRules.forEach((app) => { const appRow = createCustomRulesApplicationRow( app.name, app.wmClass, - app.customBorder, - app.autoTiling, - app.snapAssist, - app.windowSuggestions, - app.resizeComplementing, - app.spanMultipleTiles, + app.ruleConfig, ); customRulesGroup.add(appRow); }); diff --git a/src/settings/settings.ts b/src/settings/settings.ts index 1471e514..6311c6cd 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -1,6 +1,7 @@ import { Gio, GObject, GLib } from '../gi/shared'; import Layout from '../components/layout/Layout'; import Tile from '../components/layout/Tile'; +import { CustomRulesApplicationConfig } from '@components/customRulesManager'; export enum ActivationKey { NONE = -1, @@ -680,12 +681,7 @@ export default class Settings { static get_application_custom_rules(): Array<{ name: string; wmClass: string; - customBorder: boolean; - autoTiling: boolean; - snapAssist: boolean; - windowSuggestions: boolean; - resizeComplementing: boolean; - spanMultipleTiles: boolean; + ruleConfig?: CustomRulesApplicationConfig; }> { try { const json = get_string(Settings.KEY_APPLICATION_CUSTOMRULES); @@ -700,12 +696,7 @@ export default class Settings { customRules: Array<{ name: string; wmClass: string; - customBorder: boolean; - autoTiling: boolean; - snapAssist: boolean; - windowSuggestions: boolean; - resizeComplementing: boolean; - spanMultipleTiles: boolean; + ruleConfig?: CustomRulesApplicationConfig; }>, ) { set_string( From a82c2423a8e81da9fd611d546eec2f5ad297f41d Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Mon, 22 Dec 2025 21:35:26 -0300 Subject: [PATCH 16/35] refact: rename CustomRulesApplicationConfig to ConfigRules and update references --- src/components/customRulesManager.ts | 14 +++++++------- src/prefs.ts | 4 ++-- src/settings/settings.ts | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/components/customRulesManager.ts b/src/components/customRulesManager.ts index 48d8c125..559e77af 100644 --- a/src/components/customRulesManager.ts +++ b/src/components/customRulesManager.ts @@ -6,7 +6,7 @@ import Settings from '@settings/settings'; const debug = logger('CustomRulesManager'); -export type CustomRulesApplicationConfig = { +export type ConfigRules = { customBorder: boolean; autoTiling: boolean; snapAssist: boolean; @@ -15,10 +15,10 @@ export type CustomRulesApplicationConfig = { spanMultipleTiles: boolean; }; -export interface CustomRulesByApp { +export interface CustomApplicationRules { name: string; wmClass: string; - ruleConfig?: CustomRulesApplicationConfig; + ruleConfig?: ConfigRules; } @registerGObjectClass @@ -31,7 +31,7 @@ export class CustomRulesManager extends GObject.Object { }; private readonly _signals: SignalHandling; - private _customRules: CustomRulesByApp[]; + private _customRules: CustomApplicationRules[]; constructor() { super(); @@ -69,7 +69,7 @@ export class CustomRulesManager extends GObject.Object { * Get the default rule for fullscreen applications * @returns The default rule with all features disabled */ - private _getFullscreenDefaultRule(): CustomRulesByApp { + private _getFullscreenDefaultRule(): CustomApplicationRules { return ( this._customRules.find( (entry) => entry.wmClass.toLowerCase() === 'fullscreen', @@ -95,7 +95,7 @@ export class CustomRulesManager extends GObject.Object { */ private _getCustomRulesEntry( window: Meta.Window, - ): CustomRulesByApp | undefined { + ): CustomApplicationRules | undefined { // Check if the window is fullscreen first - apply default rule if (window.is_fullscreen()) return this._getFullscreenDefaultRule(); @@ -192,7 +192,7 @@ export class CustomRulesManager extends GObject.Object { * Get all customRules entries * @returns Array of customRules applications */ - public getCustomRules(): CustomRulesByApp[] { + public getCustomRules(): CustomApplicationRules[] { return [...this._customRules]; } } diff --git a/src/prefs.ts b/src/prefs.ts index a59ebd64..18f918cd 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -29,7 +29,7 @@ import SettingsExport from './settings/settingsExport'; import { gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; // @ts-expect-error "Module exists" import * as Config from 'resource:///org/gnome/Shell/Extensions/js/misc/config.js'; -import { CustomRulesApplicationConfig } from '@components/customRulesManager'; +import { ConfigRules } from '@components/customRulesManager'; const debug = logger('prefs'); const RESOURCES_PREFIX = "/org/gnome/Shell/Extensions/tilingshell"; // must match the prefix in resources.gresources.xml @@ -454,7 +454,7 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference const createCustomRulesApplicationRow = ( appName: string, wmClass: string, - config: CustomRulesApplicationConfig = { + config: ConfigRules = { customBorder: true, autoTiling: true, snapAssist: true, diff --git a/src/settings/settings.ts b/src/settings/settings.ts index 6311c6cd..fa02b8b5 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -1,7 +1,7 @@ import { Gio, GObject, GLib } from '../gi/shared'; import Layout from '../components/layout/Layout'; import Tile from '../components/layout/Tile'; -import { CustomRulesApplicationConfig } from '@components/customRulesManager'; +import { ConfigRules } from '@components/customRulesManager'; export enum ActivationKey { NONE = -1, @@ -681,7 +681,7 @@ export default class Settings { static get_application_custom_rules(): Array<{ name: string; wmClass: string; - ruleConfig?: CustomRulesApplicationConfig; + ruleConfig?: ConfigRules; }> { try { const json = get_string(Settings.KEY_APPLICATION_CUSTOMRULES); @@ -696,7 +696,7 @@ export default class Settings { customRules: Array<{ name: string; wmClass: string; - ruleConfig?: CustomRulesApplicationConfig; + ruleConfig?: ConfigRules; }>, ) { set_string( From 5e9e20cb746b9b2d73ed3c1097eec2a1698c5745 Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Mon, 22 Dec 2025 21:59:36 -0300 Subject: [PATCH 17/35] refact: remove broken accordion behavior implementation from TilingShellExtensionPreferences --- src/prefs.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/prefs.ts b/src/prefs.ts index 18f918cd..cfd89098 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -627,15 +627,6 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference applicationRows.push(rowData); } - // Implement accordion behavior: collapse others when this one expands - appRow.connect('notify::enable-expansion', () => { - if (appRow.get_enable_expansion()) { - applicationRows.forEach(({ row }) => { - if (row !== appRow) row.set_enable_expansion(false); - }); - } - }); - // Delete button or info row if (isDefault) { const infoRow = new Adw.ActionRow({ From 16f2ae53102d222a99c01759fe6593e3cc63e2b8 Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Mon, 22 Dec 2025 22:08:28 -0300 Subject: [PATCH 18/35] refact: create a separated file for managing the custom application rule preferences --- src/components/customApplicationRulePrefs.ts | 511 +++++++++++++++++++ src/prefs.ts | 470 +---------------- 2 files changed, 514 insertions(+), 467 deletions(-) create mode 100644 src/components/customApplicationRulePrefs.ts diff --git a/src/components/customApplicationRulePrefs.ts b/src/components/customApplicationRulePrefs.ts new file mode 100644 index 00000000..d3da45c2 --- /dev/null +++ b/src/components/customApplicationRulePrefs.ts @@ -0,0 +1,511 @@ +import { Gtk, Adw } from '@gi.prefs'; +import Settings from '@settings/settings'; +import { logger } from '@utils/logger'; +import { gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; +import { ConfigRules } from './customRulesManager'; + +const debug = logger('customApplicationRulePrefs'); + +interface ApplicationRowData { + row: Adw.ExpanderRow; + switches: { + customBorder: Gtk.Switch; + autoTiling: Gtk.Switch; + snapAssist: Gtk.Switch; + windowSuggestions: Gtk.Switch; + resizeComplementing: Gtk.Switch; + spanMultipleTiles: Gtk.Switch; + }; +} + +export class CustomApplicationRulePrefs { + private existingWmClasses: Set = new Set(); + private applicationRows: ApplicationRowData[] = []; + private customRulesGroup!: Adw.PreferencesGroup; + + /** + * Build the custom rules preferences group + */ + buildCustomRulesGroup( + parentWindow: Adw.PreferencesWindow, + ): Adw.PreferencesGroup { + this.customRulesGroup = new Adw.PreferencesGroup({ + title: _('Application Custom Rules'), + description: _( + 'Configure which features are enabled for specific applications', + ), + }); + + // Add fullscreen default rule first (non-deletable) + const fullscreenDefaultRow = this.createCustomRulesApplicationRow( + _('Fullscreen Applications'), + 'fullscreen', + { + customBorder: false, + autoTiling: false, + snapAssist: false, + windowSuggestions: false, + resizeComplementing: false, + spanMultipleTiles: false, + }, + true, // isDefault + ); + this.customRulesGroup.add(fullscreenDefaultRow); + + // Load customRules from settings + const savedCustomRules = Settings.get_application_custom_rules(); + savedCustomRules.forEach((app) => { + const appRow = this.createCustomRulesApplicationRow( + app.name, + app.wmClass, + app.ruleConfig, + ); + this.customRulesGroup.add(appRow); + }); + + // Add button to add new application to customRules + const addAppBtn = this.buildButtonRow( + _('Add Application'), + _('Add application to customRules'), + _('Configure features for a new application'), + () => { + this.showAddApplicationDialog( + parentWindow, + (appName, wmClass) => { + debug(`Adding application: ${appName} (${wmClass})`); + const newAppRow = this.createCustomRulesApplicationRow( + appName, + wmClass, + ); + // Insert before the "Add Application" button + // Remove button, add new row, then re-add button to keep it at the bottom + this.customRulesGroup.remove(addAppBtn); + this.customRulesGroup.add(newAppRow); + this.customRulesGroup.add(addAppBtn); + this.saveCustomRules(); + }, + ); + }, + ); + this.customRulesGroup.add(addAppBtn); + + return this.customRulesGroup; + } + + /** + * Save custom rules to settings + */ + private saveCustomRules(): void { + const customRules = this.applicationRows.map(({ row, switches }) => { + const wmClass = row.get_subtitle().replace('WM Class: ', ''); + return { + name: row.get_title(), + wmClass, + ruleConfig: { + customBorder: switches.customBorder.get_active(), + autoTiling: switches.autoTiling.get_active(), + snapAssist: switches.snapAssist.get_active(), + windowSuggestions: switches.windowSuggestions.get_active(), + resizeComplementing: + switches.resizeComplementing.get_active(), + spanMultipleTiles: switches.spanMultipleTiles.get_active(), + }, + }; + }); + Settings.save_application_custom_rules(customRules); + } + + /** + * Create a custom rules application row + */ + private createCustomRulesApplicationRow( + appName: string, + wmClass: string, + config: ConfigRules = { + customBorder: true, + autoTiling: true, + snapAssist: true, + windowSuggestions: true, + resizeComplementing: true, + spanMultipleTiles: true, + }, + isDefault = false, + ): Adw.ExpanderRow { + const ruleConfig = Object.assign( + { + customBorder: true, + autoTiling: true, + snapAssist: true, + windowSuggestions: true, + resizeComplementing: true, + spanMultipleTiles: true, + }, + config, + ); + + const appRow = new Adw.ExpanderRow({ + title: appName, + subtitle: isDefault + ? _('Default rule (cannot be deleted)') + : `WM Class: ${wmClass}`, + }); + + if (!isDefault) this.existingWmClasses.add(wmClass.toLowerCase()); + + // Custom border toggle + const customBorderSwitch = new Gtk.Switch({ + vexpand: false, + valign: Gtk.Align.CENTER, + active: ruleConfig.customBorder, + sensitive: !isDefault, + }); + if (!isDefault) { + customBorderSwitch.connect('notify::active', () => + this.saveCustomRules(), + ); + } + const customBorderRow = new Adw.ActionRow({ + title: _('Custom border'), + subtitle: _('Show custom border for this application'), + activatableWidget: customBorderSwitch, + }); + customBorderRow.add_suffix(customBorderSwitch); + appRow.add_row(customBorderRow); + + // Auto-tiling toggle + const autoTilingSwitch = new Gtk.Switch({ + vexpand: false, + valign: Gtk.Align.CENTER, + active: ruleConfig.autoTiling, + sensitive: !isDefault, + }); + if (!isDefault) { + autoTilingSwitch.connect('notify::active', () => + this.saveCustomRules(), + ); + } + const appAutoTilingRow = new Adw.ActionRow({ + title: _('Auto-tiling'), + subtitle: _('Automatically tile new windows for this application'), + activatableWidget: autoTilingSwitch, + }); + appAutoTilingRow.add_suffix(autoTilingSwitch); + appRow.add_row(appAutoTilingRow); + + // Snap assistant toggle + const snapAssistSwitch = new Gtk.Switch({ + vexpand: false, + valign: Gtk.Align.CENTER, + active: ruleConfig.snapAssist, + sensitive: !isDefault, + }); + if (!isDefault) { + snapAssistSwitch.connect('notify::active', () => + this.saveCustomRules(), + ); + } + const appSnapAssistRow = new Adw.ActionRow({ + title: _('Snap assistant'), + subtitle: _('Enable snap assistant for this application'), + activatableWidget: snapAssistSwitch, + }); + appSnapAssistRow.add_suffix(snapAssistSwitch); + appRow.add_row(appSnapAssistRow); + + // Window suggestions toggle + const windowSuggestionsSwitch = new Gtk.Switch({ + vexpand: false, + valign: Gtk.Align.CENTER, + active: ruleConfig.windowSuggestions, + sensitive: !isDefault, + }); + if (!isDefault) { + windowSuggestionsSwitch.connect('notify::active', () => + this.saveCustomRules(), + ); + } + const appWindowSuggestionsRow = new Adw.ActionRow({ + title: _('Window suggestions'), + subtitle: _( + "Suggest this application's windows to fill empty tiles", + ), + activatableWidget: windowSuggestionsSwitch, + }); + appWindowSuggestionsRow.add_suffix(windowSuggestionsSwitch); + appRow.add_row(appWindowSuggestionsRow); + + // Resize complementing windows toggle + const resizeComplementingSwitch = new Gtk.Switch({ + vexpand: false, + valign: Gtk.Align.CENTER, + active: ruleConfig.resizeComplementing, + sensitive: !isDefault, + }); + if (!isDefault) { + resizeComplementingSwitch.connect('notify::active', () => + this.saveCustomRules(), + ); + } + const appResizeComplementingRow = new Adw.ActionRow({ + title: _('Resize complementing windows'), + subtitle: _( + 'Auto-resize nearby windows when this window is resized', + ), + activatableWidget: resizeComplementingSwitch, + }); + appResizeComplementingRow.add_suffix(resizeComplementingSwitch); + appRow.add_row(appResizeComplementingRow); + + // Span multiple tiles toggle + const spanMultipleTilesSwitch = new Gtk.Switch({ + vexpand: false, + valign: Gtk.Align.CENTER, + active: ruleConfig.spanMultipleTiles, + sensitive: !isDefault, + }); + if (!isDefault) { + spanMultipleTilesSwitch.connect('notify::active', () => + this.saveCustomRules(), + ); + } + const appSpanMultipleTilesRow = new Adw.ActionRow({ + title: _('Span multiple tiles'), + subtitle: _('Allow this application to span multiple tiles'), + activatableWidget: spanMultipleTilesSwitch, + }); + appSpanMultipleTilesRow.add_suffix(spanMultipleTilesSwitch); + appRow.add_row(appSpanMultipleTilesRow); + + // Store row with switch references (only for custom rules) + if (!isDefault) { + const rowData: ApplicationRowData = { + row: appRow, + switches: { + customBorder: customBorderSwitch, + autoTiling: autoTilingSwitch, + snapAssist: snapAssistSwitch, + windowSuggestions: windowSuggestionsSwitch, + resizeComplementing: resizeComplementingSwitch, + spanMultipleTiles: spanMultipleTilesSwitch, + }, + }; + this.applicationRows.push(rowData); + } + + // Delete button or info row + if (isDefault) { + const infoRow = new Adw.ActionRow({ + title: _('This is a default rule'), + subtitle: _( + `All features are disabled for ${appName} by default`, + ), + activatable: false, + }); + infoRow.add_prefix( + new Gtk.Image({ + icon_name: 'dialog-information-symbolic', + valign: Gtk.Align.CENTER, + }), + ); + appRow.add_row(infoRow); + } else { + const deleteButton = new Gtk.Button({ + label: _('Delete'), + css_classes: ['destructive-action'], + halign: Gtk.Align.CENTER, + margin_top: 12, + margin_bottom: 6, + }); + deleteButton.connect('clicked', () => { + this.existingWmClasses.delete(wmClass.toLowerCase()); + // Remove from array + const index = this.applicationRows.findIndex( + (item) => item.row === appRow, + ); + if (index > -1) this.applicationRows.splice(index, 1); + + this.customRulesGroup.remove(appRow); + this.saveCustomRules(); + }); + const deleteRow = new Adw.ActionRow({ + activatable: false, + }); + deleteRow.set_child(deleteButton); + appRow.add_row(deleteRow); + } + + return appRow; + } + + /** + * Show dialog for adding a new application + */ + private showAddApplicationDialog( + parentWindow: Adw.PreferencesWindow, + onAdd: (appName: string, wmClass: string) => void, + ): void { + // Create dialog window + const dialog = new Adw.Window({ + modal: true, + hide_on_close: true, + transient_for: parentWindow, + default_width: 400, + default_height: 300, + }); + + // Create header bar + const headerBar = new Adw.HeaderBar(); + dialog.set_title(_('Add Application')); + + // Create content + const toolbarView = new Adw.ToolbarView(); + toolbarView.add_top_bar(headerBar); + + const contentBox = new Gtk.Box({ + orientation: Gtk.Orientation.VERTICAL, + margin_top: 24, + margin_bottom: 24, + margin_start: 24, + margin_end: 24, + spacing: 18, + }); + + // Application name entry + const nameEntry = new Gtk.Entry({ + placeholder_text: _('Application Name (e.g., Firefox)'), + hexpand: true, + }); + const nameRow = new Gtk.Box({ + orientation: Gtk.Orientation.VERTICAL, + spacing: 6, + }); + nameRow.append( + new Gtk.Label({ + label: _('Application Name'), + halign: Gtk.Align.START, + }), + ); + nameRow.append(nameEntry); + + // WM Class entry + const wmClassEntry = new Gtk.Entry({ + placeholder_text: _('WM Class (e.g., firefox, gnome-terminal)'), + hexpand: true, + }); + const wmClassRow = new Gtk.Box({ + orientation: Gtk.Orientation.VERTICAL, + spacing: 6, + }); + wmClassRow.append( + new Gtk.Label({ + label: _('WM Class'), + halign: Gtk.Align.START, + }), + ); + wmClassRow.append(wmClassEntry); + + // Error label for duplicate WM Class + const errorLabel = new Gtk.Label({ + label: _('This WM Class already exists in the list'), + wrap: true, + halign: Gtk.Align.START, + css_classes: ['error', 'caption'], + visible: false, + }); + + // Help text + const helpLabel = new Gtk.Label({ + label: _( + 'Tip: You can find the WM Class by running "xprop WM_CLASS" in terminal and clicking the application window.', + ), + wrap: true, + halign: Gtk.Align.START, + css_classes: ['dim-label', 'caption'], + }); + + contentBox.append(nameRow); + contentBox.append(wmClassRow); + contentBox.append(errorLabel); + contentBox.append(helpLabel); + + // Buttons + const buttonBox = new Gtk.Box({ + orientation: Gtk.Orientation.HORIZONTAL, + spacing: 6, + halign: Gtk.Align.END, + margin_top: 12, + }); + + const cancelButton = new Gtk.Button({ + label: _('Cancel'), + }); + cancelButton.connect('clicked', () => { + dialog.close(); + }); + + const addButton = new Gtk.Button({ + label: _('Add'), + css_classes: ['suggested-action'], + }); + addButton.connect('clicked', () => { + const appName = nameEntry.get_text().trim(); + const wmClass = wmClassEntry.get_text().trim(); + + if (appName && wmClass) { + onAdd(appName, wmClass); + dialog.close(); + } + }); + + // Enable/disable add button based on input and validation + const updateAddButton = () => { + const hasName = nameEntry.get_text().trim().length > 0; + const wmClass = wmClassEntry.get_text().trim(); + const hasWmClass = wmClass.length > 0; + const isDuplicate = + hasWmClass && this.existingWmClasses.has(wmClass.toLowerCase()); + + // Show/hide error message + errorLabel.set_visible(isDuplicate); + + // Enable button only if both fields have values and no duplicate + addButton.set_sensitive(hasName && hasWmClass && !isDuplicate); + }; + + nameEntry.connect('changed', updateAddButton); + wmClassEntry.connect('changed', updateAddButton); + updateAddButton(); // Initial state + + buttonBox.append(cancelButton); + buttonBox.append(addButton); + contentBox.append(buttonBox); + + toolbarView.set_content(contentBox); + dialog.set_content(toolbarView); + dialog.present(); + } + + /** + * Build a button row + */ + private buildButtonRow( + label: string, + title: string, + subtitle: string, + onClick: () => void, + styleClass?: string, + ): Adw.ActionRow { + const btn = new Gtk.Button({ + label, + vexpand: false, + valign: Gtk.Align.CENTER, + }); + if (styleClass) btn.add_css_class(styleClass); + btn.connect('clicked', onClick); + + const row = new Adw.ActionRow({ title, subtitle }); + row.add_suffix(btn); + row.set_activatable_widget(btn); + return row; + } +} diff --git a/src/prefs.ts b/src/prefs.ts index cfd89098..bc64c852 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -29,7 +29,7 @@ import SettingsExport from './settings/settingsExport'; import { gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; // @ts-expect-error "Module exists" import * as Config from 'resource:///org/gnome/Shell/Extensions/js/misc/config.js'; -import { ConfigRules } from '@components/customRulesManager'; +import { CustomApplicationRulePrefs } from '@components/customApplicationRulePrefs'; const debug = logger('prefs'); const RESOURCES_PREFIX = "/org/gnome/Shell/Extensions/tilingshell"; // must match the prefix in resources.gresources.xml @@ -404,328 +404,10 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference prefsPage.add(windowsSuggestionsGroup); // Custom Rules section - const customRulesGroup = new Adw.PreferencesGroup({ - title: _('Application Custom Rules'), - description: _( - 'Configure which features are enabled for specific applications', - ), - }); + const customRulesPrefs = new CustomApplicationRulePrefs(); + const customRulesGroup = customRulesPrefs.buildCustomRulesGroup(window); prefsPage.add(customRulesGroup); - // Store WM classes to validate duplicates - const existingWmClasses = new Set(); - // Store all application rows for accordion behavior - const applicationRows: Array<{ - row: Adw.ExpanderRow; - switches: { - customBorder: Gtk.Switch; - autoTiling: Gtk.Switch; - snapAssist: Gtk.Switch; - windowSuggestions: Gtk.Switch; - resizeComplementing: Gtk.Switch; - spanMultipleTiles: Gtk.Switch; - }; - }> = []; - - // Helper function to save customRules to settings - const saveCustomRules = () => { - const customRules = applicationRows.map(({ row, switches }) => { - const wmClass = row.get_subtitle().replace('WM Class: ', ''); - return { - name: row.get_title(), - wmClass, - ruleConfig: { - customBorder: switches.customBorder.get_active(), - autoTiling: switches.autoTiling.get_active(), - snapAssist: switches.snapAssist.get_active(), - windowSuggestions: - switches.windowSuggestions.get_active(), - resizeComplementing: - switches.resizeComplementing.get_active(), - spanMultipleTiles: - switches.spanMultipleTiles.get_active(), - }, - }; - }); - Settings.save_application_custom_rules(customRules); - }; - - // Helper function to create application row - const createCustomRulesApplicationRow = ( - appName: string, - wmClass: string, - config: ConfigRules = { - customBorder: true, - autoTiling: true, - snapAssist: true, - windowSuggestions: true, - resizeComplementing: true, - spanMultipleTiles: true, - }, - isDefault = false, - ) => { - const ruleConfig = Object.assign( - { - customBorder: true, - autoTiling: true, - snapAssist: true, - windowSuggestions: true, - resizeComplementing: true, - spanMultipleTiles: true, - }, - config, - ); - - const appRow = new Adw.ExpanderRow({ - title: appName, - subtitle: isDefault - ? _('Default rule (cannot be deleted)') - : `WM Class: ${wmClass}`, - }); - - if (!isDefault) existingWmClasses.add(wmClass.toLowerCase()); - - // Custom border toggle - const customBorderSwitch = new Gtk.Switch({ - vexpand: false, - valign: Gtk.Align.CENTER, - active: ruleConfig.customBorder, - sensitive: !isDefault, - }); - if (!isDefault) { - customBorderSwitch.connect('notify::active', () => - saveCustomRules(), - ); - } - const customBorderRow = new Adw.ActionRow({ - title: _('Custom border'), - subtitle: _('Show custom border for this application'), - activatableWidget: customBorderSwitch, - }); - customBorderRow.add_suffix(customBorderSwitch); - appRow.add_row(customBorderRow); - - // Auto-tiling toggle - const autoTilingSwitch = new Gtk.Switch({ - vexpand: false, - valign: Gtk.Align.CENTER, - active: ruleConfig.autoTiling, - sensitive: !isDefault, - }); - if (!isDefault) { - autoTilingSwitch.connect('notify::active', () => - saveCustomRules(), - ); - } - const appAutoTilingRow = new Adw.ActionRow({ - title: _('Auto-tiling'), - subtitle: _( - 'Automatically tile new windows for this application', - ), - activatableWidget: autoTilingSwitch, - }); - appAutoTilingRow.add_suffix(autoTilingSwitch); - appRow.add_row(appAutoTilingRow); - - // Snap assistant toggle - const snapAssistSwitch = new Gtk.Switch({ - vexpand: false, - valign: Gtk.Align.CENTER, - active: ruleConfig.snapAssist, - sensitive: !isDefault, - }); - if (!isDefault) { - snapAssistSwitch.connect('notify::active', () => - saveCustomRules(), - ); - } - const appSnapAssistRow = new Adw.ActionRow({ - title: _('Snap assistant'), - subtitle: _('Enable snap assistant for this application'), - activatableWidget: snapAssistSwitch, - }); - appSnapAssistRow.add_suffix(snapAssistSwitch); - appRow.add_row(appSnapAssistRow); - - // Window suggestions toggle - const windowSuggestionsSwitch = new Gtk.Switch({ - vexpand: false, - valign: Gtk.Align.CENTER, - active: ruleConfig.windowSuggestions, - sensitive: !isDefault, - }); - if (!isDefault) { - windowSuggestionsSwitch.connect('notify::active', () => - saveCustomRules(), - ); - } - const appWindowSuggestionsRow = new Adw.ActionRow({ - title: _('Window suggestions'), - subtitle: _( - "Suggest this application's windows to fill empty tiles", - ), - activatableWidget: windowSuggestionsSwitch, - }); - appWindowSuggestionsRow.add_suffix(windowSuggestionsSwitch); - appRow.add_row(appWindowSuggestionsRow); - - // Resize complementing windows toggle - const resizeComplementingSwitch = new Gtk.Switch({ - vexpand: false, - valign: Gtk.Align.CENTER, - active: ruleConfig.resizeComplementing, - sensitive: !isDefault, - }); - if (!isDefault) { - resizeComplementingSwitch.connect('notify::active', () => - saveCustomRules(), - ); - } - const appResizeComplementingRow = new Adw.ActionRow({ - title: _('Resize complementing windows'), - subtitle: _( - 'Auto-resize nearby windows when this window is resized', - ), - activatableWidget: resizeComplementingSwitch, - }); - appResizeComplementingRow.add_suffix(resizeComplementingSwitch); - appRow.add_row(appResizeComplementingRow); - - // Span multiple tiles toggle - const spanMultipleTilesSwitch = new Gtk.Switch({ - vexpand: false, - valign: Gtk.Align.CENTER, - active: ruleConfig.spanMultipleTiles, - sensitive: !isDefault, - }); - if (!isDefault) { - spanMultipleTilesSwitch.connect('notify::active', () => - saveCustomRules(), - ); - } - const appSpanMultipleTilesRow = new Adw.ActionRow({ - title: _('Span multiple tiles'), - subtitle: _('Allow this application to span multiple tiles'), - activatableWidget: spanMultipleTilesSwitch, - }); - appSpanMultipleTilesRow.add_suffix(spanMultipleTilesSwitch); - appRow.add_row(appSpanMultipleTilesRow); - - // Store row with switch references (only for custom rules) - if (!isDefault) { - const rowData = { - row: appRow, - switches: { - customBorder: customBorderSwitch, - autoTiling: autoTilingSwitch, - snapAssist: snapAssistSwitch, - windowSuggestions: windowSuggestionsSwitch, - resizeComplementing: resizeComplementingSwitch, - spanMultipleTiles: spanMultipleTilesSwitch, - }, - }; - applicationRows.push(rowData); - } - - // Delete button or info row - if (isDefault) { - const infoRow = new Adw.ActionRow({ - title: _('This is a default rule'), - subtitle: _( - `All features are disabled for ${appName} by default`, - ), - activatable: false, - }); - infoRow.add_prefix( - new Gtk.Image({ - icon_name: 'dialog-information-symbolic', - valign: Gtk.Align.CENTER, - }), - ); - appRow.add_row(infoRow); - } else { - const deleteButton = new Gtk.Button({ - label: _('Delete'), - css_classes: ['destructive-action'], - halign: Gtk.Align.CENTER, - margin_top: 12, - margin_bottom: 6, - }); - deleteButton.connect('clicked', () => { - existingWmClasses.delete(wmClass.toLowerCase()); - // Remove from array - const index = applicationRows.findIndex( - (item) => item.row === appRow, - ); - if (index > -1) applicationRows.splice(index, 1); - - customRulesGroup.remove(appRow); - saveCustomRules(); - }); - const deleteRow = new Adw.ActionRow({ - activatable: false, - }); - deleteRow.set_child(deleteButton); - appRow.add_row(deleteRow); - } - - return appRow; - }; - - // Add fullscreen default rule first (non-deletable) - const fullscreenDefaultRow = createCustomRulesApplicationRow( - _('Fullscreen Applications'), - 'fullscreen', - { - customBorder: false, - autoTiling: false, - snapAssist: false, - windowSuggestions: false, - resizeComplementing: false, - spanMultipleTiles: false, - }, - true, // isDefault - ); - customRulesGroup.add(fullscreenDefaultRow); - - // Load customRules from settings - const savedCustomRules = Settings.get_application_custom_rules(); - savedCustomRules.forEach((app) => { - const appRow = createCustomRulesApplicationRow( - app.name, - app.wmClass, - app.ruleConfig, - ); - customRulesGroup.add(appRow); - }); - - // Add button to add new application to customRules - const addAppBtn = this._buildButtonRow( - _('Add Application'), - _('Add application to customRules'), - _('Configure features for a new application'), - () => { - this._showAddApplicationDialog( - window, - existingWmClasses, - (appName, wmClass) => { - debug(`Adding application: ${appName} (${wmClass})`); - const newAppRow = createCustomRulesApplicationRow( - appName, - wmClass, - ); - // Insert before the "Add Application" button - // Remove button, add new row, then re-add button to keep it at the bottom - customRulesGroup.remove(addAppBtn); - customRulesGroup.add(newAppRow); - customRulesGroup.add(addAppBtn); - saveCustomRules(); - }, - ); - }, - ); - customRulesGroup.add(addAppBtn); - // Layouts section const layoutsGroup = new Adw.PreferencesGroup({ title: _('Layouts'), @@ -1536,152 +1218,6 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference } } - _showAddApplicationDialog( - parentWindow: Adw.PreferencesWindow, - existingWmClasses: Set, - onAdd: (appName: string, wmClass: string) => void, - ) { - // Create dialog window - const dialog = new Adw.Window({ - modal: true, - hide_on_close: true, - transient_for: parentWindow, - default_width: 400, - default_height: 300, - }); - - // Create header bar - const headerBar = new Adw.HeaderBar(); - dialog.set_title(_('Add Application')); - - // Create content - const toolbarView = new Adw.ToolbarView(); - toolbarView.add_top_bar(headerBar); - - const contentBox = new Gtk.Box({ - orientation: Gtk.Orientation.VERTICAL, - margin_top: 24, - margin_bottom: 24, - margin_start: 24, - margin_end: 24, - spacing: 18, - }); - - // Application name entry - const nameEntry = new Gtk.Entry({ - placeholder_text: _('Application Name (e.g., Firefox)'), - hexpand: true, - }); - const nameRow = new Gtk.Box({ - orientation: Gtk.Orientation.VERTICAL, - spacing: 6, - }); - nameRow.append( - new Gtk.Label({ - label: _('Application Name'), - halign: Gtk.Align.START, - }), - ); - nameRow.append(nameEntry); - - // WM Class entry - const wmClassEntry = new Gtk.Entry({ - placeholder_text: _('WM Class (e.g., firefox, gnome-terminal)'), - hexpand: true, - }); - const wmClassRow = new Gtk.Box({ - orientation: Gtk.Orientation.VERTICAL, - spacing: 6, - }); - wmClassRow.append( - new Gtk.Label({ - label: _('WM Class'), - halign: Gtk.Align.START, - }), - ); - wmClassRow.append(wmClassEntry); - - // Error label for duplicate WM Class - const errorLabel = new Gtk.Label({ - label: _('This WM Class already exists in the list'), - wrap: true, - halign: Gtk.Align.START, - css_classes: ['error', 'caption'], - visible: false, - }); - - // Help text - const helpLabel = new Gtk.Label({ - label: _( - 'Tip: You can find the WM Class by running "xprop WM_CLASS" in terminal and clicking the application window.', - ), - wrap: true, - halign: Gtk.Align.START, - css_classes: ['dim-label', 'caption'], - }); - - contentBox.append(nameRow); - contentBox.append(wmClassRow); - contentBox.append(errorLabel); - contentBox.append(helpLabel); - - // Buttons - const buttonBox = new Gtk.Box({ - orientation: Gtk.Orientation.HORIZONTAL, - spacing: 6, - halign: Gtk.Align.END, - margin_top: 12, - }); - - const cancelButton = new Gtk.Button({ - label: _('Cancel'), - }); - cancelButton.connect('clicked', () => { - dialog.close(); - }); - - const addButton = new Gtk.Button({ - label: _('Add'), - css_classes: ['suggested-action'], - }); - addButton.connect('clicked', () => { - const appName = nameEntry.get_text().trim(); - const wmClass = wmClassEntry.get_text().trim(); - - if (appName && wmClass) { - onAdd(appName, wmClass); - dialog.close(); - } - }); - - // Enable/disable add button based on input and validation - const updateAddButton = () => { - const hasName = nameEntry.get_text().trim().length > 0; - const wmClass = wmClassEntry.get_text().trim(); - const hasWmClass = wmClass.length > 0; - const isDuplicate = - hasWmClass && existingWmClasses.has(wmClass.toLowerCase()); - - // Show/hide error message - errorLabel.set_visible(isDuplicate); - - // Enable button only if both fields have values and no duplicate - addButton.set_sensitive(hasName && hasWmClass && !isDuplicate); - }; - - nameEntry.connect('changed', updateAddButton); - wmClassEntry.connect('changed', updateAddButton); - updateAddButton(); // Initial state - - buttonBox.append(cancelButton); - buttonBox.append(addButton); - contentBox.append(buttonBox); - - toolbarView.set_content(contentBox); - dialog.set_content(toolbarView); - dialog.present(); - } - _buildActivationKeysDropDown( initialValue: ActivationKey, onChange: (_: ActivationKey) => void, From 5827567b11a5ac44762a55bb04a0771ad7d7042a Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Tue, 23 Dec 2025 18:57:27 -0300 Subject: [PATCH 19/35] refact: migrate from a collapse row to a modal, with better grouping for rules --- src/components/customApplicationRulePrefs.ts | 350 ++++++++++++------- 1 file changed, 219 insertions(+), 131 deletions(-) diff --git a/src/components/customApplicationRulePrefs.ts b/src/components/customApplicationRulePrefs.ts index d3da45c2..0dd1ae0a 100644 --- a/src/components/customApplicationRulePrefs.ts +++ b/src/components/customApplicationRulePrefs.ts @@ -7,15 +7,9 @@ import { ConfigRules } from './customRulesManager'; const debug = logger('customApplicationRulePrefs'); interface ApplicationRowData { - row: Adw.ExpanderRow; - switches: { - customBorder: Gtk.Switch; - autoTiling: Gtk.Switch; - snapAssist: Gtk.Switch; - windowSuggestions: Gtk.Switch; - resizeComplementing: Gtk.Switch; - spanMultipleTiles: Gtk.Switch; - }; + row: Adw.ActionRow; + wmClass: string; + config: ConfigRules; } export class CustomApplicationRulePrefs { @@ -96,22 +90,15 @@ export class CustomApplicationRulePrefs { * Save custom rules to settings */ private saveCustomRules(): void { - const customRules = this.applicationRows.map(({ row, switches }) => { - const wmClass = row.get_subtitle().replace('WM Class: ', ''); - return { - name: row.get_title(), - wmClass, - ruleConfig: { - customBorder: switches.customBorder.get_active(), - autoTiling: switches.autoTiling.get_active(), - snapAssist: switches.snapAssist.get_active(), - windowSuggestions: switches.windowSuggestions.get_active(), - resizeComplementing: - switches.resizeComplementing.get_active(), - spanMultipleTiles: switches.spanMultipleTiles.get_active(), - }, - }; - }); + const customRules = this.applicationRows.map( + ({ row, wmClass, config }) => { + return { + name: row.get_title(), + wmClass, + ruleConfig: config, + }; + }, + ); Settings.save_application_custom_rules(customRules); } @@ -130,7 +117,7 @@ export class CustomApplicationRulePrefs { spanMultipleTiles: true, }, isDefault = false, - ): Adw.ExpanderRow { + ): Adw.ActionRow { const ruleConfig = Object.assign( { customBorder: true, @@ -143,26 +130,113 @@ export class CustomApplicationRulePrefs { config, ); - const appRow = new Adw.ExpanderRow({ + const appRow = new Adw.ActionRow({ title: appName, subtitle: isDefault ? _('Default rule (cannot be deleted)') : `WM Class: ${wmClass}`, + activatable: true, }); + // Add chevron icon to indicate it opens a window + appRow.add_suffix( + new Gtk.Image({ + icon_name: 'go-next-symbolic', + valign: Gtk.Align.CENTER, + }), + ); + if (!isDefault) this.existingWmClasses.add(wmClass.toLowerCase()); - // Custom border toggle + // Store row with config (only for custom rules) + if (!isDefault) { + const rowData: ApplicationRowData = { + row: appRow, + wmClass, + config: ruleConfig, + }; + this.applicationRows.push(rowData); + } + + // Open rules window when row is clicked + appRow.connect('activated', () => { + this.showRulesWindow(appName, wmClass, ruleConfig, isDefault); + }); + + return appRow; + } + + /** + * Show window with grouped rules for an application + */ + private showRulesWindow( + appName: string, + wmClass: string, + config: ConfigRules, + isDefault: boolean, + ): void { + // Create dialog window + const rulesWindow = new Adw.Window({ + modal: true, + hide_on_close: true, + default_width: 500, + default_height: 600, + }); + + // Create header bar + const headerBar = new Adw.HeaderBar(); + rulesWindow.set_title(appName); + + // Create toolbar view + const toolbarView = new Adw.ToolbarView(); + toolbarView.add_top_bar(headerBar); + + // Create scrollable content + const scrolledWindow = new Gtk.ScrolledWindow({ + vexpand: true, + hexpand: true, + }); + + const preferencesPage = new Adw.PreferencesPage(); + scrolledWindow.set_child(preferencesPage); + + // Application info group + const infoGroup = new Adw.PreferencesGroup({ + title: _('Application Information'), + }); + + const nameRow = new Adw.ActionRow({ + title: _('Name'), + subtitle: appName, + activatable: false, + }); + infoGroup.add(nameRow); + + const wmClassRow = new Adw.ActionRow({ + title: _('WM Class'), + subtitle: isDefault ? _('N/A (default rule)') : wmClass, + activatable: false, + }); + infoGroup.add(wmClassRow); + preferencesPage.add(infoGroup); + + // Visual Features group + const visualGroup = new Adw.PreferencesGroup({ + title: _('Visual Features'), + description: _('Appearance and visual effects'), + }); + const customBorderSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: ruleConfig.customBorder, + active: config.customBorder, sensitive: !isDefault, }); if (!isDefault) { - customBorderSwitch.connect('notify::active', () => - this.saveCustomRules(), - ); + customBorderSwitch.connect('notify::active', () => { + config.customBorder = customBorderSwitch.get_active(); + this.saveCustomRules(); + }); } const customBorderRow = new Adw.ActionRow({ title: _('Custom border'), @@ -170,171 +244,185 @@ export class CustomApplicationRulePrefs { activatableWidget: customBorderSwitch, }); customBorderRow.add_suffix(customBorderSwitch); - appRow.add_row(customBorderRow); + visualGroup.add(customBorderRow); + preferencesPage.add(visualGroup); + + // Window Management group + const managementGroup = new Adw.PreferencesGroup({ + title: _('Window Management'), + description: _('Automatic tiling and window behavior'), + }); - // Auto-tiling toggle const autoTilingSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: ruleConfig.autoTiling, + active: config.autoTiling, sensitive: !isDefault, }); if (!isDefault) { - autoTilingSwitch.connect('notify::active', () => - this.saveCustomRules(), - ); + autoTilingSwitch.connect('notify::active', () => { + config.autoTiling = autoTilingSwitch.get_active(); + this.saveCustomRules(); + }); } - const appAutoTilingRow = new Adw.ActionRow({ + const autoTilingRow = new Adw.ActionRow({ title: _('Auto-tiling'), subtitle: _('Automatically tile new windows for this application'), activatableWidget: autoTilingSwitch, }); - appAutoTilingRow.add_suffix(autoTilingSwitch); - appRow.add_row(appAutoTilingRow); + autoTilingRow.add_suffix(autoTilingSwitch); + managementGroup.add(autoTilingRow); - // Snap assistant toggle - const snapAssistSwitch = new Gtk.Switch({ + const spanMultipleTilesSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: ruleConfig.snapAssist, + active: config.spanMultipleTiles, sensitive: !isDefault, }); if (!isDefault) { - snapAssistSwitch.connect('notify::active', () => - this.saveCustomRules(), - ); + spanMultipleTilesSwitch.connect('notify::active', () => { + config.spanMultipleTiles = spanMultipleTilesSwitch.get_active(); + this.saveCustomRules(); + }); } - const appSnapAssistRow = new Adw.ActionRow({ - title: _('Snap assistant'), - subtitle: _('Enable snap assistant for this application'), - activatableWidget: snapAssistSwitch, + const spanMultipleTilesRow = new Adw.ActionRow({ + title: _('Span multiple tiles'), + subtitle: _('Allow this application to span multiple tiles'), + activatableWidget: spanMultipleTilesSwitch, }); - appSnapAssistRow.add_suffix(snapAssistSwitch); - appRow.add_row(appSnapAssistRow); + spanMultipleTilesRow.add_suffix(spanMultipleTilesSwitch); + managementGroup.add(spanMultipleTilesRow); - // Window suggestions toggle - const windowSuggestionsSwitch = new Gtk.Switch({ + const resizeComplementingSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: ruleConfig.windowSuggestions, + active: config.resizeComplementing, sensitive: !isDefault, }); if (!isDefault) { - windowSuggestionsSwitch.connect('notify::active', () => - this.saveCustomRules(), - ); + resizeComplementingSwitch.connect('notify::active', () => { + config.resizeComplementing = + resizeComplementingSwitch.get_active(); + this.saveCustomRules(); + }); } - const appWindowSuggestionsRow = new Adw.ActionRow({ - title: _('Window suggestions'), + const resizeComplementingRow = new Adw.ActionRow({ + title: _('Resize complementing windows'), subtitle: _( - "Suggest this application's windows to fill empty tiles", + 'Auto-resize nearby windows when this window is resized', ), - activatableWidget: windowSuggestionsSwitch, + activatableWidget: resizeComplementingSwitch, + }); + resizeComplementingRow.add_suffix(resizeComplementingSwitch); + managementGroup.add(resizeComplementingRow); + preferencesPage.add(managementGroup); + + // Assistants group + const assistantsGroup = new Adw.PreferencesGroup({ + title: _('Assistants'), + description: _('Helper features and suggestions'), }); - appWindowSuggestionsRow.add_suffix(windowSuggestionsSwitch); - appRow.add_row(appWindowSuggestionsRow); - // Resize complementing windows toggle - const resizeComplementingSwitch = new Gtk.Switch({ + const snapAssistSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: ruleConfig.resizeComplementing, + active: config.snapAssist, sensitive: !isDefault, }); if (!isDefault) { - resizeComplementingSwitch.connect('notify::active', () => - this.saveCustomRules(), - ); + snapAssistSwitch.connect('notify::active', () => { + config.snapAssist = snapAssistSwitch.get_active(); + this.saveCustomRules(); + }); } - const appResizeComplementingRow = new Adw.ActionRow({ - title: _('Resize complementing windows'), - subtitle: _( - 'Auto-resize nearby windows when this window is resized', - ), - activatableWidget: resizeComplementingSwitch, + const snapAssistRow = new Adw.ActionRow({ + title: _('Snap assistant'), + subtitle: _('Enable snap assistant for this application'), + activatableWidget: snapAssistSwitch, }); - appResizeComplementingRow.add_suffix(resizeComplementingSwitch); - appRow.add_row(appResizeComplementingRow); + snapAssistRow.add_suffix(snapAssistSwitch); + assistantsGroup.add(snapAssistRow); - // Span multiple tiles toggle - const spanMultipleTilesSwitch = new Gtk.Switch({ + const windowSuggestionsSwitch = new Gtk.Switch({ vexpand: false, valign: Gtk.Align.CENTER, - active: ruleConfig.spanMultipleTiles, + active: config.windowSuggestions, sensitive: !isDefault, }); if (!isDefault) { - spanMultipleTilesSwitch.connect('notify::active', () => - this.saveCustomRules(), - ); + windowSuggestionsSwitch.connect('notify::active', () => { + config.windowSuggestions = windowSuggestionsSwitch.get_active(); + this.saveCustomRules(); + }); } - const appSpanMultipleTilesRow = new Adw.ActionRow({ - title: _('Span multiple tiles'), - subtitle: _('Allow this application to span multiple tiles'), - activatableWidget: spanMultipleTilesSwitch, + const windowSuggestionsRow = new Adw.ActionRow({ + title: _('Window suggestions'), + subtitle: _( + "Suggest this application's windows to fill empty tiles", + ), + activatableWidget: windowSuggestionsSwitch, }); - appSpanMultipleTilesRow.add_suffix(spanMultipleTilesSwitch); - appRow.add_row(appSpanMultipleTilesRow); + windowSuggestionsRow.add_suffix(windowSuggestionsSwitch); + assistantsGroup.add(windowSuggestionsRow); + preferencesPage.add(assistantsGroup); - // Store row with switch references (only for custom rules) + // Delete button for custom rules if (!isDefault) { - const rowData: ApplicationRowData = { - row: appRow, - switches: { - customBorder: customBorderSwitch, - autoTiling: autoTilingSwitch, - snapAssist: snapAssistSwitch, - windowSuggestions: windowSuggestionsSwitch, - resizeComplementing: resizeComplementingSwitch, - spanMultipleTiles: spanMultipleTilesSwitch, - }, - }; - this.applicationRows.push(rowData); - } - - // Delete button or info row - if (isDefault) { - const infoRow = new Adw.ActionRow({ - title: _('This is a default rule'), - subtitle: _( - `All features are disabled for ${appName} by default`, - ), - activatable: false, + const deleteGroup = new Adw.PreferencesGroup({ + title: _('Delete Rule'), }); - infoRow.add_prefix( - new Gtk.Image({ - icon_name: 'dialog-information-symbolic', - valign: Gtk.Align.CENTER, - }), - ); - appRow.add_row(infoRow); - } else { + const deleteButton = new Gtk.Button({ - label: _('Delete'), + label: _('Delete Application Rule'), css_classes: ['destructive-action'], halign: Gtk.Align.CENTER, margin_top: 12, - margin_bottom: 6, + margin_bottom: 12, }); deleteButton.connect('clicked', () => { this.existingWmClasses.delete(wmClass.toLowerCase()); - // Remove from array + // Find and remove from array const index = this.applicationRows.findIndex( - (item) => item.row === appRow, + (item) => item.wmClass === wmClass, ); - if (index > -1) this.applicationRows.splice(index, 1); - - this.customRulesGroup.remove(appRow); + if (index > -1) { + const rowToRemove = this.applicationRows[index].row; + this.applicationRows.splice(index, 1); + this.customRulesGroup.remove(rowToRemove); + } this.saveCustomRules(); + rulesWindow.close(); }); + const deleteRow = new Adw.ActionRow({ activatable: false, }); deleteRow.set_child(deleteButton); - appRow.add_row(deleteRow); + deleteGroup.add(deleteRow); + preferencesPage.add(deleteGroup); + } else { + // Info for default rule + const subInfoGroup = new Adw.PreferencesGroup(); + const infoRow = new Adw.ActionRow({ + title: _('This is a default rule'), + subtitle: _( + 'All features are disabled for fullscreen applications by default', + ), + activatable: false, + }); + infoRow.add_prefix( + new Gtk.Image({ + icon_name: 'dialog-information-symbolic', + valign: Gtk.Align.CENTER, + }), + ); + subInfoGroup.add(infoRow); + preferencesPage.add(subInfoGroup); } - return appRow; + toolbarView.set_content(scrolledWindow); + rulesWindow.set_content(toolbarView); + rulesWindow.present(); } /** From f5621b695fa43a3085e5f4d6a2252392add80bc5 Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Tue, 23 Dec 2025 21:41:35 -0300 Subject: [PATCH 20/35] feat: refactor custom application rules to use application IDs instead of WM classes and add application picker dialog --- src/components/applicationPicker.ts | 341 +++++++++++++++++++ src/components/customApplicationRulePrefs.ts | 220 ++---------- src/components/customRulesManager.ts | 41 ++- src/settings/settings.ts | 32 +- 4 files changed, 431 insertions(+), 203 deletions(-) create mode 100644 src/components/applicationPicker.ts diff --git a/src/components/applicationPicker.ts b/src/components/applicationPicker.ts new file mode 100644 index 00000000..29a7c3f2 --- /dev/null +++ b/src/components/applicationPicker.ts @@ -0,0 +1,341 @@ +import { Gtk, Adw, Gio } from '@gi.prefs'; +import { gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; +import { logger } from '@utils/logger'; + +const debug = logger('ApplicationPicker'); + +interface ApplicationInfo { + name: string; + appId: string; + icon?: string; +} + +export class ApplicationPicker { + /** + * Get a list of installed applications with their application IDs + */ + private static getInstalledApplications(): ApplicationInfo[] { + const applications: ApplicationInfo[] = []; + const appInfos = Gio.AppInfo.get_all(); + + for (const appInfo of appInfos) { + if (!appInfo.should_show()) continue; + + const desktopApp = appInfo as Gio.DesktopAppInfo; + const name = appInfo.get_display_name() || appInfo.get_name(); + + if (!name) continue; + const appId = ApplicationPicker.tryGetAppId(desktopApp); + + if (!appId) continue; + + // Get icon + const iconObj = appInfo.get_icon(); + const icon = iconObj ? iconObj.to_string() || '' : ''; + + applications.push({ name, appId, icon }); + } + + // Sort by name + applications.sort((a, b) => a.name.localeCompare(b.name)); + + return applications; + } + + private static tryGetAppId( + desktopApp: Gio.DesktopAppInfo, + ): string | undefined { + const desktopId = desktopApp.get_id(); + if (!desktopId) return undefined; + + // Remove .desktop extension and convert to lowercase + const appId = desktopId.replace(/\.desktop$/, '').toLowerCase(); + + return appId; + + // Remove organization prefixes (e.g., org.gnome.Nautilus -> nautilus) + const parts = appId.split('.'); + return parts[parts.length - 1]; + } + + /** + * Show application picker dialog + */ + static showPicker( + parentWindow: Gtk.Window, + existingAppIds: Set, + onSelect: (appName: string, appId: string) => void, + ): void { + // Create dialog window + const dialog = new Adw.Window({ + modal: true, + hide_on_close: true, + transient_for: parentWindow, + default_width: 500, + default_height: 600, + }); + + // Create header bar + const headerBar = new Adw.HeaderBar(); + dialog.set_title(_('Select Application')); + + // Create toolbar view + const toolbarView = new Adw.ToolbarView(); + toolbarView.add_top_bar(headerBar); + + // Create main content box + const contentBox = new Gtk.Box({ + orientation: Gtk.Orientation.VERTICAL, + spacing: 0, + }); + + // Search entry + const searchEntry = new Gtk.SearchEntry({ + placeholder_text: _('Search applications...'), + margin_start: 12, + margin_end: 12, + margin_top: 12, + margin_bottom: 6, + }); + + contentBox.append(searchEntry); + + // Scrolled window for app list + const scrolledWindow = new Gtk.ScrolledWindow({ + vexpand: true, + hexpand: true, + }); + + const listBox = new Gtk.ListBox({ + selection_mode: Gtk.SelectionMode.NONE, + css_classes: ['boxed-list'], + margin_start: 12, + margin_end: 12, + margin_top: 6, + margin_bottom: 12, + }); + + scrolledWindow.set_child(listBox); + contentBox.append(scrolledWindow); + + // Info label + const infoLabel = new Gtk.Label({ + label: _( + 'Tip: If an application is not listed, you can enter it manually below.', + ), + wrap: true, + margin_start: 12, + margin_end: 12, + margin_bottom: 12, + css_classes: ['dim-label', 'caption'], + halign: Gtk.Align.START, + }); + contentBox.append(infoLabel); + + // Manual entry section + const manualBox = new Gtk.Box({ + orientation: Gtk.Orientation.VERTICAL, + spacing: 12, + margin_start: 12, + margin_end: 12, + margin_bottom: 12, + }); + + const manualLabel = new Gtk.Label({ + label: _('Or enter manually:'), + halign: Gtk.Align.START, + css_classes: ['heading'], + }); + manualBox.append(manualLabel); + + // Manual name entry + const nameEntry = new Gtk.Entry({ + placeholder_text: _('Application Name'), + hexpand: true, + }); + manualBox.append(nameEntry); + + // Manual application ID entry + const appIdEntry = new Gtk.Entry({ + placeholder_text: _('Application ID (e.g., org.gnome.Nautilus)'), + hexpand: true, + }); + manualBox.append(appIdEntry); + + // Error label for duplicates + const errorLabel = new Gtk.Label({ + label: _('This application is already in the list'), + wrap: true, + halign: Gtk.Align.START, + css_classes: ['error', 'caption'], + visible: false, + }); + manualBox.append(errorLabel); + + // Manual add button + const addManualButton = new Gtk.Button({ + label: _('Add Manually'), + css_classes: ['suggested-action'], + halign: Gtk.Align.END, + sensitive: false, + }); + manualBox.append(addManualButton); + + contentBox.append(manualBox); + + // Get applications + const applications = this.getInstalledApplications(); + const rows = new Map(); + + // Populate list + for (const app of applications) { + const isDuplicate = existingAppIds.has(app.appId.toLowerCase()); + + const row = new Gtk.ListBoxRow({ + activatable: !isDuplicate, + }); + + const rowBox = new Gtk.Box({ + orientation: Gtk.Orientation.HORIZONTAL, + spacing: 12, + margin_start: 12, + margin_end: 12, + margin_top: 8, + margin_bottom: 8, + }); + + // App icon + if (app.icon) { + const icon = new Gtk.Image({ + icon_name: app.icon, + pixel_size: 32, + valign: Gtk.Align.CENTER, + }); + rowBox.append(icon); + } + + // App info + const labelBox = new Gtk.Box({ + orientation: Gtk.Orientation.VERTICAL, + spacing: 2, + hexpand: true, + valign: Gtk.Align.CENTER, + }); + + const nameLabel = new Gtk.Label({ + label: app.name, + halign: Gtk.Align.START, + wrap: false, + ellipsize: 3, // PANGO_ELLIPSIZE_END + }); + labelBox.append(nameLabel); + + const appIdLabel = new Gtk.Label({ + label: isDuplicate + ? `${app.appId} (${_('already added')})` + : app.appId, + halign: Gtk.Align.START, + css_classes: isDuplicate + ? ['dim-label', 'caption', 'error'] + : ['dim-label', 'caption'], + wrap: false, + ellipsize: 3, + }); + labelBox.append(appIdLabel); + + rowBox.append(labelBox); + + if (!isDuplicate) { + // Add chevron + const chevron = new Gtk.Image({ + icon_name: 'go-next-symbolic', + valign: Gtk.Align.CENTER, + }); + rowBox.append(chevron); + } + + row.set_child(rowBox); + listBox.append(row); + + if (!isDuplicate) rows.set(row, app); + else row.set_sensitive(false); + } + + // Handle row activation + listBox.connect('row-activated', (_listBox, row) => { + const app = rows.get(row); + if (app) { + onSelect(app.name, app.appId); + dialog.close(); + } + }); + + // Search functionality + listBox.set_filter_func((row) => { + const searchText = searchEntry.get_text().toLowerCase(); + if (!searchText) return true; + + const app = rows.get(row); + if (!app) { + // Check disabled rows too + const child = row.get_child() as Gtk.Box; + if (!child) return false; + + // Get the text from labels + const labelBox = child + .get_first_child() + ?.get_next_sibling() as Gtk.Box; + if (!labelBox) return false; + + const nameLabel = labelBox.get_first_child() as Gtk.Label; + const appIdLabel = nameLabel?.get_next_sibling() as Gtk.Label; + + const name = nameLabel?.get_label().toLowerCase() || ''; + const appId = appIdLabel?.get_label().toLowerCase() || ''; + + return name.includes(searchText) || appId.includes(searchText); + } + + return ( + app.name.toLowerCase().includes(searchText) || + app.appId.toLowerCase().includes(searchText) + ); + }); + + searchEntry.connect('search-changed', () => { + listBox.invalidate_filter(); + }); + + // Manual entry validation + const updateManualButton = () => { + const name = nameEntry.get_text().trim(); + const appId = appIdEntry.get_text().trim(); + const isDuplicate = + appId.length > 0 && existingAppIds.has(appId.toLowerCase()); + + errorLabel.set_visible(isDuplicate); + addManualButton.set_sensitive( + name.length > 0 && appId.length > 0 && !isDuplicate, + ); + }; + + nameEntry.connect('changed', updateManualButton); + appIdEntry.connect('changed', updateManualButton); + + addManualButton.connect('clicked', () => { + const name = nameEntry.get_text().trim(); + const appId = appIdEntry.get_text().trim(); + if (name && appId) { + onSelect(name, appId); + dialog.close(); + } + }); + + toolbarView.set_content(contentBox); + dialog.set_content(toolbarView); + dialog.present(); + + // Focus search entry + searchEntry.grab_focus(); + } +} diff --git a/src/components/customApplicationRulePrefs.ts b/src/components/customApplicationRulePrefs.ts index 0dd1ae0a..56a44bdf 100644 --- a/src/components/customApplicationRulePrefs.ts +++ b/src/components/customApplicationRulePrefs.ts @@ -3,17 +3,18 @@ import Settings from '@settings/settings'; import { logger } from '@utils/logger'; import { gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; import { ConfigRules } from './customRulesManager'; +import { ApplicationPicker } from './applicationPicker'; const debug = logger('customApplicationRulePrefs'); interface ApplicationRowData { row: Adw.ActionRow; - wmClass: string; + appId: string; config: ConfigRules; } export class CustomApplicationRulePrefs { - private existingWmClasses: Set = new Set(); + private existingAppsId: Set = new Set(); private applicationRows: ApplicationRowData[] = []; private customRulesGroup!: Adw.PreferencesGroup; @@ -51,7 +52,7 @@ export class CustomApplicationRulePrefs { savedCustomRules.forEach((app) => { const appRow = this.createCustomRulesApplicationRow( app.name, - app.wmClass, + app.appId, app.ruleConfig, ); this.customRulesGroup.add(appRow); @@ -63,13 +64,14 @@ export class CustomApplicationRulePrefs { _('Add application to customRules'), _('Configure features for a new application'), () => { - this.showAddApplicationDialog( + ApplicationPicker.showPicker( parentWindow, - (appName, wmClass) => { - debug(`Adding application: ${appName} (${wmClass})`); + this.existingAppsId, + (appName, appId) => { + debug(`Adding application: ${appName} (${appId})`); const newAppRow = this.createCustomRulesApplicationRow( appName, - wmClass, + appId, ); // Insert before the "Add Application" button // Remove button, add new row, then re-add button to keep it at the bottom @@ -91,10 +93,10 @@ export class CustomApplicationRulePrefs { */ private saveCustomRules(): void { const customRules = this.applicationRows.map( - ({ row, wmClass, config }) => { + ({ row, appId, config }) => { return { name: row.get_title(), - wmClass, + appId, ruleConfig: config, }; }, @@ -107,7 +109,7 @@ export class CustomApplicationRulePrefs { */ private createCustomRulesApplicationRow( appName: string, - wmClass: string, + appId: string, config: ConfigRules = { customBorder: true, autoTiling: true, @@ -134,7 +136,7 @@ export class CustomApplicationRulePrefs { title: appName, subtitle: isDefault ? _('Default rule (cannot be deleted)') - : `WM Class: ${wmClass}`, + : `App ID: ${appId}`, activatable: true, }); @@ -146,13 +148,13 @@ export class CustomApplicationRulePrefs { }), ); - if (!isDefault) this.existingWmClasses.add(wmClass.toLowerCase()); + if (!isDefault && appId) this.existingAppsId.add(appId.toLowerCase()); // Store row with config (only for custom rules) if (!isDefault) { const rowData: ApplicationRowData = { row: appRow, - wmClass, + appId, config: ruleConfig, }; this.applicationRows.push(rowData); @@ -160,7 +162,7 @@ export class CustomApplicationRulePrefs { // Open rules window when row is clicked appRow.connect('activated', () => { - this.showRulesWindow(appName, wmClass, ruleConfig, isDefault); + this.showRulesWindow(appName, appId, ruleConfig, isDefault); }); return appRow; @@ -171,7 +173,7 @@ export class CustomApplicationRulePrefs { */ private showRulesWindow( appName: string, - wmClass: string, + appId: string, config: ConfigRules, isDefault: boolean, ): void { @@ -212,18 +214,18 @@ export class CustomApplicationRulePrefs { }); infoGroup.add(nameRow); - const wmClassRow = new Adw.ActionRow({ - title: _('WM Class'), - subtitle: isDefault ? _('N/A (default rule)') : wmClass, + const appIdRow = new Adw.ActionRow({ + title: _('Application ID'), + subtitle: isDefault ? _('N/A (default rule)') : appId, activatable: false, }); - infoGroup.add(wmClassRow); + infoGroup.add(appIdRow); preferencesPage.add(infoGroup); - // Visual Features group - const visualGroup = new Adw.PreferencesGroup({ - title: _('Visual Features'), - description: _('Appearance and visual effects'), + // Appearance Section + const appearenceGroup = new Adw.PreferencesGroup({ + title: _('Appearance'), + description: _('Configure the appearance of Tiling Shell'), }); const customBorderSwitch = new Gtk.Switch({ @@ -244,13 +246,13 @@ export class CustomApplicationRulePrefs { activatableWidget: customBorderSwitch, }); customBorderRow.add_suffix(customBorderSwitch); - visualGroup.add(customBorderRow); - preferencesPage.add(visualGroup); + appearenceGroup.add(customBorderRow); + preferencesPage.add(appearenceGroup); - // Window Management group - const managementGroup = new Adw.PreferencesGroup({ - title: _('Window Management'), - description: _('Automatic tiling and window behavior'), + // Behavior section + const behaviourGroup = new Adw.PreferencesGroup({ + title: _('Behaviour'), + description: _('Configure the behaviour of Tiling Shell'), }); const autoTilingSwitch = new Gtk.Switch({ @@ -271,7 +273,7 @@ export class CustomApplicationRulePrefs { activatableWidget: autoTilingSwitch, }); autoTilingRow.add_suffix(autoTilingSwitch); - managementGroup.add(autoTilingRow); + behaviourGroup.add(autoTilingRow); const spanMultipleTilesSwitch = new Gtk.Switch({ vexpand: false, @@ -291,7 +293,7 @@ export class CustomApplicationRulePrefs { activatableWidget: spanMultipleTilesSwitch, }); spanMultipleTilesRow.add_suffix(spanMultipleTilesSwitch); - managementGroup.add(spanMultipleTilesRow); + behaviourGroup.add(spanMultipleTilesRow); const resizeComplementingSwitch = new Gtk.Switch({ vexpand: false, @@ -314,8 +316,8 @@ export class CustomApplicationRulePrefs { activatableWidget: resizeComplementingSwitch, }); resizeComplementingRow.add_suffix(resizeComplementingSwitch); - managementGroup.add(resizeComplementingRow); - preferencesPage.add(managementGroup); + behaviourGroup.add(resizeComplementingRow); + preferencesPage.add(behaviourGroup); // Assistants group const assistantsGroup = new Adw.PreferencesGroup({ @@ -380,10 +382,10 @@ export class CustomApplicationRulePrefs { margin_bottom: 12, }); deleteButton.connect('clicked', () => { - this.existingWmClasses.delete(wmClass.toLowerCase()); + this.existingAppsId.delete(appId.toLowerCase()); // Find and remove from array const index = this.applicationRows.findIndex( - (item) => item.wmClass === wmClass, + (item) => item.appId === appId, ); if (index > -1) { const rowToRemove = this.applicationRows[index].row; @@ -425,154 +427,6 @@ export class CustomApplicationRulePrefs { rulesWindow.present(); } - /** - * Show dialog for adding a new application - */ - private showAddApplicationDialog( - parentWindow: Adw.PreferencesWindow, - onAdd: (appName: string, wmClass: string) => void, - ): void { - // Create dialog window - const dialog = new Adw.Window({ - modal: true, - hide_on_close: true, - transient_for: parentWindow, - default_width: 400, - default_height: 300, - }); - - // Create header bar - const headerBar = new Adw.HeaderBar(); - dialog.set_title(_('Add Application')); - - // Create content - const toolbarView = new Adw.ToolbarView(); - toolbarView.add_top_bar(headerBar); - - const contentBox = new Gtk.Box({ - orientation: Gtk.Orientation.VERTICAL, - margin_top: 24, - margin_bottom: 24, - margin_start: 24, - margin_end: 24, - spacing: 18, - }); - - // Application name entry - const nameEntry = new Gtk.Entry({ - placeholder_text: _('Application Name (e.g., Firefox)'), - hexpand: true, - }); - const nameRow = new Gtk.Box({ - orientation: Gtk.Orientation.VERTICAL, - spacing: 6, - }); - nameRow.append( - new Gtk.Label({ - label: _('Application Name'), - halign: Gtk.Align.START, - }), - ); - nameRow.append(nameEntry); - - // WM Class entry - const wmClassEntry = new Gtk.Entry({ - placeholder_text: _('WM Class (e.g., firefox, gnome-terminal)'), - hexpand: true, - }); - const wmClassRow = new Gtk.Box({ - orientation: Gtk.Orientation.VERTICAL, - spacing: 6, - }); - wmClassRow.append( - new Gtk.Label({ - label: _('WM Class'), - halign: Gtk.Align.START, - }), - ); - wmClassRow.append(wmClassEntry); - - // Error label for duplicate WM Class - const errorLabel = new Gtk.Label({ - label: _('This WM Class already exists in the list'), - wrap: true, - halign: Gtk.Align.START, - css_classes: ['error', 'caption'], - visible: false, - }); - - // Help text - const helpLabel = new Gtk.Label({ - label: _( - 'Tip: You can find the WM Class by running "xprop WM_CLASS" in terminal and clicking the application window.', - ), - wrap: true, - halign: Gtk.Align.START, - css_classes: ['dim-label', 'caption'], - }); - - contentBox.append(nameRow); - contentBox.append(wmClassRow); - contentBox.append(errorLabel); - contentBox.append(helpLabel); - - // Buttons - const buttonBox = new Gtk.Box({ - orientation: Gtk.Orientation.HORIZONTAL, - spacing: 6, - halign: Gtk.Align.END, - margin_top: 12, - }); - - const cancelButton = new Gtk.Button({ - label: _('Cancel'), - }); - cancelButton.connect('clicked', () => { - dialog.close(); - }); - - const addButton = new Gtk.Button({ - label: _('Add'), - css_classes: ['suggested-action'], - }); - addButton.connect('clicked', () => { - const appName = nameEntry.get_text().trim(); - const wmClass = wmClassEntry.get_text().trim(); - - if (appName && wmClass) { - onAdd(appName, wmClass); - dialog.close(); - } - }); - - // Enable/disable add button based on input and validation - const updateAddButton = () => { - const hasName = nameEntry.get_text().trim().length > 0; - const wmClass = wmClassEntry.get_text().trim(); - const hasWmClass = wmClass.length > 0; - const isDuplicate = - hasWmClass && this.existingWmClasses.has(wmClass.toLowerCase()); - - // Show/hide error message - errorLabel.set_visible(isDuplicate); - - // Enable button only if both fields have values and no duplicate - addButton.set_sensitive(hasName && hasWmClass && !isDuplicate); - }; - - nameEntry.connect('changed', updateAddButton); - wmClassEntry.connect('changed', updateAddButton); - updateAddButton(); // Initial state - - buttonBox.append(cancelButton); - buttonBox.append(addButton); - contentBox.append(buttonBox); - - toolbarView.set_content(contentBox); - dialog.set_content(toolbarView); - dialog.present(); - } - /** * Build a button row */ diff --git a/src/components/customRulesManager.ts b/src/components/customRulesManager.ts index 559e77af..fca42c82 100644 --- a/src/components/customRulesManager.ts +++ b/src/components/customRulesManager.ts @@ -1,4 +1,4 @@ -import { GObject, Meta } from '@gi.ext'; +import { GObject, Meta, Shell, Gio } from '@gi.ext'; import SignalHandling from '@utils/signalHandling'; import { logger } from '@utils/logger'; import { registerGObjectClass } from '@utils/gjs'; @@ -17,7 +17,7 @@ export type ConfigRules = { export interface CustomApplicationRules { name: string; - wmClass: string; + appId: string; ruleConfig?: ConfigRules; } @@ -72,10 +72,10 @@ export class CustomRulesManager extends GObject.Object { private _getFullscreenDefaultRule(): CustomApplicationRules { return ( this._customRules.find( - (entry) => entry.wmClass.toLowerCase() === 'fullscreen', + (entry) => entry.appId.toLowerCase() === 'fullscreen', ) || { name: 'Fullscreen Applications', - wmClass: 'fullscreen', + appId: 'fullscreen', ruleConfig: { customBorder: false, autoTiling: false, @@ -89,7 +89,7 @@ export class CustomRulesManager extends GObject.Object { } /** - * Get the customRules entry for a window by its WM class + * Get the customRules entry for a window by its application ID * @param window The window to check * @returns The customRules entry if found, undefined otherwise */ @@ -99,11 +99,23 @@ export class CustomRulesManager extends GObject.Object { // Check if the window is fullscreen first - apply default rule if (window.is_fullscreen()) return this._getFullscreenDefaultRule(); - const wmClass = window.get_wm_class(); - if (!wmClass) return undefined; + // Get the app using WindowTracker - this properly handles all window types + const tracker = Shell.WindowTracker.get_default(); + const app = tracker.get_window_app(window); + if (!app) return undefined; + + // Get the desktop app info to retrieve the desktop file ID + const desktopApp = app.get_app_info() as Gio.DesktopAppInfo; + if (!desktopApp) return undefined; + + const desktopId = desktopApp.get_id(); + if (!desktopId) return undefined; + + // Remove .desktop extension and convert to lowercase to match stored format + const appId = desktopId.replace(/\.desktop$/, '').toLowerCase(); return this._customRules.find( - (entry) => entry.wmClass.toLowerCase() === wmClass.toLowerCase(), + (entry) => entry.appId.toLowerCase() === appId.toLowerCase(), ); } @@ -188,6 +200,19 @@ export class CustomRulesManager extends GObject.Object { return this._getCustomRulesEntry(window) !== undefined; } + /** + * Check if an application ID is managed by customRules + * @param appId The application ID to check + * @returns true if the application ID is in the customRules, false otherwise + */ + public isApplicationManagedByCustomRules(appId: string): boolean { + return ( + this._customRules.find( + (entry) => entry.appId.toLowerCase() === appId.toLowerCase(), + ) !== undefined + ); + } + /** * Get all customRules entries * @returns Array of customRules applications diff --git a/src/settings/settings.ts b/src/settings/settings.ts index fa02b8b5..8d2deaec 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -1,7 +1,7 @@ import { Gio, GObject, GLib } from '../gi/shared'; import Layout from '../components/layout/Layout'; import Tile from '../components/layout/Tile'; -import { ConfigRules } from '@components/customRulesManager'; +import { CustomApplicationRules } from '@components/customRulesManager'; export enum ActivationKey { NONE = -1, @@ -678,14 +678,26 @@ export default class Settings { ); } - static get_application_custom_rules(): Array<{ - name: string; - wmClass: string; - ruleConfig?: ConfigRules; - }> { + static get_application_custom_rules(): Array { try { const json = get_string(Settings.KEY_APPLICATION_CUSTOMRULES); - return JSON.parse(json); + const rules = JSON.parse(json) as Array; + + // Validate all rules - if any rule is invalid, clear all custom rules + const hasInvalidRule = rules.some( + (rule) => !rule.appId || !rule.name, + ); + + if (hasInvalidRule) { + console.warn( + 'TilingShell: Invalid or corrupted custom rules detected, clearing all custom rules', + ); + // Clear the invalid data + this.save_application_custom_rules([]); + return []; + } + + return rules; // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (e) { return []; @@ -693,11 +705,7 @@ export default class Settings { } static save_application_custom_rules( - customRules: Array<{ - name: string; - wmClass: string; - ruleConfig?: ConfigRules; - }>, + customRules: Array, ) { set_string( Settings.KEY_APPLICATION_CUSTOMRULES, From 49ab3ba02b29dc995895538a861f187863b95ee1 Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Sun, 4 Jan 2026 21:47:02 -0300 Subject: [PATCH 21/35] refact: remove deadcoded --- src/components/applicationPicker.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/components/applicationPicker.ts b/src/components/applicationPicker.ts index 29a7c3f2..fdfe6be1 100644 --- a/src/components/applicationPicker.ts +++ b/src/components/applicationPicker.ts @@ -52,10 +52,6 @@ export class ApplicationPicker { const appId = desktopId.replace(/\.desktop$/, '').toLowerCase(); return appId; - - // Remove organization prefixes (e.g., org.gnome.Nautilus -> nautilus) - const parts = appId.split('.'); - return parts[parts.length - 1]; } /** From 6b8acc8caaf413cc1765f2e4a15ba81c17b81a5a Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Tue, 6 Jan 2026 21:37:24 -0300 Subject: [PATCH 22/35] feat: enhance import handling to support @ path aliases and improve error logging in legacy file processing --- esbuild.mjs | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/esbuild.mjs b/esbuild.mjs index a2dc54d4..025d19d9 100644 --- a/esbuild.mjs +++ b/esbuild.mjs @@ -89,11 +89,11 @@ async function preprocess(files) { // drop lines tagged with "// @esbuild-drop-next-line" text = text.replace(/\/\/\s*@esbuild-drop-next-line\s*\n.*?;/gs, ''); - // Ensure every import has ".js" at end end, excluding GJS imports + // Ensure every import has ".js" at end end, excluding GJS imports (but include @ aliases) text = text.replace( /import\s+([\s\S]*?)\s+from\s+['"]([^'"]+)['"]/g, (_match, imports, importPath) => { - if (!importPath.endsWith('.js') && !importPath.startsWith('gi://')) { + if (!importPath.endsWith('.js') && !importPath.startsWith('gi://') && !importPath.startsWith('resource://')) { importPath += '.js'; } return `import ${imports} from "${importPath}"`; @@ -199,6 +199,29 @@ function convertImports(text, currentFilePath, rootDirName) { // replace import of Config text = text.replaceAll('import * as Config from "resource:///org/gnome/Shell/Extensions/js/misc/config.js";', "const Config = imports.misc.config;"); + // handle @ path aliases (convert to relative imports) + text = text.replace( + /import\s+(?:\{([^}]+)\}|([^\s]+))\s+from\s+"@([^"]+)";/gm, + (match, destructured, single, aliasPath) => { + // Remove .js extension if present + aliasPath = aliasPath.replace(/\.js$/, ''); + + // Convert @ alias to Me.imports path + const modulePath = aliasPath.replace(/\//g, '.'); + + if (destructured) { + return destructured + .split(',') + .map(i => i.trim()) + .filter(Boolean) + .map(v => `const ${v} = Me.imports.${modulePath}.${v};`) + .join('\n'); + } else { + return `const ${single} = Me.imports.${modulePath}.${single};`; + } + } + ); + // handle relative imports const relativeCurrent = currentFilePath.replace( new RegExp(`^${rootDirName}[\\\\/]`), '' @@ -279,8 +302,9 @@ function printError(text) { async function processLegacyFiles(files) { await Promise.all(files.map(async (filePath) => { - const jsFileContent = await fs.readFile(filePath, 'utf-8'); - const convertedContent = convertImports(jsFileContent, filePath, distLegacyDir); + try { + const jsFileContent = await fs.readFile(filePath, 'utf-8'); + const convertedContent = convertImports(jsFileContent, filePath, distLegacyDir); // append banners let finalContent; @@ -297,6 +321,11 @@ async function processLegacyFiles(files) { } await fs.writeFile(filePath, finalContent, 'utf-8'); + } catch (error) { + console.error(`\x1b[31mError processing file: ${filePath}\x1b[0m`); + console.error(error); + throw error; + } })); } From 04cc2304812da695ef12abc86b29cdd5043c4739 Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Tue, 13 Jan 2026 22:18:05 -0300 Subject: [PATCH 23/35] feat: enhance import handling to support @ path aliases and improve relative path resolution --- esbuild.mjs | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/esbuild.mjs b/esbuild.mjs index 025d19d9..1764bb8e 100644 --- a/esbuild.mjs +++ b/esbuild.mjs @@ -9,6 +9,10 @@ import types from '@babel/types'; import traverseBabel from '@babel/traverse'; import generatorBabel from '@babel/generator'; import { ESLint } from "eslint"; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); const traverse = traverseBabel.default; const generator = generatorBabel.default; @@ -89,7 +93,31 @@ async function preprocess(files) { // drop lines tagged with "// @esbuild-drop-next-line" text = text.replace(/\/\/\s*@esbuild-drop-next-line\s*\n.*?;/gs, ''); - // Ensure every import has ".js" at end end, excluding GJS imports (but include @ aliases) + // Convert @ path aliases to relative imports + text = text.replace( + /import\s+([\s\S]*?)\s+from\s+['"]@([^'"]+)['"]/g, + (_match, imports, aliasPath) => { + // Remove .js extension if present for resolution + aliasPath = aliasPath.replace(/\.js$/, ''); + + // Replace dots with slashes to handle paths like @gi.prefs -> gi/prefs + aliasPath = aliasPath.replace(/\./g, '/'); + + // Calculate relative path from current file to src/ + const currentFileDir = path.dirname(filename); + const targetPath = path.resolve(__dirname, distDir, aliasPath); + let relativePath = path.relative(currentFileDir, targetPath).replace(/\\/g, '/'); + + // Ensure relative path starts with ./ or ../ + if (!relativePath.startsWith('.')) { + relativePath = './' + relativePath; + } + + return `import ${imports} from "${relativePath}.js"`; + } + ); + + // Ensure every import has ".js" at end end, excluding GJS imports text = text.replace( /import\s+([\s\S]*?)\s+from\s+['"]([^'"]+)['"]/g, (_match, imports, importPath) => { @@ -228,7 +256,7 @@ function convertImports(text, currentFilePath, rootDirName) { ); text = text.replace( - /import\s+(?:\{([\s\S]+?)\}|([^\s]+))\s+from\s+"([\.]{1,2}\/[^"]+)";/gm, + /import\s+(?:\{([^}]+)\}|([^\s]+))\s+from\s+"(\.{1,2}\/[^"]+)";/gm, (_, destructured, single, importPath) => { const currentAbs = path.resolve(rootDirName, relativeCurrent); const fullPath = path.resolve(path.dirname(currentAbs), importPath).replace(/\.(js|ts)$/, ''); From 4d4231effbfd21aa75e86c228a084a3415031eae Mon Sep 17 00:00:00 2001 From: Lucas Ernesto Kindinger Date: Tue, 13 Jan 2026 22:51:47 -0300 Subject: [PATCH 24/35] feat: update CustomRulesManager to register GObject class correctly and add emit method for TypeScript compatibility --- src/components/customRulesManager.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/components/customRulesManager.ts b/src/components/customRulesManager.ts index fca42c82..8fdd8f21 100644 --- a/src/components/customRulesManager.ts +++ b/src/components/customRulesManager.ts @@ -21,14 +21,21 @@ export interface CustomApplicationRules { ruleConfig?: ConfigRules; } -@registerGObjectClass export class CustomRulesManager extends GObject.Object { - static metaInfo: GObject.MetaInfo = { + static { registerGObjectClass(this, { GTypeName: 'CustomRulesManager', Signals: { - 'customRules-changed': {}, + 'customRules-changed': { + param_types: [], + }, }, - }; + })}; + + // Add emit method to satisfy TypeScript + emit(signal: string, ...args: unknown[]): void { + // @ts-ignore + super.emit(signal, ...args); + } private readonly _signals: SignalHandling; private _customRules: CustomApplicationRules[]; From 4f956c8990c2895d0049adf96e2574648ceb40e4 Mon Sep 17 00:00:00 2001 From: lousuan <2546336381@qq.com> Date: Sat, 17 Jan 2026 19:13:32 +0800 Subject: [PATCH 25/35] feat: Update Simplified Chinese Translation (#468) --- translations/zh_CN.po | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/translations/zh_CN.po b/translations/zh_CN.po index 45bb487d..849ad38f 100644 --- a/translations/zh_CN.po +++ b/translations/zh_CN.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: Tiling Shell\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-11-09 11:35+0100\n" -"PO-Revision-Date: 2025-01-20 23:37+0800\n" +"PO-Revision-Date: 2025-10-19 17:46+0800\n" "Last-Translator: lousuan <2546336381@qq.com>\n" "Language-Team: \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.5\n" +"X-Generator: Poedit 3.6\n" #: dist/prefs.js:793 msgid "General" @@ -226,13 +226,13 @@ msgstr "右键单击窗口标题时,在窗口菜单显示窗口捕捉助手和 #: dist/prefs.js:994 msgid "Add tiled windows to ALT+TAB menu" -msgstr "" +msgstr "在 ALT+TAB 菜单中添加平铺好的窗口组合" #: dist/prefs.js:996 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" -msgstr "" +msgstr "在 ALT+TAB 菜单中添加平铺好的窗口组合,以便一次性打开所有平铺好的窗口" #: dist/prefs.js:1001 msgid "Screen Edges" @@ -259,16 +259,18 @@ msgstr "四角平铺激活区域" #, fuzzy, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "" -"四角平铺激活区域(%屏幕高度)\n" -"(译者注:当移动窗口到屏幕左右边缘时,可以激活四角平铺)" +"触发四角平铺的激活区域(%%屏幕高度)\n" +"(译者注:当移动窗口到屏幕左右边缘中间偏上位置时,可以激活四角平铺)" #: dist/prefs.js:1044 msgid "Edge tiling offset" -msgstr "" +msgstr "边缘平铺激活区域" #: dist/prefs.js:1045 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" +"触发边缘平铺的最小距离(单位:像素)\n" +"(译者注:当移动窗口到屏幕左右边缘时,可以激活边缘平铺)" #: dist/prefs.js:1062 msgid "Windows suggestions" @@ -454,7 +456,7 @@ msgstr "移动当前聚焦的窗口到屏幕中央" #: dist/prefs.js:1335 msgid "Focus window to the right" -msgstr "聚焦右侧的窗口" +msgstr "聚焦右侧窗口" #: dist/prefs.js:1337 msgid "Focus the window to the right of the current focused window" @@ -501,23 +503,20 @@ msgid "Focus the window prior to the current focused window" msgstr "聚焦到当前窗口的上一个窗口" #: dist/prefs.js:1379 -#, fuzzy msgid "Highlight focused window" -msgstr "取消窗口平铺" +msgstr "高亮当前聚焦的窗口" #: dist/prefs.js:1381 -#, fuzzy msgid "Minimize all the other windows and show only the focused window" -msgstr "使用快捷键来操作当前聚焦的窗口" +msgstr "只显示当前聚焦的窗口,最小化其他窗口" #: dist/prefs.js:1388 -#, fuzzy msgid "Cycle layouts" -msgstr "恢复默认布局" +msgstr "循环切换布局" #: dist/prefs.js:1389 msgid "Cycle through available workspace layouts" -msgstr "" +msgstr "循环切换可用的工作区布局" #: dist/prefs.js:1415 msgid "View and Customize all the Shortcuts" @@ -539,11 +538,12 @@ msgstr "" #: dist/prefs.js:1474 msgid "Restrict directional focus to tiled windows" -msgstr "" +msgstr "只在已平铺的窗口之间进行方向聚焦" #: dist/prefs.js:1476 msgid "When using directional focus navigation, only consider tiled windows" msgstr "" +"当使用方向聚焦(译者注:比如【聚焦右侧窗口】)时,只考虑已经平铺的窗口" #: dist/prefs.js:1481 msgid "Import, export and reset" From 5ab8d3e8ea6ad1dc31177caa47b5c26b0bb60ae8 Mon Sep 17 00:00:00 2001 From: Jesse Dhillon <542223+jessedhillon@users.noreply.github.com> Date: Sat, 17 Jan 2026 03:19:41 -0800 Subject: [PATCH 26/35] feat: add sync layout option to snap assist (#469) --- ....gnome.shell.extensions.tilingshell.gschema.xml | 5 +++++ src/components/tilingsystem/tilingManager.ts | 8 ++++++++ src/prefs.ts | 14 ++++++++++++++ src/settings/settings.ts | 9 +++++++++ 4 files changed, 36 insertions(+) diff --git a/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml b/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml index fe670da7..82bb99fc 100644 --- a/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml +++ b/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml @@ -27,6 +27,11 @@ Enable snap assist Move the window on top of the screen to snap assist it. + + false + Sync layout when tiling with Snap Assistant + Change the desktop layout to match the layout used when tiling a window with Snap Assistant. + true Shows indicator diff --git a/src/components/tilingsystem/tilingManager.ts b/src/components/tilingsystem/tilingManager.ts index 76aabb9e..7ef67b58 100644 --- a/src/components/tilingsystem/tilingManager.ts +++ b/src/components/tilingsystem/tilingManager.ts @@ -872,6 +872,14 @@ export class TilingManager { }); this._easeWindowRect(window, desiredWindowRect); + // Sync the desktop layout to match the snap-assisted layout if enabled + if (wasSnapAssistingLayout && Settings.SNAP_ASSIST_SYNC_LAYOUT) { + GlobalState.get().setSelectedLayoutOfMonitor( + wasSnapAssistingLayout.id, + this._monitor.index, + ); + } + if (!tilingLayout || !canShowTilingSuggestions) return; // retrieve the current layout for the monitor and workspace diff --git a/src/prefs.ts b/src/prefs.ts index 5583f042..a66f98ad 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -219,6 +219,20 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference ); behaviourGroup.add(snapAssistRow); + const snapAssistSyncLayoutRow = this._buildSwitchRow( + Settings.KEY_SNAP_ASSIST_SYNC_LAYOUT, + _('Sync layout when tiling with Snap Assistant'), + _( + 'Change the desktop layout to match the layout used when tiling a window with Snap Assistant', + ), + ); + Settings.bind( + Settings.KEY_SNAP_ASSIST, + snapAssistSyncLayoutRow, + 'sensitive', + ); + behaviourGroup.add(snapAssistSyncLayoutRow); + const enableTilingSystemRow = this._buildSwitchRow( Settings.KEY_TILING_SYSTEM, _('Enable Tiling System'), diff --git a/src/settings/settings.ts b/src/settings/settings.ts index 4ba2931f..ad507a0a 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -82,6 +82,7 @@ export default class Settings { static KEY_WINDOW_USE_CUSTOM_BORDER_COLOR = 'window-use-custom-border-color'; static KEY_TILING_SYSTEM = 'enable-tiling-system'; static KEY_SNAP_ASSIST = 'enable-snap-assist'; + static KEY_SNAP_ASSIST_SYNC_LAYOUT = 'snap-assist-sync-layout'; static KEY_SHOW_INDICATOR = 'show-indicator'; static KEY_TILING_SYSTEM_ACTIVATION_KEY = 'tiling-system-activation-key'; static KEY_TILING_SYSTEM_DEACTIVATION_KEY = 'tiling-system-deactivation-key'; @@ -194,6 +195,14 @@ export default class Settings { set_boolean(Settings.KEY_SNAP_ASSIST, val); } + static get SNAP_ASSIST_SYNC_LAYOUT(): boolean { + return get_boolean(Settings.KEY_SNAP_ASSIST_SYNC_LAYOUT); + } + + static set SNAP_ASSIST_SYNC_LAYOUT(val: boolean) { + set_boolean(Settings.KEY_SNAP_ASSIST_SYNC_LAYOUT, val); + } + static get SHOW_INDICATOR(): boolean { return get_boolean(Settings.KEY_SHOW_INDICATOR); } From 2edb7f347d553e66d92c1ae59b9335c94a233e67 Mon Sep 17 00:00:00 2001 From: Gregorein Date: Sat, 17 Jan 2026 12:31:26 +0100 Subject: [PATCH 27/35] Adaptive corner/edge snap (#323) * feat: implement edge snap mode settings and behavior * refactor: update edge snap mode options in preferences - Changed edge snap mode descriptions to more accurately reflect functionality * rebasing supporting latest changes * feat: implement edge snap mode settings and behavior * fix imports * feat: add modes icon instead of dropdown menu * update translations --------- Co-authored-by: Domenico Ferraro --- .../locale/cs/LC_MESSAGES/tilingshell.mo | Bin 14599 -> 14016 bytes .../locale/de/LC_MESSAGES/tilingshell.mo | Bin 14277 -> 14839 bytes .../locale/es/LC_MESSAGES/tilingshell.mo | Bin 14003 -> 13435 bytes .../locale/fr/LC_MESSAGES/tilingshell.mo | Bin 14379 -> 13779 bytes .../locale/it/LC_MESSAGES/tilingshell.mo | Bin 15369 -> 14928 bytes .../locale/ka/LC_MESSAGES/tilingshell.mo | Bin 0 -> 19357 bytes .../locale/nl/LC_MESSAGES/tilingshell.mo | Bin 14226 -> 13675 bytes .../locale/pl/LC_MESSAGES/tilingshell.mo | Bin 14847 -> 14403 bytes .../locale/pt_BR/LC_MESSAGES/tilingshell.mo | Bin 13455 -> 12897 bytes .../locale/ru/LC_MESSAGES/tilingshell.mo | Bin 17381 -> 16672 bytes .../locale/tr/LC_MESSAGES/tilingshell.mo | Bin 14008 -> 13544 bytes .../locale/uk/LC_MESSAGES/tilingshell.mo | Bin 18108 -> 17376 bytes .../locale/zh_CN/LC_MESSAGES/tilingshell.mo | Bin 12191 -> 11651 bytes .../locale/zh_TW/LC_MESSAGES/tilingshell.mo | Bin 12550 -> 13065 bytes ...e.shell.extensions.tilingshell.gschema.xml | 5 + .../tilingsystem/edgeTilingManager.ts | 689 ++++++++- src/components/tilingsystem/tilingManager.ts | 42 +- .../suggestedWindowPreview.ts | 3 +- src/prefs.ts | 36 +- src/settings/settings.ts | 19 + translations/cs.po | 361 ++--- translations/de.po | 1237 ++++++++--------- translations/es.po | 361 ++--- translations/fr.po | 361 ++--- translations/it.po | 361 ++--- translations/ka.po | 360 ++--- translations/nl.po | 357 ++--- translations/pl.po | 1203 ++++++++-------- translations/pt_BR.po | 361 ++--- translations/ru.po | 357 ++--- .../tilingshell@ferrarodomenico.com.pot | 869 ++++-------- translations/tr.po | 356 ++--- translations/uk.po | 361 ++--- translations/zh_CN.po | 353 ++--- translations/zh_TW.po | 357 ++--- 35 files changed, 4400 insertions(+), 4009 deletions(-) create mode 100644 resources/locale/ka/LC_MESSAGES/tilingshell.mo diff --git a/resources/locale/cs/LC_MESSAGES/tilingshell.mo b/resources/locale/cs/LC_MESSAGES/tilingshell.mo index f859b75407bddaadc36649b70d54d5530c662d76..7dad27a25f0403cb40e24e0e06b8aa5d1b7b4fcd 100644 GIT binary patch delta 3172 zcmXxldrXye9LMpm$wic_7gA6;iimgv1w=$a0S!VWG_mrE<^?Yxh?ZGCM&hNsrkQ`Z zIXA7jVU{ObHZ!{{YsuPbm1VW%a#6AAni~H!dw*cTTfZCC?l zpohHd3~&0~MI4Vev5fYuU%XjwPAo=spaIq3Hg~=S`*C~>)xcXg96v>k>@Up1K!Sha zD%9}~%)|>wU+ot5$Gb?|7DJ;0Xx|1=(TMYq&#W5N;A$L)+njG>Hpe$H2NV04O~MK+ zz@5lP_KEX5RD{wvJI-%)EKDbcJKrlHy!heep5$ov;m*}{ozyo9=EcbrKN`%_qon$jkm zfTvLn{frvfJ!c#zb)4ZWLCwe_EW-_0h!>G{Zk_#^e`d%2;{?~R1b(d^XJ7^9U}!O- z*2W3cEowzAvdgF$xrVyV4IG8HQ4J(BP5NB`wM)jJzE_D%jxG17=mJ|%+hw==LaRG} z1?ii8jf1e=eICJlYc(gKW~{`y9<}IRN6pw(REIk;9(%IKb-iS#mqUfl+AJ)^Rmi@y zR^%?&d#FX&hHCHuvK(v#z0u4}L5*Y~>idnDgL{y#+GQMuH&8RGA5DjuNPC{WN=0kn z2h|dA!>?CQByVtqr0(4v4G=^0ki#h4(DSb^IL;QQLDTYwb+Ia^|$j_)S}GA za$Jk~+W!}*Oyb0C)W}ED3+?Y5)Z$rybl&PvBif6)@EPQ8*gHs{>>ARhbs#T`W!ReP z@u-=pz$$hwq}+L<54N4@&QKS17xdO6gNzZEe+M< zVqAc8QH${$#$g+3#J`{}d>ger!?XP3B-Aa*Le1p`LC4id->e0-mM-{u)<%VeX}3@pjL!BS z7+F}&@jQ&fR#XQrp=RJ4=N)%GmZuKO#D-x2XFKaryX&Ak{ucGUySPdFe{imU3y$DC zKKRicXEHzPP!smRW0-&^F&cx|4V#I|^F+5SMh6t#u4QC0(YAewbQLBiw8PYX=wg~W zm4!a^%zqZ>a0b~zTF5J;p3EXDdh+cF)%?!7YG`q(UhYopaxz&~N5Tke*oMsJt&Hp> z8l}oK5*4bkO%5kS_wlqO50FR6b7Vc~DnqE$l2t_Wr<;>ORHhOQQ7i0mGL!5hDv3ll zelO7t)<)kz=8}mdg|Hp9Y&}~}We15MdSa+-CYfXnd6B$K9wTFj{?dAp?WC(zQaMPp z9JjiYPa}`f&_9k&t<{?={jf1qSNAAONOv+aG$+%k@qn{uNPs*-CXv3RhCEBOUe=L^ zh)OXj2-W;uplSmtCGmu%7b;IVcjIc(M5d4;qVj^~WGI!Dp+kSm&Y`}M=*ihtdQw?I z_LB-yLbee$n=K-T2@^&^aDMDsaXv@{s)R3D^dUe delta 3762 zcmaLYeQ;FO8OQM_8j=tb3Gay(b0I*CLI_}h0s(mw5NrS?qTtIWdyyrZz3aXtO++>Z z3Z+&=K~$ohMr&JC=(HK8wRWsENx`w5cFNdkZOc%_j`j~`w9}4^&e-p7_hhDjRPW^3 z&pGGr-gC}#&bfKLZGR$jZcP3Y#`P5O72>b?W@qu4k$iA{P-3 z>d#^|{u-y@MI49Y%FGy()nE7FYI{peZ(+{u?ui;_ps1a4~!CBakOy1tZa{9NADQJXOj5Vvkt5F%K zN1kQ3p*q}-vvHU6B+jLN9&f;LjAkLO#YMOmd9=OmJd5Sj|AFe~bIi=7P{GqF+iEPt zZPhwrtjBjzd!&3Klf|luW6c19X6nr=m2W3{1CNNr%;>kG-{3CMm^^OUXP!k zo~Sy;NwW&b{ePZ{9mA;l#Z-4TZNlZ9rmL3!g*8%sywq1xEht>TTmI>ikd)x z+I-zemhBMgh4T`Y45^W?Diob8!+XLmTm4Jc14QZ{*MBR_8Kwr!$5cKo631`xa(YI8H$woNNbWhWxAW zDGlnVnh!0(Ce-HY#yR*C)LOrf%D^R5ii`QN+9x5|wb`iqO<0Kc;Svl`6FiAG;%RKe zq8a3W6NN1^ax-}eHIp|`Gr52s{>R;)$mq1@wWy9Fr~!206?hO=;4$2Y=a4_Et2N^h zcDM6k=g%?}^o93PBN|J7*^kzO+6((ose94Yhnydx23T5`J7$%*g?c@%#Dh2z&myk| z`x|N#Ucxe*Kzg@grka9w=^h+~eK;C_j5@yqsB`^iSHFn-Sw8Ec6wgCFa0$-CM$~}! zIs5QR>c2ou^exoHE+Nm)*d(^HW;_>lqX|9iLI!KSNOJ5q&QG1!@irj|b_Z%x9dP!c zcK<7==bcCGjeO2<6V{+6+KuCN{tr=52EOkc%--O?6|yhw6ZCKj(~~Pu$1d#ZKR|u& z45sm8)DrCA$ZWTIWAap#=A%Qh5Z&;tS~EE2z!$4(6dY;P91C zVW+D+fwvNO66)}qL^+}CjU!To`qQO>>dJ(3+T*yL_y+NH*T%rjCp5dYu5FmT6k3Q4 z#2%uXxSY^+H}P#EMyw)kCJqp~yzD10AG}QC*+HShH9qXrhSAy`B}xe$EtWldh4|$7 zW?xj=fI8p0w5F}Z*9i7j_G;rZaOHb(4RIsUL)=bGAI^t%w64j-L)lX9pM;7J5F=gN zlTN)gwPfvtUd=jUEPHlCuE5>IB0|eKg&4l>qi_>3VYor-aX)c~YZ#AlR~8Qv8wqU~ zz1wx&k|TSbT`_y)?xJ#!YlxyYwXXHVXrhVOPfR8D5fwy+|0&u3%aDB`jKN(5Z&*7- zY$BEs?7jbcb-7lZ?f<>DP|+ryK`eDQwqZ4~+SM0p{nxolF*XzRt}g0a`8H<+J6*W| zmlKVy{um~SM_hd(K1v)R4incBn~4OW>nUP{_1Bivx8_Y`&@0~L$NP6z78W$PskL@`JTX4>bfhaj z^rK|ZJaEEGwx(15;3Kht<85g#9z=t-!QMpL3tAJQopjI|3mx7&ZE^q0)1EIXJ?7~cpF_C|T~m$v1m**ee{jSco%JV+0{7THOX dBCSD;aU=pS9Sw3Fc`?5^@VXM|p+5C%{{@?X)?WYs diff --git a/resources/locale/de/LC_MESSAGES/tilingshell.mo b/resources/locale/de/LC_MESSAGES/tilingshell.mo index 272d2da16097c92a91fb176e7a56aaace281faa8..5bf37d257adc514d39ae135f97d2013ca407d8cc 100644 GIT binary patch delta 4279 zcmZwJdvH|c8OQNAh+G39py5&^M^s3FKp+tAND^*x3noNFD0s4aHaX4aY}|7;kWk#x z3urA0?xdaa2LqJpg<7T>1nIy(L^{-Ihqhy#4yB!Gkr^B+r57!BM%(Xi_k_mQGd}w{ z=iNQ;<$0escro!$KmCW1{ksfTh8Rzr>Tk?NTsxQ#uBY>jS%fyaco^s6pkc<;;!=DN z58x1dE%ZD-#PcPbgMY>;IB~c!GjJU;MB41;=5sXcL;5z~!3p?dEXKi@LYPP`9~AY+=>u@rld|IGV*=)I3|7UP>qBaB%^!)6?b$50b_9X0TU zu>EIvKhIZD1N;pq;lRS&3a4W^&rzI(UE%X3oWb))$lOgSgN(s>Sitz^ac;(V`G)C)IoI_5Epd039M=%Q9~7RTWwB%9_MYAgSadcUA3mzfe&ZEVA#=%U6;6_Ni( zx!FxaHJ--`G^2BSHam11DuvIXQv3#1;(MrpEIzcd`Jwfpt)cr+nK+8t>QlG`KORH= zDR{Gpx5=8RLi#ifs2R878r+H6nm19kaSgRaw^2pbk2EMFBT)Sm<5a9b^}ikUUKDj& zo}Q5nY&Z_%O~zGMhGAxmixb_fZ4iLe)Y=aV`_>crVX~P^mtGTKP$=%;Qwx zN}fNmjCm5P$nR=AgbBQk+KPsWx#HV{%D{fC(D^^iO$`md#wA!p{wwqXDg)1>W}LyH z_y$_|ChGiONBu6JA88AUP#IW?>Sq%wV=tgi(*ah#RC3(X^&RoLfjnM zgV)E4eS?QIuoz>}zq{2pttgg=)nFpg;r+|7+o7oxE{Bog(qFRUi1m0C)loTTP7~=s9iu&{)PEaQ184B__!dsal3BSL z*?@&SZ$ll+HdH3}A_vACL;f@A3w$cIAD~|NH?kO0SdrVKrI;-)97+2wRO((tZPi&E zj&GyR_cf%Rvxi@M{0M&p^mkwhAC>5%YVHKC*7^SvH*07po0FSi2dbkkCdROu0?;1*00-b@9ER_pGW9Ozp{}nJZG>v%aYEO2!ee~%0bN{ge3j_EsqAtx|;yFTp=5_7Y z{!h)_Xa5ga``3Hj$4!D55jN~YRebLi<>o2k9%4B$h2Xe<>QVs@At;6H^%9?|sWn71 zv0D3|BvueRi3NnN5@HXb3fHB|E+(ppMMOa8dMrowWKfscE5fG=aA58+`$+?s_?#-&%?7}!&cl(loL8hy6(+!_frdW#;|iXGSiMHf5LNdQDa$ z7W18;`@Mp{4$NF1y?Jr=(TXJ*ON;g+Nrx3V**92n(rs#TlHs!(R}UqwXSKOIow#3` zSv2O()H=uKXOX~)x=DvDCOkWC#S$zao3y?w@2(ho{GQPbKI3%wfzxW)k%;33;VR!5 z|Jy3hO8FY(|NHXncDE^;rD^0f-oZewQI>+ldXEnQCXKI>7JC*U-FEzy-H`3hc zxPjY54_43VSj=-gvnJbpthej@zI}K9$og(x>876J&GB$bj_WyABc&L0I?1RLb3NBd z29CADPBuE3x`}7kt|Xcq!6BKO)16gM)Kp9 delta 3720 zcmZwJZE#f89mnyrg+jwqOb`gsu*ZmyfI!F-Bq5cDBoIJEQX&?D-t6AE3!B|^_bw1> zUC5M4B`Qa3+2mHKEs$f9732rqRFoh{|Fd4XkA}4P0-< zMtlZa@ieyKP2`_xn_6%KszV3W(Oz7DFQ78?Qyh=yupR%5dcKM;a|@|7Q&Easybq6| zW^xHD@j7ZI6{JUNSA%Mx1C^OR)LzKrL_CJ-@HM;#e}F6TpV)v+(~YUc_;m8GN}d}^ z;ajK_U&LmdHKWkcX4K4*flmd#9QY<`0PmqP^AT$8uOR!`v@=>JZB`<;OfTyBWCi(O zM`f5BTAMSdO>zNQ4RaaUmu3vTD?cpiF%^3R;(V>VtvWpXC7=tLK_ z=HExn{1Sd1%V|^@tw1K4GjphDzqxdaxTc^Bze;5(=R-oU9?&)ZAwb)njeq28d6<9vJ#b1aK_j|$l}S8ydxOy z8{WpkKa6`&GkG7$nz@MTsEpzBsF{!4GMlj*_o2TBP`~>S$K$8C21f&z-(7g4K7BX& zZ{ds6!HpZJ8MpBM)DQOKCOnH|)l{(#B+0Boi#t&F4+i(&K)nxskJ>XIV-NldHIR** zUA=&|pfW#{qoU1l82j)gB+KR|>X^)}D{QJJ)G=I*N@X90aTrVRC~EV)g7jrhqL$_Y zY7bmT^%Lf-D`WMjCCc?tnL=d`>O4P*>@Ra1)xa-M=lwi3LMr)q4tvsP5-B8V9Kh>1cL44mj{aveT7S{zlx4tme@}`N$eyvlV0LW#5V{P zOFTm;OPdK54OHcc0{-8K9n{AX%956L$62ePL;9({^#MKJ_El=tR{95 zaiUoC-f)S1#3n+=a}J@>PJES^PTWs)6UA~Xm8XhH(oWY}CJ3z^OXqJ!-Xs1WjfYWX zH=!j_NfX*91H{*eVd7q59-)m^LOe6wyW$%NMBh6HgOsh~-4nUOpBPUnUL_4Fo65e?No& zI_2p5FC|Wn|Ch|<`zBo&8JWB`lrJkip1)Xnva@42=?umrP9iaEov1V9SubV1m}_^( zlhM@f^ZSlwtP}CFPQv!5(or{U(@r#=&6v(;+_USQ;Z)YkjGVaT^7wIui~RR0w&&Yt zUK@F+@|7|9%30^~&EZ1>G#YgiuIF0Edhvv7xRDu3(8T}0w!7T4R~VMbW?X+n42U~k zDsB6-o|j5$q#0+IYq=9~k`XtNKNa3MrLJK?L!GU!Z(Y1}eqDV&Y%8l%LovI?aWZyU zB$ke6JgyhU8XNa6e`L^!Cl*FhgL%gu2{q+M?WK|Z)ki}4<+Fd3Uwzjn+cr6|K{r{L zvW@z=%0yz;NirP<;CPw0k4IvOcqGPUmz&IZZaV$nzj2a7PA20fO^_gyzH}1K~ zk=8lSO(xAfaiwv-r`V?HO`4 SzjV^3wEipl`_ryJgnt9rpZH|} diff --git a/resources/locale/es/LC_MESSAGES/tilingshell.mo b/resources/locale/es/LC_MESSAGES/tilingshell.mo index 19a7a0519b4b1d6ed141e2b8d5122d51c3451dcb..baa06b1de768d6089f97a0c91cd46a9e5943e5fc 100644 GIT binary patch delta 2924 zcmX}t3#^xA9S87-fWtW+!h+;T6vl2+-%k7`~Sc6?ELPQJ))F454QTyu52%5H`nnJ)_D&9UilWMI39LxDGNE3 zJ>0@x9%UO(@&Z0if8~!p-d9SkyreVPiPrNbIn`~&m7 zmpPB)Mtf*p!3^|e=DrVcEFa+np5%Drms2_)aN-4K2CeQohbx#H-dr7ji@lCd(^t#z zF{Mo8SUOc^@;zL}Okg9==U!&Oqnyi!DxcErM!o;`6L(fb@s7mTyp~ZS)1g<7j!a%6U-X@h#BY^CL=E~Yd+a1 zmb>&Y11;hzuHby$$r=1{<)7K>xXtwEa0wT24|D%-PLTi1tHnB+bQ#0BoW=~eiB_T9#bo3-Gm(?b_iLwg7U-N| z_Wwi$@P002Qn{IH_-$sb|G~_>*Oy1~8YZQin3?Y4j$x%7;MW~LFAW=b!04%+UouPe zEER99yrA<@Cpx?Y)^aCT^7~9mU*$#o4^yPwUCo)zrJqeL5?h_!4jAub6?B8Z}kEo+e%TnUvi`&s>f$OLl_S@^?(edZcGP z_i-to;AQ+bv$V^lH^1M&)L$9U$rB!7ZumXQUKwHreup1qr`KQH!tC#dxtxDu2ApPtm)l{GP3RnR)OxX2}0MojE@)+{~Pu6rs>kKi~`A^Dv zY4K9X@oeS?Ynj@(qw>4F#PM@n$Z;-qaUCaf53Nr5BHgmonFo83S<((S9mCpyPG)+D zsn!RW8$ZpYvPJ%lQD!nT-@?3r_Hhl5F&TQ63cUP_w{xNj`v||n%Xx;~oN8T@v9*-> zTIthC5pCx%rhQiI7yELcwiv+7Aep> zvi~!9s`=9*E$P3Z(QD4Q>Xwx{*?uP2*c~XJ%7?bD$^Sny^P?hFJ}9!3XWJ&7@#0!> zX^QB8*eO!spA>1=i{1xrZR@P198*GfiEN&{g02&uywR5UY!m&>!*YbnL>BQ~B8!ui z{+QS*QVn;D4~ewBqFr1gc8L^0D#*(so4(d4o68)WE7B}vqlE0W#%4|VrF~d@UJM9p z*{BXQS}GvzYLN|irC2Nuizy=i05*u*#An3WwlUK@zdA}i-zc*4w}}zrY}-?H4sn9m zEe?vYBITC0MYJ?}&Ap_;8=H6syM=NrcZ#%|#d+yu(0jx=InZtui^OJ;9h|+;A+D3=@w+_`hlIsbFc zO|NfAH>SQX>bl1$9YhJSy{p;#c%^_3%EcaLVZ4M>@V=gA-SL^g7jX#fBRC1q;0U~q zV{uq7vu?N&Z^3oQSN1sGW|p#DR7$yU4D;~Q>=*VW-a-2+-i`x$n+?TTcr$v~2e+W^ zYsU$g#`*X&PQ|g@qz*R(CQ<#gViEn@E-L-Ga1iz2<2VdILCxqYj>C$+*$!$^?KT{X z?;w5IB^-!;S5x zw^14S614|%nFia!`l322!MRw06R`n@<4b{OP#OCL$6;wP`JYVXp5kl=J5e(^9QbbF zxxlNajtd54Gtm#V*29o}YcXU}<|BXB#)s}djEnF!)KXkS?TO-n)`uq!Sx=@imDC9TX7=l`O8yOw0k{N zs&)sSK&9$ORH}+t7Y(!$*iZPx!TazoJc_gNCyd}wrauFpM|F5M z@O#whxQZmxen(}vh;-gY|2CY8)_6Xyz!p@B&*DNH%xiBtdN>OYqxQlD)YAQiY-lUw zt)&4EM?G&jvMSb!>i7^=;>p0jFg244mHbLG+J@@*JzRj@$(Me(BCrXWtUZekzJU|* zE7SnGvV-%n1eak2&O;v`#FN;BgII4(pnU}S*8>l7K@WHzN8)*OunUd3Sb^F^4X8KZ zV_1N@Q3KzL6Yw04!F<+Fdt@?d6NgaW@5d_q9J$pBN0WaBWiz>(-DnL+Hmw!Oz8%9} z_yub1zr|X-jJY_Q-n0bsP?_>j1Kox$?m^~a*HFi;d~EjoPeHY7Q&iOPM$}sEK&9|y z)J$JR25YCV6fdI&*qsGd3df<&^<2~deC&=-_o!$0g*CWwyJJ$(V;4*bAt&{Sf8^G6(w(nRv>2 zu|Rrr-GS9O7kLF(8*)|vswc!1ExatRHhmDobWh&)2&DT3sfPi!E15GoDCD&h$>DE*0U zM0esQLZyzlo0vlX|5OF9EklB6By@^Yv=lnBDrDH!6ORx&b}G||8N_yi zlab0CpM^9YC+;D%iL}vfCYBH?T?lQqWrX(1y@ZN(cx|S}8OI30rplb0Sy)K45xohO zMOo|_oJtJU{I$7MR%gk4w(zN4-Asgu>4b_lU;*I}BZ)Gib9tIZ6HyslT#M{WTSq)e z>>_TIja1r||I8ZTOrnN(jHn>`5Gx23k0>Wb6FTR!2~J$*pOeLSqs$8`521E>JZSd} zoR50X=mT6J6#hTg|CwYXy?e})r)9?F bYv|eOhL~LDu?5WAGQ}Uzo#v*hI5Z%*6s+jehLMXdK2V zIEwt)buJH>1?)DJOd6slnfWju`M~^`k4rHRcVjNTg~|9O#^W{A_kPAXm=wpLu@2SI zG1PMhF%eH=3Jzm3{o5rf(`on)HG?RgItwdM58UqVPobatG32Wjo?w=SiAa;p#QU%e zHGyWFjJr@B_Ty|EbY8|{`uDz70wsKVA#TJn972uwrt=R}hdvtBQ6?7R0@R9Zz)0-D zay*1Z_&LtUySNMsl0p;c#y~m^FHzA9hEO>=hwA8S)Qa3jSS>1rD^gj1J!l;bdTD%W>VGxzi52waI;(iYTAH{hx;v%R>R`>QNN8#d9qQgjx*_W>5`{Et#u$_Ia< zI;i1guo(MMskn?f_ursK9+nk4uBoW@3e;xoK>lnC7aixLs29;WoQXG(F9I*mnm3Dx00$TKaSX;xx6R^dKWYCc7s=NP7|&s&`*F_Zgin1z44 z`zd*$_A=DKS7U&5+A%81$ysd2^H_r^j7l?V!EHE%nn4o7*OC^ZHfIZJ6YoUEY^Sgm zFQPW_MDoD9$1+eUorQXCc>(J`hsqHevnqe@hJ zJ8A`wqIUhq_zYe_AI|4XTA4~D%hp~P2#v6ph8;8<$1DuzDe*WBwP{LFKU|JVO(!Zf z0~m`z)Uo{x8M|FUrSxCa_i|YtZQgp+@oYmqcOXDT$L4+1gD)Vzv74yP7SBt8KP%*- zoVB4=>Nw8Di_ZU$Nm?mSXAZU=S$!KowU0P|!Vd0}S@ua7*h582br>sg5c!T>$1IGa zSH@y~)QH_f zx{2p?L(!&s!K;NX;jqlzH##dY!qu~Io2x(RT#Qc<&k=D%HL*wMpI5k-qo+}Y&2P_o zHIANBR1rEAER59=D(gddE8(ghnsGnz5Ya_wg5#xyN;2^nQLZK3OK6ws$g~kE?S%i; z&gj&Dwi5^44iZs>-d(E*M(&jbT%(B+HNYV37=OBohfZ| zt$zoRO|TuUmr&VG=zMs4`w+(HhSEvs;I$HZcj|o@Pb>-k5Zf3Y?211T8B9%W_65f> RMk9j1=Jdw|j}#?F{|^eb2loH~ delta 3517 zcma*pS!`5Q9LMoLLJOrpOMy}W<+8LWyHo^0El`jG1w?k-n09VqU^+9*+zYk}!zMet z5Ej80ToQ1>2WwnWV*oKk!vn4{E+LUc9u($3n9h{)A(2ZYQ&jxHEJ=4xs%Ej>gkC82`W# zSkc+602g3yT#9^UkK@f|S=&yfFBgtsK7N$@!p`9>w6EYG?AgVv9ILQ9x>$tGsQY%{ zC~UzRyoh6Q1UIR}<)J>RpN&{T|F)e<4=y}~dhx4RfoD)Nx`HEdU~#U4`Kb0b9D#2k zec4Y~hQA|^Sl6y*H)20zrZyh=vn70}zc}7T|F%&Td<`q{BHoU@O3cRLY#fg}kU#q{ z^ea?{mrxz$bu$}=eNhvciS4lt@5U849FL(g^95#SQz_ay^vW^wO)7=R-)cNCrd@U*F~jj zPw1PdR9!%&s)TjXK&z4cW%E%lYzWOFx7tCRjIW}O-8Cd>)`oSw4a-pdO-EMIvKcB$ z$u`tXj-noT7jMT;QNIfXd&n_SRZt zY+2h)ML!tFa8VmlhihmL*xiZJpeVx?m;kGMt6Ar~w?tsrW5wsVZ0}{a#d} zCbk%LtdrsO{n%dT{{$6>FHWIu_yIMbPW{b>;230bR*%ZedaT9+I1RtXMl5IgRk#ZqkW7T;8mP}BL49k71cNm>rpd3j_UYxjAJ`S=iw@xgBMW)8Os9ec)8dO8&P{{L+BwarQL$sQ)h8J zUd1*#{~Ks1HB2DbwOZc?h`Wdg!SS_?L^F{jwC*aK2+d4`T25%$RF)A7iM47_dJqLf zN8$!TrJlHl7(@U6S)SkLL(9CubYg%2KMZIU(p4;mB0_qh+f>6el?Vx{- zeenN3u*C#RV?MEjm_p=m% zI~(j$o#Drc`-oyf>))N2NvO0XwAQl;{czk*sA!$%2esTL)IQ-KmEbp`3cC{9h%SW6 zj2yNT#}eh5|D)l>MWLdJc!*d{#E5Z(iZ)&c!Xbtb{fO3O3yl;}9bSA8*}t}wSVwFp zu9p>5b}0YB8sOc;RN^s0JGF?IN2s_&e?ljsH!*?WWCs5^sm1H%-mvm8>YS&;cBjx9 zekAVH zCDTzi?W7~on4hsJ(U|AdMw*homucD45}{gUJ`ZVuID-t$BV^X<3c7C z=aGMJJFDHamm7xp88;XK1K^66OgnYH=Oq&wSthdDb+}R=Nz}XXmgYVm@rcvlCQiQSrQN;b`uA=b-+xQTqIjHl z#4@R5Cg#PGiI#VUmK9`ENk8pm{8TC(Yh?C*g2DNkQSe1HwmO#iAD91`UobZF$qCOj mJM>sb1~tk-;e1{C3*PM}((ba7ScWmCouuzX5(z)0RhPIZyBgwUwNkJ&FKA89 z)EL!dX->B2)J)E#m7`8g{^e+vjX6^}mC|KOot)|W+xOM+jL&|~`|j>J?>WzN7I!vZ z^7^jFh8#4scH#-5GsKuLv9u>IwB?b;%k*`CJXT%X7B z_#2MFVNu4U;w)qepV>@jAU9f(vCUgJ7(c`z_zm{JJJ<*RvEL7mHYSPd(Krg{;z(@4 zzIYg!)11W7_&M^={LYKM_W(1P-z4@nW+pclVJvo_9^@oy;n2u*{|He$N z6WNX|T#S=&4^GC5$VW^Mo>Io6CLD*Frx25|3Vnpx%}XeDU>?4Y`ob@mf573>(BmArL&nE)9^HAqKUI|mStOs z+QK%}7JrNr@D^$!2QOM#j_o|#dfQgiPP~aqbtg{22LsrD3f|=MZFbERAY+;e)DzcZ z2{xlr^98ClZlY4ug(|XOwn0168#T@l9E+K#@vBhZt3jQXwW!av`{=M+=3UePr%}h| zEBgao_Wcm{m4`Nca1f3|4N#1#=1NqRx7waS?btQcjzw^`^}xAE-J02`@qATwrx{s{ z*@x5dC~`hc7m^ioA60}g%&rNaM9Ra|p>}2)Y9WVFpFf3J_%&)rgZU6cm;@Yw6Ooc)rXU;(;tKWZU&Q4@tFTMHSETF7M7{mNwae-fPy+~|d!s1={ZQ2Z84 z@ki7|sVUYEPd(~1yp0p_GV1*(@;DhwaW1wYn`EvbSui1-Mb*eyB%5ZYj}D744XE57 z!U{Zw3o)2kLU0M{!IqHL8@R{!D@jG%HfQ88-EYA_O8k-5wP)CA`+3U44;G+n3_59ILc_hC9Rq*;W#Wp<%< z>@#G?eC944J;{XeRt+= z?Myam+?A*r+kquI{~dIci`%G)`es{y_44o;uIsQKuiz>y$}xdITE~&Jn%meD2UAFW zF$rTa4}(zcMPd!1Q&3K*RS^x$Z(br)WNP_@@}pxkm3V=8*mQ=M6Dl;NKqp5{^`RDR z5m-zm{bd9v@KICY)jqni{u27)>>JAAUZNjSX5Z85pC#rIPGUc?lZYVZ6D@?Qy@FUr zs6LeIhi#$VSz`M#_9q4rI;IS|Ym*Z%0a!S4mNUv|t2pOBoEo}8B9 z$Vm4m4=oJo7Z}OqSmSE)G&VTv+$}9mZ==6<8&amMB0ba9V8vpy9p`i zBBFwp0;XEEGFt6;!P_4zosPBB(&<#~v=oMk(|Q}cOhbar4B^>x^Y0nWtZI2VVJA<~v#XjVx>Au@)|!fDuy)A0rzg9EPpcD#c6 zF|5U3;N|!UmSSm<8FR83I0KuIugpjNt`FzqBe;U`?bj5VX_!)MR)U?ViF7&Rs0r+G z-`|NBQ-2UO;PY66Cs8Z?80&EwooS#>RDB=L#SF4|`w+_+-~LKLGrVZBSp`<2GSG#B1?t+>dl^KXsnPa_YZFjq`6z*HNgTcgnUL3-Bgv z!4T>PPv9K<5h_!Ez)q~1l3Pga0A2+Nu+%!}l6$kB3qHe1x;`0;>ON z(xczaNK?@DxeE1%o005V6xG2#)HOQlzCYpG-$1SSw|EJD>b@`J4(pUxp)$AH*^kQH z;8X4K`9+K-K+yQq6Yjf>MWc?WuVG4%g5!Y6t6*LYzt}uan#}4 zi)7i3pk6r7VO1Uz#g)`QBi&D9$7Ni++k!Uh^vFv@H^hT7|2q7LUUDs}JT8l1?q zTX74v;iISty@&K|e?sl;B;HCMR-)byi%|V_qb9fms~F$zrl6S~N9JO~s6%%Fbq0#~ zwI(nfwP&5!fBHuD_5`NWG$n<6*a(9s1^MHHSsg3g`7v7`U$L#V`9zDO{ji@ndHBn!VhUs zho3v!`PFjj_hAQ~MGa8F{%~BZ0oCF4$icTh1N{!QHJ8-oGPfAl zQNOK@{D&!=qCqQZn3Ef*9kr6JsFe)3_D66b^%JN){|oBx{)GiNg?(C$(@ z7Ij&7{D#+XB?eLs*K3kh$3t$XGUvO5Hf} zsnoWiCXz;-g;$YRg}sH!+-Io%F6Bq6uf&_M50!yasQ-WL9SZ!jzw@DiW;f^V?KV_q z?m%_?66&!123O%9Q3EtB$o=oQ4R=sKj63n4cq>LYFpKdFvi(-feviX8EMu2`ZX|T84iM^xvzg6kfErIvDu<;*u5ds0 z5O)!~T${3@+rc%qYhBw2`zdr2>xesvy~I}tJ+~0wBw|Ddv647Q=<%|jX7}PK&1XA> z0oQn+QwOn%c#zOuT|{VW^!UUqLR+FMr$eWwkWl*95;`|}v<>lWiR|JEqLtW3+(6Wf z8(~F#Bw9MsU!T$KVp8)76h+k~rk*Wq6qQHZeq8L2M)vgr0|pe9PQ2 z;jvMf;=-eO&FzCRe`loIk46VQKjilYUJ&jUJo6G!qIRL_IxjhM8ify zvNswD{zu*G4<~}$R4kPYXJ^4AXbIv8uPYS<@t9_p^!vjeE!}>sI~*N4IeqQ;#=3d+ zb@dCp`SqC!uVZv(clDXPhPIF&1ilxFU%wrSU4FZ{Gq&gl|wx> zMVX$O=J8|WUNpPH%)|8?3x-;nr)K6fUp6Y;OBQm2NBuX4p-6v( zME!qXe6i^4^jNp=MQbD7@tE%=Q&F$ikHwfEi%!vXBu=lrWsH&Zqx~8??(qjHR*(qW Fe*piI**O3J diff --git a/resources/locale/ka/LC_MESSAGES/tilingshell.mo b/resources/locale/ka/LC_MESSAGES/tilingshell.mo new file mode 100644 index 0000000000000000000000000000000000000000..38478120dece5901307d842727b22cbfc8882a87 GIT binary patch literal 19357 zcmds-d$3(qea9CyAcpXiU{#=7P)U#*5*}%|1R*a-gghjdgi>qS_uhT)-Q?V}FXxd< zplCF$){c+xMhbd)h}4!cor;}Wtqx_X?bNBx^bcsoPMp?uY-#_feRH96{O7(E@Y~?| z^#2LG96aeH=Pm@-fER-`@O9v$;G4mx!A0N;;JM&mgTDa&8+ZbE3X`t~7lSsx6kGys z1TO$@2j2#M53J)7I{1Fj_}&Aq06!b>W$;q^C$ac4@M>@n zY=KvT&w-}zzXbdr(Bz$dn&eyv4$xl@n!XM2wcv-rtH4iyM*j_P8TdVL6}T9swt`zg zRB)dH-vmAjBEo$gw79$k+WH@WX8*}3LrC2^kkGg-pvk)hyc!$^*Md)g=J$ULcq+lW znEn;uaxeu~f{%d4|68E>?fU^2V2t(84Y&$~mAern^;`l%>TUzy0KN}2y&eS3?~j8P z->-tG?!EyMGWYkO+50MJ>wgRyztaeg(Juzy0-guj{Cbf8+|4{}T^+Q%z8kdp$HVyZ zpxN;vcnsa|<=G#D z060)G=+hqFx1UxDue7ohw* zz^$P5?*eZH{~Y`k@B)g+PVhItm%vxRzXQKO@p>M-m*71IZe-K^1NftWuUx2gFTng3 z#@}?2b0c6o;LG4g=wCG;y}t(9K3R;he+DiAP42&f_krt4I`hX%;6H;OBl)fZcauar zz|Vu$Kj{+nH-Vez&ww8UzYkizOFc;!^VJL1@B~h6-@Vne;DvGh_}#x9yI+ItP}14Z=wH8 zz}Fy@RB`VGNiFwb@Ppv9py|DQgY5b^I7a_3!P~$U1SGhJo8Z^5T@Hp_zwDV{u(Cml1+;;z_2Wjbljew+| z|7AQaziy;W_z}hHt-O;WKG(N`78_jPNOylP_$4r*+3!Sw8wPjL-cB10V+JkSPTK7> zt0m@-J80&w{P%udme4TY)o4FQtJCa<%lwa!`dWyq-QBbcY38%jY3AFLY4$U}*l#WE zEdQn&$5ywrcDrdl$HUxR0j~t#7Tzsa&F^dnA0M`<`!(9RG*Z?7EH7V6v;5D0mOG1R zZQ5R%{a#NyjdrGWI)1O?J*F+7y^+Qic2l(X(CkOZ{qI(u7W+NEr^hA0`)J40#%K}k z2HGTzt?qLc@V|2cl8UZLyM}fO&GOxTrwaW2VYGu*(dOQ`aX*SblE3UWtp^4)9Xw*t;Ni@|+cBjd-7c!f3GpQjX>85pS+O5oV z8;NTy@oehJbTpmTN3-dsY1EoXqT!^8cF1sRlZkkDnzb8lttq}FxnnA6q?1X#71yG% zByP1E$x^pAYm6q1Xe6s;5H`~Kcr+Z3?DD)uld-s6YeltqPu6ZV=bCONtrqK=Zk;)+ z=GIMQSu=@7+D#M=oWq!D=tV`@nAG*+-MXwkmX4#4AB+pn8`)4=Gp)8yBsF+<5f0}j z9)d0yFq_J&nBJKXnIi7%_KXmr+-CJ!6OF7rJ`u&cF#_$qDY3a=kbz|fNkwrI{nh*6PSRl;Zv8UNeCUa6ttkJY7 z%|b#n+vDRTgU{u#Hb%%mBWaq&Apj%U@E70hb} zW$u{D8XX39buB^TXv{KmgC>f+>FLi+shL)CM@x*Z%}BDSZha}~G~%~c##Gm+C10>5 z9?o_v*GAfn2F7C%tP0x$pN#mEZnv|{9bduD`kX(Y5N&+^S)zcO}8TN&u z*-b5429tWyh-+?ROjOfmvz;_Ail|x9G?m%h8FCl)Rx(5Ji(osF)mx2pxZO&wb{p|R z&3mFJ88&7$DHD&h(%t@eh;}8^U>Hxu^=OhJnX-%g_G!Ag$fqZ)^iO8HZKoB6nv-li zZIug0lO9QPE-fgP&E5NP(`46v?CwTm4XSh4kzuOXkv;ti+KVF26Wi@pdMGJWH!Yey z;p3RIo>hZ4)rnm+P7=85lRd)}FMpQY5YC*h)i z8ncz{98&7t?YQB?sdKnvTg8neb~h%<;b^!$PUm(C2N|6g2u4WToO|fyiELej6-SC4 zs%|?4$ZeN%?fh@L?fxzY&*IcFucz9XmWw$>Zi7D|wW{|9xZM(c6B}g2T;qH<4wW&A zxuLKXyK~fSpTz#0q!Ev%ZB**MxOR8hL+s`WDxT<+8dgS&D-!i;5-TezpC6mO3C&_I zt$ur2s8PWdR}a zUUrF|ogIFWuA06?kdyjs*}_hjVJG9 zO?|u_k0%2|Njy0iU6*8y@sxtFdPyC}qS?}tW-!_nFWkIo^M+FU70Z?{ zC;iZUe)IwV9+n>1_ju$NJ>{RDIk4{u&)G)BlSRm8l&AQ^Z$Hy0Qm6xIF~^{-);frO zKi63l42!Gmx} zo<%l}5Ce-C;$euAu=*YU0>g)*+(EdB70eMHCQ6^uVbpxohbJL|qtr(TYkjnb!bxri zz<`%sRv(x{hR!%g6)iXt)#)?M92DM$YDS%@HSfjp7Qzn})GA%PovcG5)7acqvE_;C zbrPxaiGA!G^Ae8hOBZT{{9>lM1N(kY0V-0r;8P)hjK-B%iek3h>kR|sL#;AknXU38_R?gERM#Zx@PP8H@Rk28J=ZPfDmbI7_ zR#cv-b91W}t0?hAH}sK6b6SNyaFE}0Is{Q#qSPi(yvVMDT898rA5a#W@JFB3qqL%4!&V*5IndeyBKd$_EW(z+3Z;8zPE zDpCjk|vLx|g$K#lu*)R^%}A-6oroLQ;jOoxTKP(sD16%wh9Ta_EQ_z^~b3Jk*o z6o;Qp+m3n)ACpx3Y1U&!c<(ZOWs{9`HS0Nb0V!mG=e-9vloI381tr`X$x6MV%OM=O(@ z1f)i|H5iRQJc=*vu$F~XC#12W>*{k@npAMpO|dxL%ZrVIY+t$DIFODGSgCIVgiF7N zFJhj>b~5Ta)BEKi8!oCUDzC&x6 zS72MO=veCJ0aF5%RYU&k+$-hf;mB4K7Wo84Y-_0mp$csK`iPiQsUui@Fr}*Hg$jcY zOUJ+^lv90}E9s~UGqy{s|I&2?O3z;feIyoIc2*RuU<0YBlxaXrs0`X3%n>XZOeMr7 zOC@Z^OhzHn_M+~|@GdrzHD|sd2tP@@iGwZNU}bfSPW3jDo6(THKxqrK76bDQTEGCS zV94`68-ow8tmyiRgtCtUj5H}|Wm?CI%l9Bdc%$${@DBn_nU2FUtdn-d3Y;^O^9)Ya zI+-B0P%x))J91#y8^^v$m+@)97UVteINJuy@ z47`#k{LnF!OLP@F{Bw*&7s1ojQHk=vF|@rK zjwf-mj}zWlMPxC6A)Z*ppbjM7AGUwNmFEFbSNSUcYN{dm1m9NO-N_Pp9V%{rCbshH z0U}E|o%l+&kYVJcszN7T5NJD$6*B4&j;p#v^?64$F*S|T~b z15Ka`(zFkhVTuW+70Q`gm}6-6{mXRKYWxRx#9%W+wn)|!jpC0NfmR{K=@MhEmp+6I zSEHhsgo6ubF@a*14%H!-TaaFQ9|iavhaK!qA@E8K*!QxK{AtnlGKYxpW z1)({@0QQRS{URw+7Mt)0+MB13zT65qkqVNRi>_+_Wn`f*ms`ytz+Rg1rGCx z-O*9DV12NwHAG=|_I=>ZS(l6RJe)+-HR;fAIqts@5=~e`uY-+5Ql(MJ=Wq$PEm3In zCxyGRxI(jVnC5p685qtkOu#}inlQ1{%6`ukvgeP~!2yR|=!@-#G}}KUrkoB(9Zk4i zjSW;^6dyq|LH}IfiQzV+X@Q1IOuBDYfAaA+6zf@uH_;jImLCN zxF8`Z+*D8lB5AAp0E%!|ke=alV4kjn=ZrVdsu(sBE0lzz?XOPm(n2o4=0XeP!9c!c zLE+xuHcW@qZ0JZ3{LC6t81YDCHA~^DG%<6D14BmDDOmpNbUfylH^_r|M{KN2`Lib6 zKthcbU!+Nsz_cJn6T5qN5u+FM_#;gA7Fk%%6)#J2*5WzDg{lcH;;4DNFvrupP}U|o zx_lyzRj6NhI{#y+oNWK>kJaP{1c*S7B9!7?anFTmdFL#I2G_F+afC+P=$5%zs8#4> z(SW4$lgQi&A^Yk{DL115Vhp9sW+*5DiF{`+S9YNYj^?R|*uPyVl+-Ht1VhW^%CLh~ z1e`=#!c?wqLhayb_kRXZ<6Zy& literal 0 HcmV?d00001 diff --git a/resources/locale/nl/LC_MESSAGES/tilingshell.mo b/resources/locale/nl/LC_MESSAGES/tilingshell.mo index 86a078e118aecdb1130d0e51db214106c1fae30c..c2dabee91beb111b3d95de55016bbeacfa6d9583 100644 GIT binary patch delta 3039 zcmZ|ReN5F=9LMpm2^U0EPzg*C4ao-(5K#d|Kzsm2AxT9FpR$ZgCX}XVaJ2|<<#Jie zKYV~SXDzo_xAm}6H_cfs+j6tnY-v8^Qn$=nv*ttZ55IFa*VY-|-|PI&z4x5o`JQur zleyo66YvO* z!JC+Y$$iXvVI>a68swvZHBuQ$Ln|iXKJ?)+*ZvKT;{Ga*#DRUyQg8|m#1+^N*Q37I zhFRE!C3pcD$kOM%OSyDz{D?(31htpgMA zedMe5B@V*VsEOUcSd8Tohsih&b0yId~W9Gl$ddy&al5cRvSP^aLu`}~$`k6|`cEeR7b2i5<=02S?8KPp8#oCi@Ux{S(D zJnNzdEkX8^RiiqrbG9H~wcR)!KSmw5TS&6Z$2yL~MAUfY$SPT20~MuY8)_y8P(L_= z+4uwMz0jA-2uww#vI1w|F4S6|N6kEi>4jq{Dx>A7nbzRY9%c=w2i(q}J9Pd}QPC!> zP4b@jQ|D1s22Nlx-o}|&G|X%&wxiDTapcdw<)Rt?hMLgd$e$&!UTV)pWvCeSVyeNB zI{)pip$nCgGpH0_$H~~^LC<_#!hIuZDNdty{}t4Lf1w75BMl_OGEf;Q<1!oTu>wEC zVvHu8;~C#7RKXV11AKyd!<|4a#UH3QUlfgLn1wXiQe;eP!F=5ByyQ&gZKg~u$0F>& zX?Pxa21}vSfGVX_n5?Zvb@&=;(|v%N(FKge+c*n->>##<&BIFc<7zyF4VX6Co5&vI zCl*9aH@L73Y{(e$Uq~g71<~=^gi2{UM&TPc9rt1hUc@OlHr30R-?;}T(S8zh zFp4x)VKFjU+l6|Nqo|2qb@zS7l7D?Lf%j+kF2yA}7ecKpnTU7>ze^K8B}z zOI3wxZ$_P>S5O)1L@nt-R0d9B1pbQp{_g=Q+U0jp1Eq7LCoILjScjUyMpQ?guKgoa zhsRJ$_9H5#cag3vk@eG_Dsyf|W#~gxhOVI|9!TM>pvqiSN9#}n?sV;kaS`{IQBPcu zin;z@)V)j zsjMP2<0joul;$X+H_?+&d7RMEQU?C7yvzs6fR^#z(ss{Hyw1PMdXMgFIah7A|CWU` zaJ20iLMfe1sA#!DWib^JY3m4Oa|YofR5laZL!nYcCGZ@V)dWYkyF_x;I;oIhTS3$j zI)mMpxsk9RHM6qjp z4B3aajA$li5uxIDl~5P?+?NoWh-5;W^$|kl31T>rM(CIq5*#QC*Djq)gvv};S%Ms8 wd)D3eah9T9EIM)x!Nlmcp1~{qu15qf#V_y$JBO|c4=x$;YE8afl^w9mePx8>2MLK&>~XGwPH()VqI^{Vw{L!Y{Yr^0cN7P!8Z#hbD58GaUtG{ zT{sJmpql&`Z^AQ36G?NC$^>p)#bPWPZA>~=qVCt=bPVA%+>5v18#oR>$1(UD>bbx1 zcAU=5I&8rC_!82g`6BRVOs9WynaWtcxQcn0lkGP=4X1Lw7&W61-iC)!9efmAU%^>i zm*p5k-=+}@u@h<1?8F=KIn;z+L;lQZKJw__d`)FGUJfi_G;_Faz;fJ=3-Kf_!oQI} zvnbbh4XQ&M)zKC##e=8}y^kaD99H6&sOO9LGFe8Yf{Ie);NAEFY9<$OJYGS~q>%Jz z?WUs|s6l0B6KXH?V-~)E>hM)ug0EvW{(*CFZoV-k7|tjEs`PV1DSQ`|;$N`>ClvS{ ztwqhu4cr}gH1HkN0M4Q^^EGPi|3vn)sbsWF+EgRA%sSNbZXx+!Nu`$?TANd-P4X?W z8s;LhFU>G|S4MJB4Oys$%TdoSz=^ml_`VI9tl5hC-2v3;crp0?RB->ZBo+EFKVlK4 zk#BWSjM~j}P#M}7xD%DB*HD@I3N_Fi)`fj&CZpOb4_u8jZCbDfx1)~XDJ01zd76qg z-}k5v3wa5!+@=bZk#(q`7`JEn1X+zGI=Ajs6_|0=EqPozknlfER8Co zg~&vcW-1kpd?9L+twbhe8c;8gZk&)t>QFN{QOth95thGM52I%EQ{W|3hOXdJEM;Am z;by!8kE7l%m(kMsze+_76i@PJT!I$Yb*TGcR0`v$0qsM*h>i!>U!gLV#WXb$3m4(+ zz)o!B`W0M?8Kg@~wo1~!X{4fK(}hgZY(;f=1eM}9k>8q6a0UK__h1#TK{a>)=iu4E zOx{`=&>hGvQ;%A@Uev(*a3&tdByE}Rs4xkW$+wkQ8rTu|3MzF!U=>bfqf}!XYGB6# zPb0}Rmr(8HmH3-j6j1?#XK7vsQ8@~_nW&J8(*_vSoYkMpq)*W-ss zlFTGtmn6X~N6mC|aNQsHHfj@pgSmJKSK>%^WIEQPHunb9F-;_?TuQR|!!;zRowX+NPsX2)1=p<^OU*c#?HRj39V zP-_=MrS=dq2{VAo&|qNx?S7_KpfdFYDl=~feuHW!iyx`OGSv5L@d4b13^-}dP|-*R zu>vonIxH*q-_@It!J7oK3g%_hDftwu@e*pF6?6R#@5gqodvF5|VkcJ8INQk_LuKqN zX6yW)r;@{s-%u$|V*_YyicmACK+W($OvA?rl}89Yr;RpL9-^`!xX{raDw>c^nu<20 zCZh7-&_kQK*p#~EpXmhk$BA7;2eE=!N8C?5MW|TBenNv@OQ4Qr3WwNE+(+n~YrRz}iARZi;$C7o zF;vD;*{$_gxq+xBBE&reOO|@`@g7P2qwz4R^bp$3DluXv(L!t^dWqG4ot2HM)vT4R-+L~E+%f8>H2T=(HdVi+;LfA*-{q_&<8YMjva)9Zx|lKSsQ zBYMObqK&wYP+3A~C#mH5q_$=i_0a@JCRNr4K8ejl7qO7gD@)}8<*k@XD0S(d{JW_~ ziABLZkwG*OPZM>-ox~Pm7NN7TmmmYFf6&*UN;WZ@m_~3SOaqZBRUt3jZF}LUYuT}Z zx3ap2)z%Sd>QHR;!!u+Z>N>-MHt(Otqs&ExP1!w{_smr2Uy0*RD2} zj>$+yJ1vKnJ*U-)@Tn2^gxkr854y diff --git a/resources/locale/pl/LC_MESSAGES/tilingshell.mo b/resources/locale/pl/LC_MESSAGES/tilingshell.mo index 1ea4bb8b862cb73692d20130a220f82d66d33e4b..9d64850a0076ac94e97ba8aea6c407005419e913 100644 GIT binary patch delta 3383 zcmYk;dr*}{7{~EFsDPj%peSN`yrBXjHw6(xycCIwqNJFDM?eKZl#2>VC+}Jr8e^q4 zjp;Pm&C!lJSus1(VVA^Q~EmwGfrUU8od) zfaCEeR7XxeG_wiTdDcqnPE;mdM=kX!d=xwSlYch6$>7^$&150ZH2J6zS7HusKrKxx zYH!>?Em1pallhSbWu!OiIfF44lTptvLVd3Ubz0Vj$L4c;L%Y4+ zmAo=&6ONBy9O?lxP`kMhwaa%}Pogq*4VAHA&b9`ef$Uo|8}&SQk*#b%CS&&DG<*j+ zpQasI74tW06Nb{eI-H7Z4^x54%x2U?4x{crgDLn0Dx-ef#3RfA9FD0-X5D5nmFZkK zhU)k>YA+-Y_GMxncB6d|mFmN&nIFd{2d4tZ(as~Uui!46gF}WgORPq9_$dbBE!5__ zgWmK1CzTmoh#~Jf7Im14M^Ss=8gh%dg-T&}o~D^ZA$^-P)O%tfDg#BROx7Vkril-| zpibF#8|pa@-d165D&bVLM$xFXS%4Y15;O4)EWn$nfn@U5(Oy}Gn#o$!K@v8C1tzIAc>W z3bU~YU3d(Y$)GsjE{{U(nH1zem~7PdOXA4CMz+b`a0d0FxPt2NIx1y1F&Bq2Dkf>F zkujJ<){EA=NZ)24>6nAr=)?o4rT7rFH`-83dEad-k>slv7c#H}b1)xIpa$Yk9yRh_ zsB;^Gn$c9Ozy(NFO)Kg-w^8?ZU`nVFsw2N7-;Cl=_svG_ky0cHW-D@%%}Lw7iX_qeYmH6zw%ukS6@6hlax#p^`Yp2I zO$R!07{gTxr{R2Djy>@s49Ckj39lnbGg0hp{XPfPaRKVs?m#CV#p(L{-)b)ejrZLU zi<}gbjVrJU%kUd(R;qnNqV8+QVCkcG)@D%Ai1!kG ziCjWu6|tU}N4SU=iQR-|JD+GECKCBX9nphec^{O8w)T|u1&koP`vmLt{%@qRkrrJCv6<+u28BK9eaBBhy^v}Nl_z|7|7T#oc}p>$VMKth>HTDnn&*iX z#1^8GP;vY5v4Gf0#1lG7WrRu|F@#u0_!AG88X8aA3yZOUNFemmQR(L6!KWq~P0S)H zbTzBEwrritbEn5kem#ooYHF)0oyAoZRn?xxkOPk9+|d4>+R$GDJmrx~y7kMiDRtJ= z*VL9)I$g!ZrK@Z0trrKqXe>q9=Jsg2OK@sCiIQjHhYn z&we2d&h;0zxN26{J6C!8s2=f|quD(&$@9s`tAU T)3r)H)-`WVjqo(2cJcckiK`urUttg0S-_361%`W>cd&xEd zSsHGoRJm1STdk-wj`U)uu1s6onL-N{r|q;e44sbCu~ex;>5LuQKiY9>>G!vL(my)w z^c|l4oO9mnxjg5b+o zhFy3OXJhpwV{XEw*0oqiy&GFGjq~yA*oc>rA#$dq+?bnbC`ZOH4LA$iu@)b~Qq0=+ zJvf*8^Ed~8inrp2I2ET>7{i>*Je-GZ$SdQbzPA%w@GH2U@y#zNw9`;kY0PBoLQN!O z^-&YpZQt+1Y1E%V4fsv0$8)HaUc)AwMQ0kQ3soP&M$99NH}7LLB~HT8n73eakup~Ttxi}F2qrfC;c1vT90^vCRzB7hCXd>_BbNVboc96}44oP>1g=)E-|(^>Y;) z@b9SpgQQ2_o0p@Y>$3#)hntb?ni#5sA=EWGZr`7=?Qf%2{2QE!AKCZi++m&aI#lL5 zt^KIXokC^qSEvc+0(`rI!W2}8L2Cz+4D%qa!31(&%^74H&5uxr@zTr&xu?5HD zMqGiqHHWbczl%B>e@6N=AEQz`lV2sRv=Lc@=|ugG#88<{VUY37lN9tz_PQGI9aIN5 zP^Yw#Ul;9J5Vg`xxEyiGM3J6^}7807BgFg<3?SdXAOei5}L-?Q}(P%HfeJF#Rzap3#$PU?NQ z9$#CK<39!pf1^RE-9j(A1%0T)wGX*jW*9Z|JZfS;v+qloy|$#*q#kmIl6nJe_0MvbQ@Q^e%Lwr~P_i37xEZ5sbV>`LLrXp3}y?j-gQ%Ltu(UE7gI=i@G-YNSE?v6I+h8>V5xmc zKe3A7@c!3l(6%o8kGGqtPa$-JR@!%u;2dI|tuNR9-)$>5VTj;*{`+aNCEZ&+9x+fT z6@PqIQ|_|$Hl9)?uB9erjXNeM%e{{kNqwtznpU1o^-~IIUzq8jwGF=8}>4(lP^}(jO}y>{7gEP zf1~1~v8BaI{#13SBtK);tASoR3P)m*bi{F;v=@sQ8d8avm;N7hr$3TR7pGz}sYqcK zOoEoQpL9Z*blQ(=b}6?%;?UCL#(N^Mljmx?CpF!^u%+E;ZeF^$wV|mcU+Xjl0&V&3 z+0#bncLmP}R@qe!#=VFW_7iT(&u024Imy9D&)`7TOQj=^`%WV1@9-jV&vpDz(%s=_ z-9kAUcTcXUUz88k|E{bw6TL9xhV#oBe_5JuSW-PI=Y|HHOezyUf8hKfC+haH?o1KK`$Nj8tG8cY0(8nwW2YS3zG~;AbQTM`|aWCpFaMa_VoA6RD{lzjN O$Bk!V%y9JiL*`$v8`Iwa diff --git a/resources/locale/pt_BR/LC_MESSAGES/tilingshell.mo b/resources/locale/pt_BR/LC_MESSAGES/tilingshell.mo index 9e97fd5bcb1e632d6ad81c5e26da7ecd80219f5b..ba9f95045bdcfe03b35b5af2f0630818914549a9 100644 GIT binary patch delta 2924 zcmXxleN2^Q7{~F8fWrYq5D>^zKm>VFK;9G(R762AAP58P1q&mvQWL@eJ>mJLmBp*Ymlb=bZE0&wXFl{V>vb zx!vgnI9|sT&I9I|6=Eu8;!e!LAq>US zcpIKY{%o4VQZtXu(n;ikJHpI`>Bt9`gXvg@E3g++@fD24^B9SjP~ZC<^Dt&U4~<(; z1C5~WJBHEtIxfW17|Zx}fleA1E~94P=B~L|j=JGq=lnIy;d~1Dss%=wC15mi$+GZP zEJaPA85dwTYQP~}jbn~qVLs#gzEuDPe7giYu@uKqPdwxJ4{AUc7d22KuEJu}igaKI z4qzD`$84OywK#|Mm>J`rKp%P*ap6fin!z|KM<1XD`UbTkv#6XWG79OoOw>R{Sb^o3 zkAs+jA3FYwIh=VT+oesP(SFyWE@6){uc5~_9^Oz zQ>d!{#rfRDbaZ_YYGxT6mS6?y_id;m?MAK8OOBHsI$EMR)Dk7L40_T=q&}=2`N(=4 zpF#fY6o*Ru47I&nIB87s3s2hKR{Mi>Al$u%83S38}C@P69i+QLSm7?Akji?tbM(JAFZ26wv$ccXH74)x;r7Fito0kw4hI_F`_{7amQHC(SlJ@^Z_4yP~=qgbvr zxCxcgeoVrrF@f>zT{?Qw&r!LXLk*Nd9%L~pCG{LMlWyFIFQRTdjaeAWhbpcO$X2&5 zR7wt^W_}W>S9=@vU=!%u|Nqem=0X&&LEShGH(?8w;~4J2A5k-?VtvV$wIG+Q*YRcN z`gzoSuAowqMkVTj$}j{Q(0BiI)?YIpywd~Cw?IETW{ z{_K=<{yi%9L3~(*>rlBpfXek#s1+JVhOmpsGusW^ifPPJsr2llqudPQT6_+*Mb*L`CESEIR13kA`&u!_P@>U)Y9~;yGgZeegvv0AxQl2bC;&S~ z+)k)<6X8S?(Lt0DN^lynPs6Bu))VsxHC2b+lPV{bWFeu}KpY|-Aqt4i#LcEkP*Wx7 z%~4IL+Kvz@#CD>N=q2_LH(Rr&xxhJ7JwHsa>3t;@gxj0FaysOHNgW2~ delta 3496 zcma*pX>1i$7{>7zp$mIk5U>ARg&t_7+~q=0N$bt63Po#|gNkn^_lpEO0vx;`~J%hbM42{*I%t zq`O&XydC>vHS&|K#p}&dwv|dD7xrN$e&GLLCvhm}7jX#o?O`?;r($pPuqUoT-PejY zVLQ&kZ*d}y;wCk?A~1<+XCvm(zHOy)Ef-!uz4#E8;QOeIE@CMb=lBgQMV)WKQTRI2 zmVJ-?@G|m<<>s1Qheb%HR*wAHG7f4lf}?5QHmZWJ;u!oE$6|h-Ss5sFC>;Qwyl%aJMq3#(a#TGH6B3*)CK=hfyPP z614_0NP}fzIjDvTa5@&_7`z{c;q!qfP$TvemSSNa#(zAOg?;=6Hls4x9r#Az>A;Jq zhO_(nBhd>r*CoihwJ4I5C6GVc!a?`%#yR*BYAPb+iImU$zwW!n(i|a;xpc8F&b_?JgmMW*wNv(bx~wUKKKnmWor+kZeI^ zvKRHhQ5=h>QQw8m9E!07HI#F3ChkDZ`B_xv4(Vm!4Ah8Lp)$P_)$s^wZLLH4ma=VB z^ugGNp$-fkYFA7w^cy;YT4bFZe=c+I2G09qCC);vfhTbioqB^!5 zmD$snfd^3UZO01y6>r8#WVs5PQ3;$M%J^&X{mKQ}vfi{R%Td>BP%qkmnxbQ<4t<7M z_#>tpKxICOgA8#{B2SL2T!54aVg(rt@>)zwrj*(+?1lC7wkZGnjOSU{0P(`CER#S=IUhw!$!7)E7w7_}BY$DVi|H3h$*66nGLkONWom!T4_ z#tz#58#vL>a=$Gn>WI4uZ9O%t^{|mxLqrKpkIKUYeYXU$g3vlqxu3X$Sf>+;I@6ix zLR>?r)Dqee6KMZG%O-wNPrLu)j?Gt{Ygar@tiI~neCoV>P>$XIbiFkWkkDXbW{z-dLpJkbKyd>mByoBetP9hxfj0^F` z2#@^xxzpsu5`H%<8TZmXpaWbo(MSk@htOvok8DsoQSM z35ESs>b(ZF8>OdV4jx?(x#`}!s;qPyyoj6bKMzIH8MMDsbUZsVsHcXX%Stu6G1u{$ zYa_{U%t_We_0hN+u8msydMMl!4*jp|f9I9%R64aNT}d3<6LtLjLS&PEY21x8(V=Kk L$z_tA8?(Ov$q1*y diff --git a/resources/locale/ru/LC_MESSAGES/tilingshell.mo b/resources/locale/ru/LC_MESSAGES/tilingshell.mo index ae2ced12668f9e2a65e18f765ca7485585c92edc..f0eb9f5c8d7a17faa6f9714ea330b6400701a8f8 100644 GIT binary patch delta 3041 zcmZ|QZA_JA9LMoLiGYGUg@6x$1c-$O0wSV@h!SK1N{WdHnqqzuSB%75rdl)a6_5Gc5v+<^D{LkmQ?{n_!@qgV6bow0I z=HYv|8GpjrSQ=zD7P}k|VglDka28&|CvXr` zF=3q97%am{Sc!b)vRzbSxzT}f*n@s}*}4A}PUHF)OvZ>{vm~5{5x5>ha3|__otTbi zu@HYmIEFtzsG-d`6b=gzRIVG4w(S^3V=wYk z`w}PM4b;RQU>Jt+F&-0eCeD%cZ*^2M@GxfL*O-HT40A5#p+?-|_$I2ulcpLO%0f%f1MJd4_rAyiIGie~*;ZJS1~_N^_eYV*m>c!n71SxX;e0>j+z(|oR4oo;FdNnWN*5JnZ7phv4my5{TB5tC6^deC zG|)mMpKLX%!8*si$WQGsF2WB{$888%Ec0U@XJQPhzY=7Z%+*9iOVW*+$r;oGmoO7= zqTUO^d?aEDYAH)`F&;wg^=;J5lbGIUEJCel32LU5*x_Tg9jmw=q|+Xq|5b5($&H7o znXQ@P9mrNx!)>SszQAgn%KFz}Cn^W-qh{>$n0L<$a6Z>-F&_`1wyqyF^WSg|Ml#xT zo&QoQIu>onpPl1_vDkG~NB>|mRx|&{-+_$HE}=^^{+Wsln(qA~4VQ4e5*e(WKpmqixDLNT+O#ZsZ^w1G2k+t$ ztY!M7jg29LXJZm-VwI?^X+}N&aVqOyNaYSUG=LeTx_-C}gK!&e#NF70w^0MDAeA+v zQ>g2|9rMz?_q%Zm_xmsh3p2d`#M+QC+C|L9`x&giD#@g}zNkjc=l}*|1pC0^SORKK zOHc!B#dq-#Y6AILX5^LaNByoBbsTS@R$>ro(jr)na4bUIU*n>(kV+G>y>0Cy~k7In+`PAdgrmsl6BrQ7dx*i|{+gM3zJM>rq?lI!{Fn|9~2y zADKp5HW#^Njo5*`I0>`nd0mbxxvt0O@G@!w6WQQA%*Us&9kn8#V;%m9ns60gmgxMS zpwh*S2e==bbG^wFu)y2E8>n2kic$D2k_PrW`rzxtWJ0S^Mbr=#1mp1}tF~ni@hY*6 z@F!H-h%}x5Mk+57>O^G|QBJhzf)YuLB?5_2gvtwqX2-VvZ&4m8r?g!oOXrA-DEjx5 zog;3tES`7!h+CejmOF{4Ct`_b2o>$)aCx2z$!#was|n?TAEELZ5uu7xv`wy;_}EHl z?^FT^?T-q{ZR-i`+ahAPkP5b!;C!9{1aM^V+a+U znkm}<;j)j4GQEMwcW$mhor-Frm3W#MF11c&xCs*5b5xr#fe0mZGE_Da@x*juBC&wr zon@nyrAvw7Qs7k9Vk)u2xgO_OggS;gQrq1zL7k)A_d@>gcMn9Z@N*xJ4GeInC*KQp Jr)QlH`VUvOCB*;$ delta 3706 zcmajhdvH|c8OQM_fQgYn2$v*W5)M)z3W6a4A&_zlh#*jH1xy57l0{aQ-I#0^0@O`{ z29ziumZ@!JsixVEe>8IoE)>cI1WR&9`C@n@FuiD zo&#|_hxs@IEAUpV$7%R$RF{9k(fC)Si-cXKQcS~D9E(MR%`&kP)n0`qSc{Xe11I2d z9F8AhE?z=i_Z?2h5*n9c4bH-skOA$S@0Xa#_;!WLP)=OM5tui`>v$4QMYVW4 zK8G6MZU6XNoW}9gJTu0&^;n2okuI$rN8(}Bf;y2udzYUPjBgjHl;RcNTbNB5$2C}v z`>_Jw#5wpK@@I2~d9Fka7(flQ18>7;Q5kvzv+x6~#LrOI7jZH%mC8&iN>LD3;StnI zzQ$4bEovo&q({%L1l2(mDl_X)d*Kic#3QHyU%`2J3>V^muncG9o85w;eDbf#AsUpz z9#o3|g)_0Zz#Hg3)XE~hdwpN@J&l^c`>4!ZKt20!ko|0x%$7ylLZr!7qppt>lKt_%trUKck-Q5SFLR6ya=Kg43}D z_4Xu@OYL(Ui7fM$y2pBH6Yg(l-O=p!$0R=iotHiSJ-yGL

=!3Bomtfqt z2SXeWm}0gCBe()T!c|zpO)So~qcU*B_YJ@OA}*&rhgGm>TZ=cLJ~{z>aw_>}6804h zk7EH_yA7YmBk0`jeQ?g;9UOm*TG=pmtR7V<>i#G$#b2Q&@&)R;ES{4d;RFogbli@= zL`^KOjQp>lvaZZ)IO=-^)xL#-Mfmd-Z&L*!c&f+)=U-CVNBRJ0I>!tHkPz$TZ z!FV1?s$D|XY@-t_OEX=DFXLv^N^AZi5{aRKJeGoxzv zpfYj*x8NDniYL$aHf03&a@>m@cqcb&PyGdT{~9jN!NXXf_y2cP*jIK6HS@1f1LrOB zz5^AwiQ`8xLlP?6i9%wa4*aqK$#A;R^|hi2t8W#(0oofX_xD}&2nXxZP2QkQ)LV%? zgjTtXPcY$Gy>#8dnzEm?$0o=5uk zX}?~8PZD<$aYEmOzEVsjNVE|55+jL;gbI&1{RPa&dkF2DzA~H&kI7sAAP#;?go&RJ zyhZ7MT=W=jARZ)Cwh`mfHM0hsLg>-_oMVn~5Ea(KBSSTDc8XD`v+;aV6Cmw8wdDF0_#$b8| zOn{bHw87cf6pJxu^$~~%9a?Gwk=kH5SznZMWA(Fcx7*`(x~JXl)E>7h)#{#fyB+t8 z+v^@rwWiuqEu8FjkGY-HJ80SOpLEh^j&s}YRIB4A(}z7AwmaN=((O64eZrLFt_fcb z&Q0xeUvn6tljg2eTXIAB>p2PcxOq)Vn`A3TkNau3wwi8cOg?+L_O#ZR+GpPbK|gSX diff --git a/resources/locale/tr/LC_MESSAGES/tilingshell.mo b/resources/locale/tr/LC_MESSAGES/tilingshell.mo index 27443a4fd4680df42835f79b8dd4037601b64b44..9514f10ffc9ad49e4e38a76b89dcacc350737d95 100644 GIT binary patch delta 2983 zcmXxmeN0zX9LMpm@(e2S6exuxr92Aq9GECVB8EU>Qc9vINs5Y=+Jjx6A#!W3rI~DP zR;*=N>$fOtGnzJ==2lp9$#SdBjbRUK3H?FM-k;ySoc+G{b?*J$-#zDi&p8)9YaeQJ zZbS#ZW|S`CZen$y*(cZ&%7L;i!mJHDum}e+9AhTACSeNaX;^?Yn2rZ98_!@E-oQj0 zLOvEa*(}M-u_!7txR8UvSm%CWD>0Sxoj4oc#QX6g#^Uc7i4&)|_eEna=cQPMTTl&s zihAw^jK<3thc_^m_U$&6SzHL?X&ONe=3p!8fyce`OPJ0181fU#m}-`QCCDXPj?=IO z8JX?DDC|Kscn0U<1lbAQ>dO^ zMb?YmM1EqUo{`KORZGPREJtm(P9!OI6zAf*s0Obivtt3wuQK8!P|-+=P(P@_d|Z!u zADqDZun(2WL9E2te5tu^M~(a=48k8!8NH4g=@7y~4N8M-1{*OhV7HcNzy)X|oMe9(D@*pZxM=%rL@f`5HgNfSznfyv~ zQ-yihiUs%vuEOt7naP~#u7yRI%y}K^#ngfH%}$^?d=~5RZ&b%CNslsi2z7oLi!p+< zPN#jVprQw?K{ezcS+--y$3EtuIlkuk7ixb;Fzorb1ogl!RL8%9xWR`3g>5Ij&(2igwR?xl;P-*5u zJl)r--i=|{hibSVqwzUNIQDQBj!Kl;`PxxzYhtznzcV6jPrv0x% zR_!oRO&laz38h`-X&3(=9CfgP&>U+1cM=Z~Do+v1h;m{Zp)ELxh$OVeRHhQO#D1Mn z3cU9He{4dyu$KrTv`c7uL$-9B+U=00-*RFG|)}7V;TIz1>!fE^9tf!~ebJ}TL4mS78F2ZJp zY=-^8HmOj_%#so_SxA2-fi zN#t@${8poFCfX7kYrKc7&{CS2@n>0lq~dVQ!da5>Z3CTbJdQbd3kP6lra2IOs2T6{{0=o>Eoz`k z*bVQZ7Sge~St9nw!8jCkeFVGXr`QiqVuJzI~u!9G-GPM~Vw z4pJ7;Wof{MEH4*Z;4qwq+4u=&;#to-s0^m3k^i1_^3y03T#g#(C~9TrJ^%KMZy7uP z5^4hdkVV^Y)Sk~k>eqH7i?gqgKda$G*PqAn_y=lhGFp*;6~`z>CF?d7sW)>`8400o zv=VjWZK&&aU_1QU`~GKSQFa;iyW6OzB92w)_Zg`31Cg(69KMK!5$}Q(s4CuyO4SdZ z*HNiTVPBM~VW^3QkovM!s2gtc{1*9%{e&a%Pt@a=!9J2i%fc)igBmYVMTc#)J*bq_ zpjL7L^@E$3gYmo^^nU2iM@O82O66i4iKkI}-iT#s<&&@;hEW-MV#_+Dj@hi_xJ^1Y!(FJ<|AX4ghp34qIvxBg3(so_{|bRqqB=Dz{))JmC4eXF~hf(~ynK(eg1HORzV7fv@8QROYftgB*vN zxDOo+qF!hpU^?U5Q97FW1)Pk{$gfsVh)V4q@Axn5$8jdpSH=o39hag8+KKFz9Y!v- z^Qc<5%%cu<8N0MaS zsHl3FkIKY!)PxS9YULN4h^?vc5H83h|4R8KPB2NkgDS>06oPKp6Pc4uL1m;8wTH)0 z*PTJ7_A-vc8<>xMy2Rdyt5MZ{7<=J0?18P>U!5P@mHg`mi#efGo<#?5peELk_bQ9C zPRQhK0_r)g!06+LvpC*{ariGb!`sLMVF}%1*LA=*InF^X=wnRAV-Y%y=$t}cO7<)2 zF}Z=d!DCFowoF?Cc0lH4IjAl0p{`qk+N$lyPwXga0oPFXeT-UQ%bv0KOJCIQB0f5N zXUkBJ(>JJExQa?yYx1P?c}R9`1(HQOfZDQ)NWt49q<*a(KbnIhu`%vNZPj5Mf@hFR zEs4Tm0TCNShiutQRH|2@_WmG_#&f8FTQUnxbQo^LG8}=AaW0Nv)~fEks5jnKY=Jj1 z1?%>S6=N!DkR6-4uBFZMAM!bFhJ)1sD042$++ zbyY||Kxpe|k?0$3AiY%tkAJj^$Kz6BGSQS!U1%>S5^8aTif|HzC=f&l2Frg{iIdVd5d_Lc$?@?s7)d26VnJ4sY5(z z>*=f^-XVs2C!_BG`aVKKkM_ooeqGGx24Z>iC|1p5=r18U5KV~bgxWl!9ievtkC6=_ z^jO6c6No2ml-HSqdU`_MaYN5WW9jG}-JK|_E=kUhOU(0CmX?P@)khlNN=%3yRDYQ^ zJ7He9)G2ZUZrF8vPS_uCjT51T0e|>8$4-S?7WNnV0)a{^54lcwf$R8#MVtwjmN^CG z;c#it(LH<>uEUu^U$D>(R6l5&Td)3z+V88}V8E^J(!N(xgIR7_z&*9wUs64@>qqq? z1^zOpsP@RI-EN6n>32f@K#5!I_-pt3gZ9jK1+_<>|7DTC*sXL*1HLj}vGe~ci+zFRP|*GZKwgt2 diff --git a/resources/locale/uk/LC_MESSAGES/tilingshell.mo b/resources/locale/uk/LC_MESSAGES/tilingshell.mo index 50f8c72acd3dd40fa42f546443521cedf4c4f24e..88864ffe4cf482253b0c476d0e4e4a01fe8b1b48 100644 GIT binary patch delta 2985 zcmX}udrZ}39LMo50s^9P6G0L15^}NRC^wZ9Qw$SKQ^7zq4AT_6W=fzPP3uUdNsGCb z=9aA$GsbqxR@7_(tEp?1{b9N>tGO(#RSV~4v)-TI@2AiB{$9^>&iP%Q@AG|r`su-t z%YhJoe|%WG(GCz}h}tl-5AkRu2ilfsv-P+Yi|`T-!Gxi%X*hv#HWuJQ%)xz_i=7yS z{g{GRkv|I?W|n5=w>UcKeBi^uxY+%|mSYy<9hiy7F$2HE5%@dC;Gp5|@8WSP<6@kT zn@~6U2zA|FjK{N>i2XQ%``bTsCh|cPSJMo9=)<+B3m);tXE2xXE#wrN6l<1@GmwvL zDUQN=WM;M-g=s|s0j>V`Y37~4?9VEFHOd|i(k@fL`GI1Vtp`TC}zJWU7 z7LLP6o>JfEAkS>GQ0FZ}?Sgvm`+)cP8_1t^a7e`-)cHT6ihICMM=45ULFIf@ingIr z^cLz#&m;9>SCCWehGz`xM%S{i6z8C}TL4Llwc!+e7j?sn$m&=q>#L0Tlj&$CMW_=N zVm_`xy$@c;d+-!0m6vcHX7Z)hdLwG)T^NqvqcVCCHPfq@7h?7=UT5s%t~)U`-It^L;HUmkFQjhVI?+U6Ml`y^*Ph$+V%_T0it*d-H&6i5UWuaK8z~LKCH*#-2Elo zhFkD9F2l{d&FZihGq}HHurLK!j#{g|_y7j63I|X%Q9*&^;Vyg`yYLXscqanHXOhd49s$0sVA_SaW~G!#1i*{RrnC&7MzED$h|Fkwp%-8sM_j5 zEnPH~-GMcDPOBC^$K591A=kE5bKP1vhKYWlVi5>`ckVS{3-^vyVKTlWCz(gcjy$Lx=(oH0B-gA+9i*AeUVD!5X%WI z;~Ih`c4`A`uMS?@iK>a&T7Rvr8q0gPEu}Y%XeRXHxzj4?j3(IrwwV|~s75jg?T%1l z0->hNHV{t{am3TaMk1alB`OH#SCLMKJ&Ml|O+*6m7|}v3A=HKw&l95v?F_Yr#9-n8 z@i@VDcUrQiSmE{Afi{+SmRLz>mpK2)*cA*Px*#;z9`k2J@NiP);9y1C^@!m66I0`Y Jmy0e9`ybe-BFO*% delta 3646 zcmbur+PALJTIhcQreXX{r39bW1ZU#Z)Z7YV3}$1RlmqxPA-s@ho0}gL;~c z!WpQhR^TA4Lmsi`G0QA&FH_0p#tBTuZ~Y(aM;yU*db-(VSb&$}z1SDm<3;!^>bd=$xgf&_n~Iej#|5u zs0MySWu_a`&|a8`J+KhfVG&NkMK~3AVIH2w%du~N---Rnzf!oA8>8_VyawMvbz}ql znGFog3!EExKWYGLP?>2!t^FQkAKSOcB<*|T&yr|V&kw}en3GBVwKkR9&?eb}tb#p{ z>_2-Am629dL+_y){sQ&<861i~2fz1W!I`98hI(%T>U7LOy{g*s7x(HWok2OpsmRMvky@Xei8T^(u8HOZqsli>KIlc$+cCeJs00f zMIE*y%WCIP8A;+}pqV(R7p}pvI2ZY|dj93$9#ksd#_8CL*=Wt@qh`JnFT^%fM%z)D zNFW1`+gU2wWWOSVwq$zO2V^MbC6PKj$8}w{*-9*P{28A`Ey1t22)nQjyD@|jv|(m< zLm6ssyoV=J(;eqr=mVY%TY`5G#23r ztiddP+@t$=I~LFwW48v>UO9m3=R>@n{_RUD+Vxp{=G0LUY8P+9VmyhPv4C}|#CBA} zW7!ysaU*I#-(f!XB7Iuh88`)Na6Y!6_E5%1|2R&;cmp?LR366*u4I(B6?L7(*W^ij z6}RJLrcW~L6I6%ikv=V(R%yZt@kWdxbFwzn<~)NB;xDM@mXo#zaMx(^zky0OhWj)= zf$Cty7=MIwkaw&OCtxGa!XL04$L0CY??a{deN4l1xERmlMqEHz=ir&ZT+(zC*Q@i% z|E*L$;D%D_unt<180u8~f@ICI3jBc-BFk*GfxEFE*X`)wr}#Mjj+*&KHkOv+S!B}o zK57sAi7#Pxe4PL3eH+zq-|>Ej<4`jyL6+avp&B@VYWQLkD8tC5ps zMW~F`Alt}Z#I5M!AY3xp{}ivryOiu5RQR)>_@@SQ*|LQ=AE)CB$l$F5AH-o({Y|zT zwT2zIAMi*|fx=}$!)vbOUE-b@S#uH!}j_~B0KI=7XCQlyRZ7@>`{g-}^Y zaEiQ7@!d$0yze_$J<&&%ps+F)BPxi?gL^5+3VDUY756q-8JA?=D;xx4585MyHc}R$ z9ln~-QPu9(a`h$V5h`5>ZMIv8frO5-N+xlKS2Md0%ZZDL-o#`gL;2rCC7n>2>*H-W zj;QyQTNT_}5Gb?}?&^Hyuv@IVIV@XxiIiFd#zpPEHaT^`)vej*In;rKJ9%|8> zj=ZnXWTvL9!+fF1v)xPLmS*fyw;{$$K9iD zbD~}iTJRWM9CMGTPk#Gf530vQiMl?t-%JmUblyP6$IN|WThGY@?({}~j4`w%);e_8 q#t6IzdEuC5>U56$i2J%)VmOEY9um`Nc1Q{hC)Om^(pRHDEBgy%3s%bj diff --git a/resources/locale/zh_CN/LC_MESSAGES/tilingshell.mo b/resources/locale/zh_CN/LC_MESSAGES/tilingshell.mo index a8883c5f638a07acc5b4c251c91c0820161d10de..3f7aeff3588d03f847613495b1accd3e34b82dce 100644 GIT binary patch delta 2908 zcmXxleN5F=9LMp)^OJJLB%YK96%etDh&%{lK0qm;LYO9|1ZV~kW*CB2wZC&hLEB`JMY_ zbN?3KwdvunILZJqlc)-J&X1kZd{N5coNLD=Sc=Cn7O$E=;~eULU@<06ac(}=VgdGG z44%L=JdJ$Z*Ld1#`cMzxJFec&&oI(F?jDs9be2W^vZCr?6T33V3sQM5V;AhA!?oUj{&}qR3 zNy8NC`N+szH74M8REIrSh=b-iETVsRgM-C5m%GbxGgjaT>WMFz*HInbLUrWf;$4`B z%E%^+!cMHjJ?O;`u?)v?J*M6f96$&9QaRDb0fTWPs5yEY)zK%Yj9fv@xrbhuW|xZU zCx)8DNe}G&1>duFES=qnMD58U;`)ggN>MlZFa)|@(k`M z>W8DK)qc*dPuTfes1Zf*H4D>G9V|sH&U#d4`pn~~%v|tspw#?}dQvZGU^%$u$SK!g zb|4?u&sP<`fqJbbkioj&un@zTPjy&~WZi8;WuzN5kRjClCvh?Q&U2vm{wB`F1Qvi& zS%TGg05!*7qDCIa%@J6DN@+1_q^mF^ghhx=)c2AG{r)>tW|Mgey@uJS*LeXh)%(AJ z18o?G%`w!CzaV|O-%$<3vPozyB$@M3_f?`sR)tD^6J}zs)sNcsk5CVK0rl352lTP3 zxmz1XC90zrPz?{GI(!W^6(67;=nEv?^7cSxa2?3v%Rm4`ML}eRMFx(Q8 zK|ky(M))W1H@WFrJIN&8i|LA zaw3DsA$BPtOkiLan0&M%>JJi3d|(9>qe?yT6wyiOucVroEGz7w4z;^o6W`D zPiWQj5FNy1*`PZTtj0Uz9wk`%?ja(am@Msf@HA?sB{rib)ZiBiC9%Aj}s-tW+IJ9A@l;(`Y*@Tg!y-PUXAicC9R0`kIpIx Q_ovK09qIpm-rC6j0rklH0{{R3 delta 3508 zcmZ|Rd2EzL9LDh}U=gU)LM@_bUqQ-cIV=bku}~;-35XydC~mu}EUw+U`xb0Lw@@er zL_`IP9HJl~kwc1DP}-PyM2%NSh!-_6eYZ3kcKB#4!(&RQ8Nz3%qx=(6rswG;ShWk zY0G?tSL1o)7L$@;Oi#=}MrsBjKQo1c+FOXjXx~JX!M&J=XK^@o?q*Cr7T{>CM1JOk z^+QyH-=Z42fVr67Jvopu*pc!q9E11bV5~#U%m)~oK}N&Y2xj6nxCk|ZO4K`Bk7{Ti zYDSt+Yv2O1EE2;}Lum}F5Hm3k=i&g|V0{BMW8dLWOwVHeZy_@_E7`y@)JUGT9<;t| zZALZxCo)*mzDM$1XCdp>EJA+9&q3F%z^S+v^$O0Q*21sIB%6PFF#oJClfm#b1KG%| zn8BzA7NTyr18>0D_WV+05N183`0Gz(7FJ*#JD&CpF(Z7Gsq;Fb2totM>Uwk`{b>e8K@bF z`N?P`)uT$xdPF@Lo=QMz_?!Kt2kZ`ZCmheH`^2SdF*gYsdpkn>Eu(URQwh*-S*; zUyNESVe2Z?^S0ns+W$Mq(6%{-{LJSZRQ?4uGwHl|jifJXd);b%2=$@aV$02_2Ge>c z?TKnA2i1XG)Tfn6rN&BXpjHY;#z2G=%q@P$XAkQ|}G0%EX0qOy>Pz{!%I=bA} zZ$>qA$of9&{_m_QG^XeG!I&~r$>@TpbqlJYH?1F8&!HOn8MSy)`5vp>7d6t+sQN-I zKpz(3OSl1BP|q#PNnTf-!~AOmFH@lh9YF`*!%-MVt>$ccDFVHR0n)kw?Ff*sa$I-_E=A#I`*M0pT)ZP{7f|mHFVh4e}J0$udRQf z26pwJyf$u5=6G zBbE>o2qkU1(L^=DnoPW!DX274P3VsUyDITl=}y&>+7qlFGlS?!%p#QZe&-}|#+2a0 zg#MUlVHFS=#9E>&p)@s#S&yTLzQi(HH#ec3|HmjSB+7}!L_VRUJ%2gj5QB&th)dHN z3SnZrtz3X3h(*NXL@jYK1<9-VfFdOlkt~oyd5>?_dnykz27^v&$Pb1^?c)I zuc6v|y{dkV^LlDpeCtu~ty8vUM8D~&E4

ZQJ&?G*q=T9Q01sw>^8R<@CnZ(}zv` z=yA$kZH>3?*ngb%cCBjNe*Aw=x14TjeeOVfU0v(;I&XVpeD~V;&R1HRc6x{E;I|c{Ri}=Yo88PUTAO3Wb~pR58*g`po1~<@JSqqwfG>O zwl?A;)UV)J{38y-K^=`5flnhtM9l^c9^ym=(zkgH`(r&0z@K9V-o$SBh5h@3os1bu zJqw560{jxL$L@F-8PlA_Ec_Aj&wR#@uDgSy7~c%;Y|Jc9EXJ;Q6g82vsDUrr^B-Uj z>c2$|@FyIMnO#yVd<=7`7vLz|YwK5V1ohj<+)WmP^v3bniSf-d9P~jiYUM8>ZOsAH zfN$bRylnjoj;21Cbd13zI1y`b68;!zVltSe?1LIG2Q|)29FEH|N|hy1#VbfQ&8Mha`DfJioqDD+GZeKqmSH>eqsA-iN&cVUU;`(n zVIz)4(<^n)##oo3Qdo&f@dbPwn^6OK_|eKHSf8~PTPskRID)#>XK*Us=}rFG@Mbbs zlQolv^l28MW?YQ3aV_fByocHwpQ3KjEz~AUCk@I-XH-7}FdIjs`d^N^t^oD4tU|SO zq8yMda~#z{BkHlaY8%|L=UbCkCT+Um!6T7p5;hisO*XM$J+VW^&>LYTz5Fy)b$}Dif=*4fO-4R3ApI{3QMxFXI!^!;^#Q zXPt#Z^!(4`U@{HXpcec79tgL1m&GS-jbAJ&*h|zvM^#+{UhqZ!*Y--e7%DE6YRvnMM5Q-mOPv=nYiI zpQ8rO+@|rAGM$;YE!<28t-F_YQ<^1#vnsP>nTWSC!|CU6_|UKqlopnjI2CcFx@kZM$a2T<47XOVwBCLh=ax2+kZMHh5K z&Detza3N~IUC2KZvwmW2OMZ2J4C=b&s0ldMw^0-LiLL)WY7g$9X51$ywR>}{A=JuG zqh@>&)!{X4k2i1{{==T1N*Z*2iM0sTZ^YIsY<&-EqS50VXnMGlb65=a_`czp?1oiyyAm$J%PZCPk3_`2i zO581Z9K1kGA(&Hgl92qsNM%8V$J#6-o+sGPEk&>2Z?@D@U&5$Tq0*74C6uapgvyJ= z8sb^POT0o<5$y=QTGtbkh($yhq1ChKmhyFb^bPAS)VD!zMIW(F_kRNiFA>uTJ-fO` zD~MIZZbFY+A<>1{MrK77zo8)r5BVy(LU#qdl<{7ZbUJo(PpTDO!HD(80vhL_lZr@+1D$ zUS~-AUq=fHJdu??PsAVa6?oS8g9V{AVNWEKJefCVVfMnjX`W(VuuSJdCBC4?8wmWL zE4&d;D46dvdFt=}zV7YEFe?XK2N~AE>so?n^Y~bvNTjyw9?~U?ezz|EBO1GQ0a@|5^w(9mdnb)F1Se z_}BUZ;Vfrz@4sa)@P%oXAMq6UOMPT96!Zo>g&`J@OxnFGkB#p0{Z_peg&AjEIN~ez zc=Pjp!H8YuuljwI7xa{cHOT+=74)w57bUZlLtX>xxF{I*7cja1O0HA)aIJHs|MYev zM-9&%>B${AaqM{KX8-=qzyZ6{#>Zj<($k{#74F4Y^Nzasfvt&S`{H%qZrWGx9zB$( zh0s4;Js9`kiTf_Te&MZD zzxOwdo$-uKYoDm7OPtu!e558(b=vvEz-<%Wsf)i-AFrxx{@&5%ZPoF{lg3S+aw{vE zYQD=P;(JcG=U>0xc+johbZAT)oeY2s;`Eb}@ zv+66F_FZ&qcQYslT*zrk*Yxa_e^`D(kpIx?$zp5}V4Kww=7MV`o}!>3;ykKMAb> delta 3631 zcmZwI3vg7`9mnw#9-&Au2|)-b$pthZ;T7@#0|5;|t*9VYkYcdQW+RK6U6O2qLCQvi zJb;My3WZRqAfptAf+Rpkr7cuuik;TZ)Hb$5rL@_EIHN5cD}7AV?{D{Pr|tAi{`s7H z?%wnG-*fM6t!!Eo`EbOb-G=f!aSQRCLB^a@eJKAZPKq(}a6I~PHO|JL;tgnq#~p?f zIUI$BSd3F}J_yNxD#)~P8^B9 z!&Lk;>UUq@ESyZ^y|@bJ;9+Dy^Ly(@n9TU*I+YQe_#AJ-^t5=#lQ4(ld8ie6aVG9V z4e+i#?#CG%Pfs_7vCV4C#44mq(}ZJi4{AXtkU#St|88P@bA?JCUbo)PZ1Oo?g$1|^ zi}4+ti(eprW^P8@2T=ohPy=nmY4{>4L+5b_c3}x#M*V&qCnM9T6j4!%e7FP;pjPq; zj>Ue|N-{~0?%iZm2W6WPKYof#0Aqa|LzpKSlPlDPguO+LR(qW;yEj!A$bMm`Vc; zx;Gb4o1`1L8|E6aFU>$kS4PrN9XY6u3sAqm1IOdt_WW98v1SwMx^JPLj)V661>64H z2o=UKS8*IBk#7xU%nHQrr*<2?Kb)z2jEkDiKUsP{`F-mK@pnTqb=E2z|+Ky9Lns2^TJW#CW9BFsOmqbI~y zR*1TOCF<5yqB61(b&I}>%E&KK6B|W3)c<_R_~s!h8mPjacoMlAX0ttRx5vj&E4YZc zcpcT@L`KsJ7b9~s^{4^%B1to^qbB$+YJpv-{{Mmztt^H2shofsU=FI|O6zmh)7B3$ zpYzGQ9(7$YYQUwa0lfBj6RMwGsNbEzWc)cQGwi7t1 z#&4lk(uL}<8+H9ZQBOq%J6PuzT9;bOQ4?N=ci;ikcppqA{~EBL2ARvVCRbXUQ5T*< zO`y*@n0#vj<5BIitq-Fn9I|e~QjT|{R{jBM!k1Ck{XIfOGakte)epy`PE?@U8?9}q zj@#|=F?;+b#!_nA-$z}41vSBb)O8tC<4;!(YL675&PN`#CxWO8H(T3L7oJA4Yc3*l zHP@`SkR~19W355`{w3=PRDVCQUbg-V7tlVM56@6N|0}5Ix%Z$>RO4cN1Jz+aYNl!2 zV5Kex^$uTvn%D~49zpH)z4#EGLEY=2>@?lNg{TQ_KxNFu6g~g#v5GOTSv#%gP!sqC zYO`FyB-~7>JVj_i!*pQF+G z-P?(KhMAWyEYk`)4%~CQ^yD!~jBN0Wl|W|Fy$as))OY z8;Mzj%A;}2R;(b_6UBtSZYnE?Y{IJpN(!-r2oZCMMEMGpHAE|MFL5VPxRHM|h_4en z2|X(MzCTE)q!D?NMUh8u<_=6Rp4S#IhSL=AZ;W|&iSre+M@YOgqo(g|mtyxsz4?FjJ8bWp9+K$e& zYeSOb2ky(6tKE_@pLIMw_LYI|*sLzMD0^omomTh)zOc{nIAMRlXK1KhAE1l>f9%xz zYQphpnYvnEY(`9omT;)XSyLAdhk}}Et*74S(Bkz3y}p2ZF1u{l%z|k%^PRjo#d)*c zG$(7MGcWA%udDM1?|h=l;}1;thN|Yf)14QRiaLJm3`puIolubEwocsamfm{2IJ#qZ z&$blrbdvfY$9lx6P z#z40{?;UsVtmqX)N}XiHPH^Enable window suggestions for screen edge snapping Suggests windows to occupy empty tiles when snapping to screen edges. + + 'default' +

Edge snap behavior + Controls how windows snap to screen edges:\n'default' (corners snap to quarters, edges to halves),\n'adaptive' (snap to layout tiles by column),\n'granular' (snap to exact tile under cursor). +
diff --git a/src/components/tilingsystem/edgeTilingManager.ts b/src/components/tilingsystem/edgeTilingManager.ts index f3115064..448dc47e 100644 --- a/src/components/tilingsystem/edgeTilingManager.ts +++ b/src/components/tilingsystem/edgeTilingManager.ts @@ -3,12 +3,18 @@ import { isPointInsideRect, clampPointInsideRect, } from '../../utils/ui'; -import { GObject, Mtk } from '../../gi/ext'; +import { GObject, Mtk, St } from '../../gi/ext'; import Settings from '../../settings/settings'; +import { EdgeSnapMode } from '../../settings/settings'; import { registerGObjectClass } from '../../utils/gjs'; +import { logger } from '../../utils/logger'; +import Layout from '../layout/Layout'; +import GlobalState from '../../utils/globalState'; +import Tile from '../../components/layout/Tile'; const TOP_EDGE_TILING_OFFSET = 8; const QUARTER_PERCENTAGE = 0.5; +const __DEBUG_MODE__ = false; export default class EdgeTilingManager extends GObject.Object { static { registerGObjectClass(this, { @@ -38,6 +44,10 @@ export default class EdgeTilingManager extends GObject.Object { private _workArea: Mtk.Rectangle; private _quarterActivationPercentage: number; private _edgeTilingOffset: number; + private _currentLayout: Layout | null; + private _monitorIndex: number = 0; + private _workspaceIndex: number = 0; + private _debug: (...args: unknown[]) => void; // activation zones private _topLeft: Mtk.Rectangle; @@ -62,8 +72,10 @@ export default class EdgeTilingManager extends GObject.Object { this._leftCenter = buildRectangle(); this._rightCenter = buildRectangle(); this._activeEdgeTile = null; + this._currentLayout = null; this.workarea = initialWorkArea; this._quarterActivationPercentage = Settings.QUARTER_TILING_THRESHOLD; + this._debug = logger('EdgeTilingManager'); Settings.bind( Settings.KEY_QUARTER_TILING_THRESHOLD, this, @@ -95,6 +107,22 @@ export default class EdgeTilingManager extends GObject.Object { this._updateActivationZones(); } + public set monitorIndex(index: number) { + this._monitorIndex = index; + } + + public set workspaceIndex(index: number) { + this._workspaceIndex = index; + this._updateCurrentLayout(); + } + + private _updateCurrentLayout() { + this._currentLayout = GlobalState.get().getSelectedLayoutOfMonitor( + this._monitorIndex, + this._workspaceIndex, + ); + } + private _updateActivationZones() { const width = Math.ceil( this._workArea.width * this._quarterActivationPercentage, @@ -181,63 +209,82 @@ export default class EdgeTilingManager extends GObject.Object { if (!this._activeEdgeTile) this._activeEdgeTile = buildRectangle(); + // Get the current edge snap mode + const edgeSnapMode = Settings.EDGE_SNAP_MODE; + + // Default behavior - initialize with quarter tiling previewRect.width = this._workArea.width * QUARTER_PERCENTAGE; previewRect.height = this._workArea.height * QUARTER_PERCENTAGE; previewRect.y = this._workArea.y; previewRect.x = this._workArea.x; + + // Handle different snapping modes + switch (edgeSnapMode) { + case EdgeSnapMode.DEFAULT: + // Default behavior - quarters for corners, halves for edges + return this._handleDefaultEdgeSnap(x, y, previewRect); + case EdgeSnapMode.ADAPTIVE: + // Adaptive behavior - snap to layout tiles by column + return this._handleAdaptiveEdgeSnap(x, y, previewRect); + case EdgeSnapMode.GRANULAR: + // Granular behavior - snap to exact tile under cursor + return this._handleGranularEdgeSnap(x, y, previewRect); + default: + return this._handleDefaultEdgeSnap(x, y, previewRect); + } + } + + private _handleDefaultEdgeSnap( + x: number, + y: number, + previewRect: Mtk.Rectangle, + ): { changed: boolean; rect: Mtk.Rectangle } { + // This implements the original edge tiling behavior: + // - corners snap to quarters + // - edges snap to half screen + if (isPointInsideRect({ x, y }, this._topCenter)) { previewRect.width = this._workArea.width; previewRect.height = this._workArea.height; - this._activeEdgeTile = this._topCenter; - // center-left (full edge tile) } else if (isPointInsideRect({ x, y }, this._leftCenter)) { previewRect.width = this._workArea.width * QUARTER_PERCENTAGE; previewRect.height = this._workArea.height; - this._activeEdgeTile = this._leftCenter; - // center-right (full edge tile) } else if (isPointInsideRect({ x, y }, this._rightCenter)) { previewRect.x = this._workArea.x + this._workArea.width - previewRect.width; previewRect.width = this._workArea.width * QUARTER_PERCENTAGE; previewRect.height = this._workArea.height; - this._activeEdgeTile = this._rightCenter; - // left side } else if (x <= this._workArea.x + this._workArea.width / 2) { - // top-left corner + // Left half of screen if (isPointInsideRect({ x, y }, this._topLeft)) { this._activeEdgeTile = this._topLeft; - // bottom-left corner } else if (isPointInsideRect({ x, y }, this._bottomLeft)) { previewRect.y = this._workArea.y + this._workArea.height - previewRect.height; this._activeEdgeTile = this._bottomLeft; - // bottom-center } else { return { changed: false, rect: previewRect, }; } - // right side } else { + // Right half of screen previewRect.x = this._workArea.x + this._workArea.width - previewRect.width; - // top-right corner if (isPointInsideRect({ x, y }, this._topRight)) { this._activeEdgeTile = this._topRight; - // bottom-right corner } else if (isPointInsideRect({ x, y }, this._bottomRight)) { previewRect.y = this._workArea.y + this._workArea.height - previewRect.height; this._activeEdgeTile = this._bottomRight; - // bottom-center } else { return { changed: false, @@ -246,17 +293,345 @@ export default class EdgeTilingManager extends GObject.Object { } } - // uncomment to show active tile debugging - /* global.windowGroup.get_children().filter(c => c.get_name() === "debug")[0]?.destroy(); - const debug = new St.Widget({ - x: this._activeEdgeTile.x, - y: this._activeEdgeTile.y, - height: this._activeEdgeTile.height, - width: this._activeEdgeTile.width, - style: "border: 2px solid red", - name: "debug" - }); - global.windowGroup.add_child(debug);*/ + // Debug visualization + if (__DEBUG_MODE__) { + // Clean up any existing debug widget + global.windowGroup + .get_children() + .filter((c) => c.get_name() === 'debug')[0] + ?.destroy(); + + // Create a new debug widget + const debug = new St.Widget({ + x: this._activeEdgeTile.x, + y: this._activeEdgeTile.y, + height: this._activeEdgeTile.height, + width: this._activeEdgeTile.width, + style: 'border: 2px solid red', + name: 'debug', + }); + global.windowGroup.add_child(debug); + } + + return { + changed: true, + rect: previewRect, + }; + } + + private _handleAdaptiveEdgeSnap( + x: number, + y: number, + previewRect: Mtk.Rectangle, + ): { changed: boolean; rect: Mtk.Rectangle } { + // Adaptive mode: snap to layout tiles by column + // - corners snap to corner tiles + // - edges snap to entire column of tiles + + if (!this._currentLayout) + return this._handleDefaultEdgeSnap(x, y, previewRect); + + if (isPointInsideRect({ x, y }, this._topCenter)) { + previewRect.width = this._workArea.width; + previewRect.height = this._workArea.height; + this._activeEdgeTile = this._topCenter; + } else if (isPointInsideRect({ x, y }, this._leftCenter)) { + // Get left column tiles + const leftColumnTiles = this._getLeftColumnTiles(); + + if (leftColumnTiles.length > 0) { + const minX = Math.min(...leftColumnTiles.map((tile) => tile.x)); + const exactLeftColumnTiles = leftColumnTiles.filter( + (tile) => Math.abs(tile.x - minX) < 0.01, + ); + + // Snap to entire column + const newRect = this._createRectForColumnTiles( + exactLeftColumnTiles, + false, + ); + previewRect.x = this._workArea.x + this._workArea.width * minX; + previewRect.y = newRect.y; + previewRect.width = newRect.width; + previewRect.height = newRect.height; + } + + this._activeEdgeTile = this._leftCenter; + } else if (isPointInsideRect({ x, y }, this._rightCenter)) { + // Get right column tiles + const rightColumnTiles = this._getRightColumnTiles(); + + if (rightColumnTiles.length > 0) { + // Find the maximum X coordinate (in case there are multiple right-aligned columns) + const maxEndX = Math.max( + ...rightColumnTiles.map((tile) => tile.x + tile.width), + ); + // Find all tiles with this end X coordinate + const exactRightColumnTiles = rightColumnTiles.filter( + (tile) => Math.abs(tile.x + tile.width - maxEndX) < 0.01, + ); + + // Snap to entire column + const newRect = this._createRectForColumnTiles( + exactRightColumnTiles, + true, + ); + + // Calculate the starting X position based on the actual tiles + const rightMostX = Math.min( + ...exactRightColumnTiles.map((tile) => tile.x), + ); + previewRect.x = + this._workArea.x + this._workArea.width * rightMostX; + previewRect.y = newRect.y; + previewRect.width = newRect.width; + previewRect.height = newRect.height; + } else { + previewRect.x = + this._workArea.x + this._workArea.width - previewRect.width; + } + + this._activeEdgeTile = this._rightCenter; + } else if (isPointInsideRect({ x, y }, this._topLeft)) { + // Snap to top-left corner tile + const topLeftTile = this._findTileAtCorner('top-left'); + if (topLeftTile) { + previewRect.width = this._workArea.width * topLeftTile.width; + previewRect.height = this._workArea.height * topLeftTile.height; + previewRect.x = + this._workArea.x + this._workArea.width * topLeftTile.x; + previewRect.y = + this._workArea.y + this._workArea.height * topLeftTile.y; + } + this._activeEdgeTile = this._topLeft; + } else if (isPointInsideRect({ x, y }, this._bottomLeft)) { + // Snap to bottom-left corner tile + const bottomLeftTile = this._findTileAtCorner('bottom-left'); + if (bottomLeftTile) { + previewRect.width = this._workArea.width * bottomLeftTile.width; + previewRect.height = + this._workArea.height * bottomLeftTile.height; + previewRect.x = + this._workArea.x + this._workArea.width * bottomLeftTile.x; + previewRect.y = + this._workArea.y + this._workArea.height * bottomLeftTile.y; + } else { + previewRect.y = + this._workArea.y + + this._workArea.height - + previewRect.height; + } + this._activeEdgeTile = this._bottomLeft; + } else if (isPointInsideRect({ x, y }, this._topRight)) { + // Snap to top-right corner tile + const topRightTile = this._findTileAtCorner('top-right'); + if (topRightTile) { + previewRect.width = this._workArea.width * topRightTile.width; + previewRect.height = + this._workArea.height * topRightTile.height; + previewRect.x = + this._workArea.x + this._workArea.width * topRightTile.x; + previewRect.y = + this._workArea.y + this._workArea.height * topRightTile.y; + } else { + previewRect.x = + this._workArea.x + this._workArea.width - previewRect.width; + } + this._activeEdgeTile = this._topRight; + } else if (isPointInsideRect({ x, y }, this._bottomRight)) { + // Snap to bottom-right corner tile + const bottomRightTile = this._findTileAtCorner('bottom-right'); + if (bottomRightTile) { + previewRect.width = + this._workArea.width * bottomRightTile.width; + previewRect.height = + this._workArea.height * bottomRightTile.height; + previewRect.x = + this._workArea.x + this._workArea.width * bottomRightTile.x; + previewRect.y = + this._workArea.y + + this._workArea.height * bottomRightTile.y; + } else { + previewRect.x = + this._workArea.x + this._workArea.width - previewRect.width; + previewRect.y = + this._workArea.y + + this._workArea.height - + previewRect.height; + } + this._activeEdgeTile = this._bottomRight; + } else { + return { + changed: false, + rect: previewRect, + }; + } + + // Debug visualization + if (__DEBUG_MODE__) { + // Clean up any existing debug widget + global.windowGroup + .get_children() + .filter((c) => c.get_name() === 'debug')[0] + ?.destroy(); + + // Create a new debug widget + const debug = new St.Widget({ + x: this._activeEdgeTile.x, + y: this._activeEdgeTile.y, + height: this._activeEdgeTile.height, + width: this._activeEdgeTile.width, + style: 'border: 2px solid red', + name: 'debug', + }); + global.windowGroup.add_child(debug); + } + + return { + changed: true, + rect: previewRect, + }; + } + + private _handleGranularEdgeSnap( + x: number, + y: number, + previewRect: Mtk.Rectangle, + ): { changed: boolean; rect: Mtk.Rectangle } { + // Granular mode: snap to exact tile under cursor + // - corners snap to corner tiles + // - edges snap to the exact tile the cursor is over + + if (!this._currentLayout) + return this._handleDefaultEdgeSnap(x, y, previewRect); + + if (isPointInsideRect({ x, y }, this._topCenter)) { + previewRect.width = this._workArea.width; + previewRect.height = this._workArea.height; + this._activeEdgeTile = this._topCenter; + } else if (isPointInsideRect({ x, y }, this._leftCenter)) { + // Find the tile exactly at cursor position on left edge + const leftTile = this._findExactTileAtEdge('left', { x, y }); + + if (leftTile) { + const newRect = this._createRectForSingleTile(leftTile); + previewRect.x = newRect.x; + previewRect.y = newRect.y; + previewRect.width = newRect.width; + previewRect.height = newRect.height; + } + + this._activeEdgeTile = this._leftCenter; + } else if (isPointInsideRect({ x, y }, this._rightCenter)) { + // Find the tile exactly at cursor position on right edge + const rightTile = this._findExactTileAtEdge('right', { x, y }); + + if (rightTile) { + const newRect = this._createRectForSingleTile(rightTile); + previewRect.x = newRect.x; + previewRect.y = newRect.y; + previewRect.width = newRect.width; + previewRect.height = newRect.height; + } else { + previewRect.x = + this._workArea.x + this._workArea.width - previewRect.width; + } + + this._activeEdgeTile = this._rightCenter; + } else if (isPointInsideRect({ x, y }, this._topLeft)) { + // Snap to top-left corner tile + const topLeftTile = this._findTileAtCorner('top-left'); + if (topLeftTile) { + previewRect.width = this._workArea.width * topLeftTile.width; + previewRect.height = this._workArea.height * topLeftTile.height; + previewRect.x = + this._workArea.x + this._workArea.width * topLeftTile.x; + previewRect.y = + this._workArea.y + this._workArea.height * topLeftTile.y; + } + this._activeEdgeTile = this._topLeft; + } else if (isPointInsideRect({ x, y }, this._bottomLeft)) { + // Snap to bottom-left corner tile + const bottomLeftTile = this._findTileAtCorner('bottom-left'); + if (bottomLeftTile) { + previewRect.width = this._workArea.width * bottomLeftTile.width; + previewRect.height = + this._workArea.height * bottomLeftTile.height; + previewRect.x = + this._workArea.x + this._workArea.width * bottomLeftTile.x; + previewRect.y = + this._workArea.y + this._workArea.height * bottomLeftTile.y; + } else { + previewRect.y = + this._workArea.y + + this._workArea.height - + previewRect.height; + } + this._activeEdgeTile = this._bottomLeft; + } else if (isPointInsideRect({ x, y }, this._topRight)) { + // Snap to top-right corner tile + const topRightTile = this._findTileAtCorner('top-right'); + if (topRightTile) { + previewRect.width = this._workArea.width * topRightTile.width; + previewRect.height = + this._workArea.height * topRightTile.height; + previewRect.x = + this._workArea.x + this._workArea.width * topRightTile.x; + previewRect.y = + this._workArea.y + this._workArea.height * topRightTile.y; + } else { + previewRect.x = + this._workArea.x + this._workArea.width - previewRect.width; + } + this._activeEdgeTile = this._topRight; + } else if (isPointInsideRect({ x, y }, this._bottomRight)) { + // Snap to bottom-right corner tile + const bottomRightTile = this._findTileAtCorner('bottom-right'); + if (bottomRightTile) { + previewRect.width = + this._workArea.width * bottomRightTile.width; + previewRect.height = + this._workArea.height * bottomRightTile.height; + previewRect.x = + this._workArea.x + this._workArea.width * bottomRightTile.x; + previewRect.y = + this._workArea.y + + this._workArea.height * bottomRightTile.y; + } else { + previewRect.x = + this._workArea.x + this._workArea.width - previewRect.width; + previewRect.y = + this._workArea.y + + this._workArea.height - + previewRect.height; + } + this._activeEdgeTile = this._bottomRight; + } else { + return { + changed: false, + rect: previewRect, + }; + } + + // Debug visualization + if (__DEBUG_MODE__) { + // Clean up any existing debug widget + global.windowGroup + .get_children() + .filter((c) => c.get_name() === 'debug')[0] + ?.destroy(); + + // Create a new debug widget + const debug = new St.Widget({ + x: this._activeEdgeTile.x, + y: this._activeEdgeTile.y, + height: this._activeEdgeTile.height, + width: this._activeEdgeTile.width, + style: 'border: 2px solid red', + name: 'debug', + }); + global.windowGroup.add_child(debug); + } return { changed: true, @@ -264,6 +639,98 @@ export default class EdgeTilingManager extends GObject.Object { }; } + // Helper methods for intelligent edge snap + private _shouldUseEdgeSnap(): boolean { + if (!this._currentLayout) return false; + return true; + } + + private _getLeftColumnTiles() { + if (!this._currentLayout) return []; + return this._currentLayout.tiles.filter( + (tile) => Math.abs(tile.x) < 0.01, // Tiles starting at x=0 + ); + } + + private _getRightColumnTiles() { + if (!this._currentLayout) return []; + return this._currentLayout.tiles.filter( + (tile) => Math.abs(tile.x + tile.width - 1) < 0.01, // Tiles ending at x=1 + ); + } + + private _findAllTilesInColumn(x: number, tolerance: number = 0.01) { + if (!this._currentLayout) return []; + return this._currentLayout.tiles.filter( + (tile) => Math.abs(tile.x - x) < tolerance, + ); + } + + private _createRectForColumnTiles( + tiles: Tile[], + isRightSide: boolean = false, + ): Mtk.Rectangle { + const rect = buildRectangle(); + rect.y = this._workArea.y; + + if (tiles.length === 0) { + // Use default quarter tiling if no tiles found + rect.width = this._workArea.width * QUARTER_PERCENTAGE; + rect.height = this._workArea.height; + + if (isRightSide) + rect.x = this._workArea.x + this._workArea.width - rect.width; + else rect.x = this._workArea.x; + + return rect; + } + + // When we have tiles, use their actual dimensions + // Get the minimum x and maximum width to create a rect that covers all tiles in column + const minX = Math.min(...tiles.map((tile) => tile.x)); + const maxWidth = Math.max(...tiles.map((tile) => tile.width)); + + rect.width = this._workArea.width * maxWidth; + rect.height = this._workArea.height; + rect.x = this._workArea.x + this._workArea.width * minX; + + return rect; + } + + private _findTileAtCorner( + corner: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right', + ) { + if (!this._currentLayout) return null; + + switch (corner) { + case 'top-left': + return this._currentLayout.tiles.find( + (tile) => + Math.abs(tile.x) < 0.01 && Math.abs(tile.y) < 0.01, + ); + case 'top-right': + return this._currentLayout.tiles.find( + (tile) => + Math.abs(tile.x + tile.width - 1) < 0.01 && + Math.abs(tile.y) < 0.01, + ); + case 'bottom-left': + return this._currentLayout.tiles.find( + (tile) => + Math.abs(tile.x) < 0.01 && + Math.abs(tile.y + tile.height - 1) < 0.01, + ); + case 'bottom-right': + return this._currentLayout.tiles.find( + (tile) => + Math.abs(tile.x + tile.width - 1) < 0.01 && + Math.abs(tile.y + tile.height - 1) < 0.01, + ); + } + + return null; + } + public needMaximize(): boolean { return ( this._activeEdgeTile !== null && @@ -275,4 +742,176 @@ export default class EdgeTilingManager extends GObject.Object { public abortEdgeTiling() { this._activeEdgeTile = null; } + + private _findClosestTileToPosition( + pointerPos: { x: number; y: number }, + candidateTiles: Tile[], + ): Tile | null { + if (!candidateTiles.length) return null; + + // Convert pointer position to relative coordinates (0-1) + const relativeY = + (pointerPos.y - this._workArea.y) / this._workArea.height; + + // Find the tile whose y-range contains the pointer + const containingTiles = candidateTiles.filter( + (tile) => relativeY >= tile.y && relativeY <= tile.y + tile.height, + ); + + // If no tile directly contains the point, find the closest + if (containingTiles.length === 0) { + return candidateTiles.reduce( + (closest, tile) => { + // Find distance to the center of the tile + const tileCenter = { + x: tile.x + tile.width / 2, + y: tile.y + tile.height / 2, + }; + + const tileCenterPx = { + x: + this._workArea.x + + tileCenter.x * this._workArea.width, + y: + this._workArea.y + + tileCenter.y * this._workArea.height, + }; + + const distance = Math.sqrt( + Math.pow(pointerPos.x - tileCenterPx.x, 2) + + Math.pow(pointerPos.y - tileCenterPx.y, 2), + ); + + // Return the closest tile + if (!closest) return tile; + const closestCenter = { + x: closest.x + closest.width / 2, + y: closest.y + closest.height / 2, + }; + + const closestCenterPx = { + x: + this._workArea.x + + closestCenter.x * this._workArea.width, + y: + this._workArea.y + + closestCenter.y * this._workArea.height, + }; + + const closestDistance = Math.sqrt( + Math.pow(pointerPos.x - closestCenterPx.x, 2) + + Math.pow(pointerPos.y - closestCenterPx.y, 2), + ); + + return distance < closestDistance ? tile : closest; + }, + null as Tile | null, + ); + } + + // If multiple tiles contain the point, find the closest + if (containingTiles.length > 1) { + return containingTiles.reduce( + (closest, tile) => { + const tileCenterX = + this._workArea.x + + (tile.x + tile.width / 2) * this._workArea.width; + const distance = Math.abs(pointerPos.x - tileCenterX); + + if (!closest) return tile; + + const closestCenterX = + this._workArea.x + + (closest.x + closest.width / 2) * this._workArea.width; + const closestDistance = Math.abs( + pointerPos.x - closestCenterX, + ); + + return distance < closestDistance ? tile : closest; + }, + null as Tile | null, + ); + } + + // Return the single containing tile + return containingTiles[0]; + } + + private _createRectForSingleTile(tile: Tile | null): Mtk.Rectangle { + const rect = buildRectangle(); + + if (!tile) { + // Default to quarter tiling + rect.width = this._workArea.width * QUARTER_PERCENTAGE; + rect.height = this._workArea.height * QUARTER_PERCENTAGE; + rect.x = this._workArea.x; + rect.y = this._workArea.y; + return rect; + } + + // Create rect based on the single tile + rect.width = this._workArea.width * tile.width; + rect.height = this._workArea.height * tile.height; + rect.x = this._workArea.x + this._workArea.width * tile.x; + rect.y = this._workArea.y + this._workArea.height * tile.y; + + return rect; + } + + private _findTilesAtEdge( + edge: 'left' | 'right' | 'top' | 'bottom', + ): Tile[] { + if (!this._currentLayout) return []; + + // Find all tiles that touch this edge + const tiles = this._currentLayout.tiles.filter((tile) => { + // Determine if tile is on the specified edge + switch (edge) { + case 'left': + return Math.abs(tile.x) < 0.01; + case 'right': + return Math.abs(tile.x + tile.width - 1) < 0.01; + case 'top': + return Math.abs(tile.y) < 0.01; + case 'bottom': + return Math.abs(tile.y + tile.height - 1) < 0.01; + } + return false; + }); + + return tiles; + } + + private _findExactTileAtEdge( + edge: 'left' | 'right' | 'top' | 'bottom', + pointerPos: { x: number; y: number }, + ): Tile | null { + const edgeTiles = this._findTilesAtEdge(edge); + if (edgeTiles.length === 0) return null; + + // Convert pointer position to relative coordinates (0-1) + const relativeX = + (pointerPos.x - this._workArea.x) / this._workArea.width; + const relativeY = + (pointerPos.y - this._workArea.y) / this._workArea.height; + + // Find the tile that contains the pointer position + for (const tile of edgeTiles) { + const tileMinY = tile.y; + const tileMaxY = tile.y + tile.height; + const tileMinX = tile.x; + const tileMaxX = tile.x + tile.width; + + // Check if pointer is within this tile's vertical/horizontal range based on edge + if (edge === 'left' || edge === 'right') { + if (relativeY >= tileMinY && relativeY <= tileMaxY) return tile; + } else if (relativeX >= tileMinX && relativeX <= tileMaxX) { + // top or bottom + return tile; + } + } + + // If no tile directly contains the point, find the closest one + return this._findClosestTileToPosition(pointerPos, edgeTiles); + } } diff --git a/src/components/tilingsystem/tilingManager.ts b/src/components/tilingsystem/tilingManager.ts index 7ef67b58..64106241 100644 --- a/src/components/tilingsystem/tilingManager.ts +++ b/src/components/tilingsystem/tilingManager.ts @@ -102,6 +102,7 @@ export class TilingManager { `Work area for monitor ${this._monitor.index}: ${this._workArea.x} ${this._workArea.y} ${this._workArea.width}x${this._workArea.height}`, ); this._edgeTilingManager = new EdgeTilingManager(this._workArea); + this._edgeTilingManager.monitorIndex = this._monitor.index; // handle scale factor of the monitor const monitorScalingFactor = this._enableScaling @@ -596,6 +597,8 @@ export class TilingManager { const tilingLayout = this._workspaceTilingLayout.get(currentWs); if (!tilingLayout) return GLib.SOURCE_REMOVE; + this._edgeTilingManager.workspaceIndex = currentWs.index(); + // if the window was moved into another monitor and it is still grabbed if ( !window.allows_resize() || @@ -885,42 +888,9 @@ export class TilingManager { // retrieve the current layout for the monitor and workspace // were the window was tiled const layout = wasEdgeTiling - ? new Layout( - [ - // top-left - new Tile({ - x: 0, - y: 0, - width: 0.5, - height: 0.5, - groups: [], - }), - // top-right - new Tile({ - x: 0.5, - y: 0, - width: 0.5, - height: 0.5, - groups: [], - }), - // bottom-left - new Tile({ - x: 0, - y: 0.5, - width: 0.5, - height: 0.5, - groups: [], - }), - // bottom-right - new Tile({ - x: 0.5, - y: 0.5, - width: 0.5, - height: 0.5, - groups: [], - }), - ], - 'edge-tiling-layout', + ? GlobalState.get().getSelectedLayoutOfMonitor( + this._monitor.index, + window.get_workspace().index(), ) : wasSnapAssistingLayout ? wasSnapAssistingLayout diff --git a/src/components/windowsSuggestions/suggestedWindowPreview.ts b/src/components/windowsSuggestions/suggestedWindowPreview.ts index 35ace13f..c5e0036d 100644 --- a/src/components/windowsSuggestions/suggestedWindowPreview.ts +++ b/src/components/windowsSuggestions/suggestedWindowPreview.ts @@ -237,8 +237,7 @@ export default class SuggestedWindowPreview extends Shell.WindowPreview { } _addWindow(metaWindow: Meta.Window) { - this.clone = - this.windowContainer.layout_manager.add_window(metaWindow); + this.clone = this.windowContainer.layout_manager.add_window(metaWindow); // if (!clone) return; /* // We expect this to be used for all interaction rather than diff --git a/src/prefs.ts b/src/prefs.ts index a66f98ad..c0c3cd34 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line spaced-comment /*! * Tiling Shell: advanced and modern window management for GNOME * @@ -21,7 +22,7 @@ import { Gtk, Adw, Gio, GLib, Gdk, GObject } from './gi/prefs'; import Settings from './settings/settings'; -import { ActivationKey } from './settings/settings'; +import { EdgeSnapMode, ActivationKey } from './settings/settings'; import { logger } from './utils/logger'; import { ExtensionPreferences } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; import Layout from './components/layout/Layout'; @@ -148,7 +149,7 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference this._buildSwitchRow( Settings.KEY_ENABLE_SMART_WINDOW_BORDER_RADIUS, _('Smart border radius'), - _('Dynamically adapt to the window’s actual border radius'), + _("Dynamically adapt to the window's actual border radius"), ), ); windowBorderExpanderRow.add_row( @@ -376,8 +377,13 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference ); activeScreenEdgesGroup.add(edgeTilingOffset); - // const edgeTilingBehaviourRow = this._buildEdgeTilingBehaviourRow(); - // activeScreenEdgesGroup.add(edgeTilingBehaviourRow); + // Create dropdown for edge snap mode + const edgeTilingBehaviourRow = this._buildEdgeTilingBehaviourRow( + Settings.EDGE_SNAP_MODE, + (newMode: EdgeSnapMode) => Settings.EDGE_SNAP_MODE = newMode, + ); + activeScreenEdgesGroup.add(edgeTilingBehaviourRow); + prefsPage.add(activeScreenEdgesGroup); // Windows suggestions section @@ -1071,11 +1077,10 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference return button; } - _buildEdgeTilingBehaviourRow() { + _buildEdgeTilingBehaviourRow(currentMode: EdgeSnapMode, onModeChange: (newMode: EdgeSnapMode) => void) { const row = new Adw.ActionRow({ activatable: false, - title: _("Behaviour"), - subtitle: _("Choose how windows snap to screen edges"), + title: _("Choose how windows snap to screen edges"), cssClasses: ['edge-tiling-behaviour'] }); (row.get_child() as Gtk.Box).set_orientation(Gtk.Orientation.VERTICAL); @@ -1086,24 +1091,27 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference valign: Gtk.Align.FILL, homogeneous: true, // all children same size spacing: 2, - cssClasses: ['content'] - //margin_top: 6, + cssClasses: ['content'], + margin_bottom: 6, }); const defaultBtn = this._createEdgeTilingBehaviourOption( _('Default'), - _('Snap to quarters and halves'), + _('Follow quarters or screen halves'), 'edge-default-symbolic' ); + defaultBtn.connect("toggled", () => onModeChange(EdgeSnapMode.DEFAULT)); const adaptiveBtn = this._createEdgeTilingBehaviourOption( _('Adaptive'), - _('Snap to corners and columns'), + _('Follow corners of selected layout or screen halves'), 'edge-adaptive-symbolic' ); + adaptiveBtn.connect("toggled", () => onModeChange(EdgeSnapMode.ADAPTIVE)); const granularBtn = this._createEdgeTilingBehaviourOption( _('Granular'), - _('Snap window to layout tiles'), + _('Follow currently selected layout'), 'edge-granular-symbolic' ); + granularBtn.connect("toggled", () => onModeChange(EdgeSnapMode.GRANULAR)); content.append(defaultBtn); content.append(adaptiveBtn); content.append(granularBtn); @@ -1111,7 +1119,9 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference defaultBtn.set_group(adaptiveBtn); granularBtn.set_group(adaptiveBtn); // set the currently activated one - defaultBtn.set_active(true); + if (currentMode === EdgeSnapMode.ADAPTIVE) adaptiveBtn.set_active(true); + else if (currentMode === EdgeSnapMode.GRANULAR) granularBtn.set_active(true); + else defaultBtn.set_active(true); (row.get_child() as Gtk.Box).append(content); return row; diff --git a/src/settings/settings.ts b/src/settings/settings.ts index ad507a0a..4155fbe5 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -9,6 +9,12 @@ export enum ActivationKey { SUPER, } +export enum EdgeSnapMode { + DEFAULT = 'default', + ADAPTIVE = 'adaptive', + GRANULAR = 'granular', +} + /** ------------- Utility functions ------------- */ function get_string(key: string): string { return ( @@ -115,6 +121,7 @@ export default class Settings { static KEY_ENABLE_TILING_SYSTEM_WINDOWS_SUGGESTIONS = 'enable-tiling-system-windows-suggestions'; static KEY_ENABLE_SNAP_ASSISTANT_WINDOWS_SUGGESTIONS = 'enable-snap-assistant-windows-suggestions'; static KEY_ENABLE_SCREEN_EDGES_WINDOWS_SUGGESTIONS = 'enable-screen-edges-windows-suggestions'; + static KEY_EDGE_SNAP_MODE = 'edge-snap-mode'; static SETTING_MOVE_WINDOW_RIGHT = 'move-window-right'; static SETTING_MOVE_WINDOW_LEFT = 'move-window-left'; @@ -477,6 +484,18 @@ export default class Settings { set_boolean(Settings.KEY_ENABLE_SCREEN_EDGES_WINDOWS_SUGGESTIONS, val); } + static get EDGE_SNAP_MODE(): EdgeSnapMode { + const value = get_string(Settings.KEY_EDGE_SNAP_MODE); + if (Object.values(EdgeSnapMode).includes(value as EdgeSnapMode)) + return value as EdgeSnapMode; + + return EdgeSnapMode.DEFAULT; + } + + static set EDGE_SNAP_MODE(val: EdgeSnapMode) { + set_string(Settings.KEY_EDGE_SNAP_MODE, val); + } + static get_inner_gaps(scaleFactor: number = 1): { top: number; bottom: number; diff --git a/translations/cs.po b/translations/cs.po index 2b83269a..c8c1ad3a 100644 --- a/translations/cs.po +++ b/translations/cs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: 2025-10-02 22:40+0200\n" "Last-Translator: Amerey \n" "Language-Team: \n" @@ -18,213 +18,214 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.7\n" -#: dist/prefs.js:793 +#: dist/prefs.js:59 msgid "General" msgstr "Obecné" -#: dist/prefs.js:798 +#: dist/prefs.js:64 msgid "Appearance" msgstr "Vzhled" -#: dist/prefs.js:799 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "Nastavení vzhledu Tiling Shell" -#: dist/prefs.js:804 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "Zobrazit ikonu" -#: dist/prefs.js:805 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "Zda se má zobrazit ikona na panelu" -#: dist/prefs.js:810 +#: dist/prefs.js:76 msgid "Inner gaps" msgstr "Vnitřní mezery" -#: dist/prefs.js:811 +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "Mezery mezi okny" -#: dist/prefs.js:816 +#: dist/prefs.js:82 msgid "Outer gaps" msgstr "Vnější mezery" -#: dist/prefs.js:817 +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "Mezery mezi oknem a okrajem monitoru" -#: dist/prefs.js:821 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "Rozostření (experimentální funkce)" -#: dist/prefs.js:823 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "Použít efekt rozostření na asistenta přichycení a náhledy dlaždic" -#: dist/prefs.js:829 +#: dist/prefs.js:95 msgid "Snap Assistant threshold" msgstr "Vzdálenost asistenta přichycení" -#: dist/prefs.js:831 +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "" "Minimální vzdálenost od asistenta přichycení k ukazateli pro jeho otevření" -#: dist/prefs.js:840 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "Asistent přichycení" -#: dist/prefs.js:841 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "Použít efekt rozostření na asistenta přichycení" -#: dist/prefs.js:847 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "Náhled vybrané dlaždice" -#: dist/prefs.js:848 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "Použít efekt rozostření na vybraný náhled dlaždice" -#: dist/prefs.js:852 +#: dist/prefs.js:118 msgid "Window border" msgstr "Ohraničení okna" -#: dist/prefs.js:853 dist/prefs.js:860 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "Zobrazení ohraničení kolem vybraného okna" -#: dist/prefs.js:859 +#: dist/prefs.js:125 msgid "Enable" msgstr "Povolit" -#: dist/prefs.js:866 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "Inteligentní poloměr ohraničení" -#: dist/prefs.js:867 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +#, fuzzy +msgid "Dynamically adapt to the window's actual border radius" msgstr "Dynamicky se přizpůsobí skutečnému poloměru okraje okna" -#: dist/prefs.js:873 +#: dist/prefs.js:139 msgid "Width" msgstr "Šířka" -#: dist/prefs.js:874 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "Velikost ohraničení" -#: dist/prefs.js:883 +#: dist/prefs.js:149 msgid "Border color" msgstr "Barva ohraničení" -#: dist/prefs.js:884 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "Vyberte barvu ohraničení" -#: dist/prefs.js:900 +#: dist/prefs.js:166 msgid "Animations" msgstr "Animace" -#: dist/prefs.js:901 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "Přizpůsobení animací" -#: dist/prefs.js:907 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "Doba animace asistenta přichycení" -#: dist/prefs.js:908 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "Doba animace v milisekundách" -#: dist/prefs.js:916 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "Doba animace dlaždic" -#: dist/prefs.js:917 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "Doba animace v milisekundách" -#: dist/prefs.js:923 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "Chování" -#: dist/prefs.js:924 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "Nastavení chování Tiling Shell" -#: dist/prefs.js:929 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "Povolit asistenta přichycení" -#: dist/prefs.js:930 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "" "Přesunutím okna k horní části obrazovky mužete vybrat pozici přichycení" -#: dist/prefs.js:935 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "Povolit systém dlaždic" -#: dist/prefs.js:936 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "Podržte aktivační klávesu a přesouvejte okno pro přichycení k dláždici" -#: dist/prefs.js:944 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "Klávesa pro deaktivaci systému dlaždic" -#: dist/prefs.js:946 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" msgstr "" "Podržte deaktivační klávesu při pohybu okna pro deaktivaci systému dláždic" -#: dist/prefs.js:954 +#: dist/prefs.js:220 msgid "Span multiple tiles" msgstr "Rozvržení přes více dlaždic" -#: dist/prefs.js:955 +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "Podržte aktivační klávesu, abyste překlenuli více dlaždic" -#: dist/prefs.js:964 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "Povolit automatické dlaždice" -#: dist/prefs.js:965 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "Automaticky vložte nová okna na nejvhodnějsí dlaždice" -#: dist/prefs.js:970 +#: dist/prefs.js:236 msgid "Enable auto-resize of the complementing tiled windows" msgstr "Povolit automatickou změnu velikosti doplňujících dlaždicových oken" -#: dist/prefs.js:972 +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "Když se změní velikost dlaždicového okna, automaticky změníte velikost " "ostatních dlaždicových oken poblíž" -#: dist/prefs.js:978 +#: dist/prefs.js:244 msgid "Restore window size" msgstr "Obnovit velikost okna" -#: dist/prefs.js:980 +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "Zda vrátit okna do původní velikosti, když nejsou v dlaždicích" -#: dist/prefs.js:986 +#: dist/prefs.js:252 msgid "Add snap assistant and auto-tile buttons to window menu" msgstr "" "Přidat do nabídky okna asistenta přichycení a tlačítka automatického " "rozložení" -#: dist/prefs.js:988 +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -232,11 +233,11 @@ msgstr "" "Když kliknete pravým tlačítkem myši na název okna, zobrazí se v nabídce " "tlačítka asistenta přichycení a automatického rozložení" -#: dist/prefs.js:994 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "Přidat dlaždicová okna do nabídky ALT+TAB" -#: dist/prefs.js:996 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" @@ -244,421 +245,444 @@ msgstr "" "Přidáním dlaždicových oken do nabídky ALT+TAB otevřete všechna dlaždicová " "okna najednou" -#: dist/prefs.js:1001 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "Okraje obrazovky" -#: dist/prefs.js:1003 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" "Přetažením oken proti hornímu, levému a pravému okraji obrazovky změníte " "jejich velikost" -#: dist/prefs.js:1017 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "Tažením proti hornímu okraji okno maximalizujete" -#: dist/prefs.js:1018 +#: dist/prefs.js:284 msgid "Drag windows against the top edge to maximize them" msgstr "Přetáhněte okna proti hornímu okraji, abyste je maximalizovali" -#: dist/prefs.js:1027 +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "Plocha pro aktivaci dláždic" -#: dist/prefs.js:1028 +#: dist/prefs.js:294 #, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "Aktivační oblast pro spuštění dláždic (%% obrazovky)" -#: dist/prefs.js:1044 +#: dist/prefs.js:310 msgid "Edge tiling offset" msgstr "Odsazení dlaždic od okraje obrazovky" -#: dist/prefs.js:1045 +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "Odsazení od okraje obrazovky pro spuštění dláždic (v pixelech)" -#: dist/prefs.js:1062 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "Návrhy oken" -#: dist/prefs.js:1063 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "Povolit a zakázat návrhy oken" -#: dist/prefs.js:1068 +#: dist/prefs.js:339 msgid "Enable window suggestions for the tiling system" msgstr "Povolit návrhy oken pro systém dlaždic" -#: dist/prefs.js:1070 +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" "Poskytuje chytré návrhy, jak vyplnit prázdné dlaždice při použití systému " "obkladů" -#: dist/prefs.js:1076 +#: dist/prefs.js:347 msgid "Enable window suggestions for the snap assistant" msgstr "Povolit návrhy oken pro asistenta přichycení" -#: dist/prefs.js:1078 +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" "Nabízí návrhy k vyplnění prázdných dlaždic při použití asistenta přichycení" -#: dist/prefs.js:1084 +#: dist/prefs.js:355 msgid "Enable window suggestions for screen edge snapping" msgstr "Povolit návrhy oken pro přichycení okrajů obrazovky" -#: dist/prefs.js:1086 +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" "Navrhuje, aby okna obsadila prázdné dlaždice při přichycení k okrajům " "obrazovky" -#: dist/prefs.js:1092 +#: dist/prefs.js:363 msgid "Layouts" msgstr "Rozvržení" -#: dist/prefs.js:1093 +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "Nastavení rozvržení Tiling Shell" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "Upravit rozvržení" -#: dist/prefs.js:1099 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "Otevřete editor rozvržení" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "Exportovat rozvržení" -#: dist/prefs.js:1106 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "Exportujte rozvržení do souboru" -#: dist/prefs.js:1112 dist/prefs.js:1496 +#: dist/prefs.js:383 dist/prefs.js:767 msgid "Save" msgstr "Uložit" -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 msgid "Cancel" msgstr "Zrušit" -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "Importovat rozvržení" -#: dist/prefs.js:1160 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "Importujte rozvržení ze souboru" -#: dist/prefs.js:1163 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "Vyberte soubor rozvržení" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "Otevřít" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "Resetovat rozvržení" -#: dist/prefs.js:1216 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "Obnovte výchozí rozvržení" -#: dist/prefs.js:1229 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "Klávesové zkratky" -#: dist/prefs.js:1231 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "Pomocí klávesových zkratek provádějte akce na vybraném okně" -#: dist/prefs.js:1249 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "Přesunout okno na pravou dlaždici" -#: dist/prefs.js:1251 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "Přesuňte vybrané okno na dlaždici napravo" -#: dist/prefs.js:1260 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "Přesunout okno na levou dlaždici" -#: dist/prefs.js:1261 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "Přesuňte vybrané okno na dlaždici nalevo" -#: dist/prefs.js:1267 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "Přesunout okno na dlaždici výše" -#: dist/prefs.js:1268 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "Přesuňte vybrané okno na dlaždici výše" -#: dist/prefs.js:1274 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "Přesunout okno na dlaždici níže" -#: dist/prefs.js:1275 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "Přesuňte vybrané okno na dlaždici níže" -#: dist/prefs.js:1281 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "Roztáhnout okno na pravou dlaždici" -#: dist/prefs.js:1282 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "Roztáhněte vybrané okno na dlaždici napravo" -#: dist/prefs.js:1288 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "Roztáhnout okno na levou dlaždici" -#: dist/prefs.js:1289 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "Roztáhněte vybrané okno na dlaždici nalevo" -#: dist/prefs.js:1295 +#: dist/prefs.js:566 msgid "Span window above" msgstr "Roztáhnout okno výše" -#: dist/prefs.js:1296 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "Roztáhněte vybrané okno na dlaždici výše" -#: dist/prefs.js:1302 +#: dist/prefs.js:573 msgid "Span window down" msgstr "Roztáhnout okno níže" -#: dist/prefs.js:1303 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "Roztáhněte vybrané okno na dlaždici níže" -#: dist/prefs.js:1309 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "Roztáhnout okno na všechny dlaždice" -#: dist/prefs.js:1310 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "Roztáhněte vybrané okno na všechny dlaždice" -#: dist/prefs.js:1316 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "Odpojit vybrané okno z dlaždic" -#: dist/prefs.js:1324 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "Přesunout okno do středu" -#: dist/prefs.js:1326 +#: dist/prefs.js:597 msgid "Move the focused window to the center of the screen" msgstr "Přesuňte vybrané okno do středu obrazovky" -#: dist/prefs.js:1335 +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "Vybrat okno napravo" -#: dist/prefs.js:1337 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "Vyberte okno napravo od aktuálně aktivního okna" -#: dist/prefs.js:1344 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "Vybrat okno nalevo" -#: dist/prefs.js:1345 +#: dist/prefs.js:616 msgid "Focus the window to the left of the current focused window" msgstr "Vyberte okno nalevo od aktuálně aktivního okna" -#: dist/prefs.js:1351 +#: dist/prefs.js:622 msgid "Focus window above" msgstr "Vybrat okno nahoře" -#: dist/prefs.js:1352 +#: dist/prefs.js:623 msgid "Focus the window above the current focused window" msgstr "Vyberte okno nad aktuálně aktivním oknem" -#: dist/prefs.js:1358 +#: dist/prefs.js:629 msgid "Focus window below" msgstr "Vybrat okno dole" -#: dist/prefs.js:1359 +#: dist/prefs.js:630 msgid "Focus the window below the current focused window" msgstr "Vyberte okno pod aktuálně aktivním oknem" -#: dist/prefs.js:1365 +#: dist/prefs.js:636 msgid "Focus next window" msgstr "Vybrat následující okno" -#: dist/prefs.js:1366 +#: dist/prefs.js:637 msgid "Focus the window next to the current focused window" msgstr "Vyberte okno za aktuálně aktivním oknem" -#: dist/prefs.js:1372 +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "Vybrat předchozí okno" -#: dist/prefs.js:1373 +#: dist/prefs.js:644 msgid "Focus the window prior to the current focused window" msgstr "Vyberte okno před aktuálně aktivním oknem" -#: dist/prefs.js:1379 +#: dist/prefs.js:650 msgid "Highlight focused window" msgstr "Zvýraznit vybrané okno" -#: dist/prefs.js:1381 +#: dist/prefs.js:652 msgid "Minimize all the other windows and show only the focused window" msgstr "Minimalizovat všechna ostatní okna a zobrazit pouze vybrané okno" -#: dist/prefs.js:1388 +#: dist/prefs.js:659 msgid "Cycle layouts" msgstr "Procházet rozvržení" -#: dist/prefs.js:1389 +#: dist/prefs.js:660 msgid "Cycle through available workspace layouts" msgstr "Procházení dostupných rozvržení pracovního prostoru" -#: dist/prefs.js:1415 +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "Zobrazit a přizpůsobit všechny zkratky" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "Zobrazit a přizpůsobit zkratky" -#: dist/prefs.js:1466 +#: dist/prefs.js:737 msgid "Enable next/previous window focus to wrap around" msgstr "Povolit další/předchozí vybrání okna" -#: dist/prefs.js:1468 +#: dist/prefs.js:739 msgid "When focusing next or previous window, wrap around at the window edge" msgstr "Při vybrání dalšího nebo předchozího okna zalomí okraje okna" -#: dist/prefs.js:1474 +#: dist/prefs.js:745 msgid "Restrict directional focus to tiled windows" msgstr "Omezení směrové navigace na okna s dlaždicemi" -#: dist/prefs.js:1476 +#: dist/prefs.js:747 msgid "When using directional focus navigation, only consider tiled windows" msgstr "" "Při použití směrové navigace bere v úvahu pouze dlaždicově uspořádaná okna" -#: dist/prefs.js:1481 +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "Import, export a reset" -#: dist/prefs.js:1483 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "Importujte, exportujte a resetujte nastavení Tiling Shell" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "Export nastavení" -#: dist/prefs.js:1490 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "Exportujte nastavení do souboru" -#: dist/prefs.js:1493 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "Export nastavení do textového souboru" -#: dist/prefs.js:1500 +#: dist/prefs.js:771 msgid "Text file" msgstr "Textový soubor" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "Import nastavení" -#: dist/prefs.js:1545 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "Importujte nastavení ze souboru" -#: dist/prefs.js:1548 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "Vyberte textový soubor, ze kterého chcete importovat" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "Resetovat nastavení" -#: dist/prefs.js:1592 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "Obnovte výchozí nastavení" -#: dist/prefs.js:1607 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "Darovat na ko-fi" -#: dist/prefs.js:1613 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "Nahlásit chybu" -#: dist/prefs.js:1619 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "Žádost o funkci" -#: dist/prefs.js:1627 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "Máte problémy, chcete navrhnout novou funkci nebo přispět?" -#: dist/prefs.js:1634 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "Otevřít nový problém na" -#: dist/prefs.js:1814 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +#, fuzzy +msgid "Follow quarters or screen halves" +msgstr "Přesunout na nejlepší dlaždici" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "" -#: dist/prefs.js:1815 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "Nový akcelerátor…" -#: dist/prefs.js:1892 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "K vymazání použijte Backspace" -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "Upravit rozvržení" +#~ msgid "Edit Layouts" +#~ msgstr "Upravit rozvržení" -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "Nové rozvržení" +#~ msgid "New Layout" +#~ msgstr "Nové rozvržení" -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "rozdělí dlaždici" +#~ msgid "to split a tile" +#~ msgstr "rozdělí dlaždici" -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "rozdělí dlaždici vertikálně" +#~ msgid "to split a tile vertically" +#~ msgstr "rozdělí dlaždici vertikálně" -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "smaže dlaždici" +#~ msgid "to delete a tile" +#~ msgstr "smaže dlaždici" -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "použijte ikonu pro uložení nebo zrušení" +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "použijte ikonu pro uložení nebo zrušení" #~ msgid "Menu" #~ msgstr "Menu" @@ -678,9 +702,6 @@ msgstr "použijte ikonu pro uložení nebo zrušení" #~ msgid "Start editing" #~ msgstr "Začít upravovat" -#~ msgid "Move to best tile" -#~ msgstr "Přesunout na nejlepší dlaždici" - #~ msgid "Move to leftmost tile" #~ msgstr "Přesunout na dlaždici, která je nejvíce vlevo" diff --git a/translations/de.po b/translations/de.po index d46b735e..c2898104 100644 --- a/translations/de.po +++ b/translations/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiling Shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: 2025-11-22 16:08+0100\n" "Last-Translator: Christian Lauinger \n" "Language-Team: German\n" @@ -18,692 +18,170 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.6\n" -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:7 -msgid "Last version installed" -msgstr "Letzte installierte Version" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:8 -msgid "Last version installed of this extension." -msgstr "Letzte installierte Version dieser Erweiterung." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:12 -msgid "Enable tiling system" -msgstr "Kachel-System aktivieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:13 -msgid "Hold CTRL while moving a window to tile it." -msgstr "" -"Halten Sie die STRG-Taste gedrückt, während Sie ein Fenster verschieben, um " -"es nebeneinander anzuordnen." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:17 -msgid "Tiling system activation key" -msgstr "Aktivierungstaste des Kachel-Systems" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:18 -msgid "Which key to hold while moving a window to activate the tiling system." -msgstr "" -"Welche Taste muss beim Verschieben eines Fensters gedrückt gehalten werden, " -"um das Kachelsystem zu aktivieren." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:22 -msgid "Tiling system deactivation key" -msgstr "Deaktivierungstaste des Kachel-Systems" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:23 -msgid "" -"Which key to hold while moving a window to deactivate the tiling system." -msgstr "" -"Welche Taste muss gedrückt gehalten werden, während ein Fenster verschoben " -"wird, um das Kachelsystem zu deaktivieren." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:27 -msgid "Enable snap assist" -msgstr "Snap-Assistent aktivieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:28 -msgid "Move the window on top of the screen to snap assist it." -msgstr "" -"Bewegen Sie das Fenster an den oberen Bildschirmrand, um es anzudocken." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:32 -msgid "Shows indicator" -msgstr "Zeigt Indikator an" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:33 -msgid "Shows an indicator on top panel." -msgstr "Zeigt einen Indikator auf dem oberen Bedienfeld an." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:37 -#: src/prefs.ts:89 -msgid "Inner gaps" -msgstr "Innere Abstände" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:38 -msgid "Internal gaps between tiles in a layout." -msgstr "Interne Abstände zwischen Kacheln in einem Layout." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:42 -#: src/prefs.ts:96 -msgid "Outer gaps" -msgstr "Äußere Abstände" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:43 -msgid "External gaps between the layout and the monitor borders." -msgstr "Abstände zwischen Fenstern und Monitorrändern." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:47 -#: src/prefs.ts:247 -msgid "Span multiple tiles" -msgstr "Mehrere Kacheln vereinen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:48 -msgid "Hold ALT to span multiple tiles." -msgstr "Aktivierungstaste halten, um mehrere Kacheln zu vereinen." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:52 -msgid "Key to span multiple tiles" -msgstr "Taste zum Überspannen mehrerer Kacheln" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:53 -msgid "Which key to hold to span multiple tiles." -msgstr "Aktivierungstaste halten, um mehrere Kacheln zu vereinen." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:57 -#: src/prefs.ts:405 -msgid "Layouts" -msgstr "Layouts" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:58 -msgid "The layouts available to the tiling managers and the snap assist." -msgstr "" -"Die Layouts, die den Kachelungsmanagern und der Ausrichtungshilfe zur " -"Verfügung stehen." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:62 -msgid "Selected layouts" -msgstr "Ausgewählte Layouts" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:63 -msgid "Each monitor's active layout used by the monitor tiling manager." -msgstr "" -"Das aktive Layout jedes Monitors, das vom Monitor-Tiling-Manager verwendet " -"wird." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:67 -#: src/prefs.ts:275 -msgid "Restore window size" -msgstr "Fenstergröße wiederherstellen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:68 -msgid "Restore the windows to their original size when untiled." -msgstr "" -"Ob bei Fenstern nach Aufhebung der Kachelung ihre ursprüngliche Größe " -"wiederhergestellt werden soll." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:72 -#: src/prefs.ts:801 -msgid "Enable next/previous window focus to wrap around" -msgstr "Zyklisches Fokussieren des nächsten/vorherigen Fensters aktivieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:73 -#: src/prefs.ts:803 -msgid "When focusing next or previous window, wrap around at the window edge" -msgstr "" -"Beim Fokussieren des nächsten oder vorherigen Fensters am Rand umspringen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:77 -#: src/prefs.ts:810 -msgid "Restrict directional focus to tiled windows" -msgstr "Richtungsfokus auf gekachelte Fenster beschränken" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:78 -#: src/prefs.ts:812 -msgid "When using directional focus navigation, only consider tiled windows" -msgstr "" -"Bei Verwendung der gerichteten Fokusnavigation nur gekachelte Fenster " -"berücksichtigen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:82 -#: src/prefs.ts:266 -msgid "Enable auto-resize of the complementing tiled windows" -msgstr "Automatische Größenänderung ergänzender gekachelter Fenster aktivieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:83 -msgid "" -"When a tiled window is resized, auto-resize the other tiled windows near it." -msgstr "" -"Wenn die Größe eines gekachelten Fensters geändert wird, werden die anderen " -"gekachelten Fenster in seiner Nähe automatisch in der Größe angepasst." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:87 -msgid "Enable Snap Assistant blur" -msgstr "Snap-Assistent verwischen aktivieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:88 -msgid "Blur snap assistant" -msgstr "Snap-Assistent verwischen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:92 -msgid "Enable selected tile preview blur" -msgstr "Vorschaubildschirm für ausgewählte Kacheln unscharf darstellen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:93 -msgid "Blur selected tile previews" -msgstr "Ausgewählte Kachelvorschauen verwischen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:97 -msgid "Enable keybindings" -msgstr "Tastenkombinationen aktivieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:98 -msgid "Move focused window through tiles by using keybindings." -msgstr "" -"Verschieben Sie das fokussierte Fenster mithilfe von Tastenkombinationen " -"durch die Kacheln." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:102 -msgid "Enable auto tiling" -msgstr "Automatisches Kacheln aktivieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:103 -msgid "" -"Automatically tile a new window to the best tile according to the current " -"layout." -msgstr "" -"Ein neues Fenster automatisch entsprechend dem aktuellen Layout optimal " -"anordnen." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:107 -msgid "Overridden settings" -msgstr "Überschriebene Einstellungen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:108 -msgid "The settings that are overridden and their old value." -msgstr "Die überschriebenen Einstellungen und ihre alten Werte." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:112 -msgid "Active Screen Edges" -msgstr "Aktive Bildschirmränder" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:113 -msgid "" -"Drag windows against the top, left and right screen edges to resize them." -msgstr "" -"Ziehen Sie Fenster an den oberen, linken und rechten Bildschirmrand, um ihre " -"Größe zu ändern." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:117 -msgid "Drag agains top edge to maximize window" -msgstr "Ziehen Sie an der Oberkante, um das Fenster zu maximieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:118 -#: src/prefs.ts:320 -msgid "Drag windows against the top edge to maximize them" -msgstr "Ziehen Sie Fenster an den oberen Rand, um sie zu maximieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:122 -#: src/prefs.ts:284 -msgid "Add snap assistant and auto-tile buttons to window menu" -msgstr "" -"Snap-Assistent und Auto-Kachel Schaltflächen zum Fenstermenü hinzufügen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:123 -msgid "" -"Add snap assistant and auto-tile buttons in the menu that shows up when you " -"right click on a window title." -msgstr "" -"Fügen Sie die Schaltflächen „Ausrichten“ und „Automatisch anordnen“ in das " -"Menü ein, das angezeigt wird, wenn Sie mit der rechten Maustaste auf einen " -"Fenstertitel klicken." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:127 -msgid "Add tiled windows group to alt+tab menu" -msgstr "Gruppierte Fenster zum Alt+Tab-Menü hinzufügen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:128 -msgid "" -"Add the tiled windows to the alt+tab menu to open all the tiled windows at " -"once" -msgstr "" -"Fügen Sie die gekachelten Fenster zum Alt+Tab-Menü hinzu, um alle " -"gekachelten Fenster gleichzeitig zu öffnen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:132 -#: src/prefs.ts:111 -msgid "Snap Assistant threshold" -msgstr "Snap-Assistent Schwellenwert" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:133 -msgid "Snap Assistant's threshold to enlarge, shrink, open and close it." -msgstr "" -"Die Schwelle von Snap Assistant zum Vergrößern, Verkleinern, Öffnen und " -"Schließen." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:137 -msgid "Quarter tiling threshold" -msgstr "Viertel-Kachelschwelle" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:138 -msgid "Threshold to trigger quarter tiling." -msgstr "Schwellenwert zum Auslösen der Viertel-Kachelung." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:142 -#: src/prefs.ts:348 -msgid "Edge tiling offset" -msgstr "Kantenversatz" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:143 -msgid "Offset to trigger edge tiling (left and right edge)." -msgstr "Versatz zum Auslösen der Kantenanpassung (linker und rechter Rand)." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:147 -msgid "Enable window border" -msgstr "Fensterrahmen aktivieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:148 -msgid "Show a border around focused window." -msgstr "Zeige einen Rahmen um das fokussierte Fenster an." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:152 -msgid "Focused window border color" -msgstr "Farbe des fokussierten Fensterrahmens" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:153 -msgid "The color of the focused window's border." -msgstr "Die Farbe des Rahmens des fokussierten Fensters." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:157 -msgid "Use custom color" -msgstr "Benutzerdefinierte Farbe verwenden" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:158 -msgid "Use the color defined here for the focused window's border." -msgstr "" -"Verwenden Sie die hier definierte Farbe für den Rahmen des fokussierten " -"Fensters." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:162 -msgid "Focused window border width" -msgstr "Breite des fokussierten Fensterrahmens" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:163 -msgid "The width of the focused window's border." -msgstr "Die Breite des Rahmens des fokussierten Fensters." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:167 -msgid "Enable smart window border radius" -msgstr "Intelligenten Rahmenradius aktivieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:168 -msgid "Dinamically adapt to the window's border radius." -msgstr "" -"Rahmenradius dynamisch an den tatsächlichen Fensterrahmenradius anpassen." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:172 -msgid "Snap assistant animation time (milliseconds)" -msgstr "Animationsdauer des Snap-Assistenten (Millisekunden)" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:173 -msgid "Animation time in milliseconds of the snap assistant" -msgstr "Animationsdauer des Snap-Assistenten in Millisekunden" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:177 -msgid "Tile animation time (milliseconds)" -msgstr "Animationsdauer der Kacheln (Millisekunden)" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:178 -msgid "Animation time in milliseconds of the tiles" -msgstr "Animationsdauer der Kacheln in Millisekunden" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:182 -#: src/prefs.ts:376 -msgid "Enable window suggestions for the tiling system" -msgstr "Fenstervorschläge für das Kachelsystem aktivieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:183 -msgid "" -"Provides smart suggestions to fill empty tiles when using the tiling system." -msgstr "" -"Bietet intelligente Vorschläge, um leere Kacheln beim Verwenden des " -"Kachelsystems zu füllen." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:187 -#: src/prefs.ts:385 -msgid "Enable window suggestions for the snap assistant" -msgstr "Fenstervorschläge für den Snap-Assistenten aktivieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:188 -msgid "" -"Offers suggestions to populate empty tiles when using the snap assistant." -msgstr "" -"Bietet Vorschläge, um leere Kacheln beim Verwenden des Snap-Assistenten zu " -"füllen." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:192 -#: src/prefs.ts:394 -msgid "Enable window suggestions for screen edge snapping" -msgstr "Fenstervorschläge für das Einrasten an Bildschirmrändern aktivieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:193 -msgid "Suggests windows to occupy empty tiles when snapping to screen edges." -msgstr "" -"Schlägt Fenster vor, um leere Kacheln beim Einrasten an Bildschirmrändern zu " -"besetzen." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:199 -msgid "Move focused window to the tile to its right" -msgstr "" -"Verschieben Sie das fokussierte Fenster zur Kachel auf der rechten Seite" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:203 -msgid "Move focused window to the tile to its left" -msgstr "" -"Verschieben Sie das fokussierte Fenster zur Kachel auf der linken Seite" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:207 -msgid "Move focused window to the tile above" -msgstr "Verschieben Sie das fokussierte Fenster zur oberen Kachel" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:211 -msgid "Move focused window to the tile below" -msgstr "Verschieben Sie das fokussierte Fenster zur unteren Kachel" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:215 -msgid "Span focused window to the tile to its right" -msgstr "" -"Dehnen Sie das fokussierte Fenster auf die Kachel auf der rechten Seite aus" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:219 -msgid "Span focused window to the tile to its left" -msgstr "" -"Dehnen Sie das fokussierte Fenster auf die Kachel auf der linken Seite aus" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:223 -msgid "Span focused window to the tile above" -msgstr "Das fokussierte Fenster auf die obere Kachel ausdehnen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:227 -msgid "Span focused window to the tile below" -msgstr "Das fokussierte Fenster auf die untere Kachel ausdehnen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:231 -msgid "Resize the focused window to span all tiles" -msgstr "Das fokussierte Fenster über alle Kacheln ausdehnen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:235 -msgid "Untile the focused window" -msgstr "Kachelung des fokussierten Fensters aufheben" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:239 -#: src/prefs.ts:653 -msgid "Move the focused window to the center of the screen" -msgstr "Das fokussierte Fenster in die Bildschirmmitte verschieben" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:243 -msgid "Focus the window to the right the current focused window" -msgstr "Das Fenster rechts neben dem aktuell fokussierten Fenster fokussieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:247 -#: src/prefs.ts:669 -msgid "Focus the window to the left of the current focused window" -msgstr "Das Fenster links neben dem aktuell fokussierten Fenster fokussieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:251 -#: src/prefs.ts:676 -msgid "Focus the window above the current focused window" -msgstr "Das Fenster oberhalb des aktuell fokussierten Fensters fokussieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:255 -#: src/prefs.ts:683 -msgid "Focus the window below the current focused window" -msgstr "Das Fenster unterhalb des aktuell fokussierten Fensters fokussieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:259 -#: src/prefs.ts:690 -msgid "Focus the window next to the current focused window" -msgstr "Das nächste Fenster neben dem aktuell fokussierten Fenster fokussieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:263 -#: src/prefs.ts:697 -msgid "Focus the window prior to the current focused window" -msgstr "Das vorherige Fenster vor dem aktuell fokussierten Fenster fokussieren" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:267 -#: src/prefs.ts:705 -msgid "Minimize all the other windows and show only the focused window" -msgstr "" -"Alle anderen Fenster minimieren und nur das fokussierte Fenster anzeigen" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:271 -#: src/prefs.ts:713 -msgid "Cycle through available workspace layouts" -msgstr "Durch die verfügbaren Arbeitsbereichslayouts blättern" - -#: src/components/altTab/MultipleWindowsIcon.ts:59 -msgid "Tiled windows" -msgstr "Gekachelte Fenster" - -#: src/components/editor/editorDialog.ts:47 -msgid "Select the layout to edit" -msgstr "Wählen Sie das zu bearbeitende Layout aus" - -#: src/components/editor/editorDialog.ts:71 -msgid "Close" -msgstr "Schliessen" - -#: src/components/editor/editorDialog.ts:100 -msgid "to split a tile" -msgstr "um eine Kachel zu teilen" - -#: src/components/editor/editorDialog.ts:141 -msgid "to split a tile vertically" -msgstr "um eine Kachel vertikal zu teilen" - -#: src/components/editor/editorDialog.ts:163 -msgid "to delete a tile" -msgstr "um eine Kachel zu löschen" - -#: src/components/editor/editorDialog.ts:189 -msgid "use the indicator button to save or cancel" -msgstr "Verwenden Sie die Indikator-Schaltfläche zum Speichern oder Abbrechen" - -#: src/components/editor/editorDialog.ts:209 -msgid "How to use the editor" -msgstr "Wie man den Editor verwendet" - -#: src/components/editor/editorDialog.ts:219 -msgid "Start editing" -msgstr "Editieren starten" - -#: src/components/window_menu/overriddenWindowMenu.ts:167 -msgid "Move to best tile" -msgstr "Fenster zur besten Kachel verschieben" - -#: src/components/window_menu/overriddenWindowMenu.ts:189 -msgid "Move to leftmost tile" -msgstr "Fenster zur linken Kachel verschieben" - -#: src/components/window_menu/overriddenWindowMenu.ts:212 -msgid "Move to rightmost tile" -msgstr "Fenster zur rechten Kachel verschieben" - -#: src/indicator/defaultMenu.ts:312 -msgid "Edit Layouts" -msgstr "Layouts bearbeiten" - -#: src/indicator/defaultMenu.ts:321 -msgid "New Layout" -msgstr "Neues Layout" - -#: src/indicator/editingMenu.ts:24 -msgid "Menu" -msgstr "Menü" - -#: src/indicator/editingMenu.ts:32 -msgid "Info" -msgstr "Info" - -#: src/indicator/editingMenu.ts:40 src/prefs.ts:427 src/prefs.ts:835 -msgid "Save" -msgstr "Speichern" - -#: src/indicator/editingMenu.ts:51 src/prefs.ts:428 src/prefs.ts:485 -#: src/prefs.ts:836 src/prefs.ts:895 -msgid "Cancel" -msgstr "Abbrechen" - -#: src/prefs.ts:68 +#: dist/prefs.js:59 msgid "General" msgstr "Allgemein" -#: src/prefs.ts:75 +#: dist/prefs.js:64 msgid "Appearance" msgstr "Erscheinungsbild" -#: src/prefs.ts:76 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "Das Erscheinungsbild der Tiling Shell konfigurieren" -#: src/prefs.ts:82 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "Indikator anzeigen" -#: src/prefs.ts:83 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "Ob der Panel-Indikator angezeigt wird" -#: src/prefs.ts:90 +#: dist/prefs.js:76 +msgid "Inner gaps" +msgstr "Innere Abstände" + +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "Abstände zwischen Fenstern" -#: src/prefs.ts:97 +#: dist/prefs.js:82 +msgid "Outer gaps" +msgstr "Äußere Abstände" + +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "Abstände zwischen Fenstern und Monitorrändern" -#: src/prefs.ts:102 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "Unschärfe (experimentelle Funktion)" -#: src/prefs.ts:104 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "Unschärfe-Effekt auf Snap-Assistent und Kachel-Vorschauen anwenden" -#: src/prefs.ts:113 +#: dist/prefs.js:95 +msgid "Snap Assistant threshold" +msgstr "Snap-Assistent Schwellenwert" + +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "" "Mindestabstand zwischen Snap-Assistent und Mauszeiger, um ihn zu öffnen" -#: src/prefs.ts:123 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "Snap-Assistent" -#: src/prefs.ts:124 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "Unschärfe-Effekt auf den Snap-Assistenten anwenden" -#: src/prefs.ts:130 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "Vorschau der ausgewählten Kachel" -#: src/prefs.ts:131 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "Unschärfe-Effekt auf die ausgewählte Kachelvorschau anwenden" -#: src/prefs.ts:136 +#: dist/prefs.js:118 msgid "Window border" msgstr "Fensterrahmen" -#: src/prefs.ts:137 src/prefs.ts:144 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "Rahmen um das fokussierte Fenster anzeigen" -#: src/prefs.ts:143 +#: dist/prefs.js:125 msgid "Enable" msgstr "Aktivieren" -#: src/prefs.ts:150 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "Intelligenter Rahmenradius" -#: src/prefs.ts:151 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +#, fuzzy +msgid "Dynamically adapt to the window's actual border radius" msgstr "" "Rahmenradius dynamisch an den tatsächlichen Fensterrahmenradius anpassen" -#: src/prefs.ts:157 +#: dist/prefs.js:139 msgid "Width" msgstr "Breite" -#: src/prefs.ts:158 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "Stärke des Rahmens" -#: src/prefs.ts:167 +#: dist/prefs.js:149 msgid "Border color" msgstr "Rahmenfarbe" -#: src/prefs.ts:168 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "Rahmenfarbe auswählen" -#: src/prefs.ts:185 +#: dist/prefs.js:166 msgid "Animations" msgstr "Animationen" -#: src/prefs.ts:186 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "Animationen anpassen" -#: src/prefs.ts:192 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "Animationsdauer des Snap-Assistenten" -#: src/prefs.ts:193 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "Animationsdauer des Snap-Assistenten in Millisekunden" -#: src/prefs.ts:201 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "Animationsdauer der Kacheln" -#: src/prefs.ts:202 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "Animationsdauer der Kacheln in Millisekunden" -#: src/prefs.ts:210 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "Verhalten" -#: src/prefs.ts:211 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "Verhalten der Tiling Shell konfigurieren" -#: src/prefs.ts:217 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "Snap-Assistent aktivieren" -#: src/prefs.ts:218 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "" "Fenster an den oberen Bildschirmrand bewegen, um den Snap-Assistenten zu " "verwenden" -#: src/prefs.ts:224 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "Kachel-System aktivieren" -#: src/prefs.ts:225 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "" "Aktivierungstaste beim Verschieben eines Fensters halten, um das Kachel-" "System zu aktivieren" -#: src/prefs.ts:235 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "Deaktivierungstaste des Kachel-Systems" -#: src/prefs.ts:237 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -711,32 +189,49 @@ msgstr "" "Deaktivierungstaste beim Verschieben eines Fensters halten, um das Kachel-" "System zu deaktivieren" -#: src/prefs.ts:248 +#: dist/prefs.js:220 +msgid "Span multiple tiles" +msgstr "Mehrere Kacheln vereinen" + +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "Aktivierungstaste halten, um mehrere Kacheln zu vereinen" -#: src/prefs.ts:259 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "Automatische Kachelung aktivieren" -#: src/prefs.ts:260 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "Neue Fenster automatisch der besten Kachel zuweisen" -#: src/prefs.ts:268 +#: dist/prefs.js:236 +msgid "Enable auto-resize of the complementing tiled windows" +msgstr "Automatische Größenänderung ergänzender gekachelter Fenster aktivieren" + +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "Andere gekachelte Fenster automatisch anpassen, wenn ein Fenster verändert " "wird" -#: src/prefs.ts:277 +#: dist/prefs.js:244 +msgid "Restore window size" +msgstr "Fenstergröße wiederherstellen" + +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "" "Ob bei Fenstern nach Aufhebung der Kachelung ihre ursprüngliche Größe " "wiederhergestellt werden soll" -#: src/prefs.ts:286 +#: dist/prefs.js:252 +msgid "Add snap assistant and auto-tile buttons to window menu" +msgstr "" +"Snap-Assistent und Auto-Kachel Schaltflächen zum Fenstermenü hinzufügen" + +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -744,11 +239,11 @@ msgstr "" "Snap-Assistent- und Auto-Kachel-Schaltflächen zum Kontextmenü des Fensters " "hinzufügen" -#: src/prefs.ts:293 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "Kachelfenster zum ALT+TAB-Menü hinzufügen" -#: src/prefs.ts:295 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" @@ -756,323 +251,751 @@ msgstr "" "Fügen Sie die gekachelten Fenster zum ALT+TAB-Menü hinzu, um alle " "gekachelten Fenster gleichzeitig zu öffnen" -#: src/prefs.ts:302 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "Bildschirmränder" -#: src/prefs.ts:304 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" "Ziehen Sie Fenster an die oberen, linken und rechten Bildschirmränder, um " "sie zu skalieren" -#: src/prefs.ts:319 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "Ziehen Sie Fenster an den oberen Rand, um sie zu maximieren" -#: src/prefs.ts:330 +#: dist/prefs.js:284 +msgid "Drag windows against the top edge to maximize them" +msgstr "Ziehen Sie Fenster an den oberen Rand, um sie zu maximieren" + +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "Aktivierungsbereich für Viertelkacheln" -#: src/prefs.ts:331 +#: dist/prefs.js:294 #, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "Aktivierungsbereich, um Viertelkacheln auszulösen (%% des Bildschirms)" -#: src/prefs.ts:349 +#: dist/prefs.js:310 +msgid "Edge tiling offset" +msgstr "Kantenversatz" + +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" "Versatz vom Bildschirmrand zum Auslösen der Kantenanpassung (in Pixeln)" -#: src/prefs.ts:369 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "Fenstervorschläge" -#: src/prefs.ts:370 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "Fenstervorschläge aktivieren und deaktivieren" -#: src/prefs.ts:378 +#: dist/prefs.js:339 +msgid "Enable window suggestions for the tiling system" +msgstr "Fenstervorschläge für das Kachelsystem aktivieren" + +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" "Bietet intelligente Vorschläge, um leere Kacheln beim Verwenden des " "Kachelsystems zu füllen" -#: src/prefs.ts:387 +#: dist/prefs.js:347 +msgid "Enable window suggestions for the snap assistant" +msgstr "Fenstervorschläge für den Snap-Assistenten aktivieren" + +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" "Bietet Vorschläge, um leere Kacheln beim Verwenden des Snap-Assistenten zu " "füllen" -#: src/prefs.ts:396 +#: dist/prefs.js:355 +msgid "Enable window suggestions for screen edge snapping" +msgstr "Fenstervorschläge für das Einrasten an Bildschirmrändern aktivieren" + +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" "Schlägt Fenster vor, um leere Kacheln beim Einrasten an Bildschirmrändern zu " "besetzen" -#: src/prefs.ts:406 +#: dist/prefs.js:363 +msgid "Layouts" +msgstr "Layouts" + +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "Konfigurieren Sie die Layouts der Tiling Shell" -#: src/prefs.ts:411 src/prefs.ts:412 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "Layouts bearbeiten" -#: src/prefs.ts:413 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "Öffnen Sie den Layout-Editor" -#: src/prefs.ts:419 src/prefs.ts:420 src/prefs.ts:424 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "Layouts exportieren" -#: src/prefs.ts:421 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "Layouts in eine Datei exportieren" -#: src/prefs.ts:476 src/prefs.ts:477 +#: dist/prefs.js:383 dist/prefs.js:767 +msgid "Save" +msgstr "Speichern" + +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 +msgid "Cancel" +msgstr "Abbrechen" + +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "Layouts importieren" -#: src/prefs.ts:478 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "Layouts aus einer Datei importieren" -#: src/prefs.ts:481 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "Layouts-Datei auswählen" -#: src/prefs.ts:484 src/prefs.ts:894 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "Öffnen" -#: src/prefs.ts:538 src/prefs.ts:539 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "Layouts zurücksetzen" -#: src/prefs.ts:540 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "Standardlayouts wiederherstellen" -#: src/prefs.ts:556 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "Tastenkombinationen" -#: src/prefs.ts:558 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "" "Verwenden Sie Tastenkombinationen, um Aktionen am fokussierten Fenster " "auszuführen" -#: src/prefs.ts:582 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "Fenster zur rechten Kachel verschieben" -#: src/prefs.ts:583 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "" "Verschieben Sie das fokussierte Fenster zur Kachel auf der rechten Seite" -#: src/prefs.ts:589 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "Fenster zur linken Kachel verschieben" -#: src/prefs.ts:590 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "" "Verschieben Sie das fokussierte Fenster zur Kachel auf der linken Seite" -#: src/prefs.ts:596 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "Fenster zur oberen Kachel verschieben" -#: src/prefs.ts:597 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "Verschieben Sie das fokussierte Fenster zur oberen Kachel" -#: src/prefs.ts:603 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "Fenster zur unteren Kachel verschieben" -#: src/prefs.ts:604 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "Verschieben Sie das fokussierte Fenster zur unteren Kachel" -#: src/prefs.ts:610 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "Fenster auf rechte Kachel ausdehnen" -#: src/prefs.ts:611 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "" "Dehnen Sie das fokussierte Fenster auf die Kachel auf der rechten Seite aus" -#: src/prefs.ts:617 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "Fenster auf linke Kachel ausdehnen" -#: src/prefs.ts:618 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "" "Dehnen Sie das fokussierte Fenster auf die Kachel auf der linken Seite aus" -#: src/prefs.ts:624 +#: dist/prefs.js:566 msgid "Span window above" msgstr "Fenster nach oben ausdehnen" -#: src/prefs.ts:625 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "Das fokussierte Fenster auf die obere Kachel ausdehnen" -#: src/prefs.ts:631 +#: dist/prefs.js:573 msgid "Span window down" msgstr "Fenster nach unten ausdehnen" -#: src/prefs.ts:632 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "Das fokussierte Fenster auf die untere Kachel ausdehnen" -#: src/prefs.ts:638 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "Fenster auf alle Kacheln ausdehnen" -#: src/prefs.ts:639 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "Das fokussierte Fenster über alle Kacheln ausdehnen" -#: src/prefs.ts:645 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "Kachelung des fokussierten Fensters aufheben" -#: src/prefs.ts:652 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "Fenster in die Mitte verschieben" -#: src/prefs.ts:659 +#: dist/prefs.js:597 +msgid "Move the focused window to the center of the screen" +msgstr "Das fokussierte Fenster in die Bildschirmmitte verschieben" + +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "Fenster rechts fokussieren" -#: src/prefs.ts:661 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "Das Fenster rechts neben dem aktuell fokussierten Fenster fokussieren" -#: src/prefs.ts:668 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "Fenster links fokussieren" -#: src/prefs.ts:675 +#: dist/prefs.js:616 +msgid "Focus the window to the left of the current focused window" +msgstr "Das Fenster links neben dem aktuell fokussierten Fenster fokussieren" + +#: dist/prefs.js:622 msgid "Focus window above" msgstr "Fenster oben fokussieren" -#: src/prefs.ts:682 +#: dist/prefs.js:623 +msgid "Focus the window above the current focused window" +msgstr "Das Fenster oberhalb des aktuell fokussierten Fensters fokussieren" + +#: dist/prefs.js:629 msgid "Focus window below" msgstr "Fenster unten fokussieren" -#: src/prefs.ts:689 +#: dist/prefs.js:630 +msgid "Focus the window below the current focused window" +msgstr "Das Fenster unterhalb des aktuell fokussierten Fensters fokussieren" + +#: dist/prefs.js:636 msgid "Focus next window" msgstr "Nächstes Fenster fokussieren" -#: src/prefs.ts:696 +#: dist/prefs.js:637 +msgid "Focus the window next to the current focused window" +msgstr "Das nächste Fenster neben dem aktuell fokussierten Fenster fokussieren" + +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "Vorheriges Fenster fokussieren" -#: src/prefs.ts:703 +#: dist/prefs.js:644 +msgid "Focus the window prior to the current focused window" +msgstr "Das vorherige Fenster vor dem aktuell fokussierten Fenster fokussieren" + +#: dist/prefs.js:650 msgid "Highlight focused window" msgstr "Fokussiertes Fenster hervorheben" -#: src/prefs.ts:712 +#: dist/prefs.js:652 +msgid "Minimize all the other windows and show only the focused window" +msgstr "" +"Alle anderen Fenster minimieren und nur das fokussierte Fenster anzeigen" + +#: dist/prefs.js:659 msgid "Cycle layouts" msgstr "Layouts durchblättern" -#: src/prefs.ts:746 +#: dist/prefs.js:660 +msgid "Cycle through available workspace layouts" +msgstr "Durch die verfügbaren Arbeitsbereichslayouts blättern" + +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "Alle Tastenkombinationen anzeigen und anpassen" -#: src/prefs.ts:774 src/prefs.ts:775 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "Tastenkombinationen anzeigen und anpassen" -#: src/prefs.ts:819 +#: dist/prefs.js:737 +msgid "Enable next/previous window focus to wrap around" +msgstr "Zyklisches Fokussieren des nächsten/vorherigen Fensters aktivieren" + +#: dist/prefs.js:739 +msgid "When focusing next or previous window, wrap around at the window edge" +msgstr "" +"Beim Fokussieren des nächsten oder vorherigen Fensters am Rand umspringen" + +#: dist/prefs.js:745 +msgid "Restrict directional focus to tiled windows" +msgstr "Richtungsfokus auf gekachelte Fenster beschränken" + +#: dist/prefs.js:747 +msgid "When using directional focus navigation, only consider tiled windows" +msgstr "" +"Bei Verwendung der gerichteten Fokusnavigation nur gekachelte Fenster " +"berücksichtigen" + +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "Importieren, exportieren und zurücksetzen" -#: src/prefs.ts:821 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "" "Einstellungen der Tiling Shell importieren, exportieren und zurücksetzen" -#: src/prefs.ts:827 src/prefs.ts:828 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "Einstellungen exportieren" -#: src/prefs.ts:829 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "Einstellungen in eine Datei exportieren" -#: src/prefs.ts:832 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "Einstellungen in eine Textdatei exportieren" -#: src/prefs.ts:839 +#: dist/prefs.js:771 msgid "Text file" msgstr "Textdatei" -#: src/prefs.ts:886 src/prefs.ts:887 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "Einstellungen importieren" -#: src/prefs.ts:888 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "Einstellungen aus einer Datei importieren" -#: src/prefs.ts:891 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "Wählen Sie eine Textdatei zum Importieren aus" -#: src/prefs.ts:937 src/prefs.ts:938 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "Einstellungen zurücksetzen" -#: src/prefs.ts:939 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "Standardeinstellungen wiederherstellen" -#: src/prefs.ts:957 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "Auf ko-fi spenden" -#: src/prefs.ts:963 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "Fehler melden" -#: src/prefs.ts:969 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "Feature anfordern" -#: src/prefs.ts:978 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "" "Haben Sie Probleme, möchten Sie ein neues Feature vorschlagen oder beitragen?" -#: src/prefs.ts:985 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "Neuen Issue öffnen auf" -#: src/prefs.ts:1238 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +#, fuzzy +msgid "Follow quarters or screen halves" +msgstr "Fenster zur besten Kachel verschieben" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "Wählen Sie eine benutzerdefinierte Farbe" -#: src/prefs.ts:1239 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "Systemakzentfarbe verwenden" -#: src/prefs.ts:1328 src/prefs.ts:1357 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "Neues Tastenkürzel…" -#: src/prefs.ts:1360 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "Backspace zum Löschen verwenden" + +#~ msgid "Last version installed" +#~ msgstr "Letzte installierte Version" + +#~ msgid "Last version installed of this extension." +#~ msgstr "Letzte installierte Version dieser Erweiterung." + +#~ msgid "Enable tiling system" +#~ msgstr "Kachel-System aktivieren" + +#~ msgid "Hold CTRL while moving a window to tile it." +#~ msgstr "" +#~ "Halten Sie die STRG-Taste gedrückt, während Sie ein Fenster verschieben, " +#~ "um es nebeneinander anzuordnen." + +#~ msgid "Tiling system activation key" +#~ msgstr "Aktivierungstaste des Kachel-Systems" + +#~ msgid "" +#~ "Which key to hold while moving a window to activate the tiling system." +#~ msgstr "" +#~ "Welche Taste muss beim Verschieben eines Fensters gedrückt gehalten " +#~ "werden, um das Kachelsystem zu aktivieren." + +#~ msgid "Tiling system deactivation key" +#~ msgstr "Deaktivierungstaste des Kachel-Systems" + +#~ msgid "" +#~ "Which key to hold while moving a window to deactivate the tiling system." +#~ msgstr "" +#~ "Welche Taste muss gedrückt gehalten werden, während ein Fenster " +#~ "verschoben wird, um das Kachelsystem zu deaktivieren." + +#~ msgid "Enable snap assist" +#~ msgstr "Snap-Assistent aktivieren" + +#~ msgid "Move the window on top of the screen to snap assist it." +#~ msgstr "" +#~ "Bewegen Sie das Fenster an den oberen Bildschirmrand, um es anzudocken." + +#~ msgid "Shows indicator" +#~ msgstr "Zeigt Indikator an" + +#~ msgid "Shows an indicator on top panel." +#~ msgstr "Zeigt einen Indikator auf dem oberen Bedienfeld an." + +#~ msgid "Internal gaps between tiles in a layout." +#~ msgstr "Interne Abstände zwischen Kacheln in einem Layout." + +#~ msgid "External gaps between the layout and the monitor borders." +#~ msgstr "Abstände zwischen Fenstern und Monitorrändern." + +#~ msgid "Hold ALT to span multiple tiles." +#~ msgstr "Aktivierungstaste halten, um mehrere Kacheln zu vereinen." + +#~ msgid "Key to span multiple tiles" +#~ msgstr "Taste zum Überspannen mehrerer Kacheln" + +#~ msgid "Which key to hold to span multiple tiles." +#~ msgstr "Aktivierungstaste halten, um mehrere Kacheln zu vereinen." + +#~ msgid "The layouts available to the tiling managers and the snap assist." +#~ msgstr "" +#~ "Die Layouts, die den Kachelungsmanagern und der Ausrichtungshilfe zur " +#~ "Verfügung stehen." + +#~ msgid "Selected layouts" +#~ msgstr "Ausgewählte Layouts" + +#~ msgid "Each monitor's active layout used by the monitor tiling manager." +#~ msgstr "" +#~ "Das aktive Layout jedes Monitors, das vom Monitor-Tiling-Manager " +#~ "verwendet wird." + +#~ msgid "Restore the windows to their original size when untiled." +#~ msgstr "" +#~ "Ob bei Fenstern nach Aufhebung der Kachelung ihre ursprüngliche Größe " +#~ "wiederhergestellt werden soll." + +#~ msgid "" +#~ "When a tiled window is resized, auto-resize the other tiled windows near " +#~ "it." +#~ msgstr "" +#~ "Wenn die Größe eines gekachelten Fensters geändert wird, werden die " +#~ "anderen gekachelten Fenster in seiner Nähe automatisch in der Größe " +#~ "angepasst." + +#~ msgid "Enable Snap Assistant blur" +#~ msgstr "Snap-Assistent verwischen aktivieren" + +#~ msgid "Blur snap assistant" +#~ msgstr "Snap-Assistent verwischen" + +#~ msgid "Enable selected tile preview blur" +#~ msgstr "Vorschaubildschirm für ausgewählte Kacheln unscharf darstellen" + +#~ msgid "Blur selected tile previews" +#~ msgstr "Ausgewählte Kachelvorschauen verwischen" + +#~ msgid "Enable keybindings" +#~ msgstr "Tastenkombinationen aktivieren" + +#~ msgid "Move focused window through tiles by using keybindings." +#~ msgstr "" +#~ "Verschieben Sie das fokussierte Fenster mithilfe von Tastenkombinationen " +#~ "durch die Kacheln." + +#~ msgid "Enable auto tiling" +#~ msgstr "Automatisches Kacheln aktivieren" + +#~ msgid "" +#~ "Automatically tile a new window to the best tile according to the current " +#~ "layout." +#~ msgstr "" +#~ "Ein neues Fenster automatisch entsprechend dem aktuellen Layout optimal " +#~ "anordnen." + +#~ msgid "Overridden settings" +#~ msgstr "Überschriebene Einstellungen" + +#~ msgid "The settings that are overridden and their old value." +#~ msgstr "Die überschriebenen Einstellungen und ihre alten Werte." + +#~ msgid "Active Screen Edges" +#~ msgstr "Aktive Bildschirmränder" + +#~ msgid "" +#~ "Drag windows against the top, left and right screen edges to resize them." +#~ msgstr "" +#~ "Ziehen Sie Fenster an den oberen, linken und rechten Bildschirmrand, um " +#~ "ihre Größe zu ändern." + +#~ msgid "Drag agains top edge to maximize window" +#~ msgstr "Ziehen Sie an der Oberkante, um das Fenster zu maximieren" + +#~ msgid "" +#~ "Add snap assistant and auto-tile buttons in the menu that shows up when " +#~ "you right click on a window title." +#~ msgstr "" +#~ "Fügen Sie die Schaltflächen „Ausrichten“ und „Automatisch anordnen“ in " +#~ "das Menü ein, das angezeigt wird, wenn Sie mit der rechten Maustaste auf " +#~ "einen Fenstertitel klicken." + +#~ msgid "Add tiled windows group to alt+tab menu" +#~ msgstr "Gruppierte Fenster zum Alt+Tab-Menü hinzufügen" + +#~ msgid "" +#~ "Add the tiled windows to the alt+tab menu to open all the tiled windows " +#~ "at once" +#~ msgstr "" +#~ "Fügen Sie die gekachelten Fenster zum Alt+Tab-Menü hinzu, um alle " +#~ "gekachelten Fenster gleichzeitig zu öffnen" + +#~ msgid "Snap Assistant's threshold to enlarge, shrink, open and close it." +#~ msgstr "" +#~ "Die Schwelle von Snap Assistant zum Vergrößern, Verkleinern, Öffnen und " +#~ "Schließen." + +#~ msgid "Quarter tiling threshold" +#~ msgstr "Viertel-Kachelschwelle" + +#~ msgid "Threshold to trigger quarter tiling." +#~ msgstr "Schwellenwert zum Auslösen der Viertel-Kachelung." + +#~ msgid "Offset to trigger edge tiling (left and right edge)." +#~ msgstr "Versatz zum Auslösen der Kantenanpassung (linker und rechter Rand)." + +#~ msgid "Enable window border" +#~ msgstr "Fensterrahmen aktivieren" + +#~ msgid "Show a border around focused window." +#~ msgstr "Zeige einen Rahmen um das fokussierte Fenster an." + +#~ msgid "Focused window border color" +#~ msgstr "Farbe des fokussierten Fensterrahmens" + +#~ msgid "The color of the focused window's border." +#~ msgstr "Die Farbe des Rahmens des fokussierten Fensters." + +#~ msgid "Use custom color" +#~ msgstr "Benutzerdefinierte Farbe verwenden" + +#~ msgid "Use the color defined here for the focused window's border." +#~ msgstr "" +#~ "Verwenden Sie die hier definierte Farbe für den Rahmen des fokussierten " +#~ "Fensters." + +#~ msgid "Focused window border width" +#~ msgstr "Breite des fokussierten Fensterrahmens" + +#~ msgid "The width of the focused window's border." +#~ msgstr "Die Breite des Rahmens des fokussierten Fensters." + +#~ msgid "Enable smart window border radius" +#~ msgstr "Intelligenten Rahmenradius aktivieren" + +#~ msgid "Dinamically adapt to the window's border radius." +#~ msgstr "" +#~ "Rahmenradius dynamisch an den tatsächlichen Fensterrahmenradius anpassen." + +#~ msgid "Snap assistant animation time (milliseconds)" +#~ msgstr "Animationsdauer des Snap-Assistenten (Millisekunden)" + +#~ msgid "Animation time in milliseconds of the snap assistant" +#~ msgstr "Animationsdauer des Snap-Assistenten in Millisekunden" + +#~ msgid "Tile animation time (milliseconds)" +#~ msgstr "Animationsdauer der Kacheln (Millisekunden)" + +#~ msgid "Animation time in milliseconds of the tiles" +#~ msgstr "Animationsdauer der Kacheln in Millisekunden" + +#~ msgid "" +#~ "Provides smart suggestions to fill empty tiles when using the tiling " +#~ "system." +#~ msgstr "" +#~ "Bietet intelligente Vorschläge, um leere Kacheln beim Verwenden des " +#~ "Kachelsystems zu füllen." + +#~ msgid "" +#~ "Offers suggestions to populate empty tiles when using the snap assistant." +#~ msgstr "" +#~ "Bietet Vorschläge, um leere Kacheln beim Verwenden des Snap-Assistenten " +#~ "zu füllen." + +#~ msgid "" +#~ "Suggests windows to occupy empty tiles when snapping to screen edges." +#~ msgstr "" +#~ "Schlägt Fenster vor, um leere Kacheln beim Einrasten an Bildschirmrändern " +#~ "zu besetzen." + +#~ msgid "Move focused window to the tile to its right" +#~ msgstr "" +#~ "Verschieben Sie das fokussierte Fenster zur Kachel auf der rechten Seite" + +#~ msgid "Move focused window to the tile to its left" +#~ msgstr "" +#~ "Verschieben Sie das fokussierte Fenster zur Kachel auf der linken Seite" + +#~ msgid "Move focused window to the tile above" +#~ msgstr "Verschieben Sie das fokussierte Fenster zur oberen Kachel" + +#~ msgid "Move focused window to the tile below" +#~ msgstr "Verschieben Sie das fokussierte Fenster zur unteren Kachel" + +#~ msgid "Span focused window to the tile to its right" +#~ msgstr "" +#~ "Dehnen Sie das fokussierte Fenster auf die Kachel auf der rechten Seite " +#~ "aus" + +#~ msgid "Span focused window to the tile to its left" +#~ msgstr "" +#~ "Dehnen Sie das fokussierte Fenster auf die Kachel auf der linken Seite aus" + +#~ msgid "Span focused window to the tile above" +#~ msgstr "Das fokussierte Fenster auf die obere Kachel ausdehnen" + +#~ msgid "Span focused window to the tile below" +#~ msgstr "Das fokussierte Fenster auf die untere Kachel ausdehnen" + +#~ msgid "Resize the focused window to span all tiles" +#~ msgstr "Das fokussierte Fenster über alle Kacheln ausdehnen" + +#~ msgid "Untile the focused window" +#~ msgstr "Kachelung des fokussierten Fensters aufheben" + +#~ msgid "Focus the window to the right the current focused window" +#~ msgstr "" +#~ "Das Fenster rechts neben dem aktuell fokussierten Fenster fokussieren" + +#~ msgid "Tiled windows" +#~ msgstr "Gekachelte Fenster" + +#~ msgid "Select the layout to edit" +#~ msgstr "Wählen Sie das zu bearbeitende Layout aus" + +#~ msgid "Close" +#~ msgstr "Schliessen" + +#~ msgid "to split a tile" +#~ msgstr "um eine Kachel zu teilen" + +#~ msgid "to split a tile vertically" +#~ msgstr "um eine Kachel vertikal zu teilen" + +#~ msgid "to delete a tile" +#~ msgstr "um eine Kachel zu löschen" + +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "" +#~ "Verwenden Sie die Indikator-Schaltfläche zum Speichern oder Abbrechen" + +#~ msgid "How to use the editor" +#~ msgstr "Wie man den Editor verwendet" + +#~ msgid "Start editing" +#~ msgstr "Editieren starten" + +#~ msgid "Move to leftmost tile" +#~ msgstr "Fenster zur linken Kachel verschieben" + +#~ msgid "Move to rightmost tile" +#~ msgstr "Fenster zur rechten Kachel verschieben" + +#~ msgid "Edit Layouts" +#~ msgstr "Layouts bearbeiten" + +#~ msgid "New Layout" +#~ msgstr "Neues Layout" + +#~ msgid "Menu" +#~ msgstr "Menü" + +#~ msgid "Info" +#~ msgstr "Info" diff --git a/translations/es.po b/translations/es.po index c30d9b22..6df1e270 100644 --- a/translations/es.po +++ b/translations/es.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiling Shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: 2025-01-13 23:11+0100\n" "Last-Translator: Óscar Fernández Díaz \n" "Language-Team: Spanish\n" @@ -19,168 +19,169 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 47.1\n" -#: dist/prefs.js:793 +#: dist/prefs.js:59 msgid "General" msgstr "General" -#: dist/prefs.js:798 +#: dist/prefs.js:64 msgid "Appearance" msgstr "Apariencia" -#: dist/prefs.js:799 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "Configurar la apariencia de Tiling Shell" -#: dist/prefs.js:804 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "Mostrar indicador" -#: dist/prefs.js:805 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "Si mostrar el indicador del panel" -#: dist/prefs.js:810 +#: dist/prefs.js:76 msgid "Inner gaps" msgstr "Espacios interiores" -#: dist/prefs.js:811 +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "Espacios entre ventanas" -#: dist/prefs.js:816 +#: dist/prefs.js:82 msgid "Outer gaps" msgstr "Espacios exteriores" -#: dist/prefs.js:817 +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "Espacios entre una ventana y los bordes del monitor" -#: dist/prefs.js:821 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "Difuminado (función experimental)" -#: dist/prefs.js:823 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "" "Aplica un efecto de difuminado a Snap Assistant y a las vistas previas de " "los mosaicos" -#: dist/prefs.js:829 +#: dist/prefs.js:95 msgid "Snap Assistant threshold" msgstr "Umbral de Snap Assistant" -#: dist/prefs.js:831 +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "Distancia mínima del Snap Assistant al puntero para abrirlo" -#: dist/prefs.js:840 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "Snap Assistant" -#: dist/prefs.js:841 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "Aplicar efecto de difuminado a Snap Assistant" -#: dist/prefs.js:847 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "Vista previa del mosaico seleccionado" -#: dist/prefs.js:848 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "" "Aplicar efecto de difuminado a la vista previa del mosaico seleccionado" -#: dist/prefs.js:852 +#: dist/prefs.js:118 msgid "Window border" msgstr "Borde de la ventana" -#: dist/prefs.js:853 dist/prefs.js:860 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "Mostrar un borde alrededor de la ventana enfocada" -#: dist/prefs.js:859 +#: dist/prefs.js:125 msgid "Enable" msgstr "Activar" -#: dist/prefs.js:866 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "Radio de bordes inteligente" -#: dist/prefs.js:867 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +#, fuzzy +msgid "Dynamically adapt to the window's actual border radius" msgstr "Adaptación dinámica al radio real del borde de la ventana" -#: dist/prefs.js:873 +#: dist/prefs.js:139 msgid "Width" msgstr "Anchura" -#: dist/prefs.js:874 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "El tamaño del borde" -#: dist/prefs.js:883 +#: dist/prefs.js:149 msgid "Border color" msgstr "Color del borde" -#: dist/prefs.js:884 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "Elija el color del borde" -#: dist/prefs.js:900 +#: dist/prefs.js:166 msgid "Animations" msgstr "Animaciones" -#: dist/prefs.js:901 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "Personalizar animaciones" -#: dist/prefs.js:907 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "Tiempo de animación del Snap Assistant" -#: dist/prefs.js:908 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "El tiempo de animación del Snap Assistant en milisegundos" -#: dist/prefs.js:916 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "Tiempo de animación de los mosaicos" -#: dist/prefs.js:917 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "El tiempo de animación de los mosaicos en milisegundos" -#: dist/prefs.js:923 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "Comportamiento" -#: dist/prefs.js:924 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "Configurar el comportamiento de Tiling Shell" -#: dist/prefs.js:929 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "Activar Snap Assistant" -#: dist/prefs.js:930 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "Mover la ventana por encima de la pantalla para que se ajuste a ella" -#: dist/prefs.js:935 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "Activar el sistema de mosaicos" -#: dist/prefs.js:936 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "" "Mantenga pulsada la tecla de activación mientras mueve una ventana para " "colocarla en mosaico" -#: dist/prefs.js:944 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "Tecla de desactivación del sistema de mosaicos" -#: dist/prefs.js:946 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -188,49 +189,49 @@ msgstr "" "Mantenga pulsada la tecla de desactivación mientras desplaza una ventana " "para desactivar el sistema de mosaicos" -#: dist/prefs.js:954 +#: dist/prefs.js:220 msgid "Span multiple tiles" msgstr "Extender varios mosaicos" -#: dist/prefs.js:955 +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "Mantenga pulsada la tecla de activación para extender varios mosaicos" -#: dist/prefs.js:964 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "Activar mosaico automático" -#: dist/prefs.js:965 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "Colocar automáticamente los mosaicos nuevos en el mejor mosaico" -#: dist/prefs.js:970 +#: dist/prefs.js:236 msgid "Enable auto-resize of the complementing tiled windows" msgstr "" "Activar el redimensionamiento automático de las ventanas en mosaico " "complementarias" -#: dist/prefs.js:972 +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "Cuando se redimensiona una ventana en mosaico, se redimensionan " "automáticamente las demás ventanas en mosaico cercanas" -#: dist/prefs.js:978 +#: dist/prefs.js:244 msgid "Restore window size" msgstr "Restaurar tamaño de ventana" -#: dist/prefs.js:980 +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "Si se restablece el tamaño original de las ventanas al cerrarlas" -#: dist/prefs.js:986 +#: dist/prefs.js:252 msgid "Add snap assistant and auto-tile buttons to window menu" msgstr "" "Añadir botones de Snap Assistant y mosaico automático al menú de la ventana" -#: dist/prefs.js:988 +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -238,442 +239,465 @@ msgstr "" "Añade botones de Snap Assistant y mosaico automático en el menú que aparece " "al hacer clic con el botón derecho del ratón en el título de una ventana" -#: dist/prefs.js:994 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "" -#: dist/prefs.js:996 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "" -#: dist/prefs.js:1001 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "Bordes de pantalla" -#: dist/prefs.js:1003 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" "Arrastra las ventanas contra los bordes superior, izquierdo y derecho de la " "pantalla para cambiar su tamaño" -#: dist/prefs.js:1017 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "Arrastrar contra el borde superior para maximizar la ventana" -#: dist/prefs.js:1018 +#: dist/prefs.js:284 msgid "Drag windows against the top edge to maximize them" msgstr "Arrastra las ventanas contra el borde superior para maximizarlas" -#: dist/prefs.js:1027 +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "Área de activación de cuartos de mosaico" -#: dist/prefs.js:1028 +#: dist/prefs.js:294 #, fuzzy, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "" "Área de activación para accionar el cuarto de mosaico (% de la pantalla)" -#: dist/prefs.js:1044 +#: dist/prefs.js:310 msgid "Edge tiling offset" msgstr "" -#: dist/prefs.js:1045 +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" -#: dist/prefs.js:1062 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "Sugerencias de ventanas" -#: dist/prefs.js:1063 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "Activar y desactivar las sugerencias de ventanas" -#: dist/prefs.js:1068 +#: dist/prefs.js:339 msgid "Enable window suggestions for the tiling system" msgstr "Activar las sugerencias de ventanas para el sistema de mosaicos" -#: dist/prefs.js:1070 +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" "Ofrece sugerencias inteligentes para rellenar los mosaicos vacíos al usar el " "sistema de mosaicos" -#: dist/prefs.js:1076 +#: dist/prefs.js:347 msgid "Enable window suggestions for the snap assistant" msgstr "Activar las sugerencias de ventanas para el Snap Assistant" -#: dist/prefs.js:1078 +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" "Ofrece sugerencias para rellenar los mosaicos vacíos cuando se usa el Snap " "Assistant" -#: dist/prefs.js:1084 +#: dist/prefs.js:355 msgid "Enable window suggestions for screen edge snapping" msgstr "" "Activar las sugerencias de ventanas para ajustar los bordes de la pantalla" -#: dist/prefs.js:1086 +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" "Sugiere que las ventanas ocupen los mosaicos vacíos al ajustarse a los " "bordes de la pantalla" -#: dist/prefs.js:1092 +#: dist/prefs.js:363 msgid "Layouts" msgstr "Diseños" -#: dist/prefs.js:1093 +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "Configurar los diseños de Tiling Shell" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "Editar diseños" -#: dist/prefs.js:1099 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "Abrir el editor de diseños" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "Exportar diseños" -#: dist/prefs.js:1106 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "Exportar diseños a un archivo" -#: dist/prefs.js:1112 dist/prefs.js:1496 +#: dist/prefs.js:383 dist/prefs.js:767 msgid "Save" msgstr "Guardar" -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 msgid "Cancel" msgstr "Cancelar" -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "Importar diseños" -#: dist/prefs.js:1160 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "Importar diseños desde un archivo" -#: dist/prefs.js:1163 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "Seleccionar archivo de diseños" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "Abrir" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "Restablecer diseños" -#: dist/prefs.js:1216 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "Restablecer los diseños predeterminados" -#: dist/prefs.js:1229 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "Atajos del teclado" -#: dist/prefs.js:1231 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "Usar atajos del teclado para realizar acciones en la ventana enfocada" -#: dist/prefs.js:1249 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "Mover la ventana al mosaico de la derecha" -#: dist/prefs.js:1251 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "Mover la ventana enfocada al mosaico de su derecha" -#: dist/prefs.js:1260 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "Mover la ventana al mosaico de la izquierda" -#: dist/prefs.js:1261 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "Mover la ventana enfocada al mosaico de su izquierda" -#: dist/prefs.js:1267 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "Mover la ventana al mosaico de arriba" -#: dist/prefs.js:1268 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "Mover la ventana enfocada al mosaico de arriba" -#: dist/prefs.js:1274 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "Mover la ventana al mosaico de abajo" -#: dist/prefs.js:1275 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "Mover la ventana enfocada al mosaico de abajo" -#: dist/prefs.js:1281 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "Extender la ventana hacia el mosaico derecho" -#: dist/prefs.js:1282 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "Extender la ventana enfocada al mosaico de su derecha" -#: dist/prefs.js:1288 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "Extender la ventana hacia el mosaico izquierdo" -#: dist/prefs.js:1289 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "Extender la ventana enfocada al mosaico de su izquierda" -#: dist/prefs.js:1295 +#: dist/prefs.js:566 msgid "Span window above" msgstr "Extender la ventana hacia arriba" -#: dist/prefs.js:1296 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "Extender la ventana enfocada al mosaico superior" -#: dist/prefs.js:1302 +#: dist/prefs.js:573 msgid "Span window down" msgstr "Extender la ventana hacia abajo" -#: dist/prefs.js:1303 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "Extender la ventana enfocada al mosaico inferior" -#: dist/prefs.js:1309 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "Extender la ventana a todas los mosaicos" -#: dist/prefs.js:1310 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "Extender la ventana enfocada a todos los mosaicos" -#: dist/prefs.js:1316 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "Desanclar ventana enfocada" -#: dist/prefs.js:1324 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "Mover la ventana al centro" -#: dist/prefs.js:1326 +#: dist/prefs.js:597 msgid "Move the focused window to the center of the screen" msgstr "Mover la ventana enfocada al centro de la pantalla" -#: dist/prefs.js:1335 +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "Enfocar la ventana de la derecha" -#: dist/prefs.js:1337 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "" "Enfoca la ventana situada a la derecha de la ventana enfocada actualmente" -#: dist/prefs.js:1344 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "Enfocar la ventana de la izquierda" -#: dist/prefs.js:1345 +#: dist/prefs.js:616 msgid "Focus the window to the left of the current focused window" msgstr "" "Enfoca la ventana situada a la izquierda de la ventana enfocada actualmente" -#: dist/prefs.js:1351 +#: dist/prefs.js:622 msgid "Focus window above" msgstr "Enfocar la ventana superior" -#: dist/prefs.js:1352 +#: dist/prefs.js:623 msgid "Focus the window above the current focused window" msgstr "Enfoca la ventana situada encima de la ventana enfocada actualmente" -#: dist/prefs.js:1358 +#: dist/prefs.js:629 msgid "Focus window below" msgstr "Enfocar la ventana inferior" -#: dist/prefs.js:1359 +#: dist/prefs.js:630 msgid "Focus the window below the current focused window" msgstr "Enfoca la ventana situada debajo de la ventana enfocada actualmente" -#: dist/prefs.js:1365 +#: dist/prefs.js:636 msgid "Focus next window" msgstr "Enfocar la ventana siguiente" -#: dist/prefs.js:1366 +#: dist/prefs.js:637 msgid "Focus the window next to the current focused window" msgstr "Enfoca la ventana siguiente a la ventana enfocada actualmente" -#: dist/prefs.js:1372 +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "Enfocar la ventana anterior" -#: dist/prefs.js:1373 +#: dist/prefs.js:644 msgid "Focus the window prior to the current focused window" msgstr "Enfoca la ventana anterior a la ventana enfocada actualmente" -#: dist/prefs.js:1379 +#: dist/prefs.js:650 #, fuzzy msgid "Highlight focused window" msgstr "Desanclar ventana enfocada" -#: dist/prefs.js:1381 +#: dist/prefs.js:652 #, fuzzy msgid "Minimize all the other windows and show only the focused window" msgstr "Usar atajos del teclado para realizar acciones en la ventana enfocada" -#: dist/prefs.js:1388 +#: dist/prefs.js:659 #, fuzzy msgid "Cycle layouts" msgstr "Restablecer diseños" -#: dist/prefs.js:1389 +#: dist/prefs.js:660 msgid "Cycle through available workspace layouts" msgstr "" -#: dist/prefs.js:1415 +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "Ver y personalizar todos los atajos" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "Ver y personalizar los atajos" -#: dist/prefs.js:1466 +#: dist/prefs.js:737 msgid "Enable next/previous window focus to wrap around" msgstr "" "Permitir que el foco de la ventana siguiente/anterior se envuelva alrededor" -#: dist/prefs.js:1468 +#: dist/prefs.js:739 msgid "When focusing next or previous window, wrap around at the window edge" msgstr "" "Al enfocar la ventana siguiente o anterior, se envuelve en el borde de la " "ventana" -#: dist/prefs.js:1474 +#: dist/prefs.js:745 msgid "Restrict directional focus to tiled windows" msgstr "" -#: dist/prefs.js:1476 +#: dist/prefs.js:747 msgid "When using directional focus navigation, only consider tiled windows" msgstr "" -#: dist/prefs.js:1481 +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "Importar, exportar y restablecer" -#: dist/prefs.js:1483 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "Importar, exportar y restablecer la configuración de Tiling Shell" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "Exportar configuración" -#: dist/prefs.js:1490 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "Exportar la configuración a un archivo" -#: dist/prefs.js:1493 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "Exportar la configuración a un archivo de texto" -#: dist/prefs.js:1500 +#: dist/prefs.js:771 msgid "Text file" msgstr "Archivo de texto" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "Importar configuración" -#: dist/prefs.js:1545 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "Importar la configuración desde un archivo" -#: dist/prefs.js:1548 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "Seleccione un archivo de texto para importar" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "Restablecer configuración" -#: dist/prefs.js:1592 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "Restablecer la configuración predeterminada" -#: dist/prefs.js:1607 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "Donar en ko-fi" -#: dist/prefs.js:1613 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "Informar de un error" -#: dist/prefs.js:1619 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "Solicitar una característica" -#: dist/prefs.js:1627 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "" "¿Tiene algún problema, quiere sugerir una característica nueva o contribuir?" -#: dist/prefs.js:1634 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "¡Abra una incidencia nueva en" -#: dist/prefs.js:1814 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +#, fuzzy +msgid "Follow quarters or screen halves" +msgstr "Mover al mejor mosaico" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "" -#: dist/prefs.js:1815 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "Atajo nuevo…" -#: dist/prefs.js:1892 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "Use Retroceso para borrar" -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "Editar diseños" +#~ msgid "Edit Layouts" +#~ msgstr "Editar diseños" -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "Diseño nuevo" +#~ msgid "New Layout" +#~ msgstr "Diseño nuevo" -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "para dividir un mosaico" +#~ msgid "to split a tile" +#~ msgstr "para dividir un mosaico" -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "para dividir un mosaico verticalmente" +#~ msgid "to split a tile vertically" +#~ msgstr "para dividir un mosaico verticalmente" -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "para quitar un mosaico" +#~ msgid "to delete a tile" +#~ msgstr "para quitar un mosaico" -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "usar el botón indicador para guardar o cancelar" +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "usar el botón indicador para guardar o cancelar" #~ msgid "Menu" #~ msgstr "Menú" @@ -693,9 +717,6 @@ msgstr "usar el botón indicador para guardar o cancelar" #~ msgid "Start editing" #~ msgstr "Comenzar edición" -#~ msgid "Move to best tile" -#~ msgstr "Mover al mejor mosaico" - #~ msgid "Move to leftmost tile" #~ msgstr "Mover al mosaico más a la izquierda" diff --git a/translations/fr.po b/translations/fr.po index 75da95eb..9423e77b 100644 --- a/translations/fr.po +++ b/translations/fr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiling Shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: 2025-03-23 14:33+0100\n" "Last-Translator: Nicolas Bénard \n" "Language-Team: French\n" @@ -19,167 +19,168 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 47.1\n" -#: dist/prefs.js:793 +#: dist/prefs.js:59 msgid "General" msgstr "Général" -#: dist/prefs.js:798 +#: dist/prefs.js:64 msgid "Appearance" msgstr "Apparence" -#: dist/prefs.js:799 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "Configurer l'apparence de Tiling Shell" -#: dist/prefs.js:804 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "Afficher l'indicateur" -#: dist/prefs.js:805 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "Afficher ou non l'indicateur dans le panneau" -#: dist/prefs.js:810 +#: dist/prefs.js:76 msgid "Inner gaps" msgstr "Espaces internes" -#: dist/prefs.js:811 +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "Espaces entre les fenêtres" -#: dist/prefs.js:816 +#: dist/prefs.js:82 msgid "Outer gaps" msgstr "Espaces externes" -#: dist/prefs.js:817 +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "Espaces entre une fenêtre et les bords de l'écran" -#: dist/prefs.js:821 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "Flou (fonctionnalité expérimentale)" -#: dist/prefs.js:823 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "" "Appliquer un effet de flou à l'assistant d'ancrage et aux aperçus des tuiles" -#: dist/prefs.js:829 +#: dist/prefs.js:95 msgid "Snap Assistant threshold" msgstr "Seuil de l'assistant d'ancrage" -#: dist/prefs.js:831 +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "" "Distance minimale entre l'assistant d'ancrage et le pointeur pour l'ouvrir" -#: dist/prefs.js:840 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "Assistant d'ancrage" -#: dist/prefs.js:841 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "Appliquer un effet de flou à l'assistant d'ancrage" -#: dist/prefs.js:847 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "Aperçu de la tuile sélectionnée" -#: dist/prefs.js:848 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "Appliquer un effet de flou à l'aperçu de la tuile sélectionnée" -#: dist/prefs.js:852 +#: dist/prefs.js:118 msgid "Window border" msgstr "Bordure de fenêtre" -#: dist/prefs.js:853 dist/prefs.js:860 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "Afficher une bordure autour de la fenêtre active" -#: dist/prefs.js:859 +#: dist/prefs.js:125 msgid "Enable" msgstr "Activer" -#: dist/prefs.js:866 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "Rayon de bordure intelligent" -#: dist/prefs.js:867 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +#, fuzzy +msgid "Dynamically adapt to the window's actual border radius" msgstr "S'adapte dynamiquement au rayon de bordure réel de la fenêtre" -#: dist/prefs.js:873 +#: dist/prefs.js:139 msgid "Width" msgstr "Largeur" -#: dist/prefs.js:874 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "Taille de la bordure" -#: dist/prefs.js:883 +#: dist/prefs.js:149 msgid "Border color" msgstr "Couleur de la bordure" -#: dist/prefs.js:884 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "Choisir la couleur de la bordure" -#: dist/prefs.js:900 +#: dist/prefs.js:166 msgid "Animations" msgstr "Animations" -#: dist/prefs.js:901 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "Personnaliser les animations" -#: dist/prefs.js:907 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "Durée de l'animation de l'assistant d'ancrage" -#: dist/prefs.js:908 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "Durée de l'animation de l'assistant d'ancrage en millisecondes" -#: dist/prefs.js:916 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "Durée de l'animation des tuiles" -#: dist/prefs.js:917 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "Durée de l'animation des tuiles en millisecondes" -#: dist/prefs.js:923 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "Comportement" -#: dist/prefs.js:924 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "Configurer le comportement de Tiling Shell" -#: dist/prefs.js:929 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "Activer l'assistant d'ancrage" -#: dist/prefs.js:930 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "" "Déplacer la fenêtre en haut de l'écran pour activer l'assistant d'ancrage" -#: dist/prefs.js:935 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "Activer le système de tuiles" -#: dist/prefs.js:936 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "" "Maintenir la touche d'activation en déplaçant une fenêtre pour l'ancrer" -#: dist/prefs.js:944 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "Touche de désactivation du système de tuilage" -#: dist/prefs.js:946 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -187,50 +188,50 @@ msgstr "" "Maintenez la touche de désactivation tout en déplaçant une fenêtre pour " "désactiver le système de tuilage" -#: dist/prefs.js:954 +#: dist/prefs.js:220 msgid "Span multiple tiles" msgstr "Étendre sur plusieurs tuiles" -#: dist/prefs.js:955 +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "Maintenir la touche d'activation pour étendre sur plusieurs tuiles" -#: dist/prefs.js:964 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "Activer le tuilage automatique" -#: dist/prefs.js:965 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "Carrelez automatiquement les nouvelles fenêtres sur la meilleure tuile" -#: dist/prefs.js:970 +#: dist/prefs.js:236 msgid "Enable auto-resize of the complementing tiled windows" msgstr "Activer le redimensionnement automatique des fenêtres adjacentes" -#: dist/prefs.js:972 +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "Lorsque qu'une fenêtre ancrée est redimensionnée, ajuster automatiquement " "les autres fenêtres adjacentes" -#: dist/prefs.js:978 +#: dist/prefs.js:244 msgid "Restore window size" msgstr "Restaurer la taille de la fenêtre" -#: dist/prefs.js:980 +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "" "Restaurer ou non la taille d'origine des fenêtres lorsqu'elles sont " "désancrées" -#: dist/prefs.js:986 +#: dist/prefs.js:252 msgid "Add snap assistant and auto-tile buttons to window menu" msgstr "" "Ajouter des boutons pour l'assistant d'ancrage et l'ancrage automatique au " "menu de la fenêtre" -#: dist/prefs.js:988 +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -238,444 +239,467 @@ msgstr "" "Ajouter des boutons pour l'assistant d'ancrage et l'ancrage automatique dans " "le menu contextuel du titre de la fenêtre" -#: dist/prefs.js:994 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "" -#: dist/prefs.js:996 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "" -#: dist/prefs.js:1001 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "Bords de l'écran" -#: dist/prefs.js:1003 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" "Faites glisser les fenêtres contre les bords supérieur, gauche et droit de " "l'écran pour les redimensionner" -#: dist/prefs.js:1017 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "Faites glisser contre le bord supérieur pour maximiser la fenêtre" -#: dist/prefs.js:1018 +#: dist/prefs.js:284 msgid "Drag windows against the top edge to maximize them" msgstr "" "Faites glisser les fenêtres contre le bord supérieur pour les maximiser" -#: dist/prefs.js:1027 +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "Zone d'activation du quadrillage" -#: dist/prefs.js:1028 +#: dist/prefs.js:294 #, fuzzy, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "Zone d'activation pour déclencher le quadrillage (en % de l'écran)" -#: dist/prefs.js:1044 +#: dist/prefs.js:310 msgid "Edge tiling offset" msgstr "" -#: dist/prefs.js:1045 +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" -#: dist/prefs.js:1062 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "Suggestions de fenêtres" -#: dist/prefs.js:1063 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "Activer et désactiver les suggestions de fenêtres" -#: dist/prefs.js:1068 +#: dist/prefs.js:339 msgid "Enable window suggestions for the tiling system" msgstr "Activer les suggestions de fenêtres pour le système de tuilage" -#: dist/prefs.js:1070 +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" "Fournit des suggestions intelligentes pour remplir les tuiles vides lors de " "l'utilisation du système de tuilage" -#: dist/prefs.js:1076 +#: dist/prefs.js:347 msgid "Enable window suggestions for the snap assistant" msgstr "Activer les suggestions de fenêtres pour l'assistant de fixation" -#: dist/prefs.js:1078 +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" "Propose des suggestions pour remplir les tuiles vides lors de l'utilisation " "de l'assistant de fixation" -#: dist/prefs.js:1084 +#: dist/prefs.js:355 msgid "Enable window suggestions for screen edge snapping" msgstr "" "Activer les suggestions de fenêtres pour l'ancrage aux bords de l'écran" -#: dist/prefs.js:1086 +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" "Propose des fenêtres pour occuper les tuiles vides lorsqu'elles sont ancrées " "aux bords de l'écran" -#: dist/prefs.js:1092 +#: dist/prefs.js:363 msgid "Layouts" msgstr "Dispositions" -#: dist/prefs.js:1093 +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "Configurer les dispositions de Tiling Shell" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "Modifier les dispositions" -#: dist/prefs.js:1099 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "Ouvrir l'éditeur de dispositions" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "Exporter les dispositions" -#: dist/prefs.js:1106 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "Exporter les dispositions dans un fichier" -#: dist/prefs.js:1112 dist/prefs.js:1496 +#: dist/prefs.js:383 dist/prefs.js:767 msgid "Save" msgstr "Enregistrer" -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 msgid "Cancel" msgstr "Annuler" -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "Importer des dispositions" -#: dist/prefs.js:1160 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "Importer des dispositions depuis un fichier" -#: dist/prefs.js:1163 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "Sélectionner un fichier de dispositions" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "Ouvrir" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "Réinitialiser les dispositions" -#: dist/prefs.js:1216 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "Restaurer les dispositions par défaut" -#: dist/prefs.js:1229 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "Raccourcis clavier" -#: dist/prefs.js:1231 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "" "Utiliser des raccourcis pour effectuer des actions sur la fenêtre active" -#: dist/prefs.js:1249 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "Déplacer la fenêtre vers la tuile de droite" -#: dist/prefs.js:1251 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "Déplacer la fenêtre active vers la tuile à sa droite" -#: dist/prefs.js:1260 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "Déplacer la fenêtre vers la tuile de gauche" -#: dist/prefs.js:1261 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "Déplacer la fenêtre active vers la tuile à sa gauche" -#: dist/prefs.js:1267 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "Déplacer la fenêtre vers la tuile au-dessus" -#: dist/prefs.js:1268 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "Déplacer la fenêtre active vers la tuile au-dessus" -#: dist/prefs.js:1274 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "Déplacer la fenêtre vers la tuile en dessous" -#: dist/prefs.js:1275 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "Déplacer la fenêtre active vers la tuile en dessous" -#: dist/prefs.js:1281 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "Étendre la fenêtre vers la tuile de droite" -#: dist/prefs.js:1282 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "Étendre la fenêtre active vers la tuile à sa droite" -#: dist/prefs.js:1288 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "Étendre la fenêtre vers la tuile de gauche" -#: dist/prefs.js:1289 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "Étendre la fenêtre active vers la tuile à sa gauche" -#: dist/prefs.js:1295 +#: dist/prefs.js:566 msgid "Span window above" msgstr "Étendre la fenêtre vers la tuile au-dessus" -#: dist/prefs.js:1296 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "Étendre la fenêtre active vers la tuile au-dessus" -#: dist/prefs.js:1302 +#: dist/prefs.js:573 msgid "Span window down" msgstr "Étendre la fenêtre vers la tuile en dessous" -#: dist/prefs.js:1303 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "Étendre la fenêtre active vers la tuile en dessous" -#: dist/prefs.js:1309 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "Étendre la fenêtre à toutes les tuiles" -#: dist/prefs.js:1310 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "Étendre la fenêtre active à toutes les tuiles" -#: dist/prefs.js:1316 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "Détacher la fenêtre active" -#: dist/prefs.js:1324 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "Déplacer la fenêtre au centre" -#: dist/prefs.js:1326 +#: dist/prefs.js:597 msgid "Move the focused window to the center of the screen" msgstr "Déplacer la fenêtre active au centre de l'écran" -#: dist/prefs.js:1335 +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "Focus sur la fenêtre à droite" -#: dist/prefs.js:1337 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "Mettre le focus sur la fenêtre à droite de la fenêtre active" -#: dist/prefs.js:1344 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "Focus sur la fenêtre à gauche" -#: dist/prefs.js:1345 +#: dist/prefs.js:616 msgid "Focus the window to the left of the current focused window" msgstr "Mettre le focus sur la fenêtre à gauche de la fenêtre active" -#: dist/prefs.js:1351 +#: dist/prefs.js:622 msgid "Focus window above" msgstr "Focus sur la fenêtre au-dessus" -#: dist/prefs.js:1352 +#: dist/prefs.js:623 msgid "Focus the window above the current focused window" msgstr "Mettre le focus sur la fenêtre au-dessus de la fenêtre active" -#: dist/prefs.js:1358 +#: dist/prefs.js:629 msgid "Focus window below" msgstr "Focus sur la fenêtre en dessous" -#: dist/prefs.js:1359 +#: dist/prefs.js:630 msgid "Focus the window below the current focused window" msgstr "Mettre le focus sur la fenêtre en dessous de la fenêtre active" -#: dist/prefs.js:1365 +#: dist/prefs.js:636 msgid "Focus next window" msgstr "Focus sur la fenêtre suivante" -#: dist/prefs.js:1366 +#: dist/prefs.js:637 msgid "Focus the window next to the current focused window" msgstr "" "Mettre le focus sur la fenêtre suivante à la fenêtre actuellement active" -#: dist/prefs.js:1372 +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "Focus sur la fenêtre précédente" -#: dist/prefs.js:1373 +#: dist/prefs.js:644 msgid "Focus the window prior to the current focused window" msgstr "" "Mettre le focus sur la fenêtre précédente à la fenêtre actuellement active" -#: dist/prefs.js:1379 +#: dist/prefs.js:650 #, fuzzy msgid "Highlight focused window" msgstr "Détacher la fenêtre active" -#: dist/prefs.js:1381 +#: dist/prefs.js:652 #, fuzzy msgid "Minimize all the other windows and show only the focused window" msgstr "" "Utiliser des raccourcis pour effectuer des actions sur la fenêtre active" -#: dist/prefs.js:1388 +#: dist/prefs.js:659 #, fuzzy msgid "Cycle layouts" msgstr "Réinitialiser les dispositions" -#: dist/prefs.js:1389 +#: dist/prefs.js:660 msgid "Cycle through available workspace layouts" msgstr "" -#: dist/prefs.js:1415 +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "Afficher et personnaliser tous les raccourcis" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "Afficher et personnaliser les raccourcis" -#: dist/prefs.js:1466 +#: dist/prefs.js:737 msgid "Enable next/previous window focus to wrap around" msgstr "Activer le focus suivant/précédent de la fenêtre pour revenir au début" -#: dist/prefs.js:1468 +#: dist/prefs.js:739 msgid "When focusing next or previous window, wrap around at the window edge" msgstr "" "Lorsque vous vous concentrez sur la fenêtre suivante ou précédente, faites-" "le rebondir sur le bord de la fenêtre" -#: dist/prefs.js:1474 +#: dist/prefs.js:745 msgid "Restrict directional focus to tiled windows" msgstr "" -#: dist/prefs.js:1476 +#: dist/prefs.js:747 msgid "When using directional focus navigation, only consider tiled windows" msgstr "" -#: dist/prefs.js:1481 +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "Importer, exporter et réinitialiser" -#: dist/prefs.js:1483 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "Importer, exporter et réinitialiser les paramètres de Tiling Shell" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "Exporter les paramètres" -#: dist/prefs.js:1490 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "Exporter les paramètres vers un fichier" -#: dist/prefs.js:1493 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "Exporter les paramètres vers un fichier texte" -#: dist/prefs.js:1500 +#: dist/prefs.js:771 msgid "Text file" msgstr "Fichier texte" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "Importer les paramètres" -#: dist/prefs.js:1545 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "Importer les paramètres à partir d'un fichier" -#: dist/prefs.js:1548 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "Sélectionner un fichier texte à importer" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "Réinitialiser les paramètres" -#: dist/prefs.js:1592 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "Rétablir les paramètres par défaut" -#: dist/prefs.js:1607 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "Faire un don sur ko-fi" -#: dist/prefs.js:1613 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "Signaler un bug" -#: dist/prefs.js:1619 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "Demander une fonctionnalité" -#: dist/prefs.js:1627 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "" "Vous avez des problèmes, vous souhaitez suggérer une nouvelle fonctionnalité " "ou contribuer ?" -#: dist/prefs.js:1634 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "Ouvrir un nouveau problème sur" -#: dist/prefs.js:1814 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +#, fuzzy +msgid "Follow quarters or screen halves" +msgstr "Déplacer vers la meilleure tuile" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "" -#: dist/prefs.js:1815 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "Nouveau raccourci…" -#: dist/prefs.js:1892 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "Utilisez Backspace pour effacer" -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "Modifier les dispositions" +#~ msgid "Edit Layouts" +#~ msgstr "Modifier les dispositions" -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "Nouvelle disposition" +#~ msgid "New Layout" +#~ msgstr "Nouvelle disposition" -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "pour diviser une tuile" +#~ msgid "to split a tile" +#~ msgstr "pour diviser une tuile" -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "pour diviser une tuile verticalement" +#~ msgid "to split a tile vertically" +#~ msgstr "pour diviser une tuile verticalement" -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "pour supprimer une tuile" +#~ msgid "to delete a tile" +#~ msgstr "pour supprimer une tuile" -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "utilisez le bouton d'indicateur pour enregistrer ou annuler" +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "utilisez le bouton d'indicateur pour enregistrer ou annuler" #~ msgid "Menu" #~ msgstr "Menu" @@ -695,9 +719,6 @@ msgstr "utilisez le bouton d'indicateur pour enregistrer ou annuler" #~ msgid "Start editing" #~ msgstr "Commencer à modifier" -#~ msgid "Move to best tile" -#~ msgstr "Déplacer vers la meilleure tuile" - #~ msgid "Move to leftmost tile" #~ msgstr "Déplacer vers la tuile la plus à gauche" diff --git a/translations/it.po b/translations/it.po index 826b9b32..8b847c72 100644 --- a/translations/it.po +++ b/translations/it.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiling Shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: 2026-01-02 21:11+0200\n" "Last-Translator: Albano Battistella \n" "Language-Team: Italian <>\n" @@ -11,168 +11,169 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: dist/prefs.js:793 +#: dist/prefs.js:59 msgid "General" msgstr "Generale" -#: dist/prefs.js:798 +#: dist/prefs.js:64 msgid "Appearance" msgstr "Aspetto" -#: dist/prefs.js:799 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "Configura l'aspetto di Tiling Shell" -#: dist/prefs.js:804 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "Mostra icona" -#: dist/prefs.js:805 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "Se mostrare l'indicatore del pannello oppure no" -#: dist/prefs.js:810 +#: dist/prefs.js:76 msgid "Inner gaps" msgstr "Spazi interni" -#: dist/prefs.js:811 +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "Spazi tra le finestre" -#: dist/prefs.js:816 +#: dist/prefs.js:82 msgid "Outer gaps" msgstr "Spazi esterni" -#: dist/prefs.js:817 +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "Spazi tra una finestra e i bordi del monitor" -#: dist/prefs.js:821 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "Sfocatura (funzione sperimentale)" -#: dist/prefs.js:823 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "" "Applica l'effetto sfocatura allo Snap Assistant e alle anteprime dei riquadri" -#: dist/prefs.js:829 +#: dist/prefs.js:95 msgid "Snap Assistant threshold" msgstr "Soglia di attivazione dello Snap Assistant" -#: dist/prefs.js:831 +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "Distanza minima dallo Snap Assistant al puntatore per aprirlo" -#: dist/prefs.js:840 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "Snap Assistant" -#: dist/prefs.js:841 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "Applica l'effetto sfocatura allo Snap Assistant" -#: dist/prefs.js:847 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "Anteprima del riquadro selezionato" -#: dist/prefs.js:848 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "Applica l'effetto sfocato all'anteprima del riquadro selezionato" -#: dist/prefs.js:852 +#: dist/prefs.js:118 msgid "Window border" msgstr "Bordo della finestra" -#: dist/prefs.js:853 dist/prefs.js:860 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "Mostra un bordo attorno alla finestra selezionata" -#: dist/prefs.js:859 +#: dist/prefs.js:125 msgid "Enable" msgstr "Abilita" -#: dist/prefs.js:866 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "Border radius intelligente" -#: dist/prefs.js:867 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +#, fuzzy +msgid "Dynamically adapt to the window's actual border radius" msgstr "Adatta dinamicamente al border radius della finestra" -#: dist/prefs.js:873 +#: dist/prefs.js:139 msgid "Width" msgstr "Larghezza" -#: dist/prefs.js:874 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "La dimensione del bordo" -#: dist/prefs.js:883 +#: dist/prefs.js:149 msgid "Border color" msgstr "Colore bordo" -#: dist/prefs.js:884 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "Scegli il colore del bordo" -#: dist/prefs.js:900 +#: dist/prefs.js:166 msgid "Animations" msgstr "Animazioni" -#: dist/prefs.js:901 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "Personalizza animazioni" -#: dist/prefs.js:907 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "Tempo di animazione dello Snap Assistant" -#: dist/prefs.js:908 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "Tempo di animazione delo Snap Assistant in millisecondi" -#: dist/prefs.js:916 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "Tempo di animazione dei riquadri" -#: dist/prefs.js:917 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "Il tempo di animazione dei riquadri in millisecondi" -#: dist/prefs.js:923 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "Comportamento" -#: dist/prefs.js:924 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "Configura il comportamento di Tiling Shell" -#: dist/prefs.js:929 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "Abilita Snap Assistant" -#: dist/prefs.js:930 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "" "Sposta la finestra nella parte superiore dello schermo per usare lo Snap " "Assistant" -#: dist/prefs.js:935 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "Abilita sistema di tiling" -#: dist/prefs.js:936 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "" "Tieni premuto il tasto di attivazione mentre sposti una finestra per " "affiancarla" -#: dist/prefs.js:944 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "Tasto di disattivazione del sistema di tiling" -#: dist/prefs.js:946 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -180,48 +181,48 @@ msgstr "" "Tieni premuto il tasto di disattivazione mentre sposti una finestra per " "chiudere il sistema di tiling" -#: dist/prefs.js:954 +#: dist/prefs.js:220 msgid "Span multiple tiles" msgstr "Unisci più riquadri" -#: dist/prefs.js:955 +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "Tieni premuto il tasto di attivazione per unire più riquadri" -#: dist/prefs.js:964 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "Abilita sistema di tiling automatico" -#: dist/prefs.js:965 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "Posiziona automaticamente le nuove finestre nel migliore riquadro" -#: dist/prefs.js:970 +#: dist/prefs.js:236 msgid "Enable auto-resize of the complementing tiled windows" msgstr "Abilita il ridimensionamento automatico delle finestre affiancate" -#: dist/prefs.js:972 +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "Quando una finestra viene ridimensionata, ridimensiona automaticamente le " "altre finestre affiancate ad essa" -#: dist/prefs.js:978 +#: dist/prefs.js:244 msgid "Restore window size" msgstr "Ripristina le dimensioni della finestra" -#: dist/prefs.js:980 +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "Se ripristinare le finestre alle dimensioni originali oppure no" -#: dist/prefs.js:986 +#: dist/prefs.js:252 msgid "Add snap assistant and auto-tile buttons to window menu" msgstr "" "Aggiungi lo Snap Assistant e i pulsanti di affiancamento automatico al menu " "della finestra" -#: dist/prefs.js:988 +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -230,11 +231,11 @@ msgstr "" "visualizzato quando si fa clic con il pulsante destro del mouse sul titolo " "di una finestra" -#: dist/prefs.js:994 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "Aggiungi finestre affiancate al menu ALT+TAB" -#: dist/prefs.js:996 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" @@ -242,433 +243,456 @@ msgstr "" "Aggiungi le finestre affiancate al menu ALT+TAB per aprirle tutte " "contemporaneamente" -#: dist/prefs.js:1001 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "Bordi dello schermo" -#: dist/prefs.js:1003 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" "Trascina le finestre contro i bordi superiore, sinistro e destro dello " "schermo per ridimensionarle" -#: dist/prefs.js:1017 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "Trascina contro il bordo superiore per ingrandire la finestra" -#: dist/prefs.js:1018 +#: dist/prefs.js:284 msgid "Drag windows against the top edge to maximize them" msgstr "Trascina le finestre contro il bordo superiore per massimizzarle" -#: dist/prefs.js:1027 +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "Area di attivazione della divisione in quarti" -#: dist/prefs.js:1028 +#: dist/prefs.js:294 #, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "" "Area di attivazione per attivare la divisione in quarti (%% dello schermo)" -#: dist/prefs.js:1044 +#: dist/prefs.js:310 msgid "Edge tiling offset" msgstr "Distanza massima dal bordo" -#: dist/prefs.js:1045 +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" "Distanza massima dal bordo dello schermo, in pixels, per attivare la " "divisione in quarti" -#: dist/prefs.js:1062 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "Finestre suggerite" -#: dist/prefs.js:1063 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "Abilita e disabilita il suggerimento delle finestre" -#: dist/prefs.js:1068 +#: dist/prefs.js:339 msgid "Enable window suggestions for the tiling system" msgstr "Abilita il suggerimento delle finestre quando usi il sistema di tiling" -#: dist/prefs.js:1070 +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" "Fornisce suggerimenti intelligenti per riempire i riquadri vuoti quando " "viene usato il sistema di tiling" -#: dist/prefs.js:1076 +#: dist/prefs.js:347 msgid "Enable window suggestions for the snap assistant" msgstr "Abilita il suggerimento delle finestre quando usi lo snap assistant" -#: dist/prefs.js:1078 +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" "Offre suggerimenti per popolare i riquadri vuoti quando viene usato lo snap " "assistant" -#: dist/prefs.js:1084 +#: dist/prefs.js:355 msgid "Enable window suggestions for screen edge snapping" msgstr "" "Abilita il suggerimento delle finestre quando usi i bordi attivi dello " "schermo" -#: dist/prefs.js:1086 +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" "Suggerisce le finestre per occupare i riquadri vuoti quando usi i bordi " "attivi dello schermo" -#: dist/prefs.js:1092 +#: dist/prefs.js:363 msgid "Layouts" msgstr "Layouts" -#: dist/prefs.js:1093 +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "Configura i layout di Tiling Shell" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "Modifica layouts" -#: dist/prefs.js:1099 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "Apre l'editor dei layouts" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "Esporta layouts" -#: dist/prefs.js:1106 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "Esporta layouts in un file" -#: dist/prefs.js:1112 dist/prefs.js:1496 +#: dist/prefs.js:383 dist/prefs.js:767 msgid "Save" msgstr "Salva" -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 msgid "Cancel" msgstr "Annulla" -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "Importa layouts" -#: dist/prefs.js:1160 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "Importa layouts da un file" -#: dist/prefs.js:1163 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "Seleziona file di layouts" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "Apri" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "Ripristina layouts" -#: dist/prefs.js:1216 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "Ripristina i layouts predefiniti" -#: dist/prefs.js:1229 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "Scorciatoie da tastiera" -#: dist/prefs.js:1231 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "" "Usa i tasti di scelta rapida per eseguire azioni sulla finestra selezionata" -#: dist/prefs.js:1249 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "Sposta la finestra nel riquadro destro" -#: dist/prefs.js:1251 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "Sposta la finestra selezionata sul riquadro alla sua destra" -#: dist/prefs.js:1260 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "Sposta la finestra nel riquadro sinistro" -#: dist/prefs.js:1261 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "Sposta la finestra selezionata sul riquadro alla sua sinistra" -#: dist/prefs.js:1267 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "Sposta la finestra nel riquadro sopra" -#: dist/prefs.js:1268 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "Sposta la finestra selezionata sul riquadro sopra" -#: dist/prefs.js:1274 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "Sposta la finestra sul riquadro sottostante" -#: dist/prefs.js:1275 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "Sposta la finestra selezionata sul riquadro sottostante" -#: dist/prefs.js:1281 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "Estendi la finestra al riquadro destro" -#: dist/prefs.js:1282 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "Extendi la finestra selezionata sul riquadro alla sua destra" -#: dist/prefs.js:1288 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "Estendi la finestra al riquadro sinistro" -#: dist/prefs.js:1289 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "Estendi la finestra selezionata al riquadro alla sua sinistra" -#: dist/prefs.js:1295 +#: dist/prefs.js:566 msgid "Span window above" msgstr "Estendi finestra verso l'alto" -#: dist/prefs.js:1296 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "Estendi la finestra selezionata al riquadro in alto" -#: dist/prefs.js:1302 +#: dist/prefs.js:573 msgid "Span window down" msgstr "Estendi finestra verso il basso" -#: dist/prefs.js:1303 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "Estendi la finestra selezionata al riquadro sottostante" -#: dist/prefs.js:1309 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "Estendi la finestra a tutti i riquadri" -#: dist/prefs.js:1310 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "Estendi la finestra selezionata a tutti i riquadri" -#: dist/prefs.js:1316 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "Sgancia la finestra selezionata" -#: dist/prefs.js:1324 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "Sposta la finestra al centro" -#: dist/prefs.js:1326 +#: dist/prefs.js:597 msgid "Move the focused window to the center of the screen" msgstr "Sposta la finestra selezionata al centro dello schermo" -#: dist/prefs.js:1335 +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "Seleziona finestra a destra" -#: dist/prefs.js:1337 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "Seleziona la finestra a destra della finestra attualmente selezionata" -#: dist/prefs.js:1344 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "Seleziona finestra a sinistra" -#: dist/prefs.js:1345 +#: dist/prefs.js:616 msgid "Focus the window to the left of the current focused window" msgstr "" "Seleziona la finestra a sinistra della finestra attualmente selezionata" -#: dist/prefs.js:1351 +#: dist/prefs.js:622 msgid "Focus window above" msgstr "Seleziona finestra in alto" -#: dist/prefs.js:1352 +#: dist/prefs.js:623 msgid "Focus the window above the current focused window" msgstr "Seleziona la finestra in alto alla finestra attualmente selezionata" -#: dist/prefs.js:1358 +#: dist/prefs.js:629 msgid "Focus window below" msgstr "Seleziona la finestra in basso" -#: dist/prefs.js:1359 +#: dist/prefs.js:630 msgid "Focus the window below the current focused window" msgstr "Seleziona la finestra in basso alla finestra attualmente selezionata" -#: dist/prefs.js:1365 +#: dist/prefs.js:636 msgid "Focus next window" msgstr "Seleziona finestra successiva" -#: dist/prefs.js:1366 +#: dist/prefs.js:637 msgid "Focus the window next to the current focused window" msgstr "Seleziona la finestra successiva alla finestra attualmente selezionata" -#: dist/prefs.js:1372 +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "Seleziona finestra precedente" -#: dist/prefs.js:1373 +#: dist/prefs.js:644 msgid "Focus the window prior to the current focused window" msgstr "Seleziona la finestra precedente alla finestra attualmente selezionata" -#: dist/prefs.js:1379 +#: dist/prefs.js:650 msgid "Highlight focused window" msgstr "Evidenzia la finestra focalizzata" -#: dist/prefs.js:1381 +#: dist/prefs.js:652 msgid "Minimize all the other windows and show only the focused window" msgstr "" "Riduci a icona tutte le altre finestre e mostra solo la finestra focalizzata" -#: dist/prefs.js:1388 +#: dist/prefs.js:659 msgid "Cycle layouts" msgstr "Scorri layouts" -#: dist/prefs.js:1389 +#: dist/prefs.js:660 msgid "Cycle through available workspace layouts" msgstr "Scorri i layout dell'area di lavoro disponibili" -#: dist/prefs.js:1415 +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "Visualizza e personalizza tutte le scorciatoie" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "Visualizza e personalizza le scorciatoie" -#: dist/prefs.js:1466 +#: dist/prefs.js:737 msgid "Enable next/previous window focus to wrap around" msgstr "Permetti al focus del successore/precedente di ricominciare da capo" -#: dist/prefs.js:1468 +#: dist/prefs.js:739 msgid "When focusing next or previous window, wrap around at the window edge" msgstr "" "Quando passi il focus alla finestra successiva o precedente, ricomincia da " "capo se non ci sono altre finestre" -#: dist/prefs.js:1474 +#: dist/prefs.js:745 msgid "Restrict directional focus to tiled windows" msgstr "Limita la messa a fuoco direzionale alle finestre affiancate" -#: dist/prefs.js:1476 +#: dist/prefs.js:747 msgid "When using directional focus navigation, only consider tiled windows" msgstr "" "Quando si utilizza la navigazione con messa a fuoco direzionale, " "consideraresolo le finestre affiancate" -#: dist/prefs.js:1481 +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "Importa, esporta e resetta" -#: dist/prefs.js:1483 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "Importa, esporta e resetta le impostazioni di Tiling Shell" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "Esporta le impostazioni" -#: dist/prefs.js:1490 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "Esporta le impostazioni in un file" -#: dist/prefs.js:1493 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "Esporta le impostazioni in un file di testo" -#: dist/prefs.js:1500 +#: dist/prefs.js:771 msgid "Text file" msgstr "File di testo" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "Importa le impostazioni" -#: dist/prefs.js:1545 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "Importa le impostazioni da un file" -#: dist/prefs.js:1548 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "Seleziona un file di testo dal quale importare le impostazioni" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "Resetta le impostazioni" -#: dist/prefs.js:1592 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "Ripristina le impostazioni predefinite" -#: dist/prefs.js:1607 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "Fai una donazione" -#: dist/prefs.js:1613 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "Segnala un bug" -#: dist/prefs.js:1619 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "Richiedi una funzionalità" -#: dist/prefs.js:1627 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "Hai problemi, vuoi suggerire una nuova funzionalità o contribuire?" -#: dist/prefs.js:1634 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "Apri una nuova issue su" -#: dist/prefs.js:1814 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "Scegli come le finestre vengono mosse verso i bordi dello schermo" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "Default" + +#: dist/prefs.js:986 +#, fuzzy +msgid "Follow quarters or screen halves" +msgstr "Sposta nel riquadro migliore" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "Adattivo" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "Segui gli angoli del layout selezionato o la metà dello schermo" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "Granulare" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "Segui il layout selezionato" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "Scegli colore personalizzato" -#: dist/prefs.js:1815 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "Usa il colore predefinito del sistema" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "Nuova scorciatoia" -#: dist/prefs.js:1892 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "Usa Backspace per eliminare" -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "Modifica layout" +#~ msgid "Edit Layouts" +#~ msgstr "Modifica layout" -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "Nuovo layout" +#~ msgid "New Layout" +#~ msgstr "Nuovo layout" -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "per dividere un riquadro" +#~ msgid "to split a tile" +#~ msgstr "per dividere un riquadro" -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "per dividere un riquadro verticalmente" +#~ msgid "to split a tile vertically" +#~ msgstr "per dividere un riquadro verticalmente" -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "per cancellare un riquadro" +#~ msgid "to delete a tile" +#~ msgstr "per cancellare un riquadro" -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "usa l'icona sul pannello superiore per salvare o annullare" +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "usa l'icona sul pannello superiore per salvare o annullare" #~ msgid "Menu" #~ msgstr "Menu" @@ -688,9 +712,6 @@ msgstr "usa l'icona sul pannello superiore per salvare o annullare" #~ msgid "Start editing" #~ msgstr "Inizia la modifica" -#~ msgid "Move to best tile" -#~ msgstr "Sposta nel riquadro migliore" - #~ msgid "Move to leftmost tile" #~ msgstr "Sposta nel riquadro più a sinistra" diff --git a/translations/ka.po b/translations/ka.po index 6935d9ef..60e2492f 100644 --- a/translations/ka.po +++ b/translations/ka.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: tilingshell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: 2025-12-13 06:31+0100\n" "Last-Translator: Ekaterine Papava \n" "Language-Team: Georgian <(nothing)>\n" @@ -17,166 +17,166 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.8\n" -#: dist/prefs.js:793 +#: dist/prefs.js:59 msgid "General" msgstr "ზოგადი" -#: dist/prefs.js:798 +#: dist/prefs.js:64 msgid "Appearance" msgstr "გარეგნობა" -#: dist/prefs.js:799 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "Tiling Shell-ის გარეგნობის მორგება" -#: dist/prefs.js:804 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "მაჩვენებლის ვერსია" -#: dist/prefs.js:805 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "ნაჩვენები იქნება თუ არა პანელის მაჩვენებელი" -#: dist/prefs.js:810 +#: dist/prefs.js:76 msgid "Inner gaps" msgstr "შიდა გამოტოვებები" -#: dist/prefs.js:811 +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "გამოტოვებები ფანჯრებს შორის" -#: dist/prefs.js:816 +#: dist/prefs.js:82 msgid "Outer gaps" msgstr "გარე გამოტოვებები" -#: dist/prefs.js:817 +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "გამოტოვებები ფანჯრებსა და ეკრანის საზღვრებს შორის" -#: dist/prefs.js:821 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "გაბუნდოვნება (ექსპერიმენტული ფუნქცია)" -#: dist/prefs.js:823 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "" "ბუნდოვნების ეფექტის გადატარება მიმაგრების დამხმარეზე და ფილის მინიატურებზე" -#: dist/prefs.js:829 +#: dist/prefs.js:95 msgid "Snap Assistant threshold" msgstr "მიმაგრების დამხმარის ზღვარი" -#: dist/prefs.js:831 +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" -msgstr "" -"მინიმალური დაშორება მიმაგრების დამხმარიდან კურსორამდე, მის გასახსნელად" +msgstr "მინიმალური დაშორება მიმაგრების დამხმარიდან კურსორამდე, მის გასახსნელად" -#: dist/prefs.js:840 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "მიმაგრების დამხმარე" -#: dist/prefs.js:841 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "ბუნდოვნების ეფექტის გადატარება მიმაგრების დამხმარეზე" -#: dist/prefs.js:847 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "არჩეული ფილის მინიატურა" -#: dist/prefs.js:848 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "ბუნდოვნების ეფექტის გადატარება მონიშნული ფილის მინიატურაზე" -#: dist/prefs.js:852 +#: dist/prefs.js:118 msgid "Window border" msgstr "ფანჯარის ჩარჩო" -#: dist/prefs.js:853 dist/prefs.js:860 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "საზღვრის დახატვა ფოკუსის მქონე ფანჯრის გარშემო" -#: dist/prefs.js:859 +#: dist/prefs.js:125 msgid "Enable" msgstr "ჩართვა" -#: dist/prefs.js:866 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "ჭკვიანი საზღვრის რადიუსი" -#: dist/prefs.js:867 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +#, fuzzy +msgid "Dynamically adapt to the window's actual border radius" msgstr "ფანჯრის მიმდინარე საზღვრის რადიუსის დინამიკური მორგება" -#: dist/prefs.js:873 +#: dist/prefs.js:139 msgid "Width" msgstr "სიგანე" -#: dist/prefs.js:874 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "საზღვრის ზომა" -#: dist/prefs.js:883 +#: dist/prefs.js:149 msgid "Border color" msgstr "საზღვრის ფერი" -#: dist/prefs.js:884 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "საზღვრის ფერის არჩევა" -#: dist/prefs.js:900 +#: dist/prefs.js:166 msgid "Animations" msgstr "ანიმაციები" -#: dist/prefs.js:901 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "ანიმაციების მორგება" -#: dist/prefs.js:907 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "მიმაგრების დამხმარის ანიმაციის დრო" -#: dist/prefs.js:908 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "მიმაგრების დამხმარის ანიმაციის დრო მილიწამებში" -#: dist/prefs.js:916 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "ფილების ანიმაციის დრო" -#: dist/prefs.js:917 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "ფილების ანიმაციის დრო მილიწამებში" -#: dist/prefs.js:923 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "ქცევა" -#: dist/prefs.js:924 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "Tiling Shell-ის ქცევის მორგება" -#: dist/prefs.js:929 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "მიმაგრების დამხმარის ჩართვა" -#: dist/prefs.js:930 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "" "გადაიტანეთ ფანჯარა ეკრანის ზედა მხარეს მიმაგრების დამხმარის გამოსაძახებლად" -#: dist/prefs.js:935 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "ფილების სისტემის ჩართვა" -#: dist/prefs.js:936 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "გეჭიროთ აქტივაციის ღილაკზე ფანჯრის მოძრაობისას მის მოსათავსებლად" -#: dist/prefs.js:944 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "ფილების სისტემის დეაქტივაციის ღილაკი" -#: dist/prefs.js:946 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -184,476 +184,498 @@ msgstr "" "გეჭიროთ დეაქტივაციის ღილაკზე ფანჯრის მოძრაობისას ფილების სისტემის " "დეაქტივაციისთვის" -#: dist/prefs.js:954 +#: dist/prefs.js:220 msgid "Span multiple tiles" msgstr "გაწელვა ერთზე მეტ ფილაზე" -#: dist/prefs.js:955 +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "გეჭიროთ აქტივაციის ღილაკზე ერთზე მეტ ფილაზე გასაწელად" -#: dist/prefs.js:964 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "ავტოფილების ჩართვა" -#: dist/prefs.js:965 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "ახალი ფანჯრების ავტომატური განთავსება საუკეთესო ფილაზე" -#: dist/prefs.js:970 +#: dist/prefs.js:236 msgid "Enable auto-resize of the complementing tiled windows" msgstr "მეზობელი ფილების ზომის ავტომატური შეცვლის ცართვა" -#: dist/prefs.js:972 +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "როცა ფანჯარას ზომა შეეცვლება, მისო ახლომდებარე ფანჯრების ზომის ავტომატური " "შეცვლა" -#: dist/prefs.js:978 +#: dist/prefs.js:244 msgid "Restore window size" msgstr "ფანჯრის ზომის აღდგენა" -#: dist/prefs.js:980 +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "აღდგება თუ არა ფანჯრები მათ ორიგინალ ზომებამდე მათი ფილიდან მოხსნისას" -#: dist/prefs.js:986 +#: dist/prefs.js:252 msgid "Add snap assistant and auto-tile buttons to window menu" msgstr "" -#: dist/prefs.js:988 +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" msgstr "" -#: dist/prefs.js:994 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "" -#: dist/prefs.js:996 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "" -#: dist/prefs.js:1001 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "ეკრანის კიდეები" -#: dist/prefs.js:1003 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" -#: dist/prefs.js:1017 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "" -#: dist/prefs.js:1018 +#: dist/prefs.js:284 msgid "Drag windows against the top edge to maximize them" msgstr "" -#: dist/prefs.js:1027 +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "მეოთხედი ფილის აქტივაციის არე" -#: dist/prefs.js:1028 +#: dist/prefs.js:294 #, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "" -#: dist/prefs.js:1044 +#: dist/prefs.js:310 msgid "Edge tiling offset" msgstr "წიბოს ფილის წანაცვლება" -#: dist/prefs.js:1045 +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" -#: dist/prefs.js:1062 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "ფანჯრის მინიშნებები" -#: dist/prefs.js:1063 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "ფანჯრის მინიშნებების ჩართვა და გამორთვა" -#: dist/prefs.js:1068 +#: dist/prefs.js:339 msgid "Enable window suggestions for the tiling system" msgstr "ფანჯრის მინიშნებების ჩართვა ფილების სისტემისთვის" -#: dist/prefs.js:1070 +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" -#: dist/prefs.js:1076 +#: dist/prefs.js:347 msgid "Enable window suggestions for the snap assistant" msgstr "" -#: dist/prefs.js:1078 +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" -#: dist/prefs.js:1084 +#: dist/prefs.js:355 msgid "Enable window suggestions for screen edge snapping" msgstr "" -#: dist/prefs.js:1086 +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" -#: dist/prefs.js:1092 +#: dist/prefs.js:363 msgid "Layouts" msgstr "განლაგებები" -#: dist/prefs.js:1093 +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "Tiling Shell-ის განლაგებების მორგება" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "განლაგებების ჩასწორება" -#: dist/prefs.js:1099 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "განლაგებების რედაქტორის გახსნა" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "განლაგებების გატანა" -#: dist/prefs.js:1106 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "განლაგებების გატანა ფაილში" -#: dist/prefs.js:1112 dist/prefs.js:1496 +#: dist/prefs.js:383 dist/prefs.js:767 msgid "Save" msgstr "შენახვა" -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 msgid "Cancel" msgstr "გაუქმება" -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "განლაგებების შემოტანა" -#: dist/prefs.js:1160 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "განლაგებების შემოტანა ფაილიდან" -#: dist/prefs.js:1163 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "აირჩიეთ განლაგებების ფაილი" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "გახსნა" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "განლაგებების ჩამოყრა" -#: dist/prefs.js:1216 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "ნაგულისხმევი განლაგებების დაბრუნება" -#: dist/prefs.js:1229 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "კლავიატურის მალსახმობები" -#: dist/prefs.js:1231 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "" "გამოიყენეთ კლავიატურის მალსახმობები ფოკუსის მქონე ფანჯარაზე ქმედებების " "განსახორციელებლად" -#: dist/prefs.js:1249 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "ფანჯრის გადატანა მარჯვენა ფილაზე" -#: dist/prefs.js:1251 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "ფოკუსის მქონე ფანჯრის გადატანა ფილაზე მარჯვნივ" -#: dist/prefs.js:1260 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "ფანჯრის გადატანა მარცხენა ფილაზე" -#: dist/prefs.js:1261 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "ფოკუსის მქონე ფანჯრის გადატანა ფილაზე მარცხნივ" -#: dist/prefs.js:1267 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "ფანჯრის გადატანა ზედა ფილაზე" -#: dist/prefs.js:1268 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "ფოკუსის მქონე ფანჯრის გადატანა ფილაზე ზემოთ" -#: dist/prefs.js:1274 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "ფანჯრის გადატანა ქვედა ფილაზე" -#: dist/prefs.js:1275 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "ფოკუსის მქონე ფანჯრის გადატანა ფილაზე ქვემოთ" -#: dist/prefs.js:1281 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "ფანჯრის გაწელვა მარჯვენა ფილამდე" -#: dist/prefs.js:1282 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "ფოკუსის მქონე ფანჯრის გაწელვა ფილამდე მარჯვნივ" -#: dist/prefs.js:1288 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "ფანჯრის გაწელვა მარცხენა ფილამდე" -#: dist/prefs.js:1289 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "ფოკუსის მქონე ფანჯრის გაწელვა ფილამდე მარცხნივ" -#: dist/prefs.js:1295 +#: dist/prefs.js:566 msgid "Span window above" msgstr "ფანჯრის გაწელვა ზედა ფილამდე" -#: dist/prefs.js:1296 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "ფოკუსის მქონე ფანჯრის გაწელვა ფილამდე ზემოთ" -#: dist/prefs.js:1302 +#: dist/prefs.js:573 msgid "Span window down" msgstr "ფანჯრის გაწელვა ქვედა ფილამდე" -#: dist/prefs.js:1303 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "ფოკუსის მქონე ფანჯრის გაწელვა ფილამდე ქვემოთ" -#: dist/prefs.js:1309 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "ფანჯრის გაწელვა ყველა ფილამდე" -#: dist/prefs.js:1310 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "ფოკუსის მქონე ფანჯრის გაწელვა ყველა ფილამდე" -#: dist/prefs.js:1316 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "ფოკუსის მქონე ფანჯრის ფილიდან მოცილება" -#: dist/prefs.js:1324 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "ფანჯრის გადატანა ცენტრისკენ" -#: dist/prefs.js:1326 +#: dist/prefs.js:597 msgid "Move the focused window to the center of the screen" msgstr "" -#: dist/prefs.js:1335 +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "ფოკუსის გადართვა მარჯვენა ფანჯარაზე" -#: dist/prefs.js:1337 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "" "ფოკუსის გადატანა ამჟამად ფოკუსის მქონე ფანჯრიდან მარჯვენა მხარეს არსებულ " "ფანჯარაზე" -#: dist/prefs.js:1344 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "ფოკუსის გადართვა მარცხენა ფანჯარაზე" -#: dist/prefs.js:1345 +#: dist/prefs.js:616 msgid "Focus the window to the left of the current focused window" msgstr "" "ფოკუსის გადატანა ამჟამად ფოკუსის მქონე ფანჯრიდან მარცხენა მხარეს არსებულ " "ფანჯარაზე" -#: dist/prefs.js:1351 +#: dist/prefs.js:622 msgid "Focus window above" msgstr "ფოკუსის გადართვა ზედა ფანჯარაზე" -#: dist/prefs.js:1352 +#: dist/prefs.js:623 msgid "Focus the window above the current focused window" msgstr "" "ფოკუსის გადატანა ამჟამად ფოკუსის მქონე ფანჯრიდან ზემო მხარეს არსებულ " "ფანჯარაზე" -#: dist/prefs.js:1358 +#: dist/prefs.js:629 msgid "Focus window below" msgstr "ფოკუსის გადართვა ქვედა ფანჯარაზე" -#: dist/prefs.js:1359 +#: dist/prefs.js:630 msgid "Focus the window below the current focused window" msgstr "" "ფოკუსის გადატანა ამჟამად ფოკუსის მქონე ფანჯრიდან ქვემო მხარეს არსებულ " "ფანჯარაზე" -#: dist/prefs.js:1365 +#: dist/prefs.js:636 msgid "Focus next window" msgstr "ფოკუსის გადართვა შემდეგ ფანჯარაზე" -#: dist/prefs.js:1366 +#: dist/prefs.js:637 msgid "Focus the window next to the current focused window" msgstr "ფოკუსის გადატანა ამჟამად ფოკუსის მქონე ფანჯრიდან შემდეგ ფანჯარაზე" -#: dist/prefs.js:1372 +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "ფოკუსის გადართვა წინა ფანჯარაზე" -#: dist/prefs.js:1373 +#: dist/prefs.js:644 msgid "Focus the window prior to the current focused window" msgstr "ფოკუსის გადატანა ამჟამად ფოკუსის მქონე ფანჯრიდან წინა ფანჯარაზე" -#: dist/prefs.js:1379 +#: dist/prefs.js:650 msgid "Highlight focused window" msgstr "ფოკუსის მქონე ფანჯრის გამოკვეთა" -#: dist/prefs.js:1381 +#: dist/prefs.js:652 msgid "Minimize all the other windows and show only the focused window" msgstr "ყველა სხვა ფანჯრის ჩაკეცვა და, მხოლოდ, ფოკუსის მქონე ფანჯრის ჩვენება" -#: dist/prefs.js:1388 +#: dist/prefs.js:659 msgid "Cycle layouts" msgstr "გადართვა განლაგებების შორის" -#: dist/prefs.js:1389 +#: dist/prefs.js:660 msgid "Cycle through available workspace layouts" msgstr "წრიული გადართვა ხელმისაწვდომი სამუშაო სივრცის განლაგებების შორის" -#: dist/prefs.js:1415 +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "ნახეთ და მოირგეთ ყველა მალსახმობი" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "მალსახმობების ნახვა და მორცება" -#: dist/prefs.js:1466 +#: dist/prefs.js:737 msgid "Enable next/previous window focus to wrap around" msgstr "" -#: dist/prefs.js:1468 +#: dist/prefs.js:739 msgid "When focusing next or previous window, wrap around at the window edge" msgstr "" -#: dist/prefs.js:1474 +#: dist/prefs.js:745 msgid "Restrict directional focus to tiled windows" msgstr "" -#: dist/prefs.js:1476 +#: dist/prefs.js:747 msgid "When using directional focus navigation, only consider tiled windows" msgstr "" -#: dist/prefs.js:1481 +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "შემოტანა, გატანა და ჩამოყრა" -#: dist/prefs.js:1483 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "Tiling Shell-ის პარამეტრების შემოტანა, გატანა და ჩამოყრა" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "გატანის მორგება" -#: dist/prefs.js:1490 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "პარამეტრების გატანა ფაილში" -#: dist/prefs.js:1493 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "პარამეტრების გატანა ტექსტურ ფაილში" -#: dist/prefs.js:1500 +#: dist/prefs.js:771 msgid "Text file" msgstr "ტექსტური ფაილი" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "პარამეტრების შემოტანა" -#: dist/prefs.js:1545 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "პარამეტრების შემოტანა ფაილიდან" -#: dist/prefs.js:1548 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "აირჩიეთ შემოსატანი ტექსტური ფაილი" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "პარამეტრების ნაგულისხმებ მნიშვნელობაზე დაბრუნება" -#: dist/prefs.js:1592 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "ნაგულისხმევი პარამეტრების დაბრუნება" -#: dist/prefs.js:1607 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "შემოგვწირეთ ko-fi-ზე" -#: dist/prefs.js:1613 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "შეცდომის პატაკი" -#: dist/prefs.js:1619 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "ფუნქციის მოთხოვნა" -#: dist/prefs.js:1627 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "" "გაქვთ პრობლემები, გნებავთ, შემოგვთავაზოთ ახალი ფუნქცია, ან იყოთ მოხალისე?" -#: dist/prefs.js:1634 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "გახსენით ახალი ბილეთი პრობლემის შესახებ ბმულზე" -#: dist/prefs.js:1814 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +msgid "Follow quarters or screen halves" +msgstr "" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "აირჩიეთ სასურველი ფერი" -#: dist/prefs.js:1815 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "სისტემური აქცენტის ფერის გამოყენება" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "ახალი აქსელერატორი…" -#: dist/prefs.js:1892 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "გასასუფთავებლად გამოიყენეთ ღილაკი Backspace" -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "განლაგებების ჩასწორება" +#~ msgid "Edit Layouts" +#~ msgstr "განლაგებების ჩასწორება" -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "ახალი განლაგება" +#~ msgid "New Layout" +#~ msgstr "ახალი განლაგება" -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "ფილის გასაყოფად" +#~ msgid "to split a tile" +#~ msgstr "ფილის გასაყოფად" -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "ფილის ვერტიკალურად გასაყოფად" +#~ msgid "to split a tile vertically" +#~ msgstr "ფილის ვერტიკალურად გასაყოფად" -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "ფილის წასაშლელად" +#~ msgid "to delete a tile" +#~ msgstr "ფილის წასაშლელად" -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "გამოიყენეთ მაჩვენებლის ღილაკი შესანახად, ან გასაუქმებლად" +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "გამოიყენეთ მაჩვენებლის ღილაკი შესანახად, ან გასაუქმებლად" diff --git a/translations/nl.po b/translations/nl.po index 7840947f..c19d354a 100644 --- a/translations/nl.po +++ b/translations/nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiling Shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: 2025-04-22 22:05+0200\n" "Last-Translator: Mathias \n" "Language-Team: Dutch <>\n" @@ -11,168 +11,169 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: dist/prefs.js:793 +#: dist/prefs.js:59 msgid "General" msgstr "Algemeen" -#: dist/prefs.js:798 +#: dist/prefs.js:64 msgid "Appearance" msgstr "Uiterlijk" -#: dist/prefs.js:799 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "Configureer het uiterlijk van Tiling Shell" -#: dist/prefs.js:804 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "Toon indicator" -#: dist/prefs.js:805 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "Bepaal of de paneelindicator getoond wordt" -#: dist/prefs.js:810 +#: dist/prefs.js:76 msgid "Inner gaps" msgstr "Binnenmarges" -#: dist/prefs.js:811 +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "Afstanden tussen vensters" -#: dist/prefs.js:816 +#: dist/prefs.js:82 msgid "Outer gaps" msgstr "Buitenmarges" -#: dist/prefs.js:817 +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "Afstanden tussen een venster en de monitorranden" -#: dist/prefs.js:821 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "Vervagen (experimentele functie)" -#: dist/prefs.js:823 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "Vervagingseffect toepassen op de snap-assistent en tegelvoorbeelden" -#: dist/prefs.js:829 +#: dist/prefs.js:95 msgid "Snap Assistant threshold" msgstr "Snap-assistent drempel" -#: dist/prefs.js:831 +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "" "Minimale afstand tussen de snap-assistent en de cursor om deze te openen" -#: dist/prefs.js:840 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "Snap-assistent" -#: dist/prefs.js:841 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "Vervagingseffect toepassen op de snap-assistent" -#: dist/prefs.js:847 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "Voorbeeld van geselecteerde tegel" -#: dist/prefs.js:848 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "Vervagingseffect toepassen op het voorbeeld van de geselecteerde tegel" -#: dist/prefs.js:852 +#: dist/prefs.js:118 msgid "Window border" msgstr "Vensteromranding" -#: dist/prefs.js:853 dist/prefs.js:860 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "Toon een rand rond het actieve venster" -#: dist/prefs.js:859 +#: dist/prefs.js:125 msgid "Enable" msgstr "Inschakelen" -#: dist/prefs.js:866 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "Slimme randafronding" -#: dist/prefs.js:867 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +#, fuzzy +msgid "Dynamically adapt to the window's actual border radius" msgstr "Dynamisch aanpassen aan de werkelijke randafronding van het venster" -#: dist/prefs.js:873 +#: dist/prefs.js:139 msgid "Width" msgstr "Breedte" -#: dist/prefs.js:874 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "De dikte van de rand" -#: dist/prefs.js:883 +#: dist/prefs.js:149 msgid "Border color" msgstr "Randkleur" -#: dist/prefs.js:884 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "Kies de kleur van de rand" -#: dist/prefs.js:900 +#: dist/prefs.js:166 msgid "Animations" msgstr "Animaties" -#: dist/prefs.js:901 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "Aangepaste animaties" -#: dist/prefs.js:907 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "Animatietijd van de snap-assistent" -#: dist/prefs.js:908 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "De animatietijd van de snap-assistent in milliseconden" -#: dist/prefs.js:916 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "Animatietijd van tegels" -#: dist/prefs.js:917 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "De animatietijd van de tegels in milliseconden" -#: dist/prefs.js:923 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "Gedrag" -#: dist/prefs.js:924 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "Configureer het gedrag van Tiling Shell" -#: dist/prefs.js:929 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "Schakel snap-assistent in" -#: dist/prefs.js:930 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "" "Verplaats het venster naar de bovenkant van het scherm om de snap-assistent " "te activeren" -#: dist/prefs.js:935 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "Schakel het tegel-systeem in" -#: dist/prefs.js:936 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "" "Houd de activerings-toets ingedrukt tijdens het verplaatsen van een venster " "om het in de indeling te plaatsen" -#: dist/prefs.js:944 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "Toets voor het deactiveren van het tegel-systeem" -#: dist/prefs.js:946 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -180,53 +181,53 @@ msgstr "" "Houd de deactiverings-toets ingedrukt tijdens het verplaatsen van een " "venster om het tegel-systeem te deactiveren" -#: dist/prefs.js:954 +#: dist/prefs.js:220 msgid "Span multiple tiles" msgstr "Over meerdere tegels plaatsen" -#: dist/prefs.js:955 +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "" "Houd de activerings-toets ingedrukt om een venster over meerdere tegels te " "plaatsen" -#: dist/prefs.js:964 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "Schakel automatisch tegelen in" -#: dist/prefs.js:965 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "Plaats nieuwe vensters automatisch in de meest geschikte tegel" -#: dist/prefs.js:970 +#: dist/prefs.js:236 msgid "Enable auto-resize of the complementing tiled windows" msgstr "" "Schakel automatische aanpassing van de grootte van de omliggende tegels in" -#: dist/prefs.js:972 +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "Wanneer een tegelvenster wordt aangepast, pas de grootte van de aangrenzende " "tegelvensters automatisch aan" -#: dist/prefs.js:978 +#: dist/prefs.js:244 msgid "Restore window size" msgstr "Herstel venstergrootte" -#: dist/prefs.js:980 +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "" "Bepaal of vensters naar hun oorspronkelijke grootte worden hersteld wanneer " "ze uit de indeling worden gehaald" -#: dist/prefs.js:986 +#: dist/prefs.js:252 msgid "Add snap assistant and auto-tile buttons to window menu" msgstr "" "Voeg knoppen voor snap-assistent en automatisch tegelen toe aan het " "venstermenu" -#: dist/prefs.js:988 +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -234,433 +235,455 @@ msgstr "" "Voeg knoppen voor snap-assistent en automatisch tegelen toe aan het menu dat " "verschijnt wanneer je met de rechtermuisknop op een venstertitel klikt" -#: dist/prefs.js:994 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "" -#: dist/prefs.js:996 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "" -#: dist/prefs.js:1001 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "Schermranden" -#: dist/prefs.js:1003 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" "Versleep vensters tegen de boven-, linker- en rechterschermranden om hun " "grootte aan te passen" -#: dist/prefs.js:1017 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "Versleep tegen de bovenrand om het venster te maximaliseren" -#: dist/prefs.js:1018 +#: dist/prefs.js:284 msgid "Drag windows against the top edge to maximize them" msgstr "Versleep vensters tegen de bovenrand om ze te maximaliseren" -#: dist/prefs.js:1027 +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "Activeringsgebied voor kwart-tegeling" -#: dist/prefs.js:1028 +#: dist/prefs.js:294 #, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "Activeringsgebied om kwart-tegeling te activeren (%% van het scherm)" -#: dist/prefs.js:1044 +#: dist/prefs.js:310 msgid "Edge tiling offset" msgstr "" -#: dist/prefs.js:1045 +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" -#: dist/prefs.js:1062 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "Venstersuggesties" -#: dist/prefs.js:1063 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "Schakel venstersuggesties in of uit" -#: dist/prefs.js:1068 +#: dist/prefs.js:339 msgid "Enable window suggestions for the tiling system" msgstr "Schakel venstersuggesties voor het tegel-systeem in" -#: dist/prefs.js:1070 +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" "Biedt slimme suggesties om lege tegels te vullen bij gebruik van het tegel-" "systeem" -#: dist/prefs.js:1076 +#: dist/prefs.js:347 msgid "Enable window suggestions for the snap assistant" msgstr "Schakel venstersuggesties voor de snap-assistent in" -#: dist/prefs.js:1078 +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" "Biedt suggesties om lege tegels te vullen bij gebruik van de snap-assistent" -#: dist/prefs.js:1084 +#: dist/prefs.js:355 msgid "Enable window suggestions for screen edge snapping" msgstr "Schakel venstersuggesties voor het vastklikken aan de schermrand in" -#: dist/prefs.js:1086 +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" "Stelt vensters voor om lege tegels te vullen wanneer ze vastklikken aan de " "schermranden" -#: dist/prefs.js:1092 +#: dist/prefs.js:363 msgid "Layouts" msgstr "Indelingen" -#: dist/prefs.js:1093 +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "Configureer de indelingen van Tiling Shell" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "Bewerk indelingen" -#: dist/prefs.js:1099 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "Open de indelings-editor" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "Exporteer indelingen" -#: dist/prefs.js:1106 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "Exporteer indelingen naar een bestand" -#: dist/prefs.js:1112 dist/prefs.js:1496 +#: dist/prefs.js:383 dist/prefs.js:767 msgid "Save" msgstr "Opslaan" -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 msgid "Cancel" msgstr "Annuleren" -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "Importeer indelingen" -#: dist/prefs.js:1160 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "Importeer indelingen vanuit een bestand" -#: dist/prefs.js:1163 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "Selecteer indelingsbestand" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "Openen" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "Herstel standaardindelingen" -#: dist/prefs.js:1216 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "Herstel de standaardindelingen" -#: dist/prefs.js:1229 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "Sneltoetsen" -#: dist/prefs.js:1231 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "Gebruik sneltoetsen om acties op het actieve venster uit te voeren" -#: dist/prefs.js:1249 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "Verplaats venster naar de rechter tegel" -#: dist/prefs.js:1251 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "Verplaats het actieve venster naar de tegel rechts ervan" -#: dist/prefs.js:1260 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "Verplaats venster naar de linker tegel" -#: dist/prefs.js:1261 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "Verplaats het actieve venster naar de tegel links ervan" -#: dist/prefs.js:1267 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "Verplaats venster naar de tegel erboven" -#: dist/prefs.js:1268 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "Verplaats het actieve venster naar de tegel erboven" -#: dist/prefs.js:1274 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "Verplaats venster naar de tegel eronder" -#: dist/prefs.js:1275 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "Verplaats het actieve venster naar de tegel eronder" -#: dist/prefs.js:1281 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "Breid venster uit naar de rechter tegel" -#: dist/prefs.js:1282 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "Breid het actieve venster uit naar de tegel rechts ervan" -#: dist/prefs.js:1288 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "Breid venster uit naar de linker tegel" -#: dist/prefs.js:1289 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "Breid het actieve venster uit naar de tegel links ervan" -#: dist/prefs.js:1295 +#: dist/prefs.js:566 msgid "Span window above" msgstr "Breid venster uit naar de tegel erboven" -#: dist/prefs.js:1296 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "Breid het actieve venster uit naar de tegel erboven" -#: dist/prefs.js:1302 +#: dist/prefs.js:573 msgid "Span window down" msgstr "Breid venster uit naar de tegel eronder" -#: dist/prefs.js:1303 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "Breid het actieve venster uit naar de tegel eronder" -#: dist/prefs.js:1309 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "Breid venster uit over alle tegels" -#: dist/prefs.js:1310 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "Breid het actieve venster uit over alle tegels" -#: dist/prefs.js:1316 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "Haal het actieve venster uit de tegelindeling" -#: dist/prefs.js:1324 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "Verplaats venster naar het midden" -#: dist/prefs.js:1326 +#: dist/prefs.js:597 msgid "Move the focused window to the center of the screen" msgstr "Verplaats het actieve venster naar het midden van het scherm" -#: dist/prefs.js:1335 +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "Zet de focus op het venster rechts" -#: dist/prefs.js:1337 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "Zet de focus op het venster rechts van het huidige actieve venster" -#: dist/prefs.js:1344 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "Zet de focus op het venster links" -#: dist/prefs.js:1345 +#: dist/prefs.js:616 msgid "Focus the window to the left of the current focused window" msgstr "Zet de focus op het venster links van het huidige actieve venster" -#: dist/prefs.js:1351 +#: dist/prefs.js:622 msgid "Focus window above" msgstr "Zet de focus op het venster erboven" -#: dist/prefs.js:1352 +#: dist/prefs.js:623 msgid "Focus the window above the current focused window" msgstr "Zet de focus op het venster boven het huidige actieve venster" -#: dist/prefs.js:1358 +#: dist/prefs.js:629 msgid "Focus window below" msgstr "Zet de focus op het venster eronder" -#: dist/prefs.js:1359 +#: dist/prefs.js:630 msgid "Focus the window below the current focused window" msgstr "Zet de focus op het venster onder het huidige actieve venster" -#: dist/prefs.js:1365 +#: dist/prefs.js:636 msgid "Focus next window" msgstr "Zet de focus op het volgende venster" -#: dist/prefs.js:1366 +#: dist/prefs.js:637 msgid "Focus the window next to the current focused window" msgstr "Zet de focus op het venster naast het huidige actieve venster" -#: dist/prefs.js:1372 +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "Zet de focus op het vorige venster" -#: dist/prefs.js:1373 +#: dist/prefs.js:644 msgid "Focus the window prior to the current focused window" msgstr "Zet de focus op het venster vóór het huidige actieve venster" -#: dist/prefs.js:1379 +#: dist/prefs.js:650 msgid "Highlight focused window" msgstr "Markeer het actieve venster" -#: dist/prefs.js:1381 +#: dist/prefs.js:652 msgid "Minimize all the other windows and show only the focused window" msgstr "Minimaliseer alle andere vensters en toon alleen het actieve venster" -#: dist/prefs.js:1388 +#: dist/prefs.js:659 #, fuzzy msgid "Cycle layouts" msgstr "Herstel standaardindelingen" -#: dist/prefs.js:1389 +#: dist/prefs.js:660 msgid "Cycle through available workspace layouts" msgstr "" -#: dist/prefs.js:1415 +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "Bekijk en pas alle sneltoetsen aan" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "Bekijk en pas sneltoetsen aan" -#: dist/prefs.js:1466 +#: dist/prefs.js:737 msgid "Enable next/previous window focus to wrap around" msgstr "" "Schakel doorlopen van de focus in zodat deze bij het bereiken van de rand " "omgaat" -#: dist/prefs.js:1468 +#: dist/prefs.js:739 msgid "When focusing next or previous window, wrap around at the window edge" msgstr "" "Wanneer je op het volgende of vorige venster focust, gaat de focus bij de " "vensterrand door" -#: dist/prefs.js:1474 +#: dist/prefs.js:745 msgid "Restrict directional focus to tiled windows" msgstr "" -#: dist/prefs.js:1476 +#: dist/prefs.js:747 msgid "When using directional focus navigation, only consider tiled windows" msgstr "" -#: dist/prefs.js:1481 +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "Importeer, exporteer en reset" -#: dist/prefs.js:1483 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "Importeer, exporteer en herstel de instellingen van Tiling Shell" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "Exporteer instellingen" -#: dist/prefs.js:1490 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "Exporteer instellingen naar een bestand" -#: dist/prefs.js:1493 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "Exporteer instellingen naar een tekstbestand" -#: dist/prefs.js:1500 +#: dist/prefs.js:771 msgid "Text file" msgstr "Tekstbestand" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "Importeer instellingen" -#: dist/prefs.js:1545 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "Importeer instellingen vanuit een bestand" -#: dist/prefs.js:1548 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "Selecteer een tekstbestand om uit te importeren" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "Herstel instellingen" -#: dist/prefs.js:1592 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "Herstel de standaardinstellingen" -#: dist/prefs.js:1607 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "Doneer via ko-fi" -#: dist/prefs.js:1613 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "Meld een bug" -#: dist/prefs.js:1619 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "Vraag een functie aan" -#: dist/prefs.js:1627 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "" "Heb je problemen of wil je een nieuwe functie voorstellen of bijdragen?" -#: dist/prefs.js:1634 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "Open een nieuw probleem op" -#: dist/prefs.js:1814 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +msgid "Follow quarters or screen halves" +msgstr "" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "" -#: dist/prefs.js:1815 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "Nieuwe sneltoets…" -#: dist/prefs.js:1892 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "Gebruik Backspace om te wissen" -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "Bewerk indelingen" +#~ msgid "Edit Layouts" +#~ msgstr "Bewerk indelingen" -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "Nieuwe indeling" +#~ msgid "New Layout" +#~ msgstr "Nieuwe indeling" -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "om een tegel te splitsen" +#~ msgid "to split a tile" +#~ msgstr "om een tegel te splitsen" -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "om een tegel verticaal te splitsen" +#~ msgid "to split a tile vertically" +#~ msgstr "om een tegel verticaal te splitsen" -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "om een tegel te verwijderen" +#~ msgid "to delete a tile" +#~ msgstr "om een tegel te verwijderen" -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "gebruik de indicator-knop om op te slaan of te annuleren" +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "gebruik de indicator-knop om op te slaan of te annuleren" diff --git a/translations/pl.po b/translations/pl.po index 6fa6ef3c..ec975ceb 100644 --- a/translations/pl.po +++ b/translations/pl.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiling Shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-13 19:40+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: 2025-11-13 19:42+0100\n" "Last-Translator: Adam Lewicki \n" "Language-Team: Polish\n" @@ -17,673 +17,166 @@ msgstr "" "|| n%100>=20) ? 1 : 2);\n" "X-Generator: Poedit 3.8\n" -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:7 -msgid "Last version installed" -msgstr "Zainstalowano najnowszą wersję" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:8 -msgid "Last version installed of this extension." -msgstr "Ostatnia wersja tego rozszerzenia." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:12 -msgid "Enable tiling system" -msgstr "Włącz system układania okien" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:13 -msgid "Hold CTRL while moving a window to tile it." -msgstr "Przytrzymaj klawisz CTRL podczas przesuwania okna, aby je ułożyć." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:17 -msgid "Tiling system activation key" -msgstr "Klawisz aktywacji systemu układania okien" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:18 -msgid "Which key to hold while moving a window to activate the tiling system." -msgstr "" -"Klawisz do przytrzymania podczas przesuwania okna, aby włączyć system " -"układania okien." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:22 -msgid "Tiling system deactivation key" -msgstr "Klawisz deaktywacji systemu układania okien" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:23 -msgid "" -"Which key to hold while moving a window to deactivate the tiling system." -msgstr "" -"Klawisz do przytrzymania podczas przesuwania okna, aby wyłączyć system " -"układania okien." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:27 -msgid "Enable snap assist" -msgstr "Włącz Asystenta przyciągania" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:28 -msgid "Move the window on top of the screen to snap assist it." -msgstr "" -"Przesuń okno na górną krawędź ekranu, aby wywołać Asystenta przyciągania." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:32 -msgid "Shows indicator" -msgstr "Pokaż wskaźnik" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:33 -msgid "Shows an indicator on top panel." -msgstr "Wyświetla wskaźnik na górnym panelu." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:37 -#: src/prefs.ts:89 -msgid "Inner gaps" -msgstr "Wewnętrzna przerwa" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:38 -msgid "Internal gaps between tiles in a layout." -msgstr "Wewnętrzna przerwa między kafelkami w układzie." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:42 -#: src/prefs.ts:96 -msgid "Outer gaps" -msgstr "Zewnętrzne przerwy" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:43 -msgid "External gaps between the layout and the monitor borders." -msgstr "Zewnętrzne przerwy między układem a granicami monitora." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:47 -#: src/prefs.ts:247 -msgid "Span multiple tiles" -msgstr "Rozciągnij na wiele kafelków" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:48 -msgid "Hold ALT to span multiple tiles." -msgstr "Przytrzymaj klawisz ALT, aby rozciągnąć na wiele kafelków." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:52 -msgid "Key to span multiple tiles" -msgstr "Klawisz do rozciągania na wiele kafelków" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:53 -msgid "Which key to hold to span multiple tiles." -msgstr "Klawisz do przytrzymania, aby rozciągnąć na wiele kafelków." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:57 -#: src/prefs.ts:405 -msgid "Layouts" -msgstr "Układy" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:58 -msgid "The layouts available to the tiling managers and the snap assist." -msgstr "Układy dostępne dla menedżerów układania i Asystenta przyciągania." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:62 -msgid "Selected layouts" -msgstr "Wybrane układy" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:63 -msgid "Each monitor's active layout used by the monitor tiling manager." -msgstr "" -"Aktywny układ każdego monitora używany przez menedżera układania monitora." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:67 -#: src/prefs.ts:275 -msgid "Restore window size" -msgstr "Przywróć rozmiar okna" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:68 -msgid "Restore the windows to their original size when untiled." -msgstr "Przywracaj okna do ich oryginalnego rozmiaru po usunięciu z układu." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:72 -#: src/prefs.ts:801 -msgid "Enable next/previous window focus to wrap around" -msgstr "Włącz zawijanie aktywnego okna do następnego/poprzedniego" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:73 -#: src/prefs.ts:803 -msgid "When focusing next or previous window, wrap around at the window edge" -msgstr "" -"Podczas przełączania na następne lub poprzednie aktywne okno, zawijaj po " -"osiągnięciu krawędzi okien" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:77 -#: src/prefs.ts:810 -msgid "Restrict directional focus to tiled windows" -msgstr "Ogranicz aktywację kierunkową do ułożonych okien" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:78 -#: src/prefs.ts:812 -msgid "When using directional focus navigation, only consider tiled windows" -msgstr "" -"Podczas przełączania na następne lub poprzednie aktywne okno, zawijaj po " -"osiągnięciu krawędzi okien" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:82 -#: src/prefs.ts:266 -msgid "Enable auto-resize of the complementing tiled windows" -msgstr "Włącz automatyczną zmianę rozmiaru sąsiednich ułożonych okien" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:83 -msgid "" -"When a tiled window is resized, auto-resize the other tiled windows near it." -msgstr "" -"Gdy rozmiar ułożonego okna jest zmieniany, automatycznie zmień rozmiar " -"sąsiednich ułożonych okien." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:87 -msgid "Enable Snap Assistant blur" -msgstr "Włącz rozmycie asystenta przyciągania" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:88 -msgid "Blur snap assistant" -msgstr "Rozmycie Asystenta przyciągania" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:92 -msgid "Enable selected tile preview blur" -msgstr "Włącz rozmycie podglądu wybranego kafelka" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:93 -msgid "Blur selected tile previews" -msgstr "Rozmyj podglądy wybranych kafelków" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:97 -msgid "Enable keybindings" -msgstr "Włącz skróty klawiszowe" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:98 -msgid "Move focused window through tiles by using keybindings." -msgstr "Przenieś aktywne okno przez kafelki, używając skrótów klawiszowych." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:102 -msgid "Enable auto tiling" -msgstr "Włącz automatyczne układanie" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:103 -msgid "" -"Automatically tile a new window to the best tile according to the current " -"layout." -msgstr "" -"Automatycznie układaj nowe okno do najlepszego kafelka zgodnie z bieżącym " -"układem." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:107 -msgid "Overridden settings" -msgstr "Nadpisane ustawienia" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:108 -msgid "The settings that are overridden and their old value." -msgstr "Ustawienia, które są nadpisane, oraz ich stara wartość." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:112 -msgid "Active Screen Edges" -msgstr "Aktywne krawędzie ekranu" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:113 -msgid "" -"Drag windows against the top, left and right screen edges to resize them." -msgstr "" -"Przeciągnij okna do górnej, lewej lub prawej krawędzi ekranu, aby zmienić " -"ich rozmiar." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:117 -msgid "Drag agains top edge to maximize window" -msgstr "Przeciągnij do górnej krawędzi, aby zmaksymalizować okno" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:118 -#: src/prefs.ts:320 -msgid "Drag windows against the top edge to maximize them" -msgstr "Przeciągnij okna do górnej krawędzi, aby je zmaksymalizować" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:122 -#: src/prefs.ts:284 -msgid "Add snap assistant and auto-tile buttons to window menu" -msgstr "" -"Dodaj przyciski Asystenta przyciągania i automatycznego układania do menu " -"okna" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:123 -msgid "" -"Add snap assistant and auto-tile buttons in the menu that shows up when you " -"right click on a window title." -msgstr "" -"Dodaj przyciski Asystenta przyciągania i automatycznego układania do menu " -"wyświetlanego po kliknięciu prawym przyciskiem myszy na pasku tytułu okna." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:127 -msgid "Add tiled windows group to alt+tab menu" -msgstr "Dodaj grupę ułożonych okien do menu ALT+TAB" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:128 -msgid "" -"Add the tiled windows to the alt+tab menu to open all the tiled windows at " -"once" -msgstr "" -"Dodaj ułożone okna do menu ALT+TAB, aby otworzyć wszystkie ułożone okna " -"jednocześnie" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:132 -#: src/prefs.ts:111 -msgid "Snap Assistant threshold" -msgstr "Progi Asystenta przyciągania" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:133 -msgid "Snap Assistant's threshold to enlarge, shrink, open and close it." -msgstr "" -"Progi Asystenta przyciągania do powiększania, pomniejszania, otwierania i " -"zamykania." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:137 -msgid "Quarter tiling threshold" -msgstr "Próg aktywacji ćwiartkowego układania" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:138 -msgid "Threshold to trigger quarter tiling." -msgstr "Próg aktywacji ćwiartkowego układania." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:142 -#: src/prefs.ts:348 -msgid "Edge tiling offset" -msgstr "Przesunięcie krawędzi układania" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:143 -msgid "Offset to trigger edge tiling (left and right edge)." -msgstr "" -"Przesunięcie do aktywacji układania krawędziowego (lewa i prawa krawędź)." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:147 -msgid "Enable window border" -msgstr "Włącz obramowanie okna" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:148 -msgid "Show a border around focused window." -msgstr "Pokaż obramowanie wokół aktywnego okna." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:152 -msgid "Focused window border color" -msgstr "Kolor obramowania aktywnego okna" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:153 -msgid "The color of the focused window's border." -msgstr "Kolor obramowania aktywnego okna." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:157 -msgid "Use custom color" -msgstr "Użyj własnego koloru" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:158 -msgid "Use the color defined here for the focused window's border." -msgstr "Użyj zdefiniowanego tutaj koloru dla obramowania aktywnego okna." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:162 -msgid "Focused window border width" -msgstr "Szerokość obramowania aktywnego okna" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:163 -msgid "The width of the focused window's border." -msgstr "Szerokość obramowania aktywnego okna." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:167 -msgid "Enable smart window border radius" -msgstr "Włącz inteligentny promień obramowania okna" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:168 -msgid "Dinamically adapt to the window's border radius." -msgstr "Dynamicznie dopasowuj do rzeczywistego promienia obramowania okna." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:172 -msgid "Snap assistant animation time (milliseconds)" -msgstr "Czas trwania animacji Asystenta przyciągania (w milisekundach)" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:173 -msgid "Animation time in milliseconds of the snap assistant" -msgstr "Czas trwania animacji Asystenta przyciągania w milisekundach" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:177 -msgid "Tile animation time (milliseconds)" -msgstr "Czas trwania animacji kafelka (w milisekundach)" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:178 -msgid "Animation time in milliseconds of the tiles" -msgstr "Czas trwania animacji kafelków w milisekundach" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:182 -#: src/prefs.ts:376 -msgid "Enable window suggestions for the tiling system" -msgstr "Włącz podpowiedzi okien dla systemu układania" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:183 -msgid "" -"Provides smart suggestions to fill empty tiles when using the tiling system." -msgstr "" -"Wyświetlaj inteligentne podpowiedzi wypełniania pustych kafelków podczas " -"korzystania z systemu układania." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:187 -#: src/prefs.ts:385 -msgid "Enable window suggestions for the snap assistant" -msgstr "Włącz podpowiedzi okien dla Asystenta przyciągania" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:188 -msgid "" -"Offers suggestions to populate empty tiles when using the snap assistant." -msgstr "" -"Wyświetlaj podpowiedzi wypełniania pustych kafelków podczas korzystania z " -"Asystenta przyciągania." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:192 -#: src/prefs.ts:394 -msgid "Enable window suggestions for screen edge snapping" -msgstr "Włącz podpowiedzi okien dla przyciągania do krawędzi ekranu" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:193 -msgid "Suggests windows to occupy empty tiles when snapping to screen edges." -msgstr "" -"Sugeruj okna do zajęcia pustych kafelków podczas przyciągania do krawędzi " -"ekranu." - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:199 -msgid "Move focused window to the tile to its right" -msgstr "Przenieś aktywne okno do kafelka po prawej" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:203 -msgid "Move focused window to the tile to its left" -msgstr "Przenieś aktywne okno do kafelka po lewej" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:207 -msgid "Move focused window to the tile above" -msgstr "Przenieś aktywne okno do kafelka powyżej" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:211 -msgid "Move focused window to the tile below" -msgstr "Przenieś aktywne okno do kafelka poniżej" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:215 -msgid "Span focused window to the tile to its right" -msgstr "Rozciągnij aktywne okno na kafelek po prawej" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:219 -msgid "Span focused window to the tile to its left" -msgstr "Rozciągnij aktywne okno na kafelek po lewej" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:223 -msgid "Span focused window to the tile above" -msgstr "Rozciągnij aktywne okno na kafelek powyżej" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:227 -msgid "Span focused window to the tile below" -msgstr "Rozciągnij aktywne okno na kafelek poniżej" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:231 -msgid "Resize the focused window to span all tiles" -msgstr "Rozciągnij aktywne okno na wszystkie kafelki" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:235 -msgid "Untile the focused window" -msgstr "Usuń aktywne okno z układu" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:239 -#: src/prefs.ts:653 -msgid "Move the focused window to the center of the screen" -msgstr "Przenieś aktywne okno na środek ekranu" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:243 -msgid "Focus the window to the right the current focused window" -msgstr "Aktywuj okno po prawej od bieżącego aktywnego okna" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:247 -#: src/prefs.ts:669 -msgid "Focus the window to the left of the current focused window" -msgstr "Aktywuj okno po lewej stronie od aktualnie aktywnego okna" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:251 -#: src/prefs.ts:676 -msgid "Focus the window above the current focused window" -msgstr "Aktywuj okno powyżej aktualnie aktywnego okna" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:255 -#: src/prefs.ts:683 -msgid "Focus the window below the current focused window" -msgstr "Aktywuj okno poniżej aktualnie aktywnego okna" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:259 -#: src/prefs.ts:690 -msgid "Focus the window next to the current focused window" -msgstr "Aktywuj następne okno obok aktualnie aktywnego" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:263 -#: src/prefs.ts:697 -msgid "Focus the window prior to the current focused window" -msgstr "Aktywuj poprzednie okno obok aktualnie aktywnego" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:267 -#: src/prefs.ts:705 -msgid "Minimize all the other windows and show only the focused window" -msgstr "Zminimalizuj wszystkie inne okna i pokaż tylko aktywne okno" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:271 -#: src/prefs.ts:713 -msgid "Cycle through available workspace layouts" -msgstr "Przełączaj dostępne układy obszaru roboczego" - -#: src/components/altTab/MultipleWindowsIcon.ts:59 -msgid "Tiled windows" -msgstr "Ułożone okna" - -#: src/components/editor/editorDialog.ts:47 -msgid "Select the layout to edit" -msgstr "Wybierz układ do edycji" - -#: src/components/editor/editorDialog.ts:71 -msgid "Close" -msgstr "Zamknij" - -#: src/components/editor/editorDialog.ts:100 -msgid "to split a tile" -msgstr "aby podzielić kafelek" - -#: src/components/editor/editorDialog.ts:141 -msgid "to split a tile vertically" -msgstr "aby podzielić kafelek pionowo" - -#: src/components/editor/editorDialog.ts:163 -msgid "to delete a tile" -msgstr "aby usunąć kafelek" - -#: src/components/editor/editorDialog.ts:189 -msgid "use the indicator button to save or cancel" -msgstr "użyj przycisku wskaźnika, aby zapisać lub anulować" - -#: src/components/editor/editorDialog.ts:209 -msgid "How to use the editor" -msgstr "Jak używać edytora" - -#: src/components/editor/editorDialog.ts:219 -msgid "Start editing" -msgstr "Rozpocznij edycje" - -#: src/components/window_menu/overriddenWindowMenu.ts:167 -msgid "Move to best tile" -msgstr "Przesuń do najlepszej strefy" - -#: src/components/window_menu/overriddenWindowMenu.ts:189 -msgid "Move to leftmost tile" -msgstr "Przesuń do strefy najbardziej po lewej" - -#: src/components/window_menu/overriddenWindowMenu.ts:212 -msgid "Move to rightmost tile" -msgstr "Przesuń do strefy najbardziej po prawej" - -#: src/indicator/defaultMenu.ts:312 -msgid "Edit Layouts" -msgstr "Edytuj układy" - -#: src/indicator/defaultMenu.ts:321 -msgid "New Layout" -msgstr "Nowy układ" - -#: src/indicator/editingMenu.ts:24 -msgid "Menu" -msgstr "Menu" - -#: src/indicator/editingMenu.ts:32 -msgid "Info" -msgstr "Info" - -#: src/indicator/editingMenu.ts:40 src/prefs.ts:427 src/prefs.ts:835 -msgid "Save" -msgstr "Zapisz" - -#: src/indicator/editingMenu.ts:51 src/prefs.ts:428 src/prefs.ts:485 -#: src/prefs.ts:836 src/prefs.ts:895 -msgid "Cancel" -msgstr "Anuluj" - -#: src/prefs.ts:68 +#: dist/prefs.js:59 msgid "General" msgstr "Ogólne" -#: src/prefs.ts:75 +#: dist/prefs.js:64 msgid "Appearance" msgstr "Wygląd" -#: src/prefs.ts:76 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "Skonfiguruj wygląd Układania okien" -#: src/prefs.ts:82 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "Pokaż wskaźnik" -#: src/prefs.ts:83 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "Pokazywanie ikony wskaźnika na panelu" -#: src/prefs.ts:90 +#: dist/prefs.js:76 +msgid "Inner gaps" +msgstr "Wewnętrzna przerwa" + +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "Przerwy między oknami" -#: src/prefs.ts:97 +#: dist/prefs.js:82 +msgid "Outer gaps" +msgstr "Zewnętrzne przerwy" + +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "Przerwy pomiędzy oknami i granicami monitora" -#: src/prefs.ts:102 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "Rozmycie (funkcja eksperymentalna)" -#: src/prefs.ts:104 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "Zastosuj efekt rozmycia do Asystenta przyciągania i podglądów kafelków" -#: src/prefs.ts:113 +#: dist/prefs.js:95 +msgid "Snap Assistant threshold" +msgstr "Progi Asystenta przyciągania" + +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "" "Minimalna odległość otwarcia względem wskaźnika od Asystenta przyciągania" -#: src/prefs.ts:123 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "Asystent przyciągania" -#: src/prefs.ts:124 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "Zastosuj efekt rozmycia do Asystenta przyciągania" -#: src/prefs.ts:130 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "Podgląd wybra kafelka" -#: src/prefs.ts:131 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "Zastosuj efekt rozmycia do zaznaczonej strefy" -#: src/prefs.ts:136 +#: dist/prefs.js:118 msgid "Window border" msgstr "Obramowanie okna" -#: src/prefs.ts:137 src/prefs.ts:144 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "Pokaż obramowanie wokół aktywnego okna" -#: src/prefs.ts:143 +#: dist/prefs.js:125 msgid "Enable" msgstr "Włącz" -#: src/prefs.ts:150 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "Inteligentny promień obramowania" -#: src/prefs.ts:151 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +#, fuzzy +msgid "Dynamically adapt to the window's actual border radius" msgstr "Dynamicznie dopasowuj do rzeczywistego promienia obramowania okna" -#: src/prefs.ts:157 +#: dist/prefs.js:139 msgid "Width" msgstr "Szerokość" -#: src/prefs.ts:158 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "Rozmiar obramowania" -#: src/prefs.ts:167 +#: dist/prefs.js:149 msgid "Border color" msgstr "Kolor obramowania" -#: src/prefs.ts:168 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "Wybiera kolor obramowania" -#: src/prefs.ts:185 +#: dist/prefs.js:166 msgid "Animations" msgstr "Animacje" -#: src/prefs.ts:186 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "Dostosuj animacje" -#: src/prefs.ts:192 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "Czas trwania animacji Asystenta przyciągania" -#: src/prefs.ts:193 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "Czas trwania animacji Asystenta przyciągania w milisekundach" -#: src/prefs.ts:201 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "Czas animacji" -#: src/prefs.ts:202 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "Czas trwania animacji kafelków w milisekundach" -#: src/prefs.ts:210 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "Zachowanie" -#: src/prefs.ts:211 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "Skonfiguruj zachowanie Układania okien" -#: src/prefs.ts:217 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "Włącz Asystenta przyciągania" -#: src/prefs.ts:218 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "" "Przesuń okno na górną krawędź ekranu, aby wywołać Asystenta przyciągania" -#: src/prefs.ts:224 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "Włącz system układania okien" -#: src/prefs.ts:225 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "Przytrzymaj klawisz aktywacji podczas przesuwania okna, aby je ułożyć" -#: src/prefs.ts:235 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "Klawisz deaktywacji systemu układania okien" -#: src/prefs.ts:237 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -691,30 +184,48 @@ msgstr "" "Przytrzymaj klawisz deaktywacji podczas przesuwania okna, aby wyłączyć " "system układania okien" -#: src/prefs.ts:248 +#: dist/prefs.js:220 +msgid "Span multiple tiles" +msgstr "Rozciągnij na wiele kafelków" + +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "Przytrzymaj klawisz aktywacji, aby rozciągnąć na wiele kafelków" -#: src/prefs.ts:259 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "Włącz automatyczne układanie" -#: src/prefs.ts:260 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "Automatycznie układaj nowe okna do najlepszego kafelka" -#: src/prefs.ts:268 +#: dist/prefs.js:236 +msgid "Enable auto-resize of the complementing tiled windows" +msgstr "Włącz automatyczną zmianę rozmiaru sąsiednich ułożonych okien" + +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "Gdy rozmiar ułożonego okna jest zmieniany, automatycznie zmień rozmiar " "sąsiednich ułożonych okien" -#: src/prefs.ts:277 +#: dist/prefs.js:244 +msgid "Restore window size" +msgstr "Przywróć rozmiar okna" + +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "Przywracaj okna do ich oryginalnego rozmiaru po usunięciu z układu" -#: src/prefs.ts:286 +#: dist/prefs.js:252 +msgid "Add snap assistant and auto-tile buttons to window menu" +msgstr "" +"Dodaj przyciski Asystenta przyciągania i automatycznego układania do menu " +"okna" + +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -722,327 +233,735 @@ msgstr "" "Dodaj przyciski Asystenta przyciągania i automatycznego układania do menu " "wyświetlanego po kliknięciu prawym przyciskiem myszy na pasku tytułu okna" -#: src/prefs.ts:293 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "Dodaj ułożone okna do menu ALT+TAB" -#: src/prefs.ts:295 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "" "Dodaj ułożone okna do menu ALT+TAB, aby otworzyć je wszystkie jednocześnie" -#: src/prefs.ts:302 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "Krawędzie ekranu" -#: src/prefs.ts:304 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" "Przeciągnij okna do górnej, lewej lub prawej krawędzi ekranu, aby zmienić " "ich rozmiar" -#: src/prefs.ts:319 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "Przeciągnij do górnej krawędzi, aby zmaksymalizować okno" -#: src/prefs.ts:330 +#: dist/prefs.js:284 +msgid "Drag windows against the top edge to maximize them" +msgstr "Przeciągnij okna do górnej krawędzi, aby je zmaksymalizować" + +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "Obszar aktywacji ćwiartkowego układania" -#: src/prefs.ts:331 +#: dist/prefs.js:294 #, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "Obszar aktywacji ćwiartkowego układania (%% ekranu)" -#: src/prefs.ts:349 +#: dist/prefs.js:310 +msgid "Edge tiling offset" +msgstr "Przesunięcie krawędzi układania" + +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" "Odległość od krawędzi ekranu do aktywacji układania krawędziowego (w " "pikselach)" -#: src/prefs.ts:369 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "Sugestie okien" -#: src/prefs.ts:370 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "Włącz i wyłącz sugestie okien" -#: src/prefs.ts:378 +#: dist/prefs.js:339 +msgid "Enable window suggestions for the tiling system" +msgstr "Włącz podpowiedzi okien dla systemu układania" + +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" "Wyświetlaj inteligentne podpowiedzi wypełniania pustych kafelków podczas " "korzystania z systemu układania" -#: src/prefs.ts:387 +#: dist/prefs.js:347 +msgid "Enable window suggestions for the snap assistant" +msgstr "Włącz podpowiedzi okien dla Asystenta przyciągania" + +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" "Wyświetlaj podpowiedzi wypełniania pustych kafelków podczas korzystania z " "Asystenta przyciągania" -#: src/prefs.ts:396 +#: dist/prefs.js:355 +msgid "Enable window suggestions for screen edge snapping" +msgstr "Włącz podpowiedzi okien dla przyciągania do krawędzi ekranu" + +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" "Sugeruj okna do zajęcia pustych kafelków podczas przyciągania do krawędzi " "ekranu" -#: src/prefs.ts:406 +#: dist/prefs.js:363 +msgid "Layouts" +msgstr "Układy" + +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "Skonfiguruj układy Układania okien" -#: src/prefs.ts:411 src/prefs.ts:412 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "Edytuj układy" -#: src/prefs.ts:413 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "Otwórz edytor układów" -#: src/prefs.ts:419 src/prefs.ts:420 src/prefs.ts:424 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "Eksportuj układy" -#: src/prefs.ts:421 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "Eksportuj układy do pliku" -#: src/prefs.ts:476 src/prefs.ts:477 +#: dist/prefs.js:383 dist/prefs.js:767 +msgid "Save" +msgstr "Zapisz" + +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 +msgid "Cancel" +msgstr "Anuluj" + +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "Importuj układy" -#: src/prefs.ts:478 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "Importuj układy z pliku" -#: src/prefs.ts:481 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "Wybierz plik układów" -#: src/prefs.ts:484 src/prefs.ts:894 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "Otwórz" -#: src/prefs.ts:538 src/prefs.ts:539 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "Resetuj układy" -#: src/prefs.ts:540 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "Przywróć domyślne układy" -#: src/prefs.ts:556 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "Skróty klawiszowe" -#: src/prefs.ts:558 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "Używaj skrótów klawiszowych do wykonywania akcji na aktywnym oknie" -#: src/prefs.ts:582 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "Przenieś okno do prawego kafelka" -#: src/prefs.ts:583 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "Przenieś aktywne okno do kafelka po prawej" -#: src/prefs.ts:589 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "Przenieś okno do lewego kafelka" -#: src/prefs.ts:590 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "Przenieś aktywne okno do kafelka po lewej" -#: src/prefs.ts:596 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "Przenieś okno do kafelka powyżej" -#: src/prefs.ts:597 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "Przenieś aktywne okno do kafelka powyżej" -#: src/prefs.ts:603 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "Przenieś okno do kafelka poniżej" -#: src/prefs.ts:604 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "Przenieś aktywne okno do kafelka poniżej" -#: src/prefs.ts:610 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "Rozciągnij okno na prawy kafelek" -#: src/prefs.ts:611 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "Rozciągnij aktywne okno na kafelek po prawej" -#: src/prefs.ts:617 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "Rozciągnij okno na lewy kafelek" -#: src/prefs.ts:618 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "Rozciągnij aktywne okno na kafelek po lewej" -#: src/prefs.ts:624 +#: dist/prefs.js:566 msgid "Span window above" msgstr "Rozciągnij okno na kafelek powyżej" -#: src/prefs.ts:625 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "Rozciągnij aktywne okno na kafelek powyżej" -#: src/prefs.ts:631 +#: dist/prefs.js:573 msgid "Span window down" msgstr "Rozciągnij okno na kafelek poniżej" -#: src/prefs.ts:632 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "Rozciągnij aktywne okno na kafelek poniżej" -#: src/prefs.ts:638 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "Rozciągnij okno na wszystkie kafelki" -#: src/prefs.ts:639 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "Rozciągnij aktywne okno na wszystkie kafelki" -#: src/prefs.ts:645 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "Usuń aktywne okno z układu" -#: src/prefs.ts:652 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "Przenieś okno na środek" -#: src/prefs.ts:659 +#: dist/prefs.js:597 +msgid "Move the focused window to the center of the screen" +msgstr "Przenieś aktywne okno na środek ekranu" + +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "Aktywuj okno po prawej" -#: src/prefs.ts:661 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "Aktywuj okno po prawej stronie od aktualnie aktywnego okna" -#: src/prefs.ts:668 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "Aktywuj okno po lewej" -#: src/prefs.ts:675 +#: dist/prefs.js:616 +msgid "Focus the window to the left of the current focused window" +msgstr "Aktywuj okno po lewej stronie od aktualnie aktywnego okna" + +#: dist/prefs.js:622 msgid "Focus window above" msgstr "Aktywuj okno powyżej" -#: src/prefs.ts:682 +#: dist/prefs.js:623 +msgid "Focus the window above the current focused window" +msgstr "Aktywuj okno powyżej aktualnie aktywnego okna" + +#: dist/prefs.js:629 msgid "Focus window below" msgstr "Aktywuj okno poniżej" -#: src/prefs.ts:689 +#: dist/prefs.js:630 +msgid "Focus the window below the current focused window" +msgstr "Aktywuj okno poniżej aktualnie aktywnego okna" + +#: dist/prefs.js:636 msgid "Focus next window" msgstr "Aktywuj następne okno" -#: src/prefs.ts:696 +#: dist/prefs.js:637 +msgid "Focus the window next to the current focused window" +msgstr "Aktywuj następne okno obok aktualnie aktywnego" + +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "Aktywuj poprzednie okno" -#: src/prefs.ts:703 +#: dist/prefs.js:644 +msgid "Focus the window prior to the current focused window" +msgstr "Aktywuj poprzednie okno obok aktualnie aktywnego" + +#: dist/prefs.js:650 msgid "Highlight focused window" msgstr "Podświetl aktywne okno" -#: src/prefs.ts:712 +#: dist/prefs.js:652 +msgid "Minimize all the other windows and show only the focused window" +msgstr "Zminimalizuj wszystkie inne okna i pokaż tylko aktywne okno" + +#: dist/prefs.js:659 msgid "Cycle layouts" msgstr "Przełącz układy" -#: src/prefs.ts:746 +#: dist/prefs.js:660 +msgid "Cycle through available workspace layouts" +msgstr "Przełączaj dostępne układy obszaru roboczego" + +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "Wyświetl i dostosuj wszystkie skróty" -#: src/prefs.ts:774 src/prefs.ts:775 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "Wyświetl i dostosuj skróty" -#: src/prefs.ts:819 +#: dist/prefs.js:737 +msgid "Enable next/previous window focus to wrap around" +msgstr "Włącz zawijanie aktywnego okna do następnego/poprzedniego" + +#: dist/prefs.js:739 +msgid "When focusing next or previous window, wrap around at the window edge" +msgstr "" +"Podczas przełączania na następne lub poprzednie aktywne okno, zawijaj po " +"osiągnięciu krawędzi okien" + +#: dist/prefs.js:745 +msgid "Restrict directional focus to tiled windows" +msgstr "Ogranicz aktywację kierunkową do ułożonych okien" + +#: dist/prefs.js:747 +msgid "When using directional focus navigation, only consider tiled windows" +msgstr "" +"Podczas przełączania na następne lub poprzednie aktywne okno, zawijaj po " +"osiągnięciu krawędzi okien" + +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "Import, eksport i reset" -#: src/prefs.ts:821 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "Importuj, eksportuj i resetuj ustawienia Układania okien" -#: src/prefs.ts:827 src/prefs.ts:828 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "Eksportuj ustawienia" -#: src/prefs.ts:829 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "Eksportuj ustawienia do pliku" -#: src/prefs.ts:832 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "Eksportuj ustawienia do pliku tekstowego" -#: src/prefs.ts:839 +#: dist/prefs.js:771 msgid "Text file" msgstr "Plik tekstowy" -#: src/prefs.ts:886 src/prefs.ts:887 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "Importuj ustawienia" -#: src/prefs.ts:888 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "Importuj ustawienia z pliku" -#: src/prefs.ts:891 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "Wybierz plik tekstowy do importu" -#: src/prefs.ts:937 src/prefs.ts:938 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "Resetuj ustawienia" -#: src/prefs.ts:939 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "Przywróć ustawienia domyślne" -#: src/prefs.ts:957 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "Dotacja na ko-fi" -#: src/prefs.ts:963 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "Zgłoś błąd" -#: src/prefs.ts:969 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "Zgłoś propozycję funkcji" -#: src/prefs.ts:978 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "Masz problemy, chcesz zasugerować nową funkcję lub wnieść swój wkład?" -#: src/prefs.ts:985 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "Otwórz nowe zgłoszenie na" -#: src/prefs.ts:1238 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +#, fuzzy +msgid "Follow quarters or screen halves" +msgstr "Przesuń do najlepszej strefy" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "Wybierz własny kolor" -#: src/prefs.ts:1239 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "Użyj systemowego koloru akcentu" -#: src/prefs.ts:1328 src/prefs.ts:1357 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "Nowy skrót…" -#: src/prefs.ts:1360 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "Użyj Backspace, aby wyczyścić" + +#~ msgid "Last version installed" +#~ msgstr "Zainstalowano najnowszą wersję" + +#~ msgid "Last version installed of this extension." +#~ msgstr "Ostatnia wersja tego rozszerzenia." + +#~ msgid "Enable tiling system" +#~ msgstr "Włącz system układania okien" + +#~ msgid "Hold CTRL while moving a window to tile it." +#~ msgstr "Przytrzymaj klawisz CTRL podczas przesuwania okna, aby je ułożyć." + +#~ msgid "Tiling system activation key" +#~ msgstr "Klawisz aktywacji systemu układania okien" + +#~ msgid "" +#~ "Which key to hold while moving a window to activate the tiling system." +#~ msgstr "" +#~ "Klawisz do przytrzymania podczas przesuwania okna, aby włączyć system " +#~ "układania okien." + +#~ msgid "Tiling system deactivation key" +#~ msgstr "Klawisz deaktywacji systemu układania okien" + +#~ msgid "" +#~ "Which key to hold while moving a window to deactivate the tiling system." +#~ msgstr "" +#~ "Klawisz do przytrzymania podczas przesuwania okna, aby wyłączyć system " +#~ "układania okien." + +#~ msgid "Enable snap assist" +#~ msgstr "Włącz Asystenta przyciągania" + +#~ msgid "Move the window on top of the screen to snap assist it." +#~ msgstr "" +#~ "Przesuń okno na górną krawędź ekranu, aby wywołać Asystenta przyciągania." + +#~ msgid "Shows indicator" +#~ msgstr "Pokaż wskaźnik" + +#~ msgid "Shows an indicator on top panel." +#~ msgstr "Wyświetla wskaźnik na górnym panelu." + +#~ msgid "Internal gaps between tiles in a layout." +#~ msgstr "Wewnętrzna przerwa między kafelkami w układzie." + +#~ msgid "External gaps between the layout and the monitor borders." +#~ msgstr "Zewnętrzne przerwy między układem a granicami monitora." + +#~ msgid "Hold ALT to span multiple tiles." +#~ msgstr "Przytrzymaj klawisz ALT, aby rozciągnąć na wiele kafelków." + +#~ msgid "Key to span multiple tiles" +#~ msgstr "Klawisz do rozciągania na wiele kafelków" + +#~ msgid "Which key to hold to span multiple tiles." +#~ msgstr "Klawisz do przytrzymania, aby rozciągnąć na wiele kafelków." + +#~ msgid "The layouts available to the tiling managers and the snap assist." +#~ msgstr "Układy dostępne dla menedżerów układania i Asystenta przyciągania." + +#~ msgid "Selected layouts" +#~ msgstr "Wybrane układy" + +#~ msgid "Each monitor's active layout used by the monitor tiling manager." +#~ msgstr "" +#~ "Aktywny układ każdego monitora używany przez menedżera układania monitora." + +#~ msgid "Restore the windows to their original size when untiled." +#~ msgstr "Przywracaj okna do ich oryginalnego rozmiaru po usunięciu z układu." + +#~ msgid "" +#~ "When a tiled window is resized, auto-resize the other tiled windows near " +#~ "it." +#~ msgstr "" +#~ "Gdy rozmiar ułożonego okna jest zmieniany, automatycznie zmień rozmiar " +#~ "sąsiednich ułożonych okien." + +#~ msgid "Enable Snap Assistant blur" +#~ msgstr "Włącz rozmycie asystenta przyciągania" + +#~ msgid "Blur snap assistant" +#~ msgstr "Rozmycie Asystenta przyciągania" + +#~ msgid "Enable selected tile preview blur" +#~ msgstr "Włącz rozmycie podglądu wybranego kafelka" + +#~ msgid "Blur selected tile previews" +#~ msgstr "Rozmyj podglądy wybranych kafelków" + +#~ msgid "Enable keybindings" +#~ msgstr "Włącz skróty klawiszowe" + +#~ msgid "Move focused window through tiles by using keybindings." +#~ msgstr "Przenieś aktywne okno przez kafelki, używając skrótów klawiszowych." + +#~ msgid "Enable auto tiling" +#~ msgstr "Włącz automatyczne układanie" + +#~ msgid "" +#~ "Automatically tile a new window to the best tile according to the current " +#~ "layout." +#~ msgstr "" +#~ "Automatycznie układaj nowe okno do najlepszego kafelka zgodnie z bieżącym " +#~ "układem." + +#~ msgid "Overridden settings" +#~ msgstr "Nadpisane ustawienia" + +#~ msgid "The settings that are overridden and their old value." +#~ msgstr "Ustawienia, które są nadpisane, oraz ich stara wartość." + +#~ msgid "Active Screen Edges" +#~ msgstr "Aktywne krawędzie ekranu" + +#~ msgid "" +#~ "Drag windows against the top, left and right screen edges to resize them." +#~ msgstr "" +#~ "Przeciągnij okna do górnej, lewej lub prawej krawędzi ekranu, aby zmienić " +#~ "ich rozmiar." + +#~ msgid "Drag agains top edge to maximize window" +#~ msgstr "Przeciągnij do górnej krawędzi, aby zmaksymalizować okno" + +#~ msgid "" +#~ "Add snap assistant and auto-tile buttons in the menu that shows up when " +#~ "you right click on a window title." +#~ msgstr "" +#~ "Dodaj przyciski Asystenta przyciągania i automatycznego układania do menu " +#~ "wyświetlanego po kliknięciu prawym przyciskiem myszy na pasku tytułu okna." + +#~ msgid "Add tiled windows group to alt+tab menu" +#~ msgstr "Dodaj grupę ułożonych okien do menu ALT+TAB" + +#~ msgid "" +#~ "Add the tiled windows to the alt+tab menu to open all the tiled windows " +#~ "at once" +#~ msgstr "" +#~ "Dodaj ułożone okna do menu ALT+TAB, aby otworzyć wszystkie ułożone okna " +#~ "jednocześnie" + +#~ msgid "Snap Assistant's threshold to enlarge, shrink, open and close it." +#~ msgstr "" +#~ "Progi Asystenta przyciągania do powiększania, pomniejszania, otwierania i " +#~ "zamykania." + +#~ msgid "Quarter tiling threshold" +#~ msgstr "Próg aktywacji ćwiartkowego układania" + +#~ msgid "Threshold to trigger quarter tiling." +#~ msgstr "Próg aktywacji ćwiartkowego układania." + +#~ msgid "Offset to trigger edge tiling (left and right edge)." +#~ msgstr "" +#~ "Przesunięcie do aktywacji układania krawędziowego (lewa i prawa krawędź)." + +#~ msgid "Enable window border" +#~ msgstr "Włącz obramowanie okna" + +#~ msgid "Show a border around focused window." +#~ msgstr "Pokaż obramowanie wokół aktywnego okna." + +#~ msgid "Focused window border color" +#~ msgstr "Kolor obramowania aktywnego okna" + +#~ msgid "The color of the focused window's border." +#~ msgstr "Kolor obramowania aktywnego okna." + +#~ msgid "Use custom color" +#~ msgstr "Użyj własnego koloru" + +#~ msgid "Use the color defined here for the focused window's border." +#~ msgstr "Użyj zdefiniowanego tutaj koloru dla obramowania aktywnego okna." + +#~ msgid "Focused window border width" +#~ msgstr "Szerokość obramowania aktywnego okna" + +#~ msgid "The width of the focused window's border." +#~ msgstr "Szerokość obramowania aktywnego okna." + +#~ msgid "Enable smart window border radius" +#~ msgstr "Włącz inteligentny promień obramowania okna" + +#~ msgid "Dinamically adapt to the window's border radius." +#~ msgstr "Dynamicznie dopasowuj do rzeczywistego promienia obramowania okna." + +#~ msgid "Snap assistant animation time (milliseconds)" +#~ msgstr "Czas trwania animacji Asystenta przyciągania (w milisekundach)" + +#~ msgid "Animation time in milliseconds of the snap assistant" +#~ msgstr "Czas trwania animacji Asystenta przyciągania w milisekundach" + +#~ msgid "Tile animation time (milliseconds)" +#~ msgstr "Czas trwania animacji kafelka (w milisekundach)" + +#~ msgid "Animation time in milliseconds of the tiles" +#~ msgstr "Czas trwania animacji kafelków w milisekundach" + +#~ msgid "" +#~ "Provides smart suggestions to fill empty tiles when using the tiling " +#~ "system." +#~ msgstr "" +#~ "Wyświetlaj inteligentne podpowiedzi wypełniania pustych kafelków podczas " +#~ "korzystania z systemu układania." + +#~ msgid "" +#~ "Offers suggestions to populate empty tiles when using the snap assistant." +#~ msgstr "" +#~ "Wyświetlaj podpowiedzi wypełniania pustych kafelków podczas korzystania z " +#~ "Asystenta przyciągania." + +#~ msgid "" +#~ "Suggests windows to occupy empty tiles when snapping to screen edges." +#~ msgstr "" +#~ "Sugeruj okna do zajęcia pustych kafelków podczas przyciągania do krawędzi " +#~ "ekranu." + +#~ msgid "Move focused window to the tile to its right" +#~ msgstr "Przenieś aktywne okno do kafelka po prawej" + +#~ msgid "Move focused window to the tile to its left" +#~ msgstr "Przenieś aktywne okno do kafelka po lewej" + +#~ msgid "Move focused window to the tile above" +#~ msgstr "Przenieś aktywne okno do kafelka powyżej" + +#~ msgid "Move focused window to the tile below" +#~ msgstr "Przenieś aktywne okno do kafelka poniżej" + +#~ msgid "Span focused window to the tile to its right" +#~ msgstr "Rozciągnij aktywne okno na kafelek po prawej" + +#~ msgid "Span focused window to the tile to its left" +#~ msgstr "Rozciągnij aktywne okno na kafelek po lewej" + +#~ msgid "Span focused window to the tile above" +#~ msgstr "Rozciągnij aktywne okno na kafelek powyżej" + +#~ msgid "Span focused window to the tile below" +#~ msgstr "Rozciągnij aktywne okno na kafelek poniżej" + +#~ msgid "Resize the focused window to span all tiles" +#~ msgstr "Rozciągnij aktywne okno na wszystkie kafelki" + +#~ msgid "Untile the focused window" +#~ msgstr "Usuń aktywne okno z układu" + +#~ msgid "Focus the window to the right the current focused window" +#~ msgstr "Aktywuj okno po prawej od bieżącego aktywnego okna" + +#~ msgid "Tiled windows" +#~ msgstr "Ułożone okna" + +#~ msgid "Select the layout to edit" +#~ msgstr "Wybierz układ do edycji" + +#~ msgid "Close" +#~ msgstr "Zamknij" + +#~ msgid "to split a tile" +#~ msgstr "aby podzielić kafelek" + +#~ msgid "to split a tile vertically" +#~ msgstr "aby podzielić kafelek pionowo" + +#~ msgid "to delete a tile" +#~ msgstr "aby usunąć kafelek" + +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "użyj przycisku wskaźnika, aby zapisać lub anulować" + +#~ msgid "How to use the editor" +#~ msgstr "Jak używać edytora" + +#~ msgid "Start editing" +#~ msgstr "Rozpocznij edycje" + +#~ msgid "Move to leftmost tile" +#~ msgstr "Przesuń do strefy najbardziej po lewej" + +#~ msgid "Move to rightmost tile" +#~ msgstr "Przesuń do strefy najbardziej po prawej" + +#~ msgid "Edit Layouts" +#~ msgstr "Edytuj układy" + +#~ msgid "New Layout" +#~ msgstr "Nowy układ" + +#~ msgid "Menu" +#~ msgstr "Menu" + +#~ msgid "Info" +#~ msgstr "Info" diff --git a/translations/pt_BR.po b/translations/pt_BR.po index b4405397..18396b3b 100644 --- a/translations/pt_BR.po +++ b/translations/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiling Shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: 2025-02-18 10:20-0300\n" "Last-Translator: Rodrigo Mantoan \n" "Language-Team: Portuguese\n" @@ -18,163 +18,164 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 47.1\n" -#: dist/prefs.js:793 +#: dist/prefs.js:59 msgid "General" msgstr "Geral" -#: dist/prefs.js:798 +#: dist/prefs.js:64 msgid "Appearance" msgstr "Aparência" -#: dist/prefs.js:799 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "Configurar a aparência do Tiling Shell" -#: dist/prefs.js:804 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "Mostrar indicador" -#: dist/prefs.js:805 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "Se deve mostrar o indicador no painel" -#: dist/prefs.js:810 +#: dist/prefs.js:76 msgid "Inner gaps" msgstr "Espaçamentos internos" -#: dist/prefs.js:811 +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "Espaçamento entre janelas" -#: dist/prefs.js:816 +#: dist/prefs.js:82 msgid "Outer gaps" msgstr "Espacamentos externos" -#: dist/prefs.js:817 +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "Espaçamento entre a janela e as bordas do monitor" -#: dist/prefs.js:821 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "Desfoque (recurso experimental)" -#: dist/prefs.js:823 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "Aplicar efeito de desfoque ao Snap Assistant e às pré-visualizações" -#: dist/prefs.js:829 +#: dist/prefs.js:95 msgid "Snap Assistant threshold" msgstr "Limites do Snap Assistant" -#: dist/prefs.js:831 +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "Distância mínima do Snap Assistant até o ponteiro para ativá-lo" -#: dist/prefs.js:840 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "Snap Assistant" -#: dist/prefs.js:841 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "Aplicar efeito de desfoque ao Snap Assistant" -#: dist/prefs.js:847 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "Pré-visualização do mosaico selecionado" -#: dist/prefs.js:848 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "Aplicar efeito de desfoque à pré-visualização do mosaico selecionado" -#: dist/prefs.js:852 +#: dist/prefs.js:118 msgid "Window border" msgstr "Borda da janela" -#: dist/prefs.js:853 dist/prefs.js:860 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "Exibir uma borda ao redor da janela focada" -#: dist/prefs.js:859 +#: dist/prefs.js:125 msgid "Enable" msgstr "Ativar" -#: dist/prefs.js:866 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "Raio de borda inteligente" -#: dist/prefs.js:867 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +#, fuzzy +msgid "Dynamically adapt to the window's actual border radius" msgstr "Adaptar dinamicamente ao raio real da borda da janela" -#: dist/prefs.js:873 +#: dist/prefs.js:139 msgid "Width" msgstr "Largura" -#: dist/prefs.js:874 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "O tamanho da borda" -#: dist/prefs.js:883 +#: dist/prefs.js:149 msgid "Border color" msgstr "Cor da borda" -#: dist/prefs.js:884 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "Escolha a cor da borda" -#: dist/prefs.js:900 +#: dist/prefs.js:166 msgid "Animations" msgstr "Animações" -#: dist/prefs.js:901 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "Personalizar animações" -#: dist/prefs.js:907 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "Tempo de animação do Snap Assistant" -#: dist/prefs.js:908 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "O tempo de animação do Snap Assistant em milissegundos" -#: dist/prefs.js:916 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "Tempo de animação dos mosaicos" -#: dist/prefs.js:917 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "O tempo de animação dos mosaicos em milissegundos" -#: dist/prefs.js:923 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "Comportamento" -#: dist/prefs.js:924 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "Configurar o comportamento do Tiling Shell" -#: dist/prefs.js:929 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "Ativar Snap Assistant" -#: dist/prefs.js:930 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "Mover a janela para o topo da tela para ativar o Snap Assistant" -#: dist/prefs.js:935 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "Ativar sistema de mosaicos" -#: dist/prefs.js:936 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "Segure a tecla de ativação ao mover uma janela para mosaicar" -#: dist/prefs.js:944 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "Tecla de desativação do sistema de mosaicos" -#: dist/prefs.js:946 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -182,49 +183,49 @@ msgstr "" "Mantenha pressionada a tecla de desativação enquanto move uma janela para " "desativar o sistema de mosaicos" -#: dist/prefs.js:954 +#: dist/prefs.js:220 msgid "Span multiple tiles" msgstr "Expandir para múltiplos mosaicos" -#: dist/prefs.js:955 +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "Segure a tecla de ativação para expandir para múltiplos mosaicos" -#: dist/prefs.js:964 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "Ativar mosaico automático" -#: dist/prefs.js:965 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "Organizar automaticamente novas janelas no melhor mosaico" -#: dist/prefs.js:970 +#: dist/prefs.js:236 msgid "Enable auto-resize of the complementing tiled windows" msgstr "" "Ativar redimensionamento automático das janelas em mosaico complementares" -#: dist/prefs.js:972 +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "Quando uma janela em mosaico for redimensionada, redimensione " "automaticamente as outras próximas" -#: dist/prefs.js:978 +#: dist/prefs.js:244 msgid "Restore window size" msgstr "Restaurar tamanho da janela" -#: dist/prefs.js:980 +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "" "Se as janelas devem ser restauradas ao tamanho original ao serem desanexadas" -#: dist/prefs.js:986 +#: dist/prefs.js:252 msgid "Add snap assistant and auto-tile buttons to window menu" msgstr "" "Adicionar botões do Snap Assistant e mosaico automático ao menu da janela" -#: dist/prefs.js:988 +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -232,432 +233,455 @@ msgstr "" "Adiciona os botões do Snap Assistant e mosaico automático no menu exibido ao " "clicar com o botão direito no título da janela" -#: dist/prefs.js:994 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "" -#: dist/prefs.js:996 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "" -#: dist/prefs.js:1001 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "Bordes da tela" -#: dist/prefs.js:1003 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" "Arraste as janelas para as bordas superior, esquerda e direita da tela para " "redimensioná-las" -#: dist/prefs.js:1017 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "Arrastar para a borda superior para maximizar a janela" -#: dist/prefs.js:1018 +#: dist/prefs.js:284 msgid "Drag windows against the top edge to maximize them" msgstr "Arraste as janelas para a borda superior para maximizá-las" -#: dist/prefs.js:1027 +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "Área de ativação de mosaico em quatro partes" -#: dist/prefs.js:1028 +#: dist/prefs.js:294 #, fuzzy, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "Área de ativação para ativar o mosaico em quatro partes (% da tela)" -#: dist/prefs.js:1044 +#: dist/prefs.js:310 msgid "Edge tiling offset" msgstr "" -#: dist/prefs.js:1045 +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" -#: dist/prefs.js:1062 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "Sugestões de janelas" -#: dist/prefs.js:1063 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "Ativar e desativar sugestões de janelas" -#: dist/prefs.js:1068 +#: dist/prefs.js:339 msgid "Enable window suggestions for the tiling system" msgstr "Ativar sugestões de janelas para o sistema de mosaicos" -#: dist/prefs.js:1070 +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" "Fornece sugestões inteligentes para preencher espaços vazios ao usar o " "sistema de mosaicos" -#: dist/prefs.js:1076 +#: dist/prefs.js:347 msgid "Enable window suggestions for the snap assistant" msgstr "Ativar sugestões de janelas para o Snap Assistant" -#: dist/prefs.js:1078 +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" "Oferece sugestões para preencher espaços vazios ao usar o Snap Assistant" -#: dist/prefs.js:1084 +#: dist/prefs.js:355 msgid "Enable window suggestions for screen edge snapping" msgstr "Ativar sugestões de janelas para encaixe nas bordas da tela" -#: dist/prefs.js:1086 +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" "Sugere janelas para ocupar espaços vazios ao encaixar nas bordas da tela" -#: dist/prefs.js:1092 +#: dist/prefs.js:363 msgid "Layouts" msgstr "Layouts" -#: dist/prefs.js:1093 +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "Configurar os layouts do Tiling Shell" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "Editar layouts" -#: dist/prefs.js:1099 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "Abrir o editor de layouts" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "Exportar layouts" -#: dist/prefs.js:1106 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "Exportar layouts para um arquivo" -#: dist/prefs.js:1112 dist/prefs.js:1496 +#: dist/prefs.js:383 dist/prefs.js:767 msgid "Save" msgstr "Salvar" -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 msgid "Cancel" msgstr "Cancelar" -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "Importar layouts" -#: dist/prefs.js:1160 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "Importar layouts de um arquivo" -#: dist/prefs.js:1163 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "Selecionar arquivo de layouts" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "Abrir" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "Redefinir layouts" -#: dist/prefs.js:1216 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "Restaurar layouts padrão" -#: dist/prefs.js:1229 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "Atalhos de teclado" -#: dist/prefs.js:1231 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "Use atalhos de teclado para realizar ações na janela focada" -#: dist/prefs.js:1249 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "Mover a janela para o mosaico da direita" -#: dist/prefs.js:1251 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "Mover a janela focada para o mosaico à sua direita" -#: dist/prefs.js:1260 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "Mover a janela para o mosaico da esquerda" -#: dist/prefs.js:1261 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "Mover a janela focada para o mosaico à sua esquerda" -#: dist/prefs.js:1267 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "Mover a janela para o mosaico acima" -#: dist/prefs.js:1268 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "Mover a janela focada para o mosaico acima" -#: dist/prefs.js:1274 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "Mover a janela para o mosaico abaixo" -#: dist/prefs.js:1275 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "Mover a janela focada para o mosaico abaixo" -#: dist/prefs.js:1281 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "Expandir a janela para o mosaico da direita" -#: dist/prefs.js:1282 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "Expandir a janela focada para o mosaico à sua direita" -#: dist/prefs.js:1288 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "Expandir a janela para o mosaico da esquerda" -#: dist/prefs.js:1289 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "Expandir a janela focada para o mosaico à sua esquerda" -#: dist/prefs.js:1295 +#: dist/prefs.js:566 msgid "Span window above" msgstr "Expandir a janela acima" -#: dist/prefs.js:1296 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "Expandir a janela focada para o mosaico acima" -#: dist/prefs.js:1302 +#: dist/prefs.js:573 msgid "Span window down" msgstr "Expandir a janela abaixo" -#: dist/prefs.js:1303 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "Expandir a janela focada para o mosaico abaixo" -#: dist/prefs.js:1309 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "Expandir a janela para todos os mosaicos" -#: dist/prefs.js:1310 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "Expande a janela focada para todos os mosaicos" -#: dist/prefs.js:1316 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "Remover janela focada do mosaico" -#: dist/prefs.js:1324 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "Mover a janela para o centro" -#: dist/prefs.js:1326 +#: dist/prefs.js:597 msgid "Move the focused window to the center of the screen" msgstr "Move a janela focada para o centro da tela" -#: dist/prefs.js:1335 +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "Focar janela à direita" -#: dist/prefs.js:1337 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "Foca a janela à direita da janela focada" -#: dist/prefs.js:1344 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "Focar janela à esquerda" -#: dist/prefs.js:1345 +#: dist/prefs.js:616 msgid "Focus the window to the left of the current focused window" msgstr "Foca a janela à esquerda da janela focada " -#: dist/prefs.js:1351 +#: dist/prefs.js:622 msgid "Focus window above" msgstr "Focar janela acima" -#: dist/prefs.js:1352 +#: dist/prefs.js:623 msgid "Focus the window above the current focused window" msgstr "Foca a janela acima da janela focada" -#: dist/prefs.js:1358 +#: dist/prefs.js:629 msgid "Focus window below" msgstr "Focar janela abaixo" -#: dist/prefs.js:1359 +#: dist/prefs.js:630 msgid "Focus the window below the current focused window" msgstr "Foca a janela abaixo da janela focada" -#: dist/prefs.js:1365 +#: dist/prefs.js:636 msgid "Focus next window" msgstr "Focar próxima janela" -#: dist/prefs.js:1366 +#: dist/prefs.js:637 msgid "Focus the window next to the current focused window" msgstr "Focar a próxima janela adjacente à que está atualmente em foco" -#: dist/prefs.js:1372 +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "Focar janela anterior" -#: dist/prefs.js:1373 +#: dist/prefs.js:644 msgid "Focus the window prior to the current focused window" msgstr "Focar a janela anterior à que está atualmente em foco" -#: dist/prefs.js:1379 +#: dist/prefs.js:650 #, fuzzy msgid "Highlight focused window" msgstr "Remover janela focada do mosaico" -#: dist/prefs.js:1381 +#: dist/prefs.js:652 #, fuzzy msgid "Minimize all the other windows and show only the focused window" msgstr "Use atalhos de teclado para realizar ações na janela focada" -#: dist/prefs.js:1388 +#: dist/prefs.js:659 #, fuzzy msgid "Cycle layouts" msgstr "Redefinir layouts" -#: dist/prefs.js:1389 +#: dist/prefs.js:660 msgid "Cycle through available workspace layouts" msgstr "" -#: dist/prefs.js:1415 +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "Visualizar e Personalizar todos os Atalhos" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "Visualizar e Personalizar Atalhos" -#: dist/prefs.js:1466 +#: dist/prefs.js:737 msgid "Enable next/previous window focus to wrap around" msgstr "Permitir que o foco da janela seguinte/anterior se repita" -#: dist/prefs.js:1468 +#: dist/prefs.js:739 msgid "When focusing next or previous window, wrap around at the window edge" msgstr "Ao focar a janela seguinte ou anterior, envolva a borda da janela" -#: dist/prefs.js:1474 +#: dist/prefs.js:745 msgid "Restrict directional focus to tiled windows" msgstr "" -#: dist/prefs.js:1476 +#: dist/prefs.js:747 msgid "When using directional focus navigation, only consider tiled windows" msgstr "" -#: dist/prefs.js:1481 +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "Importar, exportar e redefinir" -#: dist/prefs.js:1483 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "Importar, exportar e redefinir as configurações do Tiling Shell" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "Exportar configurações" -#: dist/prefs.js:1490 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "Exporta as configurações para um arquivo" -#: dist/prefs.js:1493 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "Exportar configurações para um arquivo de texto" -#: dist/prefs.js:1500 +#: dist/prefs.js:771 msgid "Text file" msgstr "Arquivo de texto" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "Importar configurações de um arquivo" -#: dist/prefs.js:1545 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "Importar configurações de um arquivo" -#: dist/prefs.js:1548 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "Selecionar um arquivo de texto para importar" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "Redefinir configurações" -#: dist/prefs.js:1592 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "Restaurar configurações padrão" -#: dist/prefs.js:1607 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "Doar no Ko-fi" -#: dist/prefs.js:1613 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "Relatar um erro" -#: dist/prefs.js:1619 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "Solicitar um recurso" -#: dist/prefs.js:1627 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "Tem algum problema, deseja sugerir um novo recurso ou contribuir?" -#: dist/prefs.js:1634 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "Abrir um novo problema em" -#: dist/prefs.js:1814 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +#, fuzzy +msgid "Follow quarters or screen halves" +msgstr "Mover para o melhor mosaico" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "" -#: dist/prefs.js:1815 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "Novo atalho…" -#: dist/prefs.js:1892 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "Pressione Backspace para limpar" -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "Editar layouts" +#~ msgid "Edit Layouts" +#~ msgstr "Editar layouts" -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "Novo layout" +#~ msgid "New Layout" +#~ msgstr "Novo layout" -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "para dividir um mosaico" +#~ msgid "to split a tile" +#~ msgstr "para dividir um mosaico" -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "para dividir um mosaico verticalmente" +#~ msgid "to split a tile vertically" +#~ msgstr "para dividir um mosaico verticalmente" -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "para excluir um mosaico" +#~ msgid "to delete a tile" +#~ msgstr "para excluir um mosaico" -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "use o botão indicador para salvar ou cancelar" +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "use o botão indicador para salvar ou cancelar" #~ msgid "Menu" #~ msgstr "Menu" @@ -677,9 +701,6 @@ msgstr "use o botão indicador para salvar ou cancelar" #~ msgid "Start editing" #~ msgstr "Iniciar edição" -#~ msgid "Move to best tile" -#~ msgstr "Mover para o melhor mosaico" - #~ msgid "Move to leftmost tile" #~ msgstr "Mover para o mosaico mais à esquerda" diff --git a/translations/ru.po b/translations/ru.po index 392890c1..506a1ab3 100644 --- a/translations/ru.po +++ b/translations/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiling Shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: 2025-03-30 00:08+0700\n" "Last-Translator: Victor \n" "Language-Team: Russian\n" @@ -18,165 +18,166 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: dist/prefs.js:793 +#: dist/prefs.js:59 msgid "General" msgstr "Общие" -#: dist/prefs.js:798 +#: dist/prefs.js:64 msgid "Appearance" msgstr "Внешний вид" -#: dist/prefs.js:799 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "Настройка внешнего вида Tiling Shell" -#: dist/prefs.js:804 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "Показать индикатор" -#: dist/prefs.js:805 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "Отображать ли индикатор на панели" -#: dist/prefs.js:810 +#: dist/prefs.js:76 msgid "Inner gaps" msgstr "Внутренние отступы" -#: dist/prefs.js:811 +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "Отступы между окнами" -#: dist/prefs.js:816 +#: dist/prefs.js:82 msgid "Outer gaps" msgstr "Внешние отступы" -#: dist/prefs.js:817 +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "Отступы между окном и границами монитора" -#: dist/prefs.js:821 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "Размытие (экспериментальная функция)" -#: dist/prefs.js:823 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "Применить эффект размытия к Snap Assistant и превью плиток" -#: dist/prefs.js:829 +#: dist/prefs.js:95 msgid "Snap Assistant threshold" msgstr "Порог срабатывания Snap Assistant" -#: dist/prefs.js:831 +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "" "Минимальное расстояние от указателя до Snap Assistant для его активации" -#: dist/prefs.js:840 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "Snap Assistant" -#: dist/prefs.js:841 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "Применить эффект размытия к Snap Assistant" -#: dist/prefs.js:847 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "Превью выбранной плитки" -#: dist/prefs.js:848 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "Применить эффект размытия к превью выбранной плитки" -#: dist/prefs.js:852 +#: dist/prefs.js:118 msgid "Window border" msgstr "Граница окна" -#: dist/prefs.js:853 dist/prefs.js:860 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "Показать границу вокруг активного окна" -#: dist/prefs.js:859 +#: dist/prefs.js:125 msgid "Enable" msgstr "Включить" -#: dist/prefs.js:866 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "Умный радиус границ" -#: dist/prefs.js:867 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +#, fuzzy +msgid "Dynamically adapt to the window's actual border radius" msgstr "Динамически подстраиваться под радиус границ окна" -#: dist/prefs.js:873 +#: dist/prefs.js:139 msgid "Width" msgstr "Ширина" -#: dist/prefs.js:874 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "Размер границы" -#: dist/prefs.js:883 +#: dist/prefs.js:149 msgid "Border color" msgstr "Цвет границы" -#: dist/prefs.js:884 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "Выберите цвет границы" -#: dist/prefs.js:900 +#: dist/prefs.js:166 msgid "Animations" msgstr "Анимации" -#: dist/prefs.js:901 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "Настройка анимаций" # #: dist/prefs.js:886 -#: dist/prefs.js:907 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "Время анимации Snap Assistant" -#: dist/prefs.js:908 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "Длительность анимации Snap Assistant в миллисекундах" -#: dist/prefs.js:916 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "Время анимации плиток" -#: dist/prefs.js:917 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "Длительность анимации плиток в миллисекундах" -#: dist/prefs.js:923 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "Поведение" -#: dist/prefs.js:924 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "Настройка поведения Tiling Shell" -#: dist/prefs.js:929 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "Включить Snap Assistant" -#: dist/prefs.js:930 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "Переместите окно к верхнему краю экрана для вызова Snap Assistant" -#: dist/prefs.js:935 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "Включить тайлинг систему" -#: dist/prefs.js:936 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "Удерживайте клавишу активации при перемещении окна для его размещения" -#: dist/prefs.js:944 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "Клавиша отключения тайлинг системы" -#: dist/prefs.js:946 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -184,46 +185,46 @@ msgstr "" "Удерживайте клавишу отключения при перемещении окна, чтобы отключить тайлинг " "систему" -#: dist/prefs.js:954 +#: dist/prefs.js:220 msgid "Span multiple tiles" msgstr "Растянуть на несколько плиток" -#: dist/prefs.js:955 +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "" "Удерживайте клавишу активации, чтобы растянуть окно на несколько плиток" -#: dist/prefs.js:964 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "Включить автотайлинг" -#: dist/prefs.js:965 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "Автоматически размещать новые окна в подходящие плитки" -#: dist/prefs.js:970 +#: dist/prefs.js:236 msgid "Enable auto-resize of the complementing tiled windows" msgstr "Включить автоизменение размера соседних плиток" -#: dist/prefs.js:972 +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "При изменении размера плитки автоматически менять размер соседних плиток" -#: dist/prefs.js:978 +#: dist/prefs.js:244 msgid "Restore window size" msgstr "Восстанавливать размер окна" -#: dist/prefs.js:980 +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "Восстанавливать ли оригинальный размер окон при откреплении от плитки" -#: dist/prefs.js:986 +#: dist/prefs.js:252 msgid "Add snap assistant and auto-tile buttons to window menu" msgstr "Добавить кнопки Snap Assistant и автотайлинга в меню окна" -#: dist/prefs.js:988 +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -231,428 +232,450 @@ msgstr "" "Добавить кнопки Snap Assistant и автотайлинга в меню, вызываемое правым " "кликом по заголовку окна" -#: dist/prefs.js:994 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "" -#: dist/prefs.js:996 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "" -#: dist/prefs.js:1001 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "Границы экрана" -#: dist/prefs.js:1003 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" "Перетаскивание окна к верхней, левой или правой границе экрана для изменения " "их размера" -#: dist/prefs.js:1017 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "Перетаскивание к верхней границе для максимизации окна" -#: dist/prefs.js:1018 +#: dist/prefs.js:284 msgid "Drag windows against the top edge to maximize them" msgstr "Перетаскивание окна к верхней границе экрана, чтобы развернуть его" -#: dist/prefs.js:1027 +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "Область активации тайлинга на четверть" -#: dist/prefs.js:1028 +#: dist/prefs.js:294 #, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "Область активации тайлинга на четверть (%% от экрана)" -#: dist/prefs.js:1044 +#: dist/prefs.js:310 msgid "Edge tiling offset" msgstr "" -#: dist/prefs.js:1045 +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" -#: dist/prefs.js:1062 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "Подсказки размещения окон" -#: dist/prefs.js:1063 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "Включение и отключение подсказок размещения окон" -#: dist/prefs.js:1068 +#: dist/prefs.js:339 msgid "Enable window suggestions for the tiling system" msgstr "Включить подсказки размещения окон для тайлинг системы" -#: dist/prefs.js:1070 +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" "Предлагает умные варианты для заполнения пустых плиток при использовании " "тайлинг системы" -#: dist/prefs.js:1076 +#: dist/prefs.js:347 msgid "Enable window suggestions for the snap assistant" msgstr "Включить подсказки размещения окон для Snap Assistant" -#: dist/prefs.js:1078 +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" "Предлагает варианты заполнения пустых плиток при использовании Snap Assistant" -#: dist/prefs.js:1084 +#: dist/prefs.js:355 msgid "Enable window suggestions for screen edge snapping" msgstr "Включить подсказки размещения окон при привязке к краям экрана" -#: dist/prefs.js:1086 +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" "Предлагает окна для заполнения пустых плиток при привязке к краям экрана" -#: dist/prefs.js:1092 +#: dist/prefs.js:363 msgid "Layouts" msgstr "Макеты" -#: dist/prefs.js:1093 +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "Настройка макетов Tiling Shell" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "Редактировать макеты" -#: dist/prefs.js:1099 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "Открыть редактор макетов" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "Экспорт макетов" -#: dist/prefs.js:1106 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "Экспортировать макеты в файл" -#: dist/prefs.js:1112 dist/prefs.js:1496 +#: dist/prefs.js:383 dist/prefs.js:767 msgid "Save" msgstr "Сохранить" -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 msgid "Cancel" msgstr "Отмена" -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "Импорт макетов" -#: dist/prefs.js:1160 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "Импортировать макеты из файла" -#: dist/prefs.js:1163 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "Выберите файл макетов" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "Открыть" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "Сброс макетов" -#: dist/prefs.js:1216 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "Восстановить макеты по умолчанию" -#: dist/prefs.js:1229 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "Горячие клавиши" -#: dist/prefs.js:1231 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "Используйте горячие клавиши для действий с активным окном" -#: dist/prefs.js:1249 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "Переместить окно в правую плитку" -#: dist/prefs.js:1251 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "Переместить активное окно в плитку справа" -#: dist/prefs.js:1260 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "Переместить окно в левую плитку" -#: dist/prefs.js:1261 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "Переместить активное окно в плитку слева" -#: dist/prefs.js:1267 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "Переместить окно в плитку выше" -#: dist/prefs.js:1268 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "Переместить активное окно в плитку сверху" -#: dist/prefs.js:1274 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "Переместить окно в плитку ниже" -#: dist/prefs.js:1275 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "Переместить активное окно в плитку снизу" -#: dist/prefs.js:1281 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "Растянуть окно на правую плитку" -#: dist/prefs.js:1282 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "Растянуть активное окно на плитку справа" -#: dist/prefs.js:1288 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "Растянуть окно на левую плитку" -#: dist/prefs.js:1289 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "Растянуть активное окно на плитку слева" -#: dist/prefs.js:1295 +#: dist/prefs.js:566 msgid "Span window above" msgstr "Растянуть окно вверх" -#: dist/prefs.js:1296 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "Растянуть активное окно на плитку сверху" -#: dist/prefs.js:1302 +#: dist/prefs.js:573 msgid "Span window down" msgstr "Растянуть окно вниз" -#: dist/prefs.js:1303 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "Растянуть активное окно на плитку снизу" -#: dist/prefs.js:1309 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "Растянуть окно на все плитки" -#: dist/prefs.js:1310 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "Растянуть активное окно на все плитки" -#: dist/prefs.js:1316 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "Извлечь активное окно из тайлинга" -#: dist/prefs.js:1324 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "Переместить окно в центр" -#: dist/prefs.js:1326 +#: dist/prefs.js:597 msgid "Move the focused window to the center of the screen" msgstr "Переместить активное окно в центр экрана" -#: dist/prefs.js:1335 +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "Фокус на окне справа" -#: dist/prefs.js:1337 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "Сфокусироваться на окне справа от текущего" -#: dist/prefs.js:1344 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "Фокус на окне слева" -#: dist/prefs.js:1345 +#: dist/prefs.js:616 msgid "Focus the window to the left of the current focused window" msgstr "Сфокусироваться на окне слева от текущего" -#: dist/prefs.js:1351 +#: dist/prefs.js:622 msgid "Focus window above" msgstr "Фокус на окне сверху" -#: dist/prefs.js:1352 +#: dist/prefs.js:623 msgid "Focus the window above the current focused window" msgstr "Сфокусироваться на окне выше текущего" -#: dist/prefs.js:1358 +#: dist/prefs.js:629 msgid "Focus window below" msgstr "Фокус на окне снизу" -#: dist/prefs.js:1359 +#: dist/prefs.js:630 msgid "Focus the window below the current focused window" msgstr "Сфокусироваться на окне ниже текущего" -#: dist/prefs.js:1365 +#: dist/prefs.js:636 msgid "Focus next window" msgstr "Фокус на следующем окне" -#: dist/prefs.js:1366 +#: dist/prefs.js:637 msgid "Focus the window next to the current focused window" msgstr "Сфокусироваться на следующем окне относительно текущего" -#: dist/prefs.js:1372 +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "Фокус на предыдущем окне" -#: dist/prefs.js:1373 +#: dist/prefs.js:644 msgid "Focus the window prior to the current focused window" msgstr "Сфокусироваться на предыдущем окне относительно текущего" -#: dist/prefs.js:1379 +#: dist/prefs.js:650 msgid "Highlight focused window" msgstr "Выделить активное окно" -#: dist/prefs.js:1381 +#: dist/prefs.js:652 msgid "Minimize all the other windows and show only the focused window" msgstr "Свернуть все остальные окна и показать только активное" -#: dist/prefs.js:1388 +#: dist/prefs.js:659 #, fuzzy msgid "Cycle layouts" msgstr "Сброс макетов" -#: dist/prefs.js:1389 +#: dist/prefs.js:660 msgid "Cycle through available workspace layouts" msgstr "" -#: dist/prefs.js:1415 +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "Просмотр и настройка всех сочетаний клавиш" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "Просмотр и настройка горячих клавиш" -#: dist/prefs.js:1466 +#: dist/prefs.js:737 msgid "Enable next/previous window focus to wrap around" msgstr "Включить зацикливание при переключении окон" -#: dist/prefs.js:1468 +#: dist/prefs.js:739 msgid "When focusing next or previous window, wrap around at the window edge" msgstr "" "При переключении между окнами переходить от последнего к первому и наоборот" -#: dist/prefs.js:1474 +#: dist/prefs.js:745 msgid "Restrict directional focus to tiled windows" msgstr "" -#: dist/prefs.js:1476 +#: dist/prefs.js:747 msgid "When using directional focus navigation, only consider tiled windows" msgstr "" -#: dist/prefs.js:1481 +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "Импорт, экспорт и сброс" -#: dist/prefs.js:1483 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "Импорт, экспорт и сброс настроек Tiling Shell" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "Экспорт настроек" -#: dist/prefs.js:1490 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "Экспортировать настройки в файл" -#: dist/prefs.js:1493 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "Экспортировать настройки в текстовый файл" -#: dist/prefs.js:1500 +#: dist/prefs.js:771 msgid "Text file" msgstr "Текстовый файл" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "Импорт настроек" -#: dist/prefs.js:1545 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "Импортировать настройки из файла" -#: dist/prefs.js:1548 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "Выберите текстовый файл для импорта" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "Сброс настроек" -#: dist/prefs.js:1592 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "Восстановить настройки по умолчанию" -#: dist/prefs.js:1607 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "Поддержать на Ko-fi" -#: dist/prefs.js:1613 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "Сообщить об ошибке" -#: dist/prefs.js:1619 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "Предложить новую функцию" -#: dist/prefs.js:1627 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "Возникли проблемы, есть идея или хотите внести вклад?" -#: dist/prefs.js:1634 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "Открыть новую задачу на" -#: dist/prefs.js:1814 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +msgid "Follow quarters or screen halves" +msgstr "" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "" -#: dist/prefs.js:1815 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "Новое сочетание клавиш…" -#: dist/prefs.js:1892 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "Нажмите Backspace для очистки" -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "Редактировать макеты" +#~ msgid "Edit Layouts" +#~ msgstr "Редактировать макеты" -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "Новый макет" +#~ msgid "New Layout" +#~ msgstr "Новый макет" -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "для разделения плитки" +#~ msgid "to split a tile" +#~ msgstr "для разделения плитки" -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "для вертикального разделения плитки" +#~ msgid "to split a tile vertically" +#~ msgstr "для вертикального разделения плитки" -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "для удаления плитки" +#~ msgid "to delete a tile" +#~ msgstr "для удаления плитки" -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "используйте кнопку-индикатор для сохранения или отмены" +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "используйте кнопку-индикатор для сохранения или отмены" diff --git a/translations/tilingshell@ferrarodomenico.com.pot b/translations/tilingshell@ferrarodomenico.com.pot index e0e8460e..d3e0653f 100644 --- a/translations/tilingshell@ferrarodomenico.com.pot +++ b/translations/tilingshell@ferrarodomenico.com.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,982 +17,629 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:7 -msgid "Last version installed" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:8 -msgid "Last version installed of this extension." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:12 -msgid "Enable tiling system" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:13 -msgid "Hold CTRL while moving a window to tile it." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:17 -msgid "Tiling system activation key" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:18 -msgid "Which key to hold while moving a window to activate the tiling system." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:22 -msgid "Tiling system deactivation key" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:23 -msgid "" -"Which key to hold while moving a window to deactivate the tiling system." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:27 -msgid "Enable snap assist" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:28 -msgid "Move the window on top of the screen to snap assist it." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:32 -msgid "Shows indicator" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:33 -msgid "Shows an indicator on top panel." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:37 -#: src/prefs.ts:89 -msgid "Inner gaps" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:38 -msgid "Internal gaps between tiles in a layout." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:42 -#: src/prefs.ts:96 -msgid "Outer gaps" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:43 -msgid "External gaps between the layout and the monitor borders." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:47 -#: src/prefs.ts:247 -msgid "Span multiple tiles" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:48 -msgid "Hold ALT to span multiple tiles." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:52 -msgid "Key to span multiple tiles" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:53 -msgid "Which key to hold to span multiple tiles." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:57 -#: src/prefs.ts:405 -msgid "Layouts" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:58 -msgid "The layouts available to the tiling managers and the snap assist." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:62 -msgid "Selected layouts" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:63 -msgid "Each monitor's active layout used by the monitor tiling manager." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:67 -#: src/prefs.ts:275 -msgid "Restore window size" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:68 -msgid "Restore the windows to their original size when untiled." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:72 -#: src/prefs.ts:801 -msgid "Enable next/previous window focus to wrap around" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:73 -#: src/prefs.ts:803 -msgid "When focusing next or previous window, wrap around at the window edge" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:77 -#: src/prefs.ts:810 -msgid "Restrict directional focus to tiled windows" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:78 -#: src/prefs.ts:812 -msgid "When using directional focus navigation, only consider tiled windows" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:82 -#: src/prefs.ts:266 -msgid "Enable auto-resize of the complementing tiled windows" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:83 -msgid "" -"When a tiled window is resized, auto-resize the other tiled windows near it." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:87 -msgid "Enable Snap Assistant blur" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:88 -msgid "Blur snap assistant" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:92 -msgid "Enable selected tile preview blur" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:93 -msgid "Blur selected tile previews" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:97 -msgid "Enable keybindings" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:98 -msgid "Move focused window through tiles by using keybindings." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:102 -msgid "Enable auto tiling" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:103 -msgid "" -"Automatically tile a new window to the best tile according to the current " -"layout." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:107 -msgid "Overridden settings" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:108 -msgid "The settings that are overridden and their old value." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:112 -msgid "Active Screen Edges" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:113 -msgid "" -"Drag windows against the top, left and right screen edges to resize them." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:117 -msgid "Drag agains top edge to maximize window" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:118 -#: src/prefs.ts:320 -msgid "Drag windows against the top edge to maximize them" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:122 -#: src/prefs.ts:284 -msgid "Add snap assistant and auto-tile buttons to window menu" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:123 -msgid "" -"Add snap assistant and auto-tile buttons in the menu that shows up when you " -"right click on a window title." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:127 -msgid "Add tiled windows group to alt+tab menu" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:128 -msgid "" -"Add the tiled windows to the alt+tab menu to open all the tiled windows at " -"once" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:132 -#: src/prefs.ts:111 -msgid "Snap Assistant threshold" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:133 -msgid "Snap Assistant's threshold to enlarge, shrink, open and close it." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:137 -msgid "Quarter tiling threshold" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:138 -msgid "Threshold to trigger quarter tiling." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:142 -#: src/prefs.ts:348 -msgid "Edge tiling offset" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:143 -msgid "Offset to trigger edge tiling (left and right edge)." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:147 -msgid "Enable window border" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:148 -msgid "Show a border around focused window." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:152 -msgid "Focused window border color" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:153 -msgid "The color of the focused window's border." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:157 -msgid "Use custom color" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:158 -msgid "Use the color defined here for the focused window's border." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:162 -msgid "Focused window border width" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:163 -msgid "The width of the focused window's border." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:167 -msgid "Enable smart window border radius" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:168 -msgid "Dinamically adapt to the window's border radius." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:172 -msgid "Snap assistant animation time (milliseconds)" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:173 -msgid "Animation time in milliseconds of the snap assistant" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:177 -msgid "Tile animation time (milliseconds)" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:178 -msgid "Animation time in milliseconds of the tiles" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:182 -#: src/prefs.ts:376 -msgid "Enable window suggestions for the tiling system" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:183 -msgid "" -"Provides smart suggestions to fill empty tiles when using the tiling system." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:187 -#: src/prefs.ts:385 -msgid "Enable window suggestions for the snap assistant" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:188 -msgid "" -"Offers suggestions to populate empty tiles when using the snap assistant." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:192 -#: src/prefs.ts:394 -msgid "Enable window suggestions for screen edge snapping" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:193 -msgid "Suggests windows to occupy empty tiles when snapping to screen edges." -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:199 -msgid "Move focused window to the tile to its right" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:203 -msgid "Move focused window to the tile to its left" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:207 -msgid "Move focused window to the tile above" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:211 -msgid "Move focused window to the tile below" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:215 -msgid "Span focused window to the tile to its right" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:219 -msgid "Span focused window to the tile to its left" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:223 -msgid "Span focused window to the tile above" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:227 -msgid "Span focused window to the tile below" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:231 -msgid "Resize the focused window to span all tiles" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:235 -msgid "Untile the focused window" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:239 -#: src/prefs.ts:653 -msgid "Move the focused window to the center of the screen" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:243 -msgid "Focus the window to the right the current focused window" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:247 -#: src/prefs.ts:669 -msgid "Focus the window to the left of the current focused window" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:251 -#: src/prefs.ts:676 -msgid "Focus the window above the current focused window" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:255 -#: src/prefs.ts:683 -msgid "Focus the window below the current focused window" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:259 -#: src/prefs.ts:690 -msgid "Focus the window next to the current focused window" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:263 -#: src/prefs.ts:697 -msgid "Focus the window prior to the current focused window" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:267 -#: src/prefs.ts:705 -msgid "Minimize all the other windows and show only the focused window" -msgstr "" - -#: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml:271 -#: src/prefs.ts:713 -msgid "Cycle through available workspace layouts" -msgstr "" - -#: src/components/altTab/MultipleWindowsIcon.ts:59 -msgid "Tiled windows" -msgstr "" - -#: src/components/editor/editorDialog.ts:47 -msgid "Select the layout to edit" -msgstr "" - -#: src/components/editor/editorDialog.ts:71 -msgid "Close" -msgstr "" - -#: src/components/editor/editorDialog.ts:100 -msgid "to split a tile" -msgstr "" - -#: src/components/editor/editorDialog.ts:141 -msgid "to split a tile vertically" -msgstr "" - -#: src/components/editor/editorDialog.ts:163 -msgid "to delete a tile" -msgstr "" - -#: src/components/editor/editorDialog.ts:189 -msgid "use the indicator button to save or cancel" -msgstr "" - -#: src/components/editor/editorDialog.ts:209 -msgid "How to use the editor" -msgstr "" - -#: src/components/editor/editorDialog.ts:219 -msgid "Start editing" -msgstr "" - -#: src/components/window_menu/overriddenWindowMenu.ts:167 -msgid "Move to best tile" -msgstr "" - -#: src/components/window_menu/overriddenWindowMenu.ts:189 -msgid "Move to leftmost tile" -msgstr "" - -#: src/components/window_menu/overriddenWindowMenu.ts:212 -msgid "Move to rightmost tile" -msgstr "" - -#: src/indicator/defaultMenu.ts:312 -msgid "Edit Layouts" -msgstr "" - -#: src/indicator/defaultMenu.ts:321 -msgid "New Layout" -msgstr "" - -#: src/indicator/editingMenu.ts:24 -msgid "Menu" -msgstr "" - -#: src/indicator/editingMenu.ts:32 -msgid "Info" -msgstr "" - -#: src/indicator/editingMenu.ts:40 src/prefs.ts:427 src/prefs.ts:835 -msgid "Save" -msgstr "" - -#: src/indicator/editingMenu.ts:51 src/prefs.ts:428 src/prefs.ts:485 -#: src/prefs.ts:836 src/prefs.ts:895 -msgid "Cancel" -msgstr "" - -#: src/prefs.ts:68 +#: dist/prefs.js:59 msgid "General" msgstr "" -#: src/prefs.ts:75 +#: dist/prefs.js:64 msgid "Appearance" msgstr "" -#: src/prefs.ts:76 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "" -#: src/prefs.ts:82 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "" -#: src/prefs.ts:83 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "" -#: src/prefs.ts:90 +#: dist/prefs.js:76 +msgid "Inner gaps" +msgstr "" + +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "" -#: src/prefs.ts:97 +#: dist/prefs.js:82 +msgid "Outer gaps" +msgstr "" + +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "" -#: src/prefs.ts:102 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "" -#: src/prefs.ts:104 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "" -#: src/prefs.ts:113 +#: dist/prefs.js:95 +msgid "Snap Assistant threshold" +msgstr "" + +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "" -#: src/prefs.ts:123 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "" -#: src/prefs.ts:124 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "" -#: src/prefs.ts:130 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "" -#: src/prefs.ts:131 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "" -#: src/prefs.ts:136 +#: dist/prefs.js:118 msgid "Window border" msgstr "" -#: src/prefs.ts:137 src/prefs.ts:144 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "" -#: src/prefs.ts:143 +#: dist/prefs.js:125 msgid "Enable" msgstr "" -#: src/prefs.ts:150 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "" -#: src/prefs.ts:151 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +msgid "Dynamically adapt to the window's actual border radius" msgstr "" -#: src/prefs.ts:157 +#: dist/prefs.js:139 msgid "Width" msgstr "" -#: src/prefs.ts:158 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "" -#: src/prefs.ts:167 +#: dist/prefs.js:149 msgid "Border color" msgstr "" -#: src/prefs.ts:168 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "" -#: src/prefs.ts:185 +#: dist/prefs.js:166 msgid "Animations" msgstr "" -#: src/prefs.ts:186 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "" -#: src/prefs.ts:192 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "" -#: src/prefs.ts:193 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "" -#: src/prefs.ts:201 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "" -#: src/prefs.ts:202 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "" -#: src/prefs.ts:210 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "" -#: src/prefs.ts:211 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "" -#: src/prefs.ts:217 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "" -#: src/prefs.ts:218 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "" -#: src/prefs.ts:224 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "" -#: src/prefs.ts:225 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "" -#: src/prefs.ts:235 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "" -#: src/prefs.ts:237 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" msgstr "" -#: src/prefs.ts:248 +#: dist/prefs.js:220 +msgid "Span multiple tiles" +msgstr "" + +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "" -#: src/prefs.ts:259 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "" -#: src/prefs.ts:260 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "" -#: src/prefs.ts:268 +#: dist/prefs.js:236 +msgid "Enable auto-resize of the complementing tiled windows" +msgstr "" + +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" -#: src/prefs.ts:277 +#: dist/prefs.js:244 +msgid "Restore window size" +msgstr "" + +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "" -#: src/prefs.ts:286 +#: dist/prefs.js:252 +msgid "Add snap assistant and auto-tile buttons to window menu" +msgstr "" + +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" msgstr "" -#: src/prefs.ts:293 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "" -#: src/prefs.ts:295 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "" -#: src/prefs.ts:302 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "" -#: src/prefs.ts:304 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" -#: src/prefs.ts:319 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "" -#: src/prefs.ts:330 +#: dist/prefs.js:284 +msgid "Drag windows against the top edge to maximize them" +msgstr "" + +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "" -#: src/prefs.ts:331 +#: dist/prefs.js:294 #, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "" -#: src/prefs.ts:349 +#: dist/prefs.js:310 +msgid "Edge tiling offset" +msgstr "" + +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" -#: src/prefs.ts:369 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "" -#: src/prefs.ts:370 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "" -#: src/prefs.ts:378 +#: dist/prefs.js:339 +msgid "Enable window suggestions for the tiling system" +msgstr "" + +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" -#: src/prefs.ts:387 +#: dist/prefs.js:347 +msgid "Enable window suggestions for the snap assistant" +msgstr "" + +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" -#: src/prefs.ts:396 +#: dist/prefs.js:355 +msgid "Enable window suggestions for screen edge snapping" +msgstr "" + +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" -#: src/prefs.ts:406 +#: dist/prefs.js:363 +msgid "Layouts" +msgstr "" + +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "" -#: src/prefs.ts:411 src/prefs.ts:412 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "" -#: src/prefs.ts:413 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "" -#: src/prefs.ts:419 src/prefs.ts:420 src/prefs.ts:424 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "" -#: src/prefs.ts:421 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "" -#: src/prefs.ts:476 src/prefs.ts:477 +#: dist/prefs.js:383 dist/prefs.js:767 +msgid "Save" +msgstr "" + +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 +msgid "Cancel" +msgstr "" + +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "" -#: src/prefs.ts:478 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "" -#: src/prefs.ts:481 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "" -#: src/prefs.ts:484 src/prefs.ts:894 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "" -#: src/prefs.ts:538 src/prefs.ts:539 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "" -#: src/prefs.ts:540 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "" -#: src/prefs.ts:556 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "" -#: src/prefs.ts:558 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "" -#: src/prefs.ts:582 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "" -#: src/prefs.ts:583 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "" -#: src/prefs.ts:589 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "" -#: src/prefs.ts:590 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "" -#: src/prefs.ts:596 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "" -#: src/prefs.ts:597 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "" -#: src/prefs.ts:603 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "" -#: src/prefs.ts:604 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "" -#: src/prefs.ts:610 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "" -#: src/prefs.ts:611 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "" -#: src/prefs.ts:617 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "" -#: src/prefs.ts:618 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "" -#: src/prefs.ts:624 +#: dist/prefs.js:566 msgid "Span window above" msgstr "" -#: src/prefs.ts:625 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "" -#: src/prefs.ts:631 +#: dist/prefs.js:573 msgid "Span window down" msgstr "" -#: src/prefs.ts:632 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "" -#: src/prefs.ts:638 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "" -#: src/prefs.ts:639 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "" -#: src/prefs.ts:645 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "" -#: src/prefs.ts:652 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "" -#: src/prefs.ts:659 +#: dist/prefs.js:597 +msgid "Move the focused window to the center of the screen" +msgstr "" + +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "" -#: src/prefs.ts:661 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "" -#: src/prefs.ts:668 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "" -#: src/prefs.ts:675 +#: dist/prefs.js:616 +msgid "Focus the window to the left of the current focused window" +msgstr "" + +#: dist/prefs.js:622 msgid "Focus window above" msgstr "" -#: src/prefs.ts:682 +#: dist/prefs.js:623 +msgid "Focus the window above the current focused window" +msgstr "" + +#: dist/prefs.js:629 msgid "Focus window below" msgstr "" -#: src/prefs.ts:689 +#: dist/prefs.js:630 +msgid "Focus the window below the current focused window" +msgstr "" + +#: dist/prefs.js:636 msgid "Focus next window" msgstr "" -#: src/prefs.ts:696 +#: dist/prefs.js:637 +msgid "Focus the window next to the current focused window" +msgstr "" + +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "" -#: src/prefs.ts:703 +#: dist/prefs.js:644 +msgid "Focus the window prior to the current focused window" +msgstr "" + +#: dist/prefs.js:650 msgid "Highlight focused window" msgstr "" -#: src/prefs.ts:712 +#: dist/prefs.js:652 +msgid "Minimize all the other windows and show only the focused window" +msgstr "" + +#: dist/prefs.js:659 msgid "Cycle layouts" msgstr "" -#: src/prefs.ts:746 +#: dist/prefs.js:660 +msgid "Cycle through available workspace layouts" +msgstr "" + +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "" -#: src/prefs.ts:774 src/prefs.ts:775 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "" -#: src/prefs.ts:819 +#: dist/prefs.js:737 +msgid "Enable next/previous window focus to wrap around" +msgstr "" + +#: dist/prefs.js:739 +msgid "When focusing next or previous window, wrap around at the window edge" +msgstr "" + +#: dist/prefs.js:745 +msgid "Restrict directional focus to tiled windows" +msgstr "" + +#: dist/prefs.js:747 +msgid "When using directional focus navigation, only consider tiled windows" +msgstr "" + +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "" -#: src/prefs.ts:821 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "" -#: src/prefs.ts:827 src/prefs.ts:828 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "" -#: src/prefs.ts:829 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "" -#: src/prefs.ts:832 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "" -#: src/prefs.ts:839 +#: dist/prefs.js:771 msgid "Text file" msgstr "" -#: src/prefs.ts:886 src/prefs.ts:887 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "" -#: src/prefs.ts:888 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "" -#: src/prefs.ts:891 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "" -#: src/prefs.ts:937 src/prefs.ts:938 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "" -#: src/prefs.ts:939 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "" -#: src/prefs.ts:957 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "" -#: src/prefs.ts:963 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "" -#: src/prefs.ts:969 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "" -#: src/prefs.ts:978 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "" -#: src/prefs.ts:985 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "" -#: src/prefs.ts:1238 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +msgid "Follow quarters or screen halves" +msgstr "" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "" -#: src/prefs.ts:1239 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "" -#: src/prefs.ts:1328 src/prefs.ts:1357 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "" -#: src/prefs.ts:1360 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "" diff --git a/translations/tr.po b/translations/tr.po index 1423b5ee..8220c003 100644 --- a/translations/tr.po +++ b/translations/tr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: 2025-05-09 10:05+0300\n" "Last-Translator: Osman KARAGÖZ \n" "Language-Team: \n" @@ -18,165 +18,165 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.6\n" -#: dist/prefs.js:793 +#: dist/prefs.js:59 msgid "General" msgstr "Genel" -#: dist/prefs.js:798 +#: dist/prefs.js:64 msgid "Appearance" msgstr "Görünüm" -#: dist/prefs.js:799 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "Tiling Shell'in görünümünü yapılandır" -#: dist/prefs.js:804 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "Gösterge Düğmesini Göster" -#: dist/prefs.js:805 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "Panelde gösterge düğmesinin gösterilip gösterilmeyeceği" -#: dist/prefs.js:810 +#: dist/prefs.js:76 msgid "Inner gaps" msgstr "İç boşluklar" -#: dist/prefs.js:811 +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "Pencereler arasındaki boşluklar" -#: dist/prefs.js:816 +#: dist/prefs.js:82 msgid "Outer gaps" msgstr "Dış boşluklar" -#: dist/prefs.js:817 +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "Pencere ile ekran kenarları arasındaki boşluklar" -#: dist/prefs.js:821 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "Bulanıklık (deneysel özellik)" -#: dist/prefs.js:823 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "" "Yerleşim Yardımcısına ve döşeme önizlemelerine bulanıklık efekti uygula" -#: dist/prefs.js:829 +#: dist/prefs.js:95 msgid "Snap Assistant threshold" msgstr "Yerleşim Yardımcısı eşiği" -#: dist/prefs.js:831 +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "Yerleşim Yardımcısını açmak için işaretçi ile arasındaki en az mesafe" -#: dist/prefs.js:840 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "Yerleşim Yardımcısı" -#: dist/prefs.js:841 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "Yerleşim Yardımcısına bulanıklık efekti uygula" -#: dist/prefs.js:847 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "Seçili döşeme önizlemesi" -#: dist/prefs.js:848 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "Seçili döşeme önizlemesine bulanıklık efekti uygula" -#: dist/prefs.js:852 +#: dist/prefs.js:118 msgid "Window border" msgstr "Pencere kenarlığı" -#: dist/prefs.js:853 dist/prefs.js:860 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "Odaklanan pencere etrafında kenarlık göster" -#: dist/prefs.js:859 +#: dist/prefs.js:125 msgid "Enable" msgstr "Etkinleştir" -#: dist/prefs.js:866 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "Akıllı köşe yuvalama" -#: dist/prefs.js:867 +#: dist/prefs.js:133 #, fuzzy -msgid "Dynamically adapt to the window’s actual border radius" +msgid "Dynamically adapt to the window's actual border radius" msgstr "Pencerenin gerçek köşe yuvarlaklığına dinamik olarak uyum sağlar" -#: dist/prefs.js:873 +#: dist/prefs.js:139 msgid "Width" msgstr "Genişlik" -#: dist/prefs.js:874 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "Kenarlığın boyutu" -#: dist/prefs.js:883 +#: dist/prefs.js:149 msgid "Border color" msgstr "Kenarlık rengi" -#: dist/prefs.js:884 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "Kenarlık rengini seçin" -#: dist/prefs.js:900 +#: dist/prefs.js:166 msgid "Animations" msgstr "Animasyonlar" -#: dist/prefs.js:901 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "Animasyonları özelleştir" -#: dist/prefs.js:907 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "Yerleşim yardımcısı animasyon süresi" -#: dist/prefs.js:908 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "Yerleşim yardımcısı animasyon süresi (milisaniye cinsinden)" -#: dist/prefs.js:916 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "Döşeme animasyon süresi" -#: dist/prefs.js:917 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "Döşeme animasyon süresi (milisaniye cinsinden)" -#: dist/prefs.js:923 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "Davranış" -#: dist/prefs.js:924 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "Tiling Shell'in davranışını yapılandır" -#: dist/prefs.js:929 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "Yerleşim Yardımcısını Etkinleştir" -#: dist/prefs.js:930 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "Pencereyi ekranın üstüne taşıyarak yerleşim yardımcısını etkinleştir" -#: dist/prefs.js:935 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "Döşeme Sistemini Etkinleştir" -#: dist/prefs.js:936 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "Bir pencereyi döşemek için taşırken etkinleştirme tuşunu basılı tutun" -#: dist/prefs.js:944 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "Döşeme Sistemi devre dışı bırakma tuşu" -#: dist/prefs.js:946 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -184,49 +184,49 @@ msgstr "" "Döşeme sistemini devre dışı bırakmak için pencereyi taşırken devre dışı " "bırakma tuşunu basılı tutun" -#: dist/prefs.js:954 +#: dist/prefs.js:220 msgid "Span multiple tiles" msgstr "Birden çok döşemeyi kapsa" -#: dist/prefs.js:955 +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "Birden çok döşemeyi kapsamak için etkinleştirme tuşunu basılı tutun" -#: dist/prefs.js:964 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "Otomatik Döşemeyi Etkinleştir" -#: dist/prefs.js:965 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "Yeni pencereleri en uygun döşemeye otomatik olarak yerleştir" -#: dist/prefs.js:970 +#: dist/prefs.js:236 msgid "Enable auto-resize of the complementing tiled windows" msgstr "" "Tamamlayıcı döşenmiş pencerelerin otomatik boyutlandırmasını etkinleştir" -#: dist/prefs.js:972 +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "Döşenmiş bir pencere yeniden boyutlandırıldığında, yakınındaki diğer " "döşenmiş pencereleri otomatik olarak yeniden boyutlandır" -#: dist/prefs.js:978 +#: dist/prefs.js:244 msgid "Restore window size" msgstr "Pencere boyutunu geri yükle" -#: dist/prefs.js:980 +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "" "Döşeme kaldırıldığında pencerelerin orijinal boyutlarına geri yüklenip " "yüklenmeyeceği" -#: dist/prefs.js:986 +#: dist/prefs.js:252 msgid "Add snap assistant and auto-tile buttons to window menu" msgstr "Pencere menüsüne yerleşim yardımcısı ve otomatik döşeme düğmeleri ekle" -#: dist/prefs.js:988 +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -234,431 +234,453 @@ msgstr "" "Bir pencere başlığına sağ tıkladığınızda açılan menüye yerleşim yardımcısı " "ve otomatik döşeme düğmeleri ekler" -#: dist/prefs.js:994 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "" -#: dist/prefs.js:996 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "" -#: dist/prefs.js:1001 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "Ekran Kenarları" -#: dist/prefs.js:1003 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" "Pencereleri yeniden boyutlandırmak için üst, sol ve sağ ekran kenarlarına " "sürükleyin" -#: dist/prefs.js:1017 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "Pencereyi büyütmek için üst kenara sürükleyin" -#: dist/prefs.js:1018 +#: dist/prefs.js:284 msgid "Drag windows against the top edge to maximize them" msgstr "Pencereleri büyütmek için üst kenara sürükleyin" -#: dist/prefs.js:1027 +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "Çeyrek döşeme etkinleştirme alanı" -#: dist/prefs.js:1028 +#: dist/prefs.js:294 #, fuzzy, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "Çeyrek döşemeyi tetiklemek için etkinleştirme alanı (ekranın %'si)" -#: dist/prefs.js:1044 +#: dist/prefs.js:310 msgid "Edge tiling offset" msgstr "" -#: dist/prefs.js:1045 +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" -#: dist/prefs.js:1062 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "Pencere önerileri" -#: dist/prefs.js:1063 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "Pencere önerilerini etkinleştir ve devre dışı bırak" -#: dist/prefs.js:1068 +#: dist/prefs.js:339 msgid "Enable window suggestions for the tiling system" msgstr "Döşeme sistemi için pencere önerilerini etkinleştir" -#: dist/prefs.js:1070 +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" "Döşeme sistemi kullanılırken boş döşemeleri doldurmak için akıllı öneriler " "sağlar" -#: dist/prefs.js:1076 +#: dist/prefs.js:347 msgid "Enable window suggestions for the snap assistant" msgstr "Yerleşim yardımcısı için pencere önerilerini etkinleştir" -#: dist/prefs.js:1078 +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" "Yerleşim yardımcısı kullanılırken boş döşemeleri doldurmak için öneriler " "sunar" -#: dist/prefs.js:1084 +#: dist/prefs.js:355 msgid "Enable window suggestions for screen edge snapping" msgstr "Ekran kenarına yapıştırma için pencere önerilerini etkinleştir" -#: dist/prefs.js:1086 +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" "Ekran kenarlarına yapıştırırken boş döşemeleri doldurmak için pencere " "önerileri sunar" -#: dist/prefs.js:1092 +#: dist/prefs.js:363 msgid "Layouts" msgstr "Yerleşimler" -#: dist/prefs.js:1093 +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "Tiling Shell'in yerleşimlerini yapılandır" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "Yerleşimleri düzenle" -#: dist/prefs.js:1099 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "Yerleşim düzenleyiciyi aç" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "Yerleşimleri dışa aktar" -#: dist/prefs.js:1106 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "Yerleşimleri bir dosyaya aktar" -#: dist/prefs.js:1112 dist/prefs.js:1496 +#: dist/prefs.js:383 dist/prefs.js:767 msgid "Save" msgstr "Kaydet" -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 msgid "Cancel" msgstr "Vazgeç" -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "Yerleşimleri içe aktar" -#: dist/prefs.js:1160 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "Bir dosyadan yerleşimleri içe aktar" -#: dist/prefs.js:1163 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "Yerleşim dosyasını seç" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "Aç" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "Yerleşimleri sıfırla" -#: dist/prefs.js:1216 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "Varsayılan yerleşimleri geri yükle" -#: dist/prefs.js:1229 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "Klavye kısayolları" -#: dist/prefs.js:1231 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "Odaklanan pencerede işlem yapmak için kısayol tuşlarını kullanın" -#: dist/prefs.js:1249 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "Pencereyi sağ döşemeye taşı" -#: dist/prefs.js:1251 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "Odaklanan pencereyi sağındaki döşemeye taşı" -#: dist/prefs.js:1260 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "Pencereyi sol döşemeye taşı" -#: dist/prefs.js:1261 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "Odaklanan pencereyi solundaki döşemeye taşı" -#: dist/prefs.js:1267 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "Pencereyi yukarıdaki döşemeye taşı" -#: dist/prefs.js:1268 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "Odaklanan pencereyi yukarıdaki döşemeye taşı" -#: dist/prefs.js:1274 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "Pencereyi aşağıdaki döşemeye taşı" -#: dist/prefs.js:1275 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "Odaklanan pencereyi aşağıdaki döşemeye taşı" -#: dist/prefs.js:1281 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "Pencereyi sağ döşemeye genişlet" -#: dist/prefs.js:1282 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "Odaklanan pencereyi sağındaki döşemeye genişlet" -#: dist/prefs.js:1288 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "Pencereyi sol döşemeye genişlet" -#: dist/prefs.js:1289 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "Odaklanan pencereyi solundaki döşemeye genişlet" -#: dist/prefs.js:1295 +#: dist/prefs.js:566 msgid "Span window above" msgstr "Pencereyi yukarıdaki döşemeye genişlet" -#: dist/prefs.js:1296 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "Odaklanan pencereyi yukarıdaki döşemeye genişlet" -#: dist/prefs.js:1302 +#: dist/prefs.js:573 msgid "Span window down" msgstr "Pencereyi aşağıdaki döşemeye genişlet" -#: dist/prefs.js:1303 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "Odaklanan pencereyi aşağıdaki döşemeye genişlet" -#: dist/prefs.js:1309 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "Pencereyi tüm döşemelere genişlet" -#: dist/prefs.js:1310 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "Odaklanan pencereyi tüm döşemelere genişlet" -#: dist/prefs.js:1316 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "Odaklanan pencereyi döşemeden çıkar" -#: dist/prefs.js:1324 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "Pencereyi merkeze taşı" -#: dist/prefs.js:1326 +#: dist/prefs.js:597 msgid "Move the focused window to the center of the screen" msgstr "Odaklanan pencereyi ekranın merkezine taşı" -#: dist/prefs.js:1335 +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "Sağdaki pencereye odaklan" -#: dist/prefs.js:1337 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "Geçerli odaklı pencerenin sağındaki pencereye odaklan" -#: dist/prefs.js:1344 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "Soldaki pencereye odaklan" -#: dist/prefs.js:1345 +#: dist/prefs.js:616 msgid "Focus the window to the left of the current focused window" msgstr "Geçerli odaklı pencerenin solundaki pencereye odaklan" -#: dist/prefs.js:1351 +#: dist/prefs.js:622 msgid "Focus window above" msgstr "Yukarıdaki pencereye odaklan" -#: dist/prefs.js:1352 +#: dist/prefs.js:623 msgid "Focus the window above the current focused window" msgstr "Geçerli odaklı pencerenin yukarısındaki pencereye odaklan" -#: dist/prefs.js:1358 +#: dist/prefs.js:629 msgid "Focus window below" msgstr "Aşağıdaki pencereye odaklan" -#: dist/prefs.js:1359 +#: dist/prefs.js:630 msgid "Focus the window below the current focused window" msgstr "Geçerli odaklı pencerenin aşağısındaki pencereye odaklan" -#: dist/prefs.js:1365 +#: dist/prefs.js:636 msgid "Focus next window" msgstr "Sonraki pencereye odaklan" -#: dist/prefs.js:1366 +#: dist/prefs.js:637 msgid "Focus the window next to the current focused window" msgstr "Geçerli odaklı pencerenin yanındaki pencereye odaklan" -#: dist/prefs.js:1372 +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "Önceki pencereye odaklan" -#: dist/prefs.js:1373 +#: dist/prefs.js:644 msgid "Focus the window prior to the current focused window" msgstr "Geçerli odaklı pencereden önceki pencereye odaklan" -#: dist/prefs.js:1379 +#: dist/prefs.js:650 msgid "Highlight focused window" msgstr "Odaklanan pencereyi vurgula" -#: dist/prefs.js:1381 +#: dist/prefs.js:652 msgid "Minimize all the other windows and show only the focused window" msgstr "Diğer tüm pencereleri küçült ve yalnızca odaklanan pencereyi göster" -#: dist/prefs.js:1388 +#: dist/prefs.js:659 #, fuzzy msgid "Cycle layouts" msgstr "Yerleşimleri sıfırla" -#: dist/prefs.js:1389 +#: dist/prefs.js:660 msgid "Cycle through available workspace layouts" msgstr "" -#: dist/prefs.js:1415 +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "Tüm Kısayolları Görüntüle ve Özelleştir" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "Kısayolları Görüntüle ve Özelleştir" -#: dist/prefs.js:1466 +#: dist/prefs.js:737 msgid "Enable next/previous window focus to wrap around" msgstr "Sonraki/önceki pencere odaklamasının dönmesini etkinleştir" -#: dist/prefs.js:1468 +#: dist/prefs.js:739 msgid "When focusing next or previous window, wrap around at the window edge" msgstr "Sonraki veya önceki pencereye odaklanırken pencere kenarında dön" -#: dist/prefs.js:1474 +#: dist/prefs.js:745 msgid "Restrict directional focus to tiled windows" msgstr "" -#: dist/prefs.js:1476 +#: dist/prefs.js:747 msgid "When using directional focus navigation, only consider tiled windows" msgstr "" -#: dist/prefs.js:1481 +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "İçe aktar, dışa aktar ve sıfırla" -#: dist/prefs.js:1483 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "Tiling Shell ayarlarını içe aktar, dışa aktar ve sıfırla" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "Ayarları dışa aktar" -#: dist/prefs.js:1490 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "Ayarları bir dosyaya aktar" -#: dist/prefs.js:1493 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "Ayarları bir metin dosyasına aktar" -#: dist/prefs.js:1500 +#: dist/prefs.js:771 msgid "Text file" msgstr "Metin dosyası" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "Ayarları içe aktar" -#: dist/prefs.js:1545 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "Ayarları bir dosyadan içe aktar" -#: dist/prefs.js:1548 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "İçe aktarılacak bir metin dosyası seçin" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "Ayarları sıfırla" -#: dist/prefs.js:1592 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "Varsayılan ayarları geri yükle" -#: dist/prefs.js:1607 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "Ko-fi üzerinden bağış yap" -#: dist/prefs.js:1613 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "Hata bildir" -#: dist/prefs.js:1619 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "Özellik iste" -#: dist/prefs.js:1627 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "" "Sorunlarınız mı var, yeni bir özellik önermek veya katkıda bulunmak mı " "istiyorsunuz?" -#: dist/prefs.js:1634 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "Yeni bir konu aç" -#: dist/prefs.js:1814 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +msgid "Follow quarters or screen halves" +msgstr "" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "" -#: dist/prefs.js:1815 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "Yeni kısayol…" -#: dist/prefs.js:1892 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "Temizlemek için Backspace kullan" -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "Yerleşimleri Düzenle" +#~ msgid "Edit Layouts" +#~ msgstr "Yerleşimleri Düzenle" -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "Yeni Yerleşim" +#~ msgid "New Layout" +#~ msgstr "Yeni Yerleşim" -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "bir döşemeyi bölmek için" +#~ msgid "to split a tile" +#~ msgstr "bir döşemeyi bölmek için" -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "bir döşemeyi dikey olarak bölmek için" +#~ msgid "to split a tile vertically" +#~ msgstr "bir döşemeyi dikey olarak bölmek için" -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "bir döşemeyi silmek için" +#~ msgid "to delete a tile" +#~ msgstr "bir döşemeyi silmek için" -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "kaydetmek veya vazgeçmek için gösterge düğmesini kullanın" +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "kaydetmek veya vazgeçmek için gösterge düğmesini kullanın" diff --git a/translations/uk.po b/translations/uk.po index 1066365e..f300b4a3 100644 --- a/translations/uk.po +++ b/translations/uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiling Shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: 2025-03-17 02:23+0200\n" "Last-Translator: Yevhen Popok \n" "Language-Team: Ukrainian\n" @@ -17,167 +17,168 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.4.4\n" -#: dist/prefs.js:793 +#: dist/prefs.js:59 msgid "General" msgstr "Загальне" -#: dist/prefs.js:798 +#: dist/prefs.js:64 msgid "Appearance" msgstr "Вигляд" -#: dist/prefs.js:799 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "Налаштуйте вигляд Tiling Shell" -#: dist/prefs.js:804 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "Показувати індикатор" -#: dist/prefs.js:805 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "Чи показувати індикатор на панелі" -#: dist/prefs.js:810 +#: dist/prefs.js:76 msgid "Inner gaps" msgstr "Внутрішні відступи" -#: dist/prefs.js:811 +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "Відступи між вікнами" -#: dist/prefs.js:816 +#: dist/prefs.js:82 msgid "Outer gaps" msgstr "Зовнішні відступи" -#: dist/prefs.js:817 +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "Відступи між вікном та межами монітора" -#: dist/prefs.js:821 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "Розмиття (експериментальний функціонал)" -#: dist/prefs.js:823 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "" "Застосувати ефект розмиття до помічника з фіксації та попереднього перегляду " "мозаїки" -#: dist/prefs.js:829 +#: dist/prefs.js:95 msgid "Snap Assistant threshold" msgstr "Поріг помічника укладання" -#: dist/prefs.js:831 +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "" "Мінімальна відстань вказівника до помічника укладання, щоб викликати його" -#: dist/prefs.js:840 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "Помічник укладання" -#: dist/prefs.js:841 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "Застосувати ефект розмиття до помічника укладання" -#: dist/prefs.js:847 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "Передпоказ вибраної плитки" -#: dist/prefs.js:848 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "Застосувати ефект розмиття до передпоказу вибраної плитки" -#: dist/prefs.js:852 +#: dist/prefs.js:118 msgid "Window border" msgstr "Рамка вікна" -#: dist/prefs.js:853 dist/prefs.js:860 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "Показувати рамку навколо вікна з фокусом" -#: dist/prefs.js:859 +#: dist/prefs.js:125 msgid "Enable" msgstr "Увімкнути" -#: dist/prefs.js:866 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "Радіус розумної рамки" -#: dist/prefs.js:867 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +#, fuzzy +msgid "Dynamically adapt to the window's actual border radius" msgstr "Динамічне підлаштування радіуса рамки вікна " -#: dist/prefs.js:873 +#: dist/prefs.js:139 msgid "Width" msgstr "Ширина" -#: dist/prefs.js:874 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "Розмір рамки" -#: dist/prefs.js:883 +#: dist/prefs.js:149 msgid "Border color" msgstr "Колір рамки" -#: dist/prefs.js:884 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "Виберіть колір рамки" -#: dist/prefs.js:900 +#: dist/prefs.js:166 msgid "Animations" msgstr "Анімації" -#: dist/prefs.js:901 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "Налаштуйте анімації" -#: dist/prefs.js:907 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "Час анімації помічника укладання" -#: dist/prefs.js:908 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "Час анімації помічника укладання в мілісекундах" -#: dist/prefs.js:916 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "Час анімації плиток" -#: dist/prefs.js:917 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "Час анімації плиток в мілісекундах" -#: dist/prefs.js:923 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "Поведінка" -#: dist/prefs.js:924 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "Налаштуйте поведінку Tiling Shell" -#: dist/prefs.js:929 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "Увімкнути помічник укладання" -#: dist/prefs.js:930 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "Перемістіть вікно у верхню частину екрана для укладання з помічником" -#: dist/prefs.js:935 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "Увімкнути систему укладання" -#: dist/prefs.js:936 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "" "Утримуйте клавішу активації під час переміщення вікна для його укладання" -#: dist/prefs.js:944 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "Клавіша призупинення системи укладання" -#: dist/prefs.js:946 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -185,47 +186,47 @@ msgstr "" "Під час переміщення вікно утримуйте клавішу де, щоб призупинити систему " "укладання" -#: dist/prefs.js:954 +#: dist/prefs.js:220 msgid "Span multiple tiles" msgstr "Охоплення кількох плиток" -#: dist/prefs.js:955 +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "Утримуйте клавішу активації для охоплення кількох плиток" -#: dist/prefs.js:964 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "Увімкнути автоматичне укладання" -#: dist/prefs.js:965 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "Автоматично укласти нове вікно на найкращу плитку" -#: dist/prefs.js:970 +#: dist/prefs.js:236 msgid "Enable auto-resize of the complementing tiled windows" msgstr "Увімкнути автоматичну зміну розмірів прилеглих вікон" -#: dist/prefs.js:972 +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "" "Під час зміни розміру укладеного вікна, автоматично змінювати розміри " "укладених поруч вікон" -#: dist/prefs.js:978 +#: dist/prefs.js:244 msgid "Restore window size" msgstr "Відновлювати розмір вікна" -#: dist/prefs.js:980 +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "" "Відновлення вікон до їх початкових розмірів після відокремлення від плитки" -#: dist/prefs.js:986 +#: dist/prefs.js:252 msgid "Add snap assistant and auto-tile buttons to window menu" msgstr "Додати кнопки помічника укладання та авто-укладання в меню вікна" -#: dist/prefs.js:988 +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -233,442 +234,465 @@ msgstr "" "Додати кнопки помічника укладання та авто-укладання в меню вікна, що " "викликається натисканням правої клавіші на заголовку вікна" -#: dist/prefs.js:994 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "" -#: dist/prefs.js:996 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "" -#: dist/prefs.js:1001 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "Краї екрана" -#: dist/prefs.js:1003 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "" "Перетягніть вікно до верхнього, лівого чи правого країв екрана для зміни " "розміру вікна" -#: dist/prefs.js:1017 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "Перетягніть до верхнього краю для розгортання" -#: dist/prefs.js:1018 +#: dist/prefs.js:284 msgid "Drag windows against the top edge to maximize them" msgstr "Перетягніть вікно до верхнього краю екрана для розгортання вікна" -#: dist/prefs.js:1027 +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "Ділянка активації четвертинного укладання" -#: dist/prefs.js:1028 +#: dist/prefs.js:294 #, fuzzy, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "Ділянка, де активується четвертинне укладання (% екрана)" -#: dist/prefs.js:1044 +#: dist/prefs.js:310 msgid "Edge tiling offset" msgstr "" -#: dist/prefs.js:1045 +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" -#: dist/prefs.js:1062 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "Пропозиції вікон" -#: dist/prefs.js:1063 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "Увімкнути чи вимкнути пропозиції вікон" -#: dist/prefs.js:1068 +#: dist/prefs.js:339 msgid "Enable window suggestions for the tiling system" msgstr "Увімкнути пропозиції щодо вікон в системі укладання" -#: dist/prefs.js:1070 +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "" "Розумні пропозиції для заповнення вільних плиток під час використання " "системи укладання" -#: dist/prefs.js:1076 +#: dist/prefs.js:347 msgid "Enable window suggestions for the snap assistant" msgstr "Увімкнути пропозиції для помічника укладання" -#: dist/prefs.js:1078 +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "" "Пропонує заповнення вільних плиток під час використання помічника укладання" -#: dist/prefs.js:1084 +#: dist/prefs.js:355 msgid "Enable window suggestions for screen edge snapping" msgstr "Увімкнути пропозицію вікон під час укладання від краю екрана" -#: dist/prefs.js:1086 +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "" "Пропонує вікна для заповнення вільних плиток під час укладання від краю " "екрана" -#: dist/prefs.js:1092 +#: dist/prefs.js:363 msgid "Layouts" msgstr "Макети" -#: dist/prefs.js:1093 +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "Налаштуйте макети Tiling Shell" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "Редагувати макети" -#: dist/prefs.js:1099 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "Відкрити редактор макетів" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "Експортувати макети" -#: dist/prefs.js:1106 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "Експортувати макети до файлу" -#: dist/prefs.js:1112 dist/prefs.js:1496 +#: dist/prefs.js:383 dist/prefs.js:767 msgid "Save" msgstr "Зберегти" -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 msgid "Cancel" msgstr "Скасувати" -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "Імпортувати макети" -#: dist/prefs.js:1160 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "Імпортувати макети до файлу" -#: dist/prefs.js:1163 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "Вибрати файл макетів" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "Відкрити" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "Відновити макети" -#: dist/prefs.js:1216 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "Повернути типові макети" -#: dist/prefs.js:1229 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "Привʼязки клавіш" -#: dist/prefs.js:1231 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "Використайте гарячі клавіші для виконання дій над вікнами у фокусі" -#: dist/prefs.js:1249 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "Укласти вікно праворуч" -#: dist/prefs.js:1251 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "Перемістити вікно у фокусі до плитки праворуч" -#: dist/prefs.js:1260 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "Укласти вікно ліворуч" -#: dist/prefs.js:1261 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "Перемістити вікно у фокусі до плитки ліворуч" -#: dist/prefs.js:1267 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "Укласти вікно вгорі" -#: dist/prefs.js:1268 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "Перемістити вікно у фокусі до плитки вище" -#: dist/prefs.js:1274 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "Укласти вікно знизу" -#: dist/prefs.js:1275 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "Перемістити вікно у фокусі до плитки нижче" -#: dist/prefs.js:1281 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "Охопити плитку праворуч" -#: dist/prefs.js:1282 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "Збільшити розмір вікна у фокусі, охопивши плитку праворуч" -#: dist/prefs.js:1288 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "Охопити плитку ліворуч" -#: dist/prefs.js:1289 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "Збільшити розмір вікна у фокусі, охопивши плитку ліворуч" -#: dist/prefs.js:1295 +#: dist/prefs.js:566 msgid "Span window above" msgstr "Охопити плиту вгорі" -#: dist/prefs.js:1296 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "Збільшити розмір вікна у фокусі, охопивши плитку вгорі" -#: dist/prefs.js:1302 +#: dist/prefs.js:573 msgid "Span window down" msgstr "Охопити плитку знизу" -#: dist/prefs.js:1303 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "Збільшити розмір вікна у фокусі, охопивши плитку знизу" -#: dist/prefs.js:1309 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "Охопити всі плитки" -#: dist/prefs.js:1310 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "Збільшити розмір вікна у фокусі, охопивши всі плитки" -#: dist/prefs.js:1316 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "Відокремити вікно у фокусі від плитки" -#: dist/prefs.js:1324 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "Перемістити вікно у центр" -#: dist/prefs.js:1326 +#: dist/prefs.js:597 msgid "Move the focused window to the center of the screen" msgstr "Перемістити вікно у фокусі в центр екрана" -#: dist/prefs.js:1335 +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "Фокус до вікна праворуч" -#: dist/prefs.js:1337 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "" "Перемістити фокус до вікна, що знаходиться праворуч від поточного вікна у " "фокусі" -#: dist/prefs.js:1344 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "Фокус до вікна ліворуч" -#: dist/prefs.js:1345 +#: dist/prefs.js:616 msgid "Focus the window to the left of the current focused window" msgstr "" "Перемістити фокус до вікна, що знаходиться ліворуч від поточного вікна у " "фокусі" -#: dist/prefs.js:1351 +#: dist/prefs.js:622 msgid "Focus window above" msgstr "Фокус до вікна вище" -#: dist/prefs.js:1352 +#: dist/prefs.js:623 msgid "Focus the window above the current focused window" msgstr "" "Перемістити фокус до вікна, що знаходиться вище від поточного вікна у фокусі" -#: dist/prefs.js:1358 +#: dist/prefs.js:629 msgid "Focus window below" msgstr "Фокус до вікна нижче" -#: dist/prefs.js:1359 +#: dist/prefs.js:630 msgid "Focus the window below the current focused window" msgstr "" "Перемістити фокус до вікна, що знаходиться нижче від поточного вікна у фокусі" -#: dist/prefs.js:1365 +#: dist/prefs.js:636 msgid "Focus next window" msgstr "Фокус до наступного вікна" -#: dist/prefs.js:1366 +#: dist/prefs.js:637 msgid "Focus the window next to the current focused window" msgstr "" "Перемістити фокус до вікна, що є наступним відносно поточного вікна у фокусі" -#: dist/prefs.js:1372 +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "Фокус до попереднього вікна" -#: dist/prefs.js:1373 +#: dist/prefs.js:644 msgid "Focus the window prior to the current focused window" msgstr "" "Перемістити фокус до вікна, що є попереднім відносно поточного вікна у фокусі" -#: dist/prefs.js:1379 +#: dist/prefs.js:650 msgid "Highlight focused window" msgstr "Виділити вікно у фокусі" -#: dist/prefs.js:1381 +#: dist/prefs.js:652 msgid "Minimize all the other windows and show only the focused window" msgstr "Згорнути решту вікон та показати лише вікно у фокусі" -#: dist/prefs.js:1388 +#: dist/prefs.js:659 #, fuzzy msgid "Cycle layouts" msgstr "Відновити макети" -#: dist/prefs.js:1389 +#: dist/prefs.js:660 msgid "Cycle through available workspace layouts" msgstr "" -#: dist/prefs.js:1415 +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "Переглянути та налаштувати всі скорочення" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "Переглянути та налаштувати скорочення" -#: dist/prefs.js:1466 +#: dist/prefs.js:737 msgid "Enable next/previous window focus to wrap around" msgstr "" "Увімкнути циклічність переміщення фокуса до попереднього/наступного вікна" -#: dist/prefs.js:1468 +#: dist/prefs.js:739 msgid "When focusing next or previous window, wrap around at the window edge" msgstr "" "Під час переміщення фокуса до наступного чи попереднього вікна, для крайніх " "вікон використовувати циклічність" -#: dist/prefs.js:1474 +#: dist/prefs.js:745 msgid "Restrict directional focus to tiled windows" msgstr "" -#: dist/prefs.js:1476 +#: dist/prefs.js:747 msgid "When using directional focus navigation, only consider tiled windows" msgstr "" -#: dist/prefs.js:1481 +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "Імпортування, експортування та скидання" -#: dist/prefs.js:1483 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "Імпортування, експортування та скидання налаштувань Tiling Shell" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "Експортувати налаштування" -#: dist/prefs.js:1490 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "Експортувати налаштування до файлу" -#: dist/prefs.js:1493 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "Експортувати налаштування до текстового файлу" -#: dist/prefs.js:1500 +#: dist/prefs.js:771 msgid "Text file" msgstr "Текстовий файл" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "Імпортувати налаштування" -#: dist/prefs.js:1545 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "Імпортувати налаштування з файлу" -#: dist/prefs.js:1548 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "Виберіть текстовий файл для імпортування" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "Скинути налаштування" -#: dist/prefs.js:1592 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "Повернути типові налаштування" -#: dist/prefs.js:1607 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "Фінансова підтримка на ko-fi" -#: dist/prefs.js:1613 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "Повідомити про ваду" -#: dist/prefs.js:1619 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "Запит щодо функціоналу" -#: dist/prefs.js:1627 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "Маєте проблеми, хочете запропонувати новий фунціонал чи допомогти?" -#: dist/prefs.js:1634 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "Відкрийте нове завдання на" -#: dist/prefs.js:1814 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +#, fuzzy +msgid "Follow quarters or screen halves" +msgstr "Перемістити до найкращої плитки" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "" -#: dist/prefs.js:1815 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "Нове скорочення..." -#: dist/prefs.js:1892 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "Використайте Backspace, щоб очистити" -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "Редагувати макет" +#~ msgid "Edit Layouts" +#~ msgstr "Редагувати макет" -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "Новий макет" +#~ msgid "New Layout" +#~ msgstr "Новий макет" -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "для розділення плитки" +#~ msgid "to split a tile" +#~ msgstr "для розділення плитки" -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "для розділення плитки вертикально" +#~ msgid "to split a tile vertically" +#~ msgstr "для розділення плитки вертикально" -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "для вилучення плитки" +#~ msgid "to delete a tile" +#~ msgstr "для вилучення плитки" -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "використайте кнопку індикатора для збереження чи скасування" +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "використайте кнопку індикатора для збереження чи скасування" #~ msgid "Menu" #~ msgstr "Меню" @@ -688,9 +712,6 @@ msgstr "використайте кнопку індикатора для збе #~ msgid "Start editing" #~ msgstr "Почати редагування" -#~ msgid "Move to best tile" -#~ msgstr "Перемістити до найкращої плитки" - #~ msgid "Move to leftmost tile" #~ msgstr "Перемістити до крайньої лівої плитки" diff --git a/translations/zh_CN.po b/translations/zh_CN.po index 849ad38f..2890cb5d 100644 --- a/translations/zh_CN.po +++ b/translations/zh_CN.po @@ -17,163 +17,164 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.6\n" -#: dist/prefs.js:793 +#: dist/prefs.js:59 msgid "General" msgstr "通用" -#: dist/prefs.js:798 +#: dist/prefs.js:64 msgid "Appearance" msgstr "外观" -#: dist/prefs.js:799 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "配置 Tiling Shell 的外观" -#: dist/prefs.js:804 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "显示托盘图标" -#: dist/prefs.js:805 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "是否显示托盘图标" -#: dist/prefs.js:810 +#: dist/prefs.js:76 msgid "Inner gaps" msgstr "内间距" -#: dist/prefs.js:811 +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "窗口之间的间距" -#: dist/prefs.js:816 +#: dist/prefs.js:82 msgid "Outer gaps" msgstr "外间距" -#: dist/prefs.js:817 +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "屏幕和窗口之间的间距" -#: dist/prefs.js:821 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "模糊(实验性功能)" -#: dist/prefs.js:823 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "为窗口捕捉助手和窗口平铺预览启用模糊效果" -#: dist/prefs.js:829 +#: dist/prefs.js:95 msgid "Snap Assistant threshold" msgstr "窗口捕捉助手激活阈值" -#: dist/prefs.js:831 +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "光标激活窗口捕捉助手的最小距离" -#: dist/prefs.js:840 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "窗口捕捉助手" -#: dist/prefs.js:841 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "为窗口捕捉助手添加模糊效果" -#: dist/prefs.js:847 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "选中平铺预览" -#: dist/prefs.js:848 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "为选中的平铺预览启用模糊效果" -#: dist/prefs.js:852 +#: dist/prefs.js:118 msgid "Window border" msgstr "窗口边框" -#: dist/prefs.js:853 dist/prefs.js:860 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "在当前聚焦的窗口周围显示边框" -#: dist/prefs.js:859 +#: dist/prefs.js:125 msgid "Enable" msgstr "启用" -#: dist/prefs.js:866 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "智能边框圆角弧度" -#: dist/prefs.js:867 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +#, fuzzy +msgid "Dynamically adapt to the window's actual border radius" msgstr "动态适配窗口实际的边框圆角弧度" -#: dist/prefs.js:873 +#: dist/prefs.js:139 msgid "Width" msgstr "宽度" -#: dist/prefs.js:874 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "边框的大小" -#: dist/prefs.js:883 +#: dist/prefs.js:149 msgid "Border color" msgstr "边框颜色" -#: dist/prefs.js:884 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "选择边框的颜色" -#: dist/prefs.js:900 +#: dist/prefs.js:166 msgid "Animations" msgstr "动画效果" -#: dist/prefs.js:901 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "自定义动画效果" -#: dist/prefs.js:907 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "窗口捕捉助手动画时长" -#: dist/prefs.js:908 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "窗口捕捉助手动画时长(单位:毫秒)" -#: dist/prefs.js:916 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "窗口平铺动画时长" -#: dist/prefs.js:917 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "窗口平铺动画时长(单位:毫秒)" -#: dist/prefs.js:923 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "行为" -#: dist/prefs.js:924 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "自定义 Tiling Shell 的行为" -#: dist/prefs.js:929 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "启用窗口捕捉助手" -#: dist/prefs.js:930 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "移动窗口到显示器顶部以激活窗口捕捉助手" -#: dist/prefs.js:935 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "激活窗口平铺快捷键" -#: dist/prefs.js:936 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "在移动窗口时按住激活窗口平铺快捷键以将其平铺" -#: dist/prefs.js:944 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "停用平铺快捷键" -#: dist/prefs.js:946 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" @@ -181,324 +182,324 @@ msgstr "" "拖拽时按住停用平铺快捷键以暂时关闭平铺功能\n" "(译者注:仅当激活窗口平铺快捷键设置为 None 时生效)" -#: dist/prefs.js:954 +#: dist/prefs.js:220 msgid "Span multiple tiles" msgstr "扩展到多个平铺位置" -#: dist/prefs.js:955 +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "按住激活窗口扩展快捷键以扩展到其他平铺位置" -#: dist/prefs.js:964 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "启用自动平铺" -#: dist/prefs.js:965 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "自动平铺新窗口到最佳平铺位置" -#: dist/prefs.js:970 +#: dist/prefs.js:236 msgid "Enable auto-resize of the complementing tiled windows" msgstr "邻近平铺窗口自动调整大小" -#: dist/prefs.js:972 +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "调整一个平铺窗口的大小时,自动调整其他邻近窗口的大小" -#: dist/prefs.js:978 +#: dist/prefs.js:244 msgid "Restore window size" msgstr "恢复窗口大小" -#: dist/prefs.js:980 +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "取消平铺时还原原本的窗口大小" -#: dist/prefs.js:986 +#: dist/prefs.js:252 msgid "Add snap assistant and auto-tile buttons to window menu" msgstr "在窗口右键菜单中添加窗口捕捉助手和自动平铺按钮" -#: dist/prefs.js:988 +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" msgstr "右键单击窗口标题时,在窗口菜单显示窗口捕捉助手和自动平铺按钮" -#: dist/prefs.js:994 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "在 ALT+TAB 菜单中添加平铺好的窗口组合" -#: dist/prefs.js:996 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "在 ALT+TAB 菜单中添加平铺好的窗口组合,以便一次性打开所有平铺好的窗口" -#: dist/prefs.js:1001 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "屏幕边缘" -#: dist/prefs.js:1003 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "拖拽窗口到屏幕顶部、左侧或右侧边缘以调整窗口大小" -#: dist/prefs.js:1017 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "拖拽窗口到屏幕顶部以最大化窗口" -#: dist/prefs.js:1018 +#: dist/prefs.js:284 msgid "Drag windows against the top edge to maximize them" msgstr "拖拽窗口到屏幕顶部以最大化窗口" -#: dist/prefs.js:1027 +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "四角平铺激活区域" -#: dist/prefs.js:1028 +#: dist/prefs.js:294 #, fuzzy, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "" "触发四角平铺的激活区域(%%屏幕高度)\n" "(译者注:当移动窗口到屏幕左右边缘中间偏上位置时,可以激活四角平铺)" -#: dist/prefs.js:1044 +#: dist/prefs.js:310 msgid "Edge tiling offset" msgstr "边缘平铺激活区域" -#: dist/prefs.js:1045 +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "" "触发边缘平铺的最小距离(单位:像素)\n" "(译者注:当移动窗口到屏幕左右边缘时,可以激活边缘平铺)" -#: dist/prefs.js:1062 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "窗口建议" -#: dist/prefs.js:1063 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "开启/关闭窗口建议" -#: dist/prefs.js:1068 +#: dist/prefs.js:339 msgid "Enable window suggestions for the tiling system" msgstr "为窗口平铺启用窗口建议" -#: dist/prefs.js:1070 +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "平铺窗口时显示窗口列表,为空余平铺位置提供建议" -#: dist/prefs.js:1076 +#: dist/prefs.js:347 msgid "Enable window suggestions for the snap assistant" msgstr "为窗口捕捉助手启用窗口建议" -#: dist/prefs.js:1078 +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "使用窗口捕捉助手时显示窗口列表,为空余平铺位置提供建议" -#: dist/prefs.js:1084 +#: dist/prefs.js:355 msgid "Enable window suggestions for screen edge snapping" msgstr "为屏幕边缘捕捉启用窗口建议" -#: dist/prefs.js:1086 +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "使用屏幕边缘窗口捕捉时,为空余平铺位置提供建议" -#: dist/prefs.js:1092 +#: dist/prefs.js:363 msgid "Layouts" msgstr "布局" -#: dist/prefs.js:1093 +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "配置 Tiling Shell 的布局" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "编辑布局" -#: dist/prefs.js:1099 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "打开布局编辑器" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "导出所有布局" -#: dist/prefs.js:1106 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "导出所有布局到文件" -#: dist/prefs.js:1112 dist/prefs.js:1496 +#: dist/prefs.js:383 dist/prefs.js:767 msgid "Save" msgstr "保存" -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 msgid "Cancel" msgstr "取消" -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "批量导入布局" -#: dist/prefs.js:1160 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "从文件中批量导入布局" -#: dist/prefs.js:1163 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "选择布局文件" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "打开" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "恢复默认布局" -#: dist/prefs.js:1216 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "恢复默认布局" -#: dist/prefs.js:1229 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "快捷键" -#: dist/prefs.js:1231 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "使用快捷键来操作当前聚焦的窗口" -#: dist/prefs.js:1249 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "向右移动窗口" -#: dist/prefs.js:1251 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "移动窗口到右侧的平铺位置" -#: dist/prefs.js:1260 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "向左移动窗口" -#: dist/prefs.js:1261 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "移动窗口到左侧的平铺位置" -#: dist/prefs.js:1267 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "向上移动窗口" -#: dist/prefs.js:1268 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "移动窗口到上方的平铺位置" -#: dist/prefs.js:1274 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "向下移动窗口" -#: dist/prefs.js:1275 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "移动窗口到下方的平铺位置" -#: dist/prefs.js:1281 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "向右扩展窗口" -#: dist/prefs.js:1282 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "扩展窗口到右侧的平铺位置" -#: dist/prefs.js:1288 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "向左扩展窗口" -#: dist/prefs.js:1289 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "扩展窗口到左侧的平铺位置" -#: dist/prefs.js:1295 +#: dist/prefs.js:566 msgid "Span window above" msgstr "向上扩展窗口" -#: dist/prefs.js:1296 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "扩展窗口到上方的平铺位置" -#: dist/prefs.js:1302 +#: dist/prefs.js:573 msgid "Span window down" msgstr "向下扩展窗口" -#: dist/prefs.js:1303 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "扩展窗口到下方的平铺位置" -#: dist/prefs.js:1309 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "窗口铺满所有位置" -#: dist/prefs.js:1310 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "当前聚焦的窗口铺满所有位置" -#: dist/prefs.js:1316 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "取消窗口平铺" -#: dist/prefs.js:1324 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "移动窗口到屏幕中央" -#: dist/prefs.js:1326 +#: dist/prefs.js:597 msgid "Move the focused window to the center of the screen" msgstr "移动当前聚焦的窗口到屏幕中央" -#: dist/prefs.js:1335 +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "聚焦右侧窗口" -#: dist/prefs.js:1337 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "聚焦当前窗口右侧的窗口" -#: dist/prefs.js:1344 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "聚焦左侧窗口" -#: dist/prefs.js:1345 +#: dist/prefs.js:616 msgid "Focus the window to the left of the current focused window" msgstr "聚焦当前窗口左侧的窗口" -#: dist/prefs.js:1351 +#: dist/prefs.js:622 msgid "Focus window above" msgstr "聚焦上方窗口" -#: dist/prefs.js:1352 +#: dist/prefs.js:623 msgid "Focus the window above the current focused window" msgstr "聚焦当前窗口上方的窗口" -#: dist/prefs.js:1358 +#: dist/prefs.js:629 msgid "Focus window below" msgstr "聚焦下方窗口" -#: dist/prefs.js:1359 +#: dist/prefs.js:630 msgid "Focus the window below the current focused window" msgstr "聚焦当前窗口下方的窗口" -#: dist/prefs.js:1365 +#: dist/prefs.js:636 msgid "Focus next window" msgstr "聚焦到下一个窗口" -#: dist/prefs.js:1366 +#: dist/prefs.js:637 msgid "Focus the window next to the current focused window" msgstr "聚焦到当前窗口的下一个窗口" -#: dist/prefs.js:1372 +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "聚焦到上一个窗口" -#: dist/prefs.js:1373 +#: dist/prefs.js:644 msgid "Focus the window prior to the current focused window" msgstr "聚焦到当前窗口的上一个窗口" @@ -514,140 +515,163 @@ msgstr "只显示当前聚焦的窗口,最小化其他窗口" msgid "Cycle layouts" msgstr "循环切换布局" -#: dist/prefs.js:1389 +#: dist/prefs.js:660 msgid "Cycle through available workspace layouts" msgstr "循环切换可用的工作区布局" -#: dist/prefs.js:1415 +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "查看、配置所有快捷方式" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "查看、配置所有快捷方式" -#: dist/prefs.js:1466 +#: dist/prefs.js:737 msgid "Enable next/previous window focus to wrap around" msgstr "启用窗口列表循环" -#: dist/prefs.js:1468 +#: dist/prefs.js:739 msgid "When focusing next or previous window, wrap around at the window edge" msgstr "" "聚焦到上一个或下一个窗口时,启用窗口列表循环(可以从最后一个窗口聚焦到第一个" "窗口)" -#: dist/prefs.js:1474 +#: dist/prefs.js:745 msgid "Restrict directional focus to tiled windows" msgstr "只在已平铺的窗口之间进行方向聚焦" -#: dist/prefs.js:1476 +#: dist/prefs.js:747 msgid "When using directional focus navigation, only consider tiled windows" msgstr "" "当使用方向聚焦(译者注:比如【聚焦右侧窗口】)时,只考虑已经平铺的窗口" -#: dist/prefs.js:1481 +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "导入/导出/恢复默认设置" -#: dist/prefs.js:1483 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "导入、导出、或恢复 Tiling Shell 的默认设置" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "导出设置" -#: dist/prefs.js:1490 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "导出设置到文件" -#: dist/prefs.js:1493 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "导出设置到文本文件" -#: dist/prefs.js:1500 +#: dist/prefs.js:771 msgid "Text file" msgstr "文本文件" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "导入设置" -#: dist/prefs.js:1545 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "从文件导入设置" -#: dist/prefs.js:1548 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "选择文本文件以导入设置" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "恢复默认设置" -#: dist/prefs.js:1592 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "恢复默认设置" -#: dist/prefs.js:1607 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "在 ko-fi 上捐赠" -#: dist/prefs.js:1613 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "反馈问题" -#: dist/prefs.js:1619 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "提个需求" -#: dist/prefs.js:1627 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "有任何问题或者建议?" -#: dist/prefs.js:1634 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "" -#: dist/prefs.js:1814 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +#, fuzzy +msgid "Follow quarters or screen halves" +msgstr "移动到最合适的平铺位置" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "" -#: dist/prefs.js:1815 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "设置新快捷键" -#: dist/prefs.js:1892 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "使用退格键(Backspace)清除" -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "编辑布局" +#~ msgid "Edit Layouts" +#~ msgstr "编辑布局" -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "新建布局" +#~ msgid "New Layout" +#~ msgstr "新建布局" -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "水平分割一个平铺位置" +#~ msgid "to split a tile" +#~ msgstr "水平分割一个平铺位置" -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "垂直分割一个平铺位置" +#~ msgid "to split a tile vertically" +#~ msgstr "垂直分割一个平铺位置" -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "删除一个平铺位置" +#~ msgid "to delete a tile" +#~ msgstr "删除一个平铺位置" -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "使用托盘图标来保存或取消" +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "使用托盘图标来保存或取消" #~ msgid "Menu" #~ msgstr "菜单" @@ -667,9 +691,6 @@ msgstr "使用托盘图标来保存或取消" #~ msgid "Start editing" #~ msgstr "开始编辑" -#~ msgid "Move to best tile" -#~ msgstr "移动到最合适的平铺位置" - #~ msgid "Move to leftmost tile" #~ msgstr "移动到最左边的平铺位置" diff --git a/translations/zh_TW.po b/translations/zh_TW.po index 3d3e8665..c20a7c48 100644 --- a/translations/zh_TW.po +++ b/translations/zh_TW.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-09 11:35+0100\n" +"POT-Creation-Date: 2026-01-03 22:57+0100\n" "PO-Revision-Date: 2025-12-01 01:58+0800\n" "Last-Translator: taijuin\n" "Language-Team: \n" @@ -18,206 +18,207 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.8\n" -#: dist/prefs.js:793 +#: dist/prefs.js:59 msgid "General" msgstr "一般" -#: dist/prefs.js:798 +#: dist/prefs.js:64 msgid "Appearance" msgstr "外觀" -#: dist/prefs.js:799 +#: dist/prefs.js:65 msgid "Configure the appearance of Tiling Shell" msgstr "設定 Tiling Shell 的外觀" -#: dist/prefs.js:804 +#: dist/prefs.js:70 msgid "Show Indicator" msgstr "顯示指示器" -#: dist/prefs.js:805 +#: dist/prefs.js:71 msgid "Whether to show the panel indicator" msgstr "是否顯示面板指示器" -#: dist/prefs.js:810 +#: dist/prefs.js:76 msgid "Inner gaps" msgstr "內部間距" -#: dist/prefs.js:811 +#: dist/prefs.js:77 msgid "Gaps between windows" msgstr "視窗之間的間距" -#: dist/prefs.js:816 +#: dist/prefs.js:82 msgid "Outer gaps" msgstr "外部間距" -#: dist/prefs.js:817 +#: dist/prefs.js:83 msgid "Gaps between a window and the monitor borders" msgstr "視窗與顯示器邊框之間的間距" -#: dist/prefs.js:821 +#: dist/prefs.js:87 msgid "Blur (experimental feature)" msgstr "模糊(實驗性功能)" -#: dist/prefs.js:823 +#: dist/prefs.js:89 msgid "Apply blur effect to Snap Assistant and tile previews" msgstr "將模糊效果套用至「貼齊小幫手」與區塊預覽" -#: dist/prefs.js:829 +#: dist/prefs.js:95 msgid "Snap Assistant threshold" msgstr "貼齊小幫手的靈敏度" -#: dist/prefs.js:831 +#: dist/prefs.js:97 msgid "Minimum distance from the Snap Assistant to the pointer to open it" msgstr "貼齊小幫手感知拖曳視窗之游標靠近的距離" -#: dist/prefs.js:840 +#: dist/prefs.js:106 msgid "Snap Assistant" msgstr "貼齊小幫手" -#: dist/prefs.js:841 +#: dist/prefs.js:107 msgid "Apply blur effect to Snap Assistant" msgstr "將模糊效果套用至貼齊小幫手" -#: dist/prefs.js:847 +#: dist/prefs.js:113 msgid "Selected tile preview" msgstr "所選區塊預覽" -#: dist/prefs.js:848 +#: dist/prefs.js:114 msgid "Apply blur effect to selected tile preview" msgstr "將模糊效果套用至所選區塊預覽" -#: dist/prefs.js:852 +#: dist/prefs.js:118 msgid "Window border" msgstr "視窗邊框" -#: dist/prefs.js:853 dist/prefs.js:860 +#: dist/prefs.js:119 dist/prefs.js:126 msgid "Show a border around focused window" msgstr "在焦點視窗周圍顯示邊框" -#: dist/prefs.js:859 +#: dist/prefs.js:125 msgid "Enable" msgstr "啟用" -#: dist/prefs.js:866 +#: dist/prefs.js:132 msgid "Smart border radius" msgstr "智慧型邊框半徑" -#: dist/prefs.js:867 -msgid "Dynamically adapt to the window’s actual border radius" +#: dist/prefs.js:133 +#, fuzzy +msgid "Dynamically adapt to the window's actual border radius" msgstr "動態適應視窗的實際邊框半徑" -#: dist/prefs.js:873 +#: dist/prefs.js:139 msgid "Width" msgstr "寬度" -#: dist/prefs.js:874 +#: dist/prefs.js:140 msgid "The size of the border" msgstr "邊框的大小" -#: dist/prefs.js:883 +#: dist/prefs.js:149 msgid "Border color" msgstr "邊框顏色" -#: dist/prefs.js:884 +#: dist/prefs.js:150 msgid "Choose the color of the border" msgstr "選擇邊框的顏色" -#: dist/prefs.js:900 +#: dist/prefs.js:166 msgid "Animations" msgstr "動畫" -#: dist/prefs.js:901 +#: dist/prefs.js:167 msgid "Customize animations" msgstr "自訂動畫" -#: dist/prefs.js:907 +#: dist/prefs.js:173 msgid "Snap assistant animation time" msgstr "貼齊小幫手動畫時間" -#: dist/prefs.js:908 +#: dist/prefs.js:174 msgid "The snap assistant animation time in milliseconds" msgstr "貼齊小幫手到達定位所需時間(以毫秒為單位)" -#: dist/prefs.js:916 +#: dist/prefs.js:182 msgid "Tiles animation time" msgstr "區塊動畫時間" -#: dist/prefs.js:917 +#: dist/prefs.js:183 msgid "The tiles animation time in milliseconds" msgstr "切換所選區塊時,切換其預覽所需時間(以毫秒為單位)" -#: dist/prefs.js:923 +#: dist/prefs.js:189 msgid "Behaviour" msgstr "行為" -#: dist/prefs.js:924 +#: dist/prefs.js:190 msgid "Configure the behaviour of Tiling Shell" msgstr "設定 Tiling Shell 的行為" -#: dist/prefs.js:929 +#: dist/prefs.js:195 msgid "Enable Snap Assistant" msgstr "啟用「貼齊小幫手」" -#: dist/prefs.js:930 +#: dist/prefs.js:196 msgid "Move the window on top of the screen to snap assist it" msgstr "將視窗移到螢幕中間頂端以輔助它貼齊" -#: dist/prefs.js:935 +#: dist/prefs.js:201 msgid "Enable Tiling System" msgstr "啟用平鋪系統" -#: dist/prefs.js:936 +#: dist/prefs.js:202 msgid "Hold the activation key while moving a window to tile it" msgstr "移動視窗時按住啟動鍵以平鋪視窗" -#: dist/prefs.js:944 +#: dist/prefs.js:210 msgid "Tiling System deactivation key" msgstr "平鋪系統停用鍵" -#: dist/prefs.js:946 +#: dist/prefs.js:212 msgid "" "Hold the deactivation key while moving a window to deactivate the tiling " "system" msgstr "移動視窗時按住停用鍵,可停用平鋪系統" -#: dist/prefs.js:954 +#: dist/prefs.js:220 msgid "Span multiple tiles" msgstr "橫跨多個區塊" -#: dist/prefs.js:955 +#: dist/prefs.js:221 msgid "Hold the activation key to span multiple tiles" msgstr "按住啟動鍵可跨越多個區塊" -#: dist/prefs.js:964 +#: dist/prefs.js:230 msgid "Enable Auto Tiling" msgstr "啟用自動平鋪" -#: dist/prefs.js:965 +#: dist/prefs.js:231 msgid "Automatically tile new windows to the best tile" msgstr "自動將新視窗平鋪到最佳區塊位置" -#: dist/prefs.js:970 +#: dist/prefs.js:236 msgid "Enable auto-resize of the complementing tiled windows" msgstr "啟用自動調整互補平鋪視窗的大小" -#: dist/prefs.js:972 +#: dist/prefs.js:238 msgid "" "When a tiled window is resized, auto-resize the other tiled windows near it" msgstr "調整平鋪視窗的大小時,自動調整其附近其他平鋪視窗的大小" -#: dist/prefs.js:978 +#: dist/prefs.js:244 msgid "Restore window size" msgstr "還原視窗大小" -#: dist/prefs.js:980 +#: dist/prefs.js:246 msgid "Whether to restore the windows to their original size when untiled" msgstr "是否將視窗還原為未平鋪時的原始大小" -#: dist/prefs.js:986 +#: dist/prefs.js:252 msgid "Add snap assistant and auto-tile buttons to window menu" msgstr "在視窗選單中加入「貼齊小幫手」和自動平鋪按鈕" -#: dist/prefs.js:988 +#: dist/prefs.js:254 msgid "" "Add snap assistant and auto-tile buttons in the menu that shows up when you " "right click on a window title" @@ -225,420 +226,442 @@ msgstr "" "當您在視窗標題上按一下滑鼠右鍵時,在顯示的功能表中加入「貼齊小幫手」和自動平" "鋪按鈕" -#: dist/prefs.js:994 +#: dist/prefs.js:260 msgid "Add tiled windows to ALT+TAB menu" msgstr "在 ALT+TAB 選單中新增平鋪的視窗" -#: dist/prefs.js:996 +#: dist/prefs.js:262 msgid "" "Add the tiled windows to the ALT+TAB menu to open all the tiled windows at " "once" msgstr "將平鋪的視窗新增至 ALT+TAB 選單,即可同時開啟所有平鋪的視窗" -#: dist/prefs.js:1001 +#: dist/prefs.js:267 msgid "Screen Edges" msgstr "螢幕邊緣" -#: dist/prefs.js:1003 +#: dist/prefs.js:269 msgid "" "Drag windows against the top, left and right screen edges to resize them" msgstr "將視窗拖曳到螢幕頂端、左邊和右邊以調整視窗大小" -#: dist/prefs.js:1017 +#: dist/prefs.js:283 msgid "Drag against top edge to maximize window" msgstr "拖曳頂端邊緣以最大化視窗" -#: dist/prefs.js:1018 +#: dist/prefs.js:284 msgid "Drag windows against the top edge to maximize them" msgstr "將視窗拖曳到頂端邊緣,使其最大化" -#: dist/prefs.js:1027 +#: dist/prefs.js:293 msgid "Quarter tiling activation area" msgstr "四分之一平鋪啟動區" -#: dist/prefs.js:1028 +#: dist/prefs.js:294 #, javascript-format msgid "Activation area to trigger quarter tiling (%% of the screen)" msgstr "觸發四分之一平鋪的啟動區域(佔螢幕百分比)" -#: dist/prefs.js:1044 +#: dist/prefs.js:310 msgid "Edge tiling offset" msgstr "邊緣平鋪偏移量" -#: dist/prefs.js:1045 +#: dist/prefs.js:311 msgid "Offset from the screen edge to trigger edge tiling (in pixels)" msgstr "從螢幕邊緣到觸發邊緣的偏移量(以像素為單位)" -#: dist/prefs.js:1062 +#: dist/prefs.js:333 msgid "Windows suggestions" msgstr "視窗建議" -#: dist/prefs.js:1063 +#: dist/prefs.js:334 msgid "Enable and disable windows suggestions" msgstr "啟用和停用視窗建議" -#: dist/prefs.js:1068 +#: dist/prefs.js:339 msgid "Enable window suggestions for the tiling system" msgstr "啟用平鋪系統的視窗建議" -#: dist/prefs.js:1070 +#: dist/prefs.js:341 msgid "" "Provides smart suggestions to fill empty tiles when using the tiling system" msgstr "使用平鋪系統時,提供填滿空白區塊的智慧型建議" -#: dist/prefs.js:1076 +#: dist/prefs.js:347 msgid "Enable window suggestions for the snap assistant" msgstr "啟用「貼齊小幫手」的視窗建議" -#: dist/prefs.js:1078 +#: dist/prefs.js:349 msgid "" "Offers suggestions to populate empty tiles when using the snap assistant" msgstr "使用「貼齊小幫手」時,提供填入空白區塊的建議" -#: dist/prefs.js:1084 +#: dist/prefs.js:355 msgid "Enable window suggestions for screen edge snapping" msgstr "啟用螢幕邊緣貼齊的視窗建議" -#: dist/prefs.js:1086 +#: dist/prefs.js:357 msgid "Suggests windows to occupy empty tiles when snapping to screen edges" msgstr "當貼齊至螢幕邊緣時,會建議視窗佔用空白區塊" -#: dist/prefs.js:1092 +#: dist/prefs.js:363 msgid "Layouts" msgstr "版面配置" -#: dist/prefs.js:1093 +#: dist/prefs.js:364 msgid "Configure the layouts of Tiling Shell" msgstr "設定 Tiling Shell 的版面配置" -#: dist/prefs.js:1097 dist/prefs.js:1098 +#: dist/prefs.js:368 dist/prefs.js:369 msgid "Edit layouts" msgstr "編輯版面配置" -#: dist/prefs.js:1099 +#: dist/prefs.js:370 msgid "Open the layouts editor" msgstr "開啟版面配置編輯器" -#: dist/prefs.js:1104 dist/prefs.js:1105 dist/prefs.js:1109 +#: dist/prefs.js:375 dist/prefs.js:376 dist/prefs.js:380 msgid "Export layouts" msgstr "匯出版面配置" -#: dist/prefs.js:1106 +#: dist/prefs.js:377 msgid "Export layouts to a file" msgstr "將版面配置匯出到檔案" -#: dist/prefs.js:1112 dist/prefs.js:1496 +#: dist/prefs.js:383 dist/prefs.js:767 msgid "Save" msgstr "儲存" -#: dist/prefs.js:1113 dist/prefs.js:1167 dist/prefs.js:1497 dist/prefs.js:1552 +#: dist/prefs.js:384 dist/prefs.js:438 dist/prefs.js:768 dist/prefs.js:823 msgid "Cancel" msgstr "取消" -#: dist/prefs.js:1158 dist/prefs.js:1159 +#: dist/prefs.js:429 dist/prefs.js:430 msgid "Import layouts" msgstr "匯入版面配置" -#: dist/prefs.js:1160 +#: dist/prefs.js:431 msgid "Import layouts from a file" msgstr "從檔案匯入版面配置" -#: dist/prefs.js:1163 +#: dist/prefs.js:434 msgid "Select layouts file" msgstr "選取版面配置檔" -#: dist/prefs.js:1166 dist/prefs.js:1551 +#: dist/prefs.js:437 dist/prefs.js:822 msgid "Open" msgstr "開啟" -#: dist/prefs.js:1214 dist/prefs.js:1215 +#: dist/prefs.js:485 dist/prefs.js:486 msgid "Reset layouts" msgstr "重設版面配置" -#: dist/prefs.js:1216 +#: dist/prefs.js:487 msgid "Bring back the default layouts" msgstr "恢復預設版面配置" -#: dist/prefs.js:1229 +#: dist/prefs.js:500 msgid "Keybindings" msgstr "按鍵綁定" -#: dist/prefs.js:1231 +#: dist/prefs.js:502 msgid "Use hotkeys to perform actions on the focused window" msgstr "使用熱鍵對焦點視窗執行動作" -#: dist/prefs.js:1249 +#: dist/prefs.js:520 msgid "Move window to right tile" msgstr "將視窗移到右側區塊" -#: dist/prefs.js:1251 +#: dist/prefs.js:522 msgid "Move the focused window to the tile on its right" msgstr "將聚焦的視窗移至其右側的區塊" -#: dist/prefs.js:1260 +#: dist/prefs.js:531 msgid "Move window to left tile" msgstr "將視窗移到左側區塊" -#: dist/prefs.js:1261 +#: dist/prefs.js:532 msgid "Move the focused window to the tile on its left" msgstr "將對焦的視窗移至其左側的區塊" -#: dist/prefs.js:1267 +#: dist/prefs.js:538 msgid "Move window to tile above" msgstr "將視窗移到上方區塊" -#: dist/prefs.js:1268 +#: dist/prefs.js:539 msgid "Move the focused window to the tile above" msgstr "將聚焦的視窗移至其上方的區塊" -#: dist/prefs.js:1274 +#: dist/prefs.js:545 msgid "Move window to tile below" msgstr "將視窗移到下方區塊" -#: dist/prefs.js:1275 +#: dist/prefs.js:546 msgid "Move the focused window to the tile below" msgstr "將聚焦的視窗移至其下方的區塊" -#: dist/prefs.js:1281 +#: dist/prefs.js:552 msgid "Span window to right tile" msgstr "跨越視窗到右側區塊" -#: dist/prefs.js:1282 +#: dist/prefs.js:553 msgid "Span the focused window to the tile on its right" msgstr "將聚焦的視窗跨越至右側的區塊" -#: dist/prefs.js:1288 +#: dist/prefs.js:559 msgid "Span window to left tile" msgstr "跨越視窗到左側區塊" -#: dist/prefs.js:1289 +#: dist/prefs.js:560 msgid "Span the focused window to the tile on its left" msgstr "將聚焦的視窗跨越至左側的區塊" -#: dist/prefs.js:1295 +#: dist/prefs.js:566 msgid "Span window above" msgstr "向上橫跨視窗" -#: dist/prefs.js:1296 +#: dist/prefs.js:567 msgid "Span the focused window to the tile above" msgstr "將聚焦的視窗跨越至上方的區塊" -#: dist/prefs.js:1302 +#: dist/prefs.js:573 msgid "Span window down" msgstr "向下橫跨視窗" -#: dist/prefs.js:1303 +#: dist/prefs.js:574 msgid "Span the focused window to the tile below" msgstr "將聚焦的視窗跨越至下方的區塊" -#: dist/prefs.js:1309 +#: dist/prefs.js:580 msgid "Span window to all tiles" msgstr "跨越視窗至所有區塊" -#: dist/prefs.js:1310 +#: dist/prefs.js:581 msgid "Span the focused window to all the tiles" msgstr "將聚焦的視窗跨越至所有區塊" -#: dist/prefs.js:1316 +#: dist/prefs.js:587 msgid "Untile focused window" msgstr "未平鋪焦點的視窗" -#: dist/prefs.js:1324 +#: dist/prefs.js:595 msgid "Move window to the center" msgstr "將視窗移到中央" -#: dist/prefs.js:1326 +#: dist/prefs.js:597 msgid "Move the focused window to the center of the screen" msgstr "將聚焦的視窗移至螢幕中央" -#: dist/prefs.js:1335 +#: dist/prefs.js:606 msgid "Focus window to the right" msgstr "焦點視窗向右" -#: dist/prefs.js:1337 +#: dist/prefs.js:608 msgid "Focus the window to the right of the current focused window" msgstr "將視窗對焦到目前對焦視窗右邊的視窗" -#: dist/prefs.js:1344 +#: dist/prefs.js:615 msgid "Focus window to the left" msgstr "焦點視窗向左移動" -#: dist/prefs.js:1345 +#: dist/prefs.js:616 msgid "Focus the window to the left of the current focused window" msgstr "對焦目前對焦視窗左側的視窗" -#: dist/prefs.js:1351 +#: dist/prefs.js:622 msgid "Focus window above" msgstr "上方的對焦視窗" -#: dist/prefs.js:1352 +#: dist/prefs.js:623 msgid "Focus the window above the current focused window" msgstr "將視窗對焦於目前對焦的視窗上方" -#: dist/prefs.js:1358 +#: dist/prefs.js:629 msgid "Focus window below" msgstr "對焦視窗下方" -#: dist/prefs.js:1359 +#: dist/prefs.js:630 msgid "Focus the window below the current focused window" msgstr "對焦目前對焦視窗下方的視窗" -#: dist/prefs.js:1365 +#: dist/prefs.js:636 msgid "Focus next window" msgstr "聚焦下一個視窗" -#: dist/prefs.js:1366 +#: dist/prefs.js:637 msgid "Focus the window next to the current focused window" msgstr "對焦目前對焦視窗旁邊的視窗" -#: dist/prefs.js:1372 +#: dist/prefs.js:643 msgid "Focus previous window" msgstr "對焦上一個視窗" -#: dist/prefs.js:1373 +#: dist/prefs.js:644 msgid "Focus the window prior to the current focused window" msgstr "對焦目前對焦視窗之前的視窗" -#: dist/prefs.js:1379 +#: dist/prefs.js:650 msgid "Highlight focused window" msgstr "高亮顯示焦點視窗" -#: dist/prefs.js:1381 +#: dist/prefs.js:652 msgid "Minimize all the other windows and show only the focused window" msgstr "最小化所有其他視窗,只顯示焦點視窗" -#: dist/prefs.js:1388 +#: dist/prefs.js:659 msgid "Cycle layouts" msgstr "循環版面配置" -#: dist/prefs.js:1389 +#: dist/prefs.js:660 msgid "Cycle through available workspace layouts" msgstr "循環切換可用工作區版面配置" -#: dist/prefs.js:1415 +#: dist/prefs.js:686 msgid "View and Customize all the Shortcuts" msgstr "檢視並自訂所有快捷鍵" -#: dist/prefs.js:1443 dist/prefs.js:1444 +#: dist/prefs.js:714 dist/prefs.js:715 msgid "View and Customize Shortcuts" msgstr "檢視和自訂快捷鍵" -#: dist/prefs.js:1466 +#: dist/prefs.js:737 msgid "Enable next/previous window focus to wrap around" msgstr "啟用下一個/上一個視窗焦點環繞" -#: dist/prefs.js:1468 +#: dist/prefs.js:739 msgid "When focusing next or previous window, wrap around at the window edge" msgstr "對焦下一個或上一個視窗時,環繞視窗邊緣" -#: dist/prefs.js:1474 +#: dist/prefs.js:745 msgid "Restrict directional focus to tiled windows" msgstr "將方向性聚焦限制於平鋪的視窗" -#: dist/prefs.js:1476 +#: dist/prefs.js:747 msgid "When using directional focus navigation, only consider tiled windows" msgstr "使用方向性焦點導航時,僅考慮平鋪的視窗" -#: dist/prefs.js:1481 +#: dist/prefs.js:752 msgid "Import, export and reset" msgstr "匯入、匯出及重設" -#: dist/prefs.js:1483 +#: dist/prefs.js:754 msgid "Import, export and reset the settings of Tiling Shell" msgstr "匯入、匯出及重設 Tiling Shell 的設定" -#: dist/prefs.js:1488 dist/prefs.js:1489 +#: dist/prefs.js:759 dist/prefs.js:760 msgid "Export settings" msgstr "匯出設定" -#: dist/prefs.js:1490 +#: dist/prefs.js:761 msgid "Export settings to a file" msgstr "將設定匯出至檔案" -#: dist/prefs.js:1493 +#: dist/prefs.js:764 msgid "Export settings to a text file" msgstr "將設定匯出到文字檔" -#: dist/prefs.js:1500 +#: dist/prefs.js:771 msgid "Text file" msgstr "文字檔" -#: dist/prefs.js:1543 dist/prefs.js:1544 +#: dist/prefs.js:814 dist/prefs.js:815 msgid "Import settings" msgstr "匯入設定" -#: dist/prefs.js:1545 +#: dist/prefs.js:816 msgid "Import settings from a file" msgstr "從檔案匯入設定" -#: dist/prefs.js:1548 +#: dist/prefs.js:819 msgid "Select a text file to import from" msgstr "選擇要匯入的文字檔" -#: dist/prefs.js:1590 dist/prefs.js:1591 +#: dist/prefs.js:861 dist/prefs.js:862 msgid "Reset settings" msgstr "重設設定" -#: dist/prefs.js:1592 +#: dist/prefs.js:863 msgid "Bring back the default settings" msgstr "恢復預設設定" -#: dist/prefs.js:1607 +#: dist/prefs.js:878 msgid "Donate on ko-fi" msgstr "在 ko-fi 上捐款" -#: dist/prefs.js:1613 +#: dist/prefs.js:884 msgid "Report a bug" msgstr "回報錯誤" -#: dist/prefs.js:1619 +#: dist/prefs.js:890 msgid "Request a feature" msgstr "要求功能" -#: dist/prefs.js:1627 +#: dist/prefs.js:898 msgid "Have issues, you want to suggest a new feature or contribute?" msgstr "有問題、想建議新功能或貢獻心力?" -#: dist/prefs.js:1634 +#: dist/prefs.js:905 msgid "Open a new issue on" msgstr "開啟一個新的議題" -#: dist/prefs.js:1814 +#: dist/prefs.js:970 +msgid "Choose how windows snap to screen edges" +msgstr "" + +#: dist/prefs.js:985 +msgid "Default" +msgstr "" + +#: dist/prefs.js:986 +msgid "Follow quarters or screen halves" +msgstr "" + +#: dist/prefs.js:991 +msgid "Adaptive" +msgstr "" + +#: dist/prefs.js:992 +msgid "Follow corners of selected layout or screen halves" +msgstr "" + +#: dist/prefs.js:997 +msgid "Granular" +msgstr "" + +#: dist/prefs.js:998 +msgid "Follow currently selected layout" +msgstr "" + +#: dist/prefs.js:1187 msgid "Choose custom color" msgstr "選擇自訂顏色" -#: dist/prefs.js:1815 +#: dist/prefs.js:1188 msgid "Use system accent color" msgstr "使用系統強調色" -#: dist/prefs.js:1866 dist/prefs.js:1889 +#: dist/prefs.js:1241 dist/prefs.js:1267 msgid "New accelerator…" msgstr "新增快捷鍵…" -#: dist/prefs.js:1892 +#: dist/prefs.js:1270 msgid "Use Backspace to clear" msgstr "使用 Backspace 清除" -#: dist/extension.js:5809 -msgid "Edit Layouts" -msgstr "編輯版面配置" +#~ msgid "Edit Layouts" +#~ msgstr "編輯版面配置" -#: dist/extension.js:5819 -msgid "New Layout" -msgstr "新增版面配置" +#~ msgid "New Layout" +#~ msgstr "新增版面配置" -#: dist/extension.js:6004 -msgid "to split a tile" -msgstr "分割區塊" +#~ msgid "to split a tile" +#~ msgstr "分割區塊" -#: dist/extension.js:6043 -msgid "to split a tile vertically" -msgstr "垂直分割區塊" +#~ msgid "to split a tile vertically" +#~ msgstr "垂直分割區塊" -#: dist/extension.js:6063 -msgid "to delete a tile" -msgstr "刪除區塊" +#~ msgid "to delete a tile" +#~ msgstr "刪除區塊" -#: dist/extension.js:6087 -msgid "use the indicator button to save or cancel" -msgstr "使用指示器按鈕儲存或取消" +#~ msgid "use the indicator button to save or cancel" +#~ msgstr "使用指示器按鈕儲存或取消" From 745d2e23113a2e7732a13a26fdffe58282ac09fd Mon Sep 17 00:00:00 2001 From: Jesse Dhillon <542223+jessedhillon@users.noreply.github.com> Date: Sat, 17 Jan 2026 03:36:03 -0800 Subject: [PATCH 28/35] chore: on GNOME 49+, use Meta.Monitor.get_display_name() (#470) * chore: on GNOME 49, use Meta.Monitor.get_display_name() * fix: logical monitor doesn't have get_layout --- src/indicator/defaultMenu.ts | 83 +++++++++++++++++++++++++++++++++--- 1 file changed, 76 insertions(+), 7 deletions(-) diff --git a/src/indicator/defaultMenu.ts b/src/indicator/defaultMenu.ts index f968df17..268bbac1 100644 --- a/src/indicator/defaultMenu.ts +++ b/src/indicator/defaultMenu.ts @@ -21,8 +21,11 @@ import { _ } from '../translations'; import { openPrefs } from '../polyfill'; import { widgetOrientation } from '../utils/gnomesupport'; import { createButton, createIconButton } from './utils'; +// @ts-expect-error "Module exists" +import * as Config from 'resource:///org/gnome/shell/misc/config.js'; const debug = logger('DefaultMenu'); +const GNOME_VERSION_MAJOR = Number(Config.PACKAGE_VERSION.split('.')[0]); class LayoutsRow extends St.BoxLayout { static { registerGObjectClass(this, { @@ -108,20 +111,40 @@ class LayoutsRow extends St.BoxLayout { showMonitorName: boolean, monitorsDetails: { name: string; - x: number; - y: number; - height: number; - width: number; + index?: number; + x?: number; + y?: number; + height?: number; + width?: number; }[], ) { if (!showMonitorName) this._label.hide(); else this._label.show(); - const details = monitorsDetails.find( - (m) => m.x === this._monitor.x && m.y === this._monitor.y, + debug(`updateMonitorName: monitor=${this._monitor.index}, x=${this._monitor.x}, y=${this._monitor.y}`); + debug(`updateMonitorName: monitorsDetails=${JSON.stringify(monitorsDetails)}`); + + // Try to match by index first, then fall back to coordinates + let details = monitorsDetails.find( + (m) => m.index === this._monitor.index, ); - if (!details) return; + if (details) { + debug(`updateMonitorName: matched by index ${this._monitor.index}`); + } + if (!details) { + details = monitorsDetails.find( + (m) => m.x === this._monitor.x && m.y === this._monitor.y, + ); + if (details) { + debug(`updateMonitorName: matched by coordinates (${this._monitor.x}, ${this._monitor.y})`); + } + } + if (!details) { + debug(`updateMonitorName: no match found for monitor ${this._monitor.index}`); + return; + } + debug(`updateMonitorName: setting label to "${details.name}"`); this._label.set_text(details.name); } } @@ -251,11 +274,57 @@ export default class DefaultMenu implements CurrentMenu { // compute monitors details and update labels asynchronously (if we have successful results...) private _computeMonitorsDetails() { + debug(`_computeMonitorsDetails: GNOME_VERSION_MAJOR=${GNOME_VERSION_MAJOR}, monitors=${getMonitors().length}`); + if (getMonitors().length === 1) { + debug('_computeMonitorsDetails: single monitor, skipping name detection'); this._layoutsRows.forEach((lr) => lr.updateMonitorName(false, [])); return; } + // GNOME 49+ has Meta.Monitor with get_display_name() + if (GNOME_VERSION_MAJOR >= 49) { + debug('_computeMonitorsDetails: using native GNOME 49+ API'); + try { + const monitorManager = global.backend.get_monitor_manager(); + const logicalMonitors = monitorManager.get_logical_monitors(); + const monitorsDetails: { + name: string; + index: number; + x: number; + y: number; + }[] = []; + + for (const logicalMonitor of logicalMonitors) { + // Get the primary (first) physical monitor for this logical monitor + const metaMonitors = logicalMonitor.get_monitors(); + if (metaMonitors.length > 0) { + const metaMonitor = metaMonitors[0]; + // MetaLogicalMonitor has x, y as direct properties + const x = (logicalMonitor as any).x ?? 0; + const y = (logicalMonitor as any).y ?? 0; + debug(`_computeMonitorsDetails: logicalMonitor props: index=${logicalMonitor.get_number()}, x=${x}, y=${y}`); + monitorsDetails.push({ + name: metaMonitor.get_display_name(), + index: logicalMonitor.get_number(), + x, + y, + }); + } + } + + debug('monitors details (native):', JSON.stringify(monitorsDetails)); + this._layoutsRows.forEach((lr) => + lr.updateMonitorName(true, monitorsDetails), + ); + return; + } catch (e) { + debug('Failed to get monitor names via native API, falling back to subprocess:', e); + } + } + + // Fallback for GNOME < 49: use subprocess with Gdk + debug('_computeMonitorsDetails: using subprocess fallback'); try { // Since Gdk.Monitor has monitor's name but we can't import Gdk into gnome-shell, we run a gjs code in a subprocess. // This code will just get all the monitors, printing into JSON format to stdout each monitor's name and geometry. From e7c07a25fa0bf6964b27ee88454bc8f17830659f Mon Sep 17 00:00:00 2001 From: Domenico Ferraro Date: Sat, 17 Jan 2026 12:36:33 +0100 Subject: [PATCH 29/35] fix: ensure the border is on top of the window --- src/components/windowBorder/windowBorder.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/windowBorder/windowBorder.ts b/src/components/windowBorder/windowBorder.ts index 50dadb3d..62d64f2e 100644 --- a/src/components/windowBorder/windowBorder.ts +++ b/src/components/windowBorder/windowBorder.ts @@ -55,7 +55,6 @@ export default class WindowBorder extends St.DrawingArea { this.close(); global.windowGroup.add_child(this); this.trackWindow(win, true); - this.connect('destroy', () => { this._bindings.forEach((b) => b.unbind()); this._bindings = []; @@ -133,6 +132,10 @@ export default class WindowBorder extends St.DrawingArea { this.queue_repaint(); // a transient window might have been opened }); + this._signals.connect(global.display, 'restacked', () => { + global.windowGroup.set_child_above_sibling(this, null); + }); + this._signals.connect(this._window, 'position-changed', () => { if ( this._window.maximizedVertically || From 10ad8a7fd91e675c0380c4d1729851194885dacb Mon Sep 17 00:00:00 2001 From: Domenico Ferraro Date: Sat, 17 Jan 2026 13:00:44 +0100 Subject: [PATCH 30/35] some readability improv --- src/indicator/defaultMenu.ts | 96 ++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 47 deletions(-) diff --git a/src/indicator/defaultMenu.ts b/src/indicator/defaultMenu.ts index 268bbac1..26c793d2 100644 --- a/src/indicator/defaultMenu.ts +++ b/src/indicator/defaultMenu.ts @@ -21,11 +21,8 @@ import { _ } from '../translations'; import { openPrefs } from '../polyfill'; import { widgetOrientation } from '../utils/gnomesupport'; import { createButton, createIconButton } from './utils'; -// @ts-expect-error "Module exists" -import * as Config from 'resource:///org/gnome/shell/misc/config.js'; const debug = logger('DefaultMenu'); -const GNOME_VERSION_MAJOR = Number(Config.PACKAGE_VERSION.split('.')[0]); class LayoutsRow extends St.BoxLayout { static { registerGObjectClass(this, { @@ -274,57 +271,27 @@ export default class DefaultMenu implements CurrentMenu { // compute monitors details and update labels asynchronously (if we have successful results...) private _computeMonitorsDetails() { - debug(`_computeMonitorsDetails: GNOME_VERSION_MAJOR=${GNOME_VERSION_MAJOR}, monitors=${getMonitors().length}`); - if (getMonitors().length === 1) { - debug('_computeMonitorsDetails: single monitor, skipping name detection'); this._layoutsRows.forEach((lr) => lr.updateMonitorName(false, [])); return; } // GNOME 49+ has Meta.Monitor with get_display_name() - if (GNOME_VERSION_MAJOR >= 49) { - debug('_computeMonitorsDetails: using native GNOME 49+ API'); - try { - const monitorManager = global.backend.get_monitor_manager(); - const logicalMonitors = monitorManager.get_logical_monitors(); - const monitorsDetails: { - name: string; - index: number; - x: number; - y: number; - }[] = []; - - for (const logicalMonitor of logicalMonitors) { - // Get the primary (first) physical monitor for this logical monitor - const metaMonitors = logicalMonitor.get_monitors(); - if (metaMonitors.length > 0) { - const metaMonitor = metaMonitors[0]; - // MetaLogicalMonitor has x, y as direct properties - const x = (logicalMonitor as any).x ?? 0; - const y = (logicalMonitor as any).y ?? 0; - debug(`_computeMonitorsDetails: logicalMonitor props: index=${logicalMonitor.get_number()}, x=${x}, y=${y}`); - monitorsDetails.push({ - name: metaMonitor.get_display_name(), - index: logicalMonitor.get_number(), - x, - y, - }); - } - } - - debug('monitors details (native):', JSON.stringify(monitorsDetails)); - this._layoutsRows.forEach((lr) => - lr.updateMonitorName(true, monitorsDetails), - ); - return; - } catch (e) { - debug('Failed to get monitor names via native API, falling back to subprocess:', e); - } + const monitorsDetails: { + name: string; + index: number; + x: number; + y: number; + }[] | undefined = this._get_display_name(); + + if (monitorsDetails) { + this._layoutsRows.forEach((lr) => + lr.updateMonitorName(true, monitorsDetails), + ); + return; } // Fallback for GNOME < 49: use subprocess with Gdk - debug('_computeMonitorsDetails: using subprocess fallback'); try { // Since Gdk.Monitor has monitor's name but we can't import Gdk into gnome-shell, we run a gjs code in a subprocess. // This code will just get all the monitors, printing into JSON format to stdout each monitor's name and geometry. @@ -344,9 +311,9 @@ export default class DefaultMenu implements CurrentMenu { const [, stdout, stderr] = pr.communicate_utf8_finish(res); if (pr.get_successful()) { debug(stdout); - const monitorsDetails = JSON.parse(stdout); + const parsedMonitorsDetails = JSON.parse(stdout); this._layoutsRows.forEach((lr) => - lr.updateMonitorName(true, monitorsDetails), + lr.updateMonitorName(true, parsedMonitorsDetails), ); } else { debug('error:', stderr); @@ -358,6 +325,41 @@ export default class DefaultMenu implements CurrentMenu { } } + // Use GNOME 49+'s Meta.Monitor with get_display_name() + private _get_display_name() { + const monitorManager = global.backend.get_monitor_manager(); + if (!monitorManager.get_logical_monitors) return undefined; + + const logicalMonitors = monitorManager.get_logical_monitors(); + if (!logicalMonitors || logicalMonitors.length <= 0) return undefined; + + const monitorsDetails: { + name: string; + index: number; + x: number; + y: number; + }[] = []; + logicalMonitors.forEach(logicalMonitor => { + const metaMonitors = logicalMonitor.get_monitors(); + if (metaMonitors.length <= 0) return; + + const metaMonitor = metaMonitors[0]; + if (!metaMonitor.get_display_name) return; + + // MetaLogicalMonitor has x, y as direct properties + const x = (logicalMonitor as any).x ?? 0; + const y = (logicalMonitor as any).y ?? 0; + monitorsDetails.push({ + name: metaMonitor.get_display_name(), + index: logicalMonitor.get_number(), + x, + y, + }); + }); + + return monitorsDetails; + } + private _updateScaling() { const newScalingFactor = getScalingFactorOf(this._container)[1]; if (this._scalingFactor === newScalingFactor) return; From 036d40a3d9a62389a1bed1f4bf39d4cea027c091 Mon Sep 17 00:00:00 2001 From: Domenico Ferraro Date: Sat, 17 Jan 2026 16:45:53 +0100 Subject: [PATCH 31/35] feat: raise all windows together --- ...e.shell.extensions.tilingshell.gschema.xml | 5 + .../raiseTogether/raiseTogetherManager.ts | 94 +++++++++++++++++++ src/components/windowBorder/windowBorder.ts | 3 - src/extension.ts | 11 ++- src/prefs.ts | 10 +- src/settings/settings.ts | 9 ++ src/utils/signalHandling.ts | 2 + 7 files changed, 129 insertions(+), 5 deletions(-) create mode 100644 src/components/raiseTogether/raiseTogetherManager.ts diff --git a/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml b/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml index a9236271..2f40e39a 100644 --- a/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml +++ b/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml @@ -107,6 +107,11 @@ Enable auto tiling Automatically tile a new window to the best tile according to the current layout. + + false + Raise tiled windows together + When one tiled window is raised, raise all tiled windows into the foreground together. + '{}' Overridden settings diff --git a/src/components/raiseTogether/raiseTogetherManager.ts b/src/components/raiseTogether/raiseTogetherManager.ts new file mode 100644 index 00000000..9cc98751 --- /dev/null +++ b/src/components/raiseTogether/raiseTogetherManager.ts @@ -0,0 +1,94 @@ +import { Meta } from '../../gi/ext'; +import SignalHandling from '../../utils/signalHandling'; +import Settings from '../../settings/settings'; +import { getWindows } from '../../utils/ui'; +import ExtendedWindow from '../tilingsystem/extendedWindow'; + +export class RaiseTogetherManager { + private readonly _signals: SignalHandling; + private readonly _raiseId: { [windowId: string]: { id: number, win: Meta.Window } }; // map window id to 'raised' signal id + + constructor() { + this._signals = new SignalHandling(); + this._raiseId = {}; + } + + public enable(): void { + if (Settings.RAISE_TOGETHER) this._turnOn(); + + // enable/disable based on user preferences + this._signals.connect(Settings, Settings.KEY_RAISE_TOGETHER, () => { + if (Settings.RAISE_TOGETHER) this._turnOn(); + else this._turnOff(); + }); + } + + public destroy() { + this._signals.disconnect(); + + const toDelete: string[] = []; + Object.keys(this._raiseId).forEach((key) => { + this._raiseId[key].win.disconnect(this._raiseId[key].id); + toDelete.push(key); + }); + toDelete.forEach((key) => delete this._raiseId[key]); + } + + public _turnOn() { + getWindows().forEach((win) => this._connectRaisedSignal(win)); + + this._signals.connect( + global.display, + 'window-created', + (_display: Meta.Display, window: Meta.Window) => { + this._connectRaisedSignal(window); + }, + ); + } + + private _turnOff() { + this.destroy(); + this.enable(); + } + + private _connectRaisedSignal(window: Meta.Window) { + const raisedId = this._signals.connect(window, "raised", () => { + if (!(window as ExtendedWindow).assignedTile) return; // window not tiled + + this._onTiledWindowRaised(window); + }); + this._raiseId[window.get_id()] = { id: raisedId, win: window }; + window.connect("unmanaged", () => { + delete this._raiseId[window.get_id()]; + }); + } + + private _onTiledWindowRaised(tiledWindow: Meta.Window) { + const workspace = tiledWindow.get_workspace(); + getWindows(workspace).forEach(winSameWorkspace => { + if (!(winSameWorkspace as ExtendedWindow).assignedTile) return; // window not tiled + + this._stopRaiseSignalHandling(winSameWorkspace); + winSameWorkspace.raise(); + this._restartRaiseSignalHandling(winSameWorkspace); + }); + + this._stopRaiseSignalHandling(tiledWindow); + tiledWindow.raise(); + this._restartRaiseSignalHandling(tiledWindow); + } + + private _stopRaiseSignalHandling(window: Meta.Window) { + const data = this._raiseId[window.get_id()]; + if (!data) return; + + window.block_signal_handler(data.id); + } + + private _restartRaiseSignalHandling(window: Meta.Window) { + const data = this._raiseId[window.get_id()]; + if (!data) return; + + window.unblock_signal_handler(data.id); + } +} diff --git a/src/components/windowBorder/windowBorder.ts b/src/components/windowBorder/windowBorder.ts index 62d64f2e..06809d27 100644 --- a/src/components/windowBorder/windowBorder.ts +++ b/src/components/windowBorder/windowBorder.ts @@ -130,9 +130,6 @@ export default class WindowBorder extends St.DrawingArea { this._signals.connect(global.display, 'restacked', () => { this.queue_repaint(); // a transient window might have been opened - }); - - this._signals.connect(global.display, 'restacked', () => { global.windowGroup.set_child_above_sibling(this, null); }); diff --git a/src/extension.ts b/src/extension.ts index d96c98b6..61c2f790 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -50,6 +50,7 @@ import OverriddenAltTab from './components/altTab/overriddenAltTab'; import { LayoutSwitcherPopup } from './components/layoutSwitcher/layoutSwitcher'; import { unmaximizeWindow } from './utils/gnomesupport'; import * as Config from 'resource:///org/gnome/shell/misc/config.js'; +import { RaiseTogetherManager } from './components/raiseTogether/raiseTogetherManager'; const debug = logger('extension'); @@ -62,7 +63,8 @@ export default class TilingShellExtension extends Extension { private _keybindings: KeyBindings | null; private _resizingManager: ResizingManager | null; private _windowBorderManager: WindowBorderManager | null; - + private _raiseTogetherManager: RaiseTogetherManager | null; + constructor(metadata: ExtensionMetadata) { super(metadata); this._signals = null; @@ -73,6 +75,7 @@ export default class TilingShellExtension extends Extension { this._keybindings = null; this._resizingManager = null; this._windowBorderManager = null; + this._raiseTogetherManager = null; } createIndicator() { @@ -158,6 +161,9 @@ export default class TilingShellExtension extends Extension { ); this._windowBorderManager.enable(); + this._raiseTogetherManager = new RaiseTogetherManager(); + this._raiseTogetherManager.enable(); + this.createIndicator(); if (this._dbus) this._dbus.disable(); @@ -767,6 +773,9 @@ export default class TilingShellExtension extends Extension { this._windowBorderManager?.destroy(); this._windowBorderManager = null; + this._raiseTogetherManager?.destroy(); + this._raiseTogetherManager = null; + // disable dbus this._dbus?.disable(); this._dbus = null; diff --git a/src/prefs.ts b/src/prefs.ts index c0c3cd34..4c507714 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -1,4 +1,3 @@ -// eslint-disable-next-line spaced-comment /*! * Tiling Shell: advanced and modern window management for GNOME * @@ -312,6 +311,15 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference ); behaviourGroup.add(overrideAltTabRow); + const raiseTogetherRow = this._buildSwitchRow( + Settings.KEY_RAISE_TOGETHER, + _('Raise tiled windows together'), + _( + 'When one tiled window is raised, raise all tiled windows into the foreground together', + ), + ); + behaviourGroup.add(raiseTogetherRow); + // Screen Edges section const activeScreenEdgesGroup = new Adw.PreferencesGroup({ title: _('Screen Edges'), diff --git a/src/settings/settings.ts b/src/settings/settings.ts index 4155fbe5..e35786df 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -102,6 +102,7 @@ export default class Settings { static KEY_ENABLE_BLUR_SELECTED_TILEPREVIEW = 'enable-blur-selected-tilepreview'; static KEY_ENABLE_MOVE_KEYBINDINGS = 'enable-move-keybindings'; static KEY_ENABLE_AUTO_TILING = 'enable-autotiling'; + static KEY_RAISE_TOGETHER = 'raise-together'; static KEY_ACTIVE_SCREEN_EDGES = 'active-screen-edges'; static KEY_TOP_EDGE_MAXIMIZE = 'top-edge-maximize'; static KEY_OVERRIDE_WINDOW_MENU = 'override-window-menu'; @@ -339,6 +340,14 @@ export default class Settings { set_boolean(Settings.KEY_ENABLE_AUTO_TILING, val); } + static get RAISE_TOGETHER(): boolean { + return get_boolean(Settings.KEY_RAISE_TOGETHER); + } + + static set RAISE_TOGETHER(val: boolean) { + set_boolean(Settings.KEY_RAISE_TOGETHER, val); + } + static get ACTIVE_SCREEN_EDGES(): boolean { return get_boolean(Settings.KEY_ACTIVE_SCREEN_EDGES); } diff --git a/src/utils/signalHandling.ts b/src/utils/signalHandling.ts index a690fb1f..c2ed5e1f 100644 --- a/src/utils/signalHandling.ts +++ b/src/utils/signalHandling.ts @@ -19,6 +19,8 @@ export default class SignalHandling { ) { const signalId = obj.connect(key, fun); this._signalsIds[key] = { id: signalId, obj }; + + return signalId; } public disconnect(): boolean; From dfcbbb76ae1c79f874d2af47e8d0273180f2c123 Mon Sep 17 00:00:00 2001 From: Domenico Ferraro Date: Sat, 17 Jan 2026 17:26:41 +0100 Subject: [PATCH 32/35] fix: use quarters windows suggestions with default edge tiling --- src/components/tilingsystem/tilingManager.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/components/tilingsystem/tilingManager.ts b/src/components/tilingsystem/tilingManager.ts index 64106241..a77e26e3 100644 --- a/src/components/tilingsystem/tilingManager.ts +++ b/src/components/tilingsystem/tilingManager.ts @@ -15,7 +15,7 @@ import { import TilingLayout from '../../components/tilingsystem/tilingLayout'; import SnapAssist from '../snapassist/snapAssist'; import SelectionTilePreview from '../tilepreview/selectionTilePreview'; -import { ActivationKey } from '../../settings/settings'; +import { ActivationKey, EdgeSnapMode } from '../../settings/settings'; import Settings from '../../settings/settings'; import SignalHandling from '../../utils/signalHandling'; import Layout from '../layout/Layout'; @@ -888,16 +888,23 @@ export class TilingManager { // retrieve the current layout for the monitor and workspace // were the window was tiled const layout = wasEdgeTiling - ? GlobalState.get().getSelectedLayoutOfMonitor( + ? (Settings.EDGE_SNAP_MODE === EdgeSnapMode.DEFAULT + ? new Layout([ + new Tile({ x: 0, y: 0, height: 0.5, width: 0.5, groups: []}), + new Tile({ x: 0.5, y: 0, height: 0.5, width: 0.5, groups: []}), + new Tile({ x: 0, y: 0.5, height: 0.5, width: 0.5, groups: []}), + new Tile({ x: 0.5, y: 0.5, height: 0.5, width: 0.5, groups: []})], + "quarters" + ) + : GlobalState.get().getSelectedLayoutOfMonitor( this._monitor.index, - window.get_workspace().index(), - ) - : wasSnapAssistingLayout + window.get_workspace().index()) + ): (wasSnapAssistingLayout ? wasSnapAssistingLayout : GlobalState.get().getSelectedLayoutOfMonitor( this._monitor.index, window.get_workspace().index(), - ); + )); this._openWindowsSuggestions( window, desiredWindowRect, From aa96196ac0e5170d6d9c80b56afbeb113ae8604b Mon Sep 17 00:00:00 2001 From: Domenico Ferraro Date: Sat, 17 Jan 2026 17:34:55 +0100 Subject: [PATCH 33/35] multiple refactoring for edge snapping --- ...e.shell.extensions.tilingshell.gschema.xml | 8 +- .../tilingsystem/edgeTilingManager.ts | 154 ++++++++---------- src/components/tilingsystem/tilingManager.ts | 4 +- src/prefs.ts | 24 +-- src/settings/settings.ts | 18 +- .../tilingshell@ferrarodomenico.com.pot | 2 +- 6 files changed, 95 insertions(+), 115 deletions(-) diff --git a/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml b/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml index 2f40e39a..9d02e798 100644 --- a/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml +++ b/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml @@ -199,12 +199,12 @@ false - Enable window suggestions for screen edge snapping - Suggests windows to occupy empty tiles when snapping to screen edges. + Enable window suggestions for screen edge tiling + Suggests windows to occupy empty tiles when tiling to screen edges. - + 'default' - Edge snap behavior + Edge tiling behavior Controls how windows snap to screen edges:\n'default' (corners snap to quarters, edges to halves),\n'adaptive' (snap to layout tiles by column),\n'granular' (snap to exact tile under cursor). diff --git a/src/components/tilingsystem/edgeTilingManager.ts b/src/components/tilingsystem/edgeTilingManager.ts index 448dc47e..3bb0be2e 100644 --- a/src/components/tilingsystem/edgeTilingManager.ts +++ b/src/components/tilingsystem/edgeTilingManager.ts @@ -3,9 +3,9 @@ import { isPointInsideRect, clampPointInsideRect, } from '../../utils/ui'; -import { GObject, Mtk, St } from '../../gi/ext'; +import { GObject, Mtk } from '../../gi/ext'; import Settings from '../../settings/settings'; -import { EdgeSnapMode } from '../../settings/settings'; +import { EdgeTilingMode } from '../../settings/settings'; import { registerGObjectClass } from '../../utils/gjs'; import { logger } from '../../utils/logger'; import Layout from '../layout/Layout'; @@ -14,7 +14,6 @@ import Tile from '../../components/layout/Tile'; const TOP_EDGE_TILING_OFFSET = 8; const QUARTER_PERCENTAGE = 0.5; -const __DEBUG_MODE__ = false; export default class EdgeTilingManager extends GObject.Object { static { registerGObjectClass(this, { @@ -209,8 +208,8 @@ export default class EdgeTilingManager extends GObject.Object { if (!this._activeEdgeTile) this._activeEdgeTile = buildRectangle(); - // Get the current edge snap mode - const edgeSnapMode = Settings.EDGE_SNAP_MODE; + // Get the current edge tiling mode + const edgeSnapMode = Settings.EDGE_TILING_MODE; // Default behavior - initialize with quarter tiling previewRect.width = this._workArea.width * QUARTER_PERCENTAGE; @@ -220,21 +219,21 @@ export default class EdgeTilingManager extends GObject.Object { // Handle different snapping modes switch (edgeSnapMode) { - case EdgeSnapMode.DEFAULT: + case EdgeTilingMode.DEFAULT: // Default behavior - quarters for corners, halves for edges - return this._handleDefaultEdgeSnap(x, y, previewRect); - case EdgeSnapMode.ADAPTIVE: + return this._handleDefaultEdgeTiling(x, y, previewRect); + case EdgeTilingMode.ADAPTIVE: // Adaptive behavior - snap to layout tiles by column - return this._handleAdaptiveEdgeSnap(x, y, previewRect); - case EdgeSnapMode.GRANULAR: + return this._handleAdaptiveEdgeTiling(x, y, previewRect); + case EdgeTilingMode.GRANULAR: // Granular behavior - snap to exact tile under cursor - return this._handleGranularEdgeSnap(x, y, previewRect); + return this._handleGranularEdgeTiling(x, y, previewRect); default: - return this._handleDefaultEdgeSnap(x, y, previewRect); + return this._handleDefaultEdgeTiling(x, y, previewRect); } } - private _handleDefaultEdgeSnap( + private _handleDefaultEdgeTiling( x: number, y: number, previewRect: Mtk.Rectangle, @@ -293,25 +292,23 @@ export default class EdgeTilingManager extends GObject.Object { } } - // Debug visualization - if (__DEBUG_MODE__) { - // Clean up any existing debug widget - global.windowGroup - .get_children() - .filter((c) => c.get_name() === 'debug')[0] - ?.destroy(); - - // Create a new debug widget - const debug = new St.Widget({ - x: this._activeEdgeTile.x, - y: this._activeEdgeTile.y, - height: this._activeEdgeTile.height, - width: this._activeEdgeTile.width, - style: 'border: 2px solid red', - name: 'debug', - }); - global.windowGroup.add_child(debug); - } + // Uncomment to show visual debug + // Clean up any existing debug widget + // global.windowGroup + // .get_children() + // .filter((c) => c.get_name() === 'debug')[0] + // ?.destroy(); + + // // Create a new debug widget + // const debug = new St.Widget({ + // x: this._activeEdgeTile.x, + // y: this._activeEdgeTile.y, + // height: this._activeEdgeTile.height, + // width: this._activeEdgeTile.width, + // style: 'border: 2px solid red', + // name: 'debug', + // }); + // global.windowGroup.add_child(debug); return { changed: true, @@ -319,7 +316,7 @@ export default class EdgeTilingManager extends GObject.Object { }; } - private _handleAdaptiveEdgeSnap( + private _handleAdaptiveEdgeTiling( x: number, y: number, previewRect: Mtk.Rectangle, @@ -329,7 +326,7 @@ export default class EdgeTilingManager extends GObject.Object { // - edges snap to entire column of tiles if (!this._currentLayout) - return this._handleDefaultEdgeSnap(x, y, previewRect); + return this._handleDefaultEdgeTiling(x, y, previewRect); if (isPointInsideRect({ x, y }, this._topCenter)) { previewRect.width = this._workArea.width; @@ -467,25 +464,23 @@ export default class EdgeTilingManager extends GObject.Object { }; } - // Debug visualization - if (__DEBUG_MODE__) { - // Clean up any existing debug widget - global.windowGroup - .get_children() - .filter((c) => c.get_name() === 'debug')[0] - ?.destroy(); - - // Create a new debug widget - const debug = new St.Widget({ - x: this._activeEdgeTile.x, - y: this._activeEdgeTile.y, - height: this._activeEdgeTile.height, - width: this._activeEdgeTile.width, - style: 'border: 2px solid red', - name: 'debug', - }); - global.windowGroup.add_child(debug); - } + // Uncomment to show visual debug + // // Clean up any existing debug widget + // global.windowGroup + // .get_children() + // .filter((c) => c.get_name() === 'debug')[0] + // ?.destroy(); + + // // Create a new debug widget + // const debug = new St.Widget({ + // x: this._activeEdgeTile.x, + // y: this._activeEdgeTile.y, + // height: this._activeEdgeTile.height, + // width: this._activeEdgeTile.width, + // style: 'border: 2px solid red', + // name: 'debug', + // }); + // global.windowGroup.add_child(debug); return { changed: true, @@ -493,7 +488,7 @@ export default class EdgeTilingManager extends GObject.Object { }; } - private _handleGranularEdgeSnap( + private _handleGranularEdgeTiling( x: number, y: number, previewRect: Mtk.Rectangle, @@ -503,7 +498,7 @@ export default class EdgeTilingManager extends GObject.Object { // - edges snap to the exact tile the cursor is over if (!this._currentLayout) - return this._handleDefaultEdgeSnap(x, y, previewRect); + return this._handleDefaultEdgeTiling(x, y, previewRect); if (isPointInsideRect({ x, y }, this._topCenter)) { previewRect.width = this._workArea.width; @@ -613,25 +608,23 @@ export default class EdgeTilingManager extends GObject.Object { }; } - // Debug visualization - if (__DEBUG_MODE__) { - // Clean up any existing debug widget - global.windowGroup - .get_children() - .filter((c) => c.get_name() === 'debug')[0] - ?.destroy(); - - // Create a new debug widget - const debug = new St.Widget({ - x: this._activeEdgeTile.x, - y: this._activeEdgeTile.y, - height: this._activeEdgeTile.height, - width: this._activeEdgeTile.width, - style: 'border: 2px solid red', - name: 'debug', - }); - global.windowGroup.add_child(debug); - } + // Uncomment to show visual debug + // // Clean up any existing debug widget + // global.windowGroup + // .get_children() + // .filter((c) => c.get_name() === 'debug')[0] + // ?.destroy(); + + // // Create a new debug widget + // const debug = new St.Widget({ + // x: this._activeEdgeTile.x, + // y: this._activeEdgeTile.y, + // height: this._activeEdgeTile.height, + // width: this._activeEdgeTile.width, + // style: 'border: 2px solid red', + // name: 'debug', + // }); + // global.windowGroup.add_child(debug); return { changed: true, @@ -639,12 +632,6 @@ export default class EdgeTilingManager extends GObject.Object { }; } - // Helper methods for intelligent edge snap - private _shouldUseEdgeSnap(): boolean { - if (!this._currentLayout) return false; - return true; - } - private _getLeftColumnTiles() { if (!this._currentLayout) return []; return this._currentLayout.tiles.filter( @@ -659,13 +646,6 @@ export default class EdgeTilingManager extends GObject.Object { ); } - private _findAllTilesInColumn(x: number, tolerance: number = 0.01) { - if (!this._currentLayout) return []; - return this._currentLayout.tiles.filter( - (tile) => Math.abs(tile.x - x) < tolerance, - ); - } - private _createRectForColumnTiles( tiles: Tile[], isRightSide: boolean = false, diff --git a/src/components/tilingsystem/tilingManager.ts b/src/components/tilingsystem/tilingManager.ts index a77e26e3..d6e2e33f 100644 --- a/src/components/tilingsystem/tilingManager.ts +++ b/src/components/tilingsystem/tilingManager.ts @@ -15,7 +15,7 @@ import { import TilingLayout from '../../components/tilingsystem/tilingLayout'; import SnapAssist from '../snapassist/snapAssist'; import SelectionTilePreview from '../tilepreview/selectionTilePreview'; -import { ActivationKey, EdgeSnapMode } from '../../settings/settings'; +import { ActivationKey, EdgeTilingMode } from '../../settings/settings'; import Settings from '../../settings/settings'; import SignalHandling from '../../utils/signalHandling'; import Layout from '../layout/Layout'; @@ -888,7 +888,7 @@ export class TilingManager { // retrieve the current layout for the monitor and workspace // were the window was tiled const layout = wasEdgeTiling - ? (Settings.EDGE_SNAP_MODE === EdgeSnapMode.DEFAULT + ? (Settings.EDGE_TILING_MODE === EdgeTilingMode.DEFAULT ? new Layout([ new Tile({ x: 0, y: 0, height: 0.5, width: 0.5, groups: []}), new Tile({ x: 0.5, y: 0, height: 0.5, width: 0.5, groups: []}), diff --git a/src/prefs.ts b/src/prefs.ts index 4c507714..afa39d4b 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -21,7 +21,7 @@ import { Gtk, Adw, Gio, GLib, Gdk, GObject } from './gi/prefs'; import Settings from './settings/settings'; -import { EdgeSnapMode, ActivationKey } from './settings/settings'; +import { EdgeTilingMode, ActivationKey } from './settings/settings'; import { logger } from './utils/logger'; import { ExtensionPreferences } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; import Layout from './components/layout/Layout'; @@ -385,10 +385,10 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference ); activeScreenEdgesGroup.add(edgeTilingOffset); - // Create dropdown for edge snap mode + // Create dropdown for edge tiling mode const edgeTilingBehaviourRow = this._buildEdgeTilingBehaviourRow( - Settings.EDGE_SNAP_MODE, - (newMode: EdgeSnapMode) => Settings.EDGE_SNAP_MODE = newMode, + Settings.EDGE_TILING_MODE, + (newMode: EdgeTilingMode) => Settings.EDGE_TILING_MODE = newMode, ); activeScreenEdgesGroup.add(edgeTilingBehaviourRow); @@ -421,9 +421,9 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference const screenEdgesWindowSuggestionRow = this._buildSwitchRow( Settings.KEY_ENABLE_SCREEN_EDGES_WINDOWS_SUGGESTIONS, - _('Enable window suggestions for screen edge snapping'), + _('Enable window suggestions for screen edge tiling'), _( - 'Suggests windows to occupy empty tiles when snapping to screen edges', + 'Suggests windows to occupy empty tiles when tiling to screen edges', ), ); windowsSuggestionsGroup.add(screenEdgesWindowSuggestionRow); @@ -1085,7 +1085,7 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference return button; } - _buildEdgeTilingBehaviourRow(currentMode: EdgeSnapMode, onModeChange: (newMode: EdgeSnapMode) => void) { + _buildEdgeTilingBehaviourRow(currentMode: EdgeTilingMode, onModeChange: (newMode: EdgeTilingMode) => void) { const row = new Adw.ActionRow({ activatable: false, title: _("Choose how windows snap to screen edges"), @@ -1107,19 +1107,19 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference _('Follow quarters or screen halves'), 'edge-default-symbolic' ); - defaultBtn.connect("toggled", () => onModeChange(EdgeSnapMode.DEFAULT)); + defaultBtn.connect("toggled", () => onModeChange(EdgeTilingMode.DEFAULT)); const adaptiveBtn = this._createEdgeTilingBehaviourOption( _('Adaptive'), _('Follow corners of selected layout or screen halves'), 'edge-adaptive-symbolic' ); - adaptiveBtn.connect("toggled", () => onModeChange(EdgeSnapMode.ADAPTIVE)); + adaptiveBtn.connect("toggled", () => onModeChange(EdgeTilingMode.ADAPTIVE)); const granularBtn = this._createEdgeTilingBehaviourOption( _('Granular'), _('Follow currently selected layout'), 'edge-granular-symbolic' ); - granularBtn.connect("toggled", () => onModeChange(EdgeSnapMode.GRANULAR)); + granularBtn.connect("toggled", () => onModeChange(EdgeTilingMode.GRANULAR)); content.append(defaultBtn); content.append(adaptiveBtn); content.append(granularBtn); @@ -1127,8 +1127,8 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference defaultBtn.set_group(adaptiveBtn); granularBtn.set_group(adaptiveBtn); // set the currently activated one - if (currentMode === EdgeSnapMode.ADAPTIVE) adaptiveBtn.set_active(true); - else if (currentMode === EdgeSnapMode.GRANULAR) granularBtn.set_active(true); + if (currentMode === EdgeTilingMode.ADAPTIVE) adaptiveBtn.set_active(true); + else if (currentMode === EdgeTilingMode.GRANULAR) granularBtn.set_active(true); else defaultBtn.set_active(true); (row.get_child() as Gtk.Box).append(content); diff --git a/src/settings/settings.ts b/src/settings/settings.ts index e35786df..db274ed4 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -9,7 +9,7 @@ export enum ActivationKey { SUPER, } -export enum EdgeSnapMode { +export enum EdgeTilingMode { DEFAULT = 'default', ADAPTIVE = 'adaptive', GRANULAR = 'granular', @@ -122,7 +122,7 @@ export default class Settings { static KEY_ENABLE_TILING_SYSTEM_WINDOWS_SUGGESTIONS = 'enable-tiling-system-windows-suggestions'; static KEY_ENABLE_SNAP_ASSISTANT_WINDOWS_SUGGESTIONS = 'enable-snap-assistant-windows-suggestions'; static KEY_ENABLE_SCREEN_EDGES_WINDOWS_SUGGESTIONS = 'enable-screen-edges-windows-suggestions'; - static KEY_EDGE_SNAP_MODE = 'edge-snap-mode'; + static KEY_EDGE_TILING_MODE = 'edge-tiling-mode'; static SETTING_MOVE_WINDOW_RIGHT = 'move-window-right'; static SETTING_MOVE_WINDOW_LEFT = 'move-window-left'; @@ -493,16 +493,16 @@ export default class Settings { set_boolean(Settings.KEY_ENABLE_SCREEN_EDGES_WINDOWS_SUGGESTIONS, val); } - static get EDGE_SNAP_MODE(): EdgeSnapMode { - const value = get_string(Settings.KEY_EDGE_SNAP_MODE); - if (Object.values(EdgeSnapMode).includes(value as EdgeSnapMode)) - return value as EdgeSnapMode; + static get EDGE_TILING_MODE(): EdgeTilingMode { + const value = get_string(Settings.KEY_EDGE_TILING_MODE); + if (Object.values(EdgeTilingMode).includes(value as EdgeTilingMode)) + return value as EdgeTilingMode; - return EdgeSnapMode.DEFAULT; + return EdgeTilingMode.DEFAULT; } - static set EDGE_SNAP_MODE(val: EdgeSnapMode) { - set_string(Settings.KEY_EDGE_SNAP_MODE, val); + static set EDGE_TILING_MODE(val: EdgeTilingMode) { + set_string(Settings.KEY_EDGE_TILING_MODE, val); } static get_inner_gaps(scaleFactor: number = 1): { diff --git a/translations/tilingshell@ferrarodomenico.com.pot b/translations/tilingshell@ferrarodomenico.com.pot index d3e0653f..3766bcf2 100644 --- a/translations/tilingshell@ferrarodomenico.com.pot +++ b/translations/tilingshell@ferrarodomenico.com.pot @@ -293,7 +293,7 @@ msgid "" msgstr "" #: dist/prefs.js:355 -msgid "Enable window suggestions for screen edge snapping" +msgid "Enable window suggestions for screen edge tiling" msgstr "" #: dist/prefs.js:357 From 64afebacb96ebe425b6c6f795fa0aa91d04374d9 Mon Sep 17 00:00:00 2001 From: Domenico Ferraro Date: Sat, 17 Jan 2026 17:57:22 +0100 Subject: [PATCH 34/35] refactor: use Clutter.ModifierType as mask --- src/components/tilingsystem/tilingManager.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/tilingsystem/tilingManager.ts b/src/components/tilingsystem/tilingManager.ts index d6e2e33f..bd8652a3 100644 --- a/src/components/tilingsystem/tilingManager.ts +++ b/src/components/tilingsystem/tilingManager.ts @@ -571,19 +571,19 @@ export class TilingManager { ): boolean { if (key === ActivationKey.NONE) return true; - let val = 2; + let mask = Clutter.ModifierType.CONTROL_MASK; switch (key) { case ActivationKey.CTRL: - val = 2; // Clutter.ModifierType.CONTROL_MASK + mask = Clutter.ModifierType.CONTROL_MASK; break; case ActivationKey.ALT: - val = 3; // Clutter.ModifierType.MOD1_MASK + mask = Clutter.ModifierType.MOD1_MASK; break; case ActivationKey.SUPER: - val = 6; // Clutter.ModifierType.SUPER_MASK + mask = Clutter.ModifierType.SUPER_MASK; break; } - return (modifier & (1 << val)) !== 0; + return (modifier & mask) === mask; } private _onMovingWindow(window: Meta.Window, grabOp: number) { From 5990e447d645df7d49395f578a2d776a0b435b8d Mon Sep 17 00:00:00 2001 From: Domenico Ferraro Date: Sun, 18 Jan 2026 13:02:34 +0100 Subject: [PATCH 35/35] fix: window borders scaling factor --- src/components/tilingsystem/tilingManager.ts | 2 +- src/components/windowBorder/windowBorder.ts | 48 ++++++++------------ 2 files changed, 20 insertions(+), 30 deletions(-) diff --git a/src/components/tilingsystem/tilingManager.ts b/src/components/tilingsystem/tilingManager.ts index bd8652a3..f7ac75fb 100644 --- a/src/components/tilingsystem/tilingManager.ts +++ b/src/components/tilingsystem/tilingManager.ts @@ -982,7 +982,7 @@ export class TilingManager { // apply animations when tiling the window windowActor.remove_all_transitions(); - // @ts-expect-error "Main.wm has the private function _prepareAnimationInfo" + // @ts-expect-error "Main.wm has the "private" function _prepareAnimationInfo" Main.wm._prepareAnimationInfo( global.windowManager, windowActor, diff --git a/src/components/windowBorder/windowBorder.ts b/src/components/windowBorder/windowBorder.ts index 06809d27..209d56fe 100644 --- a/src/components/windowBorder/windowBorder.ts +++ b/src/components/windowBorder/windowBorder.ts @@ -31,7 +31,7 @@ export default class WindowBorder extends St.DrawingArea { private _borderRadiusValue: [number, number, number, number]; private _timeout: GLib.Source | undefined; private _delayedSmartBorderRadius: boolean; - private _borderWidth: number; + private _scaledBorderWidth: number; constructor(win: Meta.Window, enableScaling: boolean) { super({ @@ -39,7 +39,7 @@ export default class WindowBorder extends St.DrawingArea { }); this._signals = new SignalHandling(); this._bindings = []; - this._borderWidth = 1; + this._scaledBorderWidth = 1; this._window = win; this._windowMonitor = win.get_monitor(); this._enableScaling = enableScaling; @@ -90,16 +90,6 @@ export default class WindowBorder extends St.DrawingArea { ), ); - const winRect = this._window.get_frame_rect(); - this.set_position( - winRect.x - this._borderWidth, - winRect.y - this._borderWidth, - ); - this.set_size( - winRect.width + 2 * this._borderWidth, - winRect.height + 2 * this._borderWidth, - ); - if (Settings.ENABLE_SMART_WINDOW_BORDER_RADIUS) { const cached_radius = (this._window as WindowWithCachedRadius) .__ts_cached_radius; @@ -115,6 +105,15 @@ export default class WindowBorder extends St.DrawingArea { } } this.updateStyle(); + const winRect = this._window.get_frame_rect(); + this.set_position( + winRect.x - this._scaledBorderWidth, + winRect.y - this._scaledBorderWidth, + ); + this.set_size( + winRect.width + (2 * this._scaledBorderWidth), + winRect.height + (2 * this._scaledBorderWidth), + ); const isMaximized = this._window.maximizedVertically && @@ -155,8 +154,8 @@ export default class WindowBorder extends St.DrawingArea { const rect = this._window.get_frame_rect(); this.set_position( - rect.x - this._borderWidth, - rect.y - this._borderWidth, + rect.x - this._scaledBorderWidth, + rect.y - this._scaledBorderWidth, ); // if the window changes monitor, we may have a different scaling factor if (this._windowMonitor !== win.get_monitor()) { @@ -188,8 +187,8 @@ export default class WindowBorder extends St.DrawingArea { const rect = this._window.get_frame_rect(); this.set_size( - rect.width + 2 * this._borderWidth, - rect.height + 2 * this._borderWidth, + rect.width + (2 * this._scaledBorderWidth), + rect.height + (2 * this._scaledBorderWidth), ); // if the window changes monitor, we may have a different scaling factor if (this._windowMonitor !== win.get_monitor()) { @@ -330,11 +329,12 @@ export default class WindowBorder extends St.DrawingArea { (alreadyScaled ? 1 : scalingFactor) * (Settings.WINDOW_BORDER_WIDTH / (alreadyScaled ? scalingFactor : 1)); + this._scaledBorderWidth = scalingFactor * Settings.WINDOW_BORDER_WIDTH; const borderColor = Settings.WINDOW_USE_CUSTOM_BORDER_COLOR ? Settings.WINDOW_BORDER_COLOR : '-st-accent-color'; const radius = this._borderRadiusValue.map((val) => { - const valWithBorder = val === 0 ? val : val + borderWidth; + const valWithBorder = val === 0 ? val : (val + borderWidth); return ( (alreadyScaled ? 1 : scalingFactor) * (valWithBorder / (alreadyScaled ? scalingFactor : 1)) @@ -344,20 +344,10 @@ export default class WindowBorder extends St.DrawingArea { const scalingFactorSupportString = monitorScalingFactor ? `${getScalingFactorSupportString(monitorScalingFactor)};` : ''; - - if (this._borderWidth !== borderWidth) { - const diff = this._borderWidth - borderWidth; - this._borderWidth = borderWidth; - this.set_size( - this.get_width() - 2 * diff, - this.get_height() - 2 * diff, - ); - this.set_position(this.get_x() + diff, this.get_y() + diff); - } this.set_style( `border-color: ${borderColor}; border-radius: ${radius[St.Corner.TOPLEFT]}px ${radius[St.Corner.TOPRIGHT]}px ${radius[St.Corner.BOTTOMRIGHT]}px ${radius[St.Corner.BOTTOMLEFT]}px; ${scalingFactorSupportString}`, ); - // not setting border-width: ${borderWidth}px since we will use this._borderWidth in vfunc_repaint + // not setting border-width: ${borderWidth}px since we will draw the border manually in vfunc_repaint } vfunc_repaint() { @@ -366,7 +356,7 @@ export default class WindowBorder extends St.DrawingArea { const [width, height] = this.get_surface_size(); if (!width || !height) return; - const borderWidth = this._borderWidth; + const borderWidth = this._scaledBorderWidth; const borderColor = themeNode.get_border_color(null); const radius = [0, 0, 0, 0]; radius[St.Corner.TOPLEFT] = themeNode.get_border_radius(St.Corner.TOPLEFT);