web-dev-qa-db-ja.com

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

私はしばらく見て回ったが、私の次の問題への答えを見つけることができませんでした:

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

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

35
Jahn

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のmanページをご覧ください。あなたはその機能のより多くのために使用を見つけるかもしれません。

20
S Prasanth

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

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

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

    1. ターミナルを開きます。
    2. touch ~/.customxsessionと入力し、Enterキーを押します。
    3. gedit ~/.customxsessionと入力し、Enterキーを押します。
    4. これで、空のファイルでテキストエディターが開きます。
    5. このファイルでXセッションを定義する必要があります。回答の下部に「空欄に記入」ファイルのサンプルを作成しました。 IthinkUbuntuは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
10
p0llard

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台のディスプレイを処理する方法がわかりません。

1
jkuruvila