Исключения с открытием xdg -при запуске программ в фоновом режиме

Вы можете проверить, где установлено устройство, используя команду 'df -h'. Затем вы можете перейти в эту папку и получить доступ к содержимому этого устройства.

1
03.04.2020, 18:16
1 ответ

xdg-openпредназначен для запуска программы просмотра и ожидания ее завершения. Он не предназначен для работы в фоновом режиме, и, как вы уже выяснили, вряд ли будет работать очень хорошо. У вас была бы та же проблема со старой системой mailcap, которая также запускала программы на переднем плане.

Можно изменить функцию оболочки, чтобы она всегда открывалась в новом терминале, но это, скорее всего, приведет к тому, что у вас будет большое количество бесполезных терминалов. Чтобы сделать вашу функцию более полезной и работать так, как вы хотите, вы могли бы сделать что-то вроде этого:

o () {
    for i in "$@"
    do
        mimetype=$(xdg-mime query filetype "$i")
        prog=$(xdg-mime query default "$mimetype")
        if grep -qs Terminal=true "/usr/share/applications/$prog"
        then
            xdg-open "$i"
        else
            xdg-open "$i" >/dev/null 2>/dev/null &
        fi
    done
}

Это проверит, требуется ли вашей программе терминал, и если да, вызовет его на переднем плане; в противном случае он будет вызывать его в фоновом режиме. Однако в настоящее время он не обрабатывает URL-адреса или пользовательские приложения, и вам необходимо отредактировать его соответствующим образом, чтобы ваша система обрабатывала это. Тем не менее, это отправная точка, от которой вы можете отталкиваться.

1
28.04.2021, 23:18

Теги

Похожие вопросы