1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-07-10 12:46:36 +02:00

Compare commits

..

130 Commits

Author SHA1 Message Date
David Maciejak 038a3588d6 WINGs: W_KeycodeToKeysym remove unnecessary if test
min_kc value is always -1 at that point in the code, so need to test it
as it's always true.
2023-03-09 15:05:58 +00:00
David Maciejak 0b2fd6a8c8 WINGs: handle fixed size windows
According to the EWMH specs, windows can indicate that they are
non-resizable by setting minheight = maxheight and minwidth = maxwidth
in the ICCCM WM_NORMAL_HINTS property. That should be for example
the case for WPrefs app which is not resizable.
Window Maker currently is overwriting that flag in src/window.c for
apps that are exposing GNUstepHints instead.
This patch is making sure the apps created with WINGs is removing
the WMResizableWindowMask to hide the resizebar.
2023-03-09 15:05:58 +00:00
David Maciejak 3e991badf7 SwitchPanel: fix app icons opacity combination
For some apps the background is not displayed properly, showing
some kind of shawow around the app icon like for example firefox
or skype. This is due to an issue in combining alpha channels.
2023-03-09 15:05:58 +00:00
David Maciejak ac6d284269 NEWS: add entry for libXRes support 2023-03-09 15:05:58 +00:00
David Maciejak 83b94b1616 Update news and changelog files 2023-03-07 17:31:07 +00:00
David Maciejak d045ffcf7d Add a screenshot capture feature
This patch adds a feature to take screenshots directly from Window Maker.
Having the feature embeded direclty inside Window Maker allows us to take
advantage of how Window Maker is managing and handling Windows.
Three new actions can be bound to a key shortcut from WPrefs.
The screenshot files are saved in ~/GNUstep/Library/WindowMaker/Screenshots/
dir, with a "screenshot_%Y-%m-%d_at_%H:%M:%S" format followed by the
extension. Preferably as a PNG or JPG file if available.
Meaning, to work Window Maker via WRaster needs to support
at least one of those format.

"Capture the entire screen" is quite standard, it takes a screenshot
of the whole screen area (even in multiheads env).
"Capture a portion of the screen" requires the user to draw a rectangle which
will be captured.
Those two first are quite straightforward, just taking a live picture of
the screen.
The last one is "Capture a window" which works in best effort mode,
it catures the focused window. As Window Maker by default is not using
any compositor (like for example Xcompmgr) it can only dump the content
displayed on the screen.
If a window is minimized or out of the screen, there is high chance the
image will be split or some area greyed in case other windows overlapped it.
2023-03-07 17:30:59 +00:00
David Maciejak 6c69dc32a0 WINGs: Make the test examples to compile
Those examples are optional but currently cannot compile properly.
The compiler is reporting some unused variables and missing header file.
2023-03-07 17:24:41 +00:00
David Maciejak 3b1c00ad06 WINGs: comment out wtext unused NOTIFY macro
The compiler is reporting the warning below
wtext.c:171: warning: macro "NOTIFY" is not used [-Wunused-macros]

That macro is only used once within that C file, code which is commented
out already.
2023-03-06 20:16:07 +00:00
David Maciejak dd6fe27858 WPrefs: convert workspacename.xpm X11 color name to hex
On window maker built without libxpm, a simple build-in xpm support is used.
That component does not support X11 color name thus when trying to load
that image we are getting a file corrupted error.
Colors manually converted using ref at
https://www.ehdp.com/methods/x11-colors/x11-colors-rgb-values-05.htm
2023-03-05 00:16:44 +00:00
David Maciejak 45f3f5d0ae Util: fix wmgenmenu memory leak and help msg
Memory allocated from wstrconcat() calls are not freed properly.
Help msg is reporting the wrong directory where to install WMRootMenu.
2023-03-05 00:16:44 +00:00
David Maciejak 7185af15cf Use wtokenfree whenever there is wtokensplit
Whenever wtokensplit is used to split into argv/argc, it's better to
use the built-in function wtokenfree() as a wfree call only on argv
is not freeing the memory properly.
2023-03-05 00:16:44 +00:00
David Maciejak 80e8dd43f7 Convert tile.xpm X11 color name to hex
On window maker built without libxpm, a simple build-in xpm support is used.
That component does not support X11 color name thus when trying to load
that image we are getting a file corrupted error.
Colors manually converted using ref at
https://www.ehdp.com/methods/x11-colors/x11-colors-rgb-values-05.htm
2023-03-05 00:16:44 +00:00
David Maciejak a383074c99 WPrefs: sort alphabetically the key shortcut actions and expert options
There are too many entries now in key shortcut actions and expert options,
better to sort them dynamically.
2023-03-03 14:15:19 +00:00
David Maciejak 52a623729d Coverity: fix WRaster convert uninitialized scalar variable 2023-03-03 14:15:19 +00:00
David Maciejak d4ee17f0b5 Coverity: fix WPrefs workspace negative array index read 2023-03-03 14:15:19 +00:00
David Maciejak 7475bc5d0a Coverity: fix util wmsetbg resource leak 2023-03-03 14:15:19 +00:00
David Maciejak 35f87b5592 WRaster: add new file references for translation
This patch is adding the references for the two newly added files
save_jpeg.c and save_png.c for translation (even if those new
files are not adding any new strings to be translated).
2023-03-03 09:51:24 +00:00
David Maciejak 5e37d13eb6 Coverity: fix wmgenmenu resource leak 2023-03-02 17:04:48 +00:00
David Maciejak 4b1aee3e79 Coverity: fix wmmenugen resource leak 2023-03-02 17:04:48 +00:00
David Maciejak 0ccc5bbde7 Coverity: fix wmspec dereference after null check 2023-03-02 17:04:48 +00:00
David Maciejak 59a686d22e Coverity: fix WPrefs appearance negative array index read 2023-03-02 17:04:48 +00:00
David Maciejak 26d46f6e16 Coverity: fix WPrefs menu negative array index read 2023-03-02 17:04:48 +00:00
David Maciejak ceafbf0629 Coverity: fix WPrefs mousesettings menu negative array index read 2023-03-02 17:04:48 +00:00
David Maciejak cf178d011b Coverity: fix WPrefs preference negative array index read 2023-03-02 17:04:48 +00:00
David Maciejak 682c2767c2 Coverity: fix WPrefs texturepanel negative array index read 2023-03-02 17:04:48 +00:00
David Maciejak 0e00c6b605 Coverity: fix dialog dereference null return value
This patch is making sure defaultPath returns from FindImage() is not null
and freeing the variables.
2023-03-02 17:04:48 +00:00
David Maciejak e9717ed719 Coverity: fix WPrefs appearance time of check time of use 2023-03-02 17:04:48 +00:00
David Maciejak 9e59d19507 Coverity: fix WPrefs editmenu uninitialized scalar variables 2023-03-02 17:04:48 +00:00
David Maciejak 94f98dcd25 Coverity: fix WRaster convert uninitialized scalar variable 2023-03-02 17:04:48 +00:00
David Maciejak 6c7266c338 Coverity: fix session resource leak 2023-03-02 17:04:48 +00:00
David Maciejak b4bd6d0cad Coverity: fix xmodifier uninitialized scalar variable 2023-03-02 17:04:48 +00:00
David Maciejak c7f7c10d7c Coverity: fix wmsetbg string not null terminated 2023-03-02 17:04:48 +00:00
David Maciejak d831766572 Coverity: fix rootmenu structurally dead code 2023-03-02 17:04:48 +00:00
David Maciejak e2ecfbfd54 Coverity: fix wcolorpanel uninitialized scalar value 2023-03-02 17:04:48 +00:00
David Maciejak a8ec32d41a Coverity: fix setstyle resource leak 2023-03-02 17:04:48 +00:00
David Maciejak 1215680b6d Coverity: fix misc resource leak 2023-03-02 17:04:48 +00:00
David Maciejak 77df89396c Coverity: fix menuparser_macro uninitialized pointer read 2023-03-02 17:04:48 +00:00
David Maciejak c8883fdbb0 WRaster: add functions to save image on disk
This patch adds the RSaveTitledImage() function to the WRaster lib
to be able to save file on disk either as a PNG or a JPEG file.
Those two formats depends on optional external libs.
The function can take an optional title/comment which will
be save inside the file.

The WRaster lib and header versions are bumped.
2023-03-02 10:23:47 +00:00
David Maciejak 3cc5808dcd Coverity: fix wmspec uninitialized layer variable 2023-02-28 13:40:48 +00:00
David Maciejak 8ca89f0141 Coverity: fix RContextAttributes uninitialized variable 2023-02-28 13:33:11 +00:00
David Maciejak 76fa91d21e Coverity: fix wmiv resource leak 2023-02-28 13:33:11 +00:00
David Maciejak d2d5297a1e Coverity: fix potential buffer overflow 2023-02-28 13:33:11 +00:00
David 7b317a5fba wmiv: use W_KeycodeToKeysym instead of XkbKeycodeToKeysym
This patch replaces XkbKeycodeToKeysym in wmiv by our
own function W_KeycodeToKeysym.
2023-02-28 03:33:21 +00:00
David Maciejak 9f8dc6f5dc Use W_KeycodeToKeysym instead of XkbKeycodeToKeysym
This patch replaces XkbKeycodeToKeysym by our
own function W_KeycodeToKeysym.
2023-02-27 23:05:27 +00:00
David Maciejak bc56db0776 WPrefs: use W_KeycodeToKeysym instead of XkbKeycodeToKeysym
This patch replaces XKeycodeToKeysym and XkbKeycodeToKeysym
in WPrefs by our own function W_KeycodeToKeysym.
2023-02-27 23:05:27 +00:00
David Maciejak 15d06ff064 WINGs: Add W_KeycodeToKeysym to replace XKeycodeToKeysym/XkbKeycodeToKeysym calls
XKeycodeToKeysym was deprecated some time ago and we replaced
those function calls to XkbKeycodeToKeysym.
Usage of XkbKeycodeToKeysym is not the best as it appears
the XKEYBOARD can be disabled via xorg.conf (at least on Linux).
So just replacing XKeycodeToKeysym() with XkbKeycodeToKeysym()
could cause run-time errors on top of the compilation warning
we may have.
Better fix is to address the problem without introducing a
dependency on XKEYBOARD. W_KeycodeToKeysym is the equivalent
code for XKeycodeToKeysym/XkbKeycodeToKeysym using
XGetKeyboardMapping instead.

As a new function is added to the library WINGs library version
is bumped.
2023-02-27 22:37:44 +00:00
David Maciejak 2dd98666f1 Store window maximize state as hex value
As the maximize state is defined as a bit-field internally.
Better to store the flag in the WMSTATE file as hex value.
2023-02-27 22:37:44 +00:00
David Maciejak d1a7db8aea Compile by default with POSIX 7 revision
Compile by default with POSIX-2008 standard for Linux and FreeBSD.
2023-02-27 22:37:44 +00:00
David Maciejak 64a8ecb390 Code cleaning: removing trailing space
The patch is removing trailing space(s) before
the semicolon ending line. .c and .h files were checked.
2023-02-27 22:37:44 +00:00
David Maciejak a9e336256b Doc: add disable-res description 2023-02-26 11:02:46 +00:00
David Maciejak e9b20b51e9 WPrefs: check if captured keyboard shortcut is not in use
Make sure the captured keyboard shortcut is not already in use
by another action, if it's the case an error popup is shown and
the key is not kept.
2023-02-25 13:31:42 +00:00
David Maciejak 1d8b38b6e0 Fix compiler warnings from texture.c v2
The patch fixes those 2 warnings below from texture.c.
It reverts the previous v1 patch and fixes the compiler warning
by updating the texture.h wTextureMakeIGradient header instead.

texture.c:205:81: warning: argument 3 of type 'const RColor[2]' with mismatched bound [-Warray-parameter=]
  205 | WTexIGradient *wTextureMakeIGradient(WScreen *scr, int thickness1, const RColor colors1[2],
      |                                                                    ~~~~~~~~~~~~~^~~~~~~~~~
In file included from texture.c:33:
texture.h:165:53: note: previously declared as 'const RColor[]'
  165 | WTexIGradient *wTextureMakeIGradient(WScreen*, int, const RColor[], int, const RColor[]);
      |                                                     ^~~~~~~~~~~~~~
texture.c:206:67: warning: argument 5 of type 'const RColor[2]' with mismatched bound [-Warray-parameter=]
  206 |                                      int thickness2, const RColor colors2[2])
      |                                                      ~~~~~~~~~~~~~^~~~~~~~~~
texture.h:165:74: note: previously declared as 'const RColor[]'
  165 | WTexIGradient *wTextureMakeIGradient(WScreen*, int, const RColor[], int, const RColor[]);
      |
2023-02-25 13:31:42 +00:00
David Maciejak 82ad19d420 Fix compiler warnings from texture.c
The patch fixes those 2 warnings below from texture.c

texture.c:205:81: warning: argument 3 of type 'const RColor[2]' with mismatched bound [-Warray-parameter=]
  205 | WTexIGradient *wTextureMakeIGradient(WScreen *scr, int thickness1, const RColor colors1[2],
      |                                                                    ~~~~~~~~~~~~~^~~~~~~~~~
In file included from texture.c:33:
texture.h:165:53: note: previously declared as 'const RColor[]'
  165 | WTexIGradient *wTextureMakeIGradient(WScreen*, int, const RColor[], int, const RColor[]);
      |                                                     ^~~~~~~~~~~~~~
texture.c:206:67: warning: argument 5 of type 'const RColor[2]' with mismatched bound [-Warray-parameter=]
  206 |                                      int thickness2, const RColor colors2[2])
      |                                                      ~~~~~~~~~~~~~^~~~~~~~~~
texture.h:165:74: note: previously declared as 'const RColor[]'
  165 | WTexIGradient *wTextureMakeIGradient(WScreen*, int, const RColor[], int, const RColor[]);
      |
2023-02-24 12:19:38 +00:00
David Maciejak 492b22d975 Fix compiler warning from menu.c
The patch fixes the compiler warning below

menu.c: In function 'restoreMenuRecurs':
menu.c:2450:47: warning: '%s' directive output may be truncated writing up to 510 bytes into a region of size between 509 and 1019 [-Wformat-truncation=]
 2450 |         snprintf(buffer, sizeof(buffer), "%s\\%s", path, menu->frame->title);
      |                                               ^~

The code is taking care of checking properly the string passed to the buffer,
so there is no issue, the change is just to make the compiler happy.
2023-02-24 12:19:38 +00:00
David Maciejak 62405fbb75 Detect and override illegal window size hints v2
The patch is trying to mitigate and properly address the issue described at
https://github.com/window-maker/wmaker/issues/26
A buggy application (in that example virtualbox) is requesting a window size creation
that is way too big and basically at the limit of X11 protocol
(width and height are defined as CARD16).
See details at https://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.html
During the tests, virtualbox has been seen requesting for window creation of size 843x65508.
Even xprop is reporting incorrect values.

There had been an attempt before with the commit
https://repo.or.cz/wmaker-crm.git?a=commit;h=6668715402a5d8e2ecda6702076a06bf8988721e

But the patch is broken and not implemented at the right place.
As described in the wWindowConfigure function header, the size passed by the client app
should not be trusted and should be vetted with a prior call to wWindowConstrainSize.
wWindowConstrainSize call was missing only once in the wClientConfigure function from client.c
What wWindowConstrainSize doing now is basically setting a failsafe window size fo 640x480
if both width and height are above the size of CARD16.
If only one dimension is oversized, it's setting a default 4/3 window ratio.
Oversized here has not been changed and it's defined in windowmaker as double the screen size.
2023-02-22 20:10:31 +00:00
David Maciejak f1fef40f0d Make window maximize state persistent
Window maximize state is not persistent between windowmaker sessions.
This patch is updating the save and restore workspace state functions
to update the state in the WMSTATE file.
2023-02-21 18:16:35 +00:00
David Maciejak 2fb9308a67 Info Panel: Add libXRes info if supported
If windowmaker was compiled with libXRes,
add XRes info in the "Additional support" section.

Take also the chance to remove the mode +x on the source code file.
2023-02-20 23:07:02 +00:00
David Maciejak d902477efd Set missing WM_COMMAND using pid given from libXRes
For apps which are not setting the window WM_COMMAND property like those old
apps using Motif toolkit (I am thinking of NEdit for example)
it's bringing some issues in windowmaker which is relying on it for a few interactions.
Especially,
*an app without WM_COMMAND will not be saved during the workspace state
(so session restore is not working for them)
*when added to the dock, the settings parameters are empty and need to be filled
*cannot autostart from the dock (even if the settings are manually filled and saved)
*right click on the app titlebar, and choosing Launch has no effect

Most of the time, those apps are also not setting the X11_NET_WM_PID property.
With the pid we could have a chance to find the running program.
To link a window to a pid, there is the X11 Resource extension library (libXRes).
After checking, gnome and xfce are also using the same method to handle such issues.

