Service start niet op fedora 32

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • EMP
  • Registratie: November 2000
  • Laatst online: 18-09 13:16

EMP

Krulloos!

Topicstarter
Mijn nieuwe laptop heeft vier media-toetsen rechtsboven die ik nooit gebruik, en géén dedicated Home/End/PgUp/PgDn toetsen. Ik dacht: dat valt op te lossen.

De vraag die ik heb is echt OS specifiek, vandaar dat ik er een apart draadje voor gepakt heb.

Eerst heb ik een scriptje gemaakt dat de functie van de knoppen omzet: /usr/bin/keybmap.sh:
code:
1
2
3
4
5
6
7
8
#!/bin/bash

#Remapping the audio Play/Pause, Stop, Prev and Next buttons to PgUp, PgDn, Home and  End.

xmodmap -e "keycode 173 = Prior" #Media Play/Pause
xmodmap -e "keycode 171 = Next" #Media Stop
xmodmap -e "keycode 172 = Home" #Media Previous
xmodmap -e "keycode 174 = End" #Media Next


Executable gemaakt en werkt prima.

Echter na een reboot is de remapping verdwenen, dus wil ik dit na opstarten automatisch aanroepen. /etc/init.d/rc.local bestaat blijkbaar niet meer, dus dan moet het in een service. Zo gezegd zogedaan, /etc/systemd/system/keybmap.service :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=Remap media keys to Home End PgUp PgDn
#After=rc-local.service
After=network-online.target

[Service]
Type=oneshot
ExecStart=/bin/bash /usr/bin/keybmap.sh
RemainAfterExit=yes
#ExecStop=/usr/bin/bash /sbin/ifconfig ax0 down; /etc/ax25/ax25-down

[Install]
#WantedBy=multi-user.target 
WantedBy=basic.target


