Xdg open не работает

Как мне установить новую настройку xdg-open?

Я хочу использовать xdg-open для открытия irc:// ссылок, как я могу сделать необходимый параметр?

xdg-open в основном просто смотрит, какая у вас среда рабочего стола, а затем запускает gnome-open, gvfs-open, xfce-open и т. д. Смотрите ниже инструкции по конкретной среде рабочего стола .

Gnome использует программу gnome-open, которая использует gconf для хранения всего. Например, на моей машине с Ubuntu 10.10 работает gnome-open irc: // blah открывает xchat, потому что xchat включает в себя патч настройки gconf для добавления обработчика irc: //.

Это показывает, как это делает gnome с настройками gconf в /desktop/gnome/url-handlers/ . Смотрите xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemas в качестве примера.

Для KDE вы должны посмотреть файлы .protocol в / usr / share / kde4 / services /, создать новый для вашего нового протокола и поместить его в

/ .kde / share / kde4 / services /, если это супер полезно, тогда рассмотрите возможность добавления его в пакет как исправление для других пользователей.

KDE использует kde-open или kfmclient в зависимости от того, что доступно и какая у вас версия KDE.

XFCE использует программу под названием exo-open, у этой программы нет способа сконфигурировать ее или добавить обработчики uri. Просмотр исходного кода показывает, что он использует файлы рабочего стола для указания только трех типов программ. TerminalEmulator, WebBrowser и EmailClient.

В XFCE4 (и, возможно, также в других) можно настроить xdg-open для определения собственного обработчика протокола. В некоторых вы должны создавать / редактировать следующие файлы:

/ .local / share / Applications / protocolhandler.desktop

/ .local / share / Applications / mimeapps.list

Пример добавления обработчика для протокола ed2k представлен на stackexchange.com 2 .

Я опишу это с magnet: типом URI и передачей (т. Е. Битовый поток), но тот же метод можно применить к любой схеме или типу файла.

Также я проверил это с Debian Jessie, и у меня фактически нет машины с Ubuntu, но я считаю, что она должна работать так же (по крайней мере, для xdg-open , обратите внимание, что файловые менеджеры могут использовать другую логику).

Узнайте строку типа MIME. Для типов файлов MIME вы можете узнать это с помощью команды file :

Для приведенного выше файла тип MIME равен video/webm .

Для обработчиков URI типом является x-scheme-handler/ , где часть URI перед двоеточием, например, «http», «mailto», «irc» или «magnet». Ниже приведены примеры допустимых типов MIME:

Узнайте название файла приложения .desktop.

Часто это не то же самое, что «официальное» имя, а скорее строчная версия, или совершенно другое имя. Установленные файлы .desktop находятся в каталоге / usr / share / Applications. Так как они являются обычными текстовыми файлами и содержат «официальное» имя, вам может помочь следующая команда:

Команда фактически означает «список файлов в этом каталоге, которые содержат слово« Transmission »». Некоторые приложения могут быть установлены только для пользователя, в этом случае путь будет

Если у вас есть «странное» приложение, которое может вообще не иметь файла, вы всегда можете создать его (и, возможно, отправить его разработчикам приложения). Легким способом было бы скопировать существующее, переписать поля, которые вы понимаете, и удалить те, которые вы не делаете. Обратитесь к спецификации для деталей.

Сделайте назначение, используя команду xdg-mime :

Обратите внимание, что независимо от того, где файл находится (/ usr / share / Applications,

/ .local / share / Applications . ), вы всегда используете только имя , а не полный путь.

Обычно команда ничего не выводит — это нормально. Если вы хотите проверить, что вы только что сделали, или посмотреть, что в данный момент назначено любому типу MIME, не открывая его:

Примечание 1: Если вы хотите проверить другие типы MIME, вы можете посмотреть /etc/mime.types. Он не содержит все типы в мире; например, обработчики URI, но его можно использовать для «агрессивной» формы обработки ассоциаций. Например:

связал бы все известные видео форматы с VLC.

Примечание 2. Файлы .desktop часто содержат список типов MIME, которые, как они утверждают, могут обрабатывать с помощью MimeType поля. Страница man xdg-mime сообщает, что файл .desktop должен иметь тип MIME, прежде чем будет работать вышеупомянутая команда, но для меня это работает, даже если поле отсутствует. (Я имею в виду, ассоциация будет применена, и приложение запустится — если это действительно может обработать тип, это другой вопрос). Я не уверен, что является недостатком (возможно, в будущем xdg-mime будет более ограничительным).

