LINUX.ORG.RU

Скрипт запуска chromium


0

0

Может кому пригодится.

На работе /home монтируется по nfs, поэтому некоторые браузеры особенно тормозят. Сильнее всего этим грешит firefox, но речь не о нём. Этот скрипт для запуска chromium с кэшем и конфигом в произвольном месте (либо на локальном диске, либо при достаточном запасе в tmpfs).

Этот скрипт допускает только одну запущенную копию браузера для пользователя. При запуске от root производит коррекцию в /opt для правильной работы. Не требует изменения ярлыков и меню. «Засасывает» уже существующие конфиг и кэш.

Устанавливаем chromium-bin, копируем скрипт в /usr/local/bin, корректируем при необходимости, пускаем его от root. После переустановки chromium требуется опять запуск от root (переименовывается один файл в /opt/... и восстанавливается ссылка).

Это не шедевр, поэтому всякие улучшения желаются и приветствуются. По идее должно работать не только в bash, но не тестировалось.

cat /usr/local/bin/chrome 
#!/bin/bash

########################################################################
BIN=chrome
BINDIR=/usr/local/bin
PROGRAM=chromium
PIDFILE=/tmp/.private/${USER}/${PROGRAM}
PROGDIR=/opt/chromium.org/chrome-linux
PROGLIB=/opt/chromium.org/nss-nspr
CONFIGSRC=${HOME}/.config/${PROGRAM}.tar
CACHESRC=${HOME}/.cache/${PROGRAM}.tar
########################################################################
cleanconfig(){
    rm -rf ${HOME}/.config/${PROGRAM} ${HOME}/.cache/${PROGRAM}
}
cleantemp(){
    rm -rf ${CONFIGDIR} ${CACHEDIR}
}
quit(){
    rm -f ${PIDFILE}
    exit 0
}
unpack(){
    cd ${CONFIGDIR}
    tar -xf ${CONFIGSRC}
    cd ${CACHEDIR}
    tar -xf ${CACHESRC}
}
linkdir(){
    ln -s ${CACHEDIR} ${HOME}/.cache/${PROGRAM}
    ln -s ${CONFIGDIR} ${HOME}/.config/${PROGRAM}
}
packconfig(){
    cd ${HOME}/.config/${PROGRAM}
    tar -cf ${CONFIGSRC} .
}
packcache(){
    cd ${HOME}/.cache/${PROGRAM}
    tar -cf ${CACHESRC} .
}
run(){
    cd ${PROGDIR}
    if [ -n "${PROGLIB}:${PROGDIR}" ] ; then
	if [ "${LD_LIBRARY_PATH+set}" = "set" ] ; then
	    export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${PROGLIB}:${PROGDIR}"
	else
	    export LD_LIBRARY_PATH="${PROGLIB}:${PROGDIR}"
	fi
    fi
    ./${BIN}.bin "$@"
}
########################################################################
if [ -f ${PIDFILE} ]; then
    if [ "x$(ps p $(cat ${PIDFILE}) -o ruser="" -o comm="" | grep ${BIN} | grep ${USER} | wc -l)" = "x1" ]; then
	cat ${PIDFILE}
	exit
    fi
fi
echo $$ > ${PIDFILE}
if [ -x "${BINDIR}/${BIN}" ]; then
    if [ $UID -eq 0 ]; then
	if [ -L ${PROGDIR}/${BIN} ]; then
	    quit
	fi
	if [ -x ${PROGDIR}/${BIN} ]; then
	    mv ${PROGDIR}/${BIN} ${PROGDIR}/${BIN}.bin
	    ln -s ${BINDIR}/${BIN} ${PROGDIR}/${BIN}
	fi
	if [ -x ${PROGDIR}/${BIN}.bin ]; then
	    if [ -L ${PROGDIR}/${BIN} ]; then
		quit
	    else
		ln -s ${BINDIR}/${BIN} ${PROGDIR}/${BIN}
	    fi
	fi
	quit
    fi
    CONFIGDIR=$(mktemp -d)
    CACHEDIR=$(mktemp -d)
    if [ -d ${HOME}/.config/${PROGRAM} ]; then
	packconfig;
    fi
    if [ -d ${HOME}/.cache/${PROGRAM} ]; then
	packcache;
    fi
    cleanconfig
    unpack
    linkdir
    run
    packconfig
    packcache
    cleanconfig
    cleantemp
fi
quit
########################################################################
★★★★★

ps: скрипт написан для chromium-bin-4.0.295.0_p3588, для более ранних надо исправить строку PROGLIB=/opt/chromium.org/nss-nspr на правильную.

Lumi ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.