The patch is checking if the libXRes is present on the system (but it's not mandatory to compile).
Then, it adds a layer on top of wNETWMGetPidForWindow to not only check the window property
but if necessary to get the underlying pid from libXRes if available.
That's solving the points mentioned above.
2023-02-20 15:00:55 +00:00
David Maciejak 5ee19c2308 Allow WM_COMMAND-less app to autostart
For apps which are not setting the window WM_COMMAND property like those old
apps using Motif toolkit (I am thinking of NEdit for example)
it's bringing some issues in windowmaker which is relying on it for a few interactions.
Especially,
*an app without WM_COMMAND will not be saved during the workspace state
(so session restore is not working for them)
*when added to the dock, the settings parameters are empty and need to be filled
*cannot autostart from the dock (even if the settings are manually filled and saved)
*right click on the app titlebar, and choosing Launch has no effect

The patch below allows the workspace state to be saved for those apps without WM_COMMAND
that have been launched from the dock. We are just reusing what have been set in the
Application Path Settings of the dock app (and it does not require extra libs like libXRes).
2023-02-20 15:00:55 +00:00
David Maciejak fabd4252ab Allow exit panel to be bound to a key shortcut
While debugging the save/restore workspace state, I found quite
useful to be able to exit windowmaker using a key shortcut.
2023-02-20 15:00:55 +00:00
David Maciejak 630e9292c2 Factorize duplicate run command code
Run command from the menu and run command from the key shortcut are from two different codes.
Merge them into one function instead.
2023-02-19 10:10:49 +00:00
David Maciejak 14d1b8197a WRaster: Avoid undefined setjmp() behavior with libjpeg
Fix compiler warning:
load_jpeg.c: In function 'RLoadJPEG':
load_jpeg.c:100:17: warning: variable 'image' might be clobbered by 'longjmp' or 'vfork' [-Wclobbered]

As it was not working to only set the RImage *image as volatile,
I had to refactor the code by following the example from
https://github.com/libjpeg-turbo/libjpeg-turbo/commit/410c028f3396d1fa9bcc72608079ff4d3d76b03e#diff-e7cb632359a2be17c1008b50f9ec85691cd5d66834d5fe8f63ef65ceb06682ee
2023-02-19 10:10:41 +00:00
David Maciejak 4d658341d2 Add support for _NET_WM_FULLSCREEN_MONITORS
This patch adds the _NET_WM_FULLSCREEN_MONITORS hint as defined in EWMH which is based on Xinerama.
It's allowing a window to be displayed fullscreen on multiple monitors.

Issue mentioned at https://github.com/window-maker/wmaker/issues/8
Specs at https://specifications.freedesktop.org/wm-spec/1.5/ar01s06.html#idm45763309187776
GTK test program used https://bugzilla.gnome.org/show_bug.cgi?id=414476
2023-02-18 08:41:08 +00:00
David Maciejak ac75047aef Fix mini workspace compiler warnings
The patch is to fix warnings like:
wsmap.c: In function "update_mini_workspace":
wsmap.c:451:55: warning: "%d" directive output may be truncated writing between 1 and 11 bytes into a region of size 10 [-Wformat-truncation=]
  451 |                         snprintf(name, sizeof(name), "%d", general_index);
2023-02-17 21:51:06 +00:00
David Maciejak 6d6f9f6ff5 Info Panel: Fix uninitialized posn variable 2023-02-16 11:34:54 +00:00
David Maciejak 370adc94e7 Ignore WM_NORMAL_HINTS resize increment for maximized windows
If you are trying to maximize old apps that are setting a resize increment
in term of WM_NORMAL_HINTS notion the window will not be maximized fully (by a few pixels).
It's easy to reproduce with xterm, ctrl double click on the title bar.
xprop extract sample is giving:
program specified resize increment: 6 by 13

For those maximized windows the patch is just ignoring the resize increment.
Seems the same issue happened on that project
https://github.com/paperwm/PaperWM/issues/106
2023-02-16 01:21:25 +00:00
David Maciejak 532acdc443 WRaster: Avoid types deprecated with libtiff 4.3
This patch is fixing compiler warnings like:

load_tiff.c:42:9: warning: 'uint16' is deprecated [-Wdeprecated-declarations]
load_tiff.c:43:9: warning: 'uint32' is deprecated [-Wdeprecated-declarations]

As starting from libtiff 4.3, released in April 2021, types were moved
from uint16 to uint16_t and uint32 to uint32_t respectively.

See https://libtiff.gitlab.io/libtiff/releases/v4.3.0.html
2023-02-15 11:24:09 +00:00
David Maciejak d7d38aa443 Info Panel: display more OS details
Rely on old utsname and os-release (http://0pointer.de/blog/projects/os-release) when available
to display more underlying OS details in the Info panel.
The idea is when someone creates a bug entry we can request them to copy/paste that screen
to give more info about the context that could help us debug the issue.
For example, on my current system it's displaying:
"Running on: Ubuntu 22.10 (x86_64)"
2023-02-15 09:37:06 +00:00
David Maciejak a6209cc89b Set a better exit panel message
Replace the exit window manager generic message with Window Maker term instead.
2023-02-15 09:37:06 +00:00
David Maciejak 01bd523cee WINGs: allow keypad enter key to validate button
This patch allows the keypad enter key to validate the button click action.
2023-02-15 09:37:06 +00:00
David Maciejak 45ab72a78a InfoPanel: fix out of display text
When debug is enabled, the memory allocated details is supposed to display the free chunks
but as the text length is too long it's getting out of the display area.
This patch is increasing the window width to handle such case.
2023-02-13 13:10:14 +00:00
David Maciejak 437b76812d Info Panel: mallinfo is deprecated use mallinfo2 instead
Replacing mallinfo with mallinfo2.

The fields of the mallinfo structure that is returned by the
older mallinfo() function are typed as int.  However, because
some internal bookkeeping values may be of type long, the
reported values may wrap around zero and thus be inaccurate.
2023-02-11 10:35:23 +00:00
David Maciejak e3ee459a78 Info Panel: use system time to get the current year
Use the system date to get the current year to insert inside the copyright line.
So no need to update that string anymore.
2023-02-11 10:33:22 +00:00
David Maciejak d70b546f2e Fix wrong XKeycodeToKeysym index value
XKeycodeToKeysym was deprecated some time ago and wmaker code was patched to use the definition from XKBlib instead.
(https://repo.or.cz/wmaker-crm.git?a=commit;h=0382dd5dd7ecae2112a0c6366eaf9e6ab68ad354)

Before being deprecated,  XKeycodeToKeysym was prototyped at X11/Xlib.h as
KeySym XKeycodeToKeysym(display, keycode, index)

Now it's available in X11/XKBlib.h as
KeySym XkbKeycodeToKeysym(display, keycode, group, level)

Basically level now which is the 4th parameter is our old index variable (3rd parameter).

On systems which don't have xkb supported the value set for index is wrong.
As seen in old patch at https://repo.or.cz/wmaker-crm.git/blobdiff/139f912e618870cc7fd908099f203450547eb658..43c3526d2120712f72579398b73ef92283d9078b:/WPrefs.app/MouseSettings.c
we should pass the l value to old XKeycodeToKeysym function and not the 0 value which is used for the group in the new XkbKeycodeToKeysym definition.
2023-02-11 10:30:52 +00:00
David Maciejak 812930b7cd Fix icon.c unused variable compiler warning
Just to please the compiler as it's reporting:
icon.c: In function 'get_icon_cache_path':
icon.c:425:13: warning: unused variable 'len' [-Wunused-variable]
2023-02-11 10:30:02 +00:00
David Maciejak 2a14004fc3 SwitchPanel: make sure WMRetainColor and WMReleaseColor calls are even
The number of calls to WMRetainColor for a color in use should the same as the number of calls to WMReleaseColor
to free that color. In case of discrepancy, random crashes can happen and memory is not freed properly.
To debug that issue I checked the retained colors when the switchpanel is opened and then checked if those colors are properly released once the panel is closed.

This patch fixes the issue mentioned at https://github.com/window-maker/wmaker/issues/22
2023-02-10 11:24:55 +00:00
David Maciejak 04e9f33437 WINGs: Fix incorrect findCloseColor exact flag value
In case the color cannot be allocated exactly by createRGBAColor function,
the findCloseColor function is used as a failover function to find a color close to the requested color.
By definition that color is then not exact.
createRGBAColor exact flag should be 1 while findCloseColor exact flag should be 0
2023-02-10 11:24:44 +00:00
David Maciejak 150816c687 Fix missing linefeed on the error message
Just to display the error message properly in case there is no display.
2023-02-08 00:14:48 +00:00
Torrance, Douglas ddacfa5d63 Include screen.h in dialog.h for definition of WScreen 2023-01-26 10:15:58 +00:00
Torrance, Douglas 0718297e9a Correctly draw window snapping hints on multi-head systems
Previously, the transparent frames that were drawn prior to snapping a
window assumed that there was only one head, i.e., that the new
position and dimensions of the window would be based on the dimensions
of the entire screen.

However, this is not the case on multi-head systems, and so we now
base the transparent frame's position and dimensions on the current
head of the window.

We also refactor the code so that the new dimensions are computed in
the switch statement and finish with one final call to
drawTransparentFrame.
2023-01-20 11:54:07 +00:00
Torrance, Douglas 9cc16182d3 Use dock to determine whether drawer is on right side when swapping
Previously, we assumed that it always switched from left to right or
vice versa when calling swapDrawer.  However, now we may also call
swapDrawer when changing the value of "KeepDockOnPrimaryHead", which
wouldn't actually switch which side of the screen it's on.

So instead, we determine which side of the screen it should be on
based on the dock.
2023-01-20 10:34:36 +00:00
Torrance, Douglas f6165d6e80 Use actual x position of dock when saving state
Previously, we either saved it as 0 or -ICON_SIZE, and then adjusted
it depending on the screen width when restoring the state.

But since the introduction of the "KeepDockOnPrimaryHead" option, the
state-restoring code has changed so that the dock will go on the left if the
x-coordinate of the position in WMState is to the left of the midpoint
of the screen and on the right otherwise.  But previously (unless the
user manually set the value in WMState) this would always send the
dock to the left, even if it had been on the right, since the x-coordinate
automatically saved to WMState in this case was negative.

We simplify things by saving the actual x position of the dock to WMState.
2023-01-20 10:34:36 +00:00
Torrance, Douglas 10c36d244e Use dock's position to determine position of dock menu
Previously, we assumed that if the dock was on the right, then the
menu should be on the far right of the entire screen, but this is no
longer the case with "KeepDockOnPrimaryHead" set to "YES".
2023-01-20 10:34:36 +00:00
Torrance, Douglas 515eb652c7 Update the dock position when "KeepDockOnPrimaryHead" is changed 2023-01-18 12:18:03 +00:00
Torrance, Douglas 8ed92efa3c Rename swapDock to wDockSwap and add to dock.h
We'll be calling it from defaults.c.
2023-01-18 12:18:03 +00:00
Torrance, Douglas cc839f8bc5 Add default value of "KeepDockOnPrimaryHead" to Defaults/WindowMaker 2023-01-18 12:18:03 +00:00
Torrance, Douglas 48d4820dee Support "KeepDockOnPrimaryHead" when restoring state
We use the new helper function getDockXPosition to determine where
to put the dock.  If WMState gives an x-coordinate less than the
center of the screen, we put it on the left, and otherwise we put it
on the right.
2023-01-18 12:18:03 +00:00
Torrance, Douglas d4f5f3ec7f Support "KeepDockOnPrimaryHead" when initially creating dock
We use the new "getDockXPosition" helper function to find the x
position of the main icon, whose position is used in "wDockCreate" to
get the position of the entire dock.

Previously, "KeepDockOnPrimaryHead" was only taken into account
when *moving* the dock and not when creating it.
2023-01-18 12:18:03 +00:00
Torrance, Douglas 83f7fa43ce Add helper function for computing the dock's x position
Avoid code duplication since we'll need to make this computation in
several places.
2023-01-18 12:18:03 +00:00
Torrance, Douglas 55a816bdbc Keep dock on primary head if KeepDockOnPrimaryHead is YES
This implements a feature request [1] to allow the possibility of
keeping the dock on the primary head on a multi-head system.

In particular, if the new KeepDockOnPrimaryHead option is set to YES,
the dock will either be on the left- or right-hand side of the primary
screen.  If it is NO, then we get the current behavior, i.e., the dock
will either be on the left-hand side of the leftmost head or the
right-hand side of the rightmost head.

[1] https://github.com/window-maker/wmaker/issues/24

Closes: #24
2023-01-15 00:18:34 +00:00
Torrance, Douglas 7639fa1c15 Add "KeepDockOnPrimaryHead" checkbox to WPrefs experts panel 2023-01-15 00:18:34 +00:00
Torrance, Douglas 93b411f258 Document "KeepDockOnPrimaryHead" option in NEWS 2023-01-15 00:18:34 +00:00
Torrance, Douglas 326a67e18f Add new "KeepDockOnPrimaryHead" option
Once implemented, this will keep the dock on the primary head (when
there are multiple heads) when YES.  The default value is NO, the
current behavior, i.e., treat all monitors together as one large screen.
2023-01-15 00:18:34 +00:00
Petre Rodan c089c6aea4 Fix segfault on right-click sweep of menu
bug description: after menu is displayed I get a segfault when trying to hover over the last menu
entry. it looks like under some circumstances menu->entries[] gets accessed past the last valid
value (off by one).

how to reproduce:
right-click desktop to show menu and keep right mouse button pressed
sweep mouse up-down the menu a few times - it crashes all the time between 1-5 sweeps

this commit fixes the unwanted behaviour, in active use since december 2021.
2023-01-06 12:47:22 +00:00
Torrance, Douglas 66b0ee3c4d Add WPrefs to XDG desktop menu
We include a desktop entry file for WPrefs so that it will be included
in XDG-compatible menus.  See the specifications at:

https://specifications.freedesktop.org/menu-spec/menu-spec-latest.html
https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
2022-02-17 22:31:18 +00:00
Torrance, Douglas a6c8577eb4 Include wmaker.desktop in distribution tarball
This fixes a bug where building from a tarball generated by "make
dist" would fail due to the absence of this file.
2022-02-17 22:31:18 +00:00
Doug Torrance 094001a53d Convert Slovak language manpages from ISO-8859-2 to UTF-8 2021-10-10 11:53:29 +01:00
Doug Torrance deba131857 Convert Czech language manpages from ISO-8859-2 to UTF-8 2021-10-10 11:53:11 +01:00
Doug Torrance a9bc9751a2 Use quotes around "Window Maker" in translated manpage title headers
This matches the English manpage and also prevents
wrong-manual-section Lintian warnings in the Debian package, as "Maker"
was being interpreted as the section of these manpages.
2021-10-09 13:53:34 +01:00
Torrance, Douglas 58b6728743 Add desktop file for display manager session configuration
Files in /usr/share/xsessions are used by some display managers (e.g.,
LightDM and GDM) to detect available sessions.  Such a file has been
shipped in the Debian Window Maker package for years.
2021-10-09 09:55:40 +01:00
Christophe CURIS 894d096d6e WINGs: in WText, do not re-query Atom value every time they are used
It is resource-consuming to query the server for an Atom, yet the protocol
ensures the values will stay unique, so we'd better ask them once and
retain the values for further use.
2021-09-04 19:03:53 +01:00
Christophe CURIS a41b0aa21d WINGs: Simplify function wstrconcat
Because we have allocated enough space, it is a waste of time to check the
size after copy and cat; beside the use of plain strxxx functions may allow
compiler to make a better job.
2021-09-04 19:03:53 +01:00
Christophe CURIS d4cc033379 Util: Rewrite error message generation to avoid potential problem
The call to 'snprintf' may change the value of 'errno', which means that
the 'perror' call would print a wrong error message, not the one from
'fopen'.
2021-09-04 19:03:53 +01:00
Christophe CURIS 308b9f4975 Configure: Fix non-working libbsd usage when explicitly requested
Due to a missing comma, in the AS_IF the action run-if-false is actually
merged with run-if-true action, which means that with_libbsd is always
empty when user provides --with[out]-libbsd.
2021-09-04 19:03:53 +01:00
Christophe CURIS 1d1c904126 Configure: Place the argument checks at the beginning of execution
The autotool provides a simple mechanism which allows us to move ("divert")
the checks we do on the user arguments to the beginning of the script, yet
without needing to scatter the code.

This is good because we can raise errors very fast, user do not have to
wait until many other checks have passed before knowing he has to correct
his argument list; yet on our side we can keep related things together.

Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
2021-09-04 19:03:53 +01:00
Christophe CURIS ca4ae5068b WINGs: Simplify wglobaldefaultspathfordomain
The original code was over-complicated, it can be reduced to a one-line
call to a function that does the same thing, with the bonus that it will
behave better in the case where domain == NULL.
2021-08-10 09:42:43 +01:00
Christophe CURIS 26491867a3 WINGs: Fix incomplete prototypes for functions that take no argument 2021-08-10 09:42:43 +01:00
John D Pell dce34e926b wmaker.inst: remove all modification to ~/.xinitrc
I cannot imagine that modifying an existing ~/.xinitrc is ever wanted, and creating an ~/.xinitrc when none exists is much worse.

If a user created their own ~/.xinitrc, then don't modify it.
The user will modify it if they like.

If the user did not create their own ~/.xinitrc, then creating one will short-circuit X startup as `startx` will *replace* the system's version with the user's version.
Literally ~/.Xresources won't be loaded.
There's no way this is expected behavior.
2021-08-10 09:42:43 +01:00
John D Pell a0b283a60f WUtil: Be more strict about base directory for wmkdirhier()
The original code refused to create anything not in $WMAKER_USER_ROOT, now
we go one step further and limit creation inside its 'Library' or
'Defaults' sub-directories.
2021-08-10 09:42:43 +01:00
John D Pell 671db45007 WUtil: Be more strict about base directory for wrmdirhier()
The original code refused to delete anything not in $WMAKER_USER_ROOT, now
we go one step further and limit deletion inside 'Library' or 'Defaults'.
2021-08-10 09:42:43 +01:00
John D Pell 0c6ad643c8 Change generation of Data Dir in the global header
It has become common practice in previous patches to use PACKAGE_TARNAME
instead of hard-coding "WindowMaker" when working with paths, so let's be
as consistent in the generated header.
2021-08-10 09:42:43 +01:00
John D Pell 5076b6f496 Default Files: Replace misleading variables 'defsdatadir' in Makefiles
The parameter name 'defsdatadir' was copied in to many sub-Makefiles; for
all of them give a unique name for clarity.
2021-08-10 09:42:43 +01:00
Christophe CURIS 54c8535365 Configure: Add an error message when using deprecated "--with-defsdatadir" 2021-08-10 09:42:43 +01:00
John D Pell 24f5b32469 Configure: Rename setting DEFSDATADIR to PKGCONFDIR
Directory /etc/WindowMaker is for global defaults configuration, it is not
a "data" folder which is $PREFIX/share/WindowMaker.

The name change make it more consistent with other names.
2021-08-10 09:42:43 +01:00
John D Pell 85169642ca WMaker: Store history in $XDG_STATE_HOME if defined
The FreeDesktop XDG standard suggests storing history in the directory
pointed by $XDG_STATE_HOME; so if we find it is defined we prefer to use
it over the default path. If undefined, keep the old behaviour.

This may introduce a loss of history for users that had some in the legacy
place but have the variable, we consider this very unlikely to be a problem
but if user complains we can suggest them to move the legacy file over the
empty new one.
2021-08-10 09:42:43 +01:00
Christophe CURIS 9f9ef6417e Utils: Use the constants added in config-paths.h for paths
Replace hard-coded directory names by the constants that have been
previously added to the common header.
2021-08-10 09:42:43 +01:00
Christophe CURIS fb2a6d2e61 WPrefs: Use the constants added in config-paths.h for paths
Replace hard-coded directory names by the constants that have been
previously added to the common header.
2021-08-10 09:42:43 +01:00
John D Pell 8219c36488 WINGs: Use the constants added in config-paths.h for paths
Replace hard-coded directory names by the constants that have been
previously added to the common header.
2021-08-10 09:42:43 +01:00
John D Pell bd38778bef Use wuserdatapath() everytime it is applicable
Replace calls to wusergnusteppath() which just append "/Library" by calls
to wuserdatapath().
Take opportunity to replace hardcoded "/WindowMaker" directories with
the existing PACKAGE_TARNAME macro (which comes from autotools).

The choice of 'TARNAME' is because it meant to be used in filename, thus
less likely to have problematic characters than PACKAGE_NAME (meant for
display purpose) and PACKAGE which is there for historical reason.
2021-08-10 09:42:43 +01:00
John D Pell 1e45ff2305 WUtil: New function wuserdatapath() to get path for application data
Returns the path in the user's GNUstep library: ~/GNUstep/Library
2021-08-10 09:42:43 +01:00
John D Pell 7e1cdf2d59 Add definition of directory names used for building paths in common header
The organisation of the file tree for storing application files depends on
a number of directories with a specific name.
This patch puts these names in the generated "config-paths.h" so they can
be shared between WINGs and WindowMaker, and could be user-configured in
the future.
2021-08-10 09:42:43 +01:00
Christophe CURIS 43f0474013 WINGs: Properly mark 'const' more 'char*' in the public API
Because the previous patch brought a (welcome) change in the public API,
seize the opportunity to go further in the improvement.
2021-08-10 09:42:43 +01:00
John D Pell a079544647 WINGs: Properly mark 'const' some 'char*' in the public API
Update all the callers in our code to deal with the const qualifier
where the compiler reports an issue.
2021-08-10 09:42:43 +01:00
John D Pell 03ec24502d WMaker: Fix logical-not operator in framewin.c
As reported by clang, (!wPreferences.new_style == TS_NEW) inverts the
"wPreferences.new_style" and not the whole expression. Use the appropriate
comparison operator to avoid misunderstanding.
2021-08-10 09:42:43 +01:00
John D Pell 5c90ed9d2d WPrefs: Use wdefaultspathfordomain() to build path to the root menu file
For the Menu edition tab, when building the path to the file that contains
the menu data, rely on wdefaultspathfordomain instead of constructing the
path with many hard-coded names.
2021-08-10 09:42:43 +01:00
John D Pell 735651df55 WMaker: Use wdefaultspathfordomain() to get path for Defaults directory
Instead of constructing path to user's defaults directory with hard-coded
names, just query wdefaultspathfordomain with a blank domain: this returns
the equivalent of "~/GNUstep/Defaults/", yet avoiding problems related to
duplicating strings.
2021-08-10 09:42:43 +01:00
John D Pell bfab769065 WINGs: Improve search path logic in WMPathForResourceOfType
The man page says environment variables are used, and if they don't exist
it falls back to defaults, yet this was not true in WINGS.

This changes implements the checks for the default paths used when the env
variables are not defined; these default paths have been fixed (+lib) to
match the GNUstep layout ('fhs'), expect for the very last path which keeps
the legacy layout.

For the user Apps folder, rely on wusergnusteppath() (~/GNUstep) to build
the path.

The previous code was only partially functional as the hard-coded paths
did not exist in any of GNUstep standard file system layout and the
GNUSTEP_*_ROOT environment variables were not provided by GNUstep for a
while. This means it would never work no matter how environment variables
were set when using layouts: 'debian', 'fhs', 'next', 'Apple', 'mac',
'fhs-system', or 'standalone'.
2021-08-10 09:42:43 +01:00
John D Pell c060477d57 WINGs: Simplify use of HAVE_SECURE_GETENV
Define the macro GETENV(x) instead of sprinkling code with #ifdef HAVE_SECURE_GETENV
everytime we want to use it.
2021-08-10 09:42:43 +01:00
Torrance, Douglas 75f133285f Fix segfault in color picker
Previously, we released the color well's color even if it was the same
as the new color.  This eventually resulted in a segfault when calling
WMPaintColorSwatch because we tried calling XFillRectangle with no
display.

We fix this by only releasing/updating the color well's if it differs
from the new color.
2021-06-29 22:32:31 +01:00
Torrance, Douglas a6ec6a30a3 Use wmkdirhier instead of mkdir to create color config directory
Otherwise, if ~/GNUstep/Library doesn't already exist, then creating
~/GNUstep/Library/Colors will fail.
2021-06-29 22:32:31 +01:00
144 changed files with 2406 additions and 1023 deletions
+2
View File
@@ -120,6 +120,8 @@ WindowMaker/Defaults/WMWindowAttributes
WindowMaker/Defaults/WindowMaker
WindowMaker/IconSets/Default.iconset
WPrefs.app/WPrefs.desktop
# These files are generated by the i18n process
/po/WindowMaker.pot
/po/*.mo
+11 -2
View File
@@ -19,10 +19,19 @@ config-paths.h: Makefile
@echo '#define PIXMAPDIR "$(pixmapdir)"' >> $@
@echo '' >> $@
@echo '/* where shared data is stored */' >> $@
@echo '#define PKGDATADIR "$(datadir)/WindowMaker"' >> $@
@echo '#define PKGDATADIR "$(datadir)/$(PACKAGE_TARNAME)"' >> $@
@echo '' >> $@
@echo '/* where the global defaults are stored */' >> $@
@echo '#define DEFSDATADIR "$(defsdatadir)"' >> $@
@echo '#define PKGCONFDIR "$(pkgconfdir)"' >> $@
@echo '' >> $@
@echo '/* where the user data root is located */' >> $@
@echo '#define GSUSER_SUBDIR "GNUstep"' >> $@
@echo '' >> $@
@echo '/* where the user defaults are stored */' >> $@
@echo '#define DEFAULTS_SUBDIR "Defaults"' >> $@
@echo '' >> $@
@echo '/* where the user data are stored */' >> $@
@echo '#define USERDATA_SUBDIR "Library"' >> $@
ACLOCAL_AMFLAGS = -I m4
+35
View File
@@ -1,6 +1,41 @@
NEWS for veteran Window Maker users
-----------------------------------
-- 0.96.0
Screenshot capture feature
--------------------------
In WPrefs "Keyboard Shortcut Preferences" tab, three new actions can
be configured: "Capture a portion of the screen", "Capture a window",
"Capture the entire screen". The file is saved in
~/GNUstep/Library/WindowMaker/Screenshots directory under a filename
format "screenshot_%Y-%m-%d_at_%H:%M:%S" followed by the extension.
Which can be png or jpg based on WRaster dependencies.
libXRes is now an optional dependency
-------------------------------------
XRes the resource extension for the X protocol is used to find the
underlying processes (and PIDs) responsible for displaying the windows.
Support for _NET_WM_FULLSCREEN_MONITORS hint
--------------------------------------------
That hint allows applications that support it to be set as fullscreen on multiple heads.
It depends on Xinerama extension support.
Keep dock on primary head
-------------------------
To keep the dock on the primary head in a multi-head setup, set the option
"KeepDockOnPrimaryHead" in ~/GNUstep/Defaults/WindowMaker to "YES" or click
"Keep dock on primary head" under the WPrefs "Expert User Preferences" tab.
-- 0.95.9
Configurable SwitchPanel
+6
View File
@@ -1,3 +1,9 @@
Changes since wmaker 0.96.0:
............................
- added W_KeycodeToKeysym to replace XKeycodeToKeysym/XkbKeycodeToKeysym calls
Changes since wmaker 0.92.0:
............................
+3 -1
View File
@@ -1,7 +1,9 @@
** API and ABI modifications since wmaker 0.92.0
** API and ABI modifications since wmaker 0.96.0
----------------------------------------------------
** libWINGs **
<WINGsP.h>
W_KeycodeToKeysym ADDED
struct W_DragDestinationInfo: new members added SIZE CHANGE
<WINGs.h>
+2 -1
View File
@@ -17,4 +17,5 @@ wtest_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la
EXTRA_DIST = logo.xpm upbtn.xpm wm.html wm.png
AM_CPPFLAGS = -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \
-DRESOURCE_PATH=\"$(datadir)/WINGs\" @XFT_CFLAGS@ @HEADER_SEARCH_PATH@
-DRESOURCE_PATH=\"$(datadir)/WINGs\" @XFT_CFLAGS@ @HEADER_SEARCH_PATH@ \
@PANGO_CFLAGS@
+1
View File
@@ -64,6 +64,7 @@ static W_Class myWidgetClass = 0;
*/
W_Class InitMyWidget(WMScreen * scr)
{
(void)scr;
/* register our widget with WINGs and get our widget class ID */
if (!myWidgetClass) {
myWidgetClass = W_RegisterUserWidget();
+1 -1
View File
@@ -4,7 +4,7 @@
#include "mywidget.h"
void wAbort()
_Noreturn void wAbort(void)
{
exit(1);
}
+4 -7
View File
@@ -19,14 +19,14 @@
#include "logo.xpm"
void wAbort()
_Noreturn void wAbort(void)
{
exit(1);
}
char *ProgName;
void usage(void)
_Noreturn void usage(void)
{
fprintf(stderr,
"usage:\n"
@@ -53,13 +53,10 @@ int main(int argc, char **argv)
WMPixmap *pixmap;
WMOpenPanel *oPanel;
WMSavePanel *sPanel;
/* RImage *image; */
char *title = NULL;
char *initial = "/";
int ch;
int panelType = OPEN_PANEL_TYPE;
extern char *optarg;
extern int optind;
if (!dpy) {
puts("could not open display");
@@ -96,14 +93,14 @@ int main(int argc, char **argv)
if (panelType == SAVE_PANEL_TYPE) {
sPanel = WMGetSavePanel(scr);
if (WMRunModalFilePanelForDirectory(sPanel, NULL, initial,
/*title */ NULL, NULL) == True)
title, NULL) == True)
printf("%s\n", WMGetFilePanelFileName(sPanel));
else
printf("\n");
} else {
oPanel = WMGetOpenPanel(scr);
if (WMRunModalFilePanelForDirectory(oPanel, NULL, initial,
/*title */ NULL, NULL) == True)
title, NULL) == True)
printf("%s\n", WMGetFilePanelFileName(oPanel));
else
printf("\n");
+2 -4
View File
@@ -11,14 +11,14 @@
#include "logo.xpm"
void wAbort()
_Noreturn void wAbort(void)
{
exit(1);
}
char *ProgName;
void usage(void)
_Noreturn void usage(void)
{
fprintf(stderr,
"usage:\n"
@@ -45,8 +45,6 @@ int main(int argc, char **argv)
char *initial = NULL;
char *result = NULL;
int ch;
extern char *optarg;
extern int optind;
WMInitializeApplication("WMQuery", &argc, argv);
+13 -2
View File
@@ -14,7 +14,7 @@
* This will be called when the application will be terminated because
* of a fatal error (only for memory allocation failures ATM).
*/
void wAbort()
_Noreturn void wAbort(void)
{
exit(1);
}
@@ -25,6 +25,7 @@ int windowCount = 0;
void closeAction(WMWidget * self, void *data)
{
(void)data;
WMDestroyWidget(self);
windowCount--;
printf("window closed, window count = %d\n", windowCount);
@@ -165,10 +166,13 @@ void testBox(WMScreen * scr)
static void singleClick(WMWidget * self, void *data)
{
(void)self;
(void)data;
}
static void doubleClick(WMWidget * self, void *data)
{
(void)data;
WMSelectAllListItems((WMList *) self);
}
@@ -480,6 +484,7 @@ void testColorPanel(WMScreen * scr)
void sliderCallback(WMWidget * w, void *data)
{
(void)data;
printf("SLIDER == %i\n", WMGetSliderValue(w));
}
@@ -749,6 +754,8 @@ void testTabView(WMScreen * scr)
void splitViewConstrainProc(WMSplitView * sPtr, int indView, int *minSize, int *maxSize)
{
(void)sPtr;
switch (indView) {
case 0:
*minSize = 20;
@@ -782,6 +789,7 @@ static void resizeSplitView(XEvent * event, void *data)
void appendSubviewButtonAction(WMWidget * self, void *data)
{
(void)self;
WMSplitView *sPtr = (WMSplitView *) data;
char buf[64];
WMLabel *label = WMCreateLabel(sPtr);
@@ -796,6 +804,7 @@ void appendSubviewButtonAction(WMWidget * self, void *data)
void removeSubviewButtonAction(WMWidget * self, void *data)
{
(void)self;
WMSplitView *sPtr = (WMSplitView *) data;
int count = WMGetSplitViewSubviewsCount(sPtr);
@@ -808,12 +817,14 @@ void removeSubviewButtonAction(WMWidget * self, void *data)
void orientationButtonAction(WMWidget * self, void *data)
{
(void)self;
WMSplitView *sPtr = (WMSplitView *) data;
WMSetSplitViewVertical(sPtr, !WMGetSplitViewVertical(sPtr));
}
void adjustSubviewsButtonAction(WMWidget * self, void *data)
{
(void)self;
WMAdjustSplitViewSubviews((WMSplitView *) data);
}
@@ -902,7 +913,7 @@ void testSplitView(WMScreen * scr)
WMMapWidget(win);
}
void testUD()
void testUD(void)
{
WMUserDefaults *defs;
char str[32];
+16 -16
View File
@@ -26,7 +26,7 @@
#include <WINGs/WUtil.h>
#include <X11/Xlib.h>
#define WINGS_H_VERSION 20150508
#define WINGS_H_VERSION 20230226
#ifdef __cplusplus
@@ -736,7 +736,7 @@ Bool WMRequestSelection(WMView *view, Atom selection, Atom target,
void *cdata);
extern char *WMSelectionOwnerDidChangeNotification;
extern const char *WMSelectionOwnerDidChangeNotification;
/* ---[ WINGs/dragcommon.c ]---------------------------------------------- */
@@ -977,11 +977,11 @@ WMPoint WMGetViewScreenPosition(WMView *view);
WMWidget* WMWidgetOfView(WMView *view);
/* notifications */
extern char *WMViewSizeDidChangeNotification;
extern const char *WMViewSizeDidChangeNotification;
extern char *WMViewFocusDidChangeNotification;
extern const char *WMViewFocusDidChangeNotification;
extern char *WMViewRealizedNotification;
extern const char *WMViewRealizedNotification;
/* ---[ WINGs/wballoon.c ]------------------------------------------------ */
@@ -1190,9 +1190,9 @@ void WMSetTextFieldDelegate(WMTextField *tPtr, WMTextFieldDelegate *delegate);
WMTextFieldDelegate* WMGetTextFieldDelegate(WMTextField *tPtr);
extern char *WMTextDidChangeNotification;
extern char *WMTextDidBeginEditingNotification;
extern char *WMTextDidEndEditingNotification;
extern const char *WMTextDidChangeNotification;
extern const char *WMTextDidBeginEditingNotification;
extern const char *WMTextDidEndEditingNotification;
/* ---[ WINGs/wscroller.c ]----------------------------------------------- */
@@ -1212,7 +1212,7 @@ void WMSetScrollerAction(WMScroller *sPtr, WMAction *action, void *clientData);
void WMSetScrollerArrowsPosition(WMScroller *sPtr,
WMScrollArrowPosition position);
extern char *WMScrollerDidScrollNotification;
extern const char *WMScrollerDidScrollNotification;
/* ---[ WINGs/wlist.c ]--------------------------------------------------- */
@@ -1291,8 +1291,8 @@ Bool WMListAllowsMultipleSelection(WMList *lPtr);
Bool WMListAllowsEmptySelection(WMList *lPtr);
extern char *WMListDidScrollNotification;
extern char *WMListSelectionDidChangeNotification;
extern const char *WMListDidScrollNotification;
extern const char *WMListSelectionDidChangeNotification;
/* ---[ WINGs/wbrowser.c ]------------------------------------------------ */
@@ -1324,7 +1324,7 @@ void WMSortBrowserColumnWithComparer(WMBrowser *bPtr, int column,
WMCompareDataProc *func);
/* Don't free the returned string. */
char* WMSetBrowserPath(WMBrowser *bPtr, char *path);
const char* WMSetBrowserPath(WMBrowser *bPtr, const char *path);
/* free the returned string */
char* WMGetBrowserPath(WMBrowser *bPtr);
@@ -1496,7 +1496,7 @@ void WMSetColorPanelPickerMode(WMColorPanel *panel, WMColorPanelMode mode);
void WMSetColorPanelAction(WMColorPanel *panel, WMAction2 *action, void *data);
extern char *WMColorPanelColorChangedNotification;
extern const char *WMColorPanelColorChangedNotification;
/* ---[ WINGs/wcolorwell.c ]---------------------------------------------- */
@@ -1509,7 +1509,7 @@ WMColor* WMGetColorWellColor(WMColorWell *cPtr);
void WSetColorWellBordered(WMColorWell *cPtr, Bool flag);
extern char *WMColorWellDidChangeNotification;
extern const char *WMColorWellDidChangeNotification;
/* ---[ WINGs/wscrollview.c ]--------------------------------------------- */
@@ -1876,7 +1876,7 @@ void WMSetFilePanelCanChooseFiles(WMFilePanel *panel, Bool flag);
void WMSetFilePanelAutoCompletion(WMFilePanel *panel, Bool flag);
void WMSetFilePanelDirectory(WMFilePanel *panel, char *path);
void WMSetFilePanelDirectory(WMFilePanel *panel, const char *path);
/* you can free the returned string */
char* WMGetFilePanelFileName(WMFilePanel *panel);
@@ -1884,7 +1884,7 @@ char* WMGetFilePanelFileName(WMFilePanel *panel);
void WMFreeFilePanel(WMFilePanel *panel);
int WMRunModalFilePanelForDirectory(WMFilePanel *panel, WMWindow *owner,
char *path, const char *name, char **fileTypes);
const char *path, const char *name, char **fileTypes);
void WMSetFilePanelAccessoryView(WMFilePanel *panel, WMView *view);
+3 -1
View File
@@ -41,7 +41,7 @@ typedef struct _WINGsConfiguration {
unsigned mouseWheelDown;
} _WINGsConfiguration;
extern char *_WINGS_progname;
extern const char *_WINGS_progname;
extern _WINGsConfiguration WINGsConfiguration;
extern struct W_Application WMApplication;
@@ -494,6 +494,8 @@ void W_SetPreeditPositon(W_View *view, int x, int y);
int W_LookupString(W_View *view, XKeyPressedEvent *event, char *buffer,
int buflen, KeySym *keysym, Status *status);
KeySym W_KeycodeToKeysym(Display *display, KeyCode keycode, int index);
/* ---[ wmisc.c ]--------------------------------------------------------- */
+2 -1
View File
@@ -249,7 +249,7 @@ char* wexpandpath(const char *path);
int wcopy_file(const char *toPath, const char *srcFile, const char *destFile);
/* don't free the returned string */
char* wgethomedir(void);
const char* wgethomedir(void);
/* ---[ WINGs/proplist.c ]------------------------------------------------ */
@@ -864,6 +864,7 @@ Bool WMWritePropListToFile(WMPropList *plist, const char *path);
/* don't free the returned string */
const char* wusergnusteppath(void);
const char* wuserdatapath(void);
/* Free the returned string when you no longer need it */
char* wdefaultspathfordomain(const char *domain);
+1 -1
View File
@@ -599,7 +599,7 @@ static void dragSourceResponseTimeOut(void *destView)
W_DragDestinationInfoClear(info);
}
void W_DragDestinationStopTimer()
void W_DragDestinationStopTimer(void)
{
if (dndDestinationTimer != NULL) {
WMDeleteTimerHandler(dndDestinationTimer);
+1 -1
View File
@@ -1080,7 +1080,7 @@ static void dragSourceResponseTimeOut(void *source)
}
}
void W_DragSourceStopTimer()
void W_DragSourceStopTimer(void)
{
if (dndSourceTimer != NULL) {
WMDeleteTimerHandler(dndSourceTimer);
+2 -6
View File
@@ -39,7 +39,7 @@
#endif
char *wgethomedir()
const char *wgethomedir(void)
{
static char *home = NULL;
char *tmp;
@@ -48,11 +48,7 @@ char *wgethomedir()
if (home)
return home;
#ifdef HAVE_SECURE_GETENV
tmp = secure_getenv("HOME");
#else
tmp = getenv("HOME");
#endif
tmp = GETENV("HOME");
if (tmp) {
home = wstrdup(tmp);
return home;
+3 -3
View File
@@ -536,7 +536,7 @@ found_end_define_fname:
while (*src != '\0') {
idx = 0;
if (*src == '~') {
char *home = wgethomedir();
const char *home = wgethomedir();
while (*home != '\0') {
if (idx < sizeof(buffer) - 2)
buffer[idx++] = *home;
@@ -612,10 +612,10 @@ static void menu_parser_condition_ifmacro(WMenuParser parser, Bool check_exists)
macro = menu_parser_find_macro(parser, macro_name);
parser->cond.stack[0].skip =
((check_exists) && (macro == NULL)) ||
((!check_exists) && (macro != NULL)) ;
((!check_exists) && (macro != NULL));
}
strcpy(parser->cond.stack[0].name, cmd_name);
strncpy(parser->cond.stack[0].name, cmd_name, sizeof(parser->cond.stack[0].name) - 1);
parser->cond.stack[0].line = parser->line_number;
}
+6 -2
View File
@@ -167,6 +167,7 @@ void menu_parser_define_macro(WMenuParser parser)
return;
}
macro = wmalloc(sizeof(*macro));
memset(arg_name, 0, MAX_MACRO_ARG_COUNT * sizeof(char *));
/* Isolate name of macro */
idx = 0;
@@ -279,7 +280,8 @@ WParserMacro *menu_parser_find_macro(WMenuParser parser, const char *name)
continue;
return macro;
check_next_macro: ;
check_next_macro:
;
}
return NULL;
}
@@ -391,6 +393,8 @@ void menu_parser_expand_macro(WMenuParser parser, WParserMacro *macro)
unsigned int size;
int i, space_left;
memset(arg_value, 0, MAX_MACRO_ARG_COUNT * sizeof(char *));
/* Skip the name of the macro, this was not done by caller */
for (i = 0; macro->name[i] != '\0'; i++)
parser->rd++;
@@ -692,7 +696,7 @@ static void w_create_macro(WMenuParser parser, const char *name, WParserMacroFun
WParserMacro *macro;
macro = wmalloc(sizeof(*macro));
strcpy(macro->name, name);
strncpy(macro->name, name, sizeof(macro->name) - 1);
macro->function = handler;
macro->arg_count = -1;
macro->next = parser->macros;
+38 -14
View File
@@ -1732,23 +1732,36 @@ Bool WMWritePropListToFile(WMPropList * plist, const char *path)
* file, and the last component is stripped off. the rest is the
* the hierarchy to be created.
*
* refuses to create anything outside $WMAKER_USER_ROOT
* refuses to create anything outside $WMAKER_USER_ROOT/Defaults or $WMAKER_USER_ROOT/Library
*
* returns 1 on success, 0 on failure
*/
int wmkdirhier(const char *path)
{
const char *t;
const char *libpath;
char *udefpath;
int cmp;
char *thePath = NULL, buf[1024];
size_t p, plen;
struct stat st;
/* Only create directories under $WMAKER_USER_ROOT */
if ((t = wusergnusteppath()) == NULL)
return 0;
if (strncmp(path, t, strlen(t)) != 0)
/* Only create directories under $WMAKER_USER_ROOT/Defaults or $WMAKER_USER_ROOT/Library */
libpath = wuserdatapath();
if (strncmp(path, libpath, strlen(libpath)) == 0)
if (path[strlen(libpath)] == '/')
goto path_in_valid_tree;
udefpath = wdefaultspathfordomain("");
cmp = strncmp(path, udefpath, strlen(udefpath));
wfree(udefpath);
if (cmp == 0)
/* Note: by side effect, 'udefpath' already contains a final '/' */
goto path_in_valid_tree;
/* If we reach this point, the path is outside the allowed tree */
return 0;
path_in_valid_tree:
thePath = wstrdup(path);
/* Strip the trailing component if it is a file */
p = strlen(thePath);
@@ -1771,7 +1784,6 @@ int wmkdirhier(const char *path)
}
memset(buf, 0, sizeof(buf));
strncpy(buf, t, sizeof(buf) - 1);
p = strlen(buf);
plen = strlen(thePath);
@@ -1782,7 +1794,7 @@ int wmkdirhier(const char *path)
strncpy(buf, thePath, p);
if (mkdir(buf, 0777) == -1 && errno == EEXIST &&
stat(buf, &st) == 0 && !S_ISDIR(st.st_mode)) {
werror(_("Could not create component %s"), buf);
werror(_("Could not create path component %s"), buf);
wfree(thePath);
return 0;
}
@@ -1824,7 +1836,7 @@ static int wrmdirhier_fn(const char *path, const struct stat *st,
/*
* remove a directory hierarchy
*
* refuses to remove anything outside $WMAKER_USER_ROOT
* refuses to remove anything outside $WMAKER_USER_ROOT/Defaults or $WMAKER_USER_ROOT/Library
*
* returns 1 on success, 0 on failure
*
@@ -1834,16 +1846,28 @@ static int wrmdirhier_fn(const char *path, const struct stat *st,
*/
int wrmdirhier(const char *path)
{
const char *libpath;
char *udefpath = NULL;
struct stat st;
int error;
const char *t;
/* Only remove directories under $WMAKER_USER_ROOT */
if ((t = wusergnusteppath()) == NULL)
return EPERM;
if (strncmp(path, t, strlen(t)) != 0)
/* Only remove directories under $WMAKER_USER_ROOT/Defaults or $WMAKER_USER_ROOT/Library */
libpath = wuserdatapath();
if (strncmp(path, libpath, strlen(libpath)) == 0)
if (path[strlen(libpath)] == '/')
goto path_in_valid_tree;
udefpath = wdefaultspathfordomain("");
if (strncmp(path, udefpath, strlen(udefpath)) == 0)
/* Note: by side effect, 'udefpath' already contains a final '/' */
goto path_in_valid_tree;
wfree(udefpath);
return EPERM;
path_in_valid_tree:
wfree(udefpath);
/* Shortcut if it doesn't exist to begin with */
if (stat(path, &st) == -1)
return ENOENT;
+1 -1
View File
@@ -7,7 +7,7 @@
#define MAX_PROPERTY_SIZE 8*1024
char *WMSelectionOwnerDidChangeNotification = "WMSelectionOwnerDidChange";
const char *WMSelectionOwnerDidChangeNotification = "WMSelectionOwnerDidChange";
typedef struct SelectionHandler {
WMView *view;
+5 -7
View File
@@ -204,7 +204,7 @@ char *wstrndup(const char *str, size_t len)
char *wstrconcat(const char *str1, const char *str2)
{
char *str;
size_t slen;
size_t slen, slen1;
if (!str1 && str2)
return wstrdup(str2);
@@ -213,13 +213,11 @@ char *wstrconcat(const char *str1, const char *str2)
else if (!str1 && !str2)
return NULL;
slen = strlen(str1) + strlen(str2) + 1;
slen1 = strlen(str1);
slen = slen1 + strlen(str2) + 1;
str = wmalloc(slen);
if (wstrlcpy(str, str1, slen) >= slen ||
wstrlcat(str, str2, slen) >= slen) {
wfree(str);
return NULL;
}
strcpy(str, str1);
strcpy(str + slen1, str2);
return str;
}
+21 -20
View File
@@ -40,29 +40,25 @@ char *WMUserDefaultsDidChangeNotification = "WMUserDefaultsDidChangeNotification
static void synchronizeUserDefaults(void *foo);
#define DEFAULTS_DIR "/Defaults"
#ifndef HAVE_INOTIFY
/* Check defaults database for changes every this many milliseconds */
/* XXX: this is shared with src/ stuff, put it in some common header */
#define UD_SYNC_INTERVAL 2000
#endif
const char *wusergnusteppath()
const char *wusergnusteppath(void)
{
static const char subdir[] = "/GNUstep";
static const char subdir[] = "/" GSUSER_SUBDIR;
static char *path = NULL;
char *gspath, *h;
char *gspath;
const char *h;
int pathlen;
if (path)
/* Value have been already computed, re-use it */
return path;
#ifdef HAVE_SECURE_GETENV
gspath = secure_getenv("WMAKER_USER_ROOT");
#else
gspath = getenv("WMAKER_USER_ROOT");
#endif
gspath = GETENV("WMAKER_USER_ROOT");
if (gspath) {
gspath = wexpandpath(gspath);
if (gspath) {
@@ -84,6 +80,19 @@ const char *wusergnusteppath()
return path;
}
const char *wuserdatapath(void)
{
static char *path = NULL;
if (path)
/* Value have been already computed, re-use it */
return path;
path = wstrconcat(wusergnusteppath(), "/" USERDATA_SUBDIR);
return path;
}
char *wdefaultspathfordomain(const char *domain)
{
char *path;
@@ -91,12 +100,11 @@ char *wdefaultspathfordomain(const char *domain)
size_t slen;
gspath = wusergnusteppath();
slen = strlen(gspath) + strlen(DEFAULTS_DIR) + strlen(domain) + 4;
slen = strlen(gspath) + strlen("/" DEFAULTS_SUBDIR "/") + strlen(domain) + 1;
path = wmalloc(slen);
strcpy(path, gspath);
strcat(path, DEFAULTS_DIR);
strcat(path, "/");
strcat(path, "/" DEFAULTS_SUBDIR "/");
strcat(path, domain);
return path;
@@ -105,14 +113,7 @@ char *wdefaultspathfordomain(const char *domain)
/* XXX: doesn't quite belong to *user*defaults.c */
char *wglobaldefaultspathfordomain(const char *domain)
{
char *t = NULL;
size_t len;
len = strlen(DEFSDATADIR) + strlen(domain) + 2;
t = wmalloc(len);
snprintf(t, len, "%s/%s", DEFSDATADIR, domain);
return t;
return wstrconcat(PKGCONFDIR "/", domain);
}
void w_save_defaults_changes(void)
+31 -21
View File
@@ -9,7 +9,7 @@
struct W_Application WMApplication;
char *_WINGS_progname = NULL;
const char *_WINGS_progname = NULL;
Bool W_ApplicationInitialized(void)
{
@@ -83,7 +83,7 @@ void WMSetResourcePath(const char *path)
WMApplication.resourcePath = wstrdup(path);
}
char *WMGetApplicationName()
char *WMGetApplicationName(void)
{
return WMApplication.applicationName;
}
@@ -131,7 +131,9 @@ error:
char *WMPathForResourceOfType(const char *resource, const char *ext)
{
const char *gslocapps, *gssysapps, *gsuserapps;
char *path, *appdir;
char buffer[PATH_MAX];
size_t slen;
path = appdir = NULL;
@@ -141,11 +143,11 @@ char *WMPathForResourceOfType(const char *resource, const char *ext)
* - resourcePath/ext
* - dirname(argv[0])/ext
* - WMAKER_USER_ROOT/Applications/ApplicationName.app/ext
* - ~/GNUstep/Applications/ApplicationName.app/ext
* - GNUSTEP_LOCAL_ROOT/Applications/ApplicationName.app/ext
* - /usr/local/GNUstep/Applications/ApplicationName.app/ext
* - GNUSTEP_SYSTEM_ROOT/Applications/ApplicationName.app/ext
* - /usr/GNUstep/Applications/ApplicationName.app/ext
* - GNUSTEP_USER_APPS/ApplicationName.app/ext
* - GNUSTEP_LOCAL_APPS/ApplicationName.app/ext
* - /usr/local/lib/GNUstep/Applications/ApplicationName.app/ext
* - GNUSTEP_SYSTEM_APPS/ApplicationName.app/ext
* - /usr/lib/GNUstep/Applications/ApplicationName.app/ext
*/
if (WMApplication.resourcePath) {
@@ -170,32 +172,40 @@ char *WMPathForResourceOfType(const char *resource, const char *ext)
}
}
slen = strlen(WMApplication.applicationName) + sizeof("Applications/.app");
snprintf(buffer, sizeof(buffer), "Applications/%s.app", WMApplication.applicationName);
path = checkFile(GETENV("WMAKER_USER_ROOT"), buffer, ext, resource);
if (path)
goto out;
slen = strlen(WMApplication.applicationName) + sizeof("/.app");
appdir = wmalloc(slen);
if (snprintf(appdir, slen, "Applications/%s.app", WMApplication.applicationName) >= slen)
if (snprintf(appdir, slen, "/%s.app", WMApplication.applicationName) >= slen)
goto out;
path = checkFile(getenv("WMAKER_USER_ROOT"), appdir, ext, resource);
gsuserapps = GETENV("GNUSTEP_USER_APPS");
if (!gsuserapps) {
snprintf(buffer, sizeof(buffer), "%s/Applications", wusergnusteppath());
gsuserapps = buffer;
}
path = checkFile(gsuserapps, appdir, ext, resource);
if (path)
goto out;
path = checkFile(wusergnusteppath(), appdir, ext, resource);
gslocapps = GETENV("GNUSTEP_LOCAL_APPS");
if (!gslocapps)
gslocapps = "/usr/local/lib/GNUstep/Applications";
path = checkFile(gslocapps, appdir, ext, resource);
if (path)
goto out;
path = checkFile(getenv("GNUSTEP_LOCAL_ROOT"), appdir, ext, resource);
gssysapps = GETENV("GNUSTEP_SYSTEM_APPS");
if (!gssysapps)
gssysapps = "/usr/lib/GNUstep/Applications";
path = checkFile(gssysapps, appdir, ext, resource);
if (path)
goto out;
path = checkFile("/usr/local/GNUstep", appdir, ext, resource);
if (path)
goto out;
path = checkFile(getenv("GNUSTEP_SYSTEM_ROOT"), appdir, ext, resource);
if (path)
goto out;
path = checkFile("/usr/GNUstep", appdir, ext, resource); /* falls through */
path = checkFile("/usr/GNUstep/System/Applications", appdir, ext, resource); /* falls through */
out:
if (appdir)
+3 -2
View File
@@ -619,11 +619,12 @@ void WMSetBrowserHasScroller(WMBrowser * bPtr, int hasScroller)
bPtr->flags.hasScroller = hasScroller;
}
char *WMSetBrowserPath(WMBrowser * bPtr, char *path)
const char *WMSetBrowserPath(WMBrowser * bPtr, const char *path)
{
int i;
char *str;
char *tmp, *retPtr = NULL;
char *tmp;
const char *retPtr = NULL;
int item;
WMListItem *listItem;
+3 -3
View File
@@ -51,7 +51,7 @@ static WMColor *findCloseColor(WMScreen * scr, unsigned short red, unsigned shor
color->refCount = 1;
color->color = xcolor;
color->alpha = alpha;
color->flags.exact = 1;
color->flags.exact = 0;
color->gc = NULL;
return color;
@@ -91,7 +91,7 @@ WMColor *WMCreateRGBColor(WMScreen * scr, unsigned short red, unsigned short gre
color = findCloseColor(scr, red, green, blue, 0xffff);
}
if (!color)
color = WMBlackColor(scr);
color = scr->black;
return color;
}
@@ -117,7 +117,7 @@ WMColor *WMCreateRGBAColor(WMScreen * scr, unsigned short red, unsigned short gr
color = findCloseColor(scr, red, green, blue, alpha);
}
if (!color)
color = WMBlackColor(scr);
color = scr->black;
return color;
}
+6 -9
View File
@@ -44,7 +44,7 @@
# include <X11/extensions/shape.h>
#endif
char *WMColorPanelColorChangedNotification = "WMColorPanelColorChangedNotification";
const char *WMColorPanelColorChangedNotification = "WMColorPanelColorChangedNotification";
/*
* Bitmaps for magnifying glass cursor
@@ -394,7 +394,7 @@ static WMColorPanel *makeColorPanel(WMScreen * scrPtr, const char *name)
panel->mode = WMWheelModeColorPanel;
panel->lastChanged = 0;
panel->slidersmode = WMRGBModeColorPanel;
panel->configurationPath = wstrconcat(wusergnusteppath(), "/Library/Colors/");
panel->configurationPath = wstrconcat(wuserdatapath(), "/Colors/");
/* Some General Purpose Widgets */
panel->colorWell = WMCreateColorWell(panel->win);
@@ -1159,11 +1159,9 @@ static void readConfiguration(W_ColorPanel * panel)
DIR *dPtr;
struct dirent *dp;
struct stat stat_buf;
int item;
if (stat(panel->configurationPath, &stat_buf) != 0) {
if (mkdir(panel->configurationPath, S_IRWXU | S_IRGRP | S_IROTH | S_IXGRP | S_IXOTH) != 0) {
if (!wmkdirhier(panel->configurationPath)) {
werror(_("Color Panel: Could not create directory %s needed"
" to store configurations"), panel->configurationPath);
WMSetPopUpButtonEnabled(panel->customPaletteMenuBtn, False);
@@ -1173,7 +1171,6 @@ static void readConfiguration(W_ColorPanel * panel)
_("File Error"),
_("Could not create ColorPanel configuration directory"),
_("OK"), NULL, NULL);
}
return;
}
@@ -2262,7 +2259,7 @@ static void wheelPositionSelectionOutBounds(W_ColorPanel * panel, int x, int y)
static void wheelUpdateBrightnessGradientFromLocation(W_ColorPanel * panel)
{
CPColor from;
CPColor from = {};
unsigned long ofs;
ofs = panel->coly * panel->wheelMtrx->width + panel->colx;
@@ -2607,7 +2604,7 @@ static void cmykTextFieldCallback(void *observerData, WMNotification * notificat
static void hsbSliderCallback(WMWidget * w, void *data)
{
CPColor cpColor;
CPColor cpColor = {};
int value[3];
char tmp[4];
W_ColorPanel *panel = (W_ColorPanel *) data;
@@ -2643,7 +2640,7 @@ static void hsbSliderCallback(WMWidget * w, void *data)
static void hsbTextFieldCallback(void *observerData, WMNotification * notification)
{
CPColor cpColor;
CPColor cpColor = {};
int value[3];
char tmp[12]; /* We only 4 bytes needed, but compilers cannot know that */
int n;
+3 -3
View File
@@ -3,7 +3,7 @@
#define XDND_COLOR_DATA_TYPE "application/X-color"
char *WMColorWellDidChangeNotification = "WMColorWellDidChangeNotification";
const char *WMColorWellDidChangeNotification = "WMColorWellDidChangeNotification";
typedef struct W_ColorWell {
W_Class widgetClass;
@@ -173,10 +173,10 @@ WMColorWell *WMCreateColorWell(WMWidget * parent)
void WMSetColorWellColor(WMColorWell * cPtr, WMColor * color)
{
if (cPtr->color)
if (cPtr->color && cPtr->color != color) {
WMReleaseColor(cPtr->color);
cPtr->color = WMRetainColor(color);
}
if (cPtr->colorView->flags.realized && cPtr->colorView->flags.mapped)
paintColorWell(cPtr);
+6
View File
@@ -29,6 +29,12 @@
# define _(text) (text)
#endif
#ifdef HAVE_SECURE_GETENV
#define GETENV(x) secure_getenv((x))
#else
#define GETENV(x) getenv((x))
#endif
#endif /* WINGS_CONFIG_H_ */
+4 -4
View File
@@ -343,7 +343,7 @@ void WMFreeFilePanel(WMFilePanel * panel)
}
int
WMRunModalFilePanelForDirectory(WMFilePanel * panel, WMWindow * owner, char *path, const char *name, char **fileTypes)
WMRunModalFilePanelForDirectory(WMFilePanel * panel, WMWindow * owner, const char *path, const char *name, char **fileTypes)
{
WMScreen *scr = WMWidgetScreen(panel->win);
@@ -387,12 +387,12 @@ WMRunModalFilePanelForDirectory(WMFilePanel * panel, WMWindow * owner, char *pat
return (panel->flags.canceled ? False : True);
}
void WMSetFilePanelDirectory(WMFilePanel * panel, char *path)
void WMSetFilePanelDirectory(WMFilePanel * panel, const char *path)
{
WMList *list;
WMListItem *item;
int col;
char *rest;
const char *rest;
rest = WMSetBrowserPath(panel->browser, path);
if (strcmp(path, "/") == 0)
@@ -761,7 +761,7 @@ static void goFloppy(WMWidget *widget, void *p_panel)
static void goHome(WMWidget *widget, void *p_panel)
{
WMFilePanel *panel = p_panel;
char *home;
const char *home;
/* Parameter not used, but tell the compiler that it is ok */
(void) widget;
+3
View File
@@ -253,6 +253,9 @@ WMFrame *WMCreateFrame(WMWidget * parent)
static void destroyFrame(Frame * fPtr)
{
if (fPtr->textColor)
WMReleaseColor(fPtr->textColor);
if (fPtr->caption)
wfree(fPtr->caption);
+29
View File
@@ -213,3 +213,32 @@ int W_LookupString(W_View *view, XKeyPressedEvent *event, char *buffer, int bufl
#endif
return XLookupString(event, buffer, buflen, keysym, (XComposeStatus *) status);
}
/*
* Map a keycode to the corresponding keysym
* To replace the deprecated X11 function XKeycodeToKeysym
*/
KeySym W_KeycodeToKeysym(Display *display, KeyCode keycode, int index)
{
static int min_kc = -1;
static int max_kc;
int num_syms;
KeySym *key_syms;
KeySym ks;
XDisplayKeycodes(display, &min_kc, &max_kc);
if (keycode < min_kc || keycode > max_kc || index < 0) {
return NoSymbol;
}
key_syms = XGetKeyboardMapping(display, keycode, 1, &num_syms);
if (index >= num_syms) {
XFree(key_syms);
return NoSymbol;
}
ks = key_syms[index];
XFree(key_syms);
return ks;
}
+2 -2
View File
@@ -1,8 +1,8 @@
#include "WINGsP.h"
char *WMListDidScrollNotification = "WMListDidScrollNotification";
char *WMListSelectionDidChangeNotification = "WMListSelectionDidChangeNotification";
const char *WMListDidScrollNotification = "WMListDidScrollNotification";
const char *WMListSelectionDidChangeNotification = "WMListSelectionDidChangeNotification";
typedef struct W_List {
W_Class widgetClass;
+3 -3
View File
@@ -25,7 +25,7 @@ static void handleKeyPress(XEvent * event, void *clientData)
XLookupString(&event->xkey, NULL, 0, &ksym, NULL);
if (ksym == XK_Return && panel->defBtn) {
if ((ksym == XK_Return || ksym == XK_KP_Enter) && panel->defBtn) {
WMPerformButtonClick(panel->defBtn);
} else if (ksym == XK_Escape) {
if (panel->altBtn || panel->othBtn) {
@@ -421,7 +421,7 @@ static void handleKeyPress2(XEvent * event, void *clientData)
XLookupString(&event->xkey, NULL, 0, &ksym, NULL);
if (ksym == XK_Return && panel->defBtn) {
if ((ksym == XK_Return || ksym == XK_KP_Enter) && panel->defBtn) {
WMPerformButtonClick(panel->defBtn);
} else if (ksym == XK_Escape) {
if (panel->altBtn) {
@@ -709,7 +709,7 @@ static void handleKeyPress3(XEvent * event, void *clientData)
XLookupString(&event->xkey, NULL, 0, &ksym, NULL);
if (ksym == XK_Return && panel->defBtn) {
if ((ksym == XK_Return || ksym == XK_KP_Enter) && panel->defBtn) {
WMPerformButtonClick(panel->defBtn);
} else if (ksym == XK_Escape) {
if (panel->altBtn) {
+1 -1
View File
@@ -20,7 +20,7 @@
#define AUTOSCROLL_DELAY 40
char *WMScrollerDidScrollNotification = "WMScrollerDidScrollNotification";
const char *WMScrollerDidScrollNotification = "WMScrollerDidScrollNotification";
typedef struct W_Scroller {
W_Class widgetClass;
+25 -11
View File
@@ -166,12 +166,15 @@ typedef struct W_Text {
WMArray *xdndDestinationTypes;
} Text;
/* not used */
#if 0
#define NOTIFY(T,C,N,A) {\
WMNotification *notif = WMCreateNotification(N,T,A);\
if ((T)->delegate && (T)->delegate->C)\
(*(T)->delegate->C)((T)->delegate,notif);\
WMPostNotification(notif);\
WMReleaseNotification(notif);}
#endif
#define TYPETEXT 0
@@ -215,6 +218,11 @@ static char *default_bullet[] = {
" ooo "
};
/* These id are used when sharing the selected text between applications */
static Atom XA_Targets = None;
static Atom XA_Format_Text = None;
static Atom XA_Format_Compound_Text = None;
static void handleEvents(XEvent * event, void *data);
static void layOutDocument(Text * tPtr);
static void updateScrollers(Text * tPtr);
@@ -617,7 +625,7 @@ static void paintText(Text * tPtr)
TextBlock *tb;
WMFont *font;
const char *text;
int len, y, c, s, done = False, dir /* 1 = down */ ;
int len, y, c, s, done = False, dir; /* dir 1 = down */
WMScreen *scr = tPtr->view->screen;
Display *dpy = tPtr->view->screen->display;
Window win = tPtr->view->window;
@@ -2036,17 +2044,13 @@ static void releaseSelection(Text * tPtr)
static WMData *requestHandler(WMView * view, Atom selection, Atom target, void *cdata, Atom * type)
{
Text *tPtr = view->self;
Display *dpy = tPtr->view->screen->display;
Atom _TARGETS;
Atom TEXT = XInternAtom(dpy, "TEXT", False);
Atom COMPOUND_TEXT = XInternAtom(dpy, "COMPOUND_TEXT", False);
WMData *data = NULL;
/* Parameter not used, but tell the compiler that it is ok */
(void) selection;
(void) cdata;
if (target == XA_STRING || target == TEXT || target == COMPOUND_TEXT) {
if (target == XA_STRING || target == XA_Format_Text || target == XA_Format_Compound_Text) {
char *text = WMGetTextSelectedStream(tPtr);
if (text) {
@@ -2059,14 +2063,13 @@ static WMData *requestHandler(WMView * view, Atom selection, Atom target, void *
} else
printf("didn't get it\n");
_TARGETS = XInternAtom(dpy, "TARGETS", False);
if (target == _TARGETS) {
if (target == XA_Targets) {
Atom array[4];
array[0] = _TARGETS;
array[0] = XA_Targets;
array[1] = XA_STRING;
array[2] = TEXT;
array[3] = COMPOUND_TEXT;
array[2] = XA_Format_Text;
array[3] = XA_Format_Compound_Text;
data = WMCreateDataWithBytes(&array, sizeof(array));
WMSetDataFormat(data, 32);
@@ -2974,6 +2977,17 @@ WMText *WMCreateTextForDocumentType(WMWidget * parent, WMAction * parser, WMActi
dpy = tPtr->view->screen->display;
scr = tPtr->view->screen;
if (XA_Targets == None) {
/*
* Because the X protocol guaranties that the value will never change in
* the lifespan of the server, we query the values only the first time a
* widget is created
*/
XA_Targets = XInternAtom(dpy, "TARGETS", False);
XA_Format_Text = XInternAtom(dpy, "TEXT", False);
XA_Format_Compound_Text = XInternAtom(dpy, "COMPOUND_TEXT", False);
}
tPtr->view->self = tPtr;
tPtr->view->attribs.cursor = scr->textCursor;
tPtr->view->attribFlags |= CWOverrideRedirect | CWCursor;
+5 -5
View File
@@ -10,9 +10,9 @@
#define CURSOR_BLINK_ON_DELAY 600
#define CURSOR_BLINK_OFF_DELAY 300
char *WMTextDidChangeNotification = "WMTextDidChangeNotification";
char *WMTextDidBeginEditingNotification = "WMTextDidBeginEditingNotification";
char *WMTextDidEndEditingNotification = "WMTextDidEndEditingNotification";
const char *WMTextDidChangeNotification = "WMTextDidChangeNotification";
const char *WMTextDidBeginEditingNotification = "WMTextDidBeginEditingNotification";
const char *WMTextDidEndEditingNotification = "WMTextDidEndEditingNotification";
typedef struct W_TextField {
W_Class widgetClass;
@@ -661,7 +661,7 @@ static void didResizeTextField(W_ViewDelegate * self, WMView * view)
tPtr->offsetWidth = WMAX((tPtr->view->size.height - WMFontHeight(tPtr->font)) / 2, 1);
tPtr->usableWidth = tPtr->view->size.width - 2 * tPtr->offsetWidth /*+ 2 */ ;
tPtr->usableWidth = tPtr->view->size.width - 2 * tPtr->offsetWidth;
}
static char *makeHiddenString(int length)
@@ -942,7 +942,7 @@ static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event)
{
char buffer[64];
KeySym ksym;
char *textEvent = NULL;
const char *textEvent = NULL;
void *data = NULL;
int count, refresh = 0;
int control_pressed = 0;
+1 -1
View File
@@ -5,7 +5,7 @@
#include "WINGsP.h"
void WHandleEvents()
void WHandleEvents(void)
{
/* Check any expired timers */
W_CheckTimerHandlers();
+3 -3
View File
@@ -5,9 +5,9 @@
/* the notifications about views */
char *WMViewSizeDidChangeNotification = "WMViewSizeDidChangeNotification";
char *WMViewFocusDidChangeNotification = "WMViewFocusDidChangeNotification";
char *WMViewRealizedNotification = "WMViewRealizedNotification";
const char *WMViewSizeDidChangeNotification = "WMViewSizeDidChangeNotification";
const char *WMViewFocusDidChangeNotification = "WMViewFocusDidChangeNotification";
const char *WMViewRealizedNotification = "WMViewRealizedNotification";
#define EVENT_MASK \
KeyPressMask|KeyReleaseMask|ButtonPressMask|ButtonReleaseMask| \
+4
View File
@@ -395,7 +395,11 @@ static void setWindowMakerHints(WMWindow * win)
memset(&attribs, 0, sizeof(GNUstepWMAttributes));
attribs.flags = GSWindowStyleAttr | GSWindowLevelAttr | GSExtraFlagsAttr;
if (win->minSize.width == win->maxSize.width && win->minSize.height == win->maxSize.height)
win->flags.style &= ~WMResizableWindowMask;
attribs.window_style = win->flags.style;
attribs.window_level = win->level;
if (win->flags.documentEdited)
attribs.extra_flags = GSDocumentEditedFlag;
+18 -6
View File
@@ -1076,6 +1076,8 @@ static void deleteTexture(WMWidget * w, void *data)
(void) w;
section = WMGetPopUpButtonSelectedItem(panel->secP);
if (section < 0)
return;
row = WMGetListSelectedItemRow(panel->texLs);
item = WMGetListItem(panel->texLs, row);
titem = (TextureListItem *) item->clientData;
@@ -1134,6 +1136,8 @@ static void changePage(WMWidget * w, void *data)
if (w) {
section = WMGetPopUpButtonSelectedItem(panel->secP);
if (section < 0)
return;
WMSelectListItem(panel->texLs, panel->textureIndex[section]);
@@ -1233,6 +1237,8 @@ static void textureDoubleClick(WMWidget * w, void *data)
/* unselect old texture */
section = WMGetPopUpButtonSelectedItem(panel->secP);
if (section < 0)
return;
item = WMGetListItem(panel->texLs, panel->textureIndex[section]);
titem = (TextureListItem *) item->clientData;
@@ -1261,7 +1267,7 @@ static void paintListItem(WMList * lPtr, int index, Drawable d, char *text, int
{
_Panel *panel = (_Panel *) WMGetHangedData(lPtr);
WMScreen *scr = WMWidgetScreen(lPtr);
int width, height, x, y;
int width, height, x, y, tmp;
Display *dpy = WMScreenDisplay(scr);
WMColor *back = (state & WLDSSelected) ? WMWhiteColor(scr) : WMGrayColor(scr);
WMListItem *item;
@@ -1290,7 +1296,8 @@ static void paintListItem(WMList * lPtr, int index, Drawable d, char *text, int
XCopyArea(dpy, titem->preview, d, WMColorGC(black), 0, 0,
TEXPREV_WIDTH, TEXPREV_HEIGHT, x + 5, y + 5);
if ((1 << WMGetPopUpButtonSelectedItem(panel->secP)) & titem->selectedFor)
tmp = WMGetPopUpButtonSelectedItem(panel->secP);
if ((tmp >= 0) && ((1 << tmp) & titem->selectedFor))
WMDrawPixmap(panel->onLed, d, x + TEXPREV_WIDTH + 10, y + 6);
else if (titem->selectedFor)
WMDrawPixmap(panel->offLed, d, x + TEXPREV_WIDTH + 10, y + 6);
@@ -1425,6 +1432,10 @@ static void changeColorPage(WMWidget * w, void *data)
WMScreen *scr = WMWidgetScreen(panel->box);
RContext *rc = WMScreenRContext(scr);
section = WMGetPopUpButtonSelectedItem(panel->colP);
if (section < 0)
return;
if (panel->preview) {
GC gc;
@@ -1436,7 +1447,6 @@ static void changeColorPage(WMWidget * w, void *data)
colorOptions[panel->oldcsection].hand.y);
}
if (w) {
section = WMGetPopUpButtonSelectedItem(panel->colP);
panel->oldcsection = section;
if (panel->preview)
@@ -1737,6 +1747,8 @@ static void colorWellObserver(void *self, WMNotification * n)
(void) n;
p = WMGetPopUpButtonSelectedItem(panel->colP);
if (p < 0)
return;
WMReleaseColor(panel->colors[p]);
@@ -1828,10 +1840,10 @@ static void createPanel(Panel * p)
char *tmp;
Bool ok = True;
panel->fprefix = wstrconcat(wusergnusteppath(), "/Library/WindowMaker");
panel->fprefix = wstrconcat(wuserdatapath(), "/" PACKAGE_TARNAME);
if (access(panel->fprefix, F_OK) != 0) {
if (mkdir(panel->fprefix, 0755) < 0) {
if (-1 == mkdir(panel->fprefix, 0755) && errno != EEXIST) {
werror("%s", panel->fprefix);
ok = False;
}
@@ -1841,7 +1853,7 @@ static void createPanel(Panel * p)
wfree(panel->fprefix);
panel->fprefix = tmp;
if (access(panel->fprefix, F_OK) != 0) {
if (mkdir(panel->fprefix, 0755) < 0) {
if (-1 == mkdir(panel->fprefix, 0755) && errno != EEXIST) {
werror("%s", panel->fprefix);
}
}
+18 -2
View File
@@ -25,7 +25,7 @@
/* This structure containts the list of all the check-buttons to display in the
* expert tab of the window with the corresponding information for effect
*/
static const struct {
static struct expert_option {
const char *label; /* Text displayed to user */
int def_state; /* True/False: the default value, if not defined in current config */
@@ -119,7 +119,9 @@ static const struct {
/* default: */ False, OPTION_WMAKER, "DbClickFullScreen" },
{ N_("Close rootmenu when mouse (left or right) is clicked outside focus."),
/* default: */ False, OPTION_WMAKER, "CloseRootMenuByLeftOrRightMouseClick" }
/* default: */ False, OPTION_WMAKER, "CloseRootMenuByLeftOrRightMouseClick" },
{ N_("Keep dock on primary head."),
/* default: */ False, OPTION_WMAKER, "KeepDockOnPrimaryHead"},
};
@@ -170,6 +172,19 @@ static void upButtonCallback(WMWidget *self, void *data)
changeIntTextfield(data, 1);
}
static int cmpExpertOptions(const void *v1, const void *v2)
{
int rc;
const struct expert_option *opt1 = (struct expert_option *)v1;
const struct expert_option *opt2 = (struct expert_option *)v2;
if ((rc = strcmp(opt1->label, opt2->label)) < 0)
return -1;
else if (rc > 0)
return 1;
return 0;
}
static void createPanel(Panel *p)
{
_Panel *panel = (_Panel *) p;
@@ -193,6 +208,7 @@ static void createPanel(Panel *p)
WMSetFrameRelief(f, WRFlat);
udb = WMGetStandardUserDefaults();
qsort(expert_options, wlengthof(expert_options), sizeof(expert_options[0]), cmpExpertOptions);
for (i = 0; i < wlengthof(expert_options); i++) {
if (expert_options[i].class != OPTION_WMAKER_INT) {
panel->swi[i] = WMCreateSwitchButton(f);
+66 -6
View File
@@ -65,7 +65,7 @@ typedef struct _Panel {
* First parameter is the internal keyword known by WMaker
* Second is the text displayed to the user
*/
static const struct {
static struct keyOption {
const char *key;
const char *title;
} keyOptions[] = {
@@ -156,8 +156,12 @@ static const struct {
{ "WindowRelaunchKey", N_("Launch new instance of application") },
{ "ScreenSwitchKey", N_("Switch to Next Screen/Monitor") },
{ "RunKey", N_("Run application") },
{ "ExitKey", N_("Exit Window Maker") },
{ "DockRaiseLowerKey", N_("Raise/Lower Dock") },
{ "ClipRaiseLowerKey", N_("Raise/Lower Clip") }
{ "ClipRaiseLowerKey", N_("Raise/Lower Clip") },
{ "ScreenCaptureKey", N_("Capture the entire screen") },
{ "WindowCaptureKey", N_("Capture a window") },
{ "PartialCaptureKey", N_("Capture a portion of the screen") }
#ifdef XKB_MODELOCK
,{ "ToggleKbdModeKey", N_("Toggle keyboard language") }
#endif /* XKB_MODELOCK */
@@ -316,11 +320,8 @@ char *capture_shortcut(Display *dpy, Bool *capturing, Bool convert_case)
if (ev.type == KeyPress && ev.xkey.keycode != 0) {
numlock_mask = NumLockMask(dpy);
if (xext_xkb_supported)
/* conditional mask check to get numeric keypad keys */
ksym = XkbKeycodeToKeysym(dpy, ev.xkey.keycode, 0, ev.xkey.state & numlock_mask?1:0);
else
ksym = XKeycodeToKeysym(dpy, ev.xkey.keycode, 0);
ksym = W_KeycodeToKeysym(dpy, ev.xkey.keycode, ev.xkey.state & numlock_mask?1:0);
if (!IsModifierKey(ksym)) {
if (convert_case) {
@@ -368,6 +369,36 @@ char *capture_shortcut(Display *dpy, Bool *capturing, Bool convert_case)
return wstrdup(buffer);
}
/*
* check if the keystr entered is already set to another action
* if found it returns the position in the keyOptions
*/
static int isKeySet(_Panel *panel, char *keystr)
{
int i;
char *str;
for (i = 0; i < panel->actionCount; i++) {
str = NULL;
if (panel->shortcuts[i]) {
str = wtrimspace(panel->shortcuts[i]);
if (strlen(str) == 0) {
wfree(str);
str = NULL;
}
}
if (str) {
if (strcmp(keystr, str) == 0) {
wfree(str);
return i;
}
wfree(str);
}
}
return -1;
}
static void captureClick(WMWidget * w, void *data)
{
_Panel *panel = (_Panel *) data;
@@ -382,8 +413,21 @@ static void captureClick(WMWidget * w, void *data)
XGrabKeyboard(dpy, WMWidgetXID(panel->parent), True, GrabModeAsync, GrabModeAsync, CurrentTime);
shortcut = capture_shortcut(dpy, &panel->capturing, 1);
if (shortcut) {
int key_idx = -1;
int row = WMGetListSelectedItemRow(panel->actLs);
key_idx = isKeySet(panel, shortcut);
if (key_idx >= 0 && (key_idx != row)) {
char *msg;
msg = wstrconcat(_("Key shortcut already in use by the "), _(keyOptions[key_idx].title));
WMRunAlertPanel(WMWidgetScreen(w), GetWindow(),
_("Error"),
msg,
_("OK"), NULL, NULL);
wfree(msg);
wfree(shortcut);
} else {
WMSetTextFieldText(panel->shoT, shortcut);
if (row >= 0) {
if (panel->shortcuts[row])
@@ -396,6 +440,7 @@ static void captureClick(WMWidget * w, void *data)
}
}
}
}
panel->capturing = 0;
WMSetButtonText(w, _("Capture"));
WMSetLabelText(panel->instructionsL, _("Click on Capture to interactively define the shortcut key."));
@@ -499,6 +544,20 @@ static void paintItem(WMList * lPtr, int index, Drawable d, char *text, int stat
WMDrawString(scr, d, panel->black, panel->font, x + 20, y, text, strlen(text));
}
static int cmpKeyOptions(const void *v1, const void *v2)
{
int rc;
const struct keyOption *opt1 = (struct keyOption *)v1;
const struct keyOption *opt2 = (struct keyOption *)v2;
if ((rc = strcmp(opt1->title, opt2->title)) < 0)
return -1;
else if (rc > 0)
return 1;
return 0;
}
static void createPanel(Panel * p)
{
_Panel *panel = (_Panel *) p;
@@ -538,6 +597,7 @@ static void createPanel(Panel * p)
WMSetListUserDrawProc(panel->actLs, paintItem);
WMHangData(panel->actLs, panel);
qsort(keyOptions, wlengthof(keyOptions), sizeof(keyOptions[0]), cmpKeyOptions);
for (i = 0; i < wlengthof(keyOptions); i++) {
WMAddListItem(panel->actLs, _(keyOptions[i].title));
}
+12 -1
View File
@@ -10,9 +10,20 @@ wpdatadir = @wprefs_datadir@
wpdata_DATA = WPrefs.tiff WPrefs.xpm
applicationsdir = @datadir@/applications
applications_DATA = WPrefs.desktop
WPrefs.desktop: WPrefs.desktop.in
$(AM_V_GEN)sed -e "s:#wprefs_bindir#:${wprefs_bindir}:" \
-e "s:#wprefs_datadir#:${wprefs_datadir}:" $< > $@
EXTRA_DIST = $(wpdata_DATA) \
KeyboardSettings.c \
Themes.c
Themes.c \
WPrefs.desktop.in
DISTCLEANFILES = WPrefs.desktop
WPrefs_SOURCES = \
main.c \
+15 -11
View File
@@ -291,6 +291,8 @@ static void changedItemPad(WMWidget * w, void *data)
_Panel *panel = (_Panel *) data;
int padn = WMGetPopUpButtonSelectedItem(w);
if (padn < 0)
return;
WMUnmapWidget(panel->itemPad[panel->currentPad]);
WMMapWidget(panel->itemPad[padn]);
@@ -507,7 +509,7 @@ static void createPanel(_Panel * p)
WMSetScrollViewContentView(sview, WMWidgetView(pad));
data = putNewItem(panel, pad, ExternalInfo, _("Debian Menu"));
data->param.pipe.command = "/etc/GNUstep/Defaults/menu.hook";
data->param.pipe.command = "/etc/" GSUSER_SUBDIR "/" DEFAULTS_SUBDIR "/menu.hook";
data = putNewItem(panel, pad, PipeInfo, _("RedHat Menu"));
data->param.pipe.command = "wmconfig --output wmaker";
@@ -518,19 +520,25 @@ static void createPanel(_Panel * p)
data = putNewItem(panel, pad, DirectoryInfo, _("Themes"));
data->param.directory.command = "setstyle";
data->param.directory.directory =
"/usr/share/WindowMaker/Themes /usr/local/share/WindowMaker/Themes $HOME/GNUstep/Library/WindowMaker/Themes";
"/usr/share/" PACKAGE_TARNAME "/Themes"
" /usr/local/share/" PACKAGE_TARNAME "/Themes"
" $HOME/" GSUSER_SUBDIR "/" USERDATA_SUBDIR "/" PACKAGE_TARNAME "/Themes";
data->param.directory.stripExt = 1;
data = putNewItem(panel, pad, DirectoryInfo, _("Bg Images (scale)"));
data->param.directory.command = "wmsetbg -u -s";
data->param.directory.directory =
"/opt/kde2/share/wallpapers /usr/share/WindowMaker/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds";
"/opt/kde2/share/wallpapers"
" /usr/share/" PACKAGE_TARNAME "/Backgrounds"
" $HOME/" GSUSER_SUBDIR "/" USERDATA_SUBDIR "/" PACKAGE_TARNAME "/Backgrounds";
data->param.directory.stripExt = 1;
data = putNewItem(panel, pad, DirectoryInfo, _("Bg Images (tile)"));
data->param.directory.command = "wmsetbg -u -t";
data->param.directory.directory =
"/opt/kde2/share/wallpapers /usr/share/WindowMaker/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds";
"/opt/kde2/share/wallpapers"
" /usr/share/" PACKAGE_TARNAME "/Backgrounds"
" $HOME/" GSUSER_SUBDIR "/" USERDATA_SUBDIR "/" PACKAGE_TARNAME "/Backgrounds";
data->param.directory.stripExt = 1;
smenu = putNewSubmenu(pad, _("Assorted XTerms"));
@@ -619,7 +627,8 @@ static void createPanel(_Panel * p)
WMSetLabelText(label, _("Enter the path for a file containing a menu\n"
"or a list of directories with the programs you\n"
"want to have listed in the menu. Ex:\n"
"~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin"));
"~/" GSUSER_SUBDIR "/" USERDATA_SUBDIR "/" PACKAGE_TARNAME "/menu\n"
"or\n" "/usr/bin ~/xbin"));
WMMapSubwidgets(panel->pathF);
@@ -1493,16 +1502,11 @@ static WMPropList *getDefaultMenu(_Panel * panel)
static void showData(_Panel * panel)
{
const char *gspath;
char *menuPath, *labelText;
char buf[1024];
WMPropList *pmenu;
gspath = wusergnusteppath();
menuPath = wmalloc(strlen(gspath) + 32);
strcpy(menuPath, gspath);
strcat(menuPath, "/Defaults/WMRootMenu");
menuPath = wdefaultspathfordomain("WMRootMenu");
pmenu = WMReadPropListFromFile(menuPath);
+5 -6
View File
@@ -381,10 +381,7 @@ static void fillModifierPopUp(WMPopUpButton * pop)
if (mapping->modifiermap[idx] != 0) {
int l;
for (l = 0; l < 4; l++) {
if (xext_xkb_supported)
ksym = XkbKeycodeToKeysym(dpy, mapping->modifiermap[idx], 0, l);
else
ksym = XKeycodeToKeysym(dpy, mapping->modifiermap[idx], 0);
ksym = W_KeycodeToKeysym(dpy, mapping->modifiermap[idx], l);
if (ksym != NoSymbol)
break;
}
@@ -650,7 +647,7 @@ static void storeCommandInScript(const char *cmd, const char *line)
umask(permissions);
permissions = (S_IRWXU | S_IRWXG | S_IRWXO) & (~permissions);
path = wstrconcat(wusergnusteppath(), "/Library/WindowMaker/autostart");
path = wstrconcat(wuserdatapath(), "/" PACKAGE_TARNAME "/autostart");
f = fopen(path, "rb");
if (!f) {
@@ -668,7 +665,7 @@ static void storeCommandInScript(const char *cmd, const char *line)
char *tmppath;
FILE *fo;
tmppath = wstrconcat(wusergnusteppath(), "/Library/WindowMaker/autostart.tmp");
tmppath = wstrconcat(wuserdatapath(), "/" PACKAGE_TARNAME "/autostart.tmp");
fo = fopen(tmppath, "wb");
if (!fo) {
werror(_("could not create temporary file %s"), tmppath);
@@ -751,6 +748,8 @@ static void storeData(_Panel * panel)
int action;
action = WMGetPopUpButtonSelectedItem(panel->mouse_action[i].popup);
if (action < 0)
continue;
if (button_list[i].type == T_BUTTON)
db_value = button_actions[action].db_value;
else
+6 -6
View File
@@ -77,11 +77,11 @@ static void showData(_Panel * panel)
if (array)
wwarning(_("bad value in option IconPath. Using default path list"));
addPathToList(panel->icoL, -1, "~/pixmaps");
addPathToList(panel->icoL, -1, "~/GNUstep/Library/Icons");
addPathToList(panel->icoL, -1, "~/" GSUSER_SUBDIR "/" USERDATA_SUBDIR "/Icons");
addPathToList(panel->icoL, -1, "/usr/include/X11/pixmaps");
addPathToList(panel->icoL, -1, "/usr/local/share/WindowMaker/Icons");
addPathToList(panel->icoL, -1, "/usr/local/share/WindowMaker/Pixmaps");
addPathToList(panel->icoL, -1, "/usr/share/WindowMaker/Icons");
addPathToList(panel->icoL, -1, "/usr/local/share/" PACKAGE_TARNAME "/Icons");
addPathToList(panel->icoL, -1, "/usr/local/share/" PACKAGE_TARNAME "/Pixmaps");
addPathToList(panel->icoL, -1, "/usr/share/" PACKAGE_TARNAME "/Icons");
} else {
for (i = 0; i < WMGetPropListItemCount(array); i++) {
val = WMGetFromPLArray(array, i);
@@ -94,8 +94,8 @@ static void showData(_Panel * panel)
if (array)
wwarning(_("bad value in option PixmapPath. Using default path list"));
addPathToList(panel->pixL, -1, "~/pixmaps");
addPathToList(panel->pixL, -1, "~/GNUstep/Library/WindowMaker/Pixmaps");
addPathToList(panel->pixL, -1, "/usr/local/share/WindowMaker/Pixmaps");
addPathToList(panel->pixL, -1, "~/" GSUSER_SUBDIR "/" USERDATA_SUBDIR "/" PACKAGE_TARNAME "/Pixmaps");
addPathToList(panel->pixL, -1, "/usr/local/share/" PACKAGE_TARNAME "/Pixmaps");
} else {
for (i = 0; i < WMGetPropListItemCount(array); i++) {
val = WMGetFromPLArray(array, i);
+4
View File
@@ -196,9 +196,13 @@ static void storeData(_Panel * panel)
int i;
i = WMGetPopUpButtonSelectedItem(panel->sizeP);
if (i < 0)
return;
SetStringForKey(resize_display[i].db_value, "ResizeDisplay");
i = WMGetPopUpButtonSelectedItem(panel->posiP);
if (i < 0)
return;
SetStringForKey(move_display[i].db_value, "MoveDisplay");
lr = WMGetButtonSelected(panel->lrB);
+1 -1
View File
@@ -689,7 +689,7 @@ static void changeTypeCallback(WMWidget *w, void *data)
int i;
newType = WMGetPopUpButtonSelectedItem(w);
if (newType == panel->currentType)
if (newType < 0 || newType == panel->currentType)
return;
if (panel->currentType >= 0) {
+9
View File
@@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.5
Type=Application
Name=WPrefs
Comment=Window Maker Preferences
TryExec=#wprefs_bindir#/WPrefs
Exec=WPrefs
Icon=#wprefs_datadir#/WPrefs.xpm
Categories=Settings;DesktopSettings;
+1 -1
View File
@@ -33,6 +33,7 @@
#include <wraster.h>
#include <WINGs/WINGs.h>
#include <WINGs/WINGsP.h>
/* Needed for HAVE_LIBINTL_H and EXTENDED_WINDOWSHORTCUT */
#include "../src/wconfig.h"
@@ -54,7 +55,6 @@
/****/
extern char *NOptionValueChanged;
extern Bool xext_xkb_supported;
typedef struct _Panel Panel;
+5 -2
View File
@@ -207,12 +207,15 @@ static void createPanel(Panel * p)
static void storeData(_Panel * panel)
{
int tmp = WMGetPopUpButtonSelectedItem(panel->posP);
if (tmp < 0)
return;
SetBoolForKey(!WMGetButtonSelected(panel->linkB), "DontLinkWorkspaces");
SetBoolForKey(WMGetButtonSelected(panel->cyclB), "CycleWorkspaces");
SetBoolForKey(WMGetButtonSelected(panel->newB), "AdvanceToNewWorkspace");
SetStringForKey(WSNamePositions[WMGetPopUpButtonSelectedItem(panel->posP)],
"WorkspaceNameDisplayPosition");
SetStringForKey(WSNamePositions[tmp], "WorkspaceNameDisplayPosition");
}
Panel *InitWorkspace(WMWidget *parent)
+1 -1
View File
@@ -1150,7 +1150,7 @@ static void dragItem(WEditMenu * menu, WEditMenuItem * item, Bool copy)
static XColor back = { 0, 0xffff, 0xffff, 0xffff, DoRed | DoGreen | DoBlue, 0 };
Display *dpy = W_VIEW_DISPLAY(menu->view);
WMScreen *scr = W_VIEW_SCREEN(menu->view);
int x, y;
int x = 0, y = 0;
int dx, dy;
Bool done = False;
Window blaw;
-4
View File
@@ -35,8 +35,6 @@
#endif
char *NOptionValueChanged = "NOptionValueChanged";
Bool xext_xkb_supported = False;
#define MAX_DEATHS 64
@@ -157,8 +155,6 @@ int main(int argc, char **argv)
exit(0);
}
xext_xkb_supported = XkbQueryExtension(dpy, NULL, NULL, NULL, NULL, NULL);
WMPLSetCaseSensitive(False);
Initialize(scr);
+1 -4
View File
@@ -171,10 +171,7 @@ static void x_reset_modifier_mapping(Display * display)
KeySym sym;
if (code) {
if (xext_xkb_supported)
sym = XkbKeycodeToKeysym(display, code, 0, column);
else
sym = XKeycodeToKeysym(display, code, column);
sym = W_KeycodeToKeysym(display, code, column);
} else {
sym = NoSymbol;
}
+16 -16
View File
@@ -2,9 +2,9 @@
static char *magick[] = {
/* columns rows colors chars-per-pixel */
"50 40 95 2",
" c Gray0",
" c #000000",
". c #010101",
"X c Gray2",
"X c #050505",
"o c #040406",
"O c #070707",
"+ c #0a0a0d",
@@ -20,14 +20,14 @@ static char *magick[] = {
": c #4e4e4e",
"> c #505055",
", c #585858",
"< c Gray37",
"< c #5e5e5e",
"1 c #494d62",
"2 c #545066",
"3 c #57556f",
"4 c #5d627c",
"5 c #604e42",
"6 c Gray39",
"7 c Gray41",
"6 c #636363",
"7 c #696969",
"8 c #646475",
"9 c #7e6a63",
"0 c #75746d",
@@ -67,36 +67,36 @@ static char *magick[] = {
"D c #989799",
"F c #9b9b9b",
"G c #999e98",
"H c Gray62",
"H c #9e9e9e",
"J c #9e9f9f",
"K c #8d8cba",
"L c #9995a0",
"P c #a2a2a3",
"I c #a7a7a8",
"U c Gray66",
"U c #a8a8a8",
"Y c #acacac",
"T c Gray68",
"R c Gray69",
"T c #adadad",
"R c #b0b0b0",
"E c #b2b2b2",
"W c #b4b4b4",
"Q c Gray71",
"Q c #b5b5b5",
"! c #b9b9b9",
"~ c Gray73",
"~ c #bababa",
"^ c #bbbbbb",
"/ c #a7a7c5",
"( c #acadcf",
") c #c0c0c0",
"_ c #c3c3c3",
"` c #c8c8c8",
"' c Gray79",
"] c Gray80",
"' c #c9c9c9",
"] c #cccccc",
"[ c #dfdfdf",
"{ c #e2e2e2",
"} c Gray91",
"} c #e8e8e8",
"| c #e9e9e9",
" . c Gray95",
" . c #f2f2f2",
".. c #fbfbfb",
"X. c Gray100",
"X. c #ffffff",
/* pixels */
"$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ } ",
"$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } } } } } } } } ",
+3 -3
View File
@@ -1,6 +1,6 @@
defsdatadir = $(pkgdatadir)/Backgrounds
bgdatadir = $(pkgdatadir)/Backgrounds
defsdata_DATA = BlueImage.jpeg
bgdata_DATA = BlueImage.jpeg
EXTRA_DIST = $(defsdata_DATA)
EXTRA_DIST = $(bgdata_DATA)
+1 -1
View File
@@ -1,4 +1,4 @@
defsdata_DATA = WMRootMenu WMWindowAttributes WindowMaker WMState WMGLOBAL
pkgconf_DATA = WMRootMenu WMWindowAttributes WindowMaker WMState WMGLOBAL
wpexecbindir = @wprefs_bindir@
+5
View File
@@ -106,6 +106,7 @@
SwitchPanelOnlyOpen = NO;
MiniPreviewSize = 128;
IgnoreGtkHints = NO;
KeepDockOnPrimaryHead = NO;
MenuStyle = normal;
WidgetColor = (solid, gray);
WorkspaceSpecificBack = ();
@@ -231,6 +232,10 @@
WindowRelaunchKey = None;
ScreenSwitchKey = None;
RunKey = None;
ExitKey = None;
ScreenCaptureKey = Print;
WindowCaptureKey = None;
PartialCaptureKey = None;
NormalCursor = (builtin, left_ptr);
ArrowCursor = (builtin, top_left_arrow);
MoveCursor = (builtin, fleur);
+2 -2
View File
@@ -1,7 +1,7 @@
defsdatadir = $(pkgdatadir)/IconSets
iconsetdatadir = $(pkgdatadir)/IconSets
defsdata_DATA = Default.iconset
iconsetdata_DATA = Default.iconset
EXTRA_DIST =
+3 -3
View File
@@ -1,8 +1,8 @@
defsdatadir = $(pkgdatadir)/Icons
icondatadir = $(pkgdatadir)/Icons
defsdata_DATA = \
icondata_DATA = \
BitchX.tiff\
BitchX.xpm\
clip.tiff\
@@ -74,5 +74,5 @@ defsdata_DATA = \
xv.xpm
EXTRA_DIST = $(defsdata_DATA)
EXTRA_DIST = $(icondata_DATA)
+4 -1
View File
@@ -74,7 +74,10 @@ dist_prefsdata_DATA =\
nodist_prefsdata_DATA = $(GENERATED_MENUS)
EXTRA_DIST = $(addsuffix .in, $(GENERATED_MENUS))
xsessionsdir = @datadir@/xsessions
xsessions_DATA = wmaker.desktop
EXTRA_DIST = $(addsuffix .in, $(GENERATED_MENUS)) wmaker.desktop
CLEANFILES = $(GENERATED_MENUS)
+3 -3
View File
@@ -1,10 +1,10 @@
defsdatadir = $(pkgdatadir)/Pixmaps
pixmapdatadir = $(pkgdatadir)/Pixmaps
defsdata_DATA = tile.tiff \
pixmapdata_DATA = tile.tiff \
tile.xpm \
swtile.png \
swback.png \
swback2.png
EXTRA_DIST = $(defsdata_DATA)
EXTRA_DIST = $(pixmapdata_DATA)
+3 -3
View File
@@ -6,9 +6,9 @@ static char *magick[] = {
". c #ededee",
"X c #e7e7e7",
"o c #e2e2e2",
"O c gray87",
"+ c gray85",
"@ c gray76",
"O c #dedede",
"+ c #d9d9d9",
"@ c #c2c2c2",
"# c #010101",
"$ c #4d505a",
"% c #e0e0e6",
+3 -3
View File
@@ -1,7 +1,7 @@
prefsdatadir = $(pkgdatadir)/Styles
styledatadir = $(pkgdatadir)/Styles
prefsdata_DATA =\
styledata_DATA =\
Adwaita.style\
Autumn.style\
Black.style\
@@ -39,6 +39,6 @@ prefsdata_DATA =\
Traditional.style\
VioletBlue.style
EXTRA_DIST = $(prefsdata_DATA)
EXTRA_DIST = $(styledata_DATA)
+3 -3
View File
@@ -1,6 +1,6 @@
defsdatadir = $(pkgdatadir)/Themes
themesdatadir = $(pkgdatadir)/Themes
defsdata_DATA = Default.style OpenStep.style Pastel.style SteelBlueSilk.style Blau.style
themesdata_DATA = Default.style OpenStep.style Pastel.style SteelBlueSilk.style Blau.style
EXTRA_DIST = $(defsdata_DATA)
EXTRA_DIST = $(themesdata_DATA)
+7
View File
@@ -0,0 +1,7 @@
[Desktop Entry]
Name=Window Maker
Comment=This session logs you into Window Maker
Exec=wmaker
TryExec=wmaker
DesktopNames=WindowMaker
X-GDM-SessionRegisters=true
+99 -19
View File
@@ -71,16 +71,16 @@ dnl 6. If any interfaces have been removed or changed since the last
dnl public release, then set age to 0.
dnl
dnl libwraster
WRASTER_CURRENT=6
WRASTER_CURRENT=7
WRASTER_REVISION=0
WRASTER_AGE=0
WRASTER_AGE=1
WRASTER_VERSION=$WRASTER_CURRENT:$WRASTER_REVISION:$WRASTER_AGE
AC_SUBST(WRASTER_VERSION)
dnl
dnl libWINGs
WINGS_CURRENT=4
WINGS_CURRENT=5
WINGS_REVISION=0
WINGS_AGE=1
WINGS_AGE=2
WINGS_VERSION=$WINGS_CURRENT:$WINGS_REVISION:$WINGS_AGE
AC_SUBST(WINGS_VERSION)
dnl
@@ -103,6 +103,7 @@ LT_INIT
dnl Debugging Options
dnl =================
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([debug],
[AS_HELP_STRING([--enable-debug], [enable debugging options, @<:@default=no@:>@])],
[AS_CASE(["$enableval"],
@@ -110,6 +111,7 @@ AC_ARG_ENABLE([debug],
[no], [debug=no],
[AC_MSG_ERROR([bad value $enableval for --enable-debug])] )],
[debug=no])
m4_divert_pop([INIT_PREPARE])dnl
AS_IF([test "x$debug" = "xyes"],
[dnl This flag should have already been detected and added, but if user
dnl provided an explicit CFLAGS it may not be the case
@@ -234,6 +236,7 @@ AS_IF([test "x$debug" = "xyes"],
dnl To upload documentation to the Website
dnl ======================================
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_WITH([web-repo],
[AS_HELP_STRING([--with-web-repo=PATH], [path to your git repository for the Web home page (maintainer stuff)])],
[AS_CASE([$withval],
@@ -241,6 +244,7 @@ AC_ARG_WITH([web-repo],
[no], [WEB_REPO_ROOT=""],
[WEB_REPO_ROOT=$withval])],
[WEB_REPO_ROOT=""])
m4_divert_pop([INIT_PREPARE])dnl
WM_CHECK_WEBREPODIR
@@ -266,8 +270,8 @@ supported_gfx=""
dnl Platform-specific Makefile setup
dnl ================================
AS_CASE(["$host"],
[*-*-linux*|*-*-cygwin*|*-gnu*], [WM_OSDEP="linux" ; CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600"],
[*-*-freebsd*|*-k*bsd-gnu*], [WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600 -DFREEBSD"],
[*-*-linux*|*-*-cygwin*|*-gnu*], [WM_OSDEP="linux" ; CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=700"],
[*-*-freebsd*|*-k*bsd-gnu*], [WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=700 -DFREEBSD"],
[*-*-netbsd*], [WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -DNETBSD"],
[*-*-openbsd*], [WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -DOPENBSD"],
[*-*-dragonfly*], [WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -DDRAGONFLYBSD"],
@@ -308,24 +312,30 @@ AC_ARG_WITH(incs-from, AS_HELP_STRING([--with-incs-from], [pass compiler flags t
dnl Features Configuration
dnl ======================
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([animations],
[AS_HELP_STRING([--disable-animations], [disable permanently animations @<:@default=enabled@:>@])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-animations])])],
[enable_animations="yes"])
m4_divert_pop([INIT_PREPARE])dnl
AS_IF([test "x$enable_animations" = "xno"],
[unsupported="$unsupported Animations"],
[AC_DEFINE([USE_ANIMATIONS], [1], [Defined when user did not request to disable animations])
supported_core="$supported_core Animations"])
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([mwm-hints],
[AS_HELP_STRING([--disable-mwm-hints], [disable support for Motif WM hints @<:@default=enabled@:>@])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-mwm-hints])])],
[enable_mwm_hints="yes"])
m4_divert_pop([INIT_PREPARE])dnl
AS_IF([test "x$enable_mwm_hints" = "xno"],
[unsupported="$unsupported MWMHints"],
[AC_DEFINE([USE_MWM_HINTS], [1], [Defined when used did not request to disable Motif WM hints])
@@ -335,6 +345,7 @@ AM_CONDITIONAL([USE_MWM_HINTS], [test "x$enable_mwm_hints" != "xno"])
dnl Boehm GC
dnl ========
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([boehm-gc],
[AS_HELP_STRING([--enable-boehm-gc], [use Boehm GC instead of the default libc malloc() [default=no]])],
[AS_CASE(["$enableval"],
@@ -342,6 +353,8 @@ AC_ARG_ENABLE([boehm-gc],
[no], [with_boehm_gc=no],
[AC_MSG_ERROR([bad value $enableval for --enable-boehm-gc])] )],
[with_boehm_gc=no])
m4_divert_pop([INIT_PREPARE])dnl
AS_IF([test "x$with_boehm_gc" = "xyes"],
AC_SEARCH_LIBS([GC_malloc], [gc],
[AC_DEFINE(USE_BOEHM_GC, 1, [Define if Boehm GC is to be used])],
@@ -350,10 +363,12 @@ AS_IF([test "x$with_boehm_gc" = "xyes"],
dnl LCOV
dnl ====
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([lcov],
[AS_HELP_STRING([--enable-lcov[=output-directory]], [enable coverage data generation using LCOV (GCC only) [default=no]])],
[],
[enable_lcov=no])
m4_divert_pop([INIT_PREPARE])dnl
AS_IF([test "x$enable_lcov" != "xno"],
[AX_CFLAGS_GCC_OPTION(-fprofile-arcs -ftest-coverage)
@@ -372,7 +387,7 @@ AC_FUNC_MEMCMP
AC_FUNC_VPRINTF
WM_FUNC_SECURE_GETENV
AC_CHECK_FUNCS(gethostname select poll strcasecmp strncasecmp \
setsid mallinfo mkstemp sysconf)
setsid mallinfo2 mkstemp sysconf)
AC_SEARCH_LIBS([strerror], [cposix])
dnl nanosleep is generally available in standard libc, although not always the
@@ -386,13 +401,15 @@ WM_FUNC_OPEN_NOFOLLOW
dnl Check for strlcat/strlcpy
dnl =========================
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_WITH([libbsd],
[AS_HELP_STRING([--without-libbsd], [do not use libbsd for strlcat and strlcpy [default=check]])],
[AS_IF([test "x$with_libbsd" != "xno"],
[with_libbsd=bsd]
[with_libbsd=bsd],
[with_libbsd=]
)],
[with_libbsd=bsd])
m4_divert_pop([INIT_PREPARE])dnl
tmp_libs=$LIBS
AC_SEARCH_LIBS([strlcat],[$with_libbsd],
@@ -516,24 +533,30 @@ AC_CHECK_LIB([X11], [XConvertCase],
dnl XKB keyboard language status
dnl ============================
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([modelock],
[AS_HELP_STRING([--enable-modelock], [XKB keyboard language status support])],
[AS_CASE([$enableval],
[yes|no], [],
[AC_MSG_ERROR([bad value '$enableval' for --enable-modelock])])],
[enable_modelock=no])
m4_divert_pop([INIT_PREPARE])dnl
AS_IF([test "x$enable_modelock" = "xyes"],
[AC_DEFINE([XKB_MODELOCK], [1], [whether XKB language MODELOCK should be enabled]) ])
dnl XDND Drag-nd-Drop support
dnl =========================
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([xdnd],
[AS_HELP_STRING([--disable-xdnd], [disable support for Drag-and-Drop on the dock @<:@default=enabled@:>@])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --disable-xdnd]) ]) ],
[enable_xdnd=yes])
m4_divert_pop([INIT_PREPARE])dnl
AS_IF([test "x$enable_xdnd" = "xyes"],
[supported_core="$supported_core XDnD"
AC_DEFINE([USE_DOCK_XDND], [1], [whether Drag-and-Drop on the dock should be enabled])],
@@ -543,37 +566,57 @@ AM_CONDITIONAL([USE_DOCK_XDND], [test "x$enable_xdnd" != "xno"])
dnl Support for ICCCM 2.0 Window Manager replacement
dnl ================================================
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([wmreplace],
[AS_HELP_STRING([--enable-wmreplace], [support for ICCCM window manager replacement])],
[AS_CASE([$enableval],
[yes|no], [],
[AC_MSG_ERROR([bad value '$enableval' for --enable-wmreplace])])],
[enable_wmreplace=no])
m4_divert_pop([INIT_PREPARE])dnl
AS_IF([test "x$enable_wmreplace" = "xyes"],
[AC_DEFINE([USE_ICCCM_WMREPLACE], [1],
[define to support ICCCM protocol for window manager replacement])
supported_xext="$supported_xext WMReplace"])
dnl XRes support
dnl ==============
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([res],
[AS_HELP_STRING([--disable-res], [disable resource window extension support])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-res]) ]) ],
[enable_res=auto])
m4_divert_pop([INIT_PREPARE])dnl
WM_XEXT_CHECK_XRES
dnl XShape support
dnl ==============
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([shape],
[AS_HELP_STRING([--disable-shape], [disable shaped window extension support])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-shape]) ]) ],
[enable_shape=auto])
m4_divert_pop([INIT_PREPARE])dnl
WM_XEXT_CHECK_XSHAPE
dnl MIT-SHM support
dnl ===============
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([shm],
[AS_HELP_STRING([--disable-shm], [disable usage of MIT-SHM extension])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-shm]) ]) ],
[enable_shm=auto])
m4_divert_pop([INIT_PREPARE])dnl
WM_XEXT_CHECK_XSHM
@@ -585,23 +628,27 @@ WM_EXT_CHECK_XMU
dnl XINERAMA support
dnl ================
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([xinerama],
[AS_HELP_STRING([--enable-xinerama], [enable Xinerama extension support])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-xinerama]) ]) ],
[enable_xinerama=auto])
m4_divert_pop([INIT_PREPARE])dnl
WM_XEXT_CHECK_XINERAMA
dnl RandR support
dnl =============
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([randr],
[AS_HELP_STRING([--enable-randr], [enable RandR extension support (NOT recommended, buggy)])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-randr]) ]) ],
[enable_randr=no])
m4_divert_pop([INIT_PREPARE])dnl
WM_XEXT_CHECK_XRANDR
@@ -649,12 +696,14 @@ AC_SUBST(XFT_LIBS)
dnl PANGO support
dnl =============
dnl The libray can be used by WINGs to get better support on UTF-8 for i18n
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([pango],
[AS_HELP_STRING([--disable-pango], [disable Pango text layout support @<:@default=auto@:>@])],
[AS_CASE([$enableval],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --disable-pango])] )],
[enable_pango=auto])
m4_divert_pop([INIT_PREPARE])dnl
WM_CHECK_LIBPANGO
@@ -664,12 +713,14 @@ dnl ==============================================
dnl XPM Support
dnl ===========
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([xpm],
[AS_HELP_STRING([--disable-xpm], [disable use of XPM pixmaps through libXpm])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-xpm])] )],
[enable_xpm=auto])
m4_divert_pop([INIT_PREPARE])dnl
WM_IMGFMT_CHECK_XPM
@@ -693,67 +744,79 @@ AS_IF([test "x$LIBEXIF" != "x"],
dnl PNG Support
dnl ===========
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([png],
[AS_HELP_STRING([--disable-png], [disable PNG support through libpng])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-png])] )],
[enable_png=auto])
m4_divert_pop([INIT_PREPARE])dnl
WM_IMGFMT_CHECK_PNG
dnl JPEG Support
dnl ============
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([jpeg],
[AS_HELP_STRING([--disable-jpeg], [disable JPEG support through libjpeg])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-jpeg])] )],
[enable_jpeg=auto])
m4_divert_pop([INIT_PREPARE])dnl
WM_IMGFMT_CHECK_JPEG
dnl GIF Support
dnl ============
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE(gif,
[AS_HELP_STRING([--disable-gif], [disable GIF support through libgif or libungif])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-gif])] )],
[enable_gif=auto])
m4_divert_pop([INIT_PREPARE])dnl
WM_IMGFMT_CHECK_GIF
dnl TIFF Support
dnl ============
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([tiff],
[AS_HELP_STRING([--disable-tiff], [disable use of TIFF images through libtiff])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-tiff])] )],
[enable_tiff=auto])
m4_divert_pop([INIT_PREPARE])dnl
WM_IMGFMT_CHECK_TIFF
dnl WEBP Support
dnl ============
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([webp],
[AS_HELP_STRING([--disable-webp], [disable WEBP support through libwebp])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-webp])] )],
[enable_webp=auto])
m4_divert_pop([INIT_PREPARE])dnl
WM_IMGFMT_CHECK_WEBP
dnl MagicK Support
dnl ==============
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([magick],
[AS_HELP_STRING([--disable-magick], [disable MAGICK support through libMagickWand])],
[AS_CASE(["$enableval"],
[yes|no], [],
[AC_MSG_ERROR([bad value $enableval for --enable-magick])] )],
[enable_magick=auto])
m4_divert_pop([INIT_PREPARE])dnl
WM_IMGFMT_CHECK_MAGICK
@@ -795,6 +858,7 @@ AC_CHECK_HEADERS(stdlib.h)
dnl Support for PIXMAPDIR option
dnl ============================
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_WITH([pixmapdir],
[AS_HELP_STRING([--with-pixmapdir=PATH], [specify where pixmaps are located [DATADIR/pixmaps]])],
[AS_CASE([$withval],
@@ -803,6 +867,7 @@ AC_ARG_WITH([pixmapdir],
[\$*], [], dnl Assumes it starts with a reference to $prefix or a similar variable, ok
[AC_MSG_ERROR([bad path '$withval' for pixmapdir, expecting an absolute path])])],
[with_pixmapdir=""])
m4_divert_pop([INIT_PREPARE])dnl
AS_IF([test "x$with_pixmapdir" != "x"],
[pixmapdir="$with_pixmapdir"],
@@ -812,6 +877,7 @@ AC_SUBST([pixmapdir])dnl
dnl Support for GNUSTEP_LOCAL_ROOT, for WPrefs.app
dnl ==============================================
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_WITH([gnustepdir],
[AS_HELP_STRING([--with-gnustepdir=PATH], [specify the directory for GNUstep applications])],
[AS_CASE([$withval],
@@ -821,6 +887,7 @@ AC_ARG_WITH([gnustepdir],
[AC_MSG_ERROR([bad path '$withval' for gnustepdir, expecting an absolute path])])],
[dnl If no command-line option was given, we use $GNUSTEP_LOCAL_ROOT if it was set
with_gnustepdir="$GNUSTEP_LOCAL_ROOT"])
m4_divert_pop([INIT_PREPARE])dnl
AS_IF([test "x$with_gnustepdir" = "x"],
[dnl No path specified, use default
@@ -834,30 +901,43 @@ AS_IF([test "x$with_gnustepdir" = "x"],
AC_SUBST([wprefs_datadir])dnl
AC_SUBST([wprefs_bindir])dnl
dnl Support for DEFSDATADIR option
dnl ============================
AC_ARG_WITH([defsdatadir],
[AS_HELP_STRING([--with-defsdatadir=PATH], [specify where global defaults are located [SYSCONFDIR/WindowMaker]])],
dnl Support for PKGCONFDIR option
dnl =============================
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_WITH([pkgconfdir],
[AS_HELP_STRING([--with-pkgconfdir=PATH], [specify where global defaults are located [SYSCONFDIR/WindowMaker]])],
[AS_CASE([$withval],
[yes|no], [AC_MSG_ERROR([bad value '$withval' for --with-defsdatadir, expected a path]) ],
[yes|no], [AC_MSG_ERROR([bad value '$withval' for --with-pkgconfdir, expected a path]) ],
[/*], [], dnl Absolute path, ok
[\$*], [], dnl Assumes it starts with a reference to $prefix or a similar variable, ok
[AC_MSG_ERROR([bad path '$withval' for defsdatadir, expecting an absolute path])])],
[with_defsdatadir=""])
[AC_MSG_ERROR([bad path '$withval' for pkgconfdir, expecting an absolute path])])],
[with_pkgconfdir=""])
m4_divert_pop([INIT_PREPARE])dnl
dnl Provide a message when trying to use "--with-defsdatadir" so that user can update its
dnl arguments. Otherwise only a warning is issued, which is likely to be missed, which will
dnl lead to perceived misbehaviour much later (and hard to debug).
WM_DENY_ARG_WITH([defsdatadir],
[AC_MSG_ERROR([option "--with-defsdatadir" have been replaced by "--with-pkgconfdir"])])
AS_IF([test "x$with_pkgconfdir" != "x"],
[pkgconfdir="$with_pkgconfdir"],
[pkgconfdir='${sysconfdir}/${PACKAGE_TARNAME}'])
AC_SUBST([pkgconfdir])dnl
AS_IF([test "x$with_defsdatadir" != "x"],
[defsdatadir="$with_defsdatadir"],
[defsdatadir='${sysconfdir}/WindowMaker'])
AC_SUBST([defsdatadir])dnl
dnl Enable User Defined Menu thing
dnl ==============================
m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([usermenu],
[AS_HELP_STRING([--enable-usermenu], [user defined menus for applications])],
[AS_CASE([$enableval],
[yes|no], [],
[AC_MSG_ERROR([bad value '$enableval' for --enable-usermenu])])],
[enable_usermenu=no])
m4_divert_pop([INIT_PREPARE])dnl
AS_IF([test "x$enable_usermenu" = "xyes"],
[AC_DEFINE([USER_MENU], [1],
[define if you want user defined menus for applications])])
+1 -1
View File
@@ -37,7 +37,7 @@ wmaker.1: wmaker.in Makefile $(top_builddir)/config.h
--header "$(top_builddir)/config.h" --filter "HAVE_INOTIFY" \
--filter "USE_ICCCM_WMREPLACE" \
-D"pkgdatadir=$(pkgdatadir)" --replace "pkgdatadir" \
-D"defsdatadir=$(defsdatadir)" --replace "defsdatadir" \
-D"pkgconfdir=$(pkgconfdir)" --replace "pkgconfdir" \
-o "wmaker.1" "$(srcdir)/wmaker.in"
wmsetbg.1: wmsetbg.in Makefile $(top_builddir)/config.h
+5 -1
View File
@@ -449,7 +449,7 @@ Specific to @sc{Window Maker}, this option defines an additional path where @emp
searched. Nothing will be installed there; the default path taken is @file{@emph{DATADIR}/pixmaps},
where @var{DATADIR} is the path defined from @option{--datadir}.
@item --with-defsdatadir=@i{DIR}
@item --with-pkgconfdir=@i{DIR}
Specific to @sc{Window Maker}, defines the directory where system configuration
files, e.g., @file{WindowMaker}, @file{WMRootMenu}, etc., are installed. The
default value is @file{@emph{SYSCONFDIR}/WindowMaker}, where @var{SYSCONFDIR} is
@@ -551,6 +551,10 @@ Disable use of the @emph{MIT shared memory} extension.
This will slow down texture generation a little bit, but in some cases it seems to be necessary due
to a bug that manifests as messed icons and textures.
@item --disable-res
Disables support for @emph{XRes} resource window extension support.
Which is used to find the underlying processes (and PIDs) displaying the windows.
@item --disable-shape
Disables support for @emph{shaped} windows (for @command{oclock}, @command{xeyes}, etc.).
+14 -14
View File
@@ -1,36 +1,36 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH geticonset 1 "Leden 1999"
.SH JMÉNO
geticonset \- extrahuje aktuální sadu ikon Window Makera
.SH JMÉNO
geticonset \- extrahuje aktuální sadu ikon Window Makera
.SH SYNTAXE
.B geticonset
.I [volby] [soubor]
.SH POPIS
.B geticonset
načíta doménu WMWindowAttributes a zapíše sadu nalezených ikon
buď na standardtní výstup nebo do
načíta doménu WMWindowAttributes a zapíše sadu nalezených ikon
buď na standardtní výstup nebo do
.I souboru.
.SH VOLBY
.TP
.B \-\-help
vypíše nápovědu
vypíše nápovědu
.TP
.B \-\-version
vypíše číslo verze
.SH PROMĚNNÉ PROSTŘEDÍ
vypíše číslo verze
.SH PROMĚNNÉ PROSTŘEDÍ
.IP WMAKER_USER_ROOT
specifikuje cestu k adresáři Defaults. Řetězec "Defaults/" je přidán k této
proměnné, čímž se určí umístění databází. Jakmile proměnná není nastavená,
tak její implicitní hodnota je "~/GNUstep"
specifikuje cestu k adresáři Defaults. Řetězec "Defaults/" je přidán k této
proměnné, čímž se určí umístění databází. Jakmile proměnná není nastavená,
tak její implicitní hodnota je "~/GNUstep"
.SH SOUBORY
.IP WMAKER_USER_ROOT/Defaults/WMWindowAttributes
Toto je soubor, který se zapíše.
.SH PODÍVEJTE SE TAKÉ
Toto je soubor, který se zapíše.
.SH PODÍVEJTE SE TAKÉ
.BR seticons (1),
.BR wmaker (1)
.SH AUTOR
Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>.
.PP
Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>.
Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>.
.PP
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>.
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>.
+16 -16
View File
@@ -1,38 +1,38 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH seticons 1 "Březen 1998"
.SH JMÉNO
seticons \- nastaví ikony pro Window Maker
.TH seticons 1 "Březen 1998"
.SH JMÉNO
seticons \- nastaví ikony pro Window Maker
.SH SYNTAXe
.B seticons
.I soubor
.SH POPIS
.B seticons
načíta
načíta
.I soubor
a zapíše jeho obsah do domény WMWindowAttributes, čímž se nastaví ikony,
které používá Window Maker pro dané třídy (například XTerm, "xterm.XTerm",
a zapíše jeho obsah do domény WMWindowAttributes, čímž se nastaví ikony,
které používá Window Maker pro dané třídy (například XTerm, "xterm.XTerm",
"pine.XTerm", atd.)
.SH VOLBY
.TP
.B \-\-help
vypíše nápovědu
vypíše nápovědu
.TP
.B \-\-version
vypíše číslo verze
.SH PROMĚNNÉ PROSTŘEDÍ
vypíše číslo verze
.SH PROMĚNNÉ PROSTŘEDÍ
.IP WMAKER_USER_ROOT
specifikuje cestu k adresáři Defaults. Řetězec "Defaults/" je přidán k této
proměnné, čímž se určí umístění databází. Jakmile proměnná není nastavená,
tak její implicitní hodnota je "~/GNUstep"
specifikuje cestu k adresáři Defaults. Řetězec "Defaults/" je přidán k této
proměnné, čímž se určí umístění databází. Jakmile proměnná není nastavená,
tak její implicitní hodnota je "~/GNUstep"
.SH SOUBORY
.IP WMAKER_USER_ROOT/Defaults/WMWindowAttributes
Toto je soubor, který se zapíše.
.SH PODÍVEJTE SE TAKÉ
Toto je soubor, který se zapíše.
.SH PODÍVEJTE SE TAKÉ
.BR geticonset (1),
.BR wmaker (1)
.SH AUTOR
Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>.
.PP
Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>.
Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>.
.PP
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>.
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>.
+16 -16
View File
@@ -1,39 +1,39 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH wdwrite 1 "Leden 1999"
.SH JMÉNO
wdwrite \- zapíše klíče a hodnoty do databáze standardních nastavení
.SH JMÉNO
wdwrite \- zapíše klíče a hodnoty do databáze standardních nastavení
.SH SYNTAXE
.B wdwrite
.I doména
.I doména
.I volba
.I hodnota
.SH POPIS
.B wdwrite
zapíše
zapíše
.I volbu
a
.I hodnotu
do dané
.I domény.
do dané
.I domény.
.SH VOLBY
.TP
.B \-\-help
vypíše nápovědu
vypíše nápovědu
.TP
.B \-\-version
vypíše číslo verze
.SH PROMĚNNÉ PROSTŘEDÍ
vypíše číslo verze
.SH PROMĚNNÉ PROSTŘEDÍ
.IP WMAKER_USER_ROOT
specifikuje cestu k adresáři Defaults. Řetězec "Defaults/" je přidán k této
proměnné, čímž se určí umístění databází. Jakmile proměnná není nastavená,
tak její implicitní hodnota je "~/GNUstep"
specifikuje cestu k adresáři Defaults. Řetězec "Defaults/" je přidán k této
proměnné, čímž se určí umístění databází. Jakmile proměnná není nastavená,
tak její implicitní hodnota je "~/GNUstep"
.SH SOUBORY
Domény se nacházejí v WMAKER_USER_ROOT/Defaults/
.SH PODÍVEJTE SE TAKÉ
Domény se nacházejí v WMAKER_USER_ROOT/Defaults/
.SH PODÍVEJTE SE TAKÉ
.BR wmaker (1)
.SH AUTOR
Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>.
.PP
Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>.
Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>.
.PP
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>
+64 -64
View File
@@ -1,133 +1,133 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH Window\ Maker 1 "Srpen 1998"
.SH JMÉNO
wmaker \- okenní manažer pro X11 se vzhledem NEXTSTEPu
.TH "Window Maker" 1 "Srpen 1998"
.SH JMÉNO
wmaker \- okenní manažer pro X11 se vzhledem NEXTSTEPu
.SH SYNTAXE
.B wmaker
.I "[-volby]"
.SH "POPIS"
Window Maker je okenní manažer pro X11 se vzhledem NEXTSTEPu. Snaží se
napodobit vzhled NeXTu jak jen to je možné, ale v případě potřeby tento
trend nedodržuje.
Window Maker je okenní manažer pro X11 se vzhledem NEXTSTEPu. Snaží se
napodobit vzhled NeXTu jak jen to je možné, ale v případě potřeby tento
trend nedodržuje.
.SH "VOLBY"
.TP
.B \-\-no\-cpp
zakázat preprocessing konfiguračních souborů
zakázat preprocessing konfiguračních souborů
.TP
.B \-\-no\-dock
neotvírat Dok aplikací
neotvírat Dok aplikací
.TP
.B \-\-no\-clip
neotvírat Sponku pracovních ploch
neotvírat Sponku pracovních ploch
.TP
.B \-display host:display.screen
použít danou obrazovku.
Na strojích s více obrazovkami bude Window Maker automaticky spravovat
všechny obrazovky. Pokud chcete, aby Window Maker spravoval jen specifickou
obrazovku, musíte zadat číslo obrazovky pomocí argumentu příkazové řádky
použít danou obrazovku.
Na strojích s více obrazovkami bude Window Maker automaticky spravovat
všechny obrazovky. Pokud chcete, aby Window Maker spravoval jen specifickou
obrazovku, musíte zadat číslo obrazovky pomocí argumentu příkazové řádky
.B \-display.
Například, pokud chcete, aby Window Maker spravoval jen obrazovku 1, spusťte ho
Například, pokud chcete, aby Window Maker spravoval jen obrazovku 1, spusťte ho
takto:
.B wmaker -display :0.1
.TP
.B \-\-version
vypíše verzi a ukončí se
vypíše verzi a ukončí se
.TP
.B \-\-visual\-id
určí čísla obrazového režimu. Spusťte
určí čísla obrazového režimu. Spusťte
.BR xdpyinfo (1)
pro seznam obrazových režimů dostupných na vašem displeji.
pro seznam obrazových režimů dostupných na vašem displeji.
.TP
.B \-\-help
vypíše krátký pomocný text
vypíše krátký pomocný text
.PP
.SH SOUBORY
.TP
.B ~/GNUstep/Defaults/WindowMaker
všeobecné nastavení Window Makera.
všeobecné nastavení Window Makera.
.TP
.B ~/GNUstep/Defaults/WMState
informace o Doku a Sponce. Neditujte za běhu Window Makera. Bude
přepsaný.
informace o Doku a Sponce. Neditujte za běhu Window Makera. Bude
přepsaný.
.TP
.B ~/GNUstep/Defaults/WMRootMenu
Obsahuje jméno souboru, z kterého se má načíst hlavní menu nebo
menu samotné ve formátu proplist.
Obsahuje jméno souboru, z kterého se má načíst hlavní menu nebo
menu samotné ve formátu proplist.
.TP
.B ~/GNUstep/Defaults/WMWindowAttributes
Atributy pro různé třídy a instance aplikací. Použijte editor nastavení
(stiskněte pravé tlačítko myši na horní liště aplikace, zvolte Atributy)
namísto přímého editování tohoto souboru. Je jen málo nastavení, která
nejsou dostupná z editora nastavení.
Atributy pro různé třídy a instance aplikací. Použijte editor nastavení
(stiskněte pravé tlačítko myši na horní liště aplikace, zvolte Atributy)
namísto přímého editování tohoto souboru. Je jen málo nastavení, která
nejsou dostupná z editora nastavení.
.TP
.B /usr/share/WindowMaker/Defaults/
Všechny výše uvedené soubory se NAčÍTAJÍ odtud. Pokud se je nepodaří
najít, kromě WMState, který se odtud ZKOPÍRUJE. Nezáleží na tom, odkud
jsou načítané. Pokud je potřeba zapsat změnu konfigurace zpět do těchto
souborů, zapíšou se do uživatelských souborů.
Všechny výše uvedené soubory se NAčÍTAJÍ odtud. Pokud se je nepodaří
najít, kromě WMState, který se odtud ZKOPÍRUJE. Nezáleží na tom, odkud
jsou načítané. Pokud je potřeba zapsat změnu konfigurace zpět do těchto
souborů, zapíšou se do uživatelských souborů.
.TP
.B ~/GNUstep/Library/WindowMaker/autostart
Tento skript se automaticky vykoná pri startu Window Makera.
Tento skript se automaticky vykoná pri startu Window Makera.
.TP
.B ~/GNUstep/Library/WindowMaker/exitscript
Tento skript se automaticky vykoná bezprostředně před ukončením Window Makera.
.B Poznámka:
Když potřebujete spustit z tohoto skriptu něco, co vyžaduje spuštěný X server,
tak nepoužívejte na ukončení Window Makera příkaz
Tento skript se automaticky vykoná bezprostředně před ukončením Window Makera.
.B Poznámka:
Když potřebujete spustit z tohoto skriptu něco, co vyžaduje spuštěný X server,
tak nepoužívejte na ukončení Window Makera příkaz
.I SHUTDOWN
z hlavního menu. Jinak se může stát, že X server se ukončí dřív než se vykoná
z hlavního menu. Jinak se může stát, že X server se ukončí dřív než se vykoná
tento skript.
.TP
.B ~/GNUstep/Library/WindowMaker/
Soubor menu, jehož název je uveden v souboru WMRootMenu, se hledá zde...
Soubor menu, jehož název je uveden v souboru WMRootMenu, se hledá zde...
.TP
.B /etc/X11/WindowMaker/
a zde, v tomto pořadí, pokud název není absolutní cesta.
a zde, v tomto pořadí, pokud název není absolutní cesta.
.TP
.B ~/GNUstep/Library/WindowMaker/Pixmaps/
Zde hledá Window Maker obrázky
Zde hledá Window Maker obrázky
.TP
.B ~/GNUstep/Library/WindowMaker/Backgrounds/
Zde hledá Window Maker pozadí
Zde hledá Window Maker pozadí
.TP
.B ~/GNUstep/Library/WindowMaker/Styles/
Zde hledá Window Maker soubory se styly (ne úplně... vypadá to tak, ale
i tak musíte zadat úplnou cestu. Je to jen vyhrazené místo, aby byly
věci pěkně uspořádané)
Zde hledá Window Maker soubory se styly (ne úplně... vypadá to tak, ale
i tak musíte zadat úplnou cestu. Je to jen vyhrazené místo, aby byly
věci pěkně uspořádané)
.TP
.B ~/GNUstep/Library/WindowMaker/Themes/
Zde hledá Window Maker soubory s tématy (viz. výše)
Zde hledá Window Maker soubory s tématy (viz. výše)
.TP
.B /usr/share/WindowMaker/Pixmaps/
Obrázky spoločné pro celý systém se nacházejí zde...
Obrázky spoločné pro celý systém se nacházejí zde...
.TP
.B /usr/share/WindowMaker/Pixmaps/
a zde.
.TP
.B /usr/share/WindowMaker/Styles/
Styly spoločné pro celý systém se nacházejí zde
Styly spoločné pro celý systém se nacházejí zde
.TP
.B /usr/share/WindowMaker/Themes/
A teď to zkuste sami... ;-)
.SH PROMĚNNÉ PROSŘEDÍ
A teď to zkuste sami... ;-)
.SH PROMĚNNÉ PROSŘEDÍ
.IP WMAKER_USER_ROOT
specifikuje cestu k adresáři Defaults. "Defaults/" je přidán k této
proměnné, čímž se určí umístění databází. Pokud proměnná není nastavená,
ta její implicitní hodnota je "~/GNUstep"
specifikuje cestu k adresáři Defaults. "Defaults/" je přidán k této
proměnné, čímž se určí umístění databází. Pokud proměnná není nastavená,
ta její implicitní hodnota je "~/GNUstep"
.IP GNUSTEP_LOCAL_ROOT
specifikuje umístění systémového \fBlokálního\fP GNUstep adresáře (to
je užitečné v případě, že umístění adresáře společného pro celý systém je
ve skutečnosti společné pro celou síť). Když je tato proměnná prázdna, použije
specifikuje umístění systémového \fBlokálního\fP GNUstep adresáře (to
je užitečné v případě, že umístění adresáře společného pro celý systém je
ve skutečnosti společné pro celou síť). Když je tato proměnná prázdna, použije
se GNUSTEP_SYSTEM_ROOT.
.IP GNUSTEP_SYSTEM_ROOT
specifikuje umístění systémového GNUstep adresáře. Pokud je tato proměnná
prázdna, tak její implicitní hodnota je /etc/GNUstep
.SH PODÍVEJTE SE TAKÉ
specifikuje umístění systémového GNUstep adresáře. Pokud je tato proměnná
prázdna, tak její implicitní hodnota je /etc/GNUstep
.SH PODÍVEJTE SE TAKÉ
The Window Maker User Guide
(Uživatelská příručka Window Makera)
(Uživatelská příručka Window Makera)
.PP
The Window Maker FAQ
(Často kladené dotazy)
(Často kladené dotazy)
.PP
.BR X (7),
.BR wdwrite (1),
@@ -140,9 +140,9 @@ The Window Maker FAQ
.BR setstyle (1),
.BR wmsetbg (1)
.SH AUTOR
Autoři Window Makera jsou Alfredo K. Kojima <kojima@windowmaker.info>,
Dan Pascu <dan@windowmaker.info> a mnoho dalších lidí z celého světa.
Autoři Window Makera jsou Alfredo K. Kojima <kojima@windowmaker.info>,
Dan Pascu <dan@windowmaker.info> a mnoho dalších lidí z celého světa.
.PP
Tuto manuálovou stránku napsal Marcelo E. Magallon, <mmagallo@debian.org>.
Tuto manuálovou stránku napsal Marcelo E. Magallon, <mmagallo@debian.org>.
.PP
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>
+24 -24
View File
@@ -1,67 +1,67 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH wmsetbg 1 "Leden 1999"
.SH JMÉNO
wmsetbg \- nastaví pozadí hlavního okna v X11
.SH JMÉNO
wmsetbg \- nastaví pozadí hlavního okna v X11
.SH SYNTAXE
.B wmsetbg
[\-display] [\-\-version] [\-\-help] [{\-b|\-\-back\-color} \fIbarva\fP]
[{\-t|\-\-tile}|{\-e|\-\-center}|{\-s|\-\-scale}|{\-a|\-\-maxscale} \fIobrázek\fP]
[{\-t|\-\-tile}|{\-e|\-\-center}|{\-s|\-\-scale}|{\-a|\-\-maxscale} \fIobrázek\fP]
[{\-d|\-\-dither}|{\-m|\-\-match}] [\-u|\-\-update\-wmaker]
[{\-D|\-\-update\-domain} \fIdoména\fP] [{\-c|\-\-colors} \fIcpc\fP]
[{\-p|\-\-parse} \fItextura\fP] [{\-w|\-\-workspace} \fIpracovní plocha\fP]
[{\-D|\-\-update\-domain} \fIdoména\fP] [{\-c|\-\-colors} \fIcpc\fP]
[{\-p|\-\-parse} \fItextura\fP] [{\-w|\-\-workspace} \fIpracovní plocha\fP]
.SH POPIS
.B wmsetbg
načítá daný
.I obrázek
(XPM, PNG, jpeg, Tiff, raw PPM) a vloží ho do hlavního okna. Obrázek je možné
zvětšit, nebo ho opakovat aby vyplnil hlavní okno. Window Maker používa
tento příkaz interně na nastavení pozadí při startu.
načítá daný
.I obrázek
(XPM, PNG, jpeg, Tiff, raw PPM) a vloží ho do hlavního okna. Obrázek je možné
zvětšit, nebo ho opakovat aby vyplnil hlavní okno. Window Maker používa
tento příkaz interně na nastavení pozadí při startu.
.SH VOLBY
.TP
.B \-a|\-\-maxscale
zvětší daný \fIobrázek\fP při dodržení poměru stran
zvětší daný \fIobrázek\fP při dodržení poměru stran
.TP
.B \-e|\-\-center
vloží \fIobrázek\fP do středu okna
vloží \fIobrázek\fP do středu okna
.TP
.B \-t|\-\-tile
vytvoří z \fIobrázku\fP dlaždice
vytvoří z \fIobrázku\fP dlaždice
.TP
.B \-s|\-\-scale
roztáhne daný \fIobrázek\fP (standartně)
roztáhne daný \fIobrázek\fP (standartně)
.TP
.B \-d|\-\-dither
rezervuje barvy
.TP
.B \-m|\-\-match
shodné barvy
shodné barvy
.TP
.B \-u|\-\-update\-wmaker
zapíše změnu do databáze nastavení Window Makera
zapíše změnu do databáze nastavení Window Makera
.TP
.B \-D|\-\-update\-domain
zapíše změnu do databáze \fIdomény\fP
zapíše změnu do databáze \fIdomény\fP
.TP
.B \-c|\-\-colors
použíje určitý počet barev na kanál
použíje určitý počet barev na kanál
.TP
.B \-p|\-\-parse
parsuje danou \fItexturu\fP jako \fIproplist stylu textur\fP
.TP
.B \-w|\-\-workspace
nastaví pozadí jen na dané \fIpracovní ploše\fP
nastaví pozadí jen na dané \fIpracovní ploše\fP
.TP
.B \-\-help
vypíše nápovědu
vypíše nápovědu
.TP
.B \-\-version
vypíše číslo verze
.SH PODÍVEJTE SE TAKÉ
vypíše číslo verze
.SH PODÍVEJTE SE TAKÉ
.BR wmaker (1)
.SH AUTOR
Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>.
wmsetbg napsal Dan Pascu <dan@windowmaker.info>
.PP
Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>.
Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>.
.PP
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>.
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>.
+20 -20
View File
@@ -1,45 +1,45 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH wxcopy 1 "Září 1998"
.SH JMÉNO
wxcopy \- kopíruje standartní vstup do vyrovnávací paměti
.TH wxcopy 1 "Září 1998"
.SH JMÉNO
wxcopy \- kopíruje standartní vstup do vyrovnávací paměti
.SH SYNOPSIS
.B wxcopy
[volby]
[soubor]
.SH POPIS
.B wxcopy
kopíruje standartní vstup nebo
kopíruje standartní vstup nebo
.I soubor
do vyrovnávací paměti. Jakmile není dáná nějaká vyrovnávací paměť, tak se
data kopírují do vyrovnávací paměti 0 a ostaní vyrovnávací paměti rotují,
jestliže ovšem existují. Pokud je dáná vyrovnávací paměť, tak se data
kopírují do ní a nevykoná se žádné rotování.
do vyrovnávací paměti. Jakmile není dáná nějaká vyrovnávací paměť, tak se
data kopírují do vyrovnávací paměti 0 a ostaní vyrovnávací paměti rotují,
jestliže ovšem existují. Pokud je dáná vyrovnávací paměť, tak se data
kopírují do ní a nevykoná se žádné rotování.
.SH VOLBY
.TP
.B \-cutbuffer číslo
Specifikuje číslo vyrovnávací paměti, do které se budou kopírovat data.
.B \-cutbuffer číslo
Specifikuje číslo vyrovnávací paměti, do které se budou kopírovat data.
.TP
.B \-display displej
Data se budou kopírovat do vyrovnávací paměti daného displeje/obrazovky.
Data se budou kopírovat do vyrovnávací paměti daného displeje/obrazovky.
.TP
.B \-nolimit
Vypne normální limit velikosti dat 64kb, čímž se umožní zvětšování vyrovnávací
paměti podla potřeby.
Vypne normální limit velikosti dat 64kb, čímž se umožní zvětšování vyrovnávací
paměti podla potřeby.
.TP
.B \-clearselection
Vyprázdní vlastníka PRIMARY selekce. V praxi to znamená, že když se pokusíte
vložit data prostředním tlačítkem (například), tak vloží se data z vyrovnávací
paměti 0, namísto případného spuštění selelekce myši.
Vyprázdní vlastníka PRIMARY selekce. V praxi to znamená, že když se pokusíte
vložit data prostředním tlačítkem (například), tak vloží se data z vyrovnávací
paměti 0, namísto případného spuštění selelekce myši.
.PP
.SH PODÍVEJTE SE TAKÉ
.SH PODÍVEJTE SE TAKÉ
.BR wxpaste (1),
.BR wmaker (1)
.SH AUTOR
Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>.
.PP
Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>.
Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>.
.PP
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>.
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>.
.PP
Kompatibilitu s binárními daty a \-nolimit implementoval Luke Kendall
Kompatibilitu s binárními daty a \-nolimit implementoval Luke Kendall
<luke@research.canon.com.au>.
+18 -18
View File
@@ -1,40 +1,40 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH wxpaste 1 "Březen 1998"
.SH JMÉNO
wxpaste \- zapíše vyrovnávací paměť na standardní výstup
.TH wxpaste 1 "Březen 1998"
.SH JMÉNO
wxpaste \- zapíše vyrovnávací paměť na standardní výstup
.SH SYNTAXE
.B wxpaste
[volby]
.SH POPIS
.B wxpaste
vypíše obsah dané vyrovnávací paměti na standardní výstup. Jakmile není
zadána žádná vyrovnávací paměť, tak se použije vyrovnávací paměť 0.
vypíše obsah dané vyrovnávací paměti na standardní výstup. Jakmile není
zadána žádná vyrovnávací paměť, tak se použije vyrovnávací paměť 0.
.PP
.SH VOLBY
.TP
.B \-cutbuffer číslo
Data budou vložena z dané vyrovnávací paměti namísto standardní 0.
.B \-cutbuffer číslo
Data budou vložena z dané vyrovnávací paměti namísto standardní 0.
.TP
.B \-display displej
Data se budou kopírovat z vyrovnávací paměti daného displeje/obrazovky.
Data se budou kopírovat z vyrovnávací paměti daného displeje/obrazovky.
.TP
.B \-selection [selekcia]
Data budou kopírované z dané selekce. Jakmile se výběr ze selekce nepodaří,
tak se použije vyrovnávací paměť. Implicitní hodnota pro selekci je PRIMARY.
Data budou kopírované z dané selekce. Jakmile se výběr ze selekce nepodaří,
tak se použije vyrovnávací paměť. Implicitní hodnota pro selekci je PRIMARY.
.PP
.SH CHYBY
\-selection musí být poslední volba. Syntaxe může být upravená, ale
brání tomu špatná kompatibilita.
\-selection musí být poslední volba. Syntaxe může být upravená, ale
brání tomu špatná kompatibilita.
Typy selekcí INCR a MULTIPLE nejsou podporované. Ve skutečnosti je
podporovaný jen jednoduchý text, což by mělo stačit pro většinu uživatelů
takovéto jednoduché utilitky.
.SH PODÍVEJTE SE TAKÉ
Typy selekcí INCR a MULTIPLE nejsou podporované. Ve skutečnosti je
podporovaný jen jednoduchý text, což by mělo stačit pro většinu uživatelů
takovéto jednoduché utilitky.
.SH PODÍVEJTE SE TAKÉ
.BR wxcopy (1),
.BR wmaker (1)
.SH AUTOR
Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>.
.PP
Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>.
Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>.
.PP
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>.
Do češtiny přeložil Jiří Hnídek <jiri.hnidek@vslib.cz>.
+1 -1
View File
@@ -1,5 +1,5 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH Window\ Maker 1 "August 1998"
.TH "Window Maker" 1 "August 1998"
.SH "НАИМЕНОВАНИЕ"
wmaker \- оконный менеджер для X11 эмулирующий интерфейс NEXTSTEP.
.SH "СИНТАКСИС"
+16 -16
View File
@@ -1,34 +1,34 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH geticonset 1 "January 1999"
.SH MENO
geticonset \- extrahuje aktuálnu sadu ikon Window Makera
geticonset \- extrahuje aktuálnu sadu ikon Window Makera
.SH SYNTAX
.B geticonset
.I [voľby] [súbor]
.I [voľby] [súbor]
.SH POPIS
.B geticonset
načíta doménu WMWindowAttributes a zapíše sadu nájdených ikon
buď na štandardný výstup alebo do
.I súboru.
.SH VOĽBY
načíta doménu WMWindowAttributes a zapíše sadu nájdených ikon
buď na štandardný výstup alebo do
.I súboru.
.SH VOĽBY
.TP
.B \-\-help
vypíše pomocný text
vypíše pomocný text
.TP
.B \-\-version
vypíše číslo verzie
.SH PREMENNÉ PROSTREDIA
vypíše číslo verzie
.SH PREMENNÉ PROSTREDIA
.IP WMAKER_USER_ROOT
špecifikuje cestu k adresáru Defaults. "Defaults/" je pridané k tejto
premennej, čím sa určí umiestnenie databáz. Ak premenná nie je nastavená,
jej implicitná hodnota je "~/GNUstep"
.SH SÚBORY
špecifikuje cestu k adresáru Defaults. "Defaults/" je pridané k tejto
premennej, čím sa určí umiestnenie databáz. Ak premenná nie je nastavená,
jej implicitná hodnota je "~/GNUstep"
.SH SÚBORY
.IP WMAKER_USER_ROOT/Defaults/WMWindowAttributes
Toto je súbor, ktorý sa zapíše.
.SH POZRI TIEŽ
Toto je súbor, ktorý sa zapíše.
.SH POZRI TIEŽ
.BR seticons (1),
.BR wmaker (1)
.SH AUTOR
Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>.
.PP
Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>.
Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>.
+18 -18
View File
@@ -1,36 +1,36 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH seticons 1 "March 1998"
.SH MENO
seticons \- nastaví obrázky ikon pre Window Maker
seticons \- nastaví obrázky ikon pre Window Maker
.SH SYNTAX
.B seticons
.I súbor
.I súbor
.SH POPIS
.B seticons
načíta
.I súbor
a zapíše jeho obsah do domény WMWindowAttributes, čím sa nastavia ikony,
ktoré používa Window Maker pre dané triedy (napríklad XTerm, "xterm.XTerm",
"pine.XTerm", atď.)
.SH VOĽBY
načíta
.I súbor
a zapíše jeho obsah do domény WMWindowAttributes, čím sa nastavia ikony,
ktoré používa Window Maker pre dané triedy (napríklad XTerm, "xterm.XTerm",
"pine.XTerm", atď.)
.SH VOĽBY
.TP
.B \-\-help
vypíše pomocný text
vypíše pomocný text
.TP
.B \-\-version
vypíše číslo verzie
.SH PREMENNÉ PROSTREDIA
vypíše číslo verzie
.SH PREMENNÉ PROSTREDIA
.IP WMAKER_USER_ROOT
špecifikuje cestu k adresáru Defaults. "Defaults/" je pridané k tejto
premennej, čím sa určí umiestnenie databáz. Ak premenná nie je nastavená,
jej implicitná hodnota je "~/GNUstep"
.SH SÚBORY
špecifikuje cestu k adresáru Defaults. "Defaults/" je pridané k tejto
premennej, čím sa určí umiestnenie databáz. Ak premenná nie je nastavená,
jej implicitná hodnota je "~/GNUstep"
.SH SÚBORY
.IP WMAKER_USER_ROOT/Defaults/WMWindowAttributes
Toto je súbor, ktorý sa zapíše.
.SH POZRI TIEŽ
Toto je súbor, ktorý sa zapíše.
.SH POZRI TIEŽ
.BR geticonset (1),
.BR wmaker (1)
.SH AUTOR
Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>.
.PP
Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>.
Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>.
+17 -17
View File
@@ -1,37 +1,37 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH wdwrite 1 "January 1999"
.SH MENO
wdwrite \- zapíše kľúče a hodnoty do databázy štandardných nastavení
wdwrite \- zapíše kľúče a hodnoty do databázy štandardných nastavení
.SH SYNTAX
.B wdwrite
.I doména
.I voľba
.I doména
.I voľba
.I hodnota
.SH POPIS
.B wdwrite
zapíše
.I voľbu
zapíše
.I voľbu
a
.I hodnotu
do danej
.I domény.
.SH VOĽBY
.I domény.
.SH VOĽBY
.TP
.B \-\-help
vypíše pomocný text
vypíše pomocný text
.TP
.B \-\-version
vypíše číslo verzie
.SH PREMENNÉ PROSTREDIA
vypíše číslo verzie
.SH PREMENNÉ PROSTREDIA
.IP WMAKER_USER_ROOT
špecifikuje cestu k adresáru Defaults. "Defaults/" je pridané k tejto
premennej, čím sa určí umiestnenie databáz. Ak premenná nie je nastavená,
jej implicitná hodnota je "~/GNUstep"
.SH SÚBORY
Domény sa nachádzajú v WMAKER_USER_ROOT/Defaults/
.SH POZRI TIEŽ
špecifikuje cestu k adresáru Defaults. "Defaults/" je pridané k tejto
premennej, čím sa určí umiestnenie databáz. Ak premenná nie je nastavená,
jej implicitná hodnota je "~/GNUstep"
.SH SÚBORY
Domény sa nachádzajú v WMAKER_USER_ROOT/Defaults/
.SH POZRI TIEŽ
.BR wmaker (1)
.SH AUTOR
Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>.
.PP
Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>.
Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>.
+63 -63
View File
@@ -1,128 +1,128 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH Window\ Maker 1 "August 1998"
.TH "Window Maker" 1 "August 1998"
.SH MENO
wmaker \- manažér okien pre X11 so vzhľadom NEXTSTEP
wmaker \- manažér okien pre X11 so vzhľadom NEXTSTEP
.SH SYNTAX
.B wmaker
.I "[-voľby]"
.I "[-voľby]"
.SH "POPIS"
Window Maker je manažér okien pre X11 so vzhľadom NEXTSTEP. Snaží sa
napodobniť vzhľad NeXT ako je to len možné, ale v prípade potreby tento
trend nedodržuje.
.SH "VOĽBY"
Window Maker je manažér okien pre X11 so vzhľadom NEXTSTEP. Snaží sa
napodobniť vzhľad NeXT ako je to len možné, ale v prípade potreby tento
trend nedodržuje.
.SH "VOĽBY"
.TP
.B \-\-no\-cpp
zakázať preprocessing konfiguračných súborov
zakázať preprocessing konfiguračných súborov
.TP
.B \-\-no\-dock
neotvárať Dok aplikácií
neotvárať Dok aplikácií
.TP
.B \-\-no\-clip
neotvárať Spinku pracovných plôch
neotvárať Spinku pracovných plôch
.TP
.B \-display host:display.screen
použiť daný display.
Na strojoch s viacerými obrazovkami bude Window Maker automaticky spravovať
všetky obrazovky. Ak chcete, aby Window Maker spravoval len špecifickú
obrazovku, musíte zadať číslo obrazovky pomocou argumentu príkazového riadku
použiť daný display.
Na strojoch s viacerými obrazovkami bude Window Maker automaticky spravovať
všetky obrazovky. Ak chcete, aby Window Maker spravoval len špecifickú
obrazovku, musíte zadať číslo obrazovky pomocou argumentu príkazového riadku
.B \-display.
Napríklad, ak chcete, aby Window Maker spravoval len obrazovku 1, spustite ho
Napríklad, ak chcete, aby Window Maker spravoval len obrazovku 1, spustite ho
takto:
.B wmaker -display :0.1
.TP
.B \-\-version
vypíše verziu a ukončí sa
vypíše verziu a ukončí sa
.TP
.B \-\-visual\-id
určenie čísla obrazového režimu. Viď
určenie čísla obrazového režimu. Viď
.BR xdpyinfo (1)
pre zoznam obrazových režimov dostupných na vašom display-i.
pre zoznam obrazových režimov dostupných na vašom display-i.
.TP
.B \-\-help
vypíše krátky pomocný text
vypíše krátky pomocný text
.PP
.SH SÚBORY
.SH SÚBORY
.TP
.B ~/GNUstep/Defaults/WindowMaker
všeobecné nastavenia Window Makera.
všeobecné nastavenia Window Makera.
.TP
.B ~/GNUstep/Defaults/WMState
informácie o Doku a Spinke. NEeditujte za behu Window Makeru. Bude
prepísaný.
informácie o Doku a Spinke. NEeditujte za behu Window Makeru. Bude
prepísaný.
.TP
.B ~/GNUstep/Defaults/WMRootMenu
Obsahuje meno súboru, z ktorého sa má načítať hlavné menu alebo
menu samotné vo formáte proplist.
Obsahuje meno súboru, z ktorého sa má načítať hlavné menu alebo
menu samotné vo formáte proplist.
.TP
.B ~/GNUstep/Defaults/WMWindowAttributes
Atribúty pre rôzne triedy a inštancie aplikácií. Použite editor nastavení
(ťahajte pravé tlačítko na hornej lište aplikácie, zvoľte Nastavenia)
namiesto priameho editovania tohto súboru. Je len málo nastavení, ktoré
nie sú dostupné z editora nastavení.
Atribúty pre rôzne triedy a inštancie aplikácií. Použite editor nastavení
(ťahajte pravé tlačítko na hornej lište aplikácie, zvoľte Nastavenia)
namiesto priameho editovania tohto súboru. Je len málo nastavení, ktoré
nie sú dostupné z editora nastavení.
.TP
.B /usr/share/WindowMaker/Defaults/
Všetky spomenuté súbory sa NAČÍTAJÚ odtiaľto ak sa nepodarí nájsť ich,
okrem WMState, ktorý sa odtiaľto SKOPÍRUJE. Nezáleží na tom, odkiaľ
sú načítané, ak je potrebné zapísať zmenu konfigurácie späť do týchto
súborov, zapíšu sa do užívateľských súborov.
Všetky spomenuté súbory sa NAČÍTAJÚ odtiaľto ak sa nepodarí nájsť ich,
okrem WMState, ktorý sa odtiaľto SKOPÍRUJE. Nezáleží na tom, odkiaľ
sú načítané, ak je potrebné zapísať zmenu konfigurácie späť do týchto
súborov, zapíšu sa do užívateľských súborov.
.TP
.B ~/GNUstep/Library/WindowMaker/autostart
Tento skript sa automaticky vykoná pri štarte Window Makera.
Tento skript sa automaticky vykoná pri štarte Window Makera.
.TP
.B ~/GNUstep/Library/WindowMaker/exitscript
Tento skript sa automaticky vykoná bezprostredne pred ukončením Window Makera.
.B Poznámka:
Ak potrebujete spustiť z tohto skriptu niečo, čo vyžaduje spustený X server,
nepoužívajte na ukončenie Window Makera príkaz
Tento skript sa automaticky vykoná bezprostredne pred ukončením Window Makera.
.B Poznámka:
Ak potrebujete spustiť z tohto skriptu niečo, čo vyžaduje spustený X server,
nepoužívajte na ukončenie Window Makera príkaz
.I SHUTDOWN
z hlavného menu. Inak sa môže stať, že X server sa ukončí skôr než sa vykoná
z hlavného menu. Inak sa môže stať, že X server sa ukončí skôr než sa vykoná
skript.
.TP
.B ~/GNUstep/Library/WindowMaker/
Súbor menu, ktorého názov je vo WMRootMenu, sa hľadá tu...
Súbor menu, ktorého názov je vo WMRootMenu, sa hľadá tu...
.TP
.B /etc/X11/WindowMaker/
a tu, v tomto poradí, pokiaľ nie je názov absolútna cesta.
a tu, v tomto poradí, pokiaľ nie je názov absolútna cesta.
.TP
.B ~/GNUstep/Library/WindowMaker/Pixmaps/
Tu hľadá Window Maker obrázky
Tu hľadá Window Maker obrázky
.TP
.B ~/GNUstep/Library/WindowMaker/Backgrounds/
Tu hľadá Window Maker pozadia
Tu hľadá Window Maker pozadia
.TP
.B ~/GNUstep/Library/WindowMaker/Styles/
Tu hľadá Window Maker súbory so štýlmi (nie celkom... vyzerá to tak, ale
aj tak musíte zadať úplnú cestu. Je to len vyhradené miesto, aby boli
veci pekne usporiadané)
Tu hľadá Window Maker súbory so štýlmi (nie celkom... vyzerá to tak, ale
aj tak musíte zadať úplnú cestu. Je to len vyhradené miesto, aby boli
veci pekne usporiadané)
.TP
.B ~/GNUstep/Library/WindowMaker/Themes/
Tu hľadá Window Maker súbory s témami (viď vyššie)
Tu hľadá Window Maker súbory s témami (viď vyššie)
.TP
.B /usr/share/WindowMaker/Pixmaps/
Obrázky spoločné pre celý systém sa nachádzajú tu...
Obrázky spoločné pre celý systém sa nachádzajú tu...
.TP
.B /usr/share/WindowMaker/Pixmaps/
a tu.
.TP
.B /usr/share/WindowMaker/Styles/
Štýly spoločné pre celý systém sa nachádzajú tu
Štýly spoločné pre celý systém sa nachádzajú tu
.TP
.B /usr/share/WindowMaker/Themes/
Teraz to skús sám... ;-)
.SH PREMENNÉ PROSTREDIA
Teraz to skús sám... ;-)
.SH PREMENNÉ PROSTREDIA
.IP WMAKER_USER_ROOT
špecifikuje cestu k adresáru Defaults. "Defaults/" je pridané k tejto
premennej, čím sa určí umiestnenie databáz. Ak premenná nie je nastavená,
jej implicitná hodnota je "~/GNUstep"
špecifikuje cestu k adresáru Defaults. "Defaults/" je pridané k tejto
premennej, čím sa určí umiestnenie databáz. Ak premenná nie je nastavená,
jej implicitná hodnota je "~/GNUstep"
.IP GNUSTEP_LOCAL_ROOT
špecifikuje umiestnenie systémového \fBlokálneho\fP GNUstep adresára (toto
je užitočné v prípade, že umiestnenie adresára spoločného pre celý systém je
v skutočnosti spoločné pre celú sieť). Ak je táto premenná prázdna, použije
špecifikuje umiestnenie systémového \fBlokálneho\fP GNUstep adresára (toto
je užitočné v prípade, že umiestnenie adresára spoločného pre celý systém je
v skutočnosti spoločné pre celú sieť). Ak je táto premenná prázdna, použije
sa GNUSTEP_SYSTEM_ROOT.
.IP GNUSTEP_SYSTEM_ROOT
špecifikuje umiestnenie systémového GNUstep adresára. Ak je táto premenná
prázdna, jej implicitná hodnota je /etc/GNUstep
.SH POZRI TIEŽ
špecifikuje umiestnenie systémového GNUstep adresára. Ak je táto premenná
prázdna, jej implicitná hodnota je /etc/GNUstep
.SH POZRI TIEŽ
The Window Maker User Guide
.PP
The Window Maker FAQ
@@ -138,9 +138,9 @@ The Window Maker FAQ
.BR setstyle (1),
.BR wmsetbg (1)
.SH AUTOR
Autormi Window Makera sú Alfredo K. Kojima <kojima@windowmaker.info>,
Dan Pascu <dan@windowmaker.info> s pomocou mnohých ľudí z celého Internetu.
Autormi Window Makera sú Alfredo K. Kojima <kojima@windowmaker.info>,
Dan Pascu <dan@windowmaker.info> s pomocou mnohých ľudí z celého Internetu.
.PP
Túto manuálovú stránku napísal Marcelo E. Magallon, <mmagallo@debian.org>.
Túto manuálovú stránku napísal Marcelo E. Magallon, <mmagallo@debian.org>.
+25 -25
View File
@@ -1,66 +1,66 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH wmsetbg 1 "January 1999"
.SH MENO
wmsetbg \- nastaví pozadie hlavného okna v X11
wmsetbg \- nastaví pozadie hlavného okna v X11
.SH SYNTAX
.B wmsetbg
[\-display] [\-\-version] [\-\-help] [{\-b|\-\-back\-color} \fIfarba\fP]
[{\-t|\-\-tile}|{\-e|\-\-center}|{\-s|\-\-scale}|{\-a|\-\-maxscale} \fIobrázok\fP]
[{\-t|\-\-tile}|{\-e|\-\-center}|{\-s|\-\-scale}|{\-a|\-\-maxscale} \fIobrázok\fP]
[{\-d|\-\-dither}|{\-m|\-\-match}] [\-u|\-\-update\-wmaker]
[{\-D|\-\-update\-domain} \fIdoména\fP] [{\-c|\-\-colors} \fIcpc\fP]
[{\-p|\-\-parse} \fItextúra\fP] [{\-w|\-\-workspace} \fIpracovná plocha\fP]
[{\-D|\-\-update\-domain} \fIdoména\fP] [{\-c|\-\-colors} \fIcpc\fP]
[{\-p|\-\-parse} \fItextúra\fP] [{\-w|\-\-workspace} \fIpracovná plocha\fP]
.SH POPIS
.B wmsetbg
načíta daný
.I obrázok
(XPM, PNG, jpeg, Tiff, raw PPM) a vloží ho do hlavného okna. Obrázok možno
zväčšiť, alebo ho opakovať aby vyplnil hlavné okno. Window Maker používa
tento príkaz interne na nastavenie pozadia pri štarte.
.SH VOĽBY
načíta daný
.I obrázok
(XPM, PNG, jpeg, Tiff, raw PPM) a vloží ho do hlavného okna. Obrázok možno
zväčšiť, alebo ho opakovať aby vyplnil hlavné okno. Window Maker používa
tento príkaz interne na nastavenie pozadia pri štarte.
.SH VOĽBY
.TP
.B \-a|\-\-maxscale
zväčší daný \fIobrázok\fP pri dodržaní pomeru strán
zväčší daný \fIobrázok\fP pri dodržaní pomeru strán
.TP
.B \-e|\-\-center
vloží \fIobrázok\fP do stredu okna
vloží \fIobrázok\fP do stredu okna
.TP
.B \-t|\-\-tile
vytvára z \fIobrázku\fP dlaždice
vytvára z \fIobrázku\fP dlaždice
.TP
.B \-s|\-\-scale
roztiahne daný \fIobrázok\fP (štandardne)
roztiahne daný \fIobrázok\fP (štandardne)
.TP
.B \-d|\-\-dither
rezervuje farby
.TP
.B \-m|\-\-match
zhodné farby
zhodné farby
.TP
.B \-u|\-\-update\-wmaker
zapíše zmenu do databázy nastavení Window Makera
zapíše zmenu do databázy nastavení Window Makera
.TP
.B \-D|\-\-update\-domain
zapíše zmenu do databázy \fIdoména\fP
zapíše zmenu do databázy \fIdoména\fP
.TP
.B \-c|\-\-colors
použiť počet farieb na kanál
použiť počet farieb na kanál
.TP
.B \-p|\-\-parse
parsuje danú \fItextúru\fP ako \fIproplist style textúru\fP
parsuje danú \fItextúru\fP ako \fIproplist style textúru\fP
.TP
.B \-w|\-\-workspace
nastaví pozadie len na danej \fIpracovnej ploche\fP
nastaví pozadie len na danej \fIpracovnej ploche\fP
.TP
.B \-\-help
vypíše pomocný text
vypíše pomocný text
.TP
.B \-\-version
vypíše číslo verzie
.SH POZRI TIEŽ
vypíše číslo verzie
.SH POZRI TIEŽ
.BR wmaker (1)
.SH AUTOR
Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>.
wmsetbg napísal Dan Pascu <dan@windowmaker.info>
wmsetbg napísal Dan Pascu <dan@windowmaker.info>
.PP
Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>.
Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>.
+20 -20
View File
@@ -1,42 +1,42 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH wxcopy 1 "September 1998"
.SH NAME
wxcopy \- kopíruje ¹tandardný vstup do cutbuffera
wxcopy \- kopíruje štandardný vstup do cutbuffera
.SH SYNOPSIS
.B wxcopy
[voµby]
[súbor]
[voľby]
[súbor]
.SH DESCRIPTION
.B wxcopy
kopíruje ¹tandardný vstup alebo
.I súbor
do cutbuffera. Ak nie je daný cutbuffer, dáta sa kopírujú do cutbuffera 0
a ostané cutbuffery rotujú, ak existujú. Ak je daný cutbuffer, dáta sa
kopírujú do toho cutbuffera a nevykoná sa ¾iadne rotovanie.
.SH VO¥BY
kopíruje štandardný vstup alebo
.I súbor
do cutbuffera. Ak nie je daný cutbuffer, dáta sa kopírujú do cutbuffera 0
a ostané cutbuffery rotujú, ak existujú. Ak je daný cutbuffer, dáta sa
kopírujú do toho cutbuffera a nevykoná sa žiadne rotovanie.
.SH VOĽBY
.TP
.B \-cutbuffer èíslo
©pecifikuje èíslo cutbuffera, do ktorého sa budú kopírova» dáta.
.B \-cutbuffer číslo
Špecifikuje číslo cutbuffera, do ktorého sa budú kopírovať dáta.
.TP
.B \-display displej
Dáta sa budú kopírova» do cutbufferov daného displeja/obrazovky.
Dáta sa budú kopírovať do cutbufferov daného displeja/obrazovky.
.TP
.B \-nolimit
Vypne normálny limit veµkosti dát 64kb, èím sa umo¾ní zväè¹ovanie buffera
podµa potreby.
Vypne normálny limit veľkosti dát 64kb, čím sa umožní zväčšovanie buffera
podľa potreby.
.TP
.B \-clearselection
Vyprázdni vlastníka PRIMARY selekcie. V praxi to znamená, ¾e keï sa pokúsite
vlo¾i» dáta stredným tlaèítkom (napríklad), vlo¾ia sa dáta z cutbuffera 0,
namiesto prípadnej existujúcej selelekcie my¹i.
Vyprázdni vlastníka PRIMARY selekcie. V praxi to znamená, že keď sa pokúsite
vložiť dáta stredným tlačítkom (napríklad), vložia sa dáta z cutbuffera 0,
namiesto prípadnej existujúcej selelekcie myši.
.PP
.SH POZRI TIE®
.SH POZRI TIEŽ
.BR wxpaste (1),
.BR wmaker (1)
.SH AUTOR
Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>.
.PP
Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>.
Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>.
Kompatibilitu s binárnymi dátami a \-nolimit implementoval Luke Kendall
Kompatibilitu s binárnymi dátami a \-nolimit implementoval Luke Kendall
<luke@research.canon.com.au>.
+16 -16
View File
@@ -1,39 +1,39 @@
.\" Hey, Emacs! This is an -*- nroff -*- source file.
.TH wxpaste 1 "March 1998"
.SH MENO
wxpaste \- zapíše cutbuffer na štandardný výstup
wxpaste \- zapíše cutbuffer na štandardný výstup
.SH SYNTAX
.B wxpaste
[voľby]
[voľby]
.SH POPIS
.B wxpaste
vypíše obsah daného cutbuffera na štandardný výstup. Ak nie je daný žiadny
cutbuffer, použije sa cutbuffer 0.
vypíše obsah daného cutbuffera na štandardný výstup. Ak nie je daný žiadny
cutbuffer, použije sa cutbuffer 0.
.PP
.SH VOĽBY
.SH VOĽBY
.TP
.B \-cutbuffer číslo
Dáta budú vložené do daného cutbuffera namiesto štandardného 0.
.B \-cutbuffer číslo
Dáta budú vložené do daného cutbuffera namiesto štandardného 0.
.TP
.B \-display displej
Dáta sa budú kopírovať do cutbufferov daného displeja/obrazovky.
Dáta sa budú kopírovať do cutbufferov daného displeja/obrazovky.
.TP
.B \-selection [selekcia]
Dáta budú kopírované z danej selekcie. Ak sa výber zo selekcie nepodarí,
použije sa cutbuffer. Implicitná hodnota pre selekciu je PRIMARY.
Dáta budú kopírované z danej selekcie. Ak sa výber zo selekcie nepodarí,
použije sa cutbuffer. Implicitná hodnota pre selekciu je PRIMARY.
.PP
.SH CHYBY
.TP
\-selection musí byť posledá voľba. Syntax môže byť upravená, ale
bráni tomu spätná kompatibilita.
\-selection musí byť posledá voľba. Syntax môže byť upravená, ale
bráni tomu spätná kompatibilita.
Typy selekcií INCR a MULTIPLE nie sú podporované. V skutočnosti je
podporovaný len jednoduchý text, čo by malo stačiť pre väčšinu užívateľov
Typy selekcií INCR a MULTIPLE nie sú podporované. V skutočnosti je
podporovaný len jednoduchý text, čo by malo stačiť pre väčšinu užívateľov
takejto jednoduchej utilitky.
.SH POZRI TIEŽ
.SH POZRI TIEŽ
.BR wxcopy (1),
.BR wmaker (1)
.SH AUTOR
Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>.
.PP
Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>.
Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>.
+10 -7
View File
@@ -85,7 +85,7 @@ Attribute Editor (right drag the application's title bar, select
Attributes) instead of modifying this file directly. There are just a
few options not available using the Attributes Editor.
.TP
.B @defsdatadir@/
.B @pkgconfdir@/
All the above-mentioned files are READ from here if not found except
for WMState, which is COPIED from here. No matter where they are read
from, if it's necessary to write configuration changes back into this
@@ -140,14 +140,17 @@ Guess... ;-)
specifies the initial path for the Defaults directory. "Defaults/" is
appended to this variable to determine the actual location of the
databases. If the variable is not set, it defaults to "~/GNUstep"
.IP GNUSTEP_LOCAL_ROOT
specifies the location of the system-wide \fBlocal\fP GNUstep
.IP GNUSTEP_USER_APPS
specifies the location of the user's GNUstep Apps directory. If this
variable is empty, it defaults to ~/GNUstep/Applications.
.IP GNUSTEP_LOCAL_APPS
specifies the location of the system-wide \fBlocal\fP GNUstep Apps
directory (this is useful, for example, in those cases where the
system-wide location is really a network wide location). If this
variable is empty, GNUSTEP_SYSTEM_ROOT is looked for.
.IP GNUSTEP_SYSTEM_ROOT
specifies the location of the system-wide GNUstep directory. If this
variable is empty, it defaults to /etc/GNUstep
variable is empty, it defaults to /usr/local/GNUstep/Local/Applications.
.IP GNUSTEP_SYSTEM_APPS
specifies the location of the system-wide GNUstep Apps directory. If this
variable is empty, it defaults to /usr/GNUstep/System/Applications.
.SH SEE ALSO
The Window Maker User Guide
.PP
+11
View File
@@ -24,6 +24,17 @@ m4_pattern_forbid([^_?WM_])
m4_pattern_allow([^WM_OSDEP(_[A-Z]*)?$])
# WM_DENY_ARG_WITH(PACKAGE, ACTION-IF-GIVEN)
#
# Check if the argument "--with-PACKAGE" was used, and if it is the case
# execute ACTION-IF-GIVEN which is supposed to call AC_MSG_ERROR to
# stop any further processing and tell the user its arguments are bad
AC_DEFUN([WM_DENY_ARG_WITH],
[m4_divert_push([INIT_PREPARE])dnl
AS_IF([test "${[with_]m4_translit([$1], [-+.], [___])+set}" = set], [$2])
m4_divert_pop([INIT_PREPARE])])
# WM_CHECK_XFT_VERSION(MIN_VERSION, [ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]])
#
# $XFT_CFLAGS should be defined before calling this macro,
+6 -2
View File
@@ -147,7 +147,8 @@ AM_CONDITIONAL([HAVE_XGETTEXT], [test "x$XGETTEXT" != "x"])dnl
# wish to customize the menus, and thus can make them translatable
# with their own po/mo files without having to touch WMaker's stuff.
AC_DEFUN_ONCE([WM_I18N_MENUTEXTDOMAIN],
[AC_ARG_WITH([menu-textdomain],
[m4_divert_push([INIT_PREPARE])dnl
AC_ARG_WITH([menu-textdomain],
[AS_HELP_STRING([--with-menu-textdomain=DOMAIN],
[specify gettext domain used for menu translations])],
[AS_CASE([$withval],
@@ -155,6 +156,7 @@ AC_DEFUN_ONCE([WM_I18N_MENUTEXTDOMAIN],
[no], [menutextdomain=""],
[menutextdomain="$withval"])],
[menutextdomain=""])
m4_divert_pop([INIT_PREPARE])dnl
AS_IF([test "x$menutextdomain" != "x"],
[AC_DEFINE_UNQUOTED([MENU_TEXTDOMAIN], ["$menutextdomain"],
[gettext domain to be used for menu translations]) ])
@@ -167,13 +169,15 @@ dnl
dnl X11 needs to redefine the function 'setlocale' to properly initialize itself,
dnl we check if user wants to disable this behaviour or if it is not supported
AC_DEFUN_ONCE([WM_I18N_XLOCALE],
[AC_ARG_ENABLE([xlocale],
[m4_divert_push([INIT_PREPARE])dnl
AC_ARG_ENABLE([xlocale],
[AS_HELP_STRING([--disable-xlocale],
[disable initialization of locale for X])],
[AS_CASE([$enableval],
[yes|no], [],
[AC_MSG_ERROR([bad value '$enableval' for --disable-xlocale])])],
[enable_xlocale=auto])
m4_divert_pop([INIT_PREPARE])dnl
AS_IF([test "x$enable_xlocale" != "xno"],
[AC_CHECK_LIB([X11], [_Xsetlocale],
[AC_DEFINE([X_LOCALE], [1],
+27
View File
@@ -16,6 +16,33 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# WM_XEXT_CHECK_XRES
# --------------------
#
# Check for the X Resource Window extension
# The check depends on variable 'enable_xshape' being either:
# yes - detect, fail if not found
# no - do not detect, disable support
# auto - detect, disable if not found
#
# When found, append appropriate stuff in XLIBS, and append info to
# the variable 'supported_xext'
# When not found, append info to variable 'unsupported'
AC_DEFUN_ONCE([WM_XEXT_CHECK_XRES],
[WM_LIB_CHECK([XRes], [-lXRes], [XResQueryClientIds], [$XLIBS],
[wm_save_CFLAGS="$CFLAGS"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([dnl
@%:@include <X11/extensions/XRes.h>
], [dnl
XResQueryClientIds(NULL, 0, NULL, NULL, NULL);])]
[],
[AC_MSG_ERROR([found $CACHEVAR but cannot compile using XRes header])])
CFLAGS="$wm_save_CFLAGS"],
[supported_xext], [XLIBS], [enable_res], [-])dnl
]) dnl AC_DEFUN
# WM_XEXT_CHECK_XSHAPE
# --------------------
#
+2
View File
@@ -119,6 +119,7 @@ typedef enum {
WCUR_QUESTION,
WCUR_TEXT,
WCUR_SELECT,
WCUR_CAPTURE,
WCUR_ROOT,
WCUR_EMPTY,
@@ -405,6 +406,7 @@ extern struct WPreferences {
char ignore_gtk_decoration_hints;
char dont_blink; /* do not blink icon selection */
char keep_dock_on_primary_head; /* keep dock on primary head */
/* Appearance options */
char new_style; /* Use newstyle buttons */
+48
View File
@@ -912,6 +912,54 @@ void wUnmaximizeWindow(WWindow *wwin)
WMPostNotificationName(WMNChangedState, wwin, "maximize");
}
#ifdef USE_XINERAMA
void wFullscreenMonitorsWindow(WWindow *wwin, unsigned long top, unsigned long bottom,
unsigned long left, unsigned long right)
{
int i;
long monitor;
WMRect rect1, rect2;
if ((int)top < wwin->screen_ptr->xine_info.count &&
(int)bottom < wwin->screen_ptr->xine_info.count &&
(int)left < wwin->screen_ptr->xine_info.count &&
(int)right < wwin->screen_ptr->xine_info.count) {
wwin->flags.fullscreen_monitors[0] = top;
wwin->flags.fullscreen_monitors[1] = bottom;
wwin->flags.fullscreen_monitors[2] = left;
wwin->flags.fullscreen_monitors[3] = right;
} else {
wwin->flags.fullscreen_monitors[0] = -1;
return;
}
wwin->flags.fullscreen = True;
wWindowConfigureBorders(wwin);
ChangeStackingLevel(wwin->frame->core, WMFullscreenLevel);
wwin->bfs_geometry.x = wwin->frame_x;
wwin->bfs_geometry.y = wwin->frame_y;
wwin->bfs_geometry.width = wwin->frame->core->width;
wwin->bfs_geometry.height = wwin->frame->core->height;
i = 0;
monitor = wwin->flags.fullscreen_monitors[i];
rect1 = wwin->screen_ptr->xine_info.screens[monitor];
for (i = 1; i <= 3; i++) {
monitor = wwin->flags.fullscreen_monitors[i];
rect2 = wwin->screen_ptr->xine_info.screens[monitor];
wGetRectUnion(&rect1, &rect2, &rect1);
}
wWindowConfigure(wwin, rect1.pos.x, rect1.pos.y, rect1.size.width, rect1.size.height);
wwin->screen_ptr->bfs_focused_window = wwin->screen_ptr->focused_window;
wSetFocusTo(wwin->screen_ptr, wwin);
WMPostNotificationName(WMNChangedState, wwin, "fullscreen");
}
#endif
void wFullscreenWindow(WWindow *wwin)
{
int head;
+3
View File
@@ -75,6 +75,9 @@ void wArrangeIcons(WScreen *scr, Bool arrangeAll);
void wMakeWindowVisible(WWindow *wwin);
void wFullscreenMonitorsWindow(WWindow *wwin, unsigned long top, unsigned long bottom,
unsigned long left, unsigned long right);
void wFullscreenWindow(WWindow *wwin);
void wUnfullscreenWindow(WWindow *wwin);
+1
View File
@@ -244,6 +244,7 @@ void wClientConfigure(WWindow * wwin, XConfigureRequestEvent * xcre)
if (nheight != wwin->old_geometry.height)
wwin->flags.maximized &= ~(MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_MAXIMUS);
wWindowConstrainSize(wwin, (unsigned int *)&nwidth, (unsigned int *)&nheight);
wWindowConfigure(wwin, nx, ny, nwidth, nheight);
wwin->old_geometry.x = nx;
wwin->old_geometry.y = ny;
+29 -3
View File
@@ -154,6 +154,7 @@ static WDECallbackUpdate setModifierKeyLabels;
static WDECallbackConvert getCursor;
static WDECallbackUpdate setCursor;
static WDECallbackUpdate updateDock;
/*
* Tables to convert strings to enumeration values.
@@ -521,6 +522,9 @@ WDefaultEntry optionList[] = {
&wPreferences.minipreview_size, getInt, NULL, NULL, NULL},
{"IgnoreGtkHints", "NO", NULL,
&wPreferences.ignore_gtk_decoration_hints, getBool, NULL, NULL, NULL},
{"KeepDockOnPrimaryHead", "NO", NULL,
&wPreferences.keep_dock_on_primary_head, getBool, updateDock,
NULL, NULL},
/* style options */
@@ -784,6 +788,14 @@ WDefaultEntry optionList[] = {
NULL, getKeybind, setKeyGrab, NULL, NULL},
{"RunKey", "None", (void *)WKBD_RUN,
NULL, getKeybind, setKeyGrab, NULL, NULL},
{"ExitKey", "None", (void *)WKBD_EXIT,
NULL, getKeybind, setKeyGrab, NULL, NULL},
{"ScreenCaptureKey", "None", (void *)WKBD_PRINTS,
NULL, getKeybind, setKeyGrab, NULL, NULL},
{"WindowCaptureKey", "None", (void *)WKBD_PRINTW,
NULL, getKeybind, setKeyGrab, NULL, NULL},
{"PartialCaptureKey", "None", (void *)WKBD_PRINTP,
NULL, getKeybind, setKeyGrab, NULL, NULL},
#ifdef KEEP_XKB_LOCK_STATUS
{"ToggleKbdModeKey", "None", (void *)WKBD_TOGGLE,
@@ -820,6 +832,8 @@ WDefaultEntry optionList[] = {
NULL, getCursor, setCursor, NULL, NULL},
{"SelectCursor", "(builtin, cross)", (void *)WCUR_SELECT,
NULL, getCursor, setCursor, NULL, NULL},
{"CaptureCursor", "(builtin, crosshair)", (void *)WCUR_CAPTURE,
NULL, getCursor, setCursor, NULL, NULL},
{"DialogHistoryLines", "500", NULL,
&wPreferences.history_lines, getInt, NULL, NULL, NULL},
{"CycleActiveHeadOnly", "NO", NULL,
@@ -866,7 +880,7 @@ static WMPropList *readGlobalDomain(const char *domainName, Bool requireDictiona
char path[PATH_MAX];
struct stat stbuf;
snprintf(path, sizeof(path), "%s/%s", DEFSDATADIR, domainName);
snprintf(path, sizeof(path), "%s/%s", PKGCONFDIR, domainName);
if (stat(path, &stbuf) >= 0) {
globalDict = WMReadPropListFromFile(path);
if (globalDict && requireDictionary && !WMIsPLDictionary(globalDict)) {
@@ -916,7 +930,7 @@ void wDefaultsMergeGlobalMenus(WDDomain * menuDomain)
return;
#ifdef GLOBAL_PREAMBLE_MENU_FILE
submenu = WMReadPropListFromFile(DEFSDATADIR "/" GLOBAL_PREAMBLE_MENU_FILE);
submenu = WMReadPropListFromFile(PKGCONFDIR "/" GLOBAL_PREAMBLE_MENU_FILE);
if (submenu && !WMIsPLArray(submenu)) {
wwarning(_("invalid global menu file %s"), GLOBAL_PREAMBLE_MENU_FILE);
@@ -930,7 +944,7 @@ void wDefaultsMergeGlobalMenus(WDDomain * menuDomain)
#endif
#ifdef GLOBAL_EPILOGUE_MENU_FILE
submenu = WMReadPropListFromFile(DEFSDATADIR "/" GLOBAL_EPILOGUE_MENU_FILE);
submenu = WMReadPropListFromFile(PKGCONFDIR "/" GLOBAL_EPILOGUE_MENU_FILE);
if (submenu && !WMIsPLArray(submenu)) {
wwarning(_("invalid global menu file %s"), GLOBAL_EPILOGUE_MENU_FILE);
@@ -3483,3 +3497,15 @@ static int setCursor(WScreen * scr, WDefaultEntry * entry, void *tdata, void *ex
return 0;
}
static int updateDock(WScreen * scr, WDefaultEntry * entry,
void *tdata, void *extra_data) {
(void) entry;
(void) tdata;
(void) extra_data;
if (scr->dock)
wDockSwap(scr->dock);
return 0;
}
+109 -16
View File
@@ -36,6 +36,8 @@
#include <dirent.h>
#include <limits.h>
#include <errno.h>
#include <time.h>
#include <sys/utsname.h>
#ifdef HAVE_MALLOC_H
#include <malloc.h>
@@ -182,8 +184,12 @@ static char *HistoryFileName(const char *name)
{
char *filename = NULL;
filename = wstrdup(wusergnusteppath());
filename = wstrappend(filename, "/.AppInfo/WindowMaker/History");
filename = getenv("XDG_STATE_HOME");
if (filename)
filename = wstrappend(wexpandpath(filename), "/" PACKAGE_TARNAME "/History");
else
filename = wstrconcat(wusergnusteppath(), "/.AppInfo/" PACKAGE_TARNAME "/History");
if (name && strlen(name)) {
filename = wstrappend(filename, ".");
filename = wstrappend(filename, name);
@@ -1097,15 +1103,17 @@ Bool wIconChooserDialog(WScreen *scr, char **file, const char *instance, const c
} else {
defaultPath = FindImage(wPreferences.icon_path, *file);
wantedPath = WMGetTextFieldText(panel->fileField);
if (defaultPath) {
/* if the file is not the default, use full path */
if (strcmp(wantedPath, defaultPath) != 0) {
*file = wantedPath;
*file = wstrdup(wantedPath);
} else {
*file = wstrdup(*file);
wfree(wantedPath);
}
wfree(defaultPath);
}
wfree(wantedPath);
}
} else {
*file = NULL;
}
@@ -1149,7 +1157,7 @@ typedef struct {
#define COPYRIGHT_TEXT \
"Copyright \xc2\xa9 1997-2006 Alfredo K. Kojima\n"\
"Copyright \xc2\xa9 1998-2006 Dan Pascu\n"\
"Copyright \xc2\xa9 2013-2020 Window Maker Developers Team"
"Copyright \xc2\xa9 2013-%hu Window Maker Developers Team"
static InfoPanel *infoPanel = NULL;
@@ -1167,6 +1175,57 @@ static void destroyInfoPanel(WCoreWindow *foo, void *data, XEvent *event)
infoPanel = NULL;
}
char *getPrettyOSName(void)
{
char line[200];
char *token;
char *posn = NULL;
const char s[2] = "=";
FILE *fp;
fp = fopen("/etc/os-release", "r");
if (!fp) {
fp = fopen("/usr/lib/os-release", "r");
if (!fp) {
wwarning(_("no os-release file on the system"));
return NULL;
}
}
while (fgets(line, sizeof(line), fp) != NULL) {
if (strncmp(line, "PRETTY_NAME", strlen("PRETTY_NAME")) == 0) {
line[strcspn(line, "\r\n")] = 0;
token = strtok(line, s);
if (token) {
//get straight to the second part of the line
token = strtok(NULL, s);
if (token) {
//removing potential quotes
char *dst = token;
char *src = token;
char c;
while ((c = *src++) != '\0') {
if (c == '\\') {
*dst++ = c;
if ((c = *src++) == '\0')
break;
*dst++ = c;
} else if (c != '"' && c != '\'')
*dst++ = c;
}
*dst = '\0';
posn = wmalloc(strlen(token) + 1);
strcpy(posn, token);
}
}
break;
}
}
fclose(fp);
return posn;
}
void wShowInfoPanel(WScreen *scr)
{
InfoPanel *panel;
@@ -1190,6 +1249,17 @@ void wShowInfoPanel(WScreen *scr)
};
int wmScaleWidth, wmScaleHeight;
int pwidth, pheight;
int current_year = 2020;
time_t s;
struct tm *current_time;
struct utsname uts;
s = time(NULL);
if (s) {
current_time = localtime(&s);
if (current_time->tm_year > (current_year - 1900))
current_year = current_time->tm_year + 1900;
}
if (infoPanel) {
if (infoPanel->scr == scr) {
@@ -1205,8 +1275,12 @@ void wShowInfoPanel(WScreen *scr)
panel->win = WMCreateWindow(scr->wmscreen, "info");
WMGetScaleBaseFromSystemFont(scr->wmscreen, &wmScaleWidth, &wmScaleHeight);
#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO2) && defined(DEBUG)
pwidth = WMScaleX(412);
#else
pwidth = WMScaleX(382);
pheight = WMScaleY(250);
#endif
pheight = WMScaleY(270);
WMResizeWidget(panel->win, pwidth, pheight);
logo = WMCreateApplicationIconBlendedPixmap(scr->wmscreen, (RColor *) NULL);
@@ -1270,9 +1344,11 @@ void wShowInfoPanel(WScreen *scr)
panel->copyrL = WMCreateLabel(panel->win);
WMResizeWidget(panel->copyrL, WMScaleX(360), WMScaleY(60));
WMMoveWidget(panel->copyrL, WMScaleX(15), WMScaleY(190));
WMMoveWidget(panel->copyrL, WMScaleX(15), WMScaleY(210));
WMSetLabelTextAlignment(panel->copyrL, WALeft);
WMSetLabelText(panel->copyrL, COPYRIGHT_TEXT);
snprintf(buffer, sizeof(buffer), COPYRIGHT_TEXT, current_year);
WMSetLabelText(panel->copyrL, buffer);
font = WMSystemFontOfSize(scr->wmscreen, WMScaleY(11));
if (font) {
WMSetLabelFont(panel->copyrL, font);
@@ -1281,9 +1357,19 @@ void wShowInfoPanel(WScreen *scr)
}
strbuf = NULL;
if (uname(&uts) != -1) {
char *posn = getPrettyOSName();
if (posn) {
snprintf(buffer, sizeof(buffer), _("Running on: %s (%s)\n"), posn, uts.machine);
free(posn);
}
else
snprintf(buffer, sizeof(buffer), _("Running on: %s (%s)\n"), uts.sysname, uts.machine);
strbuf = wstrappend(strbuf, buffer);
}
snprintf(buffer, sizeof(buffer), _("Using visual 0x%x: %s %ibpp "),
(unsigned)scr->w_visual->visualid, visuals[scr->w_visual->class], scr->w_depth);
strbuf = wstrappend(strbuf, buffer);
switch (scr->w_depth) {
@@ -1303,14 +1389,14 @@ void wShowInfoPanel(WScreen *scr)
break;
}
#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO)
#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO2)
{
struct mallinfo ma = mallinfo();
struct mallinfo2 ma = mallinfo2();
snprintf(buffer, sizeof(buffer),
#ifdef DEBUG
_("Total memory allocated: %i kB (in use: %i kB, %d free chunks).\n"),
_("Total memory allocated: %lu kB (in use: %lu kB, %lu free chunks)\n"),
#else
_("Total memory allocated: %i kB (in use: %i kB).\n"),
_("Total memory allocated: %lu kB (in use: %lu kB)\n"),
#endif
(ma.arena + ma.hblkhd) / 1024,
(ma.uordblks + ma.hblkhd) / 1024
@@ -1349,6 +1435,10 @@ void wShowInfoPanel(WScreen *scr)
strbuf = wstrappend(strbuf, ", XDnD");
#endif
#ifdef USE_XRES
strbuf = wstrappend(strbuf, ", XRes");
#endif
#ifdef USE_MAGICK
strbuf = wstrappend(strbuf, ", ImageMagick");
#endif
@@ -1361,7 +1451,7 @@ void wShowInfoPanel(WScreen *scr)
strbuf = wstrappend(strbuf, _("Xinerama: "));
{
char tmp[128];
snprintf(tmp, sizeof(tmp) - 1, _("%d head(s) found."), scr->xine_info.count);
snprintf(tmp, sizeof(tmp) - 1, _("%d head(s) found"), scr->xine_info.count);
strbuf = wstrappend(strbuf, tmp);
}
#endif
@@ -1373,11 +1463,14 @@ void wShowInfoPanel(WScreen *scr)
strbuf = wstrappend(strbuf, _("supported"));
else
strbuf = wstrappend(strbuf, _("unsupported"));
strbuf = wstrappend(strbuf, ".");
#endif
panel->infoL = WMCreateLabel(panel->win);
WMResizeWidget(panel->infoL, WMScaleX(350), WMScaleY(80));
#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO2) && defined(DEBUG)
WMResizeWidget(panel->infoL, WMScaleX(380), WMScaleY(100));
#else
WMResizeWidget(panel->infoL, WMScaleX(350), WMScaleY(100));
#endif
WMMoveWidget(panel->infoL, WMScaleX(15), WMScaleY(115));
WMSetLabelText(panel->infoL, strbuf);
font = WMSystemFontOfSize(scr->wmscreen, WMScaleY(11));
+1
View File
@@ -22,6 +22,7 @@
#ifndef WMDIALOG_H_
#define WMDIALOG_H_
#include "screen.h"
enum {
WMAbort=0,
+43 -13
View File
@@ -814,6 +814,29 @@ static void unhideHereCallback(WMenu *menu, WMenuEntry *entry)
wUnhideApplication(wapp, False, True);
}
static int getDockXPosition(WScreen *scr, Bool on_right_side)
{
int x;
if (wPreferences.keep_dock_on_primary_head) {
WMRect rect;
rect = wGetRectForHead(scr, scr->xine_info.primary_head);
x = rect.pos.x;
if (on_right_side)
x += rect.size.width - ICON_SIZE - DOCK_EXTRA_SPACE;
else
x += DOCK_EXTRA_SPACE;
} else {
if (on_right_side)
x = scr->scr_width - ICON_SIZE - DOCK_EXTRA_SPACE;
else
x = DOCK_EXTRA_SPACE;
}
return x;
}
/* Name is only used when type == WM_DRAWER and when restoring a specific
* drawer, with a specific name. When creating a drawer, leave name to NULL
* and mainIconCreate will find the first unused unique name */
@@ -836,7 +859,7 @@ static WAppIcon *mainIconCreate(WScreen *scr, int type, const char *name)
btn = wAppIconCreateForDock(scr, NULL, "Logo", "WMDock", TILE_NORMAL);
if (wPreferences.flags.clip_merged_in_dock)
btn->icon->core->descriptor.handle_expose = clipIconExpose;
x_pos = scr->scr_width - ICON_SIZE - DOCK_EXTRA_SPACE;
x_pos = getDockXPosition(scr, True);
break;
case WM_DRAWER:
if (name == NULL)
@@ -1545,7 +1568,7 @@ static WMPropList *dockSaveState(WDock *dock)
WMPutInPLDictionary(dock_state, key, list);
WMReleasePropList(key);
snprintf(buffer, sizeof(buffer), "%i,%i", (dock->on_right_side ? -ICON_SIZE : 0), dock->y_pos);
snprintf(buffer, sizeof(buffer), "%i,%i", dock->x_pos, dock->y_pos);
value = WMCreatePLString(buffer);
WMPutInPLDictionary(dock_state, dPosition, value);
WMReleasePropList(value);
@@ -1823,11 +1846,17 @@ WDock *wDockRestoreState(WScreen *scr, WMPropList *dock_state, int type)
dock->x_pos = scr->scr_width - ICON_SIZE;
}
} else {
if (dock->x_pos >= 0) {
dock->x_pos = DOCK_EXTRA_SPACE;
int left, right, midpoint;
left = getDockXPosition(scr, False);
right = getDockXPosition(scr, True);
midpoint = (left + right) / 2;
if (dock->x_pos < midpoint) {
dock->x_pos = left;
dock->on_right_side = 0;
} else {
dock->x_pos = scr->scr_width - DOCK_EXTRA_SPACE - ICON_SIZE;
dock->x_pos = right;
dock->on_right_side = 1;
}
}
@@ -3003,18 +3032,16 @@ static void moveDock(WDock *dock, int new_x, int new_y)
}
}
static void swapDock(WDock *dock)
void wDockSwap(WDock *dock)
{
WScreen *scr = dock->screen_ptr;
WAppIcon *btn;
int x, i;
if (dock->on_right_side)
x = dock->x_pos = scr->scr_width - ICON_SIZE - DOCK_EXTRA_SPACE;
else
x = dock->x_pos = DOCK_EXTRA_SPACE;
x = getDockXPosition(scr, dock->on_right_side);
swapDrawers(scr, x);
dock->x_pos = x;
for (i = 0; i < dock->max_icons; i++) {
btn = dock->icon_array[i];
@@ -3595,7 +3622,10 @@ static void openDockMenu(WDock *dock, WAppIcon *aicon, XEvent *event)
x_pos = scr->scr_width - dock->menu->frame->core->width - 4;
}
} else {
x_pos = dock->on_right_side ? scr->scr_width - dock->menu->frame->core->width - 3 : 0;
x_pos = dock->x_pos;
if (dock->on_right_side)
x_pos += ICON_SIZE + DOCK_EXTRA_SPACE
- dock->menu->frame->core->width - 3;
}
wMenuMapAt(dock->menu, x_pos, event->xbutton.y_root + 2, False);
@@ -3751,7 +3781,7 @@ static void handleDockMove(WDock *dock, WAppIcon *aicon, XEvent *event)
if (now_on_right != dock->on_right_side)
{
dock->on_right_side = now_on_right;
swapDock(dock);
wDockSwap(dock);
wArrangeIcons(scr, False);
}
// Also perform the vertical move
@@ -4580,7 +4610,7 @@ static void swapDrawer(WDock *drawer, int new_x)
{
int i;
drawer->on_right_side = !drawer->on_right_side;
drawer->on_right_side = drawer->screen_ptr->dock->on_right_side;
drawer->x_pos = new_x;
for (i = 0; i < drawer->max_icons; i++) {
+1
View File
@@ -91,6 +91,7 @@ void wDockTrackWindowLaunch(WDock *dock, Window window);
WAppIcon *wDockFindIconForWindow(WDock *dock, Window window);
void wDockDoAutoLaunch(WDock *dock, int workspace);
void wDockLaunchWithState(WAppIcon *btn, WSavedState *state);
void wDockSwap(WDock *dock);
#ifdef USE_DOCK_XDND
int wDockReceiveDNDDrop(WScreen *scr, XEvent *event);
+25 -14
View File
@@ -1852,21 +1852,32 @@ static void handleKeyPress(XEvent * event)
case WKBD_RUN:
{
char *cmdline;
cmdline = ExpandOptions(scr, _("exec %A(Run,Type command to run:)"));
if (cmdline) {
XGrabPointer(dpy, scr->root_win, True, 0,
GrabModeAsync, GrabModeAsync, None, wPreferences.cursor[WCUR_WAIT], CurrentTime);
XSync(dpy, False);
ExecuteShellCommand(scr, cmdline);
wfree(cmdline);
XUngrabPointer(dpy, CurrentTime);
XSync(dpy, False);
ExecuteInputCommand(scr, _("exec %A(Run, Type command:)"));
break;
}
case WKBD_EXIT:
{
/* quick mode is not allowed to prevent inadvertently call */
ExecuteExitCommand(scr, 0);
break;
}
case WKBD_PRINTS:
{
ScreenCapture(scr, PRINT_SCREEN);
break;
}
case WKBD_PRINTW:
{
ScreenCapture(scr, PRINT_WINDOW);
break;
}
case WKBD_PRINTP:
{
ScreenCapture(scr, PRINT_PARTIAL);
break;
}
+3 -3
View File
@@ -1003,7 +1003,7 @@ void wFrameWindowPaint(WFrameWindow * fwin)
int titlelen;
int allButtons = 1;
if (!wPreferences.new_style == TS_NEW) {
if (wPreferences.new_style != TS_NEW) {
if (fwin->left_button && !fwin->flags.hide_left_button && !fwin->flags.lbutton_dont_fit)
lofs += fwin->left_button->width + 3;
else
@@ -1266,7 +1266,7 @@ static void checkTitleSize(WFrameWindow * fwin)
width = fwin->titlebar->width - 6 - 6;
}
if (!wPreferences.new_style == TS_NEW) {
if (wPreferences.new_style != TS_NEW) {
if (fwin->left_button && !fwin->flags.hide_left_button && !fwin->flags.lbutton_dont_fit)
width -= fwin->left_button->width + 3;
@@ -1352,7 +1352,7 @@ static void paintButton(WCoreWindow * button, WTexture * texture, unsigned long
x = (button->width - width) / 2 + d;
y = (button->height - image->height) / 2 + d;
XSetClipOrigin(dpy, copy_gc, x - left, y);
if (!wPreferences.new_style == TS_NEW) {
if (wPreferences.new_style != TS_NEW) {
XSetForeground(dpy, copy_gc, scr->black_pixel);
if (!pushed) {
if (image->depth == 1)

Some files were not shown because too many files have changed in this diff Show More