-
Notifications
You must be signed in to change notification settings - Fork 79
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hỗ trợ native wayland. #44
Comments
Hiện tại wayland thiếu khá nhiều api quan trọng: theo dõi chuột, window
property, giả lập phím... Ibus cũng chưa hoạt động tốt với Surrounding text
và lookuptable. Nói chung trải nghiệm gõ sẽ kém hơn X11
…On Sun, Jun 9, 2019, 00:47 Hùng ***@***.***> wrote:
Mô tả lỗi
Hình như việc quyết định ứng dụng nào dùng chế độ nào dựa trên WM_CLASS
(classname của ứng dụng). Trên wayland dùng một thứ tương ứng là app_id.
Do đó sẽ có hai vấn đề xảy ra:
1. Bảng chọn chế độ hiện ra nhưng có thể sau đó sẽ bị đơ, không chọn
được bất kì thứ gì và không thể gõ văn bản tiếp, trừ khi giết ibus-daemon
hoặc chuyển engine
2. Dù có chọn được chế độ nhưng không có tác dụng.
Môi trường
- OS và version: Arch Linux
- Desktop: Sway (wayland)
- Phiên bản ibus: 1.5.20
- Phiên bản ibus-bamboo: 0.4.8
Thông tin thêm native wayland
Lỗi trên xảy ra với những ứng dụng native wayland mà mình test và đa số
những ứng dụng dùng xwayland. Ví dụ như firefox với MOZ_ENABLE_WAYLAND=1
hay liri-text sẽ gặp lỗi, còn chromium thì không.
- Để nhận biết session hiện tại có phải wayland hay không kiểm tra
biến XDG_SESSION_TYPE
- Để nhận biết ứng dụng nào là native wayland hay xwayland thì có thể
dùng một tool tên là xeye, nếu di chuột trong xeye mà cái mắt trong
xeye di chuyển thì ứng dụng đó đang chạy trên xwayland
app_id trên wayland
Theo thông tin từ r/wayland <https://www.reddit.com/r/wayland/> thì hiện
tại chưa có cách nào "tiêu chuẩn" để lấy app_id. Những cái app_id này
được compositor quản lý. Vd như dùng sway thì có thể lấy app_id bằng:
swaymsg -t get_tree
Vì chưa có cách nào tiêu chuẩn nên mình nghĩ issue này chưa giải quyết
được ngay. Hoặc nếu giải quyết thì lại phải tùy từng compositor của
wayland, nghe cái này giống như *hack* hơn là *solution* (mình nghĩ là
không nên theo hướng đó).
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#44?email_source=notifications&email_token=AGJER3CMUDO5Z37JDUGC7ODPZPWEZA5CNFSM4HWHYSFKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4GYMW75Q>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AGJER3GC2RAUEOBESOH2D2TPZPWEZANCNFSM4HWHYSFA>
.
|
cho mình hỏi, có cách nào để điều khiển engine, khiến engine chọn một chế độ gõ định trước từ shell không nhỉ? Nếu có thì mình nghĩ rằng có thể làm một gói work around cho sway (hoặc bất cứ compositor nào có IPC). |
OK, bản sau mình sẽ bổ sung option DefaultInputMode trong file config, nhận giá trị từ 1->7 tương ứng với 7 chế độ gõ và mặc định là 1 |
Mình thử subscribe tới event của sway rồi ghi đè phần default mode với mode tương ứng với cửa sổ đang focus. Lúc mình thử trên Gedit và firefox thì kết quả như mong đợi, nhưng mà phải ghi đè file config rất nhiều, và nếu chuyển cửa sổ liên tục thì có khả năng là ibus sẽ lỗi (do ghi đè config nên phải khởi động lại ibus để có hiệu lực). Còn trên ứng dụng QT thì khỏi gõ luôn @@. file script: #!/bin/sh
TMPFILE=/tmp/ibus-bamboo.config.json
WLCONFIGFILE=$HOME/.config/ibus-bamboo/mode.config
CONFIGFILE=$HOME/.config/ibus-bamboo/ibus-bamboo.config.json
CURENGINE=$(ibus engine 2> /dev/null)
while [ true ]; do
ID=$(swaymsg -t subscribe '["window"]' | jq -r ".container.app_id")
echo "======================="
echo "current id: $ID"
echo "current engine: $CURENGINE"
if [ "$ID" = "null" ]; then
continue
fi
if [ "$(ibus engine 2> /dev/null)" != "Bamboo" ]; then
continue
fi
MODE=$(cat $WLCONFIGFILE | grep $ID | cut -d ':' -f 2)
if [ -z "$MODE" ]; then
MODE=1
fi
echo $MODE
jq ".DefaultInputMode = $MODE" $CONFIGFILE > $TMPFILE
mv $TMPFILE $CONFIGFILE
cat $CONFIGFILE | grep DefaultInputMode
# ibus-daemon -rdx
ibus restart
wait
CURENGINE=$(ibus engine 2> /dev/null)
# ibus engine Bamboo
wait
if [ -z $CURENGINE ]; then
ibus engine Bamboo
fi
done file config cho wl io.liri.Browser: 1
io.liri.Terminal: 3
org.gnome.gedit: 1
firefox: 3 |
không cần restart ibus đâu, trước khi save file bạn chỉ cần chuyển ibus về xkb:us::eng là được
|
cái đó mình cũng đã thử và kết quả là set engine bị fail khá nhiều @@ thậm chí fail nhiều hơn cả khi restart |
bạn thử script này xem #!/bin/sh
TMPFILE=/tmp/ibus-bamboo.config.json
WLCONFIGFILE=$HOME/.config/ibus-bamboo/mode.config
CONFIGFILE=$HOME/.config/ibus-bamboo/ibus-bamboo.config.json
CURENGINE=$(ibus engine 2> /dev/null)
while [ true ]; do
ID=$(swaymsg -t subscribe '["window"]' | jq -r ".container.app_id")
echo "======================="
echo "current id: $ID"
echo "current engine: $CURENGINE"
if [ "$ID" = "null" ]; then
sleep 0.1;continue
fi
if [ "$(ibus engine 2> /dev/null)" != "Bamboo" ]; then
sleep 0.1;continue
fi
MODE=$(cat $WLCONFIGFILE | grep $ID | cut -d ':' -f 2 2> /dev/null)
if [ -z "$MODE" ]; then
MODE=1
fi
CURRENT_MODE=$(cat $CONFIGFILE | grep "DefaultInputMode" | awk '{print sub(/\d/,$0)}' 2> /dev/null)
echo "current mode: $CURRENT_MODE"
if [ "$CURRENT_MODE" = "$MODE" ]; then
sleep 0.1;continue
fi
echo "new mode: $MODE"
ibus engine xkb:us::eng
jq ".DefaultInputMode = $MODE" $CONFIGFILE > $TMPFILE
mv $TMPFILE $CONFIGFILE
ibus engine Bamboo
if [ "$(ibus engine 2> /dev/null)" != "Bamboo" ]; then
sleep 0.1;ibus engine Bamboo
fi
done
|
@ndgnuh Cho em hỏi đã có cách nào dùng ibus-bamboo trên sway được chưa ạ? Em đã thử cài ibus-bamboo-git từ aur, export ..., log out và log in lại. Kiểm tra htop thì ibus-daemon đã chạy. Set engine thủ công bằng ibus engine Bamboo nhưng vẫn không gõ được tiếng Việt trên sway. |
Dùng được nhưng sẽ không tốt bằng, bạn có thể sẽ phải cài môi trường từ sway (vì wayland có thể không source file Ngoài ra cũng có lỗi khác bạn của mình gặp, không gõ được trên một ứng dụng dù nó là xwayland (ứng dụng LyX), dù đã set môi trường đầy đủ. Trên X thì gõ vẫn ok. Nhưng cái này là vấn đề của bên IBus rồi, không phải riêng engine. Vấn đề của engine chỉ có cái set mode như trên nói thôi. |
Em đã set environment đầy đủ, source trực tiếp từ file config của shell khi log in, cũng có thử thêm trực tiếp vào /etc/environment. Vậy chắc là không dùng được trên wayland thật. Vì hiện tại em đang dùng fedora-firefox-wayland thì không gõ được tiếng Việt. Steam thì dù có X11 hay Wayland cũng đều không gõ đuợc. |
Theo mình hiểu, Wayland thực ra không phải một "server", nó là một giao thức (protocol). Tức là không có "một" Wayland nào nhất định cả, mà mỗi DE/WM (gọi chung là Wayland compositor) đều "tự lập trình lại" Wayland (dựa trên giao thức). Do đó một cái khẳng định theo kiểu "Abc (không) hoạt động trên Wayland" khả năng cao là thiếu chính xác. Đương nhiên Abc hoạt động trên GNOME Wayland thì cũng không thể nói đại diện rằng nó hoạt động trên Sway được. Tuy nhiên, vẫn có những thư viện như wlroots để tạo ra compositor (wlroot sẽ như một lớp tương thích chung) mà một số compositor dùng chung. Do đó việc hỗ trợ Native Wayland có thể sẽ đỡ nhọc hơn một tí. Dù sao thì lỗi "không gõ được" theo kiểu IBus không hoạt động là vấn đề của IBus, không phải của bộ gõ. Vấn đề của bộ gõ theo mình hiểu chỉ có "lấy được id của cửa sổ trên wayland", vì ứng dụng không chạy xwayland thì sẽ không có xclass, không có xclass thì Bamboo không biết dùng chế độ gì (thay vì mặc định). Phần backend để xử lý (preedit hoặc xóa chữ đi để chèn chữ có dấu) mình không rõ lắm nên không biết nó là của IBus hay của Bamboo, có thể là cả hai. |
@sontran94 hmm lạ nhỉ, mình cũng dùng Sway/Arch và gõ tiếng việt ok trên Firefox 84. Trước mình dùng |
Em cũng không rõ lí do tại sao. Update sway lên version mới nhất thì đã gõ được. Tuy nhiên không chuyển input bằng ibus-preference được. Chắc do swayvm. Phải tạo script thủ công và bind key thì mới switch được. Terminal thì không dùng đuợc ibus. |
@sontran94 bác dùng thử |
Bản 0.7.0 đã hỗ trợ lấy appId trên Wayland, tuy nhiên ibus vẫn chưa thể hiển thị bảng chọn chế độ gõ trên sway :/ |
Cố lên bác 🥇 :3 Mình nhét appid vào chỗ mấy cái xclass trong config là được đúng không? |
The truth is, wayland is not yet ready for input method =)))))
yep |
Bài này từ năm 2017 rồi, không biết cái 1. trong bài có cải thiện chưa, còn cái 3. có vẻ như wlroots làm trò gì đó tương tự là xong nhỉ? Mình cũng chỉ biết nó là một cái protocol chứ chưa biết bên trong nó có gì. Cái 2 thì ko liên quan lắm vì vốn cái 1 input method/cửa số của ibus trên x11 cũng lỗi lên xuống 😆 |
Chưa có gì tiến triển cả. Cơ bản thì giao thức wayland sử dụng khá giống X11, ứng dụng dùng Vấn đề là cả 2 protocol vẫn đang ở giai đoạn phát triển, thiếu nhiều tính năng (e.g. fcitx/fcitx5#206, wayland-protocols#40) và mỗi toolkit/compositor lại implement một version khác nhau. Qt dùng |
Xin chào mọi người, |
Đã hơn 1 năm rồi, không biết có thông tin mới gì không ạ? |
Mình confirm là dùng được bình thường nhé, mình đang dùng nó gõ reply này luôn. |
Bạn dùng ibus hay fcitx5 vậy |
Mình confirm đang dùng native Wayland Firefox và một số applications native khác hiện tại sử dụng ibus-bamboo bình thường. |
Mình hiện dùng opensuse tumbleweed với kde 5.27.7. |
Mình chạy $ /opt/brave.com/brave-nightly/brave-browser-nightly --enable-features=UseOzonePlatform --ozone-platform=wayland Còn mình chạy |
Mình nghĩ mọi người đang phấn khích với Wayland quá, mình cũng rất thích Wayland + Hyprland nhưng mình thấy Wayland vẫn chưa tới mức sử dụng hằng ngày như là người dùng Việt nam phổ thông xài Unikey trên Windows được. Tình hình hiện tại là có vẻ như upstream ibus vẫn chưa có nhiều tiến triển gì ở ibus/ibus#2182 và ở ibus/ibus#2256. Chúng ta tốt hết nên đợi họ làm xử lý xong rồi mới có thể đưa ra quyết định tiếp theo trong lúc đó thì các giải pháp mình hiện đang dùng để gõ tiếng việt hiện tại vẫn là
Việc gõ tiếng việt với Ibus-bamboo trên Wayland vẫn còn nhiều khó khăn, mình cũng có bị 1 số lỗi tương tự như các bạn và phải chuyển sang Fcitx5. Ngay cả khi mình dùng Fcitx5 thì cũng 1 số cái trắc trở và nhà phát triển cũng khuyến khích nếu có thể hãy sử dụng với XWayland. Sau cùng có lẽ các bạn nên làm quen với việc gõ tiếng việt trên Wayland hoặc là tạm thời từ bỏ Wayland và quay trở lại X11/Xorg. |
Đúng thế, mình nghĩ còn lâu lâu nữa mọi thứ mới chuyển qua WL. Trên Wayland thì có vẻ vấn đề với Nvidia được quan tâm hơn vấn đề nhập liệu. Sau một đêm ngồi mò đủ các kiểu để gõ tiếng được Việt trên Wayland, mình thấy rằng tình hình hiện tại khá là tệ nên mọi người cũng đừng cố chuyển sang WL làm gì. https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/39#next-steps |
Mình chuyển qua wayland dùng fcitx, hyprland 1 thời gian đang tính chuyển về lại X11. Cảm giác trải nghiệm hơi tệ
Kết luận: mình chuyển sang Wayland vì muốn có công nghệ mới, hệ thống tối giản, ít bloat, ... mà cuối cùng vẫn không bỏ được hết X11 hẳn, vẫn cần XWayland ở nhiều chỗ quá. Thành ra bây giờ Wayland bloat hơn cả hơn X11. Khởi động lâu hơn, không biết là do Wayland hay là do hyprland. Lại còn gánh thêm 1 ít bug nữa. |
Mình không biết ai đã nói cho bạn là Wayland sẽ "less bloat" hơn X11, mình thì nghĩ Wayland thiên hướng dễ duy trì dễ hiểu cho dev và bảo mật hơn, đối với mình thì trải nghiệm đọc code và tài liệu về Wayland tốt hơn X11. Với cả dùng từ bloat thì nó có phần hơi tiêu cực quá kiểu như là "tôi sử dụng phần mềm ít 2 tính năng hơn bạn nên với tôi phần mềm tôi tốt hơn phần mềm của bạn", có thể bạn không cần tính năng này nhưng người khác cần cũng là 1 điều tốt mà, như mình chẳng hạn mình không thể gõ tiếng việt với Ibus mà không có Xwayland. Khá là buồn khi trải nghiệm Wayland của bạn hơi tệ nhưng mình thì chưa bị crash trên Hyprland bao giờ cả. Khởi động lâu chắc do services nào đó ưu tiên chạy ngầm trước thôi, bạn có thể cho nó chạy sau hoặc giới hạn services chạy lại cũng được mà. Dù sao đi nữa thì developers Wayland cũng là con người, họ có những ưu tiên khác trong cuộc sống. Với mình thì họ làm việc vì sở thích trong suốt 16 năm qua cũng là 1 cái đáng tự hào rồi mà. Mình chắc là Wayland sẽ ổn định sớm và mọi người sẽ có daily driver trên Wayland 1 cách vui vẻ. |
Ừ mình tiêu cực quá thật. Mình nghĩ là phát triển mới từ đầu thì dev có khả năng bao quát spec hơn và code tối ưu hơn nên có tiềm năng cải thiện hiệu năng và giảm code dư thừa. Hyprland mình hay bị crash nhưng chủ yếu là trong lúc config. Lúc chạy thường có 1 lần hoặc 2 bị crash gì đó. |
Do bạn có thể gặp phải vấn đề không mong muốn với Wayland nên đôi khi khó chịu và tiêu cực chuyện thường ngày mà không sao cả. Bạn nói hơi lạc đề tí xíu nhưng mình sẽ theo vậy. Về vấn đề này thì:
Vậy đó, mình mong bạn sẽ có trải nghiệm Wayland vui vẻ hơn trong tương lai và sẽ có cái nhìn khác như mình. Đúng là có thể hiện tại Wayland không phải là plug and play, các trải nghiệm input method như Ibus và Ibus-bamboo hay screen shot, screen lock khá tệ nhưng mình nghĩ upstream sẽ sớm giải quyết thôi vấn đề chỉ còn là thời gian. Nếu bạn không muốn thì có thể tạm ở lại Xorg. Mình đang reply bạn vói Ibus-bamboo trên Hyprland với Edge backend X11! Wayland không tệ đến thế đâu. Ít nhất theo cảm nhận 1 người từng anti-Wayland như mình 💌 |
Mình muốn quay lại để nói rõ 1 số vấn đề về Ibus cũng như là Wayland. Căn bản không phải là các bạn không thể gõ Ibus trên Wayland được nhưng nó sẽ có những hạn chế nhất định. 1 số status bar sử dụng quản lý systray hiện đại Đây là 1 bảng tóm tắt các DE và WM có thể sử dụng Ibus nhưng không đáng kể. Mình sẽ thay đổi comment này theo thời gian. Các bạn hãy cân nhắc kỹ càng khi đưa ra các quyết định
Tóm lại là sẽ cần nhiều nỗ lực hơn nếu chúng ta muốn sử dụng Ibus + ibus-bamboo trên Wayland. |
**Summary** - add ibus-bamboo at v0.8.4 (https://github.com/BambooEngine/ibus-bamboo/releases/tag/v0.8.4-RC1) - known issue with Wayland native (see BambooEngine/ibus-bamboo#44)
Rất cảm ơn công sức của các bạn đã maintain 1 keyboard cho người Việt trên Linux !!! Chúc các bạn dev sức khỏe dồi dào và vẫn contribute cho project. |
Mình nghĩ chúng ta nên đóng báo cáo lỗi này lại. Căn bản là trên GNOME đã hỗ trợ Wayland v1 protocol như chúng ta đã thấy ibus-bamboo có thể gõ được trên Wayland. Phần còn lại có thể là phụ thuộc vào sự đóng góp từ upstream và có thể 1 phần của chúng ta nữa. Nhưng căn bản bất cứ ai sử dụng Wayland ở thời điểm hiện tại nên sử dụng KDE hay GNOME. Với lại báo cáo lỗi này nó cũng hơi lan man, bản thân mình khiến 1 phần của nó trở nên khó để đọc xin lỗi về điều đó nên mình sẽ cố gắng tổng hợp lại các ý chính cũng như vấn đề cốt lõi trong 1 báo cáo lỗi mới cảm ơn mọi người. |
**Summary** - add ibus-bamboo at v0.8.4 (https://github.com/BambooEngine/ibus-bamboo/releases/tag/v0.8.4-RC1) - known issue with Wayland native (see BambooEngine/ibus-bamboo#44) <!-- Info on what this pull request updates/changes/etc --> **Test Plan** - Install ibus and run "IBus Preferences" - Add Vietnamese - Bamboo from Input Method tab - Add "Keyboard Layouts" plugin/widge to see the input switch icon - Play around with language switch and many options from IBus Bamboo popup menu - Focus on text input from browser, terminal or other app - Type "xin chào các bạn" **Checklist** - [x] Package was built and tested against unstable
Mô tả lỗi
Hình như việc quyết định ứng dụng nào dùng chế độ nào dựa trên
WM_CLASS
(classname của ứng dụng). Trên wayland dùng một thứ tương ứng làapp_id
. Do đó sẽ có hai vấn đề xảy ra:Môi trường
Thông tin thêm
native wayland
Lỗi trên xảy ra với những ứng dụng native
wayland
mà mình test và đa số những ứng dụng dùngxwayland
. Ví dụ nhưfirefox
vớiMOZ_ENABLE_WAYLAND=1
hayliri-text
sẽ gặp lỗi, còn chromium thì không.XDG_SESSION_TYPE
wayland
hayxwayland
thì có thể dùng một tool tên làxeye
, nếu di chuột trongxeye
mà cái mắt trongxeye
di chuyển thì ứng dụng đó đang chạy trênxwayland
app_id trên wayland
Theo thông tin từ r/wayland thì hiện tại chưa có cách nào "tiêu chuẩn" để lấy
app_id
. Những cáiapp_id
này được compositor quản lý. Vd như dùngsway
thì có thể lấyapp_id
bằng:Vì chưa có cách nào tiêu chuẩn nên mình nghĩ issue này chưa giải quyết được ngay. Hoặc nếu giải quyết thì lại phải tùy từng compositor của
wayland
, nghe cái này giống như hack hơn là solution (mình nghĩ là không nên theo hướng đó).The text was updated successfully, but these errors were encountered: