各个 Linux 桌面发行版刚拿到手的时候,或多或少都有点儿不满意,对它们进行一些改造是必须的。网上不乏各种 Linux 桌面美化的教程和经验贴,对我们这些 Linux 爱好者来说都是很好的参考资料。进行桌面美化之前,请谨记以下几点:

1.桌面美化是一个仁者见仁、智者见智的事。有可能你认为很美的界面,别人认为土得掉渣;有可能你认为很炫的特效,别人认为华而不实。就拿我来说,我就不喜欢桌面小部件,不管是在电脑上还是在手机上。所以我的电脑桌面总是光秃秃,除了背景图片啥都没有。但是我喜欢将控制台窗口半透明化。所以,对本文所述,各读者可能都会有各自不同的意见,欢迎探讨。另外,我认为了解 Linux 桌面美化的机制比较重要。

2.桌面美化是一个很花时间的事。为了折腾我的 Linux 桌面系统,我不知道花了多少个日日夜夜。很多效果都需要亲自尝试,每一个设置都是改了又改。最终得到的结果可能只是一个比较初浅的美化。

3.桌面美化是一个很危险的事。虽然说 Linux 系统很健壮,但不代表着它的图形界面也可以任你折腾而不崩溃。我曾经多次将 Ubuntu 的图形界面弄坏,然后无法修复而不得不重新安装系统。因此,进行桌面美化前,请务必先备份系统或在虚拟机上尝试。否则后果自负。

4.桌面美化是一个要点儿运气的事。你用的硬件、软件都有可能决定某些软件是否能够正确地安装和运行。我的笔记本是 Nvidia GT 720M 显卡,安装显卡驱动很顺利,但是水纹特效怎么都出不来,相反,在我的虚拟机上,水纹特效运行很正常。

对于不同的桌面系统,其美化方式也不一样。我平时不用 KDE,在折腾 Fedora 和 Ubuntu 的时候,用的都是 Gnome 桌面,而且都是用的 Gnome 3,没有使用经典的 Gnome 2。其中 Fedora 20 用的桌面管理器是 Gnome-shell,而 Ubuntu 14.04 用的桌面管理器是 Ubuntu Unity。我对 Gnome-shell 的美化做得比较少,所以本文的重点放在 Ubuntu Unity。

我认为,桌面美化可以从以下几个方面着手:

1.主题和壁纸。不管对于哪个系统,这一点是通用的。在 Fedora 20 系统中,可以通过 yum list | grep theme 和 yum list | grep wallpaper 来查找官方软件源中提供的主题和壁纸,而在 Ubuntu 14.04 中,可以通过 sudo aptitude search theme 和 sudo aptitude search wallpaper 来查找官方软件源中提供的主题和壁纸。安装主题后,Fedora 系统通过 gnome-tweak-tool 软件来设置主题,而 Ubuntu 使用 unity-tweak-tool 来设置主题。另外,可以通过访问网站http://gnome-look.org/来下载最新的主题和壁纸。对于 gnome-shell,还可以安装 extensions 来扩展它的功能和进行美化,除了官方软件源中提供的 extensions,还可以访问https://extensions.gnome.org/来查找最新的扩展。

2.字体。Linux 桌面中的字体设置本身就是一个大麻烦。对于这一点,请参考拙作:Linux桌面系统字体配置要略在 Ubuntu 14.10 中借用 Windows 字体

3.桌面特效。这个是一个锦上添花的功能,没有也没关系。Ubuntu Unity 桌面基于 Compiz,通过适当的配置可以提供很炫的特效,而 Fedora 的 gnome-shell 就没有那么幸运了。不过 gnome-shell 的扩展机制非常强大,只要会 JavaScript 和 CSS 就可以为它制作主题,可以随便更改它的外观。对于博客园中众多的前端攻城狮来说,gnome-shell 才是 Linux 桌面美化的天堂,虽然 Linux 之父说 Gnome 3 “凌乱得无法忍受”。

4.Dock。这个不用说,模仿苹果电脑的界面,瞬间让桌面效果提升一个档次。有大量的 Dock 软件可选,这里不赘述。

