定制 Linux GUI:从哪里开始? [关闭]

2024-03-19

我长期以来一直对开发适合我的需求和兴趣的操作系统用户界面感兴趣。当我年轻的时候,我疯狂地使用 Windows 的 Stardock 换肤工具。我喜欢开发自己的窗口样式和布局想法。从那时起,我就有了一种无法抓挠的痒。

  • 我对摆弄较低级别的内核操作并不是特别感兴趣,只是对表现方面感兴趣。我一直在考虑某种风格的 Linux。
  • 虽然我希望拥有一些自己创建的基本集成工具/应用程序,但我主要对基本窗口、工具栏、桌面和文件管理的演示感兴趣。
  • 如果可能的话,我不想被禁止使用现有的应用程序。例如,我对编写自己的网络浏览器没有兴趣,但能够将现有工具融入到设计中将是一个主要优势。
  • 我的想法有时非常直观,因此产生更复杂的透明效果和不寻常的窗口形状的能力将很有用。或多或少,能够重现 OS X 或 Windows 当前 UI 设计的图形保真度将是理想的。
  • 鼓励让我从空白屏幕开始并从头开始工作或包含基础知识的操作系统风格和工具。传统意义上的“桌面”概念不应该是强制性的。做不同事情的灵活性对我来说很重要。

我正在寻找什么:

我感兴趣的是哪些 Linux/OS 风格可能有意义,哪些工具/框架对于完成任务有用(Qt 似乎是这里的一个流行建议),以及如何/从哪里开始开发/测试此类的基本信息一个用户界面。我也有兴趣阅读人们可能开发的任何“个人”用户界面。

这是我的正常开发工作之外的兴趣,因此作为免责声明,如果我看起来很困惑,请原谅我的天真。欢迎纠正见解。

我意识到这是一个大问题,所以感谢那些花时间提出建议的人。


您想构建自己的DE(桌面环境)。常见的例子是 GNOME 和 KDE,尽管其中更流行。实际上,构建自己的 DE 曾经非常流行,并且经常创建专用的脚本工具。

您通常需要组合多个工具:窗口管理器、工具栏程序、桌面管理器(图标)、会话管理器,可能还有更多。其中只有窗口管理器是必需的(在 X 服务器内不运行任何 WM 通常没有任何意义),其他部分是可选的。您通常不会从头开始编写这些工具(这需要大量工作),而是使用已经可用的组件。

请注意,GNOME 和 KDE 实际上都包含这些元素(集成良好)。例如,GNOME 由一个窗口管理器组成(metacity), 工具栏 (gnome-panel)、桌面管理器(nautilus) 等等。如果需要,您可以将一个元素更改为另一个元素:它曾经很流行使用sawfish作为窗口管理器而不是metacity,保持所有其他元素完好无损。现在流行使用compiz代替metacity.

我以前用过FVWM http://fvwm.org/,这是一个窗口管理器,具有额外的(相当不错的)脚本功能,可用于创建工具栏、菜单和其他东西。很好的例子之一是FVWM-水晶 http://gna.org/projects/fvwm-crystal/,这是一个基于 FVWM 和其他一些工具构建的完整 DE,用 FVWM 脚本和 Python 混合编写。实际上,您只需打开 FVWM 的脚本控制台并键入命令即可在运行时更改任何类型的行为。如果您想从已经可用的东西开始,FVWM-Crystal 可能是一个很好的起点;如果你想从头开始构建你的 DE,那么裸 FVWM 是很好的选择。

