Skip to content

Conversation

@mtwebster
Copy link
Member

@mtwebster mtwebster commented Feb 25, 2025

  • Move from libgnomekbd, xapp for input switching
  • Read default layouts from locale1 service (syncs to /etc/keyboard/default)
  • Modernize settings
  • Modernize keyboard layout applet
  • Discontinue osk use of caribou*
  • support completion using ibus
  • review Cinnamon dependencies
  • review mintlocale input-method configuration
  • review cinnamon-settings-daemon modules
  • remove c-c-c region module
  • review cinnamon-screensaver

All related PRs:
https://github.com/pulls?q=is%3Aopen+is%3Apr+org%3Alinuxmint+head%3Amodernize-kb-layouts

Includes:

notes:

  • * cinnamon-screensaver continues to use caribou for its osk implementation
  • /usr/libexec/ibus-setup-sunpinyin from package ibus-sunpinyin is broken in python 3.10 and newer. ref: sunpinyin/sunpinyin@f299e0b

ref: linuxmint/wayland#14

@silverhadch
Copy link

How do we compile it and install it tho?

@pewgar
Copy link

pewgar commented Mar 15, 2025

the layouts tab still doesn't show up in the keyboard settings, terminal?

@mtwebster
Copy link
Member Author

the layouts tab still doesn't show up in the keyboard settings, terminal?

It should..
image

Are there any errors when running cinnamon-settings keyboard from a terminal? Did you build and install the cinnamon-desktop branch also?

@mtwebster
Copy link
Member Author

How do we compile it and install it tho?

In Mint you should be able to clone this repo, and build using dpkg-buildpackage, otherwise you use meson directly to build it. Honestly, if you're not already comfortable doing this sort of thing I would avoid this and wait, as there's a good chance you could make your system (temporarily, at least) unusable.

@silverhadch
Copy link

silverhadch commented Mar 16, 2025

@mtwebster
it produced an non functional Cinnamon both Sessions but thank God i used BTRFS and was back up running in a minute. (should really be the default or better selectable instead of manuall partitioning)

The Xorg session was missing the panel and the Wayland session crashed after 10 seconds and only showed the cursor.

@pewgar
Copy link

pewgar commented Mar 16, 2025

the layouts tab still doesn't show up in the keyboard settings, terminal?

It should.. image

Are there any errors when running cinnamon-settings keyboard from a terminal? Did you build and install the cinnamon-desktop branch also?

oh, dw im just a normie and for whatever reason said something stupid without having this installed. i'll wait for this to be added into the system

@mtwebster mtwebster force-pushed the modernize-kb-layouts branch 2 times, most recently from 6ed656c to 6998441 Compare March 31, 2025 13:07
@MagicBOTAlex
Copy link

Just donated 5 EUR (The website says 5$ though). Not much, since I normally don't contribute.

But hopefully Wayland on Mint soon! (I NEED FRACTIONAL SCALING)

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot reviewed 96 out of 100 changed files in this pull request and generated 2 comments.

Files not reviewed (4)
  • data/README.osk-layouts: Language not supported
  • data/cinnamon-osk-layouts.gresource.xml: Language not supported
  • data/cldr2json/test/data/fr-t-k0-android.xml: Language not supported
  • data/meson.build: Language not supported
Comments suppressed due to low confidence (1)

data/cldr2json/cldr2json.py:126

  • Consider correcting the spelling in the error message: 'explicitely' should be 'explicitly'.
raise KeyError("layout %s explicitely disabled in overrides" % locale)

Comment on lines +202 to +203
class LoadXKBMapplings(unittest.TestCase):
def test_dictionnary(self):
Copy link

Copilot AI Apr 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The class name 'LoadXKBMapplings' appears to be misspelled. Consider renaming it to 'LoadXKBMappings'.

Suggested change
class LoadXKBMapplings(unittest.TestCase):
def test_dictionnary(self):
class LoadXKBMappings(unittest.TestCase):

Copilot uses AI. Check for mistakes.


class LoadXKBMapplings(unittest.TestCase):
def test_dictionnary(self):
Copy link

