+struct _ObClient* focus_fallback(gboolean allow_refocus,
+ gboolean allow_pointer,
+ gboolean allow_omnipresent,
+ gboolean focus_lost);
+
+/*! Add a new client into the focus order */
+void focus_order_add_new(struct _ObClient *c);
+
+/*! Remove a client from the focus order */
+void focus_order_remove(struct _ObClient *c);
+
+/*! Move a client to the top of the focus order */
+void focus_order_to_top(struct _ObClient *c);
+
+/*! Move a client to where it would be if it was newly added to the focus order
+ */
+void focus_order_like_new(struct _ObClient *c);
+
+/*! Move a client to the bottom of the focus order (keeps iconic windows at the
+ very bottom always though). */
+void focus_order_to_bottom(struct _ObClient *c);
+
+struct _ObClient *focus_order_find_first(guint desktop);
+
+gboolean focus_valid_target(struct _ObClient *ft,
+ guint desktop,
+ gboolean helper_windows,
+ gboolean iconic_windows,
+ gboolean all_desktops,
+ gboolean nonhilite_windows,
+ gboolean dock_windows,
+ gboolean desktop_windows,
+ gboolean user_request);