Python version commit n push.
This commit is contained in:
		
							
								
								
									
										339
									
								
								python/LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										339
									
								
								python/LICENSE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,339 @@ | ||||
|                     GNU GENERAL PUBLIC LICENSE | ||||
|                        Version 2, June 1991 | ||||
|  | ||||
|  Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/> | ||||
|  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser 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. | ||||
|  | ||||
|     {description} | ||||
|     Copyright (C) {year}  {fullname} | ||||
|  | ||||
|     This program is free software; you can redistribute it and/or modify | ||||
|     it under the terms of the GNU General Public License as published by | ||||
|     the Free Software Foundation; either version 2 of the License, or | ||||
|     (at your option) any later version. | ||||
|  | ||||
|     This program is distributed in the hope that it will be useful, | ||||
|     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|     GNU General Public License for more details. | ||||
|  | ||||
|     You should have received a copy of the GNU General Public License along | ||||
|     with this program; if not, write to the Free Software Foundation, Inc., | ||||
|     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  | ||||
| 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) year 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. | ||||
|  | ||||
|   {signature of Ty Coon}, 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 Lesser General | ||||
| Public License instead of this License. | ||||
							
								
								
									
										20
									
								
								python/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								python/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| # GWinWrap | ||||
| GWinWrap is a Gtk with Python gui to select videos for XWinWrap, images for Nitrogen Wallpaper Manager, and gifs for Gifsicle. | ||||
| It includes the XWinWrap binary and source code for Shantanu Goel's version of XWinWrap. | ||||
|  | ||||
|  | ||||
| # Notes | ||||
|  | ||||
|  | ||||
| # Images | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| # TODO | ||||
| Confirm Nitrogen works and that the glitch seen is due to SpaceFM. | ||||
|  | ||||
| # Credit | ||||
| GWinWrap python and glade by: Maxim Stewart  -- https://www.itdominator.com/ | ||||
| <br/> | ||||
| XWinWrap binary by: Shantanu Goel -- http://tech.shantanugoel.com | ||||
							
								
								
									
										
											BIN
										
									
								
								python/bin/gwinwrap-0-0-1-x64.deb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								python/bin/gwinwrap-0-0-1-x64.deb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								python/images/pic1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								python/images/pic1.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 440 KiB | 
							
								
								
									
										
											BIN
										
									
								
								python/images/pic2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								python/images/pic2.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 623 KiB | 
							
								
								
									
										
											BIN
										
									
								
								python/images/pic3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								python/images/pic3.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 543 KiB | 
							
								
								
									
										39
									
								
								python/src/debs/build.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										39
									
								
								python/src/debs/build.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # Fixes ownershp | ||||
| function main() { | ||||
|     sudo find . -type f -exec chmod 644 {} + | ||||
|     sudo find . -type d -exec chmod 755 {} + | ||||
|  | ||||
|     # Set postrm permissions | ||||
|     for i in `find . -name postrm`; do | ||||
|         sudo chmod 755 "${i}" | ||||
|     done | ||||
|  | ||||
|     # Set fxwinwrap permissions | ||||
|     for i in `find . -name fxwinwrap`; do | ||||
|         sudo chmod 755 "${i}" | ||||
|     done | ||||
|  | ||||
|     # Set xwinwrap permissions | ||||
|     for i in `find . -name xwinwrap`; do | ||||
|         sudo chmod 755 "${i}" | ||||
|     done | ||||
|  | ||||
|     sudo chmod 755 fxwinwrap*/opt/FXWinWrap/resources/bin/* | ||||
|  | ||||
|     sudo chown -R root:root ./*/ | ||||
| builder; | ||||
| } | ||||
|  | ||||
| #builds debs | ||||
| function builder() { | ||||
|     for i in `ls`; do | ||||
|         if [[ -d "${i}" ]]; then | ||||
|             dpkg  --build "${i}" | ||||
|         else | ||||
|                echo "Not a dir." | ||||
|         fi | ||||
|     done | ||||
| } | ||||
| main; | ||||
							
								
								
									
										6
									
								
								python/src/debs/chownAll.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								python/src/debs/chownAll.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| function main() { | ||||
|     sudo chown -R abaddon:abaddon . | ||||
| } | ||||
| main; | ||||
							
								
								
									
										8
									
								
								python/src/debs/gwinwrap-0-0-1-x64/DEBIAN/control
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								python/src/debs/gwinwrap-0-0-1-x64/DEBIAN/control
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| Package: gwinwrap64 | ||||
| Version: 0.0-1 | ||||
| Section: python | ||||
| Priority: optional | ||||
| Architecture: amd64 | ||||
| Depends: ffmpegthumbnailer (>= 2.0.10-0.1), mplayer (>=2.0-728-g2c378c7-4), gifsicle (>=1.86-1), nitrogen (>=1.5.2-2) | ||||
| Maintainer: Maxim Stewart <1itdominator@gmail.com> | ||||
| Description: GWinWrap is a GUI to handle setting XWinWrap options. | ||||
							
								
								
									
										20
									
								
								python/src/debs/gwinwrap-0-0-1-x64/DEBIAN/postrm
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										20
									
								
								python/src/debs/gwinwrap-0-0-1-x64/DEBIAN/postrm
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| #!/bin/bash | ||||
| #postrm (script executed after uninstalling the package) | ||||
| #set -e | ||||
|  | ||||
| if [ -f /bin/xwinwrap ]; then | ||||
|     rm /bin/xwinwrap | ||||
| fi | ||||
|  | ||||
| if [ -f /bin/gwinwrap ]; then | ||||
|     rm /bin/gwinwrap | ||||
| fi | ||||
|  | ||||
| if [ -d /opt/GWinWrap ]; then | ||||
|     rm -rf /opt/GWinWrap | ||||
| fi | ||||
|  | ||||
| if [ -x "`which xdg-desktop-menu 2>/dev/null`" ]; then | ||||
|     xdg-desktop-menu uninstall /usr/share/applications/GWinWrap.desktop | ||||
|     xdg-desktop-menu forceupdate --mode user | ||||
| fi | ||||
							
								
								
									
										
											BIN
										
									
								
								python/src/debs/gwinwrap-0-0-1-x64/bin/gwinwrap
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								python/src/debs/gwinwrap-0-0-1-x64/bin/gwinwrap
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								python/src/debs/gwinwrap-0-0-1-x64/bin/xwinwrap
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								python/src/debs/gwinwrap-0-0-1-x64/bin/xwinwrap
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										196
									
								
								python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/GWinWrap.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										196
									
								
								python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/GWinWrap.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,196 @@ | ||||
