カスタム幅でウィンドウタイリングを自動化するにはどうすればよいですか? (シナモン)

Linux Mint 17 Cinnamon 2.4.8を実行しています。

私は本当にxdotoolが好きですが、それはシナモンの素晴らしいスナップ/タイル機能と衝突します。

次のコマンドを実行しても、現在のウィンドウが角/横/全画面にスナップされている場合は動作しません

xdotool getactivewindow windowsize 500 1080 windowmove 1420 0

スナップしたままにしておきたいのですが、カスタム幅を使用します。それが NOT スナップされている場合、それは機能します。

主な目標:幅500で、ウィンドウを右側に合わせる(コマンドによる)

しかし、それはおそらくxdotoolでは不可能です。

他には何もインストールしないで、シナモンですべてを実行することをお勧めしますが、wmctrlで自分の目標を達成できると誰かが考えている場合は、それを試してみます。

目標出力対電流出力

http://s115.photobucket.com/user/ericrazy2000/media/snapped .png.html

http://s115.photobucket.com/user/ericrazy2000/media/NOTsnapped .png.html

6
nl ru de

4 答え

このコマンドはあなたのために働きますか( wmctrl を使います):

dist500fromright=$((`xrandr | grep \* | awk '{print $1}' | sed 's/x.*$//'`-500));y=`xrandr | grep \* | awk '{print $1}' | sed 's/^.*x//'`;wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$dist500fromright,0,500,$y

壊す

xrandr outputs a list of geometries and the * shows the current mode. For example:

$ xrandr | grep \*
   1920x1200      60.0*+

awk を使用して出力の最初の列をキャプチャし、 sed を使用して x 文字で区切られた寸法を取得します。

$ xrandr | grep \* | awk '{print $1}' 
1920x1200

$ xrandr | grep \* | awk '{print $1}' | sed 's/x.*$//'
1920

Bashでは、コマンド出力を $((...))で囲むことで数学的に処理できます。

$ echo 5+2
5+2

$ echo $((5+2))
7

上記のように、コマンドを $((...))で囲み、画面の右端から500ピクセルのx座標位置を取得するために500を引きます。

$ echo  $((`xrandr | grep \* | awk '{print $1}' | sed 's/x.*$//'`-500))
1420

注意してください、1920年から500を引くために、私達は最初にバッククォートに1920年を生み出すコマンドを入れなければなりませんでした。

上記の出力を変数 dist500fromright に設定し、画面のy方向の寸法を y 変数に格納するようにします。

$ dist500fromright=$((`xrandr | grep \* | awk '{print $1}' | sed 's/x.*$//'`-500))

$ y=`xrandr | grep \* | awk '{print $1}' | sed 's/^.*x//'`;

これでwmctrlコマンドを実行する準備が整いました

$ wmctrl -r :ACTIVE: -b add,maximized_vert

$ wmctrl -r :ACTIVE: -e 0,$dist500fromright,0,500,$y

後者のコマンドはアクティブウィンドウのサイズを変更して移動し、前者はスナップされたウィンドウのサイズ変更/移動を許可します。

3
追加された
xdotool key F11 #hit full screen >
追加された 著者 Neil G,
@TuxForLife、シナモンスナップ用に更新しました。それがうまくいくかどうか私に知らせてください。
追加された 著者 Neil G,
@TuxForLife、それがあなたのために働くかどうか私に知らせてください。
追加された 著者 Neil G,
@TuxForLife、このコマンドはウィンドウを画面の右端に揃えませんか?それが何をしているのか説明(またはスクリーンショットを投稿)してもらえますか? こちらから入手できます。
追加された 著者 Neil G,
@TuxForLife、私はあなたの正確な設定を見ることができればいいのに(私にはそのギャップがありません)、あなたはいつでも -500)-500 + 2)に変えてみることができます) code>または -500 + 4))またはそれがあなたにとって正しいように見えるまで何でも。
追加された 著者 Neil G,
それで、「スナップされる」とは、曲線の境界を意味しますか、それとも他に何かありますか?
追加された 著者 Neil G,
@TuxForLife、角のない境界線のスタイルを変更する方法がわかりません。がんばろう!
追加された 著者 Neil G,
こんにちは。これでFirefoxはフルスクリーンモードになります。ウィンドウサイズには影響しません。 Firefoxだけでなく、どんなウィンドウでもいいのですが。
追加された 著者 sengs,
あなたのコマンドは、上の私のxdotoolの例とほとんど同じように機能します。それはまたxdotoolメソッドと同じ問題を扱います:1.それがタイル張り/スナップされている場合それはウィンドウを動かしません。それは窓をタイル張りしたままにしたり/最後にはめたままにしない
追加された 著者 sengs,
私はその恩恵のために時間がなくなりました。それらを無駄にするのではなく、誰かに賞金ポイントを渡したいと思います。誰かが私が期待していた答えを提供しない限り、私は最初に次の質問に私に最も良い答えを与える人に賞金ポイントを与えることができます。 xdotoolだけを使用してウィンドウのスナップを解除したり、画面を非表示にしたりするにはどうすればよいですか。
追加された 著者 sengs,
代わりにxdotoolでジオメトリを取得することをお勧めします。あなたの方法は私が1台のモニターしか持っていないと仮定しています。 width = $(xdotool getdisplaygeometry | cut -d '' -f1);高さ= $(xdotool getdisplaygeometry | cut -d '' -f2)
追加された 著者 sengs,
あなたの方法を使用して、それはそれを本当にうまく位置づけます、しかし唯一の問題はそれが公式に「スナップ」されないということです私がシナモンで命令をすることができる方法がありますか?
追加された 著者 sengs,
角のない境界線を変更するだけではありません。我々の現在の方法でそれをすることはウィンドウからスクリーンの端までまだわずかなギャップを残す。私はそれがxdotoolとwmctrlの制御を超えていると思う、そしてそれはCinnamonでなされるべきです。とにかく助けてくれてありがとう!
追加された 著者 sengs,
それがスナップされるとき、湾曲した境界があるべきではありません。わかりにくい場合は、2つのリンクを付けます。スナップとスナップなしの比較ができます
追加された 著者 sengs,
スナップしたもの、手動でスナップした後、ウィンドウの端をドラッグしてサイズを調整しました。 s115.photobucket.com/user/ericrazy2000/media/snapped.png htm‌ l s115.photobucket.com/user/ ericrazy2000/media /…
追加された 著者 sengs,
あなたはとても親しいです!しかし、私は最後のウィンドウを右にスナップしたいと思います。それはほとんど、そこに、それはちょうど私の画面の端にスナップする必要があります
追加された 著者 sengs,

