Рейтинг:-2

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

флаг in

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

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

Рейтинг:2
флаг it

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

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

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

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

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

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

$ gnome-terminal --геометрия WxH+X+Y

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

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

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

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

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

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

Рейтинг:1
флаг in

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

#!/usr/bin/python3

импорт ОС


деф устранить (итер):
    разрешение = []
    для я в iter:
        Если я:
            res.append(i)
    вернуть разрешение


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

os.system(рабочая область)
out_workspace = ""
с open("/tmp/curr_ws","r") как f:
    out_workspace = f.read()
out_workspace = int (out_workspace)
print("DEBUG: Текущая рабочая область:", out_workspace)

position = 'wmctrl -lG | grep "кали:" | grep "^......... {0}" | тр -с " " | cut -d " " -f 3,4 > /tmp/positions'.format(out_workspace)
размеры = 'wmctrl -lG | grep "кали:" | grep "^......... {0}" | тр -с " " | cut -d " " -f 5,6 > /tmp/sized'.format(out_workspace)

ОС.система(позиции)
out_positions = ""
с open("/tmp/positions","r") как f:
    out_positions = f.read()
out_positions = исключить(out_positions.split("\n"))

os.system(размеры)
out_size = ""
с open("/tmp/sizes","r") как f:
    out_sizes = f.read()
out_sizes = исключить (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 --геометрия 105x25+100+45", "gnome-terminal --геометрия 105x25+963+45",
                    "gnome-terminal --geometry 105x25+100+555", "gnome-terminal --geometry 105x25+963+555"]

parsed_positions = []
для i в диапазоне (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("ОТЛАДКА: Позиции:", parsed_positions)

проверка защиты (term_pos, parsed_pos):
    индекс = 0
    перекрытие = Ложь
    для i в terminal_positions:
        перекрытие = Ложь
        для j в parsed_positions:
            ax0 = term_left_start = я [0]
            ay0 = term_up_start = i[1]
            ax1 = термин_левый_конец = я [0] + я [2]
            ay1 = term_up_end = я[1] + я[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]

            # если term_left_start >= pars_left_end или term_left_end <= pars_left_start или term_up_end <= pars_up_start или term_up_start >= pars_up_end:
            # перекрытие = Истина

            если ((bx0 <= ax0) и (ax1 <= bx1)) или ((ax0 <= bx0 <= ax1) и (ax1 <= bx1)) или ((ax0 >= bx0) и (ax1 >= bx1 > = ax0)) или ((ax0 <= bx0 <= ax1) и (ax1 >= bx1 >= ax0)):
                если ((by0 <= ay0) и (ay1 <= by1)) или ((ay0 <= by0 <= ay1) и (ay1 <= by1)) или ((ay0 >= by0) и (ay1 >= by1 > = ay0)) или ((ay0 <= by0 <= ay1) и (ay1 >= by1 >= ay0)):
                    перекрытие = Истина

        если перекрываются:
            индекс += 1
        еще:
            возвращаемый индекс


    возврат -1


место = проверка (terminal_positions, parsed_positions)

если место == -1:
    os.system («гном-терминал»)
еще:
    os.system (terminal_strings [место])

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

Nate T avatar
флаг it
Отличный! Выглядит хорошо. Единственная маленькая вещь, которую я вижу, это _возможно_ логика для получения длины и ширины. Судя по всему, их работа и порядок могут быть обратными. Если я прав, вы никогда этого не заметите, пока младшие числа x0 и y0 равны нулю. Однако, если это значение перемещается в любом направлении, это приведет к отключению дисплея.Если это произойдет, просто поменяйте местами операнды в операторе.
Nate T avatar
флаг it
Например, `x[0] + x[1]` будет заменено на `x[1] - x [0]`. Я, скорее всего, ошибаюсь, так как я смотрел на него всего пару минут, а вы, вероятно, пялились на него черт знает сколько времени. Я просто знал, что если я ничего не скажу, то забуду об этом. И как только я ничего не говорил, это было бы правильно. Так что принимайте это с недоверием. Не пытаясь перейти к обзору кода, я просто увидел возможное и подумал, что должен что-то сказать. Вы должны изучить модификацию, чтобы принять аргументы (может быть, device.conf?) И посмотреть о пакете/пабе.
Nate T avatar
флаг it
Он решает уникальную проблему. Одно устройство предварительно настроено для нескольких дистрибутивов. Я уверен, что инструмент уже существует, потому что их так много. Но так как их так много, о большинстве из них никто не знает, так что чем больше, тем лучше! ...? ...! я
Muhammed Özen avatar
флаг in
Большое спасибо за предложение. Да, вы правы, и, честно говоря, я не смог найти ни одного скрипта, который бы это делал. Я уверен, что там много, но я никогда не сталкивался ни с одним из них. В скрипте также есть еще одна ошибка, которая заключается в том, что всякий раз, когда я отключаю терминал, но не закрываю его, он предполагает, что он все еще там, и для предотвращения перекрытия он открывает терминал в следующей позиции. Я понятия не имею, как это решить, но большое спасибо за ваш вклад
Nate T avatar
флаг it
В Linux-системах есть база данных под названием «terminfo» или что-то подобное, в которой хранится вся эта информация. Вероятно, он заканчивается на «.d». Я гарантирую, что ваш ответ будет там.
Muhammed Özen avatar
флаг in
Еще раз большое спасибо. Я проверю это

Ответить или комментировать

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