You are not logged in.

#676 2009-05-19 02:58:25

ootput
Member
From: Sydney, Australia
Registered: 2006-06-13
Posts: 114
Website

Re: May 2009 Screenshots

lolilolicon wrote:
ootput wrote:

Now using Debian fulltime, with Arch still on my lappy.

Debian setup is basically the same as it was with Arch.

http://omploader.org/vMXA3Zw/ootput-scr … -thumb.png

wallpaper please ! And .Xdefaults if you don't mind. ^^

It's Alex's dusk - it just seems unfamiliar to you because of the tint. smile
Xresources found in sig wink

Offline

#677 2009-05-19 03:12:13

Varreon
Member
Registered: 2008-07-03
Posts: 95

Re: May 2009 Screenshots

na12 wrote:
xd-0 wrote:

Daisuke_Aramaki

You can't post an awesome wallpaper like that and not include a link! big_smile

+1

http://g.imagehost.org/t/0179/2009-05-1 … _scrot.jpg

http://g.imagehost.org/t/0811/2009-05-1 … _scrot.jpg

http://g.imagehost.org/t/0426/2009-05-1 … _scrot.jpg

some nice pipe menus in openbox

So is that running Arch or Gentoo? You have a nearly identical setup on the openbox thread. Or do you just have 2 systems setup very similarly?

Offline

#678 2009-05-19 03:43:26

Peasantoid
Member
Registered: 2009-04-26
Posts: 928
Website

Re: May 2009 Screenshots

Editing shiz in vim.

thumb-1242704499.png

Only thing left to do is make the tab bar less fugly...

# Oh, and I ditched cmus in favor of mpd + ncmpc.

Last edited by Peasantoid (2009-05-19 03:43:57)

Offline

#679 2009-05-19 05:54:09

unexist
Member
From: Germany
Registered: 2008-05-13
Posts: 301
Website

Re: May 2009 Screenshots

Subtle vs Conky smile

20090519-fyx497g56r8rgke7my264c4d4s.preview.jpg

Offline

#680 2009-05-19 06:44:35

NeoXP
Member
From: MS Matrix
Registered: 2009-01-09
Posts: 206
Website

Re: May 2009 Screenshots

na12 wrote:
xd-0 wrote:

Daisuke_Aramaki

You can't post an awesome wallpaper like that and not include a link! big_smile

+1

http://g.imagehost.org/t/0179/2009-05-1 … _scrot.jpg

http://g.imagehost.org/t/0811/2009-05-1 … _scrot.jpg

http://g.imagehost.org/t/0426/2009-05-1 … _scrot.jpg

some nice pipe menus in openbox

Could you please share your pipe menus with us?


Arch x86_64 on HP 6820s and on HP nx9420. Registered Linux User 350155, since 24-03-2004
"Everyone said that it could not be done, until someone came along who didn't know that."

Offline

#681 2009-05-19 07:23:36

na12
Member
From: /home/serbia
Registered: 2008-12-23
Posts: 752

Re: May 2009 Screenshots

Varreon wrote:
na12 wrote:
xd-0 wrote:

Daisuke_Aramaki

You can't post an awesome wallpaper like that and not include a link! big_smile

+1

http://g.imagehost.org/t/0179/2009-05-1 … _scrot.jpg

http://g.imagehost.org/t/0811/2009-05-1 … _scrot.jpg

http://g.imagehost.org/t/0426/2009-05-1 … _scrot.jpg

some nice pipe menus in openbox

So is that running Arch or Gentoo? You have a nearly identical setup on the openbox thread. Or do you just have 2 systems setup very similarly?

Yes,I have 2 system setup very similarly,Arch and Gentoo.

NeoXP wrote:
na12 wrote:
xd-0 wrote:

Daisuke_Aramaki

You can't post an awesome wallpaper like that and not include a link! big_smile

+1

http://g.imagehost.org/t/0179/2009-05-1 … _scrot.jpg

http://g.imagehost.org/t/0811/2009-05-1 … _scrot.jpg

http://g.imagehost.org/t/0426/2009-05-1 … _scrot.jpg

some nice pipe menus in openbox

Could you please share your pipe menus with us?

Sure,yweather script found here http://bbs.archlinux.org/viewtopic.php?id=43432

Places.pl

#!/usr/bin/perl

use strict;
use warnings;
use MIME::Types;

# dirlist.pl by Dave Foster <daf@minuslab.net>
# Openbox pipe menu that shows the contents of a directory, recursively.
# REQUIRES MIME::Types module. It's available in portage, albiet ~masked: dev-perl/MIME-Types

# install instructions:
# 1) Put script somewhere (~/.config/openbox/scripts/ works well).  Preferably in $PATH.
# 2) Make script executable (chmod +x dirlist.pl)
# 3) Edit openbox menu file:
#    a) Add <menu id="dirlist-menu" label="Dir" execute="pathto/dirlist.pl thediryouwanttosee" />
#    b) Add <menu id="dirlist-menu" somewhere on your root menu or wherever you want it.
# 4) repeat as needed.

# CONFIG: set these to what you want to do with each item in $HOME/.dirlist

# Changelog (starting May 05, by Matt Fitzgibbons, sildan@inbox.com)
#    09 June 05    Version 1.4: Neil Bird rewrote my crappy limiter code (thanks)
#                and added ability to read in a config file
#    03 June 05    Version 1.4.-1: Added a file limiter and "More..." submenu!
#    04  May 05    Version 1.3.1: Changed display to get rid of full path (which made for wide menus),
#                fixed quoting bug to correctly compensate for spaces in file names

# Changelog -
#  10 Oct 2004 - Version 1.3 (Heading fixed, added MIME Type support, bug fix for "/")
#   9 Oct 2004 - Version 1.2 (Fixed & handling)
#         Version 1.1 (Added ability to ignore files/dirs starting with .)
#         Version 1.0 (Initial Release)

