Ubuntu 12.04のデフォルトのグラフィカルモードでタスクスイッチングを使用する場合、それらが同じ種類の複数のウィンドウである場合。複数のターミナルウィンドウを使用すると、それらをすべてまとめて表示し、必要なものを選択できます。
私の問題は、これらのウィンドウの順序が絶えず変更されることです。「最後に使用された」順序に従います。私は常に修正順序でそれらが欲しいです。どうすればいいですか?
Ubuntu 12.04のデフォルトのグラフィカルモードでタスクスイッチングを使用する場合、それらが同じ種類の複数のウィンドウである場合。複数のターミナルウィンドウを使用すると、それらをすべてまとめて表示し、必要なものを選択できます。
私の問題は、これらのウィンドウの順序が絶えず変更されることです。「最後に使用された」順序に従います。私は常に修正順序でそれらが欲しいです。どうすればいいですか?
回答:
ユニティコードベースを変更するのではなく、デスクトップを使用して目的の結果を得ることができます。
CompizConfigSettingsManagerでのCompizデスクトップキューブの使用例
CompizConfigSettingsManager(ccsm
)を開き、以下に一致するように設定を変更します。
ターミナル1を開く
キーボードショートカットCTRL-ALT->(右矢印)を使用して、右側の次のデスクトップに移動します。
ターミナル2を開く
キーボードショートカットCTRL-ALT->(右矢印)を使用して、右隣のデスクトップに再度移動します。
ターミナル3を開く
キーボードショートカットCTRL-ALT-<-(左矢印)を使用して、端末2を含む前のデスクトップに移動します(または2回端末1に戻ります)
別のオプション
CompizConfig SettingManagerのビューポートマネージャーを使用して、キーの組み合わせを割り当て、選択したデスクトップに直接移動します。
注:これまでのところ、このメソッドでは12を使用できるはずですが、10のみを使用することができました。
更新:コメントで表明された懸念に基づいて:
geditのタイトルバーを右クリックして、常に表示されるワークスペースを選択します...
別のオプション:
多数のアクティビティのために個別のターミナル(またはワークスペース)を開くのではなく、gnomeターミナルでタブを使用することもできます。タブ切り替え用のショートカットキーは、端末設定から利用できます。下記参照:
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ステートメントを挿入して、caseでのShow
ランチャー順序のソートを防ぐことができShowMode::ALL
ます。
Unity 8のソースコードは完全に異なっていることに注意してください。したがって、このソリューションはUnity 7でのみ機能する可能性があります。不足している依存関係を30分修正し、さらに1時間cmakeと戦った後、システムを破壊せず、明日VMで試してみることにしました;)