Compare commits

..
9 Commits
Author SHA1 Message Date
Felitendo 09b2c49eb3 chore: 1.6.0
release / Debian package (push) Failing after 13s
release / RPM package (push) Failing after 24s
release / Release and repositories (push) Skipped
release / Install from the RPM repository (push) Skipped
2026-09-24 11:11:27 +02:00
Felitendo ab62d2a3cf docs: show the search field in the screenshot 2026-09-24 11:11:27 +02:00
Felitendo fa55571118 feat: translate into ten more languages 2026-09-24 11:11:27 +02:00
Felitendo a516cf8f59 feat: scroll long application lists 2026-09-24 11:11:27 +02:00
Felitendo 074a654597 feat: show results in the menu instead of waiting for a key 2026-09-24 10:44:52 +02:00
Felitendo 472cf5382c fix: explain "cannot tell" only when the list has one 2026-09-24 10:44:52 +02:00
Felitendo 82afefe5f8 feat: rework the settings 2026-09-24 10:44:52 +02:00
Felitendo 677660c1c6 fix: start faster by skipping lines scripts do not need 2026-09-24 10:23:59 +02:00
Felitendo e9311431f8 feat: search field in the applications list 2026-09-24 10:23:59 +02:00
24 changed files with 3031 additions and 183 deletions

No files matched your search

