WindowMaker-0.95.8/0000775000175000017500000000000013061001367011044 500000000000000WindowMaker-0.95.8/update-changelog.pl0000775000175000017500000000645012650014300014532 00000000000000#!/usr/bin/perl # Update Window Maker ChangeLog from git log # Copyright (C) 2014 Window Maker Developers Team # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # DESCRIPTION # # This script adds the subject line and author of every commit since ChangeLog # was last touched by git, in a style consistent with the entries up to version # 0.92.0. use warnings; use strict; use File::Slurp qw(read_file prepend_file edit_file); use Git::Repository; use Git::Repository::Log::Iterator; use Text::Wrap; $Text::Wrap::columns = 80; my $text = read_file('ChangeLog'); my ($initial_entry) = $text =~ /(Changes.+?\n)\nChanges/s; my $r = Git::Repository->new(); my $initial_commit = $r->run('log', '-n 1', '--pretty=%H', '--', 'ChangeLog'); my $initial_tag = $r->run('describe', '--abbrev=0', $initial_commit); my $current_entry = ''; my $initial_author = ''; # start a new entry if ($r->run('describe', $initial_commit) eq $initial_tag) { my ($version) = $initial_tag =~ /wmaker-(.+)/; $current_entry .= "Changes since version $version:\n"; for (my $i = 0; $i < 23 + length($version); $i++) { $current_entry .= '.'; } $current_entry .= "\n\n"; } else { # append to an old entry ($initial_author) = $initial_entry =~ /\n (.+)\n$/; edit_file {s/\Q$initial_entry//} 'ChangeLog'; $initial_entry =~ s/\n(.+)\n$/\n/; $current_entry = $initial_entry; } my $iter = Git::Repository::Log::Iterator->new( $r, '--reverse', "$initial_commit..HEAD"); my $previous_author = ''; my $previous_tag = $initial_tag; while ( my $log = $iter->next ) { my $current_author = '(' . $log->author_name . ' <' . $log->author_email . '>)'; # print the author of previous commit if different from current commit if ($initial_author) { if ($initial_author ne $current_author) { chomp $current_entry; $current_entry .= " $initial_author\n"; } $initial_author = ''; } if ($previous_author ne $current_author) { if ($previous_author) { $current_entry .= " $previous_author\n"; } $previous_author = $current_author; } $current_entry .= wrap('- ', ' ', $log->subject . "\n"); my $current_commit = $log->commit; my $current_tag = $r->run('describe', '--abbrev=0', $current_commit); # start a new entry if new tag if ($current_tag ne $previous_tag) { $current_entry .= " $previous_author\n\n"; $previous_author = ''; prepend_file('ChangeLog', $current_entry, binmode => ':raw' ); $current_entry = ''; my ($version) = $current_tag =~ /wmaker-(.+)/; $current_entry .= "Changes since version $version:\n"; for (my $i = 0; $i < 23 + length($version); $i++) { $current_entry .= '.'; } $current_entry .= "\n\n"; $previous_tag = $current_tag; } } $current_entry .= " $previous_author\n\n"; prepend_file('ChangeLog', $current_entry, binmode => ':raw' ); WindowMaker-0.95.8/util/0000775000175000017500000000000013061001366012020 500000000000000WindowMaker-0.95.8/util/wmmenugen_parse_xdg.c0000664000175000017500000003407713014341235016155 00000000000000/* * wmmenugen - Window Maker PropList menu generator * * Desktop Entry Specification parser functions * * Copyright (c) 2010. Tamas Tevesz * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* * http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.1.html * http://standards.freedesktop.org/menu-spec/menu-spec-1.1.html * * We will only deal with Type == "Application" entries in [Desktop Entry] * groups. Since there is no passing of file name arguments or anything of * the sort to applications from the menu, execname is determined as follows: * - If `TryExec' is present, use that; * - else use `Exec' with any switches stripped * * Only the (first, though there should not be more than one) `Main Category' * is used to place the entry in a submenu. * * Basic validation of the .desktop file is done. */ #include #include #include #include #if DEBUG #include #endif #include #include #include #include "wmmenugen.h" /* LocaleString match levels */ enum { MATCH_DEFAULT, MATCH_LANG, MATCH_LANG_MODIFIER, MATCH_LANG_COUNTRY, MATCH_LANG_COUNTRY_MODIFIER }; typedef struct { char *Name; /* Name */ /* localestring */ int MatchLevel; /* LocaleString match type */ /* int */ char *TryExec; /* TryExec */ /* string */ char *Exec; /* Exec */ /* string */ char *Path; /* Path */ /* string */ int Flags; /* Flags */ char *Category; /* Categories (first item only) */ /* string */ } XDGMenuEntry; static void getKey(char **target, const char *line); static void getStringValue(char **target, const char *line); static void getLocalizedStringValue(char **target, const char *line, int *match_level); static int getBooleanValue(const char *line); static void getMenuHierarchyFor(char **xdgmenuspec); static int compare_matchlevel(int *current_level, const char *found_locale); static Bool xdg_to_wm(XDGMenuEntry **xdg, WMMenuEntry **wmentry); static void init_xdg_storage(XDGMenuEntry **xdg); static void init_wm_storage(WMMenuEntry **wm); void parse_xdg(const char *file, cb_add_menu_entry *addWMMenuEntryCallback) { FILE *fp; char buf[1024]; char *p, *tmp, *key; WMMenuEntry *wm; XDGMenuEntry *xdg; int InGroup; fp = fopen(file, "r"); if (!fp) { #if DEBUG fprintf(stderr, "Error opening file %s: %s\n", file, strerror(errno)); #endif return; } xdg = (XDGMenuEntry *)wmalloc(sizeof(XDGMenuEntry)); wm = (WMMenuEntry *)wmalloc(sizeof(WMMenuEntry)); InGroup = 0; memset(buf, 0, sizeof(buf)); while (fgets(buf, sizeof(buf), fp)) { p = buf; /* skip whitespaces */ while (isspace(*p)) p++; /* skip comments, empty lines */ if (*p == '\r' || *p == '\n' || *p == '#') { memset(buf, 0, sizeof(buf)); continue; } /* trim crlf */ buf[strcspn(buf, "\r\n")] = '\0'; if (strlen(buf) == 0) continue; if (strcmp(p, "[Desktop Entry]") == 0) { /* if currently processing a group, we've just hit the * end of its definition, try processing it */ if (InGroup && xdg_to_wm(&xdg, &wm)) { (*addWMMenuEntryCallback)(wm); } init_xdg_storage(&xdg); init_wm_storage(&wm); InGroup = 1; /* start processing group */ memset(buf, 0, sizeof(buf)); continue; } if (!InGroup) { memset(buf, 0, sizeof(buf)); continue; } getKey(&key, p); if (key == NULL) { /* not `key' = `value' */ memset(buf, 0, sizeof(buf)); continue; } if (strcmp(key, "Type") == 0) { getStringValue(&tmp, p); if (strcmp(tmp, "Application") != 0) InGroup = 0; /* if not application, skip current group */ wfree(tmp); tmp = NULL; } else if (strcmp(key, "Name") == 0) { getLocalizedStringValue(&xdg->Name, p, &xdg->MatchLevel); } else if (strcmp(key, "NoDisplay") == 0) { if (getBooleanValue(p)) /* if nodisplay, skip current group */ InGroup = 0; } else if (strcmp(key, "Hidden") == 0) { if (getBooleanValue(p)) InGroup = 0; /* if hidden, skip current group */ } else if (strcmp(key, "TryExec") == 0) { getStringValue(&xdg->TryExec, p); } else if (strcmp(key, "Exec") == 0) { getStringValue(&xdg->Exec, p); } else if (strcmp(key, "Path") == 0) { getStringValue(&xdg->Path, p); } else if (strcmp(key, "Terminal") == 0) { if (getBooleanValue(p)) xdg->Flags |= F_TERMINAL; } else if (strcmp(key, "Categories") == 0) { getStringValue(&xdg->Category, p); getMenuHierarchyFor(&xdg->Category); } wfree(key); key = NULL; } fclose(fp); /* at the end of the file, might as well try to menuize what we have * unless there was no group at all or it was marked as hidden */ if (InGroup && xdg_to_wm(&xdg, &wm)) (*addWMMenuEntryCallback)(wm); } /* coerce an xdg entry type into a wm entry type */ static Bool xdg_to_wm(XDGMenuEntry **xdg, WMMenuEntry **wm) { char *p; /* Exec or TryExec is mandatory */ if (!((*xdg)->Exec || (*xdg)->TryExec)) return False; /* if there's no Name, use the first word of Exec or TryExec */ if ((*xdg)->Name) { (*wm)->Name = (*xdg)->Name; } else { if ((*xdg)->Exec) (*wm)->Name = wstrdup((*xdg)->Exec); else /* (*xdg)->TryExec */ (*wm)->Name = wstrdup((*xdg)->TryExec); p = strchr((*wm)->Name, ' '); if (p) *p = '\0'; } if ((*xdg)->Exec) (*wm)->CmdLine = (*xdg)->Exec; else /* (*xdg)->TryExec */ (*wm)->CmdLine = (*xdg)->TryExec; (*wm)->SubMenu = (*xdg)->Category; (*wm)->Flags = (*xdg)->Flags; return True; } /* (re-)initialize a XDGMenuEntry storage */ static void init_xdg_storage(XDGMenuEntry **xdg) { if ((*xdg)->Name) wfree((*xdg)->Name); if ((*xdg)->TryExec) wfree((*xdg)->TryExec); if ((*xdg)->Exec) wfree((*xdg)->Exec); if ((*xdg)->Category) wfree((*xdg)->Category); if ((*xdg)->Path) wfree((*xdg)->Path); (*xdg)->Name = NULL; (*xdg)->TryExec = NULL; (*xdg)->Exec = NULL; (*xdg)->Category = NULL; (*xdg)->Path = NULL; (*xdg)->Flags = 0; (*xdg)->MatchLevel = -1; } /* (re-)initialize a WMMenuEntry storage */ static void init_wm_storage(WMMenuEntry **wm) { (*wm)->Name = NULL; (*wm)->CmdLine = NULL; (*wm)->Flags = 0; } /* get a key from line. allocates target, which must be wfreed later */ static void getKey(char **target, const char *line) { const char *p; int kstart, kend; p = line; if (strchr(p, '=') == NULL) { /* not `key' = `value' */ *target = NULL; return; } kstart = 0; /* skip whitespace */ while (isspace(*(p + kstart))) kstart++; /* skip up until first whitespace or '[' (localestring) or '=' */ kend = kstart + 1; while (*(p + kend) && !isspace(*(p + kend)) && *(p + kend) != '=' && *(p + kend) != '[') kend++; *target = wstrndup(p + kstart, kend - kstart); } /* get a string value from line. allocates target, which must be wfreed later. */ static void getStringValue(char **target, const char *line) { const char *p; int kstart; p = line; kstart = 0; /* skip until after '=' */ while (*(p + kstart) && *(p + kstart) != '=') kstart++; kstart++; /* skip whitespace */ while (*(p + kstart) && isspace(*(p + kstart))) kstart++; *target = wstrdup(p + kstart); } /* get a localized string value from line. allocates target, which must be wfreed later. * matching is dependent on the current value of target as well as on the * level the current value is matched on. guts matching algorithm is in * compare_matchlevel(). */ static void getLocalizedStringValue(char **target, const char *line, int *match_level) { const char *p; char *locale; int kstart; int sqbstart, sqbend; p = line; kstart = 0; sqbstart = 0; sqbend = 0; locale = NULL; /* skip until after '=', mark if '[' and ']' is found */ while (*(p + kstart) && *(p + kstart) != '=') { switch (*(p + kstart)) { case '[': sqbstart = kstart + 1;break; case ']': sqbend = kstart; break; default : break; } kstart++; } kstart++; /* skip whitespace */ while (isspace(*(p + kstart))) kstart++; if (sqbstart > 0 && sqbend > sqbstart) locale = wstrndup(p + sqbstart, sqbend - sqbstart); /* if there is no value yet and this is the default key, return */ if (!*target && !locale) { *match_level = MATCH_DEFAULT; *target = wstrdup(p + kstart); return; } if (compare_matchlevel(match_level, locale)) { wfree(locale); *target = wstrdup(p + kstart); return; } return; } /* get a boolean value from line */ static Bool getBooleanValue(const char *line) { char *p; int ret; getStringValue(&p, line); ret = strcmp(p, "true") == 0 ? True : False; wfree(p); return ret; } /* perform locale matching by implementing the algorithm specified in * xdg desktop entry specification, section "localized values for keys". */ static Bool compare_matchlevel(int *current_level, const char *found_locale) { /* current key locale */ char *key_lang, *key_ctry, *key_enc, *key_mod; parse_locale(found_locale, &key_lang, &key_ctry, &key_enc, &key_mod); if (env_lang && key_lang && /* Shortcut: if key and env languages don't match, */ strcmp(env_lang, key_lang) != 0) /* don't even bother. This takes care of the great */ return False; /* majority of the cases without having to go through */ /* the more theoretical parts of the spec'd algo. */ if (!env_mod && key_mod) /* If LC_MESSAGES does not have a MODIFIER field, */ return False; /* then no key with a modifier will be matched. */ if (!env_ctry && key_ctry) /* Similarly, if LC_MESSAGES does not have a COUNTRY field, */ return False; /* then no key with a country specified will be matched. */ /* LC_MESSAGES value: lang_COUNTRY@MODIFIER */ if (env_lang && env_ctry && env_mod) { /* lang_COUNTRY@MODIFIER */ if (key_lang && key_ctry && key_mod && strcmp(env_lang, key_lang) == 0 && strcmp(env_ctry, key_ctry) == 0 && strcmp(env_mod, key_mod) == 0) { *current_level = MATCH_LANG_COUNTRY_MODIFIER; return True; } else if (key_lang && key_ctry && /* lang_COUNTRY */ strcmp(env_lang, key_lang) == 0 && strcmp(env_ctry, key_ctry) == 0 && *current_level < MATCH_LANG_COUNTRY) { *current_level = MATCH_LANG_COUNTRY; return True; } else if (key_lang && key_mod && /* lang@MODIFIER */ strcmp(env_lang, key_lang) == 0 && strcmp(env_mod, key_mod) == 0 && *current_level < MATCH_LANG_MODIFIER) { *current_level = MATCH_LANG_MODIFIER; return True; } else if (key_lang && /* lang */ strcmp(env_lang, key_lang) == 0 && *current_level < MATCH_LANG) { *current_level = MATCH_LANG; return True; } else { return False; } } /* LC_MESSAGES value: lang_COUNTRY */ if (env_lang && env_ctry) { /* lang_COUNTRY */ if (key_lang && key_ctry && strcmp(env_lang, key_lang) == 0 && strcmp(env_ctry, key_ctry) == 0 && *current_level < MATCH_LANG_COUNTRY) { *current_level = MATCH_LANG_COUNTRY; return True; } else if (key_lang && /* lang */ strcmp(env_lang, key_lang) == 0 && *current_level < MATCH_LANG) { *current_level = MATCH_LANG; return True; } else { return False; } } /* LC_MESSAGES value: lang@MODIFIER */ if (env_lang && env_mod) { /* lang@MODIFIER */ if (key_lang && key_mod && strcmp(env_lang, key_lang) == 0 && strcmp(env_mod, key_mod) == 0 && *current_level < MATCH_LANG_MODIFIER) { *current_level = MATCH_LANG_MODIFIER; return True; } else if (key_lang && /* lang */ strcmp(env_lang, key_lang) == 0 && *current_level < MATCH_LANG) { *current_level = MATCH_LANG; return True; } else { return False; } } /* LC_MESSAGES value: lang */ if (env_lang) { /* lang */ if (key_lang && strcmp(env_lang, key_lang) == 0 && *current_level < MATCH_LANG) { *current_level = MATCH_LANG; return True; } else { return False; } } /* MATCH_DEFAULT is handled in getLocalizedStringValue */ return False; } /* get the (first) xdg main category from a list of categories */ static void getMenuHierarchyFor(char **xdgmenuspec) { char *category, *p; char buf[1024]; if (!*xdgmenuspec || !**xdgmenuspec) return; category = wstrdup(*xdgmenuspec); wfree(*xdgmenuspec); memset(buf, 0, sizeof(buf)); p = strtok(category, ";"); while (p) { /* get a known category */ if (strcmp(p, "AudioVideo") == 0) { snprintf(buf, sizeof(buf), "%s", _("Audio & Video")); break; } else if (strcmp(p, "Audio") == 0) { snprintf(buf, sizeof(buf), "%s", _("Audio")); break; } else if (strcmp(p, "Video") == 0) { snprintf(buf, sizeof(buf), "%s", _("Video")); break; } else if (strcmp(p, "Development") == 0) { snprintf(buf, sizeof(buf), "%s", _("Development")); break; } else if (strcmp(p, "Education") == 0) { snprintf(buf, sizeof(buf), "%s", _("Education")); break; } else if (strcmp(p, "Game") == 0) { snprintf(buf, sizeof(buf), "%s", _("Game")); break; } else if (strcmp(p, "Graphics") == 0) { snprintf(buf, sizeof(buf), "%s", _("Graphics")); break; } else if (strcmp(p, "Network") == 0) { snprintf(buf, sizeof(buf), "%s", _("Network")); break; } else if (strcmp(p, "Office") == 0) { snprintf(buf, sizeof(buf), "%s", _("Office")); break; } else if (strcmp(p, "Settings") == 0) { snprintf(buf, sizeof(buf), "%s", _("Settings")); break; } else if (strcmp(p, "System") == 0) { snprintf(buf, sizeof(buf), "%s", _("System")); break; } else if (strcmp(p, "Utility") == 0) { snprintf(buf, sizeof(buf), "%s", _("Utility")); break; } p = strtok(NULL, ";"); } if (!*buf) /* come up with something if nothing found */ snprintf(buf, sizeof(buf), "%s", _("Applications")); *xdgmenuspec = wstrdup(buf); } WindowMaker-0.95.8/util/README0000664000175000017500000000213512651057551012634 00000000000000wm-oldmenu2new - converts between the plain text file menu format to the property list menu format. bughint- gathers some information for bug reporting geticonset- outputs the current set of icon assignments. Good for making themes. setstyle- load style settings from a style file and setup WindowMaker getstyle - gets current style settings and save into a file or create a theme pack. seticons- merges icon definitions into WMWindowAttributes file wmaker.inst- quick and dirty script to install necessary files from global configuration to user's directory. Look in the script to adapt it to your site. wxcopy- copy input file or stdin into X cutbuffer wxpaste- copy content of X cutbuffer into stdout wmsetbg- set the workspace background into a image and make it persist between sessions. wdwrite- write data into the defaults database (configuration files). wdread- read Simple data from defaults database (for use in scripts for example) wmagnify- a program to magnify the area near the mouse pointer, with real-time update wkdemenu.pl- convert a KDE menu into a wmaker menu (for pipe) WindowMaker-0.95.8/util/geticonset.c0000664000175000017500000000631312650014300014246 00000000000000/* geticonset.c - outputs icon configuration from WindowMaker to stdout * * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif #include "config.h" #include #include #include #include #ifdef HAVE_STDNORETURN #include #endif #include #include "../src/wconfig.h" static const char *prog_name; static noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [-h] [-v] [file]\n", prog_name); if (print_usage) { puts("Retrieves program icon configuration and output to FILE or to stdout"); puts(""); puts(" -h, --help display this help and exit"); puts(" -v, --version output version information and exit"); } exit(exitval); } int main(int argc, char **argv) { WMPropList *window_name, *icon_key, *window_attrs, *icon_value; WMPropList *all_windows, *iconset, *keylist; char *path; int i, ch; struct option longopts[] = { { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "hv", longopts, NULL)) != -1) switch(ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ case 0: break; default: print_help(0, 1); /* NOTREACHED */ } argc -= optind; argv += optind; path = wdefaultspathfordomain("WMWindowAttributes"); all_windows = WMReadPropListFromFile(path); if (!all_windows) { printf("%s: could not load WindowMaker configuration file \"%s\".\n", prog_name, path); return 1; } iconset = WMCreatePLDictionary(NULL, NULL); keylist = WMGetPLDictionaryKeys(all_windows); icon_key = WMCreatePLString("Icon"); for (i = 0; i < WMGetPropListItemCount(keylist); i++) { WMPropList *icondic; window_name = WMGetFromPLArray(keylist, i); if (!WMIsPLString(window_name)) continue; window_attrs = WMGetFromPLDictionary(all_windows, window_name); if (window_attrs && WMIsPLDictionary(window_attrs)) { icon_value = WMGetFromPLDictionary(window_attrs, icon_key); if (icon_value) { icondic = WMCreatePLDictionary(icon_key, icon_value, NULL); WMPutInPLDictionary(iconset, window_name, icondic); } } } if (argc == 1) { WMWritePropListToFile(iconset, argv[0]); } else { puts(WMGetPropListDescription(iconset, True)); } return 0; } WindowMaker-0.95.8/util/wmiv.c0000775000175000017500000005723713061001047013103 00000000000000/* * Window Maker window manager * * Copyright (c) 2014 Window Maker Team - David Maciejak * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #if !defined(_GNU_SOURCE) #define _GNU_SOURCE #endif #include #include #include #include #include "wraster.h" #include #include #include #include #include #include #include #include #include #include "config.h" #ifdef HAVE_EXIF #include #endif #ifdef HAVE_PTHREAD #include #endif #ifdef USE_XPM extern int XpmCreatePixmapFromData(Display *, Drawable, char **, Pixmap *, Pixmap *, void *); /* this is the icon from eog project git.gnome.org/browse/eog */ #include "wmiv.h" #endif #define DEBUG 0 #define FILE_SEPARATOR '/' Display *dpy; Window win; RContext *ctx; RImage *img; Pixmap pix; const char *APPNAME = "wmiv"; int APPVERSION_MAJOR = 0; int APPVERSION_MINOR = 7; int NEXT = 0; int PREV = 1; float zoom_factor = 0; int max_width = 0; int max_height = 0; Bool fullscreen_flag = False; Bool focus = False; Bool back_from_fullscreen = False; #ifdef HAVE_PTHREAD Bool diaporama_flag = False; int diaporama_delay = 5; pthread_t tid = 0; #endif XTextProperty title_property; XTextProperty icon_property; unsigned current_index = 1; unsigned max_index = 1; RColor lightGray; RColor darkGray; RColor black; RColor red; typedef struct link link_t; struct link { const void *data; link_t *prev; link_t *next; }; typedef struct linked_list { int count; link_t *first; link_t *last; } linked_list_t; linked_list_t list; link_t *current_link; /* load_oriented_image: used to load an image and optionally get its orientation if libexif is available return the image on success, NULL on failure */ RImage *load_oriented_image(RContext *context, const char *file, int index) { RImage *image; #ifdef HAVE_EXIF int orientation = 0; #endif image = RLoadImage(context, file, index); if (!image) return NULL; #ifdef HAVE_EXIF ExifData *exifData = exif_data_new_from_file(file); if (exifData) { ExifByteOrder byteOrder = exif_data_get_byte_order(exifData); ExifEntry *exifEntry = exif_data_get_entry(exifData, EXIF_TAG_ORIENTATION); if (exifEntry) orientation = exif_get_short(exifEntry->data, byteOrder); exif_data_free(exifData); } /* 0th Row 0th Column 1 top left side 2 top right side 3 bottom right side 4 bottom left side 5 left side top 6 right side top 7 right side bottom 8 left side bottom */ if (image && (orientation > 1)) { RImage *tmp = NULL; switch (orientation) { case 2: tmp = RFlipImage(image, RHorizontalFlip); break; case 3: tmp = RRotateImage(image, 180); break; case 4: tmp = RFlipImage(image, RVerticalFlip); break; case 5: { RImage *tmp2; tmp2 = RFlipImage(image, RVerticalFlip); if (tmp2) { tmp = RRotateImage(tmp2, 90); RReleaseImage(tmp2); } } break; case 6: tmp = RRotateImage(image, 90); break; case 7: { RImage *tmp2; tmp2 = RFlipImage(image, RVerticalFlip); if (tmp2) { tmp = RRotateImage(tmp2, 270); RReleaseImage(tmp2); } } break; case 8: tmp = RRotateImage(image, 270); break; } if (tmp) { RReleaseImage(image); image = tmp; } } #endif return image; } /* change_title: used to change window title return EXIT_SUCCESS on success, 1 on failure */ int change_title(XTextProperty *prop, char *filename) { char *combined_title = NULL; if (!asprintf(&combined_title, "%s - %u/%u - %s", APPNAME, current_index, max_index, filename)) if (!asprintf(&combined_title, "%s - %u/%u", APPNAME, current_index, max_index)) return EXIT_FAILURE; XStringListToTextProperty(&combined_title, 1, prop); XSetWMName(dpy, win, prop); if (prop->value) XFree(prop->value); free(combined_title); return EXIT_SUCCESS; } /* rescale_image: used to rescale the current image based on the screen size return EXIT_SUCCESS on success */ int rescale_image(void) { long final_width = img->width; long final_height = img->height; /* check if there is already a zoom factor applied */ if (fabsf(zoom_factor) <= 0.0f) { final_width = img->width + (int)(img->width * zoom_factor); final_height = img->height + (int)(img->height * zoom_factor); } if ((max_width < final_width) || (max_height < final_height)) { long val = 0; if (final_width > final_height) { val = final_height * max_width / final_width; final_width = final_width * val / final_height; final_height = val; if (val > max_height) { val = final_width * max_height / final_height; final_height = final_height * val / final_width; final_width = val; } } else { val = final_width * max_height / final_height; final_height = final_height * val / final_width; final_width = val; if (val > max_width) { val = final_height * max_width / final_width; final_width = final_width * val / final_height; final_height = val; } } } if ((final_width != img->width) || (final_height != img->height)) { RImage *old_img = img; img = RScaleImage(img, final_width, final_height); if (!img) { img = old_img; return EXIT_FAILURE; } RReleaseImage(old_img); } if (!RConvertImage(ctx, img, &pix)) { fprintf(stderr, "%s\n", RMessageForError(RErrorCode)); return EXIT_FAILURE; } return EXIT_SUCCESS; } /* maximize_image: find the best image size for the current display return EXIT_SUCCESS on success */ int maximize_image(void) { rescale_image(); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, max_width/2-img->width/2, max_height/2-img->height/2); return EXIT_SUCCESS; } /* merge_with_background: merge the current image with with a checkboard background return EXIT_SUCCESS on success, 1 on failure */ int merge_with_background(RImage *i) { if (i) { RImage *back; back = RCreateImage(i->width, i->height, True); if (back) { int opaq = 255; int x = 0, y = 0; RFillImage(back, &lightGray); for (x = 0; x <= i->width; x += 8) { if (x/8 % 2) y = 8; else y = 0; for (; y <= i->height; y += 16) ROperateRectangle(back, RAddOperation, x, y, x+8, y+8, &darkGray); } RCombineImagesWithOpaqueness(i, back, opaq); RReleaseImage(back); return EXIT_SUCCESS; } } return EXIT_FAILURE; } /* turn_image: rotate the image by the angle passed return EXIT_SUCCESS on success, EXIT_FAILURE on failure */ int turn_image(float angle) { RImage *tmp; if (!img) return EXIT_FAILURE; tmp = RRotateImage(img, angle); if (!tmp) return EXIT_FAILURE; if (!fullscreen_flag) { if (img->width != tmp->width || img->height != tmp->height) XResizeWindow(dpy, win, tmp->width, tmp->height); } RReleaseImage(img); img = tmp; rescale_image(); if (!fullscreen_flag) { XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, 0, 0); } else { XClearWindow(dpy, win); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, max_width/2-img->width/2, max_height/2-img->height/2); } return EXIT_SUCCESS; } /* turn_image_right: rotate the image by 90 degree return EXIT_SUCCESS on success, EXIT_FAILURE on failure */ int turn_image_right(void) { return turn_image(90.0); } /* turn_image_left: rotate the image by -90 degree return EXIT_SUCCESS on success, 1 on failure */ int turn_image_left(void) { return turn_image(-90.0); } /* draw_failed_image: create a red crossed image to indicate an error loading file return the image on success, NULL on failure */ RImage *draw_failed_image(void) { RImage *failed_image = NULL; XWindowAttributes attr; if (win && (XGetWindowAttributes(dpy, win, &attr) >= 0)) failed_image = RCreateImage(attr.width, attr.height, False); else failed_image = RCreateImage(50, 50, False); if (!failed_image) return NULL; RFillImage(failed_image, &black); ROperateLine(failed_image, RAddOperation, 0, 0, failed_image->width, failed_image->height, &red); ROperateLine(failed_image, RAddOperation, 0, failed_image->height, failed_image->width, 0, &red); return failed_image; } /* full_screen: sending event to the window manager to switch from/to full screen mode return EXIT_SUCCESS on success, 1 on failure */ int full_screen(void) { XEvent xev; Atom wm_state = XInternAtom(dpy, "_NET_WM_STATE", True); Atom fullscreen = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", True); long mask = SubstructureNotifyMask; if (fullscreen_flag) { fullscreen_flag = False; zoom_factor = 0; back_from_fullscreen = True; } else { fullscreen_flag = True; zoom_factor = 1000; } memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.xclient.display = dpy; xev.xclient.window = win; xev.xclient.message_type = wm_state; xev.xclient.format = 32; xev.xclient.data.l[0] = fullscreen_flag; xev.xclient.data.l[1] = fullscreen; if (!XSendEvent(dpy, DefaultRootWindow(dpy), False, mask, &xev)) { fprintf(stderr, "Error: sending fullscreen event to xserver\n"); return EXIT_FAILURE; } return EXIT_SUCCESS; } /* zoom_in_out: apply a zoom factor on the current image arg: 1 to zoom in, 0 to zoom out return EXIT_SUCCESS on success, 1 on failure */ int zoom_in_out(int z) { RImage *old_img = img; RImage *tmp = load_oriented_image(ctx, current_link->data, 0); if (!tmp) return EXIT_FAILURE; if (z) { zoom_factor += 0.2f; img = RScaleImage(tmp, tmp->width + (int)(tmp->width * zoom_factor), tmp->height + (int)(tmp->height * zoom_factor)); if (!img) { img = old_img; return EXIT_FAILURE; } } else { zoom_factor -= 0.2f; int new_width = tmp->width + (int) (tmp->width * zoom_factor); int new_height = tmp->height + (int)(tmp->height * zoom_factor); if ((new_width <= 0) || (new_height <= 0)) { zoom_factor += 0.2f; RReleaseImage(tmp); return EXIT_FAILURE; } img = RScaleImage(tmp, new_width, new_height); if (!img) { img = old_img; return EXIT_FAILURE; } } RReleaseImage(old_img); RReleaseImage(tmp); XFreePixmap(dpy, pix); merge_with_background(img); if (!RConvertImage(ctx, img, &pix)) { fprintf(stderr, "%s\n", RMessageForError(RErrorCode)); return EXIT_FAILURE; } XResizeWindow(dpy, win, img->width, img->height); return EXIT_SUCCESS; } /* zoom_in: transitional fct used to call zoom_in_out with zoom in flag return EXIT_SUCCESS on success, 1 on failure */ int zoom_in(void) { return zoom_in_out(1); } /* zoom_out: transitional fct used to call zoom_in_out with zoom out flag return EXIT_SUCCESS on success, 1 on failure */ int zoom_out(void) { return zoom_in_out(0); } /* change_image: load previous or next image arg: way which could be PREV or NEXT constant return EXIT_SUCCESS on success, 1 on failure */ int change_image(int way) { if (img && current_link) { int old_img_width = img->width; int old_img_height = img->height; RReleaseImage(img); if (way == NEXT) { current_link = current_link->next; current_index++; } else { current_link = current_link->prev; current_index--; } if (current_link == NULL) { if (way == NEXT) { current_link = list.first; current_index = 1; } else { current_link = list.last; current_index = max_index; } } if (DEBUG) fprintf(stderr, "current file is> %s\n", (char *)current_link->data); img = load_oriented_image(ctx, current_link->data, 0); if (!img) { fprintf(stderr, "Error: %s %s\n", (char *)current_link->data, RMessageForError(RErrorCode)); img = draw_failed_image(); } else { merge_with_background(img); } rescale_image(); if (!fullscreen_flag) { if ((old_img_width != img->width) || (old_img_height != img->height)) XResizeWindow(dpy, win, img->width, img->height); else XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, 0, 0); change_title(&title_property, (char *)current_link->data); } else { XClearWindow(dpy, win); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, max_width/2-img->width/2, max_height/2-img->height/2); } return EXIT_SUCCESS; } return EXIT_FAILURE; } #ifdef HAVE_PTHREAD /* diaporama: send a xevent to display the next image at every delay set to diaporama_delay arg: not used return void */ void *diaporama(void *arg) { (void) arg; XKeyEvent event; event.display = dpy; event.window = win; event.root = DefaultRootWindow(dpy); event.subwindow = None; event.time = CurrentTime; event.x = 1; event.y = 1; event.x_root = 1; event.y_root = 1; event.same_screen = True; event.keycode = XKeysymToKeycode(dpy, XK_Right); event.state = 0; event.type = KeyPress; while (diaporama_flag) { int r; r = XSendEvent(event.display, event.window, True, KeyPressMask, (XEvent *)&event); if (!r) fprintf(stderr, "Error sending event\n"); XFlush(dpy); /* default sleep time between moving to next image */ sleep(diaporama_delay); } tid = 0; return arg; } #endif /* linked_list_init: init the linked list */ void linked_list_init(linked_list_t *list) { list->first = list->last = 0; list->count = 0; } /* linked_list_add: add an element to the linked list return EXIT_SUCCESS on success, 1 otherwise */ int linked_list_add(linked_list_t *list, const void *data) { link_t *link; /* calloc sets the "next" field to zero. */ link = calloc(1, sizeof(link_t)); if (!link) { fprintf(stderr, "Error: memory allocation failed\n"); return EXIT_FAILURE; } link->data = data; if (list->last) { /* Join the two final links together. */ list->last->next = link; link->prev = list->last; list->last = link; } else { list->first = link; list->last = link; } list->count++; return EXIT_SUCCESS; } /* linked_list_free: deallocate the whole linked list */ void linked_list_free(linked_list_t *list) { link_t *link; link_t *next; for (link = list->first; link; link = next) { /* Store the next value so that we don't access freed memory. */ next = link->next; if (link->data) free((char *)link->data); free(link); } } /* connect_dir: list and sort by name all files from a given directory arg: the directory path that contains images, the linked list where to add the new file refs return: the first argument of the list or NULL on failure */ link_t *connect_dir(char *dirpath, linked_list_t *li) { struct dirent **dir; int dv, idx; char path[PATH_MAX] = ""; if (!dirpath) return NULL; dv = scandir(dirpath, &dir, 0, alphasort); if (dv < 0) { /* maybe it's a file */ struct stat stDirInfo; if (lstat(dirpath, &stDirInfo) == 0) { linked_list_add(li, strdup(dirpath)); return li->first; } else { return NULL; } } for (idx = 0; idx < dv; idx++) { struct stat stDirInfo; if (dirpath[strlen(dirpath)-1] == FILE_SEPARATOR) snprintf(path, PATH_MAX, "%s%s", dirpath, dir[idx]->d_name); else snprintf(path, PATH_MAX, "%s%c%s", dirpath, FILE_SEPARATOR, dir[idx]->d_name); free(dir[idx]); if ((lstat(path, &stDirInfo) == 0) && !S_ISDIR(stDirInfo.st_mode)) linked_list_add(li, strdup(path)); } free(dir); return li->first; } /* main */ int main(int argc, char **argv) { int option = -1; RContextAttributes attr; XEvent e; KeySym keysym; char *reading_filename = ""; int screen, file_i; int quit = 0; XClassHint *class_hints; XSizeHints *size_hints; XWMHints *win_hints; #ifdef USE_XPM Pixmap icon_pixmap, icon_shape; #endif class_hints = XAllocClassHint(); if (!class_hints) { fprintf(stderr, "Error: failure allocating memory\n"); return EXIT_FAILURE; } class_hints->res_name = (char *)APPNAME; class_hints->res_class = "default"; /* init colors */ lightGray.red = lightGray.green = lightGray.blue = 211; darkGray.red = darkGray.green = darkGray.blue = 169; lightGray.alpha = darkGray.alpha = 1; black.red = black.green = black.blue = 0; red.red = 255; red.green = red.blue = 0; static struct option long_options[] = { {"version", no_argument, 0, 'v'}, {"help", no_argument, 0, 'h'}, {0, 0, 0, 0} }; int option_index = 0; option = getopt_long (argc, argv, "hv", long_options, &option_index); if (option != -1) { switch (option) { case 'h': printf("Usage: %s [image(s)|directory]\n" "Options:\n" " -h, --help print this help text\n" " -v, --version print version\n" "Keys:\n" " [+] zoom in\n" " [-] zoom out\n" " [Esc] actual size\n" #ifdef HAVE_PTHREAD " [D] launch diaporama mode\n" #endif " [L] rotate image on the left\n" " [Q] quit\n" " [R] rotate image on the right\n" " [▸] next image\n" " [◂] previous image\n" " [▴] first image\n" " [▾] last image\n", argv[0]); return EXIT_SUCCESS; case 'v': fprintf(stderr, "%s version %d.%d\n", APPNAME, APPVERSION_MAJOR, APPVERSION_MINOR); return EXIT_SUCCESS; case '?': return EXIT_FAILURE; } } linked_list_init(&list); dpy = XOpenDisplay(NULL); if (!dpy) { fprintf(stderr, "Error: can't open display"); linked_list_free(&list); return EXIT_FAILURE; } screen = DefaultScreen(dpy); max_width = DisplayWidth(dpy, screen); max_height = DisplayHeight(dpy, screen); attr.flags = RC_RenderMode | RC_ColorsPerChannel; attr.render_mode = RDitheredRendering; attr.colors_per_channel = 4; ctx = RCreateContext(dpy, DefaultScreen(dpy), &attr); if (argc < 2) { argv[1] = "."; argc = 2; } for (file_i = 1; file_i < argc; file_i++) { current_link = connect_dir(argv[file_i], &list); if (current_link) { reading_filename = (char *)current_link->data; max_index = list.count; } } img = load_oriented_image(ctx, reading_filename, 0); if (!img) { fprintf(stderr, "Error: %s %s\n", reading_filename, RMessageForError(RErrorCode)); img = draw_failed_image(); if (!current_link) return EXIT_FAILURE; } merge_with_background(img); rescale_image(); if (DEBUG) fprintf(stderr, "display size: %dx%d\n", max_width, max_height); win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0, img->width, img->height, 0, 0, BlackPixel(dpy, screen)); XSelectInput(dpy, win, KeyPressMask|StructureNotifyMask|ExposureMask|ButtonPressMask|FocusChangeMask); size_hints = XAllocSizeHints(); if (!size_hints) { fprintf(stderr, "Error: failure allocating memory\n"); return EXIT_FAILURE; } size_hints->width = img->width; size_hints->height = img->height; Atom delWindow = XInternAtom(dpy, "WM_DELETE_WINDOW", 0); XSetWMProtocols(dpy, win, &delWindow, 1); change_title(&title_property, reading_filename); win_hints = XAllocWMHints(); if (win_hints) { win_hints->flags = StateHint|InputHint|WindowGroupHint; #ifdef USE_XPM if ((XpmCreatePixmapFromData(dpy, win, wmiv_xpm, &icon_pixmap, &icon_shape, NULL)) == 0) { win_hints->flags |= IconPixmapHint|IconMaskHint|IconPositionHint; win_hints->icon_pixmap = icon_pixmap; win_hints->icon_mask = icon_shape; win_hints->icon_x = 0; win_hints->icon_y = 0; } #endif win_hints->initial_state = NormalState; win_hints->input = True; win_hints->window_group = win; XStringListToTextProperty((char **)&APPNAME, 1, &icon_property); XSetWMProperties(dpy, win, NULL, &icon_property, argv, argc, size_hints, win_hints, class_hints); if (icon_property.value) XFree(icon_property.value); XFree(win_hints); XFree(class_hints); XFree(size_hints); } XMapWindow(dpy, win); XFlush(dpy); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, 0, 0); while (!quit) { XNextEvent(dpy, &e); if (e.type == ClientMessage) { if (e.xclient.data.l[0] == delWindow) quit = 1; break; } if (e.type == FocusIn) { focus = True; continue; } if (e.type == FocusOut) { focus = False; continue; } if (!fullscreen_flag && (e.type == Expose)) { XExposeEvent xev = e.xexpose; if (xev.count == 0) XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, 0, 0); continue; } if (!fullscreen_flag && e.type == ConfigureNotify) { XConfigureEvent xce = e.xconfigure; if (xce.width != img->width || xce.height != img->height) { RImage *old_img = img; img = load_oriented_image(ctx, current_link->data, 0); if (!img) { /* keep the old img and window size */ img = old_img; XResizeWindow(dpy, win, img->width, img->height); } else { RImage *tmp2; if (!back_from_fullscreen) /* manually resized window */ tmp2 = RScaleImage(img, xce.width, xce.height); else { /* back from fullscreen mode, maybe img was rotated */ tmp2 = img; back_from_fullscreen = False; XClearWindow(dpy, win); } merge_with_background(tmp2); if (RConvertImage(ctx, tmp2, &pix)) { RReleaseImage(old_img); img = RCloneImage(tmp2); RReleaseImage(tmp2); change_title(&title_property, (char *)current_link->data); XSync(dpy, True); XResizeWindow(dpy, win, img->width, img->height); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, 0, 0); } } } continue; } if (fullscreen_flag && e.type == ConfigureNotify) { maximize_image(); continue; } if (e.type == ButtonPress) { switch (e.xbutton.button) { case Button1: { if (focus) { if (img && (e.xbutton.x > img->width/2)) change_image(NEXT); else change_image(PREV); } } break; case Button4: zoom_in(); break; case Button5: zoom_out(); break; case 8: change_image(PREV); break; case 9: change_image(NEXT); break; } continue; } if (e.type == KeyPress) { keysym = XkbKeycodeToKeysym(dpy, e.xkey.keycode, 0, e.xkey.state & ShiftMask?1:0); #ifdef HAVE_PTHREAD if (keysym != XK_Right) diaporama_flag = False; #endif switch (keysym) { case XK_Right: change_image(NEXT); break; case XK_Left: change_image(PREV); break; case XK_Up: if (current_link) { current_link = list.last; change_image(NEXT); } break; case XK_Down: if (current_link) { current_link = list.first; change_image(PREV); } break; #ifdef HAVE_PTHREAD case XK_F5: case XK_d: if (!tid) { if (current_link && !diaporama_flag) { diaporama_flag = True; pthread_create(&tid, NULL, &diaporama, NULL); } else { fprintf(stderr, "Can't use diaporama mode\n"); } } break; #endif case XK_q: quit = 1; break; case XK_Escape: if (!fullscreen_flag) { zoom_factor = -0.2f; /* zoom_in will increase the zoom factor by 0.2 */ zoom_in(); } else { /* we are in fullscreen mode already, want to return to normal size */ full_screen(); } break; case XK_plus: zoom_in(); break; case XK_minus: zoom_out(); break; case XK_F11: case XK_f: full_screen(); break; case XK_r: turn_image_right(); break; case XK_l: turn_image_left(); break; } } } if (img) RReleaseImage(img); if (pix) XFreePixmap(dpy, pix); #ifdef USE_XPM if (icon_pixmap) XFreePixmap(dpy, icon_pixmap); if (icon_shape) XFreePixmap(dpy, icon_shape); #endif linked_list_free(&list); RDestroyContext(ctx); RShutdown(); XCloseDisplay(dpy); return EXIT_SUCCESS; } WindowMaker-0.95.8/util/bughint0000775000175000017500000000233512650014300013324 00000000000000#!/bin/sh # # Use this to gather data about your system and send me # the sysinfo.txt file with your bugreport, plus any error # messages you've received. This program should be run under X. # echo gathering information for bug tracking... uname -a > sysinfo.txt wmaker --version >> sysinfo.txt echo "=============== xdpyinfo ================" >> sysinfo.txt xdpyinfo >> sysinfo.txt echo "=============== env ================" >> sysinfo.txt env >> sysinfo.txt echo "=============== ldconfig ================" >> sysinfo.txt if [ `uname` = 'Linux' ]; then /sbin/ldconfig -p >> sysinfo.txt else /sbin/ldconfig -r >> sysinfo.txt fi echo "=============== config.cache ================" >> sysinfo.txt cat ../config.cache ../Version >> sysinfo.txt 2> /dev/null cat config.cache Version >> sysinfo.txt 2> /dev/null echo "=============== configuration dir ===========" >> sysinfo.txt WDIR=$HOME/GNUstep/Defaults if [ -d $WDIR ]; then for i in WMGLOBAL WMRootMenu WMState WMWindowAttributes WindowMaker; do if [ -f $WDIR/$i ]; then echo "============== $i ========" >> sysinfo.txt cat $WDIR/$i >> sysinfo.txt fi done else echo "No config directory found" >> sysinfo.txt fi bzip2 -9f sysinfo.txt || gzip -9f sysinfo.txt echo done. WindowMaker-0.95.8/util/wm-oldmenu2new0000775000175000017500000001176012651057551014566 00000000000000#!/bin/sh # # wm-oldmenu2new: script to convert from old-style WindowMaker # menu file to the new PropertyList style of the WMRootMenu. # # Note: ex in all the Linux systems I've used is badly # broken, except for nex. perl can be relied on however. # Re-written to use perl. # # Local dependencies: # None. # # Authors: Luke Kendall, Toby J Sargeant # # Copyright waived; no warranty provided. # GLW=GNUstep/Library/WindowMaker GD=GNUstep/Defaults WLW=$HOME/$GLW WD=$HOME/$GD MYNAME=`basename $0` USAGE="usage: $MYNAME [menu-file-specifier] E.g. $MYNAME menu.pt or $MYNAME pt The default menu if no arguments are given is the English one, 'menu'." # # Process arguments - work out which language menu we're converting. # Note that foreign language locales do *not* have the .lang suffix # attached to the WMRootMenu name. # OLD_MENU=menu NEW_MENU=WMRootMenu if [ $# = 1 ] then if [ -s "$WLW/menu.$1" ] then OLD_MENU="menu.$1" NEW_MENU="WMRootMenu" elif [ -s "$WLW/$1" ] then OLD_MENU="$1" x=`expr "$1" : "menu\.\(.*\)"` [ "x$x" != "x" ] && NEW_MENU="WMRootMenu" else echo "$MYNAME: $WLW/$1 does not exist" >&2 exit 1 fi elif [ $# != 0 ] then echo "$USAGE" >&2 exit 1 fi # # For working out what cc is installed # which1() { oldpath=$PATH PATH=/bin:/usr/bin:/usr/local/bin IFS=":" for j in $oldpath do test -x $j/$1 && test ! -d $j/$1 && echo $j/$1 && return 0 done IFS=" " return 1 } # # Expand macros if necessary. # Create a temp copy of the menu file to edit to turn into the new. # TD=$(/bin/mktemp -d /tmp/wmmenu.XXXXXX) || { echo "$0: can not create temporary file" >& 2; exit 1; } T=$TD/wmmenu$$ echo "Converting $GLW/$OLD_MENU --> $GD/$NEW_MENU" cd $WLW || exit 1 if [ ! -s "$OLD_MENU" ] then echo "$MYNAME: $WLW/$OLD_MENU does not exist" >&2 exit 1 fi # # Always pre-process, to join lines split with \, and to strip comments. # Not to mention the main purpose, include & process wmmacros if used. # set -e CC=`which1 cc` [ "x$CC" = "x" ] && CC=`which1 gcc` [ "x$CC" = "x" ] && "$MYNAME: no cc, gcc found - can't preprocess" >&2 && exit 1 # # Use the "parse as if it's C option" if cc is gcc, because # newer versions apparently get confused. Apparently gcc -E does # not simply run the preprocessor (that's sad). # strings "$CC" | grep -l gcc > /dev/null && GCC_FLAGS="-x c" cp $OLD_MENU $T-c # # Given the set -e, the exit 1 shouldn't be needed. But it is, on my NeXT! # $CC -E -I. $GCC_FLAGS $T-c > $T+c || exit 1 sed '/^#/d;/^[ ]*$/d' $T+c > $T rm $T-c $T+c set +e # # This is the interesting bit. Edit the old style menu and # convert into new style property-list menu. # perl - $T <<-'EOF' > $T-p $v=chr(22); for (<>) { push @foo,$_; } for (@foo) { s/\s*$//; s/^(\s*)"*(Workspaces*)"*\s\s*(WORKSPACE_MENU)/\1(\2, \3),/; s/^(\s*)("[^"]*")\s+MENU/\1($v\n\1\2,/; push @foo2,split "\n"; } @foo=(); for (@foo2) { s/^(\s*)"([^"]*)"\s\s*END/\1),/; s/^(\s*)"([^"]*)"\s\s*EXEC\s\s*(.*)$/\1($v\n\1"\2",$v\n\1EXEC,$v\n\1"\3"$v\n\1),/; s/^(\s*)"([^"]*)"\s\s*SHEXEC\s\s*(.*)$/\1($v\n\1"\2",$v\n\1SHEXEC,$v\n\1"\3"$v\n\1),/; push @foo,split "\n"; } @foo2=(); for (@foo) { s/^(\s*)"([^"]*)"\s\s*OPEN_MENU\s\s*(.*)$/\1($v\n\1"\2",$v\n\1OPEN_MENU,$v\n\1"\3"$v\n\1),/; push @foo2,split "\n"; } @foo=(); for (@foo2) { s/^(\s*)([^ ]*)\s\s*MENU/\1($v\n\1"\2",/; push @foo,split "\n"; } @foo2=(); for (@foo) { s/^(\s*)([^ ]*)\s\s*END/\1),/; s/^(\s*)([^ ]*)\s\s*EXEC\s\s*(.*)$/\1($v\n\1"\2",$v\n\1EXEC,$v\n\1"\3"$v\n\1),/; s/^(\s*)([^ ]*)\s\s*SHEXEC\s\s*(.*)$/\1($v\n\1"\2",$v\n\1SHEXEC,$v\n\1"\3"$v\n\1),/; push @foo2,split "\n"; } @foo=(); for (@foo2) { s/^(\s*)([^ ]*)\s\s*OPEN_MENU\s\s*(.*)$/\1($v\n\1"\2",$v\n\1OPEN_MENU,$v\n\1"\3"$v\n\1),/; push @foo,split "\n"; } @foo2=(); for (@foo) { s/ WITH / QQQjjQQQ /; s/^(\s*)"([^"]*)"\s\s*([A-Z_][A-Z_]*)$/\1("\2", \3),/; s/^(\s*)"([^"]*)"\s+([A-Z_][A-Z_]*)\s\s*(.*)$/\1("\2", \3, \4),/; s/"(.*".*)"/JJJqqJJJ\1JJJqqJJJ/; /JJJqqJJJ/ && s/"/\\"/g; s/JJJqqJJJ/"/g; s/ QQQjjQQQ / WITH /; print "$_\n"; } EOF mv $T-p $T # # Now strip off spurious commas from lines like: # ), # ) # since comma is a property separator, not terminator. Sigh. # Also correct for another problem - Linux ex's require the CTRL-V # above; a real vi/ex doesn't; so we have to strip out any spurious # CTRL-V characters if we're using a real ex: # sed 's///g' $T | awk ' { if (last_line != null) { if ((last_line ~ /,$/) && ($0 ~ /^[ ]*\)/)) print substr(last_line, 0, length(last_line)-1) else print last_line } last_line = $0 } END { if (last_line != null) { if (last_line ~ /,$/) print substr(last_line, 0, length(last_line)-1) else print last_line } } ' > $WD/$NEW_MENU.new || exit 1 rm -f $T rm -fr $TD # # Now install it. # cd $WD if [ -s $NEW_MENU ] then echo "Preserving $NEW_MENU as $NEW_MENU.sav in $WD" mv $NEW_MENU $NEW_MENU.sav fi mv $NEW_MENU.new $NEW_MENU && echo "Created new $WD/$NEW_MENU" WindowMaker-0.95.8/util/wdwrite.c0000664000175000017500000000530312650014300013565 00000000000000/* wdwrite.c - write key/value to defaults database * * WindowMaker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif /* * WindowMaker defaults DB writer */ #include "config.h" #include #include #include #include #include #include #ifdef HAVE_STDNORETURN #include #endif #include #include "../src/wconfig.h" static const char *prog_name; static noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [OPTIONS] \n", prog_name); if (print_usage) { puts("Write for in 's database"); puts(""); puts(" -h, --help display this help message"); puts(" -v, --version output version information and exit"); } exit(exitval); } int main(int argc, char **argv) { char path[PATH_MAX]; WMPropList *key, *value, *dict; int ch; struct option longopts[] = { { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "hv", longopts, NULL)) != -1) switch(ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ case 0: break; default: print_help(0, 1); /* NOTREACHED */ } argc -= optind; argv += optind; if (argc != 3) print_help(0, 1); key = WMCreatePLString(argv[1]); value = WMCreatePropListFromDescription(argv[2]); if (!value) { printf("%s: syntax error in value \"%s\"", prog_name, argv[2]); return 1; } snprintf(path, sizeof(path), "%s", wdefaultspathfordomain(argv[0])); dict = WMReadPropListFromFile(path); if (!dict) { dict = WMCreatePLDictionary(key, value, NULL); } else { WMPutInPLDictionary(dict, key, value); } WMWritePropListToFile(dict, path); return 0; } WindowMaker-0.95.8/util/Makefile.in0000664000175000017500000011005413061001354014003 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = wxcopy$(EXEEXT) wxpaste$(EXEEXT) wdwrite$(EXEEXT) \ wdread$(EXEEXT) getstyle$(EXEEXT) setstyle$(EXEEXT) \ convertfonts$(EXEEXT) seticons$(EXEEXT) geticonset$(EXEEXT) \ wmsetbg$(EXEEXT) wmagnify$(EXEEXT) wmgenmenu$(EXEEXT) \ wmmenugen$(EXEEXT) wmiv$(EXEEXT) subdir = util ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_convertfonts_OBJECTS = convertfonts.$(OBJEXT) fontconv.$(OBJEXT) convertfonts_OBJECTS = $(am_convertfonts_OBJECTS) am__DEPENDENCIES_1 = convertfonts_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = geticonset_SOURCES = geticonset.c geticonset_OBJECTS = geticonset.$(OBJEXT) geticonset_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) am_getstyle_OBJECTS = getstyle.$(OBJEXT) fontconv.$(OBJEXT) getstyle_OBJECTS = $(am_getstyle_OBJECTS) getstyle_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) seticons_SOURCES = seticons.c seticons_OBJECTS = seticons.$(OBJEXT) seticons_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) am_setstyle_OBJECTS = setstyle.$(OBJEXT) fontconv.$(OBJEXT) setstyle_OBJECTS = $(am_setstyle_OBJECTS) setstyle_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) wdread_SOURCES = wdread.c wdread_OBJECTS = wdread.$(OBJEXT) wdread_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) wdwrite_SOURCES = wdwrite.c wdwrite_OBJECTS = wdwrite.$(OBJEXT) wdwrite_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) wmagnify_SOURCES = wmagnify.c wmagnify_OBJECTS = wmagnify.$(OBJEXT) wmagnify_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wrlib/libwraster.la am_wmgenmenu_OBJECTS = wmgenmenu.$(OBJEXT) wmgenmenu_OBJECTS = $(am_wmgenmenu_OBJECTS) wmgenmenu_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la am_wmiv_OBJECTS = wmiv.$(OBJEXT) wmiv_OBJECTS = $(am_wmiv_OBJECTS) wmiv_DEPENDENCIES = $(top_builddir)/wrlib/libwraster.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am_wmmenugen_OBJECTS = wmmenugen.$(OBJEXT) wmmenugen_misc.$(OBJEXT) \ wmmenugen_parse_wmconfig.$(OBJEXT) \ wmmenugen_parse_xdg.$(OBJEXT) wmmenugen_OBJECTS = $(am_wmmenugen_OBJECTS) wmmenugen_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la wmsetbg_SOURCES = wmsetbg.c wmsetbg_OBJECTS = wmsetbg.$(OBJEXT) wmsetbg_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wrlib/libwraster.la wxcopy_SOURCES = wxcopy.c wxcopy_OBJECTS = wxcopy.$(OBJEXT) wxcopy_DEPENDENCIES = wxpaste_SOURCES = wxpaste.c wxpaste_OBJECTS = wxpaste.$(OBJEXT) wxpaste_DEPENDENCIES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(convertfonts_SOURCES) geticonset.c $(getstyle_SOURCES) \ seticons.c $(setstyle_SOURCES) wdread.c wdwrite.c wmagnify.c \ $(wmgenmenu_SOURCES) $(wmiv_SOURCES) $(wmmenugen_SOURCES) \ wmsetbg.c wxcopy.c wxpaste.c DIST_SOURCES = $(convertfonts_SOURCES) geticonset.c \ $(getstyle_SOURCES) seticons.c $(setstyle_SOURCES) wdread.c \ wdwrite.c wmagnify.c $(wmgenmenu_SOURCES) $(wmiv_SOURCES) \ $(wmmenugen_SOURCES) wmsetbg.c wxcopy.c wxpaste.c RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" pkgdatadir = $(datadir)/@PACKAGE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ SUBDIRS = po AUTOMAKE_OPTIONS = bin_SCRIPTS = wmaker.inst wm-oldmenu2new wkdemenu.pl EXTRA_DIST = wmaker.inst.in bughint wm-oldmenu2new wkdemenu.pl AM_CPPFLAGS = \ $(DFLAGS) -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib \ @HEADER_SEARCH_PATH@ \ -DETCDIR=\"sysconfdir\" -DDATADIR=\"pkgdatadir\" liblist = @LIBRARY_SEARCH_PATH@ @INTLIBS@ wdwrite_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) wdread_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) wxcopy_LDADD = @XLFLAGS@ @XLIBS@ wxpaste_LDADD = @XLFLAGS@ @XLIBS@ getstyle_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) getstyle_SOURCES = getstyle.c fontconv.c common.h setstyle_LDADD = \ $(top_builddir)/WINGs/libWUtil.la \ @XLFLAGS@ @XLIBS@ $(liblist) setstyle_SOURCES = setstyle.c fontconv.c common.h convertfonts_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) convertfonts_SOURCES = convertfonts.c fontconv.c common.h seticons_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) geticonset_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) wmagnify_LDADD = \ $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @XLIBS@ @INTLIBS@ wmsetbg_LDADD = \ $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @LIBXINERAMA@ @XLIBS@ @INTLIBS@ wmgenmenu_LDADD = \ $(top_builddir)/WINGs/libWUtil.la \ @INTLIBS@ wmgenmenu_SOURCES = wmgenmenu.c wmgenmenu.h wmmenugen_LDADD = \ $(top_builddir)/WINGs/libWUtil.la \ @INTLIBS@ wmmenugen_SOURCES = wmmenugen.c wmmenugen.h wmmenugen_misc.c \ wmmenugen_parse_wmconfig.c \ wmmenugen_parse_xdg.c wmiv_LDADD = \ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @XLIBS@ \ @GFXLIBS@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) $(LIBEXIF) wmiv_SOURCES = wmiv.c wmiv.h CLEANFILES = wmaker.inst all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu util/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu util/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list convertfonts$(EXEEXT): $(convertfonts_OBJECTS) $(convertfonts_DEPENDENCIES) $(EXTRA_convertfonts_DEPENDENCIES) @rm -f convertfonts$(EXEEXT) $(AM_V_CCLD)$(LINK) $(convertfonts_OBJECTS) $(convertfonts_LDADD) $(LIBS) geticonset$(EXEEXT): $(geticonset_OBJECTS) $(geticonset_DEPENDENCIES) $(EXTRA_geticonset_DEPENDENCIES) @rm -f geticonset$(EXEEXT) $(AM_V_CCLD)$(LINK) $(geticonset_OBJECTS) $(geticonset_LDADD) $(LIBS) getstyle$(EXEEXT): $(getstyle_OBJECTS) $(getstyle_DEPENDENCIES) $(EXTRA_getstyle_DEPENDENCIES) @rm -f getstyle$(EXEEXT) $(AM_V_CCLD)$(LINK) $(getstyle_OBJECTS) $(getstyle_LDADD) $(LIBS) seticons$(EXEEXT): $(seticons_OBJECTS) $(seticons_DEPENDENCIES) $(EXTRA_seticons_DEPENDENCIES) @rm -f seticons$(EXEEXT) $(AM_V_CCLD)$(LINK) $(seticons_OBJECTS) $(seticons_LDADD) $(LIBS) setstyle$(EXEEXT): $(setstyle_OBJECTS) $(setstyle_DEPENDENCIES) $(EXTRA_setstyle_DEPENDENCIES) @rm -f setstyle$(EXEEXT) $(AM_V_CCLD)$(LINK) $(setstyle_OBJECTS) $(setstyle_LDADD) $(LIBS) wdread$(EXEEXT): $(wdread_OBJECTS) $(wdread_DEPENDENCIES) $(EXTRA_wdread_DEPENDENCIES) @rm -f wdread$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wdread_OBJECTS) $(wdread_LDADD) $(LIBS) wdwrite$(EXEEXT): $(wdwrite_OBJECTS) $(wdwrite_DEPENDENCIES) $(EXTRA_wdwrite_DEPENDENCIES) @rm -f wdwrite$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wdwrite_OBJECTS) $(wdwrite_LDADD) $(LIBS) wmagnify$(EXEEXT): $(wmagnify_OBJECTS) $(wmagnify_DEPENDENCIES) $(EXTRA_wmagnify_DEPENDENCIES) @rm -f wmagnify$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmagnify_OBJECTS) $(wmagnify_LDADD) $(LIBS) wmgenmenu$(EXEEXT): $(wmgenmenu_OBJECTS) $(wmgenmenu_DEPENDENCIES) $(EXTRA_wmgenmenu_DEPENDENCIES) @rm -f wmgenmenu$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmgenmenu_OBJECTS) $(wmgenmenu_LDADD) $(LIBS) wmiv$(EXEEXT): $(wmiv_OBJECTS) $(wmiv_DEPENDENCIES) $(EXTRA_wmiv_DEPENDENCIES) @rm -f wmiv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmiv_OBJECTS) $(wmiv_LDADD) $(LIBS) wmmenugen$(EXEEXT): $(wmmenugen_OBJECTS) $(wmmenugen_DEPENDENCIES) $(EXTRA_wmmenugen_DEPENDENCIES) @rm -f wmmenugen$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmmenugen_OBJECTS) $(wmmenugen_LDADD) $(LIBS) wmsetbg$(EXEEXT): $(wmsetbg_OBJECTS) $(wmsetbg_DEPENDENCIES) $(EXTRA_wmsetbg_DEPENDENCIES) @rm -f wmsetbg$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmsetbg_OBJECTS) $(wmsetbg_LDADD) $(LIBS) wxcopy$(EXEEXT): $(wxcopy_OBJECTS) $(wxcopy_DEPENDENCIES) $(EXTRA_wxcopy_DEPENDENCIES) @rm -f wxcopy$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wxcopy_OBJECTS) $(wxcopy_LDADD) $(LIBS) wxpaste$(EXEEXT): $(wxpaste_OBJECTS) $(wxpaste_DEPENDENCIES) $(EXTRA_wxpaste_DEPENDENCIES) @rm -f wxpaste$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wxpaste_OBJECTS) $(wxpaste_LDADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convertfonts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fontconv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geticonset.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getstyle.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seticons.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setstyle.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wdread.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wdwrite.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmagnify.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmgenmenu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmiv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmmenugen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmmenugen_misc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmmenugen_parse_wmconfig.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmmenugen_parse_xdg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmsetbg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxcopy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxpaste.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-binSCRIPTS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-binPROGRAMS clean-generic clean-libtool \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-binSCRIPTS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \ uninstall-binSCRIPTS .PRECIOUS: Makefile wmaker.inst: $(srcdir)/wmaker.inst.in ./Makefile $(AM_V_GEN)sed -e "s|#pkgdatadir#|$(pkgdatadir)|" \ -e "s|#sysconfdir#|$(sysconfdir)/WindowMaker|" \ -e "s|#version#|$(VERSION)|" \ -e "s|#bindir#|$(bindir)|" \ $(srcdir)/wmaker.inst.in >wmaker.inst ; \ chmod 755 wmaker.inst # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: WindowMaker-0.95.8/util/wmaker.inst.in0000664000175000017500000001720412651057551014551 00000000000000#!/bin/sh # # Install Window Maker for the current user # # xx herbert if test "x$1" = "x--batch" ; then BATCH="1" else BATCH="" fi # /xx herbert # name of menu file we install (menu, plmenu) inst_menu="" LOCALE="${LC_ALL-${LC_MESSAGES-$LANG}}" # directory where system wide configuration is stored GLOBALDIR="#pkgdatadir#" GLOBALDEFDIR="#sysconfdir#" USERDIR="$HOME" VERSION="#version#" BINDIR="#bindir#" make_dir() { mkdir "$1" chmod +rwx "$1" } make_script() { ISCRIPT="$1" cat << EOF >> "$ISCRIPT" # Window Maker default X session startup script PATH="\$PATH:$BINDIR" # If you login from xdm, uncomment this to make error messages appear # in the console window. # # tail -f "$HOME"/.xsession-errors > /dev/console & exec wmaker EOF chmod +rx "$ISCRIPT" } # # Copy files considering special cases # copy() { source="$1" target="$2" file="$(basename "$source")" rm -f "$target" if [ "$file" = "WindowMaker" ]; then sed -e "s|~/GNUstep|$GSDIR|g" "$source" > "$target" else if test "x$GNUSTEP_USER_ROOT" = "x"; then sed -e "s:#wmdatadir#:$GLOBALDIR:g" \ "$source" > "$target" else sed -e "s|\$HOME/GNUstep|$GSDIR|g" \ -e "s:#wmdatadir#:$GLOBALDIR:g" \ "$source" > "$target" fi fi } # # Generate WMRootmenu # GenerateMenu() { wmgenmenu > $GSDIR/Defaults/WMRootMenu } echo "Installing WindowMaker $VERSION for current user..." if [ ! -d "$GLOBALDIR" ]; then echo "Could not find global data files" echo "Make sure you have installed Window Maker correctly" exit 1 fi if [ ! -d "$GLOBALDEFDIR" ]; then echo "Could not find global configurations files" echo "Make sure you have installed Window Maker correctly" exit 1 fi if [ ! -d "$USERDIR" ]; then echo "Could not find user directory $USERDIR" exit 1 fi if test "x$GNUSTEP_USER_ROOT" = "x"; then cd "$USERDIR" GSDIR="$USERDIR/GNUstep" if [ ! -d "$GSDIR" ]; then echo "Creating $GSDIR user directory" make_dir "$GSDIR" fi else GSDIR="$GNUSTEP_USER_ROOT" if [ ! -d "$GSDIR" ]; then # in this case, and in this case only, mkdir needs -p option mkdir -p $GSDIR || { echo "Directory specified in GNUSTEP_USER_ROOT environment variable does not exist and could not be created" exit 1 } chmod +rwx $GSDIR || exit 1 fi cd "$GSDIR" cd .. fi if [ ! -d "$GSDIR/Defaults" ]; then make_dir "$GSDIR/Defaults" fi echo "Copying defaults database..." FILES="$(cd "$GLOBALDEFDIR" && ls -d *)" all="" for i in $FILES; do if [ ! -d "$GLOBALDEFDIR/$i" ]; then if [ -f "$GSDIR/Defaults/$i" -a -z "$BATCH" ]; then echo "The configuration file \"$i\" already exists in your defaults database." echo "Do you wish to replace it? [n] $all" if [ "$all" != "a" ]; then read foo if [ "$foo" = "a" -o "$foo" = "A" ]; then all="a" fi fi if [ "$foo" = "y" -o "$foo" = "Y" -o "$all" = "a" ]; then copy "$GLOBALDEFDIR/$i" "$GSDIR/Defaults/$i" fi else copy "$GLOBALDEFDIR/$i" "$GSDIR/Defaults/$i" fi fi done GenerateMenu if [ ! -d "$GSDIR/Library/Icons/" ]; then echo "Creating icon library directory $GSDIR/Library/Icons" if [ ! -d "$GSDIR/Library" ]; then make_dir "$GSDIR/Library" fi make_dir "$GSDIR/Library/Icons" fi if [ ! -d "$GSDIR/Library/WindowMaker/" ]; then echo "Creating WindowMaker data library directory $GSDIR/Library/WindowMaker" if [ ! -d "$GSDIR/Library" ]; then make_dir "$GSDIR/Library" fi make_dir "$GSDIR/Library/WindowMaker" fi if [ ! -d "$GSDIR/Library/WindowMaker/Styles" ]; then echo "Creating style library $GSDIR/Library/WindowMaker/Styles" make_dir "$GSDIR/Library/WindowMaker/Styles" fi if [ ! -d "$GSDIR/Library/WindowMaker/Themes" ]; then echo "Creating theme library $GSDIR/Library/WindowMaker/Themes" make_dir "$GSDIR/Library/WindowMaker/Themes" fi if [ ! -d "$GSDIR/Library/WindowMaker/Backgrounds" ]; then echo "Creating bg image library $GSDIR/Library/WindowMaker/Backgrounds" make_dir "$GSDIR/Library/WindowMaker/Backgrounds" else echo "Default Backgrounds directory already exists. Skipping..." fi if [ ! -d "$GSDIR/Library/WindowMaker/IconSets" ]; then echo "Creating icon setup library $GSDIR/Library/WindowMaker/IconSets" make_dir "$GSDIR/Library/WindowMaker/IconSets" else echo "Default IconSets directory already exists. Skipping..." fi if [ ! -d "$GSDIR/Library/WindowMaker/Pixmaps" ]; then echo "Creating pixmap library $GSDIR/Library/WindowMaker/Pixmaps" make_dir "$GSDIR/Library/WindowMaker/Pixmaps" else echo "Default Pixmaps directory already exists. Skipping..." fi if [ ! -d "$GSDIR/Library/WindowMaker/CachedPixmaps" ]; then make_dir "$GSDIR/Library/WindowMaker/CachedPixmaps" fi if [ ! -d "$GSDIR/Library/WindowMaker/WPrefs" ]; then make_dir "$GSDIR/Library/WindowMaker/WPrefs" fi if test -z "#LITE#" ; then FILES="$(cd "$GLOBALDIR" && ls menu menu.* plmenu plmenu.?? wmmacros)" for i in $FILES; do # xx herbert if [ -f "$GSDIR/Library/WindowMaker/$i" -a -z "$BATCH" ]; then # /xx herbert echo "The file \"$i\" already exists in $GSDIR/Library/WindowMaker" echo "Do you wish to replace it? [n] $all" if [ "$all" != "a" ]; then read foo if [ "$foo" = "a" -o "$foo" = "A" ]; then all="a" fi fi if [ "$foo" = "y" -o "$foo" = "Y" -o "$foo" = "a" ]; then copy "$GLOBALDIR/$i" "$GSDIR/Library/WindowMaker/$i" fi else copy "$GLOBALDIR/$i" "$GSDIR/Library/WindowMaker/$i" fi done fi cp "$GLOBALDIR/README.themes" "$GSDIR/Library/WindowMaker" cp "$GLOBALDIR/README" "$GSDIR/Library/WindowMaker" test -f "$GSDIR/Library/WindowMaker/autostart" || \ cp "$GLOBALDIR/autostart.sh" "$GSDIR/Library/WindowMaker/autostart" chmod +rx "$GSDIR/Library/WindowMaker/autostart" test -f "$GSDIR/Library/WindowMaker/exitscript" || \ cp "$GLOBALDIR/exitscript.sh" "$GSDIR/Library/WindowMaker/exitscript" chmod +rx "$GSDIR/Library/WindowMaker/exitscript" # xx herbert if test -n "$BATCH" ; then echo "Installation Finished" exit 0 fi # /xx herbert # ####################### DATE="$(date +%b%d.%T)" show_end_message() { echo echo "Installation Finished" echo echo "There are menus in 2 different file formats. The plain text format and" echo "the property list format. The plain text format is more flexible, but" echo "the menu in the property list format can be edited graphically. The" echo "menu that will be used by default is the property list one. Read" echo " $GSDIR/Library/WindowMaker/README" echo "for information on how to change it." if [ "${inst_menu%.*}" = "menu" ]; then echo "However, since you have locale set to $LOCALE and plmenu for such locale" echo "was not found, your WMRootMenu contains path to text formated menu:" echo " $GSDIR/Library/WindowMaker/$inst_menu" fi } wmaker_found=0 for xinit in .xinitrc .Xclients .xsession; do test ! -f "$HOME/$xinit" && continue res="$(grep wmaker "$HOME/$xinit")" if test "x$res" != x; then wmaker_found=1 break fi done if test "$wmaker_found" = 1; then echo "Found Window Maker to already be your default window manager." show_end_message exit 0 fi trap "show_end_message;exit" 2 echo echo "Now the .xinitrc, .Xclients or .xsession script must be updated so that" echo "it calls wmaker when you start an X session." echo "Type the name of the file that must be changed (normally .xinitrc)." echo "If the file already exists, it will be backed up with a .old.$DATE " echo "extension" echo "If you want to edit it by hand, hit -C now." read file if test "x$file" = "x"; then echo "Using .xinitrc as a default value" file=.xinitrc fi if [ -f "$USERDIR/$file" ]; then mv "$USERDIR/$file" "$USERDIR/$file.old.$DATE" fi make_script "$USERDIR/$file" show_end_message WindowMaker-0.95.8/util/fontconv.c0000664000175000017500000000741312650014300013740 00000000000000 #include #include #include #include #include "../src/wconfig.h" #include "common.h" #define DEFAULT_FONT "sans serif:pixelsize=12" /* X Font Name Suffix field names */ enum { FOUNDRY, FAMILY_NAME, WEIGHT_NAME, SLANT, SETWIDTH_NAME, ADD_STYLE_NAME, PIXEL_SIZE, POINT_SIZE, RESOLUTION_X, RESOLUTION_Y, SPACING, AVERAGE_WIDTH, CHARSET_REGISTRY, CHARSET_ENCODING }; static int countChar(const char *str, char c) { int count = 0; if (!str) return 0; for (; *str != 0; str++) { if (*str == c) { count++; } } return count; } typedef struct str { const char *str; int len; } str; #define XLFD_TOKENS 14 static str *getXLFDTokens(const char *xlfd) { static str tokens[XLFD_TOKENS]; int i, len, size; const char *ptr; /* XXX: why does this assume there can't ever be XFNextPrefix? */ if (!xlfd || *xlfd != '-' || countChar(xlfd, '-') != XLFD_TOKENS) return NULL; memset(tokens, 0, sizeof(str) * XLFD_TOKENS); len = strlen(xlfd); for (ptr = xlfd, i = 0; i < XLFD_TOKENS && len > 0; i++) { /* skip one '-' */ ptr++; len--; if (len <= 0) break; size = strcspn(ptr, "-,"); tokens[i].str = ptr; tokens[i].len = size; ptr += size; len -= size; } return tokens; } static int strToInt(str * token) { static char buf[32]; /* enough for an Incredibly Big Number */ if (token->len == 0 || token->str[0] == '*' || token->len >= sizeof(buf)) return -1; memset(buf, 0, sizeof(buf)); strncpy(buf, token->str, token->len); /* the code using this will gracefully handle overflows */ return (int)strtol(buf, NULL, 10); } static char *mapWeightToName(str * weight) { static const char *normalNames[] = { "medium", "normal", "regular" }; static char buf[32]; size_t i; if (weight->len == 0) return ""; for (i = 0; i < wlengthof(normalNames); i++) { if (strlen(normalNames[i]) == weight->len && strncmp(normalNames[i], weight->str, weight->len)) { return ""; } } snprintf(buf, sizeof(buf), ":%.*s", weight->len, weight->str); return buf; } static char *mapSlantToName(str * slant) { if (slant->len == 0) return ""; switch (slant->str[0]) { case 'i': return ":italic"; case 'o': return ":oblique"; case 'r': default: return ""; } } static char *xlfdToFc(const char *xlfd, const char *useFamily, Bool keepXLFD) { str *tokens, *family, *weight, *slant; char *name, buf[64]; int size, pixelsize; tokens = getXLFDTokens(xlfd); if (!tokens) return wstrdup(DEFAULT_FONT); family = &(tokens[FAMILY_NAME]); weight = &(tokens[WEIGHT_NAME]); slant = &(tokens[SLANT]); pixelsize = strToInt(&tokens[PIXEL_SIZE]); size = strToInt(&tokens[POINT_SIZE]); if (useFamily) { name = wstrdup(useFamily); } else { if (family->len == 0 || family->str[0] == '*') return wstrdup(DEFAULT_FONT); snprintf(buf, sizeof(buf), "%.*s", family->len, family->str); name = wstrdup(buf); } if (size > 0 && pixelsize <= 0) { snprintf(buf, sizeof(buf), "-%d", size / 10); name = wstrappend(name, buf); } name = wstrappend(name, mapWeightToName(weight)); name = wstrappend(name, mapSlantToName(slant)); if (size <= 0 && pixelsize <= 0) { name = wstrappend(name, ":pixelsize=12"); } else if (pixelsize > 0) { /* if pixelsize is present size will be ignored so we skip it */ snprintf(buf, sizeof(buf), ":pixelsize=%d", pixelsize); name = wstrappend(name, buf); } if (keepXLFD) { name = wstrappend(name, ":xlfd="); name = wstrappend(name, xlfd); } return name; } /* return converted font (if conversion is needed) else the original font */ char *convertFont(char *font, Bool keepXLFD) { if (font[0] == '-') { if (MB_CUR_MAX < 2) { return xlfdToFc(font, NULL, keepXLFD); } else { return xlfdToFc(font, "sans serif", keepXLFD); } } else { return font; } } WindowMaker-0.95.8/util/wmmenugen.c0000664000175000017500000002516113061001047014107 00000000000000/* * wmmenugen - Window Maker PropList menu generator * * Copyright (c) 2010. Tamas Tevesz * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include #include #include #include #include #include #include #include "wmmenugen.h" static void addWMMenuEntryCallback(WMMenuEntry *aEntry); static void assemblePLMenuFunc(WMTreeNode *aNode, void *data); static int dirParseFunc(const char *filename, const struct stat *st, int tflags, struct FTW *ftw); static int menuSortFunc(const void *left, const void *right); static int nodeFindSubMenuByNameFunc(const void *item, const void *cdata); static WMTreeNode *findPositionInMenu(const char *submenu); typedef void fct_parse_menufile(const char *file, cb_add_menu_entry *addWMMenuEntryCallback); typedef Bool fct_validate_filename(const char *filename, const struct stat *st, int tflags, struct FTW *ftw); static WMArray *plMenuNodes; static const char *terminal; static fct_parse_menufile *parse; static fct_validate_filename *validateFilename; static const char *prog_name; /* Global Variables from wmmenugen.h */ WMTreeNode *menu; char *env_lang, *env_ctry, *env_enc, *env_mod; static void print_help(void) { printf("Usage: %s -parser: fspec [fspec...]\n", prog_name); puts("Dynamically generate a menu in Property List format for Window Maker"); puts(""); puts(" -h, --help\t\tdisplay this help and exit"); puts(" -parser=\tspecify the format of the input, see below"); puts(" --version\t\toutput version information and exit"); puts(""); puts("fspec: the file to be converted or the directory containing all the menu files"); puts(""); puts("Known parsers:"); puts(" xdg\t\tDesktop Entry from FreeDesktop standard"); puts(" wmconfig\tfrom the menu generation tool by the same name"); } #ifdef DEBUG static const char *get_parser_name(void) { if (parse == &parse_xdg) return "xdg"; if (parse == &parse_wmconfig) return "wmconfig"; /* This case is not supposed to happen, but if it does it means that someone to update this list */ return ""; } #endif int main(int argc, char **argv) { struct stat st; int i; int *previousDepth; prog_name = argv[0]; plMenuNodes = WMCreateArray(8); /* grows on demand */ menu = (WMTreeNode *)NULL; parse = NULL; validateFilename = NULL; /* assemblePLMenuFunc passes this around */ previousDepth = (int *)wmalloc(sizeof(int)); *previousDepth = -1; /* currently this is used only by the xdg parser, but it might be useful * in the future localizing other menus, so it won't hurt to have it here. */ parse_locale(NULL, &env_lang, &env_ctry, &env_enc, &env_mod); terminal = find_terminal_emulator(); for (i = 1; i < argc; i++) { if (strncmp(argv[i], "-parser", 7) == 0 && (argv[i][7] == '=' || argv[i][7] == ':' || /* for legacy compatibility */ argv[i][7] == '\0')) { const char *name; if (argv[i][7] == '\0') { if (++i > argc) { fprintf(stderr, "%s: Missing parser name after \"-parser\"\n", prog_name); return 2; } name = argv[i]; } else { name = argv[i] + 8; } if (strcmp(name, "xdg") == 0) { parse = &parse_xdg; } else if (strcmp(name, "wmconfig") == 0) { parse = &parse_wmconfig; validateFilename = &wmconfig_validate_file; } else { fprintf(stderr, "%s: Unknown parser \"%s\"\n", prog_name, name); return 2; } continue; } if (strcmp(argv[i], "--version") == 0) { printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; } if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "-help") == 0 || strcmp(argv[i], "--help") == 0) { print_help(); return 0; } if (parse == NULL) { fprintf(stderr, "%s: argument \"%s\" with no valid parser\n", prog_name, argv[i]); return 2; } #if DEBUG fprintf(stderr, "%s: Using parser \"%s\" to process \"%s\"\n", prog_name, get_parser_name(), argv[i]); #endif if (stat(argv[i], &st) == -1) { fprintf(stderr, "%s: unable to stat \"%s\", %s\n", prog_name, argv[i], strerror(errno)); return 1; } else if (S_ISREG(st.st_mode)) { parse(argv[i], addWMMenuEntryCallback); } else if (S_ISDIR(st.st_mode)) { nftw(argv[i], dirParseFunc, 16, FTW_PHYS); } else { fprintf(stderr, "%s: \"%s\" is not a file or directory\n", prog_name, argv[i]); return 1; } } if (!menu) { fprintf(stderr, "%s: parsers failed to create a valid menu\n", prog_name); return 1; } WMSortTree(menu, menuSortFunc); WMTreeWalk(menu, assemblePLMenuFunc, previousDepth, True); i = WMGetArrayItemCount(plMenuNodes); if (i > 2) { /* more than one submenu unprocessed is almost certainly an error */ fprintf(stderr, "%s: unprocessed levels on the stack. fishy.\n", prog_name); return 3; } else if (i > 1 ) { /* possibly the top-level attachment is not yet done */ WMPropList *first, *next; next = WMPopFromArray(plMenuNodes); first = WMPopFromArray(plMenuNodes); WMAddToPLArray(first, next); WMAddToArray(plMenuNodes, first); } puts(WMGetPropListDescription((WMPropList *)WMGetFromArray(plMenuNodes, 0), True)); return 0; } static int dirParseFunc(const char *filename, const struct stat *st, int tflags, struct FTW *ftw) { (void)st; (void)tflags; (void)ftw; if (validateFilename && !validateFilename(filename, st, tflags, ftw)) return 0; parse(filename, addWMMenuEntryCallback); return 0; } /* upon fully deducing one particular menu entry, parsers call back to this * function to have said menu entry added to the wm menu. initializes wm menu * with a root element if needed. */ static void addWMMenuEntryCallback(WMMenuEntry *aEntry) { WMMenuEntry *wm; WMTreeNode *at; wm = (WMMenuEntry *)wmalloc(sizeof(WMMenuEntry)); /* this entry */ at = (WMTreeNode *)NULL; /* will be a child of this entry */ if (!menu) { WMMenuEntry *root; root = (WMMenuEntry *)wmalloc(sizeof(WMMenuEntry)); root->Name = "Applications"; root->CmdLine = NULL; root->SubMenu = NULL; root->Flags = 0; menu = WMCreateTreeNode(root); } if (aEntry->SubMenu) at = findPositionInMenu(aEntry->SubMenu); if (!at) at = menu; wm->Flags = aEntry->Flags; wm->Name = wstrdup(aEntry->Name); wm->CmdLine = wstrdup(aEntry->CmdLine); wm->SubMenu = NULL; WMAddItemToTree(at, wm); } /* creates the proplist menu out of the abstract menu representation in `menu'. */ static void assemblePLMenuFunc(WMTreeNode *aNode, void *data) { WMMenuEntry *wm; WMPropList *pl; int pDepth, cDepth; wm = (WMMenuEntry *)WMGetDataForTreeNode(aNode); cDepth = WMGetTreeNodeDepth(aNode); pDepth = *(int *)data; if (pDepth > cDepth) { /* just ascended out of a/several submenu(s) */ WMPropList *last, *but; /* merge the tail up to the current position */ int i; for (i = pDepth - cDepth; i > 0; i--) { last = WMPopFromArray(plMenuNodes); but = WMPopFromArray(plMenuNodes); WMAddToPLArray(but, last); WMAddToArray(plMenuNodes, but); } } if (!wm->CmdLine) { /* new submenu */ WMAddToArray(plMenuNodes, WMCreatePLArray(WMCreatePLString(wm->Name), NULL)); } else { /* new menu item */ pl = WMPopFromArray(plMenuNodes); if (wm->Flags & F_RESTART_OTHER) { /* RESTART, somewm */ char buf[1024]; memset(buf, 0, sizeof(buf)); snprintf(buf, sizeof(buf), "%s %s", _("Restart"), wm->Name); WMAddToPLArray(pl, WMCreatePLArray( WMCreatePLString(buf), WMCreatePLString("RESTART"), WMCreatePLString(wm->CmdLine), NULL) ); } else if (wm->Flags & F_RESTART_SELF) {/* RESTART */ WMAddToPLArray(pl, WMCreatePLArray( WMCreatePLString(_("Restart Window Maker")), WMCreatePLString("RESTART"), NULL) ); } else if (wm->Flags & F_QUIT) { /* EXIT */ WMAddToPLArray(pl, WMCreatePLArray( WMCreatePLString(_("Exit Window Maker")), WMCreatePLString("EXIT"), NULL) ); } else { /* plain simple command */ char buf[1024]; memset(buf, 0, sizeof(buf)); if (wm->Flags & F_TERMINAL) /* XXX: quoting! */ snprintf(buf, sizeof(buf), "%s -e \"%s\"", terminal, wm->CmdLine); else snprintf(buf, sizeof(buf), "%s", wm->CmdLine); WMAddToPLArray(pl, WMCreatePLArray( WMCreatePLString(wm->Name), WMCreatePLString("SHEXEC"), WMCreatePLString(buf), NULL) ); } WMAddToArray(plMenuNodes, pl); } *(int *)data = cDepth; return; } /* sort the menu tree; callback for WMSortTree() */ static int menuSortFunc(const void *left, const void *right) { WMMenuEntry *leftwm; WMMenuEntry *rightwm; leftwm = (WMMenuEntry *)WMGetDataForTreeNode(*(WMTreeNode **)left); rightwm = (WMMenuEntry *)WMGetDataForTreeNode(*(WMTreeNode **)right); /* submenus first */ if (!leftwm->CmdLine && rightwm->CmdLine) return -1; if (leftwm->CmdLine && !rightwm->CmdLine) return 1; /* the rest lexicographically */ return strcasecmp(leftwm->Name, rightwm->Name); } /* returns the leaf an entry with the submenu spec `submenu' attaches to. * creates `submenu' path (anchored to the root) along the way. */ static WMTreeNode *findPositionInMenu(const char *submenu) { char *q; WMMenuEntry *wm; WMTreeNode *node, *pnode; char buf[1024]; /* qualify submenu with "Applications/" (the root node) */ memset(buf, 0, sizeof(buf)); snprintf(buf, sizeof(buf), "Applications/%s", submenu); /* start at the root */ node = menu; q = strtok(buf, "/"); while (q) { pnode = node; node = WMFindInTreeWithDepthLimit(pnode, nodeFindSubMenuByNameFunc, q, 1); if (!node) { wm = (WMMenuEntry *)wmalloc(sizeof(WMMenuEntry)); wm->Flags = 0; wm->Name = wstrdup(q); wm->CmdLine = NULL; wm->SubMenu = NULL; node = WMAddNodeToTree(pnode, WMCreateTreeNode(wm)); } q = strtok(NULL, "/"); } return node; } /* find node where Name = cdata and node is a submenu */ static int nodeFindSubMenuByNameFunc(const void *item, const void *cdata) { WMMenuEntry *wm; wm = (WMMenuEntry *)item; if (wm->CmdLine) /* if it has a cmdline, it can't be a submenu */ return 0; return strcmp(wm->Name, (const char *)cdata) == 0; } WindowMaker-0.95.8/util/wxcopy.c0000664000175000017500000001465212650014300013440 00000000000000/* wxcopy.c- copy stdin or file into cutbuffer * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include "../src/wconfig.h" #define LINESIZE (4*1024) #define MAXDATA (64*1024) static const char *prog_name; static void print_help(void) { printf("Usage: %s [OPTIONS] [FILE]\n", prog_name); puts("Copies data from FILE or stdin into X cut buffer."); puts(""); puts(" -display display to use"); puts(" --cutbuffer cutbuffer number to put data"); puts(" --no-limit do not limit size of input data"); puts(" --clear-selection clears the current PRIMARY selection"); puts(" -h, --help display this help and exit"); puts(" -v, --version output version information and exit"); } static int errorHandler(Display * dpy, XErrorEvent * err) { /* Parameter not used, but tell the compiler that it is ok */ (void) dpy; (void) err; /* ignore all errors */ return 0; } int main(int argc, char **argv) { Display *dpy; int i; int buffer = -1; char *filename = NULL; FILE *file = stdin; char *buf = NULL; char *display_name = ""; int l = 0; int buf_len = 0; int limit_check = 1; int clear_selection = 0; prog_name = argv[0]; for (i = 1; i < argc; i++) { if (argv[i][0] == '-') { if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0) { print_help(); exit(0); } else if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--version") == 0) { printf("%s (Window Maker %s)\n", prog_name, VERSION); exit(0); } else if (strcmp(argv[i], "-cutbuffer") == 0 || strcmp(argv[i], "--cutbuffer") == 0) { if (i < argc - 1) { i++; if (sscanf(argv[i], "%i", &buffer) != 1) { fprintf(stderr, "%s: could not convert '%s' to int\n", prog_name, argv[i]); exit(1); } if (buffer < 0 || buffer > 7) { fprintf(stderr, "%s: invalid buffer number %i\n", prog_name, buffer); exit(1); } } else { printf("%s: missing argument for '%s'\n", prog_name, argv[i]); printf("Try '%s --help' for more information\n", prog_name); exit(1); } } else if (strcmp(argv[i], "-display") == 0) { if (i < argc - 1) { display_name = argv[++i]; } else { printf("%s: missing argument for '%s'\n", prog_name, argv[i]); printf("Try '%s --help' for more information\n", prog_name); exit(1); } } else if (strcmp(argv[i], "-clearselection") == 0 || strcmp(argv[i], "--clear-selection") == 0) { clear_selection = 1; } else if (strcmp(argv[i], "-nolimit") == 0 || strcmp(argv[i], "--no-limit") == 0) { limit_check = 0; } else { printf("%s: invalid argument '%s'\n", prog_name, argv[i]); printf("Try '%s --help' for more information\n", prog_name); exit(1); } } else { filename = argv[i]; } } if (filename) { file = fopen(filename, "rb"); if (!file) { char line[1024]; snprintf(line, sizeof(line), "%s: could not open \"%s\"", prog_name, filename); perror(line); exit(1); } } dpy = XOpenDisplay(display_name); XSetErrorHandler(errorHandler); if (!dpy) { fprintf(stderr, "%s: could not open display \"%s\"\n", prog_name, XDisplayName(display_name)); exit(1); } if (buffer < 0) { Atom *rootWinProps; int exists[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; int i, count; /* Create missing CUT_BUFFERs */ rootWinProps = XListProperties(dpy, DefaultRootWindow(dpy), &count); for (i = 0; i < count; i++) { switch (rootWinProps[i]) { case XA_CUT_BUFFER0: exists[0] = 1; break; case XA_CUT_BUFFER1: exists[1] = 1; break; case XA_CUT_BUFFER2: exists[2] = 1; break; case XA_CUT_BUFFER3: exists[3] = 1; break; case XA_CUT_BUFFER4: exists[4] = 1; break; case XA_CUT_BUFFER5: exists[5] = 1; break; case XA_CUT_BUFFER6: exists[6] = 1; break; case XA_CUT_BUFFER7: exists[7] = 1; break; default: break; } } if (rootWinProps) { XFree(rootWinProps); } for (i = 0; i < 8; i++) { if (!exists[i]) { XStoreBuffer(dpy, "", 0, i); } } XRotateBuffers(dpy, 1); buffer = 0; } while (!feof(file)) { char *nbuf; char tmp[LINESIZE + 2]; int nl = 0; /* * Use read() instead of fgets() to preserve NULLs, since * especially since there's no reason to read one line at a time. */ if ((nl = fread(tmp, 1, LINESIZE, file)) <= 0) { break; } if (buf_len == 0) { nbuf = malloc(buf_len = l + nl + 1); } else if (buf_len < l + nl + 1) { /* * To avoid terrible performance on big input buffers, * grow by doubling, not by the minimum needed for the * current line. */ buf_len = 2 * buf_len + nl + 1; /* some realloc implementations don't do malloc if buf==NULL */ if (buf == NULL) { nbuf = malloc(buf_len); } else { nbuf = realloc(buf, buf_len); } } else { nbuf = buf; } if (!nbuf) { fprintf(stderr, "%s: out of memory\n", prog_name); exit(1); } buf = nbuf; /* * Don't strcat, since it would make the algorithm n-squared. * Don't use strcpy, since it stops on a NUL. */ memcpy(buf + l, tmp, nl); l += nl; if (limit_check && l >= MAXDATA) { fprintf (stderr, "%s: too much data in input - more than %d bytes\n" " use the -nolimit argument to remove the limit check.\n", prog_name, MAXDATA); exit(1); } } if (clear_selection) { XSetSelectionOwner(dpy, XA_PRIMARY, None, CurrentTime); } if (buf) { XStoreBuffer(dpy, buf, l, buffer); } XFlush(dpy); XCloseDisplay(dpy); exit(buf == NULL || errno != 0); } WindowMaker-0.95.8/util/wmagnify.c0000664000175000017500000002601112650014300013720 00000000000000/* * magnify - a X utility for magnifying screen image * * 2000/5/21 Alfredo K. Kojima * * This program is in the Public Domain. */ #include #include #include #include #include #include /* * TODO: * - lens that shows where it's magnifying * * */ int refreshrate = 200; typedef struct { Drawable d; XRectangle *rects; int rectP; unsigned long lastpixel; unsigned long *buffer; int width, height; int rwidth, rheight; /* size of window in real pixels */ int magfactor; int refreshrate; WMWindow *win; WMLabel *label; WMPixmap *pixmap; WMWindow *dlg; WMSlider *speed; WMSlider *magnify; WMButton *okB; WMButton *cancelB; WMButton *newB; int x, y; Bool frozen; Bool firstDraw; Bool markPointerHotspot; WMHandlerID tid; } BufferData; static BufferData *newWindow(int magfactor); int windowCount = 0; int rectBufferSize = 32; Display *dpy, *vdpy; WMScreen *scr; unsigned int black; WMColor *cursorColor1; WMColor *cursorColor2; static BufferData *makeBufferData(WMWindow * win, WMLabel * label, int width, int height, int magfactor) { BufferData *data; data = wmalloc(sizeof(BufferData)); data->rwidth = width; data->rheight = height; data->refreshrate = refreshrate; data->firstDraw = True; data->magfactor = magfactor; data->rects = wmalloc(sizeof(XRectangle) * rectBufferSize); data->rectP = 0; data->win = win; data->label = label; data->pixmap = WMCreatePixmap(scr, width, height, WMScreenDepth(scr), False); WMSetLabelImage(data->label, data->pixmap); data->d = WMGetPixmapXID(data->pixmap); data->frozen = False; width /= magfactor; height /= magfactor; data->buffer = wmalloc(sizeof(unsigned long) * width * height); data->width = width; data->height = height; return data; } static void resizeBufferData(BufferData * data, int width, int height, int magfactor) { int w = width / magfactor; int h = height / magfactor; data->rwidth = width; data->rheight = height; data->firstDraw = True; data->magfactor = magfactor; data->buffer = wrealloc(data->buffer, sizeof(unsigned long) * w * h); data->width = w; data->height = h; memset(data->buffer, 0, w * h * sizeof(unsigned long)); WMResizeWidget(data->label, width, height); WMReleasePixmap(data->pixmap); data->pixmap = WMCreatePixmap(scr, width, height, WMScreenDepth(scr), False); WMSetLabelImage(data->label, data->pixmap); data->d = WMGetPixmapXID(data->pixmap); } static int drawpoint(BufferData * data, unsigned long pixel, int x, int y) { static GC gc = NULL; Bool flush = (x < 0); if (!flush) { if (data->buffer[x + data->width * y] == pixel && !data->firstDraw) return 0; data->buffer[x + data->width * y] = pixel; } if (gc == NULL) { gc = XCreateGC(dpy, DefaultRootWindow(dpy), 0, NULL); } if (!flush && data->lastpixel == pixel && data->rectP < rectBufferSize) { data->rects[data->rectP].x = x * data->magfactor; data->rects[data->rectP].y = y * data->magfactor; data->rects[data->rectP].width = data->magfactor; data->rects[data->rectP].height = data->magfactor; data->rectP++; return 0; } XSetForeground(dpy, gc, data->lastpixel); XFillRectangles(dpy, data->d, gc, data->rects, data->rectP); data->rectP = 0; data->rects[data->rectP].x = x * data->magfactor; data->rects[data->rectP].y = y * data->magfactor; data->rects[data->rectP].width = data->magfactor; data->rects[data->rectP].height = data->magfactor; data->rectP++; data->lastpixel = pixel; return 1; } static inline unsigned long getpix(XImage * image, int x, int y, int xoffs, int yoffs) { if (x < xoffs || y < yoffs || x >= xoffs + image->width || y >= yoffs + image->height) { return black; } return XGetPixel(image, x - xoffs, y - yoffs); } static void updateImage(BufferData * data, int rx, int ry) { int gx, gy, gw, gh; int x, y; int xoffs, yoffs; int changedPixels = 0; XImage *image; gw = data->width; gh = data->height; gx = rx - gw / 2; gy = ry - gh / 2; xoffs = yoffs = 0; if (gx < 0) { xoffs = abs(gx); gw += gx; gx = 0; } if (gx + gw >= WidthOfScreen(DefaultScreenOfDisplay(vdpy))) { gw = WidthOfScreen(DefaultScreenOfDisplay(vdpy)) - gx; } if (gy < 0) { yoffs = abs(gy); gh += gy; gy = 0; } if (gy + gh >= HeightOfScreen(DefaultScreenOfDisplay(vdpy))) { gh = HeightOfScreen(DefaultScreenOfDisplay(vdpy)) - gy; } image = XGetImage(vdpy, DefaultRootWindow(vdpy), gx, gy, gw, gh, AllPlanes, ZPixmap); for (y = 0; y < data->height; y++) { for (x = 0; x < data->width; x++) { unsigned long pixel; pixel = getpix(image, x, y, xoffs, yoffs); if (drawpoint(data, pixel, x, y)) changedPixels++; } } /* flush the point cache */ drawpoint(data, 0, -1, -1); XDestroyImage(image); if (data->markPointerHotspot && !data->frozen) { XRectangle rects[4]; rects[0].x = (data->width / 2 - 3) * data->magfactor; rects[0].y = (data->height / 2) * data->magfactor; rects[0].width = 2 * data->magfactor; rects[0].height = data->magfactor; rects[1].x = (data->width / 2 + 2) * data->magfactor; rects[1].y = (data->height / 2) * data->magfactor; rects[1].width = 2 * data->magfactor; rects[1].height = data->magfactor; XFillRectangles(dpy, data->d, WMColorGC(cursorColor1), rects, 2); rects[2].y = (data->height / 2 - 3) * data->magfactor; rects[2].x = (data->width / 2) * data->magfactor; rects[2].height = 2 * data->magfactor; rects[2].width = data->magfactor; rects[3].y = (data->height / 2 + 2) * data->magfactor; rects[3].x = (data->width / 2) * data->magfactor; rects[3].height = 2 * data->magfactor; rects[3].width = data->magfactor; XFillRectangles(dpy, data->d, WMColorGC(cursorColor2), rects + 2, 2); } if (changedPixels > 0) { WMRedisplayWidget(data->label); } data->firstDraw = False; } static void update(void *d) { BufferData *data = (BufferData *) d; Window win; int rx, ry; int bla; unsigned ubla; if (data->frozen) { rx = data->x; ry = data->y; } else { XQueryPointer(dpy, DefaultRootWindow(dpy), &win, &win, &rx, &ry, &bla, &bla, &ubla); } updateImage(data, rx, ry); data->tid = WMAddTimerHandler(data->refreshrate, update, data); } static void resizedWindow(void *d, WMNotification * notif) { BufferData *data = (BufferData *) d; WMView *view = (WMView *) WMGetNotificationObject(notif); WMSize size; size = WMGetViewSize(view); resizeBufferData(data, size.width, size.height, data->magfactor); } static void closeWindow(WMWidget * w, void *d) { BufferData *data = (BufferData *) d; windowCount--; if (windowCount == 0) { WMReleaseApplication(); exit(0); } else { WMDeleteTimerHandler(data->tid); WMDestroyWidget(w); wfree(data->buffer); wfree(data->rects); WMReleasePixmap(data->pixmap); wfree(data); } } static void keyHandler(XEvent * event, void *d) { BufferData *data = (BufferData *) d; char buf[32]; KeySym ks; WMView *view = WMWidgetView(data->win); WMSize size; size = WMGetViewSize(view); if (XLookupString(&event->xkey, buf, 31, &ks, NULL) > 0) { switch (buf[0]) { case 'n': newWindow(data->magfactor); break; case 'm': data->markPointerHotspot = !data->markPointerHotspot; break; case 'f': case ' ': data->frozen = !data->frozen; if (data->frozen) { data->x = event->xkey.x_root; data->y = event->xkey.y_root; sprintf(buf, "[Magnify %ix]", data->magfactor); } else { sprintf(buf, "Magnify %ix", data->magfactor); } WMSetWindowTitle(data->win, buf); break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': resizeBufferData(data, size.width, size.height, buf[0] - '0'); if (data->frozen) { sprintf(buf, "[Magnify %ix]", data->magfactor); } else { sprintf(buf, "Magnify %ix", data->magfactor); } WMSetWindowTitle(data->win, buf); break; } } } static BufferData *newWindow(int magfactor) { WMWindow *win; WMLabel *label; BufferData *data; char buf[32]; windowCount++; win = WMCreateWindow(scr, "magnify"); WMResizeWidget(win, 300, 200); sprintf(buf, "Magnify %ix", magfactor); WMSetWindowTitle(win, buf); WMSetViewNotifySizeChanges(WMWidgetView(win), True); label = WMCreateLabel(win); WMResizeWidget(label, 300, 200); WMMoveWidget(label, 0, 0); WMSetLabelRelief(label, WRSunken); WMSetLabelImagePosition(label, WIPImageOnly); data = makeBufferData(win, label, 300, 200, magfactor); WMCreateEventHandler(WMWidgetView(win), KeyReleaseMask, keyHandler, data); WMAddNotificationObserver(resizedWindow, data, WMViewSizeDidChangeNotification, WMWidgetView(win)); WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); WMSetWindowCloseAction(win, closeWindow, data); data->tid = WMAddTimerHandler(refreshrate, update, data); return data; } int main(int argc, char **argv) { int i; char *display = ""; char *vdisplay = NULL; int magfactor = 2; WMInitializeApplication("Magnify", &argc, argv); for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-display") == 0) { i++; if (i >= argc) goto help; display = argv[i]; } else if (strcmp(argv[i], "-vdisplay") == 0) { i++; if (i >= argc) goto help; vdisplay = argv[i]; } else if (strcmp(argv[i], "-m") == 0) { i++; if (i >= argc) goto help; magfactor = atoi(argv[i]); if (magfactor < 1 || magfactor > 32) { printf("%s:invalid magnification factor ``%s''\n", argv[0], argv[i]); exit(1); } } else if (strcmp(argv[i], "-r") == 0) { i++; if (i >= argc) goto help; refreshrate = atoi(argv[i]); if (refreshrate < 1) { printf("%s:invalid refresh rate ``%s''\n", argv[0], argv[i]); exit(1); } } else if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0) { help: printf("Usage: %s [options]\n", argv[0]); puts("Options:"); puts(" -display \tdisplay where to magnification is shown"); puts(" -m \t\tchange magnification factor (default 2)"); puts(" -r \t\tchange refresh delay, in milliseconds (default 200)"); puts(" -vdisplay \tdisplay from which the magnification is taken"); puts(" -h, --help\t\tdisplay this help page"); puts("Keys:"); puts(" 1,2,3,4,5,6,7,8,9 change the magnification factor"); puts(" , f freeze the 'camera', making it magnify only the current\n" " position"); puts(" n create a new window"); puts(" m show/hide the pointer hotspot mark"); exit(0); } } dpy = XOpenDisplay(display); if (!dpy) { puts("could not open display"); exit(1); } if (vdisplay) { vdpy = XOpenDisplay(vdisplay); if (!vdpy) { puts("could not open display to be viewed"); exit(1); } } else { vdpy = dpy; } /* calculate how many rectangles we can send in a trip to the server */ rectBufferSize = XMaxRequestSize(dpy) - 128; rectBufferSize /= sizeof(XRectangle); if (rectBufferSize < 1) rectBufferSize = 1; black = BlackPixel(dpy, DefaultScreen(dpy)); scr = WMCreateScreen(dpy, 0); cursorColor1 = WMCreateNamedColor(scr, "#ff0000", False); cursorColor2 = WMCreateNamedColor(scr, "#00ff00", False); newWindow(magfactor); WMScreenMainLoop(scr); return 0; } WindowMaker-0.95.8/util/wmgenmenu.h0000664000175000017500000004167212650014300014120 00000000000000/* wmgenmenu.h * * Copyright (C) 2010 Carlos R. Mafra * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* * If the program should run from inside a terminal it has * to end with a space followed by '!', e.g. "mutt !" */ char *Terminals[MAX_NR_APPS][2] = { { N_("xterm"), "xterm" }, { N_("mrxvt"), "mrxvt" }, { N_("Konsole"), "konsole" }, { N_("Urxvt"), "urxvt" }, { NULL, NULL } }; char *File_managers[MAX_NR_APPS][2] = { { N_("Dolphin"), "dolphin" }, { N_("Thunar"), "thunar" }, { N_("ROX filer"), "rox" }, { N_("PCManFM"), "pcmanfm" }, { N_("GWorkspace"), "GWorkspace" }, { N_("Midnight Commander"), "mc !" }, { N_("XFTree"), "xftree" }, { N_("Konqueror"), "konqueror" }, { N_("Nautilus"), "nautilus --no-desktop" }, { N_("FSViewer"), "FSViewer" }, { N_("Xfe"), "xfe" }, { NULL, NULL } }; char *Mathematics[MAX_NR_APPS][2] = { { N_("Xmaxima"), "xmaxima" }, { N_("Maxima"), "maxima !" }, { N_("Maple"), "maple" }, { N_("Scilab"), "scilab" }, { N_("bc"), "bc !" }, { N_("KCalc"), "kcalc" }, { N_("XCalc"), "xcalc" }, { N_("Mathematica"), "mathematica" }, { N_("Math"), "math !" }, /* command-line Mathematica */ { N_("Free42"), "free42" }, { N_("X48"), "x48" }, { NULL, NULL } }; char *Astronomy[MAX_NR_APPS][2] = { { N_("Xplns"), "xplns" }, { N_("Stellarium"), "stellarium" }, { NULL, NULL } }; char *Graphics[MAX_NR_APPS][2] = { { N_("GIMP"), "gimp" }, { N_("Sodipodi"), "sodipodi" }, { N_("Inkscape"), "inkscape" }, { N_("KIllustrator"), "killustrator" }, { N_("Krayon"), "krayon" }, { N_("KPovModeler"), "kpovmodeler" }, { N_("XBitmap"), "bitmap" }, { N_("XPaint"), "xpaint" }, { N_("XFig"), "xfig" }, { N_("KPaint"), "kpaint" }, { N_("Blender"), "blender" }, { N_("KSnapshot"), "ksnapshot" }, { N_("GPhoto"), "gphoto" }, { N_("DigiKam"), "digikam" }, { N_("GQview"), "gqview" }, { N_("Geeqie"), "geeqie" }, { N_("KView"), "kview" }, { N_("Dia"), "dia" }, { N_("CompuPic"), "compupic" }, { N_("Pixie"), "pixie" }, { N_("ImageMagick Display"), "display" }, { N_("XV"), "xv" }, { N_("Eye of GNOME"), "eog" }, { N_("Quick Image Viewer"), "qiv" }, { NULL, NULL }, }; char *Multimedia[MAX_NR_APPS][2] = { { N_("Audacious"), "audacious" }, { N_("Kaffeine"), "kaffeine", }, { N_("Audacity"), "audacity" }, { N_("Amarok"), "amarok" }, { N_("XMMS"), "xmms" }, { N_("K9Copy"), "k9copy" }, { N_("HandBrake"), "HandBrakeGUI" }, { N_("OGMRip"), "ogmrip" }, { N_("DVBcut"), "dvbcut" }, { N_("AcidRip"), "acidrip" }, { N_("RipperX"), "ripperX" }, { N_("Avidemux"), "avidemux2_gtk" }, { N_("GQmpeg"), "gqmpeg" }, { N_("SMPlayer"), "smplayer" }, { N_("Linux MultiMedia Studio"), "lmms" }, { N_("Freeamp"), "freeamp" }, { N_("RealPlayer"), "realplay" }, { N_("Mediathek"), "Mediathek.sh" }, { N_("KMid"), "kmid" }, { N_("Kmidi"), "kmidi" }, { N_("Gtcd"), "gtcd" }, { N_("Grip"), "grip" }, { N_("AVIplay"), "aviplay" }, { N_("Gtv"), "gtv" }, { N_("VLC"), "vlc" }, { N_("Sinek"), "sinek" }, { N_("xine"), "xine" }, { N_("aKtion"), "aktion" }, { N_("Gcd"), "gcd" }, { N_("XawTV"), "xawtv" }, { N_("XPlayCD"), "xplaycd" }, { N_("XBMC"), "xbmc" }, { NULL, NULL} }; char *Internet[MAX_NR_APPS][2] = { { N_("Chromium"), "chromium" }, { N_("Chromium"), "chromium-browser" }, { N_("Google Chrome"), "google-chrome" }, { N_("Mozilla Firefox"), "firefox" }, { N_("Galeon"), "galeon" }, { N_("SkipStone"), "skipstone" }, { N_("Konqueror"), "konqueror" }, { N_("Dillo"), "dillo" }, { N_("Epiphany"), "epiphany" }, { N_("Opera"), "opera" }, { N_("Midori"), "midori" }, { N_("Mozilla SeaMonkey"), "seamonkey" }, { N_("Kazehakase"), "kazehakase" }, { N_("Links"), "links !" }, { N_("Lynx"), "lynx !" }, { N_("W3M"), "w3m !" }, { NULL, NULL } }; char *Email[MAX_NR_APPS][2] = { { N_("Mozilla Thunderbird"), "thunderbird" }, { N_("Mutt"), "mutt !" }, { N_("GNUMail"), "GNUMail" }, { N_("Claws Mail"), "claws-mail" }, { N_("Evolution"), "evolution" }, { N_("Kleopatra"), "kleopatra" }, { N_("Sylpheed"), "sylpheed" }, { N_("Spruce"), "spruce" }, { N_("KMail"), "kmail" }, { N_("Exmh"), "exmh" }, { N_("Pine"), "pine !" }, { N_("ELM"), "elm !" }, { N_("Alpine"), "alpine !" }, { NULL, NULL } }; char *Sound[MAX_NR_APPS][2] = { { N_("soundKonverter"), "soundkonverter" }, { N_("Krecord"), "krecord" }, { N_("Grecord"), "grecord" }, { N_("ALSA mixer"), "alsamixer !" }, { N_("VolWheel"), "volwheel" }, { N_("Sound configuration"), "sndconfig !" }, { N_("aumix"), "aumix !" }, { N_("Gmix"), "gmix" }, { NULL, NULL } }; char *Editors[MAX_NR_APPS][2] = { { N_("XJed"), "xjed" }, { N_("Jed"), "jed !" }, { N_("Emacs"), "emacs" }, { N_("XEmacs"), "xemacs" }, { N_("SciTE"), "scite" }, { N_("Bluefish"), "bluefish" }, { N_("gVIM"), "gvim" }, { N_("vi"), "vi !" }, { N_("VIM"), "vim !" }, { N_("gedit"), "gedit" }, { N_("KEdit"), "kedit" }, { N_("XEdit"), "xedit" }, { N_("KWrite"), "kwrite" }, { N_("Kate"), "kate" }, { N_("Pico"), "pico !" }, { N_("Nano"), "nano !" }, { N_("Joe"), "joe !" }, { NULL, NULL } }; char *Comics[MAX_NR_APPS][2] = { { N_("Omnia data"), "omnia_data" }, { N_("Comix"), "comix" }, { N_("QComicBook"), "qcomicbook" }, { NULL, NULL } }; char *Viewers[MAX_NR_APPS][2] = { { N_("Evince"), "evince" }, { N_("KGhostView"), "kghostview" }, { N_("gv"), "gv" }, { N_("ePDFView"), "epdfview" }, { N_("GGv"), "ggv" }, { N_("Xdvi"), "xdvi" }, { N_("KDVI"), "kdvi" }, { N_("Xpdf"), "xpdf" }, { N_("Adobe Reader"), "acroread" }, { N_("Gless"), "gless" }, { NULL, NULL } }; char *Utilities[MAX_NR_APPS][2] = { { N_("Google Desktop"), "gdlinux" }, { N_("K3B"), "k3b" }, { N_("X-CD-Roast"), "xcdroast" }, { N_("Nero Linux"), "nero" }, { N_("Nero Linux Express"), "neroexpress" }, { N_("gtkfind"), "gtkfind" }, { N_("gdict"), "gdict" }, { N_("gpsdrive"), "gpsdrive" }, { N_("Task Coach"), "taskcoach" }, { N_("XSnap"), "xsnap" }, { N_("Screengrab"), "screengrab" }, { N_("XSane"), "xsane" }, { N_("wfcmgr"), "wfcmgr" }, { N_("switch"), "switch" }, { N_("Cairo Clock"), "cairo-clock" }, { N_("Conky"), "conky" }, { N_("GNU Privacy Assistant"), "gpa" }, { N_("Vidalia (tor)"), "vidalia" }, { N_("kaddressbook"), "kaddressbook" }, { N_("kab"), "kab" }, { N_("Filezilla"), "filezilla" }, { N_("Bleachbit"), "bleachbit" }, { N_("Teamviewer"), "teamviewer" }, { N_("gUVCView"), "guvcview" }, { N_("LinPopUp"), "linpopup" }, { N_("Wine Configurator"), "winecfg" }, { N_("NMap"), "nmapfe" }, { N_("Hydra"), "xhydra" }, { N_("XTeddy"), "xteddy" }, { N_("XTeddy TEST"), "xteddy_test" }, { N_("VNC Viewer"), "vncviewer" }, { N_("Java Control Panel"), "ControlPanel" }, { N_("kfind"), "kfind" }, { N_("oclock"), "oclock" }, { N_("rclock"), "rclock" }, { N_("Isomaster"), "isomaster" }, { N_("xclock"), "xclock" }, { N_("HP Systray"), "hp-systray" }, { N_("kppp"), "kppp" }, { N_("Xarchiver"), "xarchiver" }, { NULL, NULL } }; char *Video[MAX_NR_APPS][2] = { { NULL, NULL } }; char *Chat[MAX_NR_APPS][2] = { { N_("Pidgin"), "pidgin" }, { N_("Skype"), "skype" }, { N_("Gizmo"), "gizmo" }, { N_("Gajim"), "gajim" }, { N_("Kopete"), "kopete" }, { N_("XChat"), "xchat" }, { N_("Ekiga"), "Ekiga" }, { N_("KVIrc"), "kvirc" }, { N_("BitchX"), "BitchX !" }, { N_("EPIC"), "epic !" }, { N_("Linphone"), "linphone" }, { N_("Mumble"), "mumble" }, { N_("EPIC4"), "epic4 !" }, { N_("Irssi"), "irssi !" }, { N_("TinyIRC"), "tinyirc !" }, { N_("Ksirc"), "ksirc" }, { N_("gtalk"), "gtalk" }, { N_("GnomeICU"), "gnome-icu" }, { N_("Licq"), "licq" }, { N_("aMSN"), "amsn" }, { NULL, NULL } }; char *P2P[MAX_NR_APPS][2] = { { N_("aMule"), "amule" }, { N_("gFTP"), "gftp" }, { N_("Smb4K"), "smb4k" }, { N_("KTorrent"), "ktorrent" }, { N_("BitTorrent GUI"), "bittorrent-gui" }, { N_("Transmission GTK"), "transmission-gtk" }, { N_("ftp"), "ftp !" }, { N_("Deluge"), "deluge-gtk" }, { N_("sftp"), "sftp !" }, { N_("Pavuk"), "pavuk" }, { N_("gtm"), "gtm !" }, { N_("Gnut"), "gnut !" }, { N_("GTK Gnutella"), "gtk-gnutella" }, { N_("Gnutmeg"), "gnutmeg" }, { NULL, NULL } }; char *Games[MAX_NR_APPS][2] = { { N_("FlightGear Flight Simulator"), "fgfs" }, { N_("Tremulous"), "tremulous" }, { N_("XBoard"), "xboard" }, { N_("GNOME Chess"), "gnome-chess" }, { N_("Darkplaces (Quake 1)"), "darkplaces" }, { N_("QuakeSpasm (Quake 1)"), "quakespasm" }, { N_("Quake 2"), "quake2" }, { N_("KM Quake 2 (Quake 2"), "kmquake2" }, { N_("QMax (Quake 2"), "quake2-qmax" }, { N_("Quake 3"), "quake3" }, { N_("Quake 4"), "quake4" }, { N_("Quake 4 SMP"), "quake4-smp" }, { N_("Openarena"), "openarena" }, { N_("Quake 3: Urban Terror 2"), "q3ut2" }, { N_("Soldier of Fortune"), "sof" }, { N_("Rune"), "rune" }, { N_("Doom 3"), "doom3" }, { N_("Zelda Solarus"), "solarus" }, { N_("Solarwolf"), "solarwolf" }, { N_("Pachi"), "pachi" }, { N_("Tribes 2"), "tribes2" }, { N_("GNUjump"), "gnujump" }, { N_("Supertransball 2"), "supertransball2" }, { N_("Supertux"), "supertux" }, { N_("Supertux 2"), "supertux2" }, { N_("Mega Mario"), "megamario" }, { N_("Frogatto"), "frogatto" }, { N_("Minecraft"), "minecraft" }, { N_("Alienarena"), "alienarena" }, { N_("Nexuiz"), "nexuiz" }, { N_("Bomberclone"), "bomberclone" }, { N_("Chromium-BSU"), "chromium-bsu" }, { N_("Clanbomber"), "clanbomber" }, { N_("Clanbomber 2"), "clanbomber2" }, { N_("Defendguin"), "defendguin" }, { N_("Dosbox"), "dosbox" }, { N_("Duke Nukem 3D"), "duke3d" }, { N_("eDuke32"), "eduke32" }, { N_("Emilia Pinball"), "emilia-pinball" }, { N_("Extreme-Tuxracer"), "etracer" }, { N_("Freedroid RPG"), "freedroidRPG" }, { N_("Frozen Bubble"), "frozen-bubble" }, { N_("Frozen Bubble Editor"), "frozen-bubble-editor" }, { N_("GL 117"), "gl-117" }, { N_("LBreakout 2"), "lbreakout2" }, { N_("Legends"), "legends" }, { N_("Lincity-NG"), "lincity-ng" }, { N_("Neverball"), "neverball" }, { N_("Neverput"), "neverput" }, { N_("Openastromenace"), "openastromenace" }, { N_("Penguin Command"), "penguin-command" }, { N_("Powermanga"), "powermanga" }, { N_("Return to Castle Wolfenstein SP"), "rtcwsp" }, { N_("Return to Castle Wolfenstein MP"), "rtcwmp" }, { N_("Snes9X"), "snes9x-gtk" }, { N_("Slune"), "slune" }, { N_("Torcs"), "torcs" }, { N_("Speed Dreams"), "speed-dreams" }, { N_("Trackballs"), "trackballs" }, { N_("VDrift"), "vdrift" }, { N_("Warmux"), "warmux" }, { N_("Warsow"), "warsow" }, { N_("Wesnoth"), "wesnoth" }, { N_("World of Padman"), "worldofpadman" }, { N_("XBlast"), "xblast" }, { N_("XPenguins"), "xpenguins" }, { N_("XTux"), "xtux" }, { N_("The Mana World"), "tmw" }, { N_("The Mana World"), "mana" }, { N_("Super Mario Chronicles"), "smc" }, { N_("Unreal"), "unreal" }, { N_("Unreal Tournament"), "ut" }, { N_("Unreal Tournament 2004"), "ut2004" }, { N_("Xonotic"), "xonotic" }, { N_("Descent 3"), "descent3" }, { N_("Myth 2"), "myth2" }, { N_("Sauerbraten"), "sauerbraten" }, { N_("Sauerbraten"), "sauerbraten-client" }, { N_("Sauerbraten"), "sauer_client" }, { N_("Railroad Tycoon 2"), "rt2" }, { N_("Heretic 2"), "heretic2" }, { N_("Kohan"), "kohan" }, { N_("XQF"), "xqf" }, { NULL, NULL } }; char *Office[MAX_NR_APPS][2] = { { N_("OpenOffice.org Writer"), "oowriter" }, { N_("OpenOffice.org Calc"), "oocalc" }, { N_("OpenOffice.org Draw"), "oodraw" }, { N_("OpenOffice.org Impress"), "ooimpress" }, { N_("OpenOffice.org Math"), "oomath" }, { N_("OpenOffice.org"), "ooffice" }, { N_("StarOffice Writer"), "swriter" }, { N_("StarOffice Calc"), "scalc" }, { N_("StarOffice Draw"), "sdraw" }, { N_("StarOffice Impress"), "simpress" }, { N_("StarOffice Math"), "smath" }, { N_("StarOffice"), "soffice" }, { N_("LibreOffice Writer"), "lowriter" }, { N_("LibreOffice Calc"), "localc" }, { N_("LibreOffice Draw"), "lodraw" }, { N_("LibreOffice Impress"), "loimpress" }, { N_("LibreOffice Math"), "lomath" }, { N_("LibreOffice Base"), "lobase" }, { N_("LibreOffice Web"), "loweb" }, { N_("LibreOffice"), "libreoffice" }, { N_("AbiWord"), "abiword" }, { N_("KWord"), "kword" }, { N_("KPresenter"), "kpresenter" }, { N_("KSpread"), "kspread" }, { N_("KChart"), "kchart" }, { N_("KOrganizer"), "Korganizer" }, { N_("LyX"), "lyx" }, { N_("Klyx"), "klyx" }, { N_("GnuCash"), "gnucash" }, { N_("Gnumeric"), "gnumeric" }, { N_("GnomeCal"), "gnomecal" }, { N_("GnomeCard"), "gnomecard" }, { NULL, NULL } }; char *Development[MAX_NR_APPS][2] = { { N_("gitk"), "gitk" }, { N_("gitview"), "gitview" }, { N_("qgit"), "qgit" }, { N_("git-gui"), "git-gui" }, { N_("glimmer"), "glimmer" }, { N_("glade"), "glade" }, { N_("Geany"), "geany" }, { N_("Codeblocks"), "codeblocks" }, { N_("kdevelop"), "kdevelop" }, { N_("designer"), "designer" }, { N_("kbabel"), "kbabel" }, { N_("idle"), "idle" }, { N_("ghex"), "ghex" }, { N_("hexedit"), "hexedit !" }, { N_("memprof"), "memprof" }, { N_("tclsh"), "tclsh !" }, { N_("gdb"), "gdb !" }, { N_("xxgdb"), "xxgdb" }, { N_("xev"), "xev !" }, { NULL, NULL } }; char *System[MAX_NR_APPS][2] = { { N_("Iotop"), "iotop -d 4 --only !" }, { N_("Iostat"), "iostat -p -k 5 !" }, { N_("keybconf"), "keybconf" }, { N_("GNOME System Monitor"), "gtop" }, { N_("top"), "top !" }, { N_("KDE Process Monitor"), "kpm" }, { N_("gw"), "gw" }, { N_("GNOME Control Center"), "gnomecc" }, { N_("GKrellM"), "gkrellm" }, { N_("tksysv"), "tksysv" }, { N_("ksysv"), "ksysv" }, { N_("GNOME PPP"), "gnome-ppp" }, { NULL, NULL } }; char *OpenSUSE[MAX_NR_APPS][2] = { { N_("YaST 2"), "yast2" }, { N_("YaST"), "yast !" }, { N_("System Settings"), "systemsettings" }, { N_("UMTSMon"), "umtsmon" }, { NULL, NULL } }; char *Mandriva[MAX_NR_APPS][2] = { { N_("DrakNetCenter"), "draknetcenter" }, { N_("RPMDrake"), "rpmdrake" }, { N_("HardDrake"), "harddrake" }, { N_("DrakConf"), "drakconf" }, { N_("MandrakeUpdate"), "MandrakeUpdate" }, { N_("XDrakRes"), "Xdrakres" }, { NULL, NULL } }; char *WindowMaker[MAX_NR_APPS][2] = { { N_("Docker"), "docker -wmaker" }, { N_("Net"), "wmnet -d 100000 -Weth0" }, { N_("Net Load"), "wmnetload" }, { N_("Ping"), "wmping" }, { N_("Ping"), "wmpiki" }, { N_("Power"), "wmpower" }, { N_("Audacious"), "wmauda" }, { N_("Harddisk Monitor"), "wmdiskmon" }, { N_("Download"), "wmdl" }, { N_("Dots"), "wmdots" }, { N_("Matrix"), "wmMatrix" }, { N_("Fire"), "wmfire" }, { N_("Net send"), "wmpopup" }, { N_("Laptop"), "wmlaptop2" }, { N_("WiFi"), "wmwifi -s" }, { N_("Interface Info"), "wmifinfo" }, { N_("Weather"), "wmWeather" }, { N_("Weather"), "wmWeather+" }, { N_("Sticky Notes"), "wmstickynotes" }, { N_("Pinboard"), "wmpinboard" }, { N_("Mixer"), "wmmixer++ -w" }, { N_("Mixer"), "wmmixer" }, { N_("Weather"), "wmWeather -m -s EDDB" }, { N_("CPU Load"), "wmcpuload" }, { N_("CPU Freq"), "wmcpufreq" }, { N_("Memory Load"), "wmmemload" }, { N_("Memory Free"), "wmmemfree" }, { N_("Memory Monitor"), "wmmemmon" }, { N_("Clock Mon"), "wmclockmon" }, { N_("Network Devices"), "wmnd" }, { N_("Calendar & Clock"), "wmCalclock -S" }, { N_("Time"), "wmtime" }, { N_("Date"), "wmdate" }, { N_("Time & Date"), "wmclock" }, { N_("System Monitor"), "wmmon" }, { N_("System Monitor"), "wmsysmon" }, { N_("Sensor Monitor"), "wmsorsen" }, { N_("System Tray"), "wmsystemtray" }, { N_("System Tray"), "wmsystray" }, { N_("SMP Monitor"), "wmSMPmon" }, { N_("Timer"), "wmtimer" }, { N_("Mounter"), "wmudmount" }, { N_("Mounter"), "wmvolman" }, { N_("Uptime"), "wmupmon" }, { N_("Work Timer"), "wmwork" }, { N_("Interfaces"), "wmifs" }, { N_("Button"), "wmbutton" }, { N_("xmms"), "wmxmms" }, { N_("Power"), "wmpower" }, { N_("Magnify"), "wmagnify" }, { NULL, NULL } }; char *other_wm[MAX_WMS][2] = { { N_("IceWM"), "icewm" }, { N_("KWin"), "kwin" }, { N_("twm"), "twm" }, { N_("Fluxbox"), "fluxbox" }, { N_("Blackbox"), "blackbox" }, { N_("Ion"), "ion" }, { N_("Motif Window Manager"), "mwm" }, { N_("FVWM"), "fvwm" }, { N_("FVWM-Crystal"), "fvwm-crystal" }, { NULL, NULL } }; WindowMaker-0.95.8/util/po/0000775000175000017500000000000013061001366012436 500000000000000WindowMaker-0.95.8/util/po/fr.po0000664000175000017500000005421412650014300013326 00000000000000# wmgenmenu French translation # Copyright (C) 2011 Camille d'Alméras # This file is distributed under the same license as the Window Maker package. # Camille d'Alméras , 2011. # msgid "" msgstr "" "Project-Id-Version: wmgenmenu\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-02-10 00:04+0100\n" "PO-Revision-Date: 2011-02-05 12:19-0500\n" "Last-Translator: Camille d'Alméras \n" "Language-Team: French\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Root -> Applications #: ../../util/wmgenmenu.c:103 msgid "Applications" msgstr "Applications" #. Root -> Applications -> #: ../../util/wmgenmenu.c:106 msgid "Terminals" msgstr "Terminaux" #. always keep terminals the top item #: ../../util/wmgenmenu.c:107 msgid "Internet" msgstr "Internet" #: ../../util/wmgenmenu.c:108 msgid "Email" msgstr "Courriel" #: ../../util/wmgenmenu.c:109 msgid "Mathematics" msgstr "Mathématiques" #: ../../util/wmgenmenu.c:110 msgid "File Managers" msgstr "Gestionnaires de fichiers" #: ../../util/wmgenmenu.c:111 msgid "Graphics" msgstr "Graphisme" #: ../../util/wmgenmenu.c:112 msgid "Multimedia" msgstr "Multimédia" #: ../../util/wmgenmenu.c:113 msgid "Editors" msgstr "Éditeurs" #: ../../util/wmgenmenu.c:114 msgid "Development" msgstr "Développement" #: ../../util/wmgenmenu.c:116 msgid "Office" msgstr "Bureautique" #: ../../util/wmgenmenu.c:117 msgid "Astronomy" msgstr "Astronomie" #: ../../util/wmgenmenu.c:118 msgid "Sound" msgstr "Son" #: ../../util/wmgenmenu.c:119 msgid "Comics" msgstr "Bandes dessinées" #: ../../util/wmgenmenu.c:120 msgid "Viewers" msgstr "Visualiseurs" #: ../../util/wmgenmenu.c:121 msgid "Utilities" msgstr "Utilitaires" #: ../../util/wmgenmenu.c:122 msgid "System" msgstr "Système" #: ../../util/wmgenmenu.c:123 msgid "Video" msgstr "Vidéo" #: ../../util/wmgenmenu.c:124 msgid "Chat and Talk" msgstr "Conversation" #: ../../util/wmgenmenu.c:125 msgid "P2P Network" msgstr "Partage poste à poste" #: ../../util/wmgenmenu.c:126 msgid "Games" msgstr "Jeux" #: ../../util/wmgenmenu.c:134 msgid "Run..." msgstr "Exécuter..." #: ../../util/wmgenmenu.c:136 #, c-format msgid "%A(Run, Type command:)" msgstr "%A(Exécuter, Tapez une commande:)" #. Root -> Appearance #: ../../util/wmgenmenu.c:142 msgid "Appearance" msgstr "Apparence" #: ../../util/wmgenmenu.c:146 msgid "Themes" msgstr "Thèmes" #: ../../util/wmgenmenu.c:155 msgid "Styles" msgstr "Styles" #: ../../util/wmgenmenu.c:164 msgid "Icon Sets" msgstr "Jeux d'icônes" #. Root -> Appearance -> Background #: ../../util/wmgenmenu.c:172 msgid "Background" msgstr "Fond d'écran" #. Root -> Appearance -> Background -> Solid #: ../../util/wmgenmenu.c:175 msgid "Solid" msgstr "Uni" #. Root -> Appearance -> Background -> Solid -> #: ../../util/wmgenmenu.c:187 msgid "Black" msgstr "Noir" #: ../../util/wmgenmenu.c:188 msgid "Blue" msgstr "Bleu turquin" #: ../../util/wmgenmenu.c:189 msgid "Indigo" msgstr "Bleu de cobalt" #: ../../util/wmgenmenu.c:190 msgid "Bluemarine" msgstr "Bleu marine" #: ../../util/wmgenmenu.c:191 msgid "Purple" msgstr "Améthyste foncé" #: ../../util/wmgenmenu.c:192 msgid "Wheat" msgstr "Bistre" #: ../../util/wmgenmenu.c:193 msgid "Dark Gray" msgstr "Gris de Payne" #: ../../util/wmgenmenu.c:194 msgid "Wine" msgstr "Bordeaux" #. Root -> Appearance -> Background -> Gradient #: ../../util/wmgenmenu.c:199 msgid "Gradient" msgstr "Dégradé" #: ../../util/wmgenmenu.c:213 msgid "Sunset" msgstr "Coucher de soleil" #: ../../util/wmgenmenu.c:220 msgid "Sky" msgstr "Ciel" #: ../../util/wmgenmenu.c:221 msgid "Blue Shades" msgstr "Dégradé de bleu turquin" #: ../../util/wmgenmenu.c:222 msgid "Indigo Shades" msgstr "Dégradé de bleu de cobalt" #: ../../util/wmgenmenu.c:223 msgid "Purple Shades" msgstr "Dégradé d'améthyste foncé" #: ../../util/wmgenmenu.c:224 msgid "Wheat Shades" msgstr "Dégradé de bistre" #: ../../util/wmgenmenu.c:225 msgid "Grey Shades" msgstr "Dégradé d'anthracite" #: ../../util/wmgenmenu.c:226 msgid "Wine Shades" msgstr "Dégradé de bordeaux" #: ../../util/wmgenmenu.c:232 msgid "Images" msgstr "Images" #: ../../util/wmgenmenu.c:243 msgid "Save Theme" msgstr "Enregistrer le thème" #: ../../util/wmgenmenu.c:253 msgid "Save IconSet" msgstr "Enregistrer le jeu d'icônes" #: ../../util/wmgenmenu.c:264 msgid "Workspaces" msgstr "Bureaux" #. Root -> Workspace #: ../../util/wmgenmenu.c:271 msgid "Workspace" msgstr "Bureau" #: ../../util/wmgenmenu.c:273 msgid "Hide Others" msgstr "Cacher les autres" #: ../../util/wmgenmenu.c:281 msgid "Show All" msgstr "Tout montrer" #: ../../util/wmgenmenu.c:289 msgid "Arrange Icons" msgstr "Organiser les icônes" #: ../../util/wmgenmenu.c:297 msgid "Refresh" msgstr "Actualiser" #: ../../util/wmgenmenu.c:305 msgid "Save Session" msgstr "Enregistrer la session" #: ../../util/wmgenmenu.c:313 msgid "Clear Session" msgstr "Réinitialiser la session" #: ../../util/wmgenmenu.c:322 msgid "Configure Window Maker" msgstr "Configurer Window Maker" #: ../../util/wmgenmenu.c:331 msgid "Info Panel" msgstr "Panneau d'information" #: ../../util/wmgenmenu.c:339 msgid "Restart Window Maker" msgstr "Redémarrer Window Maker" #: ../../util/wmgenmenu.c:352 msgid "Lock Screen" msgstr "Verrouiller l'écran" #: ../../util/wmgenmenu.c:363 msgid "Exit Window Maker" msgstr "Quitter Window Maker" #: ../../util/wmgenmenu.c:458 #, c-format msgid "Start %s" msgstr "Lancer %s" #: ../../util/wmgenmenu.c:468 msgid "Other Window Managers" msgstr "Autres gestionnaires de fenêtres" #: ../../util/wmgenmenu.h:9 msgid "xterm" msgstr "" #: ../../util/wmgenmenu.h:10 msgid "mrxvt" msgstr "" #: ../../util/wmgenmenu.h:11 msgid "Konsole" msgstr "" #: ../../util/wmgenmenu.h:16 msgid "Dolphin" msgstr "" #: ../../util/wmgenmenu.h:17 msgid "Thunar" msgstr "" #: ../../util/wmgenmenu.h:18 msgid "ROX filer" msgstr "" #: ../../util/wmgenmenu.h:19 msgid "GWorkspace" msgstr "" #: ../../util/wmgenmenu.h:20 msgid "Midnight Commander" msgstr "" #: ../../util/wmgenmenu.h:21 msgid "XFTree" msgstr "" #: ../../util/wmgenmenu.h:22 ../../util/wmgenmenu.h:118 msgid "Konqueror" msgstr "" #: ../../util/wmgenmenu.h:23 msgid "Nautilus" msgstr "" #: ../../util/wmgenmenu.h:24 msgid "FSViewer" msgstr "" #: ../../util/wmgenmenu.h:25 msgid "Xfe" msgstr "" #: ../../util/wmgenmenu.h:30 msgid "Xmaxima" msgstr "" #: ../../util/wmgenmenu.h:31 msgid "Maxima" msgstr "" #: ../../util/wmgenmenu.h:32 msgid "Maple" msgstr "" #: ../../util/wmgenmenu.h:33 msgid "Scilab" msgstr "" #: ../../util/wmgenmenu.h:34 msgid "bc" msgstr "" #: ../../util/wmgenmenu.h:35 msgid "KCalc" msgstr "" #: ../../util/wmgenmenu.h:36 msgid "XCalc" msgstr "" #: ../../util/wmgenmenu.h:37 msgid "Mathematica" msgstr "" #: ../../util/wmgenmenu.h:38 msgid "Math" msgstr "" #. command-line Mathematica #: ../../util/wmgenmenu.h:39 msgid "Free42" msgstr "" #: ../../util/wmgenmenu.h:40 msgid "X48" msgstr "" #: ../../util/wmgenmenu.h:45 msgid "Xplns" msgstr "" #: ../../util/wmgenmenu.h:46 msgid "Stellarium" msgstr "" #: ../../util/wmgenmenu.h:51 msgid "GIMP" msgstr "" #: ../../util/wmgenmenu.h:52 msgid "Sodipodi" msgstr "" #: ../../util/wmgenmenu.h:53 msgid "Inkscape" msgstr "" #: ../../util/wmgenmenu.h:54 msgid "KIllustrator" msgstr "" #: ../../util/wmgenmenu.h:55 msgid "Krayon" msgstr "" #: ../../util/wmgenmenu.h:56 msgid "KPovModeler" msgstr "" #: ../../util/wmgenmenu.h:57 msgid "XBitmap" msgstr "" #: ../../util/wmgenmenu.h:58 msgid "XPaint" msgstr "" #: ../../util/wmgenmenu.h:59 msgid "XFig" msgstr "" #: ../../util/wmgenmenu.h:60 msgid "KPaint" msgstr "" #: ../../util/wmgenmenu.h:61 msgid "Blender" msgstr "" #: ../../util/wmgenmenu.h:62 msgid "KSnapshot" msgstr "" #: ../../util/wmgenmenu.h:63 msgid "GPhoto" msgstr "" #: ../../util/wmgenmenu.h:64 msgid "DigiKam" msgstr "" #: ../../util/wmgenmenu.h:65 msgid "Dia" msgstr "" #: ../../util/wmgenmenu.h:66 msgid "CompuPic" msgstr "" #: ../../util/wmgenmenu.h:67 msgid "GQview" msgstr "" #: ../../util/wmgenmenu.h:68 msgid "Geeqie" msgstr "" #: ../../util/wmgenmenu.h:69 msgid "KView" msgstr "" #: ../../util/wmgenmenu.h:70 msgid "Pixie" msgstr "" #: ../../util/wmgenmenu.h:71 msgid "ImageMagick Display" msgstr "" #: ../../util/wmgenmenu.h:72 msgid "XV" msgstr "" #: ../../util/wmgenmenu.h:73 msgid "Eye of GNOME" msgstr "" #: ../../util/wmgenmenu.h:74 msgid "Quick Image Viewer" msgstr "" #: ../../util/wmgenmenu.h:79 msgid "Audacious" msgstr "" #: ../../util/wmgenmenu.h:80 ../../util/wmgenmenu.h:216 msgid "Kaffeine" msgstr "" #: ../../util/wmgenmenu.h:81 msgid "Audacity" msgstr "" #: ../../util/wmgenmenu.h:82 msgid "Amarok" msgstr "" #: ../../util/wmgenmenu.h:83 msgid "XMMS" msgstr "" #: ../../util/wmgenmenu.h:84 msgid "K9Copy" msgstr "" #: ../../util/wmgenmenu.h:85 msgid "HandBrake" msgstr "" #: ../../util/wmgenmenu.h:86 msgid "OGMRip" msgstr "" #: ../../util/wmgenmenu.h:87 msgid "DVBcut" msgstr "" #: ../../util/wmgenmenu.h:88 msgid "AcidRip" msgstr "" #: ../../util/wmgenmenu.h:89 msgid "Avidemux" msgstr "" #: ../../util/wmgenmenu.h:90 msgid "GQmpeg" msgstr "" #: ../../util/wmgenmenu.h:91 msgid "Freeamp" msgstr "" #: ../../util/wmgenmenu.h:92 msgid "RealPlayer" msgstr "" #: ../../util/wmgenmenu.h:93 msgid "Mediathek" msgstr "" #: ../../util/wmgenmenu.h:94 msgid "KMid" msgstr "" #: ../../util/wmgenmenu.h:95 msgid "Kmidi" msgstr "" #: ../../util/wmgenmenu.h:96 msgid "Gtcd" msgstr "" #: ../../util/wmgenmenu.h:97 msgid "Grip" msgstr "" #: ../../util/wmgenmenu.h:98 msgid "AVIplay" msgstr "" #: ../../util/wmgenmenu.h:99 msgid "Gtv" msgstr "" #: ../../util/wmgenmenu.h:100 msgid "VLC" msgstr "" #: ../../util/wmgenmenu.h:101 msgid "Sinek" msgstr "" #: ../../util/wmgenmenu.h:102 msgid "xine" msgstr "" #: ../../util/wmgenmenu.h:103 msgid "aKtion" msgstr "" #: ../../util/wmgenmenu.h:104 msgid "Gcd" msgstr "" #: ../../util/wmgenmenu.h:105 msgid "XawTV" msgstr "" #: ../../util/wmgenmenu.h:106 msgid "X-CD-Roast" msgstr "" #: ../../util/wmgenmenu.h:107 msgid "XPlayCD" msgstr "" #: ../../util/wmgenmenu.h:112 ../../util/wmgenmenu.h:113 msgid "Chromium" msgstr "" #: ../../util/wmgenmenu.h:114 msgid "Google Chrome" msgstr "" #: ../../util/wmgenmenu.h:115 msgid "Mozilla Firefox" msgstr "" #: ../../util/wmgenmenu.h:116 msgid "Galeon" msgstr "" #: ../../util/wmgenmenu.h:117 msgid "SkipStone" msgstr "" #: ../../util/wmgenmenu.h:119 msgid "Dillo" msgstr "" #: ../../util/wmgenmenu.h:120 msgid "Epiphany" msgstr "" #: ../../util/wmgenmenu.h:121 msgid "Opera" msgstr "" #: ../../util/wmgenmenu.h:122 msgid "Midori" msgstr "" #: ../../util/wmgenmenu.h:123 msgid "Mozilla SeaMonkey" msgstr "" #: ../../util/wmgenmenu.h:124 msgid "Kazehakase" msgstr "" #: ../../util/wmgenmenu.h:125 msgid "Links" msgstr "" #: ../../util/wmgenmenu.h:126 msgid "Lynx" msgstr "" #: ../../util/wmgenmenu.h:127 msgid "W3M" msgstr "" #: ../../util/wmgenmenu.h:132 msgid "Mozilla Thunderbird" msgstr "" #: ../../util/wmgenmenu.h:133 msgid "Mutt" msgstr "" #: ../../util/wmgenmenu.h:134 msgid "GNUMail" msgstr "" #: ../../util/wmgenmenu.h:135 msgid "Evolution" msgstr "" #: ../../util/wmgenmenu.h:136 msgid "Kleopatra" msgstr "" #: ../../util/wmgenmenu.h:137 msgid "Sylpheed" msgstr "" #: ../../util/wmgenmenu.h:138 msgid "Spruce" msgstr "" #: ../../util/wmgenmenu.h:139 msgid "KMail" msgstr "" #: ../../util/wmgenmenu.h:140 msgid "Exmh" msgstr "" #: ../../util/wmgenmenu.h:141 msgid "Pine" msgstr "" #: ../../util/wmgenmenu.h:142 msgid "ELM" msgstr "" #: ../../util/wmgenmenu.h:143 msgid "Alpine" msgstr "" #: ../../util/wmgenmenu.h:148 msgid "soundKonverter" msgstr "" #: ../../util/wmgenmenu.h:149 msgid "Krecord" msgstr "" #: ../../util/wmgenmenu.h:150 msgid "Grecord" msgstr "" #: ../../util/wmgenmenu.h:151 msgid "ALSA mixer" msgstr "" #: ../../util/wmgenmenu.h:152 msgid "Sound configuration" msgstr "" #: ../../util/wmgenmenu.h:153 msgid "aumix" msgstr "" #: ../../util/wmgenmenu.h:154 msgid "Gmix" msgstr "" #: ../../util/wmgenmenu.h:159 msgid "XJed" msgstr "" #: ../../util/wmgenmenu.h:160 msgid "Jed" msgstr "" #: ../../util/wmgenmenu.h:161 msgid "Emacs" msgstr "" #: ../../util/wmgenmenu.h:162 msgid "XEmacs" msgstr "" #: ../../util/wmgenmenu.h:163 msgid "gVIM" msgstr "" #: ../../util/wmgenmenu.h:164 msgid "vi" msgstr "" #: ../../util/wmgenmenu.h:165 msgid "VIM" msgstr "" #: ../../util/wmgenmenu.h:166 msgid "gedit" msgstr "" #: ../../util/wmgenmenu.h:167 msgid "KEdit" msgstr "" #: ../../util/wmgenmenu.h:168 msgid "XEdit" msgstr "" #: ../../util/wmgenmenu.h:169 msgid "KWrite" msgstr "" #: ../../util/wmgenmenu.h:170 msgid "Kate" msgstr "" #: ../../util/wmgenmenu.h:171 msgid "Pico" msgstr "" #: ../../util/wmgenmenu.h:172 msgid "Nano" msgstr "" #: ../../util/wmgenmenu.h:173 msgid "Joe" msgstr "" #: ../../util/wmgenmenu.h:178 msgid "Omnia data" msgstr "" #: ../../util/wmgenmenu.h:179 msgid "Comix" msgstr "" #: ../../util/wmgenmenu.h:180 msgid "QComicBook" msgstr "" #: ../../util/wmgenmenu.h:185 msgid "Evince" msgstr "" #: ../../util/wmgenmenu.h:186 msgid "KGhostView" msgstr "" #: ../../util/wmgenmenu.h:187 msgid "gv" msgstr "" #: ../../util/wmgenmenu.h:188 msgid "GGv" msgstr "" #: ../../util/wmgenmenu.h:189 msgid "Xdvi" msgstr "" #: ../../util/wmgenmenu.h:190 msgid "KDVI" msgstr "" #: ../../util/wmgenmenu.h:191 msgid "Xpdf" msgstr "" #: ../../util/wmgenmenu.h:192 msgid "Adobe Reader" msgstr "" #: ../../util/wmgenmenu.h:193 msgid "Gless" msgstr "" #: ../../util/wmgenmenu.h:198 msgid "Google Desktop" msgstr "" #: ../../util/wmgenmenu.h:199 msgid "K3B" msgstr "" #: ../../util/wmgenmenu.h:200 msgid "gtkfind" msgstr "" #: ../../util/wmgenmenu.h:201 msgid "gdict" msgstr "" #: ../../util/wmgenmenu.h:202 msgid "gpsdrive" msgstr "" #: ../../util/wmgenmenu.h:203 msgid "wfcmgr" msgstr "" #: ../../util/wmgenmenu.h:204 msgid "switch" msgstr "" #: ../../util/wmgenmenu.h:205 msgid "kaddressbook" msgstr "" #: ../../util/wmgenmenu.h:206 msgid "kab" msgstr "" #: ../../util/wmgenmenu.h:207 msgid "kfind" msgstr "" #: ../../util/wmgenmenu.h:208 msgid "oclock" msgstr "" #: ../../util/wmgenmenu.h:209 msgid "rclock" msgstr "" #: ../../util/wmgenmenu.h:210 msgid "xclock" msgstr "" #: ../../util/wmgenmenu.h:211 msgid "kppp" msgstr "" #: ../../util/wmgenmenu.h:217 msgid "Ekiga" msgstr "" #: ../../util/wmgenmenu.h:222 msgid "Pidgin" msgstr "" #: ../../util/wmgenmenu.h:223 msgid "Skype" msgstr "" #: ../../util/wmgenmenu.h:224 msgid "Gizmo" msgstr "" #: ../../util/wmgenmenu.h:225 msgid "Kopete" msgstr "" #: ../../util/wmgenmenu.h:226 msgid "XChat" msgstr "" #: ../../util/wmgenmenu.h:227 msgid "KVIrc" msgstr "" #: ../../util/wmgenmenu.h:228 msgid "BitchX" msgstr "" #: ../../util/wmgenmenu.h:229 msgid "EPIC" msgstr "" #: ../../util/wmgenmenu.h:230 msgid "EPIC4" msgstr "" #: ../../util/wmgenmenu.h:231 msgid "Irssi" msgstr "" #: ../../util/wmgenmenu.h:232 msgid "TinyIRC" msgstr "" #: ../../util/wmgenmenu.h:233 msgid "Ksirc" msgstr "" #: ../../util/wmgenmenu.h:234 msgid "gtalk" msgstr "" #: ../../util/wmgenmenu.h:235 msgid "GnomeICU" msgstr "" #: ../../util/wmgenmenu.h:236 msgid "Licq" msgstr "" #: ../../util/wmgenmenu.h:237 msgid "aMSN" msgstr "" #: ../../util/wmgenmenu.h:242 msgid "aMule" msgstr "" #: ../../util/wmgenmenu.h:243 msgid "gFTP" msgstr "" #: ../../util/wmgenmenu.h:244 msgid "Smb4K" msgstr "" #: ../../util/wmgenmenu.h:245 msgid "KTorrent" msgstr "" #: ../../util/wmgenmenu.h:246 msgid "BitTorrent GUI" msgstr "" #: ../../util/wmgenmenu.h:247 msgid "ftp" msgstr "" #: ../../util/wmgenmenu.h:248 msgid "sftp" msgstr "" #: ../../util/wmgenmenu.h:249 msgid "Pavuk" msgstr "" #: ../../util/wmgenmenu.h:250 msgid "gtm" msgstr "" #: ../../util/wmgenmenu.h:251 msgid "Gnut" msgstr "" #: ../../util/wmgenmenu.h:252 msgid "GTK Gnutella" msgstr "" #: ../../util/wmgenmenu.h:253 msgid "Gnutmeg" msgstr "" #: ../../util/wmgenmenu.h:258 msgid "FlightGear Flight Simulator" msgstr "" #: ../../util/wmgenmenu.h:259 msgid "Tremulous" msgstr "" #: ../../util/wmgenmenu.h:260 msgid "XBoard" msgstr "" #: ../../util/wmgenmenu.h:261 msgid "GNOME Chess" msgstr "" #: ../../util/wmgenmenu.h:262 msgid "Quake 2" msgstr "" #: ../../util/wmgenmenu.h:263 msgid "Quake 3" msgstr "" #: ../../util/wmgenmenu.h:264 msgid "Quake 3: Urban Terror 2" msgstr "" #: ../../util/wmgenmenu.h:265 msgid "Soldier of Fortune" msgstr "" #: ../../util/wmgenmenu.h:266 msgid "Rune" msgstr "" #: ../../util/wmgenmenu.h:267 msgid "Tribes 2" msgstr "" #: ../../util/wmgenmenu.h:268 msgid "Unreal Tournament" msgstr "" #: ../../util/wmgenmenu.h:269 msgid "Descent 3" msgstr "" #: ../../util/wmgenmenu.h:270 msgid "Myth 2" msgstr "" #: ../../util/wmgenmenu.h:271 ../../util/wmgenmenu.h:272 msgid "Sauerbraten" msgstr "" #: ../../util/wmgenmenu.h:273 msgid "Railroad Tycoon 2" msgstr "" #: ../../util/wmgenmenu.h:274 msgid "Heretic 2" msgstr "" #: ../../util/wmgenmenu.h:275 msgid "Kohan" msgstr "" #: ../../util/wmgenmenu.h:276 msgid "XQF" msgstr "" #: ../../util/wmgenmenu.h:281 msgid "OpenOffice.org Writer" msgstr "" #: ../../util/wmgenmenu.h:282 msgid "OpenOffice.org Calc" msgstr "" #: ../../util/wmgenmenu.h:283 msgid "OpenOffice.org Draw" msgstr "" #: ../../util/wmgenmenu.h:284 msgid "OpenOffice.org Impress" msgstr "" #: ../../util/wmgenmenu.h:285 msgid "OpenOffice.org Math" msgstr "" #: ../../util/wmgenmenu.h:286 msgid "OpenOffice.org" msgstr "" #: ../../util/wmgenmenu.h:287 msgid "StarOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:288 msgid "StarOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:289 msgid "StarOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:290 msgid "StarOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:291 msgid "StarOffice Math" msgstr "" #: ../../util/wmgenmenu.h:292 msgid "StarOffice" msgstr "" #: ../../util/wmgenmenu.h:293 msgid "AbiWord" msgstr "" #: ../../util/wmgenmenu.h:294 msgid "KWord" msgstr "" #: ../../util/wmgenmenu.h:295 msgid "KPresenter" msgstr "" #: ../../util/wmgenmenu.h:296 msgid "KSpread" msgstr "" #: ../../util/wmgenmenu.h:297 msgid "KChart" msgstr "" #: ../../util/wmgenmenu.h:298 msgid "KOrganizer" msgstr "" #: ../../util/wmgenmenu.h:299 msgid "LyX" msgstr "" #: ../../util/wmgenmenu.h:300 msgid "Klyx" msgstr "" #: ../../util/wmgenmenu.h:301 msgid "GnuCash" msgstr "" #: ../../util/wmgenmenu.h:302 msgid "Gnumeric" msgstr "" #: ../../util/wmgenmenu.h:303 msgid "GnomeCal" msgstr "" #: ../../util/wmgenmenu.h:304 msgid "GnomeCard" msgstr "" #: ../../util/wmgenmenu.h:309 msgid "gitk" msgstr "" #: ../../util/wmgenmenu.h:310 msgid "gitview" msgstr "" #: ../../util/wmgenmenu.h:311 msgid "qgit" msgstr "" #: ../../util/wmgenmenu.h:312 msgid "git-gui" msgstr "" #: ../../util/wmgenmenu.h:313 msgid "glimmer" msgstr "" #: ../../util/wmgenmenu.h:314 msgid "glade" msgstr "" #: ../../util/wmgenmenu.h:315 msgid "kdevelop" msgstr "" #: ../../util/wmgenmenu.h:316 msgid "designer" msgstr "" #: ../../util/wmgenmenu.h:317 msgid "kbabel" msgstr "" #: ../../util/wmgenmenu.h:318 msgid "idle" msgstr "" #: ../../util/wmgenmenu.h:319 msgid "ghex" msgstr "" #: ../../util/wmgenmenu.h:320 msgid "hexedit" msgstr "" #: ../../util/wmgenmenu.h:321 msgid "memprof" msgstr "" #: ../../util/wmgenmenu.h:322 msgid "tclsh" msgstr "" #: ../../util/wmgenmenu.h:323 msgid "gdb" msgstr "" #: ../../util/wmgenmenu.h:324 msgid "xxgdb" msgstr "" #: ../../util/wmgenmenu.h:325 msgid "xev" msgstr "" #: ../../util/wmgenmenu.h:330 msgid "Iotop" msgstr "" #: ../../util/wmgenmenu.h:331 msgid "Iostat" msgstr "" #: ../../util/wmgenmenu.h:332 msgid "keybconf" msgstr "" #: ../../util/wmgenmenu.h:333 msgid "GNOME System Monitor" msgstr "" #: ../../util/wmgenmenu.h:334 msgid "top" msgstr "" #: ../../util/wmgenmenu.h:335 msgid "KDE Process Monitor" msgstr "" #: ../../util/wmgenmenu.h:336 msgid "gw" msgstr "" #: ../../util/wmgenmenu.h:337 msgid "GNOME Control Center" msgstr "" #: ../../util/wmgenmenu.h:338 msgid "GKrellM" msgstr "" #: ../../util/wmgenmenu.h:339 msgid "tksysv" msgstr "" #: ../../util/wmgenmenu.h:340 msgid "ksysv" msgstr "" #: ../../util/wmgenmenu.h:341 msgid "GNOME PPP" msgstr "" #: ../../util/wmgenmenu.h:346 msgid "YaST 2" msgstr "" #: ../../util/wmgenmenu.h:347 msgid "YaST" msgstr "" #: ../../util/wmgenmenu.h:348 msgid "System Settings" msgstr "" #: ../../util/wmgenmenu.h:349 msgid "UMTSMon" msgstr "" #: ../../util/wmgenmenu.h:354 msgid "DrakNetCenter" msgstr "" #: ../../util/wmgenmenu.h:355 msgid "RPMDrake" msgstr "" #: ../../util/wmgenmenu.h:356 msgid "HardDrake" msgstr "" #: ../../util/wmgenmenu.h:357 msgid "DrakConf" msgstr "" #: ../../util/wmgenmenu.h:358 msgid "MandrakeUpdate" msgstr "" #: ../../util/wmgenmenu.h:359 msgid "XDrakRes" msgstr "" #: ../../util/wmgenmenu.h:364 msgid "Docker" msgstr "" #: ../../util/wmgenmenu.h:365 msgid "Net" msgstr "" #: ../../util/wmgenmenu.h:366 ../../util/wmgenmenu.h:387 msgid "Power" msgstr "" #: ../../util/wmgenmenu.h:367 msgid "Laptop" msgstr "" #: ../../util/wmgenmenu.h:368 msgid "WiFi" msgstr "" #: ../../util/wmgenmenu.h:369 msgid "Interface Info" msgstr "" #: ../../util/wmgenmenu.h:370 ../../util/wmgenmenu.h:373 msgid "Weather" msgstr "" #: ../../util/wmgenmenu.h:371 msgid "Sticky Notes" msgstr "" #: ../../util/wmgenmenu.h:372 msgid "Mixer" msgstr "" #: ../../util/wmgenmenu.h:374 msgid "CPU Load" msgstr "" #: ../../util/wmgenmenu.h:375 msgid "CPU Freq" msgstr "" #: ../../util/wmgenmenu.h:376 msgid "Clock Mon" msgstr "" #: ../../util/wmgenmenu.h:377 msgid "Network Devices" msgstr "" #: ../../util/wmgenmenu.h:378 msgid "Calendar & Clock" msgstr "" #: ../../util/wmgenmenu.h:379 msgid "Time" msgstr "" #: ../../util/wmgenmenu.h:380 msgid "Date" msgstr "" #: ../../util/wmgenmenu.h:381 ../../util/wmgenmenu.h:382 msgid "System Monitor" msgstr "" #: ../../util/wmgenmenu.h:383 msgid "SMP Monitor" msgstr "" #: ../../util/wmgenmenu.h:384 msgid "Interfaces" msgstr "" #: ../../util/wmgenmenu.h:385 msgid "Button" msgstr "" #: ../../util/wmgenmenu.h:386 msgid "xmms" msgstr "" #: ../../util/wmgenmenu.h:388 msgid "Magnify" msgstr "" #: ../../util/wmgenmenu.h:393 msgid "IceWM" msgstr "" #: ../../util/wmgenmenu.h:394 msgid "KWin" msgstr "" #: ../../util/wmgenmenu.h:395 msgid "twm" msgstr "" #: ../../util/wmgenmenu.h:396 msgid "Fluxbox" msgstr "" #: ../../util/wmgenmenu.h:397 msgid "Blackbox" msgstr "" #: ../../util/wmgenmenu.h:398 msgid "Ion" msgstr "" #: ../../util/wmgenmenu.h:399 msgid "Motif Window Manager" msgstr "" #: ../../util/wmgenmenu.h:400 msgid "FVWM" msgstr "" WindowMaker-0.95.8/util/po/README0000664000175000017500000000033512650014300013232 00000000000000File Language Note Current Maintainer ------------------------------------------------------------------------------ nl.po Dutch Alwin fy.po Frisian Alwin Notes ----- WindowMaker-0.95.8/util/po/es.po0000664000175000017500000005414512650014300013331 00000000000000# wmgenmenu Spanish translation # Copyright (C) 2011 Camille d'Alméras # This file is distributed under the same license as the Window Maker package. # Camille d'Alméras , 2011. # msgid "" msgstr "" "Project-Id-Version: wmgenmenu\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-02-10 00:04+0100\n" "PO-Revision-Date: 2011-02-05 12:19-0500\n" "Last-Translator: Camille d'Alméras \n" "Language-Team: Spanish\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Root -> Applications #: ../../util/wmgenmenu.c:103 msgid "Applications" msgstr "Aplicaciones" #. Root -> Applications -> #: ../../util/wmgenmenu.c:106 msgid "Terminals" msgstr "Terminales" #. always keep terminals the top item #: ../../util/wmgenmenu.c:107 msgid "Internet" msgstr "Internet" #: ../../util/wmgenmenu.c:108 msgid "Email" msgstr "Correo electrónico" #: ../../util/wmgenmenu.c:109 msgid "Mathematics" msgstr "Matemáticas" #: ../../util/wmgenmenu.c:110 msgid "File Managers" msgstr "Gestores de archivos" #: ../../util/wmgenmenu.c:111 msgid "Graphics" msgstr "Gráficos" #: ../../util/wmgenmenu.c:112 msgid "Multimedia" msgstr "Multimedia" #: ../../util/wmgenmenu.c:113 msgid "Editors" msgstr "Editores" #: ../../util/wmgenmenu.c:114 msgid "Development" msgstr "Desarrollo" #: ../../util/wmgenmenu.c:116 msgid "Office" msgstr "Ofimática" #: ../../util/wmgenmenu.c:117 msgid "Astronomy" msgstr "Astronomía" #: ../../util/wmgenmenu.c:118 msgid "Sound" msgstr "Sonido" #: ../../util/wmgenmenu.c:119 msgid "Comics" msgstr "Tiras cómicas" #: ../../util/wmgenmenu.c:120 msgid "Viewers" msgstr "Visualizadores" #: ../../util/wmgenmenu.c:121 msgid "Utilities" msgstr "Utilidades" #: ../../util/wmgenmenu.c:122 msgid "System" msgstr "Sistema" #: ../../util/wmgenmenu.c:123 msgid "Video" msgstr "Video" #: ../../util/wmgenmenu.c:124 msgid "Chat and Talk" msgstr "Conversación" #: ../../util/wmgenmenu.c:125 msgid "P2P Network" msgstr "Redes P2P" #: ../../util/wmgenmenu.c:126 msgid "Games" msgstr "Juegos" #: ../../util/wmgenmenu.c:134 msgid "Run..." msgstr "Ejecutar..." #: ../../util/wmgenmenu.c:136 #, c-format msgid "%A(Run, Type command:)" msgstr "%A(Ejecutar, Ingrese un comando:)" #. Root -> Appearance #: ../../util/wmgenmenu.c:142 msgid "Appearance" msgstr "Apariencia" #: ../../util/wmgenmenu.c:146 msgid "Themes" msgstr "Temas" #: ../../util/wmgenmenu.c:155 msgid "Styles" msgstr "Estilos" #: ../../util/wmgenmenu.c:164 msgid "Icon Sets" msgstr "Conjuntos de íconos" #. Root -> Appearance -> Background #: ../../util/wmgenmenu.c:172 msgid "Background" msgstr "Fondo de pantalla" #. Root -> Appearance -> Background -> Solid #: ../../util/wmgenmenu.c:175 msgid "Solid" msgstr "Plano" #. Root -> Appearance -> Background -> Solid -> #: ../../util/wmgenmenu.c:187 msgid "Black" msgstr "Negro" #: ../../util/wmgenmenu.c:188 msgid "Blue" msgstr "Amatista oscuro" #: ../../util/wmgenmenu.c:189 msgid "Indigo" msgstr "Añil" #: ../../util/wmgenmenu.c:190 msgid "Bluemarine" msgstr "Turquí" #: ../../util/wmgenmenu.c:191 msgid "Purple" msgstr "Púrpura" #: ../../util/wmgenmenu.c:192 msgid "Wheat" msgstr "Pardo" #: ../../util/wmgenmenu.c:193 msgid "Dark Gray" msgstr "Gris de Payne" #: ../../util/wmgenmenu.c:194 msgid "Wine" msgstr "Vino tinto" #. Root -> Appearance -> Background -> Gradient #: ../../util/wmgenmenu.c:199 msgid "Gradient" msgstr "Degradado" #: ../../util/wmgenmenu.c:213 msgid "Sunset" msgstr "Puesta del sol" #: ../../util/wmgenmenu.c:220 msgid "Sky" msgstr "Cielo" #: ../../util/wmgenmenu.c:221 msgid "Blue Shades" msgstr "Degradado de amatista oscuro" #: ../../util/wmgenmenu.c:222 msgid "Indigo Shades" msgstr "Degradado de añil" #: ../../util/wmgenmenu.c:223 msgid "Purple Shades" msgstr "Degradado de púrpura" #: ../../util/wmgenmenu.c:224 msgid "Wheat Shades" msgstr "Degradado de pardo" #: ../../util/wmgenmenu.c:225 msgid "Grey Shades" msgstr "Degradado de gris de Payne" #: ../../util/wmgenmenu.c:226 msgid "Wine Shades" msgstr "Degradado de vino tinto" #: ../../util/wmgenmenu.c:232 msgid "Images" msgstr "Imágenes" #: ../../util/wmgenmenu.c:243 msgid "Save Theme" msgstr "Guardar el tema" #: ../../util/wmgenmenu.c:253 msgid "Save IconSet" msgstr "Guardar el conjunto de íconos" #: ../../util/wmgenmenu.c:264 msgid "Workspaces" msgstr "Escritorios" #. Root -> Workspace #: ../../util/wmgenmenu.c:271 msgid "Workspace" msgstr "Escritorio" #: ../../util/wmgenmenu.c:273 msgid "Hide Others" msgstr "Ocultar los demás" #: ../../util/wmgenmenu.c:281 msgid "Show All" msgstr "Mostrar todo" #: ../../util/wmgenmenu.c:289 msgid "Arrange Icons" msgstr "Ordenar los íconos" #: ../../util/wmgenmenu.c:297 msgid "Refresh" msgstr "Actualizar" #: ../../util/wmgenmenu.c:305 msgid "Save Session" msgstr "Guardar la sesión" #: ../../util/wmgenmenu.c:313 msgid "Clear Session" msgstr "Reiniciar la sesión" #: ../../util/wmgenmenu.c:322 msgid "Configure Window Maker" msgstr "Configurar Window Maker" #: ../../util/wmgenmenu.c:331 msgid "Info Panel" msgstr "Panel de información" #: ../../util/wmgenmenu.c:339 msgid "Restart Window Maker" msgstr "Reiniciar Window Maker" #: ../../util/wmgenmenu.c:352 msgid "Lock Screen" msgstr "Bloquear la pantalla" #: ../../util/wmgenmenu.c:363 msgid "Exit Window Maker" msgstr "Salir de Window Maker" #: ../../util/wmgenmenu.c:458 #, c-format msgid "Start %s" msgstr "Lanzar %s" #: ../../util/wmgenmenu.c:468 msgid "Other Window Managers" msgstr "Otros gestores de ventanas" #: ../../util/wmgenmenu.h:9 msgid "xterm" msgstr "" #: ../../util/wmgenmenu.h:10 msgid "mrxvt" msgstr "" #: ../../util/wmgenmenu.h:11 msgid "Konsole" msgstr "" #: ../../util/wmgenmenu.h:16 msgid "Dolphin" msgstr "" #: ../../util/wmgenmenu.h:17 msgid "Thunar" msgstr "" #: ../../util/wmgenmenu.h:18 msgid "ROX filer" msgstr "" #: ../../util/wmgenmenu.h:19 msgid "GWorkspace" msgstr "" #: ../../util/wmgenmenu.h:20 msgid "Midnight Commander" msgstr "" #: ../../util/wmgenmenu.h:21 msgid "XFTree" msgstr "" #: ../../util/wmgenmenu.h:22 ../../util/wmgenmenu.h:118 msgid "Konqueror" msgstr "" #: ../../util/wmgenmenu.h:23 msgid "Nautilus" msgstr "" #: ../../util/wmgenmenu.h:24 msgid "FSViewer" msgstr "" #: ../../util/wmgenmenu.h:25 msgid "Xfe" msgstr "" #: ../../util/wmgenmenu.h:30 msgid "Xmaxima" msgstr "" #: ../../util/wmgenmenu.h:31 msgid "Maxima" msgstr "" #: ../../util/wmgenmenu.h:32 msgid "Maple" msgstr "" #: ../../util/wmgenmenu.h:33 msgid "Scilab" msgstr "" #: ../../util/wmgenmenu.h:34 msgid "bc" msgstr "" #: ../../util/wmgenmenu.h:35 msgid "KCalc" msgstr "" #: ../../util/wmgenmenu.h:36 msgid "XCalc" msgstr "" #: ../../util/wmgenmenu.h:37 msgid "Mathematica" msgstr "" #: ../../util/wmgenmenu.h:38 msgid "Math" msgstr "" #. command-line Mathematica #: ../../util/wmgenmenu.h:39 msgid "Free42" msgstr "" #: ../../util/wmgenmenu.h:40 msgid "X48" msgstr "" #: ../../util/wmgenmenu.h:45 msgid "Xplns" msgstr "" #: ../../util/wmgenmenu.h:46 msgid "Stellarium" msgstr "" #: ../../util/wmgenmenu.h:51 msgid "GIMP" msgstr "" #: ../../util/wmgenmenu.h:52 msgid "Sodipodi" msgstr "" #: ../../util/wmgenmenu.h:53 msgid "Inkscape" msgstr "" #: ../../util/wmgenmenu.h:54 msgid "KIllustrator" msgstr "" #: ../../util/wmgenmenu.h:55 msgid "Krayon" msgstr "" #: ../../util/wmgenmenu.h:56 msgid "KPovModeler" msgstr "" #: ../../util/wmgenmenu.h:57 msgid "XBitmap" msgstr "" #: ../../util/wmgenmenu.h:58 msgid "XPaint" msgstr "" #: ../../util/wmgenmenu.h:59 msgid "XFig" msgstr "" #: ../../util/wmgenmenu.h:60 msgid "KPaint" msgstr "" #: ../../util/wmgenmenu.h:61 msgid "Blender" msgstr "" #: ../../util/wmgenmenu.h:62 msgid "KSnapshot" msgstr "" #: ../../util/wmgenmenu.h:63 msgid "GPhoto" msgstr "" #: ../../util/wmgenmenu.h:64 msgid "DigiKam" msgstr "" #: ../../util/wmgenmenu.h:65 msgid "Dia" msgstr "" #: ../../util/wmgenmenu.h:66 msgid "CompuPic" msgstr "" #: ../../util/wmgenmenu.h:67 msgid "GQview" msgstr "" #: ../../util/wmgenmenu.h:68 msgid "Geeqie" msgstr "" #: ../../util/wmgenmenu.h:69 msgid "KView" msgstr "" #: ../../util/wmgenmenu.h:70 msgid "Pixie" msgstr "" #: ../../util/wmgenmenu.h:71 msgid "ImageMagick Display" msgstr "" #: ../../util/wmgenmenu.h:72 msgid "XV" msgstr "" #: ../../util/wmgenmenu.h:73 msgid "Eye of GNOME" msgstr "" #: ../../util/wmgenmenu.h:74 msgid "Quick Image Viewer" msgstr "" #: ../../util/wmgenmenu.h:79 msgid "Audacious" msgstr "" #: ../../util/wmgenmenu.h:80 ../../util/wmgenmenu.h:216 msgid "Kaffeine" msgstr "" #: ../../util/wmgenmenu.h:81 msgid "Audacity" msgstr "" #: ../../util/wmgenmenu.h:82 msgid "Amarok" msgstr "" #: ../../util/wmgenmenu.h:83 msgid "XMMS" msgstr "" #: ../../util/wmgenmenu.h:84 msgid "K9Copy" msgstr "" #: ../../util/wmgenmenu.h:85 msgid "HandBrake" msgstr "" #: ../../util/wmgenmenu.h:86 msgid "OGMRip" msgstr "" #: ../../util/wmgenmenu.h:87 msgid "DVBcut" msgstr "" #: ../../util/wmgenmenu.h:88 msgid "AcidRip" msgstr "" #: ../../util/wmgenmenu.h:89 msgid "Avidemux" msgstr "" #: ../../util/wmgenmenu.h:90 msgid "GQmpeg" msgstr "" #: ../../util/wmgenmenu.h:91 msgid "Freeamp" msgstr "" #: ../../util/wmgenmenu.h:92 msgid "RealPlayer" msgstr "" #: ../../util/wmgenmenu.h:93 msgid "Mediathek" msgstr "" #: ../../util/wmgenmenu.h:94 msgid "KMid" msgstr "" #: ../../util/wmgenmenu.h:95 msgid "Kmidi" msgstr "" #: ../../util/wmgenmenu.h:96 msgid "Gtcd" msgstr "" #: ../../util/wmgenmenu.h:97 msgid "Grip" msgstr "" #: ../../util/wmgenmenu.h:98 msgid "AVIplay" msgstr "" #: ../../util/wmgenmenu.h:99 msgid "Gtv" msgstr "" #: ../../util/wmgenmenu.h:100 msgid "VLC" msgstr "" #: ../../util/wmgenmenu.h:101 msgid "Sinek" msgstr "" #: ../../util/wmgenmenu.h:102 msgid "xine" msgstr "" #: ../../util/wmgenmenu.h:103 msgid "aKtion" msgstr "" #: ../../util/wmgenmenu.h:104 msgid "Gcd" msgstr "" #: ../../util/wmgenmenu.h:105 msgid "XawTV" msgstr "" #: ../../util/wmgenmenu.h:106 msgid "X-CD-Roast" msgstr "" #: ../../util/wmgenmenu.h:107 msgid "XPlayCD" msgstr "" #: ../../util/wmgenmenu.h:112 ../../util/wmgenmenu.h:113 msgid "Chromium" msgstr "" #: ../../util/wmgenmenu.h:114 msgid "Google Chrome" msgstr "" #: ../../util/wmgenmenu.h:115 msgid "Mozilla Firefox" msgstr "" #: ../../util/wmgenmenu.h:116 msgid "Galeon" msgstr "" #: ../../util/wmgenmenu.h:117 msgid "SkipStone" msgstr "" #: ../../util/wmgenmenu.h:119 msgid "Dillo" msgstr "" #: ../../util/wmgenmenu.h:120 msgid "Epiphany" msgstr "" #: ../../util/wmgenmenu.h:121 msgid "Opera" msgstr "" #: ../../util/wmgenmenu.h:122 msgid "Midori" msgstr "" #: ../../util/wmgenmenu.h:123 msgid "Mozilla SeaMonkey" msgstr "" #: ../../util/wmgenmenu.h:124 msgid "Kazehakase" msgstr "" #: ../../util/wmgenmenu.h:125 msgid "Links" msgstr "" #: ../../util/wmgenmenu.h:126 msgid "Lynx" msgstr "" #: ../../util/wmgenmenu.h:127 msgid "W3M" msgstr "" #: ../../util/wmgenmenu.h:132 msgid "Mozilla Thunderbird" msgstr "" #: ../../util/wmgenmenu.h:133 msgid "Mutt" msgstr "" #: ../../util/wmgenmenu.h:134 msgid "GNUMail" msgstr "" #: ../../util/wmgenmenu.h:135 msgid "Evolution" msgstr "" #: ../../util/wmgenmenu.h:136 msgid "Kleopatra" msgstr "" #: ../../util/wmgenmenu.h:137 msgid "Sylpheed" msgstr "" #: ../../util/wmgenmenu.h:138 msgid "Spruce" msgstr "" #: ../../util/wmgenmenu.h:139 msgid "KMail" msgstr "" #: ../../util/wmgenmenu.h:140 msgid "Exmh" msgstr "" #: ../../util/wmgenmenu.h:141 msgid "Pine" msgstr "" #: ../../util/wmgenmenu.h:142 msgid "ELM" msgstr "" #: ../../util/wmgenmenu.h:143 msgid "Alpine" msgstr "" #: ../../util/wmgenmenu.h:148 msgid "soundKonverter" msgstr "" #: ../../util/wmgenmenu.h:149 msgid "Krecord" msgstr "" #: ../../util/wmgenmenu.h:150 msgid "Grecord" msgstr "" #: ../../util/wmgenmenu.h:151 msgid "ALSA mixer" msgstr "" #: ../../util/wmgenmenu.h:152 msgid "Sound configuration" msgstr "" #: ../../util/wmgenmenu.h:153 msgid "aumix" msgstr "" #: ../../util/wmgenmenu.h:154 msgid "Gmix" msgstr "" #: ../../util/wmgenmenu.h:159 msgid "XJed" msgstr "" #: ../../util/wmgenmenu.h:160 msgid "Jed" msgstr "" #: ../../util/wmgenmenu.h:161 msgid "Emacs" msgstr "" #: ../../util/wmgenmenu.h:162 msgid "XEmacs" msgstr "" #: ../../util/wmgenmenu.h:163 msgid "gVIM" msgstr "" #: ../../util/wmgenmenu.h:164 msgid "vi" msgstr "" #: ../../util/wmgenmenu.h:165 msgid "VIM" msgstr "" #: ../../util/wmgenmenu.h:166 msgid "gedit" msgstr "" #: ../../util/wmgenmenu.h:167 msgid "KEdit" msgstr "" #: ../../util/wmgenmenu.h:168 msgid "XEdit" msgstr "" #: ../../util/wmgenmenu.h:169 msgid "KWrite" msgstr "" #: ../../util/wmgenmenu.h:170 msgid "Kate" msgstr "" #: ../../util/wmgenmenu.h:171 msgid "Pico" msgstr "" #: ../../util/wmgenmenu.h:172 msgid "Nano" msgstr "" #: ../../util/wmgenmenu.h:173 msgid "Joe" msgstr "" #: ../../util/wmgenmenu.h:178 msgid "Omnia data" msgstr "" #: ../../util/wmgenmenu.h:179 msgid "Comix" msgstr "" #: ../../util/wmgenmenu.h:180 msgid "QComicBook" msgstr "" #: ../../util/wmgenmenu.h:185 msgid "Evince" msgstr "" #: ../../util/wmgenmenu.h:186 msgid "KGhostView" msgstr "" #: ../../util/wmgenmenu.h:187 msgid "gv" msgstr "" #: ../../util/wmgenmenu.h:188 msgid "GGv" msgstr "" #: ../../util/wmgenmenu.h:189 msgid "Xdvi" msgstr "" #: ../../util/wmgenmenu.h:190 msgid "KDVI" msgstr "" #: ../../util/wmgenmenu.h:191 msgid "Xpdf" msgstr "" #: ../../util/wmgenmenu.h:192 msgid "Adobe Reader" msgstr "" #: ../../util/wmgenmenu.h:193 msgid "Gless" msgstr "" #: ../../util/wmgenmenu.h:198 msgid "Google Desktop" msgstr "" #: ../../util/wmgenmenu.h:199 msgid "K3B" msgstr "" #: ../../util/wmgenmenu.h:200 msgid "gtkfind" msgstr "" #: ../../util/wmgenmenu.h:201 msgid "gdict" msgstr "" #: ../../util/wmgenmenu.h:202 msgid "gpsdrive" msgstr "" #: ../../util/wmgenmenu.h:203 msgid "wfcmgr" msgstr "" #: ../../util/wmgenmenu.h:204 msgid "switch" msgstr "" #: ../../util/wmgenmenu.h:205 msgid "kaddressbook" msgstr "" #: ../../util/wmgenmenu.h:206 msgid "kab" msgstr "" #: ../../util/wmgenmenu.h:207 msgid "kfind" msgstr "" #: ../../util/wmgenmenu.h:208 msgid "oclock" msgstr "" #: ../../util/wmgenmenu.h:209 msgid "rclock" msgstr "" #: ../../util/wmgenmenu.h:210 msgid "xclock" msgstr "" #: ../../util/wmgenmenu.h:211 msgid "kppp" msgstr "" #: ../../util/wmgenmenu.h:217 msgid "Ekiga" msgstr "" #: ../../util/wmgenmenu.h:222 msgid "Pidgin" msgstr "" #: ../../util/wmgenmenu.h:223 msgid "Skype" msgstr "" #: ../../util/wmgenmenu.h:224 msgid "Gizmo" msgstr "" #: ../../util/wmgenmenu.h:225 msgid "Kopete" msgstr "" #: ../../util/wmgenmenu.h:226 msgid "XChat" msgstr "" #: ../../util/wmgenmenu.h:227 msgid "KVIrc" msgstr "" #: ../../util/wmgenmenu.h:228 msgid "BitchX" msgstr "" #: ../../util/wmgenmenu.h:229 msgid "EPIC" msgstr "" #: ../../util/wmgenmenu.h:230 msgid "EPIC4" msgstr "" #: ../../util/wmgenmenu.h:231 msgid "Irssi" msgstr "" #: ../../util/wmgenmenu.h:232 msgid "TinyIRC" msgstr "" #: ../../util/wmgenmenu.h:233 msgid "Ksirc" msgstr "" #: ../../util/wmgenmenu.h:234 msgid "gtalk" msgstr "" #: ../../util/wmgenmenu.h:235 msgid "GnomeICU" msgstr "" #: ../../util/wmgenmenu.h:236 msgid "Licq" msgstr "" #: ../../util/wmgenmenu.h:237 msgid "aMSN" msgstr "" #: ../../util/wmgenmenu.h:242 msgid "aMule" msgstr "" #: ../../util/wmgenmenu.h:243 msgid "gFTP" msgstr "" #: ../../util/wmgenmenu.h:244 msgid "Smb4K" msgstr "" #: ../../util/wmgenmenu.h:245 msgid "KTorrent" msgstr "" #: ../../util/wmgenmenu.h:246 msgid "BitTorrent GUI" msgstr "" #: ../../util/wmgenmenu.h:247 msgid "ftp" msgstr "" #: ../../util/wmgenmenu.h:248 msgid "sftp" msgstr "" #: ../../util/wmgenmenu.h:249 msgid "Pavuk" msgstr "" #: ../../util/wmgenmenu.h:250 msgid "gtm" msgstr "" #: ../../util/wmgenmenu.h:251 msgid "Gnut" msgstr "" #: ../../util/wmgenmenu.h:252 msgid "GTK Gnutella" msgstr "" #: ../../util/wmgenmenu.h:253 msgid "Gnutmeg" msgstr "" #: ../../util/wmgenmenu.h:258 msgid "FlightGear Flight Simulator" msgstr "" #: ../../util/wmgenmenu.h:259 msgid "Tremulous" msgstr "" #: ../../util/wmgenmenu.h:260 msgid "XBoard" msgstr "" #: ../../util/wmgenmenu.h:261 msgid "GNOME Chess" msgstr "" #: ../../util/wmgenmenu.h:262 msgid "Quake 2" msgstr "" #: ../../util/wmgenmenu.h:263 msgid "Quake 3" msgstr "" #: ../../util/wmgenmenu.h:264 msgid "Quake 3: Urban Terror 2" msgstr "" #: ../../util/wmgenmenu.h:265 msgid "Soldier of Fortune" msgstr "" #: ../../util/wmgenmenu.h:266 msgid "Rune" msgstr "" #: ../../util/wmgenmenu.h:267 msgid "Tribes 2" msgstr "" #: ../../util/wmgenmenu.h:268 msgid "Unreal Tournament" msgstr "" #: ../../util/wmgenmenu.h:269 msgid "Descent 3" msgstr "" #: ../../util/wmgenmenu.h:270 msgid "Myth 2" msgstr "" #: ../../util/wmgenmenu.h:271 ../../util/wmgenmenu.h:272 msgid "Sauerbraten" msgstr "" #: ../../util/wmgenmenu.h:273 msgid "Railroad Tycoon 2" msgstr "" #: ../../util/wmgenmenu.h:274 msgid "Heretic 2" msgstr "" #: ../../util/wmgenmenu.h:275 msgid "Kohan" msgstr "" #: ../../util/wmgenmenu.h:276 msgid "XQF" msgstr "" #: ../../util/wmgenmenu.h:281 msgid "OpenOffice.org Writer" msgstr "" #: ../../util/wmgenmenu.h:282 msgid "OpenOffice.org Calc" msgstr "" #: ../../util/wmgenmenu.h:283 msgid "OpenOffice.org Draw" msgstr "" #: ../../util/wmgenmenu.h:284 msgid "OpenOffice.org Impress" msgstr "" #: ../../util/wmgenmenu.h:285 msgid "OpenOffice.org Math" msgstr "" #: ../../util/wmgenmenu.h:286 msgid "OpenOffice.org" msgstr "" #: ../../util/wmgenmenu.h:287 msgid "StarOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:288 msgid "StarOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:289 msgid "StarOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:290 msgid "StarOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:291 msgid "StarOffice Math" msgstr "" #: ../../util/wmgenmenu.h:292 msgid "StarOffice" msgstr "" #: ../../util/wmgenmenu.h:293 msgid "AbiWord" msgstr "" #: ../../util/wmgenmenu.h:294 msgid "KWord" msgstr "" #: ../../util/wmgenmenu.h:295 msgid "KPresenter" msgstr "" #: ../../util/wmgenmenu.h:296 msgid "KSpread" msgstr "" #: ../../util/wmgenmenu.h:297 msgid "KChart" msgstr "" #: ../../util/wmgenmenu.h:298 msgid "KOrganizer" msgstr "" #: ../../util/wmgenmenu.h:299 msgid "LyX" msgstr "" #: ../../util/wmgenmenu.h:300 msgid "Klyx" msgstr "" #: ../../util/wmgenmenu.h:301 msgid "GnuCash" msgstr "" #: ../../util/wmgenmenu.h:302 msgid "Gnumeric" msgstr "" #: ../../util/wmgenmenu.h:303 msgid "GnomeCal" msgstr "" #: ../../util/wmgenmenu.h:304 msgid "GnomeCard" msgstr "" #: ../../util/wmgenmenu.h:309 msgid "gitk" msgstr "" #: ../../util/wmgenmenu.h:310 msgid "gitview" msgstr "" #: ../../util/wmgenmenu.h:311 msgid "qgit" msgstr "" #: ../../util/wmgenmenu.h:312 msgid "git-gui" msgstr "" #: ../../util/wmgenmenu.h:313 msgid "glimmer" msgstr "" #: ../../util/wmgenmenu.h:314 msgid "glade" msgstr "" #: ../../util/wmgenmenu.h:315 msgid "kdevelop" msgstr "" #: ../../util/wmgenmenu.h:316 msgid "designer" msgstr "" #: ../../util/wmgenmenu.h:317 msgid "kbabel" msgstr "" #: ../../util/wmgenmenu.h:318 msgid "idle" msgstr "" #: ../../util/wmgenmenu.h:319 msgid "ghex" msgstr "" #: ../../util/wmgenmenu.h:320 msgid "hexedit" msgstr "" #: ../../util/wmgenmenu.h:321 msgid "memprof" msgstr "" #: ../../util/wmgenmenu.h:322 msgid "tclsh" msgstr "" #: ../../util/wmgenmenu.h:323 msgid "gdb" msgstr "" #: ../../util/wmgenmenu.h:324 msgid "xxgdb" msgstr "" #: ../../util/wmgenmenu.h:325 msgid "xev" msgstr "" #: ../../util/wmgenmenu.h:330 msgid "Iotop" msgstr "" #: ../../util/wmgenmenu.h:331 msgid "Iostat" msgstr "" #: ../../util/wmgenmenu.h:332 msgid "keybconf" msgstr "" #: ../../util/wmgenmenu.h:333 msgid "GNOME System Monitor" msgstr "" #: ../../util/wmgenmenu.h:334 msgid "top" msgstr "" #: ../../util/wmgenmenu.h:335 msgid "KDE Process Monitor" msgstr "" #: ../../util/wmgenmenu.h:336 msgid "gw" msgstr "" #: ../../util/wmgenmenu.h:337 msgid "GNOME Control Center" msgstr "" #: ../../util/wmgenmenu.h:338 msgid "GKrellM" msgstr "" #: ../../util/wmgenmenu.h:339 msgid "tksysv" msgstr "" #: ../../util/wmgenmenu.h:340 msgid "ksysv" msgstr "" #: ../../util/wmgenmenu.h:341 msgid "GNOME PPP" msgstr "" #: ../../util/wmgenmenu.h:346 msgid "YaST 2" msgstr "" #: ../../util/wmgenmenu.h:347 msgid "YaST" msgstr "" #: ../../util/wmgenmenu.h:348 msgid "System Settings" msgstr "" #: ../../util/wmgenmenu.h:349 msgid "UMTSMon" msgstr "" #: ../../util/wmgenmenu.h:354 msgid "DrakNetCenter" msgstr "" #: ../../util/wmgenmenu.h:355 msgid "RPMDrake" msgstr "" #: ../../util/wmgenmenu.h:356 msgid "HardDrake" msgstr "" #: ../../util/wmgenmenu.h:357 msgid "DrakConf" msgstr "" #: ../../util/wmgenmenu.h:358 msgid "MandrakeUpdate" msgstr "" #: ../../util/wmgenmenu.h:359 msgid "XDrakRes" msgstr "" #: ../../util/wmgenmenu.h:364 msgid "Docker" msgstr "" #: ../../util/wmgenmenu.h:365 msgid "Net" msgstr "" #: ../../util/wmgenmenu.h:366 ../../util/wmgenmenu.h:387 msgid "Power" msgstr "" #: ../../util/wmgenmenu.h:367 msgid "Laptop" msgstr "" #: ../../util/wmgenmenu.h:368 msgid "WiFi" msgstr "" #: ../../util/wmgenmenu.h:369 msgid "Interface Info" msgstr "" #: ../../util/wmgenmenu.h:370 ../../util/wmgenmenu.h:373 msgid "Weather" msgstr "" #: ../../util/wmgenmenu.h:371 msgid "Sticky Notes" msgstr "" #: ../../util/wmgenmenu.h:372 msgid "Mixer" msgstr "" #: ../../util/wmgenmenu.h:374 msgid "CPU Load" msgstr "" #: ../../util/wmgenmenu.h:375 msgid "CPU Freq" msgstr "" #: ../../util/wmgenmenu.h:376 msgid "Clock Mon" msgstr "" #: ../../util/wmgenmenu.h:377 msgid "Network Devices" msgstr "" #: ../../util/wmgenmenu.h:378 msgid "Calendar & Clock" msgstr "" #: ../../util/wmgenmenu.h:379 msgid "Time" msgstr "" #: ../../util/wmgenmenu.h:380 msgid "Date" msgstr "" #: ../../util/wmgenmenu.h:381 ../../util/wmgenmenu.h:382 msgid "System Monitor" msgstr "" #: ../../util/wmgenmenu.h:383 msgid "SMP Monitor" msgstr "" #: ../../util/wmgenmenu.h:384 msgid "Interfaces" msgstr "" #: ../../util/wmgenmenu.h:385 msgid "Button" msgstr "" #: ../../util/wmgenmenu.h:386 msgid "xmms" msgstr "" #: ../../util/wmgenmenu.h:388 msgid "Magnify" msgstr "" #: ../../util/wmgenmenu.h:393 msgid "IceWM" msgstr "" #: ../../util/wmgenmenu.h:394 msgid "KWin" msgstr "" #: ../../util/wmgenmenu.h:395 msgid "twm" msgstr "" #: ../../util/wmgenmenu.h:396 msgid "Fluxbox" msgstr "" #: ../../util/wmgenmenu.h:397 msgid "Blackbox" msgstr "" #: ../../util/wmgenmenu.h:398 msgid "Ion" msgstr "" #: ../../util/wmgenmenu.h:399 msgid "Motif Window Manager" msgstr "" #: ../../util/wmgenmenu.h:400 msgid "FVWM" msgstr "" WindowMaker-0.95.8/util/po/Makefile.in0000664000175000017500000003614413061001354014430 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = util/po ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ DOMAIN = wmgenmenu CATALOGS = @UTILMOFILES@ CLEANFILES = $(DOMAIN).pot $(CATALOGS) EXTRA_DIST = de.po es.po fr.po fy.po nl.po pt.po POTFILES = \ $(top_srcdir)/util/wmgenmenu.c \ $(top_srcdir)/util/wmgenmenu.h SUFFIXES = .po .mo all: all-am .SUFFIXES: .SUFFIXES: .po .mo $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu util/po/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu util/po/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-local install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local .PRECIOUS: Makefile .po.mo: $(AM_V_GEN)$(MSGFMT) -c -o $@ $< all-local: $(CATALOGS) .PHONY: update-lang @HAVE_XGETTEXT_TRUE@update-lang: $(DOMAIN).pot @HAVE_XGETTEXT_TRUE@ $(AM_V_GEN)$(top_srcdir)/script/generate-po-from-template.sh \ @HAVE_XGETTEXT_TRUE@ -n "$(PACKAGE_NAME)" -v "$(PACKAGE_VERSION)" -b "$(PACKAGE_BUGREPORT)" \ @HAVE_XGETTEXT_TRUE@ -t "$(DOMAIN).pot" "$(srcdir)/$(PO).po" @HAVE_XGETTEXT_TRUE@$(DOMAIN).pot: $(POTFILES) @HAVE_XGETTEXT_TRUE@ $(AM_V_GEN)$(XGETTEXT) --default-domain=$(DOMAIN) \ @HAVE_XGETTEXT_TRUE@ --add-comments --keyword=_ --keyword=N_ $(POTFILES) @HAVE_XGETTEXT_TRUE@ @if cmp -s $(DOMAIN).po $(DOMAIN).pot; then \ @HAVE_XGETTEXT_TRUE@ rm -f $(DOMAIN).po; \ @HAVE_XGETTEXT_TRUE@ else \ @HAVE_XGETTEXT_TRUE@ mv -f $(DOMAIN).po $(DOMAIN).pot; \ @HAVE_XGETTEXT_TRUE@ fi install-data-local: $(CATALOGS) $(mkinstalldirs) $(DESTDIR)$(localedir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ $(mkinstalldirs) $(DESTDIR)$(localedir)/$$l/LC_MESSAGES; \ $(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ fi; \ done uninstall-local: for n in $(CATALOGS) ; do \ l=`basename $$n .mo`; \ rm -f $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ done # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: WindowMaker-0.95.8/util/po/fy.po0000664000175000017500000007401513061001047013337 00000000000000# Translation into Western Frisian for Window Maker # Copyright (C) 2015-2016 Window Maker Developers Team # This file is distributed under the same license as the windowmaker package. # Original by Alwin , 2015. # msgid "" msgstr "" "Project-Id-Version: wmaker-0.95.7+\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-21 16:19+0100\n" "PO-Revision-Date: 2016-01-21 00:00+0000\n" "Last-Translator: Alwin \n" "Language-Team: Western Frisian\n" "Language: fy\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Root -> Applications #: ../../util/wmgenmenu.c:117 msgid "Applications" msgstr "Programma's" #. Root -> Applications -> #: ../../util/wmgenmenu.c:120 msgid "Terminals" msgstr "Terminals" #. always keep terminals the top item #: ../../util/wmgenmenu.c:121 msgid "Internet" msgstr "Ynternet" #: ../../util/wmgenmenu.c:122 msgid "Email" msgstr "E-mail" #: ../../util/wmgenmenu.c:123 msgid "Mathematics" msgstr "Wiskunde" #: ../../util/wmgenmenu.c:124 msgid "File Managers" msgstr "Bestânsbehearders" #: ../../util/wmgenmenu.c:125 msgid "Graphics" msgstr "Grafysk" #: ../../util/wmgenmenu.c:126 msgid "Multimedia" msgstr "Multymedia" #: ../../util/wmgenmenu.c:127 msgid "Editors" msgstr "Tekstbewurkers" #: ../../util/wmgenmenu.c:128 msgid "Development" msgstr "Untwikkeljen" #: ../../util/wmgenmenu.c:130 msgid "Office" msgstr "Kantoar" #: ../../util/wmgenmenu.c:131 msgid "Astronomy" msgstr "Stjerrekunde" #: ../../util/wmgenmenu.c:132 msgid "Sound" msgstr "Audio" #: ../../util/wmgenmenu.c:133 msgid "Comics" msgstr "Strips" #: ../../util/wmgenmenu.c:134 msgid "Viewers" msgstr "Viewers" #: ../../util/wmgenmenu.c:135 msgid "Utilities" msgstr "Helpmiddels" #: ../../util/wmgenmenu.c:136 msgid "System" msgstr "Systeem" #: ../../util/wmgenmenu.c:137 msgid "Video" msgstr "Fideo" #: ../../util/wmgenmenu.c:138 msgid "Chat and Talk" msgstr "Berjochten en spraak" #: ../../util/wmgenmenu.c:139 msgid "P2P Network" msgstr "P2P-netwurk" #: ../../util/wmgenmenu.c:140 msgid "Games" msgstr "Spultsjes" #: ../../util/wmgenmenu.c:148 msgid "Run..." msgstr "Utfiere..." #: ../../util/wmgenmenu.c:150 #, c-format msgid "%A(Run, Type command:)" msgstr "%A(Utfiere, Typ kommando:)" #. Root -> Appearance #: ../../util/wmgenmenu.c:156 msgid "Appearance" msgstr "Uterlik" #: ../../util/wmgenmenu.c:160 msgid "Themes" msgstr "Tema's" #: ../../util/wmgenmenu.c:169 msgid "Styles" msgstr "Stilen" #: ../../util/wmgenmenu.c:178 msgid "Icon Sets" msgstr "Ikoanesets" #. Root -> Appearance -> Background #: ../../util/wmgenmenu.c:186 msgid "Background" msgstr "Eftergrûn" #. Root -> Appearance -> Background -> Solid #: ../../util/wmgenmenu.c:189 msgid "Solid" msgstr "Effen" #. Root -> Appearance -> Background -> Solid -> #: ../../util/wmgenmenu.c:201 msgid "Black" msgstr "Swart" #: ../../util/wmgenmenu.c:202 msgid "Blue" msgstr "Blau" #: ../../util/wmgenmenu.c:203 msgid "Indigo" msgstr "Indigo" #: ../../util/wmgenmenu.c:204 msgid "Bluemarine" msgstr "Marineblau" #: ../../util/wmgenmenu.c:205 msgid "Purple" msgstr "Poarper" #: ../../util/wmgenmenu.c:206 msgid "Wheat" msgstr "Weet" #: ../../util/wmgenmenu.c:207 msgid "Dark Gray" msgstr "Donkergriis" #: ../../util/wmgenmenu.c:208 msgid "Wine" msgstr "Wynread" #. Root -> Appearance -> Background -> Gradient #: ../../util/wmgenmenu.c:213 msgid "Gradient" msgstr "Kleurferrin" #: ../../util/wmgenmenu.c:227 msgid "Sunset" msgstr "Sinne-ûndergong" #: ../../util/wmgenmenu.c:234 msgid "Sky" msgstr "Loft" #: ../../util/wmgenmenu.c:235 msgid "Blue Shades" msgstr "Blautinten" #: ../../util/wmgenmenu.c:236 msgid "Indigo Shades" msgstr "Indigotinten" #: ../../util/wmgenmenu.c:237 msgid "Purple Shades" msgstr "Poarpertinten" #: ../../util/wmgenmenu.c:238 msgid "Wheat Shades" msgstr "Weettinten" #: ../../util/wmgenmenu.c:239 msgid "Grey Shades" msgstr "Griistinten" #: ../../util/wmgenmenu.c:240 msgid "Wine Shades" msgstr "Wynreadtinten" #: ../../util/wmgenmenu.c:246 msgid "Images" msgstr "Ofbyldingen" #: ../../util/wmgenmenu.c:257 msgid "Save Theme" msgstr "Tema bewarje" #: ../../util/wmgenmenu.c:266 msgid "Save IconSet" msgstr "Ikoaneset bewarje" #: ../../util/wmgenmenu.c:277 msgid "Workspaces" msgstr "Wurkromten" #. Root -> Workspace #: ../../util/wmgenmenu.c:284 msgid "Workspace" msgstr "Wurkromte" #: ../../util/wmgenmenu.c:286 msgid "Hide Others" msgstr "Oare ferbergje" #: ../../util/wmgenmenu.c:294 msgid "Show All" msgstr "Alles toane" #: ../../util/wmgenmenu.c:302 msgid "Arrange Icons" msgstr "Ikoanen skikke" #: ../../util/wmgenmenu.c:310 msgid "Refresh" msgstr "Fernije" #: ../../util/wmgenmenu.c:318 msgid "Save Session" msgstr "Sesje bewarje" #: ../../util/wmgenmenu.c:326 msgid "Clear Session" msgstr "Sesje wiskje" #: ../../util/wmgenmenu.c:335 msgid "Configure Window Maker" msgstr "Window Maker ynstelle" #: ../../util/wmgenmenu.c:344 msgid "Info Panel" msgstr "Ynfopaniel" #: ../../util/wmgenmenu.c:352 msgid "Restart Window Maker" msgstr "Window Maker werstarte" #: ../../util/wmgenmenu.c:365 msgid "Lock Screen" msgstr "Skerm beskoattelje" #: ../../util/wmgenmenu.c:376 msgid "Exit Window Maker" msgstr "Window Maker ôfslute" #: ../../util/wmgenmenu.c:480 #, c-format msgid "Start %s" msgstr "%s starte" #: ../../util/wmgenmenu.c:490 msgid "Other Window Managers" msgstr "Oare finsterbehearders" #: ../../util/wmgenmenu.h:26 msgid "xterm" msgstr "" #: ../../util/wmgenmenu.h:27 msgid "mrxvt" msgstr "" #: ../../util/wmgenmenu.h:28 msgid "Konsole" msgstr "" #: ../../util/wmgenmenu.h:29 msgid "Urxvt" msgstr "" #: ../../util/wmgenmenu.h:34 msgid "Dolphin" msgstr "" #: ../../util/wmgenmenu.h:35 msgid "Thunar" msgstr "" #: ../../util/wmgenmenu.h:36 msgid "ROX filer" msgstr "" #: ../../util/wmgenmenu.h:37 msgid "PCManFM" msgstr "" #: ../../util/wmgenmenu.h:38 msgid "GWorkspace" msgstr "" #: ../../util/wmgenmenu.h:39 msgid "Midnight Commander" msgstr "" #: ../../util/wmgenmenu.h:40 msgid "XFTree" msgstr "" #: ../../util/wmgenmenu.h:41 ../../util/wmgenmenu.h:140 msgid "Konqueror" msgstr "" #: ../../util/wmgenmenu.h:42 msgid "Nautilus" msgstr "" #: ../../util/wmgenmenu.h:43 msgid "FSViewer" msgstr "" #: ../../util/wmgenmenu.h:44 msgid "Xfe" msgstr "" #: ../../util/wmgenmenu.h:49 msgid "Xmaxima" msgstr "" #: ../../util/wmgenmenu.h:50 msgid "Maxima" msgstr "" #: ../../util/wmgenmenu.h:51 msgid "Maple" msgstr "" #: ../../util/wmgenmenu.h:52 msgid "Scilab" msgstr "" #: ../../util/wmgenmenu.h:53 msgid "bc" msgstr "" #: ../../util/wmgenmenu.h:54 msgid "KCalc" msgstr "" #: ../../util/wmgenmenu.h:55 msgid "XCalc" msgstr "" #: ../../util/wmgenmenu.h:56 msgid "Mathematica" msgstr "" #: ../../util/wmgenmenu.h:57 msgid "Math" msgstr "" #. command-line Mathematica #: ../../util/wmgenmenu.h:58 msgid "Free42" msgstr "" #: ../../util/wmgenmenu.h:59 msgid "X48" msgstr "" #: ../../util/wmgenmenu.h:64 msgid "Xplns" msgstr "" #: ../../util/wmgenmenu.h:65 msgid "Stellarium" msgstr "" #: ../../util/wmgenmenu.h:70 msgid "GIMP" msgstr "" #: ../../util/wmgenmenu.h:71 msgid "Sodipodi" msgstr "" #: ../../util/wmgenmenu.h:72 msgid "Inkscape" msgstr "" #: ../../util/wmgenmenu.h:73 msgid "KIllustrator" msgstr "" #: ../../util/wmgenmenu.h:74 msgid "Krayon" msgstr "" #: ../../util/wmgenmenu.h:75 msgid "KPovModeler" msgstr "" #: ../../util/wmgenmenu.h:76 msgid "XBitmap" msgstr "" #: ../../util/wmgenmenu.h:77 msgid "XPaint" msgstr "" #: ../../util/wmgenmenu.h:78 msgid "XFig" msgstr "" #: ../../util/wmgenmenu.h:79 msgid "KPaint" msgstr "" #: ../../util/wmgenmenu.h:80 msgid "Blender" msgstr "" #: ../../util/wmgenmenu.h:81 msgid "KSnapshot" msgstr "" #: ../../util/wmgenmenu.h:82 msgid "GPhoto" msgstr "" #: ../../util/wmgenmenu.h:83 msgid "DigiKam" msgstr "" #: ../../util/wmgenmenu.h:84 msgid "GQview" msgstr "" #: ../../util/wmgenmenu.h:85 msgid "Geeqie" msgstr "" #: ../../util/wmgenmenu.h:86 msgid "KView" msgstr "" #: ../../util/wmgenmenu.h:87 msgid "Dia" msgstr "" #: ../../util/wmgenmenu.h:88 msgid "CompuPic" msgstr "" #: ../../util/wmgenmenu.h:89 msgid "Pixie" msgstr "" #: ../../util/wmgenmenu.h:90 msgid "ImageMagick Display" msgstr "" #: ../../util/wmgenmenu.h:91 msgid "XV" msgstr "" #: ../../util/wmgenmenu.h:92 msgid "Eye of GNOME" msgstr "" #: ../../util/wmgenmenu.h:93 msgid "Quick Image Viewer" msgstr "" #: ../../util/wmgenmenu.h:98 ../../util/wmgenmenu.h:501 msgid "Audacious" msgstr "" #: ../../util/wmgenmenu.h:99 msgid "Kaffeine" msgstr "" #: ../../util/wmgenmenu.h:100 msgid "Audacity" msgstr "" #: ../../util/wmgenmenu.h:101 msgid "Amarok" msgstr "" #: ../../util/wmgenmenu.h:102 msgid "XMMS" msgstr "" #: ../../util/wmgenmenu.h:103 msgid "K9Copy" msgstr "" #: ../../util/wmgenmenu.h:104 msgid "HandBrake" msgstr "" #: ../../util/wmgenmenu.h:105 msgid "OGMRip" msgstr "" #: ../../util/wmgenmenu.h:106 msgid "DVBcut" msgstr "" #: ../../util/wmgenmenu.h:107 msgid "AcidRip" msgstr "" #: ../../util/wmgenmenu.h:108 msgid "RipperX" msgstr "" #: ../../util/wmgenmenu.h:109 msgid "Avidemux" msgstr "" #: ../../util/wmgenmenu.h:110 msgid "GQmpeg" msgstr "" #: ../../util/wmgenmenu.h:111 msgid "SMPlayer" msgstr "" #: ../../util/wmgenmenu.h:112 msgid "Linux MultiMedia Studio" msgstr "" #: ../../util/wmgenmenu.h:113 msgid "Freeamp" msgstr "" #: ../../util/wmgenmenu.h:114 msgid "RealPlayer" msgstr "" #: ../../util/wmgenmenu.h:115 msgid "Mediathek" msgstr "" #: ../../util/wmgenmenu.h:116 msgid "KMid" msgstr "" #: ../../util/wmgenmenu.h:117 msgid "Kmidi" msgstr "" #: ../../util/wmgenmenu.h:118 msgid "Gtcd" msgstr "" #: ../../util/wmgenmenu.h:119 msgid "Grip" msgstr "" #: ../../util/wmgenmenu.h:120 msgid "AVIplay" msgstr "" #: ../../util/wmgenmenu.h:121 msgid "Gtv" msgstr "" #: ../../util/wmgenmenu.h:122 msgid "VLC" msgstr "" #: ../../util/wmgenmenu.h:123 msgid "Sinek" msgstr "" #: ../../util/wmgenmenu.h:124 msgid "xine" msgstr "" #: ../../util/wmgenmenu.h:125 msgid "aKtion" msgstr "" #: ../../util/wmgenmenu.h:126 msgid "Gcd" msgstr "" #: ../../util/wmgenmenu.h:127 msgid "XawTV" msgstr "" #: ../../util/wmgenmenu.h:128 msgid "XPlayCD" msgstr "" #: ../../util/wmgenmenu.h:129 msgid "XBMC" msgstr "" #: ../../util/wmgenmenu.h:134 ../../util/wmgenmenu.h:135 msgid "Chromium" msgstr "" #: ../../util/wmgenmenu.h:136 msgid "Google Chrome" msgstr "" #: ../../util/wmgenmenu.h:137 msgid "Mozilla Firefox" msgstr "" #: ../../util/wmgenmenu.h:138 msgid "Galeon" msgstr "" #: ../../util/wmgenmenu.h:139 msgid "SkipStone" msgstr "" #: ../../util/wmgenmenu.h:141 msgid "Dillo" msgstr "" #: ../../util/wmgenmenu.h:142 msgid "Epiphany" msgstr "" #: ../../util/wmgenmenu.h:143 msgid "Opera" msgstr "" #: ../../util/wmgenmenu.h:144 msgid "Midori" msgstr "" #: ../../util/wmgenmenu.h:145 msgid "Mozilla SeaMonkey" msgstr "" #: ../../util/wmgenmenu.h:146 msgid "Kazehakase" msgstr "" #: ../../util/wmgenmenu.h:147 msgid "Links" msgstr "" #: ../../util/wmgenmenu.h:148 msgid "Lynx" msgstr "" #: ../../util/wmgenmenu.h:149 msgid "W3M" msgstr "" #: ../../util/wmgenmenu.h:154 msgid "Mozilla Thunderbird" msgstr "" #: ../../util/wmgenmenu.h:155 msgid "Mutt" msgstr "" #: ../../util/wmgenmenu.h:156 msgid "GNUMail" msgstr "" #: ../../util/wmgenmenu.h:157 msgid "Claws Mail" msgstr "" #: ../../util/wmgenmenu.h:158 msgid "Evolution" msgstr "" #: ../../util/wmgenmenu.h:159 msgid "Kleopatra" msgstr "" #: ../../util/wmgenmenu.h:160 msgid "Sylpheed" msgstr "" #: ../../util/wmgenmenu.h:161 msgid "Spruce" msgstr "" #: ../../util/wmgenmenu.h:162 msgid "KMail" msgstr "" #: ../../util/wmgenmenu.h:163 msgid "Exmh" msgstr "" #: ../../util/wmgenmenu.h:164 msgid "Pine" msgstr "" #: ../../util/wmgenmenu.h:165 msgid "ELM" msgstr "" #: ../../util/wmgenmenu.h:166 msgid "Alpine" msgstr "" #: ../../util/wmgenmenu.h:171 msgid "soundKonverter" msgstr "" #: ../../util/wmgenmenu.h:172 msgid "Krecord" msgstr "" #: ../../util/wmgenmenu.h:173 msgid "Grecord" msgstr "" #: ../../util/wmgenmenu.h:174 msgid "ALSA mixer" msgstr "" #: ../../util/wmgenmenu.h:175 msgid "VolWheel" msgstr "" #: ../../util/wmgenmenu.h:176 msgid "Sound configuration" msgstr "" #: ../../util/wmgenmenu.h:177 msgid "aumix" msgstr "" #: ../../util/wmgenmenu.h:178 msgid "Gmix" msgstr "" #: ../../util/wmgenmenu.h:183 msgid "XJed" msgstr "" #: ../../util/wmgenmenu.h:184 msgid "Jed" msgstr "" #: ../../util/wmgenmenu.h:185 msgid "Emacs" msgstr "" #: ../../util/wmgenmenu.h:186 msgid "XEmacs" msgstr "" #: ../../util/wmgenmenu.h:187 msgid "SciTE" msgstr "" #: ../../util/wmgenmenu.h:188 msgid "Bluefish" msgstr "" #: ../../util/wmgenmenu.h:189 msgid "gVIM" msgstr "" #: ../../util/wmgenmenu.h:190 msgid "vi" msgstr "" #: ../../util/wmgenmenu.h:191 msgid "VIM" msgstr "" #: ../../util/wmgenmenu.h:192 msgid "gedit" msgstr "" #: ../../util/wmgenmenu.h:193 msgid "KEdit" msgstr "" #: ../../util/wmgenmenu.h:194 msgid "XEdit" msgstr "" #: ../../util/wmgenmenu.h:195 msgid "KWrite" msgstr "" #: ../../util/wmgenmenu.h:196 msgid "Kate" msgstr "" #: ../../util/wmgenmenu.h:197 msgid "Pico" msgstr "" #: ../../util/wmgenmenu.h:198 msgid "Nano" msgstr "" #: ../../util/wmgenmenu.h:199 msgid "Joe" msgstr "" #: ../../util/wmgenmenu.h:204 msgid "Omnia data" msgstr "" #: ../../util/wmgenmenu.h:205 msgid "Comix" msgstr "" #: ../../util/wmgenmenu.h:206 msgid "QComicBook" msgstr "" #: ../../util/wmgenmenu.h:211 msgid "Evince" msgstr "" #: ../../util/wmgenmenu.h:212 msgid "KGhostView" msgstr "" #: ../../util/wmgenmenu.h:213 msgid "gv" msgstr "" #: ../../util/wmgenmenu.h:214 msgid "ePDFView" msgstr "" #: ../../util/wmgenmenu.h:215 msgid "GGv" msgstr "" #: ../../util/wmgenmenu.h:216 msgid "Xdvi" msgstr "" #: ../../util/wmgenmenu.h:217 msgid "KDVI" msgstr "" #: ../../util/wmgenmenu.h:218 msgid "Xpdf" msgstr "" #: ../../util/wmgenmenu.h:219 msgid "Adobe Reader" msgstr "" #: ../../util/wmgenmenu.h:220 msgid "Gless" msgstr "" #: ../../util/wmgenmenu.h:225 msgid "Google Desktop" msgstr "" #: ../../util/wmgenmenu.h:226 msgid "K3B" msgstr "" #: ../../util/wmgenmenu.h:227 msgid "X-CD-Roast" msgstr "" #: ../../util/wmgenmenu.h:228 msgid "Nero Linux" msgstr "" #: ../../util/wmgenmenu.h:229 msgid "Nero Linux Express" msgstr "" #: ../../util/wmgenmenu.h:230 msgid "gtkfind" msgstr "" #: ../../util/wmgenmenu.h:231 msgid "gdict" msgstr "" #: ../../util/wmgenmenu.h:232 msgid "gpsdrive" msgstr "" #: ../../util/wmgenmenu.h:233 msgid "Task Coach" msgstr "" #: ../../util/wmgenmenu.h:234 msgid "XSnap" msgstr "" #: ../../util/wmgenmenu.h:235 msgid "Screengrab" msgstr "" #: ../../util/wmgenmenu.h:236 msgid "XSane" msgstr "" #: ../../util/wmgenmenu.h:237 msgid "wfcmgr" msgstr "" #: ../../util/wmgenmenu.h:238 msgid "switch" msgstr "" #: ../../util/wmgenmenu.h:239 msgid "Cairo Clock" msgstr "" #: ../../util/wmgenmenu.h:240 msgid "Conky" msgstr "" #: ../../util/wmgenmenu.h:241 msgid "GNU Privacy Assistant" msgstr "" #: ../../util/wmgenmenu.h:242 msgid "Vidalia (tor)" msgstr "" #: ../../util/wmgenmenu.h:243 msgid "kaddressbook" msgstr "" #: ../../util/wmgenmenu.h:244 msgid "kab" msgstr "" #: ../../util/wmgenmenu.h:245 msgid "Filezilla" msgstr "" #: ../../util/wmgenmenu.h:246 msgid "Bleachbit" msgstr "" #: ../../util/wmgenmenu.h:247 msgid "Teamviewer" msgstr "" #: ../../util/wmgenmenu.h:248 msgid "gUVCView" msgstr "" #: ../../util/wmgenmenu.h:249 msgid "LinPopUp" msgstr "" #: ../../util/wmgenmenu.h:250 msgid "Wine Configurator" msgstr "" #: ../../util/wmgenmenu.h:251 msgid "NMap" msgstr "" #: ../../util/wmgenmenu.h:252 msgid "Hydra" msgstr "" #: ../../util/wmgenmenu.h:253 msgid "XTeddy" msgstr "" #: ../../util/wmgenmenu.h:254 msgid "XTeddy TEST" msgstr "" #: ../../util/wmgenmenu.h:255 msgid "VNC Viewer" msgstr "" #: ../../util/wmgenmenu.h:256 msgid "Java Control Panel" msgstr "" #: ../../util/wmgenmenu.h:257 msgid "kfind" msgstr "" #: ../../util/wmgenmenu.h:258 msgid "oclock" msgstr "" #: ../../util/wmgenmenu.h:259 msgid "rclock" msgstr "" #: ../../util/wmgenmenu.h:260 msgid "Isomaster" msgstr "" #: ../../util/wmgenmenu.h:261 msgid "xclock" msgstr "" #: ../../util/wmgenmenu.h:262 msgid "HP Systray" msgstr "" #: ../../util/wmgenmenu.h:263 msgid "kppp" msgstr "" #: ../../util/wmgenmenu.h:264 msgid "Xarchiver" msgstr "" #: ../../util/wmgenmenu.h:273 msgid "Pidgin" msgstr "" #: ../../util/wmgenmenu.h:274 msgid "Skype" msgstr "" #: ../../util/wmgenmenu.h:275 msgid "Gizmo" msgstr "" #: ../../util/wmgenmenu.h:276 msgid "Gajim" msgstr "" #: ../../util/wmgenmenu.h:277 msgid "Kopete" msgstr "" #: ../../util/wmgenmenu.h:278 msgid "XChat" msgstr "" #: ../../util/wmgenmenu.h:279 msgid "Ekiga" msgstr "" #: ../../util/wmgenmenu.h:280 msgid "KVIrc" msgstr "" #: ../../util/wmgenmenu.h:281 msgid "BitchX" msgstr "" #: ../../util/wmgenmenu.h:282 msgid "EPIC" msgstr "" #: ../../util/wmgenmenu.h:283 msgid "Linphone" msgstr "" #: ../../util/wmgenmenu.h:284 msgid "Mumble" msgstr "" #: ../../util/wmgenmenu.h:285 msgid "EPIC4" msgstr "" #: ../../util/wmgenmenu.h:286 msgid "Irssi" msgstr "" #: ../../util/wmgenmenu.h:287 msgid "TinyIRC" msgstr "" #: ../../util/wmgenmenu.h:288 msgid "Ksirc" msgstr "" #: ../../util/wmgenmenu.h:289 msgid "gtalk" msgstr "" #: ../../util/wmgenmenu.h:290 msgid "GnomeICU" msgstr "" #: ../../util/wmgenmenu.h:291 msgid "Licq" msgstr "" #: ../../util/wmgenmenu.h:292 msgid "aMSN" msgstr "" #: ../../util/wmgenmenu.h:297 msgid "aMule" msgstr "" #: ../../util/wmgenmenu.h:298 msgid "gFTP" msgstr "" #: ../../util/wmgenmenu.h:299 msgid "Smb4K" msgstr "" #: ../../util/wmgenmenu.h:300 msgid "KTorrent" msgstr "" #: ../../util/wmgenmenu.h:301 msgid "BitTorrent GUI" msgstr "" #: ../../util/wmgenmenu.h:302 msgid "Transmission GTK" msgstr "" #: ../../util/wmgenmenu.h:303 msgid "ftp" msgstr "" #: ../../util/wmgenmenu.h:304 msgid "Deluge" msgstr "" #: ../../util/wmgenmenu.h:305 msgid "sftp" msgstr "" #: ../../util/wmgenmenu.h:306 msgid "Pavuk" msgstr "" #: ../../util/wmgenmenu.h:307 msgid "gtm" msgstr "" #: ../../util/wmgenmenu.h:308 msgid "Gnut" msgstr "" #: ../../util/wmgenmenu.h:309 msgid "GTK Gnutella" msgstr "" #: ../../util/wmgenmenu.h:310 msgid "Gnutmeg" msgstr "" #: ../../util/wmgenmenu.h:315 msgid "FlightGear Flight Simulator" msgstr "" #: ../../util/wmgenmenu.h:316 msgid "Tremulous" msgstr "" #: ../../util/wmgenmenu.h:317 msgid "XBoard" msgstr "" #: ../../util/wmgenmenu.h:318 msgid "GNOME Chess" msgstr "" #: ../../util/wmgenmenu.h:319 msgid "Darkplaces (Quake 1)" msgstr "" #: ../../util/wmgenmenu.h:320 msgid "QuakeSpasm (Quake 1)" msgstr "" #: ../../util/wmgenmenu.h:321 msgid "Quake 2" msgstr "" #: ../../util/wmgenmenu.h:322 msgid "KM Quake 2 (Quake 2" msgstr "" #: ../../util/wmgenmenu.h:323 msgid "QMax (Quake 2" msgstr "" #: ../../util/wmgenmenu.h:324 msgid "Quake 3" msgstr "" #: ../../util/wmgenmenu.h:325 msgid "Quake 4" msgstr "" #: ../../util/wmgenmenu.h:326 msgid "Quake 4 SMP" msgstr "" #: ../../util/wmgenmenu.h:327 msgid "Openarena" msgstr "" #: ../../util/wmgenmenu.h:328 msgid "Quake 3: Urban Terror 2" msgstr "" #: ../../util/wmgenmenu.h:329 msgid "Soldier of Fortune" msgstr "" #: ../../util/wmgenmenu.h:330 msgid "Rune" msgstr "" #: ../../util/wmgenmenu.h:331 msgid "Doom 3" msgstr "" #: ../../util/wmgenmenu.h:332 msgid "Zelda Solarus" msgstr "" #: ../../util/wmgenmenu.h:333 msgid "Solarwolf" msgstr "" #: ../../util/wmgenmenu.h:334 msgid "Pachi" msgstr "" #: ../../util/wmgenmenu.h:335 msgid "Tribes 2" msgstr "" #: ../../util/wmgenmenu.h:336 msgid "GNUjump" msgstr "" #: ../../util/wmgenmenu.h:337 msgid "Supertransball 2" msgstr "" #: ../../util/wmgenmenu.h:338 msgid "Supertux" msgstr "" #: ../../util/wmgenmenu.h:339 msgid "Supertux 2" msgstr "" #: ../../util/wmgenmenu.h:340 msgid "Mega Mario" msgstr "" #: ../../util/wmgenmenu.h:341 msgid "Frogatto" msgstr "" #: ../../util/wmgenmenu.h:342 msgid "Minecraft" msgstr "" #: ../../util/wmgenmenu.h:343 msgid "Alienarena" msgstr "" #: ../../util/wmgenmenu.h:344 msgid "Nexuiz" msgstr "" #: ../../util/wmgenmenu.h:345 msgid "Bomberclone" msgstr "" #: ../../util/wmgenmenu.h:346 msgid "Chromium-BSU" msgstr "" #: ../../util/wmgenmenu.h:347 msgid "Clanbomber" msgstr "" #: ../../util/wmgenmenu.h:348 msgid "Clanbomber 2" msgstr "" #: ../../util/wmgenmenu.h:349 msgid "Defendguin" msgstr "" #: ../../util/wmgenmenu.h:350 msgid "Dosbox" msgstr "" #: ../../util/wmgenmenu.h:351 msgid "Duke Nukem 3D" msgstr "" #: ../../util/wmgenmenu.h:352 msgid "eDuke32" msgstr "" #: ../../util/wmgenmenu.h:353 msgid "Emilia Pinball" msgstr "" #: ../../util/wmgenmenu.h:354 msgid "Extreme-Tuxracer" msgstr "" #: ../../util/wmgenmenu.h:355 msgid "Freedroid RPG" msgstr "" #: ../../util/wmgenmenu.h:356 msgid "Frozen Bubble" msgstr "" #: ../../util/wmgenmenu.h:357 msgid "Frozen Bubble Editor" msgstr "" #: ../../util/wmgenmenu.h:358 msgid "GL 117" msgstr "" #: ../../util/wmgenmenu.h:359 msgid "LBreakout 2" msgstr "" #: ../../util/wmgenmenu.h:360 msgid "Legends" msgstr "" #: ../../util/wmgenmenu.h:361 msgid "Lincity-NG" msgstr "" #: ../../util/wmgenmenu.h:362 msgid "Neverball" msgstr "" #: ../../util/wmgenmenu.h:363 msgid "Neverput" msgstr "" #: ../../util/wmgenmenu.h:364 msgid "Openastromenace" msgstr "" #: ../../util/wmgenmenu.h:365 msgid "Penguin Command" msgstr "" #: ../../util/wmgenmenu.h:366 msgid "Powermanga" msgstr "" #: ../../util/wmgenmenu.h:367 msgid "Return to Castle Wolfenstein SP" msgstr "" #: ../../util/wmgenmenu.h:368 msgid "Return to Castle Wolfenstein MP" msgstr "" #: ../../util/wmgenmenu.h:369 msgid "Snes9X" msgstr "" #: ../../util/wmgenmenu.h:370 msgid "Slune" msgstr "" #: ../../util/wmgenmenu.h:371 msgid "Torcs" msgstr "" #: ../../util/wmgenmenu.h:372 msgid "Speed Dreams" msgstr "" #: ../../util/wmgenmenu.h:373 msgid "Trackballs" msgstr "" #: ../../util/wmgenmenu.h:374 msgid "VDrift" msgstr "" #: ../../util/wmgenmenu.h:375 msgid "Warmux" msgstr "" #: ../../util/wmgenmenu.h:376 msgid "Warsow" msgstr "" #: ../../util/wmgenmenu.h:377 msgid "Wesnoth" msgstr "" #: ../../util/wmgenmenu.h:378 msgid "World of Padman" msgstr "" #: ../../util/wmgenmenu.h:379 msgid "XBlast" msgstr "" #: ../../util/wmgenmenu.h:380 msgid "XPenguins" msgstr "" #: ../../util/wmgenmenu.h:381 msgid "XTux" msgstr "" #: ../../util/wmgenmenu.h:382 ../../util/wmgenmenu.h:383 msgid "The Mana World" msgstr "" #: ../../util/wmgenmenu.h:384 msgid "Super Mario Chronicles" msgstr "" #: ../../util/wmgenmenu.h:385 msgid "Unreal" msgstr "" #: ../../util/wmgenmenu.h:386 msgid "Unreal Tournament" msgstr "" #: ../../util/wmgenmenu.h:387 msgid "Unreal Tournament 2004" msgstr "" #: ../../util/wmgenmenu.h:388 msgid "Xonotic" msgstr "" #: ../../util/wmgenmenu.h:389 msgid "Descent 3" msgstr "" #: ../../util/wmgenmenu.h:390 msgid "Myth 2" msgstr "" #: ../../util/wmgenmenu.h:391 ../../util/wmgenmenu.h:392 #: ../../util/wmgenmenu.h:393 msgid "Sauerbraten" msgstr "" #: ../../util/wmgenmenu.h:394 msgid "Railroad Tycoon 2" msgstr "" #: ../../util/wmgenmenu.h:395 msgid "Heretic 2" msgstr "" #: ../../util/wmgenmenu.h:396 msgid "Kohan" msgstr "" #: ../../util/wmgenmenu.h:397 msgid "XQF" msgstr "" #: ../../util/wmgenmenu.h:402 msgid "OpenOffice.org Writer" msgstr "" #: ../../util/wmgenmenu.h:403 msgid "OpenOffice.org Calc" msgstr "" #: ../../util/wmgenmenu.h:404 msgid "OpenOffice.org Draw" msgstr "" #: ../../util/wmgenmenu.h:405 msgid "OpenOffice.org Impress" msgstr "" #: ../../util/wmgenmenu.h:406 msgid "OpenOffice.org Math" msgstr "" #: ../../util/wmgenmenu.h:407 msgid "OpenOffice.org" msgstr "" #: ../../util/wmgenmenu.h:408 msgid "StarOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:409 msgid "StarOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:410 msgid "StarOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:411 msgid "StarOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:412 msgid "StarOffice Math" msgstr "" #: ../../util/wmgenmenu.h:413 msgid "StarOffice" msgstr "" #: ../../util/wmgenmenu.h:414 msgid "LibreOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:415 msgid "LibreOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:416 msgid "LibreOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:417 msgid "LibreOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:418 msgid "LibreOffice Math" msgstr "" #: ../../util/wmgenmenu.h:419 msgid "LibreOffice Base" msgstr "" #: ../../util/wmgenmenu.h:420 msgid "LibreOffice Web" msgstr "" #: ../../util/wmgenmenu.h:421 msgid "LibreOffice" msgstr "" #: ../../util/wmgenmenu.h:422 msgid "AbiWord" msgstr "" #: ../../util/wmgenmenu.h:423 msgid "KWord" msgstr "" #: ../../util/wmgenmenu.h:424 msgid "KPresenter" msgstr "" #: ../../util/wmgenmenu.h:425 msgid "KSpread" msgstr "" #: ../../util/wmgenmenu.h:426 msgid "KChart" msgstr "" #: ../../util/wmgenmenu.h:427 msgid "KOrganizer" msgstr "" #: ../../util/wmgenmenu.h:428 msgid "LyX" msgstr "" #: ../../util/wmgenmenu.h:429 msgid "Klyx" msgstr "" #: ../../util/wmgenmenu.h:430 msgid "GnuCash" msgstr "" #: ../../util/wmgenmenu.h:431 msgid "Gnumeric" msgstr "" #: ../../util/wmgenmenu.h:432 msgid "GnomeCal" msgstr "" #: ../../util/wmgenmenu.h:433 msgid "GnomeCard" msgstr "" #: ../../util/wmgenmenu.h:438 msgid "gitk" msgstr "" #: ../../util/wmgenmenu.h:439 msgid "gitview" msgstr "" #: ../../util/wmgenmenu.h:440 msgid "qgit" msgstr "" #: ../../util/wmgenmenu.h:441 msgid "git-gui" msgstr "" #: ../../util/wmgenmenu.h:442 msgid "glimmer" msgstr "" #: ../../util/wmgenmenu.h:443 msgid "glade" msgstr "" #: ../../util/wmgenmenu.h:444 msgid "Geany" msgstr "" #: ../../util/wmgenmenu.h:445 msgid "Codeblocks" msgstr "" #: ../../util/wmgenmenu.h:446 msgid "kdevelop" msgstr "" #: ../../util/wmgenmenu.h:447 msgid "designer" msgstr "" #: ../../util/wmgenmenu.h:448 msgid "kbabel" msgstr "" #: ../../util/wmgenmenu.h:449 msgid "idle" msgstr "" #: ../../util/wmgenmenu.h:450 msgid "ghex" msgstr "" #: ../../util/wmgenmenu.h:451 msgid "hexedit" msgstr "" #: ../../util/wmgenmenu.h:452 msgid "memprof" msgstr "" #: ../../util/wmgenmenu.h:453 msgid "tclsh" msgstr "" #: ../../util/wmgenmenu.h:454 msgid "gdb" msgstr "" #: ../../util/wmgenmenu.h:455 msgid "xxgdb" msgstr "" #: ../../util/wmgenmenu.h:456 msgid "xev" msgstr "" #: ../../util/wmgenmenu.h:461 msgid "Iotop" msgstr "" #: ../../util/wmgenmenu.h:462 msgid "Iostat" msgstr "" #: ../../util/wmgenmenu.h:463 msgid "keybconf" msgstr "" #: ../../util/wmgenmenu.h:464 msgid "GNOME System Monitor" msgstr "" #: ../../util/wmgenmenu.h:465 msgid "top" msgstr "" #: ../../util/wmgenmenu.h:466 msgid "KDE Process Monitor" msgstr "" #: ../../util/wmgenmenu.h:467 msgid "gw" msgstr "" #: ../../util/wmgenmenu.h:468 msgid "GNOME Control Center" msgstr "" #: ../../util/wmgenmenu.h:469 msgid "GKrellM" msgstr "" #: ../../util/wmgenmenu.h:470 msgid "tksysv" msgstr "" #: ../../util/wmgenmenu.h:471 msgid "ksysv" msgstr "" #: ../../util/wmgenmenu.h:472 msgid "GNOME PPP" msgstr "" #: ../../util/wmgenmenu.h:477 msgid "YaST 2" msgstr "" #: ../../util/wmgenmenu.h:478 msgid "YaST" msgstr "" #: ../../util/wmgenmenu.h:479 msgid "System Settings" msgstr "" #: ../../util/wmgenmenu.h:480 msgid "UMTSMon" msgstr "" #: ../../util/wmgenmenu.h:485 msgid "DrakNetCenter" msgstr "" #: ../../util/wmgenmenu.h:486 msgid "RPMDrake" msgstr "" #: ../../util/wmgenmenu.h:487 msgid "HardDrake" msgstr "" #: ../../util/wmgenmenu.h:488 msgid "DrakConf" msgstr "" #: ../../util/wmgenmenu.h:489 msgid "MandrakeUpdate" msgstr "" #: ../../util/wmgenmenu.h:490 msgid "XDrakRes" msgstr "" #: ../../util/wmgenmenu.h:495 msgid "Docker" msgstr "" #: ../../util/wmgenmenu.h:496 msgid "Net" msgstr "" #: ../../util/wmgenmenu.h:497 msgid "Net Load" msgstr "" #: ../../util/wmgenmenu.h:498 ../../util/wmgenmenu.h:499 msgid "Ping" msgstr "" #: ../../util/wmgenmenu.h:500 ../../util/wmgenmenu.h:543 msgid "Power" msgstr "" #: ../../util/wmgenmenu.h:502 msgid "Harddisk Monitor" msgstr "" #: ../../util/wmgenmenu.h:503 msgid "Download" msgstr "" #: ../../util/wmgenmenu.h:504 msgid "Dots" msgstr "" #: ../../util/wmgenmenu.h:505 msgid "Matrix" msgstr "" #: ../../util/wmgenmenu.h:506 msgid "Fire" msgstr "" #: ../../util/wmgenmenu.h:507 msgid "Net send" msgstr "" #: ../../util/wmgenmenu.h:508 msgid "Laptop" msgstr "" #: ../../util/wmgenmenu.h:509 msgid "WiFi" msgstr "" #: ../../util/wmgenmenu.h:510 msgid "Interface Info" msgstr "" #: ../../util/wmgenmenu.h:511 ../../util/wmgenmenu.h:512 #: ../../util/wmgenmenu.h:517 msgid "Weather" msgstr "" #: ../../util/wmgenmenu.h:513 msgid "Sticky Notes" msgstr "" #: ../../util/wmgenmenu.h:514 msgid "Pinboard" msgstr "" #: ../../util/wmgenmenu.h:515 ../../util/wmgenmenu.h:516 msgid "Mixer" msgstr "" #: ../../util/wmgenmenu.h:518 msgid "CPU Load" msgstr "" #: ../../util/wmgenmenu.h:519 msgid "CPU Freq" msgstr "" #: ../../util/wmgenmenu.h:520 msgid "Memory Load" msgstr "" #: ../../util/wmgenmenu.h:521 msgid "Memory Free" msgstr "" #: ../../util/wmgenmenu.h:522 msgid "Memory Monitor" msgstr "" #: ../../util/wmgenmenu.h:523 msgid "Clock Mon" msgstr "" #: ../../util/wmgenmenu.h:524 msgid "Network Devices" msgstr "" #: ../../util/wmgenmenu.h:525 msgid "Calendar & Clock" msgstr "" #: ../../util/wmgenmenu.h:526 msgid "Time" msgstr "" #: ../../util/wmgenmenu.h:527 msgid "Date" msgstr "" #: ../../util/wmgenmenu.h:528 msgid "Time & Date" msgstr "" #: ../../util/wmgenmenu.h:529 ../../util/wmgenmenu.h:530 msgid "System Monitor" msgstr "" #: ../../util/wmgenmenu.h:531 msgid "Sensor Monitor" msgstr "" #: ../../util/wmgenmenu.h:532 ../../util/wmgenmenu.h:533 msgid "System Tray" msgstr "" #: ../../util/wmgenmenu.h:534 msgid "SMP Monitor" msgstr "" #: ../../util/wmgenmenu.h:535 msgid "Timer" msgstr "" #: ../../util/wmgenmenu.h:536 ../../util/wmgenmenu.h:537 msgid "Mounter" msgstr "" #: ../../util/wmgenmenu.h:538 msgid "Uptime" msgstr "" #: ../../util/wmgenmenu.h:539 msgid "Work Timer" msgstr "" #: ../../util/wmgenmenu.h:540 msgid "Interfaces" msgstr "" #: ../../util/wmgenmenu.h:541 msgid "Button" msgstr "" #: ../../util/wmgenmenu.h:542 msgid "xmms" msgstr "" #: ../../util/wmgenmenu.h:544 msgid "Magnify" msgstr "" #: ../../util/wmgenmenu.h:549 msgid "IceWM" msgstr "" #: ../../util/wmgenmenu.h:550 msgid "KWin" msgstr "" #: ../../util/wmgenmenu.h:551 msgid "twm" msgstr "" #: ../../util/wmgenmenu.h:552 msgid "Fluxbox" msgstr "" #: ../../util/wmgenmenu.h:553 msgid "Blackbox" msgstr "" #: ../../util/wmgenmenu.h:554 msgid "Ion" msgstr "" #: ../../util/wmgenmenu.h:555 msgid "Motif Window Manager" msgstr "" #: ../../util/wmgenmenu.h:556 msgid "FVWM" msgstr "" #: ../../util/wmgenmenu.h:557 msgid "FVWM-Crystal" msgstr "" WindowMaker-0.95.8/util/po/nl.po0000664000175000017500000007402612650014300013333 00000000000000# New translation into Dutch for Window Maker # Copyright (C) 2014 Window Maker Developers Team # This file is distributed under the same license as the windowmaker package. # Original by Alwin , 2014. # msgid "" msgstr "" "Project-Id-Version: wmaker-0.95.6+\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-21 21:25+0100\n" "PO-Revision-Date: 2014-03-05 00:00+0000\n" "Last-Translator: Alwin \n" "Language-Team: Dutch\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Root -> Applications #: ../../util/wmgenmenu.c:117 msgid "Applications" msgstr "Programma's" #. Root -> Applications -> #: ../../util/wmgenmenu.c:120 msgid "Terminals" msgstr "Terminals" #. always keep terminals the top item #: ../../util/wmgenmenu.c:121 msgid "Internet" msgstr "Internet" #: ../../util/wmgenmenu.c:122 msgid "Email" msgstr "E-mail" #: ../../util/wmgenmenu.c:123 msgid "Mathematics" msgstr "Wiskunde" #: ../../util/wmgenmenu.c:124 msgid "File Managers" msgstr "Bestandsbeheerders" #: ../../util/wmgenmenu.c:125 msgid "Graphics" msgstr "Grafisch" #: ../../util/wmgenmenu.c:126 msgid "Multimedia" msgstr "Multimedia" #: ../../util/wmgenmenu.c:127 msgid "Editors" msgstr "Tekstbewerkers" #: ../../util/wmgenmenu.c:128 msgid "Development" msgstr "Ontwikkelen" #: ../../util/wmgenmenu.c:130 msgid "Office" msgstr "Kantoor" #: ../../util/wmgenmenu.c:131 msgid "Astronomy" msgstr "Sterrenkunde" #: ../../util/wmgenmenu.c:132 msgid "Sound" msgstr "Audio" #: ../../util/wmgenmenu.c:133 msgid "Comics" msgstr "Strips" #: ../../util/wmgenmenu.c:134 msgid "Viewers" msgstr "Viewers" #: ../../util/wmgenmenu.c:135 msgid "Utilities" msgstr "Hulpmiddelen" #: ../../util/wmgenmenu.c:136 msgid "System" msgstr "Systeem" #: ../../util/wmgenmenu.c:137 msgid "Video" msgstr "Video" #: ../../util/wmgenmenu.c:138 msgid "Chat and Talk" msgstr "Berichten en spraak" #: ../../util/wmgenmenu.c:139 msgid "P2P Network" msgstr "P2P-netwerk" #: ../../util/wmgenmenu.c:140 msgid "Games" msgstr "Spellen" #: ../../util/wmgenmenu.c:148 msgid "Run..." msgstr "Uitvoeren..." #: ../../util/wmgenmenu.c:150 #, c-format msgid "%A(Run, Type command:)" msgstr "%A(Uitvoeren, Typ commando:)" #. Root -> Appearance #: ../../util/wmgenmenu.c:156 msgid "Appearance" msgstr "Uiterlijk" #: ../../util/wmgenmenu.c:160 msgid "Themes" msgstr "Thema's" #: ../../util/wmgenmenu.c:169 msgid "Styles" msgstr "Stijlen" #: ../../util/wmgenmenu.c:178 msgid "Icon Sets" msgstr "Iconensets" #. Root -> Appearance -> Background #: ../../util/wmgenmenu.c:186 msgid "Background" msgstr "Achtergrond" #. Root -> Appearance -> Background -> Solid #: ../../util/wmgenmenu.c:189 msgid "Solid" msgstr "Effen" #. Root -> Appearance -> Background -> Solid -> #: ../../util/wmgenmenu.c:201 msgid "Black" msgstr "Zwart" #: ../../util/wmgenmenu.c:202 msgid "Blue" msgstr "Blauw" #: ../../util/wmgenmenu.c:203 msgid "Indigo" msgstr "Indigo" #: ../../util/wmgenmenu.c:204 msgid "Bluemarine" msgstr "Marineblauw" #: ../../util/wmgenmenu.c:205 msgid "Purple" msgstr "Purper" #: ../../util/wmgenmenu.c:206 msgid "Wheat" msgstr "Tarwe" #: ../../util/wmgenmenu.c:207 msgid "Dark Gray" msgstr "Donkergrijs" #: ../../util/wmgenmenu.c:208 msgid "Wine" msgstr "Wijnrood" #. Root -> Appearance -> Background -> Gradient #: ../../util/wmgenmenu.c:213 msgid "Gradient" msgstr "Kleurverloop" #: ../../util/wmgenmenu.c:227 msgid "Sunset" msgstr "Zonsondergang" #: ../../util/wmgenmenu.c:234 msgid "Sky" msgstr "Lucht" #: ../../util/wmgenmenu.c:235 msgid "Blue Shades" msgstr "Blauwtinten" #: ../../util/wmgenmenu.c:236 msgid "Indigo Shades" msgstr "Indigotinten" #: ../../util/wmgenmenu.c:237 msgid "Purple Shades" msgstr "Purpertinten" #: ../../util/wmgenmenu.c:238 msgid "Wheat Shades" msgstr "Tarwetinten" #: ../../util/wmgenmenu.c:239 msgid "Grey Shades" msgstr "Grijstinten" #: ../../util/wmgenmenu.c:240 msgid "Wine Shades" msgstr "Wijnroodtinten" #: ../../util/wmgenmenu.c:246 msgid "Images" msgstr "Afbeeldingen" #: ../../util/wmgenmenu.c:257 msgid "Save Theme" msgstr "Thema opslaan" #: ../../util/wmgenmenu.c:266 msgid "Save IconSet" msgstr "Iconenset opslaan" #: ../../util/wmgenmenu.c:277 msgid "Workspaces" msgstr "Werkruimten" #. Root -> Workspace #: ../../util/wmgenmenu.c:284 msgid "Workspace" msgstr "Werkruimte" #: ../../util/wmgenmenu.c:286 msgid "Hide Others" msgstr "Andere verbergen" #: ../../util/wmgenmenu.c:294 msgid "Show All" msgstr "Alles tonen" #: ../../util/wmgenmenu.c:302 msgid "Arrange Icons" msgstr "Iconen schikken" #: ../../util/wmgenmenu.c:310 msgid "Refresh" msgstr "Vernieuwen" #: ../../util/wmgenmenu.c:318 msgid "Save Session" msgstr "Sessie opslaan" #: ../../util/wmgenmenu.c:326 msgid "Clear Session" msgstr "Sessie wissen" #: ../../util/wmgenmenu.c:335 msgid "Configure Window Maker" msgstr "Window Maker instellen" #: ../../util/wmgenmenu.c:344 msgid "Info Panel" msgstr "Infopaneel" #: ../../util/wmgenmenu.c:352 msgid "Restart Window Maker" msgstr "Window Maker herstarten" #: ../../util/wmgenmenu.c:365 msgid "Lock Screen" msgstr "Scherm vergrendelen" #: ../../util/wmgenmenu.c:376 msgid "Exit Window Maker" msgstr "Window Maker afsluiten" #: ../../util/wmgenmenu.c:480 #, c-format msgid "Start %s" msgstr "%s starten" #: ../../util/wmgenmenu.c:490 msgid "Other Window Managers" msgstr "Andere vensterbeheerders" #: ../../util/wmgenmenu.h:26 msgid "xterm" msgstr "" #: ../../util/wmgenmenu.h:27 msgid "mrxvt" msgstr "" #: ../../util/wmgenmenu.h:28 msgid "Konsole" msgstr "" #: ../../util/wmgenmenu.h:29 msgid "Urxvt" msgstr "" #: ../../util/wmgenmenu.h:34 msgid "Dolphin" msgstr "" #: ../../util/wmgenmenu.h:35 msgid "Thunar" msgstr "" #: ../../util/wmgenmenu.h:36 msgid "ROX filer" msgstr "" #: ../../util/wmgenmenu.h:37 msgid "PCManFM" msgstr "" #: ../../util/wmgenmenu.h:38 msgid "GWorkspace" msgstr "" #: ../../util/wmgenmenu.h:39 msgid "Midnight Commander" msgstr "" #: ../../util/wmgenmenu.h:40 msgid "XFTree" msgstr "" #: ../../util/wmgenmenu.h:41 ../../util/wmgenmenu.h:140 msgid "Konqueror" msgstr "" #: ../../util/wmgenmenu.h:42 msgid "Nautilus" msgstr "" #: ../../util/wmgenmenu.h:43 msgid "FSViewer" msgstr "" #: ../../util/wmgenmenu.h:44 msgid "Xfe" msgstr "" #: ../../util/wmgenmenu.h:49 msgid "Xmaxima" msgstr "" #: ../../util/wmgenmenu.h:50 msgid "Maxima" msgstr "" #: ../../util/wmgenmenu.h:51 msgid "Maple" msgstr "" #: ../../util/wmgenmenu.h:52 msgid "Scilab" msgstr "" #: ../../util/wmgenmenu.h:53 msgid "bc" msgstr "" #: ../../util/wmgenmenu.h:54 msgid "KCalc" msgstr "" #: ../../util/wmgenmenu.h:55 msgid "XCalc" msgstr "" #: ../../util/wmgenmenu.h:56 msgid "Mathematica" msgstr "" #: ../../util/wmgenmenu.h:57 msgid "Math" msgstr "" #. command-line Mathematica #: ../../util/wmgenmenu.h:58 msgid "Free42" msgstr "" #: ../../util/wmgenmenu.h:59 msgid "X48" msgstr "" #: ../../util/wmgenmenu.h:64 msgid "Xplns" msgstr "" #: ../../util/wmgenmenu.h:65 msgid "Stellarium" msgstr "" #: ../../util/wmgenmenu.h:70 msgid "GIMP" msgstr "" #: ../../util/wmgenmenu.h:71 msgid "Sodipodi" msgstr "" #: ../../util/wmgenmenu.h:72 msgid "Inkscape" msgstr "" #: ../../util/wmgenmenu.h:73 msgid "KIllustrator" msgstr "" #: ../../util/wmgenmenu.h:74 msgid "Krayon" msgstr "" #: ../../util/wmgenmenu.h:75 msgid "KPovModeler" msgstr "" #: ../../util/wmgenmenu.h:76 msgid "XBitmap" msgstr "" #: ../../util/wmgenmenu.h:77 msgid "XPaint" msgstr "" #: ../../util/wmgenmenu.h:78 msgid "XFig" msgstr "" #: ../../util/wmgenmenu.h:79 msgid "KPaint" msgstr "" #: ../../util/wmgenmenu.h:80 msgid "Blender" msgstr "" #: ../../util/wmgenmenu.h:81 msgid "KSnapshot" msgstr "" #: ../../util/wmgenmenu.h:82 msgid "GPhoto" msgstr "" #: ../../util/wmgenmenu.h:83 msgid "DigiKam" msgstr "" #: ../../util/wmgenmenu.h:84 msgid "GQview" msgstr "" #: ../../util/wmgenmenu.h:85 msgid "Geeqie" msgstr "" #: ../../util/wmgenmenu.h:86 msgid "KView" msgstr "" #: ../../util/wmgenmenu.h:87 msgid "Dia" msgstr "" #: ../../util/wmgenmenu.h:88 msgid "CompuPic" msgstr "" #: ../../util/wmgenmenu.h:89 msgid "Pixie" msgstr "" #: ../../util/wmgenmenu.h:90 msgid "ImageMagick Display" msgstr "" #: ../../util/wmgenmenu.h:91 msgid "XV" msgstr "" #: ../../util/wmgenmenu.h:92 msgid "Eye of GNOME" msgstr "" #: ../../util/wmgenmenu.h:93 msgid "Quick Image Viewer" msgstr "" #: ../../util/wmgenmenu.h:98 ../../util/wmgenmenu.h:501 msgid "Audacious" msgstr "" #: ../../util/wmgenmenu.h:99 msgid "Kaffeine" msgstr "" #: ../../util/wmgenmenu.h:100 msgid "Audacity" msgstr "" #: ../../util/wmgenmenu.h:101 msgid "Amarok" msgstr "" #: ../../util/wmgenmenu.h:102 msgid "XMMS" msgstr "" #: ../../util/wmgenmenu.h:103 msgid "K9Copy" msgstr "" #: ../../util/wmgenmenu.h:104 msgid "HandBrake" msgstr "" #: ../../util/wmgenmenu.h:105 msgid "OGMRip" msgstr "" #: ../../util/wmgenmenu.h:106 msgid "DVBcut" msgstr "" #: ../../util/wmgenmenu.h:107 msgid "AcidRip" msgstr "" #: ../../util/wmgenmenu.h:108 msgid "RipperX" msgstr "" #: ../../util/wmgenmenu.h:109 msgid "Avidemux" msgstr "" #: ../../util/wmgenmenu.h:110 msgid "GQmpeg" msgstr "" #: ../../util/wmgenmenu.h:111 msgid "SMPlayer" msgstr "" #: ../../util/wmgenmenu.h:112 msgid "Linux MultiMedia Studio" msgstr "" #: ../../util/wmgenmenu.h:113 msgid "Freeamp" msgstr "" #: ../../util/wmgenmenu.h:114 msgid "RealPlayer" msgstr "" #: ../../util/wmgenmenu.h:115 msgid "Mediathek" msgstr "" #: ../../util/wmgenmenu.h:116 msgid "KMid" msgstr "" #: ../../util/wmgenmenu.h:117 msgid "Kmidi" msgstr "" #: ../../util/wmgenmenu.h:118 msgid "Gtcd" msgstr "" #: ../../util/wmgenmenu.h:119 msgid "Grip" msgstr "" #: ../../util/wmgenmenu.h:120 msgid "AVIplay" msgstr "" #: ../../util/wmgenmenu.h:121 msgid "Gtv" msgstr "" #: ../../util/wmgenmenu.h:122 msgid "VLC" msgstr "" #: ../../util/wmgenmenu.h:123 msgid "Sinek" msgstr "" #: ../../util/wmgenmenu.h:124 msgid "xine" msgstr "" #: ../../util/wmgenmenu.h:125 msgid "aKtion" msgstr "" #: ../../util/wmgenmenu.h:126 msgid "Gcd" msgstr "" #: ../../util/wmgenmenu.h:127 msgid "XawTV" msgstr "" #: ../../util/wmgenmenu.h:128 msgid "XPlayCD" msgstr "" #: ../../util/wmgenmenu.h:129 msgid "XBMC" msgstr "" #: ../../util/wmgenmenu.h:134 ../../util/wmgenmenu.h:135 msgid "Chromium" msgstr "" #: ../../util/wmgenmenu.h:136 msgid "Google Chrome" msgstr "" #: ../../util/wmgenmenu.h:137 msgid "Mozilla Firefox" msgstr "" #: ../../util/wmgenmenu.h:138 msgid "Galeon" msgstr "" #: ../../util/wmgenmenu.h:139 msgid "SkipStone" msgstr "" #: ../../util/wmgenmenu.h:141 msgid "Dillo" msgstr "" #: ../../util/wmgenmenu.h:142 msgid "Epiphany" msgstr "" #: ../../util/wmgenmenu.h:143 msgid "Opera" msgstr "" #: ../../util/wmgenmenu.h:144 msgid "Midori" msgstr "" #: ../../util/wmgenmenu.h:145 msgid "Mozilla SeaMonkey" msgstr "" #: ../../util/wmgenmenu.h:146 msgid "Kazehakase" msgstr "" #: ../../util/wmgenmenu.h:147 msgid "Links" msgstr "" #: ../../util/wmgenmenu.h:148 msgid "Lynx" msgstr "" #: ../../util/wmgenmenu.h:149 msgid "W3M" msgstr "" #: ../../util/wmgenmenu.h:154 msgid "Mozilla Thunderbird" msgstr "" #: ../../util/wmgenmenu.h:155 msgid "Mutt" msgstr "" #: ../../util/wmgenmenu.h:156 msgid "GNUMail" msgstr "" #: ../../util/wmgenmenu.h:157 msgid "Claws Mail" msgstr "" #: ../../util/wmgenmenu.h:158 msgid "Evolution" msgstr "" #: ../../util/wmgenmenu.h:159 msgid "Kleopatra" msgstr "" #: ../../util/wmgenmenu.h:160 msgid "Sylpheed" msgstr "" #: ../../util/wmgenmenu.h:161 msgid "Spruce" msgstr "" #: ../../util/wmgenmenu.h:162 msgid "KMail" msgstr "" #: ../../util/wmgenmenu.h:163 msgid "Exmh" msgstr "" #: ../../util/wmgenmenu.h:164 msgid "Pine" msgstr "" #: ../../util/wmgenmenu.h:165 msgid "ELM" msgstr "" #: ../../util/wmgenmenu.h:166 msgid "Alpine" msgstr "" #: ../../util/wmgenmenu.h:171 msgid "soundKonverter" msgstr "" #: ../../util/wmgenmenu.h:172 msgid "Krecord" msgstr "" #: ../../util/wmgenmenu.h:173 msgid "Grecord" msgstr "" #: ../../util/wmgenmenu.h:174 msgid "ALSA mixer" msgstr "" #: ../../util/wmgenmenu.h:175 msgid "VolWheel" msgstr "" #: ../../util/wmgenmenu.h:176 msgid "Sound configuration" msgstr "" #: ../../util/wmgenmenu.h:177 msgid "aumix" msgstr "" #: ../../util/wmgenmenu.h:178 msgid "Gmix" msgstr "" #: ../../util/wmgenmenu.h:183 msgid "XJed" msgstr "" #: ../../util/wmgenmenu.h:184 msgid "Jed" msgstr "" #: ../../util/wmgenmenu.h:185 msgid "Emacs" msgstr "" #: ../../util/wmgenmenu.h:186 msgid "XEmacs" msgstr "" #: ../../util/wmgenmenu.h:187 msgid "SciTE" msgstr "" #: ../../util/wmgenmenu.h:188 msgid "Bluefish" msgstr "" #: ../../util/wmgenmenu.h:189 msgid "gVIM" msgstr "" #: ../../util/wmgenmenu.h:190 msgid "vi" msgstr "" #: ../../util/wmgenmenu.h:191 msgid "VIM" msgstr "" #: ../../util/wmgenmenu.h:192 msgid "gedit" msgstr "" #: ../../util/wmgenmenu.h:193 msgid "KEdit" msgstr "" #: ../../util/wmgenmenu.h:194 msgid "XEdit" msgstr "" #: ../../util/wmgenmenu.h:195 msgid "KWrite" msgstr "" #: ../../util/wmgenmenu.h:196 msgid "Kate" msgstr "" #: ../../util/wmgenmenu.h:197 msgid "Pico" msgstr "" #: ../../util/wmgenmenu.h:198 msgid "Nano" msgstr "" #: ../../util/wmgenmenu.h:199 msgid "Joe" msgstr "" #: ../../util/wmgenmenu.h:204 msgid "Omnia data" msgstr "" #: ../../util/wmgenmenu.h:205 msgid "Comix" msgstr "" #: ../../util/wmgenmenu.h:206 msgid "QComicBook" msgstr "" #: ../../util/wmgenmenu.h:211 msgid "Evince" msgstr "" #: ../../util/wmgenmenu.h:212 msgid "KGhostView" msgstr "" #: ../../util/wmgenmenu.h:213 msgid "gv" msgstr "" #: ../../util/wmgenmenu.h:214 msgid "ePDFView" msgstr "" #: ../../util/wmgenmenu.h:215 msgid "GGv" msgstr "" #: ../../util/wmgenmenu.h:216 msgid "Xdvi" msgstr "" #: ../../util/wmgenmenu.h:217 msgid "KDVI" msgstr "" #: ../../util/wmgenmenu.h:218 msgid "Xpdf" msgstr "" #: ../../util/wmgenmenu.h:219 msgid "Adobe Reader" msgstr "" #: ../../util/wmgenmenu.h:220 msgid "Gless" msgstr "" #: ../../util/wmgenmenu.h:225 msgid "Google Desktop" msgstr "" #: ../../util/wmgenmenu.h:226 msgid "K3B" msgstr "" #: ../../util/wmgenmenu.h:227 msgid "X-CD-Roast" msgstr "" #: ../../util/wmgenmenu.h:228 msgid "Nero Linux" msgstr "" #: ../../util/wmgenmenu.h:229 msgid "Nero Linux Express" msgstr "" #: ../../util/wmgenmenu.h:230 msgid "gtkfind" msgstr "" #: ../../util/wmgenmenu.h:231 msgid "gdict" msgstr "" #: ../../util/wmgenmenu.h:232 msgid "gpsdrive" msgstr "" #: ../../util/wmgenmenu.h:233 msgid "Task Coach" msgstr "" #: ../../util/wmgenmenu.h:234 msgid "XSnap" msgstr "" #: ../../util/wmgenmenu.h:235 msgid "Screengrab" msgstr "" #: ../../util/wmgenmenu.h:236 msgid "XSane" msgstr "" #: ../../util/wmgenmenu.h:237 msgid "wfcmgr" msgstr "" #: ../../util/wmgenmenu.h:238 msgid "switch" msgstr "" #: ../../util/wmgenmenu.h:239 msgid "Cairo Clock" msgstr "" #: ../../util/wmgenmenu.h:240 msgid "Conky" msgstr "" #: ../../util/wmgenmenu.h:241 msgid "GNU Privacy Assistant" msgstr "" #: ../../util/wmgenmenu.h:242 msgid "Vidalia (tor)" msgstr "" #: ../../util/wmgenmenu.h:243 msgid "kaddressbook" msgstr "" #: ../../util/wmgenmenu.h:244 msgid "kab" msgstr "" #: ../../util/wmgenmenu.h:245 msgid "Filezilla" msgstr "" #: ../../util/wmgenmenu.h:246 msgid "Bleachbit" msgstr "" #: ../../util/wmgenmenu.h:247 msgid "Teamviewer" msgstr "" #: ../../util/wmgenmenu.h:248 msgid "gUVCView" msgstr "" #: ../../util/wmgenmenu.h:249 msgid "LinPopUp" msgstr "" #: ../../util/wmgenmenu.h:250 msgid "Wine Configurator" msgstr "" #: ../../util/wmgenmenu.h:251 msgid "NMap" msgstr "" #: ../../util/wmgenmenu.h:252 msgid "Hydra" msgstr "" #: ../../util/wmgenmenu.h:253 msgid "XTeddy" msgstr "" #: ../../util/wmgenmenu.h:254 msgid "XTeddy TEST" msgstr "" #: ../../util/wmgenmenu.h:255 msgid "VNC Viewer" msgstr "" #: ../../util/wmgenmenu.h:256 msgid "Java Control Panel" msgstr "" #: ../../util/wmgenmenu.h:257 msgid "kfind" msgstr "" #: ../../util/wmgenmenu.h:258 msgid "oclock" msgstr "" #: ../../util/wmgenmenu.h:259 msgid "rclock" msgstr "" #: ../../util/wmgenmenu.h:260 msgid "Isomaster" msgstr "" #: ../../util/wmgenmenu.h:261 msgid "xclock" msgstr "" #: ../../util/wmgenmenu.h:262 msgid "HP Systray" msgstr "" #: ../../util/wmgenmenu.h:263 msgid "kppp" msgstr "" #: ../../util/wmgenmenu.h:264 msgid "Xarchiver" msgstr "" #: ../../util/wmgenmenu.h:273 msgid "Pidgin" msgstr "" #: ../../util/wmgenmenu.h:274 msgid "Skype" msgstr "" #: ../../util/wmgenmenu.h:275 msgid "Gizmo" msgstr "" #: ../../util/wmgenmenu.h:276 msgid "Gajim" msgstr "" #: ../../util/wmgenmenu.h:277 msgid "Kopete" msgstr "" #: ../../util/wmgenmenu.h:278 msgid "XChat" msgstr "" #: ../../util/wmgenmenu.h:279 msgid "Ekiga" msgstr "" #: ../../util/wmgenmenu.h:280 msgid "KVIrc" msgstr "" #: ../../util/wmgenmenu.h:281 msgid "BitchX" msgstr "" #: ../../util/wmgenmenu.h:282 msgid "EPIC" msgstr "" #: ../../util/wmgenmenu.h:283 msgid "Linphone" msgstr "" #: ../../util/wmgenmenu.h:284 msgid "Mumble" msgstr "" #: ../../util/wmgenmenu.h:285 msgid "EPIC4" msgstr "" #: ../../util/wmgenmenu.h:286 msgid "Irssi" msgstr "" #: ../../util/wmgenmenu.h:287 msgid "TinyIRC" msgstr "" #: ../../util/wmgenmenu.h:288 msgid "Ksirc" msgstr "" #: ../../util/wmgenmenu.h:289 msgid "gtalk" msgstr "" #: ../../util/wmgenmenu.h:290 msgid "GnomeICU" msgstr "" #: ../../util/wmgenmenu.h:291 msgid "Licq" msgstr "" #: ../../util/wmgenmenu.h:292 msgid "aMSN" msgstr "" #: ../../util/wmgenmenu.h:297 msgid "aMule" msgstr "" #: ../../util/wmgenmenu.h:298 msgid "gFTP" msgstr "" #: ../../util/wmgenmenu.h:299 msgid "Smb4K" msgstr "" #: ../../util/wmgenmenu.h:300 msgid "KTorrent" msgstr "" #: ../../util/wmgenmenu.h:301 msgid "BitTorrent GUI" msgstr "" #: ../../util/wmgenmenu.h:302 msgid "Transmission GTK" msgstr "" #: ../../util/wmgenmenu.h:303 msgid "ftp" msgstr "" #: ../../util/wmgenmenu.h:304 msgid "Deluge" msgstr "" #: ../../util/wmgenmenu.h:305 msgid "sftp" msgstr "" #: ../../util/wmgenmenu.h:306 msgid "Pavuk" msgstr "" #: ../../util/wmgenmenu.h:307 msgid "gtm" msgstr "" #: ../../util/wmgenmenu.h:308 msgid "Gnut" msgstr "" #: ../../util/wmgenmenu.h:309 msgid "GTK Gnutella" msgstr "" #: ../../util/wmgenmenu.h:310 msgid "Gnutmeg" msgstr "" #: ../../util/wmgenmenu.h:315 msgid "FlightGear Flight Simulator" msgstr "" #: ../../util/wmgenmenu.h:316 msgid "Tremulous" msgstr "" #: ../../util/wmgenmenu.h:317 msgid "XBoard" msgstr "" #: ../../util/wmgenmenu.h:318 msgid "GNOME Chess" msgstr "" #: ../../util/wmgenmenu.h:319 msgid "Darkplaces (Quake 1)" msgstr "" #: ../../util/wmgenmenu.h:320 msgid "QuakeSpasm (Quake 1)" msgstr "" #: ../../util/wmgenmenu.h:321 msgid "Quake 2" msgstr "" #: ../../util/wmgenmenu.h:322 msgid "KM Quake 2 (Quake 2" msgstr "" #: ../../util/wmgenmenu.h:323 msgid "QMax (Quake 2" msgstr "" #: ../../util/wmgenmenu.h:324 msgid "Quake 3" msgstr "" #: ../../util/wmgenmenu.h:325 msgid "Quake 4" msgstr "" #: ../../util/wmgenmenu.h:326 msgid "Quake 4 SMP" msgstr "" #: ../../util/wmgenmenu.h:327 msgid "Openarena" msgstr "" #: ../../util/wmgenmenu.h:328 msgid "Quake 3: Urban Terror 2" msgstr "" #: ../../util/wmgenmenu.h:329 msgid "Soldier of Fortune" msgstr "" #: ../../util/wmgenmenu.h:330 msgid "Rune" msgstr "" #: ../../util/wmgenmenu.h:331 msgid "Doom 3" msgstr "" #: ../../util/wmgenmenu.h:332 msgid "Zelda Solarus" msgstr "" #: ../../util/wmgenmenu.h:333 msgid "Solarwolf" msgstr "" #: ../../util/wmgenmenu.h:334 msgid "Pachi" msgstr "" #: ../../util/wmgenmenu.h:335 msgid "Tribes 2" msgstr "" #: ../../util/wmgenmenu.h:336 msgid "GNUjump" msgstr "" #: ../../util/wmgenmenu.h:337 msgid "Supertransball 2" msgstr "" #: ../../util/wmgenmenu.h:338 msgid "Supertux" msgstr "" #: ../../util/wmgenmenu.h:339 msgid "Supertux 2" msgstr "" #: ../../util/wmgenmenu.h:340 msgid "Mega Mario" msgstr "" #: ../../util/wmgenmenu.h:341 msgid "Frogatto" msgstr "" #: ../../util/wmgenmenu.h:342 msgid "Minecraft" msgstr "" #: ../../util/wmgenmenu.h:343 msgid "Alienarena" msgstr "" #: ../../util/wmgenmenu.h:344 msgid "Nexuiz" msgstr "" #: ../../util/wmgenmenu.h:345 msgid "Bomberclone" msgstr "" #: ../../util/wmgenmenu.h:346 msgid "Chromium-BSU" msgstr "" #: ../../util/wmgenmenu.h:347 msgid "Clanbomber" msgstr "" #: ../../util/wmgenmenu.h:348 msgid "Clanbomber 2" msgstr "" #: ../../util/wmgenmenu.h:349 msgid "Defendguin" msgstr "" #: ../../util/wmgenmenu.h:350 msgid "Dosbox" msgstr "" #: ../../util/wmgenmenu.h:351 msgid "Duke Nukem 3D" msgstr "" #: ../../util/wmgenmenu.h:352 msgid "eDuke32" msgstr "" #: ../../util/wmgenmenu.h:353 msgid "Emilia Pinball" msgstr "" #: ../../util/wmgenmenu.h:354 msgid "Extreme-Tuxracer" msgstr "" #: ../../util/wmgenmenu.h:355 msgid "Freedroid RPG" msgstr "" #: ../../util/wmgenmenu.h:356 msgid "Frozen Bubble" msgstr "" #: ../../util/wmgenmenu.h:357 msgid "Frozen Bubble Editor" msgstr "" #: ../../util/wmgenmenu.h:358 msgid "GL 117" msgstr "" #: ../../util/wmgenmenu.h:359 msgid "LBreakout 2" msgstr "" #: ../../util/wmgenmenu.h:360 msgid "Legends" msgstr "" #: ../../util/wmgenmenu.h:361 msgid "Lincity-NG" msgstr "" #: ../../util/wmgenmenu.h:362 msgid "Neverball" msgstr "" #: ../../util/wmgenmenu.h:363 msgid "Neverput" msgstr "" #: ../../util/wmgenmenu.h:364 msgid "Openastromenace" msgstr "" #: ../../util/wmgenmenu.h:365 msgid "Penguin Command" msgstr "" #: ../../util/wmgenmenu.h:366 msgid "Powermanga" msgstr "" #: ../../util/wmgenmenu.h:367 msgid "Return to Castle Wolfenstein SP" msgstr "" #: ../../util/wmgenmenu.h:368 msgid "Return to Castle Wolfenstein MP" msgstr "" #: ../../util/wmgenmenu.h:369 msgid "Snes9X" msgstr "" #: ../../util/wmgenmenu.h:370 msgid "Slune" msgstr "" #: ../../util/wmgenmenu.h:371 msgid "Torcs" msgstr "" #: ../../util/wmgenmenu.h:372 msgid "Speed Dreams" msgstr "" #: ../../util/wmgenmenu.h:373 msgid "Trackballs" msgstr "" #: ../../util/wmgenmenu.h:374 msgid "VDrift" msgstr "" #: ../../util/wmgenmenu.h:375 msgid "Warmux" msgstr "" #: ../../util/wmgenmenu.h:376 msgid "Warsow" msgstr "" #: ../../util/wmgenmenu.h:377 msgid "Wesnoth" msgstr "" #: ../../util/wmgenmenu.h:378 msgid "World of Padman" msgstr "" #: ../../util/wmgenmenu.h:379 msgid "XBlast" msgstr "" #: ../../util/wmgenmenu.h:380 msgid "XPenguins" msgstr "" #: ../../util/wmgenmenu.h:381 msgid "XTux" msgstr "" #: ../../util/wmgenmenu.h:382 ../../util/wmgenmenu.h:383 msgid "The Mana World" msgstr "" #: ../../util/wmgenmenu.h:384 msgid "Super Mario Chronicles" msgstr "" #: ../../util/wmgenmenu.h:385 msgid "Unreal" msgstr "" #: ../../util/wmgenmenu.h:386 msgid "Unreal Tournament" msgstr "" #: ../../util/wmgenmenu.h:387 msgid "Unreal Tournament 2004" msgstr "" #: ../../util/wmgenmenu.h:388 msgid "Xonotic" msgstr "" #: ../../util/wmgenmenu.h:389 msgid "Descent 3" msgstr "" #: ../../util/wmgenmenu.h:390 msgid "Myth 2" msgstr "" #: ../../util/wmgenmenu.h:391 ../../util/wmgenmenu.h:392 #: ../../util/wmgenmenu.h:393 msgid "Sauerbraten" msgstr "" #: ../../util/wmgenmenu.h:394 msgid "Railroad Tycoon 2" msgstr "" #: ../../util/wmgenmenu.h:395 msgid "Heretic 2" msgstr "" #: ../../util/wmgenmenu.h:396 msgid "Kohan" msgstr "" #: ../../util/wmgenmenu.h:397 msgid "XQF" msgstr "" #: ../../util/wmgenmenu.h:402 msgid "OpenOffice.org Writer" msgstr "" #: ../../util/wmgenmenu.h:403 msgid "OpenOffice.org Calc" msgstr "" #: ../../util/wmgenmenu.h:404 msgid "OpenOffice.org Draw" msgstr "" #: ../../util/wmgenmenu.h:405 msgid "OpenOffice.org Impress" msgstr "" #: ../../util/wmgenmenu.h:406 msgid "OpenOffice.org Math" msgstr "" #: ../../util/wmgenmenu.h:407 msgid "OpenOffice.org" msgstr "" #: ../../util/wmgenmenu.h:408 msgid "StarOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:409 msgid "StarOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:410 msgid "StarOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:411 msgid "StarOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:412 msgid "StarOffice Math" msgstr "" #: ../../util/wmgenmenu.h:413 msgid "StarOffice" msgstr "" #: ../../util/wmgenmenu.h:414 msgid "LibreOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:415 msgid "LibreOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:416 msgid "LibreOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:417 msgid "LibreOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:418 msgid "LibreOffice Math" msgstr "" #: ../../util/wmgenmenu.h:419 msgid "LibreOffice Base" msgstr "" #: ../../util/wmgenmenu.h:420 msgid "LibreOffice Web" msgstr "" #: ../../util/wmgenmenu.h:421 msgid "LibreOffice" msgstr "" #: ../../util/wmgenmenu.h:422 msgid "AbiWord" msgstr "" #: ../../util/wmgenmenu.h:423 msgid "KWord" msgstr "" #: ../../util/wmgenmenu.h:424 msgid "KPresenter" msgstr "" #: ../../util/wmgenmenu.h:425 msgid "KSpread" msgstr "" #: ../../util/wmgenmenu.h:426 msgid "KChart" msgstr "" #: ../../util/wmgenmenu.h:427 msgid "KOrganizer" msgstr "" #: ../../util/wmgenmenu.h:428 msgid "LyX" msgstr "" #: ../../util/wmgenmenu.h:429 msgid "Klyx" msgstr "" #: ../../util/wmgenmenu.h:430 msgid "GnuCash" msgstr "" #: ../../util/wmgenmenu.h:431 msgid "Gnumeric" msgstr "" #: ../../util/wmgenmenu.h:432 msgid "GnomeCal" msgstr "" #: ../../util/wmgenmenu.h:433 msgid "GnomeCard" msgstr "" #: ../../util/wmgenmenu.h:438 msgid "gitk" msgstr "" #: ../../util/wmgenmenu.h:439 msgid "gitview" msgstr "" #: ../../util/wmgenmenu.h:440 msgid "qgit" msgstr "" #: ../../util/wmgenmenu.h:441 msgid "git-gui" msgstr "" #: ../../util/wmgenmenu.h:442 msgid "glimmer" msgstr "" #: ../../util/wmgenmenu.h:443 msgid "glade" msgstr "" #: ../../util/wmgenmenu.h:444 msgid "Geany" msgstr "" #: ../../util/wmgenmenu.h:445 msgid "Codeblocks" msgstr "" #: ../../util/wmgenmenu.h:446 msgid "kdevelop" msgstr "" #: ../../util/wmgenmenu.h:447 msgid "designer" msgstr "" #: ../../util/wmgenmenu.h:448 msgid "kbabel" msgstr "" #: ../../util/wmgenmenu.h:449 msgid "idle" msgstr "" #: ../../util/wmgenmenu.h:450 msgid "ghex" msgstr "" #: ../../util/wmgenmenu.h:451 msgid "hexedit" msgstr "" #: ../../util/wmgenmenu.h:452 msgid "memprof" msgstr "" #: ../../util/wmgenmenu.h:453 msgid "tclsh" msgstr "" #: ../../util/wmgenmenu.h:454 msgid "gdb" msgstr "" #: ../../util/wmgenmenu.h:455 msgid "xxgdb" msgstr "" #: ../../util/wmgenmenu.h:456 msgid "xev" msgstr "" #: ../../util/wmgenmenu.h:461 msgid "Iotop" msgstr "" #: ../../util/wmgenmenu.h:462 msgid "Iostat" msgstr "" #: ../../util/wmgenmenu.h:463 msgid "keybconf" msgstr "" #: ../../util/wmgenmenu.h:464 msgid "GNOME System Monitor" msgstr "" #: ../../util/wmgenmenu.h:465 msgid "top" msgstr "" #: ../../util/wmgenmenu.h:466 msgid "KDE Process Monitor" msgstr "" #: ../../util/wmgenmenu.h:467 msgid "gw" msgstr "" #: ../../util/wmgenmenu.h:468 msgid "GNOME Control Center" msgstr "" #: ../../util/wmgenmenu.h:469 msgid "GKrellM" msgstr "" #: ../../util/wmgenmenu.h:470 msgid "tksysv" msgstr "" #: ../../util/wmgenmenu.h:471 msgid "ksysv" msgstr "" #: ../../util/wmgenmenu.h:472 msgid "GNOME PPP" msgstr "" #: ../../util/wmgenmenu.h:477 msgid "YaST 2" msgstr "" #: ../../util/wmgenmenu.h:478 msgid "YaST" msgstr "" #: ../../util/wmgenmenu.h:479 msgid "System Settings" msgstr "" #: ../../util/wmgenmenu.h:480 msgid "UMTSMon" msgstr "" #: ../../util/wmgenmenu.h:485 msgid "DrakNetCenter" msgstr "" #: ../../util/wmgenmenu.h:486 msgid "RPMDrake" msgstr "" #: ../../util/wmgenmenu.h:487 msgid "HardDrake" msgstr "" #: ../../util/wmgenmenu.h:488 msgid "DrakConf" msgstr "" #: ../../util/wmgenmenu.h:489 msgid "MandrakeUpdate" msgstr "" #: ../../util/wmgenmenu.h:490 msgid "XDrakRes" msgstr "" #: ../../util/wmgenmenu.h:495 msgid "Docker" msgstr "" #: ../../util/wmgenmenu.h:496 msgid "Net" msgstr "" #: ../../util/wmgenmenu.h:497 msgid "Net Load" msgstr "" #: ../../util/wmgenmenu.h:498 ../../util/wmgenmenu.h:499 msgid "Ping" msgstr "" #: ../../util/wmgenmenu.h:500 ../../util/wmgenmenu.h:543 msgid "Power" msgstr "" #: ../../util/wmgenmenu.h:502 msgid "Harddisk Monitor" msgstr "" #: ../../util/wmgenmenu.h:503 msgid "Download" msgstr "" #: ../../util/wmgenmenu.h:504 msgid "Dots" msgstr "" #: ../../util/wmgenmenu.h:505 msgid "Matrix" msgstr "" #: ../../util/wmgenmenu.h:506 msgid "Fire" msgstr "" #: ../../util/wmgenmenu.h:507 msgid "Net send" msgstr "" #: ../../util/wmgenmenu.h:508 msgid "Laptop" msgstr "" #: ../../util/wmgenmenu.h:509 msgid "WiFi" msgstr "" #: ../../util/wmgenmenu.h:510 msgid "Interface Info" msgstr "" #: ../../util/wmgenmenu.h:511 ../../util/wmgenmenu.h:512 #: ../../util/wmgenmenu.h:517 msgid "Weather" msgstr "" #: ../../util/wmgenmenu.h:513 msgid "Sticky Notes" msgstr "" #: ../../util/wmgenmenu.h:514 msgid "Pinboard" msgstr "" #: ../../util/wmgenmenu.h:515 ../../util/wmgenmenu.h:516 msgid "Mixer" msgstr "" #: ../../util/wmgenmenu.h:518 msgid "CPU Load" msgstr "" #: ../../util/wmgenmenu.h:519 msgid "CPU Freq" msgstr "" #: ../../util/wmgenmenu.h:520 msgid "Memory Load" msgstr "" #: ../../util/wmgenmenu.h:521 msgid "Memory Free" msgstr "" #: ../../util/wmgenmenu.h:522 msgid "Memory Monitor" msgstr "" #: ../../util/wmgenmenu.h:523 msgid "Clock Mon" msgstr "" #: ../../util/wmgenmenu.h:524 msgid "Network Devices" msgstr "" #: ../../util/wmgenmenu.h:525 msgid "Calendar & Clock" msgstr "" #: ../../util/wmgenmenu.h:526 msgid "Time" msgstr "" #: ../../util/wmgenmenu.h:527 msgid "Date" msgstr "" #: ../../util/wmgenmenu.h:528 msgid "Time & Date" msgstr "" #: ../../util/wmgenmenu.h:529 ../../util/wmgenmenu.h:530 msgid "System Monitor" msgstr "" #: ../../util/wmgenmenu.h:531 msgid "Sensor Monitor" msgstr "" #: ../../util/wmgenmenu.h:532 ../../util/wmgenmenu.h:533 msgid "System Tray" msgstr "" #: ../../util/wmgenmenu.h:534 msgid "SMP Monitor" msgstr "" #: ../../util/wmgenmenu.h:535 msgid "Timer" msgstr "" #: ../../util/wmgenmenu.h:536 ../../util/wmgenmenu.h:537 msgid "Mounter" msgstr "" #: ../../util/wmgenmenu.h:538 msgid "Uptime" msgstr "" #: ../../util/wmgenmenu.h:539 msgid "Work Timer" msgstr "" #: ../../util/wmgenmenu.h:540 msgid "Interfaces" msgstr "" #: ../../util/wmgenmenu.h:541 msgid "Button" msgstr "" #: ../../util/wmgenmenu.h:542 msgid "xmms" msgstr "" #: ../../util/wmgenmenu.h:544 msgid "Magnify" msgstr "" #: ../../util/wmgenmenu.h:549 msgid "IceWM" msgstr "" #: ../../util/wmgenmenu.h:550 msgid "KWin" msgstr "" #: ../../util/wmgenmenu.h:551 msgid "twm" msgstr "" #: ../../util/wmgenmenu.h:552 msgid "Fluxbox" msgstr "" #: ../../util/wmgenmenu.h:553 msgid "Blackbox" msgstr "" #: ../../util/wmgenmenu.h:554 msgid "Ion" msgstr "" #: ../../util/wmgenmenu.h:555 msgid "Motif Window Manager" msgstr "" #: ../../util/wmgenmenu.h:556 msgid "FVWM" msgstr "" #: ../../util/wmgenmenu.h:557 msgid "FVWM-Crystal" msgstr "" WindowMaker-0.95.8/util/po/Makefile.am0000664000175000017500000000245012650014300014406 00000000000000DOMAIN = wmgenmenu CATALOGS = @UTILMOFILES@ CLEANFILES = $(DOMAIN).pot $(CATALOGS) EXTRA_DIST = de.po es.po fr.po fy.po nl.po pt.po POTFILES = \ $(top_srcdir)/util/wmgenmenu.c \ $(top_srcdir)/util/wmgenmenu.h SUFFIXES = .po .mo .po.mo: $(AM_V_GEN)$(MSGFMT) -c -o $@ $< all-local: $(CATALOGS) .PHONY: update-lang if HAVE_XGETTEXT update-lang: $(DOMAIN).pot $(AM_V_GEN)$(top_srcdir)/script/generate-po-from-template.sh \ -n "$(PACKAGE_NAME)" -v "$(PACKAGE_VERSION)" -b "$(PACKAGE_BUGREPORT)" \ -t "$(DOMAIN).pot" "$(srcdir)/$(PO).po" $(DOMAIN).pot: $(POTFILES) $(AM_V_GEN)$(XGETTEXT) --default-domain=$(DOMAIN) \ --add-comments --keyword=_ --keyword=N_ $(POTFILES) @if cmp -s $(DOMAIN).po $(DOMAIN).pot; then \ rm -f $(DOMAIN).po; \ else \ mv -f $(DOMAIN).po $(DOMAIN).pot; \ fi endif install-data-local: $(CATALOGS) $(mkinstalldirs) $(DESTDIR)$(localedir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ $(mkinstalldirs) $(DESTDIR)$(localedir)/$$l/LC_MESSAGES; \ $(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ fi; \ done uninstall-local: for n in $(CATALOGS) ; do \ l=`basename $$n .mo`; \ rm -f $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ done WindowMaker-0.95.8/util/po/de.po0000664000175000017500000000766312650014300013315 00000000000000# wmgenmenu German translation # Copyright (C) 2010 Carlos R. Mafra # This file is distributed under the same license as the Window Maker package. # Carlos R. Mafra , 2010. # msgid "" msgstr "" "Project-Id-Version: wmgenmenu\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-01-27 12:57+0100\n" "PO-Revision-Date: 2010-04-02 10:39+0200\n" "Last-Translator: Carlos R. Mafra \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../util/wmgenmenu.c:78 ../../util/wmgenmenu.c:91 msgid "Window Maker" msgstr "Window Maker" #: ../../util/wmgenmenu.c:79 msgid "Applications" msgstr "Anwendungen" #. Submenus in Applications #: ../../util/wmgenmenu.c:82 msgid "Terminals" msgstr "Terminals" #: ../../util/wmgenmenu.c:83 msgid "Internet" msgstr "Internet" #: ../../util/wmgenmenu.c:84 msgid "Email" msgstr "E-Mail" #: ../../util/wmgenmenu.c:85 msgid "Mathematics" msgstr "Mathematik" #: ../../util/wmgenmenu.c:86 msgid "File Managers" msgstr "Dateimanager" #: ../../util/wmgenmenu.c:87 msgid "Graphics" msgstr "Grafik" #: ../../util/wmgenmenu.c:88 msgid "Multimedia" msgstr "Multimedia" #: ../../util/wmgenmenu.c:89 msgid "Editors" msgstr "Text-Editoren" #: ../../util/wmgenmenu.c:90 msgid "Development" msgstr "Entwicklung" #: ../../util/wmgenmenu.c:92 msgid "Office" msgstr "Büro" #: ../../util/wmgenmenu.c:93 msgid "Astronomy" msgstr "Astronomie" #: ../../util/wmgenmenu.c:94 msgid "Sound" msgstr "Audio" #: ../../util/wmgenmenu.c:95 msgid "Comics" msgstr "Comic" #: ../../util/wmgenmenu.c:96 msgid "Viewers" msgstr "Dokumentbetrachter" #: ../../util/wmgenmenu.c:97 msgid "Utilities" msgstr "Hilfsprogramme" #: ../../util/wmgenmenu.c:98 msgid "System" msgstr "System" #: ../../util/wmgenmenu.c:99 msgid "Video" msgstr "Video" #: ../../util/wmgenmenu.c:100 msgid "Chat and Talk" msgstr "Chat und Besprechung" #: ../../util/wmgenmenu.c:101 msgid "P2P-Network" msgstr "P2P-Netzwerk" #: ../../util/wmgenmenu.c:102 msgid "Games" msgstr "Spiele" #: ../../util/wmgenmenu.c:103 msgid "OpenSUSE" msgstr "" #: ../../util/wmgenmenu.c:104 msgid "Mandriva" msgstr "" #: ../../util/wmgenmenu.c:110 msgid "Run..." msgstr "Ausführen..." #: ../../util/wmgenmenu.c:112 msgid "%A(Run, Type command:)" msgstr "%A(Ausführen, Befehl zum Ausführen eingeben:)" #. Appearance-related items #: ../../util/wmgenmenu.c:118 msgid "Appearance" msgstr "Erscheinungsbild" #: ../../util/wmgenmenu.c:120 msgid "Themes" msgstr "Themen" #: ../../util/wmgenmenu.c:128 msgid "Icons" msgstr "Iconsätze" #: ../../util/wmgenmenu.c:136 msgid "Background" msgstr "Hintergrund" #: ../../util/wmgenmenu.c:144 msgid "Save Theme" msgstr "Thema speichern" #: ../../util/wmgenmenu.c:152 msgid "Save Icons" msgstr "Iconsatz speichern" #: ../../util/wmgenmenu.c:162 msgid "Workspaces" msgstr "Arbeitsflächen" #: ../../util/wmgenmenu.c:168 msgid "Workspace" msgstr "Arbeitsfläche" #: ../../util/wmgenmenu.c:170 msgid "Hide Others" msgstr "Ändere verstecken" #: ../../util/wmgenmenu.c:176 msgid "Show All" msgstr "Alle anzeigen" #: ../../util/wmgenmenu.c:182 msgid "Arrange Icons" msgstr "Icons anordnen" #: ../../util/wmgenmenu.c:189 msgid "Refresh" msgstr "Neuzeichen" #: ../../util/wmgenmenu.c:195 msgid "Save Session" msgstr "Arbeitsplatz sichern" #: ../../util/wmgenmenu.c:201 msgid "Clear Session" msgstr "X Sitzung leeren" #: ../../util/wmgenmenu.c:209 msgid "Configure Window Maker" msgstr "Window Maker Einstellungen" #: ../../util/wmgenmenu.c:217 msgid "Info Panel" msgstr "Info-Panel" #: ../../util/wmgenmenu.c:224 msgid "Restart" msgstr "Neustart" #: ../../util/wmgenmenu.c:237 msgid "Lock Screen" msgstr "Bildschirm sperren" #: ../../util/wmgenmenu.c:248 msgid "Exit Window Maker" msgstr "Window Maker beenden" #: ../../util/wmgenmenu.c:317 #, c-format msgid "Start %s" msgstr "%s starten" #: ../../util/wmgenmenu.c:325 msgid "Other Window Managers" msgstr "Andere Fenstermanager" WindowMaker-0.95.8/util/po/pt.po0000664000175000017500000005373112650014300013345 00000000000000# wmgenmenu Portuguese translation # Copyright (C) 2012 Leandro Vital # This file is distributed under the same license as the Window Maker package. # Leandro Vital, 2012. # msgid "" msgstr "" "Project-Id-Version: wmgenmenu\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-02-10 00:04+0100\n" "PO-Revision-Date: 2011-02-05 12:19-0500\n" "Last-Translator: Leandro Vital \n" "Language-Team: Portuguese\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Root -> Applications #: ../../util/wmgenmenu.c:103 msgid "Applications" msgstr "Aplicativos" #. Root -> Applications -> #: ../../util/wmgenmenu.c:106 msgid "Terminals" msgstr "Terminais" #. always keep terminals the top item #: ../../util/wmgenmenu.c:107 msgid "Internet" msgstr "Internet" #: ../../util/wmgenmenu.c:108 msgid "Email" msgstr "Email" #: ../../util/wmgenmenu.c:109 msgid "Mathematics" msgstr "Matemática" #: ../../util/wmgenmenu.c:110 msgid "File Managers" msgstr "Gerenciadores de arquivos" #: ../../util/wmgenmenu.c:111 msgid "Graphics" msgstr "Gráficos" #: ../../util/wmgenmenu.c:112 msgid "Multimedia" msgstr "Multimídia" #: ../../util/wmgenmenu.c:113 msgid "Editors" msgstr "Editores" #: ../../util/wmgenmenu.c:114 msgid "Development" msgstr "Desenvolvimento" #: ../../util/wmgenmenu.c:116 msgid "Office" msgstr "Suítes Office" #: ../../util/wmgenmenu.c:117 msgid "Astronomy" msgstr "Astronomía" #: ../../util/wmgenmenu.c:118 msgid "Sound" msgstr "Som" #: ../../util/wmgenmenu.c:119 msgid "Comics" msgstr "Revistas em quadrinhos" #: ../../util/wmgenmenu.c:120 msgid "Viewers" msgstr "Visualizadores" #: ../../util/wmgenmenu.c:121 msgid "Utilities" msgstr "Utilitários" #: ../../util/wmgenmenu.c:122 msgid "System" msgstr "Sistema" #: ../../util/wmgenmenu.c:123 msgid "Video" msgstr "Video" #: ../../util/wmgenmenu.c:124 msgid "Chat and Talk" msgstr "Bate-papo" #: ../../util/wmgenmenu.c:125 msgid "P2P Network" msgstr "Redes P2P" #: ../../util/wmgenmenu.c:126 msgid "Games" msgstr "Jogos" #: ../../util/wmgenmenu.c:134 msgid "Run..." msgstr "Executar..." #: ../../util/wmgenmenu.c:136 #, c-format msgid "%A(Run, Type command:)" msgstr "%A(Executar, digite o comando:)" #. Root -> Appearance #: ../../util/wmgenmenu.c:142 msgid "Appearance" msgstr "Aparência" #: ../../util/wmgenmenu.c:146 msgid "Themes" msgstr "Temas" #: ../../util/wmgenmenu.c:155 msgid "Styles" msgstr "Estilos" #: ../../util/wmgenmenu.c:164 msgid "Icon Sets" msgstr "Ícones" #. Root -> Appearance -> Background #: ../../util/wmgenmenu.c:172 msgid "Background" msgstr "Plano de fundo" #. Root -> Appearance -> Background -> Solid #: ../../util/wmgenmenu.c:175 msgid "Solid" msgstr "Sólido" #. Root -> Appearance -> Background -> Solid -> #: ../../util/wmgenmenu.c:187 msgid "Black" msgstr "Preto" #: ../../util/wmgenmenu.c:188 msgid "Blue" msgstr "Ametista escuro" #: ../../util/wmgenmenu.c:189 msgid "Indigo" msgstr "Anil" #: ../../util/wmgenmenu.c:190 msgid "Bluemarine" msgstr "Turquesa" #: ../../util/wmgenmenu.c:191 msgid "Purple" msgstr "Púrpura" #: ../../util/wmgenmenu.c:192 msgid "Wheat" msgstr "Pardo" #: ../../util/wmgenmenu.c:193 msgid "Dark Gray" msgstr "Cinza escuro" #: ../../util/wmgenmenu.c:194 msgid "Wine" msgstr "Vinho" #. Root -> Appearance -> Background -> Gradient #: ../../util/wmgenmenu.c:199 msgid "Gradient" msgstr "Degradê" #: ../../util/wmgenmenu.c:213 msgid "Sunset" msgstr "Pôr do sol" #: ../../util/wmgenmenu.c:220 msgid "Sky" msgstr "Céu" #: ../../util/wmgenmenu.c:221 msgid "Blue Shades" msgstr "Ametista escuro" #: ../../util/wmgenmenu.c:222 msgid "Indigo Shades" msgstr "Anil" #: ../../util/wmgenmenu.c:223 msgid "Purple Shades" msgstr "Púrpura" #: ../../util/wmgenmenu.c:224 msgid "Wheat Shades" msgstr "Pardo" #: ../../util/wmgenmenu.c:225 msgid "Grey Shades" msgstr "Cinza Escuro" #: ../../util/wmgenmenu.c:226 msgid "Wine Shades" msgstr "Vinho" #: ../../util/wmgenmenu.c:232 msgid "Images" msgstr "Imagens" #: ../../util/wmgenmenu.c:243 msgid "Save Theme" msgstr "Salvar tema" #: ../../util/wmgenmenu.c:253 msgid "Save IconSet" msgstr "Salvar ícones" #: ../../util/wmgenmenu.c:264 msgid "Workspaces" msgstr "Áreas de trabalho" #. Root -> Workspace #: ../../util/wmgenmenu.c:271 msgid "Workspace" msgstr "Área de trabalho" #: ../../util/wmgenmenu.c:273 msgid "Hide Others" msgstr "Minimizar janelas" #: ../../util/wmgenmenu.c:281 msgid "Show All" msgstr "Maximizar janelas" #: ../../util/wmgenmenu.c:289 msgid "Arrange Icons" msgstr "Organizar ícones" #: ../../util/wmgenmenu.c:297 msgid "Refresh" msgstr "Atualizar" #: ../../util/wmgenmenu.c:305 msgid "Save Session" msgstr "Salvar sessão" #: ../../util/wmgenmenu.c:313 msgid "Clear Session" msgstr "Reiniciar sessão" #: ../../util/wmgenmenu.c:322 msgid "Configure Window Maker" msgstr "Configurar WindowMaker" #: ../../util/wmgenmenu.c:331 msgid "Info Panel" msgstr "Painel de informações" #: ../../util/wmgenmenu.c:339 msgid "Restart Window Maker" msgstr "Reiniciar Window Maker" #: ../../util/wmgenmenu.c:352 msgid "Lock Screen" msgstr "Bloquear sessão" #: ../../util/wmgenmenu.c:363 msgid "Exit Window Maker" msgstr "Sair do Window Maker" #: ../../util/wmgenmenu.c:458 #, c-format msgid "Start %s" msgstr "Iniciar %s" #: ../../util/wmgenmenu.c:468 msgid "Other Window Managers" msgstr "Gerenciadores de janela" #: ../../util/wmgenmenu.h:9 msgid "xterm" msgstr "" #: ../../util/wmgenmenu.h:10 msgid "mrxvt" msgstr "" #: ../../util/wmgenmenu.h:11 msgid "Konsole" msgstr "" #: ../../util/wmgenmenu.h:16 msgid "Dolphin" msgstr "" #: ../../util/wmgenmenu.h:17 msgid "Thunar" msgstr "" #: ../../util/wmgenmenu.h:18 msgid "ROX filer" msgstr "" #: ../../util/wmgenmenu.h:19 msgid "GWorkspace" msgstr "" #: ../../util/wmgenmenu.h:20 msgid "Midnight Commander" msgstr "" #: ../../util/wmgenmenu.h:21 msgid "XFTree" msgstr "" #: ../../util/wmgenmenu.h:22 ../../util/wmgenmenu.h:118 msgid "Konqueror" msgstr "" #: ../../util/wmgenmenu.h:23 msgid "Nautilus" msgstr "" #: ../../util/wmgenmenu.h:24 msgid "FSViewer" msgstr "" #: ../../util/wmgenmenu.h:25 msgid "Xfe" msgstr "" #: ../../util/wmgenmenu.h:30 msgid "Xmaxima" msgstr "" #: ../../util/wmgenmenu.h:31 msgid "Maxima" msgstr "" #: ../../util/wmgenmenu.h:32 msgid "Maple" msgstr "" #: ../../util/wmgenmenu.h:33 msgid "Scilab" msgstr "" #: ../../util/wmgenmenu.h:34 msgid "bc" msgstr "" #: ../../util/wmgenmenu.h:35 msgid "KCalc" msgstr "" #: ../../util/wmgenmenu.h:36 msgid "XCalc" msgstr "" #: ../../util/wmgenmenu.h:37 msgid "Mathematica" msgstr "" #: ../../util/wmgenmenu.h:38 msgid "Math" msgstr "" #. command-line Mathematica #: ../../util/wmgenmenu.h:39 msgid "Free42" msgstr "" #: ../../util/wmgenmenu.h:40 msgid "X48" msgstr "" #: ../../util/wmgenmenu.h:45 msgid "Xplns" msgstr "" #: ../../util/wmgenmenu.h:46 msgid "Stellarium" msgstr "" #: ../../util/wmgenmenu.h:51 msgid "GIMP" msgstr "" #: ../../util/wmgenmenu.h:52 msgid "Sodipodi" msgstr "" #: ../../util/wmgenmenu.h:53 msgid "Inkscape" msgstr "" #: ../../util/wmgenmenu.h:54 msgid "KIllustrator" msgstr "" #: ../../util/wmgenmenu.h:55 msgid "Krayon" msgstr "" #: ../../util/wmgenmenu.h:56 msgid "KPovModeler" msgstr "" #: ../../util/wmgenmenu.h:57 msgid "XBitmap" msgstr "" #: ../../util/wmgenmenu.h:58 msgid "XPaint" msgstr "" #: ../../util/wmgenmenu.h:59 msgid "XFig" msgstr "" #: ../../util/wmgenmenu.h:60 msgid "KPaint" msgstr "" #: ../../util/wmgenmenu.h:61 msgid "Blender" msgstr "" #: ../../util/wmgenmenu.h:62 msgid "KSnapshot" msgstr "" #: ../../util/wmgenmenu.h:63 msgid "GPhoto" msgstr "" #: ../../util/wmgenmenu.h:64 msgid "DigiKam" msgstr "" #: ../../util/wmgenmenu.h:65 msgid "Dia" msgstr "" #: ../../util/wmgenmenu.h:66 msgid "CompuPic" msgstr "" #: ../../util/wmgenmenu.h:67 msgid "GQview" msgstr "" #: ../../util/wmgenmenu.h:68 msgid "Geeqie" msgstr "" #: ../../util/wmgenmenu.h:69 msgid "KView" msgstr "" #: ../../util/wmgenmenu.h:70 msgid "Pixie" msgstr "" #: ../../util/wmgenmenu.h:71 msgid "ImageMagick Display" msgstr "" #: ../../util/wmgenmenu.h:72 msgid "XV" msgstr "" #: ../../util/wmgenmenu.h:73 msgid "Eye of GNOME" msgstr "" #: ../../util/wmgenmenu.h:74 msgid "Quick Image Viewer" msgstr "" #: ../../util/wmgenmenu.h:79 msgid "Audacious" msgstr "" #: ../../util/wmgenmenu.h:80 ../../util/wmgenmenu.h:216 msgid "Kaffeine" msgstr "" #: ../../util/wmgenmenu.h:81 msgid "Audacity" msgstr "" #: ../../util/wmgenmenu.h:82 msgid "Amarok" msgstr "" #: ../../util/wmgenmenu.h:83 msgid "XMMS" msgstr "" #: ../../util/wmgenmenu.h:84 msgid "K9Copy" msgstr "" #: ../../util/wmgenmenu.h:85 msgid "HandBrake" msgstr "" #: ../../util/wmgenmenu.h:86 msgid "OGMRip" msgstr "" #: ../../util/wmgenmenu.h:87 msgid "DVBcut" msgstr "" #: ../../util/wmgenmenu.h:88 msgid "AcidRip" msgstr "" #: ../../util/wmgenmenu.h:89 msgid "Avidemux" msgstr "" #: ../../util/wmgenmenu.h:90 msgid "GQmpeg" msgstr "" #: ../../util/wmgenmenu.h:91 msgid "Freeamp" msgstr "" #: ../../util/wmgenmenu.h:92 msgid "RealPlayer" msgstr "" #: ../../util/wmgenmenu.h:93 msgid "Mediathek" msgstr "" #: ../../util/wmgenmenu.h:94 msgid "KMid" msgstr "" #: ../../util/wmgenmenu.h:95 msgid "Kmidi" msgstr "" #: ../../util/wmgenmenu.h:96 msgid "Gtcd" msgstr "" #: ../../util/wmgenmenu.h:97 msgid "Grip" msgstr "" #: ../../util/wmgenmenu.h:98 msgid "AVIplay" msgstr "" #: ../../util/wmgenmenu.h:99 msgid "Gtv" msgstr "" #: ../../util/wmgenmenu.h:100 msgid "VLC" msgstr "" #: ../../util/wmgenmenu.h:101 msgid "Sinek" msgstr "" #: ../../util/wmgenmenu.h:102 msgid "xine" msgstr "" #: ../../util/wmgenmenu.h:103 msgid "aKtion" msgstr "" #: ../../util/wmgenmenu.h:104 msgid "Gcd" msgstr "" #: ../../util/wmgenmenu.h:105 msgid "XawTV" msgstr "" #: ../../util/wmgenmenu.h:106 msgid "X-CD-Roast" msgstr "" #: ../../util/wmgenmenu.h:107 msgid "XPlayCD" msgstr "" #: ../../util/wmgenmenu.h:112 ../../util/wmgenmenu.h:113 msgid "Chromium" msgstr "" #: ../../util/wmgenmenu.h:114 msgid "Google Chrome" msgstr "" #: ../../util/wmgenmenu.h:115 msgid "Mozilla Firefox" msgstr "" #: ../../util/wmgenmenu.h:116 msgid "Galeon" msgstr "" #: ../../util/wmgenmenu.h:117 msgid "SkipStone" msgstr "" #: ../../util/wmgenmenu.h:119 msgid "Dillo" msgstr "" #: ../../util/wmgenmenu.h:120 msgid "Epiphany" msgstr "" #: ../../util/wmgenmenu.h:121 msgid "Opera" msgstr "" #: ../../util/wmgenmenu.h:122 msgid "Midori" msgstr "" #: ../../util/wmgenmenu.h:123 msgid "Mozilla SeaMonkey" msgstr "" #: ../../util/wmgenmenu.h:124 msgid "Kazehakase" msgstr "" #: ../../util/wmgenmenu.h:125 msgid "Links" msgstr "" #: ../../util/wmgenmenu.h:126 msgid "Lynx" msgstr "" #: ../../util/wmgenmenu.h:127 msgid "W3M" msgstr "" #: ../../util/wmgenmenu.h:132 msgid "Mozilla Thunderbird" msgstr "" #: ../../util/wmgenmenu.h:133 msgid "Mutt" msgstr "" #: ../../util/wmgenmenu.h:134 msgid "GNUMail" msgstr "" #: ../../util/wmgenmenu.h:135 msgid "Evolution" msgstr "" #: ../../util/wmgenmenu.h:136 msgid "Kleopatra" msgstr "" #: ../../util/wmgenmenu.h:137 msgid "Sylpheed" msgstr "" #: ../../util/wmgenmenu.h:138 msgid "Spruce" msgstr "" #: ../../util/wmgenmenu.h:139 msgid "KMail" msgstr "" #: ../../util/wmgenmenu.h:140 msgid "Exmh" msgstr "" #: ../../util/wmgenmenu.h:141 msgid "Pine" msgstr "" #: ../../util/wmgenmenu.h:142 msgid "ELM" msgstr "" #: ../../util/wmgenmenu.h:143 msgid "Alpine" msgstr "" #: ../../util/wmgenmenu.h:148 msgid "soundKonverter" msgstr "" #: ../../util/wmgenmenu.h:149 msgid "Krecord" msgstr "" #: ../../util/wmgenmenu.h:150 msgid "Grecord" msgstr "" #: ../../util/wmgenmenu.h:151 msgid "ALSA mixer" msgstr "" #: ../../util/wmgenmenu.h:152 msgid "Sound configuration" msgstr "" #: ../../util/wmgenmenu.h:153 msgid "aumix" msgstr "" #: ../../util/wmgenmenu.h:154 msgid "Gmix" msgstr "" #: ../../util/wmgenmenu.h:159 msgid "XJed" msgstr "" #: ../../util/wmgenmenu.h:160 msgid "Jed" msgstr "" #: ../../util/wmgenmenu.h:161 msgid "Emacs" msgstr "" #: ../../util/wmgenmenu.h:162 msgid "XEmacs" msgstr "" #: ../../util/wmgenmenu.h:163 msgid "gVIM" msgstr "" #: ../../util/wmgenmenu.h:164 msgid "vi" msgstr "" #: ../../util/wmgenmenu.h:165 msgid "VIM" msgstr "" #: ../../util/wmgenmenu.h:166 msgid "gedit" msgstr "" #: ../../util/wmgenmenu.h:167 msgid "KEdit" msgstr "" #: ../../util/wmgenmenu.h:168 msgid "XEdit" msgstr "" #: ../../util/wmgenmenu.h:169 msgid "KWrite" msgstr "" #: ../../util/wmgenmenu.h:170 msgid "Kate" msgstr "" #: ../../util/wmgenmenu.h:171 msgid "Pico" msgstr "" #: ../../util/wmgenmenu.h:172 msgid "Nano" msgstr "" #: ../../util/wmgenmenu.h:173 msgid "Joe" msgstr "" #: ../../util/wmgenmenu.h:178 msgid "Omnia data" msgstr "" #: ../../util/wmgenmenu.h:179 msgid "Comix" msgstr "" #: ../../util/wmgenmenu.h:180 msgid "QComicBook" msgstr "" #: ../../util/wmgenmenu.h:185 msgid "Evince" msgstr "" #: ../../util/wmgenmenu.h:186 msgid "KGhostView" msgstr "" #: ../../util/wmgenmenu.h:187 msgid "gv" msgstr "" #: ../../util/wmgenmenu.h:188 msgid "GGv" msgstr "" #: ../../util/wmgenmenu.h:189 msgid "Xdvi" msgstr "" #: ../../util/wmgenmenu.h:190 msgid "KDVI" msgstr "" #: ../../util/wmgenmenu.h:191 msgid "Xpdf" msgstr "" #: ../../util/wmgenmenu.h:192 msgid "Adobe Reader" msgstr "" #: ../../util/wmgenmenu.h:193 msgid "Gless" msgstr "" #: ../../util/wmgenmenu.h:198 msgid "Google Desktop" msgstr "" #: ../../util/wmgenmenu.h:199 msgid "K3B" msgstr "" #: ../../util/wmgenmenu.h:200 msgid "gtkfind" msgstr "" #: ../../util/wmgenmenu.h:201 msgid "gdict" msgstr "" #: ../../util/wmgenmenu.h:202 msgid "gpsdrive" msgstr "" #: ../../util/wmgenmenu.h:203 msgid "wfcmgr" msgstr "" #: ../../util/wmgenmenu.h:204 msgid "switch" msgstr "" #: ../../util/wmgenmenu.h:205 msgid "kaddressbook" msgstr "" #: ../../util/wmgenmenu.h:206 msgid "kab" msgstr "" #: ../../util/wmgenmenu.h:207 msgid "kfind" msgstr "" #: ../../util/wmgenmenu.h:208 msgid "oclock" msgstr "" #: ../../util/wmgenmenu.h:209 msgid "rclock" msgstr "" #: ../../util/wmgenmenu.h:210 msgid "xclock" msgstr "" #: ../../util/wmgenmenu.h:211 msgid "kppp" msgstr "" #: ../../util/wmgenmenu.h:217 msgid "Ekiga" msgstr "" #: ../../util/wmgenmenu.h:222 msgid "Pidgin" msgstr "" #: ../../util/wmgenmenu.h:223 msgid "Skype" msgstr "" #: ../../util/wmgenmenu.h:224 msgid "Gizmo" msgstr "" #: ../../util/wmgenmenu.h:225 msgid "Kopete" msgstr "" #: ../../util/wmgenmenu.h:226 msgid "XChat" msgstr "" #: ../../util/wmgenmenu.h:227 msgid "KVIrc" msgstr "" #: ../../util/wmgenmenu.h:228 msgid "BitchX" msgstr "" #: ../../util/wmgenmenu.h:229 msgid "EPIC" msgstr "" #: ../../util/wmgenmenu.h:230 msgid "EPIC4" msgstr "" #: ../../util/wmgenmenu.h:231 msgid "Irssi" msgstr "" #: ../../util/wmgenmenu.h:232 msgid "TinyIRC" msgstr "" #: ../../util/wmgenmenu.h:233 msgid "Ksirc" msgstr "" #: ../../util/wmgenmenu.h:234 msgid "gtalk" msgstr "" #: ../../util/wmgenmenu.h:235 msgid "GnomeICU" msgstr "" #: ../../util/wmgenmenu.h:236 msgid "Licq" msgstr "" #: ../../util/wmgenmenu.h:237 msgid "aMSN" msgstr "" #: ../../util/wmgenmenu.h:242 msgid "aMule" msgstr "" #: ../../util/wmgenmenu.h:243 msgid "gFTP" msgstr "" #: ../../util/wmgenmenu.h:244 msgid "Smb4K" msgstr "" #: ../../util/wmgenmenu.h:245 msgid "KTorrent" msgstr "" #: ../../util/wmgenmenu.h:246 msgid "BitTorrent GUI" msgstr "" #: ../../util/wmgenmenu.h:247 msgid "ftp" msgstr "" #: ../../util/wmgenmenu.h:248 msgid "sftp" msgstr "" #: ../../util/wmgenmenu.h:249 msgid "Pavuk" msgstr "" #: ../../util/wmgenmenu.h:250 msgid "gtm" msgstr "" #: ../../util/wmgenmenu.h:251 msgid "Gnut" msgstr "" #: ../../util/wmgenmenu.h:252 msgid "GTK Gnutella" msgstr "" #: ../../util/wmgenmenu.h:253 msgid "Gnutmeg" msgstr "" #: ../../util/wmgenmenu.h:258 msgid "FlightGear Flight Simulator" msgstr "" #: ../../util/wmgenmenu.h:259 msgid "Tremulous" msgstr "" #: ../../util/wmgenmenu.h:260 msgid "XBoard" msgstr "" #: ../../util/wmgenmenu.h:261 msgid "GNOME Chess" msgstr "" #: ../../util/wmgenmenu.h:262 msgid "Quake 2" msgstr "" #: ../../util/wmgenmenu.h:263 msgid "Quake 3" msgstr "" #: ../../util/wmgenmenu.h:264 msgid "Quake 3: Urban Terror 2" msgstr "" #: ../../util/wmgenmenu.h:265 msgid "Soldier of Fortune" msgstr "" #: ../../util/wmgenmenu.h:266 msgid "Rune" msgstr "" #: ../../util/wmgenmenu.h:267 msgid "Tribes 2" msgstr "" #: ../../util/wmgenmenu.h:268 msgid "Unreal Tournament" msgstr "" #: ../../util/wmgenmenu.h:269 msgid "Descent 3" msgstr "" #: ../../util/wmgenmenu.h:270 msgid "Myth 2" msgstr "" #: ../../util/wmgenmenu.h:271 ../../util/wmgenmenu.h:272 msgid "Sauerbraten" msgstr "" #: ../../util/wmgenmenu.h:273 msgid "Railroad Tycoon 2" msgstr "" #: ../../util/wmgenmenu.h:274 msgid "Heretic 2" msgstr "" #: ../../util/wmgenmenu.h:275 msgid "Kohan" msgstr "" #: ../../util/wmgenmenu.h:276 msgid "XQF" msgstr "" #: ../../util/wmgenmenu.h:281 msgid "OpenOffice.org Writer" msgstr "" #: ../../util/wmgenmenu.h:282 msgid "OpenOffice.org Calc" msgstr "" #: ../../util/wmgenmenu.h:283 msgid "OpenOffice.org Draw" msgstr "" #: ../../util/wmgenmenu.h:284 msgid "OpenOffice.org Impress" msgstr "" #: ../../util/wmgenmenu.h:285 msgid "OpenOffice.org Math" msgstr "" #: ../../util/wmgenmenu.h:286 msgid "OpenOffice.org" msgstr "" #: ../../util/wmgenmenu.h:287 msgid "StarOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:288 msgid "StarOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:289 msgid "StarOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:290 msgid "StarOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:291 msgid "StarOffice Math" msgstr "" #: ../../util/wmgenmenu.h:292 msgid "StarOffice" msgstr "" #: ../../util/wmgenmenu.h:293 msgid "AbiWord" msgstr "" #: ../../util/wmgenmenu.h:294 msgid "KWord" msgstr "" #: ../../util/wmgenmenu.h:295 msgid "KPresenter" msgstr "" #: ../../util/wmgenmenu.h:296 msgid "KSpread" msgstr "" #: ../../util/wmgenmenu.h:297 msgid "KChart" msgstr "" #: ../../util/wmgenmenu.h:298 msgid "KOrganizer" msgstr "" #: ../../util/wmgenmenu.h:299 msgid "LyX" msgstr "" #: ../../util/wmgenmenu.h:300 msgid "Klyx" msgstr "" #: ../../util/wmgenmenu.h:301 msgid "GnuCash" msgstr "" #: ../../util/wmgenmenu.h:302 msgid "Gnumeric" msgstr "" #: ../../util/wmgenmenu.h:303 msgid "GnomeCal" msgstr "" #: ../../util/wmgenmenu.h:304 msgid "GnomeCard" msgstr "" #: ../../util/wmgenmenu.h:309 msgid "gitk" msgstr "" #: ../../util/wmgenmenu.h:310 msgid "gitview" msgstr "" #: ../../util/wmgenmenu.h:311 msgid "qgit" msgstr "" #: ../../util/wmgenmenu.h:312 msgid "git-gui" msgstr "" #: ../../util/wmgenmenu.h:313 msgid "glimmer" msgstr "" #: ../../util/wmgenmenu.h:314 msgid "glade" msgstr "" #: ../../util/wmgenmenu.h:315 msgid "kdevelop" msgstr "" #: ../../util/wmgenmenu.h:316 msgid "designer" msgstr "" #: ../../util/wmgenmenu.h:317 msgid "kbabel" msgstr "" #: ../../util/wmgenmenu.h:318 msgid "idle" msgstr "" #: ../../util/wmgenmenu.h:319 msgid "ghex" msgstr "" #: ../../util/wmgenmenu.h:320 msgid "hexedit" msgstr "" #: ../../util/wmgenmenu.h:321 msgid "memprof" msgstr "" #: ../../util/wmgenmenu.h:322 msgid "tclsh" msgstr "" #: ../../util/wmgenmenu.h:323 msgid "gdb" msgstr "" #: ../../util/wmgenmenu.h:324 msgid "xxgdb" msgstr "" #: ../../util/wmgenmenu.h:325 msgid "xev" msgstr "" #: ../../util/wmgenmenu.h:330 msgid "Iotop" msgstr "" #: ../../util/wmgenmenu.h:331 msgid "Iostat" msgstr "" #: ../../util/wmgenmenu.h:332 msgid "keybconf" msgstr "" #: ../../util/wmgenmenu.h:333 msgid "GNOME System Monitor" msgstr "" #: ../../util/wmgenmenu.h:334 msgid "top" msgstr "" #: ../../util/wmgenmenu.h:335 msgid "KDE Process Monitor" msgstr "" #: ../../util/wmgenmenu.h:336 msgid "gw" msgstr "" #: ../../util/wmgenmenu.h:337 msgid "GNOME Control Center" msgstr "" #: ../../util/wmgenmenu.h:338 msgid "GKrellM" msgstr "" #: ../../util/wmgenmenu.h:339 msgid "tksysv" msgstr "" #: ../../util/wmgenmenu.h:340 msgid "ksysv" msgstr "" #: ../../util/wmgenmenu.h:341 msgid "GNOME PPP" msgstr "" #: ../../util/wmgenmenu.h:346 msgid "YaST 2" msgstr "" #: ../../util/wmgenmenu.h:347 msgid "YaST" msgstr "" #: ../../util/wmgenmenu.h:348 msgid "System Settings" msgstr "" #: ../../util/wmgenmenu.h:349 msgid "UMTSMon" msgstr "" #: ../../util/wmgenmenu.h:354 msgid "DrakNetCenter" msgstr "" #: ../../util/wmgenmenu.h:355 msgid "RPMDrake" msgstr "" #: ../../util/wmgenmenu.h:356 msgid "HardDrake" msgstr "" #: ../../util/wmgenmenu.h:357 msgid "DrakConf" msgstr "" #: ../../util/wmgenmenu.h:358 msgid "MandrakeUpdate" msgstr "" #: ../../util/wmgenmenu.h:359 msgid "XDrakRes" msgstr "" #: ../../util/wmgenmenu.h:364 msgid "Docker" msgstr "" #: ../../util/wmgenmenu.h:365 msgid "Net" msgstr "" #: ../../util/wmgenmenu.h:366 ../../util/wmgenmenu.h:387 msgid "Power" msgstr "" #: ../../util/wmgenmenu.h:367 msgid "Laptop" msgstr "" #: ../../util/wmgenmenu.h:368 msgid "WiFi" msgstr "" #: ../../util/wmgenmenu.h:369 msgid "Interface Info" msgstr "" #: ../../util/wmgenmenu.h:370 ../../util/wmgenmenu.h:373 msgid "Weather" msgstr "" #: ../../util/wmgenmenu.h:371 msgid "Sticky Notes" msgstr "" #: ../../util/wmgenmenu.h:372 msgid "Mixer" msgstr "" #: ../../util/wmgenmenu.h:374 msgid "CPU Load" msgstr "" #: ../../util/wmgenmenu.h:375 msgid "CPU Freq" msgstr "" #: ../../util/wmgenmenu.h:376 msgid "Clock Mon" msgstr "" #: ../../util/wmgenmenu.h:377 msgid "Network Devices" msgstr "" #: ../../util/wmgenmenu.h:378 msgid "Calendar & Clock" msgstr "" #: ../../util/wmgenmenu.h:379 msgid "Time" msgstr "" #: ../../util/wmgenmenu.h:380 msgid "Date" msgstr "" #: ../../util/wmgenmenu.h:381 ../../util/wmgenmenu.h:382 msgid "System Monitor" msgstr "" #: ../../util/wmgenmenu.h:383 msgid "SMP Monitor" msgstr "" #: ../../util/wmgenmenu.h:384 msgid "Interfaces" msgstr "" #: ../../util/wmgenmenu.h:385 msgid "Button" msgstr "" #: ../../util/wmgenmenu.h:386 msgid "xmms" msgstr "" #: ../../util/wmgenmenu.h:388 msgid "Magnify" msgstr "" #: ../../util/wmgenmenu.h:393 msgid "IceWM" msgstr "" #: ../../util/wmgenmenu.h:394 msgid "KWin" msgstr "" #: ../../util/wmgenmenu.h:395 msgid "twm" msgstr "" #: ../../util/wmgenmenu.h:396 msgid "Fluxbox" msgstr "" #: ../../util/wmgenmenu.h:397 msgid "Blackbox" msgstr "" #: ../../util/wmgenmenu.h:398 msgid "Ion" msgstr "" #: ../../util/wmgenmenu.h:399 msgid "Motif Window Manager" msgstr "" #: ../../util/wmgenmenu.h:400 msgid "FVWM" msgstr "" WindowMaker-0.95.8/util/getstyle.c0000664000175000017500000002255313061001047013747 00000000000000/* getstyle.c - outputs style related options from WindowMaker to stdout * * WindowMaker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_STDNORETURN #include #endif #include #include "common.h" #ifndef PATH_MAX #define PATH_MAX 1024 #endif #include "../src/wconfig.h" /* table of style related options */ static char *options[] = { "TitleJustify", "ClipTitleFont", "WindowTitleFont", "MenuTitleFont", "MenuTextFont", "IconTitleFont", "LargeDisplayFont", "HighlightColor", "HighlightTextColor", "ClipTitleColor", "CClipTitleColor", "FTitleColor", "PTitleColor", "UTitleColor", "FTitleBack", "PTitleBack", "UTitleBack", "ResizebarBack", "MenuTitleColor", "MenuTextColor", "MenuDisabledColor", "MenuTitleBack", "MenuTextBack", "IconBack", "IconTitleColor", "IconTitleBack", "FrameBorderWidth", "FrameBorderColor", "FrameFocusedBorderColor", "FrameSelectedBorderColor", "MenuStyle", "WindowTitleExtendSpace", "MenuTitleExtendSpace", "MenuTextExtendSpace", NULL }; /* table of theme related options */ static char *theme_options[] = { "WorkspaceBack", "NormalCursor", "ArrowCursor", "MoveCursor", "ResizeCursor", "TopLeftResizeCursor", "TopRightResizeCursor", "BottomLeftResizeCursor", "BottomRightResizeCursor", "VerticalResizeCursor", "HorizontalResizeCursor", "WaitCursor", "QuestionCursor", "TextCursor", "SelectCursor", NULL }; /* table of style related fonts */ static char *font_options[] = { "ClipTitleFont", "WindowTitleFont", "MenuTitleFont", "MenuTextFont", "IconTitleFont", "LargeDisplayFont", NULL }; static const char *prog_name; WMPropList *PixmapPath = NULL; char *ThemePath = NULL; static noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [-t] [-p] [-h] [-v] [file]\n", prog_name); if (print_usage) { puts("Retrieves style/theme configuration and outputs to ~/GNUstep/Library/WindowMaker/Themes/file.themed/style or to stdout"); puts(""); puts(" -h, --help display this help and exit"); puts(" -v, --version output version information and exit"); puts(" -t, --theme-options output theme related options when producing a style file"); puts(" -p, --pack produce output as a theme pack"); } exit(exitval); } static Bool isFontOption(const char *option) { int i; for (i = 0; font_options[i] != NULL; i++) { if (strcasecmp(option, font_options[i]) == 0) { return True; } } return False; } static void findCopyFile(const char *dir, const char *file) { char *fullPath; fullPath = wfindfileinarray(PixmapPath, file); if (!fullPath) { wwarning("Could not find file %s", file); if (ThemePath) (void)wrmdirhier(ThemePath); return; } wcopy_file(dir, fullPath, file); wfree(fullPath); } #define THEME_SUBPATH "/Library/WindowMaker/Themes/" #define THEME_EXTDIR ".themed/" static void makeThemePack(WMPropList * style, const char *themeName) { WMPropList *keys; WMPropList *key; WMPropList *value; int i; size_t themeNameLen; char *themeDir; const char *user_base; user_base = wusergnusteppath(); if (user_base == NULL) return; themeNameLen = strlen(user_base) + sizeof(THEME_SUBPATH) + strlen(themeName) + sizeof(THEME_EXTDIR) + 1; themeDir = wmalloc(themeNameLen); snprintf(themeDir, themeNameLen, "%s" THEME_SUBPATH "%s" THEME_EXTDIR, user_base, themeName); ThemePath = themeDir; if (!wmkdirhier(themeDir)) { wwarning("Could not make theme dir %s\n", themeDir); return; } keys = WMGetPLDictionaryKeys(style); for (i = 0; i < WMGetPropListItemCount(keys); i++) { key = WMGetFromPLArray(keys, i); value = WMGetFromPLDictionary(style, key); if (value && WMIsPLArray(value) && WMGetPropListItemCount(value) > 2) { WMPropList *type; char *t; type = WMGetFromPLArray(value, 0); t = WMGetFromPLString(type); if (t == NULL) continue; if (strcasecmp(t, "tpixmap") == 0 || strcasecmp(t, "spixmap") == 0 || strcasecmp(t, "cpixmap") == 0 || strcasecmp(t, "mpixmap") == 0 || strcasecmp(t, "tdgradient") == 0 || strcasecmp(t, "tvgradient") == 0 || strcasecmp(t, "thgradient") == 0) { WMPropList *file; char *p; char *newPath; file = WMGetFromPLArray(value, 1); p = strrchr(WMGetFromPLString(file), '/'); if (p) { newPath = wstrdup(p + 1); wcopy_file(themeDir, WMGetFromPLString(file), newPath); WMDeleteFromPLArray(value, 1); WMInsertInPLArray(value, 1, WMCreatePLString(newPath)); free(newPath); } else { findCopyFile(themeDir, WMGetFromPLString(file)); } } else if (strcasecmp(t, "bitmap") == 0) { WMPropList *file; char *p; char *newPath; file = WMGetFromPLArray(value, 1); p = strrchr(WMGetFromPLString(file), '/'); if (p) { newPath = wstrdup(p + 1); wcopy_file(themeDir, WMGetFromPLString(file), newPath); WMDeleteFromPLArray(value, 1); WMInsertInPLArray(value, 1, WMCreatePLString(newPath)); free(newPath); } else { findCopyFile(themeDir, WMGetFromPLString(file)); } file = WMGetFromPLArray(value, 2); p = strrchr(WMGetFromPLString(file), '/'); if (p) { newPath = wstrdup(p + 1); wcopy_file(themeDir, WMGetFromPLString(file), newPath); WMDeleteFromPLArray(value, 2); WMInsertInPLArray(value, 2, WMCreatePLString(newPath)); free(newPath); } else { findCopyFile(themeDir, WMGetFromPLString(file)); } } } } WMReleasePropList(keys); } int main(int argc, char **argv) { WMPropList *prop, *style, *key, *val; char *path; int i, ch, theme_too = 0, make_pack = 0; char *style_file = NULL; struct option longopts[] = { { "pack", no_argument, NULL, 'p' }, { "theme-options", no_argument, NULL, 't' }, { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "ptvh", longopts, NULL)) != -1) switch(ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ case 'p': make_pack = 1; theme_too = 1; break; case 't': theme_too = 1; case 0: break; default: print_help(0, 1); /* NOTREACHED */ } /* At most one non-option ARGV-element is accepted (the theme name) */ if (argc - optind > 1) print_help(0, 1); if (argc - optind == 1) style_file = argv[argc - 1]; if (make_pack && !style_file) { printf("%s: you must supply a name for the theme pack\n", prog_name); return 1; } WMPLSetCaseSensitive(False); path = wdefaultspathfordomain("WindowMaker"); prop = WMReadPropListFromFile(path); if (!prop) { printf("%s: could not load WindowMaker configuration file \"%s\".\n", prog_name, path); return 1; } /* get global value */ path = wglobaldefaultspathfordomain("WindowMaker"); val = WMReadPropListFromFile(path); if (val) { WMMergePLDictionaries(val, prop, True); WMReleasePropList(prop); prop = val; } style = WMCreatePLDictionary(NULL, NULL); for (i = 0; options[i] != NULL; i++) { key = WMCreatePLString(options[i]); val = WMGetFromPLDictionary(prop, key); if (val) { WMRetainPropList(val); if (isFontOption(options[i])) { char *newfont, *oldfont; oldfont = WMGetFromPLString(val); newfont = convertFont(oldfont, False); /* newfont is a reference to old if conversion is not needed */ if (newfont != oldfont) { WMReleasePropList(val); val = WMCreatePLString(newfont); wfree(newfont); } } WMPutInPLDictionary(style, key, val); WMReleasePropList(val); } WMReleasePropList(key); } val = WMGetFromPLDictionary(prop, WMCreatePLString("PixmapPath")); if (val) PixmapPath = val; if (theme_too) { for (i = 0; theme_options[i] != NULL; i++) { key = WMCreatePLString(theme_options[i]); val = WMGetFromPLDictionary(prop, key); if (val) WMPutInPLDictionary(style, key, val); } } if (make_pack) { char *path; makeThemePack(style, style_file); path = wmalloc(strlen(ThemePath) + 32); strcpy(path, ThemePath); strcat(path, "/style"); WMWritePropListToFile(style, path); wfree(path); } else { if (style_file) { WMWritePropListToFile(style, style_file); } else { puts(WMGetPropListDescription(style, True)); } } return 0; } WindowMaker-0.95.8/util/wmiv.h0000775000175000017500000006636512650014300013111 00000000000000/* XPM */ static char * wmiv_xpm[] = { "64 64 1212 2", " c None", ". c #DBDBDA", "+ c #E1E1E1", "@ c #D9D9D9", "# c #E4E4E4", "$ c #ECECEB", "% c #EAEAEA", "& c #E8E8E8", "* c #E2E2E2", "= c #D6D6D6", "- c #EDEDED", "; c #EDEDEC", "> c #EAEAE9", ", c #E9E9E8", "' c #EBEBEB", ") c #E3E3E3", "! c #EFEFEF", "~ c #ECECEC", "{ c #EBEBEA", "] c #E9E9E9", "^ c #E8E8E7", "/ c #A5A5A5", "( c #F2F2F1", "_ c #EFEFEE", ": c #E7E7E7", "< c #C7C7C7", "[ c #DEDEDD", "} c #F3F3F2", "| c #EEEEEE", "1 c #EEEEED", "2 c #F4F4F3", "3 c #F1F1F0", "4 c #F0F0F0", "5 c #F0F0EF", "6 c #E6E6E5", "7 c #F6F6F5", "8 c #F4F4F2", "9 c #EAEAED", "0 c #D6D5D9", "a c #CBCFC2", "b c #AFAFB0", "c c #F7F7F6", "d c #F2F2F2", "e c #F1F1F1", "f c #EFEEF0", "g c #DFDEE4", "h c #C9CDBD", "i c #B5C08E", "j c #A3B666", "k c #A6BF53", "l c #A7BF53", "m c #DDDCDF", "n c #D4D4D5", "o c #F8F8F7", "p c #F5F5F4", "q c #F4F4F4", "r c #E7E6EC", "s c #D1D3CC", "t c #BAC49A", "u c #A5B76A", "v c #A2BB4D", "w c #A7C04E", "x c #A8C055", "y c #AAC05A", "z c #ABC15F", "A c #ACC261", "B c #CACFB9", "C c #E5E5E5", "D c #F6F6F4", "E c #F3F3F3", "F c #F0EFF2", "G c #D9D9DB", "H c #C2CAA8", "I c #A9BA73", "J c #9FB74C", "K c #A3BF41", "L c #A5C04C", "M c #A7BF50", "N c #A8C056", "O c #A9C059", "P c #ABC15D", "Q c #ACC162", "R c #ADC266", "S c #AEC26A", "T c #BAC597", "U c #F0F0F1", "V c #8C8C8C", "W c #F5F5F5", "X c #F5F4F6", "Y c #E2E1E7", "Z c #CAD0B6", "` c #B0BF7F", " . c #9DB44E", ".. c #9FBD38", "+. c #A2BF40", "@. c #A4BE47", "#. c #A5BF4B", "$. c #A6BF4F", "%. c #A9C156", "&. c #A9C058", "*. c #AAC15C", "=. c #ABC161", "-. c #ADC265", ";. c #AFC36A", ">. c #AFC36D", ",. c #B1C372", "'. c #ADBD7B", "). c #EBEAED", "!. c #BABABA", "~. c #DDDDDC", "{. c #F7F6F7", "]. c #EAE8F0", "^. c #D2D5C7", "/. c #B8C58B", "(. c #9EB453", "_. c #9BBA33", ":. c #9EBE35", "<. c #A0BD3D", "[. c #A2BE42", "}. c #A3BE46", "|. c #A4BF4A", "1. c #A6BF4E", "2. c #A7C053", "3. c #A9C057", "4. c #ACC161", "5. c #ADC269", "6. c #AFC36C", "7. c #B0C370", "8. c #B3C476", "9. c #B2C478", "0. c #B3C479", "a. c #D6D7D6", "b. c #E0E0DF", "c. c #C5C5C5", "d. c #F6F6F6", "e. c #F1F0F5", "f. c #DADAD8", "g. c #BFC99B", "h. c #A3B85D", "i. c #98B631", "j. c #9BBC28", "k. c #9DBC33", "l. c #9CBB36", "m. c #AEC65E", "n. c #B2C864", "o. c #A1BC45", "p. c #A5BF4D", "q. c #A7C052", "r. c #AAC05B", "s. c #ABC15E", "t. c #B0C46C", "u. c #B0C46D", "v. c #B0C36F", "w. c #B5C57C", "x. c #B4C47E", "y. c #B6C581", "z. c #C8CDB7", "A. c #F7F6F9", "B. c #E1E0E5", "C. c #C7CFAD", "D. c #ABBD6F", "E. c #98B439", "F. c #98BB20", "G. c #97BA21", "H. c #96B726", "I. c #98B829", "J. c #9EBD37", "K. c #A0BD3B", "L. c #B1C367", "M. c #F7EBF7", "N. c #FFFCFF", "O. c #FFFFFF", "P. c #FEFEFE", "Q. c #B1C56E", "R. c #A9C05B", "S. c #ABC160", "T. c #A9BF5F", "U. c #AABF63", "V. c #B1C470", "W. c #B2C574", "X. c #B2C477", "Y. c #B1C274", "Z. c #B5C57D", "`. c #B5C67D", " + c #B3C37C", ".+ c #B2C37A", "++ c #B7C293", "@+ c #979797", "#+ c #F8F8F6", "$+ c #FAF9FB", "%+ c #EAE8EF", "&+ c #D0D5BF", "*+ c #B3C280", "=+ c #9BB445", "-+ c #98BA23", ";+ c #9ABC25", ">+ c #9ABB28", ",+ c #9ABB2A", "'+ c #A2BD40", ")+ c #E3E0CC", "!+ c #FFFBFF", "~+ c #F6F8EE", "{+ c #B1C665", "]+ c #9BB938", "^+ c #EAD8E1", "/+ c #FCF7FC", "(+ c #FDFCFC", "_+ c #E5E8D7", ":+ c #A3B95A", "<+ c #A8BD5F", "[+ c #CAD0A4", "}+ c #F0EDE7", "|+ c #F6F7F1", "1+ c #D6DFB8", "2+ c #AEC074", "3+ c #B6C683", "4+ c #AFC170", "5+ c #B2C377", "6+ c #B1C375", "7+ c #AFC272", "8+ c #A9BB6D", "9+ c #E5E5E9", "0+ c #C4C4C4", "a+ c #F2F1F5", "b+ c #D8DAD1", "c+ c #BCC992", "d+ c #A0B654", "e+ c #99BB23", "f+ c #9ABB27", "g+ c #9ABA2E", "h+ c #9BBC2B", "i+ c #96B729", "j+ c #EEDCE9", "k+ c #FAF5FA", "l+ c #FFFEFE", "m+ c #9CB254", "n+ c #F8E2FC", "o+ c #FEFCFE", "p+ c #FCFBFC", "q+ c #FBFBFB", "r+ c #F2F3EF", "s+ c #8C9F4B", "t+ c #E3DAD5", "u+ c #FBF3FC", "v+ c #DBDBDB", "w+ c #A5AA92", "x+ c #8A956A", "y+ c #8A9467", "z+ c #909D65", "A+ c #9EAE66", "B+ c #B2C56F", "C+ c #AFC46B", "D+ c #AABF60", "E+ c #D0D3CA", "F+ c #E7E7E6", "G+ c #BCBCBC", "H+ c #FCFBFD", "I+ c #A5BB5B", "J+ c #9ABB26", "K+ c #9BBB2A", "L+ c #9BBB2B", "M+ c #9CBC2F", "N+ c #9DBA3A", "O+ c #9BB444", "P+ c #F7E1FB", "Q+ c #FEFCFD", "R+ c #F9F8F9", "S+ c #DFE0D2", "T+ c #EFE3EC", "U+ c #FAFBFA", "V+ c #FBFAFA", "W+ c #D9DACF", "X+ c #D4CCC4", "Y+ c #EDE6ED", "Z+ c #A3A4A3", "`+ c #646663", " @ c #40433F", ".@ c #454743", "+@ c #484A47", "@@ c #494B49", "#@ c #484B48", "$@ c #444745", "%@ c #414243", "&@ c #404140", "*@ c #5B6249", "=@ c #829152", "-@ c #C0CAA2", ";@ c #BACA82", ">@ c #9ABB2B", ",@ c #9ABB29", "'@ c #9EBD34", ")@ c #A6C147", "!@ c #9AB734", "~@ c #92AF30", "{@ c #E5D4DD", "]@ c #FCF7FB", "^@ c #FDFDFD", "/@ c #F7F6F6", "(@ c #FCFFFF", "_@ c #FDFFFF", ":@ c #DADAD5", "<@ c #858384", "[@ c #434642", "}@ c #4F514D", "|@ c #545652", "1@ c #494A4C", "2@ c #3E4147", "3@ c #343641", "4@ c #30323F", "5@ c #323440", "6@ c #383A43", "7@ c #404247", "8@ c #484B49", "9@ c #494B47", "0@ c #404241", "a@ c #404141", "b@ c #9C9D9B", "c@ c #A7A6A7", "d@ c #D5DCC0", "e@ c #99BB22", "f@ c #9DBC31", "g@ c #99B92A", "h@ c #D0D2A7", "i@ c #FFF6FF", "j@ c #DDE5BE", "k@ c #A5AE75", "l@ c #F9EBFA", "m@ c #FDFDFE", "n@ c #F8F5F3", "o@ c #F5D394", "p@ c #F1BB5E", "q@ c #EEA832", "r@ c #EA9E1C", "s@ c #F2A31B", "t@ c #A78748", "u@ c #454847", "v@ c #52544F", "w@ c #4A4C4E", "x@ c #171930", "y@ c #0F122B", "z@ c #0C0E29", "A@ c #0C0E28", "B@ c #0D0F29", "C@ c #0F112A", "D@ c #12142B", "E@ c #15172D", "F@ c #191B30", "G@ c #272938", "H@ c #3C3F44", "I@ c #474946", "J@ c #3D403D", "K@ c #3D3F3D", "L@ c #CDCDCD", "M@ c #F1F0F6", "N@ c #96B724", "O@ c #9BBC2C", "P@ c #9CBC30", "Q@ c #9FBC3A", "R@ c #A7BA57", "S@ c #F8E4FB", "T@ c #E0DDD7", "U@ c #FDFDFF", "V@ c #F4D08D", "W@ c #ECA424", "X@ c #EDA12D", "Y@ c #EC9D32", "Z@ c #EB9A36", "`@ c #ED9833", " # c #756041", ".# c #494C4A", "+# c #4F5250", "@# c #2F313E", "## c #171A30", "$# c #13152D", "%# c #10122B", "&# c #090C29", "*# c #080A23", "=# c #1D1F35", "-# c #2B2D41", ";# c #2A2C3F", "># c #25263A", ",# c #0E1028", "'# c #13152C", ")# c #17192E", "!# c #1A1C2F", "~# c #242737", "{# c #3F4244", "]# c #424441", "^# c #3A3D3B", "/# c #ABABAB", "(# c #FDFCFF", "_# c #A6BD57", ":# c #A0BD3F", "<# c #ADB970", "[# c #F7E6F8", "}# c #FAFAFA", "|# c #EEBC57", "1# c #EFA722", "2# c #EC9E2B", "3# c #EB9630", "4# c #EA9135", "5# c #EC8D38", "6# c #665644", "7# c #4C4F4B", "8# c #47494B", "9# c #212335", "0# c #181B30", "a# c #14172F", "b# c #1B1B30", "c# c #4D4331", "d# c #837038", "e# c #A4A5A7", "f# c #A6A6A5", "g# c #A6A5A5", "h# c #A8A8A8", "i# c #A6A6A6", "j# c #8D8E89", "k# c #6E706E", "l# c #353C30", "m# c #191B2E", "n# c #1A1D2F", "o# c #1E2031", "p# c #35373F", "q# c #434542", "r# c #393B39", "s# c #C3CF99", "t# c #9EBD35", "u# c #A1BD3E", "v# c #A1BD3F", "w# c #A2BE44", "x# c #93AC42", "y# c #C9C2B7", "z# c #FFF7FF", "A# c #FDFCFD", "B# c #F1D293", "C# c #EFA912", "D# c #ED9D1A", "E# c #EB901D", "F# c #E98720", "G# c #EE8122", "H# c #71563F", "I# c #4A4D4A", "J# c #424549", "K# c #202334", "L# c #1B1D31", "M# c #181A31", "N# c #594933", "O# c #9C7C34", "P# c #9C8033", "Q# c #9D863B", "R# c #A6A8AB", "S# c #9A9B96", "T# c #86897D", "U# c #676C54", "V# c #4E5633", "W# c #4F592D", "X# c #566329", "Y# c #798453", "Z# c #728045", "`# c #3A432C", " $ c #1A1B30", ".$ c #1E2130", "+$ c #30313B", "@$ c #363937", "#$ c #DCDCDB", "$$ c #DEE1D4", "%$ c #9FBC37", "&$ c #A3BE43", "*$ c #A3BE4B", "=$ c #A4BC53", "-$ c #859B3E", ";$ c #889061", ">$ c #BFBFB0", ",$ c #E7E4E3", "'$ c #FFFDFF", ")$ c #EEB938", "!$ c #EFAA19", "~$ c #EE9E1E", "{$ c #EC9221", "]$ c #EB8A25", "^$ c #9F6935", "/$ c #444846", "($ c #474A4B", "_$ c #222435", ":$ c #1E2032", "<$ c #262531", "[$ c #8E6F3C", "}$ c #9F7D3B", "|$ c #A58534", "1$ c #AF943A", "2$ c #BDAC78", "3$ c #CECECF", "4$ c #D7D6D7", "5$ c #DDDCDD", "6$ c #DDDDDD", "7$ c #C5C7BF", "8$ c #A9AF94", "9$ c #839055", "0$ c #6A7A2F", "a$ c #667829", "b$ c #697A2D", "c$ c #56652B", "d$ c #202331", "e$ c #202230", "f$ c #31343C", "g$ c #3F413F", "h$ c #373937", "i$ c #C3C3C3", "j$ c #F8F6FC", "k$ c #A0B949", "l$ c #A6BF4D", "m$ c #A6BE57", "n$ c #A8C057", "o$ c #A5BD55", "p$ c #AEBC79", "q$ c #C1C3A9", "r$ c #CECEC2", "s$ c #E7E5E2", "t$ c #FCFEFF", "u$ c #EEB92C", "v$ c #F1AF17", "w$ c #EEA019", "x$ c #EC941B", "y$ c #DD8521", "z$ c #3F4545", "A$ c #4D4F4D", "B$ c #282B38", "C$ c #202233", "D$ c #2F2C34", "E$ c #967437", "F$ c #A68134", "G$ c #B38F36", "H$ c #BD9F40", "I$ c #C6AB48", "J$ c #D6D2C8", "K$ c #E0DFDF", "L$ c #EEEDED", "M$ c #F8F7F7", "N$ c #FAF9FA", "O$ c #D9D8DB", "P$ c #B0B59D", "Q$ c #738438", "R$ c #657629", "S$ c #66772A", "T$ c #62722E", "U$ c #212232", "V$ c #232531", "W$ c #373A3F", "X$ c #3E403E", "Y$ c #FCFCFC", "Z$ c #B5C57F", "`$ c #A8C054", " % c #A9C159", ".% c #A8C059", "+% c #DDD8C5", "@% c #FDF5FF", "#% c #FEFFFF", "$% c #F1CE6C", "%% c #F3BC1C", "&% c #EFA90F", "*% c #F19B0E", "=% c #795E33", "-% c #494B48", ";% c #393B42", ">% c #222434", ",% c #252735", "'% c #98772E", ")% c #AC8A33", "!% c #BB9B3F", "~% c #C7AA48", "{% c #CFB340", "]% c #D5C8A6", "^% c #E6E6E7", "/% c #FAFBF7", "(% c #DAD9DA", "_% c #AFB694", ":% c #6D802F", "<% c #66762A", "[% c #616F33", "}% c #272834", "|% c #3E4140", "1% c #313432", "2% c #CED5B4", "3% c #A9C158", "4% c #B9C483", "5% c #F7E4F8", "6% c #FEFDFE", "7% c #F9F8F8", "8% c #F8F8F8", "9% c #FAF9F9", "0% c #F7F1EB", "a% c #F2C62B", "b% c #F4C124", "c% c #E4A718", "d% c #383E42", "e% c #4B4E4B", "f% c #262835", "g% c #7D6930", "h% c #B1953D", "i% c #C0A543", "j% c #CEB344", "k% c #D2B64A", "l% c #DCD1B9", "m% c #EAEAEB", "n% c #F8F7F8", "o% c #ECEFE3", "p% c #BAC29D", "q% c #7C8E39", "r% c #6E7F2F", "s% c #677928", "t% c #464E3A", "u% c #21242F", "v% c #33353B", "w% c #383B38", "x% c #3E403F", "y% c #D5D5D5", "z% c #E5E5E4", "A% c #ADC268", "B% c #AEC36A", "C% c #AFB97F", "D% c #F7E5F8", "E% c #FFFEFF", "F% c #F3E9D9", "G% c #F1C837", "H% c #988635", "I% c #444644", "J% c #3D3F43", "K% c #262735", "L% c #3C3B35", "M% c #B6A03A", "N% c #C0A739", "O% c #C7AC51", "P% c #D4C498", "Q% c #E4E2E6", "R% c #EBEAEA", "S% c #F9F9F9", "T% c #EBECE8", "U% c #DCDED5", "V% c #EDEFE7", "W% c #DEE1D6", "X% c #97A75E", "Y% c #829739", "Z% c #7B8F36", "`% c #6B7D2D", " & c #6C7E2F", ".& c #272933", "+& c #3D403E", "@& c #2F3130", "#& c #B7B7B7", "$& c #FBFAFC", "%& c #ABBD71", "&& c #B0C36E", "*& c #93A55A", "=& c #E0D3DB", "-& c #F3F2F1", ";& c #B6B6A6", ">& c #E6DFE2", ",& c #55544A", "'& c #494C48", ")& c #30323B", "!& c #232533", "~& c #817968", "{& c #B8AC96", "]& c #C8C2C3", "^& c #DDE0DD", "/& c #EAE9E9", "(& c #EEEDEC", "_& c #F3F2F2", ":& c #F4F3F3", "<& c #FBFCFB", "[& c #FCFCFB", "}& c #9EA784", "|& c #757E53", "1& c #9CA385", "2& c #ABB195", "3& c #A7AE8C", "4& c #88994B", "5& c #8FA544", "6& c #89A03A", "7& c #84993B", "8& c #758832", "9& c #67792B", "0& c #667729", "a& c #484F3B", "b& c #24262F", "c& c #3A3D3D", "d& c #313332", "e& c #464846", "f& c #C1CB9F", "g& c #B2C473", "h& c #B3C477", "i& c #717F44", "j& c #7A835B", "k& c #7F8761", "l& c #6A7445", "m& c #697242", "n& c #F1E4EF", "o& c #FCF8FC", "p& c #323532", "q& c #4A4C49", "r& c #292B35", "s& c #242630", "t& c #BBBBB8", "u& c #CFCECF", "v& c #BCBDB5", "w& c #E1E3D8", "x& c #F2F1F1", "y& c #F4F4F1", "z& c #F7F5F5", "A& c #FDFDFC", "B& c #E4E9D4", "C& c #758C25", "D& c #73872D", "E& c #74882E", "F& c #829835", "G& c #8FA73A", "H& c #99AF4B", "I& c #90A83B", "J& c #8CA13F", "K& c #7D9136", "L& c #6E802E", "M& c #647139", "N& c #20232D", "O& c #343739", "P& c #363736", "Q& c #D6DBCA", "R& c #B3C478", "S& c #B5C57E", "T& c #B5C581", "U& c #ACBB78", "V& c #9AAA63", "W& c #94A560", "X& c #91A258", "Y& c #EFDDEC", "Z& c #FBFAFB", "`& c #D5D6D5", " * c #373A37", ".* c #464947", "+* c #282A35", "@* c #43454B", "#* c #C8C7C7", "$* c #D5D5D4", "%* c #A0A48F", "&* c #DEE2D0", "** c #F1F2E8", "=* c #E2E9C8", "-* c #90AF25", ";* c #92B02C", ">* c #93B02E", ",* c #94B22E", "'* c #98B23D", ")* c #99B045", "!* c #94AC40", "~* c #90A641", "{* c #829839", "]* c #74872F", "^* c #647625", "/* c #6D7C37", "(* c #262833", "_* c #2F3136", ":* c #383B39", "<* c #383A39", "[* c #CCCCCB", "}* c #EBEBED", "|* c #B3C37D", "1* c #B3C47D", "2* c #B4C37C", "3* c #B1C378", "4* c #ADC06B", "5* c #AEC16D", "6* c #AFB780", "7* c #F6E3F7", "8* c #BEBFBE", "9* c #3B3D3B", "0* c #424543", "a* c #282A34", "b* c #646568", "c* c #CCCCCC", "d* c #D8D9D4", "e* c #BABFA3", "f* c #7F8E48", "g* c #E8EBDD", "h* c #F8F9F5", "i* c #FCFBFB", "j* c #FEFDFD", "k* c #FEFEFD", "l* c #9BB04E", "m* c #94B328", "n* c #95B42A", "o* c #96B52C", "p* c #97B52D", "q* c #97B52F", "r* c #97B13D", "s* c #94AD3A", "t* c #97AD4D", "u* c #A0AE71", "v* c #A4AA8E", "w* c #A0A0A0", "x* c #869064", "y* c #34363D", "z* c #2D2F33", "A* c #393C3A", "B* c #2E302F", "C* c #A9A9A8", "D* c #B5C18D", "E* c #B1C276", "F* c #AFC270", "G* c #A9BE61", "H* c #ABBF66", "I* c #8FA151", "J* c #ECDAE9", "K* c #A1A39D", "L* c #3C3F3D", "M* c #424442", "N* c #6C6D6F", "O* c #D1D1D1", "P* c #D8DBCE", "Q* c #B4BD91", "R* c #88A038", "S* c #819341", "T* c #D1D6C2", "U* c #E6E8E1", "V* c #7E8D48", "W* c #87A425", "X* c #94B327", "Y* c #95B427", "Z* c #92B323", "`* c #96B42E", " = c #B2C76A", ".= c #CED9A5", "+= c #E2E4D9", "@= c #E2E0E5", "#= c #D1D1CF", "$= c #BCBCBB", "%= c #939785", "&= c #393C3C", "*= c #2D3032", "== c #3A3C3A", "-= c #2A2C2C", ";= c #F7F7F7", ">= c #A9BF61", ",= c #ACC06A", "'= c #A5BC55", ")= c #A8BE5E", "!= c #9FB553", "~= c #809145", "{= c #B6B89F", "]= c #BBC1A7", "^= c #8B9762", "/= c #5A682E", "(= c #3C3E3E", "_= c #424542", ":= c #292B34", "<= c #717274", "[= c #D4D3D4", "}= c #D7DBC8", "|= c #8C9D50", "1= c #97AF44", "2= c #8DA831", "3= c #788E2C", "4= c #72823D", "5= c #86915E", "6= c #6E7C41", "7= c #5E711A", "8= c #7B971E", "9= c #8BAB1B", "0= c #A8C153", "a= c #C6D592", "b= c #E4E9D1", "c= c #FAF8FD", "d= c #F6F5F6", "e= c #ECECEA", "f= c #E1E0DF", "g= c #D2D2D0", "h= c #C0BFBF", "i= c #9E9F9D", "j= c #333737", "k= c #2E3132", "l= c #292C2B", "m= c #DBDED2", "n= c #A1BB4C", "o= c #A5BD56", "p= c #A2BB4E", "q= c #9EB74B", "r= c #91A941", "s= c #8BA43A", "t= c #93AD3B", "u= c #7C9138", "v= c #383A3A", "w= c #434643", "x= c #2B2D34", "y= c #5F6063", "z= c #CACBC7", "A= c #919F60", "B= c #8CA141", "C= c #98B13E", "D= c #97B239", "E= c #92AF2D", "F= c #88A427", "G= c #7E9A1D", "H= c #8DA53E", "I= c #B0C178", "J= c #D7DFBA", "K= c #F8F7F9", "L= c #F8F7FA", "M= c #E2E2E0", "N= c #D3D3D2", "O= c #C1C1C0", "P= c #ABABAA", "Q= c #A09FA0", "R= c #2F3234", "S= c #323533", "T= c #2D302E", "U= c #F2F1F6", "V= c #A5BA60", "W= c #A4BC52", "X= c #A2BA4C", "Y= c #9EB942", "Z= c #A1BA4B", "`= c #A0BA48", " - c #9DB943", ".- c #9DB83F", "+- c #9BB73B", "@- c #99B736", "#- c #89A232", "$- c #333538", "%- c #434543", "&- c #2F3135", "*- c #647233", "=- c #8CA045", "-- c #96AE44", ";- c #95AE3B", ">- c #9AB836", ",- c #B6CA72", "'- c #D2DDAD", ")- c #EEEFE8", "!- c #F4F5F3", "~- c #F5F5F3", "{- c #F4F3F2", "]- c #F3F3F1", "^- c #E1E1E0", "/- c #D3D3D1", "(- c #C0C0BF", "_- c #AAA9A9", ":- c #919291", "<- c #25272A", "[- c #343735", "}- c #333634", "|- c #363837", "1- c #949494", "2- c #B0C07E", "3- c #9FBA46", "4- c #9BB73A", "5- c #9DB942", "6- c #9AB738", "7- c #9AB637", "8- c #98B533", "9- c #97B52E", "0- c #99BA29", "a- c #323435", "b- c #424541", "c- c #353737", "d- c #2E2F37", "e- c #7D8F3E", "f- c #A0B164", "g- c #C3CD9A", "h- c #E3E6D5", "i- c #F4F4F5", "j- c #F2F2F0", "k- c #EBEAE9", "l- c #DFDFDE", "m- c #BEBDBD", "n- c #A7A7A6", "o- c #767675", "p- c #272A2B", "q- c #373A38", "r- c #C7D0A9", "s- c #A1BB4A", "t- c #9CB83D", "u- c #9AB73A", "v- c #9AB739", "w- c #99B634", "x- c #96B52D", "y- c #90B11E", "z- c #94B625", "A- c #545C41", "B- c #2A2C31", "C- c #87878A", "D- c #D8D7D8", "E- c #E3E2E1", "F- c #F2F1F0", "G- c #F5F4F4", "H- c #F0EFEE", "I- c #E8E7E6", "J- c #DCDBDA", "K- c #BAB9B8", "L- c #464847", "M- c #2C2F2E", "N- c #393C39", "O- c #282B2A", "P- c #DEE0DA", "Q- c #9CB83C", "R- c #9CB83F", "S- c #99B635", "T- c #95B42C", "U- c #91B124", "V- c #C3D290", "W- c #DEE4CC", "X- c #F4F2F9", "Y- c #ACADAD", "Z- c #3F423F", "`- c #313333", " ; c #3D3F41", ".; c #DEDEDC", "+; c #F1F0EE", "@; c #E3E3E1", "#; c #D7D7D5", "$; c #C7C7C5", "%; c #B2B2B1", "&; c #898989", "*; c #292B2A", "=; c #343635", "-; c #292C2A", ";; c #B7B7B6", ">; c #99B342", ",; c #95B32D", "'; c #A3BD4D", "); c #BECE85", "!; c #D9E0BE", "~; c #F3F2F5", "{; c #3E403D", "]; c #2C2D30", "^; c #7F807F", "/; c #E4E4E2", "(; c #F1F2F0", "_; c #F5F4F3", ":; c #E8E8E6", "<; c #DDDCDB", "[; c #C3C3C2", "}; c #A2A2A1", "|; c #777777", "1; c #2A2D2C", "2; c #FBFBFA", "3; c #E6EAD7", "4; c #EEEFEA", "5; c #F6F5F9", "6; c #F2F1F2", "7; c #9A9A99", "8; c #2D3031", "9; c #B5B5B3", "0; c #E5E5E3", "a; c #F1F1EF", "b; c #E7E6E6", "c; c #CACAC9", "d; c #A7A6A6", "e; c #737373", "f; c #4E4E4E", "g; c #2E2E2E", "h; c #282B29", "i; c #252828", "j; c #303231", "k; c #333535", "l; c #BFBFBD", "m; c #E5E4E3", "n; c #EFEEED", "o; c #D9D8D7", "p; c #BBBABA", "q; c #8A8A89", "r; c #5D5D5C", "s; c #424141", "t; c #333331", "u; c #434341", "v; c #2C2F2D", "w; c #262929", "x; c #3B3E3C", "y; c #CACACA", "z; c #D1D2D0", "A; c #2A2D2B", "B; c #3B3D3C", "C; c #353836", "D; c #ADADAC", "E; c #E0E0DE", "F; c #E8E7E5", "G; c #DAD8D8", "H; c #C2C2C1", "I; c #9B9A9A", "J; c #656564", "K; c #474746", "L; c #2E2D2C", "M; c #2B2D2C", "N; c #A2A2A3", "O; c #D4D4D4", "P; c #A3A3A3", "Q; c #4E4F4E", "R; c #2E312F", "S; c #2B2E2C", "T; c #70716F", "U; c #9C9C9B", "V; c #6D6D6C", "W; c #515150", "X; c #353433", "Y; c #3B3A39", "Z; c #545453", "`; c #363936", " > c #262928", ".> c #DADADA", "+> c #B3B3B3", "@> c #343434", "#> c #050505", "$> c #000000", "%> c #383938", "&> c #323434", "*> c #454746", "=> c #595A58", "-> c #4C4D4B", ";> c #272A29", ">> c #CECECE", ",> c #C2C2C2", "'> c #848484", ")> c #424242", "!> c #141414", "~> c #323432", "{> c #333534", "]> c #393B3A", "^> c #323433", "/> c #343736", "(> c #252827", "_> c #909291", ":> c #C5CBCC", "<> c #272727", "[> c #7A7A7A", "}> c #545454", "|> c #222222", "1> c #333633", "2> c #2A2C2B", "3> c #242726", "4> c #7B7F80", "5> c #6F7270", "6> c #A2A29C", "7> c #D0D4D5", "8> c #CBB58E", "9> c #393C3B", "0> c #353735", "a> c #727675", "b> c #878A89", "c> c #B28D4F", "d> c #D2A158", "e> c #E4B573", "f> c #424443", "g> c #373939", "h> c #323534", "i> c #2B2E2D", "j> c #272928", "k> c #282A29", "l> c #2C2E2D", "m> c #785B2A", "n> c #A06A14", "o> c #B78433", "p> c #D9AA6A", "q> c #E6B87A", "r> c #E9BA74", "s> c #593805", "t> c #815103", "u> c #9F6A14", "v> c #BA883A", "w> c #DCAD71", "x> c #E6B97D", "y> c #E9BA75", "z> c #57390B", "A> c #7F4F02", "B> c #9E6913", "C> c #BD8B40", "D> c #DDAF75", "E> c #E6B87F", "F> c #E9BA77", "G> c #553A0E", "H> c #7D4E02", "I> c #C28F47", "J> c #DEB177", "K> c #E6B97F", "L> c #EABB78", "M> c #553B11", "N> c #7C4D01", "O> c #9E6914", "P> c #C3924C", "Q> c #DEB178", "R> c #E9BB79", "S> c #553C13", "T> c #7A4C01", "U> c #C5944F", "V> c #E6B87E", "W> c #563D16", "X> c #794B01", "Y> c #C79653", "Z> c #DEB078", "`> c #E5B77C", " , c #563E18", "., c #784B02", "+, c #9F6914", "@, c #C89856", "#, c #E4B67A", "$, c #56401B", "%, c #784B04", "&, c #9F6A16", "*, c #C99957", "=, c #DBAC71", "-, c #59411E", ";, c #7A4E08", ">, c #9B6712", ",, c #B48131", "', c #513811", "), c #734801", " ", " ", " ", " . + ", " @ # $ % & & * ", " = # - ; % > > , & & ' ", " ) ; ! ~ $ ' { % > ] , , ^ & / ", " + $ ( _ - ; ; ~ $ ' { % > ] ] & & : < ", " [ { } ( _ _ | 1 1 ; ~ ~ $ { { % > ] , & & : ^ ", " @ & } 2 3 4 5 5 _ _ | 1 - ; ; $ $ { % % > ] , & & : % ", " 6 ( 7 8 ( ( ( 3 4 5 5 _ _ | 1 - ; ~ $ $ { % > ] ] { 9 0 a > b ", " * _ c 7 2 2 } } d ( e 3 4 5 5 _ | | 1 - ; ~ $ ' { $ f g h i j k l m n ", " [ $ c o 7 p p q 2 2 } } d ( 3 3 4 5 5 _ | | 1 ; ; - e r s t u v w x y z A B ! ", " C o 7 7 7 7 7 D p 2 2 E } } ( ( 3 3 5 5 5 _ | 1 e F G H I J K L M N O P Q R S T U V ", " $ 7 7 7 7 7 7 W p q 2 2 } d ( ( e 3 5 5 e X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. ", " ~.7 7 7 7 7 7 p p q 2 8 } d ( e ( {.].^./.(._.:.<.[.}.|.1.2.3.P 4.-.5.6.7.8.9.0.a.b. ", " c.c 7 7 7 7 7 p p 2 2 } } d.e.f.g.h.i.j.k...l.m.n.o.p.q.N r.s.Q t.u.v.,.9.w.x.y.z.d ", " c 7 7 7 7 7 p p d.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.=.T.U.V.W.X.Y.Z.`. +.+++d @+ ", " { 7 7 7 #+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+P.O._+:+<+[+}+|+1+2+x.3+4+5+6+7+8+9+0+ ", " = 7 a+b+c+d+I.e+f+>+>+g+h+i+j+k+l+O.O.m+n+o+p+q+O.r+s+t+u+O.O.v+w+x+y+z+A+B+C+D+E+F+ ", " G+H+I+F.J+>+>+K+>+>+L+M+N+O+P+Q+R+P.O.S+T+o+U+V+O.W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@E ", " 7 ;@>+>+>+>+>@,@,+'@)@!@~@{@]@^@/@l+O.' O.(@_@O.:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@c@ ", " # d@e@>+>+,@f@g@h@i@O.O.j@k@l@o+m@n@o@p@q@r@s@t@u@v@w@4@x@y@z@A@B@C@D@E@F@G@H@I@J@K@ ", " L@M@N@>+O@P@Q@R@S@o+(+(+O.O.T@U@V@W@X@Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^# ", " /#(#_#M+k...:#<#[#l+P.V+{.}#O.|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r# ", " 3 s#t#u#v#w#x#y#z#o+O.P.A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $.$+$]#@$ ", " #$$$%$&$*$#.=$-$;$>$,$'$O.)$!$~${$]$^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$ ", " i$j$k$l$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$N$A#e O$P$Q$R$S$T$U$V$W$r#X$ ", " Y$Z$x `$ %.%+%@%o+P.A##%$%%%&%*%=%-%;%>%,%'%)%!%~%{%]%^%$ {.q+A#q+/%} (%_%:%S$<%[%o#}%|%1% ", " $ 2%3%z Q 4%5%6%q+7%8%9%0%a%b%c%d%e%f%K#g%h%i%j%k%l%m%_ 2 n%V+Y$O.O.o%C p%q%r%S$s%t%u%v%w%x% ", " y%z%.%A%B%C%D%E%O.O.O.O.E%F%G%H%I%J%K%L%M%N%O%P%Q%R%2 c S%T%U%O.6%8%V%W%X%Y%Z%`%S$ &K%.&+&@& ", " #&$&%&&&7.*&=&N.O.O.-&;&>&N.E%,&'&)&!&~&{&]&^&/&(&_&:&<&[&O.}&|&1&2&3&4&5&6&7&8&9&0&a&b&c&d&e& ", " }#f&g&h&I i&j&k&l&m&n&o&n%M$p&q&r&s&t&u&v&w&x&y&z&{.7%Y$A&B&C&D&E&F&G&H&I&J&K&L&<%M&N&O&P&x% ", " C Q&R&S&T&U&V&W&X&Y&o&Z&p+`& *.*+*@*#*$*%*&*n%**n%Y$V+A&A&=*-*;*>*,*'*)*!*~*{*]*^*/*(*_*:*<* ", " [*}*|*1*2*3*4*5*6*7*6%P.O.8*9*0*a*b*c*d*e*f*g*h*i*Y$j*k*O.l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*A*B* ", " C*A#D*E*F*F*G*H*I*J*]@O.O.K*L*M*a*N*O*P*Q*R*S*T*O.O.O.U*V*W*X*Y*Z*`* =.=+=@=#=$=/ %=&=*===-= ", " ;=C.F*>=,='=)=!=~={=]=^=/=(=_=:=<=[=}=|=1=2=3=4=5=6=7=8=9=0=a=b=c=d=( e=f=g=h=C*i=j=k=r#l= ", " [ m=T.U.'=n=o=p=q=r=s=t=u=v=w=x=y=z=A=B=C=D=E=F=G=H=I=J=K=L=p q q 8 -&$ M=N=O=P=Q=R=S=@$T= ", " i$U=V=W=X=Y=Z=`= -.-+-@-#-$-%-&-<**-=---;->-,-'-)-A.7 7 7 p p !-~-{-]-e=^-/-(-_-:-<-[-}-|- ", " 1-E%2-=$3-4-5-Y=6-7-8-9-0-a-b-c-d-e-f-g-h-j$i-2 2 p p p p p ~-q !-8 j-k-l-#=m-n-o-p-q-B*^# ", " e r-s-Y=t-u-v-w-x-n*y-z-A-J@9*B-C-D-E-$ F-{-~-p G-~-p p ~-q ~-8 } H-I-J-[*K-i#L-M-N-O- ", " y%P-Q-R-4-S-T-U-x V-W-X-Y-S=Z-`- ;g=.;^ +;{-8 2 ~-p q ~-q ~-2 8 -&$ @;#;$;%;&;*;d&=;-; ", " ;;j$>;,;';);!;a+~;! _ | } [-{;h$];^;f./;e=(;{-8 2 _;p 2 2 2 8 -&1 :;<;[;};|;K@1;q-1;:* ", " 2;3;4;5;6;3 4 5 ! _ | _ 7;1%X$1%8;9;#$0;$ a;} {-8 {-} 8 _;( b;c;d;e;f;g;|-h;d&S=i; ", " : d ( e 3 3 4 5 _ _ | 1 ( 0*r#N-j;k;l;#$m;> n;F-]-( 3 o;p;q;r;s;t;u; %-1;v;h$w;x; ", " y;( ( ( 3 4 5 5 _ _ | 1 - z;A;B;C;@&c-D;~.E;F;G;H;I;J;K;L; q#O-M;h$A;T= ", " N;7 ( ( 3 4 5 ! ! 5 | $ O;P;Q;R;^#C;R;S;T;U;V;W;X;Y; Z;`; >S;h$v;*; ", " d.( 3 3 e a;4 .>+>e;@>#>$> %>T=:*q-R;M;&>*>=> ->:*h;O-R;C;-=;> ", " >>p ( + ,>'>)>!>$> @&~>A*{>v;A;h;T=]>A*:*^>;> >h;v;/>S=(>M;_>:> ", " <>[>}>|>$>$> B;O-1>w%C;j;M-1;2>A;-=M-1%`;{>O-3>h$4>5>6>7>8> ", " 9>O-M;^>0>@$|-|-[-1%v;(> >[- a>b>c>d>e> ", " f>g>h>i>j>k>l>d&[- m>n>o>p>q>r> ", " s>t>u>v>w>x>y> ", " z>A>B>C>D>E>F> ", " G>H>B>I>J>K>L> ", " M>N>O>P>Q>E>R> ", " S>T>O>U>Q>V> ", " W>X>O>Y>Z>`> ", " ,.,+,@,Q>#, ", " $,%,&,*,=, ", " -,;,>,,, ", " ',), ", " ", " "}; WindowMaker-0.95.8/util/common.h0000664000175000017500000000214012650014300013371 00000000000000/* * Command-line utilities for WindowMaker * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2004 Dan Pascu * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ /* * Functions that are used by more than one tool */ #ifndef UTIL_COMMON_H #define UTIL_COMMON_H /* ---[ util/fontconv.c ]------------------------------------------------- */ char *convertFont(char *font, Bool keepXLFD); #endif WindowMaker-0.95.8/util/wmsetbg.c0000664000175000017500000010313012650014300013545 00000000000000/* wmsetbg.c- sets root window background image and also works as * workspace background setting helper for wmaker * * WindowMaker window manager * * Copyright (c) 1998-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* * TODO: rewrite, too dirty */ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #ifdef USE_XINERAMA # ifdef SOLARIS_XINERAMA /* sucks */ # include # else # include # endif #endif #ifdef HAVE_STDNORETURN #include #endif #include "../src/wconfig.h" #include #include typedef struct { WMRect *screens; int count; /* screen count, 0 = inactive */ } WXineramaInfo; #define WORKSPACE_COUNT (MAX_WORKSPACES+1) Display *dpy; char *display = ""; Window root; int scr; int scrWidth; int scrHeight; int scrX, scrY; WXineramaInfo xineInfo; Bool smooth = False; #ifdef USE_XINERAMA Bool xineStretch = False; #endif Pixmap CurrentPixmap = None; char *PixmapPath = NULL; static const char *prog_name; typedef struct BackgroundTexture { int refcount; int solid; char *spec; XColor color; Pixmap pixmap; /* for all textures, including solid */ int width; /* size of the pixmap */ int height; } BackgroundTexture; static noreturn void quit(int rcode) { WMReleaseApplication(); exit(rcode); } static void initXinerama(void) { xineInfo.screens = NULL; xineInfo.count = 0; #ifdef USE_XINERAMA # ifdef SOLARIS_XINERAMA if (XineramaGetState(dpy, scr)) { XRectangle head[MAXFRAMEBUFFERS]; unsigned char hints[MAXFRAMEBUFFERS]; int i; if (XineramaGetInfo(dpy, scr, head, hints, &xineInfo.count)) { xineInfo.screens = wmalloc(sizeof(WMRect) * (xineInfo.count + 1)); for (i = 0; i < xineInfo.count; i++) { xineInfo.screens[i].pos.x = head[i].x; xineInfo.screens[i].pos.y = head[i].y; xineInfo.screens[i].size.width = head[i].width; xineInfo.screens[i].size.height = head[i].height; } } } # else /* !SOLARIS_XINERAMA */ if (XineramaIsActive(dpy)) { XineramaScreenInfo *xine_screens; int i; xine_screens = XineramaQueryScreens(dpy, &xineInfo.count); xineInfo.screens = wmalloc(sizeof(WMRect) * (xineInfo.count + 1)); for (i = 0; i < xineInfo.count; i++) { xineInfo.screens[i].pos.x = xine_screens[i].x_org; xineInfo.screens[i].pos.y = xine_screens[i].y_org; xineInfo.screens[i].size.width = xine_screens[i].width; xineInfo.screens[i].size.height = xine_screens[i].height; } XFree(xine_screens); } # endif /* !SOLARIS_XINERAMA */ #endif /* USE_XINERAMA */ } static RImage *loadImage(RContext * rc, const char *file) { char *path; RImage *image; if (access(file, F_OK) != 0) { path = wfindfile(PixmapPath, file); if (!path) { wwarning("%s:could not find image file used in texture", file); return NULL; } } else { path = wstrdup(file); } image = RLoadImage(rc, path, 0); if (!image) { wwarning("%s:could not load image file used in texture:%s", path, RMessageForError(RErrorCode)); } wfree(path); return image; } static void applyImage(RContext * rc, BackgroundTexture * texture, RImage * image, char type, int x, int y, int width, int height) { int w, h; Bool fimage = False; switch (toupper(type)) { case 'S': case 'M': case 'F': if (toupper(type) == 'S') { w = width; h = height; } else if(toupper(type) == 'F') { if (image->width * height > image->height * width) { w = (height * image->width) / image->height; h = height; } else { w = width; h = (width * image->height) / image->width; } } else { if (image->width * height > image->height * width) { w = width; h = (width * image->height) / image->width; } else { w = (height * image->width) / image->height; h = height; } } if (w != image->width || h != image->height) { RImage *simage; if (smooth) { simage = RSmoothScaleImage(image, w, h); } else { simage = RScaleImage(image, w, h); } if (!simage) { wwarning("could not scale image:%s", RMessageForError(RErrorCode)); return; } fimage = True; image = simage; } /* fall through */ case 'C': { Pixmap pixmap; if (!RConvertImage(rc, image, &pixmap)) { wwarning("could not convert texture:%s", RMessageForError(RErrorCode)); if (fimage) RReleaseImage(image); return; } if (image->width != width || image->height != height) { int sx, sy, w, h; if (image->height < height) { h = image->height; y += (height - h) / 2; sy = 0; } else { sy = (image->height - height) / 2; h = height; } if (image->width < width) { w = image->width; x += (width - w) / 2; sx = 0; } else { sx = (image->width - width) / 2; w = width; } XCopyArea(dpy, pixmap, texture->pixmap, DefaultGC(dpy, scr), sx, sy, w, h, x, y); } else XCopyArea(dpy, pixmap, texture->pixmap, DefaultGC(dpy, scr), 0, 0, width, height, x, y); XFreePixmap(dpy, pixmap); if (fimage) { RReleaseImage(image); } } break; } } static BackgroundTexture *parseTexture(RContext * rc, char *text) { BackgroundTexture *texture = NULL; WMPropList *texarray; WMPropList *val; int count; char *tmp; char *type; #define GETSTRORGOTO(val, str, i, label) \ val = WMGetFromPLArray(texarray, i);\ if (!WMIsPLString(val)) {\ wwarning("could not parse texture %s", text);\ goto label;\ }\ str = WMGetFromPLString(val) texarray = WMCreatePropListFromDescription(text); if (!texarray || !WMIsPLArray(texarray) || (count = WMGetPropListItemCount(texarray)) < 2) { wwarning("could not parse texture %s", text); if (texarray) WMReleasePropList(texarray); return NULL; } texture = wmalloc(sizeof(BackgroundTexture)); GETSTRORGOTO(val, type, 0, error); if (strcasecmp(type, "solid") == 0) { XColor color; Pixmap pixmap; texture->solid = 1; GETSTRORGOTO(val, tmp, 1, error); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); goto error; } XAllocColor(dpy, DefaultColormap(dpy, scr), &color); pixmap = XCreatePixmap(dpy, root, 8, 8, DefaultDepth(dpy, scr)); XSetForeground(dpy, DefaultGC(dpy, scr), color.pixel); XFillRectangle(dpy, pixmap, DefaultGC(dpy, scr), 0, 0, 8, 8); texture->pixmap = pixmap; texture->color = color; texture->width = 8; texture->height = 8; } else if (strcasecmp(type, "vgradient") == 0 || strcasecmp(type, "dgradient") == 0 || strcasecmp(type, "hgradient") == 0) { XColor color; RColor color1, color2; RImage *image; Pixmap pixmap; RGradientStyle gtype; int iwidth, iheight; GETSTRORGOTO(val, tmp, 1, error); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); goto error; } color1.red = color.red >> 8; color1.green = color.green >> 8; color1.blue = color.blue >> 8; GETSTRORGOTO(val, tmp, 2, error); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); goto error; } color2.red = color.red >> 8; color2.green = color.green >> 8; color2.blue = color.blue >> 8; switch (type[0]) { case 'h': case 'H': gtype = RHorizontalGradient; iwidth = scrWidth; iheight = 32; break; case 'V': case 'v': gtype = RVerticalGradient; iwidth = 32; iheight = scrHeight; break; default: gtype = RDiagonalGradient; iwidth = scrWidth; iheight = scrHeight; break; } image = RRenderGradient(iwidth, iheight, &color1, &color2, gtype); if (!image) { wwarning("could not render gradient texture:%s", RMessageForError(RErrorCode)); goto error; } if (!RConvertImage(rc, image, &pixmap)) { wwarning("could not convert texture:%s", RMessageForError(RErrorCode)); RReleaseImage(image); goto error; } texture->width = image->width; texture->height = image->height; RReleaseImage(image); texture->pixmap = pixmap; } else if (strcasecmp(type, "mvgradient") == 0 || strcasecmp(type, "mdgradient") == 0 || strcasecmp(type, "mhgradient") == 0) { XColor color; RColor **colors; RImage *image; Pixmap pixmap; int i, j; RGradientStyle gtype; int iwidth, iheight; colors = malloc(sizeof(RColor *) * (count - 1)); if (!colors) { wwarning("out of memory while parsing texture"); goto error; } memset(colors, 0, sizeof(RColor *) * (count - 1)); for (i = 2; i < count; i++) { val = WMGetFromPLArray(texarray, i); if (!WMIsPLString(val)) { wwarning("could not parse texture %s", text); for (j = 0; colors[j] != NULL; j++) wfree(colors[j]); wfree(colors); goto error; } tmp = WMGetFromPLString(val); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); for (j = 0; colors[j] != NULL; j++) wfree(colors[j]); wfree(colors); goto error; } if (!(colors[i - 2] = malloc(sizeof(RColor)))) { wwarning("out of memory while parsing texture"); for (j = 0; colors[j] != NULL; j++) wfree(colors[j]); wfree(colors); goto error; } colors[i - 2]->red = color.red >> 8; colors[i - 2]->green = color.green >> 8; colors[i - 2]->blue = color.blue >> 8; } switch (type[1]) { case 'h': case 'H': gtype = RHorizontalGradient; iwidth = scrWidth; iheight = 32; break; case 'V': case 'v': gtype = RVerticalGradient; iwidth = 32; iheight = scrHeight; break; default: gtype = RDiagonalGradient; iwidth = scrWidth; iheight = scrHeight; break; } image = RRenderMultiGradient(iwidth, iheight, colors, gtype); for (j = 0; colors[j] != NULL; j++) wfree(colors[j]); wfree(colors); if (!image) { wwarning("could not render gradient texture:%s", RMessageForError(RErrorCode)); goto error; } if (!RConvertImage(rc, image, &pixmap)) { wwarning("could not convert texture:%s", RMessageForError(RErrorCode)); RReleaseImage(image); goto error; } texture->width = image->width; texture->height = image->height; RReleaseImage(image); texture->pixmap = pixmap; } else if (strcasecmp(type, "cpixmap") == 0 || strcasecmp(type, "spixmap") == 0 || strcasecmp(type, "fpixmap") == 0 || strcasecmp(type, "mpixmap") == 0 || strcasecmp(type, "tpixmap") == 0) { XColor color; Pixmap pixmap = None; RImage *image = NULL; int iwidth = 0, iheight = 0; RColor rcolor; GETSTRORGOTO(val, tmp, 1, error); /* if (toupper(type[0]) == 'T' || toupper(type[0]) == 'C') pixmap = LoadJPEG(rc, tmp, &iwidth, &iheight); */ if (!pixmap) { image = loadImage(rc, tmp); if (!image) { goto error; } iwidth = image->width; iheight = image->height; } GETSTRORGOTO(val, tmp, 2, error); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); RReleaseImage(image); goto error; } if (!XAllocColor(dpy, DefaultColormap(dpy, scr), &color)) { rcolor.red = color.red >> 8; rcolor.green = color.green >> 8; rcolor.blue = color.blue >> 8; RGetClosestXColor(rc, &rcolor, &color); } else { rcolor.red = 0; rcolor.green = 0; rcolor.blue = 0; } /* for images with a transparent color */ if (image && image->data[3]) RCombineImageWithColor(image, &rcolor); switch (toupper(type[0])) { case 'T': texture->width = iwidth; texture->height = iheight; if (!pixmap && !RConvertImage(rc, image, &pixmap)) { wwarning("could not convert texture:%s", RMessageForError(RErrorCode)); RReleaseImage(image); goto error; } texture->pixmap = pixmap; texture->color = color; break; case 'S': case 'M': case 'C': case 'F': { Pixmap tpixmap = XCreatePixmap(dpy, root, scrWidth, scrHeight, DefaultDepth(dpy, scr)); XSetForeground(dpy, DefaultGC(dpy, scr), color.pixel); XFillRectangle(dpy, tpixmap, DefaultGC(dpy, scr), 0, 0, scrWidth, scrHeight); texture->pixmap = tpixmap; texture->color = color; texture->width = scrWidth; texture->height = scrHeight; if (!image) break; #ifdef USE_XINERAMA if (xineInfo.count && ! xineStretch) { int i; for (i = 0; i < xineInfo.count; ++i) { applyImage(rc, texture, image, type[0], xineInfo.screens[i].pos.x, xineInfo.screens[i].pos.y, xineInfo.screens[i].size.width, xineInfo.screens[i].size.height); } } else { applyImage(rc, texture, image, type[0], 0, 0, scrWidth, scrHeight); } #else /* !USE_XINERAMA */ applyImage(rc, texture, image, type[0], 0, 0, scrWidth, scrHeight); #endif /* !USE_XINERAMA */ } break; } if (image) RReleaseImage(image); } else if (strcasecmp(type, "thgradient") == 0 || strcasecmp(type, "tvgradient") == 0 || strcasecmp(type, "tdgradient") == 0) { XColor color; RColor color1, color2; RImage *image; RImage *gradient; RImage *tiled; Pixmap pixmap; int opaq; char *file; RGradientStyle gtype; int twidth, theight; GETSTRORGOTO(val, file, 1, error); GETSTRORGOTO(val, tmp, 2, error); opaq = atoi(tmp); GETSTRORGOTO(val, tmp, 3, error); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); goto error; } color1.red = color.red >> 8; color1.green = color.green >> 8; color1.blue = color.blue >> 8; GETSTRORGOTO(val, tmp, 4, error); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); goto error; } color2.red = color.red >> 8; color2.green = color.green >> 8; color2.blue = color.blue >> 8; image = loadImage(rc, file); if (!image) { goto error; } switch (type[1]) { case 'h': case 'H': gtype = RHorizontalGradient; twidth = scrWidth; theight = image->height > scrHeight ? scrHeight : image->height; break; case 'V': case 'v': gtype = RVerticalGradient; twidth = image->width > scrWidth ? scrWidth : image->width; theight = scrHeight; break; default: gtype = RDiagonalGradient; twidth = scrWidth; theight = scrHeight; break; } gradient = RRenderGradient(twidth, theight, &color1, &color2, gtype); if (!gradient) { wwarning("could not render texture:%s", RMessageForError(RErrorCode)); RReleaseImage(image); goto error; } tiled = RMakeTiledImage(image, twidth, theight); if (!tiled) { wwarning("could not render texture:%s", RMessageForError(RErrorCode)); RReleaseImage(gradient); RReleaseImage(image); goto error; } RReleaseImage(image); RCombineImagesWithOpaqueness(tiled, gradient, opaq); RReleaseImage(gradient); if (!RConvertImage(rc, tiled, &pixmap)) { wwarning("could not convert texture:%s", RMessageForError(RErrorCode)); RReleaseImage(tiled); goto error; } texture->width = tiled->width; texture->height = tiled->height; RReleaseImage(tiled); texture->pixmap = pixmap; } else if (strcasecmp(type, "function") == 0) { /* Leave this in to handle the unlikely case of * someone actually having function textures configured */ wwarning("function texture support has been removed"); goto error; } else { wwarning("invalid texture type %s", text); goto error; } texture->spec = wstrdup(text); return texture; error: if (texture) wfree(texture); if (texarray) WMReleasePropList(texarray); return NULL; } static void freeTexture(BackgroundTexture * texture) { if (texture->solid) { unsigned long pixel[1]; pixel[0] = texture->color.pixel; /* dont free black/white pixels */ if (pixel[0] != BlackPixelOfScreen(DefaultScreenOfDisplay(dpy)) && pixel[0] != WhitePixelOfScreen(DefaultScreenOfDisplay(dpy))) XFreeColors(dpy, DefaultColormap(dpy, scr), pixel, 1, 0); } if (texture->pixmap) { XFreePixmap(dpy, texture->pixmap); } wfree(texture->spec); wfree(texture); } static void setupTexture(RContext * rc, BackgroundTexture ** textures, int *maxTextures, int workspace, char *texture) { BackgroundTexture *newTexture = NULL; int i; /* unset the texture */ if (!texture) { if (textures[workspace] != NULL) { textures[workspace]->refcount--; if (textures[workspace]->refcount == 0) freeTexture(textures[workspace]); } textures[workspace] = NULL; return; } if (textures[workspace] && strcasecmp(textures[workspace]->spec, texture) == 0) { /* texture did not change */ return; } /* check if the same texture is already created */ for (i = 0; i < *maxTextures; i++) { if (textures[i] && strcasecmp(textures[i]->spec, texture) == 0) { newTexture = textures[i]; break; } } if (!newTexture) { /* create the texture */ newTexture = parseTexture(rc, texture); } if (!newTexture) return; if (textures[workspace] != NULL) { textures[workspace]->refcount--; if (textures[workspace]->refcount == 0) freeTexture(textures[workspace]); } newTexture->refcount++; textures[workspace] = newTexture; if (*maxTextures < workspace) *maxTextures = workspace; } static Pixmap duplicatePixmap(Pixmap pixmap, int width, int height) { Display *tmpDpy; Pixmap copyP; /* must open a new display or the RetainPermanent will * leave stuff allocated in RContext unallocated after exit */ tmpDpy = XOpenDisplay(display); if (!tmpDpy) { wwarning("could not open display to update background image information"); return None; } else { XSync(dpy, False); copyP = XCreatePixmap(tmpDpy, root, width, height, DefaultDepth(tmpDpy, scr)); XCopyArea(tmpDpy, pixmap, copyP, DefaultGC(tmpDpy, scr), 0, 0, width, height, 0, 0); XSync(tmpDpy, False); XSetCloseDownMode(tmpDpy, RetainPermanent); XCloseDisplay(tmpDpy); } return copyP; } static int dummyErrorHandler(Display * dpy, XErrorEvent * err) { /* Parameter not used, but tell the compiler that it is ok */ (void) dpy; (void) err; return 0; } static void setPixmapProperty(Pixmap pixmap) { static Atom prop = 0; Atom type; int format; unsigned long length, after; unsigned char *data; int mode; if (!prop) { prop = XInternAtom(dpy, "_XROOTPMAP_ID", False); } XGrabServer(dpy); /* Clear out the old pixmap */ XGetWindowProperty(dpy, root, prop, 0L, 1L, False, AnyPropertyType, &type, &format, &length, &after, &data); if ((type == XA_PIXMAP) && (format == 32) && (length == 1)) { XSetErrorHandler(dummyErrorHandler); XKillClient(dpy, *((Pixmap *) data)); XSync(dpy, False); XSetErrorHandler(NULL); mode = PropModeReplace; } else { mode = PropModeAppend; } if (pixmap) XChangeProperty(dpy, root, prop, XA_PIXMAP, 32, mode, (unsigned char *)&pixmap, 1); else XDeleteProperty(dpy, root, prop); XUngrabServer(dpy); XFlush(dpy); } static void changeTexture(BackgroundTexture * texture) { if (!texture) { return; } if (texture->solid) { XSetWindowBackground(dpy, root, texture->color.pixel); } else { XSetWindowBackgroundPixmap(dpy, root, texture->pixmap); } XClearWindow(dpy, root); XSync(dpy, False); { Pixmap pixmap; pixmap = duplicatePixmap(texture->pixmap, texture->width, texture->height); setPixmapProperty(pixmap); } } static int readmsg(int fd, char *buffer, int size) { int count; while (size > 0) { count = read(fd, buffer, size); if (count < 0) return -1; size -= count; buffer += count; *buffer = 0; } return size; } /* * Message Format: * sizeSntexture_spec - sets the texture for workspace n * sizeCn - change background texture to the one for workspace n * sizePpath - set the pixmap search path * * n is 4 bytes * size = 4 bytes for length of the message data */ static noreturn void helperLoop(RContext * rc) { BackgroundTexture *textures[WORKSPACE_COUNT]; int maxTextures = 0; char buffer[2048], buf[8]; int size; int errcount = 4; memset(textures, 0, WORKSPACE_COUNT * sizeof(BackgroundTexture *)); while (1) { int workspace = -1; /* get length of message */ if (readmsg(0, buffer, 4) < 0) { werror("error reading message from Window Maker"); errcount--; if (errcount == 0) { wfatal("quitting"); quit(1); } continue; } memcpy(buf, buffer, 4); buf[4] = 0; size = atoi(buf); if (size < 0 || size > sizeof(buffer)) { wfatal("received invalid size %d for message from WindowMaker", size); quit(1); } if (size == 0) { werror("received 0-sized message from WindowMaker, trying to continue"); continue; } /* get message */ if (readmsg(0, buffer, size) < 0) { werror("error reading message from Window Maker"); errcount--; if (errcount == 0) { wfatal("quitting"); quit(1); } continue; } #ifdef DEBUG printf("RECEIVED %s\n", buffer); #endif if (buffer[0] != 'P' && buffer[0] != 'K') { memcpy(buf, &buffer[1], 4); buf[4] = 0; workspace = atoi(buf); if (workspace < 0 || workspace >= WORKSPACE_COUNT) { wwarning("received message with invalid workspace number %i", workspace); continue; } } switch (buffer[0]) { case 'S': #ifdef DEBUG printf("set texture %s\n", &buffer[5]); #endif setupTexture(rc, textures, &maxTextures, workspace, &buffer[5]); break; case 'C': #ifdef DEBUG printf("change texture %i\n", workspace); #endif if (!textures[workspace]) { changeTexture(textures[0]); } else { changeTexture(textures[workspace]); } break; case 'P': #ifdef DEBUG printf("change pixmappath %s\n", &buffer[1]); #endif if (PixmapPath) wfree(PixmapPath); PixmapPath = wstrdup(&buffer[1]); break; case 'U': #ifdef DEBUG printf("unset workspace %i\n", workspace); #endif setupTexture(rc, textures, &maxTextures, workspace, NULL); break; case 'K': #ifdef DEBUG printf("exit command\n"); #endif quit(0); default: wwarning("unknown message received"); break; } } } static void updateDomain(const char *domain, const char *key, const char *texture) { int result; char *program = "wdwrite"; char cmd_smooth[1024]; snprintf(cmd_smooth, sizeof(cmd_smooth), "wdwrite %s SmoothWorkspaceBack %s", domain, smooth ? "YES" : "NO"); result = system(cmd_smooth); if (result == -1) werror("error executing system(\"%s\")", cmd_smooth); execlp(program, program, domain, key, texture, NULL); wwarning("warning could not run \"%s\"", program); } static WMPropList *getValueForKey(const char *domain, const char *keyName) { char *path; WMPropList *key, *val, *d; key = WMCreatePLString(keyName); /* try to find PixmapPath in user defaults */ path = wdefaultspathfordomain(domain); d = WMReadPropListFromFile(path); if (!d) { wwarning("could not open domain file %s", path); } wfree(path); if (d && !WMIsPLDictionary(d)) { WMReleasePropList(d); d = NULL; } if (d) { val = WMGetFromPLDictionary(d, key); } else { val = NULL; } /* try to find PixmapPath in global defaults */ if (!val) { path = wglobaldefaultspathfordomain(domain); if (!path) { wwarning("could not locate file for domain %s", domain); d = NULL; } else { d = WMReadPropListFromFile(path); wfree(path); } if (d && !WMIsPLDictionary(d)) { WMReleasePropList(d); d = NULL; } if (d) { val = WMGetFromPLDictionary(d, key); } else { val = NULL; } } if (val) WMRetainPropList(val); WMReleasePropList(key); if (d) WMReleasePropList(d); return val; } static char *getPixmapPath(const char *domain) { WMPropList *val; char *ptr, *data; int len, i, count; val = getValueForKey(domain, "PixmapPath"); if (!val || !WMIsPLArray(val)) { if (val) WMReleasePropList(val); return wstrdup(""); } count = WMGetPropListItemCount(val); len = 0; for (i = 0; i < count; i++) { WMPropList *v; v = WMGetFromPLArray(val, i); if (!v || !WMIsPLString(v)) { continue; } len += strlen(WMGetFromPLString(v)) + 1; } ptr = data = wmalloc(len + 1); *ptr = 0; for (i = 0; i < count; i++) { WMPropList *v; v = WMGetFromPLArray(val, i); if (!v || !WMIsPLString(v)) { continue; } strcpy(ptr, WMGetFromPLString(v)); ptr += strlen(WMGetFromPLString(v)); *ptr = ':'; ptr++; } if (i > 0) ptr--; *(ptr--) = 0; WMReleasePropList(val); return data; } static char *getFullPixmapPath(const char *file) { char *tmp; if (!PixmapPath || !(tmp = wfindfile(PixmapPath, file))) { int bsize = 512; char *path = wmalloc(bsize); while (!getcwd(path, bsize)) { bsize += bsize / 2; path = wrealloc(path, bsize); } tmp = wstrconcat(path, "/"); wfree(path); path = wstrconcat(tmp, file); wfree(tmp); return path; } /* the file is in the PixmapPath */ wfree(tmp); return wstrdup(file); } static void print_help(void) { printf("Usage: %s [options] [image]\n", prog_name); puts("Sets the workspace background to the specified image or a texture and"); puts("optionally update Window Maker configuration"); puts(""); puts(" -display display to use"); puts(" -d, --dither dither image"); puts(" -m, --match match colors"); puts(" -S, --smooth smooth scaled image"); #ifdef USE_XINERAMA puts(" -X, --xinerama stretch image across Xinerama heads"); #endif puts(" -b, --back-color background color"); puts(" -t, --tile tile image"); puts(" -e, --center center image"); puts(" -s, --scale scale image (default)"); puts(" -a, --maxscale scale image and keep aspect ratio"); puts(" -f, --fillscale scale image to fill screen and keep aspect ratio"); puts(" -u, --update-wmaker update WindowMaker domain database"); puts(" -D, --update-domain update database"); puts(" -c, --colors colors per channel to use"); puts(" -p, --parse proplist style texture specification"); puts(" -w, --workspace update background for the specified workspace"); puts(" -v, --version show version of wmsetbg and exit"); puts(" -h, --help show this help and exit"); } static void changeTextureForWorkspace(const char *domain, char *texture, int workspace) { WMPropList *array, *val; char *value; int j; val = WMCreatePropListFromDescription(texture); if (!val) { wwarning("could not parse texture %s", texture); return; } array = getValueForKey("WindowMaker", "WorkspaceSpecificBack"); if (!array) { array = WMCreatePLArray(NULL, NULL); } j = WMGetPropListItemCount(array); if (workspace >= j) { WMPropList *empty; empty = WMCreatePLArray(NULL, NULL); while (j++ < workspace - 1) { WMAddToPLArray(array, empty); } WMAddToPLArray(array, val); WMReleasePropList(empty); } else { WMDeleteFromPLArray(array, workspace); WMInsertInPLArray(array, workspace, val); } value = WMGetPropListDescription(array, False); updateDomain(domain, "WorkspaceSpecificBack", value); WMReleasePropList(array); } int main(int argc, char **argv) { int i; int helperMode = 0; RContext *rc; RContextAttributes rattr; char *style = "spixmap"; char *back_color = "gray20"; char *image_name = NULL; char *domain = "WindowMaker"; int update = 0, cpc = 4, obey_user = 0; RRenderingMode render_mode = RDitheredRendering; char *texture = NULL; int workspace = -1; signal(SIGINT, SIG_DFL); signal(SIGTERM, SIG_DFL); signal(SIGQUIT, SIG_DFL); signal(SIGSEGV, SIG_DFL); signal(SIGBUS, SIG_DFL); signal(SIGFPE, SIG_DFL); signal(SIGABRT, SIG_DFL); signal(SIGHUP, SIG_DFL); signal(SIGPIPE, SIG_DFL); signal(SIGCHLD, SIG_DFL); WMInitializeApplication("wmsetbg", &argc, argv); prog_name = argv[0]; for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-helper") == 0) { helperMode = 1; } else if (strcmp(argv[i], "-display") == 0) { i++; if (i >= argc) { wfatal("too few arguments for %s", argv[i - 1]); quit(1); } display = argv[i]; } else if (strcmp(argv[i], "-s") == 0 || strcmp(argv[i], "--scale") == 0) { style = "spixmap"; } else if (strcmp(argv[i], "-t") == 0 || strcmp(argv[i], "--tile") == 0) { style = "tpixmap"; } else if (strcmp(argv[i], "-e") == 0 || strcmp(argv[i], "--center") == 0) { style = "cpixmap"; } else if (strcmp(argv[i], "-a") == 0 || strcmp(argv[i], "--maxscale") == 0) { style = "mpixmap"; } else if (strcmp(argv[i], "-f") == 0 || strcmp(argv[i], "--fillscale") == 0) { style = "fpixmap"; } else if (strcmp(argv[i], "-d") == 0 || strcmp(argv[i], "--dither") == 0) { render_mode = RDitheredRendering; obey_user++; } else if (strcmp(argv[i], "-m") == 0 || strcmp(argv[i], "--match") == 0) { render_mode = RBestMatchRendering; obey_user++; } else if (strcmp(argv[i], "-S") == 0 || strcmp(argv[i], "--smooth") == 0) { smooth = True; #ifdef USE_XINERAMA } else if (strcmp(argv[i], "-X") == 0 || strcmp(argv[i], "--xinerama") == 0) { xineStretch = True; #endif } else if (strcmp(argv[i], "-u") == 0 || strcmp(argv[i], "--update-wmaker") == 0) { update++; } else if (strcmp(argv[i], "-D") == 0 || strcmp(argv[i], "--update-domain") == 0) { update++; i++; if (i >= argc) { wfatal("too few arguments for %s", argv[i - 1]); quit(1); } domain = wstrdup(argv[i]); } else if (strcmp(argv[i], "-c") == 0 || strcmp(argv[i], "--colors") == 0) { i++; if (i >= argc) { wfatal("too few arguments for %s", argv[i - 1]); quit(1); } if (sscanf(argv[i], "%i", &cpc) != 1) { wfatal("bad value for colors per channel: \"%s\"", argv[i]); quit(1); } } else if (strcmp(argv[i], "-b") == 0 || strcmp(argv[i], "--back-color") == 0) { i++; if (i >= argc) { wfatal("too few arguments for %s", argv[i - 1]); quit(1); } back_color = argv[i]; } else if (strcmp(argv[i], "-p") == 0 || strcmp(argv[i], "--parse") == 0) { i++; if (i >= argc) { wfatal("too few arguments for %s", argv[i - 1]); quit(1); } texture = argv[i]; } else if (strcmp(argv[i], "-w") == 0 || strcmp(argv[i], "--workspace") == 0) { i++; if (i >= argc) { wfatal("too few arguments for %s", argv[i - 1]); quit(1); } if (sscanf(argv[i], "%i", &workspace) != 1) { wfatal("bad value for workspace number: \"%s\"", argv[i]); quit(1); } } else if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--version") == 0) { printf("%s (Window Maker %s)\n", prog_name, VERSION); quit(0); } else if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0) { print_help(); quit(0); } else if (argv[i][0] != '-') { image_name = argv[i]; } else { printf("%s: invalid argument '%s'\n", prog_name, argv[i]); printf("Try '%s --help' for more information\n", prog_name); quit(1); } } if (!image_name && !texture && !helperMode) { printf("%s: you must specify a image file name or a texture\n", prog_name); printf("Try '%s --help' for more information\n", prog_name); quit(1); } PixmapPath = getPixmapPath(domain); if (!smooth) { WMPropList *val; /* carlos, don't remove this */ #if 0 /* some problem with Alpha... TODO: check if its right */ val = WMGetFromPLDictionary(domain, WMCreatePLString("SmoothWorkspaceBack")); #else val = getValueForKey(domain, "SmoothWorkspaceBack"); #endif if (val && WMIsPLString(val) && strcasecmp(WMGetFromPLString(val), "YES") == 0) smooth = True; } dpy = XOpenDisplay(display); if (!dpy) { wfatal("could not open display"); quit(1); } #if 0 XSynchronize(dpy, 1); #endif root = DefaultRootWindow(dpy); scr = DefaultScreen(dpy); scrWidth = WidthOfScreen(DefaultScreenOfDisplay(dpy)); scrHeight = HeightOfScreen(DefaultScreenOfDisplay(dpy)); scrX = scrY = 0; initXinerama(); if (!obey_user && DefaultDepth(dpy, scr) <= 8) render_mode = RDitheredRendering; rattr.flags = RC_RenderMode | RC_ColorsPerChannel | RC_StandardColormap | RC_DefaultVisual; rattr.render_mode = render_mode; rattr.colors_per_channel = cpc; rattr.standard_colormap_mode = RCreateStdColormap; rc = RCreateContext(dpy, scr, &rattr); if (!rc) { rattr.standard_colormap_mode = RIgnoreStdColormap; rc = RCreateContext(dpy, scr, &rattr); } if (!rc) { wfatal("could not initialize wrlib: %s", RMessageForError(RErrorCode)); quit(1); } if (helperMode) { int result; /* lower priority, so that it wont use all the CPU */ result = nice(15); if (result == -1) wwarning("error could not nice process"); helperLoop(rc); } else { BackgroundTexture *tex; char buffer[4098]; if (!texture) { char *image_path = getFullPixmapPath(image_name); snprintf(buffer, sizeof(buffer), "(%s, \"%s\", %s)", style, image_path, back_color); wfree(image_path); texture = (char *)buffer; } if (update && workspace < 0) { updateDomain(domain, "WorkspaceBack", texture); } tex = parseTexture(rc, texture); if (!tex) quit(1); if (workspace < 0) changeTexture(tex); else { /* always update domain */ changeTextureForWorkspace(domain, texture, workspace); } } WMReleaseApplication(); return 0; } WindowMaker-0.95.8/util/Makefile.am0000664000175000017500000000443012651057551014010 00000000000000SUBDIRS = po AUTOMAKE_OPTIONS = pkgdatadir = $(datadir)/@PACKAGE@ bin_PROGRAMS = wxcopy wxpaste wdwrite wdread getstyle setstyle convertfonts \ seticons geticonset wmsetbg wmagnify wmgenmenu wmmenugen wmiv bin_SCRIPTS = wmaker.inst wm-oldmenu2new wkdemenu.pl EXTRA_DIST = wmaker.inst.in bughint wm-oldmenu2new wkdemenu.pl AM_CPPFLAGS = \ $(DFLAGS) -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib \ @HEADER_SEARCH_PATH@ \ -DETCDIR=\"sysconfdir\" -DDATADIR=\"pkgdatadir\" liblist= @LIBRARY_SEARCH_PATH@ @INTLIBS@ wdwrite_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) wdread_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) wxcopy_LDADD = @XLFLAGS@ @XLIBS@ wxpaste_LDADD = @XLFLAGS@ @XLIBS@ getstyle_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) getstyle_SOURCES = getstyle.c fontconv.c common.h setstyle_LDADD = \ $(top_builddir)/WINGs/libWUtil.la \ @XLFLAGS@ @XLIBS@ $(liblist) setstyle_SOURCES = setstyle.c fontconv.c common.h convertfonts_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) convertfonts_SOURCES = convertfonts.c fontconv.c common.h seticons_LDADD= $(top_builddir)/WINGs/libWUtil.la $(liblist) geticonset_LDADD= $(top_builddir)/WINGs/libWUtil.la $(liblist) wmagnify_LDADD = \ $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @XLIBS@ @INTLIBS@ wmsetbg_LDADD = \ $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @LIBXINERAMA@ @XLIBS@ @INTLIBS@ wmgenmenu_LDADD = \ $(top_builddir)/WINGs/libWUtil.la \ @INTLIBS@ wmgenmenu_SOURCES = wmgenmenu.c wmgenmenu.h wmmenugen_LDADD = \ $(top_builddir)/WINGs/libWUtil.la \ @INTLIBS@ wmmenugen_SOURCES = wmmenugen.c wmmenugen.h wmmenugen_misc.c \ wmmenugen_parse_wmconfig.c \ wmmenugen_parse_xdg.c wmiv_LDADD = \ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @XLIBS@ \ @GFXLIBS@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) $(LIBEXIF) wmiv_SOURCES = wmiv.c wmiv.h CLEANFILES = wmaker.inst wmaker.inst: $(srcdir)/wmaker.inst.in ./Makefile $(AM_V_GEN)sed -e "s|#pkgdatadir#|$(pkgdatadir)|" \ -e "s|#sysconfdir#|$(sysconfdir)/WindowMaker|" \ -e "s|#version#|$(VERSION)|" \ -e "s|#bindir#|$(bindir)|" \ $(srcdir)/wmaker.inst.in >wmaker.inst ; \ chmod 755 wmaker.inst WindowMaker-0.95.8/util/wmgenmenu.c0000664000175000017500000003311313014066244014113 00000000000000/* Copyright (C) 2010 Carlos R. Mafra */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif #include "config.h" #include #include #include #include #include #include #include #ifdef HAVE_STDNORETURN #include #endif #include #include "../src/wconfig.h" #define MAX_NR_APPS 128 /* Maximum number of entries in each apps list */ #define MAX_WMS 10 /* Maximum number of other window managers to check */ #include "wmgenmenu.h" static void find_and_write(const char *group, char *list[][2], int this_is_terminals); static void other_window_managers(void); static void print_help(int print_usage, int exitval); static const char *prog_name; char *path, *terminal = NULL; WMPropList *RMenu, *L1Menu, *L2Menu, *L3Menu, *L4Menu; int main(int argc, char *argv[]) { char *t; int ch; char *tmp, *theme_paths, *style_paths, *icon_paths; tmp = wstrconcat("-noext ", PKGDATADIR); theme_paths = wstrconcat(tmp, "/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"); style_paths = wstrconcat(tmp, "/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle"); icon_paths = wstrconcat(tmp, "/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons"); struct option longopts[] = { { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "hv", longopts, NULL)) != -1) switch (ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ default: print_help(0, 1); /* NOTREACHED */ } argc -= optind; argv += optind; if (argc != 0) print_help(0, 1); path = getenv("PATH"); setlocale(LC_ALL, ""); #if defined(HAVE_LIBINTL_H) && defined(I18N) if (getenv("NLSPATH")) bindtextdomain("wmgenmenu", getenv("NLSPATH")); else bindtextdomain("wmgenmenu", LOCALEDIR); bind_textdomain_codeset("wmgenmenu", "UTF-8"); textdomain("wmgenmenu"); #endif /* * The menu generated is a five-level hierarchy, of which the * top level (RMenu) is only used to hold the others (a single * PLString, which will be the title of the root menu) * * RMenu Window Maker * L1Menu Applications * L2Menu Terminals * L3Menu XTerm * L3Menu RXVT * L2Menu Internet * L3Menu Firefox * L2Menu E-mail * L1Menu Appearance * L2Menu Themes * L2Menu Background * L3Menu Solid * L4Menu Indigo * L1Menu Configure Window Maker * */ /* Root */ RMenu = WMCreatePLArray(WMCreatePLString("Window Maker"), NULL); /* Root -> Applications */ L1Menu = WMCreatePLArray(WMCreatePLString(_("Applications")), NULL); /* Root -> Applications -> */ find_and_write(_("Terminals"), Terminals, 1); /* always keep terminals the top item */ find_and_write(_("Internet"), Internet, 0); find_and_write(_("Email"), Email, 0); find_and_write(_("Mathematics"), Mathematics, 0); find_and_write(_("File Managers"), File_managers, 0); find_and_write(_("Graphics"), Graphics, 0); find_and_write(_("Multimedia"), Multimedia, 0); find_and_write(_("Editors"), Editors, 0); find_and_write(_("Development"), Development, 0); find_and_write("Window Maker", WindowMaker, 0); find_and_write(_("Office"), Office, 0); find_and_write(_("Astronomy"), Astronomy, 0); find_and_write(_("Sound"), Sound, 0); find_and_write(_("Comics"), Comics, 0); find_and_write(_("Viewers"), Viewers, 0); find_and_write(_("Utilities"), Utilities, 0); find_and_write(_("System"), System, 0); find_and_write(_("Video"), Video, 0); find_and_write(_("Chat and Talk"), Chat, 0); find_and_write(_("P2P Network"), P2P, 0); find_and_write(_("Games"), Games, 0); find_and_write("OpenSUSE", OpenSUSE, 0); find_and_write("Mandriva", Mandriva, 0); WMAddToPLArray(RMenu, L1Menu); /* Root -> `Run' dialog */ L1Menu = WMCreatePLArray( WMCreatePLString(_("Run...")), WMCreatePLString("SHEXEC"), WMCreatePLString(_("%A(Run, Type command:)")), NULL ); WMAddToPLArray(RMenu, L1Menu); /* Root -> Appearance */ L1Menu = WMCreatePLArray(WMCreatePLString(_("Appearance")), NULL); /* Root -> Appearance -> Themes */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Themes")), WMCreatePLString("OPEN_MENU"), WMCreatePLString(theme_paths), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Appearance -> Styles */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Styles")), WMCreatePLString("OPEN_MENU"), WMCreatePLString(style_paths), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Appearance -> Icon Sets */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Icon Sets")), WMCreatePLString("OPEN_MENU"), WMCreatePLString(icon_paths), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Appearance -> Background */ L2Menu = WMCreatePLArray(WMCreatePLString(_("Background")), NULL); /* Root -> Appearance -> Background -> Solid */ L3Menu = WMCreatePLArray(WMCreatePLString(_("Solid")), NULL); #define SOLID_BACK(label, colorspec) \ L4Menu = WMCreatePLArray( \ WMCreatePLString(label), \ WMCreatePLString("EXEC"), \ WMCreatePLString("wdwrite WindowMaker WorkspaceBack '(solid, \"" colorspec "\")'"), \ NULL \ ); \ WMAddToPLArray(L3Menu, L4Menu) /* Root -> Appearance -> Background -> Solid -> */ SOLID_BACK(_("Black"), "black"); SOLID_BACK(_("Blue"), "#505075"); SOLID_BACK(_("Indigo"), "#243e6c"); SOLID_BACK(_("Bluemarine"), "#243e6c"); SOLID_BACK(_("Purple"), "#554466"); SOLID_BACK(_("Wheat"), "wheat4"); SOLID_BACK(_("Dark Gray"), "#333340"); SOLID_BACK(_("Wine"), "#400020"); #undef SOLID_BACK WMAddToPLArray(L2Menu, L3Menu); /* Root -> Appearance -> Background -> Gradient */ L3Menu = WMCreatePLArray(WMCreatePLString(_("Gradient")), NULL); #define GRADIENT_BACK(label, fcolorspec, tcolorspec) \ L4Menu = WMCreatePLArray( \ WMCreatePLString(label), \ WMCreatePLString("EXEC"), \ WMCreatePLString("wdwrite WindowMaker WorkspaceBack '(vgradient, \"" \ fcolorspec "\", \"" tcolorspec "\"'"), \ NULL \ ); \ WMAddToPLArray(L3Menu, L4Menu) /* Root -> Appearance -> Background -> Gradient -> */ L4Menu = WMCreatePLArray( WMCreatePLString(_("Sunset")), WMCreatePLString("EXEC"), WMCreatePLString("wdwrite WindowMaker WorkspaceBack " "'(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'"), NULL ); WMAddToPLArray(L3Menu, L4Menu); GRADIENT_BACK(_("Sky"), "blue4", "white"); GRADIENT_BACK(_("Blue Shades"), "#7080a5", "#101020"); GRADIENT_BACK(_("Indigo Shades"), "#746ebc", "#242e4c"); GRADIENT_BACK(_("Purple Shades"), "#654c66", "#151426"); GRADIENT_BACK(_("Wheat Shades"), "#a09060", "#302010"); GRADIENT_BACK(_("Grey Shades"), "#636380", "#131318"); GRADIENT_BACK(_("Wine Shades"), "#600040", "#180010"); #undef GRADIENT_BACK WMAddToPLArray(L2Menu, L3Menu); /* Root -> Appearance -> Background -> Images */ L3Menu = WMCreatePLArray( WMCreatePLString(_("Images")), WMCreatePLString("OPEN_MENU"), WMCreatePLString("-noext $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t"), NULL ); WMAddToPLArray(L2Menu, L3Menu); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Appearance -> Save Theme */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Save Theme")), WMCreatePLString("SHEXEC"), WMCreatePLString("getstyle -p \"%a(Theme name, Name to save theme as)\""), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Appearance -> Save IconSet */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Save IconSet")), WMCreatePLString("SHEXEC"), WMCreatePLString("geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/" "\"%a(IconSet name,Name to save icon set as)\""), NULL ); WMAddToPLArray(L1Menu, L2Menu); WMAddToPLArray(RMenu, L1Menu); /* Root -> Workspaces */ L1Menu = WMCreatePLArray( WMCreatePLString(_("Workspaces")), WMCreatePLString("WORKSPACE_MENU"), NULL ); WMAddToPLArray(RMenu, L1Menu); /* Root -> Workspace */ L1Menu = WMCreatePLArray(WMCreatePLString(_("Workspace")), NULL); L2Menu = WMCreatePLArray( WMCreatePLString(_("Hide Others")), WMCreatePLString("HIDE_OTHERS"), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Workspace -> Show All */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Show All")), WMCreatePLString("SHOW_ALL"), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Workspace -> Arrange Icons */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Arrange Icons")), WMCreatePLString("ARRANGE_ICONS"), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Workspace -> Refresh */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Refresh")), WMCreatePLString("REFRESH"), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Workspace -> Save Session */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Save Session")), WMCreatePLString("SAVE_SESSION"), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Workspace -> Clear Session */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Clear Session")), WMCreatePLString("CLEAR_SESSION"), NULL ); WMAddToPLArray(L1Menu, L2Menu); WMAddToPLArray(RMenu, L1Menu); /* Root -> Configure Window Maker */ L1Menu = WMCreatePLArray( WMCreatePLString(_("Configure Window Maker")), WMCreatePLString("EXEC"), WMCreatePLString("WPrefs"), NULL ); WMAddToPLArray(RMenu, L1Menu); /* Root -> Info Panel */ L1Menu = WMCreatePLArray( WMCreatePLString(_("Info Panel")), WMCreatePLString("INFO_PANEL"), NULL ); WMAddToPLArray(RMenu, L1Menu); /* Root -> Restart Window Maker */ L1Menu = WMCreatePLArray( WMCreatePLString(_("Restart Window Maker")), WMCreatePLString("RESTART"), NULL ); WMAddToPLArray(RMenu, L1Menu); /* Root -> Other Window Managers [-> ...] */ other_window_managers(); /* Root -> Lock Screen */ t = wfindfile(path, "xlock"); if (t) { L1Menu = WMCreatePLArray( WMCreatePLString(_("Lock Screen")), WMCreatePLString("EXEC"), WMCreatePLString("xlock -allowroot -usefirst -mode matrix"), NULL ); WMAddToPLArray(RMenu, L1Menu); wfree(t); } /* Root -> Exit Window Maker */ L1Menu = WMCreatePLArray( WMCreatePLString(_("Exit Window Maker")), WMCreatePLString("EXIT"), NULL ); WMAddToPLArray(RMenu, L1Menu); printf("%s", WMGetPropListDescription(RMenu, True)); puts(""); return 0; } /* * Creates an L2Menu made of L3Menu items * Attaches to L1Menu * - make sure previous menus of these levels are * attached to their parent before calling */ static void find_and_write(const char *group, char *list[][2], int this_is_terminals) { int i, argc; char *t, **argv, buf[PATH_MAX]; /* or else pre-existing menus of these levels * will badly disturb empty group detection */ L2Menu = NULL; L3Menu = NULL; i = 0; while (list[i][0]) { /* Before checking if app exists, split its options */ wtokensplit(list[i][1], &argv, &argc); t = wfindfile(path, argv[0]); if (t) { /* find a terminal to be used for cmnds that need a terminal */ if (this_is_terminals && !terminal) terminal = wstrdup(list[i][1]); if (*(argv[argc-1]) != '!') { L3Menu = WMCreatePLArray( WMCreatePLString(_(list[i][0])), WMCreatePLString("EXEC"), WMCreatePLString(list[i][1]), NULL ); } else { char comm[PATH_MAX], *ptr; strncpy(comm, list[i][1], sizeof(comm) - 1); comm[sizeof(comm) - 1] = '\0'; /* delete character " !" from the command */ ptr = strchr(comm, '!'); if (ptr != NULL) { while (ptr > comm) { if (!isspace(ptr[-1])) break; ptr--; } *ptr = '\0'; } snprintf(buf, sizeof(buf), "%s -e %s", terminal ? terminal : "xterm" , comm); /* Root -> Applications -> -> */ L3Menu = WMCreatePLArray( WMCreatePLString(_(list[i][0])), WMCreatePLString("EXEC"), WMCreatePLString(buf), NULL ); } if (!L2Menu) L2Menu = WMCreatePLArray( WMCreatePLString(group), NULL ); WMAddToPLArray(L2Menu, L3Menu); wfree(t); } i++; } if (L2Menu) WMAddToPLArray(L1Menu, L2Menu); } /* * Creates an L1Menu made of L2Menu items * - make sure previous menus of these levels are * attached to their parent before calling * Attaches to RMenu */ static void other_window_managers(void) { int i; char *t, buf[PATH_MAX]; /* or else pre-existing menus of these levels * will badly disturb empty group detection */ L1Menu = NULL; L2Menu = NULL; i = 0; while (other_wm[i][0]) { t = wfindfile(path, other_wm[i][1]); if (t) { snprintf(buf, sizeof(buf), _("Start %s"), _(other_wm[i][0])); /* Root -> Other Window Managers -> */ L2Menu = WMCreatePLArray( WMCreatePLString(buf), WMCreatePLString("RESTART"), WMCreatePLString(other_wm[i][1]), NULL ); if (!L1Menu) L1Menu = WMCreatePLArray( WMCreatePLString(_("Other Window Managers")), NULL ); WMAddToPLArray(L1Menu, L2Menu); wfree(t); } i++; } if (L1Menu) WMAddToPLArray(RMenu, L1Menu); } noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [-h] [-v]\n", prog_name); if (print_usage) { puts("Writes a menu structure usable as ~/GNUstep/Defaults/WMRootMenu to stdout"); puts(""); puts(" -h, --help display this help and exit"); puts(" -v, --version output version information and exit"); } exit(exitval); } WindowMaker-0.95.8/util/convertfonts.c0000664000175000017500000001017112651060407014643 00000000000000/* convertfonts.c - converts fonts in a style file to fontconfig format * * WindowMaker window manager * * Copyright (c) 2004 Dan Pascu * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif #include "config.h" #include #include #include #include #include #include #ifdef HAVE_STDNORETURN #include #endif #include #include "../src/wconfig.h" #include "common.h" char *FontOptions[] = { "IconTitleFont", "ClipTitleFont", "LargeDisplayFont", "MenuTextFont", "MenuTitleFont", "WindowTitleFont", "SystemFont", "BoldSystemFont", NULL }; static const char *prog_name; static noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [-h] [-v] [--keep-xlfd] \n", prog_name); if (print_usage) { puts("Converts fonts in a style file into fontconfig format"); puts(""); puts(" -h, --help display this help and exit"); puts(" -v, --version output version information and exit"); puts(" --keep-xlfd preserve the original xlfd by appending a ':xlfd=' hint"); puts(" to the font name. This property is not used by the fontconfig"); puts(" matching engine to find the font, but it is useful as a hint"); puts(" about what the original font was to allow hand tuning the"); puts(" result or restoring the xlfd. The default is to not add it"); puts(" as it results in long, unreadable and confusing names."); } exit(exitval); } int main(int argc, char **argv) { WMPropList *style, *key, *val; char *file = NULL, *oldfont, *newfont; struct stat st; Bool keepXLFD = False; int i, ch; struct option longopts[] = { { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { "keep-xlfd", no_argument, &keepXLFD, True }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "hv", longopts, NULL)) != -1) switch(ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ case 0: break; default: print_help(0, 1); /* NOTREACHED */ } argc -= optind; argv += optind; if (argc != 1) print_help(0, 1); file = argv[0]; if (stat(file, &st) != 0) { perror(file); return 1; } if (!S_ISREG(st.st_mode)) { /* maybe symlink too? */ fprintf(stderr, "%s: `%s' is not a regular file\n", prog_name, file); return 1; } /* we need this in order for MB_CUR_MAX to work */ /* this contradicts big time with getstyle */ setlocale(LC_ALL, ""); WMPLSetCaseSensitive(False); style = WMReadPropListFromFile(file); if (!style) { perror(file); printf("%s: could not load style file\n", prog_name); return 1; } if (!WMIsPLDictionary(style)) { printf("%s: '%s' is not a well formatted style file\n", prog_name, file); return 1; } for (i = 0; FontOptions[i] != NULL; i++) { key = WMCreatePLString(FontOptions[i]); val = WMGetFromPLDictionary(style, key); if (val) { oldfont = WMGetFromPLString(val); newfont = convertFont(oldfont, keepXLFD); if (oldfont != newfont) { val = WMCreatePLString(newfont); WMPutInPLDictionary(style, key, val); WMReleasePropList(val); wfree(newfont); } } WMReleasePropList(key); } WMWritePropListToFile(style, file); return 0; } WindowMaker-0.95.8/util/wmmenugen_misc.c0000664000175000017500000001014512650014300015115 00000000000000/* * wmmenugen - Window Maker PropList menu generator * * miscellaneous functions * * Copyright (c) 2010. Tamas Tevesz * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include #include static const char *const terminals[] = { "x-terminal-emulator", /* Debian wrapper to launch user's prefered X terminal */ "aterm", /* AfterStep's X terminal, which provides "transparency" */ "eterm", /* Enlightenment's terminal, designed for eye-candyness (and efficiency) */ "gnome-terminal", /* GNOME project's terminal */ "konsole", /* KDE project's terminals */ "kterm", /* a Multi-Lingual Terminal based on xterm, originally by Katsuya Sano */ "mlterm", /* a Multi-Lingual Terminal emulator written from scratch */ "rxvt", /* a slimmed-down xterm */ "mrxvt", /* rxvt with support for tabs amongst other things */ "pterm", /* terminal based on PuTTY, a popular SSH client for Windows */ "xterm", /* the standard terminal provided by the X Window System */ "dtterm" /* provided by CDE, a frequent Desktop Environment in proprietary UNIXs */ }; /* pick a terminal emulator by finding the first existing entry of `terminals' * in $PATH. the returned pointer should be wfreed later. * if $WMMENU_TERMINAL exists in the environment, it's value overrides this * detection. */ char *find_terminal_emulator(void) { char *path, *t; int i; t = getenv("WMMENU_TERMINAL"); if (t) return wstrdup(t); path = getenv("PATH"); if (!path) return NULL; for (i = 0; i < wlengthof(terminals); i++) { t = wfindfile(path, terminals[i]); if (t) { wfree(t); return wstrdup(terminals[i]); } } return NULL; } /* tokenize `what' (LC_MESSAGES or LANG if `what' is NULL) in the form of * `language[_territory][.codeset][@modifier]' into separate language, country, * encoding, modifier components, which are allocated on demand and should be * wfreed later. components that do not exist in `what' are set to NULL. */ void parse_locale(const char *what, char **language, char **country, char **encoding, char **modifier) { char *e, *p; *language = *country = *encoding = *modifier = NULL; if (what == NULL) { e = getenv("LC_MESSAGES"); if (e == NULL) { e = getenv("LANG"); /* this violates the spec */ if (e == NULL) return; } e = wstrdup(e); } else { e = wstrdup(what); } if (strlen(e) == 0 || strcmp(e, "POSIX") == 0 || strcmp(e, "C") == 0) goto out; p = strchr(e, '@'); if (p) { *modifier = wstrdup(p + 1); *p = '\0'; } p = strchr(e, '.'); if (p) { *encoding = wstrdup(p + 1); *p = '\0'; } p = strchr(e, '_'); if (p) { *country = wstrdup(p + 1); *p = '\0'; } if (strlen(e) > 0) *language = wstrdup(e); out: free(e); return; } /* determine whether (first token of) given file is in $PATH */ Bool fileInPath(const char *file) { char *p, *t; static char *path = NULL; if (!file || !*file) return False; /* if it's an absolute path spec, don't override the user. * s/he might just know better. */ if (*file == '/') return True; /* if it has a directory separator at random places, * we might know better. */ p = strchr(file, '/'); if (p) return False; if (!path) { path = getenv("PATH"); if (!path) return False; } p = wstrdup(file); t = strpbrk(p, " \t"); if (t) *t = '\0'; t = wfindfile(path, p); wfree(p); if (t) { wfree(t); return True; } return False; } WindowMaker-0.95.8/util/wdread.c0000664000175000017500000000522012650014300013344 00000000000000/* wdread.c - read value from defaults database * * WindowMaker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * (cowardly remade from wdwrite.c; by judas@hell on Jan 26 2001) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif /* * WindowMaker defaults DB reader */ #include "config.h" #include #include #include #include #include #include #ifdef HAVE_STDNORETURN #include #endif #include #include "../src/wconfig.h" static const char *prog_name; static noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [OPTIONS] \n", prog_name); if (print_usage) { puts("Read from 's database"); puts(""); puts(" -h, --help display this help message"); puts(" -v, --version output version information and exit"); } exit(exitval); } int main(int argc, char **argv) { char path[PATH_MAX]; WMPropList *key, *value, *dict; int ch; struct option longopts[] = { { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "hv", longopts, NULL)) != -1) switch(ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ case 0: break; default: print_help(0, 1); /* NOTREACHED */ } argc -= optind; argv += optind; if (argc != 2) print_help(0, 1); key = WMCreatePLString(argv[1]); snprintf(path, sizeof(path), "%s", wdefaultspathfordomain(argv[0])); dict = WMReadPropListFromFile(path); if (dict == NULL) return 1; /* bad domain */ value = WMGetFromPLDictionary(dict, key); if (value == NULL) return 2; /* bad key */ printf("%s\n", WMGetPropListDescription(value, True)); return 0; } WindowMaker-0.95.8/util/wkdemenu.pl0000664000175000017500000002736312651057551014142 00000000000000#!/usr/bin/perl # # # kde2wmaker.pl: # # # This script, made for users of Window Maker (http://windowmaker.info) is to # be used along with KDE (http://www.kde.org). # # # The default directory, /usr/share/applnk, will contain various # sub-directories such as Development, Editors, Internet, etc. If for some # reason, you wish to use an alternate (parent) directory that contains the # various applnk files, it can be specified on the command line. # # The directory, if an alternate is specified, MUST be a parent directory to # any/all sub-directories. # # Usage: kde2wmaker.pl [ Options... ] # # Options: # # -d # -f # -t # # When the script is run, it will write out a proper Window Maker "External # Menu" entry, that can be included in the menu. When the External Menu has # been correctly configured, the root menu will display a sub-menu containing # all of the KDE related items found. The script only needs to be run when/if # KDE is updated. # # # Installation and Configuration: # # 1) If /usr/bin/perl is not the location of the perl binary on your system, # the first line should be changed to reflect upon it's location. # 2) Run the script. # 3) Configure Window Maker's menu by editing ~/GNUstep/Defaults/WMRootMenu # This could be done with any text editor, or by using WPrefs. Insert # the following line (if done with a text editor) into the WMRootMenu file. # ("External Menu", OPEN_MENU, "$HOME/.kde2wmaker.menu"), # If done using WPrefs, simply "Add External Menu" from the drop down menu, # then type: $HOME/.kde2wmaker.menu into the "Menu Path/Directory List" # textbox. # 4) Some KDE entries, such as "Pine" will require a terminal to # execute it. There is a terminal variable below. You may use any # terminal, XTerm is the default. Any command line options such as: # -fg -bg, etc. can be specified in this variable as well. # # # Michael Hokenson - logan@dct.com # # #--------------------------------------------------------------------- # # v1.2.0 -- 14th February 2001. # # Added alphabetic sorting of the menus. # # Directories are now displayed before files in the menu. # #--------------------------------------------------------------------- # # v1.1.5 -- 3rd February 2001. (No public release) # # Unsupported applnk files have a fallback entry in the menu tree so # that users can report menu entries that do not work. So far, # wkdemenu.pl assumes that there is an Exec= line in the application # definition, which is not always the case. # # -------------------------------------------------------------------- # # v1.1.0 -- 29th January 2001. # # Code cleanup and bug fixes. # # -------------------------------------------------------------------- # # v1.0.0 -- 21st January 2001. # # This script has been completely re-written to allow recursion of the # KDE menu directories to an arbitrary depth, fixing a major # functional limitation in the original script. To do this, I have # rewritten the code to traverse directories recursively, introducing # a subroutine, process_dir() to carry out the task. # # wkdemenu.pl provides an excellent extension to the user interface in # Window Maker, working well with the "Generated Submenu" feature. # # # Summary of New Features # ----------------------- # # Added support for menus of arbitrary depth. # # Added basic internationalisation based on KDE's language # setting. The language is taken from "~/.kde/share/config/kdeglobals" # or from "~/.kderc". # # Corrected the generation of menu names, incorporating # internationalisation, where appropriate. # # Changed the double quotes to two single quotes in application names # so that they do not break the Menu parser in Window Maker. # # Stripped off the arguments to commands on the Exec= line, except in # a few KDE specific cases (e.g. kfmclient). The extra options are # only usable by KDE and were preventing many applications from # launching, since they could parse the option %c or %s, for example. # This "feature" will probably need a more formal or interactive way # of specifying exceptions in the future. # # Added a command line option for specifying the X terminal to # use. This still defaults to xterm, but could be used to specify # aterm, etc. # # Malcolm Cowe, malk@271m.net. # # -------------------------------------------------------------------- # # To Do # ----- # # Programmatically determine the system location for the KDE menu # directory. # # Find a better way to parse the Exec= lines. In the short term, # provide a user mechanism for generating exceptions to the curtailing # of command line options. In the longer term, emulate what KDE does # with these command line features. # # Optimise the code. This is my first proper PERL script, and I'm sure # there's a better way. =) # # # Variables # # The External Menu file, this should NEVER point to the root menu file $menufile = "$ENV{'HOME'}/.kde2wmaker.menu"; # Base directory, location of all the KDE AppName.kdelnk files. # Change the base directory default to point at the system files, # not the user files. Need to find a way of determining the prefix # programmatically. $prefix="/usr"; $basedir = $prefix."/share/applnk"; # Terminal to use. May be specified on the command line with the -t # switch. $term = "xterm"; # Xmessage command line to invoke (can vary platform to platform) $ostype = `uname -s`; if ($ostype =~ /^HP-UX$/) { $xmsg = "xmessage -geometry 400x100 -f -"; } else { $xmsg = "xmessage -geometry 400x100 -file - -default \"okay\""; } # Print to STDOUT, default is YES, a filename is specified $stdout = 1; # KDE Locale Support # Support for KDE internationalisation so that menu entries appear # in the language chosen by the user. Also gets around some problems # with the KDE applnk file format. # The Locale is stored in one of two places, depending on the # version of KDE that is running. $kde2cf="$ENV{'HOME'}/.kde/share/config/kdeglobals"; $kde1cf="$ENV{'HOME'}/.kderc"; $kdeLanguage = ""; # Open the file, if it exists, otherwise provide a default language. unless(open KDERC, $kde2cf) { unless(open KDERC, $kde1cf) { $kdeLanguage = "C"; } } if ( $kdeLanguage == ""){ $kdeLanguage = "C"; # Search through the contents of the file while($line = ) { chomp($line); # Grab the Language if($line =~ /^Language=/) { $kdeLanguage = $line; $kdeLanguage =~ s/Language=//; ($kdeLanguage) = split /:/,$kdeLanguage; last; } } close(KDERC); } # # Begin Main Iteration. # # Process command line arguments foreach $arg(@ARGV) { if($last) { if($last eq "-d") { $basedir = $arg; } elsif($last eq "-f") { $menufile = $arg; $stdout = 0; } elsif($last eq "-t") { $term = $arg; } undef($last); } elsif($arg =~ /^-/) { if($arg =~ /^-[dfst]$/) { $last = $arg; } else { die("Unknown option: $arg\n\nUsage: kde2wmaker.pl [ Options... ]\n". "\n\tOptions:\n\n". "\t\t-d \n". "\t\t-f \n". "\t\t-t \n"); &Usage; } } } # Make sure the KDE Menu's Top Level Directory exists. if(-d $basedir) { # See if there is an old menu file. If there is, rename it unless($stdout) { if(-e $menufile) { print STDERR "\tFound $menufile, renaming\n\n"; rename $menufile, "$menufile.old"; } open(MENUFILE,"> $menufile"); } # Start the main menu entry if($stdout) { print STDOUT "\"KDE Applications\" MENU\n"; process_dir (STDOUT, $basedir); print STDOUT "\"KDE Applications\" END\n"; } else { print MENUFILE "\"KDE Applications\" MENU\n"; process_dir (MENUFILE, $basedir); print MENUFILE "\"KDE Applications\" END\n"; } } else { # Error out :/ print STDERR "ERROR:\n\t$basedir not found\n\tTry another directory.\n"; exit(0); } # End of Main Iteration. # process_dir() works it's way through each file and directory in # the tree and generates the menu output to be used by Window Maker. sub process_dir { my $OUT = @_[0]; my $path = @_[1]; my $item; my @tld; my @tlf; my @klist; my ($gotLang, $gotDef, $gotExec, $inTerm); my $inDesktop; # tld == Top Level Directory. opendir(TLD, $path) || return; # In order to display directories before files, the directory # contents must be split. Directories are added to one array, files # to a second. The lists are then sorted alphabetically by name and # combined into a single list for processing by the rest of the # subroutine. while (defined($file = readdir(TLD))) { next if $file =~ /^\./; if (-d "$path/$file") { @tld = (@tld, $file); } else { @tlf = (@tlf, $file); } } closedir(TLD); # At this stage, only sort the directories, since the application # sorting is done later, using the "Name=" field in the applnk file. @tld = sort (@tld); # Print out directory names first and then process the directories. foreach $item(@tld) { print $OUT "\"$item\" MENU\n"; process_dir($OUT, "$path/$item"); print $OUT "\"$item\" END\n"; } # Process the applnk files in the current directory. foreach $item(@tlf) { $gotLang = 0; $gotDef = 0; $gotExec = 0; $inTerm = 0; $inDesktop = 0; # Process the contents of the applnk file to generate a menu # entry for the application. open(SUB,"$path/$item"); # Set a default application warning to run in case there is no # Exec= line in the application definition. This will be # useful for debugging exceptions. $pname="$item"; $pargs="echo \"Could not extract executable information from:\\n\\n$path/$item.\"|".$xmsg; # Search through the contents of the file. Exit the loop at the # EOF or if we have processed the [Desktop Entry Section] of the # file. while($line = ) { chomp($line); # Get the application's name. This is stored in the # [Desktop Entry] section of the applnk description. # # The application's name can have one of these forms: # Name= # Name[]= # Name[language]= # # Get the default name anyway (one of the first two, just # in case there is no language specific entry). if ($inDesktop) { # Make sure we are in fact still in the [Desktop Entry] # section. if ($line =~ /^\[/) { $inDesktop = 0; } # Extract the Name of the Application elsif ($line =~ /^Name\[?\]?=/ && (!$gotDef || !gotLang)) { $pname = $line; $pname =~ s/^Name\[?\]?=//s; $pname =~ s/\"/\'\'/g; $gotDef = 1; } elsif ($line =~ /^Name\[$kdeLanguage\]=/ && !$gotLang) { $pname = $line; $pname =~ s/^Name\[$kdeLanguage\]=//s; $pname =~ s/\"/\'\'/g; $gotLang = 1; } # Grab the command elsif($line =~ /^Exec=/ && !$gotExec) { $pargs = $line; $pargs =~ s/^Exec=//s; # Strip off all command line options unless the # application is "kfmclient", etc. if ($pargs !~ /^kfmclient/ && $pargs !~ /^kcm/ && $pargs !~ /^\/bin\/bash/ && $pargs !~ /^kdesu/){ ($pargs) = split(/\s/, $pargs); } else { # A double check to remove any dubious characters from # the command line of the exceptions listed in the # above "if" statement. The only culprit so far is the # KDE 1 kfmclient command line. $pargs =~ s/\%[a-zA-Z]//g; } $gotExec = 1; } # If Terminal=1, then we need to execute application # within a terminal window. elsif($line =~ /^Terminal=(1|true)$/i) { $inTerm=1; } } elsif ($line =~ /^\[(KDE\ )?Desktop\ Entry\]/){ $inDesktop = 1; } } close(SUB); if ($inTerm) { $pargs = "$term -T \"$pname\" -e $pargs"; } @klist = (@klist, "\t\"$pname\" EXEC $pargs\n"); } @klist = sort(@klist); foreach (@klist) { print $OUT $_; } return; } WindowMaker-0.95.8/util/setstyle.c0000664000175000017500000003124612650014300013761 00000000000000/* setstyle.c - loads style related options to wmaker * * WindowMaker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif #include "config.h" #include #include #include #include #include #include #include #include #include #ifdef HAVE_STDNORETURN #include #endif #include #include "../src/wconfig.h" #include "common.h" #define MAX_OPTIONS 128 char *FontOptions[] = { "IconTitleFont", "ClipTitleFont", "LargeDisplayFont", "MenuTextFont", "MenuTitleFont", "WindowTitleFont", NULL }; char *CursorOptions[] = { "NormalCursor", "ArrowCursor", "MoveCursor", "ResizeCursor", "TopLeftResizeCursor", "TopRightResizeCursor", "BottomLeftResizeCursor", "BottomRightResizeCursor", "VerticalResizeCursor", "HorizontalResizeCursor", "WaitCursor", "QuestionCursor", "TextCursor", "SelectCursor", NULL }; static const char *prog_name; int ignoreFonts = 0; int ignoreCursors = 0; Display *dpy; static Bool isCursorOption(const char *option) { int i; for (i = 0; CursorOptions[i] != NULL; i++) { if (strcasecmp(option, CursorOptions[i]) == 0) { return True; } } return False; } static Bool isFontOption(const char *option) { int i; for (i = 0; FontOptions[i] != NULL; i++) { if (strcasecmp(option, FontOptions[i]) == 0) { return True; } } return False; } /* * finds elements in `texture' that reference external files, * prepends `prefix' to these files. `prefix' is a path component * that qualifies the external references to be absolute, possibly * pending further expansion */ static void hackPathInTexture(WMPropList * texture, const char *prefix) { WMPropList *type; char *t; /* get texture type */ type = WMGetFromPLArray(texture, 0); t = WMGetFromPLString(type); if (t == NULL) return; if (strcasecmp(t, "tpixmap") == 0 || strcasecmp(t, "spixmap") == 0 || strcasecmp(t, "mpixmap") == 0 || strcasecmp(t, "cpixmap") == 0 || strcasecmp(t, "tvgradient") == 0 || strcasecmp(t, "thgradient") == 0 || strcasecmp(t, "tdgradient") == 0) { WMPropList *file; char buffer[4018]; /* get pixmap file path */ file = WMGetFromPLArray(texture, 1); sprintf(buffer, "%s/%s", prefix, WMGetFromPLString(file)); /* replace path with full path */ WMDeleteFromPLArray(texture, 1); WMInsertInPLArray(texture, 1, WMCreatePLString(buffer)); } else if (strcasecmp(t, "bitmap") == 0) { WMPropList *file; char buffer[4018]; /* get bitmap file path */ file = WMGetFromPLArray(texture, 1); sprintf(buffer, "%s/%s", prefix, WMGetFromPLString(file)); /* replace path with full path */ WMDeleteFromPLArray(texture, 1); WMInsertInPLArray(texture, 1, WMCreatePLString(buffer)); /* get mask file path */ file = WMGetFromPLArray(texture, 2); sprintf(buffer, "%s/%s", prefix, WMGetFromPLString(file)); /* replace path with full path */ WMDeleteFromPLArray(texture, 2); WMInsertInPLArray(texture, 2, WMCreatePLString(buffer)); } } static void hackPaths(WMPropList * style, const char *prefix) { WMPropList *keys; WMPropList *key; WMPropList *value; int i; keys = WMGetPLDictionaryKeys(style); for (i = 0; i < WMGetPropListItemCount(keys); i++) { key = WMGetFromPLArray(keys, i); value = WMGetFromPLDictionary(style, key); if (!value) continue; if (strcasecmp(WMGetFromPLString(key), "WorkspaceSpecificBack") == 0) { if (WMIsPLArray(value)) { int j; WMPropList *texture; for (j = 0; j < WMGetPropListItemCount(value); j++) { texture = WMGetFromPLArray(value, j); if (texture && WMIsPLArray(texture) && WMGetPropListItemCount(texture) > 2) { hackPathInTexture(texture, prefix); } } } } else { if (WMIsPLArray(value) && WMGetPropListItemCount(value) > 2) { hackPathInTexture(value, prefix); } } } WMReleasePropList(keys); } static WMPropList *getColor(WMPropList * texture) { WMPropList *value, *type; char *str; type = WMGetFromPLArray(texture, 0); if (!type) return NULL; value = NULL; str = WMGetFromPLString(type); if (strcasecmp(str, "solid") == 0) { value = WMGetFromPLArray(texture, 1); } else if (strcasecmp(str, "dgradient") == 0 || strcasecmp(str, "hgradient") == 0 || strcasecmp(str, "vgradient") == 0) { WMPropList *c1, *c2; int r1, g1, b1, r2, g2, b2; char buffer[32]; c1 = WMGetFromPLArray(texture, 1); c2 = WMGetFromPLArray(texture, 2); if (!dpy) { if (sscanf(WMGetFromPLString(c1), "#%2x%2x%2x", &r1, &g1, &b1) == 3 && sscanf(WMGetFromPLString(c2), "#%2x%2x%2x", &r2, &g2, &b2) == 3) { sprintf(buffer, "#%02x%02x%02x", (r1 + r2) / 2, (g1 + g2) / 2, (b1 + b2) / 2); value = WMCreatePLString(buffer); } else { value = c1; } } else { XColor color1; XColor color2; XParseColor(dpy, DefaultColormap(dpy, DefaultScreen(dpy)), WMGetFromPLString(c1), &color1); XParseColor(dpy, DefaultColormap(dpy, DefaultScreen(dpy)), WMGetFromPLString(c2), &color2); sprintf(buffer, "#%02x%02x%02x", (color1.red + color2.red) >> 9, (color1.green + color2.green) >> 9, (color1.blue + color2.blue) >> 9); value = WMCreatePLString(buffer); } } else if (strcasecmp(str, "mdgradient") == 0 || strcasecmp(str, "mhgradient") == 0 || strcasecmp(str, "mvgradient") == 0) { value = WMGetFromPLArray(texture, 1); } else if (strcasecmp(str, "tpixmap") == 0 || strcasecmp(str, "cpixmap") == 0 || strcasecmp(str, "spixmap") == 0) { value = WMGetFromPLArray(texture, 2); } return value; } /* * since some of the options introduce incompatibilities, we will need * to do a kluge here or the themes ppl will get real annoying. * So, treat for the absence of the following options: * IconTitleColor * IconTitleBack */ static void hackStyle(WMPropList * style) { WMPropList *keys, *tmp; int foundIconTitle = 0, foundResizebarBack = 0; int i; keys = WMGetPLDictionaryKeys(style); for (i = 0; i < WMGetPropListItemCount(keys); i++) { char *str; tmp = WMGetFromPLArray(keys, i); str = WMGetFromPLString(tmp); if (str) { if (ignoreFonts && isFontOption(str)) { WMRemoveFromPLDictionary(style, tmp); continue; } if (ignoreCursors && isCursorOption(str)) { WMRemoveFromPLDictionary(style, tmp); continue; } if (isFontOption(str)) { WMPropList *value; char *newfont, *oldfont; value = WMGetFromPLDictionary(style, tmp); if (value) { oldfont = WMGetFromPLString(value); newfont = convertFont(oldfont, False); if (newfont != oldfont) { value = WMCreatePLString(newfont); WMPutInPLDictionary(style, tmp, value); WMReleasePropList(value); wfree(newfont); } } } if (strcasecmp(str, "IconTitleColor") == 0 || strcasecmp(str, "IconTitleBack") == 0) { foundIconTitle = 1; } else if (strcasecmp(str, "ResizebarBack") == 0) { foundResizebarBack = 1; } } } WMReleasePropList(keys); if (!foundIconTitle) { /* set the default values */ tmp = WMGetFromPLDictionary(style, WMCreatePLString("FTitleColor")); if (tmp) { WMPutInPLDictionary(style, WMCreatePLString("IconTitleColor"), tmp); } tmp = WMGetFromPLDictionary(style, WMCreatePLString("FTitleBack")); if (tmp) { WMPropList *value; value = getColor(tmp); if (value) { WMPutInPLDictionary(style, WMCreatePLString("IconTitleBack"), value); } } } if (!foundResizebarBack) { /* set the default values */ tmp = WMGetFromPLDictionary(style, WMCreatePLString("UTitleBack")); if (tmp) { WMPropList *value; value = getColor(tmp); if (value) { WMPropList *t; t = WMCreatePLArray(WMCreatePLString("solid"), value, NULL); WMPutInPLDictionary(style, WMCreatePLString("ResizebarBack"), t); } } } if (!WMGetFromPLDictionary(style, WMCreatePLString("MenuStyle"))) { WMPutInPLDictionary(style, WMCreatePLString("MenuStyle"), WMCreatePLString("normal")); } } static noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [OPTIONS] FILE\n", prog_name); if (print_usage) { puts("Reads style/theme configuration from FILE and updates Window Maker."); puts(""); puts(" --no-fonts ignore font related options"); puts(" --no-cursors ignore cursor related options"); puts(" --ignore