В настоящее время я работаю над Ubuntu 14.04 надва отдельных экрана.
Когда я использую сочетание клавиш для запуска терминала Ctrl+Alt+T, терминал по умолчанию открывается на экране слева, даже если экран, на котором я работаю, находится слева.
Эта проблема касаетсяgnome-терминалтолько
мне любопытноесть ли способ настроить терминал на запуск на том экране, который в данный момент активен??
Спасибо.
решение1
Как сделать так, чтобы новое окно терминала, инициированное нажатием Ctrl+ Alt+, Tбыло открыто на текущем активном экране?
ХотяОченьво многом связан сВот этот, не дубликат, и он требует совершенно другого решения. Ваш вопрос относится к gnome-terminal
, и вы используете ярлык для запуска приложения. Эти два делают фоновый скрипт ненужным и запрашивают некоторую дополнительную информацию.
Решение
Поскольку вы запускаете терминал с помощью сочетания клавиш, относительно легко создать чистое решение; мы можем просто заменить команду, вызываемую с помощью Ctrl+ Alt+ T, на запуск скрипта-обертки. Эта обертка запустит новый экземпляр, дождется появления нового окна, проверит текущее положение мыши и переместит новое gnome-terminal
окно на соответствующий экран.
Сценарий
#!/usr/bin/env python3
import subprocess
import time
app = "gnome-terminal"
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def screen_limit():
screendata = [s for s in get("xrandr").split() if s.count("+") == 2]
if len(screendata) == 2:
return int([s.split("x")[0] for s in screendata if "+0+0" in s][0])
rightside = screen_limit()
if rightside:
ws1 = get(["wmctrl", "-lpG"]); t = 0
subprocess.Popen(app)
while t < 30:
ws2 = [w for w in get(["wmctrl", "-lpG"]).splitlines() if not w in ws1]
if ws2:
try:
pid = get(["pgrep", "-f", app])
except subprocess.CalledProcessError:
pass
else:
match = [w for w in ws2 if pid in w]
if match:
match = match[0].split()
mousepos = int(get(["xdotool", "getmouselocation"]).split()[0].split(":")[1])
check = [mousepos < rightside, int(match[3]) < rightside]
if check[0] != check[1]:
cmd = ["xdotool", "windowmove", match[0], str(int(match[3]) + rightside), match[4]] \
if check[0] == False else \
["xdotool", "windowmove", match[0], str(int(match[3]) - rightside), match[4]]
subprocess.Popen(cmd)
break
time.sleep(0.5); t += 1
else:
subprocess.Popen(app)
Как использовать
Скрипту нужны оба
wmctrl
вариантаxdotool
:sudo apt-get install wmctrl xdotool
- Скопируйте приведенный выше скрипт в пустой файл, сохраните его как
move_terminal.py
Теперь нам нужно изменить команду по умолчанию, запускаемую с помощью Ctrl+ Alt+T
сначала отключите текущий ярлык командой:
gsettings set org.gnome.settings-daemon.plugins.media-keys terminal ""
Это снова сделает ярлык доступным.
Затем добавьте новую команду в Custom Shortcut Keys: выберите: Системные настройки > «Клавиатура» > «Сочетания клавиш» > «Пользовательские сочетания клавиш». Нажмите «+» и добавьте команду:
python3 /path/to/move_terminal.py
на ярлык Ctrl+ Alt+T
Теперь ваше новое gnome-terminal
окно, запущенное с помощью Ctrl+ Alt+, Tвсегда будет «следовать» за текущим активным экраном.
Примечание
Если второй экран не подключен, Ctrl+ Alt+ Tпросто откроет новое окно терминала.