В прошлых версиях наутилуса (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
#!/usr/bin/env python3
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
[Desktop Entry]
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;
И дергаем по порядку команды:
user@desktop:~$ sudo update-desktop-database /usr/share/applications/
user@desktop:~$ sudo chmod +x /usr/bin/open-archive-nautilus.py
user@desktop:~$ for m in 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/vnd.efi.iso application/x-cd-image application/x-iso9660-image; do xdg-mime default open-archive-nautilus.desktop "$m"; grep -q "^$m=open-archive-nautilus.desktop" ~/.config/mimeapps.list || sed -i "/^\[Default Applications\]/a$m=open-archive-nautilus.desktop" ~/.config/mimeapps.list; done
Стоит так же обратить внимание, что на этот же скрипт я повесил .iso файлы (в последней команде), потому что gnome-disk-image-mounter тоже что-то поломан (а разбираться с ним лень). Минус в том, что не будут работать udf-образы, но, будем честны, скорее всего вы такой никогда в жизни и не держали на ноутбуке.
На этом в общем-то всё, перезапускаем окно Nautilus, по дабл-клику архивы монтируются и открываются в новом окне. Если не получилось — пробуем «открыть с помощью» -> «Open archive in Nautilus (w/GIO)». Если так открывается — значит не сработала ассоциация mime-types с .desktop-файлом (может команду пропустили), если такого вообще нет в списке — update-desktop-database забыли сделать.
Сложнее всего было придумать название к статье %) Спойлер — не получилось. В общем, думаю, вы сталкивались с ситуацией, когда бэкапы делаются в какой-нибудь /mnt/backup, потом по какой-то причине он не смонтировался/отмонтировался (будь то сетевая ФС или отвалившийся диск), после чего скрипт бэкапа забивает всё место в корне и… ну дальше вы всё и так […]
Mellanox делает неплохие 25G/100G карточки, которые в целом работают в современных дистрах без проблем. Что ещё интереснее — 100G карта отдаёт свои 100G без какого-либо дополнительного тюнинга системы (ну на достаточно мощном сервере). На условном «местном авито» при этом можно найти множество дешёвых карт MLX, про которые продавцы пишут «не использовались». Большинство таких карточек — […]
На данный момент в debian 11 в main-репе лежит не очень работающая версия python3-certbot-dns-cloudflare (а в других никакой не лежит). С некоторое долей вероятности, попытавшись получить через letsencrypt certonly —dns-cloudflare НЕ-wildcard сертификат, вы получите такое (актуально это и для wildcard+domain сертификатов, само собой): IMPORTANT NOTES:- The following errors were reported by the server:Domain: example.comType: unauthorizedDetail: […]
Прежде, чем заявить «Пффф, да всё легко, шо вы тут мне втираете», ответьте мысленно на простенький вопрос — какой объём (в количестве дисков) будет у raid10 в mdadm, если в массиве 3 диска? Ответили? Правда же вы ответили, что-то вроде «либо полтора диска, либо один диск»? Нет? Присаживайтесь — я, конечно, не коммитил в raid10.c, […]
Это достаточно старая статья, которая была когда-то давно опубликована в очень закрытом блоге (инвайт получить занимает минимум часов 10!). Планы по публикации её в публичный интернет так и не стали реальностью, поэтому статью мне пришлось стащить и… Шучу, я как минимум у двух человек уточнил (в том числе и у автора), они разрешили -) Статью […]
Я тут внезапно ковырялся в базке блога, пытаясь обновить WP (спойлер — не вышло), и обнаружил, что первая статья в блоге была опубликована 3 марта 2010 года — Вступление Ну штош *гифка со сцепленными пальцами*. Пришло время подвести статистику и чуть-чуть двинуть свой зад дальше. За 10 лет в блоге написано: — 255 статей (эта […]
Поймите меня правильно. Я не жалуюсь на своё место работы — здесь как раз всё отлично, даже более чем. Цепочка моих руководителей — бывшие (пусть некоторые и очень бывшие) сисадмины в том или ином виде. Вот только сколько моё место просуществует, и найду ли я потом хотя бы вполовину столь же хорошую работу — вопросы […]
https://bits.debian.org/2019/07/buster-released.html https://www.opennet.ru/opennews/art.shtml?num=51041 — на русском