コマンドラインであるワークスペースで実行中のアプリケーションを別のワークスペースに切り替える方法はありますか? Ubuntu 10.04を使用します
PDATE1
以下の提案に従って
wmctrl -l
0x02200003 -1 bond Bottom Expanded Edge Panel
0x02200049 -1 bond Top Expanded Edge Panel
0x02000020 0 bond x-nautilus-desktop
0x04e00004 0 bond bond@bond: ~
0x0482a380 0 bond OMG! Ubuntu! | wmctrl - Chromium
0x05000072 0 bond how to shift applications from workspace 1 to 2 using command - Ask Ubuntu - Stack Exchange - Google Chrome
今入力するとき
wmctrl -r :OMG! Ubuntu! | wmctrl - Chromium: -t 2 No window was specified.
それで、上記の間違いは何ですか?
PDATE2
私は試した
wmctrl -r 0x05000072 -t 2
しかし、ウィンドウは効果がなく、同じ作業スペースに残りました。
Metacity(Unity 2-d)などの準拠ウィンドウマネージャーを使用している場合、wmctrlを使用してウィンドウを別のデスクトップに切り替えることができます。構文はwmctrl -r :ACTIVE: -t <DESKTOP>
です。 wmctrl -s <DESKTOP>
を使用して現在のデスクトップを変更することもできます。デスクトップ番号は0から始まります。1行では、次のようになります。
wmctrl -r :ACTIVE: -t 1; wmctrl -s 1
アクティブなウィンドウ以外のウィンドウを別のデスクトップに切り替える場合は、タイトルのテキストを-rの引数として使用します。例えば:
wmctrl -r "Chromium" -t 1
または、wmctrl -l
を使用して使用可能なウィンドウをリストし、特別な文字列:ACTIVE:
の代わりにID番号を-rに渡すことができます。 idを渡すときは、-iも追加する必要があります。例えば:
$ wmctrl -l
0x03e00189 0 hostname Ask Ubuntu - Chromium
$ wmctrl -i -r 0x03e00189 -t 2
(wmctrlはSudo apt-get install wmctrl
を使用してUbuntuにインストールできます。)現時点では、残念ながら標準のUnityでは機能しないようです。
ここにあなたが尋ねるものを実装する私のスクリプトがあります: https://github.com/norswap/wmov/blob/master/wmov.sh
現在のフォームでは、明示的なデスクトップ番号を選択するか、ウィンドウを(wmctrl
-r
オプションのように、大文字と小文字を区別しない文字列をサブストリングタイトルと照合することにより選択)現在のデスクトップからデスクトップの方向を示すことにより。
例えば:
./wmov.sh mov "Google Chrome" 3 # sends Chrome to desktop 3 (bottom left)
./mov.sh mov Skype right # sends Skype to the desktop to the right of
# the current desktop (if any)
実際、desguaの投稿で説明されているように機能します。また、ウィンドウを他のワークスペースに送信する機能もあります。
Compizを使用している場合は、 compiz wiki をご覧ください。いくつかの例があります。 「put」プラグインを見てください。
例
./compiz-dbus-send.py put put_viewport_right_key
xdotool
でこれを行うことは可能ですが、butcompiz
を使用している場合、このソリューションは適用できない可能性があります。これを覚えておいてください。
特定のウィンドウ(アクティブウィンドウ)を別のワークスペースに切り替えるには、次を使用できます。
xdotool getactivewindow set_desktop_for_window 1
または、スクリプトの場合、次のコマンドを使用して、特定のプログラムのウィンドウを特定のワークスペースに切り替えることができます。
xdotool search --class firefox set_desktop_for_window %@ 1
このコマンドは、firefox
ウィンドウを検索して見つけ、ワークスペース1に転送して、最小化された状態で表示されます。 firefox
をデフォルトのデスクトップに戻すには、コマンドの最後で1を0に置き換えるだけです。別のウィンドウを別のワークスペースに送信するには、firefox
を別のプログラム名に置き換えるだけです。
%@
を使用して--search
パラメーターから渡されるウィンドウを表すことは、ウィンドウが転送されないかのように重要です。
詳細については、man xdotool
および buntu manpages online。 を参照してください。
まず、コロンはアクティブウィンドウを示す:ACTIVE:
マジックトークンの一部です。あなたは普通それを望んでいません。第二に、スペースを含む文字列を引用符で囲む必要があります。
また、ウィンドウID(各行の先頭にある0x...
)を取得し、タイトルを機能させる代わりにそれを使用することもできます。
$ wmctrl -r 'OMG! Ubuntu! | wmctrl - Chromium' -t 2 # wherever it is, move it to 2
$ wmctrl -r 0x0482a380 -t 2 # same thing
この質問 の解決策として指定されているスクリプトを少し変更することにより、次のコマンドは、指定されたウィンドウを現在のワークスペースに(compizで)表示します。
#!/bin/bash
SCREEN_W=$(xwininfo -root | sed -n 's/^ Width: \(.*\)$/\1/p')
SCREEN_H=$(xwininfo -root | sed -n 's/^ Height: \(.*\)$/\1/p')
NAME="$1"
wmctrl -xlG | awk -v NAME="$NAME" '$7==NAME {print $1}' | while read WINS; do wmctrl -ir "$WINS" -e "0,0,0,$SCREEN_W,$SCREEN_H"; done
exit 0
任意のワークスペースが必要な場合、対応する$SCREEN_W
/$SCREEN_H
を追加/減算することで、ウィンドウがワークスペースの数だけターゲットウィンドウから離れます。
試してください:
wmctrl -r “window name(or any string in the title)” -t `wmctrl -d | grep “workspace name” | cut -d" " -f1`
説明させてください:wmctrlショーの助けを借りて
-r <WIN> -t <DESK> Move the window to the specified desktop.
<DESK> A desktop number. Desktops are counted from zero.
<WIN> This argument specifies the window. By default it's
interpreted as a string. The string is matched
against the window titles and the first matching
window is used. The matching isn't case sensitive
and the string may appear in any position
of the title.
The -i option may be used to interpret the argument
as a numerical window ID represented as a decimal
number. If it starts with "0x", then
it will be interpreted as a hexadecimal number.
wmctrl -d
はすべてのワークスペースをリストできますが、私のコンピューターでは次のように表示されます。
0-DG:1600x900 VP:N/A WA:0,0 1600x868コード 1 * DG:1600x900 VP:0,0 WA:0,0 1600x868プレイ 2 -DG:1600x900 VP:該当なしWA:0,01600x868調査
*は現在のワークスペースを意味します
ところで、wmctrl -l
はすべてのウィンドウ(既に知っている)をリストすることです。私のコンピューターでは次のようになっています。
0x05400008 1ユーザー-LinuxMintターミナル 0x03a0008e 0ユーザー-LinuxMint Mozilla Firefox
「DESK」は数字でなければならないため、grep “workspace name” | cut -d" " -f1
を使用して取得します。
たとえば、Firefoxをworkspace "code"に移動したい場合、次を使用できます。
wmctrl -r "firefox" -t 0
または
wmctrl -r "moz" -t `wmctrl -d | grep "code" | cut -d" " -f1`
しかし
wmctrl -r -i 0x03a0008e -t `wmctrl -d | grep "code" | cut -d" " -f1`
一度だけ私を働かせてください、そして私は理由がわかりません!