Используйте DBU, чтобы получить имя MediaPlayer в настоящее время воспроизведение

.gvfs создается GVfs под GNOME. Глядя на страницу Википедии , вы можете обнаружить, что GVfs (сокращение от «Виртуальная файловая система GNOME») - это виртуальная файловая система в пользовательском пространстве GNOME, разработанная для работы с абстракцией ввода-вывода GIO.

Наиболее вероятная ситуация, связанная с вашей проблемой, заключается в том, что какая-то программа Gnome все еще работает в фоновом режиме с идентификатором пользователя, которого вы хотите удалить. Я тоже столкнулся с той же проблемой.

Решение состоит в том, чтобы убить все программы, связанные с этим идентификатором пользователя. Из оболочки вы можете проверить, работает ли какая-либо программа с этим идентификатором пользователя, прежде чем завершить их, набрав

ps -U username

Вы можете завершить (убить) эти программы, используя команду всегда из оболочки

sudo pkill -u USERID

, где вы можете найти идентификатор пользователя для instance by

 id -u username

После этого можно будет удалить домашний каталог пользователя с помощью

rm -r /home/username

1
09.11.2018, 17:55
2 ответа

Я сделал так:

Это скрипт, который всегда запускается, чтобы проверить, какой плеер активен в данный момент/был активен последним, и сохраняет этот плеер в файле:

#!/bin/sh

while true ; do
    for m in `qdbus | egrep -i 'org.mpris.MediaPlayer2|plasma-browser-integration'` ; do
        if [[ `qdbus $m /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus` == 'Playing' ]]; then
            echo $m > ~/.config/activePlayer/currentPlaying.txt
        fi
    done
    sleep 1
done

и это скрипт, который отправляет команды dbus, такие как play/pause/etc/, игроку, который в данный момент активен (на основе этого файла ). Сценарий вызывается sxhkd, который прослушивает мои нажатия клавиш.

#!/bin/sh

#Get command
case $1 in
    'play-pause')
        cmd='/org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause';;
    'next')
        cmd='/org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next';;
    'previous')
        cmd='/org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous';;
    'stop')
        cmd='/org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop';;
    'skipForward')
        cmd='/org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Seek 5000000';;
    'skipBackward')
        cmd='/org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Seek -5000000';;
    *)
esac

#Send command to qdbus
if [[ `qdbus | egrep -i 'org.mpris.MediaPlayer2|plasma-browser-integration' | wc -l` -eq 1 ]]; then
    qdbus `qdbus | egrep -i 'org.mpris.MediaPlayer2|plasma-browser-integration'` $cmd
else
    qdbus `cat ~/.config/activePlayer/currentPlaying.txt` $cmd
fi

unset cmd
2
27.01.2020, 23:42

В последней версии вы можете использовать playerctld .

playerctl -p playerctld play-pause

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

1
31.01.2020, 21:28

Теги

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