| #!/usr/bin/env python | ||||
|  | ||||
| import os, cairo, sys, gi, re, threading, subprocess | ||||
|  | ||||
| gi.require_version('Gtk', '3.0') | ||||
| gi.require_version('Gdk', '3.0') | ||||
|  | ||||
| from gi.repository import Gtk as gtk | ||||
| from gi.repository import Gdk as gdk | ||||
| from gi.repository import GObject as gobject | ||||
| from gi.repository import Gtk, GdkPixbuf | ||||
|  | ||||
| from os import listdir | ||||
| from os.path import isfile, join | ||||
| from threading import Thread | ||||
|  | ||||
| from utils import SaveState | ||||
|  | ||||
| gdk.threads_init() | ||||
|  | ||||
|  | ||||
| class GWinWrap: | ||||
|     def __init__(self): | ||||
|         self.builder   = gtk.Builder() | ||||
|         self.builder.add_from_file("resources/GWinWrap.glade") | ||||
|  | ||||
|         # Get window and connect signals | ||||
|         self.window    = self.builder.get_object("Main") | ||||
|         self.builder.connect_signals(self) | ||||
|         self.window.connect("delete-event", gtk.main_quit) | ||||
|  | ||||
|         self.screen = self.window.get_screen() | ||||
|         self.visual = self.screen.get_rgba_visual() | ||||
|         if self.visual != None and self.screen.is_composited(): | ||||
|             self.window.set_visual(self.visual) | ||||
|  | ||||
|         self.window.set_app_paintable(True) | ||||
|         self.window.connect("draw", self.area_draw) | ||||
|  | ||||
|         # Add filter to allow only folders to be selected | ||||
|         dialog         = self.builder.get_object("selectedDirDialog") | ||||
|         filefilter     = self.builder.get_object("Folders") | ||||
|         dialog.add_filter(filefilter) | ||||
|  | ||||
|         # Get reference to remove and add it back... | ||||
|         self.gridLabel = self.builder.get_object("gridLabel") | ||||
|  | ||||
|         self.stateSaver = SaveState() | ||||
|         self.xScreenVal = None | ||||
|         self.toSavePath = None # Global file path and type for saving to file | ||||
|         self.applyType  = 1 # 1 is XWinWrap and 2 is Nitrogen | ||||
|  | ||||
|         self.window.show() | ||||
|  | ||||
|     def area_draw(self, widget, cr): | ||||
|         cr.set_source_rgba(0, 0, 0, 0.64) | ||||
|         cr.set_operator(cairo.OPERATOR_SOURCE) | ||||
|         cr.paint() | ||||
|         cr.set_operator(cairo.OPERATOR_OVER) | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|     def setNewDir(self, widget, data=None): | ||||
|         dir = widget.get_filename() | ||||
|         Thread(target=self.newDir, args=(dir,)).start() | ||||
|  | ||||
|     def newDir(self, dir): | ||||
|         self.clear() | ||||
|         imageGrid  = self.builder.get_object("imageGrid") | ||||
|         path       = dir | ||||
|         files      = [] | ||||
|         list       = [f for f in listdir(path) if isfile(join(path, f))] | ||||
|         row        = 0 | ||||
|         col        = 0 | ||||
|  | ||||
|         for file in list: | ||||
|             if file.lower().endswith(('.mkv', '.avi', '.flv', '.mov', '.m4v', '.mpg', '.wmv', '.mpeg', '.mp4', '.webm', '.png', '.jpg', '.jpeg', '.gif')): | ||||
|                 files.append(file) | ||||
|  | ||||
|         imageGrid.remove_column(0) | ||||
|         for file in files: | ||||
|             fullPathFile = path + "/" + file | ||||
|             eveBox       = gtk.EventBox() | ||||
|             thumbnl      = gtk.Image() | ||||
|  | ||||
|             if file.lower().endswith(('.mkv', '.avi', '.flv', '.mov', '.m4v', '.mpg', '.wmv', '.mpeg', '.mp4', '.webm')): | ||||
|                 subprocess.call(["ffmpegthumbnailer", "-t", "65%", "-s", "300", "-c", "jpg", "-i", fullPathFile, "-o", "/tmp/image.png"]) | ||||
|                 thumbnl = self.createImage("/tmp/image.png") | ||||
|                 eveBox.connect("button_press_event", self.runMplayerProcess, fullPathFile) | ||||
|             elif file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')): | ||||
|                 thumbnl = self.createImage(fullPathFile) | ||||
|                 eveBox.connect("button_press_event", self.runImageViewerProcess, fullPathFile) | ||||
|             else: | ||||
|                 print("Not a video or image file.") | ||||
|                 return | ||||
|  | ||||
|             gobject.idle_add(self.preGridSetup, (eveBox, thumbnl, )) | ||||
|             gobject.idle_add(self.addToGrid, (imageGrid, eveBox, col, row,)) | ||||
|  | ||||
|             col += 1 | ||||
|             if col == 2: | ||||
|                 col = 0 | ||||
|                 row += 1 | ||||
|  | ||||
|     def preGridSetup(self, args): | ||||
|         args[0].show() | ||||
|         args[1].show() | ||||
|         args[0].add(args[1]) | ||||
|  | ||||
|     def createImage(self, arg): | ||||
|         pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale( | ||||
|                     filename  = arg, | ||||
|                     width     = 310, | ||||
|                     height    = 310, | ||||
|                     preserve_aspect_ratio = True) | ||||
|         return gtk.Image.new_from_pixbuf(pixbuf) | ||||
|  | ||||
|     def addToGrid(self, args): | ||||
|         args[0].attach(args[1], args[2], args[3], 1, 1) | ||||
|  | ||||
|     def runMplayerProcess(self, widget, eve, fullPathFile): | ||||
|         if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS: | ||||
|             subprocess.call(["mplayer", "-really-quiet", "-ao", "null", "-loop", "0", fullPathFile]) | ||||
|  | ||||
|         self.toSavePath = fullPathFile | ||||
|         self.applyType  = 1  # Set to XWinWrap | ||||
|  | ||||
|     def runImageViewerProcess(self, widget, eve, fullPathFile): | ||||
|         if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS: | ||||
|             subprocess.call(["xdg-open",  fullPathFile]) | ||||
|  | ||||
|         self.toSavePath = fullPathFile | ||||
|         self.applyType  = 2  # Set to Nitrogen | ||||
|  | ||||
|     def toggleXscreenUsageField(self, widget, data=None): | ||||
|         useXscreenSaver = self.builder.get_object("useXScrnList") | ||||
|         if useXscreenSaver.get_active(): | ||||
|             self.builder.get_object("xScreenSvrList").set_sensitive(True) | ||||
|         else: | ||||
|             self.builder.get_object("xScreenSvrList").set_sensitive(False) | ||||
|  | ||||
|     def saveToFile(self, widget, data=None): | ||||
|         saveLoc         = self.builder.get_object("saveLoc").get_active_text() | ||||
|         useXscreenSaver = self.builder.get_object("useXScrnList").get_active() | ||||
|         plyBckRes       = self.builder.get_object("playbackResolution") | ||||
|         offset4Res      = self.builder.get_object("posOffset") | ||||
|         resolution      = plyBckRes.get_active_text() + offset4Res.get_active_text() | ||||
|         self.applyType  = self.stateSaver.saveToFile(self.toSavePath, resolution, | ||||
|                             saveLoc, useXscreenSaver, self.xScreenVal) | ||||
|  | ||||
|     def applySttngs(self, widget, data=None): | ||||
|         os.system("killall xwinwrap &") | ||||
|         if self.applyType == 1: | ||||
|             os.system("bash -c '~/.animatedBGstarter.sh' &") | ||||
|             os.system("bash -c '~/.animatedBGstarter2.sh' &") | ||||
|         elif self.applyType == 2: | ||||
|             os.system("nitrogen --restore &") | ||||
|         else: | ||||
|             os.system("nitrogen --restore &") | ||||
|  | ||||
|  | ||||
|     def killXWinWrp(self, widget, data=None): | ||||
|         os.system("killall xwinwrap &") | ||||
|  | ||||
|     def passXScreenVal(self, widget): | ||||
|         xSvrListStore   = self.builder.get_object("XScreensaver List") | ||||
|         row             = widget.get_cursor() | ||||
|         path            = gtk.TreePath(row.path) | ||||
|         treeiter        = xSvrListStore.get_iter(path[0]) | ||||
|         self.xScreenVal = xSvrListStore.get_value(treeiter, 0) | ||||
|  | ||||
|     def clearSelection(self, widget, data=None): | ||||
|         self.clear() | ||||
|  | ||||
|     def clear(self): | ||||
|         imageGrid = self.builder.get_object("imageGrid") | ||||
|  | ||||
|         while True: | ||||
|             if imageGrid.get_child_at(0,0)!= None: | ||||
|                 imageGrid.remove_row(0) | ||||
|             else: | ||||
|                 break | ||||
|  | ||||
|         imageGrid.attach(self.gridLabel, 0, 0, 1, 1) | ||||
|         self.toSavePath = None | ||||
|         self.applyType  = 1  # Default to XWinWrap | ||||
|  | ||||
|     def closeProgram(self, widget, data=None): | ||||
|         sys.exit(0) | ||||
|  | ||||
|  | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|   main = GWinWrap() | ||||
|   gtk.main() | ||||
| @@ -0,0 +1,699 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!-- Generated with glade 3.22.1 --> | ||||
| <interface> | ||||
|   <requires lib="gtk+" version="3.20"/> | ||||
|   <object class="GtkFileFilter" id="Folders"> | ||||
|     <mime-types> | ||||
|       <mime-type>inode/directory</mime-type> | ||||
|     </mime-types> | ||||
|   </object> | ||||
|   <object class="GtkListStore" id="XScreensaver List"> | ||||
|     <columns> | ||||
|       <!-- column-name XScreensavers --> | ||||
|       <column type="gchararray"/> | ||||
|     </columns> | ||||
|     <data> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">electricsheep</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">atlantis</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">atunnel</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">blinkbox</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">blocktube</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">bouncingcow</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">boxfit</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">bsod</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">bubble3d</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">bumps</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">cage</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">carousel</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">cube21</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">cubenetic</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">cubicgrid</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">cwaves</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">dangerball</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">fiberlamp</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">fireworkx</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">flipflop</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">fliptext</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">flow</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">flurry</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">flyingtoasters</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">gflux</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glcells</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">gleidescope</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glknots</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glmatrix</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glschool</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glslideshow</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glsnake</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">hypertorus</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">hypnowheel</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">interaggregate</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">intermomentary</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">jigglypuff</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">jigsaw</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">julia</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">lament</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">lockward</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">metaballs</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">moebiusgears</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">molecule</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">morph3d</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">noof</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">phosphor</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">photopile</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">pinion</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">popsquares</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">ripples</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">skytentacles</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">slidescreen</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">stonerview</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">strange</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">substrate</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">tangram</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">whirlwindwarp</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">wormhole</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">xflame</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">xrayswarm</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">companioncube</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">fuzzyflakes</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">galaxy</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glplanet</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">penetrate</col> | ||||
|       </row> | ||||
|     </data> | ||||
|   </object> | ||||
|   <object class="GtkWindow" id="Main"> | ||||
|     <property name="width_request">950</property> | ||||
|     <property name="height_request">600</property> | ||||
|     <property name="can_focus">False</property> | ||||
|     <property name="title" translatable="yes">GWinWrap</property> | ||||
|     <property name="window_position">center</property> | ||||
|     <property name="default_width">950</property> | ||||
|     <property name="default_height">600</property> | ||||
|     <property name="icon">GWinWrap.png</property> | ||||
|     <property name="gravity">center</property> | ||||
|     <child> | ||||
|       <placeholder/> | ||||
|     </child> | ||||
|     <child> | ||||
|       <object class="GtkBox"> | ||||
|         <property name="visible">True</property> | ||||
|         <property name="can_focus">False</property> | ||||
|         <child> | ||||
|           <object class="GtkBox"> | ||||
|             <property name="visible">True</property> | ||||
|             <property name="can_focus">False</property> | ||||
|             <property name="margin_left">15</property> | ||||
|             <property name="margin_top">15</property> | ||||
|             <property name="margin_bottom">15</property> | ||||
|             <property name="orientation">vertical</property> | ||||
|             <child> | ||||
|               <object class="GtkBox"> | ||||
|                 <property name="visible">True</property> | ||||
|                 <property name="can_focus">False</property> | ||||
|                 <property name="margin_bottom">5</property> | ||||
|                 <child> | ||||
|                   <object class="GtkLabel"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">False</property> | ||||
|                     <property name="label" translatable="yes">Note: Double click an image to view the video or image.</property> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">True</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">0</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|                 <child> | ||||
|                   <object class="GtkButton"> | ||||
|                     <property name="label" translatable="yes">Clear</property> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">True</property> | ||||
|                     <property name="receives_default">True</property> | ||||
|                     <signal name="clicked" handler="clearSelection" swapped="no"/> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">False</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">1</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|                 <child> | ||||
|                   <object class="GtkFileChooserButton" id="selectedDirDialog"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">False</property> | ||||
|                     <property name="focus_on_click">False</property> | ||||
|                     <property name="tooltip_text" translatable="yes">Chose Dream Scene / Image Directory</property> | ||||
|                     <property name="action">select-folder</property> | ||||
|                     <property name="create_folders">False</property> | ||||
|                     <property name="filter">Folders</property> | ||||
|                     <property name="preview_widget_active">False</property> | ||||
|                     <property name="title" translatable="yes">Dream Scene / Image Dir</property> | ||||
|                     <signal name="file-set" handler="setNewDir" swapped="no"/> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">False</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">2</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|               </object> | ||||
|               <packing> | ||||
|                 <property name="expand">False</property> | ||||
|                 <property name="fill">True</property> | ||||
|                 <property name="position">0</property> | ||||
|               </packing> | ||||
|             </child> | ||||
|             <child> | ||||
|               <object class="GtkScrolledWindow"> | ||||
|                 <property name="visible">True</property> | ||||
|                 <property name="can_focus">True</property> | ||||
|                 <property name="shadow_type">in</property> | ||||
|                 <child> | ||||
|                   <object class="GtkViewport"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">False</property> | ||||
|                     <child> | ||||
|                       <object class="GtkGrid" id="imageGrid"> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">False</property> | ||||
|                         <property name="orientation">vertical</property> | ||||
|                         <property name="row_spacing">10</property> | ||||
|                         <property name="column_spacing">10</property> | ||||
|                         <property name="row_homogeneous">True</property> | ||||
|                         <property name="column_homogeneous">True</property> | ||||
|                         <child> | ||||
|                           <object class="GtkLabel" id="gridLabel"> | ||||
|                             <property name="width_request">640</property> | ||||
|                             <property name="height_request">525</property> | ||||
|                             <property name="visible">True</property> | ||||
|                             <property name="can_focus">False</property> | ||||
|                             <property name="label" translatable="yes">Choose Image/Video Directory...</property> | ||||
|                             <attributes> | ||||
|                               <attribute name="font-desc" value="Times New Roman, 28"/> | ||||
|                             </attributes> | ||||
|                           </object> | ||||
|                           <packing> | ||||
|                             <property name="left_attach">0</property> | ||||
|                             <property name="top_attach">0</property> | ||||
|                           </packing> | ||||
|                         </child> | ||||
|                       </object> | ||||
|                     </child> | ||||
|                   </object> | ||||
|                 </child> | ||||
|               </object> | ||||
|               <packing> | ||||
|                 <property name="expand">True</property> | ||||
|                 <property name="fill">True</property> | ||||
|                 <property name="position">1</property> | ||||
|               </packing> | ||||
|             </child> | ||||
|           </object> | ||||
|           <packing> | ||||
|             <property name="expand">True</property> | ||||
|             <property name="fill">True</property> | ||||
|             <property name="position">0</property> | ||||
|           </packing> | ||||
|         </child> | ||||
|         <child> | ||||
|           <object class="GtkBox"> | ||||
|             <property name="width_request">300</property> | ||||
|             <property name="visible">True</property> | ||||
|             <property name="can_focus">False</property> | ||||
|             <property name="margin_left">10</property> | ||||
|             <property name="margin_right">15</property> | ||||
|             <property name="margin_top">15</property> | ||||
|             <property name="margin_bottom">15</property> | ||||
|             <property name="hexpand">False</property> | ||||
|             <property name="orientation">vertical</property> | ||||
|             <child> | ||||
|               <object class="GtkBox"> | ||||
|                 <property name="visible">True</property> | ||||
|                 <property name="can_focus">False</property> | ||||
|                 <property name="orientation">vertical</property> | ||||
|                 <child> | ||||
|                   <object class="GtkCheckButton" id="useXScrnList"> | ||||
|                     <property name="label" translatable="yes">Use XScreenSaver</property> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">True</property> | ||||
|                     <property name="receives_default">False</property> | ||||
|                     <property name="halign">center</property> | ||||
|                     <property name="margin_bottom">5</property> | ||||
|                     <property name="draw_indicator">True</property> | ||||
|                     <signal name="toggled" handler="toggleXscreenUsageField" swapped="no"/> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">False</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">0</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|                 <child> | ||||
|                   <object class="GtkScrolledWindow"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">True</property> | ||||
|                     <property name="shadow_type">in</property> | ||||
|                     <child> | ||||
|                       <object class="GtkTreeView" id="xScreenSvrList"> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="sensitive">False</property> | ||||
|                         <property name="can_focus">True</property> | ||||
|                         <property name="model">XScreensaver List</property> | ||||
|                         <property name="headers_visible">False</property> | ||||
|                         <signal name="cursor-changed" handler="passXScreenVal" swapped="no"/> | ||||
|                         <child internal-child="selection"> | ||||
|                           <object class="GtkTreeSelection"/> | ||||
|                         </child> | ||||
|                         <child> | ||||
|                           <object class="GtkTreeViewColumn" id="listColumn"> | ||||
|                             <property name="title" translatable="yes">XScreensaves</property> | ||||
|                             <child> | ||||
|                               <object class="GtkCellRendererText"/> | ||||
|                               <attributes> | ||||
|                                 <attribute name="text">0</attribute> | ||||
|                               </attributes> | ||||
|                             </child> | ||||
|                           </object> | ||||
|                         </child> | ||||
|                       </object> | ||||
|                     </child> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">True</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">1</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|               </object> | ||||
|               <packing> | ||||
|                 <property name="expand">True</property> | ||||
|                 <property name="fill">True</property> | ||||
|                 <property name="position">0</property> | ||||
|               </packing> | ||||
|             </child> | ||||
|             <child> | ||||
|               <object class="GtkBox"> | ||||
|                 <property name="visible">True</property> | ||||
|                 <property name="can_focus">False</property> | ||||
|                 <property name="vexpand">False</property> | ||||
|                 <property name="orientation">vertical</property> | ||||
|                 <child> | ||||
|                   <object class="GtkBox"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">False</property> | ||||
|                     <property name="orientation">vertical</property> | ||||
|                     <child> | ||||
|                       <object class="GtkBox"> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">False</property> | ||||
|                         <child> | ||||
|                           <object class="GtkLabel"> | ||||
|                             <property name="visible">True</property> | ||||
|                             <property name="can_focus">False</property> | ||||
|                             <property name="margin_top">10</property> | ||||
|                             <property name="margin_bottom">10</property> | ||||
|                             <property name="label" translatable="yes">Playback Resolutions</property> | ||||
|                           </object> | ||||
|                           <packing> | ||||
|                             <property name="expand">True</property> | ||||
|                             <property name="fill">True</property> | ||||
|                             <property name="position">0</property> | ||||
|                           </packing> | ||||
|                         </child> | ||||
|                         <child> | ||||
|                           <object class="GtkLabel"> | ||||
|                             <property name="visible">True</property> | ||||
|                             <property name="can_focus">False</property> | ||||
|                             <property name="margin_top">10</property> | ||||
|                             <property name="margin_bottom">10</property> | ||||
|                             <property name="label" translatable="yes">Position Offset</property> | ||||
|                           </object> | ||||
|                           <packing> | ||||
|                             <property name="expand">True</property> | ||||
|                             <property name="fill">True</property> | ||||
|                             <property name="position">1</property> | ||||
|                           </packing> | ||||
|                         </child> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="expand">False</property> | ||||
|                         <property name="fill">True</property> | ||||
|                         <property name="position">0</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                     <child> | ||||
|                       <object class="GtkBox"> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">False</property> | ||||
|                         <child> | ||||
|                           <object class="GtkComboBoxText" id="playbackResolution"> | ||||
|                             <property name="visible">True</property> | ||||
|                             <property name="can_focus">False</property> | ||||
|                             <property name="active">3</property> | ||||
|                             <items> | ||||
|                               <item translatable="yes">7680x4320</item> | ||||
|                               <item translatable="yes">3840x2160</item> | ||||
|                               <item translatable="yes">2048x1080</item> | ||||
|                               <item translatable="yes">1920x1080</item> | ||||
|                               <item translatable="yes">1440x720</item> | ||||
|                               <item translatable="yes">1600x900</item> | ||||
|                               <item translatable="yes">1280x720</item> | ||||
|                               <item translatable="yes">800x600</item> | ||||
|                             </items> | ||||
|                           </object> | ||||
|                           <packing> | ||||
|                             <property name="expand">True</property> | ||||
|                             <property name="fill">True</property> | ||||
|                             <property name="position">0</property> | ||||
|                           </packing> | ||||
|                         </child> | ||||
|                         <child> | ||||
|                           <object class="GtkComboBoxText" id="posOffset"> | ||||
|                             <property name="visible">True</property> | ||||
|                             <property name="can_focus">False</property> | ||||
|                             <property name="active">18</property> | ||||
|                             <items> | ||||
|                               <item translatable="yes">Left</item> | ||||
|                               <item translatable="yes">-7680+0</item> | ||||
|                               <item translatable="yes">-3840+0</item> | ||||
|                               <item translatable="yes">-2048+0</item> | ||||
|                               <item translatable="yes">-1920+0</item> | ||||
|                               <item translatable="yes">-1440+0</item> | ||||
|                               <item translatable="yes">-1600+0</item> | ||||
|                               <item translatable="yes">-1280+0</item> | ||||
|                               <item translatable="yes">-800+0</item> | ||||
|                               <item translatable="yes">Right</item> | ||||
|                               <item translatable="yes">+7680+0</item> | ||||
|                               <item translatable="yes">+3840+0</item> | ||||
|                               <item translatable="yes">+2048+0</item> | ||||
|                               <item translatable="yes">+1920+0</item> | ||||
|                               <item translatable="yes">+1440+0</item> | ||||
|                               <item translatable="yes">+1600+0</item> | ||||
|                               <item translatable="yes">+1280+0</item> | ||||
|                               <item translatable="yes">+800+0</item> | ||||
|                               <item translatable="yes">+0+0</item> | ||||
|                               <item translatable="yes">Top</item> | ||||
|                               <item translatable="yes">+0+7680</item> | ||||
|                               <item translatable="yes">+0+3840</item> | ||||
|                               <item translatable="yes">+0+2048</item> | ||||
|                               <item translatable="yes">+0+1920</item> | ||||
|                               <item translatable="yes">+0+1440</item> | ||||
|                               <item translatable="yes">+0+1600</item> | ||||
|                               <item translatable="yes">0+1280</item> | ||||
|                               <item translatable="yes">+0+800</item> | ||||
|                               <item translatable="yes">Bottum</item> | ||||
|                               <item translatable="yes">+0-7680</item> | ||||
|                               <item translatable="yes">+0-3840</item> | ||||
|                               <item translatable="yes">+0-2048</item> | ||||
|                               <item translatable="yes">+0-1920</item> | ||||
|                               <item translatable="yes">+0-1440</item> | ||||
|                               <item translatable="yes">+0-1600</item> | ||||
|                               <item translatable="yes">0-1280</item> | ||||
|                               <item translatable="yes">+0-800</item> | ||||
|                             </items> | ||||
|                           </object> | ||||
|                           <packing> | ||||
|                             <property name="expand">True</property> | ||||
|                             <property name="fill">True</property> | ||||
|                             <property name="position">1</property> | ||||
|                           </packing> | ||||
|                         </child> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="expand">False</property> | ||||
|                         <property name="fill">True</property> | ||||
|                         <property name="position">1</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">False</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">0</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|                 <child> | ||||
|                   <object class="GtkBox"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">False</property> | ||||
|                     <property name="orientation">vertical</property> | ||||
|                     <child> | ||||
|                       <object class="GtkLabel"> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">False</property> | ||||
|                         <property name="margin_top">10</property> | ||||
|                         <property name="margin_bottom">5</property> | ||||
|                         <property name="label" translatable="yes">Save Path</property> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="expand">True</property> | ||||
|                         <property name="fill">True</property> | ||||
|                         <property name="position">0</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                     <child> | ||||
|                       <object class="GtkComboBoxText" id="saveLoc"> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">False</property> | ||||
|                         <property name="active">0</property> | ||||
|                         <items> | ||||
|                           <item translatable="yes">.animatedBGstarter.sh</item> | ||||
|                           <item translatable="yes">.animatedBGstarter2.sh</item> | ||||
|                         </items> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="expand">True</property> | ||||
|                         <property name="fill">True</property> | ||||
|                         <property name="position">1</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">False</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">1</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|                 <child> | ||||
|                   <object class="GtkGrid"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">False</property> | ||||
|                     <child> | ||||
|                       <object class="GtkButton"> | ||||
|                         <property name="label" translatable="yes">Save Selection</property> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">True</property> | ||||
|                         <property name="receives_default">True</property> | ||||
|                         <property name="hexpand">True</property> | ||||
|                         <property name="vexpand">True</property> | ||||
|                         <signal name="clicked" handler="saveToFile" swapped="no"/> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="left_attach">0</property> | ||||
|                         <property name="top_attach">0</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                     <child> | ||||
|                       <object class="GtkButton"> | ||||
|                         <property name="label" translatable="yes">Apply</property> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">True</property> | ||||
|                         <property name="receives_default">True</property> | ||||
|                         <property name="hexpand">True</property> | ||||
|                         <property name="vexpand">True</property> | ||||
|                         <signal name="clicked" handler="applySttngs" swapped="no"/> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="left_attach">1</property> | ||||
|                         <property name="top_attach">0</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                     <child> | ||||
|                       <object class="GtkButton"> | ||||
|                         <property name="label" translatable="yes">Kill XWinWrap</property> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">True</property> | ||||
|                         <property name="receives_default">True</property> | ||||
|                         <property name="hexpand">True</property> | ||||
|                         <property name="vexpand">True</property> | ||||
|                         <signal name="clicked" handler="killXWinWrp" swapped="no"/> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="left_attach">0</property> | ||||
|                         <property name="top_attach">1</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                     <child> | ||||
|                       <object class="GtkButton"> | ||||
|                         <property name="label" translatable="yes">Close</property> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">True</property> | ||||
|                         <property name="receives_default">True</property> | ||||
|                         <property name="hexpand">True</property> | ||||
|                         <property name="vexpand">True</property> | ||||
|                         <signal name="clicked" handler="closeProgram" swapped="no"/> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="left_attach">1</property> | ||||
|                         <property name="top_attach">1</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">False</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">2</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|               </object> | ||||
|               <packing> | ||||
|                 <property name="expand">False</property> | ||||
|                 <property name="fill">False</property> | ||||
|                 <property name="pack_type">end</property> | ||||
|                 <property name="position">1</property> | ||||
|               </packing> | ||||
|             </child> | ||||
|           </object> | ||||
|           <packing> | ||||
|             <property name="expand">False</property> | ||||
|             <property name="fill">True</property> | ||||
|             <property name="padding">1</property> | ||||
|             <property name="position">1</property> | ||||
|           </packing> | ||||
|         </child> | ||||
|       </object> | ||||
|     </child> | ||||
|   </object> | ||||
| </interface> | ||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 9.1 KiB | 
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -0,0 +1,9 @@ | ||||
| [Desktop Entry] | ||||
| Encoding=UTF-8 | ||||
| Name=GWinWrap | ||||
| Comment=Glade gui with python controls for XWinWrap | ||||
| Exec=/bin/gwinwrap | ||||
| Icon=/opt/GWinWrap/resources/GWinWrap.png | ||||
| Terminal=false | ||||
| Type=Application | ||||
| Categories=System; | ||||
| @@ -0,0 +1,22 @@ | ||||
| FXWinWrap is copyright 2016, 2017 Maxim Stewart. | ||||
| FXWinWrap is currently developed by ITDominator <1itdominator@gmail.com>. | ||||
|  | ||||
| License: GPLv2+ | ||||
|  | ||||
|     This program is free software; you can redistribute it and/or modify | ||||
|     it under the terms of the GNU General Public License as published by | ||||
|     the Free Software Foundation; either version 2 of the License, or | ||||
|     (at your option) any later version. | ||||
|  | ||||
|     This program is distributed in the hope that it will be useful, | ||||
|     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|     GNU General Public License for more details. | ||||
|  | ||||
|     You should have received a copy of the GNU General Public License | ||||
|     along with this program; if not, write to the Free Software | ||||
|     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
|  | ||||
| See /usr/share/common-licenses/GPL-2, or | ||||
| <http://www.gnu.org/copyleft/gpl.txt> for the terms of the latest version | ||||
| of the GNU General Public License. | ||||
							
								
								
									
										196
									
								
								python/src/versions/0.0.1/GWinWrap/GWinWrap.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										196
									
								
								python/src/versions/0.0.1/GWinWrap/GWinWrap.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,196 @@ | ||||
