如何在特定工作区中运行一组自定义程序?

如何在特定工作区中运行一组自定义程序?

我使用多个工作区,以便为不同的工作提供不同的环境。因此,我会在同一个工作区中重复运行同一组应用程序。而且,我在每一组应用程序中都运行同一个应用程序,因此设置每个应用程序应运行的默认工作区对此目的不起作用。

例如:

  • 工作区 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),我们将生成不同的应用程序集。

相关内容