5.桌面小部件。一些精美的桌面小部件可以提供一些很实用的功能,同时也可以提高桌面的美化程度。由于我本人并不是特别喜欢桌面小部件,所以这一部分并不做特别介绍,但是在后面,我会给出一个链接,让别的高手展示一下如何使用 conky 来美化桌面。

先来简单说说 Fedora 中 gnome-shell 的美化。安装完系统后,我就对它自带的主题和壁纸不满意,然后,当然是安装新的主题和壁纸,再然后,安装一个 gnome-tweak-tool,设置新的主题和壁纸,再然后设置字体,最后,由于 Fedora 默认安装的 gnome-terminal 不支持半透明背景,于是我就 update 了一下。下面是截图:

然后,就没有然后了,我并没有对 Fedora 的界面做更多的更改。其实,只要是会 JavaScript 和 CSS,对 gnome-shell 的更改就会很容易。特别是 gnome-shell 提供了一个非常好用的 JavaScript 控制台 LookingGlass,只需要按 Alt+F2,然后运行 lg 命令,就可以弹出如下界面,直接输入 JavaScript 代码执行,按两次 Tab 键还有自动提示,还是半透明背景,你说爽不爽:

另外,可以通过修改 /usr/share/gnome-shell/theme/gnome-shell.css 文件来改变 gnome-shell 的外观。

下面来看看 Ubuntu 14.04 桌面的美化过程。下图中被我用红线圈出来的是需要用到的几个设置工具:

其中“启动应用程序”是系统自带的,可以设置某些软件在系统启动时自动运行。另外三个设置工具需要另外安装。最简单的是 Unity Tweak Tool,它是 Ubuntu 系统中用来取代 gnome-tweak-tool 的工具,只需要运行 sudo apt-get install unity-tweak-tool 就可以安装。可以使用该工具来设置主题、字体等,如下图:

同时,可以使用该工具多开几个工作区,如下图:

Linux 桌面的一个优势就是可以开启多个工作区,也可以称为多个桌面,其实是一样的。Ubuntu 本身的桌面切换效果比较朴素,后面,可以通过 Compiz 提供的 3D 桌面功能设置出比较炫的切换效果。

工具 NVIDIA X Server Settings 一般是用不到的,但该工具的存在可以提示成功安装了显卡驱动,还可以进行双显卡切换。在 Ubuntu 中安装 N 卡的驱动比较简单,一个sudo apt-get install nvidia-命令就搞定。(目前最新的驱动版本是 nvidia-331,其它的版本就是后面的数字不同。)下图是该工具的运行效果:

在 Ubuntu 桌面上美化的重点是设置 Compiz 的效果。这里需要说一下 Ubuntu Unity 和 Compiz 的渊源。Compiz 是 Linux 系统下 3D 桌面特效的代表作,但是因为开发者们理念的分歧,很快就分出了一个 Beryl 分支,Beryl 发展了一段时间后,双方又觉得理念还是一致的,于是又合并成了新的 Compiz Fusion,再过一段时间后,Compiz Fusion 又恢复了原始的名字 Compiz。而 Ubuntu 的 Unity 一开始是基于和 gnome-shell 相同的 Mutter 窗口管理器和 Clutter 图形工具库开发,在 Ubuntu 10.10 发布的那段时间,Compiz 的主要开发者被 Canonical 雇佣,然后 Ubuntu Unity 开始移植到 Compiz。所以,自 Ubuntu 11.04 之后,Ubuntu Unity 桌面的基础就是 Compiz。通过 pstree 命令可以验证,如下图:

系统安装好之后,Compiz 就已经默认安装了,但是其设置软件 CompizConfig Settings Manager 需要另外安装,同时,Compiz 的特效都是以插件的形式提供,所以还要安装 compiz-plugins,如下图:

只有我用红线标出的两个软件包需要安装。其它的 transitional dummy package 是过渡版本,没有必要安装。然后就可以通过 CompizConfig Settings Manager(简称CCSM)来设置 Compiz 的特效了。前面说过,桌面美化是一个危险的活儿,极其容易把图形界面弄死。所以在启动 CCSM 的时候,它会弹出友情提示:

而且从上面的截图可以看出,Ubuntu Unity 也是一个 Compiz 的插件。所以,如果不想让图形界面死得太难看,一定要注意以下两点:

