如何从Alt-Tab(应用程序)切换器中移除“显示桌面”选项?

可以从Alt+Tab应用切换器中移除“显示桌面”吗?

你在使用Unity,对吗? - Knowledge Cube
1是的,抱歉,我应该明确一下。我去了CompizConfig中的Unity设置,但没有找到任何可见的选项。只是想知道是否有隐藏的选项,或者它只是在其他地方。 - David Dossot
1你是对的;我也没在那里找到。不过,我不确定是否还有其他方法来处理这个问题。 - Knowledge Cube
7个回答

13.04及更高版本
对于13.04、13.10和14.04,要启用或禁用应用程序切换器中的“显示桌面”选项,您可以使用unity-tweak-tool

Install unity-tweak-tool

pic

12.10

在12.10版本中,CCSM新增了一个设置选项,可以启用或禁用应用程序切换器中的“显示桌面”选项。
在终端中运行以下命令以安装CCSM:
sudo apt-get install compizconfig-settings-manager

现在打开CCSM并转到Ubuntu Unity插件。

Ubuntu Unity plugin

切换到Switcher标签。然后在“禁用在Switcher中显示桌面”选项旁边勾选复选框。

Disable the show desktop

Tada! No more "Show desktop" in application switcher!.


谢谢。我使用Unity Tweak工具将其禁用了,但是您的回复让我去那里了。Ubuntu 13.10。(禁用它是因为有时会切换到桌面) - adi
Unity-tweak-tool 在 13.10 版本也能正常运行。 - eswald
3太棒了,可以在14.04版本上运行,谢谢! - Kostiantyn Rybnikov
适用于14.10版本。我认为这应该是正确的答案。 - Postadelmaga
2unity-tweak-tool在15.04版本中可用.. - Jean Jordaan
unity-tweak-tool 在 15.10 版本中可用。 - Zoltan
1unity-tweak-tool 在16.04版本中同样适用。 - Chris
unity-tweak-tool 在 17.04 版本中可用。 - Alex Baker

可以做到!
我已经上传了一个适用于12.04版本的Unity构建,修复了这个问题(在Alt-Tab切换器中没有显示桌面)。
要安装,请打开终端并执行以下操作:
sudo apt-add-repository ppa:izx/askubuntu -y sudo apt-get update sudo apt-get install unity
您可以在Compiz的Unity插件中启用“显示桌面图标”设置(使用ccsm),以在左侧的启动器上获得该图标:
如果/当新的Unity更新发布时,更新管理器将自动下载。我会尽快“修复”更新并将其放入PPA中;如果您升级并且“显示桌面”重新出现在切换器中,请在此答案下添加评论以通知我!
你是怎么做到的?
我修改了Unity源代码。它包括两个步骤:
  1. plugins/unityshell/src/LauncherController.cpp中注释掉第900行,默认情况下会将“显示桌面”图标添加到切换器中:
// results.push_back(pimpl->desktop_icon_);
  1. plugins/unityshell/src/unityshell.cpp中的第1638行修改为:

      if (!results.size() == 0)

    而不是:

      if (!(results.size() == 1 && results[0]->GetIconType() == AbstractLauncherIcon::IconType::TYPE_DESKTOP))
    • 在Alt-Tab切换器图标列表至少有一个项目之前(即显示桌面图标),现在为0,我们需要修改此处,只有在列表中至少有一个项目(即至少有一个应用程序正在运行)时才显示切换器。

看起来当前版本的Unity是5.20,而你的版本是5.14。我正在使用12.04,所以自定义构建似乎是我的唯一选择。 感谢你概述了这个情况。如果你没有时间进行构建,也许我会尝试一下。 - isaaclw
我花了一些时间自己重新编译了5.20版本。由于并不像我想象的那样简单,所以我在下面发布了我的答案:http://askubuntu.com/a/395031/17065 - isaaclw
不适用于12.04 - Timmy
对于12.04及以上版本,请查看下一个答案。 - Postadelmaga

在14.04版本中,我能够在CompizConfig设置管理器中完成这个任务。
sudo apt-get install compizconfig-settings-manager

通过访问:
  • 在宽大、白色、右侧区域的列表中的"桌面"部分 →
  • "Ubuntu Unity 插件"项目 →
  • "切换器"选项卡 →
  • "在切换器中禁用显示桌面"项目。

这是一个默认的、未自定义的来自存储库的 C.C.S.M.。