[更新:看来gnome shell http://live.gnome.org/GnomeShell在这方面与FVWM。它的大部分行为是使用 JavaScript(而不是 FVWM 中的自定义语言)编写的脚本,并且非常容易更改。它的开发也非常积极,因为它是 GNOME3 的重要组成部分,对组合有很好的支持。这是黑客的天堂;-)]

[更新2:看来我对 gnome-shell 的看法是正确的。有一个Cinnamon http://cinnamon.linuxmint.com/,它使用相同的框架(mutter窗口管理器)作为gnome-shell,但构建的桌面的工作方式与gnome-shell.]

有一个网站是实现想法的良好来源:lynucs.org http://www.lynucs.org/。虽然已经下降了两年了,但还是archived http://web.archive.org/web/20080822072156/http://www.lynucs.org/.

警告:许多这样的组件不再被维护,特别是自从 GNOME/KDE 开始变得实际可用之后。该领域的开发通常更多地由嵌入式设备的特定要求驱动:phones http://www.enlightenment.org/ or netbooks http://maketecheasier.com/unity-new-desktop-environment-for-netbook/2010/05/11.

现在,回答您的实际问题:

  • Linux/OS flaver:任何易于定制的东西:Debian、Arch、Gentoo、LFS http://www.linuxfromscratch.org/...
  • 工具/框架:这取决于你想要实现什么。如果您想编写自定义工具栏,您可能只需要使用一些脚本语言(例如 FVWM),自定义工具,例如小桌板 http://adesklets.sourceforge.net/,或者用 Qt(如果您的大多数其他组件在 Qt 中)或 GTK(如果您的大多数其他组件在 GTK 中)编写您自己的组件。
  • 个人 UI:有很多,像 lynucs.org 这样的网站是它们的一个很好的汇编(lynucs 列出了每个桌面中使用的组件)。
  • 复杂的透明度效果:较旧的工具通常不会本地处理它,或者做一些简单的事情,例如仅重复使用桌面壁纸的一部分作为自己的背景(所谓的假透明度)。您很可能需要编写自己的代码,例如作为插件compiz.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

定制 Linux GUI:从哪里开始? [关闭] 的相关文章

随机推荐

  • BeautifulSoup soup.prettify() 给出奇怪的输出

    我正在尝试解析一个网站 稍后我将在我的 Django 项目中使用它 为此 我使用 urllib2 和 BeautifulSoup4 然而 我却没能得到我想要的 BeautifulSoup 对象的输出很奇怪 我尝试了不同的页面 它有效 输出正
  • 在 Scala 2.10 中获取 java.lang.Class[T] 的 Scala 类型

    我在看scala 反射概述 http docs scala lang org overviews reflection overview html我想知道是否可以使用java lang Class
  • Python numpy 减法没有负数(4-6 给出 254)

    我想减去2gray人脸彼此之间可以看到差异 但我遇到了一个问题 例如减去 4 6 给出 254 而不是 2 或差值 2 print type face
  • 检查 JQuery 中的单选按钮

    我需要以编程方式检查单选按钮的值 该表格有一个id并且输入类型显然有一个名称 但没有 id 到目前为止 我成功运行的唯一代码是 input name my name eq 1 attr checked checked 但我希望能够通过明确提
  • 多个resque工作模式创建额外的进程

    我需要启动 4 个 resque 工作人员 所以我使用了以下命令 bundle exec rake environment resque workers RAILS ENV production COUNT 4 QUEUE VERBOSE
  • Python 中的调用是如何工作的? [复制]

    这个问题在这里已经有答案了 对于我正在开发的一个项目 我正在实现一个链表数据结构 它基于对的概念 我将其定义为 class Pair def init self name prefs score self name name self sc
  • d3.js 中的地理图表

    我正在寻找一些指导或示例如何在 d3 js 中制作地理图表 我需要类似的东西this one https developers google com chart interactive docs gallery geochart在谷歌图表中
  • ESB 应该如何打包/部署?

    我正在尝试了解 Apache Camel 它似乎是一个轻量级的 ESB 如果我正确理解 Camel ESB 那么您可以将 Camel Route 视为节点和边的图 每个节点都是路由上的端点 可以消耗 产生消息 每条边都是两个不同端点 1 个
  • 为什么模态/非模态对话框称为模态/非模态?

    我总是很难记住模态对话框还是非模态对话框是否会阻止应用程序其他部分的操作 有谁知道为什么这样称呼他们 使用模式对话框 您可以将应用程序设置为特定的mode 如果您愿意 可以选择不同的 状态 仅接受与该 模式 相关的操作 从而防止对话框之外的
  • 读取文件时 Bash 用户提示

    我试图在 Bash 中逐行读取文件时创建用户提示 我的想法是使用 Gnuplot 逐一绘制各种文件 这是我所拥有的 bin bash echo Enter filename that contains the filenames read
  • 轻量级正则表达式解析器

    我想使用正则表达式解析器来帮助 C 应用程序中的一些字符串处理 我理想地寻找轻量级和开源的东西 目标平台是嵌入式系统 因此我们希望尽可能节省内存消耗 我在网上找到了许多选项 但想知道是否有人可以提出可能在这种特定情况下有所帮助的其他建议 非
  • Android 通过电报发送消息?

    我已经安装了 telegram 应用程序 只想通过 telegram 从我的应用程序向联系人发送消息 字符串 我所发现的只是这个问题 如何通过电报发送 Intent https stackoverflow com questions 216
  • 使用 SaxParser 解析 XML 文档时出现问题 - 2047 个字符限制?

    我创建了一个扩展 SaxParser DefaultHandler 类的类 我的目的是将 XML 输入存储在一系列对象中 同时保留原始 XML 数据的数据完整性 在测试过程中 我注意到一些节点数据在输入时被任意截断 例如 Input
  • 使用 OpenCV 将光栅图像转换为矢量图形?

    我正在寻找使用 OpenCV 将光栅图像转换为矢量数据的可能性 在那里我发现了一个函数cv findContours 这似乎有点原始 更可能是我没有完全理解它 它似乎仅使用黑白图像 没有灰度和彩色图像 并且似乎不接受任何可能有助于噪声图像的
  • 简单存储过程问题

    我正在 VS 2010 SQL Server 2008 中创建一个简单的存储过程 如下所示 CREATE PROCEDURE ReturnPrice carID int price decimal 18 2 output AS SELECT
  • Haskell 平面图

    我是一个对 Haskell 感兴趣的初学者 我一直在尝试自己实现 flatmap gt gt 以更好地理解它 目前我有 flatmap t gt a gt t gt a flatmap flatmap f x xs f x flatmap
  • 如何强制右对齐 UITextView 中的尾随空格?

    我有一个 UITextView 可以左对齐 右对齐或居中 我注意到 如果我右对齐 textView 则 textView 中任何文本行中的任何尾随空格都会被忽略 左对齐时 前导空格不会发生这种情况 从视觉上看 这就是发生的情况 用 来可视化
  • 规范化数组方法和返回值

    是否有任何 JavaScript 数组库可以规范化数组返回值和突变 我认为 JavaScript Array API 非常不一致 有些方法会改变数组 var A 0 1 2 A splice 0 1 reduces A and return
  • 如何检查 Objective-C 中的类?

    Update我修复了代码 以消除重写方法的重复 并通过实现来跟踪属性或方法的发起者Mark https stackoverflow com questions 1890480 how do i inspect a class in obje
  • 定制 Linux GUI:从哪里开始? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我长期以来一直对开发适合我的需求和兴趣的操作系统用户界面感兴趣 当我年轻的时候 我疯狂地使用 Windows 的 Stardock 换