我查看了一段时间,却无法找到以下问题的答案:
我在 Ubuntu 12.04 上安装了六个桌面,使用的是 Unity。每天早上开机时,我都会例行打开相同的五六个程序。我会在特定的工作区中打开每个程序。我希望自动完成这一操作。有没有办法编写脚本或配置它?
附加问题:更复杂的是,我在双视图模式下运行两个屏幕。我实际上需要在特定屏幕上启动每个程序,最好是全屏。
答案1
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
的手册页。您可能会发现它的更多功能。
答案2
这里有两个“问题”:第一个问题涉及登录时打开一组特定的程序;第二个问题涉及在特定工作区中打开它们。我将分别处理这两个问题:
创建自定义 X 会话
这很容易做到。您只需创建一个 X 会话脚本,然后告诉 LightDM 使用它。您需要知道从终端启动所需程序的命令。
- 打开终端。
- 输入
touch ~/.customxsession
,然后按回车键。 - 输入
gedit ~/.customxsession
,然后按回车键。 - 现在您将打开一个带有空白文件的文本编辑器。
- 您需要在此文件中定义一个 X 会话。我在答案底部创建了一个示例“填空”文件。我思考Ubuntu 使用 gnome-session 作为窗口管理器,但我可能错了。我目前无法测试它(笔记本电脑坏了),所以如果它不能按预期工作(例如:加载 Gnome 而不是 Unity),你可能需要做一些研究。
- 保存文件并关闭 Gedit。
- 输入
touch /usr/share/xsessions/multi.desktop
,然后按回车键。 - 输入
gedit /usr/share/xsessions/multi.desktop
,然后按回车键。 - 现在您将打开一个带有空白文件的文本编辑器。
- 将答案底部的代码(标记为“/usr/share/xsessions/multi.desktop:”)复制并粘贴到 Gedit 中。
- 保存文件并关闭 Gedit。
- 重启。当你进入登录屏幕时,如果你查看可用的会话(单击用户名旁边的小 Ubuntu 徽标),你应该会看到一个名为“多会话”的会话。如果你使用它登录,你放入 X 会话脚本中的程序应该会自动打开。
将程序分配到工作区
这也相当容易,但它需要一些 Ubuntu 默认未安装的额外软件。
- 安装 compizconfig-settings-manager(您可以使用软件中心,或者直接
sudo apt-get install compizconfig-settings-manager
在终端中运行)。 - 从 Dash 打开 CompizConfig 设置。
- 打开‘放置窗口’插件(位于‘窗口管理’部分)。
- 单击“具有固定视口的窗口”部分中的“新建”。
- 单击‘加号’图标。
- 将“类型”设置为“窗口标题”,并在“值”框中输入其中一个程序的窗口标题。确保“关系”设置为“AND”,然后单击“添加”。
- 通过在“X”和“Y”框中输入数字来设置工作区。如果您有 4 个工作区,则“X”为“1”表示左侧,“2”表示右侧;而对于“Y”,“1”表示顶部,“2”表示底部。鉴于您有 6 个工作区,根据设置方式,将“Y”设置为“3”将选择底部行,将“X”设置为“3”将选择第 3 列。
- 对要分配工作区的其余程序重复步骤 4-7。
- 关闭 CompizConfig 设置。
- 安装 compizconfig-settings-manager(您可以使用软件中心,或者直接
在登录
当您登录时,您需要告诉 Ubuntu 您想要使用自定义的 X 会话。
- 重启。
- 当您进入登录屏幕时,如果您查看可用的会话(单击用户名旁边的小 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
答案3
在 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 个显示器。