Copilot AI Apr 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The method name 'test_dictionnary' contains a misspelling; 'dictionary' is likely the intended word.

Suggested change
def test_dictionnary(self):
def test_dictionary(self):

Copilot uses AI. Check for mistakes.
@pewgar

This comment was marked as spam.

@mtwebster mtwebster force-pushed the modernize-kb-layouts branch from 3510e2e to 83a5902 Compare May 5, 2025 17:32
mtwebster added a commit to linuxmint/cinnamon-screensaver that referenced this pull request May 21, 2025
mtwebster and others added 14 commits September 22, 2025 09:36
- Fix viewing layout from the applet menu
- Fix sorting, heading for the add layout dialog
- Fix syncing of keybindings between keyboard settings and xlet
  and various individual setting pages.
Multiple layouts can be defined here.
default layouts.

This reads from /etc/default/keyboard so is useful for Mint as
well as other distros, and keeps us from having to parse a text
file ourselves.
KeyboardManager when the layout list changes, not when a layout
gets activated.
clefebvre pushed a commit to linuxmint/cinnamon-control-center that referenced this pull request Sep 23, 2025
clefebvre pushed a commit to linuxmint/cinnamon-screensaver that referenced this pull request Sep 23, 2025
* Handle layout switching thru cinnamon, remove use of XApp.

ref: linuxmint/cinnamon#12758

* passwordEntry:  Always set a layout source.
@Fantu
Copy link
Contributor

Fantu commented Sep 23, 2025

On d/control I saw only remove of caribou gir and seems strange that is only deps changes with this very big PR.
From a very fast look I saw on 2 new files:
const { Clutter, GLib, GObject, Graphene, Meta, St } = imports.gi;
So seems at least add of gir1.2-graphene-1.0 is missed, but is possible other gir and/or python packages are missed which are things that are not detectable by build errors in a clean and minimal environment.
Unfortunately, however, I don't have time to do a thorough check on all the changes in this PR.

@mtwebster
Copy link
Member Author

gir1.2-graphene is a dependency in muffin's gir package, we've been using it in Cinnamon since 5.4:

Package: gir1.2-meta-muffin-0.0
Source: muffin
Version: 6.4.1
Architecture: amd64
Maintainer: Linux Mint <[email protected]>
Installed-Size: 532
Depends: libmuffin0 (= 6.4.1), gir1.2-atk-1.0, gir1.2-cairo-1.0, gir1.2-cdesktopenums-3.0, gir1.2-gdk-3.0 (>= 3.19.8), gir1.2-gl-1.0, gir1.2-gobject-2.0, gir1.2-graphene-1.0 (>= 1.9.3), gir1.2-gtk-3.0 (>= 3.19.8), gir1.2-json-1.0 (>= 0.13.2-1~), gir1.2-pango-1.0 (>= 1.2.0), gir1.2-pangocairo-1.0 (>= 1.2.0), gir1.2-xfixes-4.0, gir1.2-xlib-2.0

Another major removal was part of libxapp (KbdLayoutController that used libgnomekbd) - we still use XApp for other things so that dependency is unchanged.

@Fantu
Copy link
Contributor

Fantu commented Sep 23, 2025

Is important that all software have its build-deps and deps complete, I think it's one of the basic things to do, but if someone thinks it's unnecessary, just consider that there could be problems if you don't have the complete dependencies but "everything works" because there are required dependencies in other dependent or installed software. For example, if the dependency that has it stops using it and removes it, or if the software it has isn't co-installed in all cases.
Are things already happened.

@mtwebster
Copy link
Member Author

Fixed - c15d543

clefebvre pushed a commit that referenced this pull request Sep 23, 2025
- Support both xkcb layouts and input methods (IBus only so far)
- Support both Xorg and Wayland
- Replace libcaribou dependency with a native OSK
with IM completion for some IBUS engines and layout support
- Remove dependencies on libgnomekbd, libcaribou, xapp
- Switch to native settings (vs region panel in CCC)

See #12758
@clefebvre
Copy link
Member

Merged manually in master.

@pewgar
Copy link

pewgar commented Oct 19, 2025

Merged manually in master.

phew

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.