Reboot en... helaas, de knoppen zijn niet gemapped :(

De service staat netjes enabled volgens systemctl list-unit-files (| grep keybm)
code:
1
2
UNIT FILE                                            STATE           VENDOR PRESET
keybmap.service                                      enabled         disabled


end journalctl zegt hierover:
code:
1
2
3
Jul 20 16:59:51 Ideapad5.fritz.box systemd[1]: keybmap.service: Main process exited, code=exited, status=1/FAILURE
Jul 20 16:59:51 Ideapad5.fritz.box systemd[1]: keybmap.service: Failed with result 'exit-code'.
Jul 20 16:59:51 Ideapad5.fritz.box audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=keybmap comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed'



Ik kom er niet echt uit wat er nu mis is. Kan iemand mij op weg helpen?

[ Voor 12% gewijzigd door EMP op 20-07-2020 17:04 ]

Verbouwblog van mijn Schrootjespaleis uit 1925.
My anime addiction.

Beste antwoord (via EMP op 21-07-2020 22:10)


  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Als user kan je een .desktop plaatsen in ~/.config/autostart

[ Voor 10% gewijzigd door DJMaze op 20-07-2020 20:50 ]

Maak je niet druk, dat doet de compressor maar

Alle reacties


Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 21:56

Cyphax

Moderator LNX
Als je het script draait onder jouw eigen gebruiker werkt het wel, maar bij een startup wordt het script vast niet uitgevoerd onder jouw gebruiker en past ie het daarom niet toe? Ik gok zoiets in eerste instantie.
Ik heb er geen ervaring mee, maar als ik erop ga zoeken kom ik tegen dat je een .Xmodmap zou kunnen maken voor je custom binding. Misschien is dat een makkelijkere richting.
https://medium.com/@retpr...with-xmodmap-1341a1552d4f

[ Voor 37% gewijzigd door Cyphax op 20-07-2020 17:33 ]

Saved by the buoyancy of citrus


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Als user kan je een .desktop plaatsen in ~/.config/autostart

[ Voor 10% gewijzigd door DJMaze op 20-07-2020 20:50 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • EMP
  • Registratie: November 2000
  • Laatst online: 18-09 13:16

EMP

Krulloos!

Topicstarter
Cyphax schreef op maandag 20 juli 2020 @ 17:32:
Als je het script draait onder jouw eigen gebruiker werkt het wel, maar bij een startup wordt het script vast niet uitgevoerd onder jouw gebruiker en past ie het daarom niet toe? Ik gok zoiets in eerste instantie.
Ik heb er geen ervaring mee, maar als ik erop ga zoeken kom ik tegen dat je een .Xmodmap zou kunnen maken voor je custom binding. Misschien is dat een makkelijkere richting.
https://medium.com/@retpr...with-xmodmap-1341a1552d4f
Goede site wel, maar het opstartprobleem blijft. Ik ben nog niet zo bekend met systemd.
DJMaze schreef op maandag 20 juli 2020 @ 20:49:
Als user kan je een .desktop plaatsen in ~/.config/autostart
Yes, that did the trick! Bedankt!

Voor referentie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[Desktop Entry]

# The type as listed above
Type=Application

# The version of the desktop entry specification to which this file complies
Version=1.0

# The name of the application
Name=KeyboardRemap

# A comment which can/will be used as a tooltip
Comment=Remaps keyboard media keys to Home End PgUp PgDn

# The path to the folder in which the executable is run
Path=/usr/local/bin

# The executable of the application, possibly with arguments.
Exec=keybmap.sh

# The name of the icon that will be used to display this entry
#Icon=jmemorize

# Describes whether this application needs to be run in a terminal or not
Terminal=false

# Describes the categories in which this entry should be shown
Categories=System;

[ Voor 30% gewijzigd door EMP op 20-07-2020 21:24 ]

Verbouwblog van mijn Schrootjespaleis uit 1925.
My anime addiction.


Acties:
  • 0 Henk 'm!

  • amx
  • Registratie: December 2007
  • Laatst online: 30-08 10:48

amx

Waarom wanted by basic.target?
Heb even voorbeeld gezocht en daar wordt gewoon multi-user gekozen.

https://wiki.archlinux.or...le/Keyboard_configuration

Ook timing instellen (after network-online), gekeken of er vergelijkbare voorbeelden van zijn?

[Edit]

Ah, prima. Zie dat het al opgelost is

[ Voor 8% gewijzigd door amx op 20-07-2020 21:26 ]


Acties:
  • +1 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 22:19

Hero of Time

Moderator LNX

There is only one Legend

Weet je ook waarom het niet werkte?


De reden is kinderlijk eenvoudig. Je roept xmodmap aan. Dat is een, jawel, X11 util. Dat werkt alleen in een, juistem, X11 sessie. Dat zal dus nooit gaan werken als je het tijdens het opstarten van het systeem probeert uit te voeren. Er is geen gebruikerssessie om de remapping in toe te passen, geen $DISPLAY variabele voor de X11 omgeving, etc.

Zo heb ik zelf een laptop (oudje) met een Britse toetsenbord indeling. Dat heeft de ISO layout, terwijl ik de ANSI prefereer. Dus remap ik de toets die tussen de linker shift en z zit naar een shift. Maar dat zal nooit werken bij het inlogscherm, want je kan daar niet direct xmodmap aanroepen.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • EMP
  • Registratie: November 2000
  • Laatst online: 18-09 13:16

EMP

Krulloos!

Topicstarter
Hero of Time schreef op dinsdag 21 juli 2020 @ 21:15:
Weet je ook waarom het niet werkte?


De reden is kinderlijk eenvoudig. Je roept xmodmap aan. Dat is een, jawel, X11 util. Dat werkt alleen in een, juistem, X11 sessie. Dat zal dus nooit gaan werken als je het tijdens het opstarten van het systeem probeert uit te voeren. Er is geen gebruikerssessie om de remapping in toe te passen, geen $DISPLAY variabele voor de X11 omgeving, etc.

Zo heb ik zelf een laptop (oudje) met een Britse toetsenbord indeling. Dat heeft de ISO layout, terwijl ik de ANSI prefereer. Dus remap ik de toets die tussen de linker shift en z zit naar een shift. Maar dat zal nooit werken bij het inlogscherm, want je kan daar niet direct xmodmap aanroepen.
Met de eerste errormelding zoals in de TS beschreven werd het mij niet duidelijk, later kreeg ik inderdaad de melding die mij die kant op wees, maar dank je voor de duidelijke uitleg :)

Verbouwblog van mijn Schrootjespaleis uit 1925.
My anime addiction.


Acties:
  • +1 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 22:19

Hero of Time

Moderator LNX

There is only one Legend

Dat je weinig wijs werd van journalctl is op zich ook wel logisch. Het leest voornamelijk de exit status uit en niet zozeer eventuele andere output zoals stderr. Mogelijk had je wat meer informatie kunnen krijgen als je een 'systemctl status $keymapping' had gedaan, maar wellicht had je daar ook niet veel chocolade van kunnen maken.

Ik zie nu ook dat je wat fout had gedaan in je unit. Je zegt dat het een oneshot is, maar tegelijk na exit moet blijven draaien. Voor iets dat eenmalig z'n ding moet doen, hoeft het ook helemaal niet te blijven draaien. Dat zal waarschijnlijk voornamelijk de failure status geven.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 01:02
Hero of Time schreef op woensdag 22 juli 2020 @ 19:51:
Dat je weinig wijs werd van journalctl is op zich ook wel logisch. Het leest voornamelijk de exit status uit en niet zozeer eventuele andere output zoals stderr.
Standaard wordt output toch meestal wel gelogd? De laatste regels daarvan zie je inderdaad ook met systemctl status. Maar we zien hier ook niet welk journalctl-commando gebruikt is. Het zou goed kunnen dat daar ook grep keybm gebruikt is om te filteren en dan mis je een regel als
code:
1
Jul 20 16:59:51 Ideapad5.fritz.box bash[xxx]: xmodmap: unable to open display ''.

Een voordeel van journalctl is juist dat je niet alle filters zelf hoeft te bouwen:
code:
1
journalctl -u keybmap.service
Ik zie nu ook dat je wat fout had gedaan in je unit. Je zegt dat het een oneshot is, maar tegelijk na exit moet blijven draaien. Voor iets dat eenmalig z'n ding moet doen, hoeft het ook helemaal niet te blijven draaien. Dat zal waarschijnlijk voornamelijk de failure status geven.
RemainAfterExit wordt juist voornamelijk gebruikt met Type=oneshot; de unit blijft actief terwijl het ExecStart-proces al klaar is. Het lijkt me hier ook niet nuttig, maar er zitten wel gekkere dingen in dat bij elkaar geraapte zooitje van een unit. De failure status is gewoon omdat xmodmap faalt.
Pagina: 1