This isn't turned on yet (the testcase just tries to run the function without exceptions), but this would be the base for a feature to install the new sample .xsession file for the "Custom session" login option for most login managers. The base .xsession was graciously provided by Michael Janses (of build-tool fame). I've simplified it a bit for kdesrc-build usage and tried to make it compatible with less featureful shells. The eventual idea is that it can be used with kdesrc-build-set and/or kdesrc-build so that you can run the setup script, kdesrc-build, and be able to login to your new KDE install.wilder
parent
58c00ca1d3
commit
548489c996
3 changed files with 213 additions and 0 deletions
@ -0,0 +1,149 @@ |
||||
#!/bin/sh |
||||
# A script to start the kde workspace. |
||||
# Written by Michael Jansen and Michael Pyne |
||||
# |
||||
# You can use it in two ways. Just copy the content to the given path. |
||||
# |
||||
# 1. $HOME/.xsession |
||||
# ------------------ |
||||
# Select "custom" session when logging in. This will use that script. |
||||
# |
||||
# 2. $KDEDIRS/bin/mystartkde |
||||
# See "files xsession" on how to use that. Make sure the script is executable. |
||||
# Note: This doesn't work with kdesrc-build -- mpyne |
||||
|
||||
# === User-modifiable variables. Should be set automatically by kdesrc-build. |
||||
|
||||
# Where KDE libraries and applications are installed to. |
||||
kde_prefix="<% kdedir %>" # E.g. "$HOME/kde-4" |
||||
|
||||
# Where Qt is installed to. If using the system Qt, leave blank or set to |
||||
# 'auto' and this script will try to auto-detect. |
||||
qt_prefix="<% qtdir %>" # E.g. "$HOME/qt4" or "/usr" on many systems. |
||||
|
||||
# Directory to use for KDE configuration and other user customizations. |
||||
KDEHOME="$HOME/.kde4-self" # Or perhaps "$HOME/.kde-selfmade", etc. |
||||
|
||||
# "Bitness" suffix to use for library directories. If left blank, will try to |
||||
# auto-detect from installed KDE's compiled defaults, which may still leave |
||||
# this blank. |
||||
lib_suffix="" # Or 32, or 64, as appropriate for your system. |
||||
|
||||
# Additional paths to add to PATH, can be left blank. |
||||
user_path="" # Set to colon-separated PATH to add to the Qt/KDE paths. |
||||
|
||||
# If more user customizations to the environment are needed, create a file |
||||
# .xsession-local, which will be sourced just prior to running KDE. This can |
||||
# read .bashrc, just set a few vars, etc. |
||||
|
||||
# === End of user-modifiable variables. |
||||
|
||||
# Find system Qt |
||||
if test -z "$qt_prefix"; then |
||||
# Find right qmake |
||||
for qmake_candidate in qmake-qt4 qmake4 qmake; do |
||||
if ${qmake_candidate} --version >/dev/null 2>&1; then |
||||
qmake="$qmake_candidate" |
||||
break; |
||||
fi |
||||
done |
||||
|
||||
qt_prefix=$(${qmake} -query QT_INSTALL_PREFIX 2>/dev/null) |
||||
|
||||
test -z "$qt_prefix" && qt_prefix="/usr" # Emergency fallback? |
||||
|
||||
echo "Using Qt found in $qt_prefix" |
||||
fi |
||||
|
||||
# Try to auto-determine lib suffix if not set. This requires KDE to already |
||||
# have been installed though. |
||||
if test -z "$lib_suffix" && test -x "$kde_prefix/bin/kde4-config"; then |
||||
lib_suffix=$("$kde_prefix/bin/kde4-config" --libsuffix 2>/dev/null) |
||||
fi |
||||
|
||||
# Add path elements to a colon-separated environment variable, |
||||
# taking care not to add extra unneeded colons. |
||||
# Should be sh-compatible. |
||||
# Can't use function keyword in Busybox-sh |
||||
path_add() |
||||
{ |
||||
eval curVal=\$'{'$1'}' |
||||
|
||||
if [ -n "$curVal" ]; then |
||||
eval "$1"="$2:$curVal"; |
||||
else |
||||
eval "$1"="$2" |
||||
fi |
||||
} |
||||
|
||||
# Initialize some variables based on Qt and KDE install paths. |
||||
# Since this should be run as .xsession there's no guarantee of any |
||||
# user-specific variables being set already. |
||||
libname="lib$libsuffix" |
||||
unset STRIGI_PLUGIN_PATH |
||||
unset KDEDIRS |
||||
|
||||
# Now add the necessary directories, starting with Qt. |
||||
path_add "PATH" "$qt_prefix/bin"; |
||||
path_add "LD_LIBRARY_PATH" "$qt_prefix/$libname"; |
||||
path_add "PKG_CONFIG_PATH" "$qt_prefix/$libname/pkgconfig"; |
||||
path_add "MANPATH" "$qt_prefix/share/man"; |
||||
|
||||
# Now add KDE-specific paths. |
||||
path_add "PATH" "$kde_prefix/bin"; |
||||
path_add "LD_LIBRARY_PATH" "$kde_prefix/$libname"; |
||||
path_add "PKG_CONFIG_PATH" "$kde_prefix/$libname/pkgconfig"; |
||||
path_add "MANPATH" "$kde_prefix/share/man"; |
||||
path_add "CMAKE_PREFIX_PATH" "$kde_prefix"; |
||||
path_add "KDEDIRS" "$kde_prefix"; |
||||
path_add "QML_IMPORT_PATH" "$kde_prefix/$libname/kde4/imports"; |
||||
path_add "STRIGI_PLUGIN_PATH" "$kde_prefix/$libname/strigi"; |
||||
|
||||
# For Python bindings support. |
||||
path_add "PYTHONPATH" "$kde_prefix/$libname/site-packages"; |
||||
|
||||
# http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html |
||||
path_add "XDG_DATA_DIRS" "$path/share"; |
||||
path_add "XDG_CONFIG_DIRS" "$path/etc/xdg"; |
||||
|
||||
# |
||||
### Some Convenience stuff |
||||
# |
||||
if test -n "$user_path"; then |
||||
path_add "PATH" "$user_path" |
||||
fi |
||||
|
||||
test -d "$HOME/local/bin" && path_add "PATH" "$HOME/local/bin" |
||||
test -d "$HOME/local/man" && path_add "MANPATH" "$HOME/local/man" |
||||
|
||||
# Finally, export the variables. |
||||
export CMAKE_PREFIX_PATH |
||||
export KDEDIRS |
||||
export LD_LIBRARY_PATH |
||||
export PATH |
||||
export PKG_CONFIG_PATH |
||||
export PYTHONPATH |
||||
export QML_IMPORT_PATH |
||||
export STRIGI_PLUGIN_PATH |
||||
export XDG_DATA_DIRS |
||||
export XDG_CONFIG_DIRS |
||||
export MANPATH |
||||
|
||||
# Read in user-specific customizations |
||||
if test -f "$HOME/.xsession-local"; then |
||||
source "$HOME/.xsession-local" |
||||
fi |
||||
|
||||
# |
||||
### Start the standard kde login script. |
||||
# |
||||
"$kde_prefix/bin/startkde" |
||||
|
||||
# If you experience problems on logout it is sometimes helpful to make copies |
||||
# of the xsession-errors file on logout. |
||||
# cp $HOME/.xsession-errors $HOME/.xsession-errors-`date +"%Y%m%d%H%M"` |
||||
|
||||
# Use user-specific logout if present |
||||
if test -f "$HOME/.xsession-logout"; then |
||||
source "$HOME/.xsession-logout" |
||||
fi |
||||
Loading…
Reference in new issue