2012-04-19 20 views
7

Tôi cần phải xác định chương trình trình quản lý cửa sổ nào đang chạy, trên Linux.Cách phát hiện nếu hệ điều hành Linux sử dụng môi trường KDE hoặc Gnome

Mã giả cho nó như thế nào sẽ được sử dụng:

if(WindowManagerOfOS.isKDE()){ 
     do.anyThing(); 
} 

Làm thế nào tôi có thể làm điều này? Thậm chí có thể không?

+1

Tôi không thể kiểm tra điều này trên máy tính của mình nhưng hãy thử xem những gì UIManager.getSystemLookAndFeelClassName() trả về một trong hai – Adam

+0

Liên quan: http://stackoverflow.com/questions/3376679/qt-how-to-detect-whether- a-application-is-running-on-gnome-or-kde –

Trả lời

10
System.getenv("XDG_CURRENT_DESKTOP") 

trả về "GNOME" trên máy của tôi. Hãy dùng thử trên hộp dựa trên KDE.

cũng

+0

Một người dùng có thể đã cài đặt, nhưng chỉ chạy một trong trường hợp cả hai biến môi trường sẽ có mặt. Bạn sẽ phải kiểm tra các tiến trình đang chạy. – Adam

+0

Tomaz, tôi sẽ sử dụng 'KDE_SESSION_VERSION' để kiểm tra điều này. Vấn đề là KDE không có Desktop ... –

+0

Tôi quên bình luận ... System.getenv ("XDG_CURRENT_DESKTOP") in null cho tôi trong Linux Mint 12 với bản địa KDE. –

1

Xem Câu trả lời chính thức là bạn đang không được phép chăm sóc. Cả hai máy tính để bàn đều tôn vinh các tiêu chuẩn hiện có. Cả hai đều có thể chạy phần mềm của nhau. Bạn đang cố gắng làm gì? Nếu đó là một dịch vụ cụ thể bạn đang tìm kiếm mà chỉ có một tàu phân phối theo mặc định, bạn nên thăm dò cho rằng thay vào đó.

+3

-1 Đây không phải là câu trả lời cho câu hỏi và phải là một nhận xét. –

+0

Tôi sẽ bỏ phiếu rằng đây là câu trả lời đúng. Có lẽ không phải là tốt nhất, nhưng nó hoạt động bởi vì đôi khi chúng ta cần phải nói "Đừng làm điều đó" khi mọi người muốn biết làm thế nào để "làm điều đó." –

+1

Có nhiều nơi mà mọi người quan tâm và nên biết, ví dụ đầu tiên nằm trong xdg-utils http://cgit.freedesktop.org/xdg/xdg-utils/tree/scripts/xdg-utils-common.in xem detectDE(), nó được sử dụng bởi xdg-su/xdg-terminal etc để tìm ra trình bao bọc sudo đồ họa nào của chúng ta nên được sử dụng. Ngoài ra còn có một số điều như thiết lập một hình nền vv mà không được bao phủ bởi bất kỳ api cố định hoặc tiêu chuẩn. Ứng dụng hình nền đa dạng chỉ hoạt động trong tập lệnh sau http://bazaar.launchpad.net/~peterlevi/variety/trunk/view/head:/data/scripts/set_wallpaper – simotek

Các vấn đề liên quan