Puncte:0

Rulați Service Systemd după Display Manager

drapel cn

Am un script care modifică unele setări Gnome pe care vreau să le rulez la pornire.Scriptul în sine funcționează bine când îl rulez manual, dar primesc următoarea eroare când îl rulez ca serviciu systemd:

â startup-user.service - Serviciu de pornire
     Încărcat: încărcat (/etc/systemd/system/startup-user.service; activat; prestabilit furnizor: activat)
     Activ: eșuat (Rezultat: cod de ieșire) din sâmb. 2022-02-05 13:03:48 UTC; acum 21 de ani
    Proces: 1948 ExecStart=/data/startup-user.sh (cod=exit, status=1/FAILURE)
   PID principal: 1948 (cod=ieșit, stare=1/Eșec)
        CPU: 22 ms

05 februarie 13:03:48 debian systemd[1]: A pornit serviciul de pornire.
05 februarie 13:03:48 debian gsettings[1950]: nu a reușit să comite modificări în dconf: nu se poate lansa automat D-Bus fără X11 $DISPLAY
05 februarie 13:03:48 debian gsettings[1953]: nu a reușit să comite modificări în dconf: nu se poate lansa automat D-Bus fără X11 $DISPLAY
05 februarie 13:03:48 debian gsettings[1956]: nu a reușit să comite modificări în dconf: nu se poate lansa automat D-Bus fără X11 $DISPLAY
05 februarie 13:03:48 debian startup-user.sh[1959]: Eroare la conectare: Nu se poate lansa automat D-Bus fără X11 $DISPLAY
05 februarie 13:03:48 debian systemd[1]: startup-user.service: Procesul principal a ieșit, cod=ieșit, stare=1/Eșec
05 februarie 13:03:48 debian systemd[1]: startup-user.service: a eșuat cu rezultatul „exit-code”.

Iată fișierul script:

#!/bin/bash

gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false
gsettings set org.gnome.desktop.peripherals.touchpad atingeți pentru a face clic adevărat
gsettings set org.gnome.settings-daemon.plugins.power ambient-enabled false
apel gdbus --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.freedesktop.DBus.Properties.Set org.gnome.SettingsDaemon.Power.Screen Brightness „<int32 100>”

Și iată fișierul unității de service:

[Unitate]
Descriere=Serviciul de pornire
După=grafic.ţintă

[Serviciu]
Tip=simplu
ExecStart=/data/startup-user.sh
Utilizator=utilizator

[Instalare]
WantedBy=graphical.target

Este prima dată când lucrez cu servicii systemd și nu știu prea multe despre managerii de afișare sau orice altceva este implicat aici, dar presupun că dacă serviciul meu începe după grafică.ţintă, apoi managerul de afișare ar trebui pornit și trebuie setate toate variabilele necesare. am incercat si eu După=gdm.service, și nu sunt sigur dacă ar trebui să am grafică.ţintă pentru amandoi După= și WantedBy=, dar dacă îl scot din WantedBy= atunci serviciul nu rulează deloc.

În cazul în care vă întrebați și/sau face o diferență, acesta este pentru un sistem live cu care construiesc Debian Live. În loc să folosesc o partiție de persistență, vreau să rulez acest script de fiecare dată când pornesc, astfel încât să poată face o configurație de bază. Fișierul script se află pe o partiție separată ext4 montată la /date, astfel încât să pot modifica fișierul script ori de câte ori vreau să schimb setările.

ce fac greșit? Mulțumiri!

Puncte:1
drapel fr

The problem here isn't just "before/after", it's also that not all state is global. Just because X11 has already been started doesn't mean all processes automatically gain knowledge of what $DISPLAY to use, and the same applies to the session D-Bus socket address. (Especially not when you remember that there could be multiple sessions, each having a different $DISPLAY value.) Instead, this is limited to the process tree starting with the display manager itself and its children.

(System services in general are not meant to poke around in user sessions.)

Session components should be run by the session itself – either through XDG Autostart (using .desktop files in ~/.config/autostart/ and the corresponding /etc/xdg location) or through systemd user services (~/.config/systemd/user) or through the Xsession script if X11 is used (~/.xprofile, ~/.xsession). That way they always run at the correct time and always inherit the correct environment.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.