You are not logged in.

#1 2026-03-07 17:53:34

5hridhyan
Member
Registered: 2025-12-25
Posts: 1,102

[SOLVED]frameless/QT behavior+indexing issue (qiq-git)

https://aur.archlinux.org/packages/qiq-git
interesting concept, it feels like it could directly replace my Rofi workflow, however I am experiencing two issues.

Env:
- Compositor: Hyprland
- Shell: zsh

1) UI behaviour on Hyprland
Qt frameless window behaviour seems inconsistent under Hyprland, I was able to partially stabilize it using compositor window rules:

windowrule {
    name = rof!-successor
    match:class = ^(qiq)$
    float = on
    pin = on
    stay_focused = on
    rounding = 0
    no_blur = on
    no_shadow = on
    border_size = 0
    force_rgbx = on
    center = on
    no_anim = on
}

and this mostly works and makes qiq behave like a HUD-style launcher, but occasionally focus or UI behaviour still feels inconsistent...

2) Command indexing behaviour
when opening qiq and immediately typing, ls
it launches `lshw` instead of executing the shell command.

Example behaviour:
- Start qiq
- Type `ls` and enter
- `lshw` gets launched

However:
- If I run another command first (e.g. `lsblk`)
- Without closing/clicking  escape on opened qiq window & type `ls`, then `ls` executes as expected.
it seems that initially qiq interprets `ls` as a desktop application entry (likely because `lshw.desktop` exists) and selects the first matching application instead of executing the shell command...

possibly related to how the application/command filter switching works.
Overall the idea and design philosophy are excellent, it feels like a promising Rofi alternative once these behaviours are ironed out... smile

Last edited by 5hridhyan (2026-03-08 16:05:49)

Offline

#2 2026-03-07 18:31:53

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 78,457

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

The default behavior is Qt::BypassWindowManagerHint
Does it help anything to either
1. export QT_WAYLAND_USE_BYPASSWINDOWMANAGERHINT=1
or
2. add
WMHacks=frameless
or
WMHacks=frameless,popup

to the config?


possibly related to how the application/command filter switching works.

Yes.
Starting to type initially switches to the application launcher and stays there until there's no match (then the input is tested as command or calculation)
With very short commands you'll run into some inevitable conflict ("ls -l" will do what you want, even if you'd still match some application as the heuristic decides that two tokens and the first being a real command means you want to run that)
Pressing tab to autocomplete the command would implicitly move to the command execution - I've currently no better idea how to handle this.

Offline

#3 2026-03-07 18:57:29

5hridhyan
Member
Registered: 2025-12-25
Posts: 1,102

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

Thank you for the suggestions.

I’ve tried both the environment variable and adding WMHacks to the config, the behavior persists: if I type an invalid command and hit escape, the window occasionally offsets itself toward the left corner, and sometimes to the top..., interestingly, switching workspaces seems to force a surface re-render/re-position that resets it to the center, it feels like a geometry calculation mismatch between Qt and Hyprland's XDG-shell implementation...

Edit:
Regarding indexing, pressing Tab after ls still cycles through the application filter (selecting lshw, etc.) rather than forcing a switch to command execution, so for now, I'll stick to the "two-token" heuristic (e.g., ls -l) which works perfectly.

Last edited by 5hridhyan (2026-03-07 18:58:21)

Offline

#4 2026-03-07 19:09:30

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 78,457

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

Regarding indexing, pressing Tab after ls still cycles through the application filter (selecting lshw, etc.)

Try the latest revision, the code needlessly entered external completion - which you likely don't have setup/working and thus is failing.
You want to look into setting up zsh completion, though (if you're using/have installed zsh - theoretically this could also work w/ bash's autocompletion system but I'd have to investigate how to leverage that)

Setting the window frameless on labwc removes the frame (unlike bypass and the environment variable makes the window not show up at all) but it's unable to control it's position afterwards (it can control the size) - any pattern to when it starts moving around?

Offline

#5 2026-03-08 05:41:28

5hridhyan
Member
Registered: 2025-12-25
Posts: 1,102

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

I ran an strace -f on the latest revision. The app isn't crashing; it's getting stuck in an exhaustive access() loop searching for icons, like it seems to be hitting every possible subdirectory in /usr/share/icons/hicolor and ~/.nix-profile/ for various plugins (like com.zamaudio.zamtube).

┌──(shridhyan@Aranya-Marjara)-[~]
└─$ strace -f -o qiq.trace qiq
^C
┌──(shridhyan@Aranya-Marjara)-[~]
└─$ tail -n 40 qiq.trace
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/emotes/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/emotes/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/filesystems/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/filesystems/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/intl/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/intl/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/mimetypes/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/mimetypes/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/places/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/places/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/status/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/status/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/chart/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/chart/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/code/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/code/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/data/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/data/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/form/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/form/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/image/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/image/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/io/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/io/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/media/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/media/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/navigation/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/navigation/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/net/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/net/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/object/com.zamaudio.zamtube.png", F_OK) = -1 ENOENT (No such file or directory)
135389 access("/home/shridhyan/.nix-profile/share/icons/hicolor/256x256@2/stock/object/com.zamaudio.zamtube.svg", F_OK) = -1 ENOENT (No such file or directory)
135389 --- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL} ---
135392 <... poll resumed> <unfinished ...>) = ?
135391 <... futex resumed>)             = ?
135390 <... ppoll resumed> <unfinished ...>) = ?
135392 +++ killed by SIGINT +++
135391 +++ killed by SIGINT +++
135390 +++ killed by SIGINT +++
135389 +++ killed by SIGINT +++

