[PART 2] How to operate ~/.XCompose with QT applications?

Part 2 (the first part is available on the old forum).

First of all a big thanks for your help @bobbed!!

I have tested what you very nicely suggested me (namely creating a ~/.config/environment.d/keyboard.conf file with the following lines)

GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus
XCOMPOSEFILE=$HOME/.XCompose
XMODIFIERS=@im=ibus

and it has not unfortunately worked… I am wondering now if ibus is already launched… Because I have tried a configuration with the input method fcitx and I can remember that I could see that it was working on the task where I could select the language that I wanted to type.

Here you can find my configuration. Of course I have a .XCompose file in my home directory with combinations that are working with GTK applications.

$ inxi --no-host -Fxzc0
System:    Kernel: 5.4.64-1-MANJARO x86_64 bits: 64 compiler: gcc v: 10.2.0 Desktop: Xfce 4.14.2 Distro: Manjaro Linux 
Machine:   Type: Laptop System: Notebook product: N650DU v: N/A serial: <filter> 
           Mobo: Notebook model: N650DU serial: <filter> UEFI: American Megatrends v: 5.12 date: 02/26/2018 
Battery:   ID-1: BAT0 charge: 46.3 Wh condition: 46.3/62.2 Wh (75%) model: Notebook BAT status: Full 
CPU:       Topology: Quad Core model: Intel Core i5-7500T bits: 64 type: MCP arch: Kaby Lake rev: 9 L2 cache: 6144 KiB 
           flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 21607 
           Speed: 1600 MHz min/max: 800/3300 MHz Core speeds (MHz): 1: 1600 2: 1600 3: 1601 4: 1600 
Graphics:  Device-1: Intel HD Graphics 630 vendor: CLEVO/KAPOK driver: i915 v: kernel bus ID: 00:02.0 
           Device-2: Chicony Chicony USB2.0 Camera type: USB driver: uvcvideo bus ID: 1-6:2 
           Display: x11 server: X.org 1.20.8 driver: intel unloaded: modesetting resolution: <xdpyinfo missing> 
           OpenGL: renderer: Mesa Intel HD Graphics 630 (KBL GT2) v: 4.6 Mesa 20.1.7 direct render: Yes 
Audio:     Device-1: Intel 100 Series/C230 Series Family HD Audio vendor: CLEVO/KAPOK driver: snd_hda_intel v: kernel 
           bus ID: 00:1f.3 
           Sound Server: ALSA v: k5.4.64-1-MANJARO 
Network:   Device-1: Intel Wireless 8265 / 8275 driver: iwlwifi v: kernel port: f040 bus ID: 01:00.0 
           IF: wlp1s0 state: down mac: <filter> 
           Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet vendor: CLEVO/KAPOK driver: r8168 
           v: 8.048.03-NAPI port: e000 bus ID: 05:00.0 
           IF: enp5s0 state: up speed: 1000 Mbps duplex: full mac: <filter> 
Drives:    Local Storage: total: 1.14 TiB used: 633.45 GiB (54.4%) 
           ID-1: /dev/nvme0n1 vendor: Samsung model: SSD 960 EVO 250GB size: 232.89 GiB 
           ID-2: /dev/sda vendor: Seagate model: ST1000LM048-2E7172 size: 931.51 GiB 
Partition: ID-1: / size: 227.24 GiB used: 35.51 GiB (15.6%) fs: ext4 dev: /dev/nvme0n1p2 
           ID-2: /home size: 911.95 GiB used: 597.93 GiB (65.6%) fs: ext4 dev: /dev/sda2 
Swap:      ID-1: swap-1 type: file size: 8.00 GiB used: 780.1 MiB (9.5%) file: /swapfile 
Sensors:   System Temperatures: cpu: 63.5 C mobo: N/A 
           Fan Speeds (RPM): N/A 
Info:      Processes: 193 Uptime: 4h 54m Memory: 7.70 GiB used: 5.30 GiB (68.8%) Init: systemd Compilers: gcc: 10.2.0 
           Packages: 1530 Shell: Bash v: 5.0.18 inxi: 3.1.05

Here is the message that @bobbed published:

(Of course, this assumes you have the .XCompose file saved in your home folder.

install ibus (remove fctrx, uim or any other input framework. ibus is better because it shows the dead key symbols (like ') while I'm typing a combination, which really helps)
Set the following environment variables:

GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus
XCOMPOSEFILE=$HOME/.XCompose
XMODIFIERS=@im=ibus

reboot

In my experience, the most consistent way to set these environment variables is to store them as key=value pairs (just like above) in a .conf file (I call it keyboard.conf) and save it in $HOME/.config/environment.d/ for systemd to catch them. You may have to create the environment.d folder.

I set these variables using systemd because other places are usually trickier – .bashrc may not work if you don’t use bash, /etc/profile and /etc/environment require root access, Wayland won’t catch XOrg variables at all… Again, it’s a mess. But this seems to be the best working solution so far.

Hey @Killi,

I’m sorry it’s not working for you, man.

I have since moved to Arch, but I spun up a Manjaro VM here just to test it out, and the process worked.

I downloaded the latest Manjaro Gnome (20.1.1) ISO and installed with all options by default (only changed the keyboard layout to English US International with dead keys, of course). Then installed ibus, downloaded the .XCmopose file to the home folder and added the four lines to ~/.config/environment.d/keyboard.conf

I then rebooted, and all my XCompose combinations are working correctly in GTK and QT apps.

Sorry I can’t be of any more help… The only thing I’m missing from your process is setting the keyboard as Us Intl with dead keys. Maybe that’s the step that’s missing?

Hope that does something for you =).

Best,

Daniel

1 Like

Thanks a lot @bobbed for your patience and your nice answer!!

Ok, since I have configured new keyboard layouts, I have to find a way to make them work in IBUS in order to see if the linked ~/.XCompose configuration works…
I’ll look at this.
Thanks again!