Debian.pro/

Про Debian


Нормально открываем архивы в nautilus (почти как раньше)

В прошлых версиях наутилуса (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 забыли сделать.

11.08.2026 в 22:07 byinkvizitor68sl|Desktop| 0 коммент.

Mountpoint, в который нельзя писать, если он не смонтирован.

Сложнее всего было придумать название к статье %) Спойлер — не получилось. В общем, думаю, вы сталкивались с ситуацией, когда бэкапы делаются в какой-нибудь /mnt/backup, потом по какой-то причине он не смонтировался/отмонтировался (будь то сетевая ФС или отвалившийся диск), после чего скрипт бэкапа забивает всё место в корне и… ну дальше вы всё и так […]

Переключение режима VPI-карточек Mellanox Connect-X (infiniband -> ethernet)

Mellanox делает неплохие 25G/100G карточки, которые в целом работают в современных дистрах без проблем. Что ещё интереснее — 100G карта отдаёт свои 100G без какого-либо дополнительного тюнинга системы (ну на достаточно мощном сервере). На условном «местном авито» при этом можно найти множество дешёвых карт MLX, про которые продавцы пишут «не использовались». Большинство таких карточек — […]

«Чиним» letsencrypt+cloudflare в debian 11 — или просто ставим отдельный софт в stable debian из testing/sid.

На данный момент в 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 — не то, чем кажется.

Прежде, чем заявить «Пффф, да всё легко, шо вы тут мне втираете», ответьте мысленно на простенький вопрос — какой объём (в количестве дисков) будет у raid10 в mdadm, если в массиве 3 диска? Ответили? Правда же вы ответили, что-то вроде «либо полтора диска, либо один диск»? Нет? Присаживайтесь — я, конечно, не коммитил в raid10.c, […]

Гостевая статья — 101 способ не ограничить доступ к ручке

Это достаточно старая статья, которая была когда-то давно опубликована в очень закрытом блоге (инвайт получить занимает минимум часов 10!). Планы по публикации её в публичный интернет так и не стали реальностью, поэтому статью мне пришлось стащить и… Шучу, я как минимум у двух человек уточнил (в том числе и у автора), они разрешили -) Статью […]

07.07.2022 в 23:14 byinkvizitor68sl|mustread| 0 коммент.

Debian.pro — 10 лет (+анонс telegram-канала).

Я тут внезапно ковырялся в базке блога, пытаясь обновить WP (спойлер — не вышло), и обнаружил, что первая статья в блоге была опубликована 3 марта 2010 года — Вступление Ну штош *гифка со сцепленными пальцами*. Пришло время подвести статистику и чуть-чуть двинуть свой зад дальше. За 10 лет в блоге написано: — 255 статей (эта […]

Новогодний пост — БЕГИТЕ, глупцы!

Поймите меня правильно. Я не жалуюсь на своё место работы — здесь как раз всё отлично, даже более чем. Цепочка моих руководителей — бывшие (пусть некоторые и очень бывшие) сисадмины в том или ином виде. Вот только сколько моё место просуществует, и найду ли я потом хотя бы вполовину столь же хорошую работу — вопросы […]

Debian 10 (buster) released

https://bits.debian.org/2019/07/buster-released.html https://www.opennet.ru/opennews/art.shtml?num=51041 — на русском