I think, like the new indexing logic is causing the icon/desktop file scan to block the main thread, on my system (with many audio plugins and Nix paths), this scan is so heavy that the UI never maps...

Last edited by 5hridhyan (2026-03-08 05:43:52)

Offline

#6 2026-03-08 05:48:45

5hridhyan
Member
Registered: 2025-12-25
Posts: 1,102

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

I've confirmed the hang persists even in a clean shell environment (zsh -f), the strace shows the app is still caught in a massive access() loop for icon paths (hitting ~/.local/share/icons/, ~/.nix-profile/, etc.) before the window maps. I think the new revision made the desktop file/icon indexing synchronous or way more aggressive, and with a large number of plugins installed, it never finishes the scan...

┌──(shridhyan@Aranya-Marjara)-[~]
└─$ zsh -f                     
Aranya-Marjara% strace -f -o qiq.trace qiq
^C
Aranya-Marjara% tail -n 40 qiq.trace
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/places/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/places/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/status/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/status/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/chart/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/chart/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/code/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/code/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/data/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/data/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/form/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/form/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/image/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/image/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/io/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/io/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/media/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/media/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/navigation/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/navigation/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/net/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/net/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/object/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/object/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/table/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/table/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/text/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/24x24@2/stock/text/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/256x256/actions/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/256x256/actions/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/256x256/animations/com.zamaudio.zamheadx2.png", F_OK) = -1 ENOENT (No such file or directory)
137526 access("/home/shridhyan/.local/share/icons/hicolor/256x256/animations/com.zamaudio.zamheadx2.svg", F_OK) = -1 ENOENT (No such file or directory)
137526 --- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL} ---
137529 <... poll resumed> <unfinished ...>) = ?
137528 <... futex resumed>)             = ?
137527 <... ppoll resumed> <unfinished ...>) = ?
137529 +++ killed by SIGINT +++
137528 +++ killed by SIGINT +++
137527 +++ killed by SIGINT +++
137526 +++ killed by SIGINT +++
Aranya-Marjara% 

Offline

#7 2026-03-08 07:44:42

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 78,457

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

There's no "new indexing logic", the UI would move on to a stringlistmodel on top of a pre-built stringlist (executable files) when you press tab on a single word - nothing else changed.

Qt will generally go through A LOT of icons when using theme icons¹ but (because of the deterministic icon list in your straces suggesting that this actually finished and) unless the process also runs one core at 100% this is way more likely related to the attempts to position a frameless window (something that's effectively not possible on wayland but by using proprietary side-channels for the specific compositor…)

As mentioned

seth wrote:

unlike bypass and the environment variable makes the window not show up at all

so rather make sure that environment isn't set anywhere.
I would probably have to look into bypassing that and write some hyprland/wlr specific code to make this happen.
https://gitlab.freedesktop.org/wayland/ … quests/264 was pushed a month ago (don't get fooled by the PR being 2½ years old, it's the second attempt, the entire discussion has been going for > 8 years… roll)
No idea whether this results in something universally adapted and useful.

¹ what will happen for the application list and (delayed) when using the filesystem completion (for file icons)
It's annoyingly inefficient but because of the filesystem cache also not *that* bad (as you can see, most accesses are just ENOENT and result in nothing)

Offline

#8 2026-03-08 08:12:10

5hridhyan
Member
Registered: 2025-12-25
Posts: 1,102

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

Oops! My Bad...

┌──(shridhyan@Aranya-Marjara)-[~]
└─$ printenv | grep QT_WAYLAND
QT_WAYLAND_DISABLE_WINDOWDECORATION=1
QT_WAYLAND_USE_BYPASSWINDOWMANAGERHINT=1
┌──(shridhyan@Aranya-Marjara)-[~]
└─$ unset QT_WAYLAND_USE_BYPASSWINDOWMANAGERHINT
qiq

Yes now the Window pops up, and the ls upon pressing tab correctly switches to commands!, nice:)