| #!/usr/bin/env python | ||||
|  | ||||
| import os, cairo, sys, gi, re, threading, subprocess | ||||
|  | ||||
| gi.require_version('Gtk', '3.0') | ||||
| gi.require_version('Gdk', '3.0') | ||||
|  | ||||
| from gi.repository import Gtk as gtk | ||||
| from gi.repository import Gdk as gdk | ||||
| from gi.repository import GObject as gobject | ||||
| from gi.repository import Gtk, GdkPixbuf | ||||
|  | ||||
| from os import listdir | ||||
| from os.path import isfile, join | ||||
| from threading import Thread | ||||
|  | ||||
| from utils import SaveState | ||||
|  | ||||
| gdk.threads_init() | ||||
|  | ||||
|  | ||||
| class GWinWrap: | ||||
|     def __init__(self): | ||||
|         self.builder   = gtk.Builder() | ||||
|         self.builder.add_from_file("resources/GWinWrap.glade") | ||||
|  | ||||
|         # Get window and connect signals | ||||
|         self.window    = self.builder.get_object("Main") | ||||
|         self.builder.connect_signals(self) | ||||
|         self.window.connect("delete-event", gtk.main_quit) | ||||
|  | ||||
|         self.screen = self.window.get_screen() | ||||
|         self.visual = self.screen.get_rgba_visual() | ||||
|         if self.visual != None and self.screen.is_composited(): | ||||
|             self.window.set_visual(self.visual) | ||||
|  | ||||
|         self.window.set_app_paintable(True) | ||||
|         self.window.connect("draw", self.area_draw) | ||||
|  | ||||
|         # Add filter to allow only folders to be selected | ||||
|         dialog         = self.builder.get_object("selectedDirDialog") | ||||
|         filefilter     = self.builder.get_object("Folders") | ||||
|         dialog.add_filter(filefilter) | ||||
|  | ||||
|         # Get reference to remove and add it back... | ||||
|         self.gridLabel = self.builder.get_object("gridLabel") | ||||
|  | ||||
|         self.stateSaver = SaveState() | ||||
|         self.xScreenVal = None | ||||
|         self.toSavePath = None # Global file path and type for saving to file | ||||
|         self.applyType  = 1 # 1 is XWinWrap and 2 is Nitrogen | ||||
|  | ||||
|         self.window.show() | ||||
|  | ||||
|     def area_draw(self, widget, cr): | ||||
|         cr.set_source_rgba(0, 0, 0, 0.64) | ||||
|         cr.set_operator(cairo.OPERATOR_SOURCE) | ||||
|         cr.paint() | ||||
|         cr.set_operator(cairo.OPERATOR_OVER) | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|     def setNewDir(self, widget, data=None): | ||||
|         dir = widget.get_filename() | ||||
|         Thread(target=self.newDir, args=(dir,)).start() | ||||
|  | ||||
|     def newDir(self, dir): | ||||
|         self.clear() | ||||
|         imageGrid  = self.builder.get_object("imageGrid") | ||||
|         path       = dir | ||||
|         files      = [] | ||||
|         list       = [f for f in listdir(path) if isfile(join(path, f))] | ||||
|         row        = 0 | ||||
|         col        = 0 | ||||
|  | ||||
|         for file in list: | ||||
|             if file.lower().endswith(('.mkv', '.avi', '.flv', '.mov', '.m4v', '.mpg', '.wmv', '.mpeg', '.mp4', '.webm', '.png', '.jpg', '.jpeg', '.gif')): | ||||
|                 files.append(file) | ||||
|  | ||||
|         imageGrid.remove_column(0) | ||||
|         for file in files: | ||||
|             fullPathFile = path + "/" + file | ||||
|             eveBox       = gtk.EventBox() | ||||
|             thumbnl      = gtk.Image() | ||||
|  | ||||
|             if file.lower().endswith(('.mkv', '.avi', '.flv', '.mov', '.m4v', '.mpg', '.wmv', '.mpeg', '.mp4', '.webm')): | ||||
|                 subprocess.call(["ffmpegthumbnailer", "-t", "65%", "-s", "300", "-c", "jpg", "-i", fullPathFile, "-o", "/tmp/image.png"]) | ||||
|                 thumbnl = self.createImage("/tmp/image.png") | ||||
|                 eveBox.connect("button_press_event", self.runMplayerProcess, fullPathFile) | ||||
|             elif file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')): | ||||
|                 thumbnl = self.createImage(fullPathFile) | ||||
|                 eveBox.connect("button_press_event", self.runImageViewerProcess, fullPathFile) | ||||
|             else: | ||||
|                 print("Not a video or image file.") | ||||
|                 return | ||||
|  | ||||
|             gobject.idle_add(self.preGridSetup, (eveBox, thumbnl, )) | ||||
|             gobject.idle_add(self.addToGrid, (imageGrid, eveBox, col, row,)) | ||||
|  | ||||
|             col += 1 | ||||
|             if col == 2: | ||||
|                 col = 0 | ||||
|                 row += 1 | ||||
|  | ||||
|     def preGridSetup(self, args): | ||||
|         args[0].show() | ||||
|         args[1].show() | ||||
|         args[0].add(args[1]) | ||||
|  | ||||
|     def createImage(self, arg): | ||||
|         pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale( | ||||
|                     filename  = arg, | ||||
|                     width     = 310, | ||||
|                     height    = 310, | ||||
|                     preserve_aspect_ratio = True) | ||||
|         return gtk.Image.new_from_pixbuf(pixbuf) | ||||
|  | ||||
|     def addToGrid(self, args): | ||||
|         args[0].attach(args[1], args[2], args[3], 1, 1) | ||||
|  | ||||
|     def runMplayerProcess(self, widget, eve, fullPathFile): | ||||
|         if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS: | ||||
|             subprocess.call(["mplayer", "-really-quiet", "-ao", "null", "-loop", "0", fullPathFile]) | ||||
|  | ||||
|         self.toSavePath = fullPathFile | ||||
|         self.applyType  = 1  # Set to XWinWrap | ||||
|  | ||||
|     def runImageViewerProcess(self, widget, eve, fullPathFile): | ||||
|         if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS: | ||||
|             subprocess.call(["xdg-open",  fullPathFile]) | ||||
|  | ||||
|         self.toSavePath = fullPathFile | ||||
|         self.applyType  = 2  # Set to Nitrogen | ||||
|  | ||||
|     def toggleXscreenUsageField(self, widget, data=None): | ||||
|         useXscreenSaver = self.builder.get_object("useXScrnList") | ||||
|         if useXscreenSaver.get_active(): | ||||
|             self.builder.get_object("xScreenSvrList").set_sensitive(True) | ||||
|         else: | ||||
|             self.builder.get_object("xScreenSvrList").set_sensitive(False) | ||||
|  | ||||
|     def saveToFile(self, widget, data=None): | ||||
|         saveLoc         = self.builder.get_object("saveLoc").get_active_text() | ||||
|         useXscreenSaver = self.builder.get_object("useXScrnList").get_active() | ||||
|         plyBckRes       = self.builder.get_object("playbackResolution") | ||||
|         offset4Res      = self.builder.get_object("posOffset") | ||||
|         resolution      = plyBckRes.get_active_text() + offset4Res.get_active_text() | ||||
|         self.applyType  = self.stateSaver.saveToFile(self.toSavePath, resolution, | ||||
|                             saveLoc, useXscreenSaver, self.xScreenVal) | ||||
|  | ||||
|     def applySttngs(self, widget, data=None): | ||||
|         os.system("killall xwinwrap &") | ||||
|         if self.applyType == 1: | ||||
|             os.system("bash -c '~/.animatedBGstarter.sh' &") | ||||
|             os.system("bash -c '~/.animatedBGstarter2.sh' &") | ||||
|         elif self.applyType == 2: | ||||
|             os.system("nitrogen --restore &") | ||||
|         else: | ||||
|             os.system("nitrogen --restore &") | ||||
|  | ||||
|  | ||||
|     def killXWinWrp(self, widget, data=None): | ||||
|         os.system("killall xwinwrap &") | ||||
|  | ||||
|     def passXScreenVal(self, widget): | ||||
|         xSvrListStore   = self.builder.get_object("XScreensaver List") | ||||
|         row             = widget.get_cursor() | ||||
|         path            = gtk.TreePath(row.path) | ||||
|         treeiter        = xSvrListStore.get_iter(path[0]) | ||||
|         self.xScreenVal = xSvrListStore.get_value(treeiter, 0) | ||||
|  | ||||
|     def clearSelection(self, widget, data=None): | ||||
|         self.clear() | ||||
|  | ||||
|     def clear(self): | ||||
|         imageGrid = self.builder.get_object("imageGrid") | ||||
|  | ||||
|         while True: | ||||
|             if imageGrid.get_child_at(0,0)!= None: | ||||
|                 imageGrid.remove_row(0) | ||||
|             else: | ||||
|                 break | ||||
|  | ||||
|         imageGrid.attach(self.gridLabel, 0, 0, 1, 1) | ||||
|         self.toSavePath = None | ||||
|         self.applyType  = 1  # Default to XWinWrap | ||||
|  | ||||
|     def closeProgram(self, widget, data=None): | ||||
|         sys.exit(0) | ||||
|  | ||||
|  | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|   main = GWinWrap() | ||||
|   gtk.main() | ||||
							
								
								
									
										699
									
								
								python/src/versions/0.0.1/GWinWrap/resources/GWinWrap.glade
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										699
									
								
								python/src/versions/0.0.1/GWinWrap/resources/GWinWrap.glade
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,699 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!-- Generated with glade 3.22.1 --> | ||||
| <interface> | ||||
|   <requires lib="gtk+" version="3.20"/> | ||||
|   <object class="GtkFileFilter" id="Folders"> | ||||
|     <mime-types> | ||||
|       <mime-type>inode/directory</mime-type> | ||||
|     </mime-types> | ||||
|   </object> | ||||
|   <object class="GtkListStore" id="XScreensaver List"> | ||||
|     <columns> | ||||
|       <!-- column-name XScreensavers --> | ||||
|       <column type="gchararray"/> | ||||
|     </columns> | ||||
|     <data> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">electricsheep</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">atlantis</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">atunnel</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">blinkbox</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">blocktube</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">bouncingcow</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">boxfit</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">bsod</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">bubble3d</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">bumps</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">cage</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">carousel</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">cube21</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">cubenetic</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">cubicgrid</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">cwaves</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">dangerball</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">fiberlamp</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">fireworkx</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">flipflop</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">fliptext</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">flow</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">flurry</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">flyingtoasters</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">gflux</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glcells</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">gleidescope</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glknots</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glmatrix</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glschool</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glslideshow</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glsnake</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">hypertorus</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">hypnowheel</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">interaggregate</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">intermomentary</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">jigglypuff</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">jigsaw</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">julia</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">lament</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">lockward</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">metaballs</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">moebiusgears</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">molecule</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">morph3d</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">noof</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">phosphor</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">photopile</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">pinion</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">popsquares</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">ripples</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">skytentacles</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">slidescreen</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">stonerview</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">strange</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">substrate</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">tangram</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">whirlwindwarp</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">wormhole</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">xflame</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">xrayswarm</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">companioncube</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">fuzzyflakes</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">galaxy</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">glplanet</col> | ||||
|       </row> | ||||
|       <row> | ||||
|         <col id="0" translatable="yes">penetrate</col> | ||||
|       </row> | ||||
|     </data> | ||||
|   </object> | ||||
|   <object class="GtkWindow" id="Main"> | ||||
|     <property name="width_request">950</property> | ||||
|     <property name="height_request">600</property> | ||||
|     <property name="can_focus">False</property> | ||||
|     <property name="title" translatable="yes">GWinWrap</property> | ||||
|     <property name="window_position">center</property> | ||||
|     <property name="default_width">950</property> | ||||
|     <property name="default_height">600</property> | ||||
|     <property name="icon">GWinWrap.png</property> | ||||
|     <property name="gravity">center</property> | ||||
|     <child> | ||||
|       <placeholder/> | ||||
|     </child> | ||||
|     <child> | ||||
|       <object class="GtkBox"> | ||||
|         <property name="visible">True</property> | ||||
|         <property name="can_focus">False</property> | ||||
|         <child> | ||||
|           <object class="GtkBox"> | ||||
|             <property name="visible">True</property> | ||||
|             <property name="can_focus">False</property> | ||||
|             <property name="margin_left">15</property> | ||||
|             <property name="margin_top">15</property> | ||||
|             <property name="margin_bottom">15</property> | ||||
|             <property name="orientation">vertical</property> | ||||
|             <child> | ||||
|               <object class="GtkBox"> | ||||
|                 <property name="visible">True</property> | ||||
|                 <property name="can_focus">False</property> | ||||
|                 <property name="margin_bottom">5</property> | ||||
|                 <child> | ||||
|                   <object class="GtkLabel"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">False</property> | ||||
|                     <property name="label" translatable="yes">Note: Double click an image to view the video or image.</property> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">True</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">0</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|                 <child> | ||||
|                   <object class="GtkButton"> | ||||
|                     <property name="label" translatable="yes">Clear</property> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">True</property> | ||||
|                     <property name="receives_default">True</property> | ||||
|                     <signal name="clicked" handler="clearSelection" swapped="no"/> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">False</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">1</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|                 <child> | ||||
|                   <object class="GtkFileChooserButton" id="selectedDirDialog"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">False</property> | ||||
|                     <property name="focus_on_click">False</property> | ||||
|                     <property name="tooltip_text" translatable="yes">Chose Dream Scene / Image Directory</property> | ||||
|                     <property name="action">select-folder</property> | ||||
|                     <property name="create_folders">False</property> | ||||
|                     <property name="filter">Folders</property> | ||||
|                     <property name="preview_widget_active">False</property> | ||||
|                     <property name="title" translatable="yes">Dream Scene / Image Dir</property> | ||||
|                     <signal name="file-set" handler="setNewDir" swapped="no"/> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">False</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">2</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|               </object> | ||||
|               <packing> | ||||
|                 <property name="expand">False</property> | ||||
|                 <property name="fill">True</property> | ||||
|                 <property name="position">0</property> | ||||
|               </packing> | ||||
|             </child> | ||||
|             <child> | ||||
|               <object class="GtkScrolledWindow"> | ||||
|                 <property name="visible">True</property> | ||||
|                 <property name="can_focus">True</property> | ||||
|                 <property name="shadow_type">in</property> | ||||
|                 <child> | ||||
|                   <object class="GtkViewport"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">False</property> | ||||
|                     <child> | ||||
|                       <object class="GtkGrid" id="imageGrid"> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">False</property> | ||||
|                         <property name="orientation">vertical</property> | ||||
|                         <property name="row_spacing">10</property> | ||||
|                         <property name="column_spacing">10</property> | ||||
|                         <property name="row_homogeneous">True</property> | ||||
|                         <property name="column_homogeneous">True</property> | ||||
|                         <child> | ||||
|                           <object class="GtkLabel" id="gridLabel"> | ||||
|                             <property name="width_request">640</property> | ||||
|                             <property name="height_request">525</property> | ||||
|                             <property name="visible">True</property> | ||||
|                             <property name="can_focus">False</property> | ||||
|                             <property name="label" translatable="yes">Choose Image/Video Directory...</property> | ||||
|                             <attributes> | ||||
|                               <attribute name="font-desc" value="Times New Roman, 28"/> | ||||
|                             </attributes> | ||||
|                           </object> | ||||
|                           <packing> | ||||
|                             <property name="left_attach">0</property> | ||||
|                             <property name="top_attach">0</property> | ||||
|                           </packing> | ||||
|                         </child> | ||||
|                       </object> | ||||
|                     </child> | ||||
|                   </object> | ||||
|                 </child> | ||||
|               </object> | ||||
|               <packing> | ||||
|                 <property name="expand">True</property> | ||||
|                 <property name="fill">True</property> | ||||
|                 <property name="position">1</property> | ||||
|               </packing> | ||||
|             </child> | ||||
|           </object> | ||||
|           <packing> | ||||
|             <property name="expand">True</property> | ||||
|             <property name="fill">True</property> | ||||
|             <property name="position">0</property> | ||||
|           </packing> | ||||
|         </child> | ||||
|         <child> | ||||
|           <object class="GtkBox"> | ||||
|             <property name="width_request">300</property> | ||||
|             <property name="visible">True</property> | ||||
|             <property name="can_focus">False</property> | ||||
|             <property name="margin_left">10</property> | ||||
|             <property name="margin_right">15</property> | ||||
|             <property name="margin_top">15</property> | ||||
|             <property name="margin_bottom">15</property> | ||||
|             <property name="hexpand">False</property> | ||||
|             <property name="orientation">vertical</property> | ||||
|             <child> | ||||
|               <object class="GtkBox"> | ||||
|                 <property name="visible">True</property> | ||||
|                 <property name="can_focus">False</property> | ||||
|                 <property name="orientation">vertical</property> | ||||
|                 <child> | ||||
|                   <object class="GtkCheckButton" id="useXScrnList"> | ||||
|                     <property name="label" translatable="yes">Use XScreenSaver</property> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">True</property> | ||||
|                     <property name="receives_default">False</property> | ||||
|                     <property name="halign">center</property> | ||||
|                     <property name="margin_bottom">5</property> | ||||
|                     <property name="draw_indicator">True</property> | ||||
|                     <signal name="toggled" handler="toggleXscreenUsageField" swapped="no"/> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">False</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">0</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|                 <child> | ||||
|                   <object class="GtkScrolledWindow"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">True</property> | ||||
|                     <property name="shadow_type">in</property> | ||||
|                     <child> | ||||
|                       <object class="GtkTreeView" id="xScreenSvrList"> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="sensitive">False</property> | ||||
|                         <property name="can_focus">True</property> | ||||
|                         <property name="model">XScreensaver List</property> | ||||
|                         <property name="headers_visible">False</property> | ||||
|                         <signal name="cursor-changed" handler="passXScreenVal" swapped="no"/> | ||||
|                         <child internal-child="selection"> | ||||
|                           <object class="GtkTreeSelection"/> | ||||
|                         </child> | ||||
|                         <child> | ||||
|                           <object class="GtkTreeViewColumn" id="listColumn"> | ||||
|                             <property name="title" translatable="yes">XScreensaves</property> | ||||
|                             <child> | ||||
|                               <object class="GtkCellRendererText"/> | ||||
|                               <attributes> | ||||
|                                 <attribute name="text">0</attribute> | ||||
|                               </attributes> | ||||
|                             </child> | ||||
|                           </object> | ||||
|                         </child> | ||||
|                       </object> | ||||
|                     </child> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">True</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">1</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|               </object> | ||||
|               <packing> | ||||
|                 <property name="expand">True</property> | ||||
|                 <property name="fill">True</property> | ||||
|                 <property name="position">0</property> | ||||
|               </packing> | ||||
|             </child> | ||||
|             <child> | ||||
|               <object class="GtkBox"> | ||||
|                 <property name="visible">True</property> | ||||
|                 <property name="can_focus">False</property> | ||||
|                 <property name="vexpand">False</property> | ||||
|                 <property name="orientation">vertical</property> | ||||
|                 <child> | ||||
|                   <object class="GtkBox"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">False</property> | ||||
|                     <property name="orientation">vertical</property> | ||||
|                     <child> | ||||
|                       <object class="GtkBox"> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">False</property> | ||||
|                         <child> | ||||
|                           <object class="GtkLabel"> | ||||
|                             <property name="visible">True</property> | ||||
|                             <property name="can_focus">False</property> | ||||
|                             <property name="margin_top">10</property> | ||||
|                             <property name="margin_bottom">10</property> | ||||
|                             <property name="label" translatable="yes">Playback Resolutions</property> | ||||
|                           </object> | ||||
|                           <packing> | ||||
|                             <property name="expand">True</property> | ||||
|                             <property name="fill">True</property> | ||||
|                             <property name="position">0</property> | ||||
|                           </packing> | ||||
|                         </child> | ||||
|                         <child> | ||||
|                           <object class="GtkLabel"> | ||||
|                             <property name="visible">True</property> | ||||
|                             <property name="can_focus">False</property> | ||||
|                             <property name="margin_top">10</property> | ||||
|                             <property name="margin_bottom">10</property> | ||||
|                             <property name="label" translatable="yes">Position Offset</property> | ||||
|                           </object> | ||||
|                           <packing> | ||||
|                             <property name="expand">True</property> | ||||
|                             <property name="fill">True</property> | ||||
|                             <property name="position">1</property> | ||||
|                           </packing> | ||||
|                         </child> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="expand">False</property> | ||||
|                         <property name="fill">True</property> | ||||
|                         <property name="position">0</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                     <child> | ||||
|                       <object class="GtkBox"> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">False</property> | ||||
|                         <child> | ||||
|                           <object class="GtkComboBoxText" id="playbackResolution"> | ||||
|                             <property name="visible">True</property> | ||||
|                             <property name="can_focus">False</property> | ||||
|                             <property name="active">3</property> | ||||
|                             <items> | ||||
|                               <item translatable="yes">7680x4320</item> | ||||
|                               <item translatable="yes">3840x2160</item> | ||||
|                               <item translatable="yes">2048x1080</item> | ||||
|                               <item translatable="yes">1920x1080</item> | ||||
|                               <item translatable="yes">1440x720</item> | ||||
|                               <item translatable="yes">1600x900</item> | ||||
|                               <item translatable="yes">1280x720</item> | ||||
|                               <item translatable="yes">800x600</item> | ||||
|                             </items> | ||||
|                           </object> | ||||
|                           <packing> | ||||
|                             <property name="expand">True</property> | ||||
|                             <property name="fill">True</property> | ||||
|                             <property name="position">0</property> | ||||
|                           </packing> | ||||
|                         </child> | ||||
|                         <child> | ||||
|                           <object class="GtkComboBoxText" id="posOffset"> | ||||
|                             <property name="visible">True</property> | ||||
|                             <property name="can_focus">False</property> | ||||
|                             <property name="active">18</property> | ||||
|                             <items> | ||||
|                               <item translatable="yes">Left</item> | ||||
|                               <item translatable="yes">-7680+0</item> | ||||
|                               <item translatable="yes">-3840+0</item> | ||||
|                               <item translatable="yes">-2048+0</item> | ||||
|                               <item translatable="yes">-1920+0</item> | ||||
|                               <item translatable="yes">-1440+0</item> | ||||
|                               <item translatable="yes">-1600+0</item> | ||||
|                               <item translatable="yes">-1280+0</item> | ||||
|                               <item translatable="yes">-800+0</item> | ||||
|                               <item translatable="yes">Right</item> | ||||
|                               <item translatable="yes">+7680+0</item> | ||||
|                               <item translatable="yes">+3840+0</item> | ||||
|                               <item translatable="yes">+2048+0</item> | ||||
|                               <item translatable="yes">+1920+0</item> | ||||
|                               <item translatable="yes">+1440+0</item> | ||||
|                               <item translatable="yes">+1600+0</item> | ||||
|                               <item translatable="yes">+1280+0</item> | ||||
|                               <item translatable="yes">+800+0</item> | ||||
|                               <item translatable="yes">+0+0</item> | ||||
|                               <item translatable="yes">Top</item> | ||||
|                               <item translatable="yes">+0+7680</item> | ||||
|                               <item translatable="yes">+0+3840</item> | ||||
|                               <item translatable="yes">+0+2048</item> | ||||
|                               <item translatable="yes">+0+1920</item> | ||||
|                               <item translatable="yes">+0+1440</item> | ||||
|                               <item translatable="yes">+0+1600</item> | ||||
|                               <item translatable="yes">0+1280</item> | ||||
|                               <item translatable="yes">+0+800</item> | ||||
|                               <item translatable="yes">Bottum</item> | ||||
|                               <item translatable="yes">+0-7680</item> | ||||
|                               <item translatable="yes">+0-3840</item> | ||||
|                               <item translatable="yes">+0-2048</item> | ||||
|                               <item translatable="yes">+0-1920</item> | ||||
|                               <item translatable="yes">+0-1440</item> | ||||
|                               <item translatable="yes">+0-1600</item> | ||||
|                               <item translatable="yes">0-1280</item> | ||||
|                               <item translatable="yes">+0-800</item> | ||||
|                             </items> | ||||
|                           </object> | ||||
|                           <packing> | ||||
|                             <property name="expand">True</property> | ||||
|                             <property name="fill">True</property> | ||||
|                             <property name="position">1</property> | ||||
|                           </packing> | ||||
|                         </child> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="expand">False</property> | ||||
|                         <property name="fill">True</property> | ||||
|                         <property name="position">1</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">False</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">0</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|                 <child> | ||||
|                   <object class="GtkBox"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">False</property> | ||||
|                     <property name="orientation">vertical</property> | ||||
|                     <child> | ||||
|                       <object class="GtkLabel"> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">False</property> | ||||
|                         <property name="margin_top">10</property> | ||||
|                         <property name="margin_bottom">5</property> | ||||
|                         <property name="label" translatable="yes">Save Path</property> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="expand">True</property> | ||||
|                         <property name="fill">True</property> | ||||
|                         <property name="position">0</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                     <child> | ||||
|                       <object class="GtkComboBoxText" id="saveLoc"> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">False</property> | ||||
|                         <property name="active">0</property> | ||||
|                         <items> | ||||
|                           <item translatable="yes">.animatedBGstarter.sh</item> | ||||
|                           <item translatable="yes">.animatedBGstarter2.sh</item> | ||||
|                         </items> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="expand">True</property> | ||||
|                         <property name="fill">True</property> | ||||
|                         <property name="position">1</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">False</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">1</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|                 <child> | ||||
|                   <object class="GtkGrid"> | ||||
|                     <property name="visible">True</property> | ||||
|                     <property name="can_focus">False</property> | ||||
|                     <child> | ||||
|                       <object class="GtkButton"> | ||||
|                         <property name="label" translatable="yes">Save Selection</property> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">True</property> | ||||
|                         <property name="receives_default">True</property> | ||||
|                         <property name="hexpand">True</property> | ||||
|                         <property name="vexpand">True</property> | ||||
|                         <signal name="clicked" handler="saveToFile" swapped="no"/> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="left_attach">0</property> | ||||
|                         <property name="top_attach">0</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                     <child> | ||||
|                       <object class="GtkButton"> | ||||
|                         <property name="label" translatable="yes">Apply</property> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">True</property> | ||||
|                         <property name="receives_default">True</property> | ||||
|                         <property name="hexpand">True</property> | ||||
|                         <property name="vexpand">True</property> | ||||
|                         <signal name="clicked" handler="applySttngs" swapped="no"/> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="left_attach">1</property> | ||||
|                         <property name="top_attach">0</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                     <child> | ||||
|                       <object class="GtkButton"> | ||||
|                         <property name="label" translatable="yes">Kill XWinWrap</property> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">True</property> | ||||
|                         <property name="receives_default">True</property> | ||||
|                         <property name="hexpand">True</property> | ||||
|                         <property name="vexpand">True</property> | ||||
|                         <signal name="clicked" handler="killXWinWrp" swapped="no"/> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="left_attach">0</property> | ||||
|                         <property name="top_attach">1</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                     <child> | ||||
|                       <object class="GtkButton"> | ||||
|                         <property name="label" translatable="yes">Close</property> | ||||
|                         <property name="visible">True</property> | ||||
|                         <property name="can_focus">True</property> | ||||
|                         <property name="receives_default">True</property> | ||||
|                         <property name="hexpand">True</property> | ||||
|                         <property name="vexpand">True</property> | ||||
|                         <signal name="clicked" handler="closeProgram" swapped="no"/> | ||||
|                       </object> | ||||
|                       <packing> | ||||
|                         <property name="left_attach">1</property> | ||||
|                         <property name="top_attach">1</property> | ||||
|                       </packing> | ||||
|                     </child> | ||||
|                   </object> | ||||
|                   <packing> | ||||
|                     <property name="expand">False</property> | ||||
|                     <property name="fill">True</property> | ||||
|                     <property name="position">2</property> | ||||
|                   </packing> | ||||
|                 </child> | ||||
|               </object> | ||||
|               <packing> | ||||
|                 <property name="expand">False</property> | ||||
|                 <property name="fill">False</property> | ||||
|                 <property name="pack_type">end</property> | ||||
|                 <property name="position">1</property> | ||||
|               </packing> | ||||
|             </child> | ||||
|           </object> | ||||
|           <packing> | ||||
|             <property name="expand">False</property> | ||||
|             <property name="fill">True</property> | ||||
|             <property name="padding">1</property> | ||||
|             <property name="position">1</property> | ||||
|           </packing> | ||||
|         </child> | ||||
|       </object> | ||||
|     </child> | ||||
|   </object> | ||||
| </interface> | ||||
							
								
								
									
										
											BIN
										
									
								
								python/src/versions/0.0.1/GWinWrap/resources/GWinWrap.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								python/src/versions/0.0.1/GWinWrap/resources/GWinWrap.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 9.1 KiB | 
							
								
								
									
										59
									
								
								python/src/versions/0.0.1/GWinWrap/utils/SaveState.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								python/src/versions/0.0.1/GWinWrap/utils/SaveState.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| #!/usr/bin/env python | ||||
