startupHook
私の中には次のものがありますxmonad.hs
, startupHook = spawn "~/.xmonad/autostart"
実行するために作成されたこのスクリプトで、多くのアプリケーションとデーモンを起動します。ただ一度起動しました。ただし、クリックするたびに実行されますMod-q
。つまり、変更を再ロードしてテストしますxmonad.hs
。
自動起動スクリプトで条件付きでプログラムを実行できますが、これは非常に不安定であることが判明しました。そのため、xmonadがこの起動フックを初めて起動したときにのみ実行し、再ロードするときに実行しないようにする方法があるかどうか疑問に思います。
インターネットを検索しようとしましたが、何も見つかりませんでした。そのようなことは可能ですか?
編集:Ubuntu 12.04のcabalからインストールされたxmonad 0.11を実行しています。
答え1
のようによくある質問、xmonadが+をstartupHook
使用してMOD再起動されるたびに実行されますQ。
また、ソフトウェアの観点からも重要に見えます。再起動と変わらない止めるそれからスタート。したがって、区別する方法はありません。スタートから再起動Xmonad内で。したがって、Xmonadを起動するたびにstartupHook
起動時にプログラムを実行するには、.xsession
またはにプログラムを追加する一般的な方法を使用することをお勧めします.Xinitrc
。
あなたの場合は置くことができます
~/.xmonad/autostart
ファイルの末尾に.Xinitrc
。
答え2
Ubuntuや他のDebianベースのシステムを使用してパッケージマネージャを介してXMonadをインストールした場合(実際には、元の質問をした人には役に立たなかったが他の人には役に立つかもしれません)、非常に厳しい解決策があります。
~/.xmonad/xmonad-session-rc
bashスクリプトのように起動したいプログラムを追加します(実行可能にする必要はありません)。
説明する
Ubuntuでは、XMonadがログイン画面から起動します/usr/share/xsessions/xmonad.desktop
。これによって実行されるプログラムはそれ自体ではなく、xmonadに初めてログインしたときにその内容とともに実行されるxmonad
bashスクリプトxmonad-session
(に位置/usr/bin/xmonad
)です。.xmonad/xmonad-session-rc
回避策は少し面倒です。ファイルの目的はプログラムを実行するのではなく、環境変数を設定することだと思いますxmonad-session-rc
が、わかりません。
答え3
xmonad-contribを使用している場合は、起動フックで代わりにimport Xmonad.Util.SpawnOnce
使用してください。spawnOnce
spawn