I remembered I was set it globally  in zsh, so I went and removed it, however, it now just runs and does ntg...
the process is there but does not show up...

┌──(shridhyan@Aranya-Marjara)-[~]
└─$ qiq
┌──(shridhyan@Aranya-Marjara)-[~]
└─$ pgrep qiq
190425
┌──(shridhyan@Aranya-Marjara)-[~]
└─$ hyprctl clients
Window 55b4ab955760 -> ~:
	mapped: 1
	hidden: 0
	at: 240,149
	size: 887,499
	workspace: -98 (special:scratchpad)
	floating: 1
	monitor: 0
	class: kitty
	title: ~
	initialClass: kitty
	initialTitle: kitty
	pid: 2177
	xwayland: 0
	pinned: 0
	fullscreen: 0
	fullscreenClient: 0
	overFullscreen: 1
	grouped: 0
	tags: 
	swallowing: 0
	focusHistoryID: 2
	inhibitingIdle: 0
	xdgTag: 
	xdgDescription: 
	contentType: none
	stableID: 18000002

Window 55b4ab9e9740 -> hyprctl clients:
	mapped: 1
	hidden: 0
	at: 9,50
	size: 1348,709
	workspace: 4 (4)
	floating: 0
	monitor: 0
	class: kitty
	title: hyprctl clients
	initialClass: kitty
	initialTitle: kitty
	pid: 190442
	xwayland: 0
	pinned: 0
	fullscreen: 0
	fullscreenClient: 0
	overFullscreen: 1
	grouped: 0
	tags: 
	swallowing: 0
	focusHistoryID: 0
	inhibitingIdle: 0
	xdgTag: 
	xdgDescription: 
	contentType: none
	stableID: 1800000b

Window 55b4ab9e6bc0 -> frameless/QT behavior+indexing issue (qiq-git) / AUR Issues, Discussion & PKGBUILD Requests / Arch Linux Forums — Zen Browser:
	mapped: 1
	hidden: 0
	at: 9,50
	size: 1348,709
	workspace: 1 (1)
	floating: 0
	monitor: 0
	class: zen
	title: frameless/QT behavior+indexing issue (qiq-git) / AUR Issues, Discussion & PKGBUILD Requests / Arch Linux Forums — Zen Browser
	initialClass: zen
	initialTitle: Zen Browser
	pid: 2538
	xwayland: 0
	pinned: 0
	fullscreen: 0
	fullscreenClient: 0
	overFullscreen: 1
	grouped: 0
	tags: 
	swallowing: 0
	focusHistoryID: 1
	inhibitingIdle: 0
	xdgTag: 
	xdgDescription: 
	contentType: none
	stableID: 18000007

Last edited by 5hridhyan (2026-03-08 08:17:49)

Offline

#9 2026-03-08 09:21:43

5hridhyan
Member
Registered: 2025-12-25
Posts: 1,102

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

I think I got a workaround:

alias qiq='QT_QPA_PLATFORM=xcb qiq'

yes it changes positions, also relocates upon switching workspaces, but it is not *strongly visible/noticeable... which is kinda good, and the pressing tab after ls changes to command but pressing tab another time it cycles with command.If it switched back to the application filter, it would be a seamless workflow. smile

Last edited by 5hridhyan (2026-03-08 09:35:50)

Offline

#10 2026-03-08 14:02:27

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 78,457

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

I think I got a workaround:

Using X11 is usually a good solution to problems with wayland wink
It's of course not exactly what you'd ideally want.

If it switched back to the application filter, it would be a seamless workflow

Escape will bring you back to the status page (you'd have to re-type ls if you so desire)

Offline

#11 2026-03-08 16:05:19

5hridhyan
Member
Registered: 2025-12-25
Posts: 1,102

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

Got it.
Hence Marking the thread as solved.
Thanks once again ^^

Offline

#12 2026-09-27 14:50:02

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 78,457

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

I'm just gonna hi-jack this tongue

1. qiq should meantime work on WLR environments as native client

2. unrelated: do you speak (read/write) Devanagari ?
Even mildly interested in qterminal?
You could do me a favor and look at https://github.com/lxqt/qterminal/issue … 5750862193 since the OP has gone somewhat silent.
It'll be required to compile https://archlinux.org/packages/extra/x8 … ermwidget/ w/ utf8proc enabled ("-DUSE_UTF8PROC=ON" should do, otherwise ccmake is your friend) and install and configure https://fonts.atipra.in/samaano.html as useful monospace font (because the variable width fonts won't work decently in any TE, regardless of the UTF8 range)

