sample-xsession.sh 4.74 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/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
106
107
path_add "XDG_DATA_DIRS"      "$kde_prefix/share";
path_add "XDG_CONFIG_DIRS"    "$kde_prefix/etc/xdg";
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130

#
### 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
131
export KDEHOME
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150

# 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