切り離されたtmuxセッションをsystemdユーザーサービスとして自動的に開始させたい。その中で、offlineimapが起動し、ログイン資格情報を復号化する必要があります。 pinentryのグラフィカルなバリアントは、セッションに接続するときに、ログイン資格情報を復号化するためのパスワードを要求するはずです。ログイン資格情報を管理するために、プログラム pass を使用したいと思います。
システムにログインした後にユーザーサービスを開始すると、目的の動作が完全かつ再現可能に機能します(再起動から開始)。
しかし、残念ながら、「symstemctl --user enable mail.service」を実行して再起動すると、機能しません。
$ systemctl --user status mail
● mail.service - load offlineimap for all mail accounts inside tmux
Loaded: loaded (/home/toogley/.dotfiles/systemd/user/mail.service; enabled; vendor preset: enabled)
Active: inactive (dead)
$ tmux attach-session -t mail
can't find session mail
何を分析できるのか、何が理由なのか、私にはわかりません。誰かがこの問題に対処するためのヒントを持っていますか?
どうもありがとう!
My mail.service
Description=load offlineimap for all mail accounts inside tmux
After=network.target graphical.target
Requires=gpg-agent.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/tmux new-session -d -s mail -n dev 'export GPG_TTY=$(tty) && \
offlineimap'
ExecStop=/usr/bin/tmux kill-window -t mail
ExecReload=/usr/bin/kill -s USR1 $(pgrep offlineimap)
[Install]
WantedBy=graphical.target
my gpg-agent.service:
[Unit]
Description=GnuPG private key agent
IgnoreOnIsolate=true
[Service]
Type=forking
ExecStart=/usr/bin/gpg-agent --daemon --homedir=%h/.gnupg
ExecStop=/usr/bin/pkill gpg-agent
Restart=on-abort
[Install]
WantedBy=default.target
私の〜/ .offlineimaprc
[general]
accounts = dev
ui = ttyui
metadata = ~/.dev_offimap
pythonfile=~/.dotfiles/mutt/accounts/decrypt.py
[Account dev]
synclabels = yes
localrepository = dev-local
remoterepository = dev-remote
status_backend = sqlite
autorefresh = 1
quick = 10
[Repository dev-local]
type = Maildir
localfolders = ~/mail/dev/
[Repository dev-remote]
remotepasseval = get_pass("[email protected]")
ssl = yes
type = IMAP
remotehost = imap.mailbox.org
remoteuser = [email protected]
sslcacertfile = /etc/ssl/certs/ca-bundle.crt
keepalive = 60
holdconnectionopen = yes
私が探しているものは現在不可能のようです。
最初はgraphical.target
の説明を読み間違えました-ログインが行われた後にこのターゲットが設定されると思いました。代わりに、ログイン画面(lightdmなど)を設定するだけです。また、「グラフィカルデスクトップにログイン」の場合、現在ターゲットは存在しません。
ArchLinux Wiki は、systemdユーザーサービスごとにウィンドウマネージャーを起動する方法を説明しています-ユーザーがlightdmにログインするタイミングに依存するため、これは私には機能しません。
回避策として必要なときにサービスを開始するためにエイリアスを使用します。