このコマンドはあなたのために働きますか( wmctrl を使います):

dist500fromright=$((`xrandr | grep \* | awk '{print $1}' | sed 's/x.*$//'`-500));y=`xrandr | grep \* | awk '{print $1}' | sed 's/^.*x//'`;wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$dist500fromright,0,500,$y

壊す

xrandr outputs a list of geometries and the * shows the current mode. For example:

$ xrandr | grep \*
   1920x1200      60.0*+

awk を使用して出力の最初の列をキャプチャし、 sed を使用して x 文字で区切られた寸法を取得します。

$ xrandr | grep \* | awk '{print $1}' 
1920x1200

$ xrandr | grep \* | awk '{print $1}' | sed 's/x.*$//'
1920

Bashでは、コマンド出力を $((...))で囲むことで数学的に処理できます。

$ echo 5+2
5+2

$ echo $((5+2))
7

上記のように、コマンドを $((...))で囲み、画面の右端から500ピクセルのx座標位置を取得するために500を引きます。

$ echo  $((`xrandr | grep \* | awk '{print $1}' | sed 's/x.*$//'`-500))
1420

注意してください、1920年から500を引くために、私達は最初にバッククォートに1920年を生み出すコマンドを入れなければなりませんでした。

上記の出力を変数 dist500fromright に設定し、画面のy方向の寸法を y 変数に格納するようにします。

$ dist500fromright=$((`xrandr | grep \* | awk '{print $1}' | sed 's/x.*$//'`-500))

$ y=`xrandr | grep \* | awk '{print $1}' | sed 's/^.*x//'`;

これでwmctrlコマンドを実行する準備が整いました

$ wmctrl -r :ACTIVE: -b add,maximized_vert

$ wmctrl -r :ACTIVE: -e 0,$dist500fromright,0,500,$y

後者のコマンドはアクティブウィンドウのサイズを変更して移動し、前者はスナップされたウィンドウのサイズ変更/移動を許可します。