1.所有开启的插件都不能和 Ubuntu Unity Plugin 冲突,否则桌面系统分分钟死给你看。

2.所有的快捷键都不能和 Ubuntu Unity Plugin 的快捷键冲突。在这些特效插件中,容易和 Ubuntu Unity Plugin 发生快捷键冲突的是那几个窗口切换插件,因为窗口切换总共就那么几个快捷键组合,如 Alt+Tab、Shift+Alt+Tab 等,如果所有的插件都选择这几个快捷键,想不冲突都难。所以,在启用窗口切换特效的时候,一定要先设置好快捷键,然后再启用。

如果真的不小心把桌面搞崩溃了,可以先按 Ctrl+Alt+F1 切换到虚拟控制台 1,然后登陆系统,再输入如下命令救命:

sudo rm -r .compiz
sudo killall gnome-shell

输入以上命令后,图形界面会以默认设置重启。然后继续折腾。

Compiz 提供的功能很多,我认为有用的主要有以下几种:

1.桌面切换特效,也就是常说的 3D 桌面;

2.窗口切换特效,Compiz 提供的窗口切换特效众多,但我只选择了一种;

3.其它锦上添花的特效,如火焰、烟花、水纹特效,窗口像果冻一样抖动的特效等,另外,我觉得注解特效也不错,可以让鼠标在屏幕上随便画,我上面的截图中的红线就是这么画出来的。

先来看看 Ubuntu 默认的桌面切换效果,按 Super+S 快捷键即可显示所有桌面,其效果是非常朴素的,如下图:

设置好 3D 桌面后,按 Ctrl+Alt+ 鼠标左键,左右移动鼠标即可以转动桌面立方体,效果如下图:

要达到这样的桌面切换效果,需要涉及到如下两张图中我特意标出来的插件:

其中,桌面立方体和旋转立方体插件是肯定要开启的,而且桌面立方体和 Desktop Wall 插件冲突,所以开启桌面立方体就必须禁用 Desktop Wall,事实证明,这个可以禁用,不会引起系统崩溃。然后 Cube Reflection and Deformation 插件可以让桌面立方体更炫,可以去掉顶盖和底盖,也可以将桌面立方体更改为圆柱形和球形。最后,Wallpaper 插件可以为每一个桌面设置一个单独的背景图片,为了能顺利加载各种格式的图片,所以把图像加载分类中的四个插件都启用了。

再来看看窗口切换特效。Ubuntu 默认的窗口切换效果本来也不错,图标比较大,周围还有淡淡的光晕。按 Alt+Tab 可以在一个工作区内切换窗口,按 Ctrl+Alt+Tab 可以在所有工作区中切换窗口,如下图:

Compiz 提供的窗口切换插件很多,但是我觉得比 Ubuntu 默认的切换效果更好看的基本上没有,所以我只选用了一种,我设置的快捷键为按 Shift+Super+S 开启窗口切换,然后按键盘上的左右键切换窗口,如下图:

效果还不错吧。我启用的是 Shift Switcher 插件,如下图:

由于不愿意想破脑袋去避免快捷键冲突,所以我只启用了一种窗口切换方式,它的快捷键设置如下图:

看完了桌面切换和窗口切换,再看看那些锦上添花的特效,下图中的这些插件就随便勾吧:

火焰特效,按 Shift+Super+鼠标左键,就可以在桌面上画出亮闪闪的火焰,按 Shift+Super+C 清除,如下图:

烟花特效,按 Super+Q 开启,再按 Super+Q 关闭,如下图:

注解特效,按 Alt+Super+鼠标左键就可以在桌面上乱写乱画,Alt+Super+K 清除,前面的截图中我已经广泛地用该特效来画圈圈,所以就不截图了。

水纹特效,我的笔记本电脑上该特效出不来,虚拟机上可以。按 Ctrl+Super 开启,松开结束,按 Shift+F8 开启雨刮效果,再按一次取消,按 Shift+F9 开启雨点效果,再按一次取消。下面是我在虚拟机中扒出来的效果图:

