startupHook
내 안에는 다음이 있습니다xmonad.hs
, startupHook = spawn "~/.xmonad/autostart"
실행하기 위해 작성된 이 스크립트에서 많은 응용 프로그램과 데몬을 시작합니다.오직일단 시작되었습니다. 하지만 클릭할 때마다 실행됩니다 Mod-q
. 즉, 변경 사항을 다시 로드하고 테스트합니다 xmonad.hs
.
자동 시작 스크립트에서 조건부로 프로그램을 실행할 수 있지만 이는 매우 불안정한 것으로 판명되었습니다. 그래서 xmonad가 이 시작 후크를 처음 시작할 때만 실행하고 다시 로드할 때는 실행하지 않도록 하는 방법이 있는지 궁금합니다.
인터넷 검색을 시도했지만 아무것도 찾지 못했습니다. 그런 일이 가능합니까?
편집: 우분투 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