This probably arose with the move to kmcmplib in WASM, and as it was
never unit tested, we missed it. A simple signed vs unsigned issue.
Fixes: #14411
Test-bot: skip
Adjust two incorrect rules that caused backslash to be treated as an
escape in strings in syntax highlighting in .kmn language.
Fixes: #14988
Test-bot: skip
Build-bot: skip
chore(linux): replace deprecated `parse_version`
`pkg_resources` which contains `parse_version` is deprecated. Latest versions output a warning. This change uses the suggested replacement, `package.version.parse` which is available in all supported Ubuntu versions.
Fixes: #14957
fix(linux): use `ibus` command to restart ibus
When using Kubuntu exiting ibus sometimes used to hang (#10178). This was because ibus' `bus.exit()` doesn't shutdown properly (see https://github.com/ibus/ibus/issues/2816#issuecomment-3410473708). The recommended way is to use the `ibus exit` command. Since we no longer use the API we can directly use the `ibus restart` command, which this PR implements.
Fixes: #10178
`pkg_resources` which contains `parse_version` is deprecated. Latest
versions output a warning. This change uses the suggested replacement,
`package.version.parse` which is available in all supported Ubuntu
versions.
Fixes: #14957
test(linux): add regression tests for cli tools to autopkgtests 🍲
This change adds tests that execute km-package-install, km-package-list-installed, and km-package-uninstall and verifies the results. We have two sets of tests, for both gnome-shell and ibus-proper environments.
fix(linux): install schema during `keyman-config/build.sh install`
- improve documentation for installing km-config
- install schema during `keyman-config/build.sh install`
- remove schema during `keyman-config/build.sh uninstall`
- improve two scenarios when running `keyman-config/build.sh install`:
- on newer Ubuntu versions it's no longer possible to directly install Python packages, so we have to use a virtual environment. This change detects a virtual environment and installs into that.
- detect if we're running directly as `root` user instead of `sudo` and explicitly install into `/usr/local`.
- remove obsolete targets from Makefile. `make deb` no longer worked, so this change removes it. The other removed targets in the Makefile were just calling `./build.sh` and so are not really necessary and not used.
- update packaging documentation
Fixes: #14943
When using Kubuntu exiting ibus sometimes used to hang (#10178). This
was because ibus' `bus.exit()` doesn't shutdown properly
(see https://github.com/ibus/ibus/issues/2816#issuecomment-3410473708).
The recommended way is to use the `ibus exit` command. Since we no longer
use the API we can directly use the `ibus restart` command, which this
PR implements.
Fixes: #10178
fix(linux): fix installing keyboard in shared area 🍲
Installing into the shared area (`/usr/local/share`) requires `root` permissions, so in order to install into the shared area the user has to call `km-package-install` with `sudo`. But we also want to add the keyboard to the user's list of available keyboards so that he can switch to it. That needs to be done in the user context. However, when `sudo` ran the command in the user context, the environment variables to connect to the user's session dbus were not set.
This change fixes this by passing `DBUS_SESSION_BUS_ADDRESS` along with the `sudo -u <user>` call. Since `root` doesn't have this variable set (or at least not pointing to the user's dbus), we construct the dbus address based on the user's uid.
On newer Ubuntu versions (>=25.04) we also have to set `XDG_RUNTIME_DIR`, at least when running the autopkgtests.
Fixes: #14911
refactor(linux): remove no-longer-needed Python 3.7 code
Our oldest supported Ubuntu version is 22.04 which comes with Python 3.10, so we can remove the code for Python 3.7.
Add the v2.0 .model_info schema file, from api.keyman.com. Does not add
the schema to list of compiled schemas in common/types; this can be done
on an as-needed basis.
Test-bot: skip
Build-bot: skip
This improves two scenarios when running `keyman-config/build.sh install`:
- on newer Ubuntu versions it's no longer possible to directly install
Python packages, so we have to use a virtual environment. This change
detects a virtual environment and installs into that.
- detect if we're running directly as `root` user instead of `sudo`
and explicitly install into `/usr/local`.
Test-bot: skip
Make the float UI KeymanWeb link point to the home for KeymanWeb, and
https rather than http, and update the helpURL documentation to match
the current endpoint.
Test-bot: skip
Build-bot: skip