#
# don't touch, these must be defined before you can set your types!
#
my MIME::Types $types = MIME::Types->new;

my @mimeHandlers = ();
my @mimeRangeHandlers = ();
my @mimeDefaultHandlers = ();

# <CONFIG> - cut'n'paste this to ~/.dirlist to customize, otherwise the defaults will be used

# ###########################
# general config
# ###########################

# number of files to display per menu
my $limitsize = 20;

# action to take on directory items (top of the menu)
my $diraction = "thunar ";

# show files sizes (0 or 1)
my $dofilesize = 1;

# ignore files/dirs beginning with . (0 or 1)
my $ignoredotfiles = 0;

# the default action to take.  %1 is replaced by a filename.
# if you don't want anything to happen on unregistered types, set this variable to "true".
my $defaultAction = "mousepad %1";

# the command for "run in terminal"
my $termCommand = "xterm -e";

# ###########################
# /general config
# ###########################

# ###########################
# set your mime handlers here
# ###########################

# to add an action for a specific mime type:
#     add_mime_handler("MIME-TYPE", "ACTION", run in terminal (1) );
#
#    In the action, a %1 indicates the filename.
#   You can leave the last argument off if you don't want it to run in a terminal.
#    If you want to run the file (say for application/* types), just put "%1" as the action.
#
#    To cover all of a range of MIMEs, use this notation: type/*
#    Example: add_mime_handler("text/*", "gedit %1");
#    Specific defined MIMEs take precedence over ranged defined types.

## add_mime_handler("text/*", "mousepad %1");
## add_mime_handler("application/x-perl", "mousepad %1");
## add_mime_handler("application/*", %1);
## add_mime_handler("image/*", "rietretto %1");
## add_mime_handler("video/*", "xine %1");
## add_mime_handler("audio/*", "xfmedia %1");

# ##########################
# / set mime handlers
# ##########################

# </CONFIG>

# Custom config?
if (! -f "$ENV{HOME}/.dirlist" )
{
    # Default MIME
    add_mime_handler("text/*", "mousepad %1");
    add_mime_handler("application/x-perl", "mousepad %1");
        add_mime_handler("application/x-python", "mousepad %1");
    add_mime_handler("application/*", %1);
    add_mime_handler("image/*", "ristretto %1");
    add_mime_handler("video/*", "xine %1");
    add_mime_handler("audio/*", "xfmedia %1");
}
else
{
    # User's custom config.
    eval( `cat $ENV{HOME}/.dirlist` );
}

#
# begin script
#

# couple vars for more... stuff
my $limiter = 0;
my $page = 0;


# process args.
my @initargv = @ARGV;    # for More...
while (defined($ARGV[0])  &&  defined($ARGV[1])  &&  $ARGV[0] =~ /^--/o)
{
    my $cmd = shift @ARGV;
    my $arg = shift @ARGV;
    $page = $arg            if $cmd eq '--page';
    $limitsize = $arg       if $cmd eq '--limit';
    $diraction = $arg       if $cmd eq '--diraction';
    $dofilesize = $arg      if $cmd eq '--filesize';
    $ignoredotfiles = $arg  if $cmd eq '--ignorehidden';
    $defaultAction = $arg   if $cmd eq '--defaultaction';
    $termCommand = $arg     if $cmd eq '--termcommand';
}

# handle directory not being passed in
if ( scalar(@ARGV) < 1 ) {
    print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
    print "<openbox_pipe_menu>\n";

    print "\t<item label=\"ER: NO DIR\">\n";
    print "\t\t<action name=\"Execute\"><execute>true</execute></action>\n";
    print "\t</item>\n";

    print "</openbox_pipe_menu>\n";
    exit;
}


# start pipe menu
print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
print "<openbox_pipe_menu>\n";

# set up directory
my $dir = $ARGV[0];
$dir =~ s/\$(\w+)/$ENV{$1}/;

opendir DIR, $dir;
my @files = readdir DIR;
closedir DIR;
@files = sort(@files);

my @dirs = ();
my @keepfiles = ();

# construct file name strings
my $absolute;
my $filecount = 0;
my $thispage = 0;
foreach my $file ( @files ) {
    next if ( $file eq "." || $file eq ".." );
    next if ( $ignoredotfiles && substr($file,0,1) eq ".");
    $absolute = $dir;
    $absolute = $absolute . "/" if ( substr($absolute,-1) ne "/" );
    $absolute = $absolute . $file;

    if ($filecount == $limitsize)
    {
        # Menu already full;  is this the right one or a parent one?
        if ($thispage == $page)
        {
            # This is it; finish with more to go
            $limiter = 1;
            last;
        }
        else
        {
            # Move on to next page
            @dirs = ();
            @keepfiles = ();
            $filecount = 0;
            $thispage++;
        }
    }

    # Add this item
    if ( -d $absolute ) {
        push @dirs, $absolute;
    } elsif ( -f $absolute ) {
        push @keepfiles, $file;
    }
    $filecount++;
}