为了美化桌面,Dock 是少不了的。在 Ubuntu中,使用 Cairo-Dock 就可以了。一个 sudo apt-get install cairo-dock 命令就搞定。然后使用前面提到的“启动应用程序”将 Cairo-Dock 设置为开机启动,如下图:

Dock 的效果,如下图:

我一般不喜欢桌面小部件,我工作的时候喜欢将窗口全屏,配合半透明背景效果就更好了。对于喜欢在桌面上添加更多元素的朋友,可以移步到这里:http://forum.ubuntu.org.cn/viewtopic.php?f=94&t=313031&start=0。这是 Ubuntu 中文论坛上的一个帖子,楼已经盖得很高了,里面很多高手作品,值得学习。他们使用的工具是conky。

由于不想把这篇随笔搞得又臭又长,我已经尽量做到言简意赅了,但是为了把问题说清楚,仍然用了 20 多张图片,花了我几天的时间,希望大家喜欢。

(京山游侠于2014-10-31发布于博客园,转载请注明出处。)

Linux 桌面美化那点事儿的更多相关文章

  1. Linux 桌面玩家指南:03. 针对 Gnome 3 的 Linux 桌面进行美化

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  2. Linux 桌面玩家指南:08. 使用 GCC 和 GNU Binutils 编写能在 x86 实模式运行的 16 位代码

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  3. Linux 桌面玩家指南:06. 优雅地使用命令行及 Bash 脚本编程语言中的美学与哲学

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  4. Linux 桌面玩家指南:01. 玩转 Linux 系统的方法论

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  5. Linux 桌面玩家指南:19. 深入理解 JavaScript,及其开发调试工具

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  6. Ubuntu Desktop安装及桌面美化(修复图片)

    Ubuntu Desktop安装及桌面美化 1   开篇概述 本 系统的文章主要是讲互联网方向的开发主题.根据目前主流互联网公司的技术架构,Linux是必不可少的.对于一直习惯于在Windows下工作 ...

  7. Debian 桌面美化

    Debian 桌面美化 安装 gnome-tweak-tool aptitude install gnome-tweak-tool 登陆gnome-look下载主题包 gnome-look上有很多主题 ...

  8. Linux 桌面玩家指南:18. 使用 Docker 隔离自己的开发环境和部署环境

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  9. Linux 桌面玩家指南:17. 在 Ubuntu 中使用 deepin-wine,解决一些依赖 Windows 的痛点问题

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

随机推荐

  1. 试试SQLSERVER2014的内存优化表

    试试SQLSERVER2014的内存优化表 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据库管理系统,而使用先进内存技 ...

  2. 【XSS】延长 XSS 生命期

    XSS 的本质仍是一段脚本.和其他文档元素一样,页面关了一切都销毁.除非能将脚本蔓延到页面以外的地方,那样才能获得更长的生命力. 庆幸的是,从 DOM 诞生的那一天起,就已为我们准备了这个特殊的功能, ...

  3. Java多线程基础——对象及变量并发访问

    在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松.但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的.这样,一个对象同时被多个线程访问,会出 ...

  4. 【Win 10 应用开发】启动远程设备上的应用

    这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...

  5. Android数据存储之Android 6.0运行时权限下文件存储的思考

    前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以 ...

  6. 用原生js做单页应用

    最近在公司接到一个需求,里面有一个三级跳转.类似于选择地址的时候,选择的顺序是:省份->市->区.如果分三个页面跳转,那么体验非常不好,如果引入其他框架做成单页应用,又比较麻烦.所以可以用 ...

  7. 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案

    相信很多小伙伴都在android开发中遇到调用jni的各种巨坑,因为我们不得不在很多地方用到第三方库so文件,然而第三方官方通常都只会给出ADT环境下的集成方式,而谷歌亲儿子android studi ...

  8. JavaScript基础知识总结(三)

    JavaScript语法 七.循环语句 1.while 语法: while (exp) { //statements; } 说明:while (变量<=结束值) { 需执行的代码 } 例子: / ...

  9. 设计模式C#合集--工厂方法模式

    简单工厂,代码: public interface ISpeak { public void Say(); } public class Hello : ISpeak { public void Sa ...

  10. 需要UWP Vendor一名

    工作地点北京,海淀,微软大厦2号楼,小冰项目组.