From 35fb17dad966b73e1b1a9dfcc297cede1c43a5a2 Mon Sep 17 00:00:00 2001 From: Doug Torrance Date: Thu, 1 Dec 2016 20:38:40 -0500 Subject: [PATCH] wmhexaclock: Add version 0.1 to repository. From http://www.sourcefiles.org/Toys/Clocks/wmHexaClock0.1.tar.gz --- wmhexaclock/AUTHORS | Bin 0 -> 22696 bytes wmhexaclock/INSTALL | 23 +++ wmhexaclock/LICENSE | 339 ++++++++++++++++++++++++++++++++++++ wmhexaclock/Makefile | 44 +++++ wmhexaclock/README | 47 +++++ wmhexaclock/src/.main.c.swp | Bin 0 -> 16384 bytes wmhexaclock/src/main.c | 285 ++++++++++++++++++++++++++++++ wmhexaclock/src/pixmaps.h | 178 +++++++++++++++++++ wmhexaclock/src/wmgeneral.c | 180 +++++++++++++++++++ wmhexaclock/src/wmgeneral.h | 25 +++ wmhexaclock/wmHexaClock | Bin 0 -> 23868 bytes 11 files changed, 1121 insertions(+) create mode 100644 wmhexaclock/AUTHORS create mode 100644 wmhexaclock/INSTALL create mode 100644 wmhexaclock/LICENSE create mode 100644 wmhexaclock/Makefile create mode 100644 wmhexaclock/README create mode 100644 wmhexaclock/src/.main.c.swp create mode 100644 wmhexaclock/src/main.c create mode 100644 wmhexaclock/src/pixmaps.h create mode 100644 wmhexaclock/src/wmgeneral.c create mode 100644 wmhexaclock/src/wmgeneral.h create mode 100755 wmhexaclock/wmHexaClock diff --git a/wmhexaclock/AUTHORS b/wmhexaclock/AUTHORS new file mode 100644 index 0000000000000000000000000000000000000000..c9417bae7dfefbcda7d0ad9ac0c16fb4ee8a4c6e GIT binary patch literal 22696 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 P;t^wWm%13E2@~Ugo3yW? literal 0 HcmV?d00001 diff --git a/wmhexaclock/INSTALL b/wmhexaclock/INSTALL new file mode 100644 index 0000000..ddbd1b5 --- /dev/null +++ b/wmhexaclock/INSTALL @@ -0,0 +1,23 @@ +Basic Installation +------------------ + + The simplest way to compile this package is: + + 1. Type `cd' to the directory containing the package's source code and type + `makeŽ to compile the package + + 2. Type `suŽ to become super user and run + make installŽ to move the binaries into the rigt bin-folders + + 3. To remove the binary in the source directory you type + `make cleanŽ + + 4. Type `make uninstall' to remove the program + + +Installation Names +------------------ + + By default the make install script will install the binary in: + /usr/local/bin/ + diff --git a/wmhexaclock/LICENSE b/wmhexaclock/LICENSE new file mode 100644 index 0000000..e77696a --- /dev/null +++ b/wmhexaclock/LICENSE @@ -0,0 +1,339 @@ + 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 + + 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/wmhexaclock/Makefile b/wmhexaclock/Makefile new file mode 100644 index 0000000..56a119b --- /dev/null +++ b/wmhexaclock/Makefile @@ -0,0 +1,44 @@ +# wmHexaClock Makefile by Bjoern Witt +# +# Copyright (C) 2006 Bjoern Witt +# +# 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, 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 (see the file COPYING); if not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA +# +# As a base for this program I used wmDockApp0.1 from Todd Goyen. +# Thanks a lot! + + +CC = gcc +CFLAGS = -O2 -Wall -g +BIN = wmHexaClock +SRC = ./src/main.c ./src/wmgeneral.c +INSPATH = /usr/local/bin/ +SOURCEPATH = ./ +X_LIBS = -L/usr/X11R6/lib +wmHexaClock_LDADD = -lX11 -lXpm -lXext + +all : $(MAINSRC) + $(CC) $(CFLAGS) -o $(BIN) $(SRC) $(X_LIBS) $(wmHexaClock_LDADD) + strip $(SOURCEPATH)$(BIN) + +install : + install -c -s -m 755 $(BIN) $(INSPATH) + +clean : + rm -f $(SOURCEPATH)$(BIN) + +uninstall : + rm -f $(INSPATH)wmHexaClock diff --git a/wmhexaclock/README b/wmhexaclock/README new file mode 100644 index 0000000..b478b3f --- /dev/null +++ b/wmhexaclock/README @@ -0,0 +1,47 @@ +How to use wmHexaClock 0.1 + +GENERAL +------- + +wmHexaClock is a DockApp that provides an hexadecimal +clock. + + +HOW TO USE +---------- + +It's not too difficult to use wmHexDock. You run it by +typing "wmHexaClock" and confirming with :) +There are just a few options so far: + + --color (-c) [COLORCODE] + You can change to foreground color with this option. + [COLORCODE] stands for the color which you specifiy in + hexadecimal notation (RRGGBB). Do not add the #-sign + in the beginning. Example: + "wmHexClock -fg-color 00ff00" for green. + + --mode (-m) [0 or 1] + You can run wmHexaClock in two different modes. In + mode 0 the program will display the time always while + the name of the day and the date of the day will be displayed + in turns (Interval is three seconds). + In mode 1 everything will be displayed the same time. It is much + more difficult to read it since the space is actually not + big enough. + + --help (-h) + Might help you + + --version (-v) + Displays version number + + +ANYTHING MORE? +-------------- + +Yes, I didn't write the wohle DockApp from scratch. As a base I took wmDockApp0.1 +from Todd Goyen. It is under GPL aswell and you will find it +here: http://dockapps.org/download.php/id/138/wmDockApp.tar.gz + +Thanks a lot! diff --git a/wmhexaclock/src/.main.c.swp b/wmhexaclock/src/.main.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..7340fea8313ef08acb8e83d47540964a5ea2a0c5 GIT binary patch literal 16384 zcmeI3e~cVu8OKLZVEK&|5(VVFZD@C|v$wOm_p5iE3T>~~3vI8t{@{|kbDf)=-5t9# zv&_ui-f?XWLDBdRN{BH;DMFB9BmM!ANQfAsL<9tbKtU1%f|?L9L=CY)@%y~*?C$LC z_S%^E2XVIjY-is0nfHC(=Y5{{*KFsN0~5R0P@f{ zxOSa#R{fM6%Wzkf5Sd4U0@J>smu>T4y6QS5SF(&lqQQKN^^n+>Ns)p~C zzD(M4^|Ym#cAtI*RYf9^1tJTCEl~4|so{(E=du}PZM=uA`Q-j^Zgd@4AhJMYfye@p z1tJSX7KkhmSs=2&|A7Vk>RHlP;NIXK|3sh20+9tG3q%%(ED%{B zvOr{k$O4fCA`3(oh%69U;3H}QtsqIm(ESBE0KofyIs&24v8h91_3j72d0}p_2f}21UUufN_uoNw5Z71}+7EyFilO18;#pfTzJD;78yg@NIAh zSPw1+=Yg}qd*`Dq;9c-4cm+HRZU-jl1=oP9!ByaVa2|LgCP`0#o4^+E$a#{q0Ny