3
追加された
@TuxForLife、シナモンスナップ用に更新しました。それがうまくいくかどうか私に知らせてください。
追加された 著者 Neil G,
xdotool key F11 #hit full screen >
追加された 著者 Neil G,
@TuxForLife、このコマンドはウィンドウを画面の右端に揃えませんか?それが何をしているのか説明(またはスクリーンショットを投稿)してもらえますか? こちらから入手できます。
追加された 著者 Neil G,
@TuxForLife、私はあなたの正確な設定を見ることができればいいのに(私にはそのギャップがありません)、あなたはいつでも -500)-500 + 2)に変えてみることができます) code>または -500 + 4))またはそれがあなたにとって正しいように見えるまで何でも。
追加された 著者 Neil G,
それで、「スナップされる」とは、曲線の境界を意味しますか、それとも他に何かありますか?
追加された 著者 Neil G,
@TuxForLife、それがあなたのために働くかどうか私に知らせてください。
追加された 著者 Neil G,
@TuxForLife、角のない境界線のスタイルを変更する方法がわかりません。がんばろう!
追加された 著者 Neil G,
こんにちは。これでFirefoxはフルスクリーンモードになります。ウィンドウサイズには影響しません。 Firefoxだけでなく、どんなウィンドウでもいいのですが。
追加された 著者 sengs,
私はその恩恵のために時間がなくなりました。それらを無駄にするのではなく、誰かに賞金ポイントを渡したいと思います。誰かが私が期待していた答えを提供しない限り、私は最初に次の質問に私に最も良い答えを与える人に賞金ポイントを与えることができます。 xdotoolだけを使用してウィンドウのスナップを解除したり、画面を非表示にしたりするにはどうすればよいですか。
追加された 著者 sengs,
代わりにxdotoolでジオメトリを取得することをお勧めします。あなたの方法は私が1台のモニターしか持っていないと仮定しています。 width = $(xdotool getdisplaygeometry | cut -d '' -f1);高さ= $(xdotool getdisplaygeometry | cut -d '' -f2)
追加された 著者 sengs,
あなたの方法を使用して、それはそれを本当にうまく位置づけます、しかし唯一の問題はそれが公式に「スナップ」されないということです私がシナモンで命令をすることができる方法がありますか?
追加された 著者 sengs,
角のない境界線を変更するだけではありません。我々の現在の方法でそれをすることはウィンドウからスクリーンの端までまだわずかなギャップを残す。私はそれがxdotoolとwmctrlの制御を超えていると思う、そしてそれはCinnamonでなされるべきです。とにかく助けてくれてありがとう!
追加された 著者 sengs,
それがスナップされるとき、湾曲した境界があるべきではありません。わかりにくい場合は、2つのリンクを付けます。スナップとスナップなしの比較ができます
追加された 著者 sengs,
スナップしたもの、手動でスナップした後、ウィンドウの端をドラッグしてサイズを調整しました。 s115.photobucket.com/user/ericrazy2000/media/snapped.png htm‌ l s115.photobucket.com/user/ ericrazy2000/media /…
追加された 著者 sengs,
あなたはとても親しいです!しかし、私は最後のウィンドウを右にスナップしたいと思います。それはほとんど、そこに、それはちょうど私の画面の端にスナップする必要があります
追加された 著者 sengs,
あなたのコマンドは、上の私のxdotoolの例とほとんど同じように機能します。それはまたxdotoolメソッドと同じ問題を扱います:1.それがタイル張り/スナップされている場合それはウィンドウを動かしません。それは窓をタイル張りしたままにしたり/最後にはめたままにしない
追加された 著者 sengs,

最初にいくつかの最大化フラグを削除する必要があります。

wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz;\
xdotool getactivewindow windowsize 500 1080 windowmove 1420 0;\
wmctrl -r :ACTIVE: -b add,maximized_vert
3
追加された
今はどう ?
追加された 著者 fumanchu,
あなたはおそらくwmctrlかxdotoolのどちらかを使ってウィンドウをタイル張りすることができないでしょう。その理由は、 xprop の出力からわかるように、 muffin (cinamonウィンドウマネージャ)はそのために非標準の状態(_NET_WM_STATE_TILED)を使用するためです。私はあなたが現在存在するより高いレベルのツールからそれほど合理的に効率的になることができるとは思わない。あなたはマフィンのCコードをハックする必要があるでしょう。
追加された 著者 fumanchu,
これは確かに少し助けになりました。ウィンドウが上下に並べて表示されている場合、コマンドは機能し、ウィンドウのサイズを変更/移動します。ただし、ウィンドウが左右に並べて表示されている場合、コマンドは移動/サイズ変更を行いません。また、ウィンドウの最終的な状態を画面の端に合わせるようにしたいと思います。
追加された 著者 sengs,
ええ、私はxdotoolでマウスをドラッグする非常にファンキーな解決策を考えました。それは実際に私が予想していたよりもずっとうまく機能しています。 xdotoolを使って「いくつかの最大化フラグを取り除く」方法を私に提供できれば、私はあなたに賞金ポイントを与える
追加された 著者 sengs,
うーん。うまく機能している間は、スナップモードにはなりません。影が見え、上隅が丸くなっているので、スナップモードではないことがわかります。ウィンドウがスナップされるならば、これは起こりません
追加された 著者 sengs,
私はその恩恵のために時間がなくなりました。それらを無駄にするのではなく、誰かに賞金ポイントを渡したいと思います。誰かが私が期待していた答えを提供しない限り、私は最初に次の質問に私に最も良い答えを与える人に賞金ポイントを与えることができます。 xdotoolだけを使用してウィンドウのスナップを解除したり、画面を非表示にしたりするにはどうすればよいですか。
追加された 著者 sengs,

これにはwmctrlを使用できます。

古いLinuxミントメイトフォーラムからの例として、私はあなたがシナモンでもそれを使用できると思います:

wmctrl -r :ACTIVE: -e 0,0,0,width,height

これはうまくいくはずです。

あなたのスクリーンがフルスクリーンであるならば、あなたは使うべきです:

wmctrl -r :ACTIVE: -b remove,maximized_horz,maximized_vert
wmctrl -r :ACTIVE: -e 0,0,0,width,height

ソース:

http://forums.linuxmint.com/viewtopic.php?f=90&t=109020

またはctrl + numpadを使って目的の場所を取得してください。

ソース:

http://www.reddit.com/r/linux/comments/tbqky/ window_snapping_pseudotiling_wm/

0
追加された
他の答えと私がした前の議論を見てください。手動でスナップできることは知っていますが、コマンドで実行しようとしています。
追加された 著者 sengs,