Xlib, listando usuários e displays

4 views
Skip to first unread message

Maicon Vinicius Nunes

unread,
Nov 7, 2008, 6:47:58 AM11/7/08
to ccppb...@googlegroups.com
Olá, lista.

Estou estudando C como hobby, em ambiente Linux. Advirto que sou
iniciante em C, mas tenho uma boa bagagem com administrador de redes em
Linux. Estou tentando fazer um daemon que rode como root na
inicialização da máquina e faça um fork com id de outro usuário, assim
que uma nova seção do X for aberta, seguindo a execução no DISPLAY
aberto por este usuário.

Já consegui fazer o básico, alterar a variável DISPLAY, trocar o uid do
processo e executar algo em cada DISPLAY.

Porém não estou encontrando uma forma de monitorar a abertura de uma
nova seção X, ou de identificar qual o usuário owner daquela seção.
Monitorando o /tmp/.X11-unix/ é possível listar os DISPLAYS abertos, mas
não tenho informações sobre o usuário. E ainda há o problema do
gerenciador gráfico de login, como KDM ou GDM. Se o KDM, por exemplo,
abre um DISPLAY :0, como saberei qual o momento em que o usuário fez
login? E como saberei qual usuário foi? E se uma outra seção for aberta,
como eu capturo isso?

Pesquisei um tanto no google, e procurei nos headers da Xlib alguma
função que listasse os DISPLAYs ativos, ou algo do gênero, mas não
encontrei. Alguém tem alguma dica sobre o assunto, ou já mexeu com algo
assim?

Um abraço, e obrigado pela atenção.

--
Maicon Vinicius Nunes
(51) 9355-1734

# Imprima esse e-mail! Ao imprimir você está incentivando
# uma indústria que emprega milhares de pessoas e gera divisas
# para o país!

Ubuntu [ùbúntú]:
1. Old African word meaning "I have no idea how to configure Slackware"

Gianni

unread,
Nov 7, 2008, 7:03:23 AM11/7/08
to ccppb...@googlegroups.com
Eu eu sei como fazer isso, mas minha primeira tentativa seria pesquisar o
D-Bus para fazer isso. Suponho que o KDM e GDM (ou outros) devem ter uma
forma padronizada de mensagens de D-Bus que informem isso; mas não tenho
certeza.

Caso ajude: http://www.freedesktop.org/wiki/Software/dbus

Nona

unread,
Nov 7, 2008, 9:03:48 AM11/7/08
to ccppb...@googlegroups.com
Assim como o D-Bus tem o D-Cop dá uma olhada nessa lib.


Abraços!!!

2008/11/7 Gianni <nasus....@gmail.com>



--
-------------------------------------------------------------
Jônatas Isvi da Silva Pedraza
Bacharelando em Ciência da Computação pelo Cesf-Fucapi
Atualmente alocado no projeto INdT/Fucapi
Pesquisas em Python, C/C++ e Maemo
+55 92 81183823

Jorge Pereira

unread,
Nov 7, 2008, 1:02:50 PM11/7/08
to ccppb...@googlegroups.com
Bem,

        Creio que neste caso de você querer saber se esta sendo GDM/KDM/XFDM, o dcop não sera uma boa alternativa,
pois ele trabalha diretamente com o KDE. Creio que uma boa alternativa seria você ver algo utilizando o d-bus ou então
quem sabe fazer um polling dos processos em execução utilizando a libproc (soluçao nao tao elegante), porem tenta da
uma olhada na funçao "XtGetDisplays", talvez lhe ajude!

boa sorte!
[]s

DCOP - http://en.wikipedia.org/wiki/DCOP
--
Regards,
+--------------------------------------------+
Jorge Pereira,
http://blog.jorgepereira.com.br/
+--------------------------------------------+


2008/11/7 Nona <jonata...@gmail.com>

Jorge Pereira

unread,
Nov 7, 2008, 1:03:30 PM11/7/08
to ccppb...@googlegroups.com
sorry!

s/XFDM/XDM/


--
Regards,
+--------------------------------------------+
Jorge Pereira,
http://blog.jorgepereira.com.br/
+--------------------------------------------+


2008/11/7 Jorge Pereira <jper...@gmail.com>

Hugo Parente Lima

unread,
Nov 7, 2008, 1:19:45 PM11/7/08
to ccppb...@googlegroups.com
Em Friday 07 November 2008 16:02:50 Jorge Pereira escreveu:
> Bem,
>
> Creio que neste caso de você querer saber se esta sendo
> GDM/KDM/XFDM, o dcop não sera uma boa alternativa,
> pois ele trabalha diretamente com o KDE.

O DCOP foi descontinuado, o KDE4 usa DBUS.

> --~--~---------~--~----~------------~-------~--~----~
> C/C++ Brasil - http://www.ccppbrasil.org/
> Para sair dessa lista, envie um e-mail para
> ccppbrasil-...@googlegroups.com Para mais opções, visite
> http://groups.google.com/group/ccppbrasil
> --~--~---------~--~----~------------~-------~--~----~
> Campo de emprego & carreira: vag...@ccppbrasil.org
> http://groups.google.com/group/dev-guys?hl=en
> -~----------~----~----~----~------~----~------~--~---

--
Hugo Parente Lima
"Precisamos de mais gênios humildes no mundo, hoje somos poucos!"
JID: hu...@jabber.org

signature.asc

Jorge Pereira

unread,
Nov 8, 2008, 11:45:58 AM11/8/08
to ccppb...@googlegroups.com
Thanks Hugo!

   Nao recordava deste detalhe que o KDE aderiu o FreeDesktop em seu ambiente, automaticamente
removendo o tao "pobre" DCOP!

[]s

--
Regards,
+--------------------------------------------+
Jorge Pereira,
http://blog.jorgepereira.com.br/
+--------------------------------------------+


2008/11/7 Hugo Parente Lima <hug...@gmail.com>

Maicon Vinicius Nunes

unread,
Nov 10, 2008, 1:25:49 PM11/10/08
to ccppb...@googlegroups.com

> Bem,
>
> Creio que neste caso de você querer saber se esta sendo
> GDM/KDM/XFDM, o dcop não sera uma boa alternativa,
> pois ele trabalha diretamente com o KDE. Creio que uma boa alternativa
> seria você ver algo utilizando o d-bus ou então
> quem sabe fazer um polling dos processos em execução utilizando a
> libproc (soluçao nao tao elegante), porem tenta da
> uma olhada na funçao "XtGetDisplays", talvez lhe ajude!
>
> boa sorte!
> []s
>
> DCOP - http://en.wikipedia.org/wiki/DCOP
> --
> Regards,
> +--------------------------------------------+
> Jorge Pereira,
> http://blog.jorgepereira.com.br/
> +--------------------------------------------+
XtGetDisplays parece ser uma grande dica! Estou estudando! Eu queria
evitar D-Bus, e principalmente DCop, que já está finado, como vocês
disseram.

Obrigado a todos

Jorge Pereira

unread,
Nov 11, 2008, 6:36:36 PM11/11/08
to ccppb...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages