我使用多个工作区,以便为不同的工作提供不同的环境。因此,我会在同一个工作区中重复运行同一组应用程序。而且,我在每一组应用程序中都运行同一个应用程序,因此设置每个应用程序应运行的默认工作区对此目的不起作用。
例如:
- 工作区 1:1 个终端 + Chrome 中打开的 2 个选项卡 + 使用 PDF Viewer 打开的文档
- 工作区2:3个终端 + Chrome中打开的4个选项卡 + Firefox中打开的1个选项卡 + Eclipse
那么,有没有办法让一个脚本或类似 set_workspace1.sh 的东西一旦运行就可以在特定的工作区中打开所有所需的程序?
顺便说一句,我正在运行 11.04
答案1
我认为标准窗口管理器没有这样的功能。
但是 Devil's Pie 可以满足您的要求。
http://burtonini.com/blog/computers/devilspie/
引自 Devil’s Pie 网站:“Devil's Pie 可以配置为在创建窗口时检测窗口,并将窗口与一组规则进行匹配。如果窗口与规则匹配,它可以对该窗口执行一系列操作。例如,我可以让 X-Chat 创建的所有窗口出现在所有工作区中,而主 Gkrellm1 窗口不会出现在寻呼机或任务列表中。”
我希望这对你有帮助,
丹尼尔
答案2
从技术角度来说,工作区是指viewports
扩展桌面的一个特定部分,具有特定的坐标,例如0, 0
视口 1 就是1366, 0
其右侧的视口。
应当指出的是CompizConfig 设置管理器有一个选项用于在特定工作区上“固定”打开窗口,但可以像您提到的那样创建脚本。这是我的示例。
#!/bin/bash
get_viewport()
{
xprop -root -notype _NET_DESKTOP_VIEWPORT | awk '{print $3,$4}'
}
spawn_viewport_1()
{
nohup gnome-terminal 2>&1 > /dev/null &
nohup chromium-browser 2>&1 > /dev/null &
}
spawn_viewport_2()
{
nohup xterm 2>&1 > /dev/null &
nohup firefox 2>&1 > /dev/null &
}
main()
{
case $(get_viewport) in
"0, 0") spawn_viewport_1 ;; # note , single space in "0, 0" is important
"1366, 0") spawn_viewport_2 ;;
esac
}
main
本质上发生的事情是,我有两个函数,每个函数用于特定的视口。我还有一个函数用于检查我当前所在的视口。如果我当前位于视口 1(坐标 0,0),它将生成一组应用程序。如果我位于视口 2(坐标 1366,0),我们将生成不同的应用程序集。