在 Ubuntu 12.04 默认的图形模式下使用任务切换时,如果它们是同一类型的多个窗口,例如多个终端窗口,您可以一起看到它们并选择您想要的一个。
我的问题是这些窗口的顺序不断变化。它遵循“上次使用”的顺序。我希望它们始终按固定顺序排列;我该怎么做?
答案1
您可以考虑使用桌面来获得所需的结果,而不是更改统一代码库。
在 CompizConfigSettingsManager 中使用 Compiz Desktop Cube 的示例
打开 CompizConfigSettingsManager ( ccsm
) 并更改设置以匹配以下内容:
打开 1 号航站楼
使用键盘快捷键 CTRL-ALT-->(右箭头)转到右侧的下一个桌面。
开放 2 号航站楼
使用键盘快捷键 CTRL-ALT-->(右箭头)再次转到右侧的下一个桌面。
开放 3 号航站楼
使用键盘快捷键 CTRL-ALT-<-(左箭头)转到包含终端 2 的上一个桌面(或两次返回到终端 1)
另外一个选择
使用 CompizConfig SettingManager 中的视口管理器并分配组合键以直接进入您选择的桌面
笔记:到目前为止,我只能让 10 工作,尽管使用此方法应该可以使 12 工作。
更新:根据评论中表达的担忧:
只需右键单击 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_ORDER
为LAUNCHER_ORDER
应该可以解决您的问题。您可以在调用之前插入一个额外的 if 语句,Show
以防止启动器按 case 顺序排序ShowMode::ALL
。
请注意,Unity 8 的源代码看起来完全不同。因此,此解决方案可能仅适用于 Unity 7。经过半小时修复缺失的依赖项,再经过一个小时与 cmake 斗争,我决定不破坏我的系统,明天在 VM 中试用它 ;)