Постоянно имеет CLI/терминал в одной Рабочей области?

Действительно ли возможно, что у меня могли быть постоянный CLI или Терминал в одной из рабочих областей в Ubuntu 14.04, такой, что Терминал/CLI запустится на начальной загрузке и не мог быть закрыт.

Я должен использовать терминал много, и хотя открытие его в максимизируемом режиме хорошо работает, я хотел бы иметь его sticked на некоторой рабочей области постоянно.

2
задан 6 October 2014 в 19:08

4 ответа

Существует немного вещей..

1 - Это будет намного легче и быстрее при использовании землетрясения, как предложено выше.

2 - Даже если Вы хотите починить свой терминал в некоторой другой рабочей области постоянно, можно сделать это через CCSM (Compiz) => управление окнами => окно Place => пергамент окна Fixed => Фиксированная Область просмотра Окна

enter image description here

Можно выбрать рабочую область, сменив 'X положений Области просмотра и Положение Области просмотра Y'

Затем требуется добавить терминал в приложениях запуска. Так, чтобы Вы не запускали его собой, Это может быть сделано легко через

В Тире - ищут заявления Запуска =>, Добавляют
enter image description here

Это я думаю, удовлетворяет Ваши требования.

Открытое приложение в определенной рабочей областиSources: Как запустить терминал на входе в систему

4
ответ дан 4 August 2019 в 23:15

Не точно ответ, но можно установить терминал GUAKE в человечности.

sudo apt-get install guake

Нажатие F12 переключает режим включения - выключения. Быстрее, чем переключение рабочих областей.:)

2
ответ дан 4 August 2019 в 23:15

Что относительно того, чтобы установить рабочий стол, поскольку Вам нравится он. Тогда сделайте завершение работы, но выберите опцию флажка Save Session при наличии. Может работать?

0
ответ дан 4 August 2019 в 23:15

Постоянно имейте одно или несколько приложений, работает на определенной области (областях) просмотра

Для спорта его: для поддерживания одного или нескольких приложений в рабочем состоянии на одной или нескольких указанных областях просмотра можно использовать сценарий ниже. Это работает в фоновом режиме и работает, как Вы описываете, но можно добавить несколько приложений для продолжания бежать на различных областях просмотра.

Хотя сценарий выглядит немного обширным, большая часть из него только выполняет одно время, для сбора данных о промежутке области (областей) просмотра, столбцах области просмотра и строках, разрешении экрана и таком. Это не часть цикла.

При закрытии окна приложения, Вы указали для области просмотра, оно открывает новое окно приложения на целенаправленной области просмотра.

Как использовать:

Во-первых: установка 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

1
ответ дан 4 August 2019 в 23:15

Другие вопросы по тегам:

Похожие вопросы: