Mint 17.2に「最後の」ワークスペースに切り替えるキーバインディングはありますか?

Mint 17.2に「最後の」ワークスペースに切り替えるキーバインディングはありますか?

ミントカラー17.2、シナモンカラー。

dconfエディタを使用してワークスペースを切り替えるためのショートカットを設定しました。私のワークスペースキーバインディングの関連部分は次のとおりです。

ここに画像の説明を入力してください。

私が望むのは、最後にあったワークスペースに戻すキーバインディングです。この機能は、Windowsデスクトップマネージャ「dexpot」で次のように使用できます。

ここに画像の説明を入力してください。

したがって、Windowsでは、「Ctrl-Alt-L」と入力すると、最後にあったワークスペースに移動します。繰り返しクリックすると、2 つのアクティブなワークスペースを切り替えます。

この質問が以前に提起されたことがあることを知っています。数年前に一度知ることになったからです(答えは「いいえ、できません」でした)。しかし、残念ながら、Googleはこの問題に対処したものを見つけることができなかったのでお詫び申し上げます。この質問にすでに回答している場合は、続行してください。私はこれがgnomeではなくウィンドウマネージャ(シナモンなど)の機能であることも知っています。

この機能が本当に懐かしくて、今これを行う方法があってほしいです。特に最近、WindowsとLinuxの間でコンテキスト切り替えが多かったので、さらにそうです。

とても感謝しています!

答え1

誰も何も見つけられなかったので(事実私自身も何も見つかりませんでした)、この質問に対する答えは「いいえ、できません」と思います。だから一つ開いてみました。Cinnamon githubに関する問題これを機能としてリクエストしてください。

そこでも反応がなくて直接実装してみようか考えています。 Cinnamonのコードベースをチェックすると、バックエンドの「エンジン」はcで書かれているように見えますが(修正するのは難しい)、多くのフロントエンドUIエントリはJavaScriptで処理されます(より簡単に修正できます)。したがって、Cinnamon自体に統合された実際の修正を作成しなくても、少なくともシステムにパッチを適用できるように何かを一緒に構成する合理的な機会があります。

解決策を見つけたら、ここに結果を投稿します。

更新:コードハッキングをしました。公式の解決方法ではありませんが、参考にしてください。前述のチケット、詳細を確認できます。また、ここに私の記事をコピーしています。

解決策

限定

いいですね。テストイメージを設定し、コードを調べて調査した後、この問題の解決策を見つけました。注:これは現在の回避策にすぎず、一部のファイルを手動で編集する必要があります。この問題を「公式」修正として送信するには、次の手順を実行する必要があります。

  1. 少なくとも、dconf-editorで表示できるように、新しいキーワード "switch-to-workspace-last"のサポートを追加します(コントロールパネルのキーボード - >ショートカットGUIにない場合)。
  2. 単体テストを作成します(ただし、私が触れるファイルの/ testsの下にはuts(?)は表示されません)。
  3. cinnamonパッケージを生成する.debの実際のビルドを処理します(または修正を送信する必要はありませんか?)。

  4. 私がやっていることが「良い」ものかどうかについてより多くのフィードバックを得てください。

今は解決策に固執します。実際に解決策があると嬉しいです。ほんの数行のコードで実装できます。これですぐに使い始めることができました(こんなものがあれば本当にいいです)。

とにかく、別のコメントでどのファイルが重要であるか、どのように把握したのか、正確にいつ修正をプロダクションイメージに適用したかについての背景知識を持つ詳細な投稿を作成します。

Cinnamon 17.2(2.6.13+rafaela)で「最後のワークスペースへのアクセス」のショートカットサポートを追加する方法。

概要:

