-extern struct Win init_win_from_file(struct World * world, char * w_name,
- void (* f) (struct Win *));
-
-
-
-
-/* Toggle windows in world->wins in the order desribed by the first line of
- * config/toggled_win_order, wherein each character may correspond to one
- * hardcoded window.
+struct WinConf
+{
+ char id; /* Unique identifier of WinConf, doubles aas identifier for .win */
+ /* and the char following "Win_" in the respective conffile name.*/
+ struct Win * win; /* Window / Win struct configured by this WinConf. */
+ struct KeyBiData kb; /* Window-specific keybindings. */
+ uint8_t view; /* 0: use .draw as Win.draw; 1/2: use draw_winconf()_(1/2). */
+ int16_t height; /* Designated height to pass to init_win(). */
+ int16_t width; /* Designated width to pass to init_win(). */
+ uint8_t height_type; /* 0: read .height/.width as size in positive cells; */
+ uint8_t width_type; /* 1: as negative diff in cells to the screen size. */
+ char * title; /* Designated title to pass to init_win(). */
+ char draw; /* Identifier of designated Win.draw; passed to init_win() */
+ /* and reset after toggling Win.draw via toggle_winconf(). */
+ struct yx_uint16 center; /* Designated Win.center; to be reset after */
+}; /* toggling Win.center via toggle_winconf(). */
+
+
+
+/* Get WinConf fathering "win" / get Win of WinConf of "id". */
+extern struct WinConf * get_winconf_by_win(struct Win * win);
+extern struct Win * get_win_by_id(char id);
+
+/* Create/initialize (from config files)/free Winconf structs. */
+extern void init_winconfs();
+extern void free_winconfs();
+extern void init_wins();
+
+/* Toggle windows in the order desribed by the 1st line of
+ * config/windows/toggle_order_and_active, where each char may fit a Winconf.id
+ * in world.winconfs. Silently ignore id chars not found there. The 1st char of
+ * the 2nd line of the same file determines which window (by its .id) to focus
+ * as active (but only if this window belongs to the ones just toggled).