초기 시작 시에만 XMonad의 시작 후크를 실행하세요.

초기 시작 시에만 XMonad의 시작 후크를 실행하세요.

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-rcbash 스크립트인 것처럼 시작하려는 프로그램을 추가하세요 (실행 가능하게 만들 필요는 없습니다).

설명하다

Ubuntu에서는 XMonad가 로그인 화면에서 시작됩니다 /usr/share/xsessions/xmonad.desktop. 이에 의해 실행되는 프로그램은 자체가 아니라 xmonad에 처음 로그인할 때 해당 내용과 함께 실행될 xmonadbash 스크립트 xmonad-session(에 위치 /usr/bin/xmonad) 입니다..xmonad/xmonad-session-rc

해결 방법은 약간 까다롭습니다. 파일의 목적은 프로그램을 실행하는 것이 아니라 환경 변수를 설정하는 것이라고 생각 xmonad-session-rc하지만 확실하지 않습니다.

답변3

xmonad-contrib를 사용하는 경우 시작 후크에서 대신 import Xmonad.Util.SpawnOnce사용하세요 .spawnOncespawn

관련 정보