# print header
my @chunks = split /\//, $dir;
my $last = ( $dir eq "/" ) ? "/" : $chunks[$#chunks];

if (!$page) {
    print "\t<item label=\"" . string_protect($last) . "\">\n";
    print "\t\t<action name=\"Execute\"><execute>$diraction " . string_protect($dir) . "</execute></action>\n";
    print "\t</item>\n";
}

# print the entry for the more list
if ($limiter)
{
    my $nextpage = $page+1;
    my $newargv = '';
    # Re-create argv with new --page
    for (my $arg = 0; $arg <= $#initargv; $arg++)
    {
        if ($initargv[$arg] eq '--page')
        {
            $arg++;
        }
        else
        {
            my $newarg = filename_protect($initargv[$arg]);
            $newargv = $newargv . ' ' . $newarg;
        }
    }
    print "\t<menu id=\"$dir.$nextpage\" label=\"More...\" execute=\"$0 --page $nextpage $newargv\" />\n";
}


if (!$page || $limiter) {print "\t<separator />\n";}

foreach ( @dirs ) {
    script_link($_);
}

# send a list to print files
$absolute = $dir;
$absolute = $absolute . "/" if ( substr($absolute,-1) ne "/" );

files_menu($absolute,@keepfiles);

print "</openbox_pipe_menu>\n";

sub files_menu {
    my $rootdir = shift;

    foreach my $file ( @_ ) {

        my $abs = $rootdir . $file;

        #i just want the label to be the file name without the dir, so make a new label, nixing the path
           my @chunks = split /\//, $file;
        my $newlabel = string_protect($chunks[$#chunks]);

        my @finfo = stat($abs);
        my $sizeout = "";
        if ($dofilesize)
        {
            # Is there a smarter way of doing this?
            if ($finfo[7] < 2*1024)
            {
                $sizeout = sprintf("  (%d bytes)", $finfo[7] );
            }
            elsif ($finfo[7] < 2*1024*1024)
            {
                $sizeout = sprintf("  (%.1f Kb)", $finfo[7] / 1024);
            }
            elsif ($finfo[7] < 2*1024*1024*1024)
            {
                $sizeout = sprintf("  (%.1f Mb)", $finfo[7] / 1024 / 1024);
            }
            elsif ($finfo[7] < 2*1024*1024*1024*1024)
            {
                $sizeout = sprintf("  (%.1f Gb)", $finfo[7] / 1024 / 1024 / 1024);
            }
        }

        my $actiontotake = get_action($abs);

        print "\t<item label=\"$newlabel$sizeout\">\n";
        print "\t\t<action name=\"Execute\"><execute>" . string_protect($actiontotake) . "</execute></action>\n";
        print "\t</item>\n";
    }
}


sub script_link {
    my $name = shift;
    my $sname = $name;
    $sname =~ s/[^A-Za-z0-9]/_/g;
    @chunks = split /\//, $name;
    $last = string_protect($chunks[$#chunks]);

    print "\t<menu id=\"$sname\" label=\"$last\" execute=\"$0 " . filename_protect($name) ."\" />\n";
}


# Protect XML
sub string_protect {
    my $str = shift;
    $str =~ s/&/&/g;
    return $str;
}


# Protect filenames we can't '"' quote (as they'll be in an 'execute="blah"' clause)
sub filename_protect {
    my $str = shift;
    $str =~ s/\"/\\\"/go;
    $str =~ s/\'/\\\'/go;
    $str =~ s/\$/\\\$/go;
    $str =~ s/ /\\ /go;
    $str =~ s/&/\\&/go;
    return $str;
}


#
# funcs for mime type stuff!
#
sub add_mime_handler {
    my $mtype = shift;
    my $action = shift;
    my $interm = ( scalar(@_)>0 ) ? shift : 0;

    # disgusting... check for the *, add appropriately.
    if ( $mtype =~ /(\w+)\/\*$/ ) {
        push @mimeDefaultHandlers, { "mime-type"=>$1, "action"=>$action, "interm"=>$interm };
    } else {
        push @mimeHandlers, { "mime-type"=>$mtype, "action"=>$action, "interm"=>$interm };
    }
}


sub get_action {
    my $file = shift;

    my $retdefault = $defaultAction;
    $retdefault =~ s/%1/\"$file\"/;

    my MIME::Type $mime = $types->mimeTypeOf($file);
    return "$retdefault" if ( !defined $mime );

    # find mime type in our handler array first
    foreach my $handler ( @mimeHandlers ) {
        if ( $handler->{"mime-type"} eq "$mime" ) {
            # replace %1
            my $action = $handler->{"action"};
            if (defined($action))
            {
                $action =~ s/%1/\"$file\"/;
                return ( $handler->{"interm"} == 1 ) ? "$termCommand $action" : $action;
            }
        }
    }

    # if we get here, we didn't find it, so search to see if it matches the first
    (my $major,my $minor) = split /\//, "$mime";

    foreach my $handler ( @mimeDefaultHandlers ) {
        if ( $handler->{"mime-type"} eq $major ) {
            # replace %1
            my $action = $handler->{"action"};
            if (defined($action))
            {
                $action =~ s/%1/\"$file\"/;
                return ( $handler->{"interm"} == 1 ) ? "$termCommand $action" : $action;
            }
        }
    }

    # okay if we get here, just get out of here
    return $retdefault;
}

wallpaper.py

#!/usr/bin/env python

import os
import re
import string
import sys
from os.path import isdir


# --------------------------------------------------------------------------- #
#                                 wallmenu.py                                 #
#                                version 0.3.0                                #
# --------------------------------------------------------------------------- #
# This script creates an openbox pipe menu to choose a wallpaper.
# You can configure what types of files are allowed, where to search for
# wallpapers, and what program to use to set the wallpaper.
# This script will also update a configuration file 
# (~/.config/openbox/wallmenurc) that stores the last set wallpaper.
# This means that you can add a line to your .xinitrc file to load the
# last set wallpaper on start-up.
# You can configure this script with the variables below.
# This script will recursively go through directories from the one you
# specify, searching for image files.
# --------------------------------------------------------------------------- #

# --------------------------------------------------------------------------- #
#                            Using the config file                            #
# --------------------------------------------------------------------------- #
# To use the config file that stores the filename of the last set wallpaper,
# you can add a line to your .xinitrc file to load it on start-up. If you
# use Esetroot you can use this example, if not just replace the program
# command with your chosen program:
#
# Esetroot `cat ~/.config/openbox/wallmenurc`
#
# If you want to use this script with feh to set your wallpaper, you don't 
# need the script to update a config file. feh automatically inserts the full
# command string used to set the wallpaper into ~/.fehbg. In order to set the
# wallpaper back at the next startof openbox, just add the following to 
# ~/.xinitrc:
#
# eval `cat ~/.fehbg`
# --------------------------------------------------------------------------- #

# --------------------------------------------------------------------------- #
#                             User configuration                              #
# --------------------------------------------------------------------------- #
# types of files accepted (list, seperated by a |)
filetypes = "jpg|png|gif"
# directory where wallpapers are stored (must be long: no ~ symbol allowed)
directory = "/path/to/your/wallpapers"
# program to set wallpaper
program = "feh --bg-scale"
# store wallpaper name in a config file?
config = "no"
# --------------------------------------------------------------------------- #

def genmenu(start, directory):
    # get a directory list
    dirlist = os.listdir(directory)
    for d in dirlist:
        # set di to overall directory
        di = directory + "/" + d
        # if we get a dir, generate a menu
        if isdir(di):
            print ""
            print "  <menu id=\"" + di + "\" label=\"" + d + "\" >"
            genmenu(start, di)
            print "  </menu>"
        # if we get a file, check if it is a valid type
        else:
            if re.search(filetypes, string.lower(di)) > 0:
                # make fi variable just filename, without extension
                fi = string.replace(string.replace(di, directory, ""), "/", "")
                fi = fi[:string.rfind(fi, ".")]
                # if so, add it to the pipe menu
                print "  <item label=\"" + fi + "\">"
                # execute line to set wallpaper
                print "    <action name=\"Execute\"><execute>" + program + " \"" + di + "\"</execute></action>"
                # if we want to update config file, do so
                if config == "yes":
                        print "    <action name=\"Execute\"><execute>~/.config/openbox/wallmenu.py " + di + "</execute></action>"
                print "  </item>"
            

def main(argv):
    
    # if we've been passed an argument update the config file with the arg
    if len(argv) == 1:
        os.system("echo " + argv[0] + " > ~/.config/openbox/wallmenurc")

    else:

        # start menu
        print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
        print "<openbox_pipe_menu>"
        
        # set the original start directory
        start = directory
        # generate menu
        genmenu(start, directory)
        
        # end menu
        print "</openbox_pipe_menu>"

# run the main() function        
if __name__ == "__main__":
    main(sys.argv[1:])

Processes.pl

#!/usr/bin/perl -w

#
# procinfo.pl script from waimea ( http://www.waimea.org/ ) ported to output
#             pekwm syntax by Claes Nasten ( http://pekdon.net/ )
#
# REPORTED to openbox3 pipe menu syntax by Dave Foster (daf@minuslab.net)
# some functions with no path to execute were removed, otherwise, no 
# logic was changed in this script at all.

# install instructions:
# 1) Put script somewhere (~/.config/openbox/scripts/ works well)
# 2) Make script executable (chmod +x procinfo.pl)
# 3) Edit openbox menu file:
#    a) Add <menu id="proc-menu" label="Processes" execute="pathto/procinfo.pl" />
#    b) Add <menu id="proc-menu" somewhere on your root menu or wherever you want it.

use POSIX;

my $script_location = $0;
my $offset = 0;
my $proc_dir = "/proc";
my $pid = 0;
my $host = "";
my $user = "";
$user = $ENV{USER};
chomp(my $hostname = qx(hostname));
my $forcepid = 0;
my $file = 0;
my $list_length = 20;

get_opt();

print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
print "<openbox_pipe_menu>\n";

if ($forcepid) {
    if ($hostname eq $host && $pid) {
        pid_info();
    } else {
       print "Name = \"process info\"\n";
       print "Entry = \"process info for this window could not be retrived\" { }\n";
    }
} else {
   if ($pid) {
       pid_info();     
   } else {
       list_proc();
   }
}

print "</openbox_pipe_menu>\n";

sub list_proc {
#    my $cmdline = 0;
    my $proc_name = 0;
    my $i = $offset;
    my $owner = "";
    my $printed = 0;
    my @output;

    opendir(DIR, $proc_dir) || die "can't opendir $proc_dir: $!";
    @proc_list = grep { (/^[^\.].*/ || /^\.\..*/) && /^\d+$/} readdir(DIR);
    closedir DIR;

#    print "$_\n" foreach @proc_list;


    while (($pid = $proc_list[$i]) && $printed <= $list_length) {
    open(FILE, "$proc_dir\/$pid\/status") || die "can't opendir $proc_dir: $!";
    ($proc_name = (split(':', <FILE>))[1]) =~ s/^\s*(.*)\n/$1/;
#    if ($user eq 
    while ($_ = <FILE>) {
        if (/^Uid\:\s*(\d+)\s+/) {
        $owner = getpwuid $1;
        }
    }
    close FILE;
    
    if (($user && ($user eq 'all' || $user eq 'ALL')) ||
        ($owner && $user && ($owner eq $user))) {
        if ($printed < $list_length) {
#        push @output, "Submenu = \"$pid - $proc_name\" { Entry {  Actions = \"Dynamic $script_location -pid $proc_list[$i]\" } }\n";
        
        push @output, "<menu id=\"menu-proc-$pid\" label=\"$pid - $proc_name\" execute=\"$script_location -pid $proc_list[$i]\" />\n";
        }
        else {
        $i--;
        }
        $printed++;
    }
    $i++;
    }

    if ($proc_list[$i]) {
    $_ = $i;
    print "Submenu = \"more...\" { Entry { Actions = \"Dynamic $script_location -offset $_ -user $user\" } }\n";
    }

    print @output;
}

sub pid_info {
    my $name = "";
    my @procinfo;
    my $cmdline = "";
    my $priority = "";
    my $msize = "";
    my $mlck = "";
    my $mrss = "";
    my $mdata = "";
    my $mstk = "";
    my $mexe = "";
    my $mlib = "";
    my $pid_err = 0;
    
    open(FILE, "$proc_dir\/$pid\/stat") || pid_err();
    $_ = <FILE>;
    @procinfo = split(/ /,$_);
    close FILE;
    $procinfo[1] =~ m/^\((.*)\)/;
    $name = $1;
    $priority = $procinfo[18];

    open(FILE, "$proc_dir\/$pid\/status") || die "can't opendir $proc_dir: $!";
    while ($_ = <FILE>) {
       if ($_ =~ m/^State.*\((\w*)\)$/) {
          $state = $1;
          $state =~ s/\(/\\\(/;
          $state =~ s/\)/\\\)/;
          $state =~ s/\t/ /;
          $state =~ s/\s+/ /;
       }
       if ($_ =~ m/^VmSize/) {          
          $_ =~ m/.*:\t*\s*(.*)$/;          
          $msize = $1;
       }
       if ($_ =~ m/^VmLck/) {
          $_ =~ m/.*:\t*\s*(.*)$/;
          $mlck = $1;
       }
       if ($_ =~ m/^VmRSS/) {
          $_ =~ m/.*:\t*\s*(.*)$/;
          $mrss = $1; 
       }
       if ($_ =~ m/^VmData/) {
          $_ =~ m/.*:\t*\s*(.*)$/;
          $mdata = $1;
       }
       if ($_ =~ m/^VmStk/) {
          $_ =~ m/.*:\t*\s*(.*)$/;
          $mstk = $1;
       }
       if ($_ =~ m/^VmExe/) {
          $_ =~ m/.*:\t*\s*(.*)$/;
          $mexe = $1;
       }
       if ($_ =~ m/^VmLib/) {
          $_ =~ m/.*:\t*\s*(.*)$/;
          $mlib = $1;
       }
    }        

    if (open(FILE, "$proc_dir\/$pid\/cmdline")) {
        $_ = <FILE>;        
        while ($_ =~ m/\0/) {
            $_ =~ s/\0/\\\" \\\"/;
        }
        $_ =~ m/(.*).{3}$/;
        $cmdline = "\\\"$1";
        close FILE;
    }

    print "\t<menu id=\"menu-proc-$pid-state\" label=\"state ($state)\">\n";
    print "\t\t<item label=\"stop\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>kill -SIGSTOP $pid</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"continue\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>kill -SIGCONT $pid</execute></action>\n";
    print "\t\t</item>\n";    
    print "\t</menu\n>";

    print "\t<menu id=\"menu-proc-$pid-memory\" label=\"memory ($msize)\">\n";
    print "\t\t<item label=\"size: $msize\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>true</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"lck: $mlck\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>true</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"rss: $msize\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>true</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"data: $mdata\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>true</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"stk: $mstk\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>true</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"exe: $mexe\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>true</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"lib: $mlib\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>true</execute></action>\n";
    print "\t\t</item>\n";
    print "\t</menu>\n";
          
    print "\t<menu id=\"menu-proc-$pid-priority\" label=\"priority ($priority)\">\n";
    print "\t\t<item label=\"increase by 1\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>renice +1 $pid</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"0 (base)\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>renice 0 $pid</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"5\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>renice 5 $pid</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"10\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>renice 10 $pid</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"15\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>renice 15 $pid</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"20 (idle)\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>renice 20 $pid</execute></action>\n";
    print "\t\t</item>\n";
    print "\t</menu>\n";

    print "\t<menu id=\"menu-proc-$pid-signal\" label=\"send signal\">\n";
    print "\t\t<item label=\"sighup\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>kill -HUP $pid</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"sigint\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>kill -INT $pid</execute></action>\n";
    print "\t\t</item>\n";
    print "\t\t<item label=\"sigkill\">\n";
    print "\t\t\t<action name=\"Execute\"><execute>kill -KILL $pid</execute></action>\n";
    print "\t\t</item>\n";
    print "\t</menu>\n";

    if ($cmdline ne "") {
        print "\t<item label=\"restart\">\n";
        print "\t\t<action name=\"Execute\"><execute>kill $pid && $cmdline</execute></action>\n";
        print "\t</item>\n";
        print "\t<item label=\"spawn new\">\n";
        print "\t\t<action name=\"Execute\"><execute>$cmdline</execute></action>\n";
        print "\t</item>\n";

    }
}

sub get_opt {
    my $i = 0;
    while ($ARGV[$i+1] && ($_ = $ARGV[$i])) {
    if (/\-offset/) {
        $offset = $ARGV[$i+1];
    }
    if (/\-pid/) {
        $pid = $ARGV[$i+1];
    }
    if (/\-proc_dir/) {
        $proc_dir = $ARGV[$i+1];
    }
    if (/\-user/) {
        $user = $ARGV[$i+1];
    }
   if (/\-host/) {
      $host = $ARGV[$i+1];
   }
    $i++;
    }
    $i = 0;
    while ($_ = $ARGV[$i]) {
        $i++;
        if (/\-host/) {
            $forcepid = 1;
        }
    }
}

sub pid_err {
    print "<item label=\"??? ($pid)\">\n";
    print "<action name=\"Execute\"><execute>true</execute></action>\n";
    print "</item>\n";
    exit;
}

Feed.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
#-------------------------------------------------------------------------------

feeder.py - version 6
by Vlad George

#-------------------------------------------------------------------------------

Description:
    This script pipes rss and podcast feeds into the openbox menu

Usage:
    First you need the python-feedparser module (archlinux [extra]/ ubuntu).
    Place this script under ~/.config/openbox/scripts, edit the variables under "User set variables"
    according to your likings (your list of rss_urls, browser and media-player to open links,
    number of displayed rss-entries, enable/disable caching of feeds, maximum age of feeds),
    make it executable, then add following to your ~/.config/openbox/menu.xml:
    "<menu id="feeder-menu" label="rss-feeds" execute="~/.config/openbox/scripts/feeder.py" />...
    <menu id="root-menu" label="Openbox3">...<menu id="feeder-menu" />...</menu>"
    and reconfigure openbox.

Changelog:
    01.07.2007:   1st version
    03.07.2007:   works now (changed "~")....
    05.07.2007:   added cache
    07.10.2007:   added name of rss and sorted output
    03.2008:      added podcast support
    06.2008:      uses python's internal python-feedparser module

#-------------------------------------------------------------------------------

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.
http://www.fsf.org/

"""

#-------------------------------------------------------------------------------             
#                             User set variables
#-------------------------------------------------------------------------------             

## your rss feeds:
rss_urls = [
            #('name to be shown', 'url of rss'),
            ('Arch Packages', 'http://www.archlinux.org/feeds/packages/'),
            #('', ''),
            #('', ''),
            #('', ''),
         ]

## browser and audio/video-player to use:
# open_with = "gnome-open"
open_with = "firefox"
play_with = "sonata"

## how many entries should be shown:
rss_feeds_count = 20

## use cache (1 enabled, 0 disabled)
cache = 1

### if cache enabled:

## how old should cache files get - in minutes; set to 0 for manual refresh:
## you can also use >> feeder.py --update << to only update the cache file (useful as cronjob)
age = 120

## temporary directory for cache file (default=/tmp/); leave it as it is.
cache_dir = "/tmp"


#-------------------------------------------------------------------------------
#                                   Script
#-------------------------------------------------------------------------------


# {{{ ##  fold marker start

def gettingTitles(url_list):
    # get feeds for each url:
    rss_dict = {}
    for i in xrange(len(url_list)):

        rss = feedparser.parse(url_list[i][1])
        rss_entry = []
        try:
            append = rss_entry.append
            if rss.entries[i].has_key('link') == False:
                [append((rss.entries[num].title, None, rss.entries[num].enclosures[0].href)) for num in xrange(rss_feeds_count)]
            elif rss.entries[i].has_key('enclosures') == False:
                [append((rss.entries[num].title, rss.entries[num].link, None)) for num in xrange(rss_feeds_count)]
            else:
                [append((rss.entries[num].title, rss.entries[num].link, rss.entries[num].enclosures[0].href)) for num in xrange(rss_feeds_count)]
        except IndexError:
            pass
        try:
            if url_list[i][0] == '':
                rss_dict[(rss.feed.title, url_list[i][1])] = rss_entry[0:int(rss_feeds_count)]
            else:
                rss_dict[(url_list[i][0], url_list[i][1])] = rss_entry[0:int(rss_feeds_count)]
        except:
            pass
    # rss_dict-items: { ..., ([i][0]:> rss-url, [i][1]:> rss-name):[..., ([i][j][0]:> entry-title, [i][j][1]:> entry-link, [i][j][2]:> entry-podcast_link), ...], ... }
    return rss_dict


def generateXml(dict_url_entry, outfile):
    # sort dict items according display name
    sorted_list = dict_url_entry.items()
    sorted_list.sort()
    # [ ..., (([i][0][0] -> rss-name, [i][0][1] -> rss-url), [..., ([i][1][j][0] -> entry-title, [i][1][j][1] -> entry-link, [i][1][j][2]:> entry-podcast_link), ...]), ... ]
    root = ET.Element("openbox_pipe_menu")
    for i in xrange(len(sorted_list)):
        menu = ET.SubElement(root,"menu", attrib = {"id" : sorted_list[i][0][1], "label" : unicode(sorted_list[i][0][0])})
        for j in xrange(len(sorted_list[i][1])):
            try:
                if sorted_list[i][1][j][2] == None:
                    item = ET.SubElement(menu, "item", attrib = {"label" : unicode(sorted_list[i][1][j][0])})
                    action = ET.SubElement(item, "action", attrib = {"name" : "Execute"})
                    command = ET.SubElement(action, "command")
                    tmp = str(sorted_list[i][1][j][1]).replace('~','%7E')
                    command.text = "%s %s" % (open_with, tmp)
                elif sorted_list[i][1][j][1] == None:
                    podcast_menu = ET.SubElement(menu, "menu", attrib = {"id" : str(int(random.random()*10000000)) + "-menu", "label" : unicode(sorted_list[i][1][j][0])})
                    podcast_play = ET.SubElement(podcast_menu, "item", attrib = {"label" : " play podcast"})
                    podcast_play_action = ET.SubElement(podcast_play, "action", attrib = {"name": "Execute"})
                    podcast_play_execute = ET.SubElement(podcast_play_action, "command")
                    tmp = str(sorted_list[i][1][j][2]).replace('~','%7E')
                    podcast_play_execute.text = "%s %s" % (play_with, tmp)
                else:
                    podcast_menu = ET.SubElement(menu, "menu", attrib = {"id" : str(int(random.random()*10000000)) + "-menu", "label" : unicode(sorted_list[i][1][j][0])})
                    podcast_open = ET.SubElement(podcast_menu, "item", attrib = {"label" : " open "})
                    podcast_open_action = ET.SubElement(podcast_open, "action", attrib = {"name": "Execute"})
                    podcast_open_execute = ET.SubElement(podcast_open_action, "command")
                    tmp1 = str(sorted_list[i][1][j][1]).replace('~','%7E')
                    podcast_open_execute.text = "%s %s" % (open_with, tmp1)
                    podcast_play = ET.SubElement(podcast_menu, "item", attrib = {"label" : " play podcast"})
                    podcast_play_action = ET.SubElement(podcast_play, "action", attrib = {"name": "Execute"})
                    podcast_play_execute = ET.SubElement(podcast_play_action, "command")
                    tmp2 = str(sorted_list[i][1][j][2]).replace('~','%7E')
                    podcast_play_execute.text = "%s %s" % (play_with, tmp2)
            except IndexError:
                pass
    if cache == 1:
        separator = ET.SubElement(root,"separator")
        refresh = ET.SubElement(root,"item", attrib = {"label":"Reload Cache"})
        action2 = ET.SubElement(refresh,"action",attrib = {"name":"Execute"})
        command2 = ET.SubElement(action2,"command")
        command2.text = "%s %s" % (sys.argv[0], "--update")
    tree = ET.ElementTree(root)
    tree.write(outfile)


def ageCheck(age_in_min, file_to_check):
    age_in_sec = int(age_in_min)*60
    file_age = int(time())-int(os.path.getmtime(file_to_check))
    if age_in_min == 0:
        return 1
    elif os.path.isfile(file_to_check) and file_age < age_in_sec:
        return 1
    else:
        return 0


def printXml(xml_entry):
    temp_file = file(xml_entry,'r')
    a = temp_file.read()
    temp_file.close()
    print a


#-------------------------------------------------------------------------------             
#                                    Main
#-------------------------------------------------------------------------------             
import os.path, sys, feedparser
import xml.etree.ElementTree as ET
import random
from time import time

#-------------------------#
if __name__ == "__main__" :
#-------------------------#
    if cache == 1:
        cache_file = cache_dir + "/." + str(os.path.split(sys.argv[0])[1]) + "-" + str(os.getuid()) + ".cache"
        if ('--update' in sys.argv[1:]):
            generateXml(gettingTitles(rss_urls), cache_file)
        elif os.path.isfile(cache_file) and ageCheck(age, cache_file):
            print '<?xml version="1.0" encoding="UTF-8"?>'
            printXml(cache_file)
        else:
            generateXml(gettingTitles(rss_urls), cache_file)
            print '<?xml version="1.0" encoding="UTF-8"?>'
            printXml(cache_file)
    else:
        print '<?xml version="1.0" encoding="UTF-8"?>'
        generateXml(gettingTitles(rss_urls), sys.stdout)


# }}} ##  fold marker end

# vim: set ft=python ts=4 sw=4 foldmethod=marker :

Last edited by na12 (2009-05-19 07:26:31)

Offline

#682 2009-05-19 07:32:24

phisphere
Member
From: Tallinn, Estonia
Registered: 2007-03-05
Posts: 136
Website

Re: May 2009 Screenshots

this is awesome!

Offline

#683 2009-05-19 09:36:25

YtseJammin
Member
From: Italy
Registered: 2009-01-23
Posts: 94

Re: May 2009 Screenshots

phisphere wrote:

this is awesome!

Thanks wink

Offline

#684 2009-05-19 10:21:25

Wra!th
Member
Registered: 2009-03-31
Posts: 342

Re: May 2009 Screenshots

Found me the best looking GTK theme : Aurora!
tMXA5Zw


MacGregor DESPITE THEM!
7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00

Offline

#685 2009-05-19 10:50:35

rocktorrentz
Member
From: Southampton, England
Registered: 2007-08-05
Posts: 141

Re: May 2009 Screenshots

na12 wrote:
soupcan wrote:

Is there some way you could get me your wallpapers-all of those in that style? I really like the ones in nitrogen.

http://psychopulse.deviantart.com/art/DREAMS-109011518

Those wallpapers are REALLY nice. Here's my new screenshot smile

89695670.png
WM: IceWM (Latest icewm-cvs) with a very modified breathe theme
GTK Theme: Murrine-Sky
Icons: HighContrast-SVG
Fonts: Liberation Sans, HeldustryFTVBasicBlack and nu

Offline

#686 2009-05-19 11:10:09

Daisuke_Aramaki
Member
From: ++49/711
Registered: 2008-10-06
Posts: 651
Website

Re: May 2009 Screenshots

Wra!th wrote:

Found me the best looking GTK theme : Aurora!
http://omploader.org/tMXA5Zw

Bebop FTW.  if you need high quality Bebop episodes, let me know.


"You know what I found? Right in the kernel, in the heart of the operating system, I found a developer's comment that said, `Does this belong here?`" -- Simon Lok about Linux kernel in 2005
Reflections on the Strange and the not so Strange
http://skinwalker.wordpress.com

Offline

#687 2009-05-19 11:10:37

Agent69
Member
Registered: 2006-05-26
Posts: 189

Re: May 2009 Screenshots

Peasantoid wrote:
Agent69 wrote:

http://omploader.org/vMXA3eQ

Messing around with Evilwm and Thunar on Arch, just to see how they would look together. Wallpaper from Mandolux.

You need some serious GTK love there. wink

Ya I do, although playing with GTK has to be one of my least favorite things in the world to do. I'll probably fix it once I get Firefox installed.

Offline

#688 2009-05-19 14:05:11

soupcan
Member
From: ?
Registered: 2008-10-25
Posts: 268

Re: May 2009 Screenshots

Daisuke_Aramaki wrote:
Wra!th wrote:

Found me the best looking GTK theme : Aurora!
http://omploader.org/tMXA5Zw

Bebop FTW.  if you need high quality Bebop episodes, let me know.

I'd like to take you up on that offer, if you don't mind.

Offline

#689 2009-05-19 15:15:30

Crows
Member
From: Wales
Registered: 2008-09-05
Posts: 92

Re: May 2009 Screenshots

Theme for my newly re-installed XFCE laptop:

mayscreenshot.th.png

GTK Theme: Shiki-Brave
Icons: Gnome-Brave
Default Font: FreeSans Medium 8pts (using the *-ubuntu patched freetype/cairo etc)
WM: Xfwm4 with compositing - using a Shiki-Colors theme ported from metacity

Apps: Mousepad, Thunar, Conky, Sonata.

Offline

#690 2009-05-19 16:02:29

Daisuke_Aramaki
Member
From: ++49/711
Registered: 2008-10-06
Posts: 651
Website

Re: May 2009 Screenshots

Fluxbox+Lunar Linux. Pilsner gtk theme this time.

Pilsner_Fluxbox_Lunar_Setup_by_pkmurugan.png


"You know what I found? Right in the kernel, in the heart of the operating system, I found a developer's comment that said, `Does this belong here?`" -- Simon Lok about Linux kernel in 2005
Reflections on the Strange and the not so Strange
http://skinwalker.wordpress.com

Offline

#691 2009-05-19 16:05:32

froli
Member
From: Germany
Registered: 2008-06-17
Posts: 455

Re: May 2009 Screenshots

Daisuke_Aramaki wrote:

Fluxbox+Lunar Linux. Pilsner gtk theme this time.

http://th08.deviantart.com/fs44/300W/f/ … urugan.png

Really nice, once again!!!

How many times per month do you change your config? tongue


archlinux on Macbook Pro 10,1

Offline

#692 2009-05-19 16:12:58

Daisuke_Aramaki
Member
From: ++49/711
Registered: 2008-10-06
Posts: 651
Website

Re: May 2009 Screenshots

froli wrote:
Daisuke_Aramaki wrote:

Fluxbox+Lunar Linux. Pilsner gtk theme this time.

http://th08.deviantart.com/fs44/300W/f/ … urugan.png

Really nice, once again!!!

How many times per month do you change your config? tongue

Thanks. i change the fluxbox setup mostly once every two days. Ideal stress buster for me, at least until my girlfriend comes back from Japan next Friday. tongue


"You know what I found? Right in the kernel, in the heart of the operating system, I found a developer's comment that said, `Does this belong here?`" -- Simon Lok about Linux kernel in 2005
Reflections on the Strange and the not so Strange
http://skinwalker.wordpress.com

Offline

#693 2009-05-19 16:21:51

froli
Member
From: Germany
Registered: 2008-06-17
Posts: 455

Re: May 2009 Screenshots

Daisuke_Aramaki wrote:
froli wrote:
Daisuke_Aramaki wrote:

Fluxbox+Lunar Linux. Pilsner gtk theme this time.

http://th08.deviantart.com/fs44/300W/f/ … urugan.png

Really nice, once again!!!

How many times per month do you change your config? tongue

Thanks. i change the fluxbox setup mostly once every two days. Ideal stress buster for me, at least until my girlfriend comes back from Japan next Friday. tongue

Well, I tought I was a bit maniac by changing my config every month... tongue

Fortunately, It's not your WM that you change every two days tongue


archlinux on Macbook Pro 10,1

Offline

#694 2009-05-19 16:26:38

Daisuke_Aramaki
Member
From: ++49/711
Registered: 2008-10-06
Posts: 651
Website

Re: May 2009 Screenshots

froli wrote:
Daisuke_Aramaki wrote:
froli wrote:

Really nice, once again!!!

How many times per month do you change your config? tongue

Thanks. i change the fluxbox setup mostly once every two days. Ideal stress buster for me, at least until my girlfriend comes back from Japan next Friday. tongue

Well, I tought I was a bit maniac by changing my config every month... tongue

Fortunately, It's not your WM that you change every two days tongue

i alternate between evilwm, dwm and fluxbox, thats about it. nothing else is installed on all my machines.


"You know what I found? Right in the kernel, in the heart of the operating system, I found a developer's comment that said, `Does this belong here?`" -- Simon Lok about Linux kernel in 2005
Reflections on the Strange and the not so Strange
http://skinwalker.wordpress.com

Offline

#695 2009-05-19 16:34:07

ri
Member
Registered: 2008-10-09
Posts: 73

Re: May 2009 Screenshots

Daisuke_Aramaki wrote:

Fluxbox+Lunar Linux. Pilsner gtk theme this time.

http://th08.deviantart.com/fs44/300W/f/ … urugan.png

please tell me what font you use in the menu smile

Offline

#696 2009-05-19 16:46:04

Daisuke_Aramaki
Member
From: ++49/711
Registered: 2008-10-06
Posts: 651
Website

Re: May 2009 Screenshots

ri wrote:
Daisuke_Aramaki wrote:

Fluxbox+Lunar Linux. Pilsner gtk theme this time.

http://th08.deviantart.com/fs44/300W/f/ … urugan.png

please tell me what font you use in the menu smile

HeldustryFTV Basic Demi


"You know what I found? Right in the kernel, in the heart of the operating system, I found a developer's comment that said, `Does this belong here?`" -- Simon Lok about Linux kernel in 2005
Reflections on the Strange and the not so Strange
http://skinwalker.wordpress.com

Offline

#697 2009-05-19 18:05:21

antenna
Member
From: Australia
Registered: 2006-10-14
Posts: 30

Re: May 2009 Screenshots

There's some really nice stuff here this month.   

For my laptop, I'm liking dwm a lot, nothing special in these shots but it took me a while to get everything right and I'm happy with it (for the moment).

tMXBiMw
tMXBiNA
tMXBiNQ

Offline

#698 2009-05-19 18:16:05

Dfizzle
Member
From: Finland
Registered: 2008-07-29
Posts: 29

Re: May 2009 Screenshots

dirty
tMXBiYQ
clean
tMXBiYg


Thinkpad L450 | Thinkpad L440 | mITX for life

Offline

#699 2009-05-19 18:18:55

ri
Member
Registered: 2008-10-09
Posts: 73

Re: May 2009 Screenshots

Daisuke_Aramaki wrote:
ri wrote:
Daisuke_Aramaki wrote:

Fluxbox+Lunar Linux. Pilsner gtk theme this time.

http://th08.deviantart.com/fs44/300W/f/ … urugan.png

please tell me what font you use in the menu smile

HeldustryFTV Basic Demi

where can i find it? have searched a bit but without any luck smile

edit: nevermind found it...

Last edited by ri (2009-05-19 19:00:50)

Offline

#700 2009-05-19 18:47:08

Agent69
Member
Registered: 2006-05-26
Posts: 189

Re: May 2009 Screenshots

Daisuke_Aramaki wrote:
froli wrote:
Daisuke_Aramaki wrote:

Thanks. i change the fluxbox setup mostly once every two days. Ideal stress buster for me, at least until my girlfriend comes back from Japan next Friday. tongue

Well, I tought I was a bit maniac by changing my config every month... tongue

Fortunately, It's not your WM that you change every two days tongue

i alternate between evilwm, dwm and fluxbox, thats about it. nothing else is installed on all my machines.

So if you had to pick, which would be your only window manager? I've pretty much settled on Evilwm myself.

Offline

Board footer

Powered by FluxBB