1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-03-21 10:53:31 +01:00

New expert option: cycle all windows from all workspaces

Mentioned on the WMaker user mailing list, option disabled by default.

https://groups.google.com/g/wmaker-user/c/pR8P-ZYCDFo/m/Wo42U_xqBgAJ

So basically the patch is adding a new expert option in WPrefs (disabled by
default) to allow the switch panel to cycle over all the windows from all
workspaces. I believe it's useful if you are using a lot of fullscreen apps
each on different workspaces.
This commit is contained in:
David Maciejak
2026-01-02 12:52:50 -05:00
committed by Carlos R. Mafra
parent e356ef8c05
commit afe13d3e72
5 changed files with 9 additions and 2 deletions

View File

@@ -72,6 +72,9 @@ static struct expert_option {
{ N_("Cycle windows only on the active head."), { N_("Cycle windows only on the active head."),
/* default: */ False, OPTION_WMAKER, "CycleActiveHeadOnly" }, /* default: */ False, OPTION_WMAKER, "CycleActiveHeadOnly" },
{ N_("Cycle all windows from all workspaces."),
/* default: */ False, OPTION_WMAKER, "CycleAllWorkspaces" },
{ N_("Ignore minimized windows when cycling."), { N_("Ignore minimized windows when cycling."),
/* default: */ False, OPTION_WMAKER, "CycleIgnoreMinimized" }, /* default: */ False, OPTION_WMAKER, "CycleIgnoreMinimized" },

View File

@@ -252,5 +252,6 @@
SelectCursor = (builtin, cross); SelectCursor = (builtin, cross);
DialogHistoryLines = 500; DialogHistoryLines = 500;
CycleActiveHeadOnly = NO; CycleActiveHeadOnly = NO;
CycleAllWorkspaces = NO;
CycleIgnoreMinimized = NO; CycleIgnoreMinimized = NO;
} }

View File

@@ -454,6 +454,7 @@ extern struct WPreferences {
char single_click; /* single click to lauch applications */ char single_click; /* single click to lauch applications */
int history_lines; /* history of "Run..." dialog */ int history_lines; /* history of "Run..." dialog */
char cycle_active_head_only; /* Cycle only windows on the active head */ char cycle_active_head_only; /* Cycle only windows on the active head */
char cycle_all_workspaces; /* Cycle all windows from all workspaces */
char cycle_ignore_minimized; /* Ignore minimized windows when cycling */ char cycle_ignore_minimized; /* Ignore minimized windows when cycling */
char double_click_fullscreen; /* Double click on titlebar maximize a window to full screen*/ char double_click_fullscreen; /* Double click on titlebar maximize a window to full screen*/
char close_rootmenu_left_right_click;/* Close application menu when mouse (left or right) is clicked outside focus */ char close_rootmenu_left_right_click;/* Close application menu when mouse (left or right) is clicked outside focus */

View File

@@ -849,6 +849,8 @@ WDefaultEntry optionList[] = {
&wPreferences.history_lines, getInt, NULL, NULL, NULL}, &wPreferences.history_lines, getInt, NULL, NULL, NULL},
{"CycleActiveHeadOnly", "NO", NULL, {"CycleActiveHeadOnly", "NO", NULL,
&wPreferences.cycle_active_head_only, getBool, NULL, NULL, NULL}, &wPreferences.cycle_active_head_only, getBool, NULL, NULL, NULL},
{"CycleAllWorkspaces", "NO", NULL,
&wPreferences.cycle_all_workspaces, getBool, NULL, NULL, NULL},
{"CycleIgnoreMinimized", "NO", NULL, {"CycleIgnoreMinimized", "NO", NULL,
&wPreferences.cycle_ignore_minimized, getBool, NULL, NULL, NULL}, &wPreferences.cycle_ignore_minimized, getBool, NULL, NULL, NULL},
{"DbClickFullScreen", "NO", NULL, {"DbClickFullScreen", "NO", NULL,

View File

@@ -79,7 +79,7 @@ static short int label_height;
static int canReceiveFocus(WWindow *wwin) static int canReceiveFocus(WWindow *wwin)
{ {
if (wwin->frame->workspace != wwin->screen_ptr->current_workspace) if (!wPreferences.cycle_all_workspaces && wwin->frame->workspace != wwin->screen_ptr->current_workspace)
return 0; return 0;
if (wPreferences.cycle_active_head_only && if (wPreferences.cycle_active_head_only &&
@@ -90,7 +90,7 @@ static int canReceiveFocus(WWindow *wwin)
return 0; return 0;
if (!wwin->flags.mapped) { if (!wwin->flags.mapped) {
if (!wwin->flags.shaded && !wwin->flags.miniaturized && !wwin->flags.hidden) if (!wwin->flags.shaded && !wwin->flags.miniaturized && !wwin->flags.hidden && !wPreferences.cycle_all_workspaces)
return 0; return 0;
else else
return -1; return -1;