From 046b0279b0f3eb827bcc2b2e395e6ea69c019733 Mon Sep 17 00:00:00 2001 From: luke bonham Date: Sat, 7 Sep 2013 12:06:42 +0200 Subject: [PATCH] first commit --- LICENSE | 339 ++++++++++++++ README.md | 419 ++++++++++++++++++ helpers.lua | 90 ++++ icons/cal/white/1.png | Bin 0 -> 888 bytes icons/cal/white/10.png | Bin 0 -> 3476 bytes icons/cal/white/11.png | Bin 0 -> 2109 bytes icons/cal/white/12.png | Bin 0 -> 2349 bytes icons/cal/white/13.png | Bin 0 -> 2442 bytes icons/cal/white/14.png | Bin 0 -> 1378 bytes icons/cal/white/15.png | Bin 0 -> 1711 bytes icons/cal/white/16.png | Bin 0 -> 2056 bytes icons/cal/white/17.png | Bin 0 -> 1435 bytes icons/cal/white/18.png | Bin 0 -> 2207 bytes icons/cal/white/19.png | Bin 0 -> 2062 bytes icons/cal/white/2.png | Bin 0 -> 1553 bytes icons/cal/white/20.png | Bin 0 -> 2754 bytes icons/cal/white/21.png | Bin 0 -> 2092 bytes icons/cal/white/22.png | Bin 0 -> 2060 bytes icons/cal/white/23.png | Bin 0 -> 2495 bytes icons/cal/white/24.png | Bin 0 -> 2280 bytes icons/cal/white/25.png | Bin 0 -> 2325 bytes icons/cal/white/26.png | Bin 0 -> 2645 bytes icons/cal/white/27.png | Bin 0 -> 2044 bytes icons/cal/white/28.png | Bin 0 -> 2744 bytes icons/cal/white/29.png | Bin 0 -> 2597 bytes icons/cal/white/3.png | Bin 0 -> 1808 bytes icons/cal/white/30.png | Bin 0 -> 2912 bytes icons/cal/white/31.png | Bin 0 -> 2232 bytes icons/cal/white/4.png | Bin 0 -> 1140 bytes icons/cal/white/5.png | Bin 0 -> 1437 bytes icons/cal/white/6.png | Bin 0 -> 1776 bytes icons/cal/white/7.png | Bin 0 -> 1147 bytes icons/cal/white/8.png | Bin 0 -> 1930 bytes icons/cal/white/9.png | Bin 0 -> 1786 bytes icons/layout/default/browse.png | Bin 0 -> 190 bytes icons/layout/default/browsew.png | Bin 0 -> 190 bytes icons/layout/default/cascade.png | Bin 0 -> 233 bytes icons/layout/default/cascadebrowse.png | Bin 0 -> 235 bytes icons/layout/default/cascadebrowsew.png | Bin 0 -> 235 bytes icons/layout/default/cascadew.png | Bin 0 -> 233 bytes icons/layout/default/centerwork.png | Bin 0 -> 258 bytes icons/layout/default/centerworkw.png | Bin 0 -> 277 bytes icons/layout/default/gimp.png | Bin 0 -> 289 bytes icons/layout/default/gimpw.png | Bin 0 -> 289 bytes icons/layout/default/termfair.png | Bin 0 -> 191 bytes icons/layout/default/termfairw.png | Bin 0 -> 191 bytes icons/layout/zenburn/browse.png | Bin 0 -> 269 bytes icons/layout/zenburn/cascade.png | Bin 0 -> 299 bytes icons/layout/zenburn/cascadebrowse.png | Bin 0 -> 290 bytes icons/layout/zenburn/centerwork.png | Bin 0 -> 252 bytes icons/layout/zenburn/gimp.png | Bin 0 -> 3424 bytes icons/layout/zenburn/termfair.png | Bin 0 -> 289 bytes icons/mail.png | Bin 0 -> 634 bytes icons/no_net.png | Bin 0 -> 1697 bytes init.lua | 20 + layout/cascade.lua | 65 +++ layout/cascadetile.lua | 159 +++++++ layout/centerwork.lua | 122 +++++ layout/init.lua | 20 + layout/termfair.lua | 160 +++++++ layout/uselessfair.lua | 122 +++++ layout/uselesspiral.lua | 112 +++++ layout/uselesstile.lua | 232 ++++++++++ scripts/checkmail | 104 +++++ scripts/dfs | 385 ++++++++++++++++ scripts/mpdcover | 64 +++ util/init.lua | 174 ++++++++ util/markup.lua | 102 +++++ widgets/alsa.lua | 103 +++++ widgets/alsabar.lua | 164 +++++++ widgets/bat.lua | 147 ++++++ widgets/borderbox.lua | 61 +++ widgets/calendar.lua | 124 ++++++ widgets/cpu.lua | 80 ++++ widgets/fs.lua | 134 ++++++ widgets/imap.lua | 166 +++++++ widgets/init.lua | 24 + widgets/maildir.lua | 129 ++++++ widgets/mem.lua | 87 ++++ widgets/mpd.lua | 138 ++++++ widgets/net.lua | 153 +++++++ widgets/sysload.lua | 70 +++ widgets/temp.lua | 52 +++ widgets/yawn/README.rst | 133 ++++++ widgets/yawn/icons/BlowingSnow.png | Bin 0 -> 11454 bytes widgets/yawn/icons/Cloudy.png | Bin 0 -> 7469 bytes widgets/yawn/icons/DayClear.png | Bin 0 -> 6147 bytes widgets/yawn/icons/DayMostlyCloudy.png | Bin 0 -> 8016 bytes widgets/yawn/icons/DayPartlyCloudy.png | Bin 0 -> 7478 bytes widgets/yawn/icons/Foggy.png | Bin 0 -> 7325 bytes widgets/yawn/icons/FreezingDrizzle.png | Bin 0 -> 13166 bytes widgets/yawn/icons/FreezingRain.png | Bin 0 -> 13979 bytes widgets/yawn/icons/Hail.png | Bin 0 -> 7325 bytes widgets/yawn/icons/HeavySnow.png | Bin 0 -> 12733 bytes widgets/yawn/icons/LightSnowShowers.png | Bin 0 -> 8779 bytes widgets/yawn/icons/MixedRainAndHail.png | Bin 0 -> 9060 bytes widgets/yawn/icons/MixedRainAndSleet.png | Bin 0 -> 10978 bytes widgets/yawn/icons/MixedRainAndSnow.png | Bin 0 -> 10808 bytes widgets/yawn/icons/NightClear.png | Bin 0 -> 5198 bytes widgets/yawn/icons/NightMostlyCloudy.png | Bin 0 -> 7058 bytes widgets/yawn/icons/NightPartlyCloudy.png | Bin 0 -> 6583 bytes widgets/yawn/icons/README.md | 6 + widgets/yawn/icons/Rain.png | Bin 0 -> 8052 bytes widgets/yawn/icons/RainThunder.png | Bin 0 -> 9879 bytes widgets/yawn/icons/Showers.png | Bin 0 -> 9694 bytes widgets/yawn/icons/SnowShowers.png | Bin 0 -> 9961 bytes widgets/yawn/icons/Sunny.png | Bin 0 -> 14018 bytes widgets/yawn/icons/Wind.png | Bin 0 -> 8726 bytes widgets/yawn/icons/na.png | Bin 0 -> 11160 bytes widgets/yawn/init.lua | 227 ++++++++++ widgets/yawn/localizations/it_IT | 57 +++ .../yawn/localizations/localization_template | 57 +++ 112 files changed, 4801 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 helpers.lua create mode 100644 icons/cal/white/1.png create mode 100644 icons/cal/white/10.png create mode 100644 icons/cal/white/11.png create mode 100644 icons/cal/white/12.png create mode 100644 icons/cal/white/13.png create mode 100644 icons/cal/white/14.png create mode 100644 icons/cal/white/15.png create mode 100644 icons/cal/white/16.png create mode 100644 icons/cal/white/17.png create mode 100644 icons/cal/white/18.png create mode 100644 icons/cal/white/19.png create mode 100644 icons/cal/white/2.png create mode 100644 icons/cal/white/20.png create mode 100644 icons/cal/white/21.png create mode 100644 icons/cal/white/22.png create mode 100644 icons/cal/white/23.png create mode 100644 icons/cal/white/24.png create mode 100644 icons/cal/white/25.png create mode 100644 icons/cal/white/26.png create mode 100644 icons/cal/white/27.png create mode 100644 icons/cal/white/28.png create mode 100644 icons/cal/white/29.png create mode 100644 icons/cal/white/3.png create mode 100644 icons/cal/white/30.png create mode 100644 icons/cal/white/31.png create mode 100644 icons/cal/white/4.png create mode 100644 icons/cal/white/5.png create mode 100644 icons/cal/white/6.png create mode 100644 icons/cal/white/7.png create mode 100644 icons/cal/white/8.png create mode 100644 icons/cal/white/9.png create mode 100644 icons/layout/default/browse.png create mode 100644 icons/layout/default/browsew.png create mode 100644 icons/layout/default/cascade.png create mode 100644 icons/layout/default/cascadebrowse.png create mode 100644 icons/layout/default/cascadebrowsew.png create mode 100644 icons/layout/default/cascadew.png create mode 100644 icons/layout/default/centerwork.png create mode 100644 icons/layout/default/centerworkw.png create mode 100644 icons/layout/default/gimp.png create mode 100644 icons/layout/default/gimpw.png create mode 100644 icons/layout/default/termfair.png create mode 100644 icons/layout/default/termfairw.png create mode 100644 icons/layout/zenburn/browse.png create mode 100644 icons/layout/zenburn/cascade.png create mode 100644 icons/layout/zenburn/cascadebrowse.png create mode 100644 icons/layout/zenburn/centerwork.png create mode 100644 icons/layout/zenburn/gimp.png create mode 100644 icons/layout/zenburn/termfair.png create mode 100644 icons/mail.png create mode 100755 icons/no_net.png create mode 100644 init.lua create mode 100644 layout/cascade.lua create mode 100644 layout/cascadetile.lua create mode 100644 layout/centerwork.lua create mode 100644 layout/init.lua create mode 100644 layout/termfair.lua create mode 100644 layout/uselessfair.lua create mode 100644 layout/uselesspiral.lua create mode 100644 layout/uselesstile.lua create mode 100755 scripts/checkmail create mode 100755 scripts/dfs create mode 100755 scripts/mpdcover create mode 100644 util/init.lua create mode 100644 util/markup.lua create mode 100644 widgets/alsa.lua create mode 100644 widgets/alsabar.lua create mode 100644 widgets/bat.lua create mode 100644 widgets/borderbox.lua create mode 100644 widgets/calendar.lua create mode 100644 widgets/cpu.lua create mode 100644 widgets/fs.lua create mode 100644 widgets/imap.lua create mode 100644 widgets/init.lua create mode 100644 widgets/maildir.lua create mode 100644 widgets/mem.lua create mode 100644 widgets/mpd.lua create mode 100644 widgets/net.lua create mode 100644 widgets/sysload.lua create mode 100644 widgets/temp.lua create mode 100644 widgets/yawn/README.rst create mode 100755 widgets/yawn/icons/BlowingSnow.png create mode 100755 widgets/yawn/icons/Cloudy.png create mode 100755 widgets/yawn/icons/DayClear.png create mode 100755 widgets/yawn/icons/DayMostlyCloudy.png create mode 100755 widgets/yawn/icons/DayPartlyCloudy.png create mode 100755 widgets/yawn/icons/Foggy.png create mode 100755 widgets/yawn/icons/FreezingDrizzle.png create mode 100755 widgets/yawn/icons/FreezingRain.png create mode 100755 widgets/yawn/icons/Hail.png create mode 100755 widgets/yawn/icons/HeavySnow.png create mode 100755 widgets/yawn/icons/LightSnowShowers.png create mode 100755 widgets/yawn/icons/MixedRainAndHail.png create mode 100755 widgets/yawn/icons/MixedRainAndSleet.png create mode 100755 widgets/yawn/icons/MixedRainAndSnow.png create mode 100755 widgets/yawn/icons/NightClear.png create mode 100755 widgets/yawn/icons/NightMostlyCloudy.png create mode 100755 widgets/yawn/icons/NightPartlyCloudy.png create mode 100644 widgets/yawn/icons/README.md create mode 100755 widgets/yawn/icons/Rain.png create mode 100755 widgets/yawn/icons/RainThunder.png create mode 100755 widgets/yawn/icons/Showers.png create mode 100755 widgets/yawn/icons/SnowShowers.png create mode 100755 widgets/yawn/icons/Sunny.png create mode 100755 widgets/yawn/icons/Wind.png create mode 100755 widgets/yawn/icons/na.png create mode 100644 widgets/yawn/init.lua create mode 100644 widgets/yawn/localizations/it_IT create mode 100644 widgets/yawn/localizations/localization_template diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 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. + + + Copyright (C) + + 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. + + , 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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..8aa9449 --- /dev/null +++ b/README.md @@ -0,0 +1,419 @@ +VAin agaIN +========== + +Author: Luke Bonham + +Source: https://github.com/copycat-killer/vain + +Version: 1.9.9 + +Release version: 2.0 + +**Please note**: until release version, this documentation will be not updated. + +Foreword +-------- + +Based on a port of [awesome-vain](https://github.com/vain/awesome-vain), this +costantly evolving module provides new layouts, a set of widgets and +utility functions in order to improve Awesome usability and configurability. + +This work is licensed under [GNU GPLv2 License](http://www.gnu.org/licenses/gpl-2.0.html). +Installation +============ + +Simply clone this repository into your Awesome directory. + +Widgets +======= + +systemload +---------- + +Show the current system load in a textbox. Read it directly from +`/proc/loadavg`. + + mysysload = vain.widgets.systemload() + +A click on the widget will call `htop` in your `terminal`. + +The function takes a table as an optional argument. That table may +contain: + +* `.refresh_timeout`: Default to 10 seconds. +* `.show_all`: Show all three values (`true`) or only the first one (`false`). Default to `false`. +* `.color`: Default to beautiful.bg_normal or "#FFFFFF". + +cpu +-------- + +Shows the average CPU usage percent for a given amount of time. + + mycpuusage = vain.widgets.cpu() + +A click on the widget will call `htop` in your `terminal`. + +The function takes a table as optional argument, which can contain: + +Variable | Meaning | Type | Default +--- | --- | --- | --- +`refresh_timeout` | Refresh timeout seconds | int | 10 +`header` | Text to show before value | string | " Vol " +`header_color` | Header color | string | `beautiful.fg_normal` or "#FFFFFF" +`color` | Value color | string | `beautiful.fg_focus` or "#FFFFFF" +`footer` | Text to show after value | string | "%" + +**Note**: `footer` color is `color`. + +memusage +-------- + +Show used memory and total memory in MiB. + + mymem = vain.widgets.mem() + + +The function takes a table as an optional argument. That table may +contain: + +Variable | Meaning | Type | Default +--- | --- | --- | --- +`refresh_timeout` | Refresh timeout seconds | int | 10 +`show_swap` | Show amount of used swap space? | boolean | false +`show_total` | Show amout of total memory? | boolean | false +`header` | Text to show before value | string | " Vol " +`header_color` | Header color | string | `beautiful.fg_normal` or "#FFFFFF" +`color` | Value color | string | `beautiful.fg_focus` or "#FFFFFF" +`footer` | Text to show after value | string | "MB" + +**Note**: `footer` color is `color`. + +mailcheck +--------- +Checks maildirs and shows the result in a textbox. +Maildirs are structured as follows: + + ~/Mail + . + |-- arch + | |-- cur + | |-- new + | `-- tmp + |-- gmail + | |-- cur + | |-- new + | `-- tmp + . + . + . + +therefore `mailcheck` checks whether there are files in the `new` +directories. To do so, it calls `find`. If there's new mail, the textbox +will say something like "mail: bugs(3), system(1)", otherwise it says +"no mail". + + mymailcheck = vain.widgets.mailcheck("/path/to/my/maildir") + +The function takes a table as an optional argument. That table may +contain: + +* `.mailprogram`: Your favourite mail program. Clicking on the widget will + spawn it. Default is `mutt`. +* `.refresh_timeout`: Default to 60 seconds. +* `.mailpath`: Path to your maildir, default is `~/Mail`. +* `.ignore_boxes`: Another table which lists boxes (just the last part, + like `lists`) to ignore. Default to an empty table. +* `.initial_update`: Check for mail when starting Awesome (`true`) or + wait for the first refresh timeout (`false`)? Default to `false`. +* `.header_text`: Text to show along with output, default is "Mail". +* `.header_text_color`: Default to "#9E9E9E". +* `.color_newmail`: Default to "#D4D4D4". +* `.color_nomail`: Default to "#9E9E9E". +* `.shadow`: Hides widget when there are no mails. Default is `false`. + +imapcheck +--------- + +Check new mails over imap protocol. + +Dependencies: + +* Python3 + +Since [luasec](https://github.com/brunoos/luasec/) is still not officially +supported in lua 5.2, writing a pure lua solution would have meant too many +hacks and dependencies, resulting in a very big and not efficient-proven submodule. + +That's why I chose Python. + +Python offers [imaplib](http://docs.python.org/2/library/imaplib.html), a simple yet powerful IMAP4 client library which provides encrypted communication over SSL sockets. + +Basically, `imapcheck` calls ``vain/scripts/checkmail`` and parse its output in a widget. New mails are also notified through Naughty, with a popup like this: + + +---------------------------------------------------+ + | +---+ | + | |\ /| donald@disney.org has 3 new messages | + | +---+ | + | Latest From: Mickey Mouse | + | Subject: Re: Vacation Day | + | | + | Not after what you did yesterday. | + | Daisy told me everything [...] | + | | + +---------------------------------------------------+ + +Text will be cut if the mail is too long. + + myimapcheck = vain.widgets.mailcheck(args) + +The function takes a table as argument. Required table parameters are: + +* `.server`: You email server. Example: `imap.gmail.com`. +* `.mail`: Your email. +* `.password`: Your email password. + +while the optional are: + +* `.port`: Imap port. Default is `993`. +* `.refresh_timeout`: Default to 60 seconds. +* `.notify_timeout`: Notification timeout. Default to 8 seconds. +* `.notify_position`: Notification position. Default is "top_left". Check + [Naughty position parameter](http://awesome.naquadah.org/doc/api/modules/naughty.html) for a list of other possible values. +* `.mailprogram`: Your favourite mail program. Clicking on the widget will + spawn it. Default is `mutt`. +* `.mail_encoding`: If you wish to set an encoding. Default is `nil`. +* `.initial_update`: Check for mail when starting Awesome (`true`) or + wait for the first refresh timeout (`false`)? Default to `false`. +* `.header_text`: Text to show along with output, default is "Mail". +* `.header_text_color`: Default to "#9E9E9E". +* `.color_newmail`: Default to "#D4D4D4". +* `.color_nomail`: Default to "#9E9E9E". +* `.shadow`: Hides widget when there are no mails. Default is `false`. +* `.maxlen`: Maximum mail length. If mail is longer, it will be cut. Default is + `100`. +* `.is_plain`: Define whether `.password` field is a plain password (`true`) or a function that retrieves it (`false`). Default to `false`. + +Let's focus better on `.is_plain` parameter. + +You can just easily set your password like this: + + args.is_plain = false + args.password = "mypassword" + +and you'll have the same security provided by `~/.netrc`. (In this case, it's +better to set your `rc.lua` permissions to 700 or 600) + +**Or**, you can use a keyring, like gnome's: + + args.password = "gnome-keyring-query get password" + +(`gnome-keyring-query` is not in gnome-keyring pkg, you have to download it +separately) + +or the very light [python keyring](https://pypi.python.org/pypi/keyring). + +When `.is_plain` is `false`, it *executes* `.password` before using it, so you can also use whatever password fetching solution you want. + +You can also define your icon for the naughty notification. Just set `vain_mail_notify` into your ``theme.lua``. + + + +mpd +--- + +Provides a `table` with 2 elements: + +* `table["widget"]` is a textbox displaying current song in play. + +* `table["force"]` is a function to *force* the widget to update, exactly + like `vicious.force()`. + +Also, a notification is shown when a new song is playing. + +Dependencies: + +* libnotify +* imagemagick + + + mpdwidget = vain.widgets.mpd() + ... + right_layout:add(mpdwidget["widget"]) + +The function takes a table as an optional argument. That table may +contain: + +* `.password`: Mpd password. Default is unset. +* `.host`: Mpd host. Default is "127.0.0.1" (localhost). +* `.port`: Mpd port. Default is "6600". +* `.music_dir`: Your music directory. Default is "~/Music". If you have to + change this, be sure to write the absolute path. +* `.refresh_timeout`: Widget refresh timeout. Default is `1`. +* `.notify_timeout`: Notification timeout. Default is `5`. +* `.color_artist`: Artist name color. Default is `#9E9E9E`. +* `.color_song`: Song name color. Default is `#EBEBFF`. +* `.musicplr`: Your favourite music player. Clicking on the widget will spawn + it. Default is `ncmpcpp`. +* `.shadow`: Hides widget when no song is playing. Default is `false`. + +You can use `table["force"]` to make your mpd keybindings immediate. +Example usage: + + globalkeys = awful.util.table.join( + ... + -- Music control + awful.key({ altkey, "Control" }, "Up", function () + awful.util.spawn_with_shell( "mpc toggle || ncmpcpp toggle || ncmpc toggle || pms toggle", false ) + mpdwidget["force"]() + end), + awful.key({ altkey, "Control" }, "Down", function () + awful.util.spawn_with_shell( "mpc stop || ncmpcpp stop || ncmpc stop || pms stop", false ) + mpdwidget["force"]() + end ), + awful.key({ altkey, "Control" }, "Left", function () + awful.util.spawn_with_shell( "mpc prev || ncmpcpp prev || ncmpc prev || pms prev", false ) + mpdwidget["force"]() + end ), + awful.key({ altkey, "Control" }, "Right", function () + awful.util.spawn_with_shell( "mpc next || ncmpcpp next || ncmpc next || pms next", false ) + mpdwidget["force"]() + end ), + +net +--- + +Monitors network interfaces and shows current traffic in a textbox. If +the interface is not present or if there's not enough data yet, you'll +see `wlan0: -` or similar. Otherwise, the current traffic is shown in +kilobytes per second as `eth0: ↑(00,010.2), ↓(01,037.8)` or similar. + + neteth0 = vain.widgets.net() + +The function takes a table as an optional argument. That table may +contain: + +* `.iface`: Default to `eth0`. +* `.refresh_timeout`: Default to 2 seconds. +* `.color`: Default to beautiful.bg_normal or "#FFFFFF". + +gitodo +------ + +This is an integration of [gitodo](https://github.com/vain/gitodo) into +Awesome. + + todolist = vain.widgets.gitodo() + +The function takes a table as an optional argument. That table may +contain: + +* `.refresh_timeout`: Default to 120 seconds. +* `.initial_update`: Check for todo items when starting Awesome (`true`) + or wait for the first refresh timeout (`false`)? Default to `true`. + +`beautiful.gitodo_normal` is used as the color for non-outdated items, +`beautiful.gitodo_warning` for those items close to their deadline and +`beautiful.gitodo_outdated` is the color of outdated items. + + + +Utility functions +================= + +I'll only explain the more complex functions. See the source code for +the others. + +menu\_clients\_current\_tags +---------------------------- + +Similar to `awful.menu.clients()`, but this menu only shows the clients +of currently visible tags. Use it like this: + + globalkeys = awful.util.table.join( + ... + awful.key({ "Mod1" }, "Tab", function() + awful.menu.menu_keys.down = { "Down", "Alt_L", "Tab", "j" } + awful.menu.menu_keys.up = { "Up", "k" } + vain.util.menu_clients_current_tags({ width = 350 }, { keygrabber = true }) + end), + ... + ) + +magnify\_client +--------------- + +Set a client to floating and resize it in the same way the "magnifier" +layout does it. Place it on the "current" screen (derived from the mouse +position). This allows you to magnify any client you wish, regardless of +the currently used layout. Use it with a client keybinding like this: + + clientkeys = awful.util.table.join( + ... + awful.key({ modkey, "Control" }, "m", vain.util.magnify_client), + ... + ) + +If you want to "de-magnify" it, just reset the clients floating state to +`false` (hit `Mod4`+`CTRL`+`Space`, for example). + +niceborder\_{focus, unfocus} +---------------------------- + +By default, your `rc.lua` contains something like this: + + client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end) + client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end) + +You can change it to this: + + client.connect_signal("focus", vain.util.niceborder_focus(c)) + client.connect_signal("unfocus", vain.util.niceborder_unfocus(c)) + +Now, when a client is focused or unfocused, Awesome will look up its +nice value in `/proc//stat`. If it's less than 0, the client is +classified as "high priority"; if it's greater than 0, the client is +classified as "low priority". If it's equal to 0, nothing special +happens. + +This requires to define additional colors in your `theme.lua`. For example: + + theme.border_focus_highprio = "#FF0000" + theme.border_normal_highprio = "#A03333" + + theme.border_focus_lowprio = "#3333FF" + theme.border_normal_lowprio = "#333366" + +tag\_view\_nonempty +------------------------------ + +This function lets you jump to the next/previous non-empty tag. +It takes two arguments: + +* `direction`: `1` for next non-empty tag, `-1` for previous. +* `sc`: Screen in which the taglist is. Default is `mouse.screen` or `1`. This + argument is optional. + +Usage example: + + globalkeys = awful.util.table.join( + ... + -- Non-empty tag browsing + awful.key({ altkey }, "Left", function () vain.util.tag_view_nonempty(-1) + end), + awful.key({ altkey }, "Right", function () vain.util.tag_view_nonempty(1) end), + ... + +prompt\_rename\_tag +------------------- + +This function enables you to dynamically rename the current tag you have +focused. +Usage example: + + globalkeys = awful.util.table.join( + .. + -- Dynamic tag renaming + awful.key({ modkey, "Shift" }, "r", function () vain.util.prompt_rename_tag(mypromptbox) end), + ... + +Credits goes to [minism](https://bbs.archlinux.org/viewtopic.php?pid=1315135#p1315135). diff --git a/helpers.lua b/helpers.lua new file mode 100644 index 0000000..7677768 --- /dev/null +++ b/helpers.lua @@ -0,0 +1,90 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + * (c) 2010, Adrian C. + +--]] + +local awful = require("awful") +local debug = require("debug") +local pairs = pairs +local rawget = rawget + +-- Lain helper functions for internal use +-- lain.helpers +local helpers = {} + +helpers.lain_dir = debug.getinfo(1, 'S').source:match[[^@(.*/).*$]] +helpers.icons_dir = helpers.lain_dir .. 'icons/' +helpers.scripts_dir = helpers.lain_dir .. 'scripts/' + +-- {{{ Modules loader + +function helpers.wrequire(table, key) + local module = rawget(table, key) + return module or require(table._NAME .. '.' .. key) +end + +-- }}} + +-- {{{ +-- If lain.terminal is a string, e.g. "xterm", then "xterm -e " .. cmd is +-- run. But if lain.terminal is a function, then terminal(cmd) is run. + +function helpers.run_in_terminal(cmd) + if type(terminal) == "function" + then + terminal(cmd) + elseif type(terminal) == "string" + then + awful.util.spawn(terminal .. ' -e ' .. cmd) + end +end + +-- }}} + +-- {{{ Format units to one decimal point + +function helpers.uformat(array, key, value, unit) + for u, v in pairs(unit) do + array["{"..key.."_"..u.."}"] = string.format("%.1f", value/v) + end + return array +end + +-- }}} + +-- {{{ Read the first line of a file or return nil. + +function helpers.first_line(f) + local fp = io.open(f) + if not fp + then + return nil + end + + local content = fp:read("*l") + fp:close() + return content +end + +-- }}} + +-- {{{ A map utility + +helpers.map_table = {} + +function helpers.set_map(element, value) + helpers.map_table[element] = value +end + +function helpers.get_map(element) + return helpers.map_table[element] +end + +-- }}} + +return helpers diff --git a/icons/cal/white/1.png b/icons/cal/white/1.png new file mode 100644 index 0000000000000000000000000000000000000000..90b696ca0820164118bea3af0df0f41b0b2ba4bb GIT binary patch literal 888 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 literal 0 HcmV?d00001 diff --git a/icons/cal/white/11.png b/icons/cal/white/11.png new file mode 100644 index 0000000000000000000000000000000000000000..cf43296120793006ccdeb2b08da06fba5bc629a2 GIT binary patch literal 2109 zcmZuz3pCUH8~<&LxlK$iE7yOGXrWwl8!=NGQmfn=ja)*CMdf8mWb{UQLyA{4ml(;V z*qE0HMH%(lTvoZZWTj@_n0NI*=l}ly=lnnCJkRGj&-0w~J>T!UyO>%( zRI1>YU*JrywnUuk(aj9A7c#C-D_o2k;_n%{6F0f%eVp16tlyhDAR~)0gAHKQ^%5JB zqrc1nM%@-J2OCihz|a}?hgp%1<4C4B(5m)RL}uzEPt=*@B&pBC<@qazW%jKd4O7Fm&+TxYiEFlBL{x&oeTR!e8+G=#Q*W?ezy59{UshHo{v=H!Gyg1XR>p#ehrM3{!93&r7l6W>G#5i8mdrFu zkgmonLHCfrBNnvgW~*Oyonpo^&s86quLRE2&g16J2aWu!&CZ^*iWv_t^04$%0+ukZ z7#KW>)0SXb;d!?Kr*v0yM@}d(zg$zx46fd7e-^jYs~Bw251*B z1;VUtV$Z%PLJBjR)IgSjb)l@I64`u6?TJfjzS`?sb23zwOC4!4xGW8jKDf%pI>niPq^rB zfD7VJbYxt-h_drN5NnBS%VsIL#Atu~qmnm_)Tc*OHPTa*6CpTT?W|zUn!q-7HHdr_ zp%f#UT2`Yi_~DL(Tj9f+*qvyl!NdpA#2(A&YS)y~R7;CDP zwY5J?9z@Vq`!W&zmU^!~xJzcJR|}RA&F;kTrCT{m^Yiod_(u$k1%k}b68r|BP^hS} zhWj5JA}X#vJ>esD_*<_GxW@MpE#_TdOU%Ss_AwRKuh?xq)(<(OhYeW!zf5|suWfcA z5Ei5k!`T*c8C_&}T?hzPA318Qf|jlvmnHLQ z&9p3fK?Rc4S=TuI3E=6owvvT%kgR;L5%omTk@LBQg<9MxeXs~k85{Gh0#)~o4mnkH zbW91Ke?i2>#TlTR%<*|)L&fJE2a_C6+rji!q-v&RWx<3k81jvUg@|3p8R1WAZ$HZV z>uhtZp*Yk(`fKQ5lri`wnn2iHm^~+(Mx)VO0Yg!jVMz`SSy)gYh!-y%*)ubMWLe;m zhK3GXrnLotnpI zM}BiA)**z#MSmUpL|#9k<*cTb*2Bd$+cU!N$0=K?)YjM6v$L~D>~9%*6~``3Ivl+q zrYqDZGAZ|!O{d56^73$AUT+$a2wmN|*R}pr_GnO;a_&<8wJnIP<#xG}&9=6-2CRCC zePSjVeODATc6x2C(8#+%mP-BOLttl6PI0l$QE}c%6J_7NJ5DK+R{x4cs05{+I$Ae8 zI)S&@N(*zAv9?M0bZ3T7B9Z7dA;#dH2ITd<6PeQK!SyK{$*=2(OBWQW_sp!UW;tS4 zAZwPluI#8+^rC^(3p=;SndwhfIPkocNeN-f2}(kfXz#Z0#iE4@AfB8MC;aFO)3%>a z#63Kg-P!5xio;`~KjY{j`(~OrCcSr_+QQ!GB#F(4O?-fEC8GpNjE*Rq4@>FIZDoQ<7q*{#PT zEoOfR(1=lV(!2Kf0 B!w3KX literal 0 HcmV?d00001 diff --git a/icons/cal/white/12.png b/icons/cal/white/12.png new file mode 100644 index 0000000000000000000000000000000000000000..42cf092c707630612ecda89455794e1cecd2579f GIT binary patch literal 2349 zcmZ9Oc{J4h7stOdgPAa)!6>Fs%CU}=HL{GQu~bxQq_Om5Uxq|k8cVh;Wf{wiog!06 zh9~4(luEV~m1PFm!kALortwVA?~mW}JfCy!=Y7xpoO{nb_ngn?^+`TqZ-o@zB@6%n z@|ZQwfv@D>h7jWK9ma0md=YZDvBL3{zt+uLuJdJEkoCC`01!d_HV9Bali>&9myg+5 zz{e1h!e}8sM2b29ARZsXnVt&&v{V@3CufD}IvT#vcCx$YfVThQ;|YY$zYYY zqnV46sieYb@mus;l>Ve# zqE{$sH`1n}wINP5cy~kT=^NOeEm1t)EdXI;vlmf{wLaeUznG!Xa z(g;_$y-v+k3-HGQih!wrd=elaLGF)zWXNdK`fNm3nH|<+sOuN@b5E!H`@Zt@^r=Xhv#`qoh&GwCY|Jmv2y}Brb1<&g zOzqyD(5lEh^$jz^hFOy1AgLLiw3>xX@yZ7#)yvo1Hy|7~`NgV-6i11L;GA@ zblCO=KI)D3%O0(nSJYNdBGX!;^IIKZVI|RXO_ux%tc~&A<+V0k{tgAk6*;1HT|g}7 zwq>$BW0&h|QeH3(2|9wBZH&f&NSN36Sju)+#GHRTLJ>_K{_zEF8DmtGSSXk#V@35$!O@BJLwziJo}Br@$w%X9Lrp-S&~CBYWj5qh zoh&gRNFHqTjLCJUJQa(IX2R$~0r16xlcWqM-j!WzWGBaL(ZL4BM}eTK1m9lB>Q$w= z<60uFGU24BTbeBUNk1s>Le>QF>V@(j7_cy5{!fOt0BarM2r^Y4WtsY0l2_kKBo&i&Ua=(j^l#ORTG!hH0Uoi;z-8ILxhg+SolkM188Is+{h;O%rW zd;NeraP24|&}1QE;2Q6AWgDSdlZdjNO#dcWiEMt9UjUG;js&(KxB_SM8|cS@u1WfW zuHWcOin{Y;>Nm1mb0z7A;odIiG;Qd4!8iQ-Fc}+Cf3EzL%D~td65n>dY>T*8jY}L} zawc>kJ3Tv-PpP zy}f$nE*|2STD@ODGI1(7Wi>UbPY^kHi0;mKu0Jb)jwsPNm~TrPaEUWal!saiFD)&R zD7-+~c&;W}@f@)ej>Y-fSy@?~9~cvE9h4tMk*8*X6fyBki<{EVPj0BQoD)iylizFZ zfZ(2u<)uw;y|4Y1QTDy50(d)r`Ca9f0joTrwEf(|jT)y~X~;f%0PiBSh!y<>XVnvI zuIo^xAbAF{5<9PJu^sAigi39|yKw?~p#^%^dU6Eum|InTdJT=M?b2$`&IY;*XeGB@d$a^*Cr@Y*Dl4A zo1EucGbC+Nf0my6Rd+(;(&1^HdvprFq0<2V{_0~te}%||r#@&YVL=I#D5|f8aj{rL z*6LLHFjYfk&4?|1=yZNj(a)&u5+-{EO5XK=eUQO{3KGk_S+%?-c;?N{YRH#Y;}dQP z2?>!lXQZaYSOJr+2E~ywt2wm=%*DLILMg~Q+53kN*wYX`+!1ndg4as%YAP|Lb7f`a zO;69daU25t9^+VD(oxkEVNdn$*py?pL}!^o?dseg zMj7gT!0`H+O)30C%wYFHb$!{qzFFU$;*U{lgrq8-==luh22bVvT4yJJ5W>;*5xQ}4 zaj9u(>x?z94MdyaLJ(nDiMh6^L}ke@IwJ?598y_2Ms?HP$B^CYHex;+eUyEr>8@R> z7*@$Ktg zdno}WrcTQmqo%hAaI>QQYZUrOj5C%vBXxKSjAC*o(I(=p_dSZAjfJ$6TiWYh6y9}e zRt=uLH`bA{VtCuf=+U8ES;CsuJbnV$*x2~cdR2S=a=~Q-J5SF8`L+qR`#ZSYBMl7= zlEQ*BGc(H4H~Eeb9DWjCnq9_!6o!T@b*O(ZpF}0U44nROrP2G|Z`N97-Rd{3whr=h zJ~>@3H7SsSQvMs~f1}i_W+2$+S;7691Bd?&@KW9wIGyevm`V3}8$d!1K8-yD`7hl2 b<+x&FhIMceqNd*OU(YcMd)xyv*Vw-R5;Zc~ literal 0 HcmV?d00001 diff --git a/icons/cal/white/13.png b/icons/cal/white/13.png new file mode 100644 index 0000000000000000000000000000000000000000..37db670cb71fecb2f2932981b09dae765adee205 GIT binary patch literal 2442 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 TyViOQP*LgW>gTe~DWM4fJyKGN literal 0 HcmV?d00001 diff --git a/icons/cal/white/15.png b/icons/cal/white/15.png new file mode 100644 index 0000000000000000000000000000000000000000..64418a6f659edbd1e1976f646525cb8b96491828 GIT binary patch literal 1711 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 literal 0 HcmV?d00001 diff --git a/icons/cal/white/17.png b/icons/cal/white/17.png new file mode 100644 index 0000000000000000000000000000000000000000..033b5ff1b827df2f072642522c44e4612ae74553 GIT binary patch literal 1435 zcmZ`(dr*=I5dS_vKsYQgE7J~BNT(=Gd?e)yAu;oHSL34;d(oNC4n0i^Q0p|y%rX>F zvxnK4ikF)CNV#dcN`u%^on0;OeZ4MkM4 zUjP#|ie81WF^|}kY!3iNc76=+y=gDh<@@iL?X%43s+&H-G4j?Ay7y4fB)g|MS(o2e z(i7cN29@`|ZD&`|eD}z$uq*m;ZC+t3$aF?9L1K z>hPED8FJZ&?75`jx$z8n#CRfSUKT~g(MV}sV2S55YplE#mrGhq&1-uw#sZA3NPhvE?*#50H0urr921TPk_0sKm`H?Px0Xzn;Igoe(S zu2DqNRO1t;;U$XIUk))Y&H+~r^==7v{iz^9E4dH6Fhc*g{{JMGrYJuCC`QDU&=*XMZ!`BbZpaIwECPxpVU`f?3+oV{rc2pKtDhAwEd@ zkdPzJC*LsI*N5cQw{M(3ATnK5gX>1W0|{Vmpn- z>PrDJm$CzM0kBO8&my*^&sxxl4IVd=TSWn@w%IYGOrYBQqb9IEcw=VY=A@OW)TF51 z(sHQ<)49O`l(in5X!k?%);qi`+b?{b7j^H5ich(bd{&enIDP3HY(#TJ2^mNyI0 zqa|)F;+Y>~8M>Uz>o+VSK0UVLCitF3Rjj1*kLZRlEwtjc+a8niCPY!rVK9xyk`Kp)0(SSQrLr>To6?#nmk5~ULyadPM0Z)F z76Mb#7jrcQ@SuO%CJB{u8ltHP8j{CVBkt_d_4S5RK}yi|kAzBB6+4l$!@wSnC^HLj zE$POv1ieaq5<`{2xgP*4y7stGMP$X0NnQtZ)y&&^AL>hMu%-~A+RRk!iD#0$PN>G? zI7C0e-(1_IT_f5hLglcAAH%UA8xF>9f4E6i3@j-5l!fXv@D#km2AmN?-qhILg7n*Z z+X(K4OTZMzI4OcLilOcxf!*bhN}7$Y>Vipbb@B+687g)R2SxUBe@^^CewqO*5?4uo z!KVai50w@pST;+1W!p0&LglMhxH3YBwpOIR3QPs+Pe|eTs>QdHPWHx%MU8~o=t(j# z=v^Dy;@)irA-TKY{GE(`8LxP``NC68L7~*pnv|?e#HUC^BU_DwA zTrU)zwg+cK&_?5cxy!)ESJ*Pk5N!fJNLzasShPM4<$bOlwk^gLjeag7u5Tx7-?kW= zQ}?Ewyfj&hGKLF?t5v- zBBe1v>WqJ4f{Q+0n5wORz8c^ryvfyzM>2;pNiT+Wr^cYzs7yNStHNPcU4A!{nytkS n?i;*???|k%Xu^IeG$B|B3_=D%{Uec8%Npy)3}n>PqqF`6n@M)6 literal 0 HcmV?d00001 diff --git a/icons/cal/white/18.png b/icons/cal/white/18.png new file mode 100644 index 0000000000000000000000000000000000000000..817c4267d2d8d6fe36ae370c388aeae0f79c86d2 GIT binary patch literal 2207 zcmaKudoa+i0&kz$) z8q?nBT{bQePs)BV;q=xcAR{Sz)$ZzbcikvUhQ{s$!lCesbn@eCf8r&bo`-MNzT=A+ z@E&a5AIA)~=0?6W4gCDkw0oGdHTRVJp}J{&eW_{uL_$qd$7w0#>`C$`qjJvi9B%rt zfep;8_w-~dU;xfRP5uQ;zZTN(WNP1RF!tQ=Q+!VYTrYxj+s~-Q?S7Yhy?&oIs;$#x?@z9yq$Emvw@dsxFs!HBTSm z)z?R=%7X+OH%wwQ!89Yb6+v=Zva=hizaC27$sb55QASi7H$)z=0+4>SX-rXpb1?q+ z9kcy9uU9C}p{A-1Min6m5OfbcxegZS$z(56cy}3NM#==YZ_dVdi+hTMH!82Bg;4{6 zqB{GtPcu*>%?UzLk~p$EbvE{KsCR6t#metY<+uvbfp+a?yH^e%8$7qOdVTn+{<7?O z<=)Jk-)%;JU^Czv?2D(~gU_{D)y>kD-Z8u48dIRe9I1IAyrwjbvCsb1rp36<=8;h@ zE01L;GuFh!BtR5(y*5=4iRP+{8H^m|WAX1EPcWV2e-@2rLWBRDo9@y$=t7^GchJ~*CqJRR04lo>&b2HI~YOT1*1SYkEx|BkN(_dv2!XldL6@7aR{c5 z_v$di45}Ubw(W96q1(cmOG|(u*)^qH$5nuh8KxFYP9NwfP=WM4mmgM{@&d({#|2uI zxn`W;#Ei5VRHCkG<~;+;D%#ydp)gOY5%GyrRNPfJfm*=fu9~MaGde*Jkgno0c=7$B zaU-12%q&}9lAtdAEa^IbYQ|s>?7#^CuL$a+-f#oK1x|2Np1u(-Z&EG*hNGDOjAcot zb6~!^ppGCNpQJvG(z|4*W)9P1Jpa7c@_rM`melsU;c#DjW>;5zDAtE`F$^I0#P*)zCS3y)neslbcjq2RV$o38aZn*0YL64=QP z1g5|>b&Y^Md>T%14l3&-I5tooceTp$Y#F3#sG1GeD&w;mF5J*l>U;=K(%I>y6Hh{} zcqJ`KiI4l@tjIVI73lE2@M8m-_2)AZk6gC(K1B`e0BYXqjON~}gOu5?U%{qx+1>bd z)k9C@fQ+N@ZLi^{xm*i@hGCiyn2!CZ=&y9gcT|B_XsI^i*g3&D8Vxzon?j(BKheP# z)x6CpEIo<;np_|~W+E-fMvf>P%9ScJynmuA`J0WwLK`qtx5dU%mqHltZ{zje?fjB= z_?&3O_Ky7FH;=*x(tXqqLN@lPE-schn?^zu0v!BXLr{G`2>z{OMDUCVvjGd~6h6I2 z26;Y8{L5MYRyiU#U$1FA{SMWaK=p53*lro^?_=Uqm&?RIN&p?d`U7y<*4~ z?)qM1LYD--k6 z8|CmtRXixxeE6sPoo`E!`JHX{jbq;ti}3l8zh+-5Od=9JM%8R=-#_X78oSXTA20Ld zZsq156g}ycG}ShtsebyI+#6DxhF}omWlqFL1J(}FRfl#Zg7quql$B8=QT1H_Bj!dl z*Aq<+^H-~M+u?Q1rKeR~a12>XL#}-n(R5gMo6IA=jR3;{&At+}^1Uwocl0dYPO>R; znnS(b-JgfwGM$QViLkKmTAn*Vj=t{0dQb*;%?YWOLNg2>D7faJ2qL66RY3{alpjbu z{o4pHE;$b)*_oSIKi^77U4@kllt+Btstb@@qh?R3f2=!m=y*KV)qC~x@y&ylTbZ5N z;y0qe4P-g3M2ciA`Ga18*U1Qz8NVr&YF5-uT|Q|^pM(BSnEfZ)8V@#giszqF<$SL` qj2>@?%)VkJ+obpd&A@=wH literal 0 HcmV?d00001 diff --git a/icons/cal/white/19.png b/icons/cal/white/19.png new file mode 100644 index 0000000000000000000000000000000000000000..0e6dafcc9ff661f86836c6746265b9d2bb34f20e GIT binary patch literal 2062 zcmZ8ic{tPy7yivKVt&**?M*buBZ6nL*mnO$)}BTavb+ zBs;&jrH5fGr7Xj*WXUpwn3&<4o^N@+`<>@`&wI{!&U4=L-+RTCLX_R2vIPJDSx1un zQ86=r0)-UkR;$1cF(HG0N&r*a#E938G(=CNLIIVd9e_~lIRCx%K&J-OIuGU@6Y z!y9GqgCZ6rE??2k#gp!3E(RU#expstWFFt;fzjVddRq0gq#b9!JwW!0g_2WNcE^3H z=*;29sm3|}0E_o^b~7h(urwjQi?fu!M3@XYzI?f@MhS1(?sd!u<%_9mXwsQdkTX{} z1V^E_Yca0_K`7;Kc&`L>i>X8a#+UUj7(s>h99#$|dU{=H)RpWXj2!W4I@Cr%Dw zTgLlD5Bd=vWWx_1f+Jzu^k5exrrWXuD>*W+>1C1w#@h$)bZuKtkMkBT*SV=0;szSjV(QqHNk)hjU zjF&K{vqp(x~Pto?9Wma$9ZrCNmCfOE0Fj=m*fhDI=oJuKIzi z$@!hL4pp$y<|XbbeqJ&@7L&+ifu9NKRI0y(g-qnsPJw%m-i0O@t(!;mgbNvvA;5-N zxu({M3c*#TgOX5a8}PV(6m~)^D-(x?jOg9L4LE_bbIK+f8o8Qc%}Qs^@teZ-AQtdB z2^mAlr@{3Ic>#vHiLIzDYh8c!6-?sO`Q0eU=-T;=gUSBzdA8e9u<=4IOwAlvty#Zu zSQ;{7FW^@J-*lu~;o6cH?y1nm2q&=V84D`{G{%A;9C)s3CawhgV@>5B?=&;&UeK=!KqUvbW}$PIS-{52TYgSN_*u*&nfz0bTdc%qZ@CYkIgVat2o z!o!(3Ge@Zlg}CHQ&}s#HSS1i>{3?_ z$JVdwI&XuH75hoj-7$hHtgSWiuaSZQbzWbqQFTZO%SN*(cO`EBN86gdU<;}JVLN0Z zE^=lFy+?pXj@h8B8bFyN@CeWcXFXVjyoO4^!j8_-ne3!cv+SgQ*t!tBc(F*Q?2JdOHyI!q--w~9E)c2K<*g7S&*agMY0j9X-*--N zpr3j}nn|$EsUrcHidLTa^`dXq0ij&VmbGw@NUF@pS;^&!JpC{KsR(k0dC`(hw|;EX zf%_X+)vVtufwB8^sUyMTaG50}M%5`YpwR7>Oo+?*+kjFwT#8x#&LUr-I0zjDr+bg- z*GZNYxxg8Z!bes}%xQA6U5Vq}gx|8O(0WBOJ7F7pUs*wk&;!%AMbq$> zP0VT_zV7SMjur;`T6g)v8&0IWWF<9D_4DlW*hL-q1;5_y-DApM8M|Rfoff+By2Tmo za8^Gz*-l+cUFWo3ocb@LoPHo080ibaZtdYYJ&Jtc_T||SQZ+gA_4$+-$I7ez+5;elT9uSE#9R8($5yer(~PAZrQny0@fR+VB1|wc${WyTb0^`+!w!3ngvW2YmA#61Ed2V zw9(Mv)Tb}gx>xYNC0BAQ^)IyU*5HRirX}ONN|Jk>9QM1w2GRum(~GTF=G_ibH@UwB zYHx}{Cf#C;B6!FO`K=;u^H50|_7d6hnvW#=?U50^#n@qle(979-2;eXd+ z{>^Ou>pCVy6lCf|LdN6Rhk1@2!I3kBvMvAXN+iHYQ7C-{t2M8Aa);JWTX%Gz*t2Z| GQvL}B_QKWx literal 0 HcmV?d00001 diff --git a/icons/cal/white/2.png b/icons/cal/white/2.png new file mode 100644 index 0000000000000000000000000000000000000000..b93789a59ad776ad87b50024d765abfe4b9258ee GIT binary patch literal 1553 zcmZ{kdo+{@6u`gv=H)Y^$#@TT$RjN>@+=CWnIT3@gfL|dDN&OsG~Yy$sLpI2BP5G* z5+keh;=WB2UtJ?GxvJ@=e@|G0nrP6hbW)l?~}005{l z8D4?QgukZ>Zn<`B+SR)Z+-_gG*D{x5&hrj`8Bh`dT3;y*UNmx)1oWiQ=%DHT{G6+Jw+b3t?f!Dy{2;S~iBP z_ZhFT?KVRnqvfHadS`br6j5jtWPy1ip6BS~eLKh2%ogkG7F=WL+>8r%NLipYn2rw5 zN?wHyNEVjbj}7y8ZV-Y((23nRg?x#(b?4*&S4Y zj7;HkKxG!YZ{M-@4PlG#W)9m0`8w@c2$t;Ikx*ys&H#*2S(ugN|7pAe+4L{v$^Ext znj?p9!Ciq>8GUsiu@?W&jcpG$AUV#m4_Ec{>A$=R*$8L<>+Jcgc+vi6l64#k%`j=M zfsdJo-Byx)t}PhkrDvsIp|oqtz%w#M<43R)1zp z1AeBIg>f9juOx3U<>2gP3(rD^G`4uy4oN|#k(gv$n|1>7&D|#Hrl_nqtgFdt3c1MT z>cc;9%xKjf{CJAoN=zs&5Mn~_x3^i7x+`t(p5+Nhf+MwzfP9)f78r-$HIsIc#abU} zO*7syEZ1?ApV1Uam<8_dwFI*2AWb(5PxQA?Fj)ZzGzgyrcr+`~}^2~3YIe?5K zOj{D(R#hIR5#g&ZuQC@z_u`~Q=C{kMk>SQ!@G&GU)yG68TtD?S;uET?uo;Qt_ISEG z$$`bJ2`lL#W&B$+#1HXBSlEVGD9I=9p8I*<_WoOuc4?%Rny&B_qeTZpPz&*r!8Yt+ z@Peey?qawV@orTQvK=v>0iqw2P}<&trKCd}WV87nEK7Lx)E48(HQ8W8?BTq8-RX{s zYe@NB7yOcDqM3Yu_a9T~qwgD)g24>bb2~Z@ZZyPY!{J}fCQJfriE4{&sVj7e7AdH6 zosOiO`2%9!e!R(L7F63bAh`|4Bx`R(IXCyTRt5_vP!!2(!TTDg;S8cLOlu`sIWc*# zy-I}63mep6g_(F{fNZ4JuWB)^^N9MY)dNb}_Y(c^Yn-7GYN`qCgwuSz7BwjKQKC(t zfI-%h2Fja+rrM8M?=imOUkDcA&Zp^%%}arJ<11%ae1bfc^W|ydo0}NL$;)5%&dp3| zi8nrrjwU1gc^P;becFvOeJ@tE)vuFk4~<51q9rG{Gzsy1P^?$17m%*fVmIs9?PH)M z?jY?{-_c1xWQ|lk8y-oVE!J|AyW~$YFR5P_9-F6DEgHJfUz~pHe~fk_OFb0IY{R5F zixuszinO2}ZDE0xf&l9f*o_7s{nu>Y8eAzIKs$~(C1&^QMfzK_0)mB7oBIvVS;V?A z6QwBg_imq+N^c|_Q6N7ag)ay^ACk4B+ESP7sB(`%Y6j4{E#1% z)Ifi2kr_qVpFS82)s6WoL)%)1>`rhY+>&u_b;2C6_`<=PeEZt!+z9MQcttKta8(f1 zD|EhH!jM`jG#f2d*-!EZ)JLLf>PDYpjz@LMh+#V`N(_-?WHQEAkD695J*D{7%KLbm zUU5j5lx_`+{7^TxS?&E8rtBzl>(y1porKfzlaA6c@F@|LNrU?2ZZWejGFdhneWvTW zetLWjS;$Iwx1j_Y>R%U}Wh1|H!X9I9q>#PWxFPaO7yayjk26RFVpsWCBHpT^R_tFk z+6?9hA==7zheh?E%&r^c7O5E2e@bc9Gz1Vq39g7jvPj`S{sVnjeGD#cKe0Md&_56(jb4k-!} zT^GrRNb?Ck81C*9u8oDV611OR}~(gN#v z$iyGu;XceAhJNo4iQC`W9DB%zv3;&3@sJSV79Q6DfLG`TK;S{4_+b%#!_w9aKF%YI zRFLsIr*j+tkQXemCeAUVUmqrBdAo=(j5PEftE`KuXgGviRSMlIAq#6E#jo56rZi-{ zv1ciqcjtTa2v<6saZIt~nC)Zd(v*~-s`DNyEnEX>{+>_Vtxol8HOM`unr-=CFy@=m~;G7`|8G*Rt`K-+Kw)<5pgNAD5oLl$PeC90l;k-Bs=uLmpME zs-CQNjR^Q1Vh<`R0cNn`O5h&1+`Mom@9|$86xZT2os@%ZEB;8(uzS7`d^AMturDk^ zEQQ!R0~ttThkr%?U%Y9iYW!e#Eu~$|D!ytSa`%MQzV2IpZgEG{fAq3*VB9+~ByYV0 z<@n-`3#$0yf2N<|e|f&eZ%E}R>Nw@y;eM;yImf&6`{rGMOG=u&HZVKr?U1LEF(L~p z17%4r2_-})<<$qd?DKC&)4vJGgBr_i+BwsE6@SG$TcckpN$d(U1#$f0C&T5#pY%1& zq=~d^F(Yl1Y$&+9D?GASF||tr{*H0Zn}Hrk~T{x z1Mjy9Z3QEu#obK$TknI?VS1tF($4qPjTe#l-<64jQg)>hZpH?m}sr%*p%) zB#(Nx1VjsBjWI923=M0@brXZQ`QsTrnK1@Kpb%_ZogO)r#sOG5V|?+087x6UB293@ zTm#>(*mjY)0cjyB#NXwEM2~eh@iaj-8fi!Bw(2B@#*>#CphM8hz|t}APjbvilUKRm zipb1To$4-_dz;n#P|`!GHQ$Tn-f`y^Ne-@g%6hL28Uqj4z}!mdym=uGtHDVaH$G|A%%10WcCO;*qTpIlBP=4oLXaF5PsLz8g7mA5}!)XN9NM;Sb>u2{CR=mBgL?dc1 z+jXtO{LG@=!(92r>WDYo6{+h;dKB~=T_N;RoPf62(0*IRoetY>dtTI^g2bGvaWm&n&{t)qf#_K2~eaWhe5{k}1i zx;MOURD-p?<$yZ!3)*05}8MSy<3j@vi^Q4$HWPS6mai%)z^jMJ_97hl+9IJ!` z3CxTf!Hh3D-P`Scqs&4^1x4 zpT`;vzsPXuzh34IFr>FX0V_hkL`qAU*Fa@r3p1yA3IjJIfZUB#4CCFOpJCNlt!X&E zf^FO0`caV1Wm5F2(&&Nhl_g)KMUvz4+fW5*mUCxk_Qni&Ysm`OWY6j{wfqF2pSB2X zuL_M44U>|RX1f<0Q1%AXry&V~B?XezyVBX?1aV_P5QWjX-5lzT!etxv8NSd&WO^W~ zH#HLEDJ3+T5dxJbduv_j-S*pf&C@{09x7mNiNTv0Dp?1&3$7y7HZRw-}t6!H*wj-SCb3$+ItbKFW@dto1z*CTbq=6?9Mr4LK)5_MR1Y!n^Qw z%aguQfBSra&AANkqei*yy?#s^;U85OxMu{vZly?NbI#uQ_SM!DP!ZrJ3!jaLY7 z+iiqVi281sg<_3uM!DAdeAxUtwtv?keHnNn$NgHTODp=|nLHOR0FK9`%Fv`rDzh8N zD2r^PNSP+W_iHq{_=125zwNwYuiY$W^o|;1UjBKk*Sj+L_A{6wSuH4=CxfKk|XugvhT z98pM*&#nG|B~8&t#1R_q^y(gu+0obNLB;W*l-$j2brv5vY|4{A&a>a%Q;lNTIMvn> z1j@6@0{H_^NLh~$Mk8kgF$Xp_#mRGNZ?o%?o-~b^vhr%Zh^cug$()9bgy>Q8A<(8j z{k_`MwA^)>@h<*OxgVcXSHrHL__Tj}>`V5j&BG!eX6wrri&?XWq2jY2)gy92Da)7a z6F2-OzBpWM@GtKTIB^XuG>?Cg#bmsvFctBsYxadTM(kLk?iU$(rF^HylQgL{`Frl! zwGbYLs$Qj@^VDP;ESDM+(dK9e`#Fa;22MRk?oS|R;QlTEVu0kaJ4s=Np}|+TV@0Ht zi0f=&JRi+~^y1N5o8s|v)V$p)L3)V<#wXEcc9~)0)EMb+A9}KO^x(iBM|iAs{96@M z@@rcC$;X|XvoDxE346k8j+rkD407BA_qw7^^kryeU$F4;*FJ@cY;L5BL;0sNnb zlAzosAiDz9gKuv9>!w7At|X-K0K?c9ulx4Pv6?5k@yh&Ebal{wt=GouM6hqA-J_!4 RROQfZ0+wcW*k`6V@;{z-^c4UA literal 0 HcmV?d00001 diff --git a/icons/cal/white/21.png b/icons/cal/white/21.png new file mode 100644 index 0000000000000000000000000000000000000000..79a74f3d2ba82322a3ae7fb7be95ac6805f77747 GIT binary patch literal 2092 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 b$FI6mP9E&~mrMu9*8yMe0I%Ae^z?rND^aSB literal 0 HcmV?d00001 diff --git a/icons/cal/white/22.png b/icons/cal/white/22.png new file mode 100644 index 0000000000000000000000000000000000000000..e8845ce2e8950e7a773d7fd9dad893f3f490882c GIT binary patch literal 2060 zcmZ9Nc~BDQ8^^f(_G zdhPKbsFb!GYEaev(&b2-N}xx*@g6EwomqEYx=P^WJqP0f0Clb900OR;=%`HCIWJ!v zY(PzWrJ3#KKu1%RQ|#rjJCGuoxJkXVdcVHNHJ*RF@EDW&8F$nOjmz7#5KtbFH=LO# zU>P1+#l%H+8sKtqM{q{f@Po#IYZ$p2S&O5LN9mB&42>?VkwId+V}$p^>1k2>qq;GE zU$Naxd&!fTxeUg@9A?g0G2<-W5#MaGDXsn~yr_S~q>g7+;H$Q|t)bj_GArin2DZmJ<_Fv-fzzYb&$X_gvLjhN( zihDx~TESNads2Z3Uc|<<`oDpxF~4TR-vO_8?XPYp*hpR`%>KDz-`ZcAjq11FEF2E0 znM%@ODP99U^!#W%{f*DzSn3*jmKDV7V9zuCJ8wBq+F_6;{A-9@iRLk9N&GAn(O*D8U^RhSL^vOg(AZ;Q$6{0`DT*4=q10Eb6J$2}d#^Me^GHJW=QUz$^I5iyj z2%PV)J5CWMx>H+)Cq6+hsqweB_dG-N>03e@A?(VksmbVuNP1pHNcsjY`oLOL_Jia0 zT;0cQ0?1@c0||8KP1wp2J~0ZzUGw-)4qQ(IHSlimsMdR10R&&TmI*!$uG|y_m-P+0 zEqgmi;?sJD~Zz;_pk>w*uc9e#gR()|cz;ed@~B_k+pWp3tR4bgnu@WV=*jE>J8 zW`=LvQVlwhPP@tLzD3Fplbpy7)@vzXObI~@l4qkjS!&z1WuWnCAel@av6=Q!U@ISC z{A?jawG?sFS^37#<1>&puCZ+XVpfEy7^XK5whZl}=?dcH3U)^AQW%nAc`wP-C-%wo@ux6FnP*L5 z!E_2zGdk-hjR&_(wS;m2E+^m1M2cQAxA0n<*2rv+B-YbkdY?TIX&rUa75fTuXd&kO zaqm?%y+1{ei)ulwd0`d$(2@eu^@i0&(K@4^Ntg?YV`T%EEe);RZ(c#Fws*;u8D}>? zh=H*a-b9Jx@cZhp_#tnl+QV>UMYf+y@YlaP_CgbZ3$>zHiwE74Zt5g>_mlHE{TKT0 zKCiqrIJP6ken%75-I_9q z-B8jM*0V;QO#jWY$&MBw@m^80V5L*8v{Ev_^+Q`HaB;vjpgx_H(q%JgsI^N(&RZ17pSRTc^Ay-TEvEuzOb`SKQ_tN%XhxK76cknU_Q3tsCm3gp$6c4 zg1BA;ec)-%Ug}$fYINzwSx#{pN^|_S^XIU+$;nCcuOu8*y3Wux^&r40qNsg}3(!EM zMl@&ZmSE1jNKn>9ou-04=&tK1&N#wvFHFx_5BsfegL3ci2auZZ#cyPZojL9~j~$?N z7T;-T=nHZTspS{k2ncn+Zu}9i_U;*8*Yx{pp^c?)$cb1em&3PME_0H*lP(+~@G_+E zQ~kFCEF=$->|*;k6_u5h1^wJR&Y67>h_GbH~J>=)I zvd6+NiqW@sqU%)e>h#iY=0bv>Fg@!WzBC0-KHurDH;*>)?37B|rv7RkGgl2c{Eyvs z)j!&3mBfwTEyyO{r&~l@UgbE(kvgtBjLV*MkEBcAvWQAM8|=t9R)d11nB&e42z&)! zOocfp$jpTFkC7!wH!DIZ{L0VB4GA~JBq~_iuTQQx1zhyenqRaL2s2^%*K*fSSfCnT zmvwza&|OzjO3z)iN<+wi^EVxT0EXhEYi811sFHZjY!Hv8+6K*%`g}GZ7=73<+DoZL z^5>Zd8@fOq^l-SkvQ_)_da$K2hEw4ujf6vlCq9WyW2y$e6@!j>3k@_< znEgRjTTG%;2*G-3hVRc1bBtrfwd$83OI_qnJ9OfXI^h_jhxIAR-LV<)1*9PQWZfIk z1^bwhlYDN!?96xHrLT)!X3jE7I?Wc%u#HsdJ|5c966&lb%b5+@DxG&Di^F))+l}i^ zz<6#ouNgX4!+NPNGj*67jBY4rn`)BtC?zn@Yv|^Y?=6W)5aT~2VH!|!d)91%dHw&n y_Ajp98g&b%RDe5#>t%O;(D@^i@hjCls7izCrN**Y`(B4-sC(i3JUDJ7`u_m7L#wC& literal 0 HcmV?d00001 diff --git a/icons/cal/white/23.png b/icons/cal/white/23.png new file mode 100644 index 0000000000000000000000000000000000000000..a8d4dfb6dc75657f4b5b9cd07704bafc0b779340 GIT binary patch literal 2495 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 literal 0 HcmV?d00001 diff --git a/icons/cal/white/24.png b/icons/cal/white/24.png new file mode 100644 index 0000000000000000000000000000000000000000..1a3b38ad29f89a08702f67ddb9cc2d37126673f4 GIT binary patch literal 2280 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 skY#85i2>&$&h_-vzcflVR{#J2 literal 0 HcmV?d00001 diff --git a/icons/cal/white/26.png b/icons/cal/white/26.png new file mode 100644 index 0000000000000000000000000000000000000000..f26731bbf41bb4fcebae8d075310abc25128c299 GIT binary patch literal 2645 zcmZuzdpOgJ8~<)Lvl&7*avye(+%M&RGPjdN$CpI4#3*;ATvoQjVeXf1GTPLsvD}^{ z$?e;9bV!}fP=;lygJ`78{pbAkyPV(qJfHXTJn!>)-{<}7eLuN=zMgWJ9T)%rh(wjg~ljpLO^y5*?#CnyXGJPVI%~B;c+eq$(=PfTRB747kg<-^w0R+$RN1glvEpuzb_m}W58+Vp>OeRhhw=lBb zJAQwc&Pvzn9_Xt||8%``a4dSgE4_YvrJh%-N37^Km2xiqRHj(gYx2bK_m%oq~pk4I&0Uwt>d4$HW*(;Y39`x)ytau0NH5B9H#nj{c-sJ z77MsHsu|HA_YtiuhH~zk=^UB(vysxA?3&;5k7h+(`4W6@c*EUOKE?NDh7JQW@U0d8 z&&b2<>PjsSaE2b|s;9Ft?m$06SYRDCXK?SM?DKkNz+C`1i=e8i!m-jTu*i?6E(d(m zX_6g=*8zcyp5Il%hi#!YsQr9!@#Y-t4BUQo{M*I~hZG(FqFq4;DG_~!Mt2>N=^c@B zS|3n>V!%<1Bf4)}sZ&JM;!(&3;?VNxXBEqe>ndcX3aR>l-K8I_H)SCA_Qagn;3F6QEY`b=nYp*LYqec#W?>f zh8>tXsloJ&FabR{n>3MhG|V}l`LI(hC8K8kKo~B;T<1te_ZYjpwHt4)`)4G= z6jz%2A#Uwn2tb-dF0kU2%RZTcM*yFK@_TZxT6%P+t#9lHwK-^2Qvx%3kGvmd5P3V= zWMcLUsz7e>vst~qh%*NNt*0CQCfRhNVydf!@mM~7Eof&wVP^|ca*q7a2|2d$HSx`m zf13eo9&GUi4>aR+_E^%VDrBh}$v05c!2F)D_`lMGdJpz6x}f&8FV3zga5OVy@}aVX zsjbwAD{b`wUdyO4wdd!vsG^M;`Dj`5XX+QQ3HXGg*Js*SSWA-QQ{m)BZUdrAkI>y} z%HAz4{oC6>QYG8%siQV>Y-ar9ugC({fSDR{%@<_(@tujZwe>SjagQPb0`ZcyJes2? zP`qqsZ<^et^7aPT?i!GE+DQC;J3>59b8Nrm*L5Fq1grdGgj@E{b?}G&Z^-P>MS$PyrZDY*r$n73$R4YgK z;Y&YiM5txSYJ9_X@PZ#0iPdagBPF`ydqZQKvQh~P90GG_cMMEAujhPQfr1Vpnx+7_ z6el)DNB5%2_Z@nwK+e?m#Jg2)Yz{yMgu9(J>baj4OJ74~@Go|*-~cxbRx^EsbZq`~ zC6OGSb&FpO-;EV)OEG^Iz;b?i)a}k;fSaZ#?uRCGI_8;#@AbNlIt1okrMwj3=J>#U%H&i2<}e+*Zz6>v+C%N_hBqt z=@a@C)9t7*D^HsMcqe5ybzLrW(Q0KAtaVycR71(P%?fesd@fPZ2^;J#IHh4Y3m8ikp(4lYf5v5WiIs~5 zpQ6%!S%|j~`HUm zU&$G%xrho~bUbWP>mheTZ7gy!Q0CtPE@Uw@{P}I9W2pk5&W}Ih9_~v|YtxXZ&AsB5 zL~fpZE9(lT!v~ZyZpEf2u`F>p`=JgE);iGo$ZEQl9GiHIY@ubxT;3_PQ9S9-Z{9QC zZ>TJzKs~QlC=%^ZvfW4>lSKa9RaweYiwWe{ZXfe3$(N<)tdD!HofSVvTu zPeGh=O})EZ@sWn$QJ{B6sJH5-YQml3LsvQhQ?|WCV@{U)f_{>);B)xe$ddH+hbldA zkxWSIRsDSL<$^F}*EmJTnVhE8!&8d36SyiZE7-m3GJ)@j=PUM6XWSw7L2B@AG`mUW zC_*~*fMaYC>|9}s5S+Pm~x*joTo=6Lo{ zcFq+*5zyBS@@!zWZ}Z!|M?X?~!--*&Byi;Y<4z~~+yl^oBO1hhMxI@5IAPbM8THdh zJL*-;{UUh2mwF#HS0a-m=}t}S_F!8CeYpBqQqM=K{(!B!EUvS~)Fl3=CHgNvaua7r tF=cZo&3biQ?!~a%nR5U1EH~{XW(uV%>sKyYFZ}Hez1@9D4SUJI{0p5+sm}la literal 0 HcmV?d00001 diff --git a/icons/cal/white/27.png b/icons/cal/white/27.png new file mode 100644 index 0000000000000000000000000000000000000000..e4dde7700dd2c86fed2c94ec070f3fb751ced45b GIT binary patch literal 2044 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 Ie1H)54|_xGTmS$7 literal 0 HcmV?d00001 diff --git a/icons/cal/white/29.png b/icons/cal/white/29.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a74f8be9e55a8e7db753e3689354dea3f9028f GIT binary patch literal 2597 zcmaJ@XHb)g7X1~aC)iDYEwqE(oC50`{ z3P>|2A5>qdJ5pgim=PwlYcHCE7e)!yspwCb@~+=xL||*kO}Xy7)+0!FAxO#MXWA)7 z!-z~#PZ&c3>zvIMQhcjLtd2uhtF8P3q?X)KZOvV9&etrr0{lkop{Yyi<&T8diH{V3 zCpzow#34tVb1#+?2vNjBu)))*4`lsJ0KH%#Kt%~7U`B=!=yVuu{!4>ctp2u3^{gY7 z0&c(3V_%g78#rUtVir|w?XgcluO~jaJm4OH5?^qC7Pkp=E?XqH2SZlx|1lNRFPT*g ziWmJh>B$IoDzOl$w043IX9B&wA3Msm)}x$O^43``>f2w-FlVuNnTSCWAlvonCyPX^ zIdndqvxr$ByVeEDxFOgkm3fz&D*G1HX{);BRn!&kICQdJoIsWV@YxCwB;n~XR@f@fiy{xZk<1rH2XncWmXb?e%rl2D>~*C6DMGOz(E@ul;0 z%Jjgwt7!NA(RVu7U621@ZxGuufR5tdMM~X^aAifwsd+8dtSKxc%qSUYtvL#eq?1D!0)E$z{faGV~PG|(AieicSFsn4IdoNq?c zr6)Pmr;;x()r-?Ku}kNU@Gyy!^3O4Tzdmyc6na=ni}t;hOpTqee13H`HBJ5P#Uogl z_TF;xIIl4}n|QW;E=U+hBp;l-TfWA@FVUZS%?BQoy1_c4yfarNXj7dF#M}Y2ABCKX zdtL;O0frLsn)t#aU-sM$sh zldE~>@9!#XsS*C7utwv9dQr2V`I@K&8hsFIkJ_CjH=vO{t`&X4EN=`mi%oJF6`~7A z)hE2kgZ=4u>H8WVXU2!-*3jhhYZW&jo7yk*WadROH-+rbwaCTS?HNTbhP>E}lRa}t zFCnFAPjO?|J>T6vsmuzMDXA`t*!Z#_#~ZG5+6`qvkK;lh8amBouZ02HzR2*$(fgaA zDx|geC?)xY1;OYMZlWa>)2Qt|)Y})}IyU7_;HF`cqixV=8<}5Q0y`4RL45z2Meh-6 z^2^)QQKa$sGv5g@?bog6c26>tXAD=>Zyr4Z@dRA;$Lh`Tkma9-LwIolE8WamdY61P zn7WjYqOO@Tb{z$ZN*1?BJ*Z;IwORv>y3@ZqDA*sN7^)v;FLyTKy^&9^+ZGtDyEx^V zWX)VlTpqszZbL5Gk6b^PBKd!QlpM;d%{cI)DSVjiBX=Z43X{p;;vub;@_iYap!A~v z^gtLC>`7rBl>$;xs|R5ug+Z#fqZaPhjbW|+1uW)^h)1%l^3!5pUOE0s(f{RrPb!$oF}D{JH9C*Y?DjYE~AYiU#-)ld9NeJRP8xN zPje`$FvRGUGNiSDpI6reTj;pYC;v4-?7GOqT0#}=LY1v(tvPSaR*KSqim|U{PwFdaRXEXt`+>2?F_ue=1pDELk_@+oJEWfyBbYLsmS;#; z1lzo0{!2oF5sj0g@P_fER4 zIIFGl;A^_~uBC+RYf1U4m7%$js<6iU7*2X~4{~7&JK7WG3#~tyVOYXi572TtS>0#{5fYF5&O;MFA z8(a+HNN`Ox71xvyPSJ1CT32NV`-%-zBkqj367P#6J{e}}CfX)^4IbL%n3<($<9!tE z6X(>8Q$xSoWWv%s`4Y}?T`AFS&zDSzb5TkdDe@QPY|QXx+TZJK)HTt0O|;qouD|?c zGmJx#V?xBgHbXEgJ6p(j{M|lh#;H~og#Knpb7)Ziz=IfGIC1Za)4k)3?`ZAQJI(Pt zZY>DUT)7=I6DHV_QGR^Z-PNOI2$d zUD@iSZ^_K&VjCvHn;9lDHQVdM2zRq%&RGNUngSkj^FL`x$0|+5-gKc;S8s0^Hm3_F zL`FsL1zWhROv@tDj`kzAgIEFT#wiN;L3&(w6VbU@=(oqt?_e3ZIQPm#xz2gW{|PPq zzyJ1@fOl6*i@E&EC8;;AArV?Ts{aZpi%Cb2Z;p#W-&C8_{z-dQ7&~-@DK_bEgwVu3 literal 0 HcmV?d00001 diff --git a/icons/cal/white/3.png b/icons/cal/white/3.png new file mode 100644 index 0000000000000000000000000000000000000000..11242710cb04449563e2e6c56440d9f19c8afbe1 GIT binary patch literal 1808 zcmZ{lc~p~U7RJAPNm!Dh^n(!Dkr0ZsfK(9#0a+4~7-cD2uz(qYGRzPNWea;!EL$OB zaG@YYM`{WP1Vs~}C20wWMGTuDdqyh=A_hT?D9~^^bNbiZbDsD2ocEslzW+V9B+#Fv zgEB?|0H8x56TVQBvm-4H_1W$D_kJ}rVyGm7n(BJz+nKM1Hj5mQ0sv_J9l?O=ONQ!8 z%~Z-UqUMYiM*DNk$%{q3>cLtH!8?RK`J(n;#ipUgg>@9S8rid~O+v`1xa6W?E1PsP zIVwNlsMDT*vxx*KpY01Fq0{VcyZ3jW*F8KL9s#9J&@p<}M$lCllA$$AEdM2=Y#iTP z7N0+=tzUf~->|aSGP3Czc;9g*GSr{&XbZh-qr~)U}Z>0td#cuOcar+ zIlD$6L>`|0HhPz1hf}bGzrh*c{qNr?wAKhArp@Hip83)-X7!trQ z!gm3|RMQxDR?cK1xWvbTxmPDlKa7(95pr|2d86znG69==jmJnpV_-LHEb zKLg|-+}%;-bA7f_9Aypv(9SE)Bp+0oE48Kqei&PF>qOIV@d4;T*DaLk&@b}CW~#dS zRdaZ1q5RXp!u?zUms(vM`y}|#I?RMS$H^j$+Do+vG8DxEp1;Hja=5VWL--*2Ju~5` z&P#{Oh`nL;rn>c?m)r$BK9yQ7?i&T$zjNUv9a$D(RV_Uy@AQG~`KCf6)wWhr1H7M` zDUFcE(tSD-E}=|Omw?C%v*V+o-1^)cgTe0-71f23W=(U=d6I0YFepQ(s>*NX38xkJ z*i2zWiG$0*pjUN^WvDc&hm{oP)i9I?nj`0fr)O&RG+?2EFNx*eiiLI^C&IZNz5@bl zINCgB@8z0k-zIM?R%tv^c+;=dZ)KZX z#XU9V<=5BM*n53nF8NHEr1+rMsS9i$3CE|QE5f@iG$K)v#N=SX-_H2S3Qgsbu^ydl z1Z&zkdeZFRZsy&fY4kq|w?>(CSmTJQlKXbbv2XL^DicUDe>{99%Yel;dB6m!9y-2G zfMuQTk!nM$K|TG8C6}=`xiPl}U7=N?#?#k?z;844*mfeS2YS#g5ez%h(Fd+O1alVf z_LZqOkk6w0HKHq>M!?vEs(7dqK;s95z{AJ(is#O`V|ax%C2pP;6y>UK2+dL4ig6}n zt8C!?ekZdWH>K#4=P`Q9pX%>HZL?sA@7Lb+0q5xB@avNsy8Jir7DUUn52a6Xxh8vF zVZ`XZqZbZ9s~K9=9ta7b$`ojXIEUk52hM?WuRIkDn z%Y=ItfzGSHhx34UN0cT)2jb})E}31ah`zcSTRp#wTR;Q}pk#c3kIzA}@i@<*ndLVdr-bX$kQsRnc&1$tC(_EoSwsG;UN+i+W8}^)2 zV9R$qc7<&5wg`JJ-d;EemgT7|F5;v-M=mb+%R^#j_E0Z_Gv-(jb2jcg4Fhf8Z^oq< zD1ItEA7}Q!U^;9*HvKrk&MM`G{%)KzNj8CzzseR3SV+JsBWRo?(@lj<_#;U&pVEj< zBPqivb}P}+gu4yo^NO!p#n?s>##{=9Urgm)J~3R5Im54^w6WF*bP>O33&Gx><{~G` zM5(rS=5&^)_}49)5m~NGvaxU5Zwo5S;v0W>pSIM(R?lrq>qAAJKj;a}l8p|F-cB%v z^{IAVMOIQF16eBIv`#k;y%DfO+@+rs4tJhGrX%xahHmA~45}v3fj(9L=~_4}K5yvp zjRYEfLIZa4`_CjD>?9l8#OJiuio!K?2B3tm5Pv0i7m93Z7td>IJhWIDl5s$c{;P$R buA?MyJa+1G>;y)k-dzBN=uc?zp@01chCUUL literal 0 HcmV?d00001 diff --git a/icons/cal/white/30.png b/icons/cal/white/30.png new file mode 100644 index 0000000000000000000000000000000000000000..8147d78f042bc2918a7cb6b8ff0f482c91a8f363 GIT binary patch literal 2912 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 literal 0 HcmV?d00001 diff --git a/icons/cal/white/4.png b/icons/cal/white/4.png new file mode 100644 index 0000000000000000000000000000000000000000..16713bcd6729a74a11856b7199365bffe6fd3689 GIT binary patch literal 1140 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSY)RhkE5z6j+Ogmui>jeZt3s22<3V}Oe`f1qEoSGKbmzqE z{L(BazNlNSNaNa>>~&z5Mu=-`BYw2q*t`BH9vxl?dUP!oxL)tlp_l&E3OXrFvh;O)R0uqVi-;>d$Es{_Z z`DOQkrOS4l0j&kS@N8n^&$yGu~soHscl->xnb62j;RW&S$pQJYX=Xp7(=S z;te~kI1%G5Tm>9E_AK}d^oSGtd43ItpZESN6qG04*lFAx)-X@~zt)4Thc@&pJ=*;7 zKal@fY{Rw%fAjwo#~#pPeewQYy?sG^;*EbDKW@o4*orF{UuVo0X_JjURlx*K z?hm`Eb)e+?zugV(T!-g%cD(l~Jr8vK>4w9tiS9~|He|}Vv08A%L|^#F@?nLhTm!?* zO7;&Ci8t1D{J1CbJ*MGI%;7^y{mT?`^pxxj_8wlrpwB4Hee3_8o-Ck??*7haE)#3B zl@zp}b!(~NtAbDZiHVuzolDdk*3Ps%+wGWl=FESq`4^bxyBs;rwZTY+Ay1=cCsRe% zsoPr9{nia+e))Y6KoO$&24hv2ZRsk@au#4rz=SRI^ zjB3v$z`y6IizPRGC)t-6wGQ;0tz>EZSFVNNf%ztL{&fIx- pos^ny+AkH}c4$TeWw(`W_Kam!@6_TZ*%yHd4^LM=mvv4FO#nI&@%8`! literal 0 HcmV?d00001 diff --git a/icons/cal/white/5.png b/icons/cal/white/5.png new file mode 100644 index 0000000000000000000000000000000000000000..466aa7122c025b1983de187ae9d2e565380fbd6e GIT binary patch literal 1437 zcmZvcdo+}37{I@|G0ilr(ilv|Sc>Gb8n@iaOlFdy!B!L_qS?q;+I9EQ$$pK?I77LO zTP|JXQllgr-$7C#iAXUcjdD#Zxzw&5o%(C{J?D9U&v~Bbyyt!2KYr)kSWX0-1`YrK z0+T^w%L%RpRzbeE+W9?}L*cly6HQL}T6SzqkYgQ>aU>i7@Eg|x0py8D@}gn{(}k`$ zj8(;<(PIqsv?F3q9txY%aue#qHQn^)mX))V7qR)W+3C*i5v#>` zdtT0q+=hg4(UU@nRZw?>+JP!=#9b6~cVf&R%N>)@;KcRWt}ip;!~sn_2a$>~A;O0N zcgGdos!86~XZs>oe`9t}Z0V9DmsQLUYRh~6--rG$IZ*yCbkwZIsm)z2=GheTuJg9# z9aj;ea015=yaBW$N%*fxpz0XVxR3bA0)^=BlKZ#vJY^T{gvk*qr9 zLEJP1jVU4ee<=3UfRDkI@Dt%}XRnipNgepytv6oM9n6}tT7Se(!9e;stR{F?I9m%W zTtyfKDAXS6wZ^--A{h6eDq&$gAUlKj3^wQ%wVMgIhyj@iDrXS&_6EJz2JbebAmtrZ z`cs#?H$69J-l0cZ>dNWO80ZGh!Vb}7v>xi2ds-MhyIaPRa`~HDh#VXFrGyoz`EIpH znut^~Y{G@sTOb9%@9yirL_FGPh3m=K)f+MH7pk7QTSx>1D1n}pwI9>C%i`lsf3HfW zl2e-=N9lg*C~JJtetI9Li6S}=y#>!~X3ROP)QAD~lsWS`c7DFAV)ZRxS*%YreCd~t z>1ZZe5`sg+=U)(uHKuO^3*(IZmo8$Uzj&C-LCI^K!QqYmavIA2ATSMcMPE3Mnt4?{ zb8~jTe;W(8K^%zp~l0E)TgCa}j z&N)L9QNn+%M9k_hFTDl3U_NBY#B@}t@haN NvP?RQR=t;#^e^g-c-Q~{ literal 0 HcmV?d00001 diff --git a/icons/cal/white/6.png b/icons/cal/white/6.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c9798bd0c4cf8f03ebdb6524f723c6f8e415ec GIT binary patch literal 1776 zcmZXVdpy(oAIHC&ZFV`T4RcG;A(sf9Vs(TvF@EMGmo}G&BBWw+X(uh;Rli))F)NpB zq)?qAYG}vOz8)N)a$VNRj58di!>oOOPW`sep~Jl^lu`|*CiKcDws@8>7)7pkuw z))Wf>fF8w<9IRFFtD#X^-{G<6kycQ91ANI^)t)(TQMOhv3_n^L0O0h$8Vo4s8*7ug z>6Abp-66CA7G)H=Cr_fi$fA(9g)j#uDkAD4cdg73r){Z^sKtD-v>UkI>T@!f5E8<( zpxXu7+Wqxk|K3FAenkDLd?6WqiGZKovC%%%UsLtW`YcDf!T|5M^x;HxXj?%}8zqWb zK@%kOs4pl>`Hwpumv2h=B5vy&IM9GA`|Zk&VW-^OTIg5N+yetjK-9B(+P$ImFMGP+ zyMb6(0n(WWrCSu|mPNikvQpzYRd@znntrAvC7c`*)s+nYxBk8H|AQvOVvl3vdni9; zW%a&=n+9whGs8zgR5{QEH^#*{fVch^BpK`WJ95{GjLm$jAIUd?yl0XR7=pZq+1#yU^{j4hk@i?L_G7+B|Pr$>!iQML)v zLgbaPZJsxK58U(5K`y$E9CKruTX~TSfMi&_u=m9_IJt8bGy&C_zR1K$QSF|H-9PX{ z2s_usCAb|#W&)v`7Pbq8>C9Sogd| zv|PHSUA#iroJUKBt!f17@t^fU8`}|}F6tAJsk<9f2X}>ufvsMJHAwqBo(O;*6hf|FhhxZN~f~ui`TSKUtammI%bB}^%a=PC&k;xOTRnDdWGuJH@)DiN?tGnYu45_uNE(;uk%())6 zw6lt^7o8QfSdFFG8jrQ&@{3foN1T9t6*lG5DZsltWPyu+@lS2s1zrWK^RGEh)8jJ8 zk+HCH$sd^grnkUY3r!4puz1$a!ApPOcE^^ywhq&J{Q*iO%A_hC%8LSn2y8*>l&2E+3ta0Of26y8-lmfXeS8a_;kU zh2g=4NZXQ2&peeWTN%q0*T(0g$!0;WjE(Ltg z;9g4G<;n9Oc5+h{b(eAo(-n!Z{4sfFy3_LuDM<;F&bVJ3%m^|y@TUADPh#O;H06bp zF2U=HnrgwjVs(y)h|{c|)jYYIb}bwzR$=yt`T%e2z+;zv#CO_l`cn?@^kruqET+!S z9E%dP98sZRRujPR#MNPDKKVeDj)5csv%kmQLTQlKM+0Bdia6u9k5)eQ?HuXs8I=>O zm|?*SmF^2b__Lzd)_JOu2=L_sOw2u`2wo=$PVQcFdHaleRhX+z3LWg?+_vjYl*PY^ zEbm_wuUEO@q{c)YJJGL$=J<0-!udiZ(Q2{F$kwD5?>jMrfd}l1F#n8Jz$Nq}NHg@H5k8!=b)04LDO%Q(YmDOWXqnO2Cn>W=f|BiC&7{^6 zykzsaWw^o8PlmDGnMj@fN+;dbbSP-y2PU5o+}eDIJE>b@XqAm`Z-A%0#|Pk~RyPsH z6N{7^f@JHg9q%8;TBv+SHps>&47&;CBHvrcexDO^u)8M6Kku`0Q0NvBT*H5q-dcN5i5iCT!8N zV@my=?{V=*=kw9=noNJq&pW^+ETfsOS0Ir!e?zK@Y+o^7cqAiZ^ZZRMzZ<{hwWxgs vEX6a)|4H51Y{S}2k_jXlU_DZJJvyVdcqC)`f*WwsN|d5V@~`7SL7+6 literal 0 HcmV?d00001 diff --git a/icons/cal/white/7.png b/icons/cal/white/7.png new file mode 100644 index 0000000000000000000000000000000000000000..e97195177c15ae97839e9c4925e9cb7d4a314acc GIT binary patch literal 1147 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSY)RhkE)9b2D$@3URf&(u zuGjXR$ui%XxXssXDwv+~_Ecq;p`Pqw>&uF>W;iUm(IITn;36({r(=OqlY)wpN*A+Z zL4)v-j)_~!%6D!!=;~Ac%FgTF-tWJ+y`OtMbosvj_f{>+pUM(?x#t(NU}3K8y{(Fhqs{%)&c! z3tV(2Z;89an!Ky?{;hvZjBUyNOMV}Vx%73LeF~RE+iK$*$FeQh8CV$3F($nH+$zd_ zeBneBt$M9 zmvw8Xzr5eZ@Nad_|3-$?CI7qTnX0SU&i(ACd?4fH{rul7Oi#}1PSSfHSsZlf-ktJ2 zs((+uoWHGBhVj$$FwfUj*Uos{3O#gg`;z#6l_~oYeyg*bn15U7lD+oJ&LF7^VRQZ! z3tj%d>TNPdfZH$q*OA8hneLvx8J_j}d^i4a0nI4$oUV4ocj~o{ZI`~-&k6X|_x3!{ z;qN?r{(lpieKBm>Khe&Y_4mIm2kZA-QN8C%+mB;U~~S$Z|s~(`ezlw{z~j>tslOw(H2Qw=%!# zPyAh*xLbAYrJMV$6Z|gKdCqrr*?dDh`$zqOH>?}}PF(U@_?)bi=V>){_5Yt=-t)a| zz%-@j?Yh^yA{qNTof#a!@PVC!>y?s~$2k~~q3t{7HQgP)TUPnZ>UfdC9E_Adt{l2w XE%ralcMpmK0OY102?9kWD1`}+CwaNT zN7iW~RCIPZHNX{)Hi_VLAaQ7>^klWZtNz9E{!zc3C!!v;2AJdqn4p|rxx+wSK=H=9 z2OBR?R`B>uhRGXWQLbt1Dwubj|Fy^myG@{pL`AW(n9g2l+nhGnJ${|Xm+7rHZft5e^4>=+ zJh^Ij`}K5KEzki$At`1|9j6Wq)m0GJ%_wb6*^1GVfa$TOn4t__EchRS_c!|gO==p? zWw}R}R6h5aScANgZ?cfi)~f9_XZ{aZpwSC%NUQj1!%@a7{jhqV1@_n7|1vuI9c~Nd z8Egq(oyj~UKDd=h62nL*kyZ}5IMqZ;`k6gsSVo1^;%1Fo`v!^)-EuyPlu{4$+)f0` zp%&m|KIgeFe?_tt^AHq)F<0xJGMG>9E+?sa4?gdlYv=LRSeMuh4ww!zJ|$o+ ziI3$A_}#kq3e*lGqtn>e&G_O2vTk-DyxP08sd2aJpoV&vIbLp>qDio`X5pb9oq2c3-_?;Xp=58|g5J48 z;fw4#ci}~Y9#D&$G2UM|#W1ezF6EEXo!p8>_{Xyc;v2MM;SY)JIDWcbvQxP63&?B& z(kE7$f||d{sW^1{mJCWrbUbYqS0=ZMNsZqW3(mnOukN=25Bp!EwP-J&aeJ#};AD;%^G$GQ7 zBv1QB-S-r>n&F$r59d}Ln>?NTT(nQ(i~l~pzBi9ZxOs{}C{gLQDD2&0j{h$EX|VXp zY%06p7k2JG=yHr3I?4>+<9_DS*!Ps6Nl0rZyRycArQhEbeP~gp=GiEMd`_LCarf#r z*kSIHa@^FaWp+l7EIRF%mWoi%+z?wO_53`9T&m5YVW=*I>a=yP?Qi_x(rQlJC{)&P zi5IyFZ>s_gg6f?&ij z1^iSaYh#A_L=R=1Mu+`Pn!QyCA(;f%npm8L29{pP25wqB#A&ODB?RT|8mR8rH^D1v6*uxb+REgk2c?SRDR4*4iP*8>y1rvoo%=3QJqx?6rEf8k1+G$Eq-WazByxyE+b2|av%@- z?%VKmO~j%Cu~ZXzEZj&qx#eD~zP*!>YxI=mxLX;?79qC}G2|6;1 zS*l*ckeG2LdwlBZ*L{|3b{k90Z~uUvx4FoXq9xclo4@wQAc?0lVN0s98t1f6eK4F+ zwyiuWCsuW2E0qRkU!ic+34To@F>`|TqBm{nFe@#7AaE4q5JCOO2f=q4^@<3CmMN5Ta0ULKOlTu`EK9s0g^w49=W0r}JU%IrskVx#!&f{r10^2lo4I zQa4fu0AQ0p)i-d1@TbIKHfpcO(V-1sj?w*mH@Fe+d_<`mz{gV=i2y**`II0~Txz&6 z#GdjGpkSpqU3GQGzVWTZjm30-U$5ZgXMdE%W(0>A_NQJwStnXK_KwPG6$;QhnmMAM zGR7{Va{+G%hc~x`sTLt}k8b4n@}f*}TO^`&d^O}cBWDyg6$2LFS+o|BO#Oe29wlV+ zbjpOdJZkaMk9L(Ux`EyDa_~?v>fgfuy)baxxH4QE)0x$DO3=XxLEXgvuV|iW?P&6^ z@~N`Oxr=`yHHfw>S7=fI6mC)OVUp~@_U)T_s{~GiwwuNh6bjXemvYfm*2rmajNd;~ zIp^(sz#!EKzCF2)m3_(lNw{9`L56DC>`x4AT-d@PG*UKMGE?Py$N zn6j7ml<*J?J9R|dW?&xwgK@gX2+j$`a2%q+IfS?*12vT~7haWe&kD=%?y%7L0Y6M9 z_k{8@IOY4?!q0{*%@(u~>4(1I+28Y3Tjac+_dr=c9of#0D&d^7@%SZl1a==bM<-iNauaWDn+ThN3ogLhST#?1 zZY=hJuGam9mngxCTtOfi_Q&Rv@kaJ|a@hz;ka}k=fisWJqxReM8Q~94Dm}KG-^p8r4W#og!AQO=>*BT$>0* z+{e|fE$nwXX9H%5L%^s*FjuWKaaa6S^YAXTwZ}SY)Hu8U*%|w0R`utzoI7+#kPe*A zil0J(QMU?!z8i7m;&O_c;uY+~wIsj7M_s_u;X!Q~m0JH#`8mu?47u2d-9v>=bpe16 zffN^MJL(7NUY>@=9@!{6d!eznML^&8yObx$9sY9OkpaAv>vS}zw~DKeA9?JUqSNSM z{|;g|Jak-h1hBE8XYtuniLo>;j|!Y|p3 zb;cF|H4SR}b!>^!gDl2Lusa_p+jiGWW-2Ri7?eo9Evlfy&;6AK_W0!T#;WIS14I{9 z<8J@o!?gFFy~2=)BQBUN>Z8uZ%s#<&`Z(cRJk8fH6Dt>e-J)5;(3y;gvG*EoWj>=; z)d4lL&<`vZy>?8y>#$8JraK@|81lj;Az_+{Z?xo9Fx`HweZDJGqR+|*B`7YczD(vf zeQ*bFOkHWIf3cHybs#xJS=4FzTxw<&epV9rr4H=iStgauxnzc z?ktC%;XlG_2jggb*L#zeimefa_mFX@na>~x@Y4@_wS3`BtmL5nme7C8w0$qHyW#VD zRct6|&q;b1ek5s_>tL@nPg!=Dzcbv2;AH0mOO37=e(h@kcH~6)dd`jroxlQdjHe!X zv;yilMsHhStpwCKCwgV98Cq_H{oJBKZlBhGLx z@E41YG?sB*PIA+-Y8@W7i>_1tf&Qx(2lnSBQLY|U literal 0 HcmV?d00001 diff --git a/icons/layout/default/browse.png b/icons/layout/default/browse.png new file mode 100644 index 0000000000000000000000000000000000000000..c063ca09de3e77e8a605ab39bef9b9c21c5bacda GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0P3?wHke>@jRF%}28J29*~C-V}>VGHmHaRt&q zurz(=c_77D666=m;PC858ivL>4nJa0`PlBg3pY5H=O z_B)KS0!qA}lg;YFU978nDC;#AQ<(bjL&g1Z*p|Q5W=z-pm6rLz^{?Ox({Zts_ XZ!gY%>+x_hP(6dEtDnm{r-UW|pPn$+ literal 0 HcmV?d00001 diff --git a/icons/layout/default/browsew.png b/icons/layout/default/browsew.png new file mode 100644 index 0000000000000000000000000000000000000000..9b0b2b3141a857c618202685f759ee37925e4dd1 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0P3?wHke>@jRF%}28J29*~C-V}>VGHmHaRt)< z|NmclbN*eBbV-n3FoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-Jcq zUD@w2%J6B5nRIWs3=~rFba4#PIG_B3pOt4u4?B;;hla-50;30dM^bpA%=tr)KlW2$ YkiWe+`>n^r$w2iCp00i_>zopr0ADUNL;wH) literal 0 HcmV?d00001 diff --git a/icons/layout/default/cascade.png b/icons/layout/default/cascade.png new file mode 100644 index 0000000000000000000000000000000000000000..292a057f017e2f26c7f1b99bdf57bb193d75158c GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0P3?wHke>@jRF%}28J29*~C-V}>VGHmHaRt&q zurz(=c_77D666=m;PC858ivL>4nJa0`PlBg3pY5H=O z_B)KS0;Xo}(^MjXLjImEjv*T7lYj8D^33RA=Seu=7tdyY;T8K0$r=aIf@A;L=JXt& z(Nn)evNpxof$#9a1dW7*gkuL+uxlMUn2?u{@Zj)4hE+e?=Q@7&I5^jX;l}YzZ#%xR RwE&G~@O1TaS?83{1OWU|M#KOB literal 0 HcmV?d00001 diff --git a/icons/layout/default/cascadebrowse.png b/icons/layout/default/cascadebrowse.png new file mode 100644 index 0000000000000000000000000000000000000000..2f12ada6300e54c16b5b2337824c7651c5909f29 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0P3?wHke>@jRF%}28J29*~C-V}>VGHmHaRt&q zurz(=c_77D666=m;PC858ivL>4nJa0`PlBg3pY5H=O z_B)KS0+tH$-|w*ig#tZY978nDC;#AQ<(bjL&cnmg!!B{7-HQ3e^m+>khtL`Ww*UNd zcL;o<%ysnGr~VFR;mOE+W47iR0`gG?(p*bmDA31(fMLUkdA!1EW(5-n7^ QfQB=8y85}Sb4q9e0OJlkmH+?% literal 0 HcmV?d00001 diff --git a/icons/layout/default/cascadebrowsew.png b/icons/layout/default/cascadebrowsew.png new file mode 100644 index 0000000000000000000000000000000000000000..c46b48be2b4132ca68f77250765f4dc7bc6bb4be GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0P3?wHke>@jRF%}28J29*~C-V}>VGHmHaRt)< z|NmclbN*eBbV-n3FoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-Jcq zUD@w2$_iMrD1WiK3KRi(g;OXk;vd$@?2>?IfKnnl> literal 0 HcmV?d00001 diff --git a/icons/layout/default/cascadew.png b/icons/layout/default/cascadew.png new file mode 100644 index 0000000000000000000000000000000000000000..da64bd6ceb1e6c8ed74213d2ee38d33129591cf3 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0P3?wHke>@jRF%}28J29*~C-V}>VGHmHaRt)< z|NmclbN*eBbV-n3FoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-Jcq zUD@w2$_ki?D_lxH0u=K1ba4#PIG_B3pOt4u4?9o70l#=Q`wOqwZ%EcSh!!0C&o-y$ z_>7+V9g?*v#twXk4<=|NBqSU=xPo2l(7}YfgoFo&4>GL!**@3tv&X@?9t<~*Z+hGD SjjaV}G=rzBpUXO@geCxv&PvPx literal 0 HcmV?d00001 diff --git a/icons/layout/default/centerwork.png b/icons/layout/default/centerwork.png new file mode 100644 index 0000000000000000000000000000000000000000..826b331b48679d671048f232a9c2c254ba5e7af4 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPa8#@oTPIBk>g+QTxPZ!6Kid%1Q7;+sj;9$KFQS@K? z_TDK@UK*nJ?;EMSaGu_yc*&~J@_Bdl&&6`nUfb{Tcc^aIS!w%d@vh?QRnd$=QFfzC-3Gj=N=B$=}aeY5X*3;F`Wt~$( F698vdNn8K` literal 0 HcmV?d00001 diff --git a/icons/layout/default/centerworkw.png b/icons/layout/default/centerworkw.png new file mode 100644 index 0000000000000000000000000000000000000000..fcfa7e317d0c3a093c18568bf16418fc9010260c GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPa8#@mVYhKk)kdcc#T^vIyZoR!}$kkxL!+IfX&;O~f zqgtHSgiYMD-_qrga-@%@(#qi9?bo8XMXyG!zozrMp)>B+EZyHMOW1EHCkx50FFw2K z%on3o8<~K{VFHh-591%M=a(xNetVxQqERnj)+{V_S-m!@jRF%}28J29*~C-V}>VGHmHaRt&q zurz(=c_77D666=m;PC858ivL>4nJa0`PlBg3pY5H=O z_B)KS0xB$bW`vyt3blK>IEHAPUwUaHFS8;K>xKSx1t&Soxn{>o^ae^i^x_hE{wGzb zmBV${jw(_4TIpBK`5^^Q>|A8|*SZ9}ZHZ`5+_vE625}W7#)%dUy)PUTZhhULXwuK| zyl1VR;#0Ln)8;qS9B>lfu--3&Z_h>czQ!rC;epnI)-%o-ZNC0nrgi>hu78nFe|f~M X@LS8-mC1Vu=p+VDS3j3^P6@jRF%}28J29*~C-V}>VGHmHaRt)< z|NmclbN*eBbV-n3FoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-Jcq zUD@w2%J6Bb{E2xO3>0ejba4#PIKTALMqXw`9@Y!}>k3YCm~+jJmFNwWc<99?^88P# zQY(k+t{qjP^0m^hn)5>np4hp_@~?FXc-s=uptxA$Qs5#&yzG1yz2H&2G?0t<>WWxik1+8bCGunLpw@mB&%Uu5=pZ@ZQ YTj95svn!ML5YR~sp00i_>zopr055%EXaE2J literal 0 HcmV?d00001 diff --git a/icons/layout/default/termfair.png b/icons/layout/default/termfair.png new file mode 100644 index 0000000000000000000000000000000000000000..06226c1683ac0a42a762f2b280df9bf500cac969 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0P3?wHke>@jRF%}28J29*~C-V}>VGHmHaRt&q zurz(=c_77D666=m;PC858ivL>4nJa0`PlBg3pY5H=O z_B)KS0*X3QqPWU{LaLrFjv*T7lYj8D^33RA=c(awIAHfeqUFvXhGi87Ms1587w(p1 ZIC*~q>w_b_TY(xFJYD@<);T3K0RX%`F@OL7 literal 0 HcmV?d00001 diff --git a/icons/layout/default/termfairw.png b/icons/layout/default/termfairw.png new file mode 100644 index 0000000000000000000000000000000000000000..0a8b5763125fd7391a1f555d2b9d7b59c59bd724 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0P3?wHke>@jRF%}28J29*~C-V}>VGHmHaRt)< z|NmclbN*eBbV-n3FoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-Jcq zUD@w2$_gm*Ia+y70t%^mx;TbtoKOD2&&o5Shn=T}$Kin83yGFHe;Afk7#OuJdR(|$ alHuh24Xh82@NNZaVDNPHb6Mw<&;$T)jx?_T literal 0 HcmV?d00001 diff --git a/icons/layout/zenburn/browse.png b/icons/layout/zenburn/browse.png new file mode 100644 index 0000000000000000000000000000000000000000..f0bd177143266961916a20d295faeccc73c58ba0 GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgg4PHABl-j7F`rvZg}JzX3_DsH{K zxskU)LBJuQL70(Y)*K0-AbW|YuPgg)78yZao?r7mcL9Y~d%8G=RNQ)d zeIqZEArEVSd=g{X2ac61^A*b$x0xwdv`aTeKX}n(q4|Eg-kKLLy~C7J-sz;*Muh(V zQ&gW8t)!&4*&JvLDlmv&w^%&v>vWKF84j!oPe{1ue)vq;b!1h?{<5z6WtH*#?dh7! tU~!Arq7pNXUo_ZkYl^H6!ghG_{w8DQe!d+hy-ZagAx~F7mvv4FO#o0nR|xQL70(Y)*K0-AbW|YuPgg)P8m))^}89hia?=7o-U3d6}R5r z+{oLYAix@6(07P~??gk-0liz2Nwuv{?!C|9*mvhUm$#tj++B8OEZ^D3ZQ8n8ulx<; z^S$XZH`Reg-~zf!2++1 m)d%MPWAnwW1R~>6^@{D4qCjzzV;#`Z3=E#GelF{r5}E+bvOHS= literal 0 HcmV?d00001 diff --git a/icons/layout/zenburn/gimp.png b/icons/layout/zenburn/gimp.png new file mode 100644 index 0000000000000000000000000000000000000000..ded8e62a73f952493e2df9e0d5ac2f7606bcb101 GIT binary patch literal 3424 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 literal 0 HcmV?d00001 diff --git a/icons/layout/zenburn/termfair.png b/icons/layout/zenburn/termfair.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d5880c64fb32af4906b58bae4a347e8f8db4f5 GIT binary patch literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgg4P6-|>dAIUKKoN$8o-U3d6}R5r z+{oK(AmVz_y=#N3R{wzpo)a7)ITKBmY`t{M!{h&*zGo+`m;x;(dYOOa|GjVSf4*(o zeD2<}dNg6J?&}k0>)r?cz##tJ$0(e&LiMLgWjL!v4HHBZg;cq_;^Fnj_OqX} lK9{L#eXoxqiONw}=@MTkCz`vrwL%Ugvd$@?2>`wVQ}6%) literal 0 HcmV?d00001 diff --git a/icons/mail.png b/icons/mail.png new file mode 100644 index 0000000000000000000000000000000000000000..60ba6e03c83096ece4c7b3e819fbf465a57c33db GIT binary patch literal 634 zcmV-=0)_pFP)!1A1KpjVT02waR7`@oYE0(=2nKc;~afuVKL0ail@gISmBxIO#2q53F6m7`dDF;Rp*ya4}MWke=f zuW~_2-y;%@Q3SFI`|SB%zq+&sRbElm4_B*vj?AbEU(1Ico^0`nZn`Wf(i8t0mEJd4Nj{FKM?PI)*vkFy!S0S(8o U)3CzePyhe`07*qoM6N<$g2BTP;Q#;t literal 0 HcmV?d00001 diff --git a/icons/no_net.png b/icons/no_net.png new file mode 100755 index 0000000000000000000000000000000000000000..1a3e8a8ab82472adbce12200207d3af55956e9c7 GIT binary patch literal 1697 zcmV;S244AzP)I6pyXtIei2`XwJ#s?$ zoT7gy!6?RnO3*2ZQRk|2s3`IfH$emh0}5jZ0pkPu+UEM$?LGd{O(%5S9QbJIN$x-W zo!j2?`Tfp0-{0?+5QnBQr)q9DfjP1R5hSxYNJKt4-h%g3R!wk^7`v}uM^yzgC&wKC zcDaoJFyzExist9E7BfO2Mc`t!?)12L0d!jeKmtGlz{PF<>o&;DaF3f*3RUH(j(R;? z4(x7@I{Psk%$yZ}Lg=^EYfS!C&$SK2H+|Fl6n6lEZ`WN303vVbOfX0MT{0R1>fx5n zaV>?-&09Z-Dr)j=i5idqkN}X_4)@@K@;lXo-@WKt`J6}V3MgXuuu66Nj^wlbycM${($gk&eRE)2*RI{WL{@g8 z=f=6`51?aN&A@$^KXIXhU!b=Bu#SkBgF(qXW89u#>)?cqTJ2t241&`lVhaVD?eG!X^*aaD|uKWe}e%Y7Fn`0013t;g0A5d$D1 z0tbV7-(yd@(i-bh+7{l|$)}x~$jHcTyXNYW;O4D+31ARWIA-FYqv25dl4@J%XluFe zl~)ae0^qN!w~*23k;Yhuu*+?Ts($QfpW_ADmWB}(4z;n%vd1^~*ZBOuj%rX&J zRmnSRuG7+bFolS|^v=Hdir{D4nu);SsYWk%;y|6_u&!*%giuTC&x0?5L`ZL}*8p_% zHSV+)^?uetTSv``Vg7Zs8_o{?FAxHOBv(OUTl>-nuM50Wzdh_r6!FQ3SZ&_5Z^*Gj zA|{GpO3kCElo{n$a5#95%$vZ0pyAKp`y|g$6jgui^sJcb0;ctAcPi7Tl`?Zw2tDZ@ zCHPR%!n?D&cJGY z15#_(?a)t~TE@)81BbxS>sh(&mK@{5)voX-3}{R-DTGqrSiem_rL=s&6;{!ADRZiF zQyzchOhhT{%(o4QWPj)L|Adht*?X?Ss{&}d^k-~FdDxS|T8VC3+iqv0qtjR&#{*ykVO zv=;qjTDv;8ZQ&B6u6e%K3Sa<=9_G(CujuEXq6X*l24axLoxZf*GcOg4x+LIuzXh5m z4>Sdc2<-FcI7g5BF?G%Jd4CRoMR$q#-l5C?NVoi=6Bcm$mq`etH?lh7^9P<_u+Ktn3b~kKkp}O)a&V zw|u-(Dze`lMJzD@NY+t{V@e8JzHVA3a&w>NbK4$62+~cyyg2o>SB`ipXBQfmE`Cin zvE=p$5SRgyiwi4BN&4JZyTKGQ0J^?C1k0YLheb}#s$LKnvP_cQc3JA1wFd!!&$!I( zixvmd8tXU6CFAG!K;Z7+CA)1_`lb&W)$hMQmUPEF5(w{{dMb#BboI)hvsV(BS&4K3 z05rZ3yWw!ZF1E|eEL-+ASBvbd7g*B(Nh00k%S+hf_5QZ<*{tvxmjGnx2mqvi=%|%T z#@)r5MqnnXaO@oOryCmp0HKf$ng$s{bV3L?3yRofEsm@K3W@+#1!ZNr0YHqkIk9(t zdcXGw0eSrRP5_`3qZ2wA&VnM2cE$in{4p-s?Jl)xC!F~I^?#}X*rN}9(mNrFPue}cEBGnLI^;J rP8|P-m+muzxW_ed^1qT+M*#c|BkP&jBU;IV00000NkvXXu0mjfn#wI2 literal 0 HcmV?d00001 diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..3abf9f6 --- /dev/null +++ b/init.lua @@ -0,0 +1,20 @@ + +--[[ + + Lain + Layouts, widgets and utilities for Awesome WM + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local lain = +{ + layout = require("lain.layout"), + util = require("lain.util"), + widgets = require("lain.widgets") +} + +return lain diff --git a/layout/cascade.lua b/layout/cascade.lua new file mode 100644 index 0000000..cabacef --- /dev/null +++ b/layout/cascade.lua @@ -0,0 +1,65 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local tag = require("awful.tag") + +local cascade = +{ + name = "cascade", + nmaster = 0, + offset_x = 32, + offset_y = 8 +} + +function cascade.arrange(p) + + -- Cascade windows. + + -- Screen. + local wa = p.workarea + local cls = p.clients + + -- Opening a new window will usually force all existing windows to + -- get resized. This wastes a lot of CPU time. So let's set a lower + -- bound to "how_many": This wastes a little screen space but you'll + -- get a much better user experience. + local t = tag.selected(p.screen) + local num_c + if cascade.nmaster > 0 + then + num_c = cascade.nmaster + else + num_c = tag.getnmaster(t) + end + + local how_many = #cls + if how_many < num_c + then + how_many = num_c + end + + local current_offset_x = cascade.offset_x * (how_many - 1) + local current_offset_y = cascade.offset_y * (how_many - 1) + + -- Iterate. + for i = 1,#cls,1 + do + local c = cls[i] + local g = {} + + g.x = wa.x + (how_many - i) * cascade.offset_x + g.y = wa.y + (i - 1) * cascade.offset_y + g.width = wa.width - current_offset_x + g.height = wa.height - current_offset_y + + c:geometry(g) + end +end + +return cascade diff --git a/layout/cascadetile.lua b/layout/cascadetile.lua new file mode 100644 index 0000000..a94bbed --- /dev/null +++ b/layout/cascadetile.lua @@ -0,0 +1,159 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local tag = require("awful.tag") +local beautiful = require("beautiful") +local tonumber = tonumber + +local cascadetile = +{ + name = "cascadetile", + nmaster = 0, + ncol = 0, + mwfact = 0, + offset_x = 5, + offset_y = 32, + extra_padding = 0 +} + +function cascadetile.arrange(p) + + -- Layout with one fixed column meant for a master window. Its + -- width is calculated according to mwfact. Other clients are + -- cascaded or "tabbed" in a slave column on the right. + + -- It's a bit hard to demonstrate the behaviour with ASCII-images... + -- + -- (1) (2) (3) (4) + -- +-----+---+ +-----+---+ +-----+---+ +-----+---+ + -- | | | | | | | | | | | 4 | + -- | | | | | 2 | | | 3 | | | | + -- | 1 | | -> | 1 | | -> | 1 | | -> | 1 +---+ + -- | | | | +---+ | +---+ | | 3 | + -- | | | | | | | | 2 | | |---| + -- | | | | | | | |---| | | 2 | + -- | | | | | | | | | | |---| + -- +-----+---+ +-----+---+ +-----+---+ +-----+---+ + + -- A useless gap (like the dwm patch) can be defined with + -- beautiful.useless_gap_width. + local useless_gap = tonumber(beautiful.useless_gap_width) + if useless_gap == nil + then + useless_gap = 0 + end + + -- Screen. + local wa = p.workarea + local cls = p.clients + + -- Width of main column? + local t = tag.selected(p.screen) + local mwfact + if cascadetile.mwfact > 0 + then + mwfact = cascadetile.mwfact + else + mwfact = tag.getmwfact(t) + end + + -- Make slave windows overlap main window? Do this if ncol is 1. + local overlap_main + if cascadetile.ncol > 0 + then + overlap_main = cascadetile.ncol + else + overlap_main = tag.getncol(t) + end + + -- Minimum space for slave windows? See cascade.lua. + local num_c + if cascadetile.nmaster > 0 + then + num_c = cascadetile.nmaster + else + num_c = tag.getnmaster(t) + end + + local how_many = #cls - 1 + if how_many < num_c + then + how_many = num_c + end + local current_offset_x = cascadetile.offset_x * (how_many - 1) + local current_offset_y = cascadetile.offset_y * (how_many - 1) + + if #cls > 0 + then + -- Main column, fixed width and height. + local c = cls[#cls] + local g = {} + local mainwid = wa.width * mwfact + local slavewid = wa.width - mainwid + + if overlap_main == 1 + then + g.width = wa.width + + -- The size of the main window may be reduced a little bit. + -- This allows you to see if there are any windows below the + -- main window. + -- This only makes sense, though, if the main window is + -- overlapping everything else. + g.width = g.width - cascadetile.extra_padding + else + g.width = mainwid + end + + g.height = wa.height + g.x = wa.x + g.y = wa.y + if useless_gap > 0 + then + -- Reduce width once and move window to the right. Reduce + -- height twice, however. + g.width = g.width - useless_gap + g.height = g.height - 2 * useless_gap + g.x = g.x + useless_gap + g.y = g.y + useless_gap + + -- When there's no window to the right, add an additional + -- gap. + if overlap_main == 1 + then + g.width = g.width - useless_gap + end + end + c:geometry(g) + + -- Remaining clients stacked in slave column, new ones on top. + if #cls > 1 + then + for i = (#cls - 1),1,-1 + do + c = cls[i] + g = {} + g.width = slavewid - current_offset_x + g.height = wa.height - current_offset_y + g.x = wa.x + mainwid + (how_many - i) * cascadetile.offset_x + g.y = wa.y + (i - 1) * cascadetile.offset_y + if useless_gap > 0 + then + g.width = g.width - 2 * useless_gap + g.height = g.height - 2 * useless_gap + g.x = g.x + useless_gap + g.y = g.y + useless_gap + end + c:geometry(g) + end + end + end +end + +return cascadetile diff --git a/layout/centerwork.lua b/layout/centerwork.lua new file mode 100644 index 0000000..2035c65 --- /dev/null +++ b/layout/centerwork.lua @@ -0,0 +1,122 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local awful = require("awful") +local beautiful = require("beautiful") +local tonumber = tonumber +local math = { floor = math.floor } + +local centerwork = +{ + name = "centerwork", + top_left = 0, + top_right = 1, + bottom_left = 2, + bottom_right = 3 +} + +function centerwork.arrange(p) + -- A useless gap (like the dwm patch) can be defined with + -- beautiful.useless_gap_width . + local useless_gap = tonumber(beautiful.useless_gap_width) + if useless_gap == nil + then + useless_gap = 0 + end + + -- Screen. + local wa = p.workarea + local cls = p.clients + + -- Width of main column? + local t = awful.tag.selected(p.screen) + local mwfact = awful.tag.getmwfact(t) + + if #cls > 0 + then + -- Main column, fixed width and height. + local c = cls[#cls] + local g = {} + local mainwid = math.floor(wa.width * mwfact) + local slavewid = wa.width - mainwid + local slaveLwid = math.floor(slavewid / 2) + local slaveRwid = slavewid - slaveLwid + local slaveThei = math.floor(wa.height / 2) + local slaveBhei = wa.height - slaveThei + + g.height = wa.height - 2 * useless_gap + g.width = mainwid + g.x = wa.x + slaveLwid + g.y = wa.y + useless_gap + + c:geometry(g) + + -- Auxiliary windows. + if #cls > 1 + then + local at = 0 + for i = (#cls - 1),1,-1 + do + -- It's all fixed. If there are more than 5 clients, + -- those additional clients will float. This is + -- intentional. + if at == 4 + then + break + end + + c = cls[i] + g = {} + + if at == centerwork.top_left + then + -- top left + g.x = wa.x + useless_gap + g.y = wa.y + useless_gap + g.width = slaveLwid - 2 * useless_gap + g.height = slaveThei - useless_gap + elseif at == centerwork.top_right + then + -- top right + g.x = wa.x + slaveLwid + mainwid + useless_gap + g.y = wa.y + useless_gap + g.width = slaveRwid - 2 * useless_gap + g.height = slaveThei - useless_gap + elseif at == centerwork.bottom_left + then + -- bottom left + g.x = wa.x + useless_gap + g.y = wa.y + slaveThei + useless_gap + g.width = slaveLwid - 2 * useless_gap + g.height = slaveBhei - 2 * useless_gap + elseif at == centerwork.bottom_right + then + -- bottom right + g.x = wa.x + slaveLwid + mainwid + useless_gap + g.y = wa.y + slaveThei + useless_gap + g.width = slaveRwid - 2 * useless_gap + g.height = slaveBhei - 2 * useless_gap + end + + c:geometry(g) + + at = at + 1 + end + + -- Set remaining clients to floating. + for i = (#cls - 1 - 4),1,-1 + do + c = cls[i] + awful.client.floating.set(c, true) + end + end + end +end + +return centerwork diff --git a/layout/init.lua b/layout/init.lua new file mode 100644 index 0000000..d79679a --- /dev/null +++ b/layout/init.lua @@ -0,0 +1,20 @@ + +--[[ + + Lain + Layouts, widgets and utilities for Awesome WM + + Layouts section + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local wrequire = require("lain.helpers").wrequire +local setmetatable = setmetatable + +local layout = { _NAME = "lain.layout" } + +return setmetatable(layout, { __index = wrequire }) diff --git a/layout/termfair.lua b/layout/termfair.lua new file mode 100644 index 0000000..62eef9a --- /dev/null +++ b/layout/termfair.lua @@ -0,0 +1,160 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local tag = require("awful.tag") +local beautiful = require("beautiful") +local math = { ceil = math.ceil, + floor = math.floor, + max = math.max } +local tonumber = tonumber + +local termfair = +{ + name = "termfair", + + -- You can set the number of columns and rows, + -- -- otherwise they are read from awful.tag + nmaster = 0, -- columns + ncol = 0 -- rows +} + +function termfair.arrange(p) + -- Layout with fixed number of vertical columns (read from nmaster). + -- New windows align from left to right. When a row is full, a now + -- one above it is created. Like this: + + -- (1) (2) (3) + -- +---+---+---+ +---+---+---+ +---+---+---+ + -- | | | | | | | | | | | | + -- | 1 | | | -> | 2 | 1 | | -> | 3 | 2 | 1 | -> + -- | | | | | | | | | | | | + -- +---+---+---+ +---+---+---+ +---+---+---+ + + -- (4) (5) (6) + -- +---+---+---+ +---+---+---+ +---+---+---+ + -- | 4 | | | | 5 | 4 | | | 6 | 5 | 4 | + -- +---+---+---+ -> +---+---+---+ -> +---+---+---+ + -- | 3 | 2 | 1 | | 3 | 2 | 1 | | 3 | 2 | 1 | + -- +---+---+---+ +---+---+---+ +---+---+---+ + + -- A useless gap (like the dwm patch) can be defined with + -- beautiful.useless_gap_width. + local useless_gap = tonumber(beautiful.useless_gap_width) + if useless_gap == nil + then + useless_gap = 0 + end + + -- Screen. + local wa = p.workarea + local cls = p.clients + + -- How many vertical columns? + local t = tag.selected(p.screen) + local num_x + if termfair.nmaster ~= 0 + then + num_x = termfair.nmaster + else + num_x = tag.getnmaster(t) + end + + -- Do at least "desired_y" rows. + local desired_y + if termfair.ncol ~= 0 + then + desired_y = termfair.ncol + else + desired_y = tag.getncol(t) + end + + if #cls > 0 + then + local num_y = math.max(math.ceil(#cls / num_x), desired_y) + local cur_num_x = num_x + local at_x = 0 + local at_y = 0 + local remaining_clients = #cls + local width = math.floor(wa.width / num_x) + local height = math.floor(wa.height / num_y) + + -- We start the first row. Left-align by limiting the number of + -- available slots. + if remaining_clients < num_x + then + cur_num_x = remaining_clients + end + + -- Iterate in reversed order. + for i = #cls,1,-1 + do + -- Get x and y position. + local c = cls[i] + local this_x = cur_num_x - at_x - 1 + local this_y = num_y - at_y - 1 + + -- Calc geometry. + local g = {} + if this_x == (num_x - 1) + then + g.width = wa.width - (num_x - 1) * width + else + g.width = width + end + if this_y == (num_y - 1) + then + g.height = wa.height - (num_y - 1) * height + else + g.height = height + end + g.x = wa.x + this_x * width + g.y = wa.y + this_y * height + if useless_gap > 0 + then + -- Top and left clients are shrinked by two steps and + -- get moved away from the border. Other clients just + -- get shrinked in one direction. + if this_x == 0 + then + g.width = g.width - 2 * useless_gap + g.x = g.x + useless_gap + else + g.width = g.width - useless_gap + end + + if this_y == 0 + then + g.height = g.height - 2 * useless_gap + g.y = g.y + useless_gap + else + g.height = g.height - useless_gap + end + end + c:geometry(g) + remaining_clients = remaining_clients - 1 + + -- Next grid position. + at_x = at_x + 1 + if at_x == num_x + then + -- Row full, create a new one above it. + at_x = 0 + at_y = at_y + 1 + + -- We start a new row. Left-align. + if remaining_clients < num_x + then + cur_num_x = remaining_clients + end + end + end + end +end + +return termfair diff --git a/layout/uselessfair.lua b/layout/uselessfair.lua new file mode 100644 index 0000000..92e8d45 --- /dev/null +++ b/layout/uselessfair.lua @@ -0,0 +1,122 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2012, Josh Komoroske + * (c) 2010-2012, Peter Hofmann + +--]] + +local beautiful = require("beautiful") +local ipairs = ipairs +local math = { ceil = math.ceil, sqrt = math.sqrt } +local tonumber = tonumber + +local uselessfair = {} + +local function fair(p, orientation) + -- A useless gap (like the dwm patch) can be defined with + -- beautiful.useless_gap_width. + local useless_gap = tonumber(beautiful.useless_gap_width) + if useless_gap == nil + then + useless_gap = 0 + end + + local wa = p.workarea + local cls = p.clients + + if #cls > 0 then + local cells = math.ceil(math.sqrt(#cls)) + local strips = math.ceil(#cls / cells) + + local cell = 0 + local strip = 0 + for k, c in ipairs(cls) do + local g = {} + -- Save actual grid index for use in the useless_gap + -- routine. + local this_x = 0 + local this_y = 0 + if ( orientation == "east" and #cls > 2 ) + or ( orientation == "south" and #cls <= 2 ) then + if #cls < (strips * cells) and strip == strips - 1 then + g.width = wa.width / (cells - ((strips * cells) - #cls)) + else + g.width = wa.width / cells + end + g.height = wa.height / strips + + this_x = cell + this_y = strip + + g.x = wa.x + cell * g.width + g.y = wa.y + strip * g.height + + else + if #cls < (strips * cells) and strip == strips - 1 then + g.height = wa.height / (cells - ((strips * cells) - #cls)) + else + g.height = wa.height / cells + end + g.width = wa.width / strips + + this_x = strip + this_y = cell + + g.x = wa.x + strip * g.width + g.y = wa.y + cell * g.height + end + + -- Useless gap. + if useless_gap > 0 + then + -- Top and left clients are shrinked by two steps and + -- get moved away from the border. Other clients just + -- get shrinked in one direction. + if this_x == 0 + then + g.width = g.width - 2 * useless_gap + g.x = g.x + useless_gap + else + g.width = g.width - useless_gap + end + + if this_y == 0 + then + g.height = g.height - 2 * useless_gap + g.y = g.y + useless_gap + else + g.height = g.height - useless_gap + end + end + -- End of useless gap. + + c:geometry(g) + + cell = cell + 1 + if cell == cells then + cell = 0 + strip = strip + 1 + end + end + end +end + +--- Horizontal fair layout. +-- @param screen The screen to arrange. +uselessfair.horizontal = {} +uselessfair.horizontal.name = "uselessfairh" +function uselessfair.horizontal.arrange(p) + return fair(p, "east") +end + +-- Vertical fair layout. +-- @param screen The screen to arrange. +uselessfair.name = "uselessfair" +function uselessfair.arrange(p) + return fair(p, "south") +end + +return uselessfair diff --git a/layout/uselesspiral.lua b/layout/uselesspiral.lua new file mode 100644 index 0000000..695728c --- /dev/null +++ b/layout/uselesspiral.lua @@ -0,0 +1,112 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2009 Uli Schlachter + * (c) 2008 Julien Danjolu + +--]] + +local beautiful = require("beautiful") +local ipairs = ipairs +local tonumber = tonumber + +local uselesspiral = {} + +local function spiral(p, spiral) + -- A useless gap (like the dwm patch) can be defined with + -- beautiful.useless_gap_width. + local useless_gap = tonumber(beautiful.useless_gap_width) + if useless_gap == nil + then + useless_gap = 0 + end + + local wa = p.workarea + local cls = p.clients + local n = #cls + + local static_wa = wa + + for k, c in ipairs(cls) do + if k < n then + if k % 2 == 0 then + wa.height = wa.height / 2 + else + wa.width = wa.width / 2 + end + end + + if k % 4 == 0 and spiral then + wa.x = wa.x - wa.width + elseif k % 2 == 0 or + (k % 4 == 3 and k < n and spiral) then + wa.x = wa.x + wa.width + end + + if k % 4 == 1 and k ~= 1 and spiral then + wa.y = wa.y - wa.height + elseif k % 2 == 1 and k ~= 1 or + (k % 4 == 0 and k < n and spiral) then + wa.y = wa.y + wa.height + end + + local wa2 = {} + wa2.x = wa.x + wa2.y = wa.y + wa2.height = wa.height + wa2.width = wa.width + + -- Useless gap. + if useless_gap > 0 + then + -- Top and left clients are shrinked by two steps and + -- get moved away from the border. Other clients just + -- get shrinked in one direction. + + top = false + left = false + + if wa2.y == static_wa.y then + top = true + end + + if wa2.x == static_wa.x then + left = true + end + + if top then + wa2.height = wa2.height - 2 * useless_gap + wa2.y = wa2.y + useless_gap + else + wa2.height = wa2.height - useless_gap + end + + if left then + wa2.width = wa2.width - 2 * useless_gap + wa2.x = wa2.x + useless_gap + else + wa2.width = wa2.width - useless_gap + end + end + -- End of useless gap. + + c:geometry(wa2) + end +end + +--- Dwindle layout +uselesspiral.dwindle = {} +uselesspiral.dwindle.name = "uselessdwindle" +function uselesspiral.dwindle.arrange(p) + return spiral(p, false) +end + +--- Spiral layout +uselesspiral.name = "uselesspiral" +function uselesspiral.arrange(p) + return spiral(p, true) +end + +return uselesspiral diff --git a/layout/uselesstile.lua b/layout/uselesstile.lua new file mode 100644 index 0000000..b82c97e --- /dev/null +++ b/layout/uselesstile.lua @@ -0,0 +1,232 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2009 Donald Ephraim Curtis + * (c) 2008 Julien Danjolu + +--]] + +local tag = require("awful.tag") +local beautiful = require("beautiful") +local ipairs = ipairs +local math = { floor = math.floor, + max = math.max, + min = math.min } +local tonumber = tonumber + +local uselesstile = {} + +local function tile_group(cls, wa, orientation, fact, group) + -- A useless gap (like the dwm patch) can be defined with + -- beautiful.useless_gap_width . + local useless_gap = tonumber(beautiful.useless_gap_width) + if useless_gap == nil + then + useless_gap = 0 + end + + -- get our orientation right + local height = "height" + local width = "width" + local x = "x" + local y = "y" + if orientation == "top" or orientation == "bottom" then + height = "width" + width = "height" + x = "y" + y = "x" + end + + -- make this more generic (not just width) + available = wa[width] - (group.coord - wa[x]) + + -- find our total values + local total_fact = 0 + local min_fact = 1 + local size = group.size + for c = group.first,group.last do + -- determine the width/height based on the size_hint + local i = c - group.first +1 + local size_hints = cls[c].size_hints + local size_hint = size_hints["min_"..width] or size_hints["base_"..width] or 0 + size_hint = size_hint + cls[c].border_width*2 + size = math.max(size_hint, size) + + -- calculate the height + if not fact[i] then + fact[i] = min_fact + else + min_fact = math.min(fact[i],min_fact) + end + total_fact = total_fact + fact[i] + end + size = math.min(size, available) + + local coord = wa[y] + local geom = {} + local used_size = 0 + local unused = wa[height] + local stat_coord = wa[x] + --stat_coord = size + for c = group.first,group.last do + local i = c - group.first +1 + geom[width] = size + geom[height] = math.floor(unused * fact[i] / total_fact) + geom[x] = group.coord + geom[y] = coord + + coord = coord + geom[height] + unused = unused - geom[height] + total_fact = total_fact - fact[i] + used_size = math.max(used_size, geom[width]) + + -- Useless gap + if useless_gap > 0 + then + -- Top and left clients are shrinked by two steps and + -- get moved away from the border. Other clients just + -- get shrinked in one direction. + + top = false + left = false + + if geom[y] == wa[y] then + top = true + end + + if geom[x] == 0 or geom[x] == wa[x] then + left = true + end + + if top then + geom[height] = geom[height] - 2 * useless_gap + geom[y] = geom[y] + useless_gap + else + geom[height] = geom[height] - useless_gap + end + + if left then + geom[width] = geom[width] - 2 * useless_gap + geom[x] = geom[x] + useless_gap + else + geom[width] = geom[width] - useless_gap + end + end + -- End of useless gap. + + geom = cls[c]:geometry(geom) + end + + return used_size +end + +local function tile(param, orientation) + local t = tag.selected(param.screen) + orientation = orientation or "right" + + -- this handles are different orientations + local height = "height" + local width = "width" + local x = "x" + local y = "y" + if orientation == "top" or orientation == "bottom" then + height = "width" + width = "height" + x = "y" + y = "x" + end + + local cls = param.clients + local nmaster = math.min(tag.getnmaster(t), #cls) + local nother = math.max(#cls - nmaster,0) + + local mwfact = tag.getmwfact(t) + local wa = param.workarea + local ncol = tag.getncol(t) + + local data = tag.getdata(t).windowfact + + if not data then + data = {} + tag.getdata(t).windowfact = data + end + + local coord = wa[x] + local place_master = true + if orientation == "left" or orientation == "top" then + -- if we are on the left or top we need to render the other windows first + place_master = false + end + + -- this was easier than writing functions because there is a lot of data we need + for d = 1,2 do + if place_master and nmaster > 0 then + local size = wa[width] + if nother > 0 then + size = math.min(wa[width] * mwfact, wa[width] - (coord - wa[x])) + end + if not data[0] then + data[0] = {} + end + coord = coord + tile_group(cls, wa, orientation, data[0], {first=1, last=nmaster, coord = coord, size = size}) + end + + if not place_master and nother > 0 then + local last = nmaster + + -- we have to modify the work area size to consider left and top views + local wasize = wa[width] + if nmaster > 0 and (orientation == "left" or orientation == "top") then + wasize = wa[width] - wa[width]*mwfact + end + for i = 1,ncol do + -- Try to get equal width among remaining columns + local size = math.min( (wasize - (coord - wa[x])) / (ncol - i + 1) ) + local first = last + 1 + last = last + math.floor((#cls - last)/(ncol - i + 1)) + -- tile the column and update our current x coordinate + if not data[i] then + data[i] = {} + end + coord = coord + tile_group(cls, wa, orientation, data[i], { first = first, last = last, coord = coord, size = size }) + end + end + place_master = not place_master + end + +end + +uselesstile.right = {} +uselesstile.right.name = "uselesstile" +uselesstile.right.arrange = tile + +--- The main tile algo, on left. +-- @param screen The screen number to tile. +uselesstile.left = {} +uselesstile.left.name = "uselesstileleft" +function uselesstile.left.arrange(p) + return tile(p, "left") +end + +--- The main tile algo, on bottom. +-- @param screen The screen number to tile. +uselesstile.bottom = {} +uselesstile.bottom.name = "uselesstilebottom" +function uselesstile.bottom.arrange(p) + return tile(p, "bottom") +end + +--- The main tile algo, on top. +-- @param screen The screen number to tile. +uselesstile.top = {} +uselesstile.top.name = "uselesstiletop" +function uselesstile.top.arrange(p) + return tile(p, "top") +end + +uselesstile.arrange = uselesstile.right.arrange +uselesstile.name = uselesstile.right.name + +return uselesstile diff --git a/scripts/checkmail b/scripts/checkmail new file mode 100755 index 0000000..67c5206 --- /dev/null +++ b/scripts/checkmail @@ -0,0 +1,104 @@ +#!/usr/bin/python + +# Simple email checker +# +# Wrote by copycat-killer on a rainy day of august 2013 +# to be used in Lain. +# +# https://github.com/copycat-killer/lain + +import sys, getopt, locale, imaplib + +def main(argv): + usage = "usage: checkmail -s -u -p [--port ] [--encoding ] [--cut]" + server = "" + user = "" + password = "" + port = 993 + cut = False + encoding = locale.getdefaultlocale()[1] + output = "" + + try: + opts, args = getopt.getopt(argv, "hs:u:p:", ["port=", "encoding=", "cut"]) + except getopt.GetoptError: + print(usage) + sys.exit(2) + + if len(argv) == 0: + print(usage) + sys.exit() + + for opt, arg in opts: + if opt == "-h": + print(usage) + sys.exit() + elif opt == "-s": + server = arg + elif opt == "-u": + user = arg + elif opt == "-p": + password = arg + elif opt == "--port": + port = int(arg) + elif opt == "--cut": + cut = True + elif opt == "--encoding": + encoding = arg + + try: + mail = imaplib.IMAP4_SSL(server, port) + mail.login(user, password) + except imaplib.IMAP4.error: + print("CheckMailError: invalid credentials") + sys.exit(2) + + status, counts = mail.status("Inbox","(MESSAGES UNSEEN)") + + unread = int(counts[0].split()[4][:-1]) + + if status == "OK" and unread: + mail.select("Inbox", readonly = 1) + ret, messages = mail.uid("search", None, "(UNSEEN)") + + if ret == "OK": + latest_email_uid = messages[0].split()[-1] + + ret_header, new_mail_header = mail.uid("fetch", latest_email_uid, + "(BODY.PEEK[HEADER.FIELDS (SUBJECT FROM)])") + ret_text, new_mail_text = mail.uid("fetch", latest_email_uid, "(BODY[TEXT])") + + if ret_header == "OK" and ret_text == "OK": + try: # not all the servers like this, that's why we try + mail.store(latest_email_uid, "-FLAGS", "\\Seen") + except imaplib.IMAP4.error: + # this simply means the server refused to + # toggle Seen flag from mail + print("[+Seen]\n") + + nm_header = new_mail_header[0][1].decode(encoding, "replace").strip() + nm_text = new_mail_text[0][1].decode(encoding, "replace").strip() + + if unread == 1: + print(user, "has 1 new message\n") + else: + print(user, "has", unread, "new messages\n") + nm_header.replace("From:", "Latest from:", 1) + + print(nm_header, "\n") + + if cut: + if len(nm_text) <= 100: + print(nm_text) + else: + print(nm_text[0:100]) + print("[...]") + else: + print(nm_text) + else: + print("No new messages") + + mail.logout() + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/scripts/dfs b/scripts/dfs new file mode 100755 index 0000000..1730b6e --- /dev/null +++ b/scripts/dfs @@ -0,0 +1,385 @@ +#!/bin/bash +# +# Adapted from Eridan's "fs" (cleanup, enhancements and switch to bash/Linux) +# JM, 10/12/2004 +# +# Integrated into Lain in september 2013 +# https://github.com/copycat-killer/lain + +# ------------------------------------------------------------------------- +# Decoding options +# ------------------------------------------------------------------------- +USAGE="Usage: $0 [-h(elp)] | [-n(arrow mode)] | [-w(eb output)]" + +NARROW_MODE=0 +WEB_OUTPUT=0 + +while [ $# -gt 0 ]; do +case "$1" in +"-h" ) +echo $USAGE +exit +;; +"-d" ) +DEBUG=1 +;; +"-n" ) +NARROW_MODE=1 +;; +"-w" ) +WEB_OUTPUT=1 +;; +* ) +echo $USAGE +exit +;; +esac +shift +done + +# ------------------------------------------------------------------------- +# Preparations +# ------------------------------------------------------------------------- +SYSTEM=`uname -s` +PATTERN="/" + +case "$SYSTEM" in +"Linux" ) +DF_COMMAND="/usr/bin/env df -k" +SORT_COMMAND="/usr/bin/env sort -k6" +AWK_COMMAND="/usr/bin/env awk" +;; +* ) +DF_COMMAND="/bin/df -k" +SORT_COMMAND="/usr/bin/sort -k6" +AWK_COMMAND="/usr/bin/env gawk" +;; +esac + +# ------------------------------------------------------------------------- +# Grabbing "df" result +# ------------------------------------------------------------------------- +DF_RESULT=`$DF_COMMAND` +if [ ! -z $DEBUG ]; then +echo "--> DF_RESULT:" +echo "$DF_RESULT" +echo "" +fi + +# ------------------------------------------------------------------------- +# Preprocessing "df" result, to join split logical lines +# ------------------------------------------------------------------------- +PREPROCESSING_RESULT=` \ + echo "$DF_RESULT" | $AWK_COMMAND -v PATTERN=$PATTERN \ + ' + NF == 1 { + printf ("%s", $0) + } + +NF == 5 { + printf ("%s\n", $0) +} + +NF > 6 { +} + +NF == 6 { + printf ("%s\n", $0) +}' +` +if [ ! -z $DEBUG ]; then +echo "--> PREPROCESSING_RESULT:" +echo "$PREPROCESSING_RESULT" +echo "" +fi + +SORTED_FILE_SYSTEMS_INFO=`echo "$PREPROCESSING_RESULT" | $SORT_COMMAND` + +if [ ! -z $DEBUG ]; then +echo "--> SORTED_FILE_SYSTEMS_INFO:" +echo "$SORTED_FILE_SYSTEMS_INFO" +echo "" +fi + +# ------------------------------------------------------------------------- +# Computing mount point max length +# ------------------------------------------------------------------------- +MOUNT_POINT_MAX_LENGTH=` \ + echo $SORTED_FILE_SYSTEMS_INFO | $AWK_COMMAND -v PATTERN=$PATTERN \ + ' + BEGIN { + mount_point_length_max = 15; + } + +END { + printf ("%d", mount_point_length_max); +} + +$0 ~ PATTERN { +# printf ("$6 = %s\n", $6); + + mount_point = $6; +# printf ("mount_point = %s\n", mount_point); + + mount_point_length = length (mount_point); +# printf ("mount_point_length = %d\n", mount_point_length); + + if (mount_point_length > mount_point_length_max) + mount_point_length_max = mount_point_length; +}' +` +if [ ! -z $DEBUG ]; then +echo "MOUNT_POINT_MAX_LENGTH: $MOUNT_POINT_MAX_LENGTH" +fi + +# ------------------------------------------------------------------------- +# Computing mount point data max size +# ------------------------------------------------------------------------- +MOUNT_POINT_MAX_SIZE=` \ + echo "$SORTED_FILE_SYSTEMS_INFO" | $AWK_COMMAND -v PATTERN=$PATTERN \ + ' + BEGIN { + mount_point_size_max = 0; + } + +END { + printf ("%d", mount_point_size_max); +} + +$0 ~ PATTERN { +# df -k shows k_bytes! +# printf ("$2 = %s\n", $2); + + mount_point_size = $2 * 1024; +# printf ("mount_point_size = %d\n", mount_point_size); + + if (mount_point_size > mount_point_size_max) + mount_point_size_max = mount_point_size; +}' +` +if [ ! -z $DEBUG ]; then +echo "MOUNT_POINT_MAX_SIZE: $MOUNT_POINT_MAX_SIZE" +fi + +# ------------------------------------------------------------------------- +# Let's go! +# ------------------------------------------------------------------------- +echo "$SORTED_FILE_SYSTEMS_INFO" | $AWK_COMMAND -v DEBUG=$DEBUG -v PATTERN=$PATTERN -v NARROW_MODE=$NARROW_MODE -v LEFT_COLUMN=$MOUNT_POINT_MAX_LENGTH -v MAX_SIZE=$MOUNT_POINT_MAX_SIZE -v SCALE=$SCALE -v WEB_OUTPUT=$WEB_OUTPUT \ + ' +# {printf ("$0 = %s\n", $0);} +# {printf ("$1 = %s\n", $1);} +# {printf ("PATTERN = %s\n", PATTERN);} +# {printf ("LEFT_COLUMN = %s\n", LEFT_COLUMN);} + + BEGIN { + k_bytes = 1024.0; + m_bytes = 1024.0 * k_bytes; + g_bytes = 1024.0 * m_bytes; + t_bytes = 1024.0 * g_bytes; + + if (WEB_OUTPUT) + { + all_stars = "**************************************************"; + current_date = strftime ("%d-%m-%Y @ %H:%M:%S", localtime (systime ())); + free_threshold = 10; # % + + printf ("\n"); + + printf ( \ + "\n" \ + "

