В прошлых версиях наутилуса (aka ‘Files’ в гноме) была очень удобная фича — архивы и iso-ники даблкликом то ли монтировались в gvfs, то ли просто открывались внутри наутилуса. Но в любом случае архивы выглядели в интерфейсе как «read-only каталоги», что было весьма удачным UX-решением.
В новых версиях Nautilus фичу эту оторвали (btw, разработчики гнома, вы там вообще в адеквате?), и я стал грустить. Особенно грустно стало на фоне того, что выяснилось, что в используемом мной весьма странном сочетании DE+софта невозможно существование ни одного архиватора, у которого работал бы drag-n-drop в наутилус -)
В целом в век нейронок всё это легко делается клодом за 5 минут, но саму идею нужно где-то вспомнить/найти. Да и вообще до меня на самом деле не сразу дошло, почему стало настолько неудобно zip-ы открывать -)
Поэтому фичу будем возвращать. К сожалению, сделать абсолютно так же как будто бы не получится (хотя бы потому, что мне даже лень искать старый гном, чтобы посмотреть, как было) — архивы всё же будут открываться в новом окне наутилуса (а не в той же вкладке) — но концептуально всё будет работать так же, как раньше.
Собственно, нам понадобится:
1) скрипт, 1 штука
2) .desktop-файл, 1 штука
3) горстка команд, чтобы всё это вместе заработало
Скрипт, например, /usr/bin/open-archive-nautilus.py
import os
import subprocess
import sys
from urllib.parse import quote
import gi
gi.require_version("Gio", "2.0")
from gi.repository import Gio
def archive_uri(path):
uri = Gio.File.new_for_path(path).get_uri()
return "archive://" + quote(quote(uri, safe=""), safe="") + "/"
def main():
if len(sys.argv) != 2:
sys.exit("usage: %s ARCHIVE" % os.path.basename(sys.argv[0]))
path = os.path.realpath(sys.argv[1])
if not os.path.isfile(path):
sys.exit("not a file: %s" % path)
uri = archive_uri(path)
subprocess.run(["gio", "mount", uri], stderr=subprocess.DEVNULL)
os.execvp("nautilus", ["nautilus", uri])
if __name__ == "__main__":
main()
.desktop-файл, например /usr/share/applications/open-archive-nautilus.desktop
Type=Application
Name=Open archive in Nautilus (w/GIO)
Exec=/usr/bin/open-archive-nautilus.py %f
Terminal=false
Icon=folder-tar
MimeType=application/zip;application/x-zip;application/x-zip-compressed;application/x-tar;application/gzip;application/x-compressed-tar;application/x-bzip-compressed-tar;application/x-xz-compressed-tar;application/x-7z-compressed;application/vnd.rar;application/x-rar-compressed;application/vnd.efi.iso;application/x-cd-image;application/x-iso9660-image;
И дергаем по порядку команды:
Стоит так же обратить внимание, что на этот же скрипт я повесил .iso файлы (в последней команде), потому что gnome-disk-image-mounter тоже что-то поломан (а разбираться с ним лень). Минус в том, что не будут работать udf-образы, но, будем честны, скорее всего вы такой никогда в жизни и не держали на ноутбуке.
На этом в общем-то всё, перезапускаем окно Nautilus, по дабл-клику архивы монтируются и открываются в новом окне. Если не получилось — пробуем «открыть с помощью» -> «Open archive in Nautilus (w/GIO)». Если так открывается — значит не сработала ассоциация mime-types с .desktop-файлом (может команду пропустили), если такого вообще нет в списке — update-desktop-database забыли сделать.
Комментариев пока нет.