XQuartz: người dùng / môi trường khi thực hiện xinit? (XMonad, xmodmap, v.v.)


2

Tôi đang chạy XMonad với XQuartz trên Macbook Prop Retina 11,3. Ngoại hình của tôi .xinitrcnhư sau:

[[ -f ~/.Xdefaults ]] && xrdb -load ~/.Xdefaults
export LANG="en_CA.UTF-8"
xmodmap /Users/xxxxxxx/.xmodmarc
cd $HOME
/Users/xxxxxxxx/Library/Haskell/bin/xmonad

Tôi đã nhận thấy rằng cả LANGxuất khẩu và xmodmapđang được gọi, nhưng tác dụng của chúng không còn tồn tại. Nếu tôi ném một số env >> tmp.txtvào đó tôi có thể thấy rằng đó là một môi trường khác với khi cuối cùng tôi đến một thiết bị đầu cuối và tôi nghi ngờ có lẽ ngay cả một người dùng khác đang gọi xinit.

Những câu hỏi của tôi

  • Người dùng hoặc môi trường nào thực sự gọi xinitkhi bạn khởi động XQuartz?
  • Đâu là nơi thích hợp để đặt xmodmapnó một lần và chỉ một lần, khi XQuartz được bắt đầu?
  • Làm cách nào để tôi lấy LANGtập hợp một lần và chỉ một lần, dưới dạng biến môi trường khi tôi khởi động XQuartz (Tôi cần nó để hỗ trợ unicode)

Cảm ơn bạn!


bạn có cd $HOMEtrong của bạn ~/.xinitrc? Nếu có, sau đó loại bỏ dòng đó. Ngoài ra, đặt exectrước cuộc gọi của bạn xmonad, như thế này : exec .../bin/xmonad. Ngoài ra, lưu ý rằng exportchỉ thay đổi môi trường của quy trình hiện tại quy trình con của quy trình hiện tại. Nó không có tác dụng đối với các tiến trình đã chạy, chẳng hạn như một thể hiện khác của thiết bị đầu cuối.
Alexej Magura

Câu trả lời:


2

Người dùng / env nào thực sự đang gọi xinitkhi bạn khởi động XQuartz?

Trong Linux, đây sẽ là người dùng mà bạn đã đăng nhập; Tôi nghi ngờ rằng nó có thể giống với Mac OS X. Đối với môi trường, bất kể môi trường hiện tại là gì khi bạn chạy xinit, đó sẽ là môi trường XQuartzchạy cùng, ngoại trừ các thay đổi đối với môi trường được thực hiện trong một trong các tệp XQuartzđọc khi nó khởi động

Tôi nên đặt ở đâu xmodmapđể nó được gọi một lần và chỉ một lần, khi XQuartz được bắt đầu?

Để tạo bản đồ / bảng tùy chỉnh của riêng bạn và lưu nó trong tệp cấu hình, hãy chạy:

xmodmap -pke > ~/.Xmodmap

Thực hiện các thay đổi mong muốn ~/.Xmodmapvà sau đó kiểm tra cấu hình mới với:

xmodmap ~/.Xmodmap

Để kích hoạt bảng tùy chỉnh của bạn khi bắt đầu Xorg, đó là XQuartz, hãy thêm các mục sau vào ~/.xinitrc

[ -s ~/.Xmodmap ] && xmodmap ~/.Xmodmap # you can also try using `[[ -s ~/.Xmodmap ]] && xmodmap ~/.Xmodmap`

Làm cách nào để tôi thiết lập LANG một lần và chỉ một lần, dưới dạng biến môi trường khi tôi khởi động XQuartz (Tôi cần nó để hỗ trợ unicode)

Để thiết lập LANG, chỉ cần thêm một trong những điều sau đây vào~/.xinitrc

[[ -z "$LANG" ]] && LANG=<VALUE> # only sets LANG, if LANG is empty
LANG=<VALUE> # sets LANG regardless of whether it is or is not empty

Thật không may, điều này đã không làm việc. Tôi đã có một .xinitrcmã tương tự. Tôi tin rằng vấn đề có liên quan bằng cách nào đó với môi trường xinitđang được gọi. Nếu tôi chạy whoamivào, .xinitrctôi nhận được đúng người dùng. Tuy nhiên, nếu tôi nhìn vào $ENVbên trong .xinitrc(bằng cách chạy echo "$ENV" >> /Users/.../tmp.txt) tôi thấy một môi trường khác so với khi cuối cùng tôi đáp xuống vỏ.
aaronlevin

@weirdcanada bạn đã kiểm tra các tài liệu cho XQuartz để xem nó có bao gồm loại vấn đề này không?
Alexej Magura
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.