Then check whether Devanagari I/O works as expected (including extended chars, ie. diacritics) and report your findings (here or there)

Offline

#13 2026-09-27 16:15:16

5hridhyan
Member
Registered: 2025-12-25
Posts: 1,102

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

seth wrote:

qiq should meantime work on WLR environments as native client

Great.

unrelated: do you speak (read/write) Devanagari ?

Yeah, Hindi, Sanskrit...

Even mildly interested in qterminal?

No, not until now.

You could do me a favor

Sure.

You could do me a favor and look at https://github.com/lxqt/qterminal/issue … 5750862193 since the OP has gone somewhat silent.
It'll be required to compile https://archlinux.org/packages/extra/x8 … ermwidget/ w/ utf8proc enabled ("-DUSE_UTF8PROC=ON" should do, otherwise ccmake is your friend) and install and configure https://fonts.atipra.in/samaano.html as useful monospace font (because the variable width fonts won't work decently in any TE, regardless of the UTF8 range)

Got it.

Then check whether Devanagari I/O works as expected (including extended chars, ie. diacritics) and report your findings (here or there)

Okay.

Last edited by 5hridhyan (2026-09-27 18:28:15)

Offline

#14 2026-09-27 17:52:53

5hridhyan
Member
Registered: 2025-12-25
Posts: 1,102

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

image.png
I mean, as for the current state without rebuilding any "stock" package, and with the suggested font, it looks like this.

For example, like basic test:

printf '%s\n' \
'क कि की कु कू के कै को कौ' \
'अं अँ अः' \
'क़ ख़ ग़ ज़ फ़' \
'ड़ ढ़' \
'क्ष ज्ञ त्र श्र स्त्र प्र क्र ग्र द्व' \
'क्त त्त द्ध न्द्र ष्ट्र श्रे' \
'कर्म प्रश्न स्वतन्त्र'

on "कि" (line 1), instead of positioning the short-i matra (ि) to the left of क, the terminal renders the matra over a dotted-circle placeholder.
On the bottom line, "कर्म" renders literally as क + र् + म, with an explicit virama under र.

"प्रश्न" displays as प् + र + श् + न, and "स्वतन्त्र" renders as स् + व + त + न् + त् + र.

If I read/expect "कर्म प्रश्न स्वतन्त्र", the intended reading is roughly "karma prashna svatantra", but with the current rendering I end up reading the individual visible components instead, roughly as "k r ma pr sh na sva ta n t ra".

So it looks like the characters are being output, but the required Devanagari shaping/reordering and conjunct formation aren't happening correctly.
Will rebuild qtermwidget with utf8proc after Oct 9 and report the results on the GitHub issue.

Last edited by 5hridhyan (2026-09-27 18:51:02)

Offline

#15 2026-09-27 19:05:38

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 78,457

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

Thanks a lot already.

W/o utf8proc wcwidth is used and that reports wrong widths for the diacritic glyphs (the dotted circles) for sure.
That problem went away w/ utf8proc, I just can't say whether the result is properly combined Devanagari or just random lines on my screen smile

Pasting your text w/ utf8proc and Samaano results in
COioXNV.png

One of the things I don't understand are the unprocessed <09xx> UTF8 codepoints - any idea what that is?
(I suspect it to be locale related)

Offline

#16 2026-09-28 08:32:00

5hridhyan
Member
Registered: 2025-12-25
Posts: 1,102

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

I get it. But I think we should start using a different font IMO. Some characters actually look cut off, although that's probably a font issue.

For example, take the word `कर्म`. `क` is "ka" and `म` is "ma"; the `र्` in the middle provides the "r" sound. But for a Devanagari reader, rendering it as visibly separate `क र् म` isn't the same as rendering the properly shaped `कर्म`.

So I think there are actually two separate issues here: character/spacing width, and proper Devanagari shaping. The shirorekha (head line), along with the way the characters and marks join and align, is part of what makes the resulting word visually readable as intended...

regarding the `<09xx>` codepoints: I can't say for sure yet whether that's locale-related. Since those are the Unicode range for Devanagari, it looks like the characters are being exposed as their codepoints somewhere in the rendering path rather than being rendered/shaped as glyphs. I'd need to test this more systematically before saying what's causing it.
...

Last edited by 5hridhyan (2026-09-28 09:38:44)

Offline

#17 2026-09-28 13:39:56

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 78,457

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

