Far2Linux - запуск одной копии

Здесь обсуждаются темы, косвенно связанные с Far.
Post Reply
george.hazan
Posts: 14
Joined: Fri 22 Oct, 2021 11:38

Far2Linux - запуск одной копии

Post by george.hazan »

Приветствую.

Никто не озадачивался вопросом, как пропатчить KDE под Far как сделать так, чтобы запускалась только одна копия FAR под KDE? Я просто привык пинать любимую программу шорткатом на десктопе, а под линуксом бесит, что глобальный шорткат каждый раз запускает новую копию.

В принципе достаточно просто сделать скрипт, который будет анализировать результат ps ax | grep far2l, но тогда не происходит чуда переключения на уже запущенную копию, что бесит не меньше. Any ideas, коллеги?

WMBR, George Hazan
siberia-man
Posts: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

Far2Linux - запуск одной копии

Post by siberia-man »

Наверно, надо воспользоваться wmctl.
https://linux.die.net/man/1/wmctrl wrote:

Code: Select all

-a <WIN>
    Switch to the desktop containing the window <WIN>, raise the window, and give it focus. 
Возможно надо ее еще и установить. Проверьте. Возможно это и не то, что Вам нужно. Гуглил фразы типа "move gui to foreground", "how to focus on gui".
User avatar
Michael Lukashov
Posts: 517
Joined: Mon 23 Jan, 2006 09:38
Has thanked: 6 times
Been thanked: 21 times
Contact:

Far2Linux - запуск одной копии

Post by Michael Lukashov »

george.hazan wrote: Fri 22 Oct, 2021 11:49 Никто не озадачивался вопросом, как пропатчить KDE под Far как сделать так, чтобы запускалась только одна копия FAR под KDE? Я просто привык пинать любимую программу шорткатом на десктопе, а под линуксом бесит, что глобальный шорткат каждый раз запускает новую копию.
Я пользуюсь для такой задачи autokey. Для этого надо создать скрипт ~/.config/autokey/data/Autohotkey/Activate Far2l.py

Code: Select all

winClass = window.get_active_class()
window.activate('far2l.Far2l', switchDesktop=True, matchClass=True)
Чтобы фар активировался с помощью шортката надо создать файл настроек ~/.config/autokey/data/Autohotkey/Activate Far2l.json

Code: Select all

{
    "type": "script",
    "description": "Activate Far2l",
    "store": {},
    "modes": [
        3
    ],
    "usageCount": 16,
    "prompt": false,
    "omitTrigger": false,
    "showInTrayMenu": false,
    "abbreviation": {
        "abbreviations": [],
        "backspace": true,
        "ignoreCase": false,
        "immediate": false,
        "triggerInside": false,
        "wordChars": "[\\w]"
    },
    "hotkey": {
        "modifiers": [
            "<shift>",
            "<alt>"
        ],
        "hotKey": "c"
    },
    "filter": {
        "regex": null,
        "isRecursive": false
    }
}
george.hazan
Posts: 14
Joined: Fri 22 Oct, 2021 11:38

Far2Linux - запуск одной копии

Post by george.hazan »

Michael Lukashov wrote: Sat 23 Oct, 2021 02:36 Я пользуюсь для такой задачи autokey. Для этого надо создать скрипт
Спасибо, это, наверное, то что надо. Единственное что, т.к. с питоном у меня очень плохо, можно ли попросить модернизировать скрипт так, чтобы при отсутствии окна оно запускало FAR? А если он уже запущен, то отрабатывал бы приведенный выше фрагмент кода. Спасибо.
george.hazan
Posts: 14
Joined: Fri 22 Oct, 2021 11:38

Far2Linux - запуск одной копии

Post by george.hazan »

в итоге самым вкусным от autokey оказались исходники класса window :)
всё работает, спасибо.

Code: Select all

#/bin/sh

if wmctrl -l -x | grep far2l.Far2l
   then wmctrl -R far2l.Far2l -x
else
   far2l &
fi
tstr
Posts: 559
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Far2Linux - запуск одной копии

Post by tstr »

с xdotool ещё можно как-то так:

Code: Select all

if xdotool search --onlyvisible --class far2l; then xdotool search --class far2l windowactivate --sync; else $(far2l &); fi
Post Reply

Return to “Операционные системы, командные оболочки и прочее”