私たちは、ほとんど使用されていないキーバインディング(私は「ワークスペースの左に移動」を使用します)を選択し、「最後のワークスペースに移動」を実装する機能を奪います。これには、「/usr/share/cinnamon/js/ui/windowManger.js」に数行を追加する操作が含まれます。新しい状態変数 "global.screen.penultimate_workspace" を "グローバル" js 変数に追加し、"global.screen.get_workspace_by_index(new_index)" 関数を使用して "最後の" ワークスペースをアクティブにし、"アクティブ化" を呼び出す必要があります。それに切り替えます。

同様の操作を実行する既存のファイルの良い例は、 '/usr/share/cinnamon/applet/にあるワークスペーススイッチャーアプレットです。[Eメール保護]/applet.js '。ファイルを表示するには、このアプレットをパネルに追加する必要があります。

幸いなことに、これはCinnamonのJavaScript部分内で完全に実行できます。

詳細

コード変更

ねえMint 17.3パッチファイルの完全なコピーを入手してください。コードの関連部分については、「vt」(私のイニシャル)を検索してください。これは、次に提供する小さなコードスニペットよりも理解しやすいです。

"/usr/share/cinnamon/js/ui/windowManger.js"ファイルを次のように編集します。

1) 新しいグローバル変数 'screen.penultimate_workspace' を初期化します。

WindowManager.prototype = {                                                                   
          _init : function() {                                                                      
         this._cinnamonwm =  global.window_manager;  
         ...
         //fix add
        global.screen.penultimate_workspace = 1;
        //fix end

2)誰かが「switch-to-workspace-」キーを介して手動でワークスペースに切り替えるたびにPenalty_workspaceを更新します。これはwindowManager.jsの_switchWorkspace関数です。

   _switchWorkspace : function(cinnamonwm, from, to, direction) {
        //fix add
        global.screen.penultimate_workspace = from;
        //fix end
        if (!this._shouldAnimate()) {
            cinnamonwm.completed_switch_workspace();
            return;
        }

3) 必要なキーバインディングハンドラをオーバーライドします。

   _moveWindowToWorkspaceLeft : function(display, screen, window, binding) {
        //original code
        //this._shiftWindowToWorkspace(window, Meta.MotionDirection.LEFT);
        //end original code
        //fix add
        // get workspace object for 'last' workspace
        let metaWorkspace = global.screen.get_workspace_by_index(global.screen.penultimate_workspace);
        // save current workspace index into penultimate_workspace
        global.screen.penultimate_workspace = global.screen.get_active_workspace_index();

        // and switch to penultimate workspace
        metaWorkspace.activate(global.get_current_time() );
        //fix end
    },

dconfエディタの変更:

1)「最後のワークスペースに切り替える」コマンドとして「Ctrl-Alt-l」(小文字「ell」)を使用することを選択しました。残念ながら、これは画面ロックとして使用されました。 a) コントロールパネル->キーボード->ショートカット->システム->LockScreen に移動し、Ctrl-Alt-Shift-l (または必要に応じて) に変更します。

2) dconf エディタを使用して、org.cinnamon.desktop.keybindings.wm モードで「move-to-workspace-left」を「Control-Alt-l」に変更します。

変更を有効にする

1) 「Ctrl-Alt-Esc」と入力してシナモンウィンドウマネージャを更新します。すべてのウィンドウと編集セッションがまだアクティブであることを除いて、ログアウトとログインに似ています。

注:時々これを実行した後、端末がハングすることがあります。これが発生した場合は、イメージを再起動してください。

それはすべてです。これを行った後、「Ctrl-Alt-l」を押すと、最後に訪問したウィンドウに移動します。

デバッグヘルプ:

1) ファイルを変更する場合は、Ctrl-Alt-Esc を使用してウィンドウマネージャを更新します。変更した内容は、これを行うまで有効になりません。

2) global.log("vt: windowManger.blah") を使用します。

デバッグメッセージを表示します。 ~/.cinnamon/glass.logでtail -fを実行してメッセージを確認してください。

tail -f glass.log

注:「Ctrl-Alt-Esc」を実行してウィンドウマネージャを更新するたびに、前のtail -fセッションをすべて終了して再開する必要があります。

関連情報