所以,我不确定这对你有没有帮助,但是在使用Unity 2D时,由于没有图形驱动程序,我尝试了Gnome fall-back。然后,我对此感到不满意,又回到了Unity界面。现在,在ALT+TAB应用切换器中,我不再显示“显示桌面”选项。我认为这是Gnome界面的一个副作用,因为它将其设置在左下角,当我切换回来后,就不再有这个选项了。对我来说似乎有效...值得一试。

1感谢您分享您的经验。这种方法有多大风险?我承担不起把我的工作环境的稳定性置于危险之中。 - David Dossot
对我来说,除此之外我没有遇到任何问题,但我也不能百分之百确定是这样的。如果你有虚拟机,测试一下这个理论可能会很好,我还对面板进行了大量编辑,删除和添加了一些项目,如工作区切换器和垃圾桶图标,以取代10.10版本那种真实的gnome感觉。我认为不会太冒险,但值得一试。如果你真的那么担心,你可以备份一切,但它不应该做出任何异常的事情。我也可能只是碰巧遇到了一个幸运的错误。我不知道,我也会自己测试一下。看看我能为你做些什么。 - esnowrackley

警告:我只成功地让它工作了一次。当我重新启动后,我发现有两个Unity实例在运行,但我无法弄清楚为什么或如何出现这种情况。关闭它们也没有用,卸载并重新安装也没有帮助。
我通过安装13.10版本来解决这个问题。我会尝试这里列出的其他修复方法。
我无法在12.04版本中使其工作,提供的软件包不够新(版本5.14),而且指南也不完美(尽管非常有帮助)。以下是我成功应用Unity 5.20修复的方法:
1)下载源代码:
sudo apt-get source unity

2) 更改来源:
diff -ru org/plugins/unityshell/src/LauncherController.cpp patch/plugins/unityshell/src/LauncherController.cpp
--- unity-5.20.0/plugins/unityshell/src/LauncherController.cpp  2013-04-12 04:24:42.000000000 -0400
+++ unity-diff/plugins/unityshell/src/LauncherController.cpp    2013-12-23 12:22:50.154961579 -0500
@@ -761,7 +761,7 @@
 {
   std::vector<AbstractLauncherIcon::Ptr> results;

-  results.push_back(pimpl->desktop_icon_);
+  //results.push_back(pimpl->desktop_icon_);

   for (auto icon : *(pimpl->model_))
   {
diff -ru org/plugins/unityshell/src/unityshell.cpp patch/plugins/unityshell/src/unityshell.cpp
--- unity-5.20.0/plugins/unityshell/src/unityshell.cpp  2013-04-12 04:24:42.000000000 -0400
+++ unity-diff/plugins/unityshell/src/unityshell.cpp    2013-12-23 12:24:36.718966737 -0500
@@ -1909,7 +1909,8 @@

   auto results = launcher_controller_->GetAltTabIcons(show_mode == switcher::ShowMode::CURRENT_VIEWPORT);

-  if (!(results.size() == 1 && results[0]->GetIconType() == AbstractLauncherIcon::IconType::TYPE_DESKTOP))
+//  if (!(results.size() == 1 && results[0]->GetIconType() == AbstractLauncherIcon::IconType::TYPE_DESKTOP))
+  if (!(results.size() == 0))
     switcher_controller_->Show(show_mode, switcher::SortMode::FOCUS_ORDER, false, results);

   return true;

3) 安装其他软件包:
sudo apt-get build-dep unity
sudo apt-get install cmake

5) 运行cmake。
cd <source folder>
# from the INSTALL file
mkdir build; cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=package -DCMAKE_INSTALL_PREFIX=/opt/unity
make
sudo make install

注意:如果您将DCMAKE_INSTALL_PREFIX文件夹设置为/usr而不是/opt/unity,您就不必稍后进行rsync操作,但我想先尝试链接文件。我放弃了。
我想撤消的最佳选择应该是重新安装Unity,这样会覆盖标准文件。
6)替换文件:
sudo rsync -av /opt/unity/ /usr/

7) 重新安装unity-greeter。显然,rsynced的文件破坏了unity-greeter。而unity-greeter显然是需要的,以便让unity运行起来。
sudo apt-get install --reinstall unity-greeter

如果您正在使用dconf管理您的Unity设置,那么通过检查dconf watch /,此设置的路径为:
/org/compiz/profiles/unity/plugins/unityshell/disable-show-desktop

将此设置为true,桌面将被移除作为alt-tab选项。