在我~/.zshrc
我有這樣的事情:腳本的正確位置在哪裏,以便在系統啓動後運行一次?
# map capslock to escape
ps cax | grep xcape > /dev/null
if [ $? -eq 0 ]; then
# do nothing
else
xmodmap ~/.xmodmap & xcape &
fi
這似乎是工作在系統啓動,但之後我的電腦進入待機和喚醒,我失去約束力,所以我CAPS LOCK
停止行爲就像CTRL
或ESC
。我試圖把這個腳本放在很多地方,包括~/.zprofile
和類似的無濟於事。我的系統是Arch Linux(Antergos發行版),GNOME 3作爲桌面環境。
修訂:
看起來像Arch Linux的做這件事的正確方法,是使一個服務,將做簡歷的任務。正如本指南所說:https://wiki.archlinux.org/index.php/Power_management#Sleep_hooks
但是,我不確定,我將如何開始[email protected]
,因爲它沒有通常的名稱?恐怕,systemctl start [email protected]
在這裏不起作用。 編輯:
剛剛發現,這就是所謂的模板單元文件,所以我想我只需要通過用戶名作爲參數,這將被置於User=%I
行......?
我已經從該頁面調整了腳本,以滿足我自己的需要,現在看起來像下面這樣。但它不起作用。對此有任何想法?
/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
給出了這樣的,所以我想啓動該服務,但沒有xmodmap
和xcape
效應可見。
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.