Domanda

Sto cercando di rilevare il tempo dal momento dell'ingresso dell'ultimo utente utilizzando la libreria client di estensione Saver X11 schermo. Faccio le chiamate periodiche XScreenSaverQueryInfo per ottenere il tempo di inattività. Il problema che sto affrontando è che dopo ogni 20-30 secondi, il tempo di inattività, come riportato da questa chiamata, viene reimpostato a 0. Questo accade anche se non v'è stato alcun input da parte dell'utente reale in quel momento. Sono assolutamente sconcertato da questo. L'unica portare che ho è che il problema scompare se disinstallo gnome-screensaver. La mia domanda è, fa gli input dell'utente Simulare gnome-screensaver per qualche motivo? So che può sembrare improbabile, e se lo fa, sarà sicuramente essere un bug con gnome-screensaver, ma non riesco a pensare ad altro momento. Qualcuno sa dove posso trovare maggiori informazioni su come funziona gnome-screensaver e come influenza la chiamata XScreenSaverQueryInfo senza la necessità di passare attraverso il codice. Ho passato con informazioni a gnome-screensaver casa ma non ho trovato nulla di rilevante per il mio problema.

Aggiorna : Ho ottenuto il seguente output da dbus-monitor. Come interpreto in questo modo:

method call sender=:1.97538 -> dest=org.gnome.ScreenSaver serial=3 path=/org/gnome/ScreenSaver; interface=org.gnome.ScreenSaver; member=SimulateUserActivity

Credo che qualche processo sta chiedendo gnome-screensaver per SimulateUserActivity. Oppure, è gnome-screensaver invio di un segnale SimulateUserActivity a dbus? Se è la prima, come posso scoprire quale processo sta chiedendo gnome-screensaver per farlo?

È stato utile?

Soluzione

Una volta che hai il mittente dbus (come illustrato a dbus-monitor di lì) si può fare:

dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetConnectionUnixProcessID string:':1.97538'

collegare il mittente effettivo. Che ti dà il PID che è l'invio del messaggio.

Poi dicono che il pid è 2144, faresti:

cat /proc/2144/cmdline

come un modo per vedere ciò che il programma è.

Altri suggerimenti

Un programma (lettori video fa questo durante la riproduzione di video) potrebbe essere l'invio di un comando gnome-screensaver-command --poke che invierà un evento SimulateUserActivity per azzerare il tempo di inattività che impedirà screensaver diventare attivo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top