|  | ||||
| import os | ||||
|  | ||||
| class SaveState: | ||||
|     def __init__(self): | ||||
|         self.fileWriter  = None | ||||
|         self.filePath    = None | ||||
|         self.useXSvrn    = None | ||||
|         self.xScreenVal  = None | ||||
|         self.sveFileLoc  = None | ||||
|         self.resolution  = None | ||||
|  | ||||
|     def saveToFile(self, filePath, resolution, | ||||
|         saveLoc, useXSvrn, xScreenVal): | ||||
|  | ||||
|         self.filePath   = filePath | ||||
|         self.useXSvrn   = useXSvrn | ||||
|         self.xScreenVal = xScreenVal | ||||
|         self.resolution = resolution | ||||
|         userPth         = os.path.expanduser('~') | ||||
|  | ||||
|         # Saves to file with selected and needed settings | ||||
|         if filePath: | ||||
|             if filePath.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')): | ||||
|                 self.sveFileLoc = userPth + "/" + ".config/nitrogen/bg-saved.cfg" | ||||
|             else: | ||||
|                 self.sveFileLoc = userPth + "/" + saveLoc | ||||
|         else: | ||||
|             self.filePath   = '' | ||||
|         if self.sveFileLoc: | ||||
|             self.fileWriter = open(self.sveFileLoc, "w") | ||||
|  | ||||
|         return self.startSave() | ||||
|  | ||||
|     def startSave(self): | ||||
|         applyType = 1 | ||||
|         output    = None | ||||
|  | ||||
|         # XSCREENSAVER | ||||
|         if self.useXSvrn: | ||||
|             output = "xwinwrap -ov -g " + self.resolution + " -st -sp -b -nf -s -ni -- /usr/lib/xscreensaver/" + self.xScreenVal + " -window-id WID -root"; | ||||
|         # GIF | ||||
|         elif self.filePath.lower().endswith(('.gif')): | ||||
|             output = "xwinwrap -ov -g " + self.resolution + " -st -sp -b -nf -s -ni -- gifview -a -w WID " + self.filePath; | ||||
|         # Standard images using nitrogen | ||||
|         elif self.filePath.lower().endswith(('.png', 'jpg', '.jpeg')): | ||||
|             output = "[xin_0] \n file=" + self.filePath + "\nmode=0 \nbgcolor=#000000\n[xin_1] \nfile=" + self.filePath + "\nmode=0 \nbgcolor=#000000"; | ||||
|             applyType = 2; | ||||
|         # VIDEO | ||||
|         else: | ||||
|             output = "xwinwrap -ov -g " + self.resolution + " -st -sp -b -nf -s -ni -- mplayer -wid WID -really-quiet -ao null -loop 0 " + self.filePath; | ||||
|             pass | ||||
|  | ||||
|         if self.fileWriter: | ||||
|             self.fileWriter.write(output) | ||||
|             self.fileWriter.close() | ||||
|  | ||||
|         return applyType; | ||||
							
								
								
									
										
											BIN
										
									
								
								python/src/versions/0.0.1/GWinWrap/utils/SaveState.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								python/src/versions/0.0.1/GWinWrap/utils/SaveState.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										1
									
								
								python/src/versions/0.0.1/GWinWrap/utils/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								python/src/versions/0.0.1/GWinWrap/utils/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| from utils.SaveState import SaveState | ||||
							
								
								
									
										
											BIN
										
									
								
								python/src/versions/0.0.1/GWinWrap/utils/__init__.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								python/src/versions/0.0.1/GWinWrap/utils/__init__.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										20
									
								
								python/src/versions/0.0.1/XWinWrap/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								python/src/versions/0.0.1/XWinWrap/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| all: all64 all32 | ||||
