特定のワークスペースでプログラムのセットを開くスクリプトを作成するにはどうすればよいですか?


35

私はしばらく見て回ったが、私の次の問題に対する答えがわからなかった。

Unityを使用したUbuntu 12.04で6台のデスクトップをセットアップしています。起動時に、毎朝、同じ5​​つまたは6つのプログラムを開くルーチンを実行します。特定のワークスペースでそれぞれを開きます。これを自動化したいと思います。これをスクリプト化または構成する方法はありますか?

追加の質問問題をさらに複雑にするために、ツインビューモードで2つの画面を実行しています。実際には、特定の画面、できれば全画面で各プログラムを起動する必要があります。


1
これは役に立つかもしれません。それはwmctrlを指しますが、私はそれを使用していない:movingtofreedom.org/2010/08/10/...
RobotHumans

これは役に立つかもしれません。askubuntu.com/questions/87002/...
Suhaib

1
これを非常に単純なビューから見て、マシンをサスペンドモードのままにしておくことができない理由はありますか?私は...あなたはより恒久的な解決策を見つけている間、それはあなたのためのクイックフィックスだろうと思うだろう
Adeyfk

デスクトップとは、ワークスペースのことですか?
p0llard

KDEアクティビティがこれを実行できる場合があります。
機械式カタツムリ

回答:


20

compdconfigを使用するjdp407のアイデアは、特定のアプリケーションを特定のワークスペースに関連付け、そのアプリケーションが開かれるたびに、対応するワークスペースに配置されるようにします。これが望ましくない場合は、次を実行できます。

1)インストール wmctrl

sudo apt-get install wmctrl

2)次の内容のファイルを作成し、実行可能にします

#!/bin/bash
wmctrl -s 0 #Switches to workspace 0 [workspaces are numbered from 0]
gnome-terminal & #Say you want a terminal in the 0th workspace
nautilus & #Maybe a file browser too
sleep 2 #Windows take some time to open. If you switch immediately, they'll open up in wrong workspaces. May have to change the value 2.
wmctrl -s 1 #Switches to workspace 1
firefox & #You get the idea. Continue for all workspaces
sleep 2
wmctrl -s 0 #You will be left at this workspace when the script finishes executing

3).xsessionrcホームディレクトリからこのスクリプトを呼び出して(このファイルを作成する必要がある場合)、ログインごとにプロセスを自動化します。または、必要に応じて端末から呼び出すことができます。編集:.xsessionrcではなく、「スタートアップアプリケーション」に配置します。.xsessionrcは、デスクトップ環境の読み込みが完了する前でも実行されます。


jdp407の提案に従ってカスタムxsessionを作成すると、2つのセッションから選択できます。1つはこれらのアプリケーションを自動的に開き、もう1つは選択しません。しかし、それは私には不要のようです。


ワークスペースへの切り替え、適切なアプリケーションを開いてから次のアプリケーションへの切り替えに時間がかかると感じた場合は、すべてのアプリケーションを一度に開き、を使用してウィンドウを移動できますwmctrl。例えば

wmctrl -r 'Firefox' -t 1

Firefoxのタイトルにあるウィンドウをワークスペース1に移動します。複数のウィンドウが存在する場合、管理対象のウィンドウのリストの最初のウィンドウwmctrlが移動されます。これを使用するには、アプリケーションによって作成されるウィンドウのタイトルを知る必要があります。それが私がこれを主要なオプションとして提案しなかった理由です。最も一般的に使用されるアプリの場合のようにタイトルが明確になる場合は、これが道です。


全画面でアプリケーションを開く:

gnome-terminalなどの一部のアプリケーションには、最大化状態またはフルスクリーンモードでウィンドウを開くためのコマンドライン引数があります。そのようなオプションが存在する場合は、それらを使用します。それ以外の場合はwmctrl、次のように使用します

wmctrl -r 'prasanth@nb37' -b add,maximized_vert,maximized_horz

これにより、(既存の)ターミナルウィンドウが最大化されます。

wmctrl -r 'prasanth@nb37' -b add,fullscreen

これにより、ウィンドウが全画面モードになります。


経るwmctrlのマニュアルページを参照してください。あなたはその機能のより多くのために使用を見つけるかもしれません。


1
どうやらwmctrlを使用してワークスペースを選択することは、Lynx後の配布では機能しません。「-s」オプションは「0」にのみ設定できます。そうしないと、エラーがスローされるか、何も実行されません。出典:movingtofreedom.org/2010/08/10/…– p0llard 13
1

私は12.04をunity2d(視覚効果なし)で使用します。視覚効果を有効にすると動作しないようです。
S Prasanth

wmctrlここでは正常に動作します(LXDEおよびXFCE、xcompgrによる合成が有効)
グルタニメート

Mint 14でシナモンを使用してくれてありがとう。
k102

Ubuntu 14.04ではwmctrl -o X,Y、特定のビューポートに移動するために使用します。複数のモニターがある場合は、を使用してアプリケーションを他のモニターに移動できますwmctrl -r "App name" -e G,X,Y,W,H。統一された視覚効果でうまく機能します。
ネイト14

10

