+/*! Returns the monitor which contains the active window, or the one
+ containing the pointer otherwise. */
+guint screen_monitor_active(void);
+
+Rect *screen_physical_area_active(void);
+
+/*! Returns the primary monitor, as specified by the config */
+guint screen_monitor_primary(void);
+
+Rect *screen_physical_area_primary(void);
+
+/* doesn't include struts which the search area is already outside of when
+ 'search' is not NULL */
+#define SCREEN_AREA_ALL_MONITORS ((unsigned)-1)
+#define SCREEN_AREA_ONE_MONITOR ((unsigned)-2)
+
+/*! @param head is the number of the head or one of SCREEN_AREA_ALL_MONITORS,
+ SCREEN_AREA_ONE_MONITOR
+ @param search NULL or the whole monitor(s)
+ */
+Rect* screen_area(guint desktop, guint head, Rect *search);
+
+gboolean screen_physical_area_monitor_contains(guint head, Rect *search);
+
+/*! Determines which physical monitor a rectangle is on by calculating the
+ area of the part of the rectable on each monitor. The number of the
+ monitor containing the greatest area of the rectangle is returned.
+*/
+guint screen_find_monitor(Rect *search);
+
+/*! Sets the root cursor. This function decides which cursor to use, but you
+ gotta call it to let it know it should change. */
+void screen_set_root_cursor(void);
+
+/*! Gives back the pointer's position in x and y. Returns TRUE if the pointer
+ is on this screen and FALSE if it is on another screen. */
+gboolean screen_pointer_pos(gint *x, gint *y);