Как многие из вас знают, всякий раз, когда вы открываете новое окно терминала в Ubuntu, оно оказывается в верхней левой части экрана. Следующий находится прямо под ним. Третий находится в правом верхнем углу, четвертый - в правом нижнем углу экрана. Я хочу добавить эту функциональность в другой дистрибутив Linux, который я использую сейчас. Я просто хочу знать, как это делается в Ubuntu.
Также это работает не только с gnome-terminal. Он работает с любым эмулятором терминала, который я скачал до сих пор. Поэтому я очень думаю, что это проблема не только эмулятора терминала. Кто-нибудь знает, как это делается?
Спасибо, Нейт. Я использовал идею, которую вы мне дали, и придумал сценарий, который решает мою проблему. Это скрипт на 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, а затем назначить ярлык для команды, которая выполняет сценарий
РЕКОМЕНДАЦИЯ
Я бы порекомендовал вам изучить инструмент, к которому вы будете переходить. Почти все терминалы имеют какой-то конфигурационный файл, например 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 для запуска в середине экрана.