如何停止任务切换时同一类型的多个预览窗口的重新排序?

如何停止任务切换时同一类型的多个预览窗口的重新排序?

在 Ubuntu 12.04 默认的图形模式下使用任务切换时,如果它们是同一类型的多个窗口,例如多个终端窗口,您可以一起看到它们并选择您想要的一个。

在此处输入图片描述

我的问题是这些窗口的顺序不断变化。它遵循“上次使用”的顺序。我希望它们始终按固定顺序排列;我该怎么做?

答案1

您可以考虑使用桌面来获得所需的结果,而不是更改统一代码库。

在 CompizConfigSettingsManager 中使用 Compiz Desktop Cube 的示例

打开 CompizConfigSettingsManager ( ccsm) 并更改设置以匹配以下内容:

ccsm-1

ccsm-2

打开 1 号航站楼

使用键盘快捷键 CTRL-ALT-->(右箭头)转到右侧的下一个桌面。

开放 2 号航站楼

使用键盘快捷键 CTRL-ALT-->(右箭头)再次转到右侧的下一个桌面。

开放 3 号航站楼

使用键盘快捷键 CTRL-ALT-<-(左箭头)转到包含终端 2 的上一个桌面(或两次返回到终端 1)

另外一个选择

使用 CompizConfig SettingManager 中的视口管理器并分配组合键以直接进入您选择的桌面

笔记:到目前为止,我只能让 10 工作,尽管使用此方法应该可以使 12 工作。 ccsm-3

更新:根据评论中表达的担忧:

只需右键单击 gedit 标题栏并选择始终在可见工作区...

另外一个选择:

您也可以使用 gnome 终端中的选项卡,而不必为众多活动打开单独的终端(或工作区)。终端首选项中提供了切换选项卡的快捷键。见下文:

终端偏好设置

答案2

如果您的桌面足够大,另一个选项是将一些窗口设置为“始终在最上面”,并将它们排列在一起,以便您可以使用鼠标进行切换。这是一个临时解决方案……但我有时发现在使用多个相同类型的窗口时它很有用。

还有一种方法是定义几个具有不同配色方案的终端配置文件,并为每个终端使用不同的配置文件......这将使它们易于识别。在此处输入图片描述 是的,这也是一种解决方法。

答案3

我认为你可以通过修改源代码来实现这一点Unity 7。只需按照开发者网站上描述的步骤操作,但在开始构建过程之前打开:./trunk/plugins/unityshell/src/unityshell.cpp并查看SetUpAndShowSwitcher功能:

void UnityScreen::SetUpAndShowSwitcher(switcher::ShowMode show_mode)
{
  RaiseInputWindows();

  if (!optionGetAltTabBiasViewport())
  {
    if (show_mode == switcher::ShowMode::CURRENT_VIEWPORT)
      show_mode = switcher::ShowMode::ALL;
    else
      show_mode = switcher::ShowMode::CURRENT_VIEWPORT;
  }

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

  if (switcher_controller_->CanShowSwitcher(results))
    switcher_controller_->Show(show_mode, switcher::SortMode::FOCUS_ORDER, results);
}

这里可以清楚的看到,这正是我们要找的功能,上半部分负责切换视口模式:

显示模式

每次我们进入应用程序组或离开该组时,都会出现此切换。optionGetAltTabBiasViewport指示何时发生这种情况。然后GetAltTabIcons参与以获取正确的图标。最后调用Show带有的函数SortMode::FOCUS_ORDER来显示我们排序的图标。SortMode 是一个枚举:

enum class SortMode
{
  LAUNCHER_ORDER,
  FOCUS_ORDER,
};

并更改FOCUS_ORDERLAUNCHER_ORDER应该可以解决您的问题。您可以在调用之前插入一个额外的 if 语句,Show以防止启动器按 case 顺序排序ShowMode::ALL

请注意,Unity 8 的源代码看起来完全不同。因此,此解决方案可能仅适用于 Unity 7。经过半小时修复缺失的依赖项,再经过一个小时与 cmake 斗争,我决定不破坏我的系统,明天在 VM 中试用它 ;)

相关内容