我当前的桌面环境是什么?

2023-11-22

如何了解我的桌面环境正在使用 Python?我喜欢结果是gnome or KDE要不然。


我在我的一个项目中使用了它:

    def get_desktop_environment(self):
        #From http://stackoverflow.com/questions/2035657/what-is-my-current-desktop-environment
        # and http://ubuntuforums.org/showthread.php?t=652320
        # and http://ubuntuforums.org/showthread.php?t=652320
        # and http://ubuntuforums.org/showthread.php?t=1139057
        if sys.platform in ["win32", "cygwin"]:
            return "windows"
        elif sys.platform == "darwin":
            return "mac"
        else: #Most likely either a POSIX system or something not much common
            desktop_session = os.environ.get("DESKTOP_SESSION")
            if desktop_session is not None: #easier to match if we doesn't have  to deal with caracter cases
                desktop_session = desktop_session.lower()
                if desktop_session in ["gnome","unity", "cinnamon", "mate", "xfce4", "lxde", "fluxbox", 
                                       "blackbox", "openbox", "icewm", "jwm", "afterstep","trinity", "kde"]:
                    return desktop_session
                ## Special cases ##
                # Canonical sets $DESKTOP_SESSION to Lubuntu rather than LXDE if using LXDE.
                # There is no guarantee that they will not do the same with the other desktop environments.
                elif "xfce" in desktop_session or desktop_session.startswith("xubuntu"):
                    return "xfce4"
                elif desktop_session.startswith('ubuntustudio'):
                    return 'kde'
                elif desktop_session.startswith('ubuntu'):
                    return 'gnome'     
                elif desktop_session.startswith("lubuntu"):
                    return "lxde" 
                elif desktop_session.startswith("kubuntu"): 
                    return "kde" 
                elif desktop_session.startswith("razor"): # e.g. razorkwin
                    return "razor-qt"
                elif desktop_session.startswith("wmaker"): # e.g. wmaker-common
                    return "windowmaker"
            if os.environ.get('KDE_FULL_SESSION') == 'true':
                return "kde"
            elif os.environ.get('GNOME_DESKTOP_SESSION_ID'):
                if not "deprecated" in os.environ.get('GNOME_DESKTOP_SESSION_ID'):
                    return "gnome2"
            #From http://ubuntuforums.org/showthread.php?t=652320
            elif self.is_running("xfce-mcs-manage"):
                return "xfce4"
            elif self.is_running("ksmserver"):
                return "kde"
        return "unknown"

    def is_running(self, process):
        #From http://www.bloggerpolis.com/2011/05/how-to-check-if-a-process-is-running-using-python/
        # and http://richarddingwall.name/2009/06/18/windows-equivalents-of-ps-and-kill-commands/
        try: #Linux/Unix
            s = subprocess.Popen(["ps", "axw"],stdout=subprocess.PIPE)
        except: #Windows
            s = subprocess.Popen(["tasklist", "/v"],stdout=subprocess.PIPE)
        for x in s.stdout:
            if re.search(process, x):
                return True
        return False
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我当前的桌面环境是什么? 的相关文章

