2010-07-31 118 views
4

我想知道如何使用Qt來做這樣的事情(source)。我查看了文檔,但找不到任何方法來檢查外部進程是否正在運行。Qt - 如何檢測應用程序是否在GNOME或KDE上運行?

if [ "$(pidof ksmserver)" ]; then 
    echo "KDE running." 
    # KDE-specific stuff here 
elif [ "$(pidof gnome-session)" ]; then 
    echo "GNOME running." 
    # GNOME-specific stuff here 
elif [ "$(pidof xfce-mcs-manage)" ]; then 
    echo "Xfce running." 
    # Xfce-specific stuff here 
fi 

回答

2

使用QProcess運行pidof foo,然後檢查它的stdout?如果這不是您想要的,請搜索/proc/

+0

正是我需要的,謝謝。 – 2010-08-13 00:40:10

4

通常你不應該這樣做。通常,如果您的應用程序根據桌面環境的不同而有所不同,那麼對於任何在它們之間切換的用戶來說,這將是一個令人討厭的驚喜。

xdg-open替代

使用DE無關的命令。優點:

  • 你不必親自編寫邏輯(XDG-utils的已經做了這一點)
  • 更方便用戶使用。它遵循用戶的實際偏好;許多用戶使用一個DE,但更喜歡來自不同DE的一些應用程序。
  • 支持其他的DE像XFCE,LXDE,統一等。

例如,而不是打開Firefox或者Konqueror中根據當前運行的DE的URL,將URL傳遞xdg-open將其打開在用戶的首選應用程序中。 (用戶可能是Chromium用戶。)不要爲GNOME和KDE硬編碼nautilusdolphin;改爲使用xdg-open打開路徑。

同樣,對於其他形式的與DE的交互,請嘗試使用Freedesktop specifications,而不是試圖猜測DE正在運行。標準存在moving files to the trash,添加系統托盤小程序,並將文件添加到最近的文件列表等。

相關問題