Locale/input method issue with veloren snap

Hey there, I’m a bit stuck with a problem in the veloren snap.

...
Nov 27 09:28:53.934  WARN winit::platform_impl::platform::x11: Unsupported locale "C.UTF-8". Restoring default locale "C".    
Nov 27 09:28:54.046 ERROR veloren_voxygen: VOXYGEN HAS PANICKED

Panic Payload: "Failed to open input method: PotentialInputMethods {\n    xmodifiers: Some(\n        PotentialInputMethod {\n            name: \"@im=ibus\",\n            successful: Some(\n                false,\n            ),\n        },\n    ),\n    fallbacks: [\n        PotentialInputMethod {\n            name: \"@im=local\",\n            successful: Some(\n                false,\n            ),\n        },\n        PotentialInputMethod {\n            name: \"@im=\",\n            successful: Some(\n                false,\n            ),\n        },\n    ],\n    _xim_servers: Ok(\n        [\n            \"@im=ibus\",\n        ],\n    ),\n}"

Veloren uses winit for window creation. This panic happens in EventLoop::new, here.

Is this problem caused by the Unsupported locale or am I missing some support for input method(s)? Thanks a lot for any pointers!

Links

how about:

Thank you, I just tested this.
It now correctly recognizes my system locale (en_US.UTF-8) but still claims it is unsupported and panics:

Nov 27 10:38:29.306  WARN winit::platform_impl::platform::x11: Unsupported locale "en_US.UTF-8". Restoring default locale "C".    

I get similar results (just with C.UTF-8 instead of en_US.UTF-8) when I try to specify LANG/LC_ALL in environment as follows:

environment:
  LANG: C.UTF-8
  LC_ALL: C.UTF-8
1 Like

Related source: https://github.com/rust-windowing/winit/blob/cbeb51b43674c477ea03e97178694838ea26d8b2/src/platform_impl/linux/x11/ime/input_method.rs

Try workaround it by unsetting the XMODIFIERS environment variable, it may affect CJKV input method support, though…

Thank you, I added export XMODIFIERS="" to my launcher.sh (last entry in my command-chain) but it doesn’t seem to help:

Panic Payload: "Failed to open input method: PotentialInputMethods {\n    xmodifiers: Some(\n        PotentialInputMethod {\n            name: \"\",\n            successful: Some(\n                false,\n            ),\n        },\n    ),\n    fallbacks: [\n        PotentialInputMethod {\n            name: \"@im=local\",\n            successful: Some(\n                false,\n            ),\n        },\n        PotentialInputMethod {\n            name: \"@im=\",\n            successful: Some(\n                false,\n            ),\n        },\n    ],\n    _xim_servers: Ok(\n        [\n            \"@im=ibus\",\n        ],\n    ),\n}"
PanicInfo: panicked at /root/.cargo/git/checkouts/winit-1a1fa59cd987d86e/7c8c5f2/src/platform_impl/linux/x11/mod.rs:132:17
Game version: 49e892b9 [2020-11-25]

I think I have a general lack of knowledge about how input methods work (and particularly with snaps). E.g. assuming a snap can work with ibus and fcitx, how does it generally detect which one to use, what libraries are needed in the snap, and which interfaces have to be connected?

Try unsetting it instead?

unset XMODIFIERS

Refer Compatibility with CJKV input method frameworks for some general info regarding input methods and snaps.

Most of the graphical interface frameworks rely on the following environment variables for input method support:

XMODIFIERS
GTK_IM_MODULE
QT_IM_MODULE
QT4_IM_MODULE
CLUTTER_IM_MODULE
3 Likes

Thank you so much, by reading through your post about CJKV input methods I realized that I accidentally removed desktop-launch from the command-chain :see_no_evil: Meaning, that probably the symbolic link setup for ibus’ socket path was missing (?) Anyways, thank you for your help @Lin-Buo-Ren and @ogra!

3 Likes

It’s a long standing bug without any fix unfortunately MyAARPMedicare

The work-around is to actually add the “qaa-Latn” entry in the Settings app, and then remove it.

  • Go to Settings > Time and Language > Language
  • Click Add a language.
  • Type qaa-Latn
  • Add the language.
  • Wait a bit.
  • Then remove it.