Позиции терминала Ubuntu по умолчанию

Как многие из вас знают, всякий раз, когда вы открываете новое окно терминала в Ubuntu, оно оказывается в верхней левой части экрана. Следующий находится прямо под ним. Третий находится в правом верхнем углу, четвертый - в правом нижнем углу экрана. Я хочу добавить эту функциональность в другой дистрибутив Linux, который я использую сейчас. Я просто хочу знать, как это делается в Ubuntu.

Также это работает не только с gnome-terminal. Он работает с любым эмулятором терминала, который я скачал до сих пор. Поэтому я очень думаю, что это проблема не только эмулятора терминала. Кто-нибудь знает, как это делается?

-2
задан 5 August 2021 в 10:31

2 ответа

Спасибо, Нейт. Я использовал идею, которую вы мне дали, и придумал сценарий, который решает мою проблему. Это скрипт на Python, специально разработанный для моего разрешения, которое составляет 1920x1080. Это также зависит от инструмента под названием wmctrl. Вот сценарий:

#!/usr/bin/python3

import os


def eliminate(iter):
    res = []
    for i in iter:
        if i:
            res.append(i)
    return res


workspace = "wmctrl -d | grep '*' | cut -d ' ' -f1 > /tmp/curr_ws"

os.system(workspace)
out_workspace = ""
with open("/tmp/curr_ws","r") as f:
    out_workspace =  f.read()
out_workspace = int(out_workspace)
print("DEBUG: Current workspace:", out_workspace)

positions = 'wmctrl -lG | grep "kali:" | grep "^........... {0}" | tr -s " " | cut -d " " -f 3,4 > /tmp/positions'.format(out_workspace)
sizes = 'wmctrl -lG | grep "kali:" | grep "^........... {0}" | tr -s " " | cut -d " " -f 5,6 > /tmp/sizes'.format(out_workspace)

os.system(positions)
out_positions = ""
with open("/tmp/positions","r") as f:
    out_positions =  f.read()
out_positions = eliminate(out_positions.split("\n"))

os.system(sizes)
out_sizes = ""
with open("/tmp/sizes","r") as f:
    out_sizes = f.read()
out_sizes = eliminate(out_sizes.split("\n"))

terminal_positions = [[110, 101, 854, 479], [973, 101, 854, 479], [110, 611, 854, 479], [973, 611, 854, 479]]
terminal_strings = ["gnome-terminal --geometry 105x25+100+45", "gnome-terminal --geometry 105x25+963+45",
                    "gnome-terminal --geometry 105x25+100+555", "gnome-terminal --geometry 105x25+963+555"]

parsed_positions = []
for i in range(0,len(out_positions)):
    parsed_positions.append([ int(out_positions[i].split(" ")[0]),int(out_positions[i].split(" ")[1]),int(out_sizes[i].split(" ")[0]),int(out_sizes[i].split(" ")[1]) ])
print("DEBUG: Positions:", parsed_positions)

def check(term_pos, parsed_pos):
    index = 0
    overlap = False
    for i in terminal_positions:
        overlap = False
        for j in parsed_positions:
            ax0 = term_left_start = i[0]
            ay0 = term_up_start = i[1]
            ax1 = term_left_end = i[0] + i[2]
            ay1 = term_up_end = i[1] + i[3]
            
            bx0 = pars_left_start = j[0]
            by0 = pars_up_start = j[1]
            bx1 = pars_left_end = j[0] + j[2]
            by1 = pars_up_end = j[1] + j[3]

            # if term_left_start >= pars_left_end or term_left_end <= pars_left_start or term_up_end <= pars_up_start or term_up_start >= pars_up_end:
            #     overlap = True

            if ((bx0 <= ax0) and (ax1 <= bx1)) or ((ax0 <= bx0 <= ax1) and (ax1 <= bx1)) or ((ax0 >= bx0) and (ax1 >= bx1 >= ax0)) or ((ax0 <= bx0 <= ax1) and (ax1 >= bx1 >= ax0)):
                if ((by0 <= ay0) and (ay1 <= by1)) or ((ay0 <= by0 <= ay1) and (ay1 <= by1)) or ((ay0 >= by0) and (ay1 >= by1 >= ay0)) or ((ay0 <= by0 <= ay1) and (ay1 >= by1 >= ay0)):
                    overlap = True

        if overlap:
            index += 1
        else:
            return index


    return -1


place = check(terminal_positions, parsed_positions)

if place == -1:
    os.system("gnome-terminal")
else:
    os.system(terminal_strings[place])

Вы должны указать местоположение сценария в переменной PATH, а затем назначить ярлык для команды, которая выполняет сценарий

1
ответ дан 20 August 2021 в 10:29

РЕКОМЕНДАЦИЯ

Я бы порекомендовал вам изучить инструмент, к которому вы будете переходить. Почти все терминалы имеют какой-то конфигурационный файл, например alacritty. Тем не менее, вот несколько «трюков», с которыми я столкнулся на этом пути ».

КАК Я ЭТО ДЕЛАЮ

Когда вы запускаете терминал, есть опция, которая позволяет вам установить как его размер, так и его размер. Смещения X и Y.

Вариант - geometry , и он доступен во многих (большинстве?) эмуляторов терминала Linux. Терминал Gnome не исключение. всегда решение, некоторые разработчики просто не тратят время на встраивание дополнительных средств автоматизации для программистов / суперпользователей.

Синтаксис для использования параметра геометрии в нашем терминале следующий:

$ gnome-terminal --geometry WxH+X+Y

Примечание что в строке аргумента все, кроме заглавных букв, следует интерпретировать буквально.Заглавные буквы представляют ширину , измеренную в столбцах, высоту , измеренную в строках, и X и Y смещения относительно положения экрана (0,0).

Я записывал команду, чтобы сохранить ее в $ HOME, сохранение в ~ / .bashrc , которое сохраняет ее. Я думаю, что эту идею я получил с того же сайта давным-давно, но теперь я использую метод, изобретенный мной, когда мне нужно написать скрипт для функциональности.

В качестве небольшого примечания: если я меняю себя в Ubuntu, я просто создаю (или меняю) другой профиль терминала . Каждый новый профиль l, который вы создаете в настройках «предпочтений» графического интерфейса терминала, позволяет вам указать цвет b-g терминала, прозрачность и т. Д. Наряду с ранее упомянутыми настройками.

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

Наконец, я открываю разделение с ~ / .bash-aliases , загруженным в его буфер, и устанавливаю псевдоним для каждого экземпляра команды.

Тогда я могу просто ввести имя из 3-4 букв, например, может быть midl , каждый раз, когда мне нужен новый процесс терминала guit для запуска в середине экрана.

2
ответ дан 20 August 2021 в 10:29

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

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