web-dev-qa-db-ja.com

コマンドを使用してアプリケーションをワークスペース1から2にシフトする方法

コマンドラインであるワークスペースで実行中のアプリケーションを別のワークスペースに切り替える方法はありますか? 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

しかし、ウィンドウは効果がなく、同じ作業スペースに残りました。

9
Registered User

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では機能しないようです。

11
skyblue

ここにあなたが尋ねるものを実装する私のスクリプトがあります: 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の投稿で説明されているように機能します。また、ウィンドウを他のワークスペースに送信する機能もあります。

3
Norswap

Compizを使用している場合は、 compiz wiki をご覧ください。いくつかの例があります。 「put」プラグインを見てください。

./compiz-dbus-send.py put put_viewport_right_key
2
nsg

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。 を参照してください。

1
user76204

まず、コロンはアクティブウィンドウを示す: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
1
geekosaur

この質問 の解決策として指定されているスクリプトを少し変更することにより、次のコマンドは、指定されたウィンドウを現在のワークスペースに(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を追加/減算することで、ウィンドウがワークスペースの数だけターゲットウィンドウから離れます。

0
ivotron

試してください:

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`

一度だけ私を働かせてください、そして私は理由がわかりません!

0
highwind