Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: AimoE - 30.11.18 - klo:12.04
-
Huomaan että onlen jättänyt kertomatta ratkaisun ongelmaan jota aikoinaan kyselin täällä.
Järjestelmän käynnistyessä käynnistettävälle palvelulle voi kirjoittaa systemd-yksikkömäärityksen hakemistoon ~/.local/share/systemd/user/ tai ~/.config/systemd/user/. Kirjautuessa suoritettavalle komennolle voi tehdä käynnistimen hakemistoon ~/.config/autostart/ (esimerkiksi ohjelmalla "Käynnistettävät ohjelmat" eli "Startup Applications"). Valmius- tai lepotilasta herätessä suoritettaville komennoille ei ole samalla tavalla valmista ratkaisua, eli ei ole standardin mukaista kotihakemiston alihakemistoa, johon komentotiedostoja voi sijoittaa sitä varten.
Ensin kyselin (https://forum.ubuntu-fi.org/index.php?topic=52054.msg398720) miten saan haluamani komennot suoritetuksi koneen palatessa valmiustilasta. Siihen löytyikin ratkaisu, mutta kun yritin ulkoisen näytön poiskytkentää (https://forum.ubuntu-fi.org/index.php?topic=52946.msg405549#msg405549), en saanutkaan tarvittavaa xrandr-komentoa toimimaan systemd:n kautta. Koska tarvitsin joka tapauksessa käynnistinpalkkiin kiinnitetytn kuvakkeen, jonka avulla voin ottaa ulkoisen näytön käyttöön tai pois käytöstä, en pitänyt asiaa silloin tärkeänä.
Myöhemmin minulle valkeni, että X-ohjelmien suoritus käyttäjän istunnossa vaatii DISPLAY-asetuksen lisäksi XAUTHORITY-asetuksen. Käyttäjäkohtainen asetus ei ole mielekäs hakemistoon /lib/systemd/systemd-sleep viedyssä komentotiedostossa, joten tarvitsen ratkaisuksi oman systemd-yksikön, jossa määritys tehdään käyttäjäkohtaisesti. Jekku on siinä, että tämä palvelu pitää suorittaa järjestelmäprosessissa, koska käyttäjäprosessi ei ei voi viitata järjestelmäpuolen targetteihin, kuten Tomin aikanaan huomautti. Ja tämä ongelmahan oli jo ratkaistu ekassa ketjussa.
Tässä siis koko ratkaisu, eli noiden kahden ketjun ratkaisut yhteen pantuna.
Järjestelmäprosessissa käyttäjäkohtaisesti suoritettavaan tiedostoon /etc/systemd/system/act_on_resume@.service tarvitaan joukko käyttäjän kontekstin asetuksia:
[Unit]
After=suspend.target
After=hibernate.target
After=hybrid-sleep.target
[Service]
User=%I
Group=%I
WorkingDirectory=/home/%I
Environment=PATH=/usr/local/bin:/usr/bin:/bin
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/%I/.Xauthority
ExecStart=/usr/local/bin/act_on_resume
[Install]
WantedBy=sleep.target
Tässä "%I" viittaa mallin (template) ilmentymän (instance) nimeen, joka asetetaan palvelua luotaessa:
sudo systemctl enable act_on_resume@$USER.service
(Nuo hibernate ja hybrid-sleep -kohteet ovat mukana vain täydellisyyden vuoksi; oikeasti en niitä käytä.)
Tiedostoon /usr/local/bin/act_on_resume voikin sitten kirjoittaa joko komentoja suoraan tai käyttäjäkohtaisen komentotiedoston suorituksen – tai molemmat:
#!/bin/sh -e
xrandr --output HDMI-0 --off
[ -e bin/act_on_resume ] && sh bin/act_on_resume
Toistaiseksi en ole keksinyt mitään muuta käyttöä tälle kuin tuo ulkoisen näytön poiskytkentä, mutta onpahan ratkaisu valmiina jos jotain muuta tarvitaan. Niinpä en ole virittänyt tätä niin pitkälle että olisi joku hakemisto, johon voi pudottaa erillisiä määritysksiä tai komentotiedostoja, jotka kaikki suoritetaan koneen herätessä.
Sitä en sitten tiedä miten Waylandin kanssa käy.
Edit: korjattu liuta kirjoitusvirheitä.
-
Sitä en sitten tiedä miten Waylandin kanssa käy.
Waylandin kanssa tarvitset jonkin korvikkeen xrandrille, koska sitä ei voi silloin käyttää. Ratkaisu on todennäköisesti myös työpöytäkohtainen, koska ei ole mitään yleistä rajapintaa, jolla noita asetuksia voisi säätää. Jotain tietoa Gnomen suunnitelmista/toteutuksesta (https://wiki.gnome.org/Initiatives/Wayland/Gaps/DisplayConfig) (missä lie oikea dokumentaatio). KDE:n vastaava toteutus (https://github.com/KDE/libkscreen) vaikuttaa valmiimmalta.
-
Waylandin kanssa tarvitset jonkin korvikkeen xrandrille, koska sitä ei voi silloin käyttää.
Näin oletinkin.
Ratkaisu on todennäköisesti myös työpöytäkohtainen, koska ei ole mitään yleistä rajapintaa, jolla noita asetuksia voisi säätää. Jotain tietoa Gnomen suunnitelmista/toteutuksesta (https://wiki.gnome.org/Initiatives/Wayland/Gaps/DisplayConfig) (missä lie oikea dokumentaatio). KDE:n vastaava toteutus (https://github.com/KDE/libkscreen) vaikuttaa valmiimmalta.
Eipä sitten ole kiirettä waylandin kokeiluun.
Tuosta voi kuitenkin päätellä, että systemd-yksikkö ei toimi Waylandin kanssa, vaan siitä pitää siirtää ympäristömuuttujien asetukset siihen erilliseen komentotiedostoon jotta yksikkö toimisi sekä Waylandin että X:n kanssa. Muitakin ristiriitoja voi tulla vastaan, mutta tuo nyt on ilmiselvä.
-
Järjestelmän käynnistyessä käynnistettävälle palvelulle voi kirjoittaa
Kiitän. Noiden hakemistojen sijaintia onkin haeskeltu jo pitemmän aikaa. Kiitos hyvästä yhteenvedosta - nyt tietää, minne noita vanhan DOSin autoexec.bat:in hommia oikein pitää linuxissa väkertää.
On tämä linux vaan hankalampi: DOSissa oli config.sys ja autoexec.bat, joihin kirjattiin kaikki käynnistettäessä ajettavat ohjelmat. Linuxissa ne on siellä täällä eikä koskaan tiedä, missä niiden pitäisi olla.
Joku kyllä varmaan on tehnyt nettisivun, joka kertoo näiden käynnistyksissä ajettavien ohjelmien oikeat paikat. Kertokaahan minullekin, mikä se sivu on.
-
Minulla on vaivannut tuo lepotilasta palautuminen jo pitkään. Aina kun kone ei palaudu ja on väkisin sammutettava virtakytkimestä ja uudelleen käynnistyessä olen antanut luvan ongelmaraportille. Jotenkin se on päivityksissä koska toisinaan palautus toimii toisinaan taas ei. Eli sama virhe toistuu toisinaan päivityksissä näinkö se menee.
-
Minulla on vaivannut tuo lepotilasta palautuminen jo pitkään. Aina kun kone ei palaudu ja on väkisin sammutettava virtakytkimestä ja uudelleen käynnistyessä olen antanut luvan ongelmaraportille. Jotenkin se on päivityksissä koska toisinaan palautus toimii toisinaan taas ei. Eli sama virhe toistuu toisinaan päivityksissä näinkö se menee.
Tämä on uusi keskustelunavaus, kuuluisi omaan ketjuunsa.
Silloin kun minulla on ollut tuota ongelmaa, kyse oli siitä että syystä tai toisesta NVIDIA:n suljettu ajuri ei ollut käytössä. Tällä koneella lepotilasta paluu toimii moitteettomasti vain suljetun ajurin kanssa. Näin käy, koska koneessa sattuu olemaan NVIDIA:n GPU.