From f95b6655d11e3884d8b90017c4d81a355b9d3835 Mon Sep 17 00:00:00 2001 From: Doug Torrance Date: Thu, 11 Dec 2014 09:18:03 -0600 Subject: [PATCH] wmclock: Add version 1.0.14 to repository. Obtained from: http://www.bluestop.org/wmclock/wmclock-1.0.14.tar.gz --- wmclock/.depend | 21 + wmclock/COPYING | 367 +++++++++ wmclock/ChangeLog | 114 +++ wmclock/INSTALL | 57 ++ wmclock/Imakefile | 87 +++ wmclock/README | 141 ++++ wmclock/configure | 74 ++ wmclock/dynlist.c | 107 +++ wmclock/dynlist.h | 35 + wmclock/lang.breton/month.xpm | 80 ++ wmclock/lang.breton/weekday.xpm | 48 ++ wmclock/lang.croatian/month.xpm | 82 ++ wmclock/lang.croatian/weekday.xpm | 48 ++ wmclock/lang.czech/month.xpm | 79 ++ wmclock/lang.czech/weekday.xpm | 47 ++ wmclock/lang.danish/month.xpm | 79 ++ wmclock/lang.danish/weekday.xpm | 47 ++ wmclock/lang.dutch/month.xpm | 83 ++ wmclock/lang.dutch/weekday.xpm | 47 ++ wmclock/lang.english/month.xpm | 83 ++ wmclock/lang.english/weekday.xpm | 53 ++ wmclock/lang.french/month.xpm | 79 ++ wmclock/lang.french/weekday.xpm | 47 ++ wmclock/lang.french2/month.xpm | 79 ++ wmclock/lang.french2/weekday.xpm | 51 ++ wmclock/lang.german/month.xpm | 83 ++ wmclock/lang.german/weekday.xpm | 51 ++ wmclock/lang.hungarian/month.xpm | 79 ++ wmclock/lang.hungarian/weekday.xpm | 48 ++ wmclock/lang.indonesian/month.xpm | 83 ++ wmclock/lang.indonesian/weekday.xpm | 47 ++ wmclock/lang.italian/month.xpm | 79 ++ wmclock/lang.italian/weekday.xpm | 47 ++ wmclock/lang.norwegian/month.xpm | 79 ++ wmclock/lang.norwegian/weekday.xpm | 47 ++ wmclock/lang.polish/month.txt | 12 + wmclock/lang.polish/month.xpm | 79 ++ wmclock/lang.polish/weekday.txt | 7 + wmclock/lang.polish/weekday.xpm | 48 ++ wmclock/lang.portuguese/month.xpm | 79 ++ wmclock/lang.portuguese/weekday.xpm | 47 ++ wmclock/lang.russian/month.xpm | 79 ++ wmclock/lang.russian/weekday.xpm | 48 ++ wmclock/lang.slovene/month.xpm | 81 ++ wmclock/lang.slovene/weekday.xpm | 51 ++ wmclock/lang.spanish/month.xpm | 79 ++ wmclock/lang.spanish/weekday.xpm | 47 ++ wmclock/lang.swedish/month.xpm | 79 ++ wmclock/lang.swedish/weekday.xpm | 47 ++ wmclock/lang.ukrainian/month.xpm | 79 ++ wmclock/lang.ukrainian/weekday.xpm | 49 ++ wmclock/month.xpm | 1 + wmclock/weekday.xpm | 1 + wmclock/wmclock.c | 1093 +++++++++++++++++++++++++++ wmclock/wmclock.man | 232 ++++++ wmclock/wmclock.man.in | 232 ++++++ wmclock/wmclock.spec.in | 128 ++++ wmclock/xpm/date.xpm | 25 + wmclock/xpm/led.xpm | 18 + wmclock/xpm/mask.xbm | 30 + wmclock/xpm/mask.xpm | 65 ++ 61 files changed, 5414 insertions(+) create mode 100644 wmclock/.depend create mode 100644 wmclock/COPYING create mode 100644 wmclock/ChangeLog create mode 100644 wmclock/INSTALL create mode 100644 wmclock/Imakefile create mode 100644 wmclock/README create mode 100755 wmclock/configure create mode 100644 wmclock/dynlist.c create mode 100644 wmclock/dynlist.h create mode 100644 wmclock/lang.breton/month.xpm create mode 100644 wmclock/lang.breton/weekday.xpm create mode 100644 wmclock/lang.croatian/month.xpm create mode 100644 wmclock/lang.croatian/weekday.xpm create mode 100644 wmclock/lang.czech/month.xpm create mode 100644 wmclock/lang.czech/weekday.xpm create mode 100644 wmclock/lang.danish/month.xpm create mode 100644 wmclock/lang.danish/weekday.xpm create mode 100644 wmclock/lang.dutch/month.xpm create mode 100644 wmclock/lang.dutch/weekday.xpm create mode 100644 wmclock/lang.english/month.xpm create mode 100644 wmclock/lang.english/weekday.xpm create mode 100644 wmclock/lang.french/month.xpm create mode 100644 wmclock/lang.french/weekday.xpm create mode 100644 wmclock/lang.french2/month.xpm create mode 100644 wmclock/lang.french2/weekday.xpm create mode 100644 wmclock/lang.german/month.xpm create mode 100644 wmclock/lang.german/weekday.xpm create mode 100644 wmclock/lang.hungarian/month.xpm create mode 100644 wmclock/lang.hungarian/weekday.xpm create mode 100644 wmclock/lang.indonesian/month.xpm create mode 100644 wmclock/lang.indonesian/weekday.xpm create mode 100644 wmclock/lang.italian/month.xpm create mode 100644 wmclock/lang.italian/weekday.xpm create mode 100644 wmclock/lang.norwegian/month.xpm create mode 100644 wmclock/lang.norwegian/weekday.xpm create mode 100644 wmclock/lang.polish/month.txt create mode 100644 wmclock/lang.polish/month.xpm create mode 100644 wmclock/lang.polish/weekday.txt create mode 100644 wmclock/lang.polish/weekday.xpm create mode 100644 wmclock/lang.portuguese/month.xpm create mode 100644 wmclock/lang.portuguese/weekday.xpm create mode 100644 wmclock/lang.russian/month.xpm create mode 100644 wmclock/lang.russian/weekday.xpm create mode 100644 wmclock/lang.slovene/month.xpm create mode 100644 wmclock/lang.slovene/weekday.xpm create mode 100644 wmclock/lang.spanish/month.xpm create mode 100644 wmclock/lang.spanish/weekday.xpm create mode 100644 wmclock/lang.swedish/month.xpm create mode 100644 wmclock/lang.swedish/weekday.xpm create mode 100644 wmclock/lang.ukrainian/month.xpm create mode 100644 wmclock/lang.ukrainian/weekday.xpm create mode 120000 wmclock/month.xpm create mode 120000 wmclock/weekday.xpm create mode 100644 wmclock/wmclock.c create mode 100644 wmclock/wmclock.man create mode 100644 wmclock/wmclock.man.in create mode 100644 wmclock/wmclock.spec.in create mode 100644 wmclock/xpm/date.xpm create mode 100644 wmclock/xpm/led.xpm create mode 100644 wmclock/xpm/mask.xbm create mode 100644 wmclock/xpm/mask.xpm diff --git a/wmclock/.depend b/wmclock/.depend new file mode 100644 index 0000000..0c6b329 --- /dev/null +++ b/wmclock/.depend @@ -0,0 +1,21 @@ +dynlist.o: dynlist.c /usr/include/stdio.h /usr/include/sys/cdefs.h \ + /usr/include/sys/_null.h /usr/include/sys/_types.h \ + /usr/include/machine/_types.h /usr/include/stdlib.h \ + /usr/include/string.h /usr/include/strings.h dynlist.h +wmclock.o: wmclock.c /usr/include/sys/select.h /usr/include/sys/cdefs.h \ + /usr/include/sys/_types.h /usr/include/machine/_types.h \ + /usr/include/sys/_sigset.h /usr/include/sys/_timeval.h \ + /usr/include/sys/timespec.h /usr/include/sys/_timespec.h \ + /usr/include/sys/types.h /usr/include/machine/endian.h \ + /usr/include/sys/_pthreadtypes.h /usr/include/sys/wait.h \ + /usr/include/sys/time.h /usr/include/time.h /usr/include/sys/_null.h \ + /usr/include/stdio.h /usr/include/stdlib.h /usr/include/string.h \ + /usr/include/strings.h /usr/include/unistd.h /usr/include/sys/unistd.h \ + /usr/local/include/X11/Xatom.h /usr/local/include/X11/Xlib.h \ + /usr/local/include/X11/X.h /usr/local/include/X11/Xfuncproto.h \ + /usr/local/include/X11/Xosdefs.h /usr/include/stddef.h \ + /usr/local/include/X11/xpm.h /usr/local/include/X11/Xutil.h \ + /usr/local/include/X11/keysym.h /usr/local/include/X11/keysymdef.h \ + /usr/local/include/X11/extensions/shape.h \ + /usr/local/include/X11/extensions/shapeconst.h dynlist.h month.xpm \ + weekday.xpm xpm/date.xpm xpm/led.xpm xpm/mask.xbm xpm/mask.xpm diff --git a/wmclock/COPYING b/wmclock/COPYING new file mode 100644 index 0000000..981c51d --- /dev/null +++ b/wmclock/COPYING @@ -0,0 +1,367 @@ +******************************************************************************* + + NO WARRANTY + + BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + +******************************************************************************* + + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + 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., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/wmclock/ChangeLog b/wmclock/ChangeLog new file mode 100644 index 0000000..f6a457f --- /dev/null +++ b/wmclock/ChangeLog @@ -0,0 +1,114 @@ +2010-12-22 11:53 brucec + * Updated documentation to show new maintainer. + * Simplified Imakefile. + +2010-12-03 20:28 brucec + * Imakefile: Bumped version to 1.0.13, add warning flags. + + * INSTALL: Updated compiler and flags example. + + * wmclock.c, weekday.xpm: Integrated Debian nopolling patch and + FreeBSD's weekday and year patches. Added function prototypes. + + * wmclock.spec.in: Bumped version to 1.0.13, changed ExecPrefix to + /usr/local since /usr/X11R6 is obsolete. + + * lang.polish: Added Polish language files, contributed by + oyd11 at softhome.net + + * lang.croatian: Added Croatian language files, contributed by Josip + Deanovic + +2000-04-13 07:49 jmknoble + + * wmclock.spec.in: Add ChangeLog to %%doc directory. + + * Imakefile: Bump version to 1.0.12.2. Release. + + * Imakefile: Generate changelog from CVS comments with 'make + changelog'. Add generated changelog to distribution tarball. + +2000-03-08 07:59 jmknoble + + * Imakefile: `tar' target was copying CVS directories. + Restructured it a bit to avoid that. + + * Imakefile: `distclean' target could prove troublesome by + destroying irreproducible work. + + * wmclock.spec.in: Oops. Missed an obsolete %%{ReleaseNum} macro. + +2000-03-08 07:35 jmknoble + + * Imakefile, wmclock.spec.in: Added template from which to generate + spec file (wmclock.spec.in). Added targets in Imakefile to handle + generating the spec file. Revised `tar' target to rebuild on + sourcefile change. Added distclean target. Removed symlinks from + tarball. Updated version to 1.0.12.1. + + * .cvsignore: Added .cvsignore file for convenience of the + developer. + + * Makefile: Makefile is automagically generated; it shouldn't be + stored in CVS. + + * wmclock.c, xpm/mask.xbm: Compiling with gcc -Wall -ansi -pedantic + revealed that the mask bitmap should be declared as unsigned char. + XCreateBitmapFromData() expects char *, though, so we cast the mask + bitmap data explicitly. + + * dynlist.c, dynlist.h: Fixed possible memory leak. + +2000-03-08 06:56 jmknoble + + * COPYING, INSTALL, Imakefile, Makefile, README, configure, + dynlist.c, dynlist.h, wmclock.c, wmclock.man.in, + asclock-orig/INSTALL, asclock-orig/Imakefile, asclock-orig/README, + asclock-orig/asclock.c, asclock-orig/asclock.man, + asclock-orig/configure, asclock-orig/mask.xpm, + lang.breton/month.xpm, lang.breton/weekday.xpm, + lang.czech/month.xpm, lang.czech/weekday.xpm, + lang.danish/month.xpm, lang.danish/weekday.xpm, + lang.dutch/month.xpm, lang.dutch/weekday.xpm, + lang.english/month.xpm, lang.english/weekday.xpm, + lang.french/month.xpm, lang.french/weekday.xpm, + lang.french2/month.xpm, lang.french2/weekday.xpm, + lang.german/month.xpm, lang.german/weekday.xpm, + lang.hungarian/month.xpm, lang.hungarian/weekday.xpm, + lang.indonesian/month.xpm, lang.indonesian/weekday.xpm, + lang.italian/month.xpm, lang.italian/weekday.xpm, + lang.norwegian/month.xpm, lang.norwegian/weekday.xpm, + lang.portuguese/month.xpm, lang.portuguese/weekday.xpm, + lang.russian/month.xpm, lang.russian/weekday.xpm, + lang.slovene/month.xpm, lang.slovene/weekday.xpm, + lang.spanish/month.xpm, lang.spanish/weekday.xpm, + lang.swedish/month.xpm, lang.swedish/weekday.xpm, + lang.ukrainian/month.xpm, lang.ukrainian/weekday.xpm, xpm/date.xpm, + xpm/led.xpm, xpm/mask.xbm, xpm/mask.xpm: Begin CVS revision control + + * COPYING, INSTALL, Imakefile, Makefile, README, configure, + dynlist.c, dynlist.h, wmclock.c, wmclock.man.in, + asclock-orig/INSTALL, asclock-orig/Imakefile, asclock-orig/README, + asclock-orig/asclock.c, asclock-orig/asclock.man, + asclock-orig/configure, asclock-orig/mask.xpm, + lang.breton/month.xpm, lang.breton/weekday.xpm, + lang.czech/month.xpm, lang.czech/weekday.xpm, + lang.danish/month.xpm, lang.danish/weekday.xpm, + lang.dutch/month.xpm, lang.dutch/weekday.xpm, + lang.english/month.xpm, lang.english/weekday.xpm, + lang.french/month.xpm, lang.french/weekday.xpm, + lang.french2/month.xpm, lang.french2/weekday.xpm, + lang.german/month.xpm, lang.german/weekday.xpm, + lang.hungarian/month.xpm, lang.hungarian/weekday.xpm, + lang.indonesian/month.xpm, lang.indonesian/weekday.xpm, + lang.italian/month.xpm, lang.italian/weekday.xpm, + lang.norwegian/month.xpm, lang.norwegian/weekday.xpm, + lang.portuguese/month.xpm, lang.portuguese/weekday.xpm, + lang.russian/month.xpm, lang.russian/weekday.xpm, + lang.slovene/month.xpm, lang.slovene/weekday.xpm, + lang.spanish/month.xpm, lang.spanish/weekday.xpm, + lang.swedish/month.xpm, lang.swedish/weekday.xpm, + lang.ukrainian/month.xpm, lang.ukrainian/weekday.xpm, xpm/date.xpm, + xpm/led.xpm, xpm/mask.xbm, xpm/mask.xpm: branches: 1.1.1; Initial + revision + diff --git a/wmclock/INSTALL b/wmclock/INSTALL new file mode 100644 index 0000000..76ae434 --- /dev/null +++ b/wmclock/INSTALL @@ -0,0 +1,57 @@ +# INSTALL: how to install wmclock +# created 1999-Apr-10 jmk + +____________________________ +|O| Installing wmclock |X| +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The procedure for installing wmclock is relatively simple; it depends +on imake, which ships with most systems which include the X Window +System. + + (1) Run the `configure' script to configure the language support that + is built into wmclock. For example: + + ./configure --lang english + + For a list of the available languages, use: + + ./configure --help + + The configure script also creates a Makefile out of the Imakefile + using xmkmf. + + (2) Compile: + + make + + You may specify the C compiler to use and additional command-line + options for the C compiler using the `CC' and `CDEBUGFLAGS' + variables, respectively. For example: + + make CC=clang CDEBUGFLAGS='-O4 -march=pentium2' + + + (3) Test wmclock: + + ./wmclock + + (If it appears to work as expected, *don't dock it*. Wait until + after you've installed it). + + (4) Install: + + su + make install + make install.man + + Optionally, install all the month and weekday pixmaps for use + with the `-monthxpm' and `-weekdayxpm' options: + + make install.share + + (5) You're done. See the README file accompanying this one for + instructions on installing wmclock into Window Maker's dock. + +-- +Bruce Cran diff --git a/wmclock/Imakefile b/wmclock/Imakefile new file mode 100644 index 0000000..b71e7e3 --- /dev/null +++ b/wmclock/Imakefile @@ -0,0 +1,87 @@ +NAME = wmclock +VERSION = 1.0.14 +DATE = 2010-Dec-22 + +DEFINES = -DVERSION=\"$(VERSION)\" +CFLAGS += -Wall -pedantic -Wshadow -Wmissing-prototypes -Wcast-align +CFLAGS += -Wcast-qual -Wchar-subscripts -Wpointer-arith +CFLAGS += -Wredundant-decls -Wstrict-prototypes + +XPMLIB = -L$(PREFIX)/lib/X11 -lXpm +DEPLIBS = $(DEPXLIB) + +LOCAL_LIBRARIES = $(XPMLIB) $(XLIB) + +LINTLIBS = $(LINTXLIB) + +SHAREDIR = $(PREFIX)/share/$(NAME) + +IMAKEFILE = Imakefile +MAKEFILE = Makefile + +CHANGELOG = ChangeLog + +SPEC_SRC = $(NAME).spec.in +SPEC_OBJ = $(NAME).spec +SPECS = $(SPEC_SRC) $(SPEC_OBJ) + +EXTRA_FILES = \@@\ + $(SPECS) \@@\ + $(IMAKEFILE) \@@\ + $(CHANGELOG) \@@\ + COPYING \@@\ + INSTALL \@@\ + README \@@\ + configure + +MANSRC = wmclock.man.in +MANOBJ = wmclock.man + +SYMLINKS = month.xpm weekday.xpm + +HDRS = dynlist.h +SRCS = dynlist.c wmclock.c +OBJS = dynlist.o wmclock.o + +TARDIR = $(NAME)-$(VERSION) +TARBALL = $(TARDIR).tar.gz + +ComplexProgramTarget($(NAME)) + +depend:: + cat $(MANSRC) |sed \@@\ + -e 's/@VERSION@/$(VERSION)/g' \@@\ + -e 's/@DATE@/$(DATE)/g' \@@\ + >$(MANOBJ) + +.PHONY: depends tar + +spec: $(SPEC_OBJ) + +$(SPEC_OBJ): $(SPEC_SRC) $(IMAKEFILE) + cat $(SPEC_SRC) |sed -e 's/@VERSION@/$(VERSION)/g' >$@ + +install.share:: + @if [ -d $(DESTDIR)$(SHAREDIR) ]; then set +x; \@@\ + else (set -x; $(MKDIRHIER) $(DESTDIR)$(SHAREDIR)); fi + @set -x; \@@\ + for i in lang.*; do \@@\ + $(MKDIRHIER) $(DESTDIR)$(SHAREDIR)/$${i}; \@@\ + $(INSTALL) $(INSTALLFLAGS) $(INSTDATFLAGS) ./$${i}//**/* \@@\ + $(DESTDIR)$(SHAREDIR)/$${i}/; \@@\ + done + +tar: $(TARBALL) + +$(TARBALL): $(EXTRA_FILES) $(EXTRA_DIRS) $(MANSRC) $(HDRS) $(SRCS) + $(RM) -r $(TARDIR) + $(MKDIRHIER) $(TARDIR) + $(CP) -p $(EXTRA_FILES) $(MANSRC) $(HDRS) $(SRCS) $(TARDIR)/ + -for i in $(EXTRA_DIRS); do \@@\ + $(MKDIRHIER) $(TARDIR)/$${i}; \@@\ + $(CP) -p $${i}//**/* $(TARDIR)/$${i}/; \@@\ + done >/dev/null 2>&1 + chmod -Rc ug+rwX,o+rX,o-w $(TARDIR) + tar -cvf - $(TARDIR) |gzip -9 >$(TARBALL) + $(RM) -r $(TARDIR) + diff --git a/wmclock/README b/wmclock/README new file mode 100644 index 0000000..27e0b4b --- /dev/null +++ b/wmclock/README @@ -0,0 +1,141 @@ +# README: notes about wmclock +# created 1999-Apr-10 jmk + +_______________________ +|O| About wmclock |X| +^^^^^^^^^^^^^^^^^^^^^^^ + +Wmclock is an applet which displays the date and time in a dockable +tile in the same style as the clock from the NEXTSTEP(tm) operating +system. Wmclock is specially designed for the Window Maker window +manager, by Alfredo Kojima, and features multiple language support, +twenty-four-hour and twelve-hour (am/pm) time display, and, optionally, +can run a user-specified program on a mouse click. Wmclock is derived +from asclock, a similar clock for the AfterStep window manager. + +____________________________ +|O| Installing wmclock |X| +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Please see the INSTALL file accompanying the wmclock source for +instructions on installing wmclock. + +_________________________ +|O| Getting Started |X| +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Wmclock is designed especially for Window Maker; hence, putting wmclock +into your Window Maker dock is quick and easy. After you've installed +wmclock according to the instructions, there are three steps: + + (1) Start wmclock. The easiest way to accomplish this is to accept + the defaults for things such as led color, blinking, etc, and + just start the clock: + + wmclock + + (2) Drag the resulting wmclock appicon to an empty slot in your dock. + You can do this in one of two fashions: + + (a) Position the mouse pointer over a portion of the appicon tile + that is not covered by wmclock's LED display or calendar + display. Press the primary mouse button (usually the left + one) and drag to the dock. This requires a little bit of + precision in aiming the mouse, but requires no keyboard + action. + + (b) Hold down the [Alt] or [Meta] key (whichever one you have + configured Window Maker to use), position the mouse pointer + over any part of the wmlock appicon, press the primary mouse + button (usually the left one), and drag to the dock. This + method requires less precision, but requires you to press and + hold a key while dragging. + + (3) Set wmclock to launch when Window Maker starts. Press the menu + mouse button (usually the right one) on the portion of the docked + wmclock tile that is not covered by wmclock's LED display or + calendar display to bring up the dock icon menu, and choose + `Settings...'. In the resulting dialog, check the box labelled + `Start when Window Maker is started' and press `OK'. That's it! + +_________________________ +|O| Troubleshooting |X| +^^^^^^^^^^^^^^^^^^^^^^^^^ + +As with any dockable applet, there are a few possible `gotchas' with +wmclock and Window Maker: + + - If you have the Clip set to `AutoAttract Icons', the wmclock + appicon will appear in the Clip instead of on the desktop. If your + Clip is collapsed, you won't be able to see the wmclock appicon, + even though it's running. Make sure you uncollapse your Clip and + look for wmclock there if it doesn't appear on your desktop. + + - If your Clip is too close to your dock, you may have difficulty + docking wmclock, because the Clip may grab the wmclock appicon + instead. Try moving your Clip farther away from your dock before + docking wmclock. + +_________________________________________________ +|O| Differences Between asclock and wmclock |X| +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Wmclock is derived from asclock version 1.0.12 by Beat Christen. +The major differences between asclock and wmclock are: + + (1) Asclock is designed for use with the AfterStep window manager. + To use asclock with Window Maker, a patch is required. Wmclock + is better behaved with Window Maker and requires no patch or + special command-line options; it `just works'. + + (2) Wmclock corrects a few of asclock's aesthetic defects. Most + notably, the `off-by-one-pixel' defect at the lefthand side of + the LED display is corrected. + + (3) Asclock use a simple system() call to execute the command + specified using the `-exe' command-line option; this method could + create lots of unwanted zombie processes. Wmclock cleans up its + chiled processes every so often to eliminate the zombies. + + Also, if no command was specified when asclock was started, it + would output a message warning that no command was specified each + time you click the mouse on asclock window area. Wmclock does not + output that message; if no command was specified, wmclock simply + does nothing when you click on it. + +Other minor differences include: + + (1) The `-shape' and `-iconic' command-line options are no longer + needed with wmclock. Wmclock recognizes them for backwards + compatibility with asclock, but they have no effect. + + (2) Asclock contained an arbitrary limitation on the length of the + command (approximately 50 characters) that you could specify with + the `-exe' option. Wmclock removes that arbitrary limitation and + cleans up the code significantly in the process. + +_______________________________________________________ +|O| Authors, Copyright, License, Disclaimer, etc. |X| +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Wmclock is Copyright (C) 1999 by Jim Knoble . +Significant portions of wmclock are directly derived from asclock by +Beat Christen , who, along with asclock's other +authors, owns the copyright to those portions of wmclock. + +Wmclock is licensed under the GNU General Public License, version 2, or +(at your option) any later version. See for more +information. + +The software is provided ``as is'', without warranty of any kind, +express or implied, including but not limited to the warranties of +merchantability, fitness for a particular purpose and noninfringement. +In no event shall the author(s) be liable for any claim, damages or +other liability, whether in an action of contract, tort or otherwise, +arising from, out of or in connection with the software or the use or +other dealings in the software. + +Your mileage may vary. Eat your vegetables. + +-- +Bruce Cran diff --git a/wmclock/configure b/wmclock/configure new file mode 100755 index 0000000..b20a265 --- /dev/null +++ b/wmclock/configure @@ -0,0 +1,74 @@ +#!/bin/sh +# +# configure: prepare wmclock to be built using imake and make +# created 1999-Mar-30 03:40 jmk + +DefLanguage=english +Language='' +LangDir='' +Me=`basename $0` + +GetLanguages() { + ls -1d lang.* | awk -F . '{ + print " " $2 + }' +} + +PrintHelp() { + langlist="`GetLanguages`" + cat <] + + Options: + --lang + Configure wmclock to use day and month names for the specified + language. Defaults to 'english'. Choices are: + +${langlist} +EOF +} + +Die() { + echo "$*" + echo "wmclock is NOT successfully configured!" + exit 1 +} + +while [ $# -gt 0 ]; do + case "$1" in + --lang|--language) + shift + Language="$1" + ;; + --help) + PrintHelp + exit 1 + ;; + esac + shift +done + +if [ -z "${Language}" ]; then + Language="${DefLanguage}" +fi + +LangDir="lang.${Language}" +if [ ! -d "${LangDir}" ]; then + Die "${Me}: error: cannot find language directory '${LangDir}'" +fi + +echo "Configuring for ${Language} day-of-week and month names ..." +rm -f month.xpm weekday.xpm +ln -s "./${LangDir}/month.xpm" . +ln -s "./${LangDir}/weekday.xpm" . + +echo "Building Makefile from Imakefile ..." +echo "----------------------------------------------------------------" +xmkmf -a + +echo "----------------------------------------------------------------" +echo "Finished configuring. To build wmclock, type 'make'." +echo + +exit 0 diff --git a/wmclock/dynlist.c b/wmclock/dynlist.c new file mode 100644 index 0000000..18672db --- /dev/null +++ b/wmclock/dynlist.c @@ -0,0 +1,107 @@ +/* dynlist.c: Dynamic lists and buffers in C. + * created 1999-Jan-06 15:34 jmk + * autodate: 2000-Mar-08 02:25 + * + * by Jim Knoble + * Copyright (C) 1999 Jim Knoble + * + * Disclaimer: + * + * The software is provided "as is", without warranty of any kind, + * express or implied, including but not limited to the warranties of + * merchantability, fitness for a particular purpose and + * noninfringement. In no event shall the author(s) be liable for any + * claim, damages or other liability, whether in an action of + * contract, tort or otherwise, arising from, out of or in connection + * with the software or the use or other dealings in the software. + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation. + */ + +#include +#include +#include + +#include "dynlist.h" + +#define LIST_CHUNK_SIZE 512 +#define BUF_CHUNK_SIZE 512 + +/* For lists of pointers cast to char *. */ +int append_to_list(char ***list_ptr, int *list_len, int *i, char *item) +{ + char **tmp_ptr; + + if (*i >= *list_len) + { + *list_len += LIST_CHUNK_SIZE; + tmp_ptr = realloc(*list_ptr, (sizeof(**list_ptr) * *list_len)); + if (NULL == tmp_ptr) + { + return(APPEND_FAILURE); + } + *list_ptr = tmp_ptr; + } + (*list_ptr)[*i] = item; + (*i)++; + return(APPEND_SUCCESS); +} + +/* For single-dimensional buffers. */ +int append_to_buf(char **buf, int *buflen, int *i, int c) +{ + char *tmp_buf; + + if (*i >= *buflen) + { + *buflen += BUF_CHUNK_SIZE; + tmp_buf = realloc(*buf, (sizeof(**buf) * *buflen)); + if (NULL == tmp_buf) + { + return(APPEND_FAILURE); + } + *buf = tmp_buf; +#ifdef DEBUG + printf("-->Allocated buffer of size %d\n", *buflen); +#endif /* DEBUG */ + } + (*buf)[*i] = (char) c; + (*i)++; + return(APPEND_SUCCESS); +} + +int append_string_to_buf(char **buf, int *buflen, int *i, char *s) +{ + int addlen; + int n; + char *tmp_buf; + + n = strlen(s); + if (*i >= *buflen) + { + addlen = BUF_CHUNK_SIZE; + if (addlen <= n) + { + addlen = n + 1; + } + *buflen += addlen; + tmp_buf = realloc(*buf, (sizeof(**buf) * *buflen)); + if (NULL == tmp_buf) + { + return(APPEND_FAILURE); + } + *buf = tmp_buf; +#ifdef DEBUG + printf("-->Allocated buffer of size %d\n", *buflen); +#endif /* DEBUG */ + } + (*buf)[*i] = '\0'; + strncat(*buf, s, n); + *i += n; + return(APPEND_SUCCESS); +} + diff --git a/wmclock/dynlist.h b/wmclock/dynlist.h new file mode 100644 index 0000000..1d009af --- /dev/null +++ b/wmclock/dynlist.h @@ -0,0 +1,35 @@ +/* dynlist.h: Dynamic lists and buffers in C + * created 1999-Jan-06 15:04 jmk + * autodate: 2000-Mar-08 02:26 + * + * by Jim Knoble + * Copyright (C) 1999 Jim Knoble + * + * Disclaimer: + * + * The software is provided "as is", without warranty of any kind, + * express or implied, including but not limited to the warranties of + * merchantability, fitness for a particular purpose and + * noninfringement. In no event shall the author(s) be liable for any + * claim, damages or other liability, whether in an action of + * contract, tort or otherwise, arising from, out of or in connection + * with the software or the use or other dealings in the software. + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation. + */ + +#ifndef H_DYNLIST +#define H_DYNLIST 1 + +#define APPEND_SUCCESS 1 +#define APPEND_FAILURE 0 + +int append_to_list(char ***list_ptr, int *list_len, int *i, char *item); +int append_to_buf(char **buf, int *buflen, int *i, int c); +int append_string_to_buf(char **buf, int *buflen, int *i, char *s); + +#endif /* H_DYNLIST */ diff --git a/wmclock/lang.breton/month.xpm b/wmclock/lang.breton/month.xpm new file mode 100644 index 0000000..1e9fec4 --- /dev/null +++ b/wmclock/lang.breton/month.xpm @@ -0,0 +1,80 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 4 1", +" c #FFFFFFFFFFFF", +". c #AAAAAAAAAAAA", +"X c #000000000000", +"o c #555555555555", +" ", +" .XXXX XXXXX X X ", +" X .X .XX .X ", +".X XXX XXXXX X. X X. ", +"X. X X .X XX ", +" XXX oXXXX X X ", +" ", +" XXX X X X X X ", +" X X .X .X X X X. ", +" X X XXXXX X.XX.X ", +"X X X XX X. ", +"XXXXX .X X X X ", +" ", +" X X XXXXX X .X", +" .X XX .X .X X ", +" X.X X X XXXXX X. .X ", +".X X X X X X ", +"X X oXXXX oXX ", +" ", +" XXXXX XXXXo XXXXX ", +" .X .X X X .X ", +" XXXXX XXXXX XXXXX ", +" X X X X X ", +"oXXXX oXXXX X X ", +" ", +" X X X XXXXX", +" .X XX X. .X ", +" X.X X X X X XXXXX ", +".X X X XXXX X ", +"X X X X oXXXX ", +" ", +" XXXXX X X XXXXX ", +" .X X. X. .X ", +" XXXXX .X X XXXXX ", +" X XX X ", +" oXXXX X oXXXX ", +" ", +" .XXXX .XXX X .X ", +" X X X .X X ", +" .X XXX .X X. X. .X ", +" X. X X X X X ", +" XXX XXXX oXX ", +" ", +" XXXXX .XXX .XXXX ", +" .X X X X ", +" XXXXX .X X. .XX. ", +" X X X X ", +"oXXXX .XXX XXXX. ", +" ", +" .XXXX X X XXXXX", +" X X X X. .X ", +" .X XXX X.XX.X XXXXX ", +" X. X XX X. X ", +" XXX X X oXXXX ", +" ", +" X X XXXXX XXXXX ", +" .X .X .X X .X ", +" XXXXX XXXXX XXXXX ", +" X X X X X ", +".X X oXXXX X X ", +" ", +" oXXX X .X ", +" .X X .X X ", +" X X X. .X ", +" X X X X ", +" oXXXX oXX ", +" ", +" X X XXXXX XXXXX ", +" .X X .X X .X ", +" XXX XXXXX XXXXX ", +" oX X X X X ", +".X X oXXXX X X "}; + diff --git a/wmclock/lang.breton/weekday.xpm b/wmclock/lang.breton/weekday.xpm new file mode 100644 index 0000000..6f2c32b --- /dev/null +++ b/wmclock/lang.breton/weekday.xpm @@ -0,0 +1,48 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 2 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +" ", +" . . . . . ", +" . . . .. . ", +" . . . . . . ", +" . . . . .. ", +" ..... .... . . ", +" ", +" . . ..... . . ", +" .. .. . . . ", +" . . . .... . . ", +" . . . . . ", +" . . ..... .... ", +" ", +" . . ..... ..... ", +" .. .. . . . ", +" . . . .... ..... ", +" . . . . . ", +" . . ..... . . ", +" ", +" . . .. ... ", +" . . . . . . ", +" . . . . . ", +" . ...... . . ", +" . . . ... ", +" ", +" .... . . ..... ", +" . . . . ", +" . .. . .. . .... ", +" . . .. .. . ", +" ... . . ..... ", +" ", +" .... .. .... ", +" . . . . . ", +" ... . . . . ", +" . ...... . . ", +" .... . . .... ", +" ", +" .... . . . ", +" . . . . ", +" ... . . . ", +" . . . . ", +" .... .... ..... "}; + diff --git a/wmclock/lang.croatian/month.xpm b/wmclock/lang.croatian/month.xpm new file mode 100644 index 0000000..18ee155 --- /dev/null +++ b/wmclock/lang.croatian/month.xpm @@ -0,0 +1,82 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 7 1", +" c None", +". c #FFFFFF", +"+ c #AAAAAA", +"@ c #000000", +"# c #555555", +"$ c #AEAAAE", +"% c #515551", +"......................", +"...+@@@@....@......@..", +"...@.......+@.....+@..", +"...+@@+....@+.....@+..", +"......@...@@...@..@...", +"..@@@@+...@.....@@....", +"......................", +".@...@..@@@@@..@.....@", +".@+.@+.+@.....+@....+@", +".+@.@..@@@@...@+....@+", +"..@@...@.....@+..@..@.", +"..@...#@@@@..@@@..@@..", +"..........@@..........", +"..+@@@..@@@@@@..@..$@.", +"..@...@....$@..$@..@..", +".+@..@+...@$...@$.$@..", +".@...@..$@$....@..@...", +".@@@@..$@@@@@@.%@@....", +"......................", +"..@@@@@..@@@@@....@...", +"...+@....@...@....@...", +"...@+...@@@@@....@.@..", +"..+@....@...@...@@@@..", +"..@....@....@..@...@..", +"......................", +"...+@@@@..@...@....@..", +"...@......@+.@+...+@..", +"...+@@+...+@.@....@+..", +"......@....@@....@@...", +"..@@@@+....@.....@....", +"......................", +"....@.....@....@@@@@..", +"...+@....+@...+@...@..", +"...@+....@+...@@@@@...", +"..@+....@@....@.......", +"..@@@...@....@........", +"......................", +"..+@@@@..@@@@@..@@@@@.", +"..@......@...@.+@...@.", +"..+@@+..@@@@@..@@@@@..", +".....@..@...@..@......", +".@@@@+.@....@.@.......", +"......................", +".....@..@..+@@@....@..", +"....+@.@...@...@..+@..", +"....@@@...+@..@+..@+..", +"...#@..@..@...@..@+...", +"..+@...@..@@@@...@@@..", +"......................", +"....@@@@@..@..$@....@.", +"....@...@.$@..@....+@.", +"...@@@@@..@$.$@....@+.", +"...@...@..@..@..@..@..", +"..@....@..%@@....@@...", +"......................", +".....@.....@...+@@@@..", +"....+@....+@...@......", +"....@+....@+...+@@+...", +"...@+....@@.......@...", +"...@@@...@....@@@@+...", +"......................", +"...+@@@@.@@@@@..@..$@.", +"...@......+@...$@..@..", +"...+@@+...@+...@$.$@..", +"......@..+@....@..@...", +"..@@@@+..@.....%@@....", +"......................", +"...@@@@@..@@@@@..+@@@.", +"..+@...@..@...@..@...@", +"..@@@@@..@@@@@..+@..@+", +"..@......@...@..@...@.", +".@......@....@..@@@@.."}; diff --git a/wmclock/lang.croatian/weekday.xpm b/wmclock/lang.croatian/weekday.xpm new file mode 100644 index 0000000..ab92c6c --- /dev/null +++ b/wmclock/lang.croatian/weekday.xpm @@ -0,0 +1,48 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 3 1", +" c None", +". c #FFFFFF", +"+ c #000000", +"....................", +".++++...++++..+...+.", +".+...+.+....+.++..+.", +".++++..+....+.+.+.+.", +".+.....+....+.+..++.", +".+......++++..+...+.", +"....................", +".+...+.+++++..++++..", +".+...+...+...+....+.", +".+...+...+...+....+.", +".+...+...+...+....+.", +"..+++....+....++++..", +"....................", +"..++++.+++++..+++++.", +".+.....+....+...+...", +"..+++..+++++....+...", +".....+.+...+....+...", +".++++..+....+.+++++.", +"...++...............", +"..++++.+++++.+++++..", +".+.....+.......+....", +".+.....++++....+....", +".+.....+.......+....", +"..++++.+++++...+....", +"....................", +".++++..+++++.+++++..", +".+...+.+.......+....", +".++++..++++....+....", +".+.....+.......+....", +".+.....+++++...+....", +"....................", +"..++++.+....+.++++..", +".+.....+....+.+...+.", +"..+++..+....+.++++..", +".....+.+....+.+...+.", +".++++...++++..++++..", +"....................", +".+...+.+++++.++++...", +".++..+.+.....+...+..", +".+.+.+.++++..+...+..", +".+..++.+.....+...+..", +".+...+.+++++.++++..."}; diff --git a/wmclock/lang.czech/month.xpm b/wmclock/lang.czech/month.xpm new file mode 100644 index 0000000..d7cdc06 --- /dev/null +++ b/wmclock/lang.czech/month.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 4 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +"X c #514455555144", +"o c #AEBAAAAAAEBA", +" ", +" . ..... X... ", +" o. o. o. . ", +" .o ..... . . ", +" . . . . ", +" X.... X.... X..... ", +" ", +" . o. . . ... ", +" o. . o.. o. . .", +" .o o. . . .o . . ", +" . .o o. .. . o. ", +" X... . . .... ", +" ", +" ....X ....X .....", +" o. . o. . o. ", +" ..... ..... ..... ", +" . . . . . ", +" X.... X . X.... ", +" ", +" X... . o. ....X", +" o. . o. . o. .", +" . . .o o. ..... ", +" . . . . . . ", +" X.... X.. X.... ", +" ", +" .o . . . ..... ", +" o. .o .o .o o. ", +" . . o. . .... ", +" o. o. .. . ", +" . .o . X.... ", +" ", +" ... ..... ....X ", +" . o. o. . ", +" . .... ..... ", +" . . . . ", +" ..... X.... X . ", +" ", +" ... .... ... ", +" . o. . ", +" . .... . ", +" . . . ", +" ..... X.... ..... ", +" ", +" o.... ....X X...X ", +" . o. . o. . ", +" o..o ..... ..... ", +" . . . o. ", +" ....o X . . ", +" ", +" ..... . ....X ", +" o. . o. . ", +" .o . . ..... ", +" o.o .... . . ", +" o..... . . X . ", +" ", +" ....X . . ", +" o. . o. o. ", +" ..... . .o ", +" . . o. . . ", +" X . . .. ", +" ", +" . . o.... ", +" o. o. . ", +" .o . o..o ", +" . o. . ", +" X.... . ....o ", +" ", +" X...X ....X ... ", +" o. . o. . . .", +" ..... ..... . . ", +" o. . . . o. ", +" . X . .... "}; diff --git a/wmclock/lang.czech/weekday.xpm b/wmclock/lang.czech/weekday.xpm new file mode 100644 index 0000000..a75d0d4 --- /dev/null +++ b/wmclock/lang.czech/weekday.xpm @@ -0,0 +1,47 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 2 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +" ", +" .... ... ", +" . . . . ", +" .... . . ", +" . . . ", +" . ... ", +" ", +" . . ..... ", +" . . . ", +" . . . ", +" . . . ", +" ... . ", +" ", +" .... ..... ", +" . . ", +" ... . ", +" . . ", +" .... . ", +" ", +" ... ..... ", +" . . . ", +" . . ", +" . . . ", +" ... . ", +" ", +" .... . ", +" . . . . ", +" .... . . ", +" . ..... ", +" . . . ", +" ", +" .... ... ", +" . . . ", +" ... . . ", +" . . . ", +" .... ... ", +" ", +" . . ..... ", +" .. . . ", +" . . . .... ", +" . .. . ", +" . . ..... "}; diff --git a/wmclock/lang.danish/month.xpm b/wmclock/lang.danish/month.xpm new file mode 100644 index 0000000..606bdf5 --- /dev/null +++ b/wmclock/lang.danish/month.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 4 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +"X c #AAAAAAAAAAAA", +"o c #555555555555", +" ", +" . . . . ", +" X. . X.. X. ", +" .X . . .X . .X ", +" . . .... X. .. ", +" .. . . . . ", +" ", +" o..... ..... ....o", +" . X. X. .", +" X..... ..... ..... ", +" . . . . ", +". o.... o.... ", +" ", +" . . . .....", +" . .. .X . .", +" . . . . . . ..... ", +" . . . .... . . ", +". . . . . . ", +" ", +" . ..... ..... ", +" .X X. . . . ", +" . . ..... ..... ", +" .... . . . ", +" . . . . . ", +" ", +" . . . . ", +" X. .. .X X. ", +" .X. . . . . .X ", +" X. . . .... . . ", +" . . . . .. ", +" ", +" . . X. . . ", +" X. X. . X.. X. ", +" .X .X X. . . .X ", +" . . . .X X. .. ", +" .. o... . . ", +" ", +" . . X. . ", +" X. X. . X. ", +" .X .X X. .X ", +" . . . . . ", +" .. o.. o.... ", +" ", +" . . X. X.... ", +" .X X. . . ", +" . . .X X. X. ... ", +" .... . .X .X . ", +" . . o.. ... ", +" ", +" X.... ..... o...o ", +" . X. X. . ", +" X..X .... ..... ", +" . . X. ", +"....X o.... . ", +" ", +" ... . . ..... ", +" . . . .X X. ", +" . . .. .X ", +" . X. .X . X. ", +" .... .X . . ", +" ", +" . . X... . . ", +" X.. X. . . .X .X ", +" . . .X X. .X X. . ", +"X. .. . . .. ", +". . .... . ", +" ", +" o... .... ... ", +" X. . X. . ", +" . . .... . ", +" . . . . ", +" o.... o.... ..... "}; diff --git a/wmclock/lang.danish/weekday.xpm b/wmclock/lang.danish/weekday.xpm new file mode 100644 index 0000000..227e6ec --- /dev/null +++ b/wmclock/lang.danish/weekday.xpm @@ -0,0 +1,47 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 2 1", +" c #FEFEFEFEFEFE", +". c #000000000000", +" ", +" . . .. . . ", +" .. .. . . .. . ", +" . . . . . . . . ", +" . . ...... . .. ", +" . . . . . . ", +" ", +" ..... ..... ..... ", +" . . . . ", +" . . ..... ", +" . . . . ", +" . ..... . . ", +" ", +" .... . . .... ", +" . . .. . . ", +" . . . . . ... ", +" . . . .. . ", +" .... . . .... ", +" ", +" ..... ... ..... ", +" . . . . . ", +" . . . ..... ", +" . . . . . ", +" . ... . . ", +" ", +" ..... ..... ..... ", +" . . . . ", +" .... ..... ... ", +" . . . . ", +" . . . ..... ", +" ", +" . ..... ..... ", +" . . .. . . ", +" . . .. . ..... ", +" . .. . . . ", +" .... ..... . . ", +" ", +" .... ..... . . ", +" . . .. .. . ", +" ... . .. . . . . ", +" . .. . . .. ", +" .... ..... . . "}; diff --git a/wmclock/lang.dutch/month.xpm b/wmclock/lang.dutch/month.xpm new file mode 100644 index 0000000..3de6128 --- /dev/null +++ b/wmclock/lang.dutch/month.xpm @@ -0,0 +1,83 @@ +/* XPM */ +static char *month_xpm[] = { +/* width height num_colors chars_per_pixel */ +" 22 72 4 1", +/* colors */ +". c #ffffff", +"# c #000000", +"a c #aeaaae", +"b c #515551", +/* pixels */ +"......................", +".....#...#....#....#..", +"....a#...#...a##..a#..", +"....#a..#.#..#a.#.#a..", +".#..#..####.a#...##...", +"..##..#...#.#.....#...", +"......................", +"..b#####..#####..####b", +"..#......a#.....a#...#", +".a#####..#####..#####.", +".#.......#......#...#.", +"#.......b####..b####..", +"......................", +"..#....#....#...#####b", +"..#...##....#a..#...#.", +".#.#.#.#...#.#.#####..", +".#..#..#..####.#...#..", +"#......#.#...##....#..", +"......................", +"....#....#####..#####.", +"....#a..a#...#..#...#.", +"...#.#..#####..#####..", +"..####..#......#...#..", +".#...#.#......#....#..", +"......................", +"....#....#..#####..#..", +"...a#...##.a#.....a#..", +"...#a#.#.#.#####..#...", +"..a#..#..#.#.....a#...", +"..#......#b####..#....", +"......................", +".....#..#..a#..#....#.", +"....a#.a#..#..a##..a#.", +"....#a.#a.a#..#..#.#a.", +".#..#..#..#a.a#...##..", +"..##...b###..#.....#..", +"......................", +"......#..#..a#..#.....", +".....a#.a#..#..a#.....", +".....#a.#a.a#..#a.....", +"..#..#..#..#...#......", +"...##...b##...b####...", +"......................", +".....#...#..a#.a####..", +".....#a.a#..#..#......", +"....#.#.#a.a#.a#.###..", +"...####.#..#a.#a..#...", +"..#...#.b##....###....", +"......................", +"..a####..#####..b###b.", +"..#.....a#.....a#...#.", +"..a##a..####...#####..", +".....#..#.....a#......", +".####a.b####..#.......", +"......................", +"....###...#a.#.#####..", +"...#...#.a#.#a..a#....", +"...#..#..#.#....#a....", +"..#..a#.a#.a#..a#.....", +"..####..#...#a.#......", +"......................", +"..#....#..a###..#...#.", +".a##..a#..#...#.#a.#a.", +".#..#.#a.a#..#a.a#.#..", +"a#...##..#...#...##...", +"#.....#..####....#....", +"......................", +"...b###...####..####..", +"..a#...#.a#....a#.....", +"..#....#.####..#a.....", +"..#...#..#....a#......", +".b####..b####.#####..." +}; diff --git a/wmclock/lang.dutch/weekday.xpm b/wmclock/lang.dutch/weekday.xpm new file mode 100644 index 0000000..4e5b757 --- /dev/null +++ b/wmclock/lang.dutch/weekday.xpm @@ -0,0 +1,47 @@ +/* XPM */ +static char *weekday_xpm[] = { +"20 42 2 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +" ", +" . . . ", +" .. .. . . ", +" . . . . . . ", +" . . . ..... ", +" . . . . ", +" ", +" .... . ", +" . . . ", +" . . . ", +" . . . ", +" .... . ", +" ", +" . . ... ", +" . . . . . ", +" . . . . . . ", +" .. .. . . ", +" . . ... ", +" ", +" .... ... ", +" . . . . ", +" . . . . ", +" . . . . ", +" .... ... ", +" ", +" . . .... ", +" . . . . ", +" . . .... ", +" .. . . ", +" .. . . ", +" ", +" ..... . ", +" . . . ", +" . . . ", +" . ..... ", +" ..... . . ", +" ", +" ..... ... ", +" . . . ", +" . . . ", +" . . . ", +" ..... ... "}; diff --git a/wmclock/lang.english/month.xpm b/wmclock/lang.english/month.xpm new file mode 100644 index 0000000..049e54f --- /dev/null +++ b/wmclock/lang.english/month.xpm @@ -0,0 +1,83 @@ +/* XPM */ +static char *month_xpm[] = { +/* width height num_colors chars_per_pixel */ +" 22 72 4 1", +/* colors */ +". c #000000", +"# c #555555", +"a c #aaaaaa", +"b c #ffffff", +/* pixels */ +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbbb.bbb.bbbb.bbbb.bb", +"bbbba.bbb.bbba..bba.bb", +"bbbb.abb.b.bb.ab.b.abb", +"b.bb.bb....ba.bbb..bbb", +"bb..bb.bbb.b.bbbbb.bbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb#.....bb.....bb....#", +"bb.bbbbbba.bbbbba.bbb.", +"ba.....bb.....bb.....b", +"b.bbbbbbb.bbbbbb.bbb.b", +".bbbbbbb#....bb#....bb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb.bbbb.bbbb.bbbb.....", +"bb.bbb..bbbb.abbb.bbb.", +"b.b.b.b.bbb.b.bb.....b", +"b.bb.bb.bb....bb.bbb.b", +".bbbbbb.b.bbb.b.bbbb.b", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbb.bbbb.....bb.....b", +"bbbb.abba.bbb.bb.bbb.b", +"bbb.b.bb.....bb.....bb", +"bb....bb.bbbbbb.bbb.bb", +"b.bbb.b.bbbbbb.bbbb.bb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbb.bbbb.bbbb.bb.bbb.b", +"bba.bbb..bbbb.bbb.b.bb", +"bb.a.b.b.bbb.b.bba.bbb", +"ba.bb.bb.bb....bb.bbbb", +"b.bbbbbb.b.bbb.bb.bbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbbb.bb.bba.bb.bbbb.b", +"bbbba.ba.bb.bba..bba.b", +"bbbb.ab.aba.bb.bb.b.ab", +"b.bb.bb.bb.aba.bbb..bb", +"bb..bbb#...bb.bbbbb.bb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbbbb.bb.bba.bb.bbbbb", +"bbbbba.ba.bb.bba.bbbbb", +"bbbbb.ab.aba.bb.abbbbb", +"bb.bb.bb.bb.bbb.bbbbbb", +"bbb..bbb#..bbb#....bbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbb.bbb.bba.ba....bbb", +"bbbb.aba.bb.bb.bbbbbbb", +"bbb.b.b.aba.ba.b...bbb", +"bb....b.bb.ab.abb.bbbb", +"b.bbb.b#..bbbb...bbbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"ba....bb.....bb#...#bb", +"b.bbbbba.bbbbba.bbb.bb", +"ba..abb....bbb.....bbb", +"bbbb.bb.bbbbba.bbbbbbb", +"....ab#....bb.bbbbbbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbb...bbb...b.....bbbb", +"bb.bbb.b.bbbbba.bbbbbb", +"bb.bb.bb.bbbbb.abbbbbb", +"b.bba.b.bbbbba.bbbbbbb", +"b....bb....bb.bbbbbbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb.bbbb.bba...bb.bbb.b", +"ba..bba.bb.bbb.b.ab.ab", +"b.bb.b.aba.bb.aba.b.bb", +"a.bbb..bb.bbb.bbb..bbb", +".bbbbb.bb....bbbb.bbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbb#...bbb....bb...bbb", +"bba.bbb.ba.bbbb.bbbbbb", +"bb.bbbb.b....bb.bbbbbb", +"bb.bbb.bb.bbbb.bbbbbbb", +"b#....bb#....b.....bbb" +}; diff --git a/wmclock/lang.english/weekday.xpm b/wmclock/lang.english/weekday.xpm new file mode 100644 index 0000000..ae49bb5 --- /dev/null +++ b/wmclock/lang.english/weekday.xpm @@ -0,0 +1,53 @@ +/* XPM */ +static char *weekday_xpm[] = { +/* width height num_colors chars_per_pixel */ +" 20 42 4 1", +/* colors */ +". c #000000", +"# c #555555", +"a c #aaaaaa", +"b c #ffffff", +/* pixels */ +"bbbbbbbbbbbbbbbbbbbb", +"b.bbb.bb....bb.bbb.b", +"b..b..b.bbbb.b..bb.b", +"b.b.b.b.bbbb.b.b.b.b", +"b.bbb.b.bbbb.b.bb..b", +"b.bbb.bb....bb.bbb.b", +"bbbbbbbbbbbbbbbbbbbb", +"b.....b.bbbb.b.....b", +"bbb.bbb.bbbb.b.bbbbb", +"bbb.bbb.bbbb.b....bb", +"bbb.bbb.bbbb.b.bbbbb", +"bbb.bbbb....bb.....b", +"bbbbbbbbbbbbbbbbbbbb", +"b.bbbb.b.....b....bb", +"b.bbbb.b.bbbbb.bbb.b", +"b.b..b.b....bb.bbb.b", +"b..bb..b.bbbbb.bbb.b", +"b.bbbb.b.....b....bb", +"bbbbbbbbbbbbbbbbbbbb", +"b.....b.bbb.b.bbbb.b", +"bbb.bbb.bbb.b.bbbb.b", +"bbb.bbb.....b.bbbb.b", +"bbb.bbb.bbb.b.bbbb.b", +"bbb.bbb.bbb.bb....bb", +"bbbbbbbbbbbbbbbbbbbb", +"b.....b.....bb.....b", +"b.bbbbb.bbbb.bbb.bbb", +"b....bb.....bbbb.bbb", +"b.bbbbb.bbb.bbbb.bbb", +"b.bbbbb.bbbb.b.....b", +"bbbbbbbbbbbbbbbbbbbb", +"bb....bbb..bbb.....b", +"b.bbbbbb.bb.bbbb.bbb", +"bb...bbb.bb.bbbb.bbb", +"bbbbb.b......bbb.bbb", +"b....bb.bbbb.bbb.bbb", +"bbbbbbbbbbbbbbbbbbbb", +"bb....b.bbbb.b.bbb.b", +"b.bbbbb.bbbb.b..bb.b", +"bb...bb.bbbb.b.b.b.b", +"bbbbb.b.bbbb.b.bb..b", +"b....bbb....bb.bbb.b" +}; diff --git a/wmclock/lang.french/month.xpm b/wmclock/lang.french/month.xpm new file mode 100644 index 0000000..f92eadd --- /dev/null +++ b/wmclock/lang.french/month.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 4 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +"X c #AEBAAAAAAEBA", +"o c #514455555144", +" ", +" . . . . ", +" X. . X.. X. ", +" .X . . .X . .X ", +" . . .... X. .. ", +" .. . . . . ", +" ", +" o..... ..... . . ", +" . X. .X .X ", +" X..... ..... X. . ", +" . . .. ", +". o.... . ", +" ", +" . . . .....", +" . .. .X . .", +" . . . . . . ..... ", +" . . . .... . . ", +". . . . . . ", +" ", +" . . . ..... ", +" .X .X .X . . ", +" . . X. . ..... ", +" .... .. . . ", +" . . . . . ", +" ", +" . . . . ", +" X. .. . X. ", +" .X. . . . . .X ", +" X. . . .... . ", +" . . . . o. ", +" ", +" . . X. . . ", +" X. X. . X.. X. ", +" .X .X X. . . .X ", +" . . . .X X. .. ", +" .. o... . . ", +" ", +" . . X. . ", +" X. X. . X. ", +" .X .X X. .X ", +" . . . . . ", +" .. o.. o.... ", +" ", +" . ... . X. ", +" .X . . X. . ", +" . . . . .X X. ", +" .... . X. . .X ", +" . . .... o.. ", +" ", +" X.... ..... o...o ", +" . X. X. . ", +" X..X .... ..... ", +" . . X. ", +"....X o.... . ", +" ", +" ... ... ..... ", +" . . . X. ", +" . . . .X ", +" . X. . X. ", +" .... .... . ", +" ", +" . . X... . . ", +" X.. X. . . .X .X ", +" . . .X X. .X X. . ", +"X. .. . . .. ", +". . .... . ", +" ", +" o... .... ... ", +" X. . X. . ", +" . . .... . ", +" . . . . ", +" o.... o.... ..... "}; diff --git a/wmclock/lang.french/weekday.xpm b/wmclock/lang.french/weekday.xpm new file mode 100644 index 0000000..fc0c069 --- /dev/null +++ b/wmclock/lang.french/weekday.xpm @@ -0,0 +1,47 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 2 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +" ", +" . . . . . ", +" . . . .. . ", +" . . . . . . ", +" . . . . .. ", +" .... .... . . ", +" ", +" . . .. ..... ", +" .. .. . . . .", +" . . . . . ..... ", +" . . ...... . . ", +" . . . . . .", +" ", +" . . ..... ..... ", +" .. .. . . .", +" . . . .... ..... ", +" . . . . . ", +" . . ..... . .", +" ", +" ... ..... . .", +" . . . .", +" . . .... . .", +" . . . . .", +" ... ..... .... ", +" ", +" . . ..... . . ", +" . .. . .. . ", +" . . .... . . . ", +" . . . . .. ", +" .. ..... . . ", +" ", +" .... .. . . ", +" . . . .. .. ", +" ... . . . . . ", +" . ...... . . ", +" .... . . . . ", +" ", +" .... ..... . . ", +" . . . .. .. ", +" . . . . . . ", +" . . . . . ", +" .... ..... . . "}; diff --git a/wmclock/lang.french2/month.xpm b/wmclock/lang.french2/month.xpm new file mode 100644 index 0000000..d2e06d7 --- /dev/null +++ b/wmclock/lang.french2/month.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char * mois_xpm[] = { +"22 72 4 1", +" c #FFFFFF", +". c #000000", +"X c #AAAAAA", +"o c #555555", +" ", +" . . . . ", +" X. . X.. X. ", +" .X . . .X . .X ", +" . . .... X. .. ", +" .. . . . . ", +" ", +" o..... ..... . . ", +" . X. .X .X ", +" X..... ..... X. . ", +" . . .. ", +". o.... . ", +" ", +" . . . ....o", +" . .. .X . .", +" . . . . . . ..... ", +" . . . .... . . ", +". . . . . . ", +" ", +" . . . ....o ", +" .X .X .X . . ", +" . . X. . ..... ", +" .... .. . . ", +" . . . . . ", +" ", +" . . . X. ", +" X. .. .X .X ", +" .X. . . . . X. ", +" X. . . .... .X ", +" . . . . . ", +" ", +" . . X. X. . .", +" X. X. . . X.. X.", +" .X .X X. X. . . .X", +". . . .X . X. .. ", +" .. o... . . . ", +" ", +" . . X. X. . ", +" X. X. . .X X. ", +" .X .X X. X. .X ", +" . . . . .X . ", +" .. o.. . o.... ", +" ", +" . X.. . X. ", +" .X . . X. . ", +" . . X. .X .X X. ", +" .... . . . .X ", +" . . X... o.. ", +" ", +" X.... ..... o...o ", +" . X. X. . ", +" X..X .... ..... ", +" . . X. ", +" ....X o.... . ", +" ", +" o.. ... ..... ", +" . . . X. ", +" X. .X . .X ", +" . X. . X. ", +" X... .... . ", +" ", +" . . X... . . ", +" X.. X. . . .X .X ", +" . . .X X. .X X. . ", +"X. .. . . .. ", +". . .... . ", +" ", +" o... .... ... ", +" X. . X. . ", +" . . .... . ", +" . . . . ", +" o.... o.... ..... "}; diff --git a/wmclock/lang.french2/weekday.xpm b/wmclock/lang.french2/weekday.xpm new file mode 100644 index 0000000..750685c --- /dev/null +++ b/wmclock/lang.french2/weekday.xpm @@ -0,0 +1,51 @@ +/* XPM */ +static char *jours[] = { +/* width height num_colors chars_per_pixel */ +" 20 42 2 1", +/* colors */ +". c #ffffff", +"# c #000000", +/* pixels */ +"....................", +".#.....#....#.#...#.", +".#.....#....#.##..#.", +".#.....#....#.#.#.#.", +".#.....#....#.#..##.", +".#####..####..#...#.", +"....................", +".#...#...##...####..", +".##.##..#..#..#...#.", +".#.#.#..#..#..####..", +".#...#.######.#..#..", +".#...#.#....#.#...#.", +"....................", +".#...#.######.####..", +".##.##.#......#...#.", +".#.#.#.#####..####..", +".#...#.#......#..#..", +".#...#.######.#...#.", +"....................", +"..#####.#####.#...#.", +"....#...#.....#...#.", +"....#...####..#...#.", +".#..#...#.....#...#.", +"..##....#####..###..", +"....................", +".#...#.######.#...#.", +".#...#.#......##..#.", +"..#.#..#####..#.#.#.", +"..#.#..#......#..##.", +"...#...######.#...#.", +"....................", +"..####...##...#...#.", +".#......#..#..##.##.", +"..###...#..#..#.#.#.", +".....#.######.#...#.", +".####..#....#.#...#.", +"....................", +".#####..#####.#...#.", +".#....#...#...##.##.", +".#....#...#...#.#.#.", +".#....#...#...#...#.", +".#####..#####.#...#." +}; diff --git a/wmclock/lang.german/month.xpm b/wmclock/lang.german/month.xpm new file mode 100644 index 0000000..dcc5807 --- /dev/null +++ b/wmclock/lang.german/month.xpm @@ -0,0 +1,83 @@ +/* XPM */ +static char *month_xpm[] = { +/* width height num_colors chars_per_pixel */ +" 22 72 4 1", +/* colors */ +". c #000000", +"# c #555555", +"a c #aaaaaa", +"b c #ffffff", +/* pixels */ +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbbb.bbb.bbbb.bbbb.bb", +"bbbba.bbb.bbba..bba.bb", +"bbbb.abb.b.bb.ab.b.abb", +"b.bb.bb....ba.bbb..bbb", +"bb..bb.bbb.b.bbbbb.bbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb#.....bb.....bb....#", +"bb.bbbbbba.bbbbba.bbb.", +"ba.....bb.....bb.....b", +"b.bbbbbbb.bbbbbb.bbb.b", +".bbbbbbb#....bb#....bb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb.bbbb.bb....#bb....#", +"bb.bbb..ba.bbb.bbbba.b", +"b.b.b.b.b......bbb.abb", +"b.bb.bb.b.bbb.bba.abbb", +".bbbbbb.#bbbb.ba.....b", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbb.bbbb.....bb.....b", +"bbbb.abba.bbb.bb.bbb.b", +"bbb.b.bb.....bb.....bb", +"bb....bb.bbbbbb.bbb.bb", +"b.bbb.b.bbbbbb.bbbb.bb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbb.bbbb.bbbb.bbbb.bbb", +"bba.bbb..bbbb.bbba.bbb", +"bb.a.b.b.bbb.b.bb.bbbb", +"ba.bb.bb.bb....ba.bbbb", +"b.bbbbbb.b.bbb.b.bbbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbbb.bb.bba.bb.bbbb.b", +"bbbba.ba.bb.bba..bba.b", +"bbbb.ab.aba.bb.bb.b.ab", +"b.bb.bb.bb.aba.bbb..bb", +"bb..bbb#...bb.bbbbb.bb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbbbb.bb.bba.bb.bbbbb", +"bbbbba.ba.bb.bba.bbbbb", +"bbbbb.ab.aba.bb.abbbbb", +"bb.bb.bb.bb.bbb.bbbbbb", +"bbb..bbb#..bbb#....bbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbb.bbb.bba.ba....bbb", +"bbbb.aba.bb.bb.bbbbbbb", +"bbb.b.b.aba.ba.b...bbb", +"bb....b.bb.ab.abb.bbbb", +"b.bbb.b#..bbbb...bbbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"ba....bb.....bb#...#bb", +"b.bbbbba.bbbbba.bbb.bb", +"ba..abb....bbb.....bbb", +"bbbb.bb.bbbbba.bbbbbbb", +"....ab#....bb.bbbbbbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbb...bbb.ab.b.....bbb", +"bb.bbb.ba.b.abba.bbbbb", +"bb.bb.bb.b.bbbb.abbbbb", +"b.bba.ba.ba.bba.bbbbbb", +"b....bb.bbb.ab.bbbbbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb.bbbb.bba...bb.bbb.b", +"ba..bba.bb.bbb.b.ab.ab", +"b.bb.b.aba.bb.aba.b.bb", +"a.bbb..bb.bbb.bbb..bbb", +".bbbbb.bb....bbbb.bbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbb#...bbb....bb.....b", +"bba.bbb.ba.bbbbbbba.bb", +"bb.bbbb.b....bbbb.abbb", +"bb.bbb.bb.bbbbba.abbbb", +"b#....bb#....ba.....bb" +}; diff --git a/wmclock/lang.german/weekday.xpm b/wmclock/lang.german/weekday.xpm new file mode 100644 index 0000000..9ae2cbd --- /dev/null +++ b/wmclock/lang.german/weekday.xpm @@ -0,0 +1,51 @@ +/* XPM */ +static char *weekday_xpm[] = { +/* width height num_colors chars_per_pixel */ +" 20 42 2 1", +/* colors */ +". c #000000", +"# c #ffffff", +/* pixels */ +"####################", +"####.#####.##...####", +"####..###..#.###.###", +"####.#.#.#.#.###.###", +"####.##.##.#.###.###", +"####.#####.##...####", +"####################", +"#######....##.######", +"#######.###.#.######", +"#######.###.#.######", +"#######.###.#.######", +"#######....##.######", +"####################", +"######.#####.#.#####", +"######..###..#.#####", +"######.#.#.#.#.#####", +"######.##.##.#.#####", +"######.#####.#.#####", +"####################", +"#####....###...#####", +"#####.###.#.###.####", +"#####.###.#.###.####", +"#####.###.#.###.####", +"#####....###...#####", +"####################", +"#####.....#....#####", +"#####.#####.###.####", +"#####....##....#####", +"#####.#####.##.#####", +"#####.#####.###.####", +"####################", +"######....###.######", +"#####.######.#.#####", +"######...###.#.#####", +"#########.#.....####", +"#####....##.###.####", +"####################", +"######....##...#####", +"#####.#####.###.####", +"######...##.###.####", +"#########.#.###.####", +"#####....###...#####" +}; diff --git a/wmclock/lang.hungarian/month.xpm b/wmclock/lang.hungarian/month.xpm new file mode 100644 index 0000000..6ef42bc --- /dev/null +++ b/wmclock/lang.hungarian/month.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 4 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +"X c #AEBAAAAAAEBA", +"o c #514455555144", +" ", +" . . . . ", +" X. . X.. X. ", +" .X . . .X . .X ", +" . . .... X. .. ", +" .. . . . . ", +" ", +" o..... ..... ....o", +" . X. X. .", +" X..... ..... ..... ", +" . . . . ", +". o.... o.... ", +" . ", +" . . . . .....", +" . .. . . .", +" . . . . . . ..... ", +" . . . .... . . ", +". . . . . . ", +" . ", +" . . ..... ..... ", +" .X X. . . . ", +" . . ..... ..... ", +" .... . . . ", +" . . . . . ", +" . ", +" . . . . . ", +" X. .. . X. ", +" .X. . . . . .X ", +" X. . . .... . . ", +" . . . . .. ", +" . ", +" . . . . . . ", +" X. X. . X.. X. ", +" .X .X X. . . .X ", +" . . . .X X. .. ", +" .. o... . . ", +" . ", +" . . . . . ", +" X. X. . X. ", +" .X .X X. .X ", +" . . . .X . ", +" .. o.. o.... ", +" ", +" . . X. X.... ", +" .X X. . . ", +" . . .X X. X. ... ", +" .... . .X .X . ", +" . . o.. ... ", +" ", +" X....X...oo.... o...o", +" . X. . X. .", +" X..X .X o... ..... ", +" . . . X. ", +"....X....X.... . ", +" ", +" ... . . ..... ", +" . . . .X X. ", +" . . X.. .X ", +" . X. .X . X. ", +" .... .X . . ", +" ", +" . . X... . . ", +" X.. X. . . .X .X ", +" . . .X X. .X X. . ", +"X. .. . . .. ", +". . .... . ", +" ", +" o... .... X... ", +" X. . X. . ", +" . . .... . ", +" . . . . ", +" o.... o.... ..... "}; diff --git a/wmclock/lang.hungarian/weekday.xpm b/wmclock/lang.hungarian/weekday.xpm new file mode 100644 index 0000000..ea8a2b8 --- /dev/null +++ b/wmclock/lang.hungarian/weekday.xpm @@ -0,0 +1,48 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 2 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +" . ", +" . . ..... ", +" . . . ", +" ..... .... ", +" . . . ", +" . . ..... ", +" ", +" . . ..... ", +" . . . ", +" . . ... ", +" .. . . ", +" . . ..... ", +" ", +" .... ..... ..... ", +" . . . ", +" ... . ... ", +" . . . ", +" .... ..... ..... ", +" . . ", +" .... .... . . ", +" . . . . ", +" . ... . . ", +" . . . . ", +" .... .... ... ", +" . ", +" ..... ..... ", +" . . . ", +" ..... .... ", +" . . ", +" . ..... ", +" ", +" .... ..... ... ", +" . . . . ", +" ... . . . ", +" . . . . ", +" .... ..... ... ", +" ", +" . . . .... ", +" . . . . . ", +" . . . . ... ", +" . . ..... . ", +" . . . .... "}; + diff --git a/wmclock/lang.indonesian/month.xpm b/wmclock/lang.indonesian/month.xpm new file mode 100644 index 0000000..d0f38ab --- /dev/null +++ b/wmclock/lang.indonesian/month.xpm @@ -0,0 +1,83 @@ +/* XPM */ +static char *month_xpm[] = { +/* width height num_colors chars_per_pixel */ +" 22 72 4 1", +/* colors */ +". c #000000", +"# c #555555", +"a c #aaaaaa", +"b c #ffffff", +/* pixels */ +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbbb.bbb.bbbb.bbbb.bb", +"bbbba.bbb.bbba..bba.bb", +"bbbb.abb.b.bb.ab.b.abb", +"b.bb.bb....ba.bbb..bbb", +"bb..bb.bbb.b.bbbbb.bbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb#.....bb.....bb....#", +"bb.bbbbbba.bbbbba.bbb.", +"ba.....bb.....bb.....b", +"b.bbbbbbb.bbbbbb.bbb.b", +".bbbbbbb#....bb#....bb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb.bbbb.bbbb.bbbb.....", +"bb.bbb..bbbb.abbb.bbb.", +"b.b.b.b.bbb.b.bb.....b", +"b.bb.bb.bb....bb.bbb.b", +".bbbbbb.b.bbb.b.bbbb.b", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbb.bbbb.....bb.....b", +"bbbb.abba.bbb.bb.bbb.b", +"bbb.b.bb.....bb.....bb", +"bb....bb.bbbbbb.bbb.bb", +"b.bbb.b.bbbbbb.bbbb.bb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbb.bbbb.bbb.....bb.bb", +"bba.bbb..bba.bbbbba.bb", +"bb.a.b.b.bb.....bb.bbb", +"ba.bb.bb.bb.bbbbba.bbb", +"b.bbbbbb.b#....bb.bbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbbb.bb.bba.bb.bbbb.b", +"bbbba.ba.bb.bba..bba.b", +"bbbb.ab.aba.bb.bb.b.ab", +"b.bb.bb.bb.aba.bbb..bb", +"bb..bbb#...bb.bbbbb.bb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbbbb.bb.bba.bb.bbbbb", +"bbbbba.ba.bb.bba.bbbbb", +"bbbbb.ab.aba.bb.abbbbb", +"bb.bb.bb.bb.bbb.bbbbbb", +"bbb..bbb#..bbb#....bbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbb.bbbba....bb.bba.b", +"bbbb.abb.bbbbbba.bb.bb", +"bbb.b.ba.b...bb.aba.bb", +"bb....b.abb.bbb.bb.abb", +"b.bbb.bb...bbbb#..bbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"ba....bb.....bb#...#bb", +"b.bbbbba.bbbbba.bbb.bb", +"ba..abb....bbb.....bbb", +"bbbb.bb.bbbbba.bbbbbbb", +"....ab#....bb.bbbbbbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbb...bbb.ab.b.....bbb", +"bb.bbb.ba.b.abba.bbbbb", +"bb.bb.bb.b.bbbb.abbbbb", +"b.bba.ba.ba.bba.bbbbbb", +"b....bb.bbb.ab.bbbbbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb.bbbb.bba...bb.bbb.b", +"ba..bba.bb.bbb.b.ab.ab", +"b.bb.b.aba.bb.aba.b.bb", +"a.bbb..bb.bbb.bbb..bbb", +".bbbbb.bb....bbbb.bbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbb#...bbb....bba....b", +"bba.bbb.ba.bbbbbb.bbbb", +"bb.bbbb.b....bbba..abb", +"bb.bbb.bb.bbbbbbbbb.bb", +"b#....bb#....bb....abb" +}; diff --git a/wmclock/lang.indonesian/weekday.xpm b/wmclock/lang.indonesian/weekday.xpm new file mode 100644 index 0000000..1a2e3da --- /dev/null +++ b/wmclock/lang.indonesian/weekday.xpm @@ -0,0 +1,47 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 2 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +" ", +" .... ..... . . ", +" . . .. . ", +" ... .... . . . ", +" . . . .. ", +" .... ..... . . ", +" ", +" .... ..... . ", +" . . . ", +" ... .... . ", +" . . . ", +" .... ..... ..... ", +" ", +" .... .. .... ", +" . . . . . . ", +" .... . . .... ", +" . . ...... . . ", +" . . . . .... ", +" ", +" . . .. . . ", +" . . . . .. .. ", +" ... . . . . . ", +" . . ...... . . ", +" . . . . . . ", +" ", +" . . . . . ", +" . . . .. .. ", +" . . . . . . ", +" . . . . . . ", +" ... ... . . ", +" ", +" .... .. .... ", +" . . . . . ", +" ... . . .... ", +" . ...... . . ", +" .... . . .... ", +" ", +" . . ..... . . ", +" .. .. . .. . ", +" . . . . . . . ", +" . . . . .. ", +" . . ..... . . "}; diff --git a/wmclock/lang.italian/month.xpm b/wmclock/lang.italian/month.xpm new file mode 100644 index 0000000..1ef5fa7 --- /dev/null +++ b/wmclock/lang.italian/month.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 4 1", +" c #FFFFFFFFFFFF", +". c #AEBAAAAAAEBA", +"X c #000000000000", +"o c #514455555144", +" ", +" .XXXX XXXXX X X ", +" X .X .XX .X ", +".X XXX XXXXX X. X X. ", +"X. X X .X XX ", +" XXX oXXXX X X ", +" ", +" oXXXXX XXXXX XXXXo", +" X .X .X X", +" .XXXXX XXXXX XXXXX ", +" X X X X ", +"X oXXXX oXXXX ", +" ", +" X X X XXXXo ", +" X XX X. .X X ", +" X X X X X X XXXXXX ", +" X X X XXXX X X ", +"X X X Xo X ", +" ", +" X XXXXo XXXXo ", +" X. .X X .X X ", +" X X XXXXX XXXXXX ", +" XXXX X X X ", +" X X X X X ", +" ", +" X X X .XXXX", +" .X XX X X ", +" X.X X X X X .X XXX", +" .X X X XXXX X. X ", +" X X X X XXX ", +" ", +" .XXXX X X .X ", +" X XX .X X ", +" .X XXX XX X. .X ", +" X. X XX X X. ", +" XXX X oXXX ", +" ", +" X X .X .XXXX ", +" .X .X X X ", +" X. X. .X .X XXX ", +" X X X X. X ", +" oXXXX oXX XXX ", +" ", +" X .XXXX XXX ", +" X. X X X ", +" X X .X XXX X X ", +" XXXX X. X X .X ", +" X X XXX XXXX ", +" ", +" .XXXX XXXXX XXXXX ", +" X .X .X ", +" .XX. XXXX X. ", +" X X .X ", +"XXXX. oXXXX X ", +" ", +" XXX XXXXX XXXXX ", +" X X .X .X ", +" X X X. X. ", +" X .X .X .X ", +" XXXX X X ", +" ", +" X X .XXX X X ", +" .XX .X X X X. X. ", +" X X X. .X X. .X X ", +".X XX X X XX ", +"X X XXXX X ", +" ", +" oXXX X XXX ", +" .X X XX X ", +" X X XX X ", +" X X XX X ", +" oXXXX X XXXXX "}; diff --git a/wmclock/lang.italian/weekday.xpm b/wmclock/lang.italian/weekday.xpm new file mode 100644 index 0000000..5bf6a03 --- /dev/null +++ b/wmclock/lang.italian/weekday.xpm @@ -0,0 +1,47 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 2 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +" ", +" . . . . . ", +" . . . .. . ", +" . . . . . . ", +" . . . . .. ", +" ..... ... . . ", +" ", +" . . .. .... ", +" .. .. . . . . ", +" . . . . . .... ", +" . . ...... . . ", +" . . . . . . ", +" ", +" . . ..... ..... ", +" .. .. . . . ", +" . . . .... ..... ", +" . . . . . ", +" . . ..... . . ", +" ", +" .... ..... .... ", +" . . . . ", +" . .. . . . ", +" . . . . . ", +" ... ..... .... ", +" ", +" . . ..... . . ", +" . . . .. . ", +" . . .... . . . ", +" .. . . .. ", +" .. ..... . . ", +" ", +" .... .. .... ", +" . . . . . ", +" ... . . .... ", +" . ...... . . ", +" .... . . .... ", +" ", +" .... ... . . ", +" . . . . .. .. ", +" . . . . . . . ", +" . . . . . . ", +" .... ... . . "}; diff --git a/wmclock/lang.norwegian/month.xpm b/wmclock/lang.norwegian/month.xpm new file mode 100644 index 0000000..5f85112 --- /dev/null +++ b/wmclock/lang.norwegian/month.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 4 1", +" c #FEFEFEFEFEFE", +". c #000000000000", +"X c #A9A9A9A9A9A9", +"o c #555555555555", +" ", +" . . . . ", +" X. . X.. X. ", +" .X . . .X . .X ", +" . . .... X. .. ", +" .. . . . . ", +" ", +" o..... ..... ....o", +" . X. X. .", +" X..... ..... ..... ", +" . . . . ", +". o.... o.... ", +" ", +" . . . .....", +" . .. .X . .", +" . . . . . . ..... ", +" . . . .... . . ", +". . . . . . ", +" ", +" . ..... ..... ", +" .X X. . . . ", +" . . ..... ..... ", +" .... . . . ", +" . . . . . ", +" ", +" . . . X. ", +" X. .. . .X ", +" .X. . . . . X. ", +" X. . . .... .X ", +" . . . . . ", +" ", +" . . X. . . ", +" X. X. . X.. X. ", +" .X .X X. . . .X ", +" . . . .X X. .. ", +" .. o... . . ", +" ", +" . . X. . ", +" X. X. . X. ", +" .X .X X. .X ", +" . . . . . ", +" .. o.. o.... ", +" ", +" . . X. X.... ", +" .X X. . . ", +" . . .X X. X. ... ", +" .... . .X .X . ", +" . . o.. ... ", +" ", +" X.... ..... o...o ", +" . X. X. . ", +" X..X .... ..... ", +" . . X. ", +"....X o.... . ", +" ", +" ... . . ..... ", +" . . . .X X. ", +" . . .. .X ", +" . X. .X . X. ", +" .... .X . . ", +" ", +" . . X... . . ", +" X.. X. . . .X .X ", +" . . .X X. .X X. . ", +"X. .. . . .. ", +". . .... . ", +" ", +" o... .... X.... ", +" X. . X. . ", +" . . .... X..X ", +" . . . . ", +" o.... o.... ....X "}; diff --git a/wmclock/lang.norwegian/weekday.xpm b/wmclock/lang.norwegian/weekday.xpm new file mode 100644 index 0000000..227e6ec --- /dev/null +++ b/wmclock/lang.norwegian/weekday.xpm @@ -0,0 +1,47 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 2 1", +" c #FEFEFEFEFEFE", +". c #000000000000", +" ", +" . . .. . . ", +" .. .. . . .. . ", +" . . . . . . . . ", +" . . ...... . .. ", +" . . . . . . ", +" ", +" ..... ..... ..... ", +" . . . . ", +" . . ..... ", +" . . . . ", +" . ..... . . ", +" ", +" .... . . .... ", +" . . .. . . ", +" . . . . . ... ", +" . . . .. . ", +" .... . . .... ", +" ", +" ..... ... ..... ", +" . . . . . ", +" . . . ..... ", +" . . . . . ", +" . ... . . ", +" ", +" ..... ..... ..... ", +" . . . . ", +" .... ..... ... ", +" . . . . ", +" . . . ..... ", +" ", +" . ..... ..... ", +" . . .. . . ", +" . . .. . ..... ", +" . .. . . . ", +" .... ..... . . ", +" ", +" .... ..... . . ", +" . . .. .. . ", +" ... . .. . . . . ", +" . .. . . .. ", +" .... ..... . . "}; diff --git a/wmclock/lang.polish/month.txt b/wmclock/lang.polish/month.txt new file mode 100644 index 0000000..5ea18f9 --- /dev/null +++ b/wmclock/lang.polish/month.txt @@ -0,0 +1,12 @@ +styczeń (january) +luty +marzec +kwiecień +maj +czerwiec +lipiec +sierpień +wrzesień +październik +listopad +grudzień diff --git a/wmclock/lang.polish/month.xpm b/wmclock/lang.polish/month.xpm new file mode 100644 index 0000000..efc646a --- /dev/null +++ b/wmclock/lang.polish/month.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 4 1", +" c #FFFFFFFFFFFF", +"X c #000000000000", +". c #AEBAAAAAAEBA", +"o c #514455555144", +" ", +" .XXX. XXXXX X X ", +" X X X X. X. ", +" XXX X. X. ", +" X X X. X ", +" .XXX. X. .X ", +" ", +" XX .X .X XXXXX. ", +" XX X X. X. ", +" XX X .X X. ", +" XX. X .X X. ", +" XXXXXX XXXX. X. ", +" ", +" X X X .XX .XXXXX", +" X.XX X X X .X ", +"X X.X X X .XX. .X ", +"X X X XXX X X .X ", +"X X X X X X XXXXX.", +" ", +" .X X. .X X .X .X ", +" X XX X X X XX ", +" .XX. .X oX X .X. ", +".X X. X o.X X XX ", +"XX X. .X X .X ", +" ", +" X X X X ", +" X. .XX X X ", +" X X X X X X X ", +" X X X XXXX . X. ", +"X X X X .XXX ", +" ", +" .XXXX XXXXo .XXX .XXo", +" X oX X X X", +".X oX XXX XXo ", +"X oX X. X X ", +"XXXXX XXXXo XXX X X", +" ", +" XX X .XXX. ", +" XX X X X ", +" X. XX XXXX. ", +".XX X X ", +"XXXXXX X. .X ", +" ", +" .XXX. X XXX XXX.", +" X X X X. X X", +" XXX X. XXXX .XXX.", +" X X X. X X. X ", +" .XXX. X. XXXX. X X", +" ", +" .X X .X .XX .XXXXXo", +" X X X X X oX ", +".X oX X .XXX. oX ", +"X o X X X. X oX ", +".X X X X oXXXXX.", +" oX. ", +" XXXX X . ", +" X X X XXXXo ", +" XXXX. X X oX ", +"XX XXXX oXX ", +"X. X X XXXXXX ", +" ", +" XX oX oXXX XXXXXX", +" X X Xo o Xo ", +" XX oX oX XX ", +" X X o X XX ", +"XXXXX X XXXo XX ", +" ", +" XXXXXo .XXXo X X ", +" X X X X X ", +"X. oXX .XXXo .X X ", +"X X X. X X X. ", +"XXXXXX X X oXXX "}; diff --git a/wmclock/lang.polish/weekday.txt b/wmclock/lang.polish/weekday.txt new file mode 100644 index 0000000..582398e --- /dev/null +++ b/wmclock/lang.polish/weekday.txt @@ -0,0 +1,7 @@ +niedziela (sunday) +poniedziałek +wtorek +środa +czwartek +piątek +sobota diff --git a/wmclock/lang.polish/weekday.xpm b/wmclock/lang.polish/weekday.xpm new file mode 100644 index 0000000..d484ae4 --- /dev/null +++ b/wmclock/lang.polish/weekday.xpm @@ -0,0 +1,48 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 3 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +"X c #BEFBBEFBBEFB", +" ", +" .... .... . . ", +" . . .X X. .X . ", +" .... . . . . . ", +" . .X X. . X. ", +" . .... . .. ", +" ", +" . X . ..... .. ", +" . . . . . X. ", +" . . . . ... ", +" . . . . . . ", +" . . . . . ", +" .X ", +" ...X .... ... ", +" . . X. .X . ", +" ... .... . . ", +" . . . . . ", +" X... . . ... ", +" ", +" .... ..... . . ", +" . X. . X . ", +" . X. . . . ", +" . X. . . . ", +" .... ..... . . ", +" ", +" .... ..... . .X", +" . . . . .X ", +" .... . ..X ", +" . . . .X ", +" . . . .X", +" ", +" .... ... .... ", +" . .X X. . . ", +" ... . . .... ", +" . .X X. . . ", +" .... ... .... ", +" ", +" .. . .... ..... ", +" .X. . .X . . ", +" . . . . . X. ", +" . .X. .X . X. ", +" . .. .... ..... "}; diff --git a/wmclock/lang.portuguese/month.xpm b/wmclock/lang.portuguese/month.xpm new file mode 100644 index 0000000..d8f1db1 --- /dev/null +++ b/wmclock/lang.portuguese/month.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 4 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +"X c #AAAAAAAAAAAA", +"o c #555555555555", +" ", +" . . . . ", +" X. . X.. X. ", +" .X . . .X . .X ", +" . . .... X. .. ", +" .. . . . . ", +" ", +" o..... ..... . . ", +" . X. .X .X ", +" X..... ..... X. . ", +" . . .. ", +". o.... . ", +" ", +" . . . ....o ", +" . .. .X X. . ", +" . . . . . . ...... ", +" . . . .... . . ", +". . . .o . ", +" ", +" . ....o ....o ", +" .X X. . X. . ", +" . . ..... ...... ", +" .... . . . . ", +" . . o.... o . ", +" ", +" . . . . ", +" X. .. . X. ", +" .X. . . . . . ", +" X. . . .... X. ", +" . . . . . ", +" ", +" . . X. . . ", +" X. X. . X.. X. ", +" .X .X X. . . .X ", +" . . . .X X. .. ", +" .. o... . . ", +" ", +" . . X. . ", +" X. X. . X. ", +" .X .X X. .X ", +" . . . . . ", +" .. o.. o.... ", +" ", +" . X.... ... ", +" .X . . . ", +" . . X. ... . . ", +" .... .X . . X. ", +" . . ... .... ", +" ", +" X.... ..... ..... ", +" . X. X. ", +" X..X .... .X ", +" . . X. ", +"....X o.... . ", +" ", +" ... . X. ..... ", +" . . X. . X. ", +" . . .X X. .X ", +" . X. . . X. ", +" .... o.. . ", +" ", +" . . X... . . ", +" X.. X. . . .X .X ", +" . . .X X. .X X. . ", +"X. .. . . .. ", +". . .... . ", +" ", +" o... .... ..... ", +" X. . X. X. ", +" . . .... .X ", +" . . . X.X ", +" o.... o.... X..... "}; diff --git a/wmclock/lang.portuguese/weekday.xpm b/wmclock/lang.portuguese/weekday.xpm new file mode 100644 index 0000000..a56a9fd --- /dev/null +++ b/wmclock/lang.portuguese/weekday.xpm @@ -0,0 +1,47 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 2 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +" ", +" .... ..... ..... ", +" . . . ", +" ... .... . ... ", +" . . . . ", +" .... ..... .... ", +" ", +" ..... ..... ..... ", +" . . . . ", +" . ... ..... ", +" . . . . ", +" . ..... . . ", +" ", +" .... . . .. ", +" . . . . . . ", +" . . . . . . . ", +" . ... . . ...... ", +" ..... .. . . ", +" ", +" .... . . ..... ", +" . . . . . ", +" . . . . . . ", +" . ... . . . ", +" ..... ... ..... ", +" ", +" .... ..... . . ", +" . . . . ", +" ... .... .. ", +" . . . . ", +" .... ..... . . ", +" ", +" .... .. .... ", +" . . . . . ", +" ... . . .... ", +" . ...... . . ", +" .... . . .... ", +" ", +" .... ... . . ", +" . . . . .. .. ", +" . . . . . . . ", +" . . . . . . ", +" .... ... . . "}; diff --git a/wmclock/lang.russian/month.xpm b/wmclock/lang.russian/month.xpm new file mode 100644 index 0000000..644a72c --- /dev/null +++ b/wmclock/lang.russian/month.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 4 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +"X c #AEBAAAAAAEBA", +"o c #514455555144", +" ", +" .... . . ... ", +" . . . . . . ", +" .... ..... .... ", +" . . . . . . ", +" . . . . ..... ", +" ", +" ... .... ... ", +" . . . . . . ", +" . . . ... .... ", +" ... . . . ", +" . ..... ..... ", +" ", +" . . . .....", +" . .. .X . .", +" . . . . . . ..... ", +" . . . .... . ", +". . . . . ", +" ", +" . ..... ..... ", +" .X . . . . ", +" . . . . ..... ", +" .... . . . ", +" . . . . . ", +" ", +" . . . . . .", +" X. .. . . . ", +" .X. . . . . . ... ", +"X. . . .... .. . ", +". . . . . . ", +" ", +" . . . .. . .", +" . . . . . . .", +" . ... ... . ..... ", +" .. . . . . . . ", +". . . ... . . ", +" ", +" . . . .. ... ", +" . . . . . . . ", +" . ... ... . . . ", +" .. . . . . . . ", +". . . ... .. . ", +" ", +" . ... ... ", +" .X . . . ", +" . . .... . ", +" .... . . . ", +" . . ..... . ", +" ", +" ... ..... . . ", +" . . X. . . ", +" .. .... ..... ", +" . . . . . ", +" ...X o.... . . ", +" ", +" ... . . ..... ", +" . . . . X. ", +" . . .. .X ", +" . X. . . X. ", +" .... . . . ", +" ", +" . . ... .... ", +" . . . . . . ", +" ..... . . .... ", +" . . . X. . . ", +". . .... . . ", +" ", +" ... .... . . ", +" . . X. . . ", +" . . .... .. ", +" . . . . . ", +" o..... o.... . . "}; diff --git a/wmclock/lang.russian/weekday.xpm b/wmclock/lang.russian/weekday.xpm new file mode 100644 index 0000000..89d8522 --- /dev/null +++ b/wmclock/lang.russian/weekday.xpm @@ -0,0 +1,48 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 3 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +"X c #BEFBBEFBBEFB", +" ", +" ..... .... . . ", +" . . .X X. . . ", +" . . . . ..... ", +" . . .X X. . . ", +" . . .... . . ", +" ", +" ... ..... .... ", +" . . . . X. ", +" ..... . .... ", +" . . . . ", +" ..... . . ", +" ", +" ... .... ... ", +" .X X. . X. .X . ", +" . .... . . ", +" .X X. . . . ", +" ... . ...... ", +" ", +" . . ..... ... ", +" . . . . . ", +" ..... . .... ", +" . . . . ", +" . . ..... ", +" ", +" ..... ..... . . ", +" . . . . . ", +" . . . .... ", +" . . . . . ", +" . . . . . ", +" ", +" ... . . .... ", +" .X X. .X X. . ", +" . ... .... ", +" .X X. . . . ", +" ... ... ..... ", +" ", +" ... .... ... ", +" . . .X X. .X X. ", +" .... . . . ", +" . . .X X. .X X. ", +" ..... .... ... "}; diff --git a/wmclock/lang.slovene/month.xpm b/wmclock/lang.slovene/month.xpm new file mode 100644 index 0000000..020a5ec --- /dev/null +++ b/wmclock/lang.slovene/month.xpm @@ -0,0 +1,81 @@ +/* XPM */ +static char *month_xpm[] = { +/* width height num_colors chars_per_pixel */ +" 22 72 2 1", +/* colors */ +". c #000000", +"b c #ffffff", +/* pixels */ +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbbbb.bb....bb..bbb.b", +"bbbbbb.b.bbbb.b.b.bb.b", +"bbbbbb.b......b.bb.b.b", +"b.bbbb.b.bbbb.b.bbb..b", +"bb....bb.bbbb.b.bbbb.b", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb.....bb.....b.....bb", +"b.bbbbbb.bbbbbb.bbbb.b", +"b.....bb....bbb.....bb", +"b.bbbbbb.bbbbbb.bbbb.b", +"b.bbbbbbb.....b.....bb", +"bbbbbbbbbbbbbbbbbbbbbb", +"b.bbbb.bb....bb.....bb", +"b..bb..b.bbbb.b.bbbb.b", +"b.b..b.b......b.....bb", +"b.bbbb.b.bbbb.b.bbbb.b", +"b.bbbb.b.bbbb.b.bbbb.b", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb....bb.....bb.....bb", +"b.bbbb.b.bbbb.b.bbbb.b", +"b......b.....bb.....bb", +"b.bbbb.b.bbbbbb.bbbb.b", +"b.bbbb.b.bbbbbb.bbbb.b", +"bbbbbbbbbbbbbbbbbbbbbb", +"b.bbbb.bb....bbbbbbb.b", +"b..bb..b.bbbb.bbbbbb.b", +"b.b..b.b......bbbbbb.b", +"b.bbbb.b.bbbb.b.bbbb.b", +"b.bbbb.b.bbbb.bb....bb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbbbb.b.bbbb.b..bbb.b", +"bbbbbb.b.bbbb.b.b.bb.b", +"bbbbbb.b.bbbb.b.bb.b.b", +"b.bbbb.b.bbbb.b.bbb..b", +"bb....bbb....bb.bbbb.b", +"bbbbbbbbbbbbbbbbbbbbbb", +"bbbbbb.b.bbbb.b.bbbbbb", +"bbbbbb.b.bbbb.b.bbbbbb", +"bbbbbb.b.bbbb.b.bbbbbb", +"b.bbbb.b.bbbb.b.bbbbbb", +"bb....bbb....bbb.....b", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb....bb.bbbb.bb....bb", +"b.bbbb.b.bbbb.b.bbbbbb", +"b......b.bbbb.b.bb...b", +"b.bbbb.bb.bb.bb.bbbb.b", +"b.bbbb.bbb..bbbb....bb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb.....bb.....b.....bb", +"b.bbbbbb.bbbbbb.bbbb.b", +"bb....bb.....bb.....bb", +"bbbbbb.b.bbbbbb.bbbbbb", +"b.....bbb.....b.bbbbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"bb....bb.bbbb.b......b", +"b.bbbb.b.bbb.bbbb.bbbb", +"b.bbbb.b....bbbbb.bbbb", +"b.bbbb.b.bbb.bbbb.bbbb", +"bb....bb.bbbb.bbb.bbbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"b..bbb.bb....bb.bbbb.b", +"b.b.bb.b.bbbb.b.bbbb.b", +"b.bb.b.b.bbbb.b.bbbb.b", +"b.bbb..b.bbbb.bb.bb.bb", +"b.bbbb.bb....bbbb..bbb", +"bbbbbbbbbbbbbbbbbbbbbb", +"b.....bbb.....bb.....b", +"b.bbbb.b.bbbbbb.bbbbbb", +"b.bbbb.b.....bb.bbbbbb", +"b.bbbb.b.bbbbbb.bbbbbb", +"b.....bbb.....bb.....b" +}; diff --git a/wmclock/lang.slovene/weekday.xpm b/wmclock/lang.slovene/weekday.xpm new file mode 100644 index 0000000..8aefdbb --- /dev/null +++ b/wmclock/lang.slovene/weekday.xpm @@ -0,0 +1,51 @@ +/* XPM */ +static char *weekday_xpm[] = { +/* width height num_colors chars_per_pixel */ +" 20 42 2 1", +/* colors */ +". c #000000", +"b c #ffffff", +/* pixels */ +"bbbbbbbbbbbbbbbbbbbb", +"bb....bbb...bb.bbb.b", +"bb.bbb.b.bbb.b..bb.b", +"bb....bb.bbb.b.b.b.b", +"bb.bbbbb.bbb.b.bb..b", +"bb.bbbbbb...bb.bbb.b", +"bbbbbbbbbbbbbbbbbbbb", +"bb.....bb...bb....bb", +"bbbb.bbb.bbb.b.bbb.b", +"bbbb.bbb.bbb.b....bb", +"bbbb.bbb.bbb.b.bbb.b", +"bbbb.bbbb...bb.bbb.b", +"bbbbbbbbbbbbbbbbbbbb", +"bbb....b....bbb....b", +"bb.bbbbb.bbb.b.bbbbb", +"bbb...bb....bb....bb", +"bbbbbb.b.bbb.b.bbbbb", +"bb....bb.bbb.bb....b", +"bbbbbbbbbbbbbbbbbbbb", +"bbbb..bbb....b.....b", +"bbb....b.bbbbbbb.bbb", +"bb.bbbbb....bbbb.bbb", +"bb.bbbbb.bbbbbbb.bbb", +"bbb....bb....bbb.bbb", +"bbbbbbbbbbbbbbbbbbbb", +"bb....bbb....b.....b", +"bb.bbb.b.bbbbbbb.bbb", +"bb....bb....bbbb.bbb", +"bb.bbbbb.bbbbbbb.bbb", +"bb.bbbbbb....bbb.bbb", +"bbbbbbbbbbbbbbbbbbbb", +"bbb....bb...bb....bb", +"bb.bbbbb.bbb.b.bbb.b", +"bbb...bb.bbb.b....bb", +"bbbbbb.b.bbb.b.bbb.b", +"bb....bbb...bb....bb", +"bbbbbbbbbbbbbbbbbbbb", +"bb.bbb.bb....b....bb", +"bb..bb.b.bbbbb.bbb.b", +"bb.b.b.b....bb.bbb.b", +"bb.bb..b.bbbbb.bbb.b", +"bb.bbb.bb....b....bb" +}; diff --git a/wmclock/lang.spanish/month.xpm b/wmclock/lang.spanish/month.xpm new file mode 100644 index 0000000..6a6741a --- /dev/null +++ b/wmclock/lang.spanish/month.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 4 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +"X c #AEBAAAAAAEBA", +"o c #514455555144", +" ", +" ..... . . .....", +" X. X.. X. X. ", +" ..... .X . .X ..... ", +" . X. .. . ", +"o.... . . o.... ", +" ", +" o..... ..... ....o", +" . X. X. .", +" X..... ..... ..... ", +" . . . . ", +". o.... o.... ", +" ", +" . . . ....o ", +" . .. .X X. . ", +" . . . . . . ...... ", +" . . . .... . . ", +". . . .o . ", +" ", +" . ....o ....o ", +" .X X. . X. . ", +" . . ..... ...... ", +" .... . . . . ", +" . . o.... . . ", +" ", +" . . . . . ", +" X. .. . . . ", +" .X. . . . . X. ", +" X. . . .... . ", +" . . . . . ", +" ", +" . . X. . . ", +" X. X. . X.. X. ", +" .X .X X. . . .X ", +" . . . .X X. .. ", +" .. o... . . ", +" ", +" . . X. . ", +" X. X. . X. ", +" .X .X X. .X ", +" . . . . . ", +" .. o.. o.... ", +" ", +" . X.... ... ", +" .X . . . ", +" . . X. ... . . ", +" .... .X . . X. ", +" . . ... .... ", +" ", +" X.... ..... o...o ", +" . X. X. . ", +" X..X .... ..... ", +" . . X. ", +"....X o.... . ", +" ", +" ... ... ..... ", +" . . . X. ", +" . . . .X ", +" . X. . X. ", +" .... .... . ", +" ", +" . . X... . . ", +" X.. X. . . .X .X ", +" . . .X X. .X X. . ", +"X. .. . . .. ", +". . .... . ", +" ", +" o... . ... ", +" X. . .. . ", +" . . .. . ", +" . . .. . ", +" o.... . ..... "}; diff --git a/wmclock/lang.spanish/weekday.xpm b/wmclock/lang.spanish/weekday.xpm new file mode 100644 index 0000000..cfe4057 --- /dev/null +++ b/wmclock/lang.spanish/weekday.xpm @@ -0,0 +1,47 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 2 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +" ", +" . . . . . ", +" . . . .. . ", +" . . . . . . ", +" . . . . .. ", +" ..... ... . . ", +" ", +" . . .. .... ", +" .. .. . . . . ", +" . . . . . .... ", +" . . ...... . . ", +" . . . . . . ", +" ", +" . . ..... ..... ", +" .. .. . . ", +" . . . . .... ", +" . . . . ", +" . . ..... ..... ", +" ", +" . . . ..... ", +" . . . . ", +" . . . .... ", +" . . . . . ", +" ... ... ..... ", +" ", +" . . ..... ..... ", +" . . . . ", +" . . . .... ", +" .. . . ", +" .. ..... ..... ", +" ", +" .... .. .... ", +" . . . . . ", +" ... . . .... ", +" . ...... . . ", +" .... . . .... ", +" ", +" .... ... . . ", +" . . . . .. .. ", +" . . . . . . . ", +" . . . . . . ", +" .... ... . . "}; diff --git a/wmclock/lang.swedish/month.xpm b/wmclock/lang.swedish/month.xpm new file mode 100644 index 0000000..606bdf5 --- /dev/null +++ b/wmclock/lang.swedish/month.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 4 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +"X c #AAAAAAAAAAAA", +"o c #555555555555", +" ", +" . . . . ", +" X. . X.. X. ", +" .X . . .X . .X ", +" . . .... X. .. ", +" .. . . . . ", +" ", +" o..... ..... ....o", +" . X. X. .", +" X..... ..... ..... ", +" . . . . ", +". o.... o.... ", +" ", +" . . . .....", +" . .. .X . .", +" . . . . . . ..... ", +" . . . .... . . ", +". . . . . . ", +" ", +" . ..... ..... ", +" .X X. . . . ", +" . . ..... ..... ", +" .... . . . ", +" . . . . . ", +" ", +" . . . . ", +" X. .. .X X. ", +" .X. . . . . .X ", +" X. . . .... . . ", +" . . . . .. ", +" ", +" . . X. . . ", +" X. X. . X.. X. ", +" .X .X X. . . .X ", +" . . . .X X. .. ", +" .. o... . . ", +" ", +" . . X. . ", +" X. X. . X. ", +" .X .X X. .X ", +" . . . . . ", +" .. o.. o.... ", +" ", +" . . X. X.... ", +" .X X. . . ", +" . . .X X. X. ... ", +" .... . .X .X . ", +" . . o.. ... ", +" ", +" X.... ..... o...o ", +" . X. X. . ", +" X..X .... ..... ", +" . . X. ", +"....X o.... . ", +" ", +" ... . . ..... ", +" . . . .X X. ", +" . . .. .X ", +" . X. .X . X. ", +" .... .X . . ", +" ", +" . . X... . . ", +" X.. X. . . .X .X ", +" . . .X X. .X X. . ", +"X. .. . . .. ", +". . .... . ", +" ", +" o... .... ... ", +" X. . X. . ", +" . . .... . ", +" . . . . ", +" o.... o.... ..... "}; diff --git a/wmclock/lang.swedish/weekday.xpm b/wmclock/lang.swedish/weekday.xpm new file mode 100644 index 0000000..9563ed2 --- /dev/null +++ b/wmclock/lang.swedish/weekday.xpm @@ -0,0 +1,47 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 2 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +" ", +" . . .. . . ", +" .. .. .. .. . ", +" . . . . . . . . ", +" . . ...... . .. ", +" . . . . . . ", +" ", +" ..... ..... ..... ", +" . . . ", +" . . .... ", +" . . . ", +" . ..... ..... ", +" ", +" .... . . .... ", +" . . .. . . ", +" . . . . . ... ", +" . . . .. . ", +" .... . . .... ", +" ", +" ..... ... ..... ", +" . . . . . ", +" . . . ..... ", +" . . . . . ", +" . ... . . ", +" ", +" ..... ..... ..... ", +" . . . . ", +" .... ..... ... ", +" . . . . ", +" . . . ..... ", +" ", +" . .. .. ..... ", +" . .... . . ", +" . . . ..... ", +" . . . . . ", +" .... .... . . ", +" ", +" .... .. .. . . ", +" . .... .. . ", +" ... . . . . . ", +" . . . . .. ", +" .... .... . . "}; diff --git a/wmclock/lang.ukrainian/month.xpm b/wmclock/lang.ukrainian/month.xpm new file mode 100644 index 0000000..3d7a0db --- /dev/null +++ b/wmclock/lang.ukrainian/month.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char * month_xpm[] = { +"22 72 4 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +"X c #AAAAAAAAAAAA", +"o c #555555555555", +" ", +" ... . . . ", +" X. X. X. X. ", +" . . .. . ", +" . . . ", +" .. o o ", +" ", +" . . ..X .... ", +" X.X X. . . X. ", +" X. . ... . . ", +" X. . . . . . ", +" . . . X.. o ", +" ", +" .... .... .....", +" X. X. X. .", +" ..... .... .....X", +" . . . . ", +" o.... o... . ", +" ", +" . .o .... . ", +" X. . X. . X. ", +" ... ..... . ", +" ..o . . . ", +" o .o o.... o ", +" ", +" ..... ..... . ", +" X. X. . . ", +" . .....X . . ", +" . . .... ", +" o . . . ", +" ", +" . . .... ..... ", +" . X. X. X. . ", +" ... .... .....X ", +" . . . ", +" o o... . ", +" ", +" . . . .... ", +" X.X . .. X. X. ", +" X. . . X.. . . ", +" X. . .. . . . ", +" . . . . o o ", +" ", +" o...o ..... ..... ", +" . X. X. . ", +" . .... .....X ", +" . . . ", +" o...o o.... . ", +" ", +" .... ..... ..... ", +" X. . X. X. . ", +" ..... .... .....X ", +" . . . . ", +"o.... .... . ", +" ", +" . . . ... .... ", +" o.X. . . . X. . ", +" ....o . . ..... ", +"o. . . . X. . . ", +". o o. .... o.... ", +" ", +" . . . o...o ", +" X.X . .. . ", +" X. . . X.. . ", +" X. . .. . . ", +" . . . . o...o ", +" ", +" .... ..... . . ", +" X. X. . . X. ", +" . .....X o... ", +" . . . ", +" o . ...o "}; diff --git a/wmclock/lang.ukrainian/weekday.xpm b/wmclock/lang.ukrainian/weekday.xpm new file mode 100644 index 0000000..d6daf68 --- /dev/null +++ b/wmclock/lang.ukrainian/weekday.xpm @@ -0,0 +1,49 @@ +/* XPM */ +static char * weekday_xpm[] = { +"20 42 4 1", +" c #FFFFFFFFFFFF", +". c #000000000000", +"X c #00000000FFFF", +"o c #FFFF00000000", +" ", +"..... ... . . ", +". . . . . . ", +". . . . ..... ", +". . . . . . ", +". . ... . . . ", +" ", +".... ... .... ", +". . . . . ", +".... . .... ", +". . . . . ", +".... ... .... . ", +" ", +" ... ..... .... ", +". . . . . ", +". .... .... ", +". . . . ", +" ... ..... . . ", +" ", +". . ..... ..... ", +". . . . ", +" .... .... . ", +" . . . ", +" . ..... . . ", +" ", +"..... . ... ..... ", +". . . . . . ", +". . ... . ", +". . . . . ", +". . . . . .", +" ", +" XXX X X XXXX ", +"X X X X X ", +"X XXXX XXXX ", +"X X X X X ", +" XXX XXX XXXX X ", +" ", +"o o ooooo oo ", +"o o o o o ", +"ooooo oooo o o ", +"o o o ooooo ", +"o o ooooo o o o "}; diff --git a/wmclock/month.xpm b/wmclock/month.xpm new file mode 120000 index 0000000..9d65086 --- /dev/null +++ b/wmclock/month.xpm @@ -0,0 +1 @@ +./lang.english/month.xpm \ No newline at end of file diff --git a/wmclock/weekday.xpm b/wmclock/weekday.xpm new file mode 120000 index 0000000..f7e9add --- /dev/null +++ b/wmclock/weekday.xpm @@ -0,0 +1 @@ +./lang.english/weekday.xpm \ No newline at end of file diff --git a/wmclock/wmclock.c b/wmclock/wmclock.c new file mode 100644 index 0000000..9dfd287 --- /dev/null +++ b/wmclock/wmclock.c @@ -0,0 +1,1093 @@ +/* wmclock.c: a dockable clock applet for Window Maker + * created 1999-Apr-09 jmk + * + * by Jim Knoble + * Copyright (C) 1999 Jim Knoble + * + * Significant portions of this software are derived from asclock by + * Beat Christen . Such portions are copyright + * by Beat Christen and the other authors of asclock. + * + * Disclaimer: + * + * The software is provided "as is", without warranty of any kind, + * express or implied, including but not limited to the warranties of + * merchantability, fitness for a particular purpose and + * noninfringement. In no event shall the author(s) be liable for any + * claim, damages or other liability, whether in an action of + * contract, tort or otherwise, arising from, out of or in connection + * with the software or the use or other dealings in the software. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dynlist.h" + +/**********************************************************************/ +#define ONLY_SHAPED_WINDOW 1 + +#define NUM_TIME_POSITIONS 5 +#define NUM_X_POSITIONS 11 +#define NUM_Y_POSITIONS 4 + +#define DIGIT_1_X_POS 0 +#define DIGIT_2_X_POS 1 +#define DIGIT_3_X_POS 3 +#define DIGIT_4_X_POS 4 +#define DIGIT_Y_POS 0 +#define LED_NUM_Y_OFFSET 0 +#define LED_THIN_1_X_OFFSET 13 +#define LED_NUM_WIDTH 9 +#define LED_NUM_HEIGHT 11 +#define LED_THIN_1_WIDTH 5 + +#define COLON_X_POS 2 +#define COLON_Y_POS DIGIT_Y_POS +#define COLON_X_OFFSET 90 +#define COLON_Y_OFFSET 0 +#define BLANK_X_OFFSET 119 +#define BLANK_Y_OFFSET COLON_Y_OFFSET +#define COLON_WIDTH 3 +#define COLON_HEIGHT 11 + +#define AMPM_X_POS 5 +#define AM_X_OFFSET 94 +#define AM_Y_OFFSET 5 +#define PM_X_OFFSET 107 +#define PM_Y_OFFSET 5 +#define AM_WIDTH 12 +#define AM_HEIGHT 6 +#define PM_WIDTH 11 +#define PM_HEIGHT 6 + +#define MONTH_X_POS 10 +#define MONTH_Y_POS 3 +#define MONTH_X_OFFSET 0 +#define MONTH_WIDTH 22 +#define MONTH_HEIGHT 6 + +#define DATE_LEFT_X_POS 7 +#define DATE_CENTER_X_POS 8 +#define DATE_RIGHT_X_POS 9 +#define DATE_Y_POS 2 +#define DATE_Y_OFFSET 0 +#define DATE_NUM_WIDTH 9 +#define DATE_NUM_HEIGHT 13 + +#define WEEKDAY_X_POS 6 +#define WEEKDAY_Y_POS 1 +#define WEEKDAY_X_OFFSET 0 +#define WEEKDAY_WIDTH 21 +#define WEEKDAY_HEIGHT 6 + +#define OUR_WINDOW_EVENTS (ExposureMask | ButtonPressMask | StructureNotifyMask) + +#define LED_XPM_BRIGHT_LINE_INDEX 3 +#define LED_XPM_BRIGHT_CHAR '+' +#define LED_XPM_DIM_LINE_INDEX 4 +#define LED_XPM_DIM_CHAR '@' + +#define DEFAULT_XPM_CLOSENESS 40000 + +#define DIM_NUMERATOR 5 +#define DIM_DENOMINATOR 10 +#define makeDimColor(c) (((c) * DIM_NUMERATOR) / DIM_DENOMINATOR) + +/**********************************************************************/ +#ifndef ONLY_SHAPED_WINDOW +# include "clk.xpm" +#endif /* !ONLY_SHAPED_WINDOW */ +#include "month.xpm" +#include "weekday.xpm" +#include "xpm/date.xpm" +#include "xpm/led.xpm" +#include "xpm/mask.xbm" +#include "xpm/mask.xpm" + +typedef struct _XpmIcon { + Pixmap pixmap; + Pixmap mask; + XpmAttributes attributes; +} XpmIcon; + +void showUsage(void); +void showVersion(void); +int buildCommand(char *, char **, int *, int *); +void executeCommand(char *); +void showError(const char *, const char*); +void showFatalError(const char *, const char*); +void GetXpms(void); +int flushExposeEvents(Window); +void redrawWindow(XpmIcon *); +Pixel GetColor(const char *); +int mytime(void); +void showYear(void); +void showTime12(void); +void showTime24(void); +void showTime(void); +char* extractProgName(char *); +int processArgs(int, char **); + +/**********************************************************************/ +int enable12HourClock = 0; /* default value is 24h format */ +int enableShapedWindow = 1; /* default value is noshape */ +int enableBlinking = 1; /* default is blinking */ +int startIconified = 0; /* default is not iconified */ +int enableYearDisplay = 0; /* default is to show time, not year */ + +int timePos12[NUM_TIME_POSITIONS] = { 5, 14, 24, 28, 37 }; +int timePos24[NUM_TIME_POSITIONS] = { 4, 8, 17, 22, 31 }; +/* with shape */ +int xPosShaped[NUM_X_POSITIONS] = { 0, 0, 0, 0, 0, 40, 17, 17, 22, 27, 15 }; +int yPosShaped[NUM_Y_POSITIONS] = { 3, 21, 30, 45 }; + +#ifndef ONLY_SHAPED_WINDOW +/* no shape */ +int xPosUnshaped[NUM_X_POSITIONS] = { 5, 5, 5, 5, 5, 45, 21, 21, 26, 31, 19 }; +int yPosUnshaped[NUM_Y_POSITIONS] = { 7, 25, 34, 49 }; +#endif /* !ONLY_SHAPED_WINDOW */ + +int xPos[NUM_X_POSITIONS]; +int yPos[NUM_Y_POSITIONS]; + +Display *dpy; +Window rootWindow; +int screen; +int xFd; +fd_set xFdSet; +int displayDepth; +XSizeHints sizeHints; +XWMHints wmHints; +Pixel bgPixel, fgPixel; +GC normalGC; +Window iconWin, win; + +char *progName; +char *className = "WMClock"; +char *geometry = ""; +char *ledColor = "LightSeaGreen"; + +char *commandToExec = NULL; +char *commandBuf = NULL; +int commandLength = 0; +int commandIndex = 0; + +char *errColorCells = "not enough free color cells or xpm not found\n"; + +char *userClockXpm; +char *userMonthXpm; +char *userWeekdayXpm; +int useUserClockXpm = 0; +int useUserMonthXpm = 0; +int useUserWeekdayXpm = 0; + +XpmIcon clockBg, led, months, dateNums, weekdays; +XpmIcon visible; + +time_t actualTime; +long actualMinutes; + +static struct tm *localTime; + +char *usageText[] = { +"Options:", +" -12 show 12-hour time (am/pm)", +" -24 show 24-hour time", +" -year show year instead of time", +" -noblink don't blink", +" -exe start on mouse click", +" -led use as color of led", +#ifndef ONLY_SHAPED_WINDOW +" -clockxpm get clock background from pixmap in ", +#endif /* !ONLY_SHAPED_WINDOW */ +" -monthxpm get month names from pixmap in ", +" -weekdayxpm get weekday names from pixmap in ", +" -version display the version", +NULL +}; + +char *version = VERSION; + +/**********************************************************************/ +/* Display usage information */ +void showUsage(void) +{ + char **cpp; + + fprintf(stderr, "Usage: %s [option [option ...]]\n\n", progName); + for (cpp = usageText; *cpp; cpp++) + { + fprintf(stderr, "%s\n", *cpp); + } + fprintf(stderr,"\n"); + exit(1); +} + +/* Display the program version */ +void showVersion() +{ + fprintf(stderr, "%s version %s\n", progName, version); + exit(1); +} + +/* Build the shell command to execute */ +int buildCommand(char *command, char **buf, int *buf_len, int *i) +{ + int status; + + status = append_string_to_buf(buf, buf_len, i, command); + if (APPEND_FAILURE == status) + { + return (0); + } + status = append_string_to_buf(buf, buf_len, i, " &"); + return ((APPEND_FAILURE == status) ? 0 : 1); +} + +/* Execute the given shell command */ +void executeCommand(char *command) +{ + int status; + + if (NULL == command) + { + return; + } + status = system(command); + + if (-1 == status) + { + perror("system"); + } +} + +/* Display an error message */ +void showError(const char *message, const char *data) +{ + fprintf(stderr,"%s: can't %s %s\n", progName, message, data); +} + +/* Display an error message and exit */ +void showFatalError(const char *message, const char *data) +{ + showError(message, data); + exit(1); +} + +/* Konvertiere XPMIcons nach Pixmaps */ +void GetXpms(void) +{ + static char **clock_xpm; + XColor color; + XWindowAttributes attributes; + char ledBright[64]; + char ledDim[64]; + int status; + +#ifdef ONLY_SHAPED_WINDOW + clock_xpm = mask_xpm; +#else /* !ONLY_SHAPED_WINDOW */ + clock_xpm = enableShapedWindow ? mask_xpm : clk_xpm; +#endif /* ONLY_SHAPED_WINDOW */ + + /* for the colormap */ + XGetWindowAttributes(dpy, rootWindow, &attributes); + + /* get user-defined color */ + if (!XParseColor(dpy, attributes.colormap, ledColor, &color)) + { + showError("parse color", ledColor); + } + + sprintf(ledBright, "%c c #%04X%04X%04X", LED_XPM_BRIGHT_CHAR, + color.red, color.green, color.blue); + led_xpm[LED_XPM_BRIGHT_LINE_INDEX] = &ledBright[0]; + + color.red = makeDimColor(color.red); + color.green = makeDimColor(color.green); + color.blue = makeDimColor(color.blue); + sprintf(&ledDim[0], "%c c #%04X%04X%04X", LED_XPM_DIM_CHAR, + color.red, color.green, color.blue); + led_xpm[LED_XPM_DIM_LINE_INDEX] = &ledDim[0]; + + clockBg.attributes.closeness = DEFAULT_XPM_CLOSENESS; + clockBg.attributes.valuemask |= + (XpmReturnPixels | XpmReturnExtensions | XpmCloseness); + + if (useUserClockXpm) + { + status = XpmReadFileToPixmap(dpy, rootWindow, userClockXpm, + &clockBg.pixmap, &clockBg.mask, + &clockBg.attributes); + } + else + { + status = XpmCreatePixmapFromData(dpy, rootWindow, clock_xpm, + &clockBg.pixmap, &clockBg.mask, + &clockBg.attributes); + } + if (XpmSuccess != status) + { + showFatalError("create clock pixmap:", errColorCells); + } + +#ifdef ONLY_SHAPED_WINDOW + visible.attributes.depth = displayDepth; + visible.attributes.width = clockBg.attributes.width; + visible.attributes.height = clockBg.attributes.height; + visible.pixmap = XCreatePixmap(dpy, rootWindow, visible.attributes.width, + visible.attributes.height, + visible.attributes.depth); +#else /* !ONLY_SHAPED_WINDOW */ + visible.attributes.closeness = DEFAULT_XPM_CLOSENESS; + visible.attributes.valuemask |= + (XpmReturnPixels | XpmReturnExtensions | XpmCloseness); + status = XpmCreatePixmapFromData(dpy, rootWindow, clk_xpm, + &visible.pixmap, &visible.mask, + &visible.attributes); +#endif /* ONLY_SHAPED_WINDOW */ + + led.attributes.closeness = DEFAULT_XPM_CLOSENESS; + led.attributes.valuemask |= + (XpmReturnPixels | XpmReturnExtensions | XpmCloseness); + status = XpmCreatePixmapFromData(dpy, rootWindow, led_xpm, + &led.pixmap, &led.mask, + &led.attributes); + if (XpmSuccess != status) + { + showFatalError("create led pixmap:", errColorCells); + } + + months.attributes.closeness = DEFAULT_XPM_CLOSENESS; + months.attributes.valuemask |= + (XpmReturnPixels | XpmReturnExtensions | XpmCloseness); + if (useUserMonthXpm) + { + status = XpmReadFileToPixmap(dpy, rootWindow, userMonthXpm, + &months.pixmap, &months.mask, + &months.attributes); + } + else + { + status = XpmCreatePixmapFromData(dpy, rootWindow, month_xpm, + &months.pixmap, &months.mask, + &months.attributes); + } + if (XpmSuccess != status) + { + showFatalError("create month pixmap:", errColorCells); + } + + dateNums.attributes.closeness = DEFAULT_XPM_CLOSENESS; + dateNums.attributes.valuemask |= + (XpmReturnPixels | XpmReturnExtensions | XpmCloseness); + status = XpmCreatePixmapFromData(dpy, rootWindow, date_xpm, + &dateNums.pixmap, &dateNums.mask, + &dateNums.attributes); + if (XpmSuccess != status) + { + showFatalError("create date pixmap:", errColorCells); + } + + weekdays.attributes.closeness = DEFAULT_XPM_CLOSENESS; + weekdays.attributes.valuemask |= + (XpmReturnPixels | XpmReturnExtensions | XpmCloseness); + if (useUserWeekdayXpm) + { + status = XpmReadFileToPixmap(dpy, rootWindow, userWeekdayXpm, + &weekdays.pixmap, &weekdays.mask, + &weekdays.attributes); + } + else + { + status = XpmCreatePixmapFromData(dpy, rootWindow, weekday_xpm, + &weekdays.pixmap, &weekdays.mask, + &weekdays.attributes); + } + if (XpmSuccess != status) + { + showFatalError("create weekday pixmap:", errColorCells); + } +} + +/* Remove expose events for a specific window from the queue */ +int flushExposeEvents(Window w) +{ + XEvent dummy; + int i = 0; + + while (XCheckTypedWindowEvent(dpy, w, Expose, &dummy)) + { + i++; + } + return(i); +} + +/* (Re-)Draw the main window and the icon window */ +void redrawWindow(XpmIcon *v) +{ + flushExposeEvents(iconWin); + XCopyArea(dpy, v->pixmap, iconWin, normalGC, + 0, 0, v->attributes.width, v->attributes.height, 0, 0); + flushExposeEvents(win); + XCopyArea(dpy, v->pixmap, win, normalGC, + 0, 0, v->attributes.width, v->attributes.height, 0, 0); +} + +/* Get a Pixel for the given color name */ +Pixel GetColor(const char *colorName) +{ + XColor color; + XWindowAttributes attributes; + + XGetWindowAttributes(dpy, rootWindow, &attributes); + color.pixel = 0; + if (!XParseColor(dpy, attributes.colormap, colorName, &color)) + { + showError("parse color", colorName); + } + else if (!XAllocColor(dpy, attributes.colormap, &color)) + { + showError("allocate color", colorName); + } + return(color.pixel); +} + +/* Fetch the system time and time zone */ +int mytime(void) +{ + struct timeval tv; + struct timezone tz; + + gettimeofday(&tv, &tz); + + return(tv.tv_sec); +} + +/* Display the current year in the LED display */ +void showYear(void) +{ + int year; + int digitXOffset; + int digitYOffset; + + year = localTime->tm_year + 1900; + + digitYOffset = LED_NUM_Y_OFFSET; + digitXOffset = LED_NUM_WIDTH * (year / 1000); + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + digitXOffset , digitYOffset, LED_NUM_WIDTH, LED_NUM_HEIGHT, + xPos[DIGIT_1_X_POS], yPos[DIGIT_Y_POS]); + digitXOffset = LED_NUM_WIDTH * ((year % 100) % 10); + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + digitXOffset , digitYOffset, LED_NUM_WIDTH, LED_NUM_HEIGHT, + xPos[DIGIT_2_X_POS], yPos[DIGIT_Y_POS]); + digitXOffset = LED_NUM_WIDTH * ((year / 10) % 10); + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + digitXOffset , digitYOffset, LED_NUM_WIDTH, LED_NUM_HEIGHT, + xPos[DIGIT_3_X_POS], yPos[DIGIT_Y_POS]); + digitXOffset = LED_NUM_WIDTH * (year % 10); + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + digitXOffset , digitYOffset, LED_NUM_WIDTH, LED_NUM_HEIGHT, + xPos[DIGIT_4_X_POS], yPos[DIGIT_Y_POS]); +} + +/* Display time in twelve-hour mode, with am/pm indicator */ +void showTime12(void) +{ + int digitXOffset; + int digitYOffset; + int localHour = localTime->tm_hour % 12; + + if (0 == localHour) + { + localHour = 12; + } + if (localTime->tm_hour < 12) + { + /* AM */ + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + AM_X_OFFSET, AM_Y_OFFSET, AM_WIDTH, AM_HEIGHT, + xPos[AMPM_X_POS], yPos[DIGIT_Y_POS] + AM_Y_OFFSET); + } + else + { + /* PM */ + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + PM_X_OFFSET, PM_Y_OFFSET, PM_WIDTH, PM_HEIGHT, + xPos[AMPM_X_POS], yPos[DIGIT_Y_POS] + PM_Y_OFFSET); + } + + digitYOffset = LED_NUM_Y_OFFSET; + if (localHour > 9) + { + digitXOffset = LED_THIN_1_X_OFFSET; + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + digitXOffset, digitYOffset, LED_THIN_1_WIDTH, LED_NUM_HEIGHT, + xPos[DIGIT_1_X_POS], yPos[DIGIT_Y_POS]); + } + digitXOffset = LED_NUM_WIDTH * (localHour % 10); + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + digitXOffset, digitYOffset, LED_NUM_WIDTH, LED_NUM_HEIGHT, + xPos[DIGIT_2_X_POS], yPos[DIGIT_Y_POS]); + digitXOffset = LED_NUM_WIDTH * (localTime->tm_min / 10); + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + digitXOffset, digitYOffset, LED_NUM_WIDTH, LED_NUM_HEIGHT, + xPos[DIGIT_3_X_POS], yPos[DIGIT_Y_POS]); + digitXOffset = LED_NUM_WIDTH * (localTime->tm_min % 10); + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + digitXOffset, digitYOffset, LED_NUM_WIDTH, LED_NUM_HEIGHT, + xPos[DIGIT_4_X_POS], yPos[DIGIT_Y_POS]); +} + +/* Display time in 24-hour mode, without am/pm indicator */ +void showTime24(void) +{ + int digitXOffset; + int digitYOffset; + + digitYOffset = LED_NUM_Y_OFFSET; + digitXOffset = LED_NUM_WIDTH * (localTime->tm_hour / 10); + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + digitXOffset, digitYOffset, LED_NUM_WIDTH, LED_NUM_HEIGHT, + xPos[DIGIT_1_X_POS], yPos[DIGIT_Y_POS]); + digitXOffset = LED_NUM_WIDTH * (localTime->tm_hour % 10); + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + digitXOffset, digitYOffset, LED_NUM_WIDTH, LED_NUM_HEIGHT, + xPos[DIGIT_2_X_POS], yPos[DIGIT_Y_POS]); + digitXOffset = LED_NUM_WIDTH * (localTime->tm_min / 10); + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + digitXOffset, digitYOffset, LED_NUM_WIDTH, LED_NUM_HEIGHT, + xPos[DIGIT_3_X_POS], yPos[DIGIT_Y_POS]); + digitXOffset = LED_NUM_WIDTH * (localTime->tm_min % 10); + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + digitXOffset, digitYOffset, LED_NUM_WIDTH, LED_NUM_HEIGHT, + xPos[DIGIT_4_X_POS], yPos[DIGIT_Y_POS]); +} + +void showTime(void) +{ + int xOffset; + int yOffset; + + /* Zeit auslesen */ + actualTime = mytime(); + actualMinutes = actualTime / 60; + + localTime = localtime(&actualTime); + + /* leere clock holen */ + XCopyArea(dpy, clockBg.pixmap, visible.pixmap, normalGC, + 0, 0, sizeHints.width, sizeHints.height, 0, 0); + + if (enableYearDisplay) + { + showYear(); + } + else if (enable12HourClock) + { + showTime12(); + } + else + { + showTime24(); + } + + /* Monat */ + xOffset = MONTH_X_OFFSET; + yOffset = MONTH_HEIGHT * (localTime->tm_mon); + XCopyArea(dpy, months.pixmap, visible.pixmap, normalGC, + xOffset, yOffset, MONTH_WIDTH, MONTH_HEIGHT, + xPos[MONTH_X_POS], yPos[MONTH_Y_POS]); + + /* Datum */ + yOffset = DATE_Y_OFFSET; + if (localTime->tm_mday > 9) + { + xOffset = DATE_NUM_WIDTH * (((localTime->tm_mday / 10) + 9) % 10); + XCopyArea(dpy, dateNums.pixmap, visible.pixmap, normalGC, + xOffset, yOffset, DATE_NUM_WIDTH, DATE_NUM_HEIGHT, + xPos[DATE_LEFT_X_POS], yPos[DATE_Y_POS]); + xOffset = DATE_NUM_WIDTH * (((localTime->tm_mday % 10) + 9) % 10); + XCopyArea(dpy, dateNums.pixmap, visible.pixmap, normalGC, + xOffset, yOffset, DATE_NUM_WIDTH, DATE_NUM_HEIGHT, + xPos[DATE_RIGHT_X_POS], yPos[DATE_Y_POS]); + } + else + { + xOffset = DATE_NUM_WIDTH * (localTime->tm_mday - 1); + XCopyArea(dpy, dateNums.pixmap, visible.pixmap, normalGC, + xOffset, yOffset, DATE_NUM_WIDTH, DATE_NUM_HEIGHT, + xPos[DATE_CENTER_X_POS], yPos[DATE_Y_POS]); + } + + /* Wochentag */ + xOffset = WEEKDAY_X_OFFSET; + yOffset = WEEKDAY_HEIGHT * ((localTime->tm_wday + 6) % 7); + XCopyArea(dpy, weekdays.pixmap, visible.pixmap, normalGC, + xOffset, yOffset, WEEKDAY_WIDTH, WEEKDAY_HEIGHT, + xPos[WEEKDAY_X_POS], yPos[WEEKDAY_Y_POS]); + + if ((!enableBlinking) && (!enableYearDisplay)) + { + /* Sekunden Doppelpunkt ein */ + xOffset = COLON_X_OFFSET; + yOffset = COLON_Y_OFFSET; + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + xOffset, yOffset, COLON_WIDTH, COLON_HEIGHT, + xPos[COLON_X_POS], yPos[COLON_Y_POS]); + } +} + +/* Extract program name from the zeroth program argument */ +char *extractProgName(char *argv0) +{ + char *prog_name = NULL; + + if (NULL != argv0) + { + prog_name = strrchr(argv0, '/'); + if (NULL == prog_name) + { + prog_name = argv0; + } + else + { + prog_name++; + } + } + return (prog_name); +} + +/* Process program arguments and set corresponding options */ +int processArgs(int argc, char **argv) +{ + int i; + + for (i = 1; i < argc; i++) + { + if (0 == strcmp(argv[i], "--")) + { + break; + } + else if ((0 == strcmp(argv[i], "-12")) || + (0 == strcmp(argv[i], "-1")) || + (0 == strcmp(argv[i], "--12"))) + { + enable12HourClock = 1; + } + else if ((0 == strcmp(argv[i], "-24")) || + (0 == strcmp(argv[i], "-2")) || + (0 == strcmp(argv[i], "--24"))) + { + enable12HourClock = 0; + } + else if ((0 == strcmp(argv[i], "-exe")) || + (0 == strcmp(argv[i], "-e")) || + (0 == strcmp(argv[i], "--exe"))) + { + if (++i >= argc) + { + showUsage(); + } + commandToExec = argv[i]; + } + else if ((0 == strcmp(argv[i], "-led")) || + (0 == strcmp(argv[i], "-l")) || + (0 == strcmp(argv[i], "--led"))) + { + if (++i >= argc) + { + showUsage(); + } + ledColor = argv[i]; + } + else if ((0 == strcmp(argv[i], "-clockxpm")) || + (0 == strcmp(argv[i], "-c")) || + (0 == strcmp(argv[i], "--clockxpm"))) + { +#ifndef ONLY_SHAPED_WINDOW + if (++i >= argc) + { + showUsage(); + } + userClockXpm = argv[i]; + useUserClockXpm = 1; +#endif /* !ONLY_SHAPED_WINDOW */ + } + else if ((0 == strcmp(argv[i], "-monthxpm")) || + (0 == strcmp(argv[i], "-m")) || + (0 == strcmp(argv[i], "--monthxpm"))) + { + if (++i >= argc) + { + showUsage(); + } + userMonthXpm = argv[i]; + useUserMonthXpm = 1; + } + else if ((0 == strcmp(argv[i], "-weekdayxpm")) || + (0 == strcmp(argv[i], "-w")) || + (0 == strcmp(argv[i], "--weekdayxpm"))) + { + if (++i >= argc) + { + showUsage(); + } + userWeekdayXpm = argv[i]; + useUserWeekdayXpm = 1; + } + else if ((0 == strcmp(argv[i], "-noblink")) || + (0 == strcmp(argv[i], "-n")) || + (0 == strcmp(argv[i], "--noblink"))) + { + enableBlinking = 0; + } + else if ((0 == strcmp(argv[i], "-year")) || + (0 == strcmp(argv[i], "-y")) || + (0 == strcmp(argv[i], "--year"))) + { + enableYearDisplay = 1; + } + else if ((0 == strcmp(argv[i], "-position")) || + (0 == strcmp(argv[i], "-p")) || + (0 == strcmp(argv[i], "--position"))) + { +#ifndef ONLY_SHAPED_WINDOW + if (++i >= argc) + { + showUsage(); + } + geometry = argv[i]; +#endif /* !ONLY_SHAPED_WINDOW */ + } + else if ((0 == strcmp(argv[i], "-shape")) || + (0 == strcmp(argv[i], "-s")) || + (0 == strcmp(argv[i], "--shape"))) + { + enableShapedWindow = 1; + } + else if ((0 == strcmp(argv[i], "-iconic")) || + (0 == strcmp(argv[i], "-i")) || + (0 == strcmp(argv[i], "--iconic"))) + { +#ifndef ONLY_SHAPED_WINDOW + startIconified = 1; +#endif /* !ONLY_SHAPED_WINDOW */ + } + else if ((0 == strcmp(argv[i], "-version")) || + (0 == strcmp(argv[i], "-V")) || + (0 == strcmp(argv[i], "--version"))) + { + showVersion(); + } + else if ((0 == strcmp(argv[i], "-help")) || + (0 == strcmp(argv[i], "-h")) || + (0 == strcmp(argv[i], "--help"))) + { + showUsage(); + } + else + { + fprintf(stderr, "%s: unrecognized option `%s'\n", + progName, argv[i]); + showUsage(); + } + } + return (i); +} + +/**********************************************************************/ +int main(int argc, char **argv) +{ + int i; + unsigned int borderWidth = 0; + char *displayName = NULL; + XGCValues gcValues; + unsigned long gcMask; + XEvent event; + XTextProperty wmName; + XClassHint classHint; + Pixmap shapeMask; + struct timeval nextEvent; + + /* Parse command line options */ + progName = extractProgName(argv[0]); + processArgs(argc, argv); + + /* init led position */ +#ifndef ONLY_SHAPED_WINDOW + for (i = 0; i < NUM_Y_POSITIONS; i++) + { + yPos[i] = enableShapedWindow ? yPosShaped[i] : yPosUnshaped[i]; + } + for (i = 0; i < NUM_X_POSITIONS; i++) + { + xPos[i] = enableShapedWindow ? xPosShaped[i] : xPosUnshaped[i]; + } +#else /* ONLY_SHAPED_WINDOW */ + for (i = 0; i < NUM_Y_POSITIONS; i++) + { + yPos[i] = yPosShaped[i]; + } + for (i = 0; i < NUM_X_POSITIONS; i++) + { + xPos[i] = xPosShaped[i]; + } +#endif /* !ONLY_SHAPED_WINDOW */ + for (i = 0; i < NUM_TIME_POSITIONS; i++) + { + xPos[i] += enable12HourClock ? timePos24[i] : timePos12[i]; + } + + /* Open the display */ + dpy = XOpenDisplay(displayName); + if (NULL == dpy) + { + fprintf(stderr, "%s: can't open display %s\n", progName, + XDisplayName(displayName)); + exit(1); + } + screen = DefaultScreen(dpy); + rootWindow = RootWindow(dpy, screen); + displayDepth = DefaultDepth(dpy, screen); + xFd = XConnectionNumber(dpy); + + /* Icon Daten nach XImage konvertieren */ + GetXpms(); + + /* Create a window to hold the banner */ + sizeHints.x = 0; + sizeHints.y = 0; + sizeHints.min_width = clockBg.attributes.width; + sizeHints.min_height = clockBg.attributes.height; + sizeHints.max_width = clockBg.attributes.width; + sizeHints.max_height = clockBg.attributes.height; + sizeHints.base_width = clockBg.attributes.width; + sizeHints.base_height = clockBg.attributes.height; + sizeHints.flags = USSize | USPosition | PMinSize | PMaxSize | PBaseSize; + + bgPixel = GetColor("white"); + fgPixel = GetColor("black"); + + XWMGeometry(dpy, screen, geometry, NULL, borderWidth, &sizeHints, + &sizeHints.x, &sizeHints.y, &sizeHints.width, &sizeHints.height, + &sizeHints.win_gravity); + sizeHints.width = clockBg.attributes.width; + sizeHints.height = clockBg.attributes.height; + + win = XCreateSimpleWindow(dpy, rootWindow, sizeHints.x, sizeHints.y, + sizeHints.width, sizeHints.height, + borderWidth, fgPixel, bgPixel); + iconWin = XCreateSimpleWindow(dpy, win, sizeHints.x, sizeHints.y, + sizeHints.width, sizeHints.height, + borderWidth, fgPixel, bgPixel); + + /* Hints aktivieren */ + XSetWMNormalHints(dpy, win, &sizeHints); + classHint.res_name = progName; + classHint.res_class = className; + XSetClassHint(dpy, win, &classHint); + + XSelectInput(dpy, win, OUR_WINDOW_EVENTS); + XSelectInput(dpy, iconWin, OUR_WINDOW_EVENTS); + + if (0 == XStringListToTextProperty(&progName, 1, &wmName)) + { + fprintf(stderr, "%s: can't allocate window name text property\n", + progName); + exit(-1); + } + XSetWMName(dpy, win, &wmName); + + /* Create a GC for drawing */ + gcMask = GCForeground | GCBackground | GCGraphicsExposures; + gcValues.foreground = fgPixel; + gcValues.background = bgPixel; + gcValues.graphics_exposures = False; + normalGC = XCreateGC(dpy, rootWindow, gcMask, &gcValues); + + if (enableShapedWindow) + { + shapeMask = XCreateBitmapFromData(dpy, win, (char *)mask_bits, + mask_width, mask_height); + XShapeCombineMask(dpy, win, ShapeBounding, 0, 0, shapeMask, ShapeSet); + XShapeCombineMask(dpy, iconWin, ShapeBounding, 0, 0, shapeMask, + ShapeSet); + } + + wmHints.initial_state = WithdrawnState; + wmHints.icon_window = iconWin; + wmHints.icon_x = sizeHints.x; + wmHints.icon_y = sizeHints.y; + wmHints.window_group = win; + wmHints.flags = StateHint | IconWindowHint | IconPositionHint | + WindowGroupHint; + XSetWMHints(dpy, win, &wmHints); + + XSetCommand(dpy, win, argv, argc); + XMapWindow(dpy,win); + + showTime(); + redrawWindow(&visible); + while (1) + { + if (actualTime != mytime()) + { + actualTime = mytime(); + if (actualMinutes != (actualTime / 60)) + { + showTime(); + if (!enableBlinking) + { + redrawWindow(&visible); + } + } + if (enableBlinking && (!enableYearDisplay)) + { + if (actualTime % 2) + { + /* Sekunden Doppelpunkt ein */ + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + COLON_X_OFFSET, COLON_Y_OFFSET, + COLON_WIDTH, COLON_HEIGHT, + xPos[COLON_X_POS], yPos[COLON_Y_POS]); + } + else + { + /* Sekunden Doppelpunkt aus */ + XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC, + BLANK_X_OFFSET, BLANK_Y_OFFSET, + COLON_WIDTH, COLON_HEIGHT, + xPos[COLON_X_POS], yPos[COLON_Y_POS]); + } + redrawWindow(&visible); + } + if (0 == (actualTime % 2)) + { + /* Clean up zombie processes */ +#ifdef DEBUG + fprintf(stderr, "%s: cleaning up zombies (time %ld)\n", + progName, actualTime); +#endif /* DEBUG */ + if (NULL != commandToExec) + { + waitpid(0, NULL, WNOHANG); + } + } + } + + /* read a packet */ + while (XPending(dpy)) + { + XNextEvent(dpy, &event); + switch(event.type) + { + case Expose: + if (0 == event.xexpose.count) + { + redrawWindow(&visible); + } + break; + case ButtonPress: + if (NULL != commandToExec) + { + pid_t fork_pid; + + if ((NULL == commandBuf) && + (!buildCommand(commandToExec, &commandBuf, + &commandLength, &commandIndex))) + { + break; + } + fork_pid = fork(); + switch (fork_pid) + { + case 0: + /* We're the child process; + * run the command and exit. + */ + executeCommand(commandBuf); + /* When the system() call finishes, we're done. */ + exit(0); + break; + case -1: + /* We're the parent process, but + * fork() gave an error. + */ + perror("fork"); + break; + default: + /* We're the parent process; + * keep on doing what we normally do. + */ + break; + } + } + break; + case DestroyNotify: +#if 0 + XFreeGC(dpy, normalGC); + XDestroyWindow(dpy, win); + XDestroyWindow(dpy, iconWin); +#endif /* 0 */ +#ifdef ONLY_SHAPED_WINDOW + XFreePixmap(dpy, visible.pixmap); +#endif /* ONLY_SHAPED_WINDOW */ + XCloseDisplay(dpy); + exit(0); + default: + break; + } + } + XFlush(dpy); +#ifdef SYSV + if (enableYearDisplay) + { + poll((struct poll *) 0, (size_t) 0, 200); /* 1/5 sec */ + } + else + { + poll((struct poll *) 0, (size_t) 0, 50); /* 5/100 sec */ + } +#else + /* We compute the date of next event, in order to avoid polling */ + if (enableBlinking) + { + gettimeofday(&nextEvent,NULL); + nextEvent.tv_sec = 0; + nextEvent.tv_usec = 1000000-nextEvent.tv_usec; + } + else + { + if (enableYearDisplay) + { + nextEvent.tv_sec = 86400-actualTime%86400; + nextEvent.tv_usec = 0; + } + else + { + nextEvent.tv_sec = 60-actualTime%60; + nextEvent.tv_usec = 0; + } + } + FD_ZERO(&xFdSet); + FD_SET(xFd,&xFdSet); + select(FD_SETSIZE,&xFdSet,NULL,NULL,&nextEvent); +#endif + } + return (0); +} + diff --git a/wmclock/wmclock.man b/wmclock/wmclock.man new file mode 100644 index 0000000..899584e --- /dev/null +++ b/wmclock/wmclock.man @@ -0,0 +1,232 @@ +.\" wmclock.man: manual page for wmclock -*- nroff -*- +.\" created 1999-Apr-09 jmk +.\" +.\" by Jim Knoble +.\" Copyright (C) 1999 Jim Knoble +.\" Based on asclock.man by Dan Weeks. +.\" +.\" Disclaimer: +.\" +.\" The software is provided "as is", without warranty of any kind, +.\" express or implied, including but not limited to the warranties of +.\" merchantability, fitness for a particular purpose and +.\" noninfringement. In no event shall the author(s) be liable for any +.\" claim, damages or other liability, whether in an action of +.\" contract, tort or otherwise, arising from, out of or in connection +.\" with the software or the use or other dealings in the software. +.\" +.de TQ +.br +.ns +.TP \\$1 +.. +.\" ---------------------------------------------------------------- +.TH wmclock 1x "2010-Dec-22" "Version 1.0.14" +.\" ---------------------------------------------------------------- +.SH NAME +.PP +.BR wmclock : +a dockable clock for the Window Maker window manager +.\" ---------------------------------------------------------------- +.SH SYNOPSIS +.HP +\fBwmclock\fP [{\-12|\-24|\-year}] [\-noblink] [\-version] [\-exe \fIprogram\fP] +[\-led \fIcolor\fP] [\-monthxpm \fIfilename\fP] [\-weekdayxpm +\fIfilename\fP] +.\" ---------------------------------------------------------------- +.SH DESCRIPTION +.PP +.B Wmclock +is an applet which displays the date and time in a dockable tile in the +same style as the clock from the NEXTSTEP(tm) operating system. +.B Wmclock +is specially designed for the Window Maker window manager, by Alfredo +Kojima, and features multiple language support, twenty-four-hour and +twelve-hour (am/pm) time display, and, optionally, can run a +user-specified program on a mouse click. +.B Wmclock +is derived from +.BR asclock , +a similar clock for the AfterStep window manager. +.\" ---------------------------------------------------------------- +.SH OPTIONS +.TP +\fB\-12\fR or \fB\-24\fR +Display the time in either twelve-hour format (with am/pm) or +twenty-four-hour format. Defaults to twenty-four-hour display. +.TP +\fB\-year\fR +Display the current year in the LED display instead of the time. +.TP +\fB\-noblink\fR +The separator between the hours and minutes in the time display blinks +by default. This option turns off the blinking and displays a steadily +lit separator instead. +.TP +\fB\-version\fB +Displays the version of Wmclock. +.TP +\fB\-exe\fR \fIcommand\fR +Run +.I command +in the background when a mouse button is pressed over +.BR wmclock . +See below for details. +.TP +\fB\-led\fR \fIcolor\fR +Use +.I color +as the foreground color of the LED display. +.I Color +may be either a named color from the rgb.txt database (for example, +`red' or `chartreuse') or a numeric color specification in any of the usual +X11 formats (for example, `#ff0000' or `rgb:7f/ff/00'). See the +.BR X (1) +man page for more information. +.TP +\fB\-monthxpm\fR \fIfilename\fR +Get month abbreviations from +.IR filename , +which is expected to be in the XPM format. See below for details. +.TP +\fB\-weekdayxpm\fR \fIfilename\fR +Get weekday abbreviations from +.IR filename , +which is expected to be in the XPM format. See below for details. +.\" ---------------------------------------------------------------- +.SH INVOCATION AND EXAMPLES +.PP +The simplest way to start +.B wmclock +is: +.PP +.RS +.TQ +wmclock +.RE +.PP +.B Wmclock +displays in its own appicon, which you can place in Window Maker's dock +by holding down the [Alt] or [Meta] key and dragging +.B wmclock +to the dock with the primary mouse button (usually the left one). +.PP +For a more complicated example: +.PP +.RS +.TQ +wmclock \-12 \-led gold \-exe /usr/GNUstep/Apps/WPrefs.app/WPrefs +.RE +.PP +This displays 12-hour time in an amber-colored LED display, and starts +Window Maker's preferences utility when you click on +.BR wmclock . +.\" ---------------------------------------------------------------- +.SH DETAILS +.SS Running Commands +.PP +When you use +.B wmclock +with the +.B \-exe +option, +.B wmclock +will run the command you specify whenever you press a mouse button +while the mouse cursor is over +.BR wmclock . +.B Wmclock +uses the +.BR system (3) +function from the C library (and ultimately +.BR /bin/sh ) +to run the command; hence, the command must be in Bourne-shell syntax. +.SS Using Alternate Month and Weekday Abbreviations +.PP +You can use the +.B \-monthxpm +and +.B \-weekdayxpm +options to convince +.B wmclock +to display month and day-of-week abbreviations in a language besides +the one it was compiled with, or to display them in a language that +.B wmclock +does not yet support. The files you specify must be in the XPM format, +and they must follow the same strict size and placement as the month +and weekday XPMs that come in the +.B wmclock +source package. Each weekday abbreviation must be 21 pixels wide and 6 +pixels high; each month abbreviation must be 22 pixels wide and 6 +pixels high. The month abbreviations must be arranged vertically, +beginning with January at the top and continuing down to December at +the bottom. The weekday abbreviations must also be arranged +vertically, beginning with Monday at the top and continuing to Sunday +at the bottom. +.SS Obsolete Options +.PP +In order to maintain command-line compatibility (mostly) with +.BR asclock , +.B wmclock +accepts a few options on the command line without complaining, even +though they don't have any effect. The options which +.B wmclock +accepts in this manner are +.B \-shape +and +.BR \-iconic . +Some dockable versions of +.B asclock +required one or both of these options to become properly dockable. +However, Since +.B wmclock +is designed for Window Maker's dock, it already displays in a shaped +window in its own dockable appicon. +.\" ---------------------------------------------------------------- +.SH BUGS +.PP +.B Wmclock +shouldn't run a command on a single click; should use a double click +instead. +.PP +.B Wmclock +should use Alfredo Kojima's libdockapp library instead of inventing its +own wheel. +.\" ---------------------------------------------------------------- +.SH SEE ALSO +.PP +X(1), asclock(1x), wmaker(1x), system(3) +.\" ---------------------------------------------------------------- +.SH COPYRIGHT AND LICENSE +.PP +Copyright (C) 1999 by Jim Knoble . Significant +portions of +.B wmclock +are directly derived from +.B asclock +by Beat Christen, who, along with +.BR asclock 's +other authors, owns the copyright to those portions of +.BR wmclock . +.PP +.B Wmclock +is licensed under the GNU General Public License, version 2, or (at +your option) any later version. See for more +information. +.SH AUTHORS +.TQ +Jim Knoble +.TQ +Beat Christen , author of \fBasclock\fI +.\" ---------------------------------------------------------------- +.SH DISCLAIMER +.PP +The software is provided ``as is'', without warranty of any kind, +express or implied, including but not limited to the warranties of +merchantability, fitness for a particular purpose and noninfringement. +In no event shall the author(s) be liable for any claim, damages or +other liability, whether in an action of contract, tort or otherwise, +arising from, out of or in connection with the software or the use or +other dealings in the software. +.PP +Your mileage may vary. Eat your vegetables. + diff --git a/wmclock/wmclock.man.in b/wmclock/wmclock.man.in new file mode 100644 index 0000000..0cda9c3 --- /dev/null +++ b/wmclock/wmclock.man.in @@ -0,0 +1,232 @@ +.\" wmclock.man: manual page for wmclock -*- nroff -*- +.\" created 1999-Apr-09 jmk +.\" +.\" by Jim Knoble +.\" Copyright (C) 1999 Jim Knoble +.\" Based on asclock.man by Dan Weeks. +.\" +.\" Disclaimer: +.\" +.\" The software is provided "as is", without warranty of any kind, +.\" express or implied, including but not limited to the warranties of +.\" merchantability, fitness for a particular purpose and +.\" noninfringement. In no event shall the author(s) be liable for any +.\" claim, damages or other liability, whether in an action of +.\" contract, tort or otherwise, arising from, out of or in connection +.\" with the software or the use or other dealings in the software. +.\" +.de TQ +.br +.ns +.TP \\$1 +.. +.\" ---------------------------------------------------------------- +.TH wmclock 1x "@DATE@" "Version @VERSION@" +.\" ---------------------------------------------------------------- +.SH NAME +.PP +.BR wmclock : +a dockable clock for the Window Maker window manager +.\" ---------------------------------------------------------------- +.SH SYNOPSIS +.HP +\fBwmclock\fP [{\-12|\-24|\-year}] [\-noblink] [\-version] [\-exe \fIprogram\fP] +[\-led \fIcolor\fP] [\-monthxpm \fIfilename\fP] [\-weekdayxpm +\fIfilename\fP] +.\" ---------------------------------------------------------------- +.SH DESCRIPTION +.PP +.B Wmclock +is an applet which displays the date and time in a dockable tile in the +same style as the clock from the NEXTSTEP(tm) operating system. +.B Wmclock +is specially designed for the Window Maker window manager, by Alfredo +Kojima, and features multiple language support, twenty-four-hour and +twelve-hour (am/pm) time display, and, optionally, can run a +user-specified program on a mouse click. +.B Wmclock +is derived from +.BR asclock , +a similar clock for the AfterStep window manager. +.\" ---------------------------------------------------------------- +.SH OPTIONS +.TP +\fB\-12\fR or \fB\-24\fR +Display the time in either twelve-hour format (with am/pm) or +twenty-four-hour format. Defaults to twenty-four-hour display. +.TP +\fB\-year\fR +Display the current year in the LED display instead of the time. +.TP +\fB\-noblink\fR +The separator between the hours and minutes in the time display blinks +by default. This option turns off the blinking and displays a steadily +lit separator instead. +.TP +\fB\-version\fB +Displays the version of Wmclock. +.TP +\fB\-exe\fR \fIcommand\fR +Run +.I command +in the background when a mouse button is pressed over +.BR wmclock . +See below for details. +.TP +\fB\-led\fR \fIcolor\fR +Use +.I color +as the foreground color of the LED display. +.I Color +may be either a named color from the rgb.txt database (for example, +`red' or `chartreuse') or a numeric color specification in any of the usual +X11 formats (for example, `#ff0000' or `rgb:7f/ff/00'). See the +.BR X (1) +man page for more information. +.TP +\fB\-monthxpm\fR \fIfilename\fR +Get month abbreviations from +.IR filename , +which is expected to be in the XPM format. See below for details. +.TP +\fB\-weekdayxpm\fR \fIfilename\fR +Get weekday abbreviations from +.IR filename , +which is expected to be in the XPM format. See below for details. +.\" ---------------------------------------------------------------- +.SH INVOCATION AND EXAMPLES +.PP +The simplest way to start +.B wmclock +is: +.PP +.RS +.TQ +wmclock +.RE +.PP +.B Wmclock +displays in its own appicon, which you can place in Window Maker's dock +by holding down the [Alt] or [Meta] key and dragging +.B wmclock +to the dock with the primary mouse button (usually the left one). +.PP +For a more complicated example: +.PP +.RS +.TQ +wmclock \-12 \-led gold \-exe /usr/GNUstep/Apps/WPrefs.app/WPrefs +.RE +.PP +This displays 12-hour time in an amber-colored LED display, and starts +Window Maker's preferences utility when you click on +.BR wmclock . +.\" ---------------------------------------------------------------- +.SH DETAILS +.SS Running Commands +.PP +When you use +.B wmclock +with the +.B \-exe +option, +.B wmclock +will run the command you specify whenever you press a mouse button +while the mouse cursor is over +.BR wmclock . +.B Wmclock +uses the +.BR system (3) +function from the C library (and ultimately +.BR /bin/sh ) +to run the command; hence, the command must be in Bourne-shell syntax. +.SS Using Alternate Month and Weekday Abbreviations +.PP +You can use the +.B \-monthxpm +and +.B \-weekdayxpm +options to convince +.B wmclock +to display month and day-of-week abbreviations in a language besides +the one it was compiled with, or to display them in a language that +.B wmclock +does not yet support. The files you specify must be in the XPM format, +and they must follow the same strict size and placement as the month +and weekday XPMs that come in the +.B wmclock +source package. Each weekday abbreviation must be 21 pixels wide and 6 +pixels high; each month abbreviation must be 22 pixels wide and 6 +pixels high. The month abbreviations must be arranged vertically, +beginning with January at the top and continuing down to December at +the bottom. The weekday abbreviations must also be arranged +vertically, beginning with Monday at the top and continuing to Sunday +at the bottom. +.SS Obsolete Options +.PP +In order to maintain command-line compatibility (mostly) with +.BR asclock , +.B wmclock +accepts a few options on the command line without complaining, even +though they don't have any effect. The options which +.B wmclock +accepts in this manner are +.B \-shape +and +.BR \-iconic . +Some dockable versions of +.B asclock +required one or both of these options to become properly dockable. +However, Since +.B wmclock +is designed for Window Maker's dock, it already displays in a shaped +window in its own dockable appicon. +.\" ---------------------------------------------------------------- +.SH BUGS +.PP +.B Wmclock +shouldn't run a command on a single click; should use a double click +instead. +.PP +.B Wmclock +should use Alfredo Kojima's libdockapp library instead of inventing its +own wheel. +.\" ---------------------------------------------------------------- +.SH SEE ALSO +.PP +X(1), asclock(1x), wmaker(1x), system(3) +.\" ---------------------------------------------------------------- +.SH COPYRIGHT AND LICENSE +.PP +Copyright (C) 1999 by Jim Knoble . Significant +portions of +.B wmclock +are directly derived from +.B asclock +by Beat Christen, who, along with +.BR asclock 's +other authors, owns the copyright to those portions of +.BR wmclock . +.PP +.B Wmclock +is licensed under the GNU General Public License, version 2, or (at +your option) any later version. See for more +information. +.SH AUTHORS +.TQ +Jim Knoble +.TQ +Beat Christen , author of \fBasclock\fI +.\" ---------------------------------------------------------------- +.SH DISCLAIMER +.PP +The software is provided ``as is'', without warranty of any kind, +express or implied, including but not limited to the warranties of +merchantability, fitness for a particular purpose and noninfringement. +In no event shall the author(s) be liable for any claim, damages or +other liability, whether in an action of contract, tort or otherwise, +arising from, out of or in connection with the software or the use or +other dealings in the software. +.PP +Your mileage may vary. Eat your vegetables. + diff --git a/wmclock/wmclock.spec.in b/wmclock/wmclock.spec.in new file mode 100644 index 0000000..b8c90a0 --- /dev/null +++ b/wmclock/wmclock.spec.in @@ -0,0 +1,128 @@ +# User-Defined Macros: +# %%define +%define Name wmclock +%define Version @VERSION@ +%define Release 1 +%define Prefix /usr/local +%define ExecPrefix /usr/local +Summary: dockable clock applet for Window Maker +Name: %{Name} +Version: %{Version} +Release: %{Release} +#Epoch: +Copyright: GPL +Group: User Interface/X +URL: http://www.bluestop.org/wmclock/ +Source0: http://www.bluestop.org/wmclock/%{Name}-%{Version}.tar.gz +#Patch0: +#Prefix: %{Prefix} +BuildRoot: /tmp/%{Name}-%{Version}-%{Release}-root +#Provides: +#Requires: +#Obsoletes: + +%description +Wmclock is an applet which displays the date and time in a dockable +tile in the same style as the clock from the NEXTSTEP(tm) operating +system. Wmclock is specially designed for the Window Maker window +manager, by Alfredo Kojima, and features multiple language support, +twenty-four-hour and twelve-hour (am/pm) time display, and, optionally, +can run a user-specified program on a mouse click. Wmclock is derived +from asclock, a similar clock for the AfterStep window manager. + +%prep +%setup +#%patch0 -b .orig + +#function Replace() { +# local fil="$1" +# local sep="$2" +# local old="$3" +# local new="$4" +# local suf="$5" +# [ -z "${suf}" ] && suf='~' +# mv -f ${fil} ${fil}${suf} +# cat ${fil}${suf} | sed -e "s${sep}${old}${sep}${new}${sep}g" >$fil +#} + +%build +if [ -z "${CC}" ]; then + if [ -n "`which gcc`" ]; then + CC="gcc" + else + CC="cc" + fi +fi +export CC + +./configure --lang english +make CC="${CC}" CDEBUGFLAGS="${RPM_OPT_FLAGS}" + +%install +function CheckBuildRoot() { + # do a few sanity checks on the BuildRoot + # to make sure we don't damage a system + case "${RPM_BUILD_ROOT}" in + ''|' '|/|/bin|/boot|/dev|/etc|/home|/lib|/mnt|/root|/sbin|/tmp|/usr|/var) + echo "Yikes! Don't use '${RPM_BUILD_ROOT}' for a BuildRoot!" + echo "The BuildRoot gets deleted when this package is rebuilt;" + echo "something like '/tmp/build-blah' is a better choice." + return 1 + ;; + *) return 0 + ;; + esac +} +function CleanBuildRoot() { + if CheckBuildRoot; then + rm -rf "${RPM_BUILD_ROOT}" + else + exit 1 + fi +} +CleanBuildRoot + +for i in \ + %{Prefix} \ + %{Prefix}/share \ + %{Prefix}/share/%{Name} \ + %{ExecPrefix} \ +; do + mkdir -p "${RPM_BUILD_ROOT}${i}" +done + +make DESTDIR="${RPM_BUILD_ROOT}" install +make DESTDIR="${RPM_BUILD_ROOT}" install.man +make DESTDIR="${RPM_BUILD_ROOT}" install.share + +%clean +function CheckBuildRoot() { + # do a few sanity checks on the BuildRoot + # to make sure we don't damage a system + case "${RPM_BUILD_ROOT}" in + ''|' '|/|/bin|/boot|/dev|/etc|/home|/lib|/mnt|/root|/sbin|/tmp|/usr|/var) + echo "Yikes! Don't use '${RPM_BUILD_ROOT}' for a BuildRoot!" + echo "The BuildRoot gets deleted when this package is rebuilt;" + echo "something like '/tmp/build-blah' is a better choice." + return 1 + ;; + *) return 0 + ;; + esac +} +function CleanBuildRoot() { + if CheckBuildRoot; then + rm -rf "${RPM_BUILD_ROOT}" + else + exit 1 + fi +} +CleanBuildRoot + +%files +%attr(- ,root,root) %doc COPYING ChangeLog INSTALL README +%attr(0755,root,root) %{ExecPrefix}/bin/wmclock +%attr(0755,root,root) %{ExecPrefix}/man/man1/wmclock.1* +%attr(0755,root,root) %dir %{Prefix}/share/wmclock +%attr(- ,root,root) %{Prefix}/share/wmclock/* + diff --git a/wmclock/xpm/date.xpm b/wmclock/xpm/date.xpm new file mode 100644 index 0000000..2186f52 --- /dev/null +++ b/wmclock/xpm/date.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char *date_xpm[] = { +/* width height num_colors chars_per_pixel */ +" 95 13 4 1", +/* colors */ +". c #000000", +"# c #555555", +"a c #aaaaaa", +"b c #ffffff", +/* pixels */ +"bbbb..bbbbbba..abbbb....abbbbbbb..bbbb......bbbbba...bbb......bbba..abbbbb...abbbbb....bbbbbbbb", +"bbb#..bbbbb.....abb..bb..abbbbba..bbba.....bbbba...bbbb.......bba.bb.abbb..a...bbb..aa..bbbbbbb", +"bb....bbbb..bba..bb.bbbb..bbbba...bbba.bbbbbbba..bbbbbb.bbba.abb..bb..bba.abb..abb.abba.bbbbbbb", +"bbbb..bbbb.bbbb..bbbbbba.abbbb....bbb..bbbbbbb..bbbbbbbbbbb..bbb..bb..bb..bbbb..ba.bbbb.abbb.bb", +"bbbb..bbbbbbbbb..bbbbba..bbbba.b..bbb....abbba..bbbbbbbbbba.abbba..b.abb..bbbb..b..bbbb..bbb.bb", +"bbbb..bbbbbbbbb..bbbb...bbbba.ab..bbbaaa...bb......abbbbbb..bbbbb....bbb..bbbb..b..bbbb..bbbbbb", +"bbbb..bbbbbbbba.abbbb....bbb..bb..bbbbbbb..ab..bbb..abbbbb.abbbbb....bbba..bbb..b..bbbb..bbbbbb", +"bbbb..bbbbbbbb..bbbbbbb..aba.bbb..bbbbbbbb..b..bbbb..bbbba.bbbbb..b...bbb.......b..bbbb..bbbbbb", +"bbbb..bbbbbbb..bbbbbbbbb..b.aaaa..abbbbbbb..b..bbbb..bbbb..bbbba.abb..abbba.a..ab..bbbb..bbbbbb", +"bbbb..bbbbbb..bbbbbbbbbb..b........bbbbbbb..b..bbbb..bbbb.abbbb..bbbb..bbbbba..bba.bbbb.abbb.bb", +"bbbb..bbbbb..bbbabbbbbba.abbbbbb..bbbabbba.ab..abbb.abbba.bbbbba.bbbb.abbbba..abbb.abba.bbbb.bb", +"bbba..abbba.aaaa.bb.aba..bbbbbbb..bbb.aaa..bbb...a..bbbb..bbbbbb..aa..bbba...bbbbb..aa..bbbbbbb", +"bb......bb.......bb....abbbbbbbb..bbb....abbbbb....bbbbb..bbbbbbba..abbb...abbbbbbb....bbbbbbbb" +}; + diff --git a/wmclock/xpm/led.xpm b/wmclock/xpm/led.xpm new file mode 100644 index 0000000..c24e4e2 --- /dev/null +++ b/wmclock/xpm/led.xpm @@ -0,0 +1,18 @@ +/* XPM */ +static char * led_xpm[] = { +"122 11 4 1", +" c None", +". c #000000", +"+ c #00DF00", +"@ c #004300", +"....++++........@....@++++....@++++....@....@....++++@....++++@...@++++.....++++.....++++.................................", +"...+....+.......+.........+........+...+....+...+........+.............+...+....+...+....+................................", +"..@+...@+......@+........@+.......@+..@+...@+..@+.......@+............@+..@+...@+..@+...@+................................", +"..+@...+@......+@........+@.......+@..+@...+@..+@.......+@............+@..+@...+@..+@...+@..+.............................", +"..+....+.......+.........+........+...+....+...+........+.............+...+....+...+....+...+.............................", +"..+...+........+....+++++....@++++....@++++....@+++@....++++@.........+...+++++....@++++.........+...+...+..+++..+...+....", +".+....+.......+....+.............+........+........+...+....+........+...+....+........+........@+...++.++..+..+.++.++....", +"@+...@+......@+...@+............@+.......@+.......@+..@+...@+.......@+..@+...@+.......@+..+.....+.+..+.+.+..+..+.+.+.+....", +"+@...+@......+@...+@............+@.......+@.......+@..+@...+@.......+@..+@...+@.......+@..+....+..+.@+..@+.@+++.@+..@+....", +"+....+.......+....+.............+........+........+...+....+........+...+....+........+........++++.+@..+@.+@...+@..+@....", +".++++........@.....++++@...@++++.........@...@++++.....++++.........@....++++....@++++........+...+.+...+..+....+...+....."}; diff --git a/wmclock/xpm/mask.xbm b/wmclock/xpm/mask.xbm new file mode 100644 index 0000000..479760c --- /dev/null +++ b/wmclock/xpm/mask.xbm @@ -0,0 +1,30 @@ +#define mask_width 55 +#define mask_height 57 +static unsigned char mask_bits[] = { + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x07,0x00,0x00,0xfc,0xff, + 0xff,0xff,0x0f,0x00,0x00,0xfc,0xff,0xff,0xff,0x1f,0x00,0x00,0xfc,0xff,0xff, + 0xff,0x3f,0x00,0x00,0xfc,0xff,0xff,0xff,0x7f,0x00,0x00,0xfc,0xff,0xff,0xff, + 0xff,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x01,0x00,0xfc,0xff,0xff,0xff,0xff, + 0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x03, + 0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00, + 0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0xfc, + 0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff, + 0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff, + 0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff, + 0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff, + 0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x03, + 0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00, + 0xfe,0xff,0xff,0xff,0xff,0x03,0x00,0xfe,0xff,0xff,0xff,0xff,0x03,0x00,0xfe, + 0xff,0xff,0xff,0xff,0x03,0x00,0xff,0xff,0xff,0xff,0xff,0x03,0x80,0xff,0xff, + 0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff, + 0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0xf8,0xff,0xff,0xff, + 0xff,0x03,0x00,0xf0,0xff,0xff,0xff,0xff,0x03}; diff --git a/wmclock/xpm/mask.xpm b/wmclock/xpm/mask.xpm new file mode 100644 index 0000000..b46d1f5 --- /dev/null +++ b/wmclock/xpm/mask.xpm @@ -0,0 +1,65 @@ +/* XPM */ +static char * mask_xpm[] = { +"54 57 5 1", +" c None", +". c #404040", +"+ c #A8A8A8", +"@ c #000000", +"# c #FFFFFF", +".....................................................+", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#", +"+#####################################################", +" ", +" ", +" ################################# ", +" #################################@ ", +" #################################@@ ", +" #################################@@@ ", +" #################################@@@. ", +" #################################@@@.. ", +" #################################@@@... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" #################################@@@.... ", +" ##################################@@@.... ", +" ##################################@@@.... ", +" #################################.@@@.... ", +" ##################################.@@@.... ", +" ##################################..@@@.... ", +" .................................@@@.... ", +" +++++++++++++++++++++++++++++++++@@@.... ", +" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.... ", +" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.... ", +" ...................................... "};