如何启动具有预定义窗口大小和位置的应用程序?

STi*_*Tim 26 command-line scripts shortcut-keys unity

我想知道有什么方法可以使用终端命令来实现 Unity 中 Ctrl-Alt-Keypad 快捷键的影响?我想要一个命令,将 gui 窗口设置为屏幕大小的一半,左对齐或右对齐。

作为背景,我正在编写一个在登录后运行的脚本。它使用 Zenity 来询问我是否要打开我的开发环境(GVim 和 IPython 并排)。我一直在尝试通过set lines= columns=在 my.gvimrc和 中使用c.IPythonWidget.width =c.IPythonWidget.height =在我的ipython_qtconsole_config.py. 但是,这种方法存在一些问题。

Jac*_*ijm 20

你会遇到什么

如果您想先调用应用程序,然后将其窗口放置在特定位置和大小,则调用应用程序窗口实际出现之间的时间是不可预测的。如果您的系统被占用,它可能会比空闲时间长得多。

您需要一种“智能”方式来确保在窗口出现后(立即)完成定位/调整大小。

调用应用程序、等待它出现并将其定位在屏幕上的脚本

使用下面的脚本,您可以调用应用程序并使用命令设置它应该出现的位置和大小:

<script> <application> <x-position> <y-position> <h-size> <v-size>
Run Code Online (Sandbox Code Playgroud)

几个例子:

脚本以及如何使用它

  1. 安装xdotoolwmctrl. 我使用了两者,因为调整大小wmctrl可能会导致(特别是)Unity

    sudo apt-get install wmctrl
    sudo apt-get install xdotool
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将下面的脚本复制到一个空文件中,另存为 setwindow(无扩展名)~/bin;如有必要,创建目录。
  3. 使脚本可执行 (!)
  4. 如果你刚刚创建 ~bin,请运行:source ~/.profile
  5. 使用命令测试运行脚本(例如)

    setwindow gnome-terminal 0 0 50 100
    
    Run Code Online (Sandbox Code Playgroud)

    换句话说:

    setwindow <application> <horizontal-position> <vertical-position> <horizontal-size (%)> <vertical-size (%)>
    
    Run Code Online (Sandbox Code Playgroud)

如果一切正常,请在需要的地方使用该命令。

剧本

<script> <application> <x-position> <y-position> <h-size> <v-size>
Run Code Online (Sandbox Code Playgroud)

它能做什么

当脚本被调用时,它:

  1. 启动应用程序
  2. 密切关注窗口列表(使用wmctrl -lp
  3. 如果出现新窗口,它会检查新窗口是否属于被调用的应用程序(使用ps -ef ww,将窗口的 pid 与应用程序的 pid 进行比较)
  4. 如果是这样,它会根据您的参数设置大小和位置。如果应用程序没有在 appr 中“出现”。15 秒后,脚本假定应用程序因错误而无法运行。然后脚本终止以防止无限等待新窗口。

小问题

在Unity,当你(再)位置,(重新)大小与窗口要么wmctrl或者xdotool,窗口小玛吉将始终保持对你的屏幕边框,除非你将其设置为100%。您可以在上图 (3) 中看到;当inkscape窗口被放置在x位置 0 时,您仍然可以看到 Unity Launcher 和inkscape窗口之间的小边缘。