LINUX.ORG.RU

0
Всего сообщений: 24

xdg-open, файлы *.desktop и %u в поле Exec

Всем здравствуйте.

Хочу desktop entry с вот такой строкой запуска:

seamonkey -remote "OpenUrl(%u, new-tab)"

ну или хотя бы

seamonkey -remote OpenUrl(%u)

В то же время отладка /usr/bin/xdg-open показывает, что в результате вызова /usr/bin/xdg-open someurl запускается

/usr/bin/seamonkey OpenUrl(%u) someurl

т. е. %u, не отделённый пробелами, не вычисляется и не подставляется.

Чтение спецификации ни к чему не приводит.

Как решить?

 

Bass ()

Как пофиксить xdg-open в Chromium?

Собственно Firefox нормально открывает ссылки для Zoom (zoomtg ссылки), и получается зайти в конференцию. Однако Хромиум никак не реагирует на использование zoomtg ссылок. Приходится запускать огнелиса, только чтобы зайти в конференцию. Как это пофиксить?

 ,

PrettyFn ()

Можно ли настроить GtkAppChooserWidget через ~/.config/gtk-3.0/settings.ini?

Всем здравствуйте.

Проблема:

В GTK+ 2.x не было GtkAppChooserWidget и GtkAppChooserDialog, кому-то это было удобно, кому-то нет, но это давало определённую свободу. Пример из UI Mozilla (выбор обработчика для MIME-типа сводится тупо к выбору исполняемого файла):

Снимок для GTK+ 2.x

В GTK+ 3.x упомянутые UI-компоненты ввели, выглядит это всё куда приятнее, но свобода открыть MIME-тип X с помощью чёрта-в-ступе (напр., /bin/ls, или моего колхозного скрипта, для которого, разумеется, нет *.desktop entry), увы, утрачена:

Пример того же UI для GTK+ 3.x

Кто знает – настраивается ли GtkAppChooserWidget через ~/.config/gtk-3.0/settings.ini?

 , , ,

Bass ()

Вопрос о приложении, которое Apple Music хочет открыть через xdg_open при нажатии на Play

Ребята! Всем привет

собственно subj, что за приложение?

Regards

 , , , ,

Windn ()

xdg-open работает некорректно

$ xdg-open ~/file.pdf

Can't call method "get_value" on an undefined value at /usr/bin/mimeopen line 159.
/usr/bin/xdg-open: строка 771: x-www-browser: команда не найдена
/usr/bin/xdg-open: строка 771: firefox: команда не найдена
/usr/bin/xdg-open: строка 771: iceweasel: команда не найдена

Почему он пытается открыть pdf браузером? В итоге открывается seamonkey, который предлагает скачать этот pdf

 ,

mittorn ()

xdg-open vs run-mailcap, или как вернуться к истокам

Есть у меня пара файлов — .mailcap и .mime.types, и существует эта пара файлов уже почти 20 лет, и тиражируется на все машины.

И уже лет 20 я запускаю run-mailcap %s. И у меня даже есть возможность конфигурировать некую простую логику выбора нужной программы в случае, если есть несколько альтернатив (самый примитивный случай — это разные обработчики в X Window и в консоли), напр.:

text/plain; nedit %s; test=test -n "${VAR}" -a ${VAR} -eq 0
text/plain; vim %s; test=test -n "${VAR}" -a ${VAR} -eq 1
text/plain; gvim %s; test=test -n "${VAR}" -a ${VAR} -eq 2
text/plain; emacs %s; test=test -n "${VAR}" -a ${VAR} -eq 3
text/plain; emacs -nw %s; test=test -n "${VAR}" -a ${VAR} -eq 4
text/plain; mcedit %s;

(Сама форма записи ; test= описана в RFC 1524.)

И работает эта штука достаточно быстро.

Но вот уже лет пять как продвигается альернатива — xdg-open. Которая прекрасна всем:

  1. Пытается определить, какое у меня DE, чтобы запустить «браузер по умолчанию». GNOME? Нет, не GNOME. KDE? Нет, не KDE. XFCE? Опять мимо. Нет, я, конечно, даже глазом не успеваю моргнуть — процесоры нынче быстрые.
  2. По MIME-типу файла пытается найти нужное приложение, распарсив 100500 *.desktop-файлов в /usr/share/applications.
  3. После этого запускает наименее подходящее приложение (напр., для открытия каталогов я использовал thunar (inode/directory; thunar %s; test=test -n "${DISPLAY}")), но вот xdg-open, с*ка, решил, что разумнее запустить git-cola, а затем — audacious (видимо, потому, что в обычных каталогах git-cola возвращает ненулевой код).
  4. Наконец, для программ, у которых отсутствуют *.desktop-файлы, таковые приходится создавать вручную, что однозначно дольше добавления одной строки в .mailcap. Короче, снова приходится настраивать то, что уже годы работало.

