저는 Debian을 사용하고 있으며 다음 중 하나를 실행하지 않으면 알림이 표시되지 않습니다 notify-send
. notify-send
# either:
/usr/lib/notification-daemon/notification-daemon
# or:
/usr/lib/notify-osd/notify-osd
나는 이들 중 하나를 내 셸에서 작업하는 대신 서비스로 실행하고 싶습니다. 그러나 /etc/init.d(스켈레톤을 템플릿으로 사용)에서 시작 스크립트를 생성할 때 서비스를 시작하려고 하면 다음 출력이 생성되고 notify-send
알림이 표시되지 않습니다.
(알림 데몬: 14467): Gtk - 경고**: 디스플레이를 열 수 없습니다:
답변1
/etc/init.d
개인 로그인 세션을 위한 서비스를 시작하려는 경우 시스템 전체 시작 스크립트에서 스크립트를 제어합니다. 모든 사용자의 모든 로그인 세션에 대해 이를 수행하는 방법은 여러 가지가 있지만 시스템 설정 방법에 따라 다릅니다. 다시 말씀드리지만, 개인 로그인 세션에 대해 이 작업을 수행하는 방법은 여러 가지가 있지만 사용 중인 세션 유형에 따라 다릅니다. (예: GNOME, XFCE, KDE, fvwm 등)
/usr/lib/notify-osd/notify-osd
부팅 시 시작 되도록 세션 관리자, 데스크탑 환경 또는 창 관리자를 구성하고 싶을 수도 있습니다 . 예를 들어 xsession을 통해 fvwm을 사용하므로 구성 파일은 ~/.xsession
다음과 같습니다.
#!/bin/sh
# Other programs I need at startup like xscreensaver and urxvtd ...
/usr/lib/notify-osd/notify-osd &
exec fvwm
답변2
"디스플레이를 열 수 없습니다"는 바이너리에 실행되지 않는 X 서버가 필요하다는 의미입니다. notify-send
시작 하려면 시작 스크립트를 수정해야 합니다.뒤쪽에X 서버. 문제가 있으면 스크립트를 게시해 주세요.
답변3
@elb의 답변에 추가 :
해당 줄을 추가하면 ~/.xsession
로그인할 수 없는 지점까지 컴퓨터의 자동 로그인이 중단되었습니다( .xsession
로그인할 때마다 파일이 계속 읽혀지기 때문인 것 같나요?).
~/.xsessionrc
대신, 이전에 내 시스템에 존재하지 않았던 파일 에 동일한 콘텐츠를 넣었습니다 . 하지만 효과가 있었어요!
답변4
다음 시스템 단위 파일을 추가합니다.
# ~/.config/systemd/user/notification-daemon.service
[Unit]
Description=Notification Daemon
After=display-manager.service
[Service]
Restart=on-failure
RestartSec=1
ExecStart=/usr/lib/notification-daemon-1.0/notification-daemon
[Install]
WantedBy=default.target
display-manager.service
시스템에 따라 다를 수 있으므로 X After
서버를 시작할 수 있도록 활성화하는 것이 중요합니다.
사용자로서 다음을 실행하십시오.
systemctl --user enable --now notification-daemon.service
이는 두 가지를 모두 수행하는 --now
것과 마찬가지로 선택 사항입니다 start
.