|  | ||||
| all64: | ||||
| 	gcc -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -lX11 -lXext -lXrender xwinwrap.c -o xwinwrap | ||||
| 	-mkdir x86_64 | ||||
| 	mv ./xwinwrap ./x86_64 | ||||
|  | ||||
| all32: | ||||
| 	gcc -m32 -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -lX11 -lXext -lXrender xwinwrap.c -o xwinwrap | ||||
| 	-mkdir i386 | ||||
| 	mv ./xwinwrap ./i386 | ||||
|  | ||||
| install64: | ||||
| 	cp x86_64/xwinwrap /usr/bin | ||||
|  | ||||
| install32: | ||||
| 	cp i386/xwinwrap /usr/bin | ||||
|  | ||||
| clean: | ||||
| 	-rm -rf x86_64/ i386/ | ||||
							
								
								
									
										459
									
								
								python/src/versions/0.0.1/XWinWrap/xwinwrap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										459
									
								
								python/src/versions/0.0.1/XWinWrap/xwinwrap.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,459 @@ | ||||
| /* | ||||
|  * Copyright © 2005 Novell, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software | ||||
|  * and its documentation for any purpose is hereby granted without | ||||
|  * fee, provided that the above copyright notice appear in all copies | ||||
|  * and that both that copyright notice and this permission notice | ||||
|  * appear in supporting documentation, and that the name of | ||||
|  * Novell, Inc. not be used in advertising or publicity pertaining to | ||||
|  * distribution of the software without specific, written prior permission. | ||||
|  * Novell, Inc. makes no representations about the suitability of this | ||||
|  * software for any purpose. It is provided "as is" without express or | ||||
|  * implied warranty. | ||||
|  * | ||||
|  * NOVELL, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, | ||||
|  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN | ||||
|  * NO EVENT SHALL NOVELL, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR | ||||
|  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS | ||||
|  * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, | ||||
|  * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION | ||||
|  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  * | ||||
|  * Author: David Reveman <davidr@novell.com> | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * Modified by: Shantanu Goel | ||||
|  * Tech Blog: http://tech.shantanugoel.com | ||||
|  * Blog: http://blog.shantanugoel.com | ||||
|  * Home Page: http://tech.shantanugoel.com/projects/linux/shantz-xwinwrap | ||||
|  * | ||||
|  * Changelog: | ||||
|  * 15-Jan-09:   1. Fixed the bug where XFetchName returning a NULL for "name" | ||||
|  *                 resulted in a crash. | ||||
|  *              2. Provided an option to specify the desktop window name. | ||||
|  *              3. Added debug messages | ||||
|  * | ||||
|  * 24-Aug-08:   1. Fixed the geometry option (-g) so that it works | ||||
|  *              2. Added override option (-ov), for seamless integration with | ||||
|  *                 desktop like a background in non-fullscreen modes | ||||
|  *              3. Added shape option (-sh), to create non-rectangular windows. | ||||
|  *                 Currently supporting circlular and triangular windows | ||||
|  */ | ||||
|  | ||||
|  /* | ||||
|   * Modified by: Maxim Stewart | ||||
|   * Tech Blog: https://www.itdominator.com/ | ||||
|   * | ||||
|   * Changelog: | ||||
|   * 3-March-19:  1. Cleaned up code formatting. | ||||
|   *              2. Removed unused DEBUG_MSG reference. | ||||
|   *              3. Moved functions to a more reasonable order. | ||||
|   *              4. Compile dev library list 32 & 64 bit: | ||||
|   *  # 32 | ||||
|   *  sudo apt install libxext-dev:i386 libxrender-dev:i386 libc6-dev-i386 | ||||
|   * | ||||
|   *  # 64 | ||||
|   *  sudo apt install libxext-dev libxrender-dev libc6-dev | ||||
|   */ | ||||
|  | ||||
| #include <X11/Xlib.h> | ||||
| #include <X11/Xutil.h> | ||||
| #include <X11/Xatom.h> | ||||
| #include <X11/Xproto.h> | ||||
| #include <X11/extensions/shape.h> | ||||
| #include <X11/extensions/Xrender.h> | ||||
|  | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <signal.h> | ||||
| #include <stdio.h> | ||||
| #include <unistd.h> | ||||
| #include <sys/wait.h> | ||||
| #include <sys/stat.h> | ||||
| #include <sys/types.h> | ||||
|  | ||||
| #define WIDTH  512 | ||||
| #define HEIGHT 384 | ||||
| #define OPAQUE 0xffffffff | ||||
| #define NAME "xwinwrap" | ||||
| #define VERSION "0.3" | ||||
| #define DESKTOP_WINDOW_NAME_MAX_SIZE 25 | ||||
| #define DEFAULT_DESKTOP_WINDOW_NAME "Desktop" | ||||
| #define DEBUG_MSG(x) if(debug) { fprintf(stderr, x); } | ||||
|  | ||||
| typedef enum { | ||||
|     SHAPE_RECT = 0, | ||||
|     SHAPE_CIRCLE, | ||||
|     SHAPE_TRIG, | ||||
| } win_shape; | ||||
|  | ||||
| static pid_t pid        = 0; | ||||
| static char **childArgv = 0; | ||||
| static int  nChildArgv  = 0; | ||||
| int debug               = 0; | ||||
| char desktop_window_name[DESKTOP_WINDOW_NAME_MAX_SIZE]; | ||||
|  | ||||
| static int addArguments(char **argv, int n) { | ||||
|     char **newArgv; | ||||
|     int  i; | ||||
|  | ||||
|     newArgv = realloc (childArgv, sizeof (char *) * (nChildArgv + n)); | ||||
|     if (!newArgv) | ||||
|     return 0; | ||||
|  | ||||
|     for (i = 0; i < n; i++) | ||||
|     newArgv[nChildArgv + i] = argv[i]; | ||||
|  | ||||
|     childArgv   = newArgv; | ||||
|     nChildArgv += n; | ||||
|  | ||||
|     return n; | ||||
| } | ||||
|  | ||||
| static void setWindowOpacity(Display *dpy, Window win, unsigned int opacity) { | ||||
|     CARD32 o; | ||||
|     o = opacity; | ||||
|     XChangeProperty (dpy, win, XInternAtom (dpy, "_NET_WM_WINDOW_OPACITY", 0), | ||||
|     XA_CARDINAL, 32, PropModeReplace, | ||||
|     (unsigned char *) &o, 1); | ||||
| } | ||||
|  | ||||
| static Visual * findArgbVisual(Display *dpy, int scr) { | ||||
|     XVisualInfo         *xvi; | ||||
|     XVisualInfo         template; | ||||
|     int                 nvi; | ||||
|     int                 i; | ||||
|     XRenderPictFormat   *format; | ||||
|     Visual              *visual; | ||||
|  | ||||
|     template.screen = scr; | ||||
|     template.depth  = 32; | ||||
|     template.class  = TrueColor; | ||||
|  | ||||
|     xvi = XGetVisualInfo (dpy, | ||||
|             VisualScreenMask | | ||||
|             VisualDepthMask  | | ||||
|             VisualClassMask, | ||||
|             &template, | ||||
|             &nvi); | ||||
|  | ||||
|     if (!xvi) | ||||
|         return 0; | ||||
|  | ||||
|     visual = 0; | ||||
|     for (i = 0; i < nvi; i++) { | ||||
|         format = XRenderFindVisualFormat (dpy, xvi[i].visual); | ||||
|         if (format->type == PictTypeDirect && format->direct.alphaMask) { | ||||
|             visual = xvi[i].visual; | ||||
|             break; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     XFree (xvi); | ||||
|     return visual; | ||||
| } | ||||
|  | ||||
| static Window find_desktop_window(Display *display, int screen, | ||||
|                                   Window *root, Window *p_desktop) { | ||||
|     int i; | ||||
|     unsigned int n; | ||||
|     Window win = *root; | ||||
|     Window troot, parent, *children; | ||||
|     char *name; | ||||
|     int status; | ||||
|     int width  = DisplayWidth(display, screen); | ||||
|     int height = DisplayHeight(display, screen); | ||||
|     XWindowAttributes attrs; | ||||
|  | ||||
|     XQueryTree(display, *root, &troot, &parent, &children, &n); | ||||
|     for (i = 0; i < (int) n; i++) { | ||||
|         status = XFetchName(display, children[i], &name); | ||||
|         status |= XGetWindowAttributes(display, children[i], &attrs); | ||||
|  | ||||
|         if ((status != 0) && (NULL != name)) { | ||||
|             if( (attrs.map_state != 0) && (attrs.width == width) && | ||||
|                 (attrs.height == height) && (!strcmp(name, desktop_window_name)) ) { | ||||
|                 win = children[i]; | ||||
|                 XFree(children); | ||||
|                 XFree(name); | ||||
|                 *p_desktop = win; | ||||
|                 return win; | ||||
|             } | ||||
|  | ||||
|             if(name) | ||||
|                 XFree(name); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     DEBUG_MSG("Desktop Window Not found\n"); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static void usage (void) { | ||||
|     fprintf(stderr, "%s v%s- Modified by Shantanu Goel. Visit http://tech.shantanugoel.com for updates, queries and feature requests\n", NAME, VERSION); | ||||
|     fprintf (stderr, "\nUsage: %s [-g {w}x{h}+{x}+{y}] [-ni] [-argb] [-fs] [-s] [-st] [-sp] [-a] " | ||||
|             "[-b] [-nf] [-o OPACITY] [-sh SHAPE] [-ov]-- COMMAND ARG1...\n", NAME); | ||||
|     fprintf (stderr, "Options:\n \ | ||||
|             -g      - Specify Geometry (w=width, h=height, x=x-coord, y=y-coord. ex: -g 640x480+100+100)\n \ | ||||
|             -ni     - Ignore Input\n \ | ||||
|             -d      - Desktop Window Hack. Provide name of the \"Desktop\" window as parameter \ | ||||
|             -argb   - RGB\n \ | ||||
|             -fs     - Full Screen\n \ | ||||
|             -s      - Sticky\n \ | ||||
|             -st     - Skip Taskbar\n \ | ||||
|             -sp     - Skip Pager\n \ | ||||
|             -a      - Above\n \ | ||||
|             -b      - Below\n \ | ||||
|             -nf     - No Focus\n \ | ||||
|             -o      - Opacity value between 0 to 1 (ex: -o 0.20)\n \ | ||||
|             -sh     - Shape of window (choose between rectangle, circle or triangle. Default is rectangle)\n \ | ||||
|             -ov     - Set override_redirect flag (For seamless desktop background integration in non-fullscreenmode)\n \ | ||||
|             -debug  - Enable debug messages\n"); | ||||
| } | ||||
|  | ||||
| static void sigHandler (int sig) { kill(pid, sig); } | ||||
|  | ||||
| int main (int argc, char **argv) { | ||||
|     Display	    *dpy; | ||||
|     Window	    win; | ||||
|     Window	    root; | ||||
|     Window      p_desktop    = 0; | ||||
|     int         screen; | ||||
|     XSizeHints  xsh; | ||||
|     XWMHints    xwmh; | ||||
|     char        widArg[256]; | ||||
|     char        *widArgv[]   = { widArg }; | ||||
|     char        *endArg      = NULL; | ||||
|     int         i; | ||||
|     int         status       = 0; | ||||
|     unsigned int opacity     = OPAQUE; | ||||
|     int           x          = 0; | ||||
|     int           y          = 0; | ||||
|     unsigned int width       = WIDTH; | ||||
|     unsigned int height      = HEIGHT; | ||||
|     int		    argb         = 0; | ||||
|     int		    fullscreen   = 0; | ||||
|     int		    noInput      = 0; | ||||
|     int		    noFocus      = 0; | ||||
|     Atom        state[256]; | ||||
|     int         nState       = 0; | ||||
|     int         override     = 0; | ||||
|     win_shape   shape        = SHAPE_RECT; | ||||
|     Pixmap      mask; | ||||
|     GC          mask_gc; | ||||
|     XGCValues   xgcv; | ||||
|  | ||||
|  | ||||
|     dpy = XOpenDisplay (NULL); | ||||
|     if (!dpy) { | ||||
|         fprintf (stderr, "%s: Error: couldn't open display\n", argv[0]); | ||||
|         return 1; | ||||
|     } | ||||
|  | ||||
|     screen = DefaultScreen (dpy); | ||||
|     root   = RootWindow (dpy, screen); | ||||
|     strcpy(desktop_window_name, DEFAULT_DESKTOP_WINDOW_NAME); | ||||
|  | ||||
|     for (i = 1; i < argc; i++) { | ||||
|         if (strcmp(argv[i], "-g") == 0) { | ||||
|             if (++i < argc) | ||||
|                 XParseGeometry (argv[i], &x, &y, &width, &height); | ||||
|         } else if (strcmp(argv[i], "-ni") == 0) { | ||||
|             noInput = 1; | ||||
|         } else if (strcmp(argv[i], "-d") == 0) { | ||||
|             ++i; | ||||
|             strcpy(desktop_window_name, argv[i]); | ||||
|         } else if (strcmp(argv[i], "-argb") == 0) { | ||||
|             argb = 1; | ||||
|         } else if (strcmp(argv[i], "-fs") == 0) { | ||||
|             state[nState++] = XInternAtom (dpy, "_NET_WM_STATE_FULLSCREEN", 0); | ||||
|             fullscreen = 1; | ||||
|         } else if (strcmp(argv[i], "-s") == 0) { | ||||
|             state[nState++] = XInternAtom (dpy, "_NET_WM_STATE_STICKY", 0); | ||||
|         } else if (strcmp(argv[i], "-st") == 0) { | ||||
|             state[nState++] = XInternAtom (dpy, "_NET_WM_STATE_SKIP_TASKBAR", 0); | ||||
|         } else if (strcmp(argv[i], "-sp") == 0) { | ||||
|             state[nState++] = XInternAtom (dpy, "_NET_WM_STATE_SKIP_PAGER", 0); | ||||
|         } else if (strcmp(argv[i], "-a") == 0) { | ||||
|             state[nState++] = XInternAtom (dpy, "_NET_WM_STATE_ABOVE", 0); | ||||
|         } else if (strcmp(argv[i], "-b") == 0) { | ||||
|             state[nState++] = XInternAtom (dpy, "_NET_WM_STATE_BELOW", 0); | ||||
|         } else if (strcmp(argv[i], "-nf") == 0) { | ||||
|             noFocus = 1; | ||||
|         } else if (strcmp(argv[i], "-o") == 0) { | ||||
|             if (++i < argc) | ||||
|                 opacity = (unsigned int) (atof (argv[i]) * OPAQUE); | ||||
|         } else if (strcmp(argv[i], "-sh") == 0) { | ||||
|             if (++i < argc) { | ||||
|                 if(strcasecmp(argv[i], "circle") == 0) { | ||||
|                     shape = SHAPE_CIRCLE; | ||||
|                 } else if(strcasecmp(argv[i], "triangle") == 0) { | ||||
|                     shape = SHAPE_TRIG; | ||||
|                 } | ||||
|             } | ||||
|         } else if (strcmp(argv[i], "-ov") == 0) { | ||||
|             override = 1; | ||||
|         } else if (strcmp(argv[i], "-debug") == 0) { | ||||
|             debug = 1; | ||||
|         } else if (strcmp(argv[i], "--") == 0) { | ||||
|             break; | ||||
|         } else { | ||||
|             usage (); | ||||
|             return 1; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     for (i = i + 1; i < argc; i++) { | ||||
|         if (strcmp(argv[i], "WID") == 0) | ||||
|             addArguments (widArgv, 1); | ||||
|         else | ||||
|             addArguments (&argv[i], 1); | ||||
|     } | ||||
|  | ||||
|     if (!nChildArgv) { | ||||
|         fprintf (stderr, "%s: Error: couldn't create command line\n", argv[0]); | ||||
|         usage (); | ||||
|         return 1; | ||||
|     } | ||||
|  | ||||
|     addArguments (&endArg, 1); | ||||
|  | ||||
|     if (fullscreen) { | ||||
|         xsh.flags  = PSize | PPosition; | ||||
|         xsh.width  = DisplayWidth (dpy, screen); | ||||
|         xsh.height = DisplayHeight (dpy, screen); | ||||
|     } else { | ||||
|         xsh.flags  = PSize; | ||||
|         xsh.width  = width; | ||||
|         xsh.height = height; | ||||
|     } | ||||
|  | ||||
|     xwmh.flags = InputHint; | ||||
|     xwmh.input = !noFocus; | ||||
|  | ||||
|     if (argb) { | ||||
|         XSetWindowAttributes attr; | ||||
|         Visual *visual; | ||||
|  | ||||
|         visual = findArgbVisual (dpy, screen); | ||||
|         if (!visual) { | ||||
|             fprintf (stderr, "%s: Error: couldn't find argb visual\n", argv[0]); | ||||
|             return 1; | ||||
|         } | ||||
|  | ||||
|         attr.background_pixel = 0; | ||||
|         attr.border_pixel     = 0; | ||||
|         attr.colormap	      = XCreateColormap (dpy, root, visual, AllocNone); | ||||
|  | ||||
|         win = XCreateWindow (dpy, root, 0, 0, xsh.width, xsh.height, 0, 32, | ||||
|                              InputOutput, visual, | ||||
|                              CWBackPixel | CWBorderPixel | CWColormap, &attr); | ||||
|     } else { | ||||
|         XSetWindowAttributes attr; | ||||
|         attr.override_redirect = override; | ||||
|  | ||||
|         if( override && find_desktop_window(dpy, screen, &root, &p_desktop) ) { | ||||
|             win = XCreateWindow (dpy, p_desktop, x, y, xsh.width, xsh.height, 0, | ||||
|                                  CopyFromParent, InputOutput, CopyFromParent, | ||||
|                                  CWOverrideRedirect, &attr); | ||||
|         } else { | ||||
|             win = XCreateWindow (dpy, root, x, y, xsh.width, xsh.height, 0, | ||||
|                                  CopyFromParent, InputOutput, CopyFromParent, | ||||
|                                  CWOverrideRedirect, &attr); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     XSetWMProperties (dpy, win, NULL, NULL, argv, argc, &xsh, &xwmh, NULL); | ||||
|  | ||||
|     if (opacity != OPAQUE) | ||||
|         setWindowOpacity (dpy, win, opacity); | ||||
|  | ||||
|     if (noInput) { | ||||
|         Region region; | ||||
|  | ||||
|         region = XCreateRegion (); | ||||
|         if (region) { | ||||
|             XShapeCombineRegion (dpy, win, ShapeInput, 0, 0, region, ShapeSet); | ||||
|             XDestroyRegion (region); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     if (nState) | ||||
|         XChangeProperty (dpy, win, XInternAtom (dpy, "_NET_WM_STATE", 0), | ||||
|                          XA_ATOM, 32, PropModeReplace, (unsigned char *) state, nState); | ||||
|  | ||||
|     if (shape) { | ||||
|         mask = XCreatePixmap(dpy, win, width, height, 1); | ||||
|         mask_gc = XCreateGC(dpy, mask, 0, &xgcv); | ||||
|  | ||||
|         switch(shape) { | ||||
|             //Nothing special to be done if it's a rectangle | ||||
|             case SHAPE_CIRCLE: | ||||
|                 /* fill mask */ | ||||
|                 XSetForeground(dpy, mask_gc, 0); | ||||
|                 XFillRectangle(dpy, mask, mask_gc, 0, 0, width, height); | ||||
|  | ||||
|                 XSetForeground(dpy, mask_gc, 1); | ||||
|                 XFillArc(dpy, mask, mask_gc, 0, 0, width, height, 0, 23040); | ||||
|                 break; | ||||
|  | ||||
|             case SHAPE_TRIG: | ||||
|                 { | ||||
|                     XPoint points[3] = { {0, height}, | ||||
|                         {width/2, 0}, | ||||
|                         {width, height} }; | ||||
|  | ||||
|                     XSetForeground(dpy, mask_gc, 0); | ||||
|                     XFillRectangle(dpy, mask, mask_gc, 0, 0, width, height); | ||||
|  | ||||
|                     XSetForeground(dpy, mask_gc, 1); | ||||
|                     XFillPolygon(dpy, mask, mask_gc, points, 3, Complex, CoordModeOrigin); | ||||
|                 } | ||||
|                 break; | ||||
|             default: | ||||
|                 break; | ||||
|         } | ||||
|         /* combine */ | ||||
|         XShapeCombineMask(dpy, win, ShapeBounding, 0, 0, mask, ShapeSet); | ||||
|     } | ||||
|  | ||||
|     XMapWindow (dpy, win); | ||||
|  | ||||
|     if(p_desktop == 0) | ||||
|         XLowerWindow(dpy, win); | ||||
|  | ||||
|     XSync (dpy, win); | ||||
|     sprintf (widArg, "0x%x", (int) win); | ||||
|     pid = fork (); | ||||
|  | ||||
|     switch (pid) { | ||||
|         case -1: | ||||
|             perror ("fork"); | ||||
|             return 1; | ||||
|         case 0: | ||||
|             execvp (childArgv[0], childArgv); | ||||
|             perror (childArgv[0]); | ||||
|             exit (2); | ||||
|             break; | ||||
|         default: | ||||
|             break; | ||||
|     } | ||||
|  | ||||
|     signal (SIGTERM, sigHandler); | ||||
|     signal (SIGINT,  sigHandler); | ||||
|  | ||||
|     for (;;) { | ||||
|         if (waitpid (pid, &status, 0) != -1) { | ||||
|             if (WIFEXITED (status)) | ||||
|                 fprintf (stderr, "%s died, exit status %d\n", childArgv[0], | ||||
|                          WEXITSTATUS (status)); | ||||
|             break; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     XDestroyWindow (dpy, win); | ||||
|     XCloseDisplay (dpy); | ||||
|     return 0; | ||||
| } | ||||
							
								
								
									
										6
									
								
								python/src/versions/0.0.1/compileBin.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								python/src/versions/0.0.1/compileBin.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| function main() { | ||||
|     gcc -no-pie -s gwinwrap_exec_bin.cpp -o gwinwrap | ||||
| } | ||||
| main; | ||||
							
								
								
									
										10
									
								
								python/src/versions/0.0.1/gwinwrap_exec_bin.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								python/src/versions/0.0.1/gwinwrap_exec_bin.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <unistd.h> | ||||
| using namespace std; | ||||
|  | ||||
| int main() { | ||||
|     chdir("/opt/GWinWrap/"); | ||||
|     system("python GWinWrap.py"); | ||||
| return 0; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user