Окно XFCE - Send к другому монитору на нажатии клавиши

Вы могли использовать механизм OCR с открытым исходным кодом, сказать Tessaract для выяснения, там английский текст или нет.

27
25.09.2017, 10:21
4 ответа

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

Запустите эти команды

sudo apt-get install xdotool
sudo apt-get install wmctrl

, затем загрузите скрипт Bash со следующей ссылки (кредит на JC00KE) https://github.com/jc00ke/move-tom-next-gonton

Лично у меня есть каталог в моем корне, где я хранят все мои личные сценарии. Однако, где вы скачаете, это действительно зависит от вас. Измените его, чтобы иметь разрешения, чтобы вы могли выполнить. Например, сохраните скрипты как move-to-next-monitor.sh, а затем выполните следующие

chmod 755 move-to-next-monitor.sh
  1. менеджер настроек -> клавиатуру -> Ярлыки приложения
  2. Нажмите Добавить
  3. Нажмите Открыть и направьте его в свой скрипт
  4. ​​Назначьте сочетание клавиш к нему и Voilà!

Теперь у вас есть ярлык клавиатуры для переключения окна с 1 экрана на другой. Я не уверен, как это работает с более чем 2 экранами.

28
27.01.2020, 19:39

Я внес некоторые изменения в упомянутый выше сценарий, первоначально созданный jc00ke.
- Шахта рассчитана на три монитора.
- определяет, было ли окно развернуто или нет.
- используется для перемещения окна влево или вправо с использованием имя-сценария -l и имя-сценария -r соответственно.
- Я добавил исправление, из-за которого приложения Chromium в свернутом виде очень малы и больше не будут разворачиваться на новом мониторе.
Я переписывался с jc00ke. Хотя это отлично работает на Xfce, он сказал, что у него проблемы с его скриптом в Unity. Конечно, другие среды рабочего стола, такие как Unity, не нуждаются в этом сценарии, потому что такие параметры встроены в диспетчер окон.
Чтобы использовать сценарий, сделайте его исполняемым chmod + x имя-сценария и установите следующие две программы, sudo apt-get install xdotool wmctrl .

#!/bin/bash
#
# Move the current window to the next monitor.
#
# Also works only on one X screen (which is the most common case).
#
# Props to
# http://icyrock.com/blog/2012/05/xubuntu-moving-windows-between-monitors/
#
# Unfortunately, both "xdotool getwindowgeometry --shell $window_id" and
# checking "-geometry" of "xwininfo -id $window_id" are not sufficient, as
# the first command does not respect panel/decoration offsets and the second
# will sometimes give a "-0-0" geometry. This is why we resort to "xwininfo".

screen_width=$(xdpyinfo | awk -F" |x" '/dimensions:/ { print $7 }')
screen_height=$(xdpyinfo | awk -F" |x" '/dimensions:/ { print $8 }')
window_id=$(xdotool getactivewindow)

case $1 in
    -l )
        display_width=$((screen_width / 3 * 2)) ;;
    -r )
        display_width=$((screen_width / 3)) ;;
esac

# Remember if it was maximized.
window_state=$(xprop -id $window_id _NET_WM_STATE | awk '{ print $3 }')

# Un-maximize current window so that we can move it
wmctrl -ir $window_id -b remove,maximized_vert,maximized_horz

# Read window position
x=$(xwininfo -id $window_id | awk '/Absolute upper-left X:/ { print $4 }')
y=$(xwininfo -id $window_id | awk '/Absolute upper-left Y:/ { print $4 }')

# Subtract any offsets caused by window decorations and panels
x_offset=$(xwininfo -id $window_id | awk '/Relative upper-left X:/ { print $4 }')
y_offset=$(xwininfo -id $window_id | awk '/Relative upper-left Y:/ { print $4 }')
x=$((x - x_offset))
y=$((y - y_offset))

# Fix Chromium app view issue of small un-maximized size
width=$(xdotool getwindowgeometry $window_id | awk -F" |x" '/Geometry:/ { print $4 }')
if [ "$width" -lt "150" ]; then
  display_width=$((display_width + 150))
fi

# Compute new X position
new_x=$((x + display_width))
# Compute new Y position
new_y=$((y + screen_height))

# If we would move off the right-most monitor, we set it to the left one.
# We also respect the window's width here: moving a window off more than half its width won't happen.
if [ $((new_x + width / 2)) -gt $screen_width ]; then
  new_x=$((new_x - screen_width))
fi

height=$(xdotool getwindowgeometry $window_id | awk -F" |x" '/Geometry:/ { print $5 }')
if [ $((new_y + height / 2)) -gt $screen_height ]; then
  new_y=$((new_y - screen_height))
fi

# Don't move off the left side.
if [ $new_x -lt 0 ]; then
  new_x=0
fi

# Don't move off the bottom
if [ $new_y -lt 0 ]; then
  new_y=0
fi

# Move the window
xdotool windowmove $window_id $new_x $new_y

# Maintain if window was maximized or not
if [ "${window_state}" = "_NET_WM_STATE_MAXIMIZED_HORZ," ]; then
    wmctrl -ir $window_id -b add,maximized_vert,maximized_horz
fi
10
27.01.2020, 19:39

Я также создал свой собственный скрипт Python для перемещения окон по мониторам.

https://github.com/calandoa/movescreen

Использование:

movescreen.py <up|down|left|right>

Интересные особенности:

  • обрабатывать 4 направления
  • обработка некоторых особых случаев, таких как перекрытие окон на нескольких мониторах
  • независимое восстановление полноэкранный режим , максимизация по горизонтали и по вертикали состояния
  • Легко отлаживать или добавлять новые функции с помощью Python.
8
27.01.2020, 19:39

Другая альтернатива, не зависящая от какой-либо «бинарной» зависимости (, например, xdotool или wmctrl):https://github.com/AlexisBRENON/ewmh_m2m

  • Вы можете установить его с помощьюpip(без необходимости копировать его вручную, делать его исполняемым и т. д.)
  • Он обрабатывает несколько экранов с различными макетами (горизонтальный, вертикальный, смешанный)
  • Сохранять соотношение окна и экрана при перемещении между экранами разных размеров
  • Восстановить развернутые состояния (по горизонтали, по вертикали)

Вид.

1
27.01.2020, 19:39

Теги

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