%s -- STATUS OF ALCOR FILE SYSTEMS


\n", + current_date ) + + printf ("\n"); + + printf ( \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" ); + } + else + { + narrow_margin = " "; +# printf ("%-*s", LEFT_COLUMN + 2, "Mount point"); + if (NARROW_MODE) + printf ("\n%s", narrow_margin); + else + printf ("%-*s", LEFT_COLUMN + 2, ""); + print " Used Free Total "; + if (! NARROW_MODE) + print ""; + } + } + +END { + if (WEB_OUTPUT) + { + printf ("
Mount point%% Usato (*)" \ + " - %% Free (*)%% UsatoSpazio liberoSpazio totale
\n"); + + printf ("\n"); + } + else + { + if (NARROW_MODE) + printf ("%s", narrow_margin); + else + printf ("%-*s", LEFT_COLUMN + 2, ""); + print "|----|----|----|----|----|----|----|----|----|----|" + if (NARROW_MODE) + printf ("\n%s", narrow_margin); + else + printf ("%-*s", LEFT_COLUMN + 2, ""); + print "0 10 20 30 40 50 60 70 80 90 100"; + print ""; + } +} + +$0 ~ PATTERN { + + if (index ($0, "members") == 0 && index ($0, "Download") == 0 && index ($0, "admin") == 0) + { +# df -k shows k_bytes! + + total_size = $2 * k_bytes; + free_size = $4 * k_bytes; + percentage_occupied = substr($5, 0, 3); + mount_point = $6; + + percentage_free = int (100 - percentage_occupied); + +# reduction_factor: 2 + stars_number = int (percentage_occupied / 2); + + if (WEB_OUTPUT) + { + posGroup = index (mount_point, "scratch"); + if (posGroup == 0) + posGroup = index (mount_point, "u1"); + if (posGroup == 0) + posGroup = index (mount_point, "u2"); + if (posGroup == 0) + posGroup = index (mount_point, "u4"); + if (posGroup == 0) + posGroup = index (mount_point, "u5"); + + printf ("\n"); + + if (posGroup > 0 || percentage_free < free_threshold) + { + if (percentage_free < free_threshold) + { + class = "titlered"; + if (posGroup == 0) + posGroup = 1; # to display the whole mount_point in this color anyway + } + else if ((index (mount_point, "scratch") != 0) || (index (mount_point, "u1") != 0) || (index (mount_point, "u2") != 0)) + { + class = "titleorange"; + posGroup = 1; # to display the whole mount_point in this color + } + else if ((index (mount_point, "u4") != 0) || (index (mount_point, "u5") != 0)) + { + class = "titlebrown"; + posGroup = 1; # to display the whole mount_point in this color + } + + printf ( \ + "%s%s\n", + substr (mount_point, 1, posGroup - 1), + class, + substr (mount_point, posGroup) ); + } + else + { + printf ("%s\n", mount_point); + } + + printf ( \ + "%s%s\n", + substr (all_stars, 1, stars_number), substr (all_stars, stars_number + 1, 49) ); + + if (percentage_free < free_threshold) + { + color_beginning = ""; + color_end = "" + } + else + { + color_beginning = ""; + color_end = "" + } + + if (total_size > 1 * t_bytes) + printf ( \ + "%s%3d%%%s%5.1f Tb%5.1f Tb\n", \ + color_beginning, percentage_occupied, color_end, free_size / t_bytes, total_size / t_bytes \ + ); + else if (total_size > 1 * g_bytes) + printf ( \ + "%s%3d%%%s%5.1f Gb%5.1f Gb\n", \ + color_beginning, percentage_occupied, color_end, free_size / g_bytes, total_size / g_bytes \ + ); + else if (total_size > 1 * m_byptes) + printf ( \ + "%s%3d%%%s%5.1f Mb%5.1f Mb\n", \ + color_beginning, percentage_occupied, color_end, free_size / m_bytes, total_size / m_bytes \ + ); + else + printf ( \ + "%s%3d%%%s%5.1f Kb%5.1f Kb\n", \ + color_beginning, percentage_occupied, color_end, free_size / k_bytes, total_size / k_bytes \ + ); + + printf ("\n"); + } + + else + { +# printf ("percentage_occupied = %d\n", percentage_occupied); +# printf ("percentage_free = %d\n", percentage_free); + + printf ("%-*s", LEFT_COLUMN + 2, mount_point); + if (NARROW_MODE) + printf ("\n%s", narrow_margin); + +# printf ("stars_number = %d\n", stars_number); + + printf ("|"); + for (i = 1; i <= stars_number; i++) + { + printf ("%s", "*"); + } + for (i = stars_number + 1; i <= 49; i++) + { + printf ("%s", "-"); + } + + + if (total_size > 1 * t_bytes) + printf ( \ + "| %3d%% %5.1f %5.1f Tb\n", \ + percentage_occupied, free_size / t_bytes, total_size / t_bytes \ + ); + else if (total_size > 1 * g_bytes) + printf ( \ + "| %3d%% %5.1f %5.1f Gb\n", \ + percentage_occupied, free_size / g_bytes, total_size / g_bytes \ + ); + else if (total_size > 1 * m_byptes) + printf ( \ + "| %3d%% %5.1f %5.1f Mb\n", \ + percentage_occupied, free_size / m_bytes, total_size / m_bytes \ + ); + else + printf ( \ + "| %3d%% %5.1f %5.1f Kb\n", \ + percentage_occupied, free_size / k_bytes, total_size / k_bytes \ + ); + } + } # if +}' diff --git a/scripts/mpdcover b/scripts/mpdcover new file mode 100755 index 0000000..38b43e9 --- /dev/null +++ b/scripts/mpdcover @@ -0,0 +1,64 @@ +#!/bin/bash +# +# A simple cover fetcher script for current playing song on mpd. +# +# Author : Wolfgang Mueller +# +# Adapted for Lain internal use. +# https://github.com/copycat-killer/lain +# +# You can use, edit and redistribute this script in any way you like. +# +# Dependencies: imagemagick. +# +# Usage: mpdcover + +# Configuration------------------------------------------------------- + +# Music directory +MUSIC_DIR=$1 + +# Song file +file=$2 + +# The default cover to use (optional) +DEFAULT_ART=$3 + +# Regex expression used for image search +IMG_REG="(front|cover|art|Folder|folder)\.(jpg|jpeg|png|gif)$" + +# Path of temporary resized cover +TEMP_PATH="/tmp/mpdcover.png" + +# Resize cover +COVER_RESIZE="100x100" + +# Thumbnail background (transparent) +COVER_BACKGROUND="none" + +#-------------------------------------------------------------------- + +# check if anything is playing at all +[[ -z $file ]] && exit 1 + +# Art directory +art="$MUSIC_DIR/${file%/*}" + +# find every file that matches IMG_REG set the first matching file to be the +# cover. +cover="$(find "$art/" -maxdepth 1 -type f | egrep -i -m1 "$IMG_REG")" + +# when no cover is found, use DEFAULT_ART as cover +cover="${cover:=$DEFAULT_ART}" + +# check if art is available +if [[ -n $cover ]]; then + if [[ -n $COVER_RESIZE ]]; then + convert "$cover" -thumbnail $COVER_RESIZE -gravity center -background "$COVER_BACKGROUND" -extent $COVER_RESIZE "$TEMP_PATH" + cover="$TEMP_PATH" + fi +else + rm $TEMP_PATH +fi + +exit 0 diff --git a/util/init.lua b/util/init.lua new file mode 100644 index 0000000..a44d52c --- /dev/null +++ b/util/init.lua @@ -0,0 +1,174 @@ + +--[[ + + Lain + Layouts, widgets and utilities for Awesome WM + + Utilities section + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local awful = require("awful") +local beautiful = require("beautiful") +local math = { sqrt = math.sqrt } +local mouse = mouse +local pairs = pairs +local string = string +local client = client +local screen = screen +local tonumber = tonumber + +local wrequire = require("lain.helpers").wrequire +local setmetatable = setmetatable + +-- Lain utilities submodule +-- lain.util +local util = { _NAME = "lain.util" } + +-- Like awful.menu.clients, but only show clients of currently selected +-- tags. +function util.menu_clients_current_tags(menu, args) + -- List of currently selected tags. + local cls_tags = awful.tag.selectedlist(mouse.screen) + + -- Final list of menu items. + local cls_t = {} + + if cls_tags == nil + then + return nil + end + + -- For each selected tag get all clients of that tag and add them to + -- the menu. A click on a menu item will raise that client. + for i = 1,#cls_tags + do + local t = cls_tags[i] + local cls = t:clients() + + for k, c in pairs(cls) + do + cls_t[#cls_t + 1] = { awful.util.escape(c.name) or "", + function () + c.minimized = false + client.focus = c + c:raise() + end, + c.icon } + end + end + + -- No clients? Then quit. + if #cls_t <= 0 + then + return nil + end + + -- menu may contain some predefined values, otherwise start with a + -- fresh menu. + if not menu + then + menu = {} + end + + -- Set the list of items and show the menu. + menu.items = cls_t + local m = awful.menu.new(menu) + m:show(args) + return m +end + +-- Magnify a client: Set it to "float" and resize it. +function util.magnify_client(c) + awful.client.floating.set(c, true) + + local mg = screen[mouse.screen].geometry + local tag = awful.tag.selected(mouse.screen) + local mwfact = awful.tag.getmwfact(tag) + local g = {} + g.width = math.sqrt(mwfact) * mg.width + g.height = math.sqrt(mwfact) * mg.height + g.x = mg.x + (mg.width - g.width) / 2 + g.y = mg.y + (mg.height - g.height) / 2 + c:geometry(g) +end + +-- Read the nice value of pid from /proc. +local function get_nice_value(pid) + local n = first_line('/proc/' .. pid .. '/stat') + if n == nil + then + -- This should not happen. But I don't want to crash, either. + return 0 + end + + -- Remove pid and tcomm. This is necessary because tcomm may contain + -- nasty stuff such as whitespace or additional parentheses... + n = string.gsub(n, '.*%) ', '') + + -- Field number 17 now is the nice value. + fields = split(n, ' ') + return tonumber(fields[17]) +end + +-- To be used as a signal handler for "focus" +-- This requires beautiful.border_focus{,_highprio,_lowprio}. +function util.niceborder_focus(c) + local n = get_nice_value(c.pid) + if n == 0 + then + c.border_color = beautiful.border_focus + elseif n < 0 + then + c.border_color = beautiful.border_focus_highprio + else + c.border_color = beautiful.border_focus_lowprio + end +end + +-- To be used as a signal handler for "unfocus" +-- This requires beautiful.border_normal{,_highprio,_lowprio}. +function util.niceborder_unfocus(c) + local n = get_nice_value(c.pid) + if n == 0 + then + c.border_color = beautiful.border_normal + elseif n < 0 + then + c.border_color = beautiful.border_normal_highprio + else + c.border_color = beautiful.border_normal_lowprio + end +end + +-- Non-empty tag browsing +-- direction in {-1, 1} <-> {previous, next} non-empty tag +function util.tag_view_nonempty(direction, sc) + local s = sc or mouse.screen or 1 + local scr = screen[s] + + for i = 1, #tags[s] do + awful.tag.viewidx(direction,s) + if #awful.client.visible(s) > 0 then + return + end + end +end + +-- Dynamically rename the current tag you have focused. +function util.prompt_rename_tag(mypromptbox) + local tag = awful.tag.selected(mouse.screen) + awful.prompt.run({prompt="Rename tag: "}, mypromptbox[mouse.screen].widget, + function(text) + if text:len() > 0 then + tag.name = text + tag:emit_signal("property::name") + end + end) +end + +return setmetatable(util, { __index = wrequire }) diff --git a/util/markup.lua b/util/markup.lua new file mode 100644 index 0000000..e7baec0 --- /dev/null +++ b/util/markup.lua @@ -0,0 +1,102 @@ + +--[[ + + Licensed under MIT License + * (c) 2013, Luke Bonham + * (c) 2009, Uli Schlachter + * (c) 2009, Majic + +--]] + +local beautiful = require("beautiful") +local tostring = tostring +local setmetatable = setmetatable + +-- Lain markup util submodule +-- lain.util.markup +local markup = {} + +local fg = {} +local bg = {} + +--[[ clean this as soon as you document it + + +-- markup + | + |`-- bold() Set bold. + |`-- italic() Set italicized text. + |`-- strike() Set strikethrough text. + |`-- underline() Set underlined text. + |`-- monospace() Set monospaced text. + |`-- big() Set bigger text. + |`-- small() Set smaller text. + |`-- font() Set the font of the text. + | + |`--+ bg + | | + | |`-- color() Set background color. + | |`-- focus() Set focus background color. + | |`-- normal() Set normal background color. + | `-- urgent() Set urgent background color. + | + |`--+ fg + | | + | |`-- color() Set foreground color. + | |`-- focus() Set focus foreground color. + | |`-- normal() Set normal foreground color. + | `-- urgent() Set urgent foreground color. + | + |`-- focus() Set both foreground and background focus colors. + |`-- normal() Set both foreground and background normal colors. + `-- urgent() Set both foreground and background urgent colors. + +]] + +-- Convenience tags. +function markup.bold(text) return '' .. tostring(text) .. '' end +function markup.italic(text) return '' .. tostring(text) .. '' end +function markup.strike(text) return '' .. tostring(text) .. '' end +function markup.underline(text) return '' .. tostring(text) .. '' end +function markup.monospace(text) return '' .. tostring(text) .. '' end +function markup.big(text) return '' .. tostring(text) .. '' end +function markup.small(text) return '' .. tostring(text) .. '' end + +-- Set the font. +function markup.font(font, text) + return '' .. tostring(text) ..'' +end + +-- Set the foreground. +function fg.color(color, text) + return '' .. tostring(text) .. '' +end + +-- Set the background. +function bg.color(color, text) + return '' .. tostring(text) .. '' +end + +-- Context: focus +function fg.focus(text) return fg.color(beautiful.fg_focus, text) end +function bg.focus(text) return bg.color(beautiful.bg_focus, text) end +function markup.focus(text) return bg.focus(fg.focus(text)) end + +-- Context: normal +function fg.normal(text) return fg.color(beautiful.fg_normal, text) end +function bg.normal(text) return bg.color(beautiful.bg_normal, text) end +function markup.normal(text) return bg.normal(fg.normal(text)) end + +-- Context: urgent +function fg.urgent(text) return fg.color(beautiful.fg_urgent, text) end +function bg.urgent(text) return bg.color(beautiful.bg_urgent, text) end +function markup.urgent(text) return bg.urgent(fg.urgent(text)) end + +markup.fg = fg +markup.bg = bg + +-- link markup.{fg,bg}(...) calls to markup.{fg,bg}.color(...) +setmetatable(markup.fg, { __call = function(_, ...) return markup.fg.color(...) end }) +setmetatable(markup.bg, { __call = function(_, ...) return markup.bg.color(...) end }) + +-- link markup(...) calls to markup.fg.color(...) +return setmetatable(markup, { __call = function(_, ...) return markup.fg.color(...) end }) diff --git a/widgets/alsa.lua b/widgets/alsa.lua new file mode 100644 index 0000000..7c26908 --- /dev/null +++ b/widgets/alsa.lua @@ -0,0 +1,103 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + * (c) 2010, Adrian C. + +--]] + +local markup = require("lain.util.markup") +local run_in_terminal = require("lain.helpers").run_in_terminal + +local awful = require("awful") +local beautiful = require("beautiful") +local wibox = require("wibox") + +local io = io +local string = { format = string.format, + match = string.match } + +local setmetatable = setmetatable + +-- ALSA volume infos +-- nain.widgets.alsa +local alsa = { + volume = 0, + mute = false, +} + +function worker(args) + local args = args or {} + local channel = args.channel or "Master" + local step = args.step or "1%" + local header = args.header or " Vol " + local header_color = args.header_color or beautiful.fg_normal or "#FFFFFF" + local color = args.color or beautiful.fg_focus or "#FFFFFF" + + local myvolume = wibox.widget.textbox() + local myvolumeupdate = function() + local f = io.popen('amixer get ' .. channel) + local mixer = f:read("*all") + f:close() + + local volume, mute = string.match(mixer, "([%d]+)%%.*%[([%l]*)") + + if volume == nil + then + alsa.volume = 0 + else + alsa.volume = volume + end + + if mute == nil or mute == 'on' + then + alsa.mute = true + mute = '' + else + alsa.mute = false + mute = 'M' + end + + local ret = markup(color, string.format("%d%s", volume, mute)) + myvolume:set_markup(markup(header_color, header) .. ret .. " ") + end + + local myvolumetimer = timer({ timeout = 5 }) + myvolumetimer:connect_signal("timeout", myvolumeupdate) + myvolumetimer:start() + myvolumetimer:emit_signal("timeout") + + myvolume:buttons(awful.util.table.join( + awful.button({}, 1, + function() + run_in_terminal('alsamixer') + end), + awful.button({}, 3, + function() + awful.util.spawn('amixer sset ' .. channel ' toggle') + end), + + awful.button({}, 4, + function() + awful.util.spawn('amixer sset ' .. channel .. ' ' .. step '+') + myvolumeupdate() + end), + + awful.button({}, 5, + function() + awful.util.spawn('amixer sset ' .. channel .. ' ' .. step '-') + myvolumeupdate() + end) + )) + + alsa.widget = myvolume + alsa.channel = channel + alsa.step = step + alsa.notify = myvolumeupdate + + return setmetatable(alsa, { __index = alsa.widget }) +end + +return setmetatable(alsa, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/alsabar.lua b/widgets/alsabar.lua new file mode 100644 index 0000000..0421f5c --- /dev/null +++ b/widgets/alsabar.lua @@ -0,0 +1,164 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2013, Rman +--]] + +local awful = require("awful") +local beautiful = require("beautiful") +local naughty = require("naughty") + +local io = io +local math = { modf = math.modf } +local string = { match = string.match, + rep = string.rep } +local tonumber = tonumber + +local setmetatable = setmetatable + +-- ALSA volume bar +-- lain.widgets.alsabar +local alsabar = +{ + channel = "Master", + step = "5%", + + colors = + { + background = beautiful.bg_normal, + mute = "#EB8F8F", + unmute = "#A4CE8A" + }, + + mixer = terminal .. " -e alsamixer", + + notifications = + { + font = beautiful.font:sub(beautiful.font:find(""), beautiful.font:find(" ")), + font_size = "11", + bar_size = 18 -- Awesome default + }, + + _current_level = 0, + _muted = false +} + +function alsabar:notify() + local preset = + { + title = "", text = "", + timeout = 3, + font = alsabar.notifications.font .. " " .. alsabar.notifications.font_size, + fg = beautiful.fg_focus + } + + if alsabar._muted then + preset.title = alsabar.channel .. " - Muted" + else + preset.title = alsabar.channel .. " - " .. alsabar._current_level * 100 .. "%" + end + + local int = math.modf(alsabar._current_level * alsabar.notifications.bar_size) + preset.text = "[" .. string.rep("|", int) + .. string.rep(" ", alsabar.notifications.bar_size - int) .. "]" + + if alsabar._notify ~= nil then + alsabar._notify = naughty.notify ({ replaces_id = alsabar._notify.id, + preset = preset }) + else + alsabar._notify = naughty.notify ({ preset = preset }) + end +end + +function worker(args) + local args = args or {} + local width = args.width or 63 + local height = args.heigth or 1 + local ticks = args.ticks or true + local ticks_size = args.ticks_size or 7 + local vertical = args.vertical or false + alsabar.channel = args.channel or alsabar.channel + alsabar.step = args.step or alsabar.step + alsabar.colors = args.colors or alsabar.colors + alsabar.notifications = args.notifications or alsabar.notifications + + alsabar.bar = awful.widget.progressbar() + alsabar.bar:set_background_color(alsabar.colors.background) + alsabar.bar:set_color(alsabar.colors.unmute) + alsabar.tooltip = awful.tooltip({ objects = { alsabar.bar } }) + alsabar.bar:set_width(width) + alsabar.bar:set_height(height) + alsabar.bar:set_ticks(ticks) + alsabar.bar:set_ticks_size(ticks_size) + + if vertical then + alsabar.bar:set_vertical(true) + end + + local myvolumebarupdate = function() + -- Get mixer control contents + local f = io.popen("amixer get " .. alsabar.channel) + local mixer = f:read("*all") + f:close() + + -- Capture mixer control state: [5%] ... ... [on] + local volu, mute = string.match(mixer, "([%d]+)%%.*%[([%l]*)") + -- Handle mixers without data + if volu == nil then + volu = 0 + mute = "off" + end + + alsabar._current_level = tonumber(volu) / 100 + alsabar.bar:set_value(alsabar._current_level) + + if mute == "" and volu == "0" or mute == "off" + then + alsabar._muted = true + alsabar.tooltip:set_text (" [Muted] ") + alsabar.bar:set_color(alsabar.colors.mute) + else + alsabar._muted = false + alsabar.tooltip:set_text(" " .. alsabar.channel .. ": " .. volu .. "% ") + alsabar.bar:set_color(alsabar.colors.unmute) + end + end + + local myvolumebartimer = timer({ timeout = 5 }) + myvolumebartimer:connect_signal("timeout", myvolumebarupdate) + myvolumebartimer:start() + myvolumebartimer:emit_signal("timeout") + + alsabar.bar:buttons (awful.util.table.join ( + awful.button ({}, 1, function() + awful.util.spawn(alsabar.mixer) + end), + awful.button ({}, 3, function() + awful.util.spawn("amixer sset " .. alsabar.channel .. " toggle") + myvolumebarupdate() + end), + awful.button ({}, 4, function() + awful.util.spawn("amixer sset " .. alsabar.channel .. " " + .. alsabar.step .. "+") + myvolumebarupdate() + end), + awful.button ({}, 5, function() + awful.util.spawn("amixer sset " .. alsabar.channel .. " " + .. alsabar.step .. "-") + myvolumebarupdate() + end) + )) + + return { widget = alsabar.bar, + channel = alsabar.channel, + step = alsabar.step, + notify = function() + myvolumebarupdate() + alsabar.notify() + end + } +end + +return setmetatable(alsabar, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/bat.lua b/widgets/bat.lua new file mode 100644 index 0000000..0461607 --- /dev/null +++ b/widgets/bat.lua @@ -0,0 +1,147 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local markup = require("lain.util.markup") +local first_line = require("lain.helpers").first_line + +local beautiful = require("beautiful") +local naughty = require("naughty") +local wibox = require("wibox") + +local math = { floor = math.floor } +local string = { format = string.format } + +local setmetatable = setmetatable + +-- Battery infos +-- lain.widgets.bat +local bat = { + status = "not present", + perc = "N/A", + time = "N/A", +} + +function worker(args) + local args = args or {} + local battery = args.battery or "BAT0" + local show_all = args.show_all or false + local refresh_timeout = args.refresh_timeout or 30 + local header = args.header or " Bat " + local header_color = args.header_color or beautiful.fg_normal or "#FFFFFF" + local color = args.color or beautiful.fg_focus or "#FFFFFF" + local shadow = args.shadow or false + + local mybattery = wibox.widget.textbox() + + local mybatteryupdate = function() + local present = first_line("/sys/class/power_supply/" + .. battery + .. "/present") + + if present == "1" + then + local rate = first_line("/sys/class/power_supply/" + .. battery .. + "/power_now") + local ratev = first_line("/sys/class/power_supply/" + .. battery .. + "/voltage_now") + local rem = first_line("/sys/class/power_supply/" + .. battery .. + "/energy_now") + local tot = first_line("/sys/class/power_supply/" + .. battery .. + "/energy_full") + bat.status = first_line("/sys/class/power_supply/" + .. battery .. + "/status") + + local time_rat = 0 + if bat.status == "Charging" + then + status = "(+)" + time_rat = (tot - rem) / rate + elseif bat.status == "Discharging" + then + status = "(-)" + time_rat = rem / rate + else + status = "(.)" + end + + local hrs = math.floor(time_rat) + local min = (time_rat - hrs) * 60 + bat.time = string.format("%02d:%02d", hrs, min) + + local amount = (rem / tot) * 100 + + if shadow + then + bat.perc = string.format("%d", amount) + else + bat.perc = string.format("%d%%", amount) + end + + local watt = string.format("%.2fW", (rate * ratev) / 1e12) + + if show_all + then + text = watt .. " " .. bat.perc .. " " .. bat.time .. " " .. bat.status + else + text = bat.perc + end + + -- notifications for low and critical states + if amount <= 5 + then + naughty.notify{ + text = "shutdown imminent", + title = "battery nearly exhausted", + position = "top_right", + timeout = 15, + fg="#000000", + bg="#ffffff", + ontop = true + } + elseif amount <= 15 + then + old_id = naughty.notify{ + text = "plug the cable", + title = "battery low", + position = "top_right", + timeout = 5, + fg="#202020", + bg="#cdcdcd", + ontop = true + } + end + else + text = "none" + end + + if shadow + then + mybattery:set_text('') + else + mybattery:set_markup(markup(header_color, header) + .. markup(color, text) .. " ") + end + end + + local mybatterytimer = timer({ timeout = refresh_timeout }) + mybatterytimer:connect_signal("timeout", mybatteryupdate) + mybatterytimer:start() + mybatterytimer:emit_signal("timeout") + + bat.widget = mybattery + + return setmetatable(bat, { __index = bat.widget }) +end + +return setmetatable(bat, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/borderbox.lua b/widgets/borderbox.lua new file mode 100644 index 0000000..150c1c3 --- /dev/null +++ b/widgets/borderbox.lua @@ -0,0 +1,61 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local wibox = require("awful.wibox") +local setmetatable = setmetatable + +-- Creates a thin wibox at a position relative to another wibox +-- lain.widgets.borderbox +local borderbox = {} + +local function worker(relbox, s, args) + local where = args.position or 'above' + local color = args.color or '#FFFFFF' + local size = args.size or 1 + local box = nil + local wiboxarg = { + position = nil, + bg = color + } + + if where == 'above' + then + wiboxarg.width = relbox.width + wiboxarg.height = size + box = wibox(wiboxarg) + box.x = relbox.x + box.y = relbox.y - size + elseif where == 'below' + then + wiboxarg.width = relbox.width + wiboxarg.height = size + box = wibox(wiboxarg) + box.x = relbox.x + box.y = relbox.y + relbox.height + elseif where == 'left' + then + wiboxarg.width = size + wiboxarg.height = relbox.height + box = wibox(wiboxarg) + box.x = relbox.x - size + box.y = relbox.y + elseif where == 'right' + then + wiboxarg.width = size + wiboxarg.height = relbox.height + box = wibox(wiboxarg) + box.x = relbox.x + relbox.width + box.y = relbox.y + end + + box.screen = s + return box +end + +return setmetatable(borderbox, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/calendar.lua b/widgets/calendar.lua new file mode 100644 index 0000000..4b6d469 --- /dev/null +++ b/widgets/calendar.lua @@ -0,0 +1,124 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + +--]] + +local icons_dir = require("lain.helpers").icons_dir + +local awful = require("awful") +local beautiful = require("beautiful") +local naughty = require("naughty") + +local io = io +local os = { date = os.date } +local tonumber = tonumber + +local setmetatable = setmetatable + +-- Calendar notification +-- lain.widgets.calendar +local calendar = {} +local notification = nil + +local function create(background, foreground) + calendar.offset = 0 + calendar.icons_dir = icons_dir .. "cal/white/" -- default + calendar.notify_icon = nil + calendar.font_size = 12 + calendar.bg = background or beautiful.bg_normal or "#FFFFFF" + calendar.fg = foreground or beautiful.fg_normal or "#FFFFFF" +end + +function calendar:hide() + if notification ~= nil then + naughty.destroy(notification) + notification = nil + end +end + +function calendar:show(t_out, inc_offset) + calendar:hide() + + local offs = inc_offset or 0 + local tims = t_out or 0 + local f, c_text + local today = tonumber(os.date('%d')) + local init_t = '/usr/bin/cal | sed -r -e "s/(^| )( ' + -- let's take font only, font size is set in calendar table + local font = beautiful.font:sub(beautiful.font:find(""), + beautiful.font:find(" ")) + + if offs == 0 + then -- current month showing, today highlighted + if today >= 10 + then + init_t = '/usr/bin/cal | sed -r -e "s/(^| )(' + end + + calendar.offset = 0 + calendar.notify_icon = calendar.icons_dir .. today .. ".png" + + -- bg and fg inverted to highlight today + f = io.popen( init_t .. today .. + ')($| )/\\1\\2<\\/span><\\/b>\\3/"' ) + + else -- no current month showing, no day to highlight + local month = tonumber(os.date('%m')) + local year = tonumber(os.date('%Y')) + + calendar.offset = calendar.offset + offs + month = month + calendar.offset + + if month > 12 then + month = month % 12 + year = year + 1 + if month <= 0 then + month = 12 + end + elseif month < 1 then + month = month + 12 + year = year - 1 + if month <= 0 then + month = 1 + end + end + + calendar.notify_icon = nil + + f = io.popen('/usr/bin/cal ' .. month .. ' ' .. year) + end + + + c_text = "" + .. f:read() .. "\n\n" + .. f:read() .. "\n" + .. f:read("*all"):gsub("\n*$", "") + .. "" + f:close() + + notification = naughty.notify({ text = c_text, + icon = calendar.notify_icon, + fg = calendar.fg, + bg = calendar.bg, + timeout = tims }) +end + +function calendar:attach(widget, background, foreground) + create(background, foreground) + widget:connect_signal("mouse::enter", function () calendar:show() end) + widget:connect_signal("mouse::leave", function () calendar:hide() end) + widget:buttons(awful.util.table.join( awful.button({ }, 1, function () + calendar:show(0, -1) end), + awful.button({ }, 3, function () + calendar:show(0, 1) end) )) +end + +return setmetatable(calendar, { __call = function(_, ...) return create(...) end }) diff --git a/widgets/cpu.lua b/widgets/cpu.lua new file mode 100644 index 0000000..cf0b76c --- /dev/null +++ b/widgets/cpu.lua @@ -0,0 +1,80 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local markup = require("lain.util.markup") +local first_line = require("lain.helpers").first_line + +local beautiful = require("beautiful") +local wibox = require("wibox") + +local math = { ceil = math.ceil } +local string = { format = string.format, + gmatch = string.gmatch } + +local setmetatable = setmetatable + +-- CPU usage +-- lain.widgets.cpu +local cpu = { + last_total = 0, + last_active = 0 +} + +function worker(args) + local args = args or {} + local refresh_timeout = args.refresh_timeout or 5 + local header = args.header or " Cpu " + local header_color = args.header or beautiful.fg_normal or "#FFFFFF" + local color = args.color or beautiful.fg_focus or "#FFFFFF" + local footer = args.footer or "%" + + local w = wibox.widget.textbox() + + local cpuusageupdate = function() + -- Read the amount of time the CPUs have spent performing + -- different kinds of work. Read the first line of /proc/stat + -- which is the sum of all CPUs. + local times = first_line("/proc/stat") + local at = 1 + local idle = 0 + local total = 0 + for field in string.gmatch(times, "[%s]+([^%s]+)") + do + -- 3 = idle, 4 = ioWait. Essentially, the CPUs have done + -- nothing during these times. + if at == 3 or at == 4 + then + idle = idle + field + end + total = total + field + at = at + 1 + end + local active = total - idle + + -- Read current data and calculate relative values. + local dactive = active - cpu.last_active + local dtotal = total - cpu.last_total + local dta = math.ceil((dactive / dtotal) * 100) + + w:set_markup(markup(header_color, header) .. markup(color, dta .. footer) .. " ") + + -- Save current data for the next run. + cpu.last_active = active + cpu.last_total = total + end + + local cpuusagetimer = timer({ timeout = refresh_timeout }) + cpuusagetimer:connect_signal("timeout", cpuusageupdate) + cpuusagetimer:start() + cpuusagetimer:emit_signal("timeout") + + return w +end + +return setmetatable(cpu, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/fs.lua b/widgets/fs.lua new file mode 100644 index 0000000..9611617 --- /dev/null +++ b/widgets/fs.lua @@ -0,0 +1,134 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010, Adrian C. + * (c) 2009, Lucas de Vries + +--]] + +local markup = require("lain.util.markup") +local helpers = require("lain.helpers") + +local beautiful = require("beautiful") +local wibox = require("wibox") +local naughty = require("naughty") + +local io = io +local string = { match = string.match } +local tonumber = tonumber + +local setmetatable = setmetatable + +-- File system disk space usage +-- lain.widgets.fs +local fs = {} +local notification = nil + +function fs:hide() + if notification ~= nil then + naughty.destroy(notification) + notification = nil + end +end + +function fs:show(t_out) + fs:hide() + + local f = io.popen(helpers.scripts_dir .. "dfs") + ws = f:read("*all"):gsub("\n*$", "") + f:close() + + notification = naughty.notify({ + text = ws, + timeout = t_out, + fg = beautiful.fg_focus, + }) +end + +-- Variable definitions +local unit = { ["mb"] = 1024, ["gb"] = 1024^2 } + +local function worker(args) + local args = args or {} + local partition = args.partition or "/" + local refresh_timeout = args.refresh_timeout or 600 + local header = args.header or " Hdd " + local header_color = args.header_color or beautiful.fg_normal or "#FFFFFF" + local color = args.color or beautiful.fg_focus or "#FFFFFF" + local footer = args.header or "" + local shadow = args.shadow or false + + local myfs = wibox.widget.textbox() + + helpers.set_map("fs", false) + + local fsupdate = function() + local fs_info = {} -- Get data from df + local f = io.popen("LC_ALL=C df -kP") + + local function set_text() + local info = fs_info['{' .. partition .. ' used_p}'] + myfs:set_markup(markup(header_color, header) + .. markup(color, info .. footer) .. " ") + end + + for line in f:lines() do -- Match: (size) (used)(avail)(use%) (mount) + local s = string.match(line, "^.-[%s]([%d]+)") + local u,a,p = string.match(line, "([%d]+)[%D]+([%d]+)[%D]+([%d]+)%%") + local m = string.match(line, "%%[%s]([%p%w]+)") + + if u and m then -- Handle 1st line and broken regexp + helpers.uformat(fs_info, m .. " used", u, unit) + fs_info["{" .. m .. " used_p}"] = tonumber(p) + end + end + + f:close() + + if shadow + then + myfs:set_text('') + else + set_text() + end + + local part = fs_info['{' .. partition .. ' used_p}'] + + if part >= 90 then + if part >= 99 and not helpers.get_map("fs") then + naughty.notify({ title = "warning", + text = partition .. " ran out!\n" + .. "make some room", + timeout = 8, + position = "top_right", + fg = beautiful.fg_urgent, + bg = beautiful.bg_urgent }) + helpers.set_map("fs", true) + end + if shadow then set_text() end + end + end + + local fstimer = timer({ timeout = refresh_timeout }) + fstimer:connect_signal("timeout", fsupdate) + fstimer:start() + fstimer:emit_signal("timeout") + + myfs:connect_signal('mouse::enter', function () fs:show(0) end) + myfs:connect_signal('mouse::leave', function () fs:hide() end) + + local fs_out = + { + widget = myfs, + show = function(t_out) + fsupdate() + fs:show(t_out) + end + } + + return setmetatable(fs_out, { __index = fs_out.widget }) +end + +return setmetatable(fs, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/imap.lua b/widgets/imap.lua new file mode 100644 index 0000000..94652b6 --- /dev/null +++ b/widgets/imap.lua @@ -0,0 +1,166 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + +--]] + +local markup = require("lain.util.markup") +local helpers = require("lain.helpers") + +local awful = require("awful") +local beautiful = require("beautiful") +local naughty = require("naughty") +local wibox = require("wibox") + +local io = io +local tonumber = tonumber +local string = string + +local setmetatable = setmetatable + +-- Mail imap check +-- lain.widgets.imap +local imap = {} + +function worker(args) + local args = args or {} + + local server = args.server + local mail = args.mail + local password = args.password + + local port = args.port or "993" + local refresh_timeout = args.refresh_timeout or 60 + local header = args.header or " Mail " + local header_color = args.header_color or beautiful.fg_normal or "#FFFFFF" + local color_newmail = args.color_newmail or beautiful.fg_focus or "#FFFFFF" + local color_nomail = args.color_nomail or beautiful.fg_normal or "#FFFFFF" + local mail_encoding = args.mail_encoding or nil + local maxlen = args.maxlen or 200 + local app = args.app or "mutt" + local is_plain = args.is_plain or false + local shadow = args.shadow or false + + helpers.set_map(mail, true) + helpers.set_map(mail .. " count", "0") + + local checkmail = helpers.scripts_dir .. "checkmail" + + if not is_plain + then + local f = io.popen(password) + password = f:read("*all"):gsub("\n", ""):gsub("\r", "") + f:close() + end + + local myimapcheck = wibox.widget.textbox() + + local myimapcheckupdate = function() + function set_nomail() + if shadow + then + myimapcheck:set_text('') + else + myimapcheck:set_markup(markup(color_nomail, " no mail ")) + end + end + + conn = io.popen("ip link show") + check_conn = conn:read("*all") + conn:close() + + if not check_conn:find("state UP") then + set_nomail() + return + end + + to_execute = checkmail .. ' -s ' .. server .. + ' -u ' .. mail .. ' -p ' .. password + .. ' --port ' .. port + + if mail_encoding ~= nil + then + to_execute = to_execute .. ' --encoding ' + .. mail_encoding + end + + f = io.popen(to_execute) + ws = f:read("*all") + f:close() + + if ws:find("No new messages") ~= nil + then + helpers.set_map(mail, true) + set_nomail() + elseif ws:find("CheckMailError: invalid credentials") ~= nil + then + helpers.set_map(mail, true) + myimapcheck.set_markup(markup(header_color, header) .. + markup(color_newmail, "invalid credentials ")) + else + mailcount = ws:match("%d") or "?" + + if helpers.get_map(mail .. " count") ~= mailcount and mailcount ~= "?" + then + helpers.set_map(mail, true) + helpers.set_map(mail .. " count", mailcount) + end + + myimapcheck:set_markup(markup(header_color, header) .. + markup(color_newmail, mailcount) .. " ") + + if helpers.get_map(mail) + then + if mailcount == "?" + -- May happens sometimes using keyrings or other password fetchers. + -- Since this should be automatically fixed in short times, we threat + -- this exception delaying the update to the next timeout. + then + set_nomail() + return + elseif tonumber(mailcount) >= 1 + then + notify_title = ws:match(mail .. " has %d new message.?") + ws = ws:gsub(notify_title, "", 1):gsub("\n", "", 2) + + ws = ws:gsub("--Content.%S+.-\n", "") + ws = ws:gsub("--%d+.-\n", "") + + if string.len(ws) > maxlen + then + ws = ws:sub(1, maxlen) .. "[...]" + end + + notify_title = notify_title:gsub("\n", "") + end + + naughty.notify({ title = notify_title, + fg = color_newmail, + text = ws, + icon = beautiful.lain_mail_notify or + helpers.icons_dir .. "mail.png", + timeout = 8, + position = "top_left" }) + + helpers.set_map(mail, false) + end + end + end + + local myimapchecktimer = timer({ timeout = refresh_timeout }) + myimapchecktimer:connect_signal("timeout", myimapcheckupdate) + myimapchecktimer:start() + myimapcheck:buttons(awful.util.table.join( + awful.button({}, 0, + + function() + helpers.run_in_terminal(app) + end) + )) + + return myimapcheck +end + +return setmetatable(imap, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/init.lua b/widgets/init.lua new file mode 100644 index 0000000..78cac9b --- /dev/null +++ b/widgets/init.lua @@ -0,0 +1,24 @@ + +--[[ + + Lain + Layouts, widgets and utilities for Awesome WM + + Widgets section + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local wrequire = require("lain.helpers").wrequire +local setmetatable = setmetatable + +local widgets = +{ + _NAME = "lain.widgets", + terminal = "xterm" -- X default +} + +return setmetatable(widgets, { __index = wrequire }) diff --git a/widgets/maildir.lua b/widgets/maildir.lua new file mode 100644 index 0000000..b5437bd --- /dev/null +++ b/widgets/maildir.lua @@ -0,0 +1,129 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local markup = require("lain.util.markup") +local run_in_terminal = require("lain.helpers").run_in_terminal + +local awful = require("awful") +local beautiful = require("beautiful") +local wibox = require("wibox") + +local io = io +local os = { getenv = os.getenv } +local pairs = pairs +local string = { len = string.len, + match = string.match } +local table = { sort = table.sort } + +local setmetatable = setmetatable + +-- Maildir check +-- lain.widgets.maildir +local maildir = {} + +function worker(args) + local args = args or {} + local mailpath = args.mailpath or os.getenv("HOME") .. "/Mail" + local ignore_boxes = args.ignore_boxes or {} + local refresh_timeout = args.refresh_timeout or 60 + local header = args.header or " Mail " + local header_color = args.header_color or beautiful.fg_normal or "#FFFFFF" + local color_newmail = args.color_newmail or beautiful.fg_focus or "#FFFFFF" + local color_nomail = args.color_nomail or beautiful.fg_normal or "#FFFFFF" + local app = args.app or "mutt" + local shadow = args.shadow or false + + local mymailcheck = wibox.widget.textbox() + local mymailcheckupdate = function() + -- Find pathes to mailboxes. + local p = io.popen("find " .. mailpath .. + " -mindepth 1 -maxdepth 1 -type d" .. + " -not -name .git") + local boxes = {} + local line = "" + repeat + line = p:read("*l") + if line ~= nil + then + -- Find all files in the "new" subdirectory. For each + -- file, print a single character (no newline). Don't + -- match files that begin with a dot. + -- Afterwards the length of this string is the number of + -- new mails in that box. + local np = io.popen("find " .. line .. + "/new -mindepth 1 -type f " .. + "-not -name '.*' -printf a") + local mailstring = np:read("*all") + + -- Strip off leading mailpath. + local box = string.match(line, mailpath .. "/*([^/]+)") + local nummails = string.len(mailstring) + if nummails > 0 + then + boxes[box] = nummails + end + end + until line == nil + + table.sort(boxes) + + local newmail = "" + local count = 0 + for box, number in pairs(boxes) + do + count = count + 1 + -- Add this box only if it's not to be ignored. + if not util.element_in_table(box, ignore_boxes) + then + if newmail == "" + then + newmail = box .. "(" .. number .. ")" + else + newmail = newmail .. ", " .. + box .. "(" .. number .. ")" + end + end + end + + if count == 1 then + -- it will be only executed once + for box, number in pairs(boxes) + do -- it's useless to show only INBOX(x) + if box == "INBOX" then newmail = number end + end + end + + if newmail == "" + then + if shadow + then + mymailcheck:set_text('') + else + myimapcheck:set_markup(markup(color_nomail, " no mail ")) + end + else + myimapcheck:set_markup(markup(header_color, header) .. + markup(color_newmail, newmail) .. " ") + end + end + + local mymailchecktimer = timer({ timeout = refresh_timeout }) + mymailchecktimer:connect_signal("timeout", mymailcheckupdate) + mymailchecktimer:start() + mymailcheck:buttons(awful.util.table.join( + awful.button({}, 0, + function() + run_in_terminal(app) + end) + )) + + return mymailcheck +end + +return setmetatable(maildir, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/mem.lua b/widgets/mem.lua new file mode 100644 index 0000000..09be00f --- /dev/null +++ b/widgets/mem.lua @@ -0,0 +1,87 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + * (c) 2010, Adrian C. + * (c) 2009, Lucas de Vries + +--]] + +local markup = require("lain.util.markup") +local run_in_terminal = require("lain.helpers").run_in_terminal + +local beautiful = require("beautiful") +local wibox = require("wibox") + +local io = { lines = io.lines } +local math = { floor = math.floor } +local string = { format = string.format, + gmatch = string.gmatch, + len = string.len } + +local setmetatable = setmetatable + +-- Memory usage (ignoring caches) +-- lain.widgets.mem +local mem = {} + +function worker(args) + local args = args or {} + local refresh_timeout = args.refresh_timeout or 10 + local show_swap = args.show_swap or false + local show_total = args.show_total or false + local header = args.header or " Mem " + local header_color = args.header or beautiful.fg_normal or "#FFFFFF" + local color = args.color or beautiful.fg_focus or "#FFFFFF" + local footer = args.footer or "MB" + + local widg = wibox.widget.textbox() + + local upd = function() + local mem = {} + for line in io.lines("/proc/meminfo") + do + for k, v in string.gmatch(line, "([%a]+):[%s]+([%d]+).+") + do + if k == "MemTotal" then mem.total = math.floor(v / 1024) + elseif k == "MemFree" then mem.free = math.floor(v / 1024) + elseif k == "Buffers" then mem.buf = math.floor(v / 1024) + elseif k == "Cached" then mem.cache = math.floor(v / 1024) + elseif k == "SwapTotal" then mem.swap = math.floor(v / 1024) + elseif k == "SwapFree" then mem.swapf = math.floor(v / 1024) + end + end + end + + used = mem.total - (mem.free + mem.buf + mem.cache) + swapused = mem.swap - mem.swapf + + if show_total + then + local fmt = "%" .. string.len(mem.total) .. ".0f/%.0f" + widg:set_markup(markup(header_color, header) .. + markup(color, string.format(fmt, used, mem.total) .. footer .. " ")) + else + widg:set_markup(markup(header_color, header) .. + markup(color, used .. footer .. " ")) + end + + if show_swap + then + widg:set_markup(widg._layout.text .. ' (' + .. string.format('%.0f '.. footer, swapused) + .. ') ') + end + end + + local tmr = timer({ timeout = refresh_timeout }) + tmr:connect_signal("timeout", upd) + tmr:start() + tmr:emit_signal("timeout") + + return widg +end + +return setmetatable(mem, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/mpd.lua b/widgets/mpd.lua new file mode 100644 index 0000000..dcb7101 --- /dev/null +++ b/widgets/mpd.lua @@ -0,0 +1,138 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010, Adrian C. + +--]] + +local markup = require("lain.util.markup") +local helpers = require("lain.helpers") + +local awful = require("awful") +local beautiful = require("beautiful") +local naughty = require("naughty") +local wibox = require("wibox") + +local io = io +local os = { execute = os.execute, + getenv = os.getenv } +local string = { gmatch = string.gmatch } + +local setmetatable = setmetatable + +-- MPD infos +-- lain.widgets.mpd +local mpd = { id = nil } + +function worker(args) + local args = args or {} + local password = args.password or "" + local host = args.host or "127.0.0.1" + local port = args.port or "6600" + local music_dir = args.music_dir or os.getenv("HOME") .. "/Music" + local refresh_timeout = args.refresh_timeout or 1 + local notify_timeout = args.notify_timeout or 5 + local color_artist = args.color_artist or beautiful.fg_normal or "#FFFFFF" + local color_song = args.color_song or beautiful.fg_focus or "#FFFFFF" + local spr = args.spr or "" + local musicplr = args.musicplr or "ncmpcpp" + local shadow = args.shadow or false + + local mpdcover = helpers.scripts_dir .. "mpdcover" + local mpdh = "telnet://"..host..":"..port + local echo = "echo 'password "..password.."\nstatus\ncurrentsong\nclose'" + + local mympd = wibox.widget.textbox() + + helpers.set_map("current mpd track", nil) + + local mympdupdate = function() + local function set_nompd() + if shadow + then + mympd:set_text('') + else + mympd:set_markup(markup(color_artist, " mpd "), markup(color_song , "off ")) + end + end + + local mpd_state = { + ["{state}"] = "N/A", + ["{file}"] = "N/A", + ["{Artist}"] = "N/A", + ["{Title}"] = "N/A", + ["{Album}"] = "N/A", + ["{Date}"] = "N/A" + } + + -- Get data from MPD server + local f = io.popen(echo .. " | curl --connect-timeout 1 -fsm 3 " .. mpdh) + + for line in f:lines() do + for k, v in string.gmatch(line, "([%w]+):[%s](.*)$") do + if k == "state" then mpd_state["{"..k.."}"] = v + elseif k == "file" then mpd_state["{"..k.."}"] = v + elseif k == "Artist" then mpd_state["{"..k.."}"] = awful.util.escape(v) + elseif k == "Title" then mpd_state["{"..k.."}"] = awful.util.escape(v) + elseif k == "Album" then mpd_state["{"..k.."}"] = awful.util.escape(v) + elseif k == "Date" then mpd_state["{"..k.."}"] = awful.util.escape(v) + end + end + end + + f:close() + + if mpd_state["{state}"] == "play" + then + if mpd_state["{Title}"] ~= helpers.get_map("current mpd track") + then + helpers.set_map("current mpd track", mpd_state["{Title}"]) + os.execute(mpdcover .. " '" .. music_dir .. "' '" + .. mpd_state["{file}"] .. "'") + mpd.id = naughty.notify({ + title = "Now playing", + text = mpd_state["{Artist}"] .. " (" .. + mpd_state["{Album}"] .. ") - " .. + mpd_state["{Date}"] .. "\n" .. + mpd_state["{Title}"], + icon = "/tmp/mpdcover.png", + fg = beautiful.fg_focus or "#FFFFFF", + bg = beautiful.bg_normal or "#000000" , + timeout = notify_timeout, + replaces_id = mpd.id + }).id + end + mympd:set_markup(markup(color_artist, " " .. mpd_state["{Artist}"]) + .. spr .. + markup(color_song, " " .. mpd_state["{Title}"] .. " ")) + elseif mpd_state["{state}"] == "pause" + then + mympd:set_markup(markup(color_artist, " mpd") + .. spr .. + markup(color_song, " paused ")) + else + helpers.set_map("current mpd track", nil) + set_nompd() + end + end + + local mympdtimer = timer({ timeout = refresh_timeout }) + mympdtimer:connect_signal("timeout", mympdupdate) + mympdtimer:start() + mympdtimer:emit_signal("timeout") + + mympd:buttons(awful.util.table.join( + awful.button({}, 0, + function() + helpers.run_in_terminal(musicplr) + end) + )) + + local mpd_out = { widget = mympd, notify = mympdupdate } + + return setmetatable(mpd_out, { __index = mpd_out.widget }) +end + +return setmetatable(mpd, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/net.lua b/widgets/net.lua new file mode 100644 index 0000000..f361146 --- /dev/null +++ b/widgets/net.lua @@ -0,0 +1,153 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local markup = require("lain.util.markup") +local helpers = require("lain.helpers") + +local awful = require("awful") +local beautiful = require("beautiful") +local wibox = require("wibox") + +local io = io +local tostring = tostring +local string = { format = string.format } + +local setmetatable = setmetatable + +-- Network infos +-- lain.widgets.net +local net = { + send = "0", + recv = "0", + last_t = {}, + last_r = {} +} + +local unit = { + ["b"] = 1, + ["kb"] = 1024, + ["mb"] = 1024^2, + ["gb"] = 1024^3 +} + +function net.get_device() + f = io.popen("ip link show | cut -d' ' -f2,9") + ws = f:read("*all") + f:close() + ws = ws:match("%w+: UP") + if ws ~= nil then + return ws:gsub(": UP", "") + else + return "" + end +end + +function worker(args) + local args = args or {} + local iface = args.iface or net.get_device() + local delta = args.refresh_timeout or 2 + local unit = args.unit or unit["kb"] + local spr = args.spr or " " + local header = args.header or iface + local header_color = args.header_color or beautiful.fg_normal or "#FFFFFF" + local color_up = args.color_up or beautiful.fg_focus or header_color + local color_down = args.color_down or beautiful.fg_focus or header_color + local app = args.app or "sudo wifi-menu" + + helpers.set_map(iface, true) + helpers.set_map("carrier", 0) + + local mynet = wibox.widget.textbox() + + local mynetupdate = function() + if iface == "" then + iface = net.get_device() + header = iface + end + + local carrier = helpers.first_line('/sys/class/net/' .. iface .. + '/carrier') or "" + local state = helpers.first_line('/sys/class/net/' .. iface .. + '/operstate') + local now_t = helpers.first_line('/sys/class/net/' .. iface .. + '/statistics/tx_bytes') + local now_r = helpers.first_line('/sys/class/net/' .. iface .. + '/statistics/rx_bytes') + local text = '' .. header .. ' ' + + if carrier ~= "1" + then + if helpers.get_map(iface) + then + n_title = iface + if n_title == "" then + n_title = "network" + header = "Net" + end + naughty.notify({ title = n_title, text = "no carrier", + timeout = 7, + position = "top_left", + icon = beautiful.lain_no_net_notify or + helpers.icons_dir .. "no_net.png", + fg = beautiful.fg_focus or "#FFFFFF" }) + + mynet:set_markup(markup(header_color, header) .. markup(color_up, " Off")) + helpers.set_map(iface, false) + end + return + else + helpers.set_map(iface, true) + end + + if state == 'down' or not now_t or not now_r + then + mynet:set_markup(' ' .. text .. '-' .. ' ') + return + end + + if net.last_t[iface] and net.last_t[iface] + then + net.send = tostring((now_t - net.last_t[iface]) / delta / unit) + net.recv = tostring((now_r - net.last_r[iface]) / delta / unit) + + text = text + .. '' + .. string.format('%.1f', net.send) + .. '' + .. spr + .. '' + .. string.format('%.1f', net.recv) + .. '' + + mynet:set_markup(' ' .. text .. ' ') + else + mynet:set_markup(' ' .. text .. '-' .. ' ') + end + + net.last_t[iface] = now_t + net.last_r[iface] = now_r + end + + local mynettimer = timer({ timeout = delta }) + mynettimer:connect_signal("timeout", mynetupdate) + mynettimer:start() + mynettimer:emit_signal("timeout") + + mynet:buttons(awful.util.table.join( + awful.button({}, 0, function() + helpers.run_in_terminal(app) + mynetupdate() + end))) + + net.widget = mynet + + return setmetatable(net, { __index = net.widget }) +end + +return setmetatable(net, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/sysload.lua b/widgets/sysload.lua new file mode 100644 index 0000000..8583ccb --- /dev/null +++ b/widgets/sysload.lua @@ -0,0 +1,70 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + * (c) 2010-2012, Peter Hofmann + +--]] + +local markup = require("lain.util.markup") +local helpers = require("lain.helpers") + +local awful = require("awful") +local beautiful = require("beautiful") +local wibox = require("wibox") + +local io = io +local string = { format = string.format, + match = string.match } + +local setmetatable = setmetatable + +-- System load +-- lain.widgets.sysload +local sysload = {} + +function worker(args) + local args = args or {} + local refresh_timeout = args.refresh_timeout or 5 + local show_all = args.show_all or false + local header = args.header or " Load " + local header_color = args.header_color or beautiful.fg_normal or "#FFFFFF" + local color = args.color or beautiful.fg_focus or header_color + local app = args.app or "top" + + local mysysload = wibox.widget.textbox() + + local mysysloadupdate = function() + local f = io.open("/proc/loadavg") + local ret = f:read("*all") + f:close() + + if show_all + then + local a, b, c = string.match(ret, "([^%s]+) ([^%s]+) ([^%s]+)") + mysysload:set_text(string.format("%s %s %s", a, b, c)) + else + local a = string.match(ret, "([^%s]+) ") + mysysload:set_text(string.format("%s", a)) + end + mysysload:set_markup(markup(header_color, header) .. + markup(color, mysysload._layout.text .. " ")) + end + + local mysysloadtimer = timer({ timeout = refresh_timeout }) + mysysloadtimer:connect_signal("timeout", mysysloadupdate) + mysysloadtimer:start() + mysysloadtimer:emit_signal("timeout") + + mysysload:buttons(awful.util.table.join( + awful.button({}, 0, + function() + helpers.run_in_terminal(app) + end) + )) + + return mysysload +end + +return setmetatable(sysload, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/temp.lua b/widgets/temp.lua new file mode 100644 index 0000000..301bc1c --- /dev/null +++ b/widgets/temp.lua @@ -0,0 +1,52 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2013, Luke Bonham + +--]] + +local markup = require("lain.util.markup") + +local beautiful = require("beautiful") +local wibox = require("wibox") + +local io = io +local tonumber = tonumber + +local setmetatable = setmetatable + +-- coretemp +-- lain.widgets.temp +local temp = {} + +function worker(args) + local args = args or {} + local refresh_timeout = args.refresh_timeout or 5 + local header = args.header or " Temp " + local header_color = args.header_color or beautiful.fg_normal or "#FFFFFF" + local color = args.color or beautiful.fg_focus or header_color + local footer = args.footer or "C " + + local mytemp = wibox.widget.textbox() + + local mytempupdate = function() + local f = io.open("/sys/class/thermal/thermal_zone0/temp") + local ret = f:read("*all") + f:close() + + ret = tonumber(ret) / 1000 + + mytemp:set_markup(markup(header_color, header) .. + markup(color, ret .. footer)) + end + + local mytemptimer = timer({ timeout = refresh_timeout }) + mytemptimer:connect_signal("timeout", mytempupdate) + mytemptimer:start() + mytemptimer:emit_signal("timeout") + + return mytemp +end + +return setmetatable(temp, { __call = function(_, ...) return worker(...) end }) diff --git a/widgets/yawn/README.rst b/widgets/yawn/README.rst new file mode 100644 index 0000000..d067db3 --- /dev/null +++ b/widgets/yawn/README.rst @@ -0,0 +1,133 @@ +========================================= +Yahoo's Awesome (WM) Weather Notification +========================================= + +---------------- +Lain integration +---------------- + +:Author: Luke Bonham +:License: WTFPLv2_ +:Version: 2.0-git + +Description +----------- + +Yawn is a module for Awesome WM providing brief and compact +weather notification via Naughty and Yahoo! Weather API. + +Originally a port of perceptive_, it became a completely new module after various improvements and style changes. + +----- +Usage +----- + +You can ``register`` Yawn to get a set of widgets, or ``attach`` it to +an existent widget. + +register +^^^^^^^^ + +Call: :: + + lain.widgets.yawn(id, args) + +Arguments: + +``id`` + An integer that defines the WOEID code of your city. + To obtain it you can google 'yahoo weather %CITYNAME%' and follow the first link. + It will look like:: + + http://weather.yahoo.com/united-states/california/san-diego-2487889/ + + and the last number in that link will be the ID you need. +``args`` + An optional table which can contain the following settings: + ``u`` + Units. Type: string. Possible values: "c" (Celsius), "f" (Fahrenheit). Default: "c". + + ``toshow`` + What to show. Type: string. Possible values: "units", "forecast", "both". + Default: "forecast". + + ``units_color`` + Color of units text. Type: string. Possible values: hexadecimal color + codes. + + ``forecast_color`` + Color of forecast text. Type: string. Possible values: hexadecimal color + codes. + + ``notification_color`` + Color of notification text. Type: string. Possible values: hexadecimal color + codes. + + ``spr`` + A separator. Type: string. You can define it when ``toshow`` is set to "both". + + ``footer`` + A footer. Type: string. You can define it when ``toshow`` is set to + "both". + +The function creates an imagebox icon and a textbox widget. Add them to you wibox like this: :: + + right_layout:add(lain.widgets.yawn.icon) + right_layout:add(lain.widgets.yawn.widget) + +Hovering over ``yawn.icon`` will display the notification. + +attach +^^^^^^ + +Call: :: + + lain.widgets.yawn.attach(widget, id, args) + +Arguments: + +``widget`` + The widget which you want to attach yawn to. +``id`` + same as in ``register`` +``args`` + same as in ``register`` + +Hovering over ``widget`` will display the notification. + +-------------- +Popup shortcut +-------------- + +You can also create a keybinding for the weather popup like this: :: + + globalkeys = awful.util.table.join( + ... + awful.key( { "Mod1" }, "w", function () lain.widgets.yawn.show(5) end ) + ... + +where ``show`` argument is an integer defining timeout seconds. + +------------ +Localization +------------ + +Default language is English, but Yawn can be localized. +Move to ``localizations`` subdirectory and fill ``localization_template``. + +Once you're done, rename it like your locale id. In my case: :: + + $ lua + Lua 5.2.2 Copyright (C) 1994-2013 Lua.org, PUC-Rio + > print(os.getenv("LANG"):match("(%S*$*)[.]")) + it_IT + > + +hence I named my file "it_IT" (Italian localization). + +**NOTE:** If you create a localization, feel free to send me! I will add it. + +.. _WTFPLv2: http://www.wtfpl.net +.. _perceptive: https://github.com/ioga/perceptive +.. _Tamsyn: http://www.fial.com/~scott/tamsyn-font/ +.. _Rainbow: https://github.com/copycat-killer/awesome-copycats> diff --git a/widgets/yawn/icons/BlowingSnow.png b/widgets/yawn/icons/BlowingSnow.png new file mode 100755 index 0000000000000000000000000000000000000000..6223f8f7d2c1be89dbb216537dbfe0e97e4edd28 GIT binary patch literal 11454 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 literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/Cloudy.png b/widgets/yawn/icons/Cloudy.png new file mode 100755 index 0000000000000000000000000000000000000000..bac1e7ebb84426f6bf1704f4c8a3c70486713cd1 GIT binary patch literal 7469 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 GBL4%n%mMoV literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/DayClear.png b/widgets/yawn/icons/DayClear.png new file mode 100755 index 0000000000000000000000000000000000000000..d9e2745cee4f88db9a855ed58d9bc3f2c34ddb12 GIT binary patch literal 6147 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 literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/DayMostlyCloudy.png b/widgets/yawn/icons/DayMostlyCloudy.png new file mode 100755 index 0000000000000000000000000000000000000000..22b929c612e7d04a2408bc71625114908f255769 GIT binary patch literal 8016 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 literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/DayPartlyCloudy.png b/widgets/yawn/icons/DayPartlyCloudy.png new file mode 100755 index 0000000000000000000000000000000000000000..8fd0a5b04d686db4e7dea16981db46d5d1f94de2 GIT binary patch literal 7478 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 literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/Foggy.png b/widgets/yawn/icons/Foggy.png new file mode 100755 index 0000000000000000000000000000000000000000..009039f8dd2433627a9499003f6c86bfad4b0c80 GIT binary patch literal 7325 zcma)hbzD?k)b1G=DTzUbP!NVj1qP7r8U$Wa1qq2^7`jtBL?k371f->r4y6@kkPhj7 zNu_gWzVqID|Nrj(t+V$zGwZA!vuCa6Svyik>j?$fJu(0QDAZJypMq`he-{Z6Sa-^z zd%*_kuBi5$1T6j}mJ#4Hsf((iJE%YL-vv?R$#?~Rc-I4E;PK4a%EKG&h6TL6z4>jO z?A^oPY|&00Xg3djjI$#WY>_SwXj>;fZ!G#h6+T;xvy(fY zpoo~DsF0w95bh3bKWG;7pIIem7auoUYa0(hNeQ9g;o)X$;pt)P?8K+#?4;!E2=;@q zMLY04vjK;%;9zTyMf|@JVBA3Cwq97UM@P{5f3rb4*kZ6w?pSxEg%6(-hR+?1e9SL^ zoQK|91pr17HD!h8uRd;@IKE?gk`~z9e2%g5wc0waz>mgGP%au+KhSlf>tUT_;D$xU zOThyX92^{!q>(JR%pWZA;(y?gavS__;jv~sZ%I@;sQ3w%RC!3xI>d3VbQ07!*S@ai zYVTI5W+}6)xd6Eady{8}`ksSZr;i@TJum(Hcjs?bV7Bi<<9unBek`*L89O=hw{ZX= z`>fGB5`h&4YV&SEwvKp=axg0{0#J&jhJ-V*6Oc=&KpEWrSA}@S;f)OEwvyQhFJ}?Z zc>3&LKL+6>1wPW5f+1%vG!fem{O!A5n!!w=yLw;5qR6kvG<@eXwZhs+<5^z?X0uJD z5;wD=|Je$A9km2{#gjE&RXT_=kY$b%jQtwG*Xb^ArXkoW+^xw0_ zEn*d|5AnCCi3G_y!usAr*olMq0WGGf;{$mv^70pl$Nmy(yCDnn653YG&SGxlZVbgM zs=-OsOl}U=)M!|1CbxWFGVR7VQO)MDh*49*r$4`-2(h?h57Cmu03VI;Vy!yO1YBY5 zjL=f;gOn|r`egdAaV#9HUilEq?=NyQ03o5hZS(EJ30gq%+Lvp|Y}h=eUoiLdx9^U;fIqvyWV**M^USNm)ioE@kj` z6@YmLNi*lSoR9Kp)2Y;~y~>seiptO_apoE1->c`7q=2%9N!ZqU0F;-0jxdPD=U2V` zovjpr4Z?$82x`CnIvC*O@8slUH<%@}{6-NyE8I`2r`KCr`WG;N7?oG_3jj>?^aufR zlx{>Gk4jTzS$XM0wYUjd)G!1{&kSY3;(+9 z<<~lFQ$Ar=U+=vT;Juyv!qm`jyMDq5$O-uXZP5l0T%k5~-zN5z85l^tmZ4t9m-J@- z`&m;{QdchrME~N@Z}ki z(9wG(UVEX4Ns`c_c-+p8VFg^T$+zy@N1AU@#`x9_;O#u?&R z`|BLh{M|_ekZ;6kyKCy`f32%+fBrBbE$y!R?tH6Cy-|J7YK@a&iXjiYPcb)#F&zD& zuw=8z>2H%3d8dGf3Ak>${tHyL2hvCn6EPPPF*hb|n|h;=WpQ-=FiB%WLuh}0zl**7 zqwL%L$)YlKx6`wW-~~}3KP33m zm>r6q|K%Ql008=i$ZvN@7)=i-*-$BGx{K$#xZjVFFbc{0@>zfZ)!NK*BP#So+R2|? z^K8zGcisi0b^H7KFNxJdV${{JF+FMX zglo1Uz~0_o-87A0M6=XxS=)Ucjj z!Rn0FXUt!Nb8z>nCBCwq`X}*+cH)oQomFc-^LjYfin^I?yj}gYUoTh&W$?2jX^*X^ zT{3x(ruH}{X`4QFFw^;V=Xuu1Q`yNtJz>kqnmV1k-hq(9hWWX z`FEo&;KB-=w@0geX`8sF}nU`oX-~aagvEnH{nwm_L6wJNr>WPR_Z= zm7w&CJPzoMI6tVYR;K+Xg58i;aG`J5Yj;FU9W*kIYRq~e{9UR0f z+s^F*+}$59hA|30SnJ8_#+W6@Po3UB7(Kw~o5WLxyCv*%u%TRn&)nG5P{Ihif@gb^WMmgut72&?LoLLByFf#Qg&4k zNyr|eA@A>;^yaA#AA&}o`Hs270zU#vSM&B8acNE1pp=c_-@7zJPThzD&Za=?!F*tY zF1}dI>Srw~Fmyw*=jf=eI_M^__Gt;jnB5p}YOhMQf$&}DKwSQW=bR24bvqPsB#qpY z9>hx{Z5n5CH=9h$#>mq9t%hubFF~JUj=``OkJ%|S&slA|Gl#6W_6YES9yUm3D?Rw* z>$E#tS!WHp5fLF0HU_&Bfc#9ecjfgPq(Ay#Z>jU~#mRQY!({c*6s%@ip+t$T5lR>S z*rXcssqB^HooCuF4vzBM{1g*8T<>`mJPNj%(w+cL>$128565S=PwZMv%}mV9%nVIU z+s@B7E6rrw*EH@+zO|`w{i?d?kjaB12|f0GH+d<@!^3I`)seegqGDV)?GmHw>gtlk zq_5%h^fE&;+HIB_6cRaNcQ5F{?OSOUc(%IUcD3zn7OLfra2rt$?J1+J61AM>+%%Gk zA0P@mc%NPOPr-;Z>k1gxM%5B$Mc?x_lH5}4Hc7$WPtVSlBLSkTuFU@^QvemEXS!s! zhXq?tVLsCeyR40*uePdjJyf!%i(5Z_{P6htGV39n>{&Qk<8F9$HmoLF1fr35TaMxj z>0eo7B1dHLU2_fjc#cSVT=ninV87>_2 z){PXH60!am@|;sws1`%7r5*XuHldF3H#u_Vx)9ShRNb!S z=G938>m_}jQ=-_3f8%IEg1RqX|Nc14b6L4ME z*Vq5?p7VTxb#tqc78TW>Z}xWn`jUU9;Ax2kL%13VYkDEIo?g8$w?;)tX(=d05@@%? zwmyQsXiiwy-)*BaXqfU*R{Z_T6l@ps_F@90;a;nMW&(o{Rv%`L# zD1rCvH2zS46|YgOZ;maE&wmofH5&@cg4QuTp2=g5O909`eP!Ftmj8O4*rpfq@$zac z`0cj7rDPI!aRFi7`$F3k&C&7?g@)svtqu$-X|ShFnRF2+uQ}BI<%znd022;H6c^d{ z9=7=A4}Ym?Y4QIv`_+B-@*uVSC1s~TnAQ@p!!wtww5OVR5&BTbihGr1gC2)JFneNO zwVgEbX|TVamL=$NzZqPXU1k;*xtAr+DU;O;n#taLhv?~P9z{|-_*eWydeGQ|Y5i&0 zSkss4>iv_|-c;n}QITB0=62(P(>KuvHq)dSyduC$KNi^_$P!%YdhV2SJ+~W(UphNG z!}YEnsOjlNO9bAK5OAoCIMo{!rKY9^ofIGg{`hQg$aAI+OjTSed4!B!0liVh?nThP^sYti)a62|sqdfmwwtTn_S{Xsr>j?ir1e&T3F=GFXk@p7wL=&2cXgDwbT9O!`j+fV*K`uca_m+<~m2e zae;UEv1S4v>hPuTW%1~KtHY7CwY7reGPN<|&6+^`=6DJ9;r zkcn6x+?@+DanXB2Uxc!g?CS0AOL`OwJ%0RbzR}t2P3*Db3_pD|s@Z^dIt4pbXgdu` zI68^Evud=x^y_NG@+4JfJmulNwp}s*g#|a0#+@c7nHXvZN02jouB>$CIpy z?&&%9dcXi+B+T*Y9`oe2`i05Ip1g#I{`}q6_hQkS$w!F948AnIxciS6i#&<0dcmCs z$?899ct7j##DhpVt+2!}r68?Pjl5HbqSM^HUw~Y1!c!9z-6W2H*W#d)R^@(l0$%JW@b+U`;#rDx0HHZ+}w{a7)-L;*O%3f%|<-%o)oMe=-^3NZ=rNmC4VW}80y0L zuJVbECK8IUd}@gww8}rx26)H4viI@%T3uK7J8IeBB*%yGk!M|wF%58}1-&bA03-aT;|{wU`R(^pA81hLqC$3DDi!%AZ>yMuNauL-y@JJ#Pk?J02)a@83=Ij zgGO6J_HwT?Zn`0$ucn+m9Nia}=RN^$_rlGl=+F9_NRXUm)>;p?9d)u??-4i*cI;0F zPXLC{#YP&-jLN}MrAicORsMAQ`B>!uIP|{@6rHC$icF`RG06$}KQWbXQ}vx8AN`vF~aoK3nYr=5A2;}6$aJJF0vUL^A7Z%I*> zWGlGT;ZD{9RFH$x9cdYsTQ{)?PJl6L+aRgBs!Aa6-ye}w8d_R`IYyu7O?c_z3{pfY zH_zcOSth7%f#ej#YT!TJ-PPUwa0FyO3umL**B<*~?PvW$5tyC(31S_j@whg;Q0Sz> z_{?`Q2koXkT`^gr1rhkijEqOJM?*?)t*our)eD~1>+n3+7%jgSt}8;GpSS7z2KIE= zv$Y%qYom3cTPjYsKp*`YVMC-aq`tgMF?g6>u_?-gvlWjWwGquY9vd602bcbOHPd_E z7GSnte-k?uG_0e;W$;d5GEev9CD477F3uUu%RG47jE?+H*Ycy}sKAx(gr2@Wjj@Jp zHr6nP@Z85i)1PX6ns`QsgkwJ0TBEI)aB6TAnjsurXA&_YO&*Gf%HsiR^3dS%HwrLi z5W8%9&9r-M8yz03_V$1N%*W#MrF?Epsns7A!E&$~L%4Fc4UJnjOd|(cse`)+4A2%3 z7F|__4EA`<%kJ;(WbQGhYfO_1?2Lsy4m>Fb6&eBZVL0) zV3y*J8>;0Bp0ux0?xV3H+Mo+$W*e%BAo-xu(H$?sg1BQKSAErTNd8q-euM_TlUL_G zEGcrO`&`FkN)TxoJdl+(c2TXy&DTnI!38tc0=Nl26UX1qCYDK&$yR)`N%i6C{?XE? zQ0qcDo(OA~Ie6BvA$3=}cyY=)z6?M5zPRIgh1T!ahXdcSX+U3#rKUWE1KAe?Ub{Dn zAz%uj(ETReHa#89V3%$m2IGv%iwKNhBk$}uY#BO~UU2;we~r?tojPJQ-e9}a?c3Bh zyN5f%k{M9I9#citM4bRe`io6m<}AVshczS}CvJUGYcmm!GvmAMH`l*PN=gK08n!K} z4L}sj*;}Iy;suRS-ak#I!sPj?BoDwFjxe~e=A+`$(gGSyWnK8OO5cl5Hxe+2yt14U z4N6xkDo-Dd`Yb@6AzV-vX!NHze@R>`f6i&5^5xf>>zRdXudn)L!#6BBgUy?68UuC( zvohHPG|a|v$Hk_9500)gb-RAO=Pru9FXd%vVPP@Qu>JLEiLkxlc%5zfXj6r@3;r|^ z#T34z4uke8z<7PKyr*10{`76V-Z6G=^<0{=&JLj3)0559seOLi+_bi@tP47@?w{Fx zVh`lZfvKnDO8?bIH#RdTN=+3kbaNXdGZA?kj)R9;K_}q5(gEkfG5;Jn5*@VM?<>QK zu5St~;X)m60ZC7oeO3sQ)mNSM^yb9UgSx{@OTCR#>ep9(y_b^;I6n$18Vj)RDsPY8 zl{Br2AYfOmi~T(D^K{9VQ7dky2x2#|7@p&3jm zJNIfpvhqS--_-Z~PtlDv7W;<(Vm_Ij=hERNrDB8zDrLJ!%Y049Wu_s9hFeR6Mb`h7 zlfS=zgVE=K4~1V}OdQ`~{iICtz&2gwFt5;-ZYxi07RuquB&7=%dA44aR;U6;X)fR= zGWyp>K&rI*^XJcAWXs-n@PWvay9LG~-emP#=PW=NEasXjxGVVcvqlAB%~3c?cXXn*Q#>~RcWvB= z_l0*#X2Hc&fC3x^Qc0(Y&ExT|E)@(GThIpjL9)=`-TFMlQ#oo}R_Ava>R`5I!o-%v z>TWg_=x{Vko_H`XG*d*QpHR0hey)ox!jM{eD$#NHUeG(()_!voAvr-FD~DztcC|dd zI+*g-6}9krSE=N!iYG`~s|$S+Gv(lx@9;Ni)sDL6CEVoan@a{@-mB3eOMyec^mHpC z&)y>;>$N5Wmi3?0Bh$&NyecQt`T=}k8lBn~p&)0OgdA%Ek~SoVJK&?&Uv|vDkgLOE z14d%~^WCLztRdG`H~UpXejA0-sPJo8UXj*aYH{s+3Mp+P1gEWe?ee4D#VTDP|gr4v@&4Z{t)bj zn722bBW$QWDKke+Z%pvqyT;|}(Z3!6-!p;pW7m`3cpbEuXG$xjdWfgJy{Ub70>y$(V%G4kbIIO=QJ1kp~F zc|5^HWb-pMk~C4xeKUqkX`cfy_t`G%zSh?+d)W6lHTT(G`4Fm*DBjJi`)c0?$i*+@ zp4{xcl{?jiXJ)3SHx=`!^TjSFbEq|#`?a=E0xIode%x$ocaT^7i<}Gig+1wAaAYUh zMcUcd-v)!O4{1B@D<-@ret8$54n&$!OldL&a|7)L(115vlhv4${bd|pTT4r8vO%Vz zv=k-BmB5ubS9l|uHNGjVeG~IhfF%dvAt$gFHeQ7PQEGQiwNy^Fpyt7H7!n!$$lKq8 z?W(~XhDw-l5VZ#xl>Pc(wwa9g&dd8Qab^vs@r{2zyp1FKx{G|f7V-n~LltokV!n(o z_X(Kte{Hi8FLK%W+d7LHDD)LH=1ZR$yf*@wp!9M!*}#{fU++OSK4kFK%7x3s28d4% zeWphr9wR1G*RRjqn4g-v0>G>>J!jv}I-P&JqO~9ocYHfqzoRbpv$da$JpNT{s_EQ6 zm8o;h8b5m?LZ+;BUm_kwuzPM1vAQtJyba}CxZ9-xX~=xB2h4^3$P4>Wg~hE@7vy0M z?1&wr*~Za?|JBWjKUyhmggQQds%#;qe$c>7NL$ z*Iv^W2Z2lyqPXdw@lP06P^NFo=(mGO8D@6GZ>&gJzziO+!WB|(%GJWFu%j~MlfVhR zi$0KyHCdn6SRy=PAh8gXm8AqzyFzy?OLPpiyVcnSePAW24QI>BGndZm*~GxC{}SQW z2(f&d2;g${q&g6y&&^I2oiRLf$W|F#)Avi0zK$dy17McnXYKv&^k!b0Jcs_s*K}>a zF%M5j9uL4J=u>-Kq>fK{w~TBW)%W0p+#Mv|bUR5tcxoru|JTXU|9Z4^Dfh(4Y|gz) SkrOR8@PYw;RAclk>L$~Na_AU$NjaFmAjXzt0m;+<;7#;Xy;~b>TJp5gaCj>ds^C^?(VKOW*+V~PLABFPL8rp4&XWFHm3I6udTuK zW$bP2EE)cP2Ij6{a2roc@I(hN`or5iv9~d|babQc@&aDY$7GOD#8Ns>b#JU zwtnIl$xM>ck3!(m-k;$@?=_I{ZD1@c1%WL%9%F(C{dTV5`^KmSJc~ zkOzaf(S=^@MXhi=j)~hL#tIiB&4IQBQrGC{eg$Xgy9;p*6hFdhW+VPz8nQQRIfU!Nr)66Xkch)ohnc2PQ`f!N19R6E{vIp@jGTNOT~0xMLjvLr~5lf=RajH6LZ}R zETK;0ILy8O&`b#EXDgXHe;FAW!ymmas@s|Vs&8RpVuGEex>+=38xz7{J@nsyN7z_ccTEA; zXT!U@yBTR|X+jP5vx!+bImVbudHPi$EWuN;Ibo|&BQ7R{UmBWFPIX`4exwVOD_dAtyn(~v3iR|j4dSD%KQc8nHG9c<41Trxo^I3HO@C=d z5(umO9xMEMB@w30jG(pYOpBQ+ZoSVzg_>oha&0~KlAX&AT zZ}Fup!N#9I*%GcB1C4xEKYqOx%;3yTzwqv2MXnHqdnKS%z#*tG>PlLHWj_TrfWUM7 z`xB!Q8OlmcO*Ne=)0Fi)-4>WLd3v#INW2xFlao_#J)YM%U18{lS%zth=`PQ}3PU71 zS2V@ju3D!uB|_&Bgxf!$=y5gT>-QI;Z7QFhGVa#T82R-N4|8wqjccPTCO*ce6TcWt zQj=`%wXN5Z79h?I`2>|B8<4JqIkWO&=F(-cQ0@d{zFfvd9z&9_-bl(f!iU0BjeJXg ze$lNZv#ZyuMC)9%d{}!mW`)?y9I*KKQ$78f$ULa=k0JFw3}>}4L2Zqh0hUf=qJ%HR z$m;S^JXZ;%am2<>Pr`en$j>RnJa>2UIH;&F&P8Pc1Miv{Wy9ONSHHhQDzSoCFyVd( zw!6cIi8n|NJ+)XP7%Dc-m7fqNm4>L9gm6s68-y&K*UVctZ4P(sYOC)yZGNfAfv>JVWOaOP>+He*G$D zdztRO_ESwt0$<>QSq)N1v2d2;;TiGjc~3}-gp7O(Lu~qF*Us8culL8@H~3#39cz`7 z;!CVo6rq-nMz+g_qz9Kg#j(psvc^!?gyF0u<@Brl@2;(_xt1^zjX-#RviWUZ?L0H@V?jkn_wsae!?v2Tsn&^fb9EiDu(G04R8*Wb z7tC;BCO#Kcw;+mx|Ch`EeE)+6+!FfufljLvT_^XJ<*G5ZZ+(1xXpFX#`g7xp%w%Jfro2apPHOZqV?uY z^5^Au@80>89J_*R?DRi?fMCOJe7#Y>vZ-a$3?8@5ry2)do@9!+{b_D(MHejC>^g1> z9LtqC_S{=Y!x4BzH0saPj@&jW@OxNB?c=UJD{{$?y>WSoM`wqf5qQvvhK5Fz-TrovDR$+m!Xn~(Q*OfQB7SBN{~ z&JT>|Mn-gY8%ck4xvJw725_Lca;YyPribd+P0G zM*MtzuUu)g?Y?wd@LpbDU(YDd%#fxFIW0{M4ec2C`ugIHy$}{@v6M>W(H z41q@QSDzHVxFX4?<>*Q(C@46quCB&!o?vA8V$^&ra>zQMxQahq<4{YB`d= z>wPgqP?b@u=T{U$dZ-{L=a2L|o@{aI{$esF+svl>A^J@V<9c^r$PR<7DK2EG4* zOb!egP322T2}fjXY#=Hmm%Z5wCUUP&fbufn(1uGm@aBR%Up__;TPdFaHCpGx<2pAz zxUNSHrVxP!OMK>;1)=e?Mkju%7*4G(6w}q_{olZ~T9Vx&cL%~z$z3#yj&N{s(Gblq zx5unH88gJhe!_&wxQU?i-Fk1~Ee5ndD-_toaSQwJ@!XX+yXf%@)=Lgo8^`}@n3i*MC# zsvtz~(2#P&to;OdchBDb{?Wb3(w__65%~1hT+Ed`FY?E|RkOuK&@wk^4$K%vG`cjO z{(U)SMKd_a8L|2VN&kF|*Y5<%%>i*I3l=)Pc*?eYhj&g<*yqS1Wy-dGV{=pcWjepj zyez&%-4k~9;$N!LgJ#vA4zEOFf7V%#Gg0iOwSCoZ#M=;7jaW9X*BknrE@J^=Jq=)W zl#PweWl26Bt*Cp2LL6Pdc8ojnbANyT%HKn&Z)IX)Ui2ZuA0dpH-%=imVDMh2wV*L^ zaz=G)LN>SS6(8^*cTkT7?SDOG6czOq?{~RbB%p^@#ueyaUfdjy2K_fQREvZ-{Z(z= zco?q3mEw9tOVj_k54qn(@F++zkp@To)hi@010ld}5>r#jg={BF0==TVWMu$-YlS+| zN+|6wZXiW>mTg@-27+S-QKc0m;wl!X0*NL+==jg@>-k2fdlKoz6LD-LBqY7P#a6Fz zujPRAoXg|Q`x&d+M@?5fABZDDLPJ|^>hrATR76g+gT!RR&V6wdXjJ#eb7R?#3Usp z8J|5nY~25Lz4zF}%<=B#Qemdj`2OS?eJ`G_IenChMs=^XQR_HijYtvdiVv##Lu70l|%mWLn++oCx3sU8wK5-mIK@{9?cMP z(pFW)v*n}X_--h@K&{S|ur5vM@%?pkypt0S9^Tm;nD$#oN5|ov#aCF#$;lfIzp6}c zYb=LUrH9=g?O}>w31#>&pF5JN5G7~R+?JAr86z>93Pn`*3R8e2M5mg zU{*YnJEwcN3)$CLAdkcke(;U9J}c%WMsE7bg|)_yo#KLm9u{`?$`E&I9|bU!4<97?-j2}Bw)q@;pHu*>(T~8Rz1jqn@;ulLfs9Z$R!-sin-w1) zpEt8ZYlnAtu^zWxuJ!fG7L=2qU-N}hz9(B5+1c6mo70HYloTW1)pz7pw37Z8Y?Du6 z*+}~vrq1e%j|wgn?uzCcmjlI$HOsXWV}hMkRY&$83I!1v*>u~>3_%wFcy-s2k&%IO zO)l$+q?}p?5EimZmT3L()_DF~KOdjoiR@HM-ETmIjDu2R^)5WT;osP2+0e~L;v7H@ z+`E~Xt+`oRT3SII=$jG++ zYKK&*JcgnLPRrl!t+`mDqN3aYgjU_H$4N=zj)Y^;;U>vPQ;f5Si1_pkX9xvR0S%}P zK_Hf>i0J4fO%_``=s`IzPVMsHqQ{`~nEfZI*U`#@FW}GjKnK7~J<3L{v#$ zym0)?q8NM4qWH=iFNDEcPF|kP{g5cf?uE}d1-Ne%l4z4D^C0fj`Ha2nf!{ky575u2D|Ae-!9C` zSrj#6f(=wuR5&0Ewxq!-!14OEzUWl*3k(0kCR8Ut5em6Tv74z_l*38N%F0q+>pO1i zx@!wx7yh@_8?|f#-qn8&Ka!61jLE3NK-d7ZD%{^4f~|1ncj8%1}NuX^^muCDG! zV5HETODuJ;g(GFUOxXkec^b8OA7=EesN>_~OUV$_ZF#x4JVOMa9E&^E>2O)1f$2p&u?z02L^wmC8npcs2%VnXYUrsl_AtO)Z^U{8GU9LzmEI5=osWRP;IgsBJX+M3Ja@ zCO7X#hS2`l#$b|hqGj67az_v+G!{)K(ZW1>JlEHEDZ{N*UhfXr2{{7e&g4Zk4?@htCaTwL58&@dmN+(AH?1e}%(vV~pN>HzVs1KNI{L7Oc6#`qm@tPFvtBm(U^ z99sCxT0sr<7!U*ugR&okgCcaaw2P|6KT-M7Ch|D8LAFv=%X$m`t+Z1`F-C`@8F*zkmPoNdg^y2xuh5aQb%#j4hDn<{(_6 zPQa$j?3`vl2-weA1D&?@k>aCv!0wcI%+2lK3@Ac#M1%r@>)s<;oXnuz*JFr1$Nz|v z!%N1k1{J>M(vu*L4#j`fDtFi%$?9;XNhJiJ&mEbk5Zc&@2UI(HPSYa}j;4ArA~wYE zAk@nMhOI(S2*XyL-dBC|)x)gdbM%R7Si z&K?+mw-*<`#m?TW$DJd>y12MNX>M*Nm3#35_3m~*h@LBQ4Y?J0@D>pg67qUf;@n^x zB(hSMj}Vb-Z$i>1bafsqR`T~_XZKUmr+uS)fGXVh0i7A{?d#iMvm1UFr2gE;=koNy zFERk6JW#zTBw_G#q(?-ZW}!D@8ng_{JQE?uh2ER@McbSMO9TJp?99=UpDM$;UXS>W z4yb2Ks1~{nhM;5>fQ7KF*9+Au7qI513gw7I(;$h7vDu$Q zXHk6ogq!>J7HAT5G9H5q51`j6h4*7)-|DTS<>EksJWNb^Jk)Yy6u}F>q-7UIfy~{B zkd^Syw6j&3EpnhwYm6Z)RF~;k!C2_`nv{|)| zV<1mMB%?Li=KiynnO{KsSR^;{UVUd2iiYcZ85r|aH>D7m2w(j!f2Ve!Z7z!2w0ex& zv+CU^+>10%vph~duTBa5IgO(Cp7|Rx<=`Z!RI!HNZ*Fc7HTv)Mm=y~K2U%QU%*SGq zKo+%Ak&w98>(*Ljp~y59XDE`BklfUOFgsuJ+iwq8`68y9A1U~K;5*fajrzy`@qPT| zq{Y|~B<)AvJc@YDGG>$0smB6qw#0cUFy>j!u#@+7g)lTUbn(^e*Eu-&`1G>_(G1Hi z9y|RHIPnwwCcaX|lOhfA-1zccupK$_`G;2SI)*YJW@bf1L@4!vO^}k3;z^p>%i27S z6w^fGl2ybs7O+)9Wr}*WRq*d*HMtI1NxqZ)#5&CDdp!@1Gp#?R=|@FI^8DG@$h=;@ze{Zf7LGA6^05#V%!(3TX*ZQR$CV5|Qj$x|tqCDCr} zE)qaj0c z5^L>hv@|cw?jt_mDl*J&-$eV*kZuDa1oJ_TGNOfkX8%tf5UGS*ny)2znfi*_;XmY_ z%k`v+CS`EfHW)V|A^3rhloCb$B>P2MD9J5X_vrWtNH7T!BBG;6uAxqs%o!kd^pFF( zQ18U2oCDWmgq9|)`Ttq!h6Bfw!$kSXtH)!3)5pqA8JfAw%S(q`$M1lTU)VhP1w@Y859Y zj>tR((dJ-pze`=iCC2m-7>H45h@msT!%bR4>GGX_jmxShCnqY;11wXMLuljX4CEHj zOr9HlV_xZjNOp4AU?hEWA*k5lw*2WS$#OU;+483eOi9R_BR&6+Gbsr^XPt0D&UqY1 zz|!_nCg~-EOm==%=Rf1)tEKQGS05=o8wQ4IlAOkyIzootocE3_4+?M*!7A~%7vGEJZJ$4f~-hOcqhv@rh`U}=^aW)%z&n$^QT7u z4{EX;N|9LK+gqBCC6}@oh>r#AT;YRff`faaE3oBS07p?{osW2;5lZz4!B>z}W>96) z#SkM;964iIJ4=wypr~uN%)hZ|Zcq=i4rjoJZa^KNCw-C7vXa=8D(_!IY;%=NGFw35 zMdbss=>QiKGc9bLh=yh%I~ch<1_{Cd;vz08kK%d5u&VF`Y0f@n{{~Pb$>v`-1;T=cGC7(7LL6+DSK@sxRg8w|;LMh+M50Kq@Z09)=P#c6 z2C&N;iBcYPEi1aQqCy08J{yE;yHfuAj5IplhfwGF-l7--1A|GyfA0$kW0T=D(7~wW zwS6W7#$;v0FMC0n9KAw)AYHuWrN%MTroURZmK!6xpl*MMSO!1|icFyNyMCjkWrVt! zpv=cYyA%e2v;?QkofIg`})l`OLEkj}h^um4pto?6`d@iz~VPN5TiIqfX(~5)v$2lWPV3S5WbdzHed<_=e29Zc$n-%HJ$2Csd#kapRiBTWEpnW z$`!CkD}l;?TXI4;SioQEp{-7iiFm({F-s@r$t5KwcFmoM3HT9ceW=(1<<2^0zDq-J zbzj|2m(k~vDO4t#KVF9{iaaLT$(V(MCVPC{%>+S&R}W_a{InE|TRpk4?Or?h>Z3vW zE-r_GdWPgrjBZFW4b{nhfleSFrHapOew?II@d^GEhvwfBt~nPp35CBg_H9 zecJA_-e(8gKjS8#>Lg?3<^`A4{*o&b=t7L zO0}$mn9DcEqwcnV?8^*MMpx` zzlmDX_n8x*=L0$Dda=R5Oda_=S2$rnJ|RU4KuxYpX!`ZV1&-y4e5B+D*SO~bfT23z zVPU1eTykIQ`7nx*_>Vzc+#oe8%TQBGOP);w4yX@lW!uqzsnYbT-iGmsi4&_}Oa4RI zluQDPrIVhRScBr1&AiurjaH|}-3V5y0I$Kz5p8!*-5_m!*dYz3mYftKwdvoTf4lLeGHD424v?y5^!eX& ztLxJsHlFg&4T`(X;m{#m3m)}kazuutrfMT~zb#(<{tAYNc>uZ&A5{Qj8V5@wDUhZ@ z2i#~Lan}tv<8R8IizA@Z`zT}jK7ZA#7e#`|yJnkYA7kVkXt>{%XyohF+x)b8*6(r! zYI*3bAKFG6DuRzM$(9g80O#1q2}B>j68%QUC15Q*L1D#(+vqzzQYRN8U>6j*vL+TN zBRc|JW?IlM6mmFGPJGkniE@&9OQIFIwmVN`e ze>cF3ID#FWp885Cnda*r@rwhW>-DQwMkFuB3IBlN^dWeT@`F_z2E@R^#>TTDJc2w$ zPC!6_yglEZc&ou)V#o1m*LyBXWNl%v9SNfRha(>f1iW$Zh{_v}kg2G*qzR*s)(Ai^ zCnwqrAA+c2*l28d-PGrG@;;(Nft?80aC>`u#OlAN6gb>6Hibz|)h4X~jGZV1*?G-|PnB8DWsB8FhQa zpJF$t6Q5czTGSk4#4Kgn2oJgd2QKQ4&d%rx*1E==nXZ2_-W98)O$?hnb!Xi%+o0vA znEVKHwy+K(horra2H7*doz2+=$P8jYpDF-NFBJw&@C#sE<4pbn{!IX|>w`#>Td1w~ zvGMV})RdI2cqJv5P?Toi^|*(JhcEpD0_e>NREL$cpRR)J5Pwmm@@^h8eA~59%?DaB zGczmVwP$J@J=~;1F&M^R3aWiSDqu4qHxFDzwa1*CL1+l(mCV7&zX7&8D*JIJM=FMzB1%fbDfXdM#AP8kl(91|rXhhw&ycw9{Z1+D; z{RC}mh9^%d6?6n~e(O&A0hdcYmS$GIa;AT5yOuqhpK8+5h9c@9QZWOt^cgvg=-xzH z5oaqTg^=Q2vxJ9^2DTqQ!KUh2FSS$KvpH*iyd+CX&}K7(RutM)*F0`1j}9VATyj(qTOAc8yR=fwyhb@l#1Qk36YNa|G4O>YPwX$m1ngXnSV z-4{P-@}A_Bd5A(#NiQAf5v%V8Pu-yzaUy@T!8K71fLLI76JU za3r@6Vwq^#)20Xk&5#SZ*!6`0Gy+MkS!Z#7Wnw2RDW98*L&IqK_2unONSN3ef*u?{ z>uMcWj_Qce2Vv>sEE5SqH^3RE20k>aQ3O!KD$2_Gxb|XUzlVlEpc<*MWdr7E6>vN( zR37}zOCwYfs;>{m@M$9yCI(37{%>w-865P(Ovk7VTKORF@BZaws>l-P8D4V9sxW;B zv)YcAf%6iAjvySsOH{6XZnbu=o(!ObmkvLAHsCporB2N#EcVgW|z@$oS|wXpLF zPL}FSk8M3!;Pt;oWzd$aB;HyzwM(p~b&v$n@efo;+=oLCNk9#L0FwrFc6b|{y!eQ; zUcM~Xeu}1T56xM-K7D?Fcbf!tN;AhABt;s||M;kKIV#fzI(=TDUD7Yd`xXr
  • S236D+`KjrhMq5Ij+iT7#d>q&))}ssJ4g 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 SkrO>h^&xJMv@VQGJePR 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%0A%@Z-MgdAQ8>#OcqF{V6qfz^dJoC^ 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 Q|Gz*qRdrO}DA`2)AC2#6RsaA1 literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/LightSnowShowers.png b/widgets/yawn/icons/LightSnowShowers.png new file mode 100755 index 0000000000000000000000000000000000000000..d797ee948695d7ce46053fe7b54433b610b3097c GIT binary patch literal 8779 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 literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/MixedRainAndHail.png b/widgets/yawn/icons/MixedRainAndHail.png new file mode 100755 index 0000000000000000000000000000000000000000..758b01e48eaa6ad27d8b0d692e285a92e90a4ee1 GIT binary patch literal 9060 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 F{s-1-Kk5Jg literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/MixedRainAndSleet.png b/widgets/yawn/icons/MixedRainAndSleet.png new file mode 100755 index 0000000000000000000000000000000000000000..7f0d252565ba1e256fc4fb281eab2ba2fbd1be12 GIT binary patch literal 10978 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 IvXbTf?`dGNzKt4V`T=vcm9#$5vHe4?5 zc3B5vl;9+ye;B~@0pM%Z|91^9cPkqR?&;|&%FXTc zzq35yHtsgoT-G+;_7={b7Ve&0RxVE5;GNsm(Zb%D)5pf*-zl8-RxZvSoV?G3cm?@* zMfe5@Nk+hBt^QqB*2UG&-QEuF3CYURNqc&_+go~h+PgS&s=GMLx;TORSlL@Ra_Ydr z@TDE?9c<|S{|Kzy!Nu*pZNMF!z}5f#8g55>D;sAI8xL+vKTc;WP7e!iel8yFWfaQa z5JU$l%Sr3{X79i9GbC1=4`~bFLbFA~|IM>@0`)-!%>&4I*j4Y{Vig5>2drXwrC$gv zZ@0EaX{ntsmbV!4e!#c#-XMv06vLmOW}@sTk~fh2ntb!&jYZu3y{msoRp~AT*R#Ca z+|RiO89Sv_RTq^PWld!nM@O#k-a@Q%X`zoec%)9)N0EiGFdDaSG@i&x--d^+C_RFF zeT7$yoUR^lH>IiG#4ur9TvsT*qJ|2kK6#3`Q$?I;Jg@g(!Ohv z-V!R*lLTEf;)9CfMiuIDP#j@ToT3(?tAvEaNL3%ku~q?QVIuO5R(#$@p=tQklV4HG z=!j7@Un&^%v8X7_KI;BbJbw;*Rqnr^avf5>*ewrZ}mvVfUEK`T-dZ#gY_Y`j<(KeJRB9yg{ERJREI59ptD3CZA zTOF5N=N5v>})H<1Mc`hB_X3s5Z7SE%x014Blmz z>&GN2EG+zOWaLGmE}J+p<~!pTFJ9OyD-Tr`6cl8obG>TyyF6MeNM_d14`n!h@lDH| zrEZ^v2MaO#f|yQTfOWw2l6F)Hk4jcx2+NiJTDdT{Xk&lfgeiH*%zvkN6axceB1hEA zzh`W$x-BcqIKW_`aAwaXTO!DRWx=JZ<8bziRk3UQ_TR=rj4KYFu&*4X@C5qM&#N&~ zReelF5(~#XJhG}hkn?^rwz#fOwC8m=4%K>cQqreg&(`rz5@AsJ)N3vd4zWg;mChyA zbgny+1A@ogCDu}U=%WyBBW#TyqpLj9T9p^t9o(R&Wo*_Kt}(o3-j3+e1 zfY=~S916att8Is!#tU5`56Wz*Wm9TSu?nZNA9$_q$q5PF16DeNgrG=MXeZlta8)s> zTLlX~alqK~_DF(~6NZl_CEum#N~VE&5m}7_O@(0)h0atOU&OVw1q_nH+lHI{|L$J& zM&Owl=V6i;+C>`9ydhYJ-|0OZ1 zPP3(c_ZABYVSELLZ`V{*a4fBMzfA{6vdoXr2)Ys&v9D&dK&|o<`!}jopdnof)^t~#a>^X~pC+uH%P3orNYHY9Wwm-$t>IoplvpTLfC_wbNBIXQU`9|{*DdH3$! z;Pu%~U5}&S3{2{=0QtLSA*ota*S7``*CuCJXc-!|7AaB=W1S3H30iy=p-5MAW!{NDY(!mBWG13x>%@DBH{uV>QKY)&oK3K=W?xMET z-{1ea$#E_zEi=;}?Hhrzm;mPxim=gpR%%B?d%GCg#050j$BY`70)12gK_3$tNj^y! z>&S_Mj_%VIcy;1(b#>K%2&>d%OMN|@#yR#PSIqBCQmZiwupyqTU%R`!%%=L^%f}=)s1dEjd+>Q!D5EXO=cfT&qYxQ11BNt z5cVkfo73ZCH^v@jk}bukY9y$sriLfa{^zF`N$sbyVR4V2`^Qi|D|3*M>G_sM{+GB$ zT3R{??3;&+o5L>dr?+vGc|C~&kBUuH&~04@P@W1UkS_Ocoj*S7tYndul?|d1oYBBs zYW0eSLCtthwhHky9Rl3khu%g;^M0Ql3F`uM zA85W=XbG)}@$l62zQw$f`18)@C5ZbI!eZ^Hh`0$&0U8r`Mt;f{;r(QD(Dz3yaQ|>( ziozGiY%nPjeEg4D;sM@W5<%B}lJ}Pz8Z{g@nq1-`hOXP=`G2`P&L(l2$>J0|NWu`r z2c#+^T$6Eq)F`@ytNvjr-=d-e6GtCzRvwnS%({Z3;>FJmUE(%UI47USL$4hiR0|3V zKO1tS8Nol~rm1K@$tip%&?WWV9SMQP^p#BKqXI3>3R#QalP6D17n)o&c2>F`1aj2L z`gqh9B3)3d`7&BRePX)!RjTt_Dpx(-Vyo!PC(u?)m<*xfqxC+^oVtKS_~+HRmZbe; zQO(6l$V12Z{(@qYd7hZNCR?f($PR4~&RslFPUHQXMqEN40xkRusqov#wjjBjuHd`t zMA-=3oI$tj-3#j-$(ZfQVpVGBmWooBGxLiY;oi0`f9rv?QV^Ngqrk@~QoWRqx>Z+U z2Lu_mw<3mj6ciL8!6!q^cF2ol={pbN^+uJ|MwQcHVPW6U@o4_cw0PL%ArO!mEiJ8C zhT12dtdR!Wx|V5czNw6n&H2{W)-o(Iu51kr4M`nc-J%Gzb*#FKzjPghMsk5QLHHk_ zu}y*(2VxhC9O${x>0OV`KA0{j-N34hjT~oo?3F*48P;)7;t4)!K;I z)@7vKtMjoy8hO7b|HUucCIw7|JLWj{5v{Vza=tIt@v)l%8n*Ck2?-HQ<)3kI5{7@bf_je~yj%LYekJ&3pEY?X z>|X6X`FnG-XmrcHpH&xmA@^5Y8-wv?b1AG7f{T*%4l`Wte`ddEfh>8GUs3S`J8sQl z9f<_(fPgY@Ne70YgnohL&Rb}3n2}uhyaku#ciWq;WY7@*tBVQ!ntx9~sf%2NS+V_t z>;SD6`YL`tYjun#8oaD;!W|qOj4XNcr!H!o=fgzm46bsSuckEd9o4hfx~nx7y`P#W z+ZyxrRu2zp9r!YWCA@ZZStB_^BIe|^x5rI;dU|eY1QeT62gsmRCbbVd6x2;WyNjWT zNA&?PtHHQf045ZRuPf%m_1{KBD4M@`F_Oq{H=6QhgU|QoDFN$EKh4vU(o$YAxU)0+ z3$7oR#~TmW>ZGOL5bgOeJSfoA)O4amtI+6;c$2U>VL6yf7qlFpvzr-8mQvo zYAnS0gW9Le2t?L`3ekI&Vt)=n!D%99QOsXxuHPQY%ge0@iHL$gE^KWeOm56i?LNIN zWl)SWLI0kOs8M)qHshS2h$$t;4>v<&CVx|cg1?Ark^A!eWSHA!?u(V8uauNjmg?nm z*%vQjVbmU|sIyB_Mgvhb1ydigvv0kLn#7dwevgHkA;~sq%1;l%vWF z2YZG#Tgb(fN!U4p*~kOIiw6;)DF!V`2lA|#25fAH4StGAg zsd@(M3i37ju(TLw#2GfNx(tpW;r((v!s8ETu;vv+R}7%u1M z=Z)p%%9!?*Y&L&Z_gtTmVh-hfI8ejsk7}*`)M~Gb;hga&|U0=iggfX7d1!`)_Y=G2w>9p$7^~ z4T2w~k?_f(uZgguk&ntQ4^lsem2~2NRod!TnTS}fetpB;i(LPt%A}>18!X-kTwog6 z0`_j7&%lz2MM-DBXhl=0)O=FCXgkd#v|O?FI;t(%9f&Uwgvcp5-AYMs&Yw%N231nVw!24ZJ*xz#`?CRWU4k5ik@+!CrLe+VkO&R}yBh zWT2V!WP|UW??Q?3c+@$D=L!8I6OvVo;-VJ`6Ri++F{V*`JIKP1ZAUVnu?h?O`Z`q0 zmQ+-ehK$zv`1F=oi|Uigi7t6@R}7q zg*tUUM8fAgDXAVG71>~sD zEH5o}Y}4M_{>cJNI}W#aRFi zWPZHfFHT5EI2jZaWY_t3+F0@}1G3?xEnI#Ny3u|qvh7*>q}<&5GKE46WQ19_R_%CW z1s77cId6+HLqUZvS!O{&;?`mDt!@g~DSb zh>4Z8RMy_UbnSCqa2Zr9@DT@73_n7_-s11>)Z5#;JF{n5BR(}-12cDtx-rPduxx&4 znc%X~`lMJjeZULcQDSVR{O8P!5GI7n@Has?IU;>}iL7dnWK*n!fQKCJCS*e*Jec zMoI+ww!XejdL%Z6Ap(Eh&`RYlet#tF26vgJYth}_L=P?3N5_e#n>aOsc+9){h`ip)JiRG~&WIh;6bs^ZxLn9-3u{Xm_*@qn3_lO=}=zY;E zwG!&78EWX;{q;;2u5PI=FPxCRmxs-jy0U0uU(IKN9Qm)$L;|zAwRV2Tb9`ors!!l@ z0NrnDIrbJnb{%D9WsLy#i0J)j&hr&M>-6#%Q*Crqk z2%aJugV0y>#>3NN6L84@e}6QjS1K*ol*p^nv?iF}AVhRrT<$x&e4|QzLW3kZK?Fln zk^-`%^P;dB-RFw6Zi4yF+j=s=1Z=6q{OjXE+W5Oabz?~k^z>r8ySvzpYQ{cL!tc#Z zN+ylm_Ve}rXxbAoJdo(G%;)RvAClA44bY)%HKx;5KN>*ldtgaC|AAcSj~_qeSCs_X zSLCBwCMG7T@vk#B-wR@nIznRj*4*s+732llrSzyv++WWr%);f$jCX_29l~)R@ABJx zPYGg5w!f@;)rPVWVY`~>`J8LgEt*`<2NxS8;^Y$ja>a^QZQeS}5py{)c3tOrOIJa8%&LoITW4E91g78X{B?_On7 zc<0SQo3c_)v$%BawK9>|XejTGcUWY*0QAqd|6Z?zZ2?kVSgfzFm*?f>T}JRA`YkPB zh`oiT>cdYjvhGQVi3Rj7tnb0 z9^!q_f8G=ZfHwmu11nF_B}q1Rc2s4=MbzWm z+}t4hJCm0${j!eKw9y0!M#&N6A1z+$t2@l*Jogzzo~s=|=Jdv>@jKmIH|_B60Hi*M z$}xQXYkE3Yn=RG7aN?UG2dQ*Bu&CHlRrHyXuga!&4TXf7NGs z6u#}MsTmgl1znnBnC;A89Q}gt<5z3GV|Ih8MKWSyPtU89-&jF`fw}d6BW^+BQUn!q znUjl4@R8R`4pKuv2tJ}Y&ef*XLYX7BSj9L61S4)H0Y;K}!fxvv<8K{(gLD%@pIy>E zE^q`AH?t`Hhpop|8mDm_Z0Q?4FAN!Sw71{kOdj$~-|{QhE{*x|?c3#Us)6Z_{TD-F z>8+6uyoHJi3IpkEsk<1tTbxYEJI*g(&c$9|`q7D8&n`w_ z(NuwD;Jl3r_^9>jbV~z(>OJy2`u;*wyxAAaesBY&$KD--z)KeQ00oT-9f$Hi4}YlgA)h# zMm~rF7hvWbfbn%<;^6F4lamWeii%$U0ETImWzM73S%M;R)FFC17y=6qZ)RX%ptIoT z4k5^-*Pnp_b{$Q|ZE9Q(pZMUmF;Mwy$8!k>t@ke|W;8Q!ft={~@6W&gc25P7Q2hoO zJuW6LPLPy@g=T2S7_0PO%xIktwcCTyK-T8vSOw}u*=|72L_z<+Y14u%fD;<4Z zt_^H0=9Qp}rRr6gf%qfZ`GB{7es&wO7|PMPs$r%UfBGcxn3}phW}_Jwf>KjcjX?o! zJlPz{@`C#O?DM6uwVSXZYxfqD#FUh?S>S%Dz?7e53ArpII)iRHM|fhgxBO1WBp9d^)| zn7h(7@vd_W3LPqmtJV;$ufdDfzGc8o{uW$;Oe?|0z z#z(9F+4clI9Z}ZP{_#WQBy~C@9V4UH0Q_XV%+1YH)R?d!sH(pH>}#1`Iq9FpmecHh z%QbXt@^MyRxSMHdX{oELkEZ_l^9SqS+&reDqAJoZ4TT_Vv|blrJ}sVY#7mMQ2N@a4 z6=i2<%YgO+EpUoyfh03AHV&ZYlPRb=r)xATM{~`l>z)VjvCB{f%9v{=%5$mz0vJ-C!anwOM{J zkvAKYH?Rzp@E{4Md=X%u1&~xv>ug7ibWBW4x=+P)!7-96{@m;4e1FW1dJA;F3c;iv zgT&Gm0M<;U!dbWICtn8KWkKquyKDmP4>W%{ki`5zGEX`xe4yFE;_u}lUGS`d3)XdZ zc7|{HHGA$%wgRuO-B~c}5HzHM>8Gpd@v!#n0#C3s2#bq@qsU+FiuZbB;M35ITCrLn zDHizaUee5L6-mWFzh)R;F5UvurGdNia{UQdL0bVzZt~axW8+50p|=4NUE?jbP)*?9 zDT8z%BDf4Ir-4^Mdeno(O}#E$CCR5jho8sdhX(RrT24+ZmAUU{jHEF>Kxzg~cTWQz z?k?<}V4EXB-k{uy_w@GWZTZpAGcYg%SHI<-k7Eb>O7B=xtjnecmSPzOt)QWy@udW8 z1pT1fH%~Y$e(F?c2|;HqP(D(6INoVV?l(B--2EtpfFS&53*y zhK$yCEQaR>jvgP<=;GGS&ifFshoAoe-fJ~rm+i!x0)XL-0m8hNRsqvPnY z^k=vh6B9Gc3%$8WeoVQA0C(q1iso)K#*{#gJN{Dzo)jZ&)Z&tW?6iJPF0uQiiHYOT z=xC>@o}LW_uce$z;e@XuS2`JoQ9aAl%#05og!uf~?jeyuQNfM+LRCr%K{n`i0y2_+ z2nUN*Vr51CHYkpsZUh``>GTbe@!znCSMgpg@LBj8ia_ zAI6oa6h?~apHp%-YRZ3jbnP1h8^`VG>U~liGB;xyP&s_OG00xCN4+cRck&$n--YbXeksI0u)$77Qj?*QYl#MS?&DU_fP;;lQbPzp9@4ov*0EUl>who3 z(m?eKViThsu4T%~vE<<7tPI+S6_P0arK%k-aaE&3eh-+L_K4{JH3|Z3=>Y-H@ zDi)7n88hQbXE*g-dxyg@jOMj7$w*3VfRFJP^LiQ^`UFO^1BSNO=)C0LQBnfmBr^+i zn=|JjKRrElK(x=nG~f}SXaYHX#*W?ViBCGJ?pY-`MRQ9_BhaO3n%)Dq&vqE706FDUw*nI}mxeY{T27t&xrPw`^)5(b3 z58l}Zw|-NIrP~FcDA)&3T9m`(+WRyAF_6u;M<*wg@xR$wr2b$Mb`ZG=ptvdUzz}{Q z1ckspXc1;-FDEx)mcW7*!MqI+&C8rtz}ciw45IK>tpznpA`1vztq8^_Qbw{x_@@U4 z?c#U}i?vG&q_fXssCcRbv-<*ljfJ6Ag;>gG$Pn>%Mdp6?+W-{CewY$k>S|hIJB1yA z!kW-ThqjJR-X4hG_cHmjdS+%W3I`EodXpYRH>JE`WaBBR&CQ+6ae+{RyrN>)=qZlz zB+$&7aC3-Vn{0FmT8}8AC@2}@zI7%m26cF6dw*X%JgG^E9^cx^1Y$7_JnrYB5^^SPC-k&Vj`_tDJ)hZbsM9RArNx<+42_bucGyn-7O~k7}x48m6g+D?yD!v5WoIA|` z=^x+ClmW=wABIR64=tn7zJWeog^{hQXtUt5nyondC2J2jO(IgTm?5F|B8i{3_5llG z;^Gm)L&hn!9t#rZzy&pA`5B-1YK>6MaY`Jn~-Y#+W0CP>~cKI< z-L*J4GEzzQBuoDFuLA(eUf#8{mMiC&u3y=LrKY3K2mYk#k1NBWhZJAa}rH0 zI=@8_@%8`<1H-K_CU{L6ww?3B-GjOerbtHkP^|}^0D)tFoY~`sf+T2|#guygDN^rx6=7_VDlsL7j0dBvsVWgyKOXPuBJc!@Vx>M_?}MR^PTe6uq<2#1 zDm0=PQbZlv85Kp9S~(PEu}(x>s7E`-^{<493d$bk!5leCw2%LV5Wpx6E7cum>gV2n z#9ecLM^7(VoC~*YLaB}bGp-b+g~0Ki zBdTg4O~QIa@;p5w?CHX|60d44Oesiu;RmLkPP5h`;Sc3^!`KL~M?rVIujJUNsiWe|4lA4uq^R(lAIr?6(U@_}6UOWik7Qs;$yd9^p;^HnV6HO02DIAr zqSaOp8)y~9FyJ&M#s z3V~vetW>jYca&})1~(%`>ExG&>ynq)h=MOajsloPamjQUcK8t+EG}9N+t{1~kdv$E zqoQC2!pmUnBtbMds(`_>WsRNL0q6o&#nbmzJL-Q=3>Ld1EgU_Ur$QE6hg%^OssDYr b@c`k>S|VAx$A*JPDIsNfb-5}T^U(hTcXN<$ literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/NightClear.png b/widgets/yawn/icons/NightClear.png new file mode 100755 index 0000000000000000000000000000000000000000..84ea1408ba782bc48e03bbbd79f862412d3cb48d GIT binary patch literal 5198 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 C7rvhW literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/NightMostlyCloudy.png b/widgets/yawn/icons/NightMostlyCloudy.png new file mode 100755 index 0000000000000000000000000000000000000000..d8b3673492f457ab354bf4276b2a2e49cc4c6dee GIT binary patch literal 7058 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 Yv4~UN31ejeKT-jzikb?Qa+V?g10eTDiU0rr literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/NightPartlyCloudy.png b/widgets/yawn/icons/NightPartlyCloudy.png new file mode 100755 index 0000000000000000000000000000000000000000..9e4404d7511aa84a563fbc2e4933ee032a1ce88e GIT binary patch literal 6583 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 literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/README.md b/widgets/yawn/icons/README.md new file mode 100644 index 0000000..e4dc111 --- /dev/null +++ b/widgets/yawn/icons/README.md @@ -0,0 +1,6 @@ +Yawn icons +========== + +These are [Plain Weather Icons](http://merlinthered.deviantart.com/art/plain-weather-icons-157162192), created by [MerlinTheRed](http://merlinthered.deviantart.com/). + + diff --git a/widgets/yawn/icons/Rain.png b/widgets/yawn/icons/Rain.png new file mode 100755 index 0000000000000000000000000000000000000000..d00552a5fd8d96d08d0e5915d51a7963d40cc7ae GIT binary patch literal 8052 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 bIC(mO&E@D(xc>(pLj#JkDl%WBOhW$$bRr|s literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/RainThunder.png b/widgets/yawn/icons/RainThunder.png new file mode 100755 index 0000000000000000000000000000000000000000..d30e120582fe1084bbfc6f33f67dfa4ef4e66539 GIT binary patch literal 9879 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 literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/Showers.png b/widgets/yawn/icons/Showers.png new file mode 100755 index 0000000000000000000000000000000000000000..3cc6665dc0e98c2be584079add634d9744b459a5 GIT binary patch literal 9694 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 O6i`>zR;p4k5B(n_WNM25 literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/SnowShowers.png b/widgets/yawn/icons/SnowShowers.png new file mode 100755 index 0000000000000000000000000000000000000000..30534a20d052bbc9c6353dd9eb950f3ea5956954 GIT binary patch literal 9961 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 literal 0 HcmV?d00001 diff --git a/widgets/yawn/icons/na.png b/widgets/yawn/icons/na.png new file mode 100755 index 0000000000000000000000000000000000000000..62a5350d878dccc626e9e7be17e728aab0737b87 GIT binary patch literal 11160 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 uAxI$vvXU%&SeT6Z$sT;G_Uh)zHFuz)Q)>Is(", "") + weather_data = weather_data:match("Current Conditions:.-Full") + weather_data = weather_data:gsub("Current Conditions:.-\n", "Now: ") + weather_data = weather_data:gsub("Forecast:.-\n", "") + weather_data = weather_data:gsub("\nFull", "") + weather_data = weather_data:gsub("[\n]$", "") + weather_data = weather_data:gsub(" [-] " , ": ") + weather_data = weather_data:gsub("[.]", ",") + weather_data = weather_data:gsub("High: ", "") + weather_data = weather_data:gsub(" Low: ", " - ") + + -- Getting info for text widget + local now = weather_data:sub(weather_data:find("Now:")+5, + weather_data:find("\n")-1) + local forecast = now:sub(1, now:find(",")-1) + local units = now:sub(now:find(",")+2, -2) + + -- Day/Night icon change + local hour = tonumber(os.date("%H")) + sky = icon_path + + if forecast == "Clear" or + forecast == "Fair" or + forecast == "Partly Cloudy" or + forecast == "Mostly Cloudy" + then + if hour >= 6 and hour <= 18 + then + sky = sky .. "Day" + else + sky = sky .. "Night" + end + end + + sky = sky .. forecast:gsub(" ", ""):gsub("/", "") .. ".png" + + -- In case there's no defined icon for current forecast + f = io.popen(sky) + if f == nil then + sky = icon_path .. "na.png" + else + io.close(f) + end + + -- Localization + local f = io.open(localizations_path .. language, "r") + if language:find("en_") == nil and f ~= nil + then + io.close(f) + for line in io.lines(localizations_path .. language) + do + word = string.sub(line, 1, line:find("|")-1) + translation = string.sub(line, line:find("|")+1) + weather_data = string.gsub(weather_data, word, translation) + end + end + + -- Finally setting infos + forecast = weather_data:match(": %S+"):gsub(": ", ""):gsub(",", "") + yawn.forecast = markup(yawn.forecast_color, markup.font(beautiful.font, forecast)) + yawn.units = markup(yawn.units_color, markup.font(beautiful.font, units)) + yawn.icon:set_image(sky) + + if toshow == "forecast" then + return yawn.forecast + elseif toshow == "units" then + return yawn.units + else -- "both" + return yawn.forecast .. spr + .. yawn.units .. footer + end +end + +function yawn.hide() + if notification ~= nil then + naughty.destroy(notification) + notification = nil + end +end + +function yawn.show(t_out) + if yawn.widget._layout.text == "?" + then + if update_timer ~= nil + then + update_timer:emit_signal("timeout") + else + fetch_weather(settings) + end + end + + yawn.hide() + + notification = naughty.notify({ + text = weather_data, + icon = sky, + timeout = t_out, + fg = yawn.notification_color + }) +end + +function yawn.register(id, args) + local args = args or {} + + settings = { args.toshow, args.spr, args.footer } + + yawn.units_color = args.units_color or + beautiful.fg_normal or "#FFFFFF" + yawn.forecast_color = args.forecast_color or + yawn.units_color + yawn.notification_color = args.notification_color or + beautiful.fg_focus or "#FFFFFF" + + if args.u == "f" then units_set = '?u=f&w=' end + + city_id = id + + update_timer = timer({ timeout = 600 }) -- 10 mins + update_timer:connect_signal("timeout", function() + yawn.widget:set_markup(fetch_weather(settings)) + end) + update_timer:start() + update_timer:emit_signal("timeout") + + yawn.icon:connect_signal("mouse::enter", function() + yawn.show(0) + end) + yawn.icon:connect_signal("mouse::leave", function() + yawn.hide() + end) +end + +function yawn.attach(widget, id, args) + yawn.register(id, args) + + widget:connect_signal("mouse::enter", function() + yawn.show(0) + end) + + widget:connect_signal("mouse::leave", function() + yawn.hide() + end) +end + +-- }}} + +return setmetatable(yawn, { __call = function(_, ...) return yawn.register(...) end }) diff --git a/widgets/yawn/localizations/it_IT b/widgets/yawn/localizations/it_IT new file mode 100644 index 0000000..0b74b60 --- /dev/null +++ b/widgets/yawn/localizations/it_IT @@ -0,0 +1,57 @@ +Now:|Ora: +Sun:|Dom: +Mon:|Lun: +Tue:|Mar: +Wed:|Mer: +Thu:|Gio: +Fri:|Ven: +Sat:|Sab: +Mostly Sunny|Abbastanza Soleggiato +Sunny|Soleggiato +Sun|Soleggiato +Rain/Thunder|Temporali +Isolated Thunderstorms|Temporali Isolati +Scattered Thunderstorms|Temporali Sparsi +Thundershowers|Rovesci Temporaleschi +Thunderstorms|Temporali +Thunder|Temporale +AM|In Mattinata +PM|Nel Pomeriggio +Early|In Mattinata +Late|In Serata +Few|Sporadiche +Severe|Forti +Clear|Sereno +Fair|Sereno +Partly|Parzialmente +Mostly|Molto +Cloudy|Nuvoloso +Clouds|Nuvoloso +Scattered Showers|Temporali Sparsi +Light Snow Showers|Nevicate Leggere +Snow Showers|Nevicate +aeavy Snow|Forti Nevicate +Scattered Snow Showers|Nevicate Sparse +Mixed Rain And Snow|Pioggia E Neve +Mixed Rain And Sleet|Pioggia E Nevischio +Mixed Snow And Sleet|Neve E Nevischio +Mixed Rain And Hail|Pioggia E Grandine +Snow Flurries|Folate Di Neve +Blowing Snow|Neve Battente +Blowing Rain|Pioggia Battente +Heavy Rain|Forti Piogge +Freezing Rain|Pioggia Congelantesi +Showers|Piogge +Light Rain|Pioggia Leggera +Heavy|Forti +Rain|Piovoso +Windy|Ventoso +Wind|Ventoso +Snow|Neve +Sleet|Nevischio +Drizzle|Pioggerella +Freezing Drizzle|Pioggerella Congelantesi +Hail|Grandine +Foggy|Nebbia +Haze|Nebbia +Light|Leggere diff --git a/widgets/yawn/localizations/localization_template b/widgets/yawn/localizations/localization_template new file mode 100644 index 0000000..98d527d --- /dev/null +++ b/widgets/yawn/localizations/localization_template @@ -0,0 +1,57 @@ +Now:| +Sun:| +Mon:| +Tue:| +Wed:| +Thu:| +Fri:| +Sat:| +Mostly Sunny| +Sunny| +Sun| +Rain/Thunder| +Isolated Thunderstorms| +Scattered Thunderstorms| +Thundershowers| +Thunderstorms| +Thunder| +AM| +PM| +Early| +Late| +Few| +Severe| +Clear| +Fair| +Partly| +Mostly| +Cloudy| +Clouds| +Scattered Showers| +Light Snow Showers| +Snow Showers| +Heavy Snow| +Scattered Snow Showers| +Mixed Rain And Snow| +Mixed Rain And Sleet| +Mixed Snow And Sleet| +Mixed Rain And Hail| +Snow Flurries| +Blowing Snow| +Blowing Rain| +Heavy Rain| +Freezing Rain| +Showers| +Light Rain| +Heavy| +Rain| +Windy| +Wind| +Snow| +Sleet| +Drizzle| +Freezing Drizzle| +Hail| +Foggy| +Haze| +Light| -- 2.39.2