ede/data/pekwm/scripts/pekwm_themeset.sh

66 lines
1.9 KiB
Bash

#!/bin/sh
#
# Copyright © 2003-2009 the pekwm development team
#
# Add this to your menu to use this script:
#
# SubMenu = "Themes" {
# Entry { Actions = "Dynamic /path/to/this/file /path/to/themedir" }
# }
#
# Check usage
if test -z "${1}"; then
echo "usage: $0 /path/to/themedir (theme)";
exit 1
fi
if test -z "${2}"; then
theme_dir="${1}"
echo "Dynamic {"
# Check that theme directory exists, if it does not exist create a
# dummy entry that says the dir does not exist.
if test -d "${theme_dir}"; then
( cd ${theme_dir};
for theme_name in *; do
# Themes must be directories. This test also prevents * globbing
# problems if theme_dir is empty.
if test -d "${theme_name}"; then
theme_path="${theme_dir}/${theme_name}"
echo "Entry = \"${theme_name}\" { Actions = \"Exec ${0} ${1} ${theme_path}\" }"
fi
done )
else
echo "Entry = \"No such directory ${theme_dir}\" { Actions = \"None\" }"
fi
echo "}"
else
# Check for configuration file, if the environment is not set the
# script is not being run from pekwm, then exit with failure.
if test -f "${PEKWM_CONFIG_FILE}"; then
theme="$(echo "${2}" | /bin/sed -e "s@^${HOME}@~@" | /bin/sed -e 's/\//\\\//g')"
# Get temporary file, not all platforms have mktemp though
if test -x "/bin/mktemp"; then
tmp_file=$(mktemp -t pekwm_themeset.XXXXXX) || exit 1;
else
tmp_file="/tmp/pekwm_themeset.${USER}"
fi
# Change theme
/bin/sed -e "s/^\([^#]*\)[Tt][Hh][Ee][Mm][Ee]\ =\ \"[^\"]*\"/\\1Theme\ =\ \"${theme}\"/" "${PEKWM_CONFIG_FILE}" > "${tmp_file}"
mv "${tmp_file}" "${PEKWM_CONFIG_FILE}"
# Reload pekwm
kill -HUP $(xprop -root _NET_WM_PID | awk '/_NET_WM_PID/ { print $3 }')
else
exit 1
fi
fi
exit 0