mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-20 04:48:06 +01:00
This patch is adding the core code needed to run the workspace pager. Currently when called, a new frame presenting mini workspace images are displayed at the bottom of the screen above other windows. When clicking on one of the miniatures, the workspace is switched and the frame is closed. Drawbacks: a screenshot of the workspace is used for the miniatures. This screenshot is taken only when a workspace switched event occurs. First, it means that the workspace switching process can be longer than usual. Secondly, updated minitatures can only be available when the workspace is "opened" (cause windows have to be mapped to be able to be copied). So when wmaker is (re)started or when for example a window is moved to another workspace the corresponding miniature is NOT updated. (I did not find a clean and easy way to do so, feel free to share if you have some ideas)
48 lines
1.7 KiB
C
48 lines
1.7 KiB
C
/* workspace.c- Workspace management
|
|
*
|
|
* Window Maker window manager
|
|
*
|
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*/
|
|
|
|
#ifndef WMWORKSPACE_H_
|
|
#define WMWORKSPACE_H_
|
|
|
|
|
|
|
|
typedef struct WWorkspace {
|
|
char *name;
|
|
struct WDock *clip;
|
|
RImage *map;
|
|
} WWorkspace;
|
|
|
|
void wWorkspaceMake(WScreen *scr, int count);
|
|
int wWorkspaceNew(WScreen *scr);
|
|
int wGetWorkspaceNumber(WScreen *scr, const char *value);
|
|
Bool wWorkspaceDelete(WScreen *scr, int workspace);
|
|
void wWorkspaceChange(WScreen *scr, int workspace);
|
|
void wWorkspaceForceChange(WScreen *scr, int workspace);
|
|
WMenu *wWorkspaceMenuMake(WScreen *scr, Bool titled);
|
|
void wWorkspaceMenuUpdate(WScreen *scr, WMenu *menu);
|
|
void wWorkspaceMenuEdit(WScreen *scr);
|
|
void wWorkspaceSaveState(WScreen *scr, WMPropList *old_state);
|
|
void wWorkspaceRestoreState(WScreen *scr);
|
|
void wWorkspaceRename(WScreen *scr, int workspace, const char *name);
|
|
void wWorkspaceRelativeChange(WScreen *scr, int amount);
|
|
|
|
#endif
|