저는 Pop-OS에서 Gnome을 실행하고 있습니다! 20.04.
나는 쉘을 사용하고 terminator
있습니다 zsh
. fortune
X 세션에서 zsh 쉘을 처음 사용할 때만 실행하고 싶습니다 .
나는 다음과 같은 종류의 것들을 시도했습니다 .zshrc
.
### count the lines of
ps -ax | grep zsh
ps -ax | grep /zsh
###
[ -z "$(pidof zsh)" ] && fortune
추신: 이 질문에 적합한 태그를 찾는 데 어려움을 겪었습니다.
답변1
"X 세션당 한 번"이라는 정확한 요구 사항을 고려할 때 현재 X 세션에서 이미 수행된 정보를 저장하는 가장 자연스러운 장소는 X 서버 상태입니다. X 서버에는 사용자 정의 전역 데이터를 위한 의도된 위치가 실제로 없지만 언제든지 변경할 수 있는 사용자 정의 전역 구성을 위한 장소가 있습니다. 이는 여기 목적에 충분히 가깝습니다.X 자원. X 자원을 조작하는 명령줄 도구는 다음과 같습니다.xrdb
.
xrdb
이는 기발한 일이며 X.org 구현에는 매우 오래된 버그가 있음을 주의하십시오 . 아마도 xrdb -load
(문서화된 대로 이전에 로드된 모든 구성을 제거하는) 또는 xrdb -remove
(예상된 것과 달리 이전에 로드한 모든 구성을 제거하는)를 사용하고 싶지 않을 것입니다 .
다음에 대한 테스트되지 않은 코드 .zshrc
:
if [[ -n ${DISPLAY:+set} ]] && whence xrdb >/dev/null; then
if xrdb -query | grep -q '^pietrodito\.session\.ran-fortune:.*true'; then
fortune
xrdb -merge <<<'pietrodito.session.ran-fortune: true'
fi
fi
테스트 옵션을 설정 해제하려면 다음 안내를 따르세요.
xrdb -load <(xrdb -query | grep -v '^pietrodito\.session\.ran-fortune:)
이것은 원자적이지 않습니다. fortune
거의 동시에 zsh 인스턴스를 시작하면 여러 번 실행될 수 있습니다.
답변2
이것은 fortune
실행 중인 다른 zsh 쉘이 없는 경우에만 시작됩니다.
[[ "$(pidof zsh)" == *' '* ]] || fortune