在一个工作区中永久拥有一个 CLI/终端吗?

在一个工作区中永久拥有一个 CLI/终端吗?

我是否可以在 Ubuntu 14.04 中的一个工作区中拥有一个永久的 CLI 或终端,这样终端/CLI 就可以在启动时启动并且无法关闭。

我需要经常使用终端,虽然以最大化模式打开它就可以了,但我想将它永久地粘贴在某个工作区上。

答案1

有几件事......

1——如果您按照上面的建议使用 quake,将会更加容易和快捷。

2-- 即使您想将终端永久固定在其他工作区,您也可以通过 CCSM(Compiz) => 窗口管理=> 放置窗口=> 固定窗口羊皮纸=> 固定窗口视口来实现

在此处输入图片描述

您可以通过更改“X 视口位置和 Y 视口位置”来选择工作区

接下来,您需要在启动应用程序中添加终端。这样您就不必自己启动它了。这可以通过以下方式轻松完成

在 Dash 中——搜索启动应用程序 => 添加
在此处输入图片描述

我认为这足以满足您的要求。

资料来源:在特定工作区中打开应用程序 如何在登录时启动终端

答案2

这不是确切的答案,但是您可以在 ubuntu 中安装 GUAKE 终端。

sudo apt-get install guake

按 F12 可切换开/关模式。比切换工作区更快。:)

答案3

永久地让一个或多个应用程序在特定视口上运行

就玩玩这个游戏而言:要让一个或多个应用程序在一个或多个指定视口上运行,您可以使用以下脚本。它在后台运行并按您描述的方式工作,但您可以添加多个应用程序以在不同的视口上运行。

虽然脚本看起来有点庞大,但大部分只运行一次,以收集有关视口跨度、视口列和行、屏幕分辨率等的数据。它不是循环的一部分。

如果您关闭为视口指定的应用程序窗口,它会在目标视口上打开该应用程序的新窗口。

如何使用:

首先:安装wmctrl

sudo apt-get install wmctrl

然后只需将脚本复制到一个空文件中,设置您需要运行的应用程序(在列表中的一个或多个元组中,参见脚本头部中的示例)以及您需要在其上运行(并保持可用)的目标视口。将其另存为keep_running.py并使其可执行。

通过命令运行它:

/path/to/keep_running.py

或者,您可以将其添加到启动应用程序中。

剧本:

#!/usr/bin/env python3

import subprocess
import time

# list applications and targeted viewports
applications = [("gnome-terminal", 4), ("gedit", 3)]

def get_value(command):
    return subprocess.check_output(
        ["/bin/bash", "-c", command]).decode('utf-8').strip()

def screendata():
    getres = get_value("xrandr").split(); idf = getres.index("current")
    screen_res = (int(getres[idf+1]), int(getres[idf+3].replace(",", "")))
    wsp_info = get_value("wmctrl -d").strip()
    scr_data = [item.split("x") for item in wsp_info.split(" ") if "x" in item][0]
    VP_hor = int(scr_data[0])/int(screen_res[0])
    VP_vert = int(scr_data[1])/int(screen_res[1])
    ranges_hor = [i*screen_res[0] for i in range(int(VP_hor))]
    ranges_vert = [i*screen_res[1] for i in range(int(VP_hor))]
    w_positions = [(int(ranges_hor[i]), int(ranges_vert[i2]))\
                   for i2 in range(len(ranges_vert)) for i in range(len(ranges_hor))]
    return {"resolution": screen_res, "horizontal": ranges_hor,
            "vertical": ranges_vert, "columns": int(VP_hor),
            "window_positions": w_positions}

def get_viewport(abs_h, abs_v): #calculates viewport from absolute coords
    hor = screen_data["horizontal"]
    vert = screen_data["vertical"]
    hor_position = len([n for n in hor if int(abs_h) >= n])
    vert_position = len([n for n in vert if int(abs_v) >= n])
    return int(hor_position+(vert_position-1)*screen_data["columns"])

def window_position(rel_h, rel_v): #calculates viewport from coords, relative to current viewport
    wsp_info = get_value("wmctrl -d").strip().split()
    vp_coords = eval(wsp_info[wsp_info.index("VP:"):][1])
    abs_h = rel_h+vp_coords[0]
    abs_v = rel_v+vp_coords[1]
    return get_viewport(abs_h, abs_v)

def pid_appinfo(pid):
    get_app = "ps -p "+pid+" -o comm="
    return get_value(get_app)

def check_windows():
    try:
        wlist = get_value("wmctrl -l -p -G")
    except Exception:
        # retry; when switching viewports while the command runs, it raises an error
        wlist = get_value("wmctrl -l -p -G")
    wdata = [l.split()[2:5] for l in wlist.split("\n")]
    app_windows = []
    for item in wdata:
        if item[0] != "0":
            try:
                if pid_appinfo(item[0]) == application\
                    and window_position(int(item[1]), int(item[2])) == target_viewport:
                    app_windows.append(item)
            except Exception:
                pass
    if len(app_windows) == 0:
        targeted_viewport = str(screen_data["window_positions"][target_viewport-1])\
                            .replace("(","").replace(")","")
        subprocess.call(["wmctrl", "-o", targeted_viewport])
        subprocess.Popen([application])

screen_data = screendata()

while True:
    for item in applications:
        application = item[0]; target_viewport = item[1]
        check_windows()
        time.sleep(2)

此脚本也gist.gisthub

答案4

按照您喜欢的方式设置桌面怎么样?然后关机,但选择“保存会话”复选框(如果可用)。可以吗?

相关内容