私はしばらく見て回ったが、私の次の問題への答えを見つけることができませんでした:
Unityを使用したUbuntu 12.04で6台のデスクトップをセットアップしています。起動時に、毎朝、同じ5つまたは6つのプログラムを開くルーチンを実行します。特定のワークスペースでそれぞれを開きます。これを自動化したいと思います。これをスクリプト化または構成する方法はありますか?
追加の質問:問題をさらに複雑にするために、ツインビューモードで2つの画面を実行しています。実際には、特定の画面、できれば全画面で各プログラムを起動する必要があります。
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ページをご覧ください。あなたはその機能のより多くのために使用を見つけるかもしれません。
ここには2つの「問題」があります。1つ目は、ログイン時に特定のプログラムセットを開くことです。 2つ目は、特定のワークスペースでそれらを開くことです。私は両方を別々に扱います:
カスタムXセッションの作成
これは非常に簡単です。 Xセッションスクリプトを作成し、LightDMに使用するよう指示するだけです。ターミナルから目的のプログラムを起動するコマンドを知っている必要があります。
touch ~/.customxsession
と入力し、Enterキーを押します。gedit ~/.customxsession
と入力し、Enterキーを押します。touch /usr/share/xsessions/multi.desktop
と入力し、Enterキーを押します。gedit /usr/share/xsessions/multi.desktop
と入力し、Enterキーを押します。ワークスペースへのプログラムの割り当て
これも非常に簡単ですが、デフォルトではUbuntuにインストールされていない追加のソフトウェアが必要です。
Sudo apt-get install compizconfig-settings-manager
を実行するだけです)。ログイン
ログインしたら、UbuntuにカスタムXセッションを使用することを伝える必要があります。
問題
あなたが小さな間違いをした場合、またはこの答えを書いているときに私が間違いを犯した場合、かなり多くのことがこれで間違っていた可能性があります。何かがうまくいかない場合は、手紙の指示に従っていることを確認し、そうでない場合は何でも修正してください。それでも問題が解決しない場合は、コメントを残してください。
〜/ .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
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台のディスプレイを処理する方法がわかりません。