Notificações e daemon de notificação não estão funcionando no gerenciador de janelas

9

Notificações não funcionam em gerenciadores de janelas independentes do Linux (Openbox, Awesome WM e similares). Eu tentei instalar o notification-daemon e dunst, mas o envio com notify-send "something" não faz nenhuma janela para pop-up.

Eu tentei rodar o polkit-gnome-agent e rodar diretamente os daemons de notificação, mas isso não ajuda (enquanto atrás eu resolvi um problema similar dessa maneira, mas agora ele não faz nada).

Não há nenhum indício de erro a menos que eu envie uma notificação trivial com python, então recebo apenas uma mensagem de erro vaga: %código% O programa C Trivial não produz nada (nenhum erro, por exemplo).

Estou usando o Archlinux com systemd e d-bus, suspeito que seja um problema com o polkit ou algum tipo de daemon que não está em execução no gerenciador de janelas, mas não tenho ideia, o que poderia tentar ou como obter um erro mais significativo? mensagens.

EDITAR: eu peguei um exemplo de código: link

O dbus deve estar rodando porque o systemd tem como dependência. Eu tenho File "/usr/lib/python3.3/site-packages/gi/types.py", line 113, in function return info.invoke(*args, **kwargs) gi._glib.GError: Could not connect: Connection refused installed - é o pacote que fornece libnotify . Além disso, o daemon de notificação deve iniciar conforme necessário (somente quando a notificação surgir), seguindo o arquivo da área de trabalho notify-send :

[D-BUS Service]
Name=org.freedesktop.Notifications
Exec=/usr/bin/dunst

Eu até tentei executar daemons diretamente (apenas executar) e tentei enviar notificações. Se alguém souber como eu poderia obter mais informações, por favor, não hesite em sugerir.

EDIT 2: Tentei executar o daemon de notificação com sudo: /usr/share/dbus-1/services/org.freedesktop.Notifications.service (no meu caso sudo notification-daemon_name & ) e sudo dunst & , então a notificação funciona. Mas quando eu tento fazer alguma das ações anteriores como usuário sem privilégios (o que é importante para a maioria dos programas que enviam notificações como usuários não privilegiados), nada é mostrado.

sudo notify-send something se recusa a funcionar sem nenhum erro ou aviso.

EDIT 3: É evidente que é um problema de permissões: não consigo enviar notificações sem acesso root. Após a reinicialização limpa: notification-daemon funciona mesmo sem iniciar manualmente qualquer daemons, porém o que eu (e meus programas iniciados) devem fazer para enviar notificações sem privilégios de root como é possível no Gnome ou em qualquer outro ambiente de desktop? >     

por IBr 31.08.2013 / 22:38

3 respostas

5

Finalmente resolvi o problema sozinho.

Vou deixar instruções que fiz.

O problema consiste em duas partes:

  1. O Dbus não pode ser acessado a partir do gerenciador de janelas
  2. O daemon de notificação não pode receber mensagens do dbus

Primeira solução do problema:

O problema real era que meu gerenciador de janelas era executado a partir do lxdm, que por alguma razão não mescla arquivos de configuração de /etc/X11/xinit/xinitrc.d , exceto a sessão lxde (no LXDE dbus funciona, mas o awesome wm não). Nesta pasta existe um arquivo chamado 30-dbus com o seguinte conteúdo:

#!/bin/bash

# launches a session dbus instance
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] && type dbus-launch >/dev/null; then
  eval $(dbus-launch --sh-syntax --exit-with-session)
fi

Esta parte do código define a variável $DBUS_SESSION_BUS_ADDRESS , que define uma porta dbus a ser usada para várias aplicações. echo $DBUS_SESSION_BUS_ADDRESS pode ser usado como verificação simples de sanidade para ver se existe uma sessão dbus (ele deve retornar o arquivo de sessão dbus).

Os arquivos de configuração dessa pasta podem ser mesclados com o shell script simples no início da sessão (código obtido de .xinitrc ):

#!/bin/bash

if [ -d /etc/X11/xinit/xinitrc.d ]; then
  for f in /etc/X11/xinit/xinitrc.d/*; do
    [ -x "$f" ] && . "$f"
  done
  unset f
fi

2ª solução do problema:

Enquanto o dbus está em execução e está disponível para outros programas, ele ainda precisa de mais acesso para que as notificações funcionem corretamente, então eu precisei executar o polkit agent, porque o Awesome WM não possui um. Eu escolhi lxpolkit , porque eu já tinha quase todo o ambiente lxde. No meu caso, acabou de adicionar ao meu arquivo ~/.config/awesome/rc.lua : awful.util.spawn_with_shell("dex /etc/xdg/autostart/lxpolkit.desktop") , por algum motivo sem essa linha, ele se recusou a iniciar por padrão com lxdm.

Eu acho que o agente gnome polkit deve funcionar bem também.

    
por 03.09.2013 / 22:59
0

Esta não é uma resposta, apenas um grande esclarecimento para talvez ajudar a gerar a próxima pergunta.

Obrigado por adicionar mais detalhes. Você provavelmente tem um problema de permissões, mas infelizmente é provável que as permissões necessárias para se conectar ao soquete do domínio DBus Unix.

Para confirmar essa execução como não-raiz:

$ strace -o /tmp/ns.out notify-send "why will this not connect"
$ grep '^connect' /tmp/ns.out
connect(4, {sa_family=AF_FILE, path=@"/tmp/dbus-6AIOJVWzCC"}, 23) = 0

exceto que você provavelmente terá algo como

connect(…) = -1 ECONNREFUSED  (Connection refused)

Por quê? Eu não faço ideia. Eu sei que o subsistema de notificação tem recebido muito mais atenção na comunidade de desenvolvimento do GNOME do que eu imaginava que um recurso superficialmente simples deveria ter. Eu suspeitaria de algum arquivo de configuração no zilhão de locais de configuração do GTK, mas sei que isso não é muito útil.

    
por 11.10.2016 / 02:08
0

Para mim, funcionou instalar o notify-osd e o dunst no i3wm.

    
por 26.07.2018 / 19:23