Читайте также:  Не работает вентилятор f10

Источник

Используйте xdg-open, чтобы открыть URL с новым процессом

Я начинаю экспериментировать с Crunchbang (который основан на Debian и использует терминатор ) в качестве среды веб-разработки, и одной из вещей, с которыми я борюсь, является поведение xdg-open . Я пришел из OSX, так что извините, если этот вопрос окажется слишком плотным.

Я хотел бы иметь возможность открыть URL-адрес, xdg-open http://www.google.com а затем продолжать использовать то же окно терминала для работы (это как open функции в OSX). Прямо сейчас, использование xdg-open занимает текущую вкладку / сессию, пока я не закрою окно браузера или не завершу вручную ctrl + c . Я бы предпочел, чтобы он запускал новый процесс, чтобы я мог открыть URL-адрес, обратиться к данным на странице и использовать его в той же вкладке / окне без необходимости открывать дополнительный.

Странно, это работает так из коробки на моем Debian. Попробуйте запустить его в фоновом режиме:

Вы можете превратить это в функцию, добавив следующие строки в ваш

Затем вы можете просто запустить, open http://www.google.com и он будет работать в фоновом режиме.

Если вы хотите отсоединить процесс от текущей оболочки, а не запускать его как фоновое задание xdg-open http://www.google.com & , мне нравится detach утилита:

Можно создать псевдоним для этого. Мне нравится detach более, так nohup как по умолчанию закрывает stdin stdout и stderr, поэтому его вызов будет чище.

xdg-open ждет завершения программы Это по замыслу. Если программа является программой текстового режима, она должна оставаться на переднем плане в терминале. Даже если программа с графическим интерфейсом, это поведение полезно в том случае, если xdg-open используется из сценария, и сценарий хочет выполнить что-то после того, как файл был отредактирован (например, отправить новую версию куда-нибудь или иным образом сделать что-то с новой версией).

Если вы не хотите ждать, бегите xdg-open в фоновом режиме. Вы можете запустить любую команду оболочки в фоновом режиме, поставив в конце амперсанд.

С некоторыми программами xdg-open возвращается сразу. На самом деле происходит то, что xdg-open вызывающая программа немедленно возвращается. Обычно это происходит с программами с графическим интерфейсом, которые открывают все файлы в одном экземпляре: когда вы запускаете их второй раз, они посылают сообщение запущенному экземпляру, чтобы сообщить ему об открытии файла, и немедленно завершают работу.

Источник

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

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

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

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

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

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

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

Можно ли настроить GtkAppChooserWidget через

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

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

Кто знает – настраивается ли GtkAppChooserWidget через

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

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

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

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

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

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

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

(Сама форма записи ; 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 «$» )), но вот 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 всё (пока) решается просто:

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

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

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

и прописав его в качестве обработчика для всех типов в

Источник

xdg-open: метод недоступен даже после установки xdg-utils

Я использую генератор-угловой-полный стек. На моем локальном компьютере все работает нормально, я запускаю

он запускает сервер, но в VPS он не работает

и я уже установил xdg-utils

Может ли кто-нибудь объяснить мне, что я делаю неправильно?

  • Вы уверены, что у вас установлено ? Попробуйте запустить его с консоли. Второй совет: попробуйте изменить имя хоста на «0.0.0.0». И, пожалуйста, покажите нам Gruntfile.

Вы используете графическую среду? Если вы используете «raspberry» и подключаетесь через ssh, и у вас нет «grunt», настроенного для использования PhantomJS, «Grunt» не сможет выполнить задачу. Вы должны заставить его продолжать «служить — форсировать ворчание» или установить «Gruntfile.js»

  • Поскольку вопрос был задан так давно, я не могу проверить ответ. Да, я не использовал графический интерфейс. Может в этом причина.

Вы пробовали настраивать обработчики ?

Кроме того, удостоверились ли вы, что на вашем сервере установлен браузер? Установка нового браузера с apt-get install
должен автоматически уведомить об этом . Однако ваша установка могла не сделать этого в зависимости от порядка, в котором были установлены ваш браузер / xdg-utils.

