Fix Dropdown issue

This commit is contained in:
2026-10-18 20:26:22 +02:00
parent 95f101c0c9
commit 673af1ae43
23 changed files with 2219 additions and 975 deletions

View File

@@ -75,6 +75,16 @@ window icon works without an installed `assets/` directory.
make translations
```
Adding or changing a translation, adding a language, and the checks around them
are described in [po/README.md](po/README.md). `scripts/i18n.sh` does the work and
is wired into the Makefile:
```bash
make pot # regenerate po/gkeymapper.pot from the sources
make i18n-check # pot, catalogs and the language list of the GUI
make i18n-status # per language: translated, fuzzy, untranslated
```
## Run
Normal:
@@ -105,8 +115,10 @@ window rewrites the same content instead of emptying the file.
Only one window is open at a time, and it is the one you just started: a new
start closes the instance that is already running — including one from an older
build — and then shows its own window, so a stale window can never stay next to a
fresh one. Row edits that were not saved are lost with the replaced window,
because saving is always explicit (`Save mappings`).
fresh one. The rows of the window it replaced come along, so an edit that was
typed but never saved is still there; an instance from an older build cannot hand
them over, and then the window shows the saved mappings. Saving itself stays
explicit either way: press `Save mappings`.
### Menu, tray icon and minimize to tray
@@ -122,12 +134,15 @@ configuration...`, `Options`, `Help` (also `F1`), `About` and `Quit` (`Ctrl+Q`).
(`System language`, or a fixed `de`/`en`/`es`/`fr`): it switches the window, the
menus and the tray menu right away — nothing to restart, and rows that were not
saved yet are kept.
* `Start with the session` opens the window when you log in. It writes the usual
autostart entry (`~/.config/autostart/gkeymapper.desktop`, starting the binary
that is running) and removes it again when you switch it off; an entry that the
desktop's own startup tool has disabled counts as off, too. Like the window
itself this is a convenience: the G keys do not need it, only the daemon has to
run (see `Running the daemon` below).
* `Start with the session` starts the window minimized in the tray when you log
in: it writes the usual autostart entry
(`~/.config/autostart/gkeymapper.desktop`, starting the binary that is running
with the `--start-hidden` argument) and removes it again when you switch it off;
an entry that the desktop's own startup tool has disabled counts as off, too. The
window then waits in the tray until its `Show`, and only a desktop that hosts that
icon can leave it hidden — one without a tray gets the window a few seconds after
login. Like the window itself this is a convenience: the G keys do not need it,
only the daemon has to run (see `Running the daemon` below).
`Minimize to tray` keeps gKeyMapper reachable from the panel: the window is
hidden instead of closed when you close or minimize it, and the tray icon's menu
@@ -340,7 +355,8 @@ src/keyrow.h # KeyRow (one per G key)
src/mappings.{h,cpp} # GUI glue: config file <-> row widgets
src/capturedialog.{h,cpp} # key-capture dialog
src/daemonclient.{h,cpp} # D-Bus client for the daemon (status/reload)
src/singleinstance.{h,cpp} # one GUI only: a new start closes a running instance
src/singleinstance.{h,cpp} # one GUI only: a new start replaces a running one,
# taking the rows of its window along (unsaved edits)
src/trayicon.{h,cpp} # tray icon: StatusNotifierItem + dbusmenu over GIO
src/settings.{h,cpp} # gui.conf (window preferences, e.g. minimize to tray)
src/help.{h,cpp} # help window
@@ -361,7 +377,8 @@ data/gkeymapper-uinput.conf # modules-load.d fragment for uinput
data/gkeymapper-daemon.service# systemd user unit (installed by make install)
data/dev.rager.gkeymapper.Daemon.service # D-Bus activation (session bus)
docs/daemon-plan.md # daemon plan (reference: g910-gkey-macro-support)
po/ # Translations (pot/po/mo targets)
po/ # Translations (pot/po/mo targets, po/README.md)
scripts/i18n.sh # extract/update/check/status/todo/new for the catalogs
Makefile # Build via pkg-config + gettext
.vscode/tasks.json # VS Code tasks for make
README.md