我环顾了一会儿,无法解决以下问题的答案:
我在带有Unity的Ubuntu 12.04上安装了六个桌面。在启动时,每天早晨,我都会执行打开相同的五六个程序的例程。我在特定的工作区上打开每个。我想让它自动化。有没有办法编写脚本或进行配置?
附加问题:为了使事情进一步复杂化,我正在双屏模式下运行两个屏幕。实际上,我实际上需要在特定屏幕上启动每个程序,最好是在全屏幕上启动。
我环顾了一会儿,无法解决以下问题的答案:
我在带有Unity的Ubuntu 12.04上安装了六个桌面。在启动时,每天早晨,我都会执行打开相同的五六个程序的例程。我在特定的工作区上打开每个。我想让它自动化。有没有办法编写脚本或进行配置?
附加问题:为了使事情进一步复杂化,我正在双屏模式下运行两个屏幕。实际上,我实际上需要在特定屏幕上启动每个程序,最好是在全屏幕上启动。
Answers:
jdp407使用compizconfig的想法是将一个特定的应用程序与一个特定的工作空间相关联,以便每次打开该应用程序时,都会将其放置在相应的工作空间中。如果不希望这样做,可以执行以下操作:
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,以便有两个会话可供选择,一个会话会自动打开这些应用程序,而另一个则不会。但这对我来说似乎是不必要的。
如果您觉得切换到工作区,打开适当的应用程序然后再切换到下一个工作很耗时,则可以一次性打开所有应用程序,然后使用来移动窗口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
的手册页。您可能会发现其更多功能有用。
wmctrl
在这里工作正常(LXDE和XFCE,通过启用
wmctrl -o X,Y
移动到特定视口。如果您有多台监视器,则可以使用将应用程序移至另一台监视器wmctrl -r "App name" -e G,X,Y,W,H
。具有统一的视觉效果,效果很好。
这里有两个“问题”:第一个涉及登录时打开一组特定的程序;第二个涉及使它们在特定的工作区上打开。我将分别处理这两个问题:
创建自定义X会话
这很容易做到。您只需要创建一个X会话脚本,然后告诉LightDM使用它。您将需要知道从终端启动所需程序的命令。
touch ~/.customxsession
,然后按回车。gedit ~/.customxsession
,然后按回车。touch /usr/share/xsessions/multi.desktop
,然后按回车。gedit /usr/share/xsessions/multi.desktop
,然后按回车。将程序分配给工作区
这也很容易,但是它需要一些默认情况下未在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程序中添加所需的应用程序,然后也添加此脚本。这是我的脚本: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个显示器。
wmctrl -d
,则只有一个“桌面”。您是否在Ubuntu 12.10中的Unity上进行了测试?