ここには2つの「問題」があります。1つ目は、ログイン時に特定のプログラムセットを開くことです。2つ目は、特定のワークスペースでそれらを開くことです。私は両方を別々に扱います:

  1. カスタムXセッションの作成

    これは非常に簡単です。Xセッションスクリプトを作成し、LightDMに使用するよう指示するだけです。ターミナルから目的のプログラムを起動するコマンドを知っている必要があります。

    1. ターミナルを開きます。
    2. と入力しtouch ~/.customxsession、Enterキーを押します。
    3. と入力しgedit ~/.customxsession、Enterキーを押します。
    4. これで、空のファイルでテキストエディターが開きます。
    5. このファイルでXセッションを定義する必要があります。回答の下部に「空欄に記入」ファイルのサンプルを作成しました。Ubuntuはgnome-sessionをウィンドウマネージャーとして使用していると思いますが、おそらく間違っています。現時点ではテストできません(ラップトップが壊れています)。期待通りに動作しない場合(例:Unityの代わりにGnomeをロードする場合)、調査が必要になる場合があります。
    6. ファイルを保存し、Geditを閉じます。
    7. と入力しtouch /usr/share/xsessions/multi.desktop、Enterキーを押します。
    8. と入力しgedit /usr/share/xsessions/multi.desktop、Enterキーを押します。
    9. これで、空のファイルでテキストエディターが開きます。
    10. 回答の下部にあるコード(「/usr/share/xsessions/multi.desktop:」というラベル)をコピーしてGeditに貼り付けます。
    11. ファイルを保存し、Geditを閉じます。
    12. リブート。ログイン画面が表示されたときに、利用可能なセッションを見ると(ユーザー名の横にある小さなUbuntuロゴをクリック)、マルチセッションと呼ばれるものが表示されます。ログインすると、Xセッションスクリプトに入れたプログラムが自動的に開きます。
  2. ワークスペースへのプログラムの割り当て

    これも非常に簡単ですが、デフォルトではUbuntuにインストールされていない追加のソフトウェアが必要です。

    1. compizconfig-settings-managerをインストールします(ソフトウェアセンターを使用するか、単に実行します sudo apt-get install compizconfig-settings-managerターミナルで)。
    2. ダッシュボードからCompizConfig設定を開きます。
    3. 「Windowsの配置」プラグインを開きます(「ウィンドウ管理」セクションにあります)。
    4. 「ビューポートが固定されたウィンドウ」セクションで「新規」をクリックします。
    5. 「プラス」アイコンをクリックします。
    6. 「タイプ」を「ウィンドウタイトル」に設定し、「値」ボックスにいずれかのプログラムのウィンドウタイトルを入力します。「関係」が「AND」に設定されていることを確認し、「追加」をクリックします。
    7. 「X」および「Y」ボックスに数値を入力して、ワークスペースを設定します。「X」に4つのワークスペースがある場合、「1」は左、「2」は右、「Y」は「1」が上、「2」が下になります。6つのワークスペースがあるように見えますが、設定方法に応じて、「Y」を「3」に設定すると下の行が選択され、「X」を「3」に設定すると3番目の列が選択されます。
    8. ワークスペースを割り当てる残りのプログラムについて、手順4〜7を繰り返します。
    9. CompizConfig設定を閉じます。
  3. ログインする

    ログインしたら、UbuntuにカスタムXセッションを使用することを伝える必要があります。

    1. リブート。
    2. ログイン画面が表示されたときに、利用可能なセッションを見ると(ユーザー名の横にある小さなUbuntuロゴをクリック)、マルチセッションと呼ばれるものが表示されます。ログインすると、Xセッションスクリプトに入れたプログラムが自動的に開き、選択したワークスペースに割り当てられます。
  4. 問題点

    あなたが小さな間違いをした場合、またはこの答えを書いているときに私が間違いを犯した場合、かなり多くのことがこれで間違っていた可能性があります。何かがうまくいかない場合は、手紙の指示に従っていることを確認し、そうでない場合は何でも修正してください。それでも問題が解決しない場合は、コメントを残してください。

〜/ .customxsession:

#!/usr/bin/env bash
program-command-1 &
program-command-2 &
program-command-3 &
program-command-4 &
program-command-5 &
program-command-6 &
exec gnome-session

/usr/share/xsessions/multi.desktop:

[Desktop Entry]
Name=Multi-Session
Exec=/home/your-username/.customxsession

1

StarupApplications Programに必要なアプリケーションを追加してから、このスクリプトも追加します。これは私のスクリプトです:ManageWorkSpaces.sh

echo "Jeril"
wmctrl -r NetBeans IDE 7.1.1 -t 0
wmctrl -r /bin/bash -t 1
wmctrl -r Google Chrome -t 2
wmctrl -r jerilkuruvila - Skype™ -t 3

//端末にフォーカス

wmctrl -a NetBeans IDE 7.1.1   -t 0 

しかし、2台のディスプレイを処理する方法がわかりません。


こんにちはジェリル!Ask Ubuntuへようこそ!あなたのソリューションは私にはうまくいきません。を実行するとwmctrl -d、「デスクトップ」は1つしかありません。Ubuntu 12.10のUnityでこれをテストしましたか?
フリム

こんにちはFlimm、私はwmctrl -rを使用しています。4つのワークスペースがあります。私のUbuntuバージョンは12.04
jkuruvila
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.