tests/title
tests/urgent
tests/usertimewin
-data/autostart.sh
-<+
+data/autostart/openbox-autostart
rrpubincludedir = $(includedir)/openbox/@RR_VERSION@/obrender
pixmapdir = $(datadir)/pixmaps
xsddir = $(datadir)/openbox
-secretbindir = $(libdir)/openbox
+libexecdir = $(prefix)/libexec
appsdir = $(datadir)/applications
theme = Clearlooks
tools/gnome-panel-control/gnome-panel-control \
tools/obxprop/obxprop
-dist_secretbin_SCRIPTS = \
- tools/xdg-autostart/xdg-autostart
-
nodist_bin_SCRIPTS = \
data/xsession/openbox-session \
data/xsession/openbox-gnome-session \
data/xsession/openbox-kde-session
+dist_rc_SCRIPTS = \
+ data/environment \
+ data/autostart/autostart
+
+dist_libexec_SCRIPTS = \
+ data/autostart/openbox-xdg-autostart \
+ data/autostart/openbox-autostart
+
+
## obrender ##
obrender_rendertest_CPPFLAGS = \
dist_pixmap_DATA = \
data/openbox.png
-nodist_rc_DATA = \
- data/autostart.sh
-
dist_rc_DATA = \
data/rc.xml \
data/menu.xml
edit = $(SED) \
-e 's!@version\@!$(VERSION)!' \
-e 's!@configdir\@!$(configdir)!' \
- -e 's!@secretbindir\@!$(secretbindir)!' \
+ -e 's!@libexecdir\@!$(libexecdir)!' \
-e 's!@bindir\@!$(bindir)!'
-data/autostart.sh: $(srcdir)/data/autostart.sh.in Makefile
+data/autostart/openbox-autostart: $(srcdir)/data/autostart/openbox-autostart.in Makefile
@echo make: creating $@
@$(edit) $< >$@
data/xsession/openbox-kde.desktop
dist_noinst_DATA = \
- data/autostart.sh.in \
data/rc.xsd \
data/menu.xsd \
data/xsession/openbox.desktop.in \
+++ /dev/null
-# This shell script is run before Openbox launches.
-# Environment variables set here are passed to the Openbox session.
-
-# Set a background color
-BG=""
-if which hsetroot >/dev/null; then
- BG=hsetroot
-else
- if which esetroot >/dev/null; then
- BG=esetroot
- else
- if which xsetroot >/dev/null; then
- BG=xsetroot
- fi
- fi
-fi
-test -z $BG || $BG -solid "#303030"
-
-# D-bus
-if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
- eval `dbus-launch --sh-syntax --exit-with-session`
-fi
-
-# Make GTK apps look and behave how they were set up in the gnome config tools
-if test -x /usr/libexec/gnome-settings-daemon >/dev/null; then
- /usr/libexec/gnome-settings-daemon &
-elif which gnome-settings-daemon >/dev/null; then
- gnome-settings-daemon &
-# Make GTK apps look and behave how they were set up in the XFCE config tools
-elif which xfce-mcs-manager >/dev/null; then
- xfce-mcs-manager n &
-fi
-
-# Preload stuff for KDE apps
-if which start_kdeinit >/dev/null; then
- LD_BIND_NOW=true start_kdeinit --new-startup +kcminit_startup &
-fi
-
-# Run XDG autostart things. By default don't run anything desktop-specific
-# See xdg-autostart --help more info
-DESKTOP_ENV="OPENBOX"
-if which @secretbindir@/xdg-autostart >/dev/null; then
- @secretbindir@/xdg-autostart $DESKTOP_ENV
-fi
all clean install:
- $(MAKE) -C ../.. -$(MAKEFLAGS) $@
+ $(MAKE) -C .. -$(MAKEFLAGS) $@
.PHONY: all clean install
--- /dev/null
+#
+# These things are run when an Openbox X Session is started.
+# You may place a similar script in $HOME/.config/openbox/autostart
+# to run user-specific things.
+#
+
+# If you want to use GNOME config tools...
+#
+#if test -x /usr/libexec/gnome-settings-daemon >/dev/null; then
+# /usr/libexec/gnome-settings-daemon &
+#elif which gnome-settings-daemon >/dev/null; then
+# gnome-settings-daemon &
+#fi
+
+# If you want to use XFCE config tools...
+#
+#xfce-mcs-manager &
--- /dev/null
+#!/bin/sh
+
+# Set a background color
+BG=""
+if which hsetroot >/dev/null; then
+ BG=hsetroot
+elif which esetroot >/dev/null; then
+ BG=esetroot
+elif which xsetroot >/dev/null; then
+ BG=xsetroot
+fi
+test -z $BG || $BG -solid "#303030"
+
+GLOBALAUTOSTART="@configdir@/autostart"
+AUTOSTART="${XDG_CONFIG_HOME:-"$HOME/.config"}/openbox/autostart"
+
+# Run the global openbox autostart script
+if test -f $GLOBALAUTOSTART; then
+ sh $GLOBALAUTOSTART
+elif test -f $GLOBALAUTOSTART.sh; then
+ sh $GLOBALAUTOSTART.sh
+fi
+
+# Run the user openbox autostart script
+if test -f $AUTOSTART; then
+ sh $AUTOSTART
+elif test -f $AUTOSTART.sh; then
+ sh $AUTOSTART.sh
+fi
+
+# Run the XDG autostart stuff. These are found in /etc/xdg/autostart and
+# in $HOME/.config/autostart. This requires PyXDG to be installed.
+# See openbox-xdg-autostart --help for more details.
+@libexecdir@/openbox-xdg-autostart OPENBOX
#!/usr/bin/env python
-# xdg-autostart runs things based on the XDG autostart specification
+# openbox-xdg-autostart runs things based on the XDG autostart specification
# Copyright (C) 2008 Dana Jansens
#
# XDG autostart specification can be found here:
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-ME="xdg-autostart"
-VERSION="1.0"
+ME="openbox-xdg-autostart"
+VERSION="1.1"
import os, glob, sys
try:
--- /dev/null
+#
+# Set system-wide environment variables here for Openbox
+# User-specific variables should be placed in $HOME/.config/openbox/environment
+#
+
+# To set your language for displaying messages and time/date formats, use the following:
+#LANG=en_CA.UTF8
+
+# To set your keyboard layout, you need to modify your X config:
+# http://www.google.com/search?q=how+to+set+keyboard+layout+xorg
-remove _NET_DESKTOP_NAMES \
-remove _NET_CURRENT_DESKTOP 2> /dev/null
-AUTOSTART="${XDG_CONFIG_HOME:-"$HOME/.config"}/openbox/autostart.sh"
-GLOBALAUTOSTART="@configdir@/openbox/autostart.sh"
+# Set up the environment
+A="@configdir@/openbox/environment"
+test -r $A && . $A
+A="${XDG_CONFIG_HOME:-"$HOME/.config"}/openbox/environment"
+test -r $A && . $A
-if test -r $AUTOSTART; then
- . $AUTOSTART
-else
- if test -r $GLOBALAUTOSTART; then
- . $GLOBALAUTOSTART
- fi
-fi
-
-exec @bindir@/openbox "$@"
+# Run Openbox, and have it run the autostart stuff
+exec @bindir@/openbox --startup "@libexecdir@/openbox-autostart OPENBOX" "$@"
static guint remote_control = 0;
static gboolean being_replaced = FALSE;
static gchar *config_file = NULL;
+static gchar *startup_cmd = NULL;
static void signal_handler(gint signal, gpointer data);
static void remove_args(gint *argc, gchar **argv, gint index, gint num);
ob_set_state(OB_STATE_RUNNING);
+ if (startup_cmd) {
+ gchar **argv = NULL;
+ GError *e = NULL;
+ gboolean ok;
+
+ if (!g_shell_parse_argv(startup_cmd, NULL, &argv, &e)) {
+ g_message("Error parsing startup command: %s",
+ e->message);
+ g_error_free(e);
+ e = NULL;
+ }
+ ok = g_spawn_async(NULL, argv, NULL,
+ G_SPAWN_SEARCH_PATH |
+ G_SPAWN_DO_NOT_REAP_CHILD,
+ NULL, NULL, NULL, &e);
+ if (!g_shell_parse_argv(startup_cmd, NULL, &argv, &e)) {
+ g_message("Error launching startup command: %s",
+ e->message);
+ g_error_free(e);
+ e = NULL;
+ }
+ }
+
/* look for parsing errors */
{
xmlErrorPtr e = xmlGetLastError();
g_print(_(" --exit Exit Openbox\n"));
g_print(_("\nDebugging options:\n"));
g_print(_(" --sync Run in synchronous mode\n"));
+ g_print(_(" --startup CMD Run CMD after starting\n"));
g_print(_(" --debug Display debugging output\n"));
g_print(_(" --debug-focus Display debugging output for focus handling\n"));
g_print(_(" --debug-session Display debugging output for session management\n"));
else if (!strcmp(argv[i], "--sync")) {
xsync = TRUE;
}
+ else if (!strcmp(argv[i], "--startup")) {
+ if (i == *argc - 1) /* no args left */
+ g_printerr(_("--startup requires an argument\n"));
+ else {
+ /* this will be in the current locale encoding, which is
+ what we want */
+ startup_cmd = argv[i+1];
+ remove_args(argc, argv, i, 2);
+ --i; /* this arg was removed so go back */
+ ob_debug("--startup %s", startup_cmd);
+ }
+ }
else if (!strcmp(argv[i], "--debug")) {
ob_debug_enable(OB_DEBUG_NORMAL, TRUE);
ob_debug_enable(OB_DEBUG_APP_BUGS, TRUE);