Чтобы все снова стало нормальным, требуется запустить .

Чтобы установить обработчик для предпочтительного браузера (который на сервере без головы, вероятно, будет , или ), сделайте следующее:

Для проверки вы можете запустить , и вы должны увидеть свой ответ в w3m.

Если у вас нет , установите его с помощью

Вы можете захотеть увидеть другие доступные обработчики, запустив , который в моей системе выводит следующее:

РЕДАКТИРОВАТЬ: Оказывается, в некоторых старых системах (ubuntu 10.04) нет , и что команда должна автоматически настраивать . Вот так:

Я не эксперт по , но я попробую. Похоже, возникла проблема с вашей базой данных пакетов. Кроме того, показ файла grunt упростил бы задачу.

Вот следующие шаги:

Узнайте, частью каких пакетов они являются.

Вы захотите повторить указанное выше для каждого совпадения, возвращаемого . или используйте вместо этого поиск . Я бы делал каждое, по одному.

Переустановка xdg-utils. Если вы хотите обновить установку этого пакета, сделайте следующее:

Надеюсь, это поможет!

  • 5 правильный способ переустановки пакета —
  • @sdotdi См. шаг 4 моего ответа
  • Скопируйте и вставьте его в терминал, пока не увидите, что я имел в виду.

Источник

xdg-open command not found error on Ubuntu #1538

Comments

sojharo commented Jan 6, 2016

I have used this boilerplate on windows and it works fine.

However, I recently switched to Ubuntu and my same project is not working there.

When I give command : grunt serve

It fails on following message:

The text was updated successfully, but these errors were encountered:

kawashimaken commented Jan 8, 2016

What is your Ubuntu version?
I dont have exact the same issue, but I encounter some errors in Ubuntu 15.04, while in Ubuntu 14.04.3 LTS everything works just fine and smooth.

How about run the following command in your terminal

to confirm if your xdg-open is installed in your ubuntu system
mine shows

if not installed, you can try

Please let me know if this solves your problem. Have a nice day! 🙂

sojharo commented Jan 8, 2016

Thank you for nice response

My Ubuntu version is 14.04.3 LTS. I just installed it 10 days back.

I ran the command which xdg-open and it exactly showed me /usr/bin/xdg-open

I ran the command ‘sudo apt-get install xdg-utils —fix-missing’

The problem is still not resolved for me. However, I start the server using this command now : grunt serve —force . It doesn’t crash but shows the problem. However, after this I am successfully able to go to the localhost:9000 in my browser

Awk34 commented Jan 8, 2016

Until you figure this out, I’d suggest removing the ‘open’ task from grunt serve instead of using —force

kawashimaken commented Jan 8, 2016

Nice to know you can access your app now!

However it is strange that the error occurs even your xdg-open is installed.
my next guess is:
Are you using sudo to run

or did you use command like

in the generation process at any point?

sojharo commented Jan 8, 2016

I get permission denied error.

I get the error xdg-open command not found for which I have opened this issue.

I remember npm install also gave me some permission issues, therefore I had to use command:

Should I clone my project again and then try with npm install ?

kawashimaken commented Jan 8, 2016

Yes, I highly recommend you to do it again without sudo
The things you need to sudo install are the packages supposed to be used globally (everywhere in your machine):
like npm itself, grunt-cli, bower, yo, generator-angular-fullstack etc. using

Please try again with a clean generation use

sojharo commented Jan 8, 2016

I created a new and clean application using yo angular-fullstack . I did not use sudo anywhere. Still, I got the same Permission denied error.

And when I used sudo grunt serve , I got command not found error.

Thanks @Awk34 for suggestion to remove the ‘open’.

kawashimaken commented Jan 8, 2016

Could you please show us your permission error messages?
and can you confirm by:

to find out what has been installed globally, and show us the result please?
Without knowing the details of your machine and your setup process, I’m guessing that you might be installing your grunt or something globally which might cause the error.
If it is the case, the following commands might solve your problem:

(Highly recommended) Also remove all the packages that are not supposed to be install globally by running

and install them locally withou sudo

sojharo commented Jan 9, 2016

On sudo npm list -g —depth=0 I got:

On sudo npm list -g —depth=1 , I got:

