Я хотел бы создать скрипт Python, который проверяет, открыт ли определенный каталог в nautilus.
На данный момент лучшее решение, которое у меня есть, это использовать wmctrl -lxp
для вывода списка всех окон, что дает мне такой результат:
0x0323d584 0 1006 nautilus.Nautilus namek Downloads
0x0325083a 0 1006 nautilus.Nautilus namek test
0x04400003 0 25536 gvim.Gvim namek yolo_voc.py + (~/code/netharn/netharn/examples) - GVIM4
Затем я проверяю, находится ли базовое имя интересующего меня каталога в имени окна nautilus.Nautilus
окон.
Вот код неполного решения, которое я только что описал:
def is_directory_open(dpath):
import ubelt as ub # pip install me! https://github.com/Erotemic/ubelt
import platform
from os.path import basename
import re
computer_name = platform.node()
dname = basename(dpath)
for line in ub.cmd('wmctrl -lxp')['out'].splitlines():
parts = re.split(' *', line)
if len(parts) > 3 and parts[3] == 'nautilus.Nautilus':
if parts[4] == computer_name:
# FIXME: Might be a False positive!
line_dname = ' '.join(parts[5:])
if line_dname == dname:
return True
# Always correctly returns False
return False
Это может определенно определить, не открыто ли оно, это только доходит до меня, потому что оно может возвращать ложные срабатывания. Если я хочу проверить, открыт ли /foo/test
, я не могу сказать, относится ли вторая строка к этому каталогу или к какому-то другому пути, где последний каталог называется test
. Например. Я не могу отличить /foo/test
от /bar/test
.
Есть ли способ сделать то, что я хочу, используя встроенные или устанавливаемые инструменты apt-get/pip в Ubuntu?
~/.local/share/nautilus-python/extensions
. Есть ли у вас доступ для записи в этот каталог, и является ли размещение файла для вас приемлемым решением? - person Him   schedule 21.01.2019