2017-08-13 5 views
2

Dans mon ~/.zshrc j'ai quelque chose comme ceci:Où est le bon emplacement pour le script, de sorte qu'il s'exécute une fois après la mise sous tension du système?

# map capslock to escape 
ps cax | grep xcape > /dev/null 
if [ $? -eq 0 ]; then 
    # do nothing 
else 
    xmodmap ~/.xmodmap & xcape & 
fi 

Cela semble travailler sur la mise sous tension du système, mais après mon ordinateur se met en veille et se réveille, je perds que la liaison, donc mes CAPS LOCK arrêts se comporter comme CTRL ou . J'ai essayé de mettre ce script dans de nombreux endroits, y compris ~/.zprofile et similaires en vain. Mon système est arch linux (Antergos distro), avec GNOME 3 comme environnement de bureau.

RÉVISÉE:

On dirait que la bonne façon de le faire dans Arch Linux, est en faisant un service qui fera la tâche lors de la reprise. Comme ce guide dit: https://wiki.archlinux.org/index.php/Power_management#Sleep_hooks

Cependant, je ne suis pas sûr, comment pourrais-je commencer ce [email protected], car il n'a pas le nom habituel? systemctl start [email protected] ne fonctionnera pas ici, j'ai peur. EDIT:

Nous venons de découvrir, que c'est ce qu'on appelle le fichier d'unité de modèle, donc je suppose que je dois juste passer le nom d'utilisateur comme argument, qui sera mis à la place de User=%I ligne ...?

J'ai ajusté le script de cette page, à mes propres besoins et il ressemble à ci-dessous maintenant. Mais ça ne marche pas. Des pensées sur celui-ci?

/etc/systemd/system/[email protected] 

[Unit] 
Description=User resume actions 
After=suspend.target 

[Service] 
User=%I 
Type=oneshot 
Environment=DISPLAY=:0 
; ExecStartPre= 
ExecStart=/usr/bin/sh -c "/usr/bin/xmodmap ~/.xmodmap & /usr/bin/xcape &" 

[Install] 
WantedBy=suspend.target 

journalctl -xe donne cela, donc je suppose que le service a commencé, mais pas d'effets de xmodmap et xcape sont vus.

Sep 10 19:23:44 antergos systemd[1]: Starting User resume actions... 
-- Subject: Unit [email protected] has begun start-up 
-- Defined-By: systemd 
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel 
-- 
-- Unit [email protected] has begun starting up. 
Sep 10 19:23:44 antergos systemd[1]: Started User resume actions. 
-- Subject: Unit [email protected] has finished start-up 
-- Defined-By: systemd 
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel 
-- 
-- Unit [email protected] has finished starting up. 

Répondre

1

Votre ~/.zshrc n'est pas un endroit idéal pour ce vivre; cela va appeler votre commande xmodmap (un paramètre X global) chaque fois que vous démarrez un nouveau shell. (Ce que vous faites peut en fait déjà fonctionner si vous simplement le feu un nouveau shell chaque fois que votre système se réveille.)

Une meilleure solution serait d'avoir ce invoqué que le démarrage et réveil/CV. Vous devriez être en mesure d'accomplir cela en mettant la ligne xmodmap dans un petit p eurs m estion script dans /etc/pm/sleep.d/. Vous le voulez également dans votre ~/.xinitrc pour X start-up. Un peu plus de discussion sur ce here.