From 78646a426d86c653b2b045aafb03a161a6f81130 Mon Sep 17 00:00:00 2001 From: Doug Torrance Date: Thu, 1 Dec 2016 20:38:39 -0500 Subject: [PATCH] wmxss: Add version 0.1 to repository. From http://www.cs.mun.ca/~gstarkes/wmaker/dockapps/files/wmxss-0.1.tar.gz --- wmxss/COPYING | 339 +++++++++++++++++++++++++++++++++++ wmxss/Src/.nfs3822 | Bin 0 -> 183024 bytes wmxss/Src/Makefile | 36 ++++ wmxss/Src/Makefile.sgi | 36 ++++ wmxss/Src/Makefile.solaris | 36 ++++ wmxss/Src/wmxss | Bin 0 -> 13292 bytes wmxss/Src/wmxss.c | 338 +++++++++++++++++++++++++++++++++++ wmxss/Src/wmxss.o | Bin 0 -> 5284 bytes wmxss/Src/wmxss_mask.xbm | 38 ++++ wmxss/Src/wmxss_master.xpm | 73 ++++++++ wmxss/Src/xutils.c | 354 +++++++++++++++++++++++++++++++++++++ wmxss/Src/xutils.h | 48 +++++ wmxss/Src/xutils.o | Bin 0 -> 6724 bytes 13 files changed, 1298 insertions(+) create mode 100644 wmxss/COPYING create mode 100755 wmxss/Src/.nfs3822 create mode 100644 wmxss/Src/Makefile create mode 100644 wmxss/Src/Makefile.sgi create mode 100644 wmxss/Src/Makefile.solaris create mode 100755 wmxss/Src/wmxss create mode 100644 wmxss/Src/wmxss.c create mode 100644 wmxss/Src/wmxss.o create mode 100644 wmxss/Src/wmxss_mask.xbm create mode 100644 wmxss/Src/wmxss_master.xpm create mode 100644 wmxss/Src/xutils.c create mode 100644 wmxss/Src/xutils.h create mode 100644 wmxss/Src/xutils.o diff --git a/wmxss/COPYING b/wmxss/COPYING new file mode 100644 index 0000000..a43ea21 --- /dev/null +++ b/wmxss/COPYING @@ -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 + + 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/wmxss/Src/.nfs3822 b/wmxss/Src/.nfs3822 new file mode 100755 index 0000000000000000000000000000000000000000..73eb00946be25add536d30049983ad6f8d98a88a GIT binary patch literal 183024 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 Lbrkvg;?n;Uo^qcc literal 0 HcmV?d00001 diff --git a/wmxss/Src/wmxss.c b/wmxss/Src/wmxss.c new file mode 100644 index 0000000..1322111 --- /dev/null +++ b/wmxss/Src/wmxss.c @@ -0,0 +1,338 @@ +/* + * + * wmxss-0.10 (C) 1999 Mike Henderson (mghenderson@lanl.gov) + * + * - Its a DockApp front end for xscreensaver + * + * + * + * + * 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 + * + * + * Changes: + * + * Version 0.10 - released Aug 11, 1999. + * just playing around right now.... + * + * + */ + + + + + +/* + * Includes + */ +#include +#include +#include +#include +#include +#include +#include +#include "xutils.h" +#include "wmxss_master.xpm" +#include "wmxss_mask.xbm" + + + +/* + * Delay between refreshes (in microseconds) + */ +#define DELAY 10000L +#define WMXSS_VERSION "0.10" + + + + + +void ParseCMDLine(int argc, char *argv[]); +void ButtonPressEvent(XButtonEvent *); +void print_usage(); + + +int GotFirstClick1, GotDoubleClick1; +int GotFirstClick2, GotDoubleClick2; +int GotFirstClick3, GotDoubleClick3; +int DblClkDelay; +int HasExecute; +char ExecuteCommand[1024]; + + + + + +char TimeColor[30] = "#ffff00"; +char BackgroundColor[30] = "#181818"; + + + + + + +/* + * main + */ +int main(int argc, char *argv[]) { + + + XEvent event; + int n; + char Command[512]; + + + /* + * Parse any command line arguments. + */ + ParseCMDLine(argc, argv); + + + + + + + + initXwindow(argc, argv); + openXwindow(argc, argv, wmxss_master, wmxss_mask_bits, wmxss_mask_width, wmxss_mask_height); + + + + if (HasExecute){ + sprintf(Command, "%s -window-id 0x%x &", ExecuteCommand, (int)iconwin); + system(Command); + } + + + + /* + * Loop until we die + */ + n = 32000; + while(1) { + + + if ( n>10){ + + n = 0; + + } else { + + /* + * Update the counter. + */ + ++n; + + } + + + + + + /* + * Double Click Delays + * Keep track of click events. If Delay too long, set GotFirstClick's to False. + */ + if (DblClkDelay > 150) { + + DblClkDelay = 0; + GotFirstClick1 = 0; GotDoubleClick1 = 0; + GotFirstClick2 = 0; GotDoubleClick2 = 0; + GotFirstClick3 = 0; GotDoubleClick3 = 0; + + } else { + + ++DblClkDelay; + + } + + + + + /* + * Process any pending X events. + */ + while(XPending(display)){ + XNextEvent(display, &event); + switch(event.type){ + case Expose: + RedrawWindow(); + break; + case ButtonPress: + ButtonPressEvent(&event.xbutton); + break; + case ButtonRelease: + break; + } + } + + + + + + + /* + * Redraw and wait for next update + */ +/* + RedrawWindow(); +*/ + usleep(DELAY); + + + } + + + +} + + + + + + + + +/* + * ParseCMDLine() + */ +void ParseCMDLine(int argc, char *argv[]) { + +int i; + + for (i = 1; i < argc; i++) { + + if (!strcmp(argv[i], "-display")){ + + ++i; + + } else if (!strcmp(argv[i], "-tc")){ + + if ((i+1 >= argc)||(argv[i+1][0] == '-')) { + fprintf(stderr, "wmxss: No color found\n"); + print_usage(); + exit(-1); + } + strcpy(TimeColor, argv[++i]); + + } else if (!strcmp(argv[i], "-bc")){ + + if ((i+1 >= argc)||(argv[i+1][0] == '-')) { + fprintf(stderr, "wmxss: No color found\n"); + print_usage(); + exit(-1); + } + strcpy(BackgroundColor, argv[++i]); + + } else if (!strcmp(argv[i], "-e")){ + + if ((i+1 >= argc)||(argv[i+1][0] == '-')) { + fprintf(stderr, "wmxss: No command given\n"); + print_usage(); + exit(-1); + } + strcpy(ExecuteCommand, argv[++i]); + HasExecute = 1; + + } else { + + print_usage(); + exit(1); + } + + } + + +} + + +void print_usage(){ + + printf("\nwmxss version: %s\n", WMXSS_VERSION); + printf("\nusage: wmxss [-e \"Command\"] \n\n"); + printf("\t-e \"Command\"\tCommand to execute via double click of mouse button 1.\n"); + printf("\t-h\t\tDisplay help screen.\n"); + printf("\nExample: wmxss -e xflame\n\n"); + +} + + + + + + + +/* + * This routine handles button presses. + * + * Double click on + * Mouse Button 1: Execute the command defined in the -e command-line option. + * Mouse Button 2: No action assigned. + * Mouse Button 3: No action assigned. + * + * + */ +void ButtonPressEvent(XButtonEvent *xev){ + + + + DblClkDelay = 0; + if ((xev->button == Button1) && (xev->type == ButtonPress)){ + if (GotFirstClick1) GotDoubleClick1 = 1; + else GotFirstClick1 = 1; + } else if ((xev->button == Button2) && (xev->type == ButtonPress)){ + if (GotFirstClick2) GotDoubleClick2 = 1; + else GotFirstClick2 = 1; + } else if ((xev->button == Button3) && (xev->type == ButtonPress)){ + if (GotFirstClick3) GotDoubleClick3 = 1; + else GotFirstClick3 = 1; + } + + + /* + * We got a double click on Mouse Button1 (i.e. the left one) + */ + if (GotDoubleClick1) { + GotFirstClick1 = 0; + GotDoubleClick1 = 0; + system("xscreensaver-demo"); + } + + + /* + * We got a double click on Mouse Button2 (i.e. the left one) + */ + if (GotDoubleClick2) { + GotFirstClick2 = 0; + GotDoubleClick2 = 0; + } + + + /* + * We got a double click on Mouse Button3 (i.e. the left one) + */ + if (GotDoubleClick3) { + GotFirstClick3 = 0; + GotDoubleClick3 = 0; + } + + + + return; + +} + diff --git a/wmxss/Src/wmxss.o b/wmxss/Src/wmxss.o new file mode 100644 index 0000000000000000000000000000000000000000..7aaaf44aa966258be3cad0fb40f6e269a3d1048e GIT binary patch literal 5284 zcmeI0e~c7o8ONW!TkP(3BhVsNTiYqu16tj6?>G@oh$njo)WU%r9A_#l`(y5QV0UJ- zGt2EIN~zmMF9-GhXtl*3#k4V}X=1I~)KDXlBZzHmW9pBl22I4|n#H88coLD#nE5D1Xl0@O-PMf6PA@pRc(PEiWej`2U; zdu~q)(cr*DB{Z=sIxskM8wLRv8;!=^p1nQ!D0H63NM~(&d2Owo!)kAQgbmx9|1qq? zUqAY0qcLC)c0OygA;QT|10bd&iU6KzALbLbLc>LqW4Jf;Hp^Vru^^Ww99Irbmk)D-iB>Y zjz5PijjkiMyS{Bwa?W0wv+r$lPF*RdTxY0WadZEjbGPEdxt>qGHTRovdgi<7s=1vd z=EBvcL-qNn%gl{DAYh+4$<_SQQ~zu<4y)(y-kmyq!mf3GF$Uys#D^V~|L~l(WzKqN z&U(_dPM^R!P4tDDw^gm$6{sw&tqN9db?@V7b4K-y#~ws%%T;1mdSdTDY-{B<&U?${ z@>+{dMQ+LA_T`ugZ&eJE5@(7LxaC{!eCwvFw|8)CzulF^4qtWL7 zpZ}e8c)OdqZ5S<)xI$Q4$1482f;S}n_*zn;BcA90<7jQ~u<=+s0UPhMQJa!g+7fo7 zINN-M!^5PYt?X)kven5SZtI|SQ;Cggdd?V)X*nfPZLcazDVEdBQXxG?F)K@>#j0s` zEB%I&H3~*q88#|6kJQN_utPL!F( zlw&!yXb^2kCcBm88~S(Lu5`vf8t;s+z>=F|MJt^Ft+KRK&3=!~fuF==FPCp2eD2&hZa3m~vLVgQ=RGI89=?|7 zMN9&)555kR)UJs)U;f=hkGo0W_n1)4=IsyC>y4&|=jZjZ_MU+M_A@Y43yu+inIH9x#Ij=*;?a*xR6`dA8 zgX>iE=`m=oAs-9rjmCXGeFz$<>;U$Em2GL9?=e?^tiOZ9o9}6#KIzlH^69faecq>A zF&S_E>wTJEN!`Zt;onbgW6dwBZez{0I*YaVD{QXcW}kn%Pw(;RJoFUCuaWVV&p+nV z2Yvbr(BA7g zFQIkm?7opQZzzr~rZt_mrpu<9+}yiK(^b-R%^GqxC^AZ_?%EsEW}mYkkd`%cM389N zF~}^HHQgE}a}1LxQg5b^EbQx5d0X3HSnIX2X(f64=wR7v?+ZWaH~qOIDtEuV|T%dl3xayL-DZ!Tq=i zSF^?gaUB!S^9{`FiTHP00MFSWumum%-OTsk2RipJ#_wCu@H(Z@xf6#aA2FNl6g^vj~ph(5;} zb>ubW`bU_k|6y*p^L6EG5%gA@=b_-kcs&}0`mGl${P8m zn8^Q>=x3S8can+xFNnr++T(*lelOsBD78&~4zlKbnu#gcL@Jw#5GA)YN@w#!LcWiA zT$gZ_aE-7>*el#9bnox2qPGi&gr5=a5$1$>VL@0DTEeREv%-VI`-EQ<9uiIp9~3?; z{F?Bn@Nwak@Co6Q!XF5q5k4zCE}RzrO!&O;Md3@r-wJ;x{DbhUa7K7e_?qy%@PhE7 NkT-B%pP(=#{1-|*vZ4S0 literal 0 HcmV?d00001 diff --git a/wmxss/Src/wmxss_mask.xbm b/wmxss/Src/wmxss_mask.xbm new file mode 100644 index 0000000..c9ec70c --- /dev/null +++ b/wmxss/Src/wmxss_mask.xbm @@ -0,0 +1,38 @@ +#define wmxss_mask_width 64 +#define wmxss_mask_height 64 +static char wmxss_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}; diff --git a/wmxss/Src/wmxss_master.xpm b/wmxss/Src/wmxss_master.xpm new file mode 100644 index 0000000..0003a77 --- /dev/null +++ b/wmxss/Src/wmxss_master.xpm @@ -0,0 +1,73 @@ +/* XPM */ +static char *wmxss_master[] = { +/* width height num_colors chars_per_pixel */ +" 64 64 2 1", +/* colors */ +". c #ffffff", +"# c #000000", +/* pixels */ +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"....########################################################....", +"................................................................", +"................................................................", +"................................................................", +"................................................................" +}; diff --git a/wmxss/Src/xutils.c b/wmxss/Src/xutils.c new file mode 100644 index 0000000..8759e15 --- /dev/null +++ b/wmxss/Src/xutils.c @@ -0,0 +1,354 @@ +/* + * xutils.c - A collection of X-windows utilties for creating WindowMAker + * DockApps. + * + * This file contains alot of the lower-level X windows routines. Origins with wmppp + * (by Martijn Pieterse (pieterse@xs4all.nl)), but its been hacked up quite a bit + * and passed on from one new DockApp to the next. + * + * + * + * + * 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 + * + * + * + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "xutils.h" + + + +/* + * X11 Variables + */ +int x_fd; +XSizeHints mysizehints; +XWMHints mywmhints; +Pixel back_pix, fore_pix; +char *Geometry = ""; +GC NormalGC; +XpmIcon wmgen; +Pixmap pixmask; + + +/* + * Colors for wmCalClock + */ +extern char TimeColor[30]; +extern char BackgroundColor[30]; + + + + + + +/* + * flush_expose + */ +static int flush_expose(Window w) { + + XEvent dummy; + int i=0; + + while (XCheckTypedWindowEvent(display, w, Expose, &dummy)) + i++; + + return i; + +} + + + + + + + + + +/* + * RedrawWindow + * RedrawWindowXY + */ +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 RedrawWindowXY(int x, int y) { + + flush_expose(iconwin); + XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, x,y, wmgen.attributes.width, wmgen.attributes.height, 0, 0); + + flush_expose(win); + XCopyArea(display, wmgen.pixmap, win, NormalGC, x,y, wmgen.attributes.width, wmgen.attributes.height, 0, 0); + +} + + + + + + + +/* + * copyXPMArea + * copyXBMArea + */ +void copyXPMArea(int x, int y, int sx, int sy, int dx, int dy) { + XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy); +} + +void copyXBMArea(int x, int y, int sx, int sy, int dx, int dy) { + + XCopyArea(display, wmgen.mask, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy); +} + + + +/* + * initXwindow + */ +void initXwindow(int argc, char *argv[]){ + + int i; + char *display_name = NULL; + + for (i=1; argv[i]; ++i) { + if (!strcmp(argv[i], "-display")) display_name = argv[i+1]; + } + + + if (!(display = XOpenDisplay(display_name))) { + fprintf(stderr, "%s: can't open display %s\n", + argv[0], XDisplayName(display_name)); + exit(1); + } + + + screen = DefaultScreen(display); + Root = RootWindow(display, screen); + DisplayDepth = DefaultDepth(display, screen); + x_fd = XConnectionNumber(display); + +} + + + + + +/* + * openXwindow + */ +void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bits, + int pixmask_width, int pixmask_height) { + + unsigned int borderwidth = 1; + XClassHint classHint; + char *wname = argv[0]; + XTextProperty name; + XGCValues gcv; + unsigned long gcm; + int dummy=0, red, grn, blu; + XpmColorSymbol cols[10]={ {"Back", NULL, 0}, + {"Color1", NULL, 0}, + {"Color2", NULL, 0}, + {"Color3", NULL, 0}, + {"Color4", NULL, 0}, + {"Color5", NULL, 0}, + {"Color6", NULL, 0}, + {"Color7", NULL, 0}, + {"Color8", NULL, 0}, + {"Color9", NULL, 0}}; + + + + + /* + * Create Pixmap + */ + cols[0].pixel = getColor(BackgroundColor, 1.0000, &red, &grn, &blu); + cols[1].pixel = getBlendedColor(TimeColor, 0.1522, red, grn, blu); + cols[2].pixel = getBlendedColor(TimeColor, 0.2602, red, grn, blu); + cols[3].pixel = getBlendedColor(TimeColor, 0.3761, red, grn, blu); + cols[4].pixel = getBlendedColor(TimeColor, 0.4841, red, grn, blu); + cols[5].pixel = getBlendedColor(TimeColor, 0.5922, red, grn, blu); + cols[6].pixel = getBlendedColor(TimeColor, 0.6980, red, grn, blu); + cols[7].pixel = getBlendedColor(TimeColor, 0.7961, red, grn, blu); + cols[8].pixel = getBlendedColor(TimeColor, 0.8941, red, grn, blu); + cols[9].pixel = getBlendedColor(TimeColor, 1.0000, red, grn, blu); + + wmgen.attributes.numsymbols = 10; + wmgen.attributes.colorsymbols = cols; + wmgen.attributes.exactColors = False; + wmgen.attributes.closeness = 40000; + wmgen.attributes.valuemask = XpmReturnPixels | XpmReturnExtensions | XpmColorSymbols + | XpmExactColors | XpmCloseness | XpmSize; + if (XpmCreatePixmapFromData(display, Root, pixmap_bytes, + &(wmgen.pixmap), &(wmgen.mask), &(wmgen.attributes)) != XpmSuccess){ + fprintf(stderr, "Not enough free colorcells.\n"); + exit(1); + } + + + + + /* + * Create a window + */ + mysizehints.flags = USSize | USPosition; + mysizehints.x = 0; + mysizehints.y = 0; + + back_pix = getColor("white", 1.0, &red, &grn, &blu); + fore_pix = getColor("black", 1.0, &red, &grn, &blu); + + 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); + + + + /* + * Set up the xevents that you want the relevent windows to inherit + * Currently, its seems that setting KeyPress events here has no + * effect. I.e. for some you will need to Grab the focus and then return + * it after you are done... + */ + XSelectInput(display, win, ButtonPressMask | ExposureMask | ButtonReleaseMask + | PointerMotionMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask + | KeyPressMask | KeyReleaseMask); + XSelectInput(display, iconwin, ButtonPressMask | ExposureMask | ButtonReleaseMask + | PointerMotionMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask + | KeyPressMask | KeyReleaseMask); + + + if (XStringListToTextProperty(&wname, 1, &name) == 0) { + fprintf(stderr, "%s: can't allocate window name\n", wname); + exit(1); + } + + + XSetWMName(display, win, &name); + + /* + * Create Graphics Context (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); + + + + 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); + + + 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); + +} + +unsigned long getColor(char *ColorName, float fac, int *red, int *grn, int *blu) { + + XColor Color; + XWindowAttributes Attributes; + + XGetWindowAttributes(display, Root, &Attributes); + Color.pixel = 0; + + XParseColor(display, Attributes.colormap, ColorName, &Color); + Color.red = (unsigned short)(fac*(Color.red-24) + 24); + Color.blue = (unsigned short)(fac*(Color.blue-24) + 24); + Color.green = (unsigned short)(fac*(Color.green-24) + 24); + Color.flags = DoRed | DoGreen | DoBlue; + XAllocColor(display, Attributes.colormap, &Color); + + + *red = Color.red; + *grn = Color.green; + *blu = Color.blue; + return Color.pixel; + +} + +unsigned long getBlendedColor(char *ColorName, float fac, int red, int grn, int blu) { + + XColor Color; + XWindowAttributes Attributes; + + XGetWindowAttributes(display, Root, &Attributes); + Color.pixel = 0; + + XParseColor(display, Attributes.colormap, ColorName, &Color); + Color.red = (unsigned short)(fac*(Color.red-red) + red); + Color.blue = (unsigned short)(fac*(Color.blue-grn) + grn); + Color.green = (unsigned short)(fac*(Color.green-blu) + blu); + Color.flags = DoRed | DoGreen | DoBlue; + XAllocColor(display, Attributes.colormap, &Color); + + return Color.pixel; + +} + diff --git a/wmxss/Src/xutils.h b/wmxss/Src/xutils.h new file mode 100644 index 0000000..565a134 --- /dev/null +++ b/wmxss/Src/xutils.h @@ -0,0 +1,48 @@ +#ifndef WMGENERAL_H_INCLUDED +#define WMGENERAL_H_INCLUDED + + + +/* + * Typedefs + */ +typedef struct { + Pixmap pixmap; + Pixmap mask; + XpmAttributes attributes; +} XpmIcon; + + + + +/* + * Global variable + */ +Display *display; +Window Root; +Window iconwin, win; +int screen; +int DisplayDepth; + + + + + +/* + * Function Prototypes + */ +void AddMouseRegion(int, int, int, int, int); +int CheckMouseRegion(int, int); +void openXwindow(int, char **, char **, char *, int, int); +void initXwindow(int, char **); +void RedrawWindow(void); +void RedrawWindowXY(int, int); +void copyXPMArea(int, int, int, int, int, int); +void copyXBMArea(int, int, int, int, int, int); +void setMaskXY(int, int); +unsigned long getColor(char *, float, int *, int *, int *); +unsigned long getBlendedColor(char *, float, int, int, int); +void RedrawWindow(void); + + +#endif diff --git a/wmxss/Src/xutils.o b/wmxss/Src/xutils.o new file mode 100644 index 0000000000000000000000000000000000000000..bfb71903f65335a8b42273050ac6da467bf88c4c GIT binary patch literal 6724 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