Skip to content

Comments

fix compatibility and indicator icon fix#742

Closed
kernalix7 wants to merge 724 commits intoRiey:developfrom
kernalix7:develop
Closed

fix compatibility and indicator icon fix#742
kernalix7 wants to merge 724 commits intoRiey:developfrom
kernalix7:develop

Conversation

@kernalix7
Copy link
Contributor

Summary

KDE Plasma 6.5.5 환경에서 kime-wayland 크래시 문제 수정
indicator 아이콘 문제 수정

Note

fix(wayland): Handle KeyState::Repeated for KDE Plasma 6.5.5

KDE Plasma 6.5.5에서 KWin이 keyboard grab을 v1에서 v10으로 업그레이드하면서
KeyState::Repeated (값 2)가 추가. 기존 코드에서는 이 값을
Released로 잘못 처리하여 크래시가 발생.

  • input_method_v1.rs, input_method_v2.rs에서 Repeated 상태 처리 추가

chore(wayland): Update dependencies

  • xkbcommon: 0.7.0 → 0.9.0
  • wayland-client: 0.29 → 0.29.5
  • wayland-protocols: 0.29 → 0.29.5

fix(indicator): Use tokio async I/O for KDE tray icon

ksni 0.3.3 업그레이드 후 KDE 시스템 트레이에서 아이콘이 표시되지 않고
업데이트되지 않는 문제를 수정.

  • std::os::unix::net → tokio::net 비동기 Unix 소켓 사용
  • assume_sni_available(true)로 DE 초기화 타이밍 처리

Wayland-client, zwp 등 대규모 리펙토링이 필요한 작업 제외 완료하였습니다.
해당 부분은 리펙토링 시 오류 지속 발생하여 api 변경 전 가장 최신 버전으로 올려놓았습니다.

Checklist

  • I have documented my changes properly to adequate places
  • I have updated the docs/CHANGELOG.md

Riey added 30 commits February 26, 2021 00:26
* Add `FlexibleComposeOrder` addon

* Update CONFIGURATION
* Check LANG env in kime-check

* Make check message more pretty
* Split kime-window

* Update release.yaml

* Update CHANGELOG

* Fix ci.yaml
* Update outdated docs

* Make desktop files

* Update CHANGELOG

* Update README
* Implement english layouts

* Add Colemak layout

* Change config order

* Fix colemak layout

* Optimize layout

* Update documents

* Rustfmt
* Revert "Remove gtk_put_event (Riey#348)"

This reverts commit c0ea545.

* Update doc

* Handling firefox edge case
* Remove git dependencies

* Remove markdownlint
…Riey#354)

* Using signal connect client's window instead of gdk_window_add_filter

For workarounding wayland and gtk4

* Update CHANGELOG
* Make deb compilable in arm64

* Improve build script

More parallel
Optional xim, wayland, check

* Fix sed error

* Set Korea mirror

* Update CHANGELOG

* Change dependencies README
* Integrate indicator again

* Make indicator process

* Revert indicator process

* Update documents

* Let indicator use ksni

* Update dependencies

* Update scripts

* Rustfmt

* Add missing changes

* Update versions
* Split input engine implementations

* Success cargo check

* Update C/C++ sources

* Fix preedit bug

* Update CHANGELOG

* Include commit_buf into frontend

* Move shift ignore to hangul engine

* Cleaning project structure

* Update some dependencies

* Update test code

* Fix hangul backend pass

* Move tests to kime-engine-core

* Change some versions
racakenon and others added 18 commits October 9, 2025 16:40
* Bookworm Dockerfiles ADDED

* Added Dockerfile for Ubuntu 24.04

* When Docker Build, Using legacy method.

Because Buildkit  have Error on now.
* Add openSUSE repository

* changelog

---------

Co-authored-by: Riey <creeper844@gmail.com>
* Fix opensuse repo as default

* Add .5.1 suffix to Qt6 input context plugin IID
* Update cargo dependency versions
- strum 0.24 → 0.26
- enumset 1.0 → 1.1
- num-derive 0.3 → 0.4
- xdg 2.2 → 2.5
- ctrlc 3.1 → 3.4
- fontdb 0.11 → 0.23
- criterion 0.4 → 0.8
- pretty_assertions 1.0 → 1.4
- Normalize version format in Cargo.toml files
- bitflags 1.2 → 2.10: add explicit derive macros
- nix 0.26 → 0.30: migrate RawFd to BorrowedFd
- strum 0.26 → 0.27

* Update unmaintained crates
- kime-check: ansi_term → owo-colors
- kime: daemonize → nix::unistd::daemon()

* add PID file locking with Flock

* EWOULDBLOCK error processing

segmentation error message

Co-authored-by: Riey <creeper844@gmail.com>
* Update and replace unmaintained crates with changelog

Update crate versions:
- x11rb 0.11 → 0.13
- xim 0.2 → 0.4
- image 0.24 → 0.25
- imageproc 0.23 → 0.26
- mio 0.7 → 1.0
- egui/eframe 0.20 → 0.33

Replace unmaintained crates:
- rusttype → ab_glyph (font rendering)
- mio-timerfd → timerfd-mio (mio 1.0 compatible)
- unic → unicode-properties (emoji detection)

API migrations:
- kime-xim: Use ab_glyph FontArc/PxScale instead of rusttype
- kime-wayland: Adapt to timerfd-mio API changes
  - TimerFd::new() instead of TimerFd::new(ClockId::Monotonic)
  - set_timeout_oneshot() instead of set_timeout()/disarm()
  - set_timeout_interval(interval, interval) signature change