Проблема в том, что всё больше инструментов пытаются использовать xdg-open вместо run-mailcap, а сам xdg-open попытается запустить run-mailcap только в случае, если сам не придумает какой-нибудь глупости. Снести xdg-open не получится — от него зависит chromium и ещё куча софта.

Посему вопрос: как сделать, чтобы run-mailcap запускался всегда, и запретить всякие странные эвристики и танцы с бубном?

Для Midnight Commander всё (пока) решается просто:

export MC_XDG_OPEN='run-mailcap'

Для всего остального я, увы, пока вижу лишь

dpkg-divert --divert /usr/bin/xdg-open.orig --local --rename /usr/bin/xdg-open
ln -s run-mailcap /usr/bin/xdg-open

Есть менее радикальные решения?

UPD: Временно решил проблему, создав run-mailcap.desktop след. содержания:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
NoDisplay=true
Exec=run-mailcap %u
Name=run-mailcap
Comment=run-mailcap

и прописав его в качестве обработчика для всех типов в ~/.config/mimeapps.list, но как-то это всё равно через задницу.

 , , ,

Bass ()

Программа, запускаемая xdg-open из скрипта, запущенного в отдельном окне xfce4-terminal, завершается при закрытии терминала

Добрый день! Есть скрипт:

#!/bin/bash