+20
View File
@@ -2,6 +2,26 @@
What each release brings, newest first. The [GitHub releases](https://github.com/LoonixTools/middleclick-autoscroll/releases) add every commit that went into it. Versions before `v1.1.0` came without notes. What each release brings, newest first. The [GitHub releases](https://github.com/LoonixTools/middleclick-autoscroll/releases) add every commit that went into it. Versions before `v1.1.0` came without notes.
## v1.6.0
_2026-09-24_
Welcome to middleclick-autoscroll `v1.6.0`! The menu got quicker and simpler: search your apps, fewer settings, and no more waiting for a key. It now speaks eleven languages. The ten new ones are machine translated, so corrections are very welcome.
<p align="center">
<img width="620" alt="The applications list in Konsole, with a search field on top" src="https://raw.githubusercontent.com/LoonixTools/middleclick-autoscroll/v1.6.0/res/screenshots/applications.png">
</p>
### Highlights
- Search field in the applications list
- Long lists scroll
- Faster start
- Simpler settings
- Spotify in the applications list
- Results show up in the menu
- Ten more languages
## v1.5.4 ## v1.5.4
_2026-09-24_ _2026-09-24_
+2 -2
View File
@@ -8,7 +8,7 @@
# Overridable so a packager can pass the version it is actually building # Overridable so a packager can pass the version it is actually building
# (`make VERSION=$pkgver`). The literal below is the fallback for builds # (`make VERSION=$pkgver`). The literal below is the fallback for builds
# straight from a checkout, and is what a release tag has to carry. # straight from a checkout, and is what a release tag has to carry.
VERSION ?= 1.5.4 VERSION ?= 1.6.0
PREFIX ?= /usr PREFIX ?= /usr
DESTDIR ?= DESTDIR ?=
@@ -36,7 +36,7 @@ else
USERUNITDIR ?= $(DATADIR)/systemd/user USERUNITDIR ?= $(DATADIR)/systemd/user
endif endif
LINGUAS := de LINGUAS := cs de es fr it nl pl pt_BR ru tr uk
MOFILES := $(patsubst %,po/%.mo,$(LINGUAS)) MOFILES := $(patsubst %,po/%.mo,$(LINGUAS))
MANPAGE := doc/middleclick-autoscroll.1 MANPAGE := doc/middleclick-autoscroll.1
+2 -2
View File
@@ -95,10 +95,10 @@ Press **1**. Autoscroll _✨just works✨_, like on Windows.
<details> <details>
<summary>Applications</summary> <summary>Applications</summary>
**3** lists every app it found. Space turns one on or off. **3** lists every app it found. Type to search, then Space turns one on or off.
<p align="center"> <p align="center">
<img src="res/screenshots/applications.png" alt="The applications list in Konsole, each with how it gets autoscroll" width="620"> <img src="res/screenshots/applications.png" alt="The applications list in Konsole, with a search field on top and how each app gets autoscroll" width="620">
</p> </p>
</details> </details>
+8 -3
View File
@@ -36,7 +36,10 @@ assumed from where the launcher came from.
Run without a command it shows an interactive menu. Everything it can be told Run without a command it shows an interactive menu. Everything it can be told
is reachable from there; the configuration file behind it does not need to be is reachable from there; the configuration file behind it does not need to be
edited by hand. edited by hand. Its applications list turns single applications on or off,
Steam and Spotify included. Its settings hold the rest: the desktop's
middle-click paste, the watcher, and more Chromium arguments for every
application.
Nothing outside the user's home directory is written to, and running it as root Nothing outside the user's home directory is written to, and running it as root
is refused. is refused.
@@ -112,7 +115,8 @@ Two ways, chosen per application.
Programs that start themselves at login write their own entry into Programs that start themselves at login write their own entry into
_~/.config/autostart_ pointing straight at their binary, bypassing the menu _~/.config/autostart_ pointing straight at their binary, bypassing the menu
entry entirely. Those are patched in place as well. entry entirely. Those are patched in place as well, unless the application is
turned off in the applications list.
Shortcuts on the desktop itself are patched in place too. Nothing in the XDG Shortcuts on the desktop itself are patched in place too. Nothing in the XDG
search path looks at that folder, so a shortcut that lives only there would search path looks at that folder, so a shortcut that lives only there would
@@ -170,7 +174,8 @@ rather than the one from before the update.
The official client is CEF rather than Electron. Installed through The official client is CEF rather than Electron. Installed through
*spotify-launcher*, it is started by a program that builds its own command line *spotify-launcher*, it is started by a program that builds its own command line
and has a configuration file with a slot for extra arguments; that slot is and has a configuration file with a slot for extra arguments; that slot is
where the flag goes. Installed as a plain package, a Flatpak or a snap, it is where the flag goes, and the launcher shows up in the applications list like
any other application. Installed as a plain package, a Flatpak or a snap, it is
an ordinary desktop entry and needs nothing special. an ordinary desktop entry and needs nothing special.
# MIDDLE-CLICK PASTE # MIDDLE-CLICK PASTE
+265
View File
@@ -0,0 +1,265 @@
# Czech translation for middleclick-autoscroll.
# Machine translated. Corrections are welcome.
# Copyright (C) 2026 Felitendo
# This file is distributed under the same license as middleclick-autoscroll.
#
msgid ""
msgstr ""
"Project-Id-Version: middleclick-autoscroll 1.6.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/"
"issues\n"
"POT-Creation-Date: 2026-09-24 00:00+0200\n"
"PO-Revision-Date: 2026-09-24 00:00+0200\n"
"Last-Translator: machine translation\n"
"Language-Team: Czech\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Status labels
msgid "ON"
msgstr "ZAPNUTO"
msgid "OFF"
msgstr "VYPNUTO"
msgid "on"
msgstr "zapnuto"
msgid "off"
msgstr "vypnuto"
msgid "(none)"
msgstr "(žádné)"
msgid "flag file"
msgstr "soubor s příznaky"
msgid "launcher"
msgstr "spouštěč"
msgid "cannot tell"
msgstr "nelze určit"
msgid "not patched yet"
msgstr "zatím nepoužito"
#. Status block
msgid "Autoscroll"
msgstr "Autoscroll"
msgid "Applications covered"
msgstr "Pokryté aplikace"
msgid "%d of %d"
msgstr "%d z %d"
msgid "Not identified"
msgstr "Nerozpoznáno"
msgid "%d (see the applications list)"
msgstr "%d (viz seznam aplikací)"
msgid "Steam"
msgstr "Steam"
msgid "Middle-click paste"
msgstr "Vkládání kolečkem"
msgid "New applications"
msgstr "Nové aplikace"
msgid "Last applied"
msgstr "Naposledy použito"
msgid "Applications pick this up the next time they are started."
msgstr "Aplikace to převezmou při příštím spuštění."
#. Menu
msgid "Turn autoscroll on or off"
msgstr "Zapnout nebo vypnout autoscroll"
msgid "Re-apply everything"
msgstr "Znovu použít vše"
msgid "Applications"
msgstr "Aplikace"
msgid "Settings"
msgstr "Nastavení"
msgid "Quit"
msgstr "Konec"
msgid "Press any key to continue..."
msgstr "Stiskněte libovolnou klávesu..."
msgid "One moment..."
msgstr "Okamžik..."
#. Settings
msgid "Turn off middle-click paste"
msgstr "Vypnout vkládání kolečkem"
msgid ""
"Stops middle click from pasting anywhere else. Starts with the next login."
msgstr "Kolečko už jinde nevkládá. Platí od příštího přihlášení."
msgid "Cover new applications"
msgstr "Pokrýt nové aplikace"
msgid "Applications installed later get autoscroll on their own."
msgstr "Později nainstalované aplikace dostanou autoscroll samy."
msgid "More Chromium arguments"
msgstr "Další argumenty Chromia"
msgid "Passed to every application along with the autoscroll one."
msgstr "Předávají se každé aplikaci spolu s tím pro autoscroll."
msgid "Up/Down: select, Space: change, q: back"
msgstr "Nahoru/Dolů: vybrat, Mezerník: změnit, q: zpět"
msgid "Arguments separated by spaces, empty for none:"
msgstr "Argumenty oddělené mezerami, prázdné pro žádné:"
msgid "Could not save the setting."
msgstr "Nastavení se nepodařilo uložit."
#. Applications screen
msgid "Looking at the installed applications..."
msgstr "Procházím nainstalované aplikace..."
msgid "No Chromium-based applications found."
msgstr "Nenalezeny žádné aplikace založené na Chromiu."
msgid "Anything marked \"cannot tell\" stays off until it is turned on here."
msgstr "Co je označeno „nelze určit“, zůstane vypnuté, dokud to tu nezapnete."
msgid "Autoscroll is off. This is what would be covered."
msgstr "Autoscroll je vypnutý. Toto by bylo pokryto."
msgid "Up/Down: select, Space: turn on or off, q: back"
msgstr "Nahoru/Dolů: vybrat, Mezerník: zapnout či vypnout, q: zpět"
msgid "Search:"
msgstr "Hledat:"
msgid "Type to search, Down: go to the list, Esc: back"
msgstr "Pište pro hledání, Dolů: do seznamu, Esc: zpět"
msgid "No matches."
msgstr "Žádné výsledky."
#. Results
msgid "Autoscroll is on for %d applications."
msgstr "Autoscroll je zapnutý. Aplikací: %d."
msgid ""
"Applications that are already running pick this up when they are restarted."
msgstr "Již spuštěné aplikace to převezmou po restartu."
msgid "Could not start the watcher for newly installed applications."
msgstr "Sledování nových aplikací se nepodařilo spustit."
msgid ""
"No systemd user session, so newly installed applications will not be picked "
"up on their own."
msgstr ""
"Chybí uživatelská relace systemd, takže nově nainstalované aplikace nebudou "
"zachyceny samy."
msgid "Autoscroll is off and everything that was changed has been put back."
msgstr "Autoscroll je vypnutý a všechny změny byly vráceny."
msgid "Autoscroll is off. Turn it on first."
msgstr "Autoscroll je vypnutý. Nejdřív ho zapněte."
msgid "Applied again to %d applications."
msgstr "Znovu použito. Aplikací: %d."
msgid "Applied to %d applications."
msgstr "Použito. Aplikací: %d."
msgid "Already applied to %d applications."
msgstr "Už použito. Aplikací: %d."
msgid ""
"Steam starts its interface in a way this version cannot change without Steam "
"noticing; leaving it alone."
msgstr ""
"Steam spouští své rozhraní způsobem, který tato verze nedokáže změnit, aniž "
"by si toho Steam všiml; Steam zůstává beze změny."
msgid ""
"Steam's interface cannot be given the flag without leaving a file Steam "
"would reinstall; the change has been taken back."
msgstr ""
"Rozhraní Steamu nelze dát příznak bez souboru, který by Steam znovu "
"nainstaloval; změna byla vrácena."
msgid "Middle click stops pasting at the next login."
msgstr "Kolečko přestane vkládat od příštího přihlášení."
#. Help
msgid "Usage: middleclick-autoscroll [command]"
msgstr "Použití: middleclick-autoscroll [příkaz]"
msgid "Commands:"
msgstr "Příkazy:"
msgid "Turn autoscroll on"
msgstr "Zapnout autoscroll"
msgid "Turn it off and put everything back"
msgstr "Vypnout a vše vrátit"
msgid "Apply to anything installed since the last run"
msgstr "Použít na vše nainstalované od posledního spuštění"
msgid "Take everything back and apply it again"
msgstr "Vše vrátit a použít znovu"
msgid "Show what is covered"
msgstr "Ukázat, co je pokryto"
msgid "List every application that was found"
msgstr "Vypsat všechny nalezené aplikace"
msgid "Show this help"
msgstr "Zobrazit tuto nápovědu"
msgid "Show the version"
msgstr "Zobrazit verzi"
msgid "Without a command an interactive menu is shown."
msgstr "Bez příkazu se zobrazí interaktivní nabídka."
msgid "Unknown command: %s"
msgstr "Neznámý příkaz: %s"
#. Time
msgid "never"
msgstr "nikdy"
msgid "just now"
msgstr "právě teď"
msgid "1 minute ago"
msgstr "před 1 minutou"
msgid "%d minutes ago"
msgstr "před %d min"
msgid "1 hour ago"
msgstr "před 1 hodinou"
msgid "%d hours ago"
msgstr "před %d h"
msgid "1 day ago"
msgstr "před 1 dnem"
msgid "%d days ago"
msgstr "před %d dny"
+33 -30
View File
@@ -4,11 +4,11 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: middleclick-autoscroll 1.0.3\n" "Project-Id-Version: middleclick-autoscroll 1.6.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/"
"issues\n" "issues\n"
"POT-Creation-Date: 2026-08-16 00:00+0200\n" "POT-Creation-Date: 2026-09-24 00:00+0200\n"
"PO-Revision-Date: 2026-08-16 00:00+0200\n" "PO-Revision-Date: 2026-09-24 00:00+0200\n"
"Last-Translator: Felitendo\n" "Last-Translator: Felitendo\n"
"Language-Team: German\n" "Language-Team: German\n"
"Language: de\n" "Language: de\n"
@@ -94,36 +94,32 @@ msgstr "Beenden"
msgid "Press any key to continue..." msgid "Press any key to continue..."
msgstr "Beliebige Taste drücken …" msgstr "Beliebige Taste drücken …"
msgid "One moment..."
msgstr "Einen Moment …"
#. Settings #. Settings
msgid "Electron and CEF applications" msgid "Turn off middle-click paste"
msgstr "Electron- und CEF-Anwendungen" msgstr "Mittelklick-Einfügen abschalten"
msgid "Chromium-based browsers" msgid ""
msgstr "Chromium-basierte Browser" "Stops middle click from pasting anywhere else. Starts with the next login."
msgstr ""
"Mittelklick fügt auch sonst nirgends mehr ein. Ab der nächsten Anmeldung."
msgid "Flatpak applications" msgid "Cover new applications"
msgstr "Flatpak-Anwendungen" msgstr "Neue Anwendungen abdecken"
msgid "Snap applications" msgid "Applications installed later get autoscroll on their own."
msgstr "Snap-Anwendungen" msgstr "Später installierte Anwendungen bekommen Autoscroll von selbst."
msgid "Programs that start themselves at login" msgid "More Chromium arguments"
msgstr "Programme, die sich beim Anmelden selbst starten" msgstr "Weitere Chromium-Argumente"
msgid "Spotify" msgid "Passed to every application along with the autoscroll one."
msgstr "Spotify" msgstr "Gehen zusammen mit dem Autoscroll-Argument an jede Anwendung."
msgid "Turn off KDE's middle-click paste" msgid "Up/Down: select, Space: change, q: back"
msgstr "KDEs Mittelklick-Einfügen abschalten" msgstr "Hoch/Runter: wählen, Leertaste: ändern, q: zurück"
msgid "Apply to newly installed applications"
msgstr "Auf neu installierte Anwendungen anwenden"
msgid "Additional Chromium arguments"
msgstr "Zusätzliche Chromium-Argumente"
msgid "Up/Down: select, Space or Right: change, q: back"
msgstr "Hoch/Runter: wählen, Leertaste oder Rechts: ändern, q: zurück"
msgid "Arguments separated by spaces, empty for none:" msgid "Arguments separated by spaces, empty for none:"
msgstr "Argumente mit Leerzeichen getrennt, leer für keine:" msgstr "Argumente mit Leerzeichen getrennt, leer für keine:"
@@ -138,10 +134,8 @@ msgstr "Installierte Anwendungen werden durchgesehen …"
msgid "No Chromium-based applications found." msgid "No Chromium-based applications found."
msgstr "Keine Chromium-basierten Anwendungen gefunden." msgstr "Keine Chromium-basierten Anwendungen gefunden."
msgid "Anything not identified is left alone until it is turned on here." msgid "Anything marked \"cannot tell\" stays off until it is turned on here."
msgstr "" msgstr "Was „nicht erkennbar“ ist, bleibt aus, bis es hier eingeschaltet wird."
"Nicht erkannte Anwendungen bleiben unangetastet, bis sie hier eingeschaltet "
"werden."
msgid "Autoscroll is off. This is what would be covered." msgid "Autoscroll is off. This is what would be covered."
msgstr "Autoscroll ist aus. Das hier wäre abgedeckt." msgstr "Autoscroll ist aus. Das hier wäre abgedeckt."
@@ -149,6 +143,15 @@ msgstr "Autoscroll ist aus. Das hier wäre abgedeckt."
msgid "Up/Down: select, Space: turn on or off, q: back" msgid "Up/Down: select, Space: turn on or off, q: back"
msgstr "Hoch/Runter: wählen, Leertaste: ein- oder ausschalten, q: zurück" msgstr "Hoch/Runter: wählen, Leertaste: ein- oder ausschalten, q: zurück"
msgid "Search:"
msgstr "Suchen:"
msgid "Type to search, Down: go to the list, Esc: back"
msgstr "Tippen zum Suchen, Runter: zur Liste, Esc: zurück"
msgid "No matches."
msgstr "Keine Treffer."
#. Results #. Results
msgid "Autoscroll is on for %d applications." msgid "Autoscroll is on for %d applications."
msgstr "Autoscroll ist für %d Anwendungen an." msgstr "Autoscroll ist für %d Anwendungen an."
+266
View File
@@ -0,0 +1,266 @@
# Spanish translation for middleclick-autoscroll.
# Machine translated. Corrections are welcome.
# Copyright (C) 2026 Felitendo
# This file is distributed under the same license as middleclick-autoscroll.
#
msgid ""
msgstr ""
"Project-Id-Version: middleclick-autoscroll 1.6.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/"
"issues\n"
"POT-Creation-Date: 2026-09-24 00:00+0200\n"
"PO-Revision-Date: 2026-09-24 00:00+0200\n"
"Last-Translator: machine translation\n"
"Language-Team: Spanish\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Status labels
msgid "ON"
msgstr "ACTIVADO"
msgid "OFF"
msgstr "DESACTIVADO"
msgid "on"
msgstr "activado"
msgid "off"
msgstr "desactivado"
msgid "(none)"
msgstr "(ninguno)"
msgid "flag file"
msgstr "archivo de flags"
msgid "launcher"
msgstr "lanzador"
msgid "cannot tell"
msgstr "no se sabe"
msgid "not patched yet"
msgstr "aún sin aplicar"
#. Status block
msgid "Autoscroll"
msgstr "Autoscroll"
msgid "Applications covered"
msgstr "Aplicaciones cubiertas"
msgid "%d of %d"
msgstr "%d de %d"
msgid "Not identified"
msgstr "Sin identificar"
msgid "%d (see the applications list)"
msgstr "%d (ver la lista de aplicaciones)"
msgid "Steam"
msgstr "Steam"
msgid "Middle-click paste"
msgstr "Pegar con clic central"
msgid "New applications"
msgstr "Aplicaciones nuevas"
msgid "Last applied"
msgstr "Aplicado por última vez"
msgid "Applications pick this up the next time they are started."
msgstr "Las aplicaciones lo toman la próxima vez que se inicien."
#. Menu
msgid "Turn autoscroll on or off"
msgstr "Activar o desactivar autoscroll"
msgid "Re-apply everything"
msgstr "Volver a aplicar todo"
msgid "Applications"
msgstr "Aplicaciones"
msgid "Settings"
msgstr "Ajustes"
msgid "Quit"
msgstr "Salir"
msgid "Press any key to continue..."
msgstr "Pulsa cualquier tecla para continuar..."
msgid "One moment..."
msgstr "Un momento..."
#. Settings
msgid "Turn off middle-click paste"
msgstr "Desactivar pegar con clic central"
msgid ""
"Stops middle click from pasting anywhere else. Starts with the next login."
msgstr ""
"El clic central ya no pega en ningún otro sitio. Desde el próximo inicio."
msgid "Cover new applications"
msgstr "Cubrir aplicaciones nuevas"
msgid "Applications installed later get autoscroll on their own."
msgstr "Las aplicaciones instaladas más tarde reciben autoscroll solas."
msgid "More Chromium arguments"
msgstr "Más argumentos de Chromium"
msgid "Passed to every application along with the autoscroll one."
msgstr "Se pasan a cada aplicación junto con el de autoscroll."
msgid "Up/Down: select, Space: change, q: back"
msgstr "Arriba/Abajo: elegir, Espacio: cambiar, q: volver"
msgid "Arguments separated by spaces, empty for none:"
msgstr "Argumentos separados por espacios, vacío para ninguno:"
msgid "Could not save the setting."
msgstr "No se pudo guardar el ajuste."
#. Applications screen
msgid "Looking at the installed applications..."
msgstr "Revisando las aplicaciones instaladas..."
msgid "No Chromium-based applications found."
msgstr "No se encontraron aplicaciones basadas en Chromium."
msgid "Anything marked \"cannot tell\" stays off until it is turned on here."
msgstr "Lo marcado como «no se sabe» sigue desactivado hasta activarlo aquí."
msgid "Autoscroll is off. This is what would be covered."
msgstr "Autoscroll está desactivado. Esto es lo que se cubriría."
msgid "Up/Down: select, Space: turn on or off, q: back"
msgstr "Arriba/Abajo: elegir, Espacio: activar o desactivar, q: volver"
msgid "Search:"
msgstr "Buscar:"
msgid "Type to search, Down: go to the list, Esc: back"
msgstr "Escribe para buscar, Abajo: ir a la lista, Esc: volver"
msgid "No matches."
msgstr "Sin resultados."
#. Results
msgid "Autoscroll is on for %d applications."
msgstr "Autoscroll está activado para %d aplicaciones."
msgid ""
"Applications that are already running pick this up when they are restarted."
msgstr "Las aplicaciones que ya están abiertas lo toman al reiniciarse."
msgid "Could not start the watcher for newly installed applications."
msgstr "No se pudo iniciar la vigilancia de aplicaciones nuevas."
msgid ""
"No systemd user session, so newly installed applications will not be picked "
"up on their own."
msgstr ""
"No hay sesión de usuario de systemd, así que las aplicaciones nuevas no se "
"detectarán solas."
msgid "Autoscroll is off and everything that was changed has been put back."
msgstr "Autoscroll está desactivado y todo lo cambiado se ha restaurado."
msgid "Autoscroll is off. Turn it on first."
msgstr "Autoscroll está desactivado. Actívalo primero."
msgid "Applied again to %d applications."
msgstr "Aplicado de nuevo a %d aplicaciones."
msgid "Applied to %d applications."
msgstr "Aplicado a %d aplicaciones."
msgid "Already applied to %d applications."
msgstr "Ya aplicado a %d aplicaciones."
msgid ""
"Steam starts its interface in a way this version cannot change without Steam "
"noticing; leaving it alone."
msgstr ""
"Steam inicia su interfaz de una forma que esta versión no puede cambiar sin "
"que Steam lo note; se deja como está."
msgid ""
"Steam's interface cannot be given the flag without leaving a file Steam "
"would reinstall; the change has been taken back."
msgstr ""
"No se puede dar el flag a la interfaz de Steam sin dejar un archivo que "
"Steam reinstalaría; el cambio se ha deshecho."
msgid "Middle click stops pasting at the next login."
msgstr "El clic central dejará de pegar en el próximo inicio de sesión."
#. Help
msgid "Usage: middleclick-autoscroll [command]"
msgstr "Uso: middleclick-autoscroll [comando]"
msgid "Commands:"
msgstr "Comandos:"
msgid "Turn autoscroll on"
msgstr "Activar autoscroll"
msgid "Turn it off and put everything back"
msgstr "Desactivarlo y restaurar todo"
msgid "Apply to anything installed since the last run"
msgstr "Aplicar a todo lo instalado desde la última vez"
msgid "Take everything back and apply it again"
msgstr "Deshacer todo y volver a aplicarlo"
msgid "Show what is covered"
msgstr "Mostrar qué está cubierto"
msgid "List every application that was found"
msgstr "Listar todas las aplicaciones encontradas"
msgid "Show this help"
msgstr "Mostrar esta ayuda"
msgid "Show the version"
msgstr "Mostrar la versión"
msgid "Without a command an interactive menu is shown."
msgstr "Sin comando se muestra un menú interactivo."
msgid "Unknown command: %s"
msgstr "Comando desconocido: %s"
#. Time
msgid "never"
msgstr "nunca"
msgid "just now"
msgstr "ahora mismo"
msgid "1 minute ago"
msgstr "hace 1 minuto"
msgid "%d minutes ago"
msgstr "hace %d minutos"
msgid "1 hour ago"
msgstr "hace 1 hora"
msgid "%d hours ago"
msgstr "hace %d horas"
msgid "1 day ago"
msgstr "hace 1 día"
msgid "%d days ago"
msgstr "hace %d días"
+269
View File
@@ -0,0 +1,269 @@
# French translation for middleclick-autoscroll.
# Machine translated. Corrections are welcome.
# Copyright (C) 2026 Felitendo
# This file is distributed under the same license as middleclick-autoscroll.
#
msgid ""
msgstr ""
"Project-Id-Version: middleclick-autoscroll 1.6.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/"
"issues\n"
"POT-Creation-Date: 2026-09-24 00:00+0200\n"
"PO-Revision-Date: 2026-09-24 00:00+0200\n"
"Last-Translator: machine translation\n"
"Language-Team: French\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Status labels
msgid "ON"
msgstr "ACTIVÉ"
msgid "OFF"
msgstr "DÉSACTIVÉ"
msgid "on"
msgstr "activé"
msgid "off"
msgstr "désactivé"
msgid "(none)"
msgstr "(aucun)"
msgid "flag file"
msgstr "fichier de flags"
msgid "launcher"
msgstr "lanceur"
msgid "cannot tell"
msgstr "indéterminé"
msgid "not patched yet"
msgstr "pas encore appliqué"
#. Status block
msgid "Autoscroll"
msgstr "Autoscroll"
msgid "Applications covered"
msgstr "Applications couvertes"
msgid "%d of %d"
msgstr "%d sur %d"
msgid "Not identified"
msgstr "Non identifiées"
msgid "%d (see the applications list)"
msgstr "%d (voir la liste des applications)"
msgid "Steam"
msgstr "Steam"
msgid "Middle-click paste"
msgstr "Collage au clic du milieu"
msgid "New applications"
msgstr "Nouvelles applications"
msgid "Last applied"
msgstr "Dernier passage"
msgid "Applications pick this up the next time they are started."
msgstr "Les applications le prennent en compte à leur prochain démarrage."
#. Menu
msgid "Turn autoscroll on or off"
msgstr "Activer ou désactiver l'autoscroll"
msgid "Re-apply everything"
msgstr "Tout réappliquer"
msgid "Applications"
msgstr "Applications"
msgid "Settings"
msgstr "Paramètres"
msgid "Quit"
msgstr "Quitter"
msgid "Press any key to continue..."
msgstr "Appuyez sur une touche pour continuer..."
msgid "One moment..."
msgstr "Un instant..."
#. Settings
msgid "Turn off middle-click paste"
msgstr "Désactiver le collage au clic du milieu"
msgid ""
"Stops middle click from pasting anywhere else. Starts with the next login."
msgstr "Le clic du milieu ne colle plus ailleurs. Dès la prochaine connexion."
msgid "Cover new applications"
msgstr "Couvrir les nouvelles applications"
msgid "Applications installed later get autoscroll on their own."
msgstr ""
"Les applications installées plus tard reçoivent l'autoscroll d'elles-mêmes."
msgid "More Chromium arguments"
msgstr "Autres arguments Chromium"
msgid "Passed to every application along with the autoscroll one."
msgstr "Transmis à chaque application avec celui de l'autoscroll."
msgid "Up/Down: select, Space: change, q: back"
msgstr "Haut/Bas : choisir, Espace : changer, q : retour"
msgid "Arguments separated by spaces, empty for none:"
msgstr "Arguments séparés par des espaces, vide pour aucun :"
msgid "Could not save the setting."
msgstr "Impossible d'enregistrer le paramètre."
#. Applications screen
msgid "Looking at the installed applications..."
msgstr "Examen des applications installées..."
msgid "No Chromium-based applications found."
msgstr "Aucune application basée sur Chromium trouvée."
msgid "Anything marked \"cannot tell\" stays off until it is turned on here."
msgstr ""
"Ce qui est marqué « indéterminé » reste désactivé jusqu'à être activé ici."
msgid "Autoscroll is off. This is what would be covered."
msgstr "L'autoscroll est désactivé. Voici ce qui serait couvert."
msgid "Up/Down: select, Space: turn on or off, q: back"
msgstr "Haut/Bas : choisir, Espace : activer ou désactiver, q : retour"
msgid "Search:"
msgstr "Rechercher :"
msgid "Type to search, Down: go to the list, Esc: back"
msgstr "Tapez pour rechercher, Bas : aller à la liste, Échap : retour"
msgid "No matches."
msgstr "Aucun résultat."
#. Results
msgid "Autoscroll is on for %d applications."
msgstr "L'autoscroll est activé pour %d applications."
msgid ""
"Applications that are already running pick this up when they are restarted."
msgstr ""
"Les applications déjà ouvertes le prennent en compte après un redémarrage."
msgid "Could not start the watcher for newly installed applications."
msgstr "Impossible de démarrer la surveillance des nouvelles applications."
msgid ""
"No systemd user session, so newly installed applications will not be picked "
"up on their own."
msgstr ""
"Pas de session utilisateur systemd, les nouvelles applications ne seront "
"donc pas prises en charge d'elles-mêmes."
msgid "Autoscroll is off and everything that was changed has been put back."
msgstr ""
"L'autoscroll est désactivé et tout ce qui avait été modifié a été rétabli."
msgid "Autoscroll is off. Turn it on first."
msgstr "L'autoscroll est désactivé. Activez-le d'abord."
msgid "Applied again to %d applications."
msgstr "Réappliqué à %d applications."
msgid "Applied to %d applications."
msgstr "Appliqué à %d applications."
msgid "Already applied to %d applications."
msgstr "Déjà appliqué à %d applications."
msgid ""
"Steam starts its interface in a way this version cannot change without Steam "
"noticing; leaving it alone."
msgstr ""
"Steam lance son interface d'une façon que cette version ne peut pas modifier "
"sans que Steam le remarque ; Steam reste tel quel."
msgid ""
"Steam's interface cannot be given the flag without leaving a file Steam "
"would reinstall; the change has been taken back."
msgstr ""
"L'interface de Steam ne peut pas recevoir le flag sans laisser un fichier "
"que Steam réinstallerait ; la modification a été annulée."
msgid "Middle click stops pasting at the next login."
msgstr "Le clic du milieu ne collera plus à la prochaine connexion."
#. Help
msgid "Usage: middleclick-autoscroll [command]"
msgstr "Utilisation : middleclick-autoscroll [commande]"
msgid "Commands:"
msgstr "Commandes :"
msgid "Turn autoscroll on"
msgstr "Activer l'autoscroll"
msgid "Turn it off and put everything back"
msgstr "Le désactiver et tout rétablir"
msgid "Apply to anything installed since the last run"
msgstr "Appliquer à tout ce qui a été installé depuis le dernier passage"
msgid "Take everything back and apply it again"
msgstr "Tout annuler et réappliquer"
msgid "Show what is covered"
msgstr "Afficher ce qui est couvert"
msgid "List every application that was found"
msgstr "Lister toutes les applications trouvées"
msgid "Show this help"
msgstr "Afficher cette aide"
msgid "Show the version"
msgstr "Afficher la version"
msgid "Without a command an interactive menu is shown."
msgstr "Sans commande, un menu interactif s'affiche."
msgid "Unknown command: %s"
msgstr "Commande inconnue : %s"
#. Time
msgid "never"
msgstr "jamais"
msgid "just now"
msgstr "à l'instant"
msgid "1 minute ago"
msgstr "il y a 1 minute"
msgid "%d minutes ago"
msgstr "il y a %d minutes"
msgid "1 hour ago"
msgstr "il y a 1 heure"
msgid "%d hours ago"
msgstr "il y a %d heures"
msgid "1 day ago"
msgstr "il y a 1 jour"
msgid "%d days ago"
msgstr "il y a %d jours"
+269
View File
@@ -0,0 +1,269 @@
# Italian translation for middleclick-autoscroll.
# Machine translated. Corrections are welcome.
# Copyright (C) 2026 Felitendo
# This file is distributed under the same license as middleclick-autoscroll.
#
msgid ""
msgstr ""
"Project-Id-Version: middleclick-autoscroll 1.6.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/"
"issues\n"
"POT-Creation-Date: 2026-09-24 00:00+0200\n"
"PO-Revision-Date: 2026-09-24 00:00+0200\n"
"Last-Translator: machine translation\n"
"Language-Team: Italian\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Status labels
msgid "ON"
msgstr "ACCESO"
msgid "OFF"
msgstr "SPENTO"
msgid "on"
msgstr "acceso"
msgid "off"
msgstr "spento"
msgid "(none)"
msgstr "(nessuno)"
msgid "flag file"
msgstr "file di flag"
msgid "launcher"
msgstr "lanciatore"
msgid "cannot tell"
msgstr "incerto"
msgid "not patched yet"
msgstr "non ancora applicato"
#. Status block
msgid "Autoscroll"
msgstr "Autoscroll"
msgid "Applications covered"
msgstr "Applicazioni coperte"
msgid "%d of %d"
msgstr "%d di %d"
msgid "Not identified"
msgstr "Non identificate"
msgid "%d (see the applications list)"
msgstr "%d (vedi l'elenco delle applicazioni)"
msgid "Steam"
msgstr "Steam"
msgid "Middle-click paste"
msgstr "Incolla con clic centrale"
msgid "New applications"
msgstr "Nuove applicazioni"
msgid "Last applied"
msgstr "Applicato l'ultima volta"
msgid "Applications pick this up the next time they are started."
msgstr "Le applicazioni lo recepiscono al prossimo avvio."
#. Menu
msgid "Turn autoscroll on or off"
msgstr "Accendi o spegni l'autoscroll"
msgid "Re-apply everything"
msgstr "Riapplica tutto"
msgid "Applications"
msgstr "Applicazioni"
msgid "Settings"
msgstr "Impostazioni"
msgid "Quit"
msgstr "Esci"
msgid "Press any key to continue..."
msgstr "Premi un tasto per continuare..."
msgid "One moment..."
msgstr "Un momento..."
#. Settings
msgid "Turn off middle-click paste"
msgstr "Disattiva incolla con clic centrale"
msgid ""
"Stops middle click from pasting anywhere else. Starts with the next login."
msgstr ""
"Il clic centrale non incolla più da nessun'altra parte. Dal prossimo accesso."
msgid "Cover new applications"
msgstr "Copri le nuove applicazioni"
msgid "Applications installed later get autoscroll on their own."
msgstr "Le applicazioni installate in seguito ricevono l'autoscroll da sole."
msgid "More Chromium arguments"
msgstr "Altri argomenti di Chromium"
msgid "Passed to every application along with the autoscroll one."
msgstr "Passati a ogni applicazione insieme a quello per l'autoscroll."
msgid "Up/Down: select, Space: change, q: back"
msgstr "Su/Giù: scegli, Spazio: cambia, q: indietro"
msgid "Arguments separated by spaces, empty for none:"
msgstr "Argomenti separati da spazi, vuoto per nessuno:"
msgid "Could not save the setting."
msgstr "Impossibile salvare l'impostazione."
#. Applications screen
msgid "Looking at the installed applications..."
msgstr "Esame delle applicazioni installate..."
msgid "No Chromium-based applications found."
msgstr "Nessuna applicazione basata su Chromium trovata."
msgid "Anything marked \"cannot tell\" stays off until it is turned on here."
msgstr ""
"Ciò che è segnato come «incerto» resta spento finché non viene acceso qui."
msgid "Autoscroll is off. This is what would be covered."
msgstr "L'autoscroll è spento. Ecco cosa verrebbe coperto."
msgid "Up/Down: select, Space: turn on or off, q: back"
msgstr "Su/Giù: scegli, Spazio: accendi o spegni, q: indietro"
msgid "Search:"
msgstr "Cerca:"
msgid "Type to search, Down: go to the list, Esc: back"
msgstr "Scrivi per cercare, Giù: vai all'elenco, Esc: indietro"
msgid "No matches."
msgstr "Nessun risultato."
#. Results
msgid "Autoscroll is on for %d applications."
msgstr "L'autoscroll è acceso per %d applicazioni."
msgid ""
"Applications that are already running pick this up when they are restarted."
msgstr "Le applicazioni già aperte lo recepiscono dopo un riavvio."
msgid "Could not start the watcher for newly installed applications."
msgstr "Impossibile avviare il controllo delle nuove applicazioni."
msgid ""
"No systemd user session, so newly installed applications will not be picked "
"up on their own."
msgstr ""
"Nessuna sessione utente di systemd, quindi le nuove applicazioni non "
"verranno rilevate da sole."
msgid "Autoscroll is off and everything that was changed has been put back."
msgstr ""
"L'autoscroll è spento e tutto ciò che era stato modificato è stato "
"ripristinato."
msgid "Autoscroll is off. Turn it on first."
msgstr "L'autoscroll è spento. Prima accendilo."
msgid "Applied again to %d applications."
msgstr "Riapplicato a %d applicazioni."
msgid "Applied to %d applications."
msgstr "Applicato a %d applicazioni."
msgid "Already applied to %d applications."
msgstr "Già applicato a %d applicazioni."
msgid ""
"Steam starts its interface in a way this version cannot change without Steam "
"noticing; leaving it alone."
msgstr ""
"Steam avvia la sua interfaccia in un modo che questa versione non può "
"cambiare senza che Steam se ne accorga; Steam resta com'è."
msgid ""
"Steam's interface cannot be given the flag without leaving a file Steam "
"would reinstall; the change has been taken back."
msgstr ""
"All'interfaccia di Steam non si può dare il flag senza lasciare un file che "
"Steam reinstallerebbe; la modifica è stata annullata."
msgid "Middle click stops pasting at the next login."
msgstr "Il clic centrale smetterà di incollare al prossimo accesso."
#. Help
msgid "Usage: middleclick-autoscroll [command]"
msgstr "Uso: middleclick-autoscroll [comando]"
msgid "Commands:"
msgstr "Comandi:"
msgid "Turn autoscroll on"
msgstr "Accendi l'autoscroll"
msgid "Turn it off and put everything back"
msgstr "Spegnilo e ripristina tutto"
msgid "Apply to anything installed since the last run"
msgstr "Applica a tutto ciò che è stato installato dall'ultima volta"
msgid "Take everything back and apply it again"
msgstr "Annulla tutto e riapplica"
msgid "Show what is covered"
msgstr "Mostra cosa è coperto"
msgid "List every application that was found"
msgstr "Elenca tutte le applicazioni trovate"
msgid "Show this help"
msgstr "Mostra questo aiuto"
msgid "Show the version"
msgstr "Mostra la versione"
msgid "Without a command an interactive menu is shown."
msgstr "Senza comando viene mostrato un menu interattivo."
msgid "Unknown command: %s"
msgstr "Comando sconosciuto: %s"
#. Time
msgid "never"
msgstr "mai"
msgid "just now"
msgstr "proprio ora"
msgid "1 minute ago"
msgstr "1 minuto fa"
msgid "%d minutes ago"
msgstr "%d minuti fa"
msgid "1 hour ago"
msgstr "1 ora fa"
msgid "%d hours ago"
msgstr "%d ore fa"
msgid "1 day ago"
msgstr "1 giorno fa"
msgid "%d days ago"
msgstr "%d giorni fa"
+23 -19
View File
@@ -4,10 +4,10 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: middleclick-autoscroll 1.0.3\n" "Project-Id-Version: middleclick-autoscroll 1.6.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/" "Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/"
"issues\n" "issues\n"
"POT-Creation-Date: 2026-08-16 00:00+0200\n" "POT-Creation-Date: 2026-09-24 00:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -94,35 +94,30 @@ msgstr ""
msgid "Press any key to continue..." msgid "Press any key to continue..."
msgstr "" msgstr ""
msgid "One moment..."
msgstr ""
#. Settings #. Settings
msgid "Electron and CEF applications" msgid "Turn off middle-click paste"
msgstr "" msgstr ""
msgid "Chromium-based browsers" msgid ""
"Stops middle click from pasting anywhere else. Starts with the next login."
msgstr "" msgstr ""
msgid "Flatpak applications" msgid "Cover new applications"
msgstr "" msgstr ""
msgid "Snap applications" msgid "Applications installed later get autoscroll on their own."
msgstr "" msgstr ""
msgid "Programs that start themselves at login" msgid "More Chromium arguments"
msgstr "" msgstr ""
msgid "Spotify" msgid "Passed to every application along with the autoscroll one."
msgstr "" msgstr ""
msgid "Turn off KDE's middle-click paste" msgid "Up/Down: select, Space: change, q: back"
msgstr ""
msgid "Apply to newly installed applications"
msgstr ""
msgid "Additional Chromium arguments"
msgstr ""
msgid "Up/Down: select, Space or Right: change, q: back"
msgstr "" msgstr ""
msgid "Arguments separated by spaces, empty for none:" msgid "Arguments separated by spaces, empty for none:"
@@ -138,7 +133,7 @@ msgstr ""
msgid "No Chromium-based applications found." msgid "No Chromium-based applications found."
msgstr "" msgstr ""
msgid "Anything not identified is left alone until it is turned on here." msgid "Anything marked \"cannot tell\" stays off until it is turned on here."
msgstr "" msgstr ""
msgid "Autoscroll is off. This is what would be covered." msgid "Autoscroll is off. This is what would be covered."
@@ -147,6 +142,15 @@ msgstr ""
msgid "Up/Down: select, Space: turn on or off, q: back" msgid "Up/Down: select, Space: turn on or off, q: back"
msgstr "" msgstr ""
msgid "Search:"
msgstr ""
msgid "Type to search, Down: go to the list, Esc: back"
msgstr ""
msgid "No matches."
msgstr ""
#. Results #. Results
msgid "Autoscroll is on for %d applications." msgid "Autoscroll is on for %d applications."
msgstr "" msgstr ""
+267
View File
@@ -0,0 +1,267 @@
# Dutch translation for middleclick-autoscroll.
# Machine translated. Corrections are welcome.
# Copyright (C) 2026 Felitendo
# This file is distributed under the same license as middleclick-autoscroll.
#
msgid ""
msgstr ""
"Project-Id-Version: middleclick-autoscroll 1.6.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/"
"issues\n"
"POT-Creation-Date: 2026-09-24 00:00+0200\n"
"PO-Revision-Date: 2026-09-24 00:00+0200\n"
"Last-Translator: machine translation\n"
"Language-Team: Dutch\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Status labels
msgid "ON"
msgstr "AAN"
msgid "OFF"
msgstr "UIT"
msgid "on"
msgstr "aan"
msgid "off"
msgstr "uit"
msgid "(none)"
msgstr "(geen)"
msgid "flag file"
msgstr "flagbestand"
msgid "launcher"
msgstr "starter"
msgid "cannot tell"
msgstr "onbekend"
msgid "not patched yet"
msgstr "nog niet toegepast"
#. Status block
msgid "Autoscroll"
msgstr "Autoscroll"
msgid "Applications covered"
msgstr "Gedekte toepassingen"
msgid "%d of %d"
msgstr "%d van %d"
msgid "Not identified"
msgstr "Niet herkend"
msgid "%d (see the applications list)"
msgstr "%d (zie de lijst met toepassingen)"
msgid "Steam"
msgstr "Steam"
msgid "Middle-click paste"
msgstr "Plakken met middelklik"
msgid "New applications"
msgstr "Nieuwe toepassingen"
msgid "Last applied"
msgstr "Laatst toegepast"
msgid "Applications pick this up the next time they are started."
msgstr "Toepassingen nemen dit over bij de volgende start."
#. Menu
msgid "Turn autoscroll on or off"
msgstr "Autoscroll aan- of uitzetten"
msgid "Re-apply everything"
msgstr "Alles opnieuw toepassen"
msgid "Applications"
msgstr "Toepassingen"
msgid "Settings"
msgstr "Instellingen"
msgid "Quit"
msgstr "Afsluiten"
msgid "Press any key to continue..."
msgstr "Druk op een toets om door te gaan..."
msgid "One moment..."
msgstr "Een moment..."
#. Settings
msgid "Turn off middle-click paste"
msgstr "Plakken met middelklik uitzetten"
msgid ""
"Stops middle click from pasting anywhere else. Starts with the next login."
msgstr ""
"Middelklik plakt dan nergens anders meer. Vanaf de volgende aanmelding."
msgid "Cover new applications"
msgstr "Nieuwe toepassingen meenemen"
msgid "Applications installed later get autoscroll on their own."
msgstr "Later geïnstalleerde toepassingen krijgen vanzelf autoscroll."
msgid "More Chromium arguments"
msgstr "Meer Chromium-argumenten"
msgid "Passed to every application along with the autoscroll one."
msgstr "Gaan samen met dat voor autoscroll naar elke toepassing."
msgid "Up/Down: select, Space: change, q: back"
msgstr "Omhoog/Omlaag: kiezen, Spatie: wijzigen, q: terug"
msgid "Arguments separated by spaces, empty for none:"
msgstr "Argumenten gescheiden door spaties, leeg voor geen:"
msgid "Could not save the setting."
msgstr "De instelling kon niet worden opgeslagen."
#. Applications screen
msgid "Looking at the installed applications..."
msgstr "Geïnstalleerde toepassingen worden bekeken..."
msgid "No Chromium-based applications found."
msgstr "Geen op Chromium gebaseerde toepassingen gevonden."
msgid "Anything marked \"cannot tell\" stays off until it is turned on here."
msgstr ""
"Wat als \"onbekend\" gemarkeerd is, blijft uit tot het hier aangezet wordt."
msgid "Autoscroll is off. This is what would be covered."
msgstr "Autoscroll staat uit. Dit zou gedekt worden."
msgid "Up/Down: select, Space: turn on or off, q: back"
msgstr "Omhoog/Omlaag: kiezen, Spatie: aan- of uitzetten, q: terug"
msgid "Search:"
msgstr "Zoeken:"
msgid "Type to search, Down: go to the list, Esc: back"
msgstr "Typ om te zoeken, Omlaag: naar de lijst, Esc: terug"
msgid "No matches."
msgstr "Geen resultaten."
#. Results
msgid "Autoscroll is on for %d applications."
msgstr "Autoscroll staat aan voor %d toepassingen."
msgid ""
"Applications that are already running pick this up when they are restarted."
msgstr "Toepassingen die al draaien, nemen dit over na een herstart."
msgid "Could not start the watcher for newly installed applications."
msgstr "Kon het bewaken van nieuwe toepassingen niet starten."
msgid ""
"No systemd user session, so newly installed applications will not be picked "
"up on their own."
msgstr ""
"Geen systemd-gebruikerssessie, dus nieuw geïnstalleerde toepassingen worden "
"niet vanzelf opgepikt."
msgid "Autoscroll is off and everything that was changed has been put back."
msgstr "Autoscroll staat uit en alles wat veranderd was, is teruggezet."
msgid "Autoscroll is off. Turn it on first."
msgstr "Autoscroll staat uit. Zet het eerst aan."
msgid "Applied again to %d applications."
msgstr "Opnieuw toegepast op %d toepassingen."
msgid "Applied to %d applications."
msgstr "Toegepast op %d toepassingen."
msgid "Already applied to %d applications."
msgstr "Al toegepast op %d toepassingen."
msgid ""
"Steam starts its interface in a way this version cannot change without Steam "
"noticing; leaving it alone."
msgstr ""
"Steam start zijn interface op een manier die deze versie niet kan veranderen "
"zonder dat Steam het merkt; Steam blijft zoals het is."
msgid ""
"Steam's interface cannot be given the flag without leaving a file Steam "
"would reinstall; the change has been taken back."
msgstr ""
"De interface van Steam kan de flag niet krijgen zonder een bestand achter te "
"laten dat Steam opnieuw zou installeren; de wijziging is teruggedraaid."
msgid "Middle click stops pasting at the next login."
msgstr "Middelklik plakt vanaf de volgende aanmelding niet meer."
#. Help
msgid "Usage: middleclick-autoscroll [command]"
msgstr "Gebruik: middleclick-autoscroll [opdracht]"
msgid "Commands:"
msgstr "Opdrachten:"
msgid "Turn autoscroll on"
msgstr "Autoscroll aanzetten"
msgid "Turn it off and put everything back"
msgstr "Uitzetten en alles terugzetten"
msgid "Apply to anything installed since the last run"
msgstr "Toepassen op alles wat sinds de vorige keer geïnstalleerd is"
msgid "Take everything back and apply it again"
msgstr "Alles terugdraaien en opnieuw toepassen"
msgid "Show what is covered"
msgstr "Tonen wat gedekt is"
msgid "List every application that was found"
msgstr "Alle gevonden toepassingen tonen"
msgid "Show this help"
msgstr "Deze hulp tonen"
msgid "Show the version"
msgstr "De versie tonen"
msgid "Without a command an interactive menu is shown."
msgstr "Zonder opdracht wordt een interactief menu getoond."
msgid "Unknown command: %s"
msgstr "Onbekende opdracht: %s"
#. Time
msgid "never"
msgstr "nooit"
msgid "just now"
msgstr "zojuist"
msgid "1 minute ago"
msgstr "1 minuut geleden"
msgid "%d minutes ago"
msgstr "%d minuten geleden"
msgid "1 hour ago"
msgstr "1 uur geleden"
msgid "%d hours ago"
msgstr "%d uur geleden"
msgid "1 day ago"
msgstr "1 dag geleden"
msgid "%d days ago"
msgstr "%d dagen geleden"
+266
View File
@@ -0,0 +1,266 @@
# Polish translation for middleclick-autoscroll.
# Machine translated. Corrections are welcome.
# Copyright (C) 2026 Felitendo
# This file is distributed under the same license as middleclick-autoscroll.
#
msgid ""
msgstr ""
"Project-Id-Version: middleclick-autoscroll 1.6.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/"
"issues\n"
"POT-Creation-Date: 2026-09-24 00:00+0200\n"
"PO-Revision-Date: 2026-09-24 00:00+0200\n"
"Last-Translator: machine translation\n"
"Language-Team: Polish\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Status labels
msgid "ON"
msgstr "WŁ."
msgid "OFF"
msgstr "WYŁ."
msgid "on"
msgstr "wł."
msgid "off"
msgstr "wył."
msgid "(none)"
msgstr "(brak)"
msgid "flag file"
msgstr "plik flag"
msgid "launcher"
msgstr "skrót"
msgid "cannot tell"
msgstr "nie wiadomo"
msgid "not patched yet"
msgstr "jeszcze nie zastosowano"
#. Status block
msgid "Autoscroll"
msgstr "Autoscroll"
msgid "Applications covered"
msgstr "Objęte aplikacje"
msgid "%d of %d"
msgstr "%d z %d"
msgid "Not identified"
msgstr "Nierozpoznane"
msgid "%d (see the applications list)"
msgstr "%d (zob. listę aplikacji)"
msgid "Steam"
msgstr "Steam"
msgid "Middle-click paste"
msgstr "Wklejanie kółkiem myszy"
msgid "New applications"
msgstr "Nowe aplikacje"
msgid "Last applied"
msgstr "Ostatnio zastosowano"
msgid "Applications pick this up the next time they are started."
msgstr "Aplikacje przejmą to przy następnym uruchomieniu."
#. Menu
msgid "Turn autoscroll on or off"
msgstr "Włącz lub wyłącz autoscroll"
msgid "Re-apply everything"
msgstr "Zastosuj wszystko ponownie"
msgid "Applications"
msgstr "Aplikacje"
msgid "Settings"
msgstr "Ustawienia"
msgid "Quit"
msgstr "Zakończ"
msgid "Press any key to continue..."
msgstr "Naciśnij dowolny klawisz, aby kontynuować..."
msgid "One moment..."
msgstr "Chwileczkę..."
#. Settings
msgid "Turn off middle-click paste"
msgstr "Wyłącz wklejanie kółkiem myszy"
msgid ""
"Stops middle click from pasting anywhere else. Starts with the next login."
msgstr "Kółko myszy nie wkleja już nigdzie indziej. Od następnego logowania."
msgid "Cover new applications"
msgstr "Obejmuj nowe aplikacje"
msgid "Applications installed later get autoscroll on their own."
msgstr "Aplikacje zainstalowane później same dostaną autoscroll."
msgid "More Chromium arguments"
msgstr "Więcej argumentów Chromium"
msgid "Passed to every application along with the autoscroll one."
msgstr "Przekazywane każdej aplikacji razem z tym od autoscrolla."
msgid "Up/Down: select, Space: change, q: back"
msgstr "Góra/Dół: wybierz, Spacja: zmień, q: wstecz"
msgid "Arguments separated by spaces, empty for none:"
msgstr "Argumenty oddzielone spacjami, puste oznacza brak:"
msgid "Could not save the setting."
msgstr "Nie udało się zapisać ustawienia."
#. Applications screen
msgid "Looking at the installed applications..."
msgstr "Przeglądanie zainstalowanych aplikacji..."
msgid "No Chromium-based applications found."
msgstr "Nie znaleziono aplikacji opartych na Chromium."
msgid "Anything marked \"cannot tell\" stays off until it is turned on here."
msgstr ""
"Pozycje „nie wiadomo” zostają wyłączone, dopóki nie włączysz ich tutaj."
msgid "Autoscroll is off. This is what would be covered."
msgstr "Autoscroll jest wyłączony. Tyle zostałoby objęte."
msgid "Up/Down: select, Space: turn on or off, q: back"
msgstr "Góra/Dół: wybierz, Spacja: włącz lub wyłącz, q: wstecz"
msgid "Search:"
msgstr "Szukaj:"
msgid "Type to search, Down: go to the list, Esc: back"
msgstr "Pisz, aby szukać, Dół: do listy, Esc: wstecz"
msgid "No matches."
msgstr "Brak wyników."
#. Results
msgid "Autoscroll is on for %d applications."
msgstr "Autoscroll włączony dla %d aplikacji."
msgid ""
"Applications that are already running pick this up when they are restarted."
msgstr "Uruchomione już aplikacje przejmą to po ponownym uruchomieniu."
msgid "Could not start the watcher for newly installed applications."
msgstr "Nie udało się uruchomić obserwowania nowych aplikacji."
msgid ""
"No systemd user session, so newly installed applications will not be picked "
"up on their own."
msgstr ""
"Brak sesji użytkownika systemd, więc nowo zainstalowane aplikacje nie "
"zostaną wykryte same."
msgid "Autoscroll is off and everything that was changed has been put back."
msgstr "Autoscroll jest wyłączony, a wszystkie zmiany zostały cofnięte."
msgid "Autoscroll is off. Turn it on first."
msgstr "Autoscroll jest wyłączony. Najpierw go włącz."
msgid "Applied again to %d applications."
msgstr "Ponownie zastosowano dla %d aplikacji."
msgid "Applied to %d applications."
msgstr "Zastosowano dla %d aplikacji."
msgid "Already applied to %d applications."
msgstr "Już zastosowano dla %d aplikacji."
msgid ""
"Steam starts its interface in a way this version cannot change without Steam "
"noticing; leaving it alone."
msgstr ""
"Steam uruchamia swój interfejs w sposób, którego ta wersja nie może zmienić "
"bez wiedzy Steama; Steam pozostaje bez zmian."
msgid ""
"Steam's interface cannot be given the flag without leaving a file Steam "
"would reinstall; the change has been taken back."
msgstr ""
"Interfejsowi Steama nie można dodać flagi bez zostawienia pliku, który Steam "
"zainstalowałby ponownie; zmiana została cofnięta."
msgid "Middle click stops pasting at the next login."
msgstr "Kółko myszy przestanie wklejać od następnego logowania."
#. Help
msgid "Usage: middleclick-autoscroll [command]"
msgstr "Użycie: middleclick-autoscroll [polecenie]"
msgid "Commands:"
msgstr "Polecenia:"
msgid "Turn autoscroll on"
msgstr "Włącz autoscroll"
msgid "Turn it off and put everything back"
msgstr "Wyłącz i cofnij wszystko"
msgid "Apply to anything installed since the last run"
msgstr "Zastosuj do wszystkiego zainstalowanego od ostatniego razu"
msgid "Take everything back and apply it again"
msgstr "Cofnij wszystko i zastosuj ponownie"
msgid "Show what is covered"
msgstr "Pokaż, co jest objęte"
msgid "List every application that was found"
msgstr "Wypisz wszystkie znalezione aplikacje"
msgid "Show this help"
msgstr "Pokaż tę pomoc"
msgid "Show the version"
msgstr "Pokaż wersję"
msgid "Without a command an interactive menu is shown."
msgstr "Bez polecenia wyświetlane jest menu interaktywne."
msgid "Unknown command: %s"
msgstr "Nieznane polecenie: %s"
#. Time
msgid "never"
msgstr "nigdy"
msgid "just now"
msgstr "przed chwilą"
msgid "1 minute ago"
msgstr "1 minutę temu"
msgid "%d minutes ago"
msgstr "%d min temu"
msgid "1 hour ago"
msgstr "1 godzinę temu"
msgid "%d hours ago"
msgstr "%d godz. temu"
msgid "1 day ago"
msgstr "1 dzień temu"
msgid "%d days ago"
msgstr "%d dni temu"
+268
View File
@@ -0,0 +1,268 @@
# Brazilian Portuguese translation for middleclick-autoscroll.
# Machine translated. Corrections are welcome.
# Copyright (C) 2026 Felitendo
# This file is distributed under the same license as middleclick-autoscroll.
#
msgid ""
msgstr ""
"Project-Id-Version: middleclick-autoscroll 1.6.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/"
"issues\n"
"POT-Creation-Date: 2026-09-24 00:00+0200\n"
"PO-Revision-Date: 2026-09-24 00:00+0200\n"
"Last-Translator: machine translation\n"
"Language-Team: Brazilian Portuguese\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Status labels
msgid "ON"
msgstr "LIGADO"
msgid "OFF"
msgstr "DESLIGADO"
msgid "on"
msgstr "ligado"
msgid "off"
msgstr "desligado"
msgid "(none)"
msgstr "(nenhum)"
msgid "flag file"
msgstr "arquivo de flags"
msgid "launcher"
msgstr "lançador"
msgid "cannot tell"
msgstr "indeterminado"
msgid "not patched yet"
msgstr "ainda não aplicado"
#. Status block
msgid "Autoscroll"
msgstr "Autoscroll"
msgid "Applications covered"
msgstr "Aplicativos cobertos"
msgid "%d of %d"
msgstr "%d de %d"
msgid "Not identified"
msgstr "Não identificados"
msgid "%d (see the applications list)"
msgstr "%d (veja a lista de aplicativos)"
msgid "Steam"
msgstr "Steam"
msgid "Middle-click paste"
msgstr "Colar com clique do meio"
msgid "New applications"
msgstr "Novos aplicativos"
msgid "Last applied"
msgstr "Aplicado pela última vez"
msgid "Applications pick this up the next time they are started."
msgstr "Os aplicativos passam a usar isso na próxima vez que forem abertos."
#. Menu
msgid "Turn autoscroll on or off"
msgstr "Ligar ou desligar o autoscroll"
msgid "Re-apply everything"
msgstr "Aplicar tudo de novo"
msgid "Applications"
msgstr "Aplicativos"
msgid "Settings"
msgstr "Configurações"
msgid "Quit"
msgstr "Sair"
msgid "Press any key to continue..."
msgstr "Pressione qualquer tecla para continuar..."
msgid "One moment..."
msgstr "Um momento..."
#. Settings
msgid "Turn off middle-click paste"
msgstr "Desligar colar com clique do meio"
msgid ""
"Stops middle click from pasting anywhere else. Starts with the next login."
msgstr ""
"O clique do meio para de colar em outros lugares. A partir do próximo login."
msgid "Cover new applications"
msgstr "Cobrir novos aplicativos"
msgid "Applications installed later get autoscroll on their own."
msgstr "Aplicativos instalados depois recebem o autoscroll sozinhos."
msgid "More Chromium arguments"
msgstr "Mais argumentos do Chromium"
msgid "Passed to every application along with the autoscroll one."
msgstr "Passados a todo aplicativo junto com o do autoscroll."
msgid "Up/Down: select, Space: change, q: back"
msgstr "Cima/Baixo: escolher, Espaço: mudar, q: voltar"
msgid "Arguments separated by spaces, empty for none:"
msgstr "Argumentos separados por espaços, vazio para nenhum:"
msgid "Could not save the setting."
msgstr "Não foi possível salvar a configuração."
#. Applications screen
msgid "Looking at the installed applications..."
msgstr "Verificando os aplicativos instalados..."
msgid "No Chromium-based applications found."
msgstr "Nenhum aplicativo baseado em Chromium encontrado."
msgid "Anything marked \"cannot tell\" stays off until it is turned on here."
msgstr ""
"O que está marcado como \"indeterminado\" fica desligado até ser ligado aqui."
msgid "Autoscroll is off. This is what would be covered."
msgstr "O autoscroll está desligado. Isto é o que seria coberto."
msgid "Up/Down: select, Space: turn on or off, q: back"
msgstr "Cima/Baixo: escolher, Espaço: ligar ou desligar, q: voltar"
msgid "Search:"
msgstr "Buscar:"
msgid "Type to search, Down: go to the list, Esc: back"
msgstr "Digite para buscar, Baixo: ir para a lista, Esc: voltar"
msgid "No matches."
msgstr "Nenhum resultado."
#. Results
msgid "Autoscroll is on for %d applications."
msgstr "O autoscroll está ligado para %d aplicativos."
msgid ""
"Applications that are already running pick this up when they are restarted."
msgstr ""
"Aplicativos que já estão abertos passam a usar isso ao serem reiniciados."
msgid "Could not start the watcher for newly installed applications."
msgstr "Não foi possível iniciar o monitoramento de novos aplicativos."
msgid ""
"No systemd user session, so newly installed applications will not be picked "
"up on their own."
msgstr ""
"Sem sessão de usuário do systemd, então novos aplicativos não serão "
"detectados sozinhos."
msgid "Autoscroll is off and everything that was changed has been put back."
msgstr "O autoscroll está desligado e tudo o que foi alterado foi restaurado."
msgid "Autoscroll is off. Turn it on first."
msgstr "O autoscroll está desligado. Ligue-o primeiro."
msgid "Applied again to %d applications."
msgstr "Aplicado de novo a %d aplicativos."
msgid "Applied to %d applications."
msgstr "Aplicado a %d aplicativos."
msgid "Already applied to %d applications."
msgstr "Já aplicado a %d aplicativos."
msgid ""
"Steam starts its interface in a way this version cannot change without Steam "
"noticing; leaving it alone."
msgstr ""
"O Steam inicia sua interface de um jeito que esta versão não consegue mudar "
"sem que o Steam perceba; ele fica como está."
msgid ""
"Steam's interface cannot be given the flag without leaving a file Steam "
"would reinstall; the change has been taken back."
msgstr ""
"A interface do Steam não pode receber o flag sem deixar um arquivo que o "
"Steam reinstalaria; a alteração foi desfeita."
msgid "Middle click stops pasting at the next login."
msgstr "O clique do meio para de colar no próximo login."
#. Help
msgid "Usage: middleclick-autoscroll [command]"
msgstr "Uso: middleclick-autoscroll [comando]"
msgid "Commands:"
msgstr "Comandos:"
msgid "Turn autoscroll on"
msgstr "Ligar o autoscroll"
msgid "Turn it off and put everything back"
msgstr "Desligar e restaurar tudo"
msgid "Apply to anything installed since the last run"
msgstr "Aplicar a tudo o que foi instalado desde a última vez"
msgid "Take everything back and apply it again"
msgstr "Desfazer tudo e aplicar de novo"
msgid "Show what is covered"
msgstr "Mostrar o que está coberto"
msgid "List every application that was found"
msgstr "Listar todos os aplicativos encontrados"
msgid "Show this help"
msgstr "Mostrar esta ajuda"
msgid "Show the version"
msgstr "Mostrar a versão"
msgid "Without a command an interactive menu is shown."
msgstr "Sem comando, um menu interativo é exibido."
msgid "Unknown command: %s"
msgstr "Comando desconhecido: %s"
#. Time
msgid "never"
msgstr "nunca"
msgid "just now"
msgstr "agora mesmo"
msgid "1 minute ago"
msgstr "há 1 minuto"
msgid "%d minutes ago"
msgstr "há %d minutos"
msgid "1 hour ago"
msgstr "há 1 hora"
msgid "%d hours ago"
msgstr "há %d horas"
msgid "1 day ago"
msgstr "há 1 dia"
msgid "%d days ago"
msgstr "há %d dias"
+267
View File
@@ -0,0 +1,267 @@
# Russian translation for middleclick-autoscroll.
# Machine translated. Corrections are welcome.
# Copyright (C) 2026 Felitendo
# This file is distributed under the same license as middleclick-autoscroll.
#
msgid ""
msgstr ""
"Project-Id-Version: middleclick-autoscroll 1.6.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/"
"issues\n"
"POT-Creation-Date: 2026-09-24 00:00+0200\n"
"PO-Revision-Date: 2026-09-24 00:00+0200\n"
"Last-Translator: machine translation\n"
"Language-Team: Russian\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Status labels
msgid "ON"
msgstr "ВКЛ"
msgid "OFF"
msgstr "ВЫКЛ"
msgid "on"
msgstr "вкл"
msgid "off"
msgstr "выкл"
msgid "(none)"
msgstr "(нет)"
msgid "flag file"
msgstr "файл флагов"
msgid "launcher"
msgstr "ярлык"
msgid "cannot tell"
msgstr "неизвестно"
msgid "not patched yet"
msgstr "ещё не применено"
#. Status block
msgid "Autoscroll"
msgstr "Автопрокрутка"
msgid "Applications covered"
msgstr "Приложения с автопрокруткой"
msgid "%d of %d"
msgstr "%d из %d"
msgid "Not identified"
msgstr "Не распознано"
msgid "%d (see the applications list)"
msgstr "%d (см. список приложений)"
msgid "Steam"
msgstr "Steam"
msgid "Middle-click paste"
msgstr "Вставка средней кнопкой"
msgid "New applications"
msgstr "Новые приложения"
msgid "Last applied"
msgstr "Последнее применение"
msgid "Applications pick this up the next time they are started."
msgstr "Приложения подхватят это при следующем запуске."
#. Menu
msgid "Turn autoscroll on or off"
msgstr "Включить или выключить автопрокрутку"
msgid "Re-apply everything"
msgstr "Применить всё заново"
msgid "Applications"
msgstr "Приложения"
msgid "Settings"
msgstr "Настройки"
msgid "Quit"
msgstr "Выход"
msgid "Press any key to continue..."
msgstr "Нажмите любую клавишу..."
msgid "One moment..."
msgstr "Минутку..."
#. Settings
msgid "Turn off middle-click paste"
msgstr "Отключить вставку средней кнопкой"
msgid ""
"Stops middle click from pasting anywhere else. Starts with the next login."
msgstr ""
"Средняя кнопка больше нигде не вставляет. Со следующего входа в систему."
msgid "Cover new applications"
msgstr "Охватывать новые приложения"
msgid "Applications installed later get autoscroll on their own."
msgstr "Приложения, установленные позже, получат автопрокрутку сами."
msgid "More Chromium arguments"
msgstr "Другие аргументы Chromium"
msgid "Passed to every application along with the autoscroll one."
msgstr "Передаются каждому приложению вместе с аргументом автопрокрутки."
msgid "Up/Down: select, Space: change, q: back"
msgstr "Вверх/Вниз: выбор, Пробел: изменить, q: назад"
msgid "Arguments separated by spaces, empty for none:"
msgstr "Аргументы через пробел (пусто, если не нужны):"
msgid "Could not save the setting."
msgstr "Не удалось сохранить настройку."
#. Applications screen
msgid "Looking at the installed applications..."
msgstr "Просмотр установленных приложений..."
msgid "No Chromium-based applications found."
msgstr "Приложения на основе Chromium не найдены."
msgid "Anything marked \"cannot tell\" stays off until it is turned on here."
msgstr ""
"Помеченное как «неизвестно» остаётся выключенным, пока его здесь не включат."
msgid "Autoscroll is off. This is what would be covered."
msgstr "Автопрокрутка выключена. Вот что было бы охвачено."
msgid "Up/Down: select, Space: turn on or off, q: back"
msgstr "Вверх/Вниз: выбор, Пробел: включить или выключить, q: назад"
msgid "Search:"
msgstr "Поиск:"
msgid "Type to search, Down: go to the list, Esc: back"
msgstr "Печатайте для поиска, Вниз: к списку, Esc: назад"
msgid "No matches."
msgstr "Ничего не найдено."
#. Results
msgid "Autoscroll is on for %d applications."
msgstr "Автопрокрутка включена. Приложений: %d."
msgid ""
"Applications that are already running pick this up when they are restarted."
msgstr "Уже запущенные приложения подхватят это после перезапуска."
msgid "Could not start the watcher for newly installed applications."
msgstr "Не удалось запустить отслеживание новых приложений."
msgid ""
"No systemd user session, so newly installed applications will not be picked "
"up on their own."
msgstr ""
"Нет пользовательского сеанса systemd, поэтому новые приложения не будут "
"подхвачены сами."
msgid "Autoscroll is off and everything that was changed has been put back."
msgstr "Автопрокрутка выключена, все изменения отменены."
msgid "Autoscroll is off. Turn it on first."
msgstr "Автопрокрутка выключена. Сначала включите её."
msgid "Applied again to %d applications."
msgstr "Применено заново. Приложений: %d."
msgid "Applied to %d applications."
msgstr "Применено. Приложений: %d."
msgid "Already applied to %d applications."
msgstr "Уже применено. Приложений: %d."
msgid ""
"Steam starts its interface in a way this version cannot change without Steam "
"noticing; leaving it alone."
msgstr ""
"Steam запускает свой интерфейс так, что эта версия не может это изменить "
"незаметно для Steam; Steam остаётся без изменений."
msgid ""
"Steam's interface cannot be given the flag without leaving a file Steam "
"would reinstall; the change has been taken back."
msgstr ""
"Интерфейсу Steam нельзя передать флаг, не оставив файл, который Steam "
"переустановил бы; изменение отменено."
msgid "Middle click stops pasting at the next login."
msgstr "Средняя кнопка перестанет вставлять со следующего входа в систему."
#. Help
msgid "Usage: middleclick-autoscroll [command]"
msgstr "Использование: middleclick-autoscroll [команда]"
msgid "Commands:"
msgstr "Команды:"
msgid "Turn autoscroll on"
msgstr "Включить автопрокрутку"
msgid "Turn it off and put everything back"
msgstr "Выключить и всё вернуть"
msgid "Apply to anything installed since the last run"
msgstr "Применить ко всему, что установлено с прошлого запуска"
msgid "Take everything back and apply it again"
msgstr "Всё отменить и применить заново"
msgid "Show what is covered"
msgstr "Показать, что охвачено"
msgid "List every application that was found"
msgstr "Показать все найденные приложения"
msgid "Show this help"
msgstr "Показать эту справку"
msgid "Show the version"
msgstr "Показать версию"
msgid "Without a command an interactive menu is shown."
msgstr "Без команды показывается интерактивное меню."
msgid "Unknown command: %s"
msgstr "Неизвестная команда: %s"
#. Time
msgid "never"
msgstr "никогда"
msgid "just now"
msgstr "только что"
msgid "1 minute ago"
msgstr "1 минуту назад"
msgid "%d minutes ago"
msgstr "%d мин. назад"
msgid "1 hour ago"
msgstr "1 час назад"
msgid "%d hours ago"
msgstr "%d ч назад"
msgid "1 day ago"
msgstr "1 день назад"
msgid "%d days ago"
msgstr "%d дн. назад"
+266
View File
@@ -0,0 +1,266 @@
# Turkish translation for middleclick-autoscroll.
# Machine translated. Corrections are welcome.
# Copyright (C) 2026 Felitendo
# This file is distributed under the same license as middleclick-autoscroll.
#
msgid ""
msgstr ""
"Project-Id-Version: middleclick-autoscroll 1.6.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/"
"issues\n"
"POT-Creation-Date: 2026-09-24 00:00+0200\n"
"PO-Revision-Date: 2026-09-24 00:00+0200\n"
"Last-Translator: machine translation\n"
"Language-Team: Turkish\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Status labels
msgid "ON"
msgstr "AÇIK"
msgid "OFF"
msgstr "KAPALI"
msgid "on"
msgstr "açık"
msgid "off"
msgstr "kapalı"
msgid "(none)"
msgstr "(yok)"
msgid "flag file"
msgstr "bayrak dosyası"
msgid "launcher"
msgstr "başlatıcı"
msgid "cannot tell"
msgstr "belirsiz"
msgid "not patched yet"
msgstr "henüz uygulanmadı"
#. Status block
msgid "Autoscroll"
msgstr "Autoscroll"
msgid "Applications covered"
msgstr "Kapsanan uygulamalar"
msgid "%d of %d"
msgstr "%d / %d"
msgid "Not identified"
msgstr "Tanınmadı"
msgid "%d (see the applications list)"
msgstr "%d (uygulama listesine bakın)"
msgid "Steam"
msgstr "Steam"
msgid "Middle-click paste"
msgstr "Orta tıkla yapıştırma"
msgid "New applications"
msgstr "Yeni uygulamalar"
msgid "Last applied"
msgstr "Son uygulanma"
msgid "Applications pick this up the next time they are started."
msgstr "Uygulamalar bunu bir sonraki açılışta alır."
#. Menu
msgid "Turn autoscroll on or off"
msgstr "Autoscroll'u aç veya kapat"
msgid "Re-apply everything"
msgstr "Her şeyi yeniden uygula"
msgid "Applications"
msgstr "Uygulamalar"
msgid "Settings"
msgstr "Ayarlar"
msgid "Quit"
msgstr "Çık"
msgid "Press any key to continue..."
msgstr "Devam etmek için bir tuşa basın..."
msgid "One moment..."
msgstr "Bir dakika..."
#. Settings
msgid "Turn off middle-click paste"
msgstr "Orta tıkla yapıştırmayı kapat"
msgid ""
"Stops middle click from pasting anywhere else. Starts with the next login."
msgstr ""
"Orta tık artık başka hiçbir yerde yapıştırmaz. Bir sonraki girişten itibaren."
msgid "Cover new applications"
msgstr "Yeni uygulamaları kapsa"
msgid "Applications installed later get autoscroll on their own."
msgstr "Sonradan kurulan uygulamalar Autoscroll'u kendiliğinden alır."
msgid "More Chromium arguments"
msgstr "Ek Chromium argümanları"
msgid "Passed to every application along with the autoscroll one."
msgstr "Autoscroll argümanıyla birlikte her uygulamaya verilir."
msgid "Up/Down: select, Space: change, q: back"
msgstr "Yukarı/Aşağı: seç, Boşluk: değiştir, q: geri"
msgid "Arguments separated by spaces, empty for none:"
msgstr "Boşlukla ayrılmış argümanlar, hiçbiri için boş bırakın:"
msgid "Could not save the setting."
msgstr "Ayar kaydedilemedi."
#. Applications screen
msgid "Looking at the installed applications..."
msgstr "Kurulu uygulamalara bakılıyor..."
msgid "No Chromium-based applications found."
msgstr "Chromium tabanlı uygulama bulunamadı."
msgid "Anything marked \"cannot tell\" stays off until it is turned on here."
msgstr "\"belirsiz\" olarak işaretlenenler burada açılana kadar kapalı kalır."
msgid "Autoscroll is off. This is what would be covered."
msgstr "Autoscroll kapalı. Kapsanacak olanlar bunlar."
msgid "Up/Down: select, Space: turn on or off, q: back"
msgstr "Yukarı/Aşağı: seç, Boşluk: aç veya kapat, q: geri"
msgid "Search:"
msgstr "Ara:"
msgid "Type to search, Down: go to the list, Esc: back"
msgstr "Aramak için yazın, Aşağı: listeye git, Esc: geri"
msgid "No matches."
msgstr "Eşleşme yok."
#. Results
msgid "Autoscroll is on for %d applications."
msgstr "Autoscroll %d uygulama için açık."
msgid ""
"Applications that are already running pick this up when they are restarted."
msgstr "Zaten çalışan uygulamalar bunu yeniden başlatıldıklarında alır."
msgid "Could not start the watcher for newly installed applications."
msgstr "Yeni uygulamaları izleme başlatılamadı."
msgid ""
"No systemd user session, so newly installed applications will not be picked "
"up on their own."
msgstr ""
"systemd kullanıcı oturumu yok, bu yüzden yeni kurulan uygulamalar "
"kendiliğinden algılanmayacak."
msgid "Autoscroll is off and everything that was changed has been put back."
msgstr "Autoscroll kapalı ve değiştirilen her şey geri alındı."
msgid "Autoscroll is off. Turn it on first."
msgstr "Autoscroll kapalı. Önce açın."
msgid "Applied again to %d applications."
msgstr "%d uygulamaya yeniden uygulandı."
msgid "Applied to %d applications."
msgstr "%d uygulamaya uygulandı."
msgid "Already applied to %d applications."
msgstr "Zaten %d uygulamaya uygulanmış."
msgid ""
"Steam starts its interface in a way this version cannot change without Steam "
"noticing; leaving it alone."
msgstr ""
"Steam arayüzünü, bu sürümün Steam fark etmeden değiştiremeyeceği bir şekilde "
"başlatıyor; olduğu gibi bırakılıyor."
msgid ""
"Steam's interface cannot be given the flag without leaving a file Steam "
"would reinstall; the change has been taken back."
msgstr ""
"Steam arayüzüne, Steam'in yeniden kuracağı bir dosya bırakmadan bayrak "
"verilemiyor; değişiklik geri alındı."
msgid "Middle click stops pasting at the next login."
msgstr "Orta tık bir sonraki girişte yapıştırmayı bırakır."
#. Help
msgid "Usage: middleclick-autoscroll [command]"
msgstr "Kullanım: middleclick-autoscroll [komut]"
msgid "Commands:"
msgstr "Komutlar:"
msgid "Turn autoscroll on"
msgstr "Autoscroll'u aç"
msgid "Turn it off and put everything back"
msgstr "Kapat ve her şeyi geri al"
msgid "Apply to anything installed since the last run"
msgstr "Son çalıştırmadan beri kurulan her şeye uygula"
msgid "Take everything back and apply it again"
msgstr "Her şeyi geri al ve yeniden uygula"
msgid "Show what is covered"
msgstr "Neyin kapsandığını göster"
msgid "List every application that was found"
msgstr "Bulunan tüm uygulamaları listele"
msgid "Show this help"
msgstr "Bu yardımı göster"
msgid "Show the version"
msgstr "Sürümü göster"
msgid "Without a command an interactive menu is shown."
msgstr "Komut verilmezse etkileşimli bir menü gösterilir."
msgid "Unknown command: %s"
msgstr "Bilinmeyen komut: %s"
#. Time
msgid "never"
msgstr "hiç"
msgid "just now"
msgstr "az önce"
msgid "1 minute ago"
msgstr "1 dakika önce"
msgid "%d minutes ago"
msgstr "%d dakika önce"
msgid "1 hour ago"
msgstr "1 saat önce"
msgid "%d hours ago"
msgstr "%d saat önce"
msgid "1 day ago"
msgstr "1 gün önce"
msgid "%d days ago"
msgstr "%d gün önce"
+266
View File
@@ -0,0 +1,266 @@
# Ukrainian translation for middleclick-autoscroll.
# Machine translated. Corrections are welcome.
# Copyright (C) 2026 Felitendo
# This file is distributed under the same license as middleclick-autoscroll.
#
msgid ""
msgstr ""
"Project-Id-Version: middleclick-autoscroll 1.6.0\n"
"Report-Msgid-Bugs-To: https://github.com/LoonixTools/middleclick-autoscroll/"
"issues\n"
"POT-Creation-Date: 2026-09-24 00:00+0200\n"
"PO-Revision-Date: 2026-09-24 00:00+0200\n"
"Last-Translator: machine translation\n"
"Language-Team: Ukrainian\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Status labels
msgid "ON"
msgstr "УВІМК"
msgid "OFF"
msgstr "ВИМК"
msgid "on"
msgstr "увімк"
msgid "off"
msgstr "вимк"
msgid "(none)"
msgstr "(немає)"
msgid "flag file"
msgstr "файл прапорців"
msgid "launcher"
msgstr "ярлик"
msgid "cannot tell"
msgstr "невідомо"
msgid "not patched yet"
msgstr "ще не застосовано"
#. Status block
msgid "Autoscroll"
msgstr "Автопрокручування"
msgid "Applications covered"
msgstr "Охоплені застосунки"
msgid "%d of %d"
msgstr "%d з %d"
msgid "Not identified"
msgstr "Не розпізнано"
msgid "%d (see the applications list)"
msgstr "%d (див. список застосунків)"
msgid "Steam"
msgstr "Steam"
msgid "Middle-click paste"
msgstr "Вставлення середньою кнопкою"
msgid "New applications"
msgstr "Нові застосунки"
msgid "Last applied"
msgstr "Востаннє застосовано"
msgid "Applications pick this up the next time they are started."
msgstr "Застосунки підхоплять це під час наступного запуску."
#. Menu
msgid "Turn autoscroll on or off"
msgstr "Увімкнути або вимкнути автопрокручування"
msgid "Re-apply everything"
msgstr "Застосувати все знову"
msgid "Applications"
msgstr "Застосунки"
msgid "Settings"
msgstr "Налаштування"
msgid "Quit"
msgstr "Вийти"
msgid "Press any key to continue..."
msgstr "Натисніть будь-яку клавішу..."
msgid "One moment..."
msgstr "Хвилинку..."
#. Settings
msgid "Turn off middle-click paste"
msgstr "Вимкнути вставлення середньою кнопкою"
msgid ""
"Stops middle click from pasting anywhere else. Starts with the next login."
msgstr "Середня кнопка більше ніде не вставляє. З наступного входу в систему."
msgid "Cover new applications"
msgstr "Охоплювати нові застосунки"
msgid "Applications installed later get autoscroll on their own."
msgstr "Застосунки, встановлені пізніше, отримають автопрокручування самі."
msgid "More Chromium arguments"
msgstr "Інші аргументи Chromium"
msgid "Passed to every application along with the autoscroll one."
msgstr "Передаються кожному застосунку разом з аргументом автопрокручування."
msgid "Up/Down: select, Space: change, q: back"
msgstr "Вгору/Вниз: вибір, Пробіл: змінити, q: назад"
msgid "Arguments separated by spaces, empty for none:"
msgstr "Аргументи через пробіл (порожньо, якщо не потрібні):"
msgid "Could not save the setting."
msgstr "Не вдалося зберегти налаштування."
#. Applications screen
msgid "Looking at the installed applications..."
msgstr "Перегляд встановлених застосунків..."
msgid "No Chromium-based applications found."
msgstr "Застосунків на основі Chromium не знайдено."
msgid "Anything marked \"cannot tell\" stays off until it is turned on here."
msgstr ""
"Позначене як «невідомо» лишається вимкненим, доки його тут не увімкнуть."
msgid "Autoscroll is off. This is what would be covered."
msgstr "Автопрокручування вимкнено. Ось що було б охоплено."
msgid "Up/Down: select, Space: turn on or off, q: back"
msgstr "Вгору/Вниз: вибір, Пробіл: увімкнути чи вимкнути, q: назад"
msgid "Search:"
msgstr "Пошук:"
msgid "Type to search, Down: go to the list, Esc: back"
msgstr "Друкуйте для пошуку, Вниз: до списку, Esc: назад"
msgid "No matches."
msgstr "Нічого не знайдено."
#. Results
msgid "Autoscroll is on for %d applications."
msgstr "Автопрокручування увімкнено. Застосунків: %d."
msgid ""
"Applications that are already running pick this up when they are restarted."
msgstr "Уже запущені застосунки підхоплять це після перезапуску."
msgid "Could not start the watcher for newly installed applications."
msgstr "Не вдалося запустити стеження за новими застосунками."
msgid ""
"No systemd user session, so newly installed applications will not be picked "
"up on their own."
msgstr ""
"Немає користувацького сеансу systemd, тож нові застосунки не буде підхоплено "
"самостійно."
msgid "Autoscroll is off and everything that was changed has been put back."
msgstr "Автопрокручування вимкнено, усі зміни скасовано."
msgid "Autoscroll is off. Turn it on first."
msgstr "Автопрокручування вимкнено. Спершу увімкніть його."
msgid "Applied again to %d applications."
msgstr "Застосовано знову. Застосунків: %d."
msgid "Applied to %d applications."
msgstr "Застосовано. Застосунків: %d."
msgid "Already applied to %d applications."
msgstr "Уже застосовано. Застосунків: %d."
msgid ""
"Steam starts its interface in a way this version cannot change without Steam "
"noticing; leaving it alone."
msgstr ""
"Steam запускає свій інтерфейс так, що ця версія не може це змінити непомітно "
"для Steam; Steam лишається без змін."
msgid ""
"Steam's interface cannot be given the flag without leaving a file Steam "
"would reinstall; the change has been taken back."
msgstr ""
"Інтерфейсу Steam не можна передати прапорець, не залишивши файл, який Steam "
"перевстановив би; зміну скасовано."
msgid "Middle click stops pasting at the next login."
msgstr "Середня кнопка перестане вставляти з наступного входу в систему."
#. Help
msgid "Usage: middleclick-autoscroll [command]"
msgstr "Використання: middleclick-autoscroll [команда]"
msgid "Commands:"
msgstr "Команди:"
msgid "Turn autoscroll on"
msgstr "Увімкнути автопрокручування"
msgid "Turn it off and put everything back"
msgstr "Вимкнути й усе повернути"
msgid "Apply to anything installed since the last run"
msgstr "Застосувати до всього, що встановлено з минулого запуску"
msgid "Take everything back and apply it again"
msgstr "Усе скасувати й застосувати знову"
msgid "Show what is covered"
msgstr "Показати, що охоплено"
msgid "List every application that was found"
msgstr "Показати всі знайдені застосунки"
msgid "Show this help"
msgstr "Показати цю довідку"
msgid "Show the version"
msgstr "Показати версію"
msgid "Without a command an interactive menu is shown."
msgstr "Без команди показується інтерактивне меню."
msgid "Unknown command: %s"
msgstr "Невідома команда: %s"
#. Time
msgid "never"
msgstr "ніколи"
msgid "just now"
msgstr "щойно"
msgid "1 minute ago"
msgstr "1 хвилину тому"
msgid "%d minutes ago"
msgstr "%d хв тому"
msgid "1 hour ago"
msgstr "1 годину тому"
msgid "%d hours ago"
msgstr "%d год тому"
msgid "1 day ago"
msgstr "1 день тому"
msgid "%d days ago"
msgstr "%d дн. тому"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 49 KiB

+28 -11
View File
@@ -15,6 +15,7 @@ MCA_ROUTES=()
# flags - the launcher reads a flag file; write it there # flags - the launcher reads a flag file; write it there
# desktop - no flag file; shadow or edit the desktop entry # desktop - no flag file; shadow or edit the desktop entry
# steam - Steam's own two-part treatment # steam - Steam's own two-part treatment
# spotify - the flag goes into spotify-launcher's configuration file
# unknown - cannot tell what engine this is (an AppImage), so nothing is done # unknown - cannot tell what engine this is (an AppImage), so nothing is done
# off - detected, but switched off # off - detected, but switched off
# #
@@ -26,16 +27,16 @@ MCA_ROUTE=''
mca_route() { mca_route() {
local kind="$1" id="$2" prog="$3" packaging="${4:-native}" local kind="$1" id="$2" prog="$3" packaging="${4:-native}"
if [[ $kind == steam ]]; then if [[ $kind == steam || $kind == spotify ]]; then
if mca_config_list_has Skip "$id" || [[ $CFG_STEAM != yes ]]; then if mca_config_list_has Skip "$id"; then
MCA_ROUTE=off MCA_ROUTE=off
else else
MCA_ROUTE=steam MCA_ROUTE="$kind"
fi fi
return return
fi fi
if ! mca_kind_wanted "$kind" "$id" "$packaging"; then if ! mca_kind_wanted "$kind" "$id"; then
[[ $kind == unknown ]] && MCA_ROUTE=unknown || MCA_ROUTE=off [[ $kind == unknown ]] && MCA_ROUTE=unknown || MCA_ROUTE=off
return return
fi fi
@@ -59,7 +60,7 @@ mca_route() {
# as it likes to be. It writes only what differs, which is what keeps the # as it likes to be. It writes only what differs, which is what keeps the
# watcher from chasing its own changes. # watcher from chasing its own changes.
mca_apply() { mca_apply() {
local i id file prog kind packaging route steam_done=0 local i id file prog kind packaging route steam_done=0 spotify_done=0
MCA_CHANGES=0 MCA_CHANGES=0
MCA_ROUTES=() MCA_ROUTES=()
@@ -111,29 +112,29 @@ mca_apply() {
steam_done=1 steam_done=1
fi fi
;; ;;
spotify)
(( spotify_done )) || mca_spotify_apply
spotify_done=1
;;
esac esac
done done
# Steam is worth patching even when its desktop entry is missing. A user # Steam is worth patching even when its desktop entry is missing. A user
# who starts it from a script or a game launcher still gets the interface. # who starts it from a script or a game launcher still gets the interface.
if [[ $CFG_STEAM == yes ]] && (( ! steam_done )) && mca_steam_installed; then if (( ! steam_done )) && mca_steam_wanted && mca_steam_installed; then
mca_steam_apply mca_steam_apply
fi fi
# Autostart entries. A Chromium application that starts itself at login # Autostart entries. A Chromium application that starts itself at login
# points straight at its binary and never reads the entry in the menu, so # points straight at its binary and never reads the entry in the menu, so
# Discord at login used to behave differently from Discord from the menu. # Discord at login used to behave differently from Discord from the menu.
if [[ $CFG_AUTOSTART == yes ]]; then mca_autostart_apply
mca_autostart_apply
fi
# Shortcuts on the desktop itself, which nothing above has seen: the XDG # Shortcuts on the desktop itself, which nothing above has seen: the XDG
# search path does not go there. Each entry is gated on its own, so there is # search path does not go there. Each entry is gated on its own, so there is
# nothing to check out here. # nothing to check out here.
mca_shortcuts_apply mca_shortcuts_apply
[[ $CFG_SPOTIFY == yes ]] && mca_spotify_apply
# Not about any one application: middle click goes on pasting everywhere # Not about any one application: middle click goes on pasting everywhere
# else on the desktop, and KDE is the one desktop that can be told not to. # else on the desktop, and KDE is the one desktop that can be told not to.
# See kde.sh. # See kde.sh.
@@ -272,12 +273,28 @@ mca_count_routes() {
done done
} }
# mca_steam_wanted
# Whether Steam gets patched, from the routes of the last scan: yes unless it
# was turned off in the applications list. Also yes when it has no entry there
# at all, so there is nothing to turn off.
mca_steam_wanted() {
local i seen=0
for i in "${!MCA_KINDS[@]}"; do
[[ ${MCA_KINDS[i]} == steam ]] || continue
[[ ${MCA_ROUTES[i]} == steam ]] && return 0
seen=1
done
(( ! seen ))
}
# mca_route_label <route> # mca_route_label <route>
mca_route_label() { mca_route_label() {
case "$1" in case "$1" in
flags) mca_msg "flag file" ;; flags) mca_msg "flag file" ;;
desktop) mca_msg "launcher" ;; desktop) mca_msg "launcher" ;;
steam) mca_msg "Steam" ;; steam) mca_msg "Steam" ;;
spotify) printf 'spotify-launcher' ;;
unknown) mca_msg "cannot tell" ;; unknown) mca_msg "cannot tell" ;;
*) mca_msg "off" ;; *) mca_msg "off" ;;
esac esac
+2 -8
View File
@@ -215,12 +215,6 @@ else
MCA_C_GREEN='' MCA_C_YELLOW='' MCA_C_RED='' MCA_C_GREEN='' MCA_C_YELLOW='' MCA_C_RED=''
fi fi
# Set by mca_bad and mca_note. The menu redraws straight after an action, which
# would wipe the screen; this marks that something was printed the user still
# has to read. A plain success needs no acknowledgement, because the status
# block at the top of the menu already shows the new state.
MCA_UI_NEEDS_ACK=''
# --quiet silences progress chatter; errors still go to stderr. Used by the # --quiet silences progress chatter; errors still go to stderr. Used by the
# systemd unit, which has no terminal and logs to the journal anyway. # systemd unit, which has no terminal and logs to the journal anyway.
MCA_QUIET='' MCA_QUIET=''
@@ -228,8 +222,8 @@ MCA_QUIET=''
mca_say() { [[ -n $MCA_QUIET ]] || printf '%s\n' "$*"; } mca_say() { [[ -n $MCA_QUIET ]] || printf '%s\n' "$*"; }
mca_head() { printf '\n%s%s%s\n\n' "$MCA_C_BOLD$MCA_C_BLUE" "$*" "$MCA_C_RESET"; } mca_head() { printf '\n%s%s%s\n\n' "$MCA_C_BOLD$MCA_C_BLUE" "$*" "$MCA_C_RESET"; }
mca_ok() { [[ -n $MCA_QUIET ]] || printf '%s✔%s %s\n' "$MCA_C_GREEN" "$MCA_C_RESET" "$*"; } mca_ok() { [[ -n $MCA_QUIET ]] || printf '%s✔%s %s\n' "$MCA_C_GREEN" "$MCA_C_RESET" "$*"; }
mca_bad() { MCA_UI_NEEDS_ACK=1; printf '%s✘%s %s\n' "$MCA_C_RED" "$MCA_C_RESET" "$*" >&2; } mca_bad() { printf '%s✘%s %s\n' "$MCA_C_RED" "$MCA_C_RESET" "$*" >&2; }
mca_note() { MCA_UI_NEEDS_ACK=1; [[ -n $MCA_QUIET ]] || printf '%s•%s %s\n' "$MCA_C_DIM" "$MCA_C_RESET" "$*"; } mca_note() { [[ -n $MCA_QUIET ]] || printf '%s•%s %s\n' "$MCA_C_DIM" "$MCA_C_RESET" "$*"; }
mca_have() { command -v "$1" > /dev/null 2>&1; } mca_have() { command -v "$1" > /dev/null 2>&1; }
+48 -7
View File
@@ -101,6 +101,20 @@ mca_config_set() {
MCA_CONFIG_CACHED=0 MCA_CONFIG_CACHED=0
} }
# mca_config_del <Key>
mca_config_del() {
local key="$1" tmp
[[ -w $MCA_CONFIG ]] || return 1
grep -qE "^[[:space:]]*${key}[[:space:]]*=" "$MCA_CONFIG" || return 0
tmp="$(mktemp "${MCA_CONFIG}.XXXXXX")" || return 1
chmod --reference="$MCA_CONFIG" "$tmp" 2>/dev/null || chmod 0644 "$tmp"
grep -vE "^[[:space:]]*${key}[[:space:]]*=" "$MCA_CONFIG" > "$tmp"
mv -f "$tmp" "$MCA_CONFIG"
MCA_CONFIG_CACHED=0
}
# mca_config_list_has <Key> <item> # mca_config_list_has <Key> <item>
# The per-application overrides are stored as space separated lists. # The per-application overrides are stored as space separated lists.
mca_config_list_has() { mca_config_list_has() {
@@ -136,13 +150,6 @@ mca_config_list_del() {
mca_config_load() { mca_config_load() {
CFG_ENABLED=no; mca_config_bool Enabled no && CFG_ENABLED=yes CFG_ENABLED=no; mca_config_bool Enabled no && CFG_ENABLED=yes
CFG_APPS=no; mca_config_bool PatchApps yes && CFG_APPS=yes
CFG_BROWSERS=no; mca_config_bool PatchBrowsers yes && CFG_BROWSERS=yes
CFG_FLATPAK=no; mca_config_bool PatchFlatpak yes && CFG_FLATPAK=yes
CFG_SNAP=no; mca_config_bool PatchSnap yes && CFG_SNAP=yes
CFG_AUTOSTART=no; mca_config_bool PatchAutostart yes && CFG_AUTOSTART=yes
CFG_STEAM=no; mca_config_bool PatchSteam yes && CFG_STEAM=yes
CFG_SPOTIFY=no; mca_config_bool PatchSpotify yes && CFG_SPOTIFY=yes
CFG_WATCH=no; mca_config_bool WatchNewApps yes && CFG_WATCH=yes CFG_WATCH=no; mca_config_bool WatchNewApps yes && CFG_WATCH=yes
CFG_PASTE=no; mca_config_bool DisablePaste yes && CFG_PASTE=yes CFG_PASTE=no; mca_config_bool DisablePaste yes && CFG_PASTE=yes
@@ -155,6 +162,40 @@ mca_config_load() {
CFG_SKIP="$(mca_config_get Skip '')" CFG_SKIP="$(mca_config_get Skip '')"
} }
# mca_config_migrate
# Up to 1.5 the settings had a switch per group: applications, browsers,
# Flatpak, snap, programs at login, Steam and Spotify. The applications list
# does that job now, one application at a time. So a group that was switched
# off turns into a Skip for each application in it, once, and the old keys go.
# Called at the end of a scan, because the groups come from there.
mca_config_migrate() {
local i key off='' group pack
_mca_config_slurp
[[ $MCA_CONFIG_CACHE == *Patch[A-Z]*=* ]] || return 0
for key in Apps Browsers Flatpak Snap Steam Spotify; do
mca_config_bool "Patch$key" yes || off+=" $key "
done
if [[ -n $off ]]; then
for i in "${!MCA_IDS[@]}"; do
mca_config_list_has Include "${MCA_IDS[i]}" && continue
group="${MCA_KINDS[i]^}"
[[ $group == App || $group == Browser ]] && group+=s
pack="${MCA_PACKAGING[i]^}"
if [[ $off == *" $group "* || $off == *" $pack "* ]]; then
mca_config_list_add Skip "${MCA_IDS[i]}"
fi
done
fi
for key in Apps Browsers Flatpak Snap Autostart Steam Spotify; do
mca_config_del "Patch$key"
done
mca_config_load
}
# mca_flags [kind] # mca_flags [kind]
# The full argument string that gets injected. Kept in one place so the flag # The full argument string that gets injected. Kept in one place so the flag
# file writer and the desktop entry writer cannot drift apart. # file writer and the desktop entry writer cannot drift apart.
+18 -21
View File
@@ -486,6 +486,11 @@ _mca_script_target() {
MCA_SCRIPT_VARS=() MCA_SCRIPT_VARS=()
# Only assignments and exec lines matter, and the shell is slow at reading
# a big script line by line. So grep picks them out, and a script with no
# exec at all (winetricks has 20000 lines of that) is not read here at all.
grep -qaE '^[[:space:]]*exec[[:space:]]' -- "$script" 2>/dev/null || return 1
while IFS= read -r line; do while IFS= read -r line; do
if [[ $line =~ $re_assign ]]; then if [[ $line =~ $re_assign ]]; then
name="${BASH_REMATCH[2]}" name="${BASH_REMATCH[2]}"
@@ -543,7 +548,8 @@ _mca_script_target() {
fi fi
return $? return $?
done done
done < "$script" done < <(grep -aE '^[[:space:]]*((export[[:space:]]+)?[A-Za-z_][A-Za-z0-9_]*=|exec[[:space:]])' \
-- "$script" 2>/dev/null)
return 1 return 1
} }
@@ -983,7 +989,7 @@ MCA_IDS=() # desktop file id, without the .desktop suffix
MCA_FILES=() # the desktop entry that is in effect for that id MCA_FILES=() # the desktop entry that is in effect for that id
MCA_NAMES=() # display name MCA_NAMES=() # display name
MCA_PROGS=() # resolved program, or a Flatpak app id or a snap name MCA_PROGS=() # resolved program, or a Flatpak app id or a snap name
MCA_KINDS=() # app | browser | steam | unknown | no MCA_KINDS=() # app | browser | steam | spotify | unknown | no
MCA_PACKAGING=() # native | flatpak | snap MCA_PACKAGING=() # native | flatpak | snap
# A scan reads every desktop entry on the system, so the menu does it once and # A scan reads every desktop entry on the system, so the menu does it once and
@@ -1088,6 +1094,10 @@ mca_scan() {
# Steam is Chromium inside, but nothing about it can be changed # Steam is Chromium inside, but nothing about it can be changed
# from a command line argument; it has its own module. # from a command line argument; it has its own module.
kind=steam kind=steam
elif [[ ${prog##*/} == spotify-launcher ]]; then
# Not Chromium itself, but it starts Spotify, which is CEF. It
# takes the flag from its own configuration file.
kind=spotify
else else
mca_detect_verdict "$prog" mca_detect_verdict "$prog"
case "$MCA_VERDICT" in case "$MCA_VERDICT" in
@@ -1108,6 +1118,7 @@ mca_scan() {
mca_cache_flush mca_cache_flush
MCA_SCANNED=1 MCA_SCANNED=1
mca_config_migrate
} }
# mca_has_flags_file <program> # mca_has_flags_file <program>
@@ -1218,28 +1229,14 @@ mca_flatpak_is_chromium() {
return 1 return 1
} }
# mca_kind_wanted <kind> <id> [packaging] # mca_kind_wanted <kind> <id>
# Whether the current settings say this entry should be patched. Skip beats # Whether this entry should be patched. Skip beats everything, an explicit
# everything, an explicit include beats detection, and detection beats nothing. # include beats detection, and detection beats nothing.
#
# Packaging is a gate in front of the category rather than a category of its
# own: a Flatpak or a snap sees none of the host's configuration and is worth
# switching off as a group, but it is still an application or a browser and
# whichever of those the user turned off applies to it too.
mca_kind_wanted() { mca_kind_wanted() {
local kind="$1" id="$2" packaging="${3:-native}" local kind="$1" id="$2"
mca_config_list_has Skip "$id" && return 1 mca_config_list_has Skip "$id" && return 1
mca_config_list_has Include "$id" && return 0 mca_config_list_has Include "$id" && return 0
case "$packaging" in [[ $kind == app || $kind == browser ]]
flatpak) [[ $CFG_FLATPAK == yes ]] || return 1 ;;
snap) [[ $CFG_SNAP == yes ]] || return 1 ;;
esac
case "$kind" in
app) [[ $CFG_APPS == yes ]] ;;
browser) [[ $CFG_BROWSERS == yes ]] ;;
*) return 1 ;;
esac
} }
+164 -61
View File
@@ -31,14 +31,25 @@ mca_ui_term_restore() {
MCA_TERM_SAVED='' MCA_TERM_SAVED=''
} }
# Runs an action with the terminal handed back to normal line mode, so anything # What the last action printed. The menu shows it under the status until the
# it prints or prompts for behaves the way a program expects. # next key, so nothing has to wait for a key on a screen of its own.
mca_ui_cooked() { MCA_UI_MSG=''
mca_ui_term_restore
"$@" # Set while the menu runs. Its status block already says that running
local rc=$? # applications need a restart, so the actions leave that line out there.
mca_ui_term_raw MCA_IN_MENU=''
return $rc
# mca_ui_run <command...>
# Runs an action in this shell (so what it scans and loads stays) with its
# output kept for the menu. None of them asks anything.
mca_ui_run() {
local tmp
printf ' %s%s%s\n' "$MCA_C_DIM" "$(mca_msg "One moment...")" "$MCA_C_RESET"
tmp="$(mktemp)" || { "$@"; return; }
"$@" > "$tmp" 2>&1
MCA_UI_MSG="$(< "$tmp")"
rm -f -- "$tmp"
} }
# mca_read_key # mca_read_key
@@ -178,7 +189,7 @@ mca_ui_status() {
if mca_steam_installed; then if mca_steam_installed; then
if mca_steam_patched; then if mca_steam_patched; then
_mca_row "$(mca_msg "Steam")" "$(_mca_onoff yes)" _mca_row "$(mca_msg "Steam")" "$(_mca_onoff yes)"
elif [[ $CFG_STEAM == yes && $CFG_ENABLED == yes ]]; then elif [[ $CFG_ENABLED == yes ]] && mca_steam_wanted; then
_mca_row "$(mca_msg "Steam")" \ _mca_row "$(mca_msg "Steam")" \
"${MCA_C_YELLOW}$(mca_msg "not patched yet")${MCA_C_RESET}" "${MCA_C_YELLOW}$(mca_msg "not patched yet")${MCA_C_RESET}"
else else
@@ -218,19 +229,16 @@ mca_ui_status() {
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Settings # Settings
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Format: Key|type|default|label-msgid # Only what is not about one application. Which applications get autoscroll is
# type is bool or text. # decided in the applications list.
#
# Format: Key|type|default|check|label-msgid|help-msgid
# type is bool or text. The row is only shown when the check passes: a switch
# for something this system does not have is only noise.
MCA_SETTINGS=( MCA_SETTINGS=(
"PatchApps|bool|yes|Electron and CEF applications" "DisablePaste|bool|yes|mca_kde_available|Turn off middle-click paste|Stops middle click from pasting anywhere else. Starts with the next login."
"PatchBrowsers|bool|yes|Chromium-based browsers" "WatchNewApps|bool|yes|mca_watch_available|Cover new applications|Applications installed later get autoscroll on their own."
"PatchFlatpak|bool|yes|Flatpak applications" "ExtraFlags|text|||More Chromium arguments|Passed to every application along with the autoscroll one."
"PatchSnap|bool|yes|Snap applications"
"PatchAutostart|bool|yes|Programs that start themselves at login"
"PatchSteam|bool|yes|Steam"
"PatchSpotify|bool|yes|Spotify"
"DisablePaste|bool|yes|Turn off KDE's middle-click paste"
"WatchNewApps|bool|yes|Apply to newly installed applications"
"ExtraFlags|text||Additional Chromium arguments"
) )
_mca_is_true() { _mca_is_true() {
@@ -275,10 +283,9 @@ _mca_setting_display() {
# #
# Returns 0 when something was changed, so the caller knows to re-apply. # Returns 0 when something was changed, so the caller knows to re-apply.
mca_ui_settings() { mca_ui_settings() {
local count=${#MCA_SETTINGS[@]} local -a names=() types=() defaults=() labels=() helps=() values=()
local -a names=() types=() defaults=() labels=() values=() local spec name type default check label help locale i key frame row pad
local spec name type default label locale i key frame row pad dirty=1 cursor=0 local count width=0 dirty=1 cursor=0 touched=0
local touched=0
locale="$(mca_ui_locale)" locale="$(mca_ui_locale)"
mca_msg_into "$locale" "ON"; MCA_LBL_ON="$MCA_MSG_RESULT" mca_msg_into "$locale" "ON"; MCA_LBL_ON="$MCA_MSG_RESULT"
@@ -286,15 +293,20 @@ mca_ui_settings() {
mca_msg_into "$locale" "(none)"; MCA_LBL_NONE="$MCA_MSG_RESULT" mca_msg_into "$locale" "(none)"; MCA_LBL_NONE="$MCA_MSG_RESULT"
for spec in "${MCA_SETTINGS[@]}"; do for spec in "${MCA_SETTINGS[@]}"; do
IFS='|' read -r name type default label <<< "$spec" IFS='|' read -r name type default check label help <<< "$spec"
[[ -z $check ]] || "$check" || continue
names+=("$name"); types+=("$type"); defaults+=("$default") names+=("$name"); types+=("$type"); defaults+=("$default")
mca_msg_into "$locale" "$label" mca_msg_into "$locale" "$label"
labels+=("$MCA_MSG_RESULT") labels+=("$MCA_MSG_RESULT")
(( ${#MCA_MSG_RESULT} > width )) && width=${#MCA_MSG_RESULT}
mca_msg_into "$locale" "$help"
helps+=("$MCA_MSG_RESULT")
done done
count=${#names[@]}
local title hint local title hint
mca_msg_into "$locale" "Settings"; title="$MCA_MSG_RESULT" mca_msg_into "$locale" "Settings"; title="$MCA_MSG_RESULT"
mca_msg_into "$locale" "Up/Down: select, Space or Right: change, q: back" mca_msg_into "$locale" "Up/Down: select, Space: change, q: back"
hint="$MCA_MSG_RESULT" hint="$MCA_MSG_RESULT"
local clearseq local clearseq
@@ -314,7 +326,7 @@ mca_ui_settings() {
local marker selected="${MCA_C_BLUE}▸${MCA_C_RESET} " local marker selected="${MCA_C_BLUE}▸${MCA_C_RESET} "
for i in "${!names[@]}"; do for i in "${!names[@]}"; do
_mca_setting_display "${types[i]}" "${values[i]}" _mca_setting_display "${types[i]}" "${values[i]}"
pad=$(( 46 - ${#labels[i]} )) pad=$(( width + 3 - ${#labels[i]} ))
(( pad < 0 )) && pad=0 (( pad < 0 )) && pad=0
if (( i == cursor )); then marker="$selected"; else marker=' '; fi if (( i == cursor )); then marker="$selected"; else marker=' '; fi
printf -v row ' %s%s%*s %s' \ printf -v row ' %s%s%*s %s' \
@@ -322,6 +334,7 @@ mca_ui_settings() {
frame+="$row"$'\n' frame+="$row"$'\n'
done done
frame+=$'\n'" ${helps[cursor]}"$'\n'
frame+=$'\n'" ${MCA_C_DIM}${hint}${MCA_C_RESET}"$'\n' frame+=$'\n'" ${MCA_C_DIM}${hint}${MCA_C_RESET}"$'\n'
printf '%s' "$frame" printf '%s' "$frame"
@@ -378,10 +391,14 @@ mca_ui_edit_text() {
# turned on, and where a single application gets left out without having to # turned on, and where a single application gets left out without having to
# switch off its whole category. # switch off its whole category.
# #
# The screen opens on a search field above the list, so typing filters it
# right away. The field is row -1: Down leaves it, Up from the top returns.
#
# Returns 0 when something was changed. # Returns 0 when something was changed.
mca_ui_apps() { mca_ui_apps() {
local count key frame row pad i cursor=0 dirty=1 touched=0 locale local count key frame row pad i idx cursor=-1 dirty=1 touched=0 locale query='' needle
local -a labels=() states=() local footer flines size rows height top=0
local -a labels=() lower=() states=() matches=()
locale="$(mca_ui_locale)" locale="$(mca_ui_locale)"
@@ -389,7 +406,12 @@ mca_ui_apps() {
mca_msg_into "$locale" "Applications"; title="$MCA_MSG_RESULT" mca_msg_into "$locale" "Applications"; title="$MCA_MSG_RESULT"
mca_msg_into "$locale" "Up/Down: select, Space: turn on or off, q: back" mca_msg_into "$locale" "Up/Down: select, Space: turn on or off, q: back"
hint="$MCA_MSG_RESULT" hint="$MCA_MSG_RESULT"
mca_msg_into "$locale" "Anything not identified is left alone until it is turned on here." local l_search hint_search nomatch
mca_msg_into "$locale" "Search:"; l_search="$MCA_MSG_RESULT"
mca_msg_into "$locale" "Type to search, Down: go to the list, Esc: back"
hint_search="$MCA_MSG_RESULT"
mca_msg_into "$locale" "No matches."; nomatch="$MCA_MSG_RESULT"
mca_msg_into "$locale" 'Anything marked "cannot tell" stays off until it is turned on here.'
legend="$MCA_MSG_RESULT" legend="$MCA_MSG_RESULT"
mca_msg_into "$locale" "Autoscroll is off. This is what would be covered." mca_msg_into "$locale" "Autoscroll is off. This is what would be covered."
warn="$MCA_MSG_RESULT" warn="$MCA_MSG_RESULT"
@@ -411,6 +433,7 @@ mca_ui_apps() {
local s_steam="${s_on} ${MCA_C_DIM}(${l_steam})${MCA_C_RESET}" local s_steam="${s_on} ${MCA_C_DIM}(${l_steam})${MCA_C_RESET}"
local s_flags="${s_on} ${MCA_C_DIM}(${l_flagfile})${MCA_C_RESET}" local s_flags="${s_on} ${MCA_C_DIM}(${l_flagfile})${MCA_C_RESET}"
local s_desktop="${s_on} ${MCA_C_DIM}(${l_launcher})${MCA_C_RESET}" local s_desktop="${s_on} ${MCA_C_DIM}(${l_launcher})${MCA_C_RESET}"
local s_spotify="${s_on} ${MCA_C_DIM}(spotify-launcher)${MCA_C_RESET}"
local clearseq local clearseq
clearseq="$(clear 2>/dev/null)" || clearseq=$'\033[H\033[2J' clearseq="$(clear 2>/dev/null)" || clearseq=$'\033[H\033[2J'
@@ -421,8 +444,7 @@ mca_ui_apps() {
count=${#MCA_IDS[@]} count=${#MCA_IDS[@]}
if (( count == 0 )); then if (( count == 0 )); then
printf '\n %s\n' "$(mca_msg "No Chromium-based applications found.")" MCA_UI_MSG="$(mca_msg "No Chromium-based applications found.")"
mca_pause
return 1 return 1
fi fi
@@ -430,56 +452,132 @@ mca_ui_apps() {
if (( dirty )); then if (( dirty )); then
mca_config_load mca_config_load
mca_count_routes mca_count_routes
labels=(); states=() labels=(); lower=(); states=()
for i in "${!MCA_IDS[@]}"; do for i in "${!MCA_IDS[@]}"; do
labels+=("${MCA_NAMES[i]}") labels+=("${MCA_NAMES[i]}")
row="${MCA_NAMES[i],,}"
lower+=("${row//ı/i}")
states+=("${MCA_ROUTES[i]}") states+=("${MCA_ROUTES[i]}")
done done
dirty=0 dirty=0
fi fi
# In a Turkish locale I lowercases to a dotless ı, so "office" would
# not find ONLYOFFICE. Both sides fold it back to i.
needle="${query,,}"
needle="${needle//ı/i}"
matches=()
for i in "${!labels[@]}"; do
[[ ${lower[i]} == *"$needle"* ]] && matches+=("$i")
done
count=${#matches[@]}
(( cursor >= count )) && cursor=$(( count - 1 ))
# The footer is built first: the list gets the rows it leaves over.
footer='' flines=1
# Without this the list reads as a list of what is switched on, which
# it is not while the whole thing is off.
if [[ $CFG_ENABLED != yes ]]; then
footer+=" ${MCA_C_YELLOW}${warn}${MCA_C_RESET}"$'\n'
flines=$(( flines + 1 ))
fi
# Only needed while there is something it explains.
if (( MCA_N_UNKNOWN )); then
footer+=" ${MCA_C_DIM}${legend}${MCA_C_RESET}"$'\n'
flines=$(( flines + 1 ))
fi
if (( cursor < 0 )); then
footer+=" ${MCA_C_DIM}${hint_search}${MCA_C_RESET}"$'\n'
# Puts the terminal cursor at the end of the query (row 4).
printf -v row '\033[4;%dH' $(( 6 + ${#l_search} + ${#query} ))
footer+="$row"
else
footer+=" ${MCA_C_DIM}${hint}${MCA_C_RESET}"$'\n'
fi
# A list longer than the terminal would scroll the search field off
# the top. So only a window of it is drawn, and it follows the cursor.
# Five rows above the list, one below it, the footer, and the row the
# terminal cursor ends up on.
# A terminal that does not know its size says 0; then all of it is drawn.
size="$(stty size 2>/dev/null)"
rows="${size%% *}"
[[ $rows =~ ^[1-9][0-9]*$ ]] || rows=10000
height=$(( rows - 7 - flines ))
(( height < 1 )) && height=1
(( top > count - height )) && top=$(( count - height ))
(( top < 0 )) && top=0
if (( cursor >= 0 )); then
(( cursor < top )) && top=$cursor
(( cursor >= top + height )) && top=$(( cursor - height + 1 ))
fi
frame="$clearseq"$'\n'"${MCA_C_BOLD}${MCA_C_BLUE} ${title}${MCA_C_RESET}"$'\n\n' frame="$clearseq"$'\n'"${MCA_C_BOLD}${MCA_C_BLUE} ${title}${MCA_C_RESET}"$'\n\n'
local marker selected="${MCA_C_BLUE}▸${MCA_C_RESET} " shown local marker selected="${MCA_C_BLUE}▸${MCA_C_RESET} " shown
for i in "${!labels[@]}"; do if (( cursor < 0 )); then marker="$selected"; else marker=' '; fi
case "${states[i]}" in frame+=" ${marker}${l_search} ${query}"$'\n\n'
for (( i = top; i < count && i < top + height; i++ )); do
idx=${matches[i]}
case "${states[idx]}" in
off) shown="$s_off" ;; off) shown="$s_off" ;;
unknown) shown="$s_cannot" ;; unknown) shown="$s_cannot" ;;
steam) shown="$s_steam" ;; steam) shown="$s_steam" ;;
flags) shown="$s_flags" ;; flags) shown="$s_flags" ;;
spotify) shown="$s_spotify" ;;
*) shown="$s_desktop" ;; *) shown="$s_desktop" ;;
esac esac
pad=$(( 34 - ${#labels[i]} )) pad=$(( 34 - ${#labels[idx]} ))
(( pad < 0 )) && pad=0 (( pad < 0 )) && pad=0
if (( i == cursor )); then marker="$selected"; else marker=' '; fi if (( i == cursor )); then marker="$selected"; else marker=' '; fi
printf -v row ' %s%s%*s %s' "$marker" "${labels[i]}" "$pad" '' "$shown" printf -v row ' %s%s%*s %s' "$marker" "${labels[idx]}" "$pad" '' "$shown"
frame+="$row"$'\n' frame+="$row"$'\n'
done done
(( count )) || frame+=" ${MCA_C_DIM}${nomatch}${MCA_C_RESET}"$'\n'
frame+=$'\n' # Where the window is, in the row under it, when there is more.
# Without this the list reads as a list of what is switched on, which if (( count > height )); then
# it is not while the whole thing is off. frame+=" ${MCA_C_DIM}$(( top + 1 ))–$(( i )) / ${count}${MCA_C_RESET}"$'\n'
if [[ $CFG_ENABLED != yes ]]; then else
frame+=" ${MCA_C_YELLOW}${warn}${MCA_C_RESET}"$'\n' frame+=$'\n'
fi fi
frame+=" ${MCA_C_DIM}${legend}${MCA_C_RESET}"$'\n' frame+="$footer"
frame+=" ${MCA_C_DIM}${hint}${MCA_C_RESET}"$'\n'
printf '%s' "$frame" printf '%s' "$frame"
key="$(mca_read_key)" || return "$(( ! touched ))" key="$(mca_read_key)" || return "$(( ! touched ))"
# In the search field every key that can be typed goes into the query,
# q and the vi keys too.
if (( cursor < 0 )); then
case "$key" in
down|enter) (( count )) && cursor=0 ;;
up) cursor=$(( count - 1 )) ;;
backspace) query="${query%?}" ;;
space) query+=' ' ;;
escape)
[[ -z $query ]] && return "$(( ! touched ))"
query=''
;;
left|right) ;;
*) [[ $key == [[:print:]] ]] && query+="$key" ;;
esac
continue
fi
idx=${matches[cursor]}
case "$key" in case "$key" in
up|k) cursor=$(( (cursor - 1 + count) % count )) ;; up|k) cursor=$(( cursor - 1 )) ;;
down|j) cursor=$(( (cursor + 1) % count )) ;; down|j) cursor=$(( cursor + 1 < count ? cursor + 1 : -1 )) ;;
space|enter|right|left|l|h) space|enter|right|left|l|h)
case "${states[cursor]}" in case "${states[idx]}" in
off|unknown) off|unknown)
mca_config_list_del Skip "${MCA_IDS[cursor]}" mca_config_list_del Skip "${MCA_IDS[idx]}"
mca_config_list_add Include "${MCA_IDS[cursor]}" mca_config_list_add Include "${MCA_IDS[idx]}"
;; ;;
*) *)
mca_config_list_del Include "${MCA_IDS[cursor]}" mca_config_list_del Include "${MCA_IDS[idx]}"
mca_config_list_add Skip "${MCA_IDS[cursor]}" mca_config_list_add Skip "${MCA_IDS[idx]}"
;; ;;
esac esac
touched=1 touched=1
@@ -496,8 +594,9 @@ mca_ui_apps() {
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
mca_ui_menu() { mca_ui_menu() {
local choice local choice line
MCA_IN_MENU=1
mca_ui_term_raw mca_ui_term_raw
trap 'mca_ui_term_restore' EXIT INT TERM trap 'mca_ui_term_restore' EXIT INT TERM
@@ -508,6 +607,13 @@ mca_ui_menu() {
mca_head " $MCA_PRETTY" mca_head " $MCA_PRETTY"
mca_ui_status mca_ui_status
printf '\n' printf '\n'
if [[ -n $MCA_UI_MSG ]]; then
while IFS= read -r line; do
printf ' %s\n' "$line"
done <<< "$MCA_UI_MSG"
printf '\n'
MCA_UI_MSG=''
fi
printf ' [1] %s\n' "$(mca_msg "Turn autoscroll on or off")" printf ' [1] %s\n' "$(mca_msg "Turn autoscroll on or off")"
printf ' [2] %s\n' "$(mca_msg "Re-apply everything")" printf ' [2] %s\n' "$(mca_msg "Re-apply everything")"
printf ' [3] %s\n' "$(mca_msg "Applications")" printf ' [3] %s\n' "$(mca_msg "Applications")"
@@ -525,13 +631,11 @@ mca_ui_menu() {
case "$choice" in case "$choice" in
1) 1)
MCA_UI_NEEDS_ACK=''
if [[ $CFG_ENABLED == yes ]]; then if [[ $CFG_ENABLED == yes ]]; then
mca_ui_cooked mca_do_disable mca_ui_run mca_do_disable
else else
mca_ui_cooked mca_do_enable mca_ui_run mca_do_enable
fi fi
[[ -n $MCA_UI_NEEDS_ACK ]] && mca_pause
;; ;;
# Not a plain apply: with the watcher running there is never # Not a plain apply: with the watcher running there is never
# anything left for one to do, and a menu entry that answers # anything left for one to do, and a menu entry that answers
@@ -540,17 +644,16 @@ mca_ui_menu() {
# what fixes an application that drifted, a flag file somebody # what fixes an application that drifted, a flag file somebody
# edited, or Steam after it restored its own script. # edited, or Steam after it restored its own script.
2) 2)
mca_ui_cooked mca_do_apply --rebuild mca_ui_run mca_do_apply --rebuild
mca_pause
;; ;;
3) 3)
if mca_ui_apps; then if mca_ui_apps; then
[[ $CFG_ENABLED == yes ]] && mca_ui_cooked mca_do_apply --rebuild [[ $CFG_ENABLED == yes ]] && mca_ui_run mca_do_apply --rebuild
fi fi
;; ;;
4) 4)
if mca_ui_settings; then if mca_ui_settings; then
[[ $CFG_ENABLED == yes ]] && mca_ui_cooked mca_do_apply --rebuild [[ $CFG_ENABLED == yes ]] && mca_ui_run mca_do_apply --rebuild
fi fi
;; ;;
q|Q) mca_ui_term_restore; trap - EXIT INT TERM; return 0 ;; q|Q) mca_ui_term_restore; trap - EXIT INT TERM; return 0 ;;
+8 -16
View File
@@ -418,16 +418,12 @@ mca_desktop_apply() {
# Neither can be shadowed from anywhere, so both are edited where they stand, # Neither can be shadowed from anywhere, so both are edited where they stand,
# with the original kept. # with the original kept.
# _mca_entry_patch_inplace <file> <gate: autostart|apps> # _mca_entry_patch_inplace <file>
# One desktop entry that lives outside the XDG search path, edited where it is # One desktop entry that lives outside the XDG search path, edited where it is
# because there is nowhere to shadow it from. # because there is nowhere to shadow it from. It follows the applications list
# # under its own file name, which is the name of the application's own entry.
# What decides whether an application here is in scope differs by where the
# entry came from, which is what the gate says: an autostart entry follows the
# autostart setting, a shortcut follows the same rules as the application it is
# a shortcut to.
_mca_entry_patch_inplace() { _mca_entry_patch_inplace() {
local file="$1" gate="$2" local file="$1"
local id prog packaging=native content backup kind copy local id prog packaging=native content backup kind copy
# Already ours, and normally that is the end of it: what is in there is what # Already ours, and normally that is the end of it: what is in there is what
@@ -476,12 +472,8 @@ _mca_entry_patch_inplace() {
mca_desktop_is_browser && kind=browser || kind=app mca_desktop_is_browser && kind=browser || kind=app
if [[ $gate == autostart ]]; then id="${file##*/}"; id="${id%.desktop}"
[[ $CFG_AUTOSTART == yes ]] || return 0 mca_kind_wanted "$kind" "$id" || return 0
else
id="${file##*/}"; id="${id%.desktop}"
mca_kind_wanted "$kind" "$id" "$packaging" || return 0
fi
content="$(_mca_desktop_transform "$file" "$MCA_MARK_INPLACE" \ content="$(_mca_desktop_transform "$file" "$MCA_MARK_INPLACE" \
"$(mca_flags "$kind")")" "$(mca_flags "$kind")")"
@@ -503,7 +495,7 @@ mca_autostart_apply() {
for file in "$dir"/*.desktop; do for file in "$dir"/*.desktop; do
[[ -f $file ]] || continue [[ -f $file ]] || continue
_mca_entry_patch_inplace "$file" autostart _mca_entry_patch_inplace "$file"
done done
} }
@@ -515,7 +507,7 @@ mca_shortcuts_apply() {
for file in "$dir"/*.desktop; do for file in "$dir"/*.desktop; do
[[ -f $file ]] || continue [[ -f $file ]] || continue
_mca_entry_patch_inplace "$file" apps _mca_entry_patch_inplace "$file"
done done
} }
+6 -3
View File
@@ -56,7 +56,8 @@ mca_do_enable() {
mca_ok "$(mca_msg "Autoscroll is on for %d applications." "$MCA_N_ON")" mca_ok "$(mca_msg "Autoscroll is on for %d applications." "$MCA_N_ON")"
mca_note "$(mca_msg "Applications that are already running pick this up when they are restarted.")" [[ -n $MCA_IN_MENU ]] \
|| mca_note "$(mca_msg "Applications that are already running pick this up when they are restarted.")"
} }
mca_do_disable() { mca_do_disable() {
@@ -107,10 +108,12 @@ mca_do_apply() {
if (( rebuild )); then if (( rebuild )); then
mca_ok "$(mca_msg "Applied again to %d applications." "$MCA_N_ON")" mca_ok "$(mca_msg "Applied again to %d applications." "$MCA_N_ON")"
mca_say " $(mca_msg "Applications that are already running pick this up when they are restarted.")" [[ -n $MCA_IN_MENU ]] \
|| mca_say " $(mca_msg "Applications that are already running pick this up when they are restarted.")"
elif (( MCA_CHANGES )); then elif (( MCA_CHANGES )); then
mca_ok "$(mca_msg "Applied to %d applications." "$MCA_N_ON")" mca_ok "$(mca_msg "Applied to %d applications." "$MCA_N_ON")"
mca_say " $(mca_msg "Applications that are already running pick this up when they are restarted.")" [[ -n $MCA_IN_MENU ]] \
|| mca_say " $(mca_msg "Applications that are already running pick this up when they are restarted.")"
else else
mca_ok "$(mca_msg "Already applied to %d applications." "$MCA_N_ON")" mca_ok "$(mca_msg "Already applied to %d applications." "$MCA_N_ON")"
fi fi