Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15a7cb9cf9 | ||
|
|
0234e81811 | ||
|
|
6f62c7f21c | ||
|
|
3c000b8a6e | ||
|
|
0f9b041b20 | ||
|
|
98f6ac9c48 | ||
|
|
9861d24c2a | ||
|
|
f74fc3e8ca | ||
|
|
09b2c49eb3 | ||
|
|
ab62d2a3cf | ||
|
|
fa55571118 | ||
|
|
a516cf8f59 | ||
|
|
074a654597 | ||
|
|
472cf5382c | ||
|
|
82afefe5f8 | ||
|
|
677660c1c6 | ||
|
|
e9311431f8 |
No files matched your search
+1
-1
@@ -1 +1 @@
|
||||
buy_me_a_coffee: felitendo
|
||||
ko_fi: felitendo
|
||||
@@ -0,0 +1,35 @@
|
||||
name: 💡 Feature request
|
||||
description: An idea to make middleclick-autoscroll better.
|
||||
labels:
|
||||
- enhancement
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: checks
|
||||
attributes:
|
||||
label: Before you start
|
||||
options:
|
||||
- label: I searched the issues and this is not requested yet.
|
||||
required: true
|
||||
- type: textarea
|
||||
id: problem
|
||||
attributes:
|
||||
label: What problem would this solve?
|
||||
description: What are you trying to do, and what gets in the way?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: idea
|
||||
attributes:
|
||||
label: What would you like?
|
||||
description: How it could work. A rough idea is fine.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: Other ways you thought of
|
||||
- type: textarea
|
||||
id: more
|
||||
attributes:
|
||||
label: Anything else?
|
||||
description: Mockups, screenshots, or other tools that do it well.
|
||||
@@ -0,0 +1,85 @@
|
||||
name: 🐛 Bug report
|
||||
description: Something does not work as it should.
|
||||
labels:
|
||||
- bug
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Thanks for taking the time! The more you fill in, the faster it can be fixed.
|
||||
- type: checkboxes
|
||||
id: checks
|
||||
attributes:
|
||||
label: Before you start
|
||||
options:
|
||||
- label: I searched the issues and this is not reported yet.
|
||||
required: true
|
||||
- label: I use the latest version.
|
||||
required: true
|
||||
- type: textarea
|
||||
id: what
|
||||
attributes:
|
||||
label: What happened?
|
||||
description: What did you do, and what went wrong?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: steps
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
placeholder: |
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
- type: textarea
|
||||
id: expected
|
||||
attributes:
|
||||
label: What did you expect?
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: app
|
||||
attributes:
|
||||
label: App
|
||||
description: 'Which app, and how it is installed: native package, Flatpak, Snap or AppImage.'
|
||||
placeholder: Discord, Flatpak
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: The output of `middleclick-autoscroll --version`.
|
||||
placeholder: middleclick-autoscroll 1.6.0
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: install
|
||||
attributes:
|
||||
label: How did you install it?
|
||||
options:
|
||||
- AUR (Arch, CachyOS, EndeavourOS, Manjaro)
|
||||
- Fedora package
|
||||
- Bazzite
|
||||
- Debian or Ubuntu package
|
||||
- openSUSE package
|
||||
- Built from source
|
||||
- Other
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: system
|
||||
attributes:
|
||||
label: System
|
||||
description: Distribution, desktop and session (Wayland or X11).
|
||||
placeholder: CachyOS, KDE Plasma 6.4, Wayland
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Status and logs
|
||||
description: The output of `middleclick-autoscroll status` and `middleclick-autoscroll list`.
|
||||
render: shell
|
||||
- type: textarea
|
||||
id: more
|
||||
attributes:
|
||||
label: Anything else?
|
||||
description: Screenshots, videos or anything else that could help.
|
||||
@@ -0,0 +1 @@
|
||||
blank_issues_enabled: false
|
||||
@@ -125,7 +125,7 @@ $entry
|
||||
|
||||
If $name is useful to you, you can buy me a coffee. It keeps these tools going. Found a bug or have an idea? Tell me in the [issues](https://github.com/$repo/issues).
|
||||
|
||||
<a href="https://buymeacoffee.com/felitendo"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" height="48"></a>
|
||||
<a href="https://ko-fi.com/felitendo"><img src="https://storage.ko-fi.com/cdn/kofi5.png?v=6" alt="Buy me a coffee on Ko-fi" height="48"></a>
|
||||
|
||||
----
|
||||
|
||||
|
||||
@@ -2,6 +2,32 @@
|
||||
|
||||
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.1
|
||||
|
||||
_2026-09-29_
|
||||
|
||||
A small patch. Autoscroll now works in Steam with **Use experimental SteamRT3 Steam Client** turned on. And apps that start at login through a link, like Mullvad VPN, get autoscroll now instead of an error.
|
||||
|
||||
## 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
|
||||
|
||||
_2026-09-24_
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
- Body only when something genuinely cannot be inferred from the diff.
|
||||
- Never add `Co-Authored-By`, "Generated with" or any other AI attribution to commits or PR descriptions.
|
||||
- Do not commit or push before I have checked the changes locally and said they are fine. Then
|
||||
commit the result once and push. No commits for attempts that did not work. This also goes for
|
||||
commit and push. Several attempts at the same thing make one commit, and attempts that did not
|
||||
work make none. Different things done in one session get a commit each. This also goes for
|
||||
releases and tags.
|
||||
|
||||
## Releases
|
||||
@@ -67,3 +68,9 @@ when you press Enter." The list of commits follows on its own.
|
||||
- Commands and settings they type go in backticks, buttons and labels in bold.
|
||||
- To change an old release: edit its entry, commit, then
|
||||
`gh release edit <tag> --title <tag> --notes "$(.github/release-notes.sh <tag>)"`.
|
||||
|
||||
## README
|
||||
|
||||
- New UI (a window, a screen, a menu, a setting, a notification) gets a screenshot in the README,
|
||||
next to the text about it. Like for releases: a real screenshot of it running, in English.
|
||||
- When a screen changes, take its screenshot again. The README never shows an old one.
|
||||
@@ -8,7 +8,7 @@
|
||||
# Overridable so a packager can pass the version it is actually building
|
||||
# (`make VERSION=$pkgver`). The literal below is the fallback for builds
|
||||
# straight from a checkout, and is what a release tag has to carry.
|
||||
VERSION ?= 1.5.4
|
||||
VERSION ?= 1.6.1
|
||||
|
||||
PREFIX ?= /usr
|
||||
DESTDIR ?=
|
||||
@@ -36,7 +36,7 @@ else
|
||||
USERUNITDIR ?= $(DATADIR)/systemd/user
|
||||
endif
|
||||
|
||||
LINGUAS := de
|
||||
LINGUAS := cs de es fr it nl pl pt_BR ru tr uk
|
||||
MOFILES := $(patsubst %,po/%.mo,$(LINGUAS))
|
||||
MANPAGE := doc/middleclick-autoscroll.1
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
</h5>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://buymeacoffee.com/felitendo"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" height="48"></a>
|
||||
<a href="https://ko-fi.com/felitendo"><img src="https://storage.ko-fi.com/cdn/kofi5.png?v=6" alt="Buy me a coffee on Ko-fi" height="48"></a>
|
||||
</p>
|
||||
|
||||
## Install
|
||||
@@ -95,10 +95,10 @@ Press **1**. Autoscroll _✨just works✨_, like on Windows.
|
||||
<details>
|
||||
<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">
|
||||
<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>
|
||||
|
||||
</details>
|
||||
|
||||
@@ -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
|
||||
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
|
||||
is refused.
|
||||
@@ -112,7 +115,10 @@ Two ways, chosen per application.
|
||||
|
||||
Programs that start themselves at login write their own entry into
|
||||
_~/.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. An entry that is a symlink, often to an
|
||||
application's entry in _/usr/share/applications_, is replaced by a patched
|
||||
file rather than written through, and undoing puts the link back.
|
||||
|
||||
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
|
||||
@@ -129,6 +135,12 @@ helper, inside Steam's own installation:
|
||||
|
||||
~/.local/share/Steam/ubuntu12_64/steamwebhelper_sniper_wrap.sh
|
||||
|
||||
The steamrt3 client, a beta for now, has a script of its own:
|
||||
|
||||
~/.local/share/Steam/steamrt64/steamwebhelper.sh
|
||||
|
||||
Both are patched where both are there, so switching clients keeps autoscroll.
|
||||
|
||||
Where that installation is depends on how Steam was installed:
|
||||
_~/.local/share/Steam_ for Valve's own package and Arch's,
|
||||
_~/.steam/debian-installation_ for Debian's, and the private tree of the
|
||||
@@ -150,11 +162,16 @@ it was given arguments for, and that one carries no arguments of anybody's. One
|
||||
wrong length costs the whole client package downloaded, extracted and installed
|
||||
again, and a client that quits at the end of it instead of coming up.
|
||||
|
||||
So where the comments cannot pay for the argument, or a client update has
|
||||
changed how the helper is started, nothing is written and the status screen
|
||||
says Steam is not patched. Nothing goes on Steam's launcher entry, its
|
||||
autostart entry or the shortcuts it writes for single games either, and Steam
|
||||
goes on repairing its own installation.
|
||||
The steamrt3 script has no comments to pay with. So it is copied aside as
|
||||
_steamwebhelper.sh.orig_, and a stub of the same size takes its place. The stub
|
||||
runs the copy with the argument added. Steam only checks the files it knows,
|
||||
and the copy is not one of them.
|
||||
|
||||
So where neither fits, or a client update has changed how the helper is
|
||||
started, nothing is written and the status screen says Steam is not patched.
|
||||
Nothing goes on Steam's launcher entry, its autostart entry or the shortcuts it
|
||||
writes for single games either, and Steam goes on repairing its own
|
||||
installation.
|
||||
|
||||
An installation patched by an earlier version, which appended where the
|
||||
comments were short, is written again to fit at the next apply, or taken back
|
||||
@@ -170,7 +187,8 @@ rather than the one from before the update.
|
||||
The official client is CEF rather than Electron. Installed through
|
||||
*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
|
||||
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.
|
||||
|
||||
# MIDDLE-CLICK PASTE
|
||||
|
||||
@@ -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"
|
||||
@@ -4,11 +4,11 @@
|
||||
#
|
||||
msgid ""
|
||||
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/"
|
||||
"issues\n"
|
||||
"POT-Creation-Date: 2026-08-16 00:00+0200\n"
|
||||
"PO-Revision-Date: 2026-08-16 00:00+0200\n"
|
||||
"POT-Creation-Date: 2026-09-24 00:00+0200\n"
|
||||
"PO-Revision-Date: 2026-09-24 00:00+0200\n"
|
||||
"Last-Translator: Felitendo\n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de\n"
|
||||
@@ -94,36 +94,32 @@ msgstr "Beenden"
|
||||
msgid "Press any key to continue..."
|
||||
msgstr "Beliebige Taste drücken …"
|
||||
|
||||
msgid "One moment..."
|
||||
msgstr "Einen Moment …"
|
||||
|
||||
#. Settings
|
||||
msgid "Electron and CEF applications"
|
||||
msgstr "Electron- und CEF-Anwendungen"
|
||||
msgid "Turn off middle-click paste"
|
||||
msgstr "Mittelklick-Einfügen abschalten"
|
||||
|
||||
msgid "Chromium-based browsers"
|
||||
msgstr "Chromium-basierte Browser"
|
||||
msgid ""
|
||||
"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"
|
||||
msgstr "Flatpak-Anwendungen"
|
||||
msgid "Cover new applications"
|
||||
msgstr "Neue Anwendungen abdecken"
|
||||
|
||||
msgid "Snap applications"
|
||||
msgstr "Snap-Anwendungen"
|
||||
msgid "Applications installed later get autoscroll on their own."
|
||||
msgstr "Später installierte Anwendungen bekommen Autoscroll von selbst."
|
||||
|
||||
msgid "Programs that start themselves at login"
|
||||
msgstr "Programme, die sich beim Anmelden selbst starten"
|
||||
msgid "More Chromium arguments"
|
||||
msgstr "Weitere Chromium-Argumente"
|
||||
|
||||
msgid "Spotify"
|
||||
msgstr "Spotify"
|
||||
msgid "Passed to every application along with the autoscroll one."
|
||||
msgstr "Gehen zusammen mit dem Autoscroll-Argument an jede Anwendung."
|
||||
|
||||
msgid "Turn off KDE's middle-click paste"
|
||||
msgstr "KDEs Mittelklick-Einfügen abschalten"
|
||||
|
||||
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 "Up/Down: select, Space: change, q: back"
|
||||
msgstr "Hoch/Runter: wählen, Leertaste: ändern, q: zurück"
|
||||
|
||||
msgid "Arguments separated by spaces, empty for none:"
|
||||
msgstr "Argumente mit Leerzeichen getrennt, leer für keine:"
|
||||
@@ -138,10 +134,8 @@ msgstr "Installierte Anwendungen werden durchgesehen …"
|
||||
msgid "No Chromium-based applications found."
|
||||
msgstr "Keine Chromium-basierten Anwendungen gefunden."
|
||||
|
||||
msgid "Anything not identified is left alone until it is turned on here."
|
||||
msgstr ""
|
||||
"Nicht erkannte Anwendungen bleiben unangetastet, bis sie hier eingeschaltet "
|
||||
"werden."
|
||||
msgid "Anything marked \"cannot tell\" stays off until it is turned on here."
|
||||
msgstr "Was „nicht erkennbar“ ist, bleibt aus, bis es hier eingeschaltet wird."
|
||||
|
||||
msgid "Autoscroll is off. This is what would be covered."
|
||||
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"
|
||||
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
|
||||
msgid "Autoscroll is on for %d applications."
|
||||
msgstr "Autoscroll ist für %d Anwendungen an."
|
||||
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -4,10 +4,10 @@
|
||||
#
|
||||
msgid ""
|
||||
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/"
|
||||
"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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -94,35 +94,30 @@ msgstr ""
|
||||
msgid "Press any key to continue..."
|
||||
msgstr ""
|
||||
|
||||
msgid "One moment..."
|
||||
msgstr ""
|
||||
|
||||
#. Settings
|
||||
msgid "Electron and CEF applications"
|
||||
msgid "Turn off middle-click paste"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chromium-based browsers"
|
||||
msgid ""
|
||||
"Stops middle click from pasting anywhere else. Starts with the next login."
|
||||
msgstr ""
|
||||
|
||||
msgid "Flatpak applications"
|
||||
msgid "Cover new applications"
|
||||
msgstr ""
|
||||
|
||||
msgid "Snap applications"
|
||||
msgid "Applications installed later get autoscroll on their own."
|
||||
msgstr ""
|
||||
|
||||
msgid "Programs that start themselves at login"
|
||||
msgid "More Chromium arguments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spotify"
|
||||
msgid "Passed to every application along with the autoscroll one."
|
||||
msgstr ""
|
||||
|
||||
msgid "Turn off KDE's middle-click paste"
|
||||
msgstr ""
|
||||
|
||||
msgid "Apply to newly installed applications"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional Chromium arguments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Up/Down: select, Space or Right: change, q: back"
|
||||
msgid "Up/Down: select, Space: change, q: back"
|
||||
msgstr ""
|
||||
|
||||
msgid "Arguments separated by spaces, empty for none:"
|
||||
@@ -138,7 +133,7 @@ msgstr ""
|
||||
msgid "No Chromium-based applications found."
|
||||
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 ""
|
||||
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
msgid "Search:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Type to search, Down: go to the list, Esc: back"
|
||||
msgstr ""
|
||||
|
||||
msgid "No matches."
|
||||
msgstr ""
|
||||
|
||||
#. Results
|
||||
msgid "Autoscroll is on for %d applications."
|
||||
msgstr ""
|
||||
|
||||
@@ -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"
|
||||
@@ -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
@@ -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"
|
||||
@@ -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 дн. назад"
|
||||
@@ -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"
|
||||
@@ -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 |
@@ -30,12 +30,17 @@ PathModified=%h/.guix-profile/share/applications
|
||||
|
||||
# Steam replaces the script that starts its interface on every client update,
|
||||
# which takes the patch with it. Where that installation lives depends on how
|
||||
# Steam was installed.
|
||||
# Steam was installed. The steamrt3 client has a script of its own.
|
||||
PathChanged=%h/.local/share/Steam/ubuntu12_64/steamwebhelper_sniper_wrap.sh
|
||||
PathChanged=%h/.steam/debian-installation/ubuntu12_64/steamwebhelper_sniper_wrap.sh
|
||||
PathChanged=%h/.var/app/com.valvesoftware.Steam/.local/share/Steam/ubuntu12_64/steamwebhelper_sniper_wrap.sh
|
||||
PathChanged=%h/.var/app/com.valvesoftware.Steam/data/Steam/ubuntu12_64/steamwebhelper_sniper_wrap.sh
|
||||
PathChanged=%h/snap/steam/common/.local/share/Steam/ubuntu12_64/steamwebhelper_sniper_wrap.sh
|
||||
PathChanged=%h/.local/share/Steam/steamrt64/steamwebhelper.sh
|
||||
PathChanged=%h/.steam/debian-installation/steamrt64/steamwebhelper.sh
|
||||
PathChanged=%h/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamrt64/steamwebhelper.sh
|
||||
PathChanged=%h/.var/app/com.valvesoftware.Steam/data/Steam/steamrt64/steamwebhelper.sh
|
||||
PathChanged=%h/snap/steam/common/.local/share/Steam/steamrt64/steamwebhelper.sh
|
||||
|
||||
Unit=middleclick-autoscroll.service
|
||||
|
||||
|
||||
+27
-10
@@ -15,6 +15,7 @@ MCA_ROUTES=()
|
||||
# flags - the launcher reads a flag file; write it there
|
||||
# desktop - no flag file; shadow or edit the desktop entry
|
||||
# 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
|
||||
# off - detected, but switched off
|
||||
#
|
||||
@@ -26,16 +27,16 @@ MCA_ROUTE=''
|
||||
mca_route() {
|
||||
local kind="$1" id="$2" prog="$3" packaging="${4:-native}"
|
||||
|
||||
if [[ $kind == steam ]]; then
|
||||
if mca_config_list_has Skip "$id" || [[ $CFG_STEAM != yes ]]; then
|
||||
if [[ $kind == steam || $kind == spotify ]]; then
|
||||
if mca_config_list_has Skip "$id"; then
|
||||
MCA_ROUTE=off
|
||||
else
|
||||
MCA_ROUTE=steam
|
||||
MCA_ROUTE="$kind"
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
if ! mca_kind_wanted "$kind" "$id" "$packaging"; then
|
||||
if ! mca_kind_wanted "$kind" "$id"; then
|
||||
[[ $kind == unknown ]] && MCA_ROUTE=unknown || MCA_ROUTE=off
|
||||
return
|
||||
fi
|
||||
@@ -59,7 +60,7 @@ mca_route() {
|
||||
# as it likes to be. It writes only what differs, which is what keeps the
|
||||
# watcher from chasing its own changes.
|
||||
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_ROUTES=()
|
||||
@@ -111,29 +112,29 @@ mca_apply() {
|
||||
steam_done=1
|
||||
fi
|
||||
;;
|
||||
spotify)
|
||||
(( spotify_done )) || mca_spotify_apply
|
||||
spotify_done=1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# 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.
|
||||
if [[ $CFG_STEAM == yes ]] && (( ! steam_done )) && mca_steam_installed; then
|
||||
if (( ! steam_done )) && mca_steam_wanted && mca_steam_installed; then
|
||||
mca_steam_apply
|
||||
fi
|
||||
|
||||
# Autostart entries. A Chromium application that starts itself at login
|
||||
# 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.
|
||||
if [[ $CFG_AUTOSTART == yes ]]; then
|
||||
mca_autostart_apply
|
||||
fi
|
||||
|
||||
# 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
|
||||
# nothing to check out here.
|
||||
mca_shortcuts_apply
|
||||
|
||||
[[ $CFG_SPOTIFY == yes ]] && mca_spotify_apply
|
||||
|
||||
# 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.
|
||||
# See kde.sh.
|
||||
@@ -272,12 +273,28 @@ mca_count_routes() {
|
||||
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() {
|
||||
case "$1" in
|
||||
flags) mca_msg "flag file" ;;
|
||||
desktop) mca_msg "launcher" ;;
|
||||
steam) mca_msg "Steam" ;;
|
||||
spotify) printf 'spotify-launcher' ;;
|
||||
unknown) mca_msg "cannot tell" ;;
|
||||
*) mca_msg "off" ;;
|
||||
esac
|
||||
|
||||
+9
-9
@@ -215,12 +215,6 @@ else
|
||||
MCA_C_GREEN='' MCA_C_YELLOW='' MCA_C_RED=''
|
||||
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
|
||||
# systemd unit, which has no terminal and logs to the journal anyway.
|
||||
MCA_QUIET=''
|
||||
@@ -228,8 +222,8 @@ MCA_QUIET=''
|
||||
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_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_note() { MCA_UI_NEEDS_ACK=1; [[ -n $MCA_QUIET ]] || printf '%s•%s %s\n' "$MCA_C_DIM" "$MCA_C_RESET" "$*"; }
|
||||
mca_bad() { printf '%s✘%s %s\n' "$MCA_C_RED" "$MCA_C_RESET" "$*" >&2; }
|
||||
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; }
|
||||
|
||||
@@ -349,12 +343,18 @@ mca_backup_name() {
|
||||
# copy was stored under. Existing backups are never overwritten: the first copy
|
||||
# is the pristine one, and a second apply must not replace it with an already
|
||||
# patched version.
|
||||
#
|
||||
# A symlink is kept as a symlink, so undo can put the link back. It is taken
|
||||
# again every time: this program never writes a link, so one is always pristine.
|
||||
mca_backup() {
|
||||
local file="$1" name
|
||||
name="$(mca_backup_name "$file")"
|
||||
|
||||
mkdir -p "$MCA_BACKUPDIR" 2>/dev/null || return 1
|
||||
if [[ ! -e "$MCA_BACKUPDIR/$name" ]]; then
|
||||
if [[ -L $file ]]; then
|
||||
rm -f -- "$MCA_BACKUPDIR/$name"
|
||||
cp -P -p -- "$file" "$MCA_BACKUPDIR/$name" 2>/dev/null || return 1
|
||||
elif [[ ! -e "$MCA_BACKUPDIR/$name" && ! -L "$MCA_BACKUPDIR/$name" ]]; then
|
||||
cp -p -- "$file" "$MCA_BACKUPDIR/$name" 2>/dev/null || return 1
|
||||
fi
|
||||
printf '%s\n' "$name"
|
||||
|
||||
+48
-7
@@ -101,6 +101,20 @@ mca_config_set() {
|
||||
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>
|
||||
# The per-application overrides are stored as space separated lists.
|
||||
mca_config_list_has() {
|
||||
@@ -136,13 +150,6 @@ mca_config_list_del() {
|
||||
|
||||
mca_config_load() {
|
||||
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_PASTE=no; mca_config_bool DisablePaste yes && CFG_PASTE=yes
|
||||
|
||||
@@ -155,6 +162,40 @@ mca_config_load() {
|
||||
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]
|
||||
# The full argument string that gets injected. Kept in one place so the flag
|
||||
# file writer and the desktop entry writer cannot drift apart.
|
||||
|
||||
+18
-21
@@ -486,6 +486,11 @@ _mca_script_target() {
|
||||
|
||||
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
|
||||
if [[ $line =~ $re_assign ]]; then
|
||||
name="${BASH_REMATCH[2]}"
|
||||
@@ -543,7 +548,8 @@ _mca_script_target() {
|
||||
fi
|
||||
return $?
|
||||
done
|
||||
done < "$script"
|
||||
done < <(grep -aE '^[[:space:]]*((export[[:space:]]+)?[A-Za-z_][A-Za-z0-9_]*=|exec[[:space:]])' \
|
||||
-- "$script" 2>/dev/null)
|
||||
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_NAMES=() # display 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
|
||||
|
||||
# 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
|
||||
# from a command line argument; it has its own module.
|
||||
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
|
||||
mca_detect_verdict "$prog"
|
||||
case "$MCA_VERDICT" in
|
||||
@@ -1108,6 +1118,7 @@ mca_scan() {
|
||||
|
||||
mca_cache_flush
|
||||
MCA_SCANNED=1
|
||||
mca_config_migrate
|
||||
}
|
||||
|
||||
# mca_has_flags_file <program>
|
||||
@@ -1218,28 +1229,14 @@ mca_flatpak_is_chromium() {
|
||||
return 1
|
||||
}
|
||||
|
||||
# mca_kind_wanted <kind> <id> [packaging]
|
||||
# Whether the current settings say this entry should be patched. Skip beats
|
||||
# everything, an explicit 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 <kind> <id>
|
||||
# Whether this entry should be patched. Skip beats everything, an explicit
|
||||
# include beats detection, and detection beats nothing.
|
||||
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 Include "$id" && return 0
|
||||
|
||||
case "$packaging" in
|
||||
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
|
||||
[[ $kind == app || $kind == browser ]]
|
||||
}
|
||||
+163
-60
@@ -31,14 +31,25 @@ mca_ui_term_restore() {
|
||||
MCA_TERM_SAVED=''
|
||||
}
|
||||
|
||||
# Runs an action with the terminal handed back to normal line mode, so anything
|
||||
# it prints or prompts for behaves the way a program expects.
|
||||
mca_ui_cooked() {
|
||||
mca_ui_term_restore
|
||||
"$@"
|
||||
local rc=$?
|
||||
mca_ui_term_raw
|
||||
return $rc
|
||||
# What the last action printed. The menu shows it under the status until the
|
||||
# next key, so nothing has to wait for a key on a screen of its own.
|
||||
MCA_UI_MSG=''
|
||||
|
||||
# Set while the menu runs. Its status block already says that running
|
||||
# applications need a restart, so the actions leave that line out there.
|
||||
MCA_IN_MENU=''
|
||||
|
||||
# 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
|
||||
@@ -178,7 +189,7 @@ mca_ui_status() {
|
||||
if mca_steam_installed; then
|
||||
if mca_steam_patched; then
|
||||
_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_C_YELLOW}$(mca_msg "not patched yet")${MCA_C_RESET}"
|
||||
else
|
||||
@@ -218,19 +229,16 @@ mca_ui_status() {
|
||||
# ---------------------------------------------------------------------------
|
||||
# Settings
|
||||
# ---------------------------------------------------------------------------
|
||||
# Format: Key|type|default|label-msgid
|
||||
# type is bool or text.
|
||||
# Only what is not about one application. Which applications get autoscroll is
|
||||
# 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=(
|
||||
"PatchApps|bool|yes|Electron and CEF applications"
|
||||
"PatchBrowsers|bool|yes|Chromium-based browsers"
|
||||
"PatchFlatpak|bool|yes|Flatpak applications"
|
||||
"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"
|
||||
"DisablePaste|bool|yes|mca_kde_available|Turn off middle-click paste|Stops middle click from pasting anywhere else. Starts with the next login."
|
||||
"WatchNewApps|bool|yes|mca_watch_available|Cover new applications|Applications installed later get autoscroll on their own."
|
||||
"ExtraFlags|text|||More Chromium arguments|Passed to every application along with the autoscroll one."
|
||||
)
|
||||
|
||||
_mca_is_true() {
|
||||
@@ -275,10 +283,9 @@ _mca_setting_display() {
|
||||
#
|
||||
# Returns 0 when something was changed, so the caller knows to re-apply.
|
||||
mca_ui_settings() {
|
||||
local count=${#MCA_SETTINGS[@]}
|
||||
local -a names=() types=() defaults=() labels=() values=()
|
||||
local spec name type default label locale i key frame row pad dirty=1 cursor=0
|
||||
local touched=0
|
||||
local -a names=() types=() defaults=() labels=() helps=() values=()
|
||||
local spec name type default check label help locale i key frame row pad
|
||||
local count width=0 dirty=1 cursor=0 touched=0
|
||||
|
||||
locale="$(mca_ui_locale)"
|
||||
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"
|
||||
|
||||
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")
|
||||
mca_msg_into "$locale" "$label"
|
||||
labels+=("$MCA_MSG_RESULT")
|
||||
(( ${#MCA_MSG_RESULT} > width )) && width=${#MCA_MSG_RESULT}
|
||||
mca_msg_into "$locale" "$help"
|
||||
helps+=("$MCA_MSG_RESULT")
|
||||
done
|
||||
count=${#names[@]}
|
||||
|
||||
local title hint
|
||||
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"
|
||||
|
||||
local clearseq
|
||||
@@ -314,7 +326,7 @@ mca_ui_settings() {
|
||||
local marker selected="${MCA_C_BLUE}▸${MCA_C_RESET} "
|
||||
for i in "${!names[@]}"; do
|
||||
_mca_setting_display "${types[i]}" "${values[i]}"
|
||||
pad=$(( 46 - ${#labels[i]} ))
|
||||
pad=$(( width + 3 - ${#labels[i]} ))
|
||||
(( pad < 0 )) && pad=0
|
||||
if (( i == cursor )); then marker="$selected"; else marker=' '; fi
|
||||
printf -v row ' %s%s%*s %s' \
|
||||
@@ -322,6 +334,7 @@ mca_ui_settings() {
|
||||
frame+="$row"$'\n'
|
||||
done
|
||||
|
||||
frame+=$'\n'" ${helps[cursor]}"$'\n'
|
||||
frame+=$'\n'" ${MCA_C_DIM}${hint}${MCA_C_RESET}"$'\n'
|
||||
printf '%s' "$frame"
|
||||
|
||||
@@ -378,10 +391,14 @@ mca_ui_edit_text() {
|
||||
# turned on, and where a single application gets left out without having to
|
||||
# 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.
|
||||
mca_ui_apps() {
|
||||
local count key frame row pad i cursor=0 dirty=1 touched=0 locale
|
||||
local -a labels=() states=()
|
||||
local count key frame row pad i idx cursor=-1 dirty=1 touched=0 locale query='' needle
|
||||
local footer flines size rows height top=0
|
||||
local -a labels=() lower=() states=() matches=()
|
||||
|
||||
locale="$(mca_ui_locale)"
|
||||
|
||||
@@ -389,7 +406,12 @@ mca_ui_apps() {
|
||||
mca_msg_into "$locale" "Applications"; title="$MCA_MSG_RESULT"
|
||||
mca_msg_into "$locale" "Up/Down: select, Space: turn on or off, q: back"
|
||||
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"
|
||||
mca_msg_into "$locale" "Autoscroll is off. This is what would be covered."
|
||||
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_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_spotify="${s_on} ${MCA_C_DIM}(spotify-launcher)${MCA_C_RESET}"
|
||||
|
||||
local clearseq
|
||||
clearseq="$(clear 2>/dev/null)" || clearseq=$'\033[H\033[2J'
|
||||
@@ -421,8 +444,7 @@ mca_ui_apps() {
|
||||
count=${#MCA_IDS[@]}
|
||||
|
||||
if (( count == 0 )); then
|
||||
printf '\n %s\n' "$(mca_msg "No Chromium-based applications found.")"
|
||||
mca_pause
|
||||
MCA_UI_MSG="$(mca_msg "No Chromium-based applications found.")"
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -430,56 +452,132 @@ mca_ui_apps() {
|
||||
if (( dirty )); then
|
||||
mca_config_load
|
||||
mca_count_routes
|
||||
labels=(); states=()
|
||||
labels=(); lower=(); states=()
|
||||
for i in "${!MCA_IDS[@]}"; do
|
||||
labels+=("${MCA_NAMES[i]}")
|
||||
row="${MCA_NAMES[i],,}"
|
||||
lower+=("${row//ı/i}")
|
||||
states+=("${MCA_ROUTES[i]}")
|
||||
done
|
||||
dirty=0
|
||||
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'
|
||||
|
||||
local marker selected="${MCA_C_BLUE}▸${MCA_C_RESET} " shown
|
||||
for i in "${!labels[@]}"; do
|
||||
case "${states[i]}" in
|
||||
if (( cursor < 0 )); then marker="$selected"; else marker=' '; fi
|
||||
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" ;;
|
||||
unknown) shown="$s_cannot" ;;
|
||||
steam) shown="$s_steam" ;;
|
||||
flags) shown="$s_flags" ;;
|
||||
spotify) shown="$s_spotify" ;;
|
||||
*) shown="$s_desktop" ;;
|
||||
esac
|
||||
pad=$(( 34 - ${#labels[i]} ))
|
||||
pad=$(( 34 - ${#labels[idx]} ))
|
||||
(( pad < 0 )) && pad=0
|
||||
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'
|
||||
done
|
||||
(( count )) || frame+=" ${MCA_C_DIM}${nomatch}${MCA_C_RESET}"$'\n'
|
||||
|
||||
# Where the window is, in the row under it, when there is more.
|
||||
if (( count > height )); then
|
||||
frame+=" ${MCA_C_DIM}$(( top + 1 ))–$(( i )) / ${count}${MCA_C_RESET}"$'\n'
|
||||
else
|
||||
frame+=$'\n'
|
||||
# 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
|
||||
frame+=" ${MCA_C_YELLOW}${warn}${MCA_C_RESET}"$'\n'
|
||||
fi
|
||||
frame+=" ${MCA_C_DIM}${legend}${MCA_C_RESET}"$'\n'
|
||||
frame+=" ${MCA_C_DIM}${hint}${MCA_C_RESET}"$'\n'
|
||||
frame+="$footer"
|
||||
printf '%s' "$frame"
|
||||
|
||||
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
|
||||
up|k) cursor=$(( (cursor - 1 + count) % count )) ;;
|
||||
down|j) cursor=$(( (cursor + 1) % count )) ;;
|
||||
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
|
||||
up|k) cursor=$(( cursor - 1 )) ;;
|
||||
down|j) cursor=$(( cursor + 1 < count ? cursor + 1 : -1 )) ;;
|
||||
space|enter|right|left|l|h)
|
||||
case "${states[cursor]}" in
|
||||
case "${states[idx]}" in
|
||||
off|unknown)
|
||||
mca_config_list_del Skip "${MCA_IDS[cursor]}"
|
||||
mca_config_list_add Include "${MCA_IDS[cursor]}"
|
||||
mca_config_list_del Skip "${MCA_IDS[idx]}"
|
||||
mca_config_list_add Include "${MCA_IDS[idx]}"
|
||||
;;
|
||||
*)
|
||||
mca_config_list_del Include "${MCA_IDS[cursor]}"
|
||||
mca_config_list_add Skip "${MCA_IDS[cursor]}"
|
||||
mca_config_list_del Include "${MCA_IDS[idx]}"
|
||||
mca_config_list_add Skip "${MCA_IDS[idx]}"
|
||||
;;
|
||||
esac
|
||||
touched=1
|
||||
@@ -496,8 +594,9 @@ mca_ui_apps() {
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
mca_ui_menu() {
|
||||
local choice
|
||||
local choice line
|
||||
|
||||
MCA_IN_MENU=1
|
||||
mca_ui_term_raw
|
||||
trap 'mca_ui_term_restore' EXIT INT TERM
|
||||
|
||||
@@ -508,6 +607,13 @@ mca_ui_menu() {
|
||||
mca_head " $MCA_PRETTY"
|
||||
mca_ui_status
|
||||
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 ' [2] %s\n' "$(mca_msg "Re-apply everything")"
|
||||
printf ' [3] %s\n' "$(mca_msg "Applications")"
|
||||
@@ -525,13 +631,11 @@ mca_ui_menu() {
|
||||
|
||||
case "$choice" in
|
||||
1)
|
||||
MCA_UI_NEEDS_ACK=''
|
||||
if [[ $CFG_ENABLED == yes ]]; then
|
||||
mca_ui_cooked mca_do_disable
|
||||
mca_ui_run mca_do_disable
|
||||
else
|
||||
mca_ui_cooked mca_do_enable
|
||||
mca_ui_run mca_do_enable
|
||||
fi
|
||||
[[ -n $MCA_UI_NEEDS_ACK ]] && mca_pause
|
||||
;;
|
||||
# Not a plain apply: with the watcher running there is never
|
||||
# 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
|
||||
# edited, or Steam after it restored its own script.
|
||||
2)
|
||||
mca_ui_cooked mca_do_apply --rebuild
|
||||
mca_pause
|
||||
mca_ui_run mca_do_apply --rebuild
|
||||
;;
|
||||
3)
|
||||
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
|
||||
;;
|
||||
4)
|
||||
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
|
||||
;;
|
||||
q|Q) mca_ui_term_restore; trap - EXIT INT TERM; return 0 ;;
|
||||
|
||||
+40
-21
@@ -375,7 +375,7 @@ mca_desktop_apply() {
|
||||
[[ "$content" == "$(< "$src")" ]] && return 0
|
||||
|
||||
backup="$(mca_backup "$src")" || return 1
|
||||
if mca_write_if_changed "$src" "$content"$'\n'; then
|
||||
if _mca_entry_write "$src" "$content"$'\n'; then
|
||||
MCA_CHANGES=$(( MCA_CHANGES + 1 ))
|
||||
fi
|
||||
mca_ledger_add inplace "$src" "$backup"
|
||||
@@ -418,16 +418,36 @@ mca_desktop_apply() {
|
||||
# Neither can be shadowed from anywhere, so both are edited where they stand,
|
||||
# with the original kept.
|
||||
|
||||
# _mca_entry_patch_inplace <file> <gate: autostart|apps>
|
||||
# _mca_entry_write <file> <content>
|
||||
# Writes an entry edited in place, like mca_write_if_changed. A symlink is
|
||||
# replaced by the edited file instead of written through: it usually points at
|
||||
# a package's entry in /usr, which is not ours to change. Undo puts the link
|
||||
# back from the backup.
|
||||
_mca_entry_write() {
|
||||
local file="$1" content="$2" tmp
|
||||
|
||||
[[ -L $file ]] || { mca_write_if_changed "$file" "$content"; return; }
|
||||
|
||||
tmp="$(mktemp "$file.XXXXXX")" || return 2
|
||||
chmod --reference="$file" -- "$tmp" 2>/dev/null || chmod 644 -- "$tmp"
|
||||
|
||||
# A link into /usr/share/applications is trusted for where it points. A
|
||||
# copy on the desktop is only trusted by KDE when it can be run.
|
||||
chmod u+x -- "$tmp" 2>/dev/null || true
|
||||
|
||||
if printf '%s' "$content" > "$tmp" && mv -f -- "$tmp" "$file"; then
|
||||
return 0
|
||||
fi
|
||||
rm -f -- "$tmp"
|
||||
return 2
|
||||
}
|
||||
|
||||
# _mca_entry_patch_inplace <file>
|
||||
# One desktop entry that lives outside the XDG search path, edited where it is
|
||||
# because there is nowhere to shadow it from.
|
||||
#
|
||||
# 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.
|
||||
# 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.
|
||||
_mca_entry_patch_inplace() {
|
||||
local file="$1" gate="$2"
|
||||
local file="$1"
|
||||
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
|
||||
@@ -476,12 +496,8 @@ _mca_entry_patch_inplace() {
|
||||
|
||||
mca_desktop_is_browser && kind=browser || kind=app
|
||||
|
||||
if [[ $gate == autostart ]]; then
|
||||
[[ $CFG_AUTOSTART == yes ]] || return 0
|
||||
else
|
||||
id="${file##*/}"; id="${id%.desktop}"
|
||||
mca_kind_wanted "$kind" "$id" "$packaging" || return 0
|
||||
fi
|
||||
mca_kind_wanted "$kind" "$id" || return 0
|
||||
|
||||
content="$(_mca_desktop_transform "$file" "$MCA_MARK_INPLACE" \
|
||||
"$(mca_flags "$kind")")"
|
||||
@@ -490,7 +506,7 @@ _mca_entry_patch_inplace() {
|
||||
[[ "$content" == "$(< "$file")" ]] && return 0
|
||||
|
||||
backup="$(mca_backup "$file")" || return 0
|
||||
if mca_write_if_changed "$file" "$content"$'\n'; then
|
||||
if _mca_entry_write "$file" "$content"$'\n'; then
|
||||
MCA_CHANGES=$(( MCA_CHANGES + 1 ))
|
||||
fi
|
||||
mca_ledger_add inplace "$file" "$backup"
|
||||
@@ -503,7 +519,7 @@ mca_autostart_apply() {
|
||||
|
||||
for file in "$dir"/*.desktop; do
|
||||
[[ -f $file ]] || continue
|
||||
_mca_entry_patch_inplace "$file" autostart
|
||||
_mca_entry_patch_inplace "$file"
|
||||
done
|
||||
}
|
||||
|
||||
@@ -515,7 +531,7 @@ mca_shortcuts_apply() {
|
||||
|
||||
for file in "$dir"/*.desktop; do
|
||||
[[ -f $file ]] || continue
|
||||
_mca_entry_patch_inplace "$file" apps
|
||||
_mca_entry_patch_inplace "$file"
|
||||
done
|
||||
}
|
||||
|
||||
@@ -615,7 +631,7 @@ mca_prune_orphans() {
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
mca_revert_all() {
|
||||
local kind path detail
|
||||
local kind path detail backup
|
||||
|
||||
[[ -f $MCA_LEDGER ]] || return 0
|
||||
|
||||
@@ -631,12 +647,15 @@ mca_revert_all() {
|
||||
fi
|
||||
;;
|
||||
inplace)
|
||||
if [[ -n $detail && -f "$MCA_BACKUPDIR/$detail" ]]; then
|
||||
backup="$MCA_BACKUPDIR/$detail"
|
||||
if [[ -n $detail ]] && [[ -f $backup || -L $backup ]]; then
|
||||
if [[ -e $path ]] || [[ -d "$(dirname -- "$path")" ]]; then
|
||||
cp -p -- "$MCA_BACKUPDIR/$detail" "$path" 2>/dev/null \
|
||||
# A link goes back as a link, not written through.
|
||||
[[ -L $backup ]] && rm -f -- "$path"
|
||||
cp -P -p -- "$backup" "$path" 2>/dev/null \
|
||||
&& MCA_CHANGES=$(( MCA_CHANGES + 1 ))
|
||||
fi
|
||||
rm -f -- "$MCA_BACKUPDIR/$detail"
|
||||
rm -f -- "$backup"
|
||||
elif [[ -f $path ]]; then
|
||||
# No backup: the file did not exist before we wrote it.
|
||||
rm -f -- "$path"
|
||||
|
||||
+138
-45
@@ -9,6 +9,10 @@
|
||||
#
|
||||
# ~/.local/share/Steam/ubuntu12_64/steamwebhelper_sniper_wrap.sh
|
||||
#
|
||||
# The steamrt3 client, a beta for now, has a script of its own:
|
||||
#
|
||||
# ~/.local/share/Steam/steamrt64/steamwebhelper.sh
|
||||
#
|
||||
# Steam compares the installed files against its manifest at every start (by
|
||||
# size and timestamp, not by content) and restores whatever differs.
|
||||
# So the patch is written to look untouched: the bytes the flag costs are taken
|
||||
@@ -28,6 +32,10 @@
|
||||
# all: no autoscroll in the interface is a smaller thing than a client that
|
||||
# reinstalls itself.
|
||||
#
|
||||
# The steamrt3 script has no comments to give back. So it is copied aside, as
|
||||
# it is, and replaced by a stub of the same size that runs the copy with the
|
||||
# flag. See _mca_steam_stub.
|
||||
#
|
||||
# The file comes back on every client update, and the watcher re-applies the
|
||||
# patch when that happens.
|
||||
|
||||
@@ -60,24 +68,28 @@ mca_steam_roots() {
|
||||
done
|
||||
}
|
||||
|
||||
# The script to patch inside a Steam installation. Newer clients start the
|
||||
# helper through a wrapper inside the container runtime; older ones exec it
|
||||
# from steamwebhelper.sh directly, and that one forwards its arguments too.
|
||||
mca_steam_script() {
|
||||
local root="$1" f
|
||||
# The scripts to patch inside a Steam installation, one per client. The default
|
||||
# client starts the helper through a wrapper inside the container runtime;
|
||||
# older ones exec it from steamwebhelper.sh directly, and that one forwards its
|
||||
# arguments too. The steamrt3 client has its own. Both clients are patched
|
||||
# where both are there, so switching between them keeps autoscroll.
|
||||
mca_steam_scripts() {
|
||||
local root="$1" f found=1
|
||||
for f in \
|
||||
"$root/ubuntu12_64/steamwebhelper_sniper_wrap.sh" \
|
||||
"$root/ubuntu12_64/steamwebhelper.sh"
|
||||
do
|
||||
[[ -f $f && -w $f ]] && { printf '%s\n' "$f"; return 0; }
|
||||
[[ -f $f && -w $f ]] && { printf '%s\n' "$f"; found=0; break; }
|
||||
done
|
||||
return 1
|
||||
f="$root/steamrt64/steamwebhelper.sh"
|
||||
[[ -f $f && -w $f ]] && { printf '%s\n' "$f"; found=0; }
|
||||
return "$found"
|
||||
}
|
||||
|
||||
mca_steam_installed() {
|
||||
local root
|
||||
while IFS= read -r root; do
|
||||
mca_steam_script "$root" > /dev/null && return 0
|
||||
mca_steam_scripts "$root" > /dev/null && return 0
|
||||
done < <(mca_steam_roots)
|
||||
return 1
|
||||
}
|
||||
@@ -87,13 +99,17 @@ mca_steam_script_patched() {
|
||||
grep -q -- "$MCA_FEATURE" "$1" 2>/dev/null
|
||||
}
|
||||
|
||||
# Whether every script there is patched. One that is not is a client that
|
||||
# starts without autoscroll.
|
||||
mca_steam_patched() {
|
||||
local root script
|
||||
local root script found=0
|
||||
while IFS= read -r root; do
|
||||
script="$(mca_steam_script "$root")" || continue
|
||||
mca_steam_script_patched "$script" && return 0
|
||||
while IFS= read -r script; do
|
||||
mca_steam_script_patched "$script" || return 1
|
||||
found=1
|
||||
done < <(mca_steam_scripts "$root")
|
||||
done < <(mca_steam_roots)
|
||||
return 1
|
||||
(( found ))
|
||||
}
|
||||
|
||||
# _mca_steam_exec_line <script>
|
||||
@@ -163,6 +179,81 @@ _mca_steam_same_size() {
|
||||
(( $(wc -c < "$script") == $(printf '%s\n' "$content" | wc -c) ))
|
||||
}
|
||||
|
||||
# Where a stub keeps Steam's own script, and the line that runs it from there.
|
||||
MCA_STEAM_ORIG=.orig
|
||||
MCA_STEAM_STUB="exec \"\$0$MCA_STEAM_ORIG\" \"\$@\""
|
||||
|
||||
# _mca_steam_stub <script> <flags>
|
||||
# The stub on stdout, for a script with no comments to pay for the flags. It
|
||||
# is exactly as long as the script and runs Steam's own script, kept next to
|
||||
# it, with the flags added. That script hands its arguments on to the helper.
|
||||
# Steam only checks the files in its manifest, and the copy is not one of them.
|
||||
# Fails when the script does not hand its arguments on, has no #! line, or is
|
||||
# too short to hold the stub.
|
||||
_mca_steam_stub() {
|
||||
local script="$1" flags="$2" head body pad
|
||||
|
||||
[[ -n "$(_mca_steam_exec_line "$script")" ]] || return 1
|
||||
head="$(head -n 1 -- "$script")"
|
||||
[[ $head == '#!'* ]] || return 1
|
||||
|
||||
body="$MCA_STEAM_STUB $flags"
|
||||
pad=$(( $(wc -c < "$script") - $(printf '%s\n%s\n' "$head" "$body" | wc -c) ))
|
||||
(( pad >= 0 )) || return 1
|
||||
|
||||
# The bytes left over go into a comment line.
|
||||
printf '%s\n' "$head"
|
||||
if (( pad == 1 )); then
|
||||
printf '\n'
|
||||
elif (( pad > 1 )); then
|
||||
printf '#%*s\n' $(( pad - 2 )) ''
|
||||
fi
|
||||
printf '%s' "$body"
|
||||
}
|
||||
|
||||
# _mca_steam_is_stub <script>
|
||||
_mca_steam_is_stub() {
|
||||
grep -qF -- "$MCA_STEAM_STUB" "$1" 2>/dev/null
|
||||
}
|
||||
|
||||
# _mca_steam_text <script> <flags>
|
||||
# The patched script on stdout: from the comments if they can pay for the
|
||||
# flags, as a stub if not. Fails when neither keeps the size.
|
||||
_mca_steam_text() {
|
||||
local script="$1" flags="$2" out
|
||||
|
||||
if ! { out="$(_mca_steam_build "$script" "$flags")" \
|
||||
&& _mca_steam_same_size "$script" "$out"; }
|
||||
then
|
||||
out="$(_mca_steam_stub "$script" "$flags")" \
|
||||
&& _mca_steam_same_size "$script" "$out" || return 1
|
||||
fi
|
||||
printf '%s' "$out"
|
||||
}
|
||||
|
||||
# _mca_steam_write <script> <backup> <content>
|
||||
# Writes the patched script. <backup> is the untouched copy kept for undoing.
|
||||
_mca_steam_write() {
|
||||
local script="$1" backup="$2" content="$3"
|
||||
|
||||
# A stub needs Steam's script next to it before it can start anything.
|
||||
if [[ $content == *"$MCA_STEAM_STUB"* ]]; then
|
||||
cp -p -- "$backup" "$script$MCA_STEAM_ORIG" 2>/dev/null || return 1
|
||||
chmod +x -- "$script$MCA_STEAM_ORIG" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
if mca_write_if_changed "$script" "$content"$'\n'; then
|
||||
MCA_CHANGES=$(( MCA_CHANGES + 1 ))
|
||||
fi
|
||||
chmod +x -- "$script" 2>/dev/null || true
|
||||
|
||||
# Steam looks at when the file was last written as well as at how big
|
||||
# it is, and the copy taken before the edit still carries the original
|
||||
# timestamp. Putting it back costs nothing and removes the other half
|
||||
# of what the client would notice.
|
||||
touch -r "$backup" -- "$script" 2>/dev/null || true
|
||||
}
|
||||
|
||||
# _mca_steam_refresh_backup <script>
|
||||
# A client update brings a new version of the script, and the copy kept from
|
||||
# before it is no longer what putting it back means. Only ever done while the
|
||||
@@ -195,15 +286,18 @@ _mca_steam_settle() {
|
||||
# Nothing to compare against, so nothing can be said about the length.
|
||||
[[ -f $copy ]] || return 0
|
||||
|
||||
# Already the length Steam expects: the patch is a good one.
|
||||
(( $(wc -c < "$script") == $(wc -c < "$copy") )) && return 0
|
||||
|
||||
if out="$(_mca_steam_build "$copy" "$flags")" && _mca_steam_same_size "$copy" "$out"; then
|
||||
if mca_write_if_changed "$script" "$out"$'\n'; then
|
||||
MCA_CHANGES=$(( MCA_CHANGES + 1 ))
|
||||
# Already the length Steam expects: the patch is a good one. Unless it is
|
||||
# a stub that lost Steam's script next to it, and would start nothing.
|
||||
if (( $(wc -c < "$script") == $(wc -c < "$copy") )); then
|
||||
if _mca_steam_is_stub "$script" && [[ ! -f $script$MCA_STEAM_ORIG ]]; then
|
||||
cp -p -- "$copy" "$script$MCA_STEAM_ORIG" 2>/dev/null || true
|
||||
fi
|
||||
chmod +x -- "$script" 2>/dev/null || true
|
||||
touch -r "$copy" -- "$script" 2>/dev/null || true
|
||||
return 0
|
||||
fi
|
||||
|
||||
if out="$(_mca_steam_text "$copy" "$flags")" \
|
||||
&& _mca_steam_write "$script" "$copy" "$out"
|
||||
then
|
||||
mca_ledger_add steam "$script" "$name"
|
||||
return 0
|
||||
fi
|
||||
@@ -224,7 +318,7 @@ mca_steam_apply() {
|
||||
flags="$(mca_flags)"
|
||||
|
||||
while IFS= read -r root; do
|
||||
script="$(mca_steam_script "$root")" || continue
|
||||
while IFS= read -r script; do
|
||||
found=1
|
||||
|
||||
if mca_steam_script_patched "$script"; then
|
||||
@@ -234,31 +328,21 @@ mca_steam_apply() {
|
||||
|
||||
_mca_steam_refresh_backup "$script"
|
||||
|
||||
# Either the comments can pay for the flag or nothing is written.
|
||||
# A longer file is one Steam reinstalls itself over; a client update
|
||||
# that changed how the helper is started leaves no line to patch at
|
||||
# all. Both end here, and this script is what starts Steam's entire
|
||||
# interface, so leaving it alone is the only safe answer to either.
|
||||
if ! { out="$(_mca_steam_build "$script" "$flags")" \
|
||||
&& _mca_steam_same_size "$script" "$out"; }
|
||||
then
|
||||
# Either the file keeps its length or nothing is written. A
|
||||
# longer file is one Steam reinstalls itself over; a client
|
||||
# update that changed how the helper is started leaves no line
|
||||
# to patch at all. Both end here, and this script is what starts
|
||||
# Steam's entire interface, so leaving it alone is the only safe
|
||||
# answer to either.
|
||||
if ! out="$(_mca_steam_text "$script" "$flags")"; then
|
||||
mca_note "$(mca_msg "Steam starts its interface in a way this version cannot change without Steam noticing; leaving it alone.")"
|
||||
continue
|
||||
fi
|
||||
|
||||
backup="$(mca_backup "$script")" || continue
|
||||
if mca_write_if_changed "$script" "$out"$'\n'; then
|
||||
MCA_CHANGES=$(( MCA_CHANGES + 1 ))
|
||||
fi
|
||||
chmod +x -- "$script" 2>/dev/null || true
|
||||
|
||||
# Steam looks at when the file was last written as well as at how big
|
||||
# it is, and the copy taken before the edit still carries the original
|
||||
# timestamp. Putting it back costs nothing and removes the other half
|
||||
# of what the client would notice.
|
||||
touch -r "$MCA_BACKUPDIR/$backup" -- "$script" 2>/dev/null || true
|
||||
|
||||
_mca_steam_write "$script" "$MCA_BACKUPDIR/$backup" "$out" || continue
|
||||
mca_ledger_add steam "$script" "$backup"
|
||||
done < <(mca_steam_scripts "$root")
|
||||
done < <(mca_steam_roots)
|
||||
|
||||
(( found ))
|
||||
@@ -266,7 +350,9 @@ mca_steam_apply() {
|
||||
|
||||
# mca_steam_revert <script> <backup name>
|
||||
mca_steam_revert() {
|
||||
local script="$1" backup="$2"
|
||||
local script="$1" backup="$2" orig="$1$MCA_STEAM_ORIG" stub=1 tmp
|
||||
|
||||
_mca_steam_is_stub "$script" || stub=0
|
||||
|
||||
if [[ -n $backup && -f "$MCA_BACKUPDIR/$backup" ]]; then
|
||||
if [[ -e $script ]]; then
|
||||
@@ -274,14 +360,21 @@ mca_steam_revert() {
|
||||
chmod +x -- "$script" 2>/dev/null || true
|
||||
fi
|
||||
rm -f -- "$MCA_BACKUPDIR/$backup"
|
||||
return 0
|
||||
fi
|
||||
|
||||
elif (( stub )) && [[ -f $orig ]]; then
|
||||
# No backup, but a stub keeps Steam's own script right next to it.
|
||||
cp -p -- "$orig" "$script" 2>/dev/null || return 1
|
||||
else
|
||||
# No backup to fall back on, so take the flags back out of the exec line.
|
||||
[[ -f $script ]] || return 1
|
||||
local tmp
|
||||
tmp="$(mktemp "${script}.XXXXXX")" || return 1
|
||||
sed "s| $MCA_FLAG||g" "$script" > "$tmp" && mv -f "$tmp" "$script" || { rm -f "$tmp"; return 1; }
|
||||
chmod +x -- "$script" 2>/dev/null || true
|
||||
return 0
|
||||
fi
|
||||
|
||||
# The copy goes once the stub that ran it is gone.
|
||||
if (( stub )) && ! _mca_steam_is_stub "$script"; then
|
||||
rm -f -- "$orig"
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
@@ -56,7 +56,8 @@ mca_do_enable() {
|
||||
|
||||
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() {
|
||||
@@ -107,10 +108,12 @@ mca_do_apply() {
|
||||
|
||||
if (( rebuild )); then
|
||||
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
|
||||
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
|
||||
mca_ok "$(mca_msg "Already applied to %d applications." "$MCA_N_ON")"
|
||||
fi
|
||||
|
||||
Reference in new issue
Block a user