linuxBean14.04(10)ウィンドウのスナップを有効にする

2015-05-05

旧ブログ

t f B! P L

前の関連記事:linuxBean14.04(9)node.jsとBracketsのインストール


普段自宅ではWindows7を使っていてエアロスナップをよく使っています。linuxBeanでもウィンドウをたくさん開くようになると同じようにウィンドウをスナップさせたくなったので同じようにできないか調べてみました。

画面の端にドラッグした時に自動的にウィンドウの大きさを調整させるのは不可能らしい


エアロスナップがやっていることは、画面の左端にウィンドウをもってきたときはウィンドウの大きさを画面の左半分の大きさにして左寄せにし、右端のときは右半分の大きさにして右寄せにし、上にもってきたときは全画面表示にするということです。

linuxBeanはLXDE (Lightweight X11 Desktop Environment)というデスクトップ環境を使っており、ウィンドウの操作を行うウィンドウマネージャはOpenboxが行っています。

「openbox window snap」で検索するとたくさんQ&Aがでてきますが、Windows7のエアロスナップのように画面の端にウィンドウをドラッグしたときにウィンドウの大きさを調節させることは無理なようです。

[lubuntu] Window snapping for OpenBox?を読んでみるとOpenboxがOpenGLを使っていないのが原因のようです。

openboxが速いのはOpenGLを使っていないのが一つの理由なので、今後もOpenGLが使われる見込みはなく、したがってOpenBoxでエアロスナップのようにドラッグで画面端にもっていったときにウィンドウの大きさを自動的に調節できるようになることはないそうです。

なので画面端にドラッグしたときではなく、ショートカットキーでウィンドウのスナップの設定をします。

ウィンドウをスナップさせるショートカットキーを作成する


(2015.12.11追記。一方向に最大化すると解除するときに一操作増えるのでMaximizeVertやMaximizeHorzを使わないことにしました。linuxBean14.04(91)ウィンドウを上下左右に寄せるショートカットキー。)

A Better Aero Snap with Openbox – Learning to Codeで解説されているように設定するのですが、~/.config/openbox/lxde-rc.xmlを直接編集するのではなく、linuxBean(8)Obkeyでショートカットキーを設定でやったようにObkeyでやってみます。

まず左にウィンドウをスナップさせるショートカットキーを作ることにします。

linuxBeanの豆メニュー→設定→Obkey。


Insert sibling keybindボタンをクリック。


Keyのところをクリックして「新しいアクセラレーター」と表示にします。

この状態で左に画面をスナップさせるショートカットキーを押します。

今回は「Alt+左矢印」を押しました。


「Alt+Left」とKey欄に入りました。


右下のAction欄のInsert Actionボタンをクリック。


「Focus」というActionsが追加されるのでそれをクリックしてでてくるメニューを使ってこれを変更します。

UnmaximizeFull
MaximizeVert
MoveResizeTo
MoveToEdgeWest

この順にActionを登録しMoveResizeToのwidthは50%にします。


これでAlt+左矢印キーを押すとアクティブウィンドウが左半分にスナップします。


動作を試したい場合は設定を保存すると変更が反映されます。


この状態でウィンドウは左右には動かせますが、MaximizeVertが効いていて上下の高さは変更できません。

それを解除するショートカットキーはあとで作ります。

今度は同じようにして右半分にスナップさせるショートカットキーAlt+右矢印を作ります。


最後のアクションがMoveToEdgeWestからMoveToEdgeEastになっただけです。


最後に上下に固定されたウィンドウの高さを解除するショートカットキーを作ります。

「Alt+下矢印」にUnmaximizeFullを設定します。

これでAlt+下矢印でMaximizeVertが解除されます。

そのほか各ウィンドウにある最大化ボタンを2回クリックしても解除されます。


MaximizeVertの代わりにMaximaizeHorzにして、MoveResizeToでheigthを50%、MoveToEdgeNorthにすれば上にウィンドウをスナップさせることも可能です。

VirtualBoxのゲストOSのlinuxBeanではVitrtualBox自体のウィンドウの大きさの変更に追随できていないようで、何回かキーボードショートカットを実行しないとウィンドウが隅に寄らないことがありました。

ウィンドウの最大化ボタンでウィンドウの一方向のみの最大化を解除できるようにする


「Alt+←」で左端に、「Alt+→」で右端に、「Alt+↑」で上端に、「Alt+↓」で下端にウィンドウを寄せれるようにしたためにウィンドウのスナップを解除する適当なショートカットキーの割当を思いつかなくなってしまいました。

Help:Bindings - Openboxを読んでいるとMouse bindingsという項目があり、~/.config/openbox/lxde-rc.xmlの<mouse></mouse>を編集すればウィンドウのボタンなどの動作を変更できることがわかりました。

そこでウィンドウの最大化ボタンをクリックすればスナップを解除できるように設定しました。

linuxBean14.04(7)GeanyでLibreOfficeのPythonマクロ編集でインストールしたGeanyで~/.config/openbox/lxde-rc.xmlを開きます。

<mouse>は411行目からあります。


context要素が20個あります。

"Maximaize"がウィンドウにある最大化ボタンの動作の設定になります。


<mousebind action="Click" button="Left">が最大化ボタンを左クリックしたときの設定になります。

それを以下のように書き換えました。
      <mousebind action="Click" button="Left">
        <action name="if">
          <maximizedvertical>yes</maximizedvertical>
          <then>
            <action name="UnmaximizeFull"/>
          </then>
          <else>
            <action name="if">
              <maximizedhorizontal>yes</maximizedhorizontal>
              <then>
                <action name="UnmaximizeFull"/>
              </then>
              <else>
                <action name="ToggleMaximizeFull"/>
              </else>
            </action>
          </else>
        </action>
      </mousebind>
垂直方向か水平方向いずれかに最大化されているときは最大化を解除するようにしました。

ファイルを保存します。

Terminalで、openbox --reconfigure、を実行し変更を反映させます。

これでウィンドウの最大化ボタンで一方向のみの最大化を解除できるようになりました。

参考にしたサイト


LXDE - Wikipedia
linuxBeanで採用されているデスクトップ環境。

Openbox - Wikipedia
LXDEで採用されているウィンドウマネージャ。

[lubuntu] Window snapping for OpenBox?
Aeroスナップのようにドラッグでウィンドウのスナップさせるにはウィンドウマネージャを乗り換えるしかないようです。

Openbox - ArchWiki
Openboxでのウィンドウのスナップの方法。

"Aero Snap" in openbox
Openboxでエアロスナップする方法について議論されています。

lawl/opensnap
Openboxでエアロスナップするツールですがもう更新停止されているようです。

A Better Aero Snap with Openbox – Learning to Code
Openboxでウィンドウをスナップするショートカットキーの設定方法。

Help:Bindings - Openbox
linuxBeandではrc.xmlではなくlxde-rc.xmlを編集します。

Help:Actions - Openbox
OpenBoxのactionの解説。Obkeyで選べるAction名と少し異なるものがあるのはバージョンの差異?

次の関連記事:linuxBean14.04(11)Bracketsの拡張機能をインストール

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