384+cp1C|9tV$s`@mPhE#L@{0RvZqE5T>LKR+Q! z?}I;s7s2!37`PwY3i4nStO4(QT#{Y~C%`MHpHn61LUfH@)?C(09W*ls8^U5_G>Q;1D%rEh zoev)2`31vu<@lb8K{2409S8r+8-Cp|Y(`dQ3e(^nnLakQs9DvDF~Vl!DUmZ9@0k@b zgoYUv&p^?oJmskg(kI!Qpqpee)jy1C$pw2*o#XC8YLJB{EI4L?OvO`$^8B$gQyms( zJnrxfbxjZ5<1*cGU3hm-o7Os0ly2_NPytI$jrlZODpXd6`3|{4$P>^&izO7YZZHBT`PdogK~>V9kc+epygDPZ zHw}+~4L_Yq@ixLvdXmj-o!mJ&H8<<;ts1&nG!2hi7elsDa-AAnkqZa93t_H*4eC-q zl=0)k0v@%r3Os?L&9T|k)cE+8Ei5smqHdXutGw@Jwnd$<)Qq;aq*62(K$&t?;`QdDGV5GhX=Tn?h4EM==qf5=|&jA=i3PQl1*yId=Wtv28TOhyf-M zKOknUme7H*slCva%kXJ>R>|dNGFGTXJVmiOniCi>!GnS36W8!-uFZ-XhMrLxGa3In z%)jZDK7kO%+dzgADFj8_!TmS&53@sugkRxy^T1G&ty_obk|qzz9~@}QA5vE2ZyajN z&nQ_$GgY(9ziH8tFjZyL+%!09ZrA|*DU*NEMTdr@9fqBXVFzPFk2)AUM589L0if@ z#XP3jgEGbnjLagza%{gWQbLzYhUUs7Mf0K@*vB(;$1Zp)HKrNLORO%#mlIT;nCE!W z{E3=v`i%nT4a|B$)3LJI<2t@WlY~c0LuoDM0h;R?LC@loy6<4pWLZTSj5qUxcxQ3^ z_B-BsZ133C$=%ynt|_-`V)y=iV=UWD*fF_(ie>PGY3r35X7+e<4n^tB#JW{7Y{S(m zePt@Xk-kYRS^LVHLupv;kdwA2QoGwzU<63Er%h)v>FJ6&-)!;g13D9U5*!D| zzysh;pn(}M4SK;z?C)O#4}vi1uO=o4Asqicb~wBg4lQg^CL z(|dMZkMo@b*4=I)Uv<1Z&4Rr{awaPe$-{DPNFETo*|4;j6uXFLhr5XvP1p0gNN2iA zXNDDdquej&BP%k#pmKjs&UHS~s=wobT(;W-EfunZr%?eb zim(D1=)IZ(E5sY>ws!Vyy^;tmU~r<;o6E?gFmGyRP|j^6>ERT9z*=2e3z;o{xOSt-K{3ij}g zEy(|3&%n@lLz1}xA$f{=#op$O>&5tahV{0pr4S6Ylr~REbZmR5sA9X<#Sw!X?tbkXU@DaF zSi5c&mw9(i83k9X--yG0r;hg%e9V?&4L{)i%XPyx2#4OO&Ayed!}G;PHk4>}O?2!I zK??Q_nT?7fi&KLR0k{!*uBAiB7en<4saU)JXNHC_X%Ew!oy7pko0IO{795O=RdKm>%MZvDgalK{}sM_#2KsI&e_cu|=%^3q?@HRO^>7>hK;NrrBC9^Pv#v8s?^(~OtVc<&Vx zEhSf`hbX#Q_UdUE3<{yX=Ibg*qV%1PQ)Sz6Tunwm+iB6`pqlBrh!63OhThJ|;kN|h l#?n0BaGTc$^YfLI+fsTjh?E*v(;`O0fD$|M0e*ofFO>h7J literal 0 HcmV?d00001 diff --git a/wmhexaclock/src/main.c b/wmhexaclock/src/main.c new file mode 100644 index 0000000..e7672ff --- /dev/null +++ b/wmhexaclock/src/main.c @@ -0,0 +1,285 @@ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "wmgeneral.h" +#include "pixmaps.h" + +#define HOUR 1 +#define MINUTE 2 +#define SECOND 3 + +#define VERSION "0.1" +#define RELEASED "October 2006" + +/* Prototypes */ +void beat(void); +void display_time(int number,int time_unit); +void display_lines(time_t seconds); +void display_date(int day_of_week, int day_of_month, int month, int year,int mode,time_t seconds); +void setColor(char *color); +void setMode(char *mode); +void display_help(void); +void display_version(void); +bool errorColor(char *color); +bool errorMode(char *mode); + +/*Global Variables*/ +time_t actualtime; +int g_mode=0; +char color_line[12]="+\tc #"; + + +bool errorMode(char *mode) +{ + if (strncmp(mode,"0",1)!=0 && strncmp(mode,"1",1)!=0) + return true; + else + return false; +} + +bool errorColor(char *color) +{ + int i=0; + + if (strlen(color)!=6) + return true; + + + for (i=0;i<6;i++) + { + if ((color[i]<48 || color[i]>57) && (color[i]<65 || color[i]>70) && (color[i]<97 || color[i]>102)) + return true; + } + + return false; +} + +void print_version() +{ + puts("\033[1mwmHexaClock\033[0m"); + printf("Version: \t%s\n",VERSION); + printf("Released: \t%s\n",RELEASED); + puts("Info: \t\thttp://www.bjoernw.de/"); + exit (0); +} + +void print_help() +{ + puts("Usage: wmHexaClock [OPTIONS]"); + puts("Possible Options are:\n"); + puts(" -v or --version:\t\tGives information about version and release date"); + puts(" -h or --help:\t\t\tPrints this dialog"); + puts(" -c [COLOR] or --color [COLOR]:\tSpecifies the foreground color; for [COLOR] you use the hexadecimal notation RRGGBB (R=red, G=green, B=blue)"); + puts(" \t\t\t\tExample: \"wmHexaClock -c FF0000\" for red"); + puts(" -m [i] or --mode [i]:\t\tThere are two different display modes; for [i] you type 0 or 1 to chose between them (0 is default)"); + exit(0); +} + +void setColor(char *color) +{ + if (!errorColor(color)) + xpm_numbers[3]=strncat(color_line,color,6); //Edit the Color-Line in xpm_numbers (-> pixmaps.h) + else + { + fprintf (stderr,"The Color Code is nor correct! Example: \"-c 00FF00\" for green!\n"); + exit (1); + } +} + +void setMode(char *mode) +{ + if (!errorMode(mode)) + g_mode=((int)*(mode))-48; + else + { + fprintf (stderr,"Please choose between mode 0 and 1. Example: \"-mode 0\"!\n"); + exit (1); + } +} + +int main(int argc, char *argv[]) +{ + XEvent event; + actualtime=time(0); + + static struct option long_options[] = + { + /* These options set a flag. */ + {"version", no_argument, 0, 'v'}, + {"help", no_argument, 0, 'h'}, + {"color", required_argument, 0, 'c'}, + {"mode", required_argument, 0, 'm'}, + {0, 0, 0, 0} + }; + + + while (1) + { + int c; + int option_index = 0; + + c = getopt_long (argc, argv, "vhc:m:", long_options, &option_index); + + /* Detect the end of the options. */ + if (c == -1) + break; + + switch (c) + { + case 'v': + print_version(); + break; + case 'h': + print_help(); + break; + case 'c': + setColor(optarg); + break; + case 'm': + setMode(optarg); + break; + case '?': + puts("Type wmHexaClock -h for information"); + exit(0); + break; + default: + abort(); + } + } + + openXwindow(argc, argv, xpm_numbers, xpm_master, xpm_mask_bits, xpm_mask_width, xpm_mask_height); + + + /* Loop Forever */ + while (1) + { + if (actualtime!=time(0)) + beat(); + /* Process any pending X events. */ + while (XPending(display)) + { + XNextEvent(display, &event); + if (event.type==Expose) + RedrawWindow(); + } + usleep(10000); + } + + /* we should never get here */ + return (0); +} + + +void beat() +{ + struct tm *time_struct; + actualtime=time(0); + time_struct=localtime(&actualtime); + + cleanXPMArea(); + + display_time(time_struct->tm_hour,HOUR); + display_time(time_struct->tm_min,MINUTE); + display_time(time_struct->tm_sec,SECOND); + copyXPMArea(177,0,8,12,27,3); /*Display the two dots*/ + + display_lines(time_struct->tm_sec); + + display_date(time_struct->tm_wday,time_struct->tm_mday,time_struct->tm_mon,time_struct->tm_year+1900,g_mode,time_struct->tm_sec); + + RedrawWindow(); +} + +void display_time(int number,int time_unit){ + + int first_pos=number/16; + int second_pos=number%16; + + if (time_unit==HOUR) + { + copyXPMArea(first_pos*11,0,11,12,5,5); + copyXPMArea(second_pos*11,0,11,12,16,5); + } + else if (time_unit==MINUTE) + { + copyXPMArea(first_pos*11,0,11,12,35,5); + copyXPMArea(second_pos*11,0,11,12,46,5); + } + else if (time_unit==SECOND) + { + copyXPMArea(first_pos*7,12,7,8,40,20); + copyXPMArea(second_pos*7,12,7,8,48,20); + } + + return; +} + + +void display_lines(time_t seconds) +{ + int i; + + for (i=0;i<(seconds/8);i++) + copyXPMArea(0,29,8,4,i*8+4,32); + + return; +} + +void display_date(int day_of_week, int day_of_month, int month, int year,int mode,time_t seconds) +{ + int first_pos_day=day_of_month/16; + int second_pos_day=day_of_month%16; + int first_pos_month=(month+1)/16; + int second_pos_month=(month+1)%16; + int first_pos_year=year/256; + int second_pos_year=(year-first_pos_year*256)/16; + int third_pos_year=year-first_pos_year*256-second_pos_year*16; + + static bool rec_mode; + + if (mode==1) + { + copyXPMArea((day_of_week-1)*22,20,22,9,5,39); + copyXPMArea(first_pos_day*7,12,7,9,30,39); + copyXPMArea(second_pos_day*7,12,7,9,37,39); + copyXPMArea(8,30,2,2,45,46); + copyXPMArea(first_pos_month*7,12,7,9,47,39); + copyXPMArea(second_pos_month*7,12,7,9,54,39); + copyXPMArea(first_pos_year*7,12,7,8,34,50); + copyXPMArea(second_pos_year*7,12,7,8,44,50); + copyXPMArea(third_pos_year*7,12,7,8,53,50); + } + else + { + if (seconds%3==0) + rec_mode=!rec_mode; + } + + if (rec_mode) + copyXPMArea((day_of_week-1)*31,32,31,12,16,39); + else + { + copyXPMArea(first_pos_day*11,0,11,12,3,36); + copyXPMArea(second_pos_day*11,0,11,12,14,36); + copyXPMArea(180,9,4,3,26,46); + copyXPMArea(first_pos_month*11,0,11,12,32,36); + copyXPMArea(second_pos_month*11,0,11,12,43,36); + copyXPMArea(180,9,4,3,55,46); + copyXPMArea(first_pos_year*7,12,7,8,18,51); + copyXPMArea(second_pos_year*7,12,7,8,28,51); + copyXPMArea(third_pos_year*7,12,7,8,37,51); + } + +} diff --git a/wmhexaclock/src/pixmaps.h b/wmhexaclock/src/pixmaps.h new file mode 100644 index 0000000..2f1294c --- /dev/null +++ b/wmhexaclock/src/pixmaps.h @@ -0,0 +1,178 @@ +#define xpm_mask_width 64 +#define xpm_mask_height 64 + +static char * xpm_master[] = { +"64 64 2 1", +" c None", +". c #000000", +" ", +" ", +" ", +" ", +" ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ...................................................... ", +" ", +" ", +" ", +" ", +" "}; + +static char xpm_mask_bits[] = { +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff, +0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff, +0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff, +0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff, +0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0, +0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, +0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff, +0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff, +0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff, +0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff, +0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff, +0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff, +0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0, +0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, +0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff, +0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff, +0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff, +0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff, +0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff, +0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff, +0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0, +0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, +0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff, +0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff, +0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff, +0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff, +0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff, +0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff, +0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0, +0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00}; + +static char *xpm_numbers[] = { +"217 64 3 1", +" c None", +". c #000000", +"+ c #FF0000", +"..........................................................................................................................+++.......................++++.................++++++..........................................", +"....+++.........++.......+++++......+++++.........++.....++++++........+++.....+++++++......+++........+++.................++.........................++................++...............................................", +"...++.++.......+++......++..+++....++..+++.......+++.....++...........+........++...++.....++.++......++.++................++.........................++................++...............................................", +"...+...+......+.++......++...++.........++.......+++.....++..........++.............++....++...++....++...++.....+++++.....++.+++.......++++.+....+++.++.....+++++....++++++++.......++..................................", +"..++...++.......++...........++.........++......+.++.....++..........+.............++.....++...++....++...++....++...++....+++..++.....++..+++...++..+++....++...++.....++..........++++.................................", +"..++...++.......++...........++........++......++.++.....+++++......++.++..........++......++.++.....++...++.........++....++....++...++....++..++....++...++.....++....++...........++..................................", +"..++...++.......++..........++.......+++.......+..++.....++..++.....+++.++.........+........+++.......++.+++.....++++++....++....++...++.....+..++....++...++.....++....++...............................................", +"..++...++.......++.........++..........++.....++..++..........++....++...++.......++.......++.++.......++.++....++...++....++....++...++........++....++...+++++++++....++...............................................", +"..++...++.......++........++............++....+++++++.........++....++...++.......++......++...++.........+....++....++....++....++...++........++....++...++...........++...............................................", +"...+...+........++.......++.............++........++..........++....++...++.......+.......++...++........++....++....++....++....++...++.....+..++....++...++...........++...........++..................................", +"...++.++........++......++...++....++...++........++.....++..++......++.++.......++........++.++........++.....+++..+++....+++..++.....++...++...++..+++....++....++....++..........++++.................................", +"....+++.......++++++....+++++++.....+++++........++++.....++++........+++........++.........+++.......+++.......++++.+++..+++.+++.......+++++.....+++.+++....+++++....+++++++........++..................................", +"..+++....++.....+++...+++.......++..+++++...++++..+++++...++++...+++..........++...............++..........++++..........................................................................................................", +".+++++..+++....+++++.+++++.....+++..++.....++.....+++++...+.++..++.++..++++...++.....+++++.....++..+++++..+++.+..........................................................................................................", +".++.++...++....++.++....+++...++++..++.....++........++..++..++.++.++..+++++..++.....++.++.....++..++..+..+++............................................................................................................", +".+...+...++.......++.....++..++.++..+++++..+++++.....+...++++++.++.++.....++..+++++..+...+.++++++..++..+.+++++...........................................................................................................", +".+...+...++......++...++++...+..++.....++..++.++....++....++++..+++++.....++..++.++..+.....++..++..+++++..++.............................................................................................................", +".++.++...++.....++.......++..++++++....++..++.++....++...++..++....++..+++++..+...+..+.....+....+..++.....++.............................................................................................................", +".+++++...++....++.......+++.....++..+++++..++.++...++....++..++....++..++..+..++.++..++.++.++..++..++.....++.............................................................................................................", +"..+++...+++++..+++++.+++++.....++++.+++++...++++...++.....++++..++++...+++++..+++++..+++++.++++++..+++++.+++++...........................................................................................................", +"...............................................................++........++................++............++..............................................................................................................", +".......................+........................................+..+......+................+.+...........++...................+..........................................................................................", +".......................+........................................+..+......+...............++.....................+............+........+.................................................................................", +"++++++..+++++..+++++..+++++..++..++..+++++..++...++.+++++..++++++.+++++...+++++..++..+...+++++...+++++..+++....+++++..++++...+++++...+++++.++..++..+++++.................................................................", +"++.+.+..+...++..+..+...+......+...+..+...++..+.+.+..+...+..+...++..+......++..+...+..+....+.......+.......+....++........++...+......++.....+...+...+..+.................................................................", +"+..+.+..+....+..+..+...+......+...+..+++++...+++++..+++++..+....+..+......+...+...+..+....+.......+.......+......++...+++++...+........++...+...+...+..+.................................................................", +"+..+.+..+...++..+..+...+......+...+..+.......++.++..+......+...++..+......+...+...+..+....+.......+.......+....+..++..+...+...+......+..++..+...+...+..+.................................................................", +"+..+.+..+++++..+++.++..+++++..++++++.+++++...++.++..+++++..+++++++.+++++..++..++..+++++..+++++..+++++...+++++..+++++..++++++..++++...+++++..++++++.+++.++................................................................", +".++++++..................................................................................................................................................................................................................", +".++++++..................................................................................................................................................................................................................", +".++++++.++...............................................................................................................................................................................................................", +".++++++.++...............................................................................................................................................................................................................", +".+........+.......................+++++++++...................+++........+++.............+++...+++++++++.++.......................+++++++........++..............+++++........................+++++......................", +"+++......+++......................+++++++++...................++....++....+...............++...+++++++++.++.......................+++++++........++.............+++.+++......................+++..++.....................", +"+++.....++++......................+..++...+....................++...++...++...............++...+..++...+.++.......................++....+.......................++...++....++.....+..........++...++.....................", +"++++....+.++....+++....++.++.........++.....++....++...+++.....++..++++..++....+++.....+++++......++.....++.+++...++...++.........++.......++.+..++.............++........++++...++..........++......+++..+++..++.+++....", +"++.+...++.++...++.++..++++++++.......++....+++...+++..++.++....++..+..+..++...++.++...++..++......++.....++++.+..+++..+++.........++...+..++++++.++.............+++......++..++.+++++........+++......++..+++..++++.++...", +"++.++..++.++..++...++..++...++.......++.....++....++.++...++...++..+..+..++..++...++.++...++......++.....+++..++..++...++.........++++++...++....++..............++++....++..++..++...........++++....++...++...++..++...", +"++.++.++..++.++.....++.++...++.......++.....++....++.+++++++...++.++..++.++..+++++++.++...++......++.....++...++..++...++.........++++++...++....++................++++.....+++..++.............++++..++...++...++..++...", +"++..+.++..++.++.....++.++...++.......++.....++....++.+++++++....+.++..++.+...+++++++.++...++......++.....++...++..++...++.........++...+...++....++..................++...+++++..++...............++..++...++...++..++...", +"++..+++...++.++.....++.++...++.......++.....++....++.++.........+++...++++...++......++...++......++.....++...++..++...++.........++.......++....++.............+.....+..++..++..++..........+.....+..++...++...++..++...", +"++...+....++..++...++..++...++.......++.....++....++.++...++....+++...+++....++......++...++......++.....++...++..++...++.........++.......++....++.............+....++.++...++..++.+........+....++..++...++...++..++...", +"+++..+...+++...++.++...++...++......++++....++++++++..++.++.....+++...++......++..+...+++++++....++++....++...++...++.+++.........++......++++...++.............++..+++.+++.+++..++.+........++..+++..+++.++++..++..++...", +"+++......+++....+++...+++...+++.....++++.....+++.++++..+++.......+.....+.......+++.....++.+++....++++...+++...+++...+++.++........+++.....++++...++..............+++++...++++.+...++..........+++++....++++.++.+++..+++..", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +".........................................................................................................................................................................................................................", +"........................................................................................................................................................................................................................."}; diff --git a/wmhexaclock/src/wmgeneral.c b/wmhexaclock/src/wmgeneral.c new file mode 100644 index 0000000..cbd41a0 --- /dev/null +++ b/wmhexaclock/src/wmgeneral.c @@ -0,0 +1,180 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "wmgeneral.h" + +/* X11 Variables */ +int screen; +int x_fd; +int d_depth; +XSizeHints mysizehints; +XWMHints mywmhints; +Pixel back_pix, fore_pix; +char *Geometry = ""; +Window iconwin, win; +Pixmap pixmask; + + +/* Function Prototypes */ +static void GetXPM(XpmIcon *, char **); +static Pixel GetColor(char *); +void RedrawWindow(void); + + +static void GetXPM(XpmIcon *wmgen, char *pixmap_bytes[]) +{ + XWindowAttributes attributes; + int err; + + /* For the colormap */ + XGetWindowAttributes(display, Root, &attributes); + + wmgen->attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions); + + err = XpmCreatePixmapFromData(display, Root, pixmap_bytes, &(wmgen->pixmap), + &(wmgen->mask), &(wmgen->attributes)); + + if (err != XpmSuccess) { + fprintf(stderr, "Not enough free colorcells.\n"); + exit(1); + } +} + +static Pixel GetColor(char *name) +{ + XColor color; + XWindowAttributes attributes; + + XGetWindowAttributes(display, Root, &attributes); + + color.pixel = 0; + if (!XParseColor(display, attributes.colormap, name, &color)) { + fprintf(stderr, "wm.app: can't parse %s.\n", name); + } else if (!XAllocColor(display, attributes.colormap, &color)) { + fprintf(stderr, "wm.app: can't allocate %s.\n", name); + } + return color.pixel; +} + +static int flush_expose(Window w) +{ + XEvent dummy; + int i=0; + + while (XCheckTypedWindowEvent(display, w, Expose, &dummy)) + i++; + return i; +} + +void RedrawWindow(void) +{ + flush_expose(iconwin); + XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, + 0,0, wmgen.attributes.width, wmgen.attributes.height, 0,0); + flush_expose(win); + XCopyArea(display, wmgen.pixmap, win, NormalGC, + 0,0, wmgen.attributes.width, wmgen.attributes.height, 0,0); +} + + +void copyXPMArea(int x, int y, int sx, int sy, int dx, int dy) +{ + XCopyArea(display, wmnumbers.pixmap, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy); +} + +void cleanXPMArea() +{ + XCopyArea(display, wmempty.pixmap, wmgen.pixmap, NormalGC, 0,0,64,64,0,0); +} + +void openXwindow(int argc, char *argv[], char *pixmap_bytes_numbers[], char *pixmap_bytes_background[], char pixmask_bits[], int pixmask_width, int pixmask_height) +{ + unsigned int borderwidth = 1; + XClassHint classHint; + char *display_name = NULL; + char *wname = argv[0]; + XTextProperty name; + XGCValues gcv; + unsigned long gcm; + int dummy = 0; + + if (!(display = XOpenDisplay(display_name))) { + fprintf(stderr, "%s: can't open display %s\n", + wname, XDisplayName(display_name)); + exit(1); + } + screen = DefaultScreen(display); + Root = RootWindow(display, screen); + d_depth = DefaultDepth(display, screen); + x_fd = XConnectionNumber(display); + + /* Convert XPM to XImage */ + GetXPM(&wmgen, pixmap_bytes_background); + GetXPM(&wmempty, pixmap_bytes_background); + GetXPM(&wmnumbers,pixmap_bytes_numbers); + + /* Create a window to hold the stuff */ + mysizehints.flags = USSize | USPosition; + mysizehints.x = 0; + mysizehints.y = 0; + + back_pix = GetColor("white"); + fore_pix = GetColor("black"); + + XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints, &mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy); + + mysizehints.width = 64; + mysizehints.height = 64; + + win = XCreateSimpleWindow(display, Root, mysizehints.x, mysizehints.y, mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix); + + iconwin = XCreateSimpleWindow(display, win, mysizehints.x, mysizehints.y, mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix); + + /* Activate hints */ + XSetWMNormalHints(display, win, &mysizehints); + classHint.res_name = wname; + classHint.res_class = wname; + XSetClassHint(display, win, &classHint); + + XSelectInput(display, win, ButtonPressMask | ExposureMask | ButtonReleaseMask | PointerMotionMask | StructureNotifyMask); + XSelectInput(display, iconwin, ButtonPressMask | ExposureMask | ButtonReleaseMask | PointerMotionMask | StructureNotifyMask); + + if (XStringListToTextProperty(&wname, 1, &name) == 0) { + fprintf(stderr, "%s: can't allocate window name\n", wname); + exit(1); + } + + XSetWMName(display, win, &name); + + /* Create GC for drawing */ + gcm = GCForeground | GCBackground | GCGraphicsExposures; + gcv.foreground = fore_pix; + gcv.background = back_pix; + gcv.graphics_exposures = 0; + NormalGC = XCreateGC(display, Root, gcm, &gcv); + + /* ONLYSHAPE ON */ + pixmask = XCreateBitmapFromData(display, win, pixmask_bits, pixmask_width, pixmask_height); + XShapeCombineMask(display, win, ShapeBounding, 0, 0, pixmask, ShapeSet); + XShapeCombineMask(display, iconwin, ShapeBounding, 0, 0, pixmask, ShapeSet); + + /* ONLYSHAPE OFF */ + mywmhints.initial_state = WithdrawnState; + mywmhints.icon_window = iconwin; + mywmhints.icon_x = mysizehints.x; + mywmhints.icon_y = mysizehints.y; + mywmhints.window_group = win; + mywmhints.flags = StateHint | IconWindowHint | IconPositionHint | WindowGroupHint; + + XSetWMHints(display, win, &mywmhints); + + XSetCommand(display, win, argv, argc); + XMapWindow(display, win); +} + diff --git a/wmhexaclock/src/wmgeneral.h b/wmhexaclock/src/wmgeneral.h new file mode 100644 index 0000000..48ccacd --- /dev/null +++ b/wmhexaclock/src/wmgeneral.h @@ -0,0 +1,25 @@ +#ifndef WMGENERAL_H_INCLUDED +#define WMGENERAL_H_INCLUDED + + +typedef struct { + Pixmap pixmap; + Pixmap mask; + XpmAttributes attributes; +} XpmIcon; + +/* Global variable */ +Display *display; +Window Root; +GC NormalGC; +XpmIcon wmgen; +XpmIcon wmnumbers; +XpmIcon wmempty; + +/* Function Prototypes */ +void openXwindow(int argc, char *argv[], char **, char **, char *, int, int); +void RedrawWindow(void); +void copyXPMArea(int, int, int, int, int, int); +void cleanXPMArea(); + +#endif diff --git a/wmhexaclock/wmHexaClock b/wmhexaclock/wmHexaClock new file mode 100755 index 0000000000000000000000000000000000000000..d026cdaa4d4078b3fd8a819bcd35367eb42c88f9 GIT binary patch literal 23868 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 Ga{mJ}Hp^82 literal 0 HcmV?d00001