随机推荐

  • xslt 仅在一个节点中将 \n 替换为

    嘿 我有一个节点 其中包含一条消息 例如 string1字符串2刺3 但是 当它渲染时 它会渲染所有一行 我如何将所有 n 替换为 s 我试过了 但我收到这个错误 加载样式表时出错 XSLT XPath 函数无效 我该怎么做呢 在您要处理的
  • Android使用buildozer编译错误

    我正在尝试编译一个 apk this one 使用构建器 但我不断收到下面的命令失败消息 我尝试过使用不同的 python 路径 重新安装 buildozer 使用不同的 buildozer 路径 从 Mac HD 编译 使用 sudo 编
  • Eigen - 将常量数组映射到动态向量

    我需要定义一个函数 它需要constC 数组并将其映射到Eigen地图 以下代码给我一个错误 double data 10 0 0 typedef Eigen Map
  • 在 WebView Google Tv 应用上处理方向键上的箭头键

    我已经构建了一个 Android 应用程序 它在 WebView 中加载 html 页面 并且工作正常 除了应该在方向键上发生的操作不起作用这一事实 如果我用其他键更改箭头的操作 它就会起作用 在 Web 浏览器中加载 html 页面工作正
  • 如何将 HTML 输入值数据类型更改为整数?

    我正在使用 jQuery 检索输入按钮提交的值 该值应该是一个整数 我想将其增加一并显示它 Getting immediate Voting Count down button id var countUp this closest li
  • Android 浏览器 - 当锚点聚焦时删除轮廓边框

    我在我的 Android 应用程序上使用一个加载外部页面的 webview 它有一些锚点 a 标签 当我按下它时 会出现黄色边框 我怎样才能防止它并删除这个边框 我尝试过以下技巧 jQuery a focus function this a
  • 在 Laravel 中创建可链接的方法

    我一直在尝试在 laravel eloquent 中创建自己的可链接方法 但我错过了一些东西 并且不确定什么 这听起来可能有点疯狂 但请看一下我下面的函数 以便更好地了解我想说的内容 class Post extends Eloquent
  • 寻找对我的线程安全、无锁队列实现的批评

    因此 经过一番研究后 我写了一个队列 它使用固定大小的缓冲区 因此它是一个循环队列 它必须是线程安全的 我已经尝试使其成为无锁的 我想知道它出了什么问题 因为这些事情我自己很难预测 这是标题 template
  • 如何从 jpeg 或 png 格式的字节数组在画布上绘制图像

    就像标题所说 我有一个表示图像内容的字节数组 可以是 jpeg 或 png 我想将其绘制在常规画布对象上
  • Application.Run() 和 Form.ShowDialog() 有什么区别?

    在我的应用程序中 我想首先显示登录表单 如果登录成功则显示主表单 目前我正在做这样的事情 var A new LoginForm if A ShowDialog DialogResult OK Application Run new Mai
  • Django 表单错误。没有任何 html 标签时出现错误

    我想在我的模板上获取非 html 版本的表单错误 默认情况下 错误被总结为 ul class errorlist 我想避免 无论如何 在不进行大量代码更改的情况下做到这一点 Django 1 7 中有两种新方法也可用于解决此问题 Form
  • 使用“__import__”从字符串变量导入模块给出的结果与普通导入语句不同

    我正在为嵌套 matplotlib MPL 库编写文档 个人 该库与 MPL 自己提供的文档不同 由感兴趣的子模块包提供 我正在编写 Python 脚本 希望能够在未来的 MPL 版本中自动生成文档 我选择了感兴趣的子模块 包 并希望列出它
  • 如何使用Java.sql.Connection.setNetworkTimeout?

    我遇到了 setNetworkTimeout 应该解决的确切问题Oracle 查询在 socket read 中卡住了几分钟 但我不知道这个方法的第一个参数需要是什么 提交 null 会导致 AbstractMethodError 异常 所
  • 将文本附加到输入字段

    我需要将一些文本附加到输入字段 input field id val input field id val more text
  • 每次运行应用程序时随机数生成器都会生成相同的数字[重复]

    这个问题在这里已经有答案了 我知道这个问题已经被多次提出 但这些解决方案都不适合我 首先我在我的方法中这样做了RandomNumGenerator items List
  • 使一些 DataGrid 单元格跨越多列

    好吧 我已经搜索了很长时间来解决这个问题 我正在为 WPF DataGrid 开发简单的打印系统 并设法使用 DataTable 打印具有统一单元格放置的表格 并将其设置为 DataGrid 的 ItemSource 然而 我需要some行
  • 使用 OpenCL memset() GPU 缓冲区的最快方法是什么?

    我正在使用 OpenCL 我需要memset 全局设备内存中的某个数组 CUDA 有一个memset 类似 API 函数 但 OpenCL 没有 我读this 我在那里找到了两种可能的替代方案 using memset 在带有一些暂存缓冲区
  • java中取消选中复选框

    在我的程序中 每当调用此方法时 我想取消选中所有复选框 有人可以解释为什么它不起作用吗 每当我调用此方法时 复选框仍处于选中状态 private void nextQuestionButtonActionPerformed java awt
  • Java 内存模型中的发生前规则

    我目前正在学习并发编程考试 不明白为什么这个程序的输出是43 为什么是x y 1之前执行过t start 我还应该解释一下我使用了哪些happens before规则 如果我理解程序顺序规则 线程中的每个操作发生在该线程中按程序顺序稍后出现
  • 我当前的桌面环境是什么?

    如何了解我的桌面环境正在使用 Python 我喜欢结果是gnome or KDE要不然 我在我的一个项目中使用了它 def get desktop environment self From http stackoverflow com q