Bug 10440

Summary: bad pause_audio scriptlet (at least for amarok)
Product: Sisyphus Reporter: Nick S. Grechukh <gns>
Component: hibernateAssignee: viy <viy>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P2    
Version: unstable   
Hardware: all   
OS: Linux   

Description Nick S. Grechukh 2006-12-17 16:34:18 MSK
 
Comment 1 Nick S. Grechukh 2006-12-17 16:34:46 MSK
--- pause_audio 2006-10-09 18:08:04 +0300
+++ /etc/hibernate/scriptlets.d/pause_audio     2006-12-15 23:49:16 +0200
@@ -28,12 +28,13 @@
     # Pause amaroK
     for auuser in $(ps aux | grep -w '[a]marok' | awk '{print $1}' | sort | 
uniq); do
        FindXServer
-       if [ "`su $auuser -c 'dcop amarok player status'`" = "2" ]; then
-           su $auuser -c 'dcop amarok player pause'
+       if [ "`su - $auuser -c 'dcop amarok player status'`" = "2" ]; then
+           su - $auuser -c 'dcop amarok player pause'
        fi
     done
     # Add your favourite media player here.
     # And then perhaps think up a less horrific way of doing this.
+
     return 0
 }
Comment 2 Valery Inozemtsev 2006-12-17 18:03:26 MSK
исправлено в alt4
Comment 3 Nick S. Grechukh 2006-12-19 20:01:58 MSK
спасибо. подозреваю, что остальные тоже надо проверить на предмет использования
окружения. 
(и еще у меня там дозревает поддержка для cmus)
Comment 4 Valery Inozemtsev 2006-12-19 20:36:32 MSK
su там больше нет
Comment 5 Nick S. Grechukh 2006-12-28 15:24:15 MSK
(In reply to comment #4)
> su там больше нет

как это, а вот:
    # Pause xmms
    for auuser in $(ps aux | grep -w '[x]mms' | awk '{print $1}' | sort | 
uniq); do
    su $auuser -c 'xmms -u'
    done
    # Pause beep media player
    for auuser in $(ps aux | grep -w '[b]eep-media-player' | awk '{print 
$1}' | sort | uni
q); do
    FindXServer
    su $auuser -c 'beep-media-player -u'
    done

предлагаю заодно добавить поддержку cmus:
    # Pause cmus
    for auuser in $(ps aux | grep -w '[c]mus' | awk '{print $1}' | sort | 
uniq); do
    su - $auuser -c 'cmus-remote -s'
    done

-s, а не -u потому что cmus плохо себя ведет на паузе, если саундкарту 
выхватывают из под носа
Comment 6 Valery Inozemtsev 2006-12-28 18:51:11 MSK
да, недоглядел
$ grep su\ \\$ /etc/hibernate/scriptlets.d/* -l
lock
pause_audio
xstatus
Comment 7 Nick S. Grechukh 2006-12-28 19:02:10 MSK
собственно, наск. я понимаю '[a]marok' вместо amarok только во избежание 
race'а? можно вот так:

find_running(){
        ps -o uid=,pid= -C $1
}

find_running cmus | while read uid pid; do
......
done

find_running xmms | while read uid pid; do
......
done
Comment 8 Valery Inozemtsev 2006-12-28 19:14:48 MSK
а нужно? вызов su исправлен в alt6. cmus тоже добавил
Comment 9 Nick S. Grechukh 2006-12-28 19:22:36 MSK
отлично.

(ну кажется так аккуратнее, или нет? смотри сам :)