/usr/local/n/versions/node/5.2.0/lib
└─┬ npm@3.3.12
├── abbrev@1.0.7
├── ansi-regex@2.0.0
├── ansicolors@0.3.2
├── ansistyles@0.1.3
├── aproba@1.0.1
├── archy@1.0.0
├── async-some@1.0.2
├── chownr@1.0.1
├── cmd-shim@2.0.1
├── columnify@1.5.2
├── config-chain@1.1.9
├── debuglog@1.0.1
├── dezalgo@1.0.3
├── editor@1.0.0
├── fs-vacuum@1.2.7
├── fs-write-stream-atomic@1.0.4
├── fstream@1.0.8
├── fstream-npm@1.0.5
├── glob@5.0.15
├── graceful-fs@4.1.2
├── has-unicode@1.0.1
├── hosted-git-info@2.1.4
├── iferr@0.1.5
├── inflight@1.0.4
├── inherits@2.0.1
├── ini@1.3.4
├── init-package-json@1.9.1
├── lockfile@1.0.1
├── lodash._baseindexof@3.1.0
├── lodash._baseuniq@3.0.3
├── lodash._bindcallback@3.0.1
├── lodash._cacheindexof@3.0.2
├── lodash._createcache@3.1.2
├── lodash._getnative@3.9.1
├── lodash.clonedeep@3.0.2
├── lodash.isarguments@3.0.4
├── lodash.isarray@3.0.4
├── lodash.keys@3.1.2
├── lodash.restparam@3.6.1
├── lodash.union@3.1.0
├── lodash.uniq@3.2.2
├── lodash.without@3.2.1
├── mkdirp@0.5.1
├── node-gyp@3.0.3
├── nopt@3.0.4
├── normalize-git-url@3.0.1
├── normalize-package-data@2.3.4
├── npm-cache-filename@1.0.2
├── npm-install-checks@2.0.1
├── npm-package-arg@4.0.2
├── npm-registry-client@7.0.7
├── npm-user-validate@0.1.2
├── npmlog@1.2.1
├── once@1.3.2
├── opener@1.4.1
├── osenv@0.1.3
├── path-is-inside@1.0.1
├── read@1.0.7
├── read-cmd-shim@1.0.1
├── read-installed@4.0.3
├── read-package-json@2.0.1
├── read-package-tree@5.1.2
├── readdir-scoped-modules@1.0.2
├── realize-package-specifier@3.0.1
├── request@2.65.0
├── retry@0.8.0
├── rimraf@2.4.3
├── semver@5.0.3
├── sha@2.0.1
├── slide@1.1.6
├── sorted-object@1.0.0
├── strip-ansi@3.0.0
├── tar@2.2.1
├── text-table@0.2.0
├── uid-number@0.0.6
├── umask@1.1.0
├── unique-filename@1.0.0
├── unpipe@1.0.0
├── validate-npm-package-license@3.0.1
├── validate-npm-package-name@2.2.2
├── which@1.2.0
├── wrappy@1.0.1
└── write-file-atomic@1.1.3

This is the permission error I get when I run without sudo :

kawashimaken commented Jan 9, 2016

I notice you are using n to manage your node version.
Things might be, you have install some global package to version A, when you switch to version B, you have to install global package again for that version, because they don’t share global package folder among different versions.

On sudo npm list -g —depth=0
only npm is shown, means that you did not install others for this node version (in this case node version 5.2.0)
try

Also I suggest you use node 4.2.4(don’t forget to check installed global packaged again, if you switch node version to 4.2.4, if needed do the above again for 4.2.4)

sojharo commented Jan 10, 2016

While running this command I also noticed warning which said,

I think I am now beginning to understand the problem. I would test with reinstalling the packages again. If failed, I would remove current nodejs and then would go for 4.2.4.

Thanks. I would let know here about results.

sojharo commented Jan 10, 2016

Still getting permission denied error. I think I should move towards nodejs 4.2.4. I would do this tomorrow and would let you know here. Thanks for your help 🙂

sojharo commented Jan 14, 2016

I installed 4.2.4 but still no luck. 🙁

Awk34 commented May 11, 2016

The short term hack if ‘open’ doesn’t work is to just delete that task in your Grunt/Gulp config. All it does is open your browser to your project (localhost:9000). It’s not necessary.

Источник

Оцените статью