¡Estoy ejecutando Gnome en Pop-OS! 20.04.
Estoy usando terminator
y zsh
shell. Quiero iniciar fortune
solo la primera vez que uso zsh shell en una sesión X.
He probado ese tipo de cosas en .zshrc
:
### count the lines of
ps -ax | grep zsh
ps -ax | grep /zsh
###
[ -z "$(pidof zsh)" ] && fortune
PD: Me costó encontrar etiquetas apropiadas para esta pregunta.
Respuesta1
Dado el requisito preciso "una vez por sesión X", el lugar más natural para almacenar la información que ya se hizo en la sesión X actual es en el estado del servidor X. Realmente no hay un lugar previsto para datos globales personalizados en un servidor X, pero hay un lugar para una configuración global personalizada que se puede cambiar en cualquier momento, lo cual es lo suficientemente cercano para el propósito aquí:X recursos. La herramienta de línea de comando para manipular recursos X esxrdb
.
Tenga en cuenta que xrdb
es peculiar y que la implementación de X.org tiene errores de larga data. Probablemente no desee utilizar xrdb -load
(que elimina todas las configuraciones cargadas previamente según lo documentado) o xrdb -remove
(que elimina todas las configuraciones cargadas previamente, a diferencia de lo que se supone que debe hacer).
Código no probado para su .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
Para desactivar la opción de prueba:
xrdb -load <(xrdb -query | grep -v '^pietrodito\.session\.ran-fortune:)
Tenga en cuenta que esto no es atómico. fortune
puede ejecutarse varias veces si inicia instancias zsh casi exactamente al mismo tiempo.
Respuesta2
Éste se iniciará fortune
sólo si no hay ningún otro shell zsh ejecutándose:
[[ "$(pidof zsh)" == *' '* ]] || fortune