Как заставить Терминатор перезагружать конфигурацию на лету?

Хотя вы просили найти решение без дополнительных инструментов, это мой любимый способ использования flock :

#!/bin/sh

[ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock -en "$0" "$0" "$@" || :

echo "servus!"
sleep 10

Это взято из раздела примеров man flock , в котором дополнительно объясняется:

Т это полезный шаблонный код для сценариев оболочки. Поместите его в начало сценария оболочки, который вы хотите заблокировать, и он автоматически заблокируется при первом запуске. Если env var $ FLOCKER не настроен на запускаемый сценарий оболочки, выполните flock и захватите исключительную неблокирующую блокировку (используя сам сценарий в качестве файла блокировки) перед повторным запуском с правильными аргументами. Он также устанавливает правильное значение переменной env FLOCKER, чтобы она больше не запускалась.

На что следует обратить внимание:

  • Требуется flock , пример сценария завершается с ошибкой, если он не может быть найден
  • Не требует дополнительного файла блокировки
  • Может не работать, если сценарий находится в NFS (см. https://serverfault.com/questions/66919/file-locks-on-an-nfs )

См. также https://stackoverflow.com/questions / 185451 / быстрый-и-грязный-способ-обеспечить-только-один-экземпляр-сценария-оболочки-работает-на .

7
19.04.2016, 04:23
2 ответа

Не решение для командной строки, но вы можете открыть диалоговое окно «Настройки» и закрыть его, чтобы перезагрузить файл конфигурации вручную, не убивая Терминатора.

2
27.01.2020, 20:19

Я только что написал этот очень слепой/хрупкий скрипт для программного перемещения мыши, чтобы пройти этапы изменения цветовой схемы через окно настроек Terminator с помощью xdotool (sudo apt-get install xdotool). Он перемещает мышь по координатам x, y на экране, и я обнаружил, что координаты x, y на моем экране чисто методом проб и ошибок -понятия не имеют, будут ли координаты такими же на других компьютерах. У меня Ubuntu 20.

#!/bin/bash

if [ "$1" != "light" ] && [ "$1" != "dark" ]; then
    echo "Need to pass \"light\" or \"dark\" as arg"
    exit 1
fi

xdotool mousemove 100 100
xdotool click 3
xdotool mousemove 140 350
xdotool click 1
xdotool mousemove 140 100
sleep 1
xdotool click 1
xdotool mousemove 420 140
xdotool click 1
xdotool mousemove 420 250
xdotool click 1


if [ "$1" = "light" ]; then
    xdotool mousemove 420 230
    xdotool click 1
else
    xdotool mousemove 420 280
    xdotool click 1
fi

xdotool mousemove 840 720
xdotool click 1

Вероятно, есть способы использовать какой-нибудь Selenium -подобный инструмент для Linux (Я думаю, что видел некоторые описанные для Ubuntu, которые используют OpenCV для анализа пикселей вашего экрана, чтобы найти координаты определенных кнопок )это фактически выберет кнопки на основе их текста, но теперь это работает для меня. Делюсь, если кто-то застрял с этой неприятной проблемой.

0
16.03.2021, 01:52

Теги

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