- kime-candidate-window: Migrate to egui 0.33 API
  - ctx.input(|i| ...) closure pattern
  - ViewportCommand::Close instead of frame.close()
  - ViewportBuilder for window options
  - Arc<FontData> wrapper requirement
- kime-engine-dict: Use unicode_properties::UnicodeEmoji trait

* rustfmt

* Update deny.toml
  - Add NCSA license to allow list
  - Add license clarification for epaint_default_fonts

* adjust egui, xim for MSRV compatibility

- egui/eframe: 0.33 → 0.31 (egui 0.33 requires Rust 1.88, CI uses 1.86)
- imageproc: 0.26 → 0.25 (0.26 requires Rust 1.87)
- xim: 0.4 → 0.5 (0.4 has Feedback::Underline bug)

* Add Unicode-3.0 license to allow list

ICU crates (icu_collections, icu_normalizer, etc.) use Unicode-3.0 license
which is OSI-approved and compatible with GPL-3.0.

* migrate deny.toml
- cargo-deny v0.16+ format

* deny.toml change config

* deny.toml modify

* deny.toml modify 2

* deny.toml modify 3

* crates version config

* crates version config 2

* fix timerfd-mio API usage for timer handling

- Use disarm() directly instead of set_timeout_oneshot(Duration::ZERO)
- Handle timer.read() returning 0 in non-blocking mode (spurious wakeup)
- Add error logging when input_method_v2 fails before falling back to v1

* fix 2
disarm is call unwrap() so rollback to set_timeout_oneshot

* Update changelog (version)
* feat(indicator): Update ksni and deny.toml
* feat(ci): Uses cargo-deny-action@v2
62e56540 input method commit fix
KDE Plasma 6.5.5 upgraded wl_keyboard grab from version 1 to 10,
which introduces KeyState::Repeated (value 2). Previously, kime-wayland
only checked for KeyState::Pressed, causing Repeated events to be
incorrectly treated as Released, leading to crashes.

Changes:
- Handle KeyState::Repeated same as Pressed in input_method_v1/v2
- Only clear repeat timer and state on explicit KeyState::Released
- Update wayland-client/protocols 0.29 → 0.29.5
- Update xkbcommon 0.7.0 → 0.9.0

Fixes intermittent crashes on KDE Plasma 6.5.5
- Replace std::os::unix::net with tokio::net for async Unix socket I/O
- Convert try_terminate_previous_server to async function
- Use tokio::time::timeout for read/write timeouts
- Add assume_sni_available(true) to handle DE initialization timing

This fixes the issue where the tray icon was blank and not updating
on KDE after ksni 0.2 -> 0.3.3 upgrade. The blocking I/O was preventing
the async tray update signals from being processed properly.
- xkbcommon: 0.7.0 → 0.9.0
- wayland-client: 0.29 → 0.29.5
- wayland-protocols: 0.29 → 0.29.5
- itertools: 0.13 → 0.14
- imageproc: 0.25 → 0.26 (with text feature)
- strum: 0.26 → 0.27
- eframe: 0.31 → 0.33
- egui: 0.31 → 0.33
- bindgen: 0.69.4 → 0.72.1
- cbindgen: 0.26.0 → 0.29.2
@kernalix7
Copy link
Contributor Author

nix ci 환경 rustc 최신버전 가져오기 위해 rust-overlay 추가하여 업데이트 진행했습니다. (1.86 dependency로 인해 crates 버전 업데이트 불가한 상황 방지)

@kernalix7 kernalix7 changed the title fix KDE Plasma 6.5.5 compatibility and indicator icon fix fix compatibility and indicator icon fix Jan 22, 2026
BREAKING CHANGE: Complete rewrite of kime-wayland for wayland-rs 0.31+

Major changes:
- Migrate from Filter-based to Dispatch trait pattern (wayland-client 0.31)
- Update wayland-protocols to 0.32 with `unstable` feature for v1 protocol
- Add wayland-protocols-misc 0.3 for zwp_input_method_v2 and zwp_virtual_keyboard_v1
- Remove zwp-virtual-keyboard crate (now included in wayland-protocols-misc)
- Unify v1 and v2 input method handling in single state machine

Technical fixes:
- Add event_created_child! macro for ZwpInputMethodV1 opcode 0 (Activate event)
- Fix fd ownership in WlKeyboard::Keymap (wayland-client 0.31 provides OwnedFd directly)
- Handle KeyState::Repeated (wl_keyboard version 10+) for KDE Plasma 6.5.5
- Use Connection-based API instead of Display

Other dependency updates:
- xdg 2.5 -> 3.0 (API change: remove Result from BaseDirectories methods)
- quick-xml 0.27 -> 0.39 (API change: decode_and_unescape_value takes decoder())
@kernalix7
Copy link
Contributor Author

kernalix7 commented Jan 22, 2026

log 포함되어있어 기록 삭제 후 push 했더니 hash가 달라져서 이상하게 되었네요..ㅠ

@kernalix7
Copy link
Contributor Author

@Riey
어차피 중요한 정보는 아니고 제 home 디렉토리 경로만 나온거긴 한데 pr 삭제 해주실 수 있으시면 해주신다면 감사하겠습니다.

@Riey
Copy link
Owner

Riey commented Jan 22, 2026

@Riey 어차피 중요한 정보는 아니고 제 home 디렉토리 경로만 나온거긴 한데 pr 삭제 해주실 수 있으시면 해주신다면 감사하겠습니다.

삭제는 제가 할 수 있는게 아니고 GitHub 운영쪽에 문의를 넣으셔야 합니다. https://support.github.com/request

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.