to package grml-desktop. Added package grml-desktop to
Suggests: therefore. This should simplify customization
of grml.
+ * Drop /etc/skel/.wmi as wmi is not supported anymore.
-- Michael Prokop <mika@grml.org> Fri, 13 Apr 2007 18:13:37 +0200
+++ /dev/null
-# switch workspace
- chain.selws1.seq="select-workspace+workspace 1"
- chain.selws1.keys=alt+1
- chain.selws2.seq="select-workspace+workspace 2"
- chain.selws2.keys=alt+2
- chain.selws3.seq="select-workspace+workspace 3"
- chain.selws3.keys=alt+3
- chain.selws4.seq="select-workspace+workspace 4"
- chain.selws4.keys=alt+4
-
-# Lock screen
- chain.xlock.keys=ctrl+alt+l
- chain.xlock.seq="exec+/usr/X11R6/bin/xlock"
-
-# ``-R'' reattach if possible, otherwise start a new session
- extern.screen.cmd="x-terminal-emulator -e screen -R"
- extern.screen.keys=mod1+F1
-
-# Start firefox with Alt+F2
- extern.firefox.cmd=/usr/bin/mozilla-firefox
- extern.firefox.keys=mod1+F2
-
-# Get X clipboard/selection and output it via flite
- extern.xsay.cmd=/usr/bin/xsay
- extern.xsay.keys=ctrl+mod1+v
+++ /dev/null
-chain.grow-full.keys=alt+r::f
-chain.grow-full.seq=grow-left,grow-right,grow-up,grow-down
-chain.selws1.keys=alt+1
-chain.selws1.seq="select-workspace+workspace 1"
-chain.selws2.keys=alt+2
-chain.selws2.seq="select-workspace+workspace 2"
-chain.selws3.keys=alt+3
-chain.selws3.seq="select-workspace+workspace 3"
-chain.selws4.keys=alt+4
-chain.selws4.seq="select-workspace+workspace 4"
-chain.shrink-full.keys=shift+alt+r::f
-chain.shrink-full.seq=shrink-left,shrink-right,shrink-up,shrink-down
-extern.xterm.cmd=x-terminal-emulator
-extern.xterm.keys=alt+x
-intern.attach-last-client.keys=alt+a
-intern.cycle-client-next.keys=alt+Tab
-intern.cycle-client-prev.keys=shift+alt+Tab
-intern.cycle-workspace-next.keys=ctrl+alt+Right
-intern.cycle-workspace-prev.keys=ctrl+alt+Left
-intern.detach-client.keys=alt+d
-intern.exec.keys=alt+e
-intern.grab-move.keys=mod1+Button1
-intern.grow-down.keys=alt+r::j
-intern.grow-left.keys=alt+r::h
-intern.grow-right.keys=alt+r::l
-intern.grow-up.keys=alt+r::k
-intern.inputmode.keys=alt+i
-intern.join-frame-down.keys=shift+alt+s::j
-intern.join-frame-left.keys=shift+alt+s::h
-intern.join-frame-right.keys=shift+alt+s::l
-intern.join-frame-up.keys=shift+alt+s::k
-intern.kill-client.keys=ctrl+alt+c
-intern.move-client-down.keys=shift+alt+j
-intern.move-client-left.keys=shift+alt+h
-intern.move-client-right.keys=shift+alt+l
-intern.move-client-up.keys=shift+alt+k
-intern.quit.keys=ctrl+alt+q
-intern.select-frame-down.keys=alt+j
-intern.select-frame-left.keys=alt+h
-intern.select-frame-right.keys=alt+l
-intern.select-frame-up.keys=alt+k
-intern.shrink-down.keys=shift+alt+r::j
-intern.shrink-left.keys=shift+alt+r::h
-intern.shrink-right.keys=shift+alt+r::l
-intern.shrink-up.keys=shift+alt+r::k
-intern.split-frame-down.keys=alt+s::j
-intern.split-frame-left.keys=alt+s::h
-intern.split-frame-right.keys=alt+s::l
-intern.split-frame-up.keys=alt+s::k
-intern.toggle-client-mode.keys=alt+m
-intern.toggle-mode.keys=alt+f
-intern.zoom-client.keys=mod1+z
+++ /dev/null
-autocompletion.mode=default
-bar.buttons=yes
-border.width=3
-cycle.mode=default
-default.bar-mode=show
-default.border-mode=show
-default.client-mode=float
-default.transient-mode=float
-frame.autodestroy=yes
-frame.buttons=yes
-frame.colwidth=60
-frame.mode=tabbed
-menu.actions=xterm,restart,quit
-resize-move.factor=10
-slot.alignment=right
-slot.mode=non-overlap
-slot.style=transparent
-slot.tabs=default
-startup.chain=
-statusbar.alignment=bottom
-terminal="x-terminal-emulator -e"
+++ /dev/null
-# Filename: os04-theme.conf
-# Purpose: os04 theme for window manager 'WMI'
-# Authors: grml-team (grml.org), (c) Lejatorn, (c) Michael Prokop <mika@grml.org>
-# Bug-Reports: see http://grml.org/bugs/
-# License: This file is licensed under the GPL v2.
-# Latest change: Die Nov 16 13:27:05 CET 2004 [mika]
-################################################################################
-# This theme is based on "Greenie" theme by Lejatorn
-# http://wmi.modprobe.de/uploads/WMI/greenie-theme.conf
-
-color.bar.background=darkgreen
-color.bar.shadow=seagreen
-color.bar.shine=seagreen
-color.bar.text=lightyellow
-
-color.button.background.normal=darkgreen
-color.button.background.pressed=snow
-color.button.border.shadow.normal=darkkhaki
-color.button.border.shadow.pressed=darkkhaki
-color.button.border.shine.normal=darkkhaki
-color.button.border.shine.pressed=darkkhaki
-color.button.figure.shadow.normal=lightyellow
-color.button.figure.shadow.pressed=black
-color.button.figure.shine.normal=lightyellow
-color.button.figure.shine.pressed=black
-
-
-color.focusreq.background=red
-color.focusreq.shadow=red
-color.focusreq.shine=red
-color.focusreq.text=red
-
-color.frame.background.focussed=olivedrab
-color.frame.background.normal=olivedrab
-color.frame.pseudo=olivedrab
-color.frame.shadow.focussed=darkgreen
-color.frame.shadow.normal=darkgreen
-color.frame.shine.focussed=darkgreen
-color.frame.shine.normal=darkgreen
-
-color.label.background.focussed=greenyellow
-color.label.background.normal=yellowgreen
-color.label.shadow.focussed=seagreen
-color.label.shadow.normal=seagreen
-color.label.shine.focussed=seagreen
-color.label.shine.normal=seagreen
-color.label.text.focussed=black
-color.label.text.normal=midnightblue
-
-color.meter.background=red
-color.meter.border.shadow=red
-color.meter.border.shine=red
-color.meter.figure.high=red
-color.meter.figure.low=red
-color.meter.figure.normal=red
-
-color.tab.background.active.focussed=darkolivegreen
-color.tab.background.active.normal=forestgreen
-color.tab.background.inactive.focussed=darkgreen
-color.tab.background.inactive.normal=darkgreen
-color.tab.shadow.active.focussed=darkkhaki
-color.tab.shadow.active.normal=darkkhaki
-color.tab.shadow.inactive.focussed=darkkhaki
-color.tab.shadow.inactive.normal=darkkhaki
-color.tab.shine.active.focussed=darkkhaki
-color.tab.shine.active.normal=darkkhaki
-color.tab.shine.inactive.focussed=darkkhaki
-color.tab.shine.inactive.normal=darkkhaki
-color.tab.text.active.focussed=limegreen
-color.tab.text.active.normal=midnightblue
-color.tab.text.inactive.focussed=black
-color.tab.text.inactive.normal=black
-
-#font="anorexia"
-
-exec="wmsetbg -s /usr/share/grml/0.1-os04.jpg"
-
-## END OF FILE #################################################################
+++ /dev/null
-#!/usr/bin/perl
-
-# STI - StatusText Improved ;)
-# A simple program to update the bartext in WMI
-# last modified: 20 June 2004
-
-# Copyright (C) 2004 Nicholas Lativy
-
-# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-# To use this program put it in a directory in your $PATH
-# make executable and put the following lines in your ~/.xinitrc file:
-# sti &
-# wmi
-
-use strict;
-
-# The 4 following variables should be set by the user
-#--------------------------------------------------
-# my $TFORMAT = "%a %d %B - %H%M"; # time format (see man date)
-#--------------------------------------------------
-my $TFORMAT = "%D - %H:%M";
-my $MAILDIR = "~/mail/inbox"; # location of user maildir
-#my $TOTALMEM = 256; # physical memory in MB
-my $TOTALMEM = `free -mt | grep Mem | cut -b16-20`;
-my $RTIME = 5; # time between each refresh of stats
-# note that the actual time between each refresh will be at least 1/2
-# a second longer than $RTIME
-
-for (;;) {
- my ($mail, $new) = &check_mail($MAILDIR);
- my ($mem_used, $cpu_used) = &sys_stats($TOTALMEM);
- my $time = &get_time($TFORMAT);
- system "wmiremote -t \"[$cpu_used% MEM: $mem_used%] [$mail mail, $new new] [$time]\"";
- #system "wmiremote -t \"[CPU: $cpu_used% MEM: $mem_used%] [$mail mail, $new new] [$time]\"";
- #print "[CPU: $cpu_used% MEM: $mem_used%] [$mail mail, $new new] [$time]\n"; # this line was for testing
- sleep $RTIME;
-}
-
-sub check_mail {
- # check the user's email
- # currently only supports maildir
- my ($mail) = @_;
- chomp(my $cur = `ls $MAILDIR/cur | wc -l`);
- chomp(my $new = `ls $MAILDIR/new | wc -l`);
- return($cur + $new, $new);
-}
-
-sub get_time {
- # get the localtime, currently using the date
- # command. change it to use perl's localtime?
- my ($format) = @_;
- chomp(my $date = `date "+${TFORMAT}"`);
- return($date);
-}
-
-sub sys_stats {
- # get % of CPU and memory used
- my ($mem) = @_;
- chomp(my $mem_free = `free -mt | grep Mem | cut -b38-40`);
- chomp(my $cpu_idle = `uptime`);
-# chomp(my $cpu_idle = `top -bn2d0.5 | grep Cpu | tail -n1`);
-# $cpu_idle =~ /(\d+\.\d+)%(\s)idle/;
-# $cpu_idle = $1;
-# my $cpu_used = 100 - $cpu_idle;
- my $cpu_used = $cpu_idle;
- my $mem_used = 100 - $mem_free / $mem * 100;
- # return rounded up figures
- return (sprintf("%.0f",$mem_used), sprintf($cpu_used));
-}
+++ /dev/null
-Norman Köhring (pSy) <nkoehring-at-web-dot-de>
-Christoph Wegscheider (wegi) <cw-at-wegi-dot-net>
+++ /dev/null
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
- 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-\f
- 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.)
-\f
-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.
-\f
- 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.
-\f
- 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
-\f
- Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+++ /dev/null
-Welcome to the README of szs2.1.
-
-This is the first (and last) dot release of the second release of szs, a script
-for the WMI statusbar. The name 'szs' is an abbreviation of
-Statuszeilenskript, german for statusbar script.
-
-Against szs1st, this release has many more features through its modules.
-Now it can show:
-* the bandwidth usage of network interfaces (bandwidth.py)
-* the chargingstate of your (laptop-)battery (battery.py)
-* the usage of partitions or diskimages (diskusage.py)
-* if there are mails in an pop or imap account (biff.py)
-* the load average, cpu usage and i/o (load.py)
-* the memory and swap usage (memory.py)
-* a `date`-like formatted time string (clock.py)
-* freely self configurable bars and texts (text.py)
-
-To use all this features, look in the good commented config file.
-It's named szs.cfg and must be in ~/.wmi or in the same directory as szs.py.
-
-If you want to build own modules read the following files:
- module-developer-reference.txt contains a description how to make modules
- szstoolbox-developer-reference.txt contains the classes/globals of szstoolbox
-
-I hope the script is usable.
-
-Much fun,
-Norman Köhring
+++ /dev/null
-#!/usr/bin/python
-"""
-szs/bandwidth - a bandwidth module for SZS an statusbar script for WMI
-
-
-CHANGELOG:
-
- v0.5 2004-12-14
- * some cleanups
- * removed re dependency for performance reasons
-
- v0.4 2004-11-29
- * replaced script interval with real interval
- * added empirical max down/up rate
- * fixed: crash if interface is down
-
- v0.3 2004-11-26
- * added configurabel labels
- * fixed get up packets instead of bytes bug
- * some cleanups
-
- v0.2 2004-11-24
- * fixed bug with /proc/net/dev parsing
- * adapted to the szs module interface
- * added szs.cfg support
- * use now correct interval from szs config
-
- v0.1 2004-10-20
- * initial Release
-
-
-TODO:
-
-
-
-COPYRIGHT:
-
-Copyright 2004 Christoph Wegscheider <cw@wegi.net>
-
-
-LICENSE:
-
-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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-"""
-
-import os
-import time
-import szstoolbox
-
-
-
-count = 0
-
-
-
-class Interface:
-
- changetime = 0
-
- def __init__(self, label, downmax=1, upmax=1, down=0, up=0):
- self.label = label
- self.downmax = downmax * 1024
- self.upmax = upmax * 1024
- self.down = down
- self.up = up
-
- def get_down_speed(self, down):
- old = self.down
- self.down = down
- downrate = (down - old) / interval
- if downrate > self.downmax and count > 1:
- self.downmax = downrate
- msg.debug(self.label + ' newmax down [kB]: ' + str(self.downmax/1024), 3)
- return 100 * downrate / self.downmax
-
- def get_up_speed(self, up):
- old = self.up
- self.up = up
- uprate = (up - old) / interval
- if uprate > self.upmax and count > 1:
- self.upmax = uprate
- msg.debug(self.label + ' newmax up [kB]: ' + str(self.upmax/1024), 3)
- return 100 * uprate / self.upmax
-
-
-
-def get_data():
- global interval
-
- #get interval
- changetime = time.time()
- interval = changetime - Interface.changetime
- Interface.changetime = changetime
-
- # get data
- fd = open('/proc/net/dev')
- data = {}
- for it in fd.read().split('\n')[2:-1]:
- it = str(it[:6] + ' ' + it[7:]).split()
- if (len(it) > 2) and (it[0] in ifs):
- data[it[0]] = it[1], it[9]
- fd.close()
- for it in ifs:
- if it not in data.keys():
- data[it] = 0, 0
- print it + ' is down'
- return data
-
-
-
-def main():
- global count
- data = get_data()
- returnli = ['']
- for it in ifs:
- returnli.append(str(int(ifsdata[it].get_down_speed(int(data[it][0])))) + '%')
- returnli.append(str(int(ifsdata[it].get_up_speed(int(data[it][1])))) + '%' + ifsdata[it].label)
-
- count += 1
- return returnli
-
-
-
-# load configuration
-msg = szstoolbox.MSG()
-cfg = szstoolbox.CFG('bandwidth')
-ifs = cfg.read('ifs').split(',')
-ifsdata = {}
-for it in ifs:
- it = it.split(':')
- if len(it) == 4:
- ifsdata[it[0]] = Interface(it[1], int(it[2]), int(it[3]))
- else:
- ifsdata[it[0]] = Interface(it[1])
-ifs = [it.split(':')[0] for it in ifs]
-
-
-
-if __name__ == '__main__':
- import time
-
- while True:
- print main()
- time.sleep(szstoolbox.interval)
+++ /dev/null
-import szstoolbox
-
-ready = False
-def init():
- """ globalizes and initializes the variables """
- global ready
- ready = False
-
- global batanimload, batstateF
- global lpart1, lpart2, l
- global msg, xtra, cfg
- global lastfull, acc, lvar, tvar, batlabel,state
- state = ''
-
- msg = szstoolbox.MSG()
- xtra = szstoolbox.XTRA()
- cfg = szstoolbox.CFG('battery')
- cfgG = szstoolbox.CFG('global')
-
- batstateF = cfg.read('batstate').strip()
- batinfoF = cfg.read('batinfo').strip()
- batanimload = int(cfg.read('animbatload').strip())
- batlabel = cfg.read('label').strip()
- lvar = int(cfg.read('lvar').strip())
- tvar = int(cfg.read('tvar').strip())
- acc = int(cfgG.read('accuracy').strip())
- batstateF = open(batstateF,'r')
- batinfoF = open(batinfoF,'r')
- state = None
-
- infoLn = batinfoF.readlines()
- for line in infoLn:
- line = line.split(':')
- part1 = line[0].strip()
- part2 = line[1].strip()
- if part1 == 'last full capacity':
- lastfull = part2[:part2.find(' ')]
-
- ready = True
-
-
-
-def main():
- """ main function... returns a list with a string like
- "/65\" or "\BAT LOW/" and an integer like 65 that
- shows procentual state of your battery """
-
- global state
-
- if not ready:
- init()
- return ['init','']
-
- if batanimload > 0:
- z = xtra.countadd(5)
- if z >= 95:
- z = 0
- else:
- z = 0
-
- stateLn = batstateF.readlines()
- batstateF.seek(0)
- remain = '0'
-
- for line in stateLn:
- line = line.split(':')
- part1 = line[0].strip()
- part2 = line[1].strip()
- if part1 == 'present' and part2 == 'no':
- msg.debug('Battery not present',2)
- state = None
- return ['']
- elif part1 == 'charging state' and part2 == 'discharging':
- if state <> '-':
- msg.debug('Battery is discharging',3)
- state = '-'
- elif part1 == 'charging state' and part2 == 'charging':
- if state <> '+':
- msg.debug('Battery is charging',3)
- state = '+'
- elif part1 == 'charging state' and part2 == 'unknown':
- if state <> '#':
- msg.debug('Battery seems full (charging state is unknown)',3)
- state = '#'
- elif part1 == 'remaining capacity':
- remainold = part2
- remain = part2[:part2.find(' ')]
- remain = float(remain)*100/float(lastfull)
- remain = str(round(remain,acc))
- remain = remain[:remain.find('.')+3]+'%'
-
- if lvar in (1,2,3):
- if state == '#':
- ls = ' (full)'
- else:
- if lvar == 2:
- ls = ' ('+remainold+str(state)+')'
- if lvar == 3:
- ls = ' ('+remainold+'/'+remain+')'
- else:
- ls = ' ('+remain+str(state)+')'
- else:
- ls = ''
-
- if tvar in (1,2,3):
- if state == '#':
- ts = ''
- else:
- if tvar == 2:
- ts = remainold
- if tvar == 3:
- ts = remainold+'|'+remain
- else:
- ts = remain
- else:
- ts = ''
-
- if batanimload > 0:
- bar = '!'+remain+'%'+batlabel+ls
- else:
- bar = '!'+z+'%'+batlabel+ls
-
- if state == '+' and tvar >= 0:
- return ['/'+ts+'\\',bar]
- elif state == '-' and tvar >= 0:
- return ['\\'+ts+'/',bar]
- elif state == '#' or tvar < 0:
- return ['',bar]
- elif state == None:
- return ['']
- else:
- print 'Undefined state: "'+str(state)+'"'
- return ['???','???']
-
-
-
-if __name__ == '__main__':
- """ helps to debug the script """
-
- from sys import argv
- from time import sleep
-
-
- if 'loop' in argv:
- while '' == '':
- x = main()
- print x
- print '----------------------'
- print 'Length:\t'+str(len(x))
- print 'Text:\t"'+x[0]+'"'
- if len(x) > 1:
- print 'Bars:\t"'+x[1]+'"'
- print '----------------------'
- sleep(1)
- else:
- x = main()
- print '----------------------'
- print 'Length:\t'+str(len(x))
- print 'Text:\t"'+x[0]+'"'
- print 'Bars:\t"'+x[1]+'"'
- print '----------------------'
+++ /dev/null
-#!/usr/bin/python
-"""
-szs/biff - an imap/pop biff module for SZS a statusbar script for WMI
-
-
-CHANGELOG:
-
- v0.4 2004-12-14
- * changed config format
- * added multiple server support
- * added pop3 support
- * added seperate multipliers for pop and imap
- * added support for POP3 SSL (python 2.4 only)
- * added support for IMAP4 SSL
-
- v0.3 2004-11-29
- * show <mailbox>(?) on startup and if serer is not reachable
-
- v0.2 2004-11-26
- * implemented error handling
- * some cleanups
-
- v0.1 2004-11-25
- * initial Release
-
-
-TODO:
-
-
-
-COPYRIGHT:
-
-Copyright 2004 Christoph Wegscheider <cw@wegi.net>
-
-
-LICENSE:
-
-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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-"""
-
-
-import imaplib
-import poplib
-import socket
-import types
-import sys
-import szstoolbox
-
-
-
-def error(mailboxes):
- text = ''
- if type(mailboxes) is not types.ListType:
- mailboxes = [['', mailboxes]]
- for it in mailboxes:
- text += it[1] + '(?) '
- return text
-
-
-
-def main():
- global count
- global imaptext
- global poptext
-
- # check imap server
- if count % multiplier['imapmultiplier'] == 1:
- imaptext = ''
- for acc in accounts['imapaccount']:
- try:
- if acc[3] == 'yes':
- server = imaplib.IMAP4_SSL(acc[0])
- else:
- server = imaplib.IMAP4(acc[0])
- server.login(acc[1], acc[2])
- for it in acc[4:]:
- if server.select(it[0], True)[0] == 'OK':
- num = len(server.search(None, 'UNSEEN')[1][0].split())
- if num > 0:
- imaptext += it[1] + '(' + str(num) + ') '
- server.logout()
- except (imaplib.IMAP4.error, socket.error), errormsg:
- msg.debug(acc[0] + ": " + str(errormsg), 2)
- imaptext += error(acc[4:])
-
- # check pop3 server
- if count % multiplier['popmultiplier'] == 1:
- poptext = ''
- for acc in accounts['popaccount']:
- try:
- if acc[3] == 'yes':
- if sys.version_info >= (2,4):
- server = poplib.POP3_SSL(acc[0])
- else:
- raise szstoolbox.Error('POP3 with SSL support is only availabe in python 2.4 or greater')
- else:
- server = poplib.POP3(acc[0])
- server.user(acc[1])
- server.pass_(acc[2])
- num = server.stat()[0]
- server.quit()
- if num > 0:
- poptext += acc[4] + '(' + str(num) + ') '
- except (poplib.error_proto, socket.error, szstoolbox.Error), e:
- msg.debug(acc[0] + ': ' + str(e), 2)
- poptext += error(acc[4])
-
- count += 1
- return [imaptext + poptext]
-
-
-
-# init
-count = 0
-imaptext = poptext = ''
-accounts = multiplier = {}
-msg = szstoolbox.MSG()
-cfg = szstoolbox.CFG('biff')
-
-# load configuration
-for it in 'imapmultiplier','popmultiplier':
- multiplier[it] = int(cfg.read(it))
-for acctype in 'imapaccount','popaccount':
- accounts[acctype] = []
- config = cfg.read(acctype)
- if type(config) is types.StringType:
- config = [config]
- elif type(config) is types.NoneType:
- config = []
- for acc in config:
- acc = acc.split(',')
- accounts[acctype].append(acc[0].split(':'))
- if acctype == 'imapaccount':
- accounts[acctype][-1].extend([it.split(':') for it in acc[1:]])
-
-# set nice start text
-for acc in accounts['imapaccount']:
- imaptext += error(acc[3:])
-for acc in accounts['popaccount']:
- poptext += error(acc[4])
-
-
-
-# for testing purpose
-if __name__ == '__main__':
- import time
-
- while True:
- print main()
- time.sleep(szstoolbox.interval)
+++ /dev/null
-#!/usr/bin/python
-
-# module that shows a clock
-#
-# TODO
-#
-# * finish support for 'workbeat'
-
-
-from time import strftime,time,localtime,mktime
-import szstoolbox
-
-ready = False
-
-def init():
- """ the init thingy """
-
- global frmt, ready, acc, lst, bar
- global wbdir, wbshow, wbstart, wbstop, wblabel, ew, sw, wboutside
- bar = None
- msg = szstoolbox.MSG()
- cfg = szstoolbox.CFG('clock')
- workbeat = cfg.read('workbeat')
- if len(workbeat) > 0:
- wbdir = cfg.read('wbdirection')
- wboutside = cfg.read('wboutside')
- if wboutside not in ('yes','no'):
- wboutside = 'yes'
- msg.debug('illegal value for wboutside, using "yes"',2)
- wbshow = cfg.read('wbshow')
- if wbshow in ('bar','meter','both'):
- wblabel = cfg.read('wblabel')
- if wbshow in ('text','both'):
- ew = int(cfg.read('ew')) # EndWith
- sw = int(cfg.read('sw')) # StartWith
- else:
- wbdir == None
- wbshow == None
- acc = int(szstoolbox.CFG('global').read('accuracy'))
- frmt = str(cfg.read('format')).strip()
- lst = frmt.split('%N')
- ready = True
-
- if wbdir not in ('up','down',None):
- wbdir = 'up'
- msg.debug('illegal workbeat direction, using "up"',2)
-
- if wbshow not in ('bar','meter','text','both',None):
- wbshow = 'both'
- msg.debug('illegal workbeat show option, using "both"',2)
-
- if wbshow and wbdir:
- workbeat = workbeat.split(',')
- wbstart = workbeat[0].split(':')
- wbstop = workbeat[1].split(':')
-def main():
- """ the main function """
-
- global frmt,workbeat,bar
- if not ready:
- init()
- return ['init']
-
- if len(lst) > 1:
- y = '@'+str(round((((time()+3600)%86400)/86.4),acc))
- y = y[:y.find('.')+acc+1]
- while len(y[y.find('.')+1:len(y)]) < acc: y=y+'0'
- frmt = lst[0]+y+lst[1]
-
- if wbshow <> None and wbdir <> None:
- tpl1 = list(localtime())
- tpl2 = list(localtime())
- tpl1[3] = int(wbstart[0])
- tpl1[4] = int(wbstart[1])
- tpl2[3] = int(wbstop[0])
- tpl2[4] = int(wbstop[1])
- start = mktime(tuple(tpl1))
- stop = mktime(tuple(tpl2))
- spanne = stop-start
- jetzt = time() - start
-
-# ### DEBUGSECTION ###
-# print '--------D-E-B-U-G--------'
-# print 'Start: '+str(start)#starttime
-# print 'Stop: '+str(stop) #endtime
-# print 'Spanne: '+str(spanne) #stop-start
-# print 'Jetzt: '+str(jetzt) #now
-# print 'wbshow: '+wbshow #showtype
-# print 'wbdir: '+wbdir #direction
-# print str(int(round(jetzt*100/spanne)))+'%'+wblabel #bar
-# print str(100-int(round(jetzt*100/spanne)))+'%'+wblabel #100-bar
-# print '--------D-E-B-U-G--------'
-# ### END OF DEBUG ###
-
- wb = jetzt * 100 / spanne
- wb = int(round(wb))
- if wboutside == 'yes':
- if wb > ew:
- wb = ew
- elif wb < sw:
- wb = sw
- else:
- if wb > ew or wb < sw:
- wb = None
-
- tmp = frmt
-
- if wb <> None:
- if wbdir == 'down':
- wb = 100 - wb
- if wbshow in ('bar','meter'):
- wbthing = None
- if wb >= 0:
- bar = str(wb)+'%'+wblabel
- else:
- bar = '0%'+wblabel
- elif wbshow == 'text':
- tmp = frmt+' ('+str(wb)+'%%)'
- bar = None
- else:
- tmp = frmt+' ('+str(wb)+'%%)'
- if wb >= 0:
- bar = str(wb)+'%'+wblabel
- else:
- bar = '0%'+wblabel
- else:
- bar = None
-
- if bar <> None:
- return [strftime(tmp),bar]
- else:
- return [strftime(tmp)]
-
-def debug():
- print "============================="
- print "frmt type is "+str(type(frmt))+" (should be 'str')"
- print "bar type is "+str(type(bar))+" (should be 'str' or 'NoneType')"
- print "outputted text: '"+strftime(frmt)+"'"
- print "outputted bar: '"+str(bar)+"'"
- print "Netbeat should be: @"+str(round((((time()+3600)%86400)/86.4),acc))
- print "Actual time should be: "+strftime("%X")
- print "Actual date should be: "+strftime("%x")
- print "============================="
-
-if __name__ == '__main__':
- """ only to debug... """
-
- from sys import argv
- from time import sleep
-
- if "loop" in argv:
- while 1 == 1:
- main()
- debug()
- sleep(1)
- else:
- main()
- debug()
-
+++ /dev/null
-#!/usr/bin/python
-
-# Module to show usage of your partitions
-
-import szstoolbox
-from os import statvfs
-import statvfs as vfs
-
-def init():
- """ yeah... init wie schwein """
-
- global hdds,lst,ready,fstab
- cfg = szstoolbox.CFG('diskusage')
- fstabF = file('/etc/fstab','r')
- fstab = fstabF.readlines()
- fstabF.close()
- config = cfg.read('disks')
- if type(config) <> list:
- hdds = config.split(',')
- else:
- hdds = []
- for it in config:
- hdds.extend(it.split(','))
- hdds = [x.split(':') for x in hdds]
-
- # rename mountpoints into the corresponding devs
- global fstabD
- fstabD = {}
- for x in fstab:
- x = x.strip()
- if len(x) > 1:
- if x[0] <> '#':
- x = x.strip().split()
- fstabD[x[1]] = x[0]
- for x in range(len(hdds)):
- if hdds[x][0] in fstabD.keys():
- hdds[x][0] = fstabD[hdds[x][0]]
-
- for x in range(len(hdds)):
- if hdds[x][0][:4] != '/dev':
- hdds[x][0] = '/dev/' + hdds[x][0]
-
- ready = True
-
-
-
-def main():
- """ Module to show usage and capacity of disks """
-
- if not 'ready' in globals(): init()
- global mntD
-
- mntD = {}
- mntF = file('/etc/mtab','r')
- mnt = mntF.readlines()
- mntF.close()
- for x in mnt:
- x = x.split()
- mntD[x[0]] = x[1]
-
- lst = []
- for hdd in hdds:
- if hdd[0] in mntD:
- stat = statvfs(mntD[hdd[0]])
- blocks = stat[vfs.F_BLOCKS]
- free = stat[vfs.F_BFREE]
- lst.append(str((blocks-free)*100/blocks)+'%'+hdd[1])
-
- return ['',','.join(lst)]
-
-
-
-if __name__ == '__main__':
- """ helps to debug the script """
-
- from sys import argv
- from time import sleep
-
- print main()
- if 'loop' in argv:
- while '' == '':
- x = main()
- print '----------------------'
- print 'Length:\t'+str(len(x))
- print 'Text:\t"'+x[0]+'"'
- print 'Bars:\t"'+x[1]+'"'
- print '----------------------'
- print '/proc/mounts:'
- for x in mntD:
- print str(x)+':\t'+str(mntD[x])
-
- print ''
- print '/etc/fstab:'
- for x in fstabD:
- print str(x)+':\t'+str(fstabD[x])
- sleep(1)
- else:
- x = main()
- print '----------------------'
- print 'Length:\t'+str(len(x))
- print 'Text:\t"'+x[0]+'"'
- print 'Bars:\t"'+x[1]+'"'
- print '----------------------'
-
- print '/proc/mtab:'
- for x in mntD:
- print str(x)+':\t'+str(mntD[x])
-
- print ''
- print '/etc/fstab:'
- for x in fstabD:
- print str(x)+':\t'+str(fstabD[x])
+++ /dev/null
-#!/usr/bin/python
-"""
-szs/load - a load and cpu usage module for SZS a statusbar script for WMI
-
-
-
-CHANGELOG:
-
- v0.4 2004-12-14
- * some cleanups
- * added support for 2.4 Kernels
-
- v0.3 2004-11-26
- * implemented configurable label
- * some cleanups
-
- v0.2 2004-11-26
- * implemented cpu/io utilisation
-
- v0.1 2004-11-24
- * initial Release
- * implemented system load
-
-
-TODO:
-
-
-
-COPYRIGHT:
-
-Copyright 2004 Christoph Wegscheider <cw@wegi.net>
-
-
-LICENSE:
-
-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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-"""
-
-import os
-import szstoolbox
-
-
-# init
-oldcpusum = oldcpuutil = oldioutil = 0
-
-# load configuration
-cfg = szstoolbox.CFG('load')
-loadlabel = cfg.read('loadlabel')
-cpulabel = cfg.read('cpulabel')
-showcpu = int(cfg.read('showcpu'))
-maxload = int(cfg.read('maxload'))
-
-
-
-def main():
- global oldcpusum
- global oldcpuutil
- global oldioutil
- bars = []
-
- # cpu
- if showcpu:
- file = open('/proc/stat')
- values = [int(it) for it in file.readline().split()[1:]]
- file.close()
- newcpusum = newcpuutil = newioutil = 0
- for it in values: newcpusum += it
- for it in values[:3]: newcpuutil += it
- if szstoolbox.kernel_version[:3] == '2.6':
- for it in values[4:]: newioutil += it
- cpusum = newcpusum - oldcpusum
- bars.append(str((newcpuutil - oldcpuutil) * 100 / cpusum) + '%')
- if szstoolbox.kernel_version[:3] == '2.6':
- bars.append(str((newioutil - oldioutil) * 100 / cpusum) + '%' + cpulabel)
- oldcpusum = newcpusum
- oldcpuutil = newcpuutil
- oldioutil = newioutil
-
- # load
- if maxload > 0:
- load = os.getloadavg()
- for it in load:
- bars.append(str(int(it / maxload * 100)) + '%')
- bars[-1] += loadlabel
-
- returnli = ['']
- returnli.extend(bars)
- return returnli
-
-
-
-if __name__ == '__main__':
- import time
-
- while True:
- print main()
- time.sleep(szstoolbox.interval)
-
+++ /dev/null
-#!/usr/bin/python
-"""
-szs/memory - a RAM and swap usage module for SZS a statusbar script for WMI
-
-
-
-CHANGELOG:
-
- v0.3 2004-12-14
- * some cleanups
- * added linux 2.4 support
-
- v0.2 2004-11-26
- * implemented swap usage
- * implemented RAM usage
- * implemented configurable labels
- * some cleanups
-
- v0.1 2004-11-24
- * initial Release
-
-
-TODO:
-
-
-COPYRIGHT:
-
-Copyright 2004 Christoph Wegscheider <cw@wegi.net>
-
-
-LICENSE:
-
-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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-"""
-
-import szstoolbox
-
-
-
-# load configuration
-cfg = szstoolbox.CFG('memory')
-label = cfg.read('label')
-showram = int(cfg.read('showram'))
-showswap = int(cfg.read('showswap'))
-
-
-
-def main():
- bars = []
- file = open('/proc/meminfo')
- values = [it.split()[1] for it in file.readlines()]
- file.close()
-
- # RAM
- if showram:
- if szstoolbox.kernel_version[:3] == '2.6':
- bars.append('' + str((int(values[0]) - int(values[1]) - int(values[2]) - int(values[3])) * 100 / int(values[0])) + '%')
- else:
- bars.append('' + str((int(values[3]) - int(values[4]) - int(values[6]) - int(values[7])) * 100 / int(values[3])) + '%')
-
- # swap
- if showswap and int(values[11])>0:
- if szstoolbox.kernel_version[:3] == '2.6':
- bars.append(str((int(values[11]) - int(values[12])) * 100 / int(values[11])) + '%')
- else:
- bars.append(str((int(values[15]) - int(values[16])) * 100 / int(values[15])) + '%')
-
- # label
- if showram or (showswap and int(values[11])>0):
- bars[-1] += label
-
- returnli = ['']
- returnli.extend(bars)
- return returnli
-
-
-
-if __name__ == '__main__':
- import time
-
- while True:
- print main()
- time.sleep(szstoolbox.interval)
-
+++ /dev/null
- Module Developer Reference
- ==========================
-
-CONTRIBUTIONS
-=============
-
-Contributions are always welcomed. The main communication happens in the #szs
-channel at irc.freenode.org. There is also a mailinglist at szs-devel@wegi.net.
-To subscribe send a mail to minimalist@wegi.net with the following Subject:
-subscribe szs-devel
-
-
-
-SOURCE
-======
-
-We use the darcs (http://www.darcs.net) Version Control System for the
-developement of szs. The main repository is at http://darcs.wegi.net/szs
-To get the source run 'darcs get http://darcs.wegi.net/szs'. To stay up-to-date
-run 'darcs pull'.
-
-If you want to submit patches please run the following 2 commands in the szs
-source directory:
-
-$ echo Yourname <youruser@server.com> > _darcs/prefs/author
-$ echo szs-darcs@wegi.net > _darcs/prefs/email
-
-Make yourself familiar with darcs, a good manual is at http://darcs.net/manual/
-To send us the patch simple run 'darcs send', the patch will be automatically
-forwarded to the szs-devel@wegi.net mailinglist.
-
-
-
-HOWTO MAKE A MODULE
-===================
-
-A szs module is a simple python script which has a main() function returning a
-list. The first item must be a statustext or ''. All other items are bars. Bars
-are those colored gauges at the right side of your statusbar. the following
-syntax applies to bars:
-
-<value>%<label>
-
-where <value> must be between 0 and 100 and <label> is optional.
-
-szstoolbox.py provides some usefull tools, especially for reading the config
-from szs.cfg.
-
-In szs.cfg you can configure your module, The following rules apply:
-
- -- the config key has to start with: <modulname>.
- -- if you need to separate values you must use ','
- -- if you need a sub separator use ':'
- -- if you need more separators you could use anything except ',', '%' and ':'
+++ /dev/null
-##################################################
-# GLOBALS #
-##################################################
-# Global variables... this variables are used by all modules
-
-# the script uses this file to log the debugmessages
-global.logfile=pyszs.log
-
-# Up to how many digits after comma should be roundet?
-global.accuracy=2 # (not all modules support that)
-
-# Debuglevel Reference:
-#
-# Level Name Demand
-# ===== ==== ======
-# 0 None Show absolutly no debugmessages
-# 1 Critical Show only criticals (if the prog crashes)
-# 2 Warning Show warnmessages (the prog can override it)
-# 3 Debug Show all the stuff
-global.debuglevel=0
-
-# time in seconds to re-calculate and re-call the modules
-global.interval=1
-
-# separator thats separates the displayed texts (not the meters/bars!)
-# spaces are cognited
-global.seperator= |
-
-
-
-##################################################
-# MAIN #
-##################################################
-# the main program
-
-# The 'welcometext'. Set it to !NONE if you don't want it.
-main.welcome=
-
-# The modules to load.
-#main.modules=biff,battery,load,memory,bandwidth,clock,text,diskusage
-main.modules=load,memory,clock
-
-# The used remote programs
-# for wmi-10:
-main.prog_txt=/usr/bin/wmiremote -t
-main.prog_bar=/usr/bin/wmiremote -m
-# for wmi around version 10-current-710 and possibly wmii:
-#main.prog_txt=/usr/bin/wmir set /common/statusbar/text
-#main.prog_bar=/usr/bin/wmir set /common/meter/data
-
-
-
-##################################################
-# BATTERY #
-##################################################
-# battery module shows the load of your battery
-
-# if you deactivated your battery, set it to zero
-# (not needed in most cases, cause autocognition)
-battery.activate=1
-
-# statefile (usually /proc/acpi/battery/BAT0/state)
-battery.batstate=/proc/acpi/battery/BAT0/state
-
-# infofile (usually /proc/acpi/battery/BAT0/info)
-battery.batinfo=/proc/acpi/battery/BAT0/info
-
-# use "animated" bar/meter if the battery is in loading state?
-battery.animbatload=1
-
-# the bar label
-battery.label=bat
-
-# variables are possible to show the loadingstate in the label
-battery.tvar=-1
-battery.lvar=1
-# variable reference:
-# 0 shows nothing
-# 1 shows the procentual value
-# 2 shows the real value
-# 3 shows both
-# if tvar is a negative value, no text would be showed
-# if tvar is 0, /\ is showed if the battery is charging
-# and \/ is showed if it discharges
-
-
-
-
-##################################################
-# BANDWIDTH #
-##################################################
-# bandwidth monitors the bandwidth of given interfaces
-
-# define the interfaces to monitor (all values are in kBytes)
-# maxdown/up are optional. If a real value exceeds the given max value
-# the max value will be adjusted
-# syntax: <ifname>:<label>:<max down bandwidth>:<max up bandwidth>,<ifname...
-#bandwidth.ifs=ppp0:inet,eth0:LAN:10000:10000
-bandwidth.ifs=eth0:eth0:1000:1000,eth1:eth1:1000:1000
-#bandwidth.ifs=eth0:eth0:1000:1000,eth1:eth1:1000:1000,eth2:WLAN:1000:1000
-
-##################################################
-# BIFF #
-##################################################
-# biff checks your imap/pop accounts for new mail
-
-# check every biff.imapmultiplier * global.interval seconds for new mails
-# necessary to bring down imap server load, if you don't care set it to 1
-biff.imapmultiplier=60
-
-# imap account to monitor in the format:
-# <server>:<user>:<pass><ssl yes/no>,<mailbox>:<label>,<mailbox>:<label...
-# multiple accounts are allowed
-biff.imapaccount=imap.server.com:user:pass:no,INBOX:IN,lists.szs-devel:szs
-biff.imapaccount=imaps.server2.com:user2:pass2:yes,INBOX:IN2
-
-# check every biff.popmultiplier * global.interval seconds for new mails
-# necessary to bring down pop server load, if you don't care set it to 1
-biff.popmultiplier=300
-
-# pop3 account to monitor in the format:
-# <server>:<user>:<pass>:<ssl yes/no>:<label>
-# multiple accounts are allowed
-# Note: SSL is only supported in pyton 2.4 or above
-biff.popaccount=pop.server.com:user:pass:no:label
-biff.popaccount=pop.server2.com:user2:pass2:no:label2
-biff.popaccount=pop.sslserver.com:user2:pass2:yes:label3
-
-
-
-##################################################
-# LOAD #
-##################################################
-# load shows the system load and the CPU utilization
-# system load shows the 1, 5, 15 minute average
-# CPU util. shows cpu(system+user+nice) and io(io+hwint+swint) utilization
-# CPU util. works only on linux 2.6
-
-# system load label
-load.loadlabel=load
-
-# maximum system load (100%), 0 for omitting the system load
-load.maxload=3
-
-# cpu/io label
-load.cpulabel=CPU/IO
-
-# 1 for showing cpu/io utilization and 0 for omitting it
-load.showcpu=1
-
-
-
-##################################################
-# MEMORY #
-##################################################
-# memory shows the RAM and swap usage
-
-# label
-memory.label=RAM/swap
-
-# 1 for showing RAM usage and 0 for omitting it
-memory.showram=1
-
-# 1 for showing swap usage and 0 for omitting it
-memory.showswap=1
-
-
-
-##################################################
-# CLOCK #
-##################################################
-# clock shows the time
-
-# DayDDMonYY HH:MM:SS, works like `date`
-#clock.format=%a%d%b%y %N
-clock.format=%A %d.%m.%Y %R
-#clock.format=%A %d.%m.%Y %T
-
-# The Workbeat is a time range which clock counts procentual
-# (eg ...=8:00,16:00; if it is 12 o'Clock, clock gives 50% back,
-# if it is 14 o'Clock, clock gives 75% back, and so on)
-# leave it empty, if you do not want to see it
-# please use 24 hour system
-#clock.workbeat=22:00,23:00
-clock.workbeat=00:01,23:59
-
-# show the workbeat if it is outside the times?
-clock.wboutside=yes
-
-# value to start with? (negative values are possible)
-clock.sw=-10
-
-# which value to end with?
-clock.ew=120
-
-# should clock counts up or down?
-clock.wbdirection=up
-
-# show it as text, bar/meter or both?
-clock.wbshow=text
-
-# the meter label if you want it
-clock.wblabel=wb
-
-
-
-##################################################
-# TEXT #
-##################################################
-# text shows only some specific (bar-)text
-
-# the text
-text.txt=mikas laptop...
-
-# show the text as marquee (0 or 1)
-text.marquee=1
-
-# length of marquee-text
-text.length=10
-
-# the bartext
-#text.bar=10%,20%,30%,40%,50%,60%,70%,80%,90%stuff
-text.bar=
-
-
-
-##################################################
-# DISKUSAGE #
-##################################################
-# diskusage shows the usage of your partitions (if they be mounted)
-
-# the disks you want to be shown (device:label)
-diskusage.disks=hda2:root
-diskusage.disks=hda3:home
-diskusage.disks=sda1:usb
-diskusage.disks=loop0:loop
-# also possible is this way:
-# diskusage.disks=hda2:root,hda5:home,sda1:usb,loop0:loop
+++ /dev/null
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-"""
-COPYRIGHT:
-
-Copyright 2004 Norman Köhring <nkoehring-at-web-dot-de>
-
-
-LICENSE:
-
-This program and all of its modules are 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-For more information read the file LICENSE
-"""
-
-
-import sys, szstoolbox
-from commands import getstatusoutput
-from time import strftime,sleep,time
-from os.path import exists as fexists
-
-
-# initial variables
-progname = 'Python SZS '
-progver = '1st'
-
-class moduleclass:
- """ class for importing the modules and get there outputs
- Usage: It should be enough to create an instance... """
-
- def __init__(self):
- """ initialize all the things in modules """
-
- x = str(cfgM.read('modules')).strip().split(',')
- self.mods=[]
- msg.debug('Module: %s' % str(x), 3)
- for mod in x:
- try:
- self.mods.append(__import__(mod, globals(), locals(), []))
- except ImportError:
- msg.debug("Can't find %s. Maybe you dispelled it?" % mod, 2)
-
- except ValueError:
- msg.debug("No modules to load.", 2)
- x = []
-
- except:
- raise
-
-
-
- def txtsnbars(self):
- x = []
- y = []
-# lst = []
- for mod in self.mods:
- try:
- lst = mod.main()
- lst[0] = lst[0].strip()
- if lst[0] != '':
- x.append(lst[0])
-
- y.extend(lst[1:])
-
- except:
- raise
-
- return [x,y]
-
-
-
-class init:
- """ this class contains all function for the script initialization """
-
- def __init__(self):
- """ yes, also init needs an init! """
-
- init.classes(self)
- init.args(self)
- init.vars(self)
-
-
-
- def classes(self):
- """ initialize the classes """
-
- global cfg
- global cfgG
- global cfgM
- global msg
- global modules
- global xtra
- msg = szstoolbox.MSG()
- cfg = szstoolbox.CFG('')
- cfgM = cfg('main')
- modules = moduleclass()
- xtra = szstoolbox.XTRA()
-
-
-
- def args(self):
- """ initializes the arguments """
-
- if len(sys.argv) >= 2:
- if sys.argv[1] in ('-?','-h','--help'):
- msg.usage()
- sys.exit(0)
- else:
- print 'No parameters, sorry...'
- print '-?, -h or --help for help'
- sys.exit(0)
-
-
-
- def vars(self):
- """ sets the variables """
-
- global welcome
- global text
- global prog
- global seperator
- welcome = cfgM.read('welcome').strip()
- prog = [str(cfgM.read('prog_txt')).strip(),str(cfgM.read('prog_bar')).strip()]
- if not fexists(prog[0].split(' ')[0]):
- msg.debug(str(prog[0])+' doesn\'t not exists, switched it to `echo `',2)
- prog[0] = 'echo '
- else:
- msg.debug('Using '+str(prog[0])+' to display text',3)
-
- if not fexists(prog[1].split(' ')[0]):
- msg.debug(str(prog[1])+' doesn\'t not exists, switched it to `echo `',2)
- prog[1] = 'echo '
- else:
- msg.debug('Using \''+str(prog[1])+'\' to display bars',3)
-
- seperator = cfg('global').read('seperator')
-
-
-
-def main():
- """ the main function: nothing special. it only runs the commands and maybe return the errors """
-
- if 'welcome' in globals() and welcome <> '!NONE':
- if time() - szstoolbox.starttime <= 3:
- now = welcome
- else:
- now = ''
-
- txtsnbars = modules.txtsnbars()
-
-# for i,j in txtsnbars:
- txts = seperator.join(txtsnbars[0]).strip()
- bars = ','.join(txtsnbars[1]).strip(',')
-
- cmdtxt = str(prog[0]+' \''+now+' '+txts+'\'')
- cmdbar = str(prog[1]+' \''+bars+'\'')
-
- error = getstatusoutput(cmdtxt)
- if error[0] == 0:
- error = getstatusoutput(cmdbar)
- return error
-
-
-
-if __name__ == "__main__":
- init()
- error_nr = 0
- error_msg = 'noerror'
- while error_nr == 0:
- try:
- error = main()
- error_nr = error[0]
- error_msg = error[1]
- sleep(szstoolbox.interval)
- except KeyboardInterrupt:
- sys.exit('goodbye')
- except:
- raise
- sys.exit("Terminated cause above error(s)") # eigentlich ist diese Zeile hirnlos :-S
-
-
- print 'Error...'
-# print 'Nr: '+str(error_nr)+' Msg:'+error_msg
- print str(error)
- sys.exit('error')
+++ /dev/null
-Documentation for module szstoolbox.
-
-Classes in szstoolbox:
-
-Error(Exception):
- """A general Exception which can be used/inherited
- from any module"""
-
-msg:
-""" all functions to give messages to whatever """
- (__init__)
- usage: """ prints a helpmessage to stdout
- Usage: msg.usage([modulename [, moduletext]])
- Returns: nothing """
-
- help: """ prints debugmessages if lvl >= debuglvl
- Usage: debug(message, lvl, source [, x=0])
- Returns: cache if x != 0 else True """
-
- debug: """ prints debugmessages if lvl >= debuglvl
- Usage: debug(message, lvl, source [, x=0])
- Returns: cache if x != 0 else True """
-
- say: """ parses the languagefiles and give the right text
- Usage: msg.say(dict, msgcode)
- Returns: the message in right language """
-
- log: """ sends messages to the configured logfile
- should only used by msg.debug """
-
-
-cfg:
-""" functions for reading and writing the config """
- (__init__)
- settings: """ returns the actual settings
- Usage: cfg.settings()
- Returns: ['value','group','cfgF path'] """
-
- read: """ reads the configurationfile and returns the values
- Usage: cfg.read(value)
- Returns: whats inside value """
-
- write: """ this function does nothing at the moment
- in future it writes into the configfiles """
-
-
-xtra:
-""" some extra functions like counters """
- (__init__)
- countadd: """ counter for addition
- Usage: xtra.countadd([y [,x ]])
- where y (standard 1) is the value to add to x
- Returns: the new value of x """
-
- countsub: """ counter for substraction
- Usage: xtra.countsub([y ],x ]),
- where y (standard 1) is the value to substract
- from x
- Returns: the new value of x """
-
- strrotate: """ trying to build a string rotator
- Usage: xtra.strrotate(str, length)
- where 'str' is the String to rotate in 'length' units
- Returns: part of str """
- ATTENTION: this function is untested, bugreports
- and suggestions are desired
-
- savevar: """ saves variables in the cache, so your module
- can use it later again...
- Usage: xtra.savevar(name, value)
- Returns: Boolean """
-
- getvar: """ returns the value of name
- Usage: xtra.getvar(name)
- Returns: value of name """
-
- delvar: """ deletes the variable from list
- Usage: xtra.delvar(name)
- Returns: Boolean """
-
-
-Global variables in szstoolbox:
-
-global cfgF: name of configuration file
-global langF: name of language file
-global langmod: alias for imported language module
-global logfile: name of log file
-global language: name of the language (eg 'en' or 'de')
-global accuracy: accuracy (positions after decimal point)
-global interval: renew time
-global debuglevel: debuglevel
-global cfgG: cfg('global')
-global starttime: secs since epoch where the script was started
-global kernel_version: Linux Kernel version
+++ /dev/null
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-
-# Title: toolbox for szs script
-# Date: Saturday 6th of November 2004
-# Author: Norman Köhring
-# License: GPL
-
-from sys import argv
-from os import chdir,getenv
-from os.path import dirname,abspath
-from os.path import exists as fexists
-from time import strftime,time
-import inspect
-chdir(dirname(abspath(argv[0])))
-
-
-
-class Error(Exception):
- """A general Exception which can be used/inherited
- from any module"""
- def __init__(self, reason):
- self.reason = reason
- def __str__(self):
- return repr(self.reason)
-
-
-
-class MSG:
- """ all functions to give messages to whatever
- this class contains: help, debug, say and log """
-
-
- def ___init___(self):
- """ initializes the variables """
-
- self.message = ''
- self.place = ''
- self.msgcache = []
-
-
-
-
- def usage(self, modname = None, modtxt = None):
- """ prints a helpmessage to stdout
- Usage: msg.usage([modulename [, moduletext ]])
- Returns: nothing """
-
- print progname+progver
- if modname:
- print "Module:"+ str(modname)
-
- if modtxt:
- print modtxt
- else:
- print """
- Usage:
- ./szs.py
-
- No parameters at the moment.
- For configurations look at szs.cfg,
- for more help look at README.
- """
-
-
-
- def debug(self, msg, lvl):
- """ prints debugmessages if lvl >= debuglvl
- Usage: debug(message, lvl, source)
- Returns: True and prints the debugmessage """
-
- if lvl <= debuglevel: # and x == 0:
- src = inspect.getouterframes(inspect.currentframe())[1]
- prefix = ['Critical: ', 'Warning: ', 'Debug: '][lvl-1]
- MSG.log(self, prefix+str(src)+': '+msg)
- print prefix+src[1].split('/')[-1].split('.')[0]+': '+src[3]+'(): '+msg
-
- return True
-# if cache.get(src) <> None and msg not in cache.get(src)\
-# or cache.get(src) == None:
-# MSG.log(self, str(src)+": "+msg)
-# print 'Debug from '+str(src)+': '+msg
-#
-# if cache.has_key(src):
-# if cache.get(src).has_key(msg):
-# cache.get(src).__setitem__(msg,cache.get(src).get(msg)+1)
-# else:
-# cache.get(src).__setitem__(msg,1)
-# else:
-# cache.__setitem__(src,{msg:1})
-#
-# return True
-#
-# elif x == 2:
-# MSG.log(self, str(src)+": "+msg)
-# print 'Debug from '+str(src)+': '+msg
-#
-# elif x == 1:
-# MSG.log(self, "...", True)
-# return cache
-# else:
-# return False
-
-
-
- def say(self, dict, msg):
- """ dont use it... froze this funtion till next release """
-
- print "DONT USE THIS FUNCTION (see README for more details)"
- return None
-
-
-
- def log(self, msg, write=False, msgcache=[]):
- """ sends messages to the configured logfile
- should only be used by 'debug' """
-
-
- time = strftime('%a%d%b%y %X')
- if len(msg) > 0 and msg not in msgcache:
- if write:
- F = open(logfile, 'a')
- F.writelines(msgcache)
- F.close()
- else:
- msgcache.append(time+': '+msg+'\n')
-
-
-
-class CFG:
- """ functions for reading and writing the config """
-
-
- def __init__(self, group):
-
- self.value = ''
- self.group = group
-
- cfgR = file(cfgF,'r')
- self.cfgL = cfgR.readlines()
- cfgR.close()
-
-
-
- def __call__(self, group):
-
- self.group = group
- return self
-
-
-
- def settings(self):
- """ returns the actual settings
- Usage: cfg.settings()
- Returns: ['value','group','cfgF path'] """
-
-
- return [self.value, self.group, cfgF.name]
-
-
-
- def read(self, value):
- """ reads the configurationfile and returns the values
- Usage: cfg.read(value)
- Returns: whats inside value """
-
-
- self.value = value
- lst = []
-
- for part in self.cfgL:
- if part.find('#') < 0:
- if part.split('=')[0] == self.group+'.'+self.value:
- lst.append(part.split('=')[1].strip('\n'))
- elif part.find('#') > 0:
- part = part.split('#')[0]
- if part.split('=')[0] == self.group+'.'+self.value:
- lst.append(part.split('=')[1].strip('\n'))
- if len(lst) > 1:
- return lst
- elif len(lst) == 1:
- return lst[0]
- else:
- return None
-
-
-
- def write(self, value):
- """ this function does nothing at the moment
- in future it writes into the configfiles
- ...it is maybe planned for third release """
-
-
- print "Damn fnords!"
-
-
-
-class XTRA:
- """ some extra functions like counters """
-
- def __init__(self):
- """ yeah... the init... """
-
- self.cache = {}
-
-
- def countadd(self, y=1, x=[0]):
- """ counter for addition; Usage: xtra.countadd([y [,x ]])
- where y (standard 1) is the value to add to x
- Returns: the new value of x """
-
- x[0] += y
- return x[0]
-
-
-
- def countsub(self, y=1, x=[0]):
- """ counter for substraction
- Usage: xtra.countsub([y ],x ]),
- where y (standard 1) is the value to substract from x
- Returns: the new value of x """
-
- x[0] -= y
- return x[0]
-
-
-
- def strrotate(self, t, l, x=[0]):
- """ trying to build a string rotator
- Usage: xtra.strrotate(str, length)
- where 'str' is the String to rotate in
- 'length' units
- Returns: part of str """
-
- if x[0] <= len(t):
- x[0] += 1
- else:
- x[0] = 0
-
- ret = [x[0],t[x[0]:x[0]+l]]
- return ret
-
-
-
- def savevar(self, name, value):
- """ saves variables in the cache, so your module
- can use it later again...
- Usage: xtra.savevar(name, value)
- Returns: Boolean """
-
- self.cache[name] = value
- if self.cache.has_key(name):
- return True
- else:
- return False
-
-
-
- def getvar(self, name):
- """ returns the value of name
- Usage: xtra.getvar(name)
- Returns: value of name """
-
- return self.cache[name]
-
-
-
- def delvar(self, name):
- """ deletes the variable from list
- Usage: xtra.delvar(name)
- Returns: Boolean """
-
- del self.cache[name]
- if self.cache.has_key(name):
- return False
- else:
- return True
-
-
-
-global cfgF
-global logfile
-global accuracy
-global interval
-global debuglevel
-global cfgG
-global starttime
-
-if fexists(getenv('HOME')+'/.wmi/szs.cfg'):
- cfgF = getenv('HOME')+'/.wmi/szs.cfg'
-else:
- cfgF = 'szs.cfg'
-cfg = CFG('')
-cfgG = cfg('global')
-starttime = time()
-
-logfile = cfgG.read('logfile').strip()
-debuglevel = int(cfgG.read('debuglevel').strip())
-accuracy = int(cfgG.read('accuracy').strip())
-interval = float(cfgG.read('interval').strip())
-
-# determine kernel version
-fd = open('/proc/version')
-kernel_version = fd.readline()[14:20]
-fd.close()
-
+++ /dev/null
-#!/usr/bin/python
-
-# module to show specific text static or as marquee
-
-from szstoolbox import CFG,XTRA
-
-def init():
- cfg = CFG('text')
- xtra = XTRA()
- global xtra,txt,bar,marq,l
- txt = str(cfg.read('txt')).strip()
- bar = str(cfg.read('bar')).strip()
- marq = int(cfg.read('marquee'))
- if marq == 1:
- l = int(cfg.read('length'))
- else:
- l = None
-
-def main():
- ret = ['','']
- if not 'txt' in globals():
- init()
- else:
- if marq == 1:
- ret[0] = xtra.strrotate(txt,l)[1]
- else:
- ret[0] = txt
-
- if len(bar) > 0:
- ret[1] = bar
- else:
- ret[1] = ''
-
- return ret
-
- return ret
+++ /dev/null
-# Filename: theme.conf
-# Purpose: grml theme for window manager 'WMI'
-# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
-# Bug-Reports: see http://grml.org/bugs/
-# License: This file is licensed under the GPL v2.
-# Latest change: Die Mär 01 10:33:52 CET 2005 [mika]
-################################################################################
-
-color.bar.background=orange
-color.bar.shadow=grey
-color.bar.shine=darkgrey
-color.bar.text=lightyellow
-
-color.button.background.normal=darkgrey
-color.button.background.pressed=snow
-color.button.border.shadow.normal=grey
-color.button.border.shadow.pressed=grey
-color.button.border.shine.normal=grey
-color.button.border.shine.pressed=grey
-color.button.figure.shadow.normal=lightyellow
-color.button.figure.shadow.pressed=black
-color.button.figure.shine.normal=lightyellow
-color.button.figure.shine.pressed=black
-
-color.focusreq.background=red
-color.focusreq.shadow=red
-color.focusreq.shine=red
-color.focusreq.text=red
-
-color.frame.background.focussed=grey
-color.frame.background.normal=grey
-color.frame.pseudo=grey
-color.frame.shadow.focussed=darkgrey
-color.frame.shadow.normal=darkgrey
-color.frame.shine.focussed=darkgrey
-color.frame.shine.normal=darkgrey
-
-color.label.background.focussed=snow
-color.label.background.normal=grey
-color.label.shadow.focussed=grey
-color.label.shadow.normal=grey
-color.label.shine.focussed=grey
-
-color.meter.background=blue
-color.meter.border.shadow=red
-color.meter.border.shine=red
-color.meter.figure.high=red
-color.meter.figure.low=red
-color.meter.figure.normal=red
-
-color.tab.background.active.focussed=orange
-color.tab.background.active.normal=grey
-color.tab.background.inactive.focussed=darkgrey
-color.tab.background.inactive.normal=darkgrey
-color.tab.shadow.active.focussed=grey
-color.tab.shadow.active.normal=grey
-color.tab.shadow.inactive.focussed=grey
-color.tab.shadow.inactive.normal=grey
-color.tab.shine.active.focussed=grey
-color.tab.shine.active.normal=grey
-color.tab.shine.inactive.focussed=grey
-color.tab.shine.inactive.normal=grey
-color.tab.text.active.focussed=black
-color.tab.text.active.normal=midnightblue
-color.tab.text.inactive.focussed=black
-color.tab.text.inactive.normal=black
-exec="/home/grml/.wmi/szs2.1/szs.py"
-# exec="wmsetbg -s /usr/share/grml/desktop.png"
-# exec="display -window root -geometry 1024x768! /usr/share/grml/desktop.png"
-
-## END OF FILE #################################################################
+++ /dev/null
-client.Dillo::dillo.mode=float
-monitor[0].focused=0
-monitor[0].workspace[0].clientbar=yes
-monitor[0].workspace[0].name="workspace 1"
-monitor[0].workspace[0].slot=default
-monitor[0].workspace[0].statusbar=yes
-monitor[0].workspace[1].clientbar=yes
-monitor[0].workspace[1].name="workspace 2"
-monitor[0].workspace[1].slot=default
-monitor[0].workspace[1].statusbar=yes
-monitor[0].workspace[2].clientbar=yes
-monitor[0].workspace[2].name="workspace 3"
-monitor[0].workspace[2].slot=default
-monitor[0].workspace[2].statusbar=yes
-monitor[0].workspace[3].clientbar=yes
-monitor[0].workspace[3].name="workspace 4"
-monitor[0].workspace[3].slot=default
-monitor[0].workspace[3].statusbar=yes
-monitor[0].workspaces=4