Tôi đã thêm một chuỗi đơn giản, nhưng nó sẽ không hoạt động. Làm cách nào để biết hệ điều hành (Ubuntu 12.10 với Unity) có thực sự đang tải tệp không?
Tôi đã thêm một chuỗi đơn giản, nhưng nó sẽ không hoạt động. Làm cách nào để biết hệ điều hành (Ubuntu 12.10 với Unity) có thực sự đang tải tệp không?
Câu trả lời:
Các định nghĩa soạn ( $XCOMPOSE
, ~/.XCompose
hoặc một tập tin dưới /usr/share/X11/locale
) được nạp bởi mỗi ứng dụng client, không phải do máy chủ X. Vì vậy, hãy chắc chắn rằng ứng dụng bạn đang thử nghiệm đang tải ~/.XCompose
. Bạn có thể xem những gì tập tin đang đọc với strace
:
$ strace -e open xterm |& grep Compose
open("/home/gilles/.XCompose", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/X11/locale/en_US.UTF-8/Compose", O_RDONLY) = 5
$ touch .XCompose
$ strace -e open xterm |& grep Compose
open("/home/gilles/.XCompose", O_RDONLY) = 5
Hầu hết các ứng dụng chỉ tải tệp khi chúng khởi động, vì vậy bạn sẽ phải khởi động lại ứng dụng nếu bạn thay đổi định nghĩa soạn thảo.
Nếu ứng dụng không tải các tệp này, có khả năng chúng không sử dụng 'Phương thức nhập X' (xim). Bạn có thể buộc các ứng dụng GTK hoặc QT sử dụng xim:
$ GTK_IM_MODULE=xim QT_IM_MODULE=xim strace -e open xterm |& grep Compose
Nếu điều này khắc phục được sự cố, thì bạn nên xem xét việc đặt các biến môi trường trên toàn cầu hoặc sử dụng alias
như một cách giải quyết trên cơ sở mỗi ứng dụng.