findinhome() {
    find ~/* -iname \*"$1"\*;
}

LISTGEN="findinhome";
HANDLER="xdg-open";

until [[ $QUERY_RESULT != "" ]]; do
    read QUERY
    if [[ $QUERY == "" ]]
        then exit
    fi

    QUERY_RESULT=$($LISTGEN "$QUERY" 2>/dev/null)
done

echo "$QUERY_RESULT" | cat -n
read QUERY_CHOICE
if [[ $QUERY_CHOICE == "" ]]; then
    exit
fi
$HANDLER "$(echo "$QUERY_RESULT" | awk NR==$QUERY_CHOICE)"
read
При запуске он считывает строку, ищет по ней файлы/каталоги в хомяке, выводит их занумерованный список, открывает командой xdg-open объект с номером, введённым с клавиатуры («read» в конце - для демонстрации сути проблемы).

Если я открываю xfce4-terminal, выполняю этот скрипт, и, например, pdf-файл открывается программой atril, то после запуска atril я могу закрыть терминал и atril останется работать. Если же я выполню скрипт командой xfce4-terminal -x myscript (т.е. в новом окне xfce4-terminal), то запущенная xdg-open программа будет работать ровно до тех пор, пока не завершится выполнение скрипта и не закроется сам терминал. Без «read» в конце при таком сценарии просто ничего не запускалось, с «read» запущенная программа работает до тех пор, пока не нажму «enter» в открывшемся окне терминала. При этом, и в htop, и в xfce4-taskmanager, atril отображается не как потомок скрипта, а как потомок init'а. Atril здесь - как пример, то же и при открытии каталога thunar'ом. Пожалуйста, подскажите, в чём может быть проблема, и как правильно запускать скрипт в отдельном окне терминала, чтобы запускаемая xdg-open программа работала и после закрытия этого окна. Заранее спасибо.

 , ,

Norong ()

Как перестать страдать от приложений по умолчанию и начать жить?

Сижу на арче. Время от времени приходится ставить всякие программы типа mplayer. Эти сволочи берут и как-то прописывают себя как программы для открытия файлов mkv, avi, etc. по умолчанию. Мне это страшно надоело. Не хочу пользоваться плохим софтом, когда есть VLC. Как мне настроить раз и навсегда ассоциации для расширений файлов и запретить пакману / рандомным говнопакетам менять эти ассоциации?

 , ,

hlebushek ()

Странное поведение xdg-open

Запускаю в терминале xdg-open filename.mp4 - открывается в mpv, норм, так и надо.
Есть поделие (wal/wcm commander) (да, я знаю, что ненужно), которое умеет открывать файлы. В нём filename.mp4 почему-то открывается через vlc. Если vlc удалить, то в mpv, но удалять не надо.
Кто понимает как эта поттеринщина (xdg) работает, подскажите как починять.
Захардкоженных упоминаний vlc в коде поделия не нашлось, зато нашлось это:

void ExecuteDefaultApplication( const unicode_t* Path )^M
{^M
        std::string utf8 = unicode_to_utf8( Path );^M
^M
        escShellStr( utf8 );^M
^M
#if defined( __APPLE__)^M
        const std::string command = "open " + utf8;^M
#else^M
        const std::string command = "xdg-open " + utf8;^M
#endif^M
//      dbg_printf("Executing: '%s'\n",command.data());^M
        if ( !fork() )^M
        {^M
                signal( SIGINT, SIG_DFL );^M
                system(command.data());^M
                exit( 1 );^M
        }^M
}^M
Судя по многочисленным ^M, код писали в wine notepad.exe, но на работу xdg-open это же не должно влиять...?

 , , ,

Lavos ()

Браузер по умолчанию выставлен как Firefox, но xdg-open все равно открывает Chromium

Во всех найденных mimeapps.list, defaults.list в качестве браузера вписан Firefox.

Проверяем:

$ xdg-mime query default x-scheme-handler/http
firefox.desktop
$ xdg-mime query default x-scheme-handler/https
firefox.desktop
$ xdg-mime query default text/html
firefox.desktop
$ xdg-open http://localhost &
И на последней строчке открывается chromium.

Предположив, что в firefox.desktop может вписана команда запуска хромиума, проверил:

$ cat `locate firefox.desktop` | grep Exec
Exec=firefox %u
Exec=firefox -new-window
Exec=firefox -private-window

Всё чисто. Какого, собственно, хрена? Где еще искать упоминания хромиума?

(Возможно, запуск Firefox под рутом и кнопка «Установить как браузер по умолчанию» сработает, но я хочу сначала разобраться, куда всё-таки залез хромиум).

 , , , ,

ALPINE ()

Программы на Qt не могут в xdg-open с URL

Clementine, Virtualbox, qBittorrent - при попытке открыть каталог через эти программы, появляется ошибка типа «/media/1000GB/%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%20%D0%B8%20%D0%BC%D1%83%D0%B7%D1%8B%D0%BA%D0%B0/Sayonara%20Zetsubou%20Sensei%20OST/TV1%20ED%20Single%20Zessei%20Bijin: Нет такого файла или каталога».

С GTK-программами, например, всё нормально.

Как я понял, это ошибка именно сборщиков дебиана, поскольку я уже второй раз ставлю систему с LXDE (сначала я ставил, выбрав пункт меню в установщике, а потом отдельно, через tty), и проблема всё ещё осталась.

Но это не важно. Важно, чтобы я мог открыть папку со скачанными файлами из qBittorrent, сразу после завершения загрузки. А я этого сделать не могу, как раз из-за вышеобозначенной ошибки.

Что посоветуете?

 ,

otasan ()

XDG .desktop: MimeType - расширение

Есть некоторый вайновый софт, имеет свои .desktop-файлы
Хочется из Nautilus открывать файлы по дабл-клику
Но файл не имеет mimetype (nautilus не определяет)
Можно ли сделать обработку по расширению?

 , ,

mystery ()

xdg hell: удаление ассоциаций

когда firefox начал открывать pdf-файлы gimp'ом, озадачился, почему так случается. Смотрю на то, что предлагает xdg-open:

$ XDG_UTILS_DEBUG_LEVEL=2 xdg-mime query default application/pdf    
Checking /home/dmitriy/.local/share//applications/mimeapps.list
Checking /usr/local/share/applications/defaults.list and /usr/local/share/applications/mimeinfo.cache
Checking /usr/local/share/applications/defaults.list and /usr/local/share/applications/mimeinfo.cache
Checking /usr/share/applications/defaults.list and /usr/share/applications/mimeinfo.cache
zzz-gimp.desktop

Наткнулся вот на стандарт, в котором пишут, что я могу в $XDG_CONFIG_HOME/mimeapps.list создать секцию наподобие

"[Removed Associations]
application/pdf=zzz-gimp.desktop

и все будет хорошо. Добавляю указанную секцию в файл ~/.local/share//applications/mimeapps.list — ничего не меняется. Лезу смотреть в то, что это за скрипт xdg-mime и с удивлением обнаруживаю, что там вообще нет нигде обработки секции «[Removed Associations]».

Собственно, вопрос — есть ли более-менее вменяемая замена xdg-utils, желательно более-менее следующая стандартам freedesktop?

 ,

demidrol ()

Автозапуск браузера с спецпрофилем для разработки

Всем привет!

В разработке используется browsersync который открывает url с помощью нодовского модуля opn который в свою очередь пользует xdg-open под линуксом. урл открывается в дефолтном браузере.

Как наиболее правильно и с наименьшим количеством костилей сделать так чтобы урл открывался в браузере с отдельныи профилем?

 

ZuBB ()

mimeapps.list и defaults.list, а в чем разница?

Вот есть каталог ~/.local/share/applications/ и в нем всякие xdg-файлы накапливаются, в том числе defaults.list и mimeapps.list меня интересуют. Данные файлы служат для открыть с помощью, а точнее для приложений по-умолчанию, как посмотрел, некоторые программы с одного списочка берут приложения (chrome - defaults.list), некоторые с другого (engrampa, Thunar - mimeapps.list).

Недолго думая я сделал

$ ~/.local/share/applications
$ ln -s ./mimeapps.list defaults.list

и у меня тут же вопрос, а чем-то это чревато?
И в чем различие defaults.list и mimeapps.list, по идеи так сказать, зачем столько файлов, не знаете ли?

WM: fluxbox , пускается так

export DESKTOP_SESSION=gnome
exec fluxbox -log "/tmp/${USER}.fluxbox"

 , ,

NK ()

open_xfce «$url» в WM и только для конкретного пользователя

У меня тут вопрос: как можно сделать, прописать где у пользователя только?

    generic)
    #open_generic "$url"
    open_xfce "$url"    
    ;;
я про https://bbs.archlinux.org/viewtopic.php?pid=635653#p635653

Вкратце, я открыл /usr/bin/xdg-open в редакторе, исправил строчку generic

#open_generic «$url»

open_xfce «$url»

подобное хочу провернуть не правя системный файл, типа задать на уровне пользователя этот параметр, т.е. сделать что бы mime-типы-файлов из настроек xfce считывались

В теме на которую ссылку кидал выше, там про вот это не прокатило: export DE=INSERT_DE_HERE

Начал конечно делать, что-то в виде

$ cat ~/.local/share/applications/defaults.list
[Default Applications]
application/x-bittorrent=transmission-gtk.desktop
inode/directory=Thunar.desktop;pcmanfm.desktop;
но так желания продолжать делать особого нет, к тому же xfce про всякие распространенные файлы в лине знает

Да и так каждый mime-тип прописывать, ну это же, ну долго

$ cat /usr/share/applications/engrampa.desktop | grep [Mm]ime
MimeType=application/x-7z-compressed;application/x-7z-compressed-tar;application/x-ace;application/x-alz;application/x-ar;application/x-arj;application/x-bzip;application/x-bzip-compressed-tar;application/x-bzip1;application/x-bzip1-compressed-tar;application/x-cabinet;application/x-cbr;application/x-cbz;application/x-cd-image;application/x-compress;application/x-compressed-tar;application/x-cpio;application/x-deb;application/x-ear;application/x-ms-dos-executable;application/x-gtar;application/x-gzip;application/x-gzpostscript;application/x-java-archive;application/x-lha;application/x-lhz;application/x-lrzip;application/x-lrzip-compressed-tar;application/x-lzip;application/x-lzip-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-lzop;application/x-lzop-compressed-tar;application/x-ms-wim;application/x-rar;application/x-rar-compressed;application/x-rpm;application/x-rzip;application/x-tar;application/x-tarz;application/x-stuffit;application/x-war;application/x-xz;application/x-xz-compressed-tar;application/x-zip;application/x-zip-compressed;application/x-zoo;application/zip;application/x-archive;application/vnd.ms-cab-compressed;
ну и во fluxbox пользуюсь все равно рядом вещей от xfce, в том числе Thunar, как основной ФМ

 ,

NK ()

pcmanfm, firefox и xdg-open

Решил взяться за настройку ассоциации файлов, т.к. за год использование xmonad в gentoo, получилось какая то каша. Нагуглил xdg-open, настроил его, теперь он правильно открывает все необходимые мне файлы. Но вот незадача, Firefox и PcmanFM используют похоже свои cобственные ассоциации.

Подскажите, как отучить эти приложения от ассоциаций и заставить открывать все через xdg-open?

 , ,

Majesty911 ()

Переполнение памяти в deluge

Вот записал видео. А вот уже фотиком заснял, потому что комп уже не на что не реагировал. P.S. Если не видно что на видео - можно скачать и посмотреть - качество нормальное.

 , , ,

w1nner ()

mc.ext и запуск исполнимых файлов

По умолчаниюв конце файла mc.ext прописано

default/*
  Open=
При таком описании Enter на исполнимом файле без распознанного расширения запускает этот файл на исполнение. Хочется в конце файла mc.ext прописать что-то вроде
default/*
  Open=screen -d -m xdg-open %f
Это должно обеспечить использование системных ассоциаций без нудного их переписывания в mc.ext. Но после этого никакие файлы по Enter не исполняются.

Можно ли как-то настроить mc, чтобы по Enter на файле с атрибутом «исполнимый» mc запускал этот файл, а не пытался его открывать в соответствии с расширением?

 ,

akorop ()

Как указать xdg-open что использовать для открытия ссылок определенного протокола?

Сабж.

Кейс:
У меня есть надстройка на моих сайтах которая генерит для меня ссылки вида icedit:/ftp://ИмяСервераВНастройкахКомодо/var/www/site/index.php

Раньше, когда я использовал Opera 12 я просто добавил протокол icedit указал что открывать их надо скриптом komodo-launcher который преобразовывал ссылку и передавал ее Komodo Edit, так чтобы он удаленно открывал этот файл. Как запилить такое в другом браузере, который дергает xdg-open для этих ссылок?

 ,

Suntechnic ()