Ah, interesting: र् produces "र<094d>" when pasting the glyphs in zsh, where as in bash I just get र् but pasting "कर्म" always results in "कर् म"
So that's in part the input handling, not necessarily the output.

कर्म shows as कर्म in sqriptor, saving that as karma.txt and cat'ing karma.txt however results in "कर् म" again - so there's probably some remaining (this is w/ utf8proc) issue in how extended characters are handled.

But thanks to you I now have a test case for an error that is not just weird lines - I basically speak Indian wink
नमस्ते

I assume the other Indian slangs will fall into the same category and benefit from the same fixes.
But we can test all sorts of stuff if you want and prefer.

Offline

#18 2026-09-28 14:17:19

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 78,457

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

The central token (and only extended character) shows up as https://unicodeplus.com/U+0930 + https://unicodeplus.com/U+094D and ends up as कर् म" in xterm, urxvt and alacritty.
Does it work as expected in any TE you're using?

Offline

#19 2026-09-28 15:15:01

5hridhyan
Member
Registered: 2025-12-25
Posts: 1,102

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

seth wrote:

कर्म shows as कर्म in sqriptor, saving that as karma.txt and cat'ing karma.txt however results in "कर् म" again - so there's probably some remaining (this is w/ utf8proc) issue in how extended characters are handled.

yikes

your welcome, and नमस्ते ^^

I assume the other Indian slangs will fall into the same category and benefit from the same fixes.

I doubt that, and I would also question your assumption :evillaugh:

But we can test all sorts of stuff if you want and prefer.

I tested kannada/Dravidian-language scripts and it is very different from Devanagari, and it was "worse" than I anticipated and I would have a hard time to actually explain what Im seeing the way Im doing with Hindi/Sanskrit, since the Issue was about Devanagari, we will look into that and when its "fixed" (hopefully) we will then move to Kannada, Tamil, Malyalam, Telagu, even though I only know Kannada in that list lol

Does it work as expected in any TE you're using?

I think we should discuss this in a new thread, I mean I was in ZSH while this thread started, and in this installation in bash.
https://i.ibb.co/23tQQjsy/image.png
So, this on kitty, which I use as my TE.
and the specific sentence "कर्म प्रश्न स्वतन्त्र"
here कर्म comes correctly
प्रश्न (prashna): "प्र" (pra) comes correctly but श्न (shna) comes out like  न (na) and श(sha) are overlapped/stacked incorrectly but kinda readable if fluent in reading, but that's not what a Devanagari reader expects over the "polished" श्न (shna)
स्वतन्त्र (svatantra): also same case स (sa) and व(va) gets overlapped and तन्त्र gets handled nice but not perfectly like त (ta) and a space, न (na) and त्र(tra) overlapped/incorrect cluster positioning...

Last edited by 5hridhyan (2026-09-28 16:40:26)

Offline

#20 2026-09-28 18:11:26

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 78,457

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

I think we should discuss this in a new thread

If you've a github account the upstream bug would be appropriate.
I just wanted to  raise qiq's visibility a bit wink

his on kitty, which I use as my TE …  here कर्म comes correctly

Well… not fair: https://kovidgoyal.net
tongue

I would have suspected this to be a ligature related issue (see eg. https://github.com/kovidgoyal/kitty/issues/5001 ), but https://github.com/lxqt/qterminal/issues/1048 makes that unlikely sad

also same case स (sa) and व(va) gets overlapped and तन्त्र gets handled nice but not perfectly like त (ta) and a space, न (na) and त्र(tra) overlapped/incorrect cluster positioning...

With what font?
kitty will also not be able to handle variable width fonts w/o glitches, https://github.com/kovidgoyal/kitty/issues/3701

For more reference (haven't read through it but looks interesting): https://github.com/kovidgoyal/kitty/issues/8533

Edit: about zsh, https://unix.stackexchange.com/question … ne-on-bash

Last edited by seth (2026-09-28 18:54:29)

Offline

#21 2026-09-28 18:56:46

5hridhyan
Member
Registered: 2025-12-25
Posts: 1,102

Re: [SOLVED]frameless/QT behavior+indexing issue (qiq-git)

If you've a github account the upstream bug would be appropriate.

Yeah, I have a GH account... got it.

With what font?

Samaano

kitty will also not be able to handle variable width fonts w/o glitches, https://github.com/kovidgoyal/kitty/issues/3701

and I agree the font choice may be contributing, so I'll test with a more traditional monospace Devanagari font as well.

Last edited by 5hridhyan (2026-09-28 19:08:35)

Offline

Board footer

Powered by FluxBB