#include "config.h"
#include "ping.h"
#include "mainloop.h"
+#include "prompt.h"
#include "gettext.h"
#include "parser/parse.h"
#include "render/render.h"
#include <X11/keysym.h>
-RrInstance *ob_rr_inst;
-RrTheme *ob_rr_theme;
-ObMainLoop *ob_main_loop;
-Display *ob_display;
-gint ob_screen;
-gboolean ob_replace_wm = FALSE;
-gboolean ob_sm_use = TRUE;
-gchar *ob_sm_id = NULL;
-gchar *ob_sm_save_file = NULL;
-gboolean ob_sm_restore = TRUE;
-gboolean ob_debug_xinerama = FALSE;
+RrInstance *ob_rr_inst;
+RrImageCache *ob_rr_icons;
+RrTheme *ob_rr_theme;
+ObMainLoop *ob_main_loop;
+Display *ob_display;
+gint ob_screen;
+gboolean ob_replace_wm = FALSE;
+gboolean ob_sm_use = TRUE;
+gchar *ob_sm_id = NULL;
+gchar *ob_sm_save_file = NULL;
+gboolean ob_sm_restore = TRUE;
+gboolean ob_debug_xinerama = FALSE;
static ObState state;
static gboolean xsync = FALSE;
{
gchar *program_name;
- state = OB_STATE_STARTING;
+ ob_set_state(OB_STATE_STARTING);
/* initialize the locale */
if (!setlocale(LC_ALL, ""))
textdomain(PACKAGE_NAME);
if (chdir(g_get_home_dir()) == -1)
- g_message(_("Unable to change to home directory '%s': %s"),
+ g_message(_("Unable to change to home directory \"%s\": %s"),
g_get_home_dir(), g_strerror(errno));
/* parse the command line args, which can change the argv[0] */
ob_rr_inst = RrInstanceNew(ob_display, ob_screen);
if (ob_rr_inst == NULL)
ob_exit_with_error(_("Failed to initialize the obrender library."));
+ /* Saving 3 resizes of an RrImage makes a lot of sense for icons, as there
+ are generally 3 icon sizes needed: the titlebar icon, the menu icon,
+ and the alt-tab icon
+ */
+ ob_rr_icons = RrImageCacheNew(3);
XSynchronize(ob_display, xsync);
keys[OB_KEY_RIGHT] = modkeys_sym_to_code(XK_Right);
keys[OB_KEY_UP] = modkeys_sym_to_code(XK_Up);
keys[OB_KEY_DOWN] = modkeys_sym_to_code(XK_Down);
+ keys[OB_KEY_TAB] = modkeys_sym_to_code(XK_Tab);
+ keys[OB_KEY_SPACE] = modkeys_sym_to_code(XK_space);
{
ObParseInst *i;
mouse_startup(reconfigure);
menu_frame_startup(reconfigure);
menu_startup(reconfigure);
+ prompt_startup(reconfigure);
if (!reconfigure) {
guint32 xid;
reconfigure = FALSE;
- state = OB_STATE_RUNNING;
+ ob_set_state(OB_STATE_RUNNING);
ob_main_loop_run(ob_main_loop);
- state = OB_STATE_EXITING;
+ ob_set_state(reconfigure ?
+ OB_STATE_RECONFIGURING : OB_STATE_EXITING);
if (!reconfigure) {
dock_remove_all();
client_unmanage_all();
}
+ prompt_shutdown(reconfigure);
menu_shutdown(reconfigure);
menu_frame_shutdown(reconfigure);
mouse_shutdown(reconfigure);
XSync(ob_display, FALSE);
RrThemeFree(ob_rr_theme);
+ RrImageCacheUnref(ob_rr_icons);
RrInstanceFree(ob_rr_inst);
session_shutdown(being_replaced);
g_strfreev(argvp);
} else {
g_message(
- _("Restart failed to execute new executable '%s': %s"),
+ _("Restart failed to execute new executable \"%s\": %s"),
restart_path, err->message);
g_error_free(err);
}
g_print(_(" --help Display this help and exit\n"));
g_print(_(" --version Display the version and exit\n"));
g_print(_(" --replace Replace the currently running window manager\n"));
+ /* TRANSLATORS: if you translate "FILE" here, make sure to keep the "Specify..."
+ aligned still, if you have to, make a new line with \n and 22 spaces. It's
+ fine to leave it as FILE though. */
g_print(_(" --config-file FILE Specify the path to the config file to use\n"));
g_print(_(" --sm-disable Disable connection to the session manager\n"));
g_print(_("\nPassing messages to a running Openbox instance:\n"));
else {
/* this is a memleak.. oh well.. heh */
gchar *err = g_strdup_printf
- (_("Invalid command line argument '%s'\n"), argv[i]);
+ (_("Invalid command line argument \"%s\"\n"), argv[i]);
ob_exit_with_error(err);
}
}
{
return state;
}
+
+void ob_set_state(ObState s)
+{
+ state = s;
+}