Awesome Window Manager

Core libraries and systems
Post Reply
Message
Author
User avatar
Q5sys
Posts: 1105
Joined: Thu 11 Dec 2008, 19:49
Contact:

Awesome Window Manager

#1 Post by Q5sys »

http://awesome.naquadah.org/

Has anyone attempted to build and run this on puppy? I've thought about tinkering around with it... but was wondering if anyone else had any experience with it.

example:
http://www.calmar.ws/awesome/awesome-wm.png

aragon
Posts: 1698
Joined: Mon 15 Oct 2007, 12:18
Location: Germany

#2 Post by aragon »

yes, did it...but...
awesome2 builds, awesome3 was a pain i gave up.

interesting about awesome is, that i could configure everything (i don't need anytime). so for a configuration-freak it might be wonderful, for me not. if i use dwm with conky on the desk, most of my needs are fullfilled...

aragon

User avatar
Q5sys
Posts: 1105
Joined: Thu 11 Dec 2008, 19:49
Contact:

#3 Post by Q5sys »

aragon wrote:yes, did it...but...
awesome2 builds, awesome3 was a pain i gave up.
Can you go into anymore details about why it was a pain? Was it a pain in configuring or in getting it to run in the first place?

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#4 Post by technosaurus »

lots of dependencies that are not installed by default in Puppy + lots of configuration and I was trying to build it with a static uclibc toolchain and it just ended up taking too long to finish it - I really wish autotools (read ./configure) would run all the way through and _then_ tell you _all_ the stuff you are missing ... or if sites would actually list all the dependencies in the first place

I ended up using a different xcb base wm instead
http://www.hack.org/mc/hacks/mcwm/
http://www.murga-linux.com/puppy/viewtopic.php?t=62050

next xcb tools up after awesomewm are compiz are unagi (compositing)

I'd like to see if unagi could replace xcompmgr/kcompmgr for translucency in jwm
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
Q5sys
Posts: 1105
Joined: Thu 11 Dec 2008, 19:49
Contact:

#5 Post by Q5sys »

technosaurus wrote:I really wish autotools (read ./configure) would run all the way through and _then_ tell you _all_ the stuff you are missing ... or if sites would actually list all the dependencies in the first place
Amen to that. I hate tracking own one dep and thinking i'm ready... to only be told about another one... and then being on that yoyo for an hour or so. lol
In the past I've stolen another distros binary and run LDD on it to figure out what it needs... then go back and compile it manually myself. Yea maybe thats cheating... but i dont think anyone is keeping score. :P

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#6 Post by technosaurus »

Q5sys wrote:In the past I've stolen another distros binary and run LDD on it to figure out what it needs... then go back and compile it manually myself. Yea maybe thats cheating... but i dont think anyone is keeping score. :P
same here, but you can never know what dependencies are optional ... especially if they haven't linked with --as-needed.(then you can use objdump -x <binary> ¦grep NEEDED)
BTW I do this and remove all dependant libs from the final link.
-lgtk........-ldeps..... is replaced with just -lgtk so that if gtk is built without some dep, it will still run and run on more systems and load faster.(though it may be a fraction slower on the system with the exact libs it was linked with)
The easiest way to do this without having to hack it every time, is to simply remove them from the .pc file
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
Karl Godt
Posts: 4199
Joined: Sun 20 Jun 2010, 13:52
Location: Kiel,Germany

#7 Post by Karl Godt »

awesome-2.3.6 build on a puplet based on puppy430
needed
http://packages.debian.org/squeeze/libconfuse-dev
[http://packages.debian.org/lenny/libconfuse0]

./configure --with-x --with-gtk --prefix=/opt/Awesome/001

would like to have

checking for asciidoc... :
checking for xmlto... :
checking for python... /usr/bin/python
checking for doxygen... :
configure: WARNING: awesome man page generation requires asciidoc
configure: WARNING: awesome man page generation requires xmlto
configure: WARNING: awesome developer doc generation requires doxygen
checking whether xmlto can create a man page... no
configure: WARNING: awesome man page generation requires 'xmlto man', but it does not work.
Do you need to (properly) install http://docbook.sourceforge.net/projects/xsl/?

and

checking vfork.h usability... no
checking vfork.h presence... no
checking for vfork.h... no
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes

make only warning (gcc 4.2.2 ) :

client.c: In function 'client_focus':
client.c:187: warning: declaration of 'raise' shadows a global declaration
/usr/include/signal.h:129: warning: shadowed declaration is here

default make install installs to /usr/local

Docs as raw text files included at /usr/local/share/doc /man
`strip EXE`

would need something like

#exec $CURRENTWM
#v2.11 GuestToo suggested this improvement...
which $CURRENTWM && exec $CURRENTWM
[ -x $CURRENTWM ] && exec $CURRENTWM
exec awesome || jwm

###END###

at /root/.xinitrc [or `grep -r 'exec jwm' /`]

Fresh from compilation , not tested yet !
Attachments
awesome-2.3.6-pup430.tar.gz
test at your own risk !
(119.57 KiB) Downloaded 1164 times

User avatar
Karl Godt
Posts: 4199
Joined: Sun 20 Jun 2010, 13:52
Location: Kiel,Germany

#8 Post by Karl Godt »

First day running awesome2 :

1. : it really needs the http://packages.debian.org/lenny/libconfuse0
to run which I installed first but ./configure still complained about libconfuse0 at the same point so i had to install the -dev for .h files .

2. : it likes to have a /root/.awesome directory for the awesomerc file
where the pathes from the ./configure --prefix=PREFIX still resides and have to be adjusted from /opt/Awesome/001 to /usr/local/share

3. : it uses the Win key much : modkey = {"Mod4"}

4. : no xload,freememapplet,retrovol,date&time etc in the taskbar

5. : no windowframe at the top of the windows ( no kill menu , etc )

6. : some apps like sakura and geany show a trace while moving around

7. : i am not able for the moment to get the taskbar to the bottom, left or right

8. : the only interesting feature are the different grid possibilities

9. : no crashes after several hours

I really don't think that awesome(2) can replace jwm for the moment .

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#9 Post by technosaurus »

Some users may not want those things, but most window managers won't run those "tray applets" because 1. They need to be swallowed and 2. They are started from jwm.
There is a bit of a learning curve to tweak the configuration,but you can start with some of the config files posted in the screenshot page.
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
Karl Godt
Posts: 4199
Joined: Sun 20 Jun 2010, 13:52
Location: Kiel,Germany

#10 Post by Karl Godt »

2. : it likes to have a /root/.awesome directory for the awesomerc file
Found out that awsome created .awesomerc file at /root and adjusting

screen 0
{
styles
{
normal
{
font = "sans 12"

and

statusbar mystatusbar
{
position = "bottom"

worked .
Don't know why the messages from awesome at /tmp/xerrs.log vanished after I had put the rc-file at ~/.awsome/ dir .

User avatar
Karl Godt
Posts: 4199
Joined: Sun 20 Jun 2010, 13:52
Location: Kiel,Germany

#11 Post by Karl Godt »

after reading and experimenting now a simple basic Menu for awesome2 :
(I hope the code is not too wrong)

Code: Select all

mkdir /usr/local/desktopmanager
mkdir /usr/local/desktopmanager/awesome
mkdir /usr/local/desktopmanager/awesome/mainmenu

EXE="`cat /root/.jwmrc | grep 'Program label' | cut -f2 -d '>' | cut -f1 -d '<' | grep -v '/'`"

MENUS="`cat /root/.jwmrc | grep -w 'Menu label' | cut -f2 -d '"'`"

for i in $MENUS; do mkdir "/usr/local/desktopmanager/awesome/mainmenu/$i"; done

MENUB=`cat /root/.jwmrc | grep -n -w 'Menu label' | cut -f 1 -d ":"`
MENUE=`cat /root/.jwmrc | grep -n -w '</Menu>' | cut -f 1 -d ":"`

o=0

for i in $MENUB; do (( o++ )); echo $o;Progbegin=`echo $MENUB | cut -f $o -d " "`; echo ; echo $Progbegin ; echo ; PROGBEGIN=`expr $Progbegin + 1`; Progend=`echo $MENUE | cut -f $o -d " "`; PROGEND=`expr $Progend - 1`; sed -n "$PROGBEGIN,$PROGEND p" /root/.jwmrc > "/tmp/$i.menu"; cat "/tmp/$i.menu" | cut -f 2 -d '>' | cut -f 1 -d '<' | grep -v '/' | grep -v '\-e' | grep -v '%' | grep -v '\$' | grep -v '#' | cut -f 1 -d " " > "/tmp/SimpleBin.$i.menu"; cat "/tmp/SimpleBin.$i.menu" | tr -d " " | sed '/^$/d' > "/tmp/RefSM.$i.menu" ; done ; o=0

for i in $MENUS; do (( o++ )) ; echo $i; Menufile=`echo $MENUB | cut -f $o -d " "` ;echo $Menufile; EXES=`cat "/tmp/RefSM.$Menufile.menu"` ;echo $EXES; for j in $EXES ; do echo $j ;ln -s `which $j` "/usr/local/desktopmanager/awesome/mainmenu/$i/$j"; done; done; o=0
this should create the menu dir at /usr/local/---/awesome with subdirs and links to the executables without much clutter behind like "rxvt -font 7x14 -bg "#FFFFFF" -fg black -T htop -n htop -e htop"
now it is able to create an entry at .awesomerc like

Code: Select all

key
    {
        key = "F12"
        command = "spawn"
        arg = "ln -s /usr/local/desktopmanager/awesome/mainmenu | awesome-menu -e "rox /usr/local/desktopmanager/awesome/mainmenu/$@" 'MAIN--MENU--:'"
     }
which echoes something like this:
ln: creating symbolic link `./mainmenu': File exists
W: awesome: config_parse:186: no definition for menu MAIN--MENU--: in configuration file: using default
I guess because the socket /root/.awesome_ctl.0 is located at ~/ . I think it should be possible to change the path in the code before compiling .
My keys are actually :

Code: Select all

key
    {
        key = "F1"
        command = "spawn"
        arg = "exec rxvt"
    }
    key
    {
        key = "F2"
        command = "spawn"
        arg = "exec geany"
    }
    key
    {
        key = "F12"
        command = "spawn"
        arg = "exec sakura"
    }
    key
    {
        key = "F11"
        command = "spawn"
        arg = "exec nicoedit"
    }
    key
    {
        key = "F4"
        command = "spawn"
        arg = "exec rxvt -e pgprs-connect"
    }
    key
    {
        key = "F5"
        command = "spawn"
        arg = "exec firefox"
    }
    key
    {
        key = "F9"
        command = "spawn"
        arg = "exec aqualung"
    }
    key
    {
        key = "F8"
        command = "client_kill"
    }
and it is possible to start several apps with one key .

User avatar
Karl Godt
Posts: 4199
Joined: Sun 20 Jun 2010, 13:52
Location: Kiel,Germany

Tweaking AWESOME 2

#12 Post by Karl Godt »

key
{
modkey = {"Mod4"}
key = "F2"
command = "spawn"
arg = "exec find /usr/bin -type f ! -empty | sed 's,.*/,,' | awesome-menu 'Execute :'"
}
originally there is the parameter "-executable" to `find`
key
{
key = "F12"
command = "spawn"
arg = 'ln -s /usr/local/desktopmanager/awesome/mainmenu | awesome-menu -e "rox /usr/local/desktopmanager/awesome/mainmenu/$@" "MainMenu"'
}
works better than above post changed 'for" because $@ needs tyo be double quoted
statusbar mystatusbar
{
position = "bottom"

textbox "clock"
{
mouse
{
button = 1
command = 'spawn'
arg = 'awesome-message "`date`"'

}
}
textbox "free"
{
mouse
{
button = "1"
command = "spawn"
arg = "exec /usr/local/desktopmanager/awesome/scripts/bigfree.shell"
}
width = 70
align = "right"
}

progressbar "diskusage"
{
data "disk"
{
bordercolor = "#006e96"
bg = "#e5e5e5"
fg = "#00ff00"
fg_center = "#daaf0a"
fg_end = "#ff0000"
}
width = 70
align = "right"
}

textbox "load"
{
mouse
{
button = "1"
command = "spawn"
arg = 'exec rxvt -e top'
}
width = 40
align = "right"
}

taglist mytaglist
can create entries in the TAG-LAYOUT-TASKBAR.
layoutinfo mylayoutinfo
{
mouse
{
button = "1"
command = "tag_setlayout"
arg = "+1"
}
mouse
{
button = "8"
command = "tag_setlayout"
arg = "-1"
}
had to enable every button to get the mouse wheel scrolling backwards going ( 3 normal mouse buttons, 2 thumb mouse buttons , 2 buttons for scrolling forth and back ) and it these have to be done for every little feature of the taskbar as far as I can see.
mouse
{
root
{
button = "1"
command = "spawn"
arg = "exec rxvt"
}
root
{
button = "2"
command = "spawn"
arg = "exec rox"
}
root
{
button = "3"
command = "spawn"
arg = "exec xterm"
}
root
{
button = "4"
command = "tag_viewnext"
}
root
{
button = "5"
command = "tag_viewprev"
}
no action while clicking on the free desktop .. might be enableable but i dont know how, and for a/the WindowTitlebar with minimize/maximize buttons I have no parameters :
[21:01 0 /bin/bash 7399 2 awesome-2.3.6 ]
[puppypc]# grep -n title * | grep toggle
titlebar.c:463:uicb_client_toggletitlebar(int screen __attribute__ ((unused)), char *arg __attribute__ ((unused)))
titlebar.h:35:Uicb uicb_client_toggletitlebar;
uicbgen.h:52: {"client_toggletitlebar", uicb_client_toggletitlebar},
"client" is mainly the ApplicationWindow , "layout" the GridLayouts , "tag" every single VirtualDesktop (9) , "task" the part of the TaskBar where the ApplicationWindows have their "entry" .

Code: Select all

#!/bin/sh
    while true
    do
        # if you start this from .xinitrc, the script will start before
        # awesome, and will fail.
        if [ -S ~/.awesome_ctl.0 ]; then
            while true
            do
            S=`uptime | wc -w`
            SR=`expr $S + 1`
            CF=`expr $SR - 2`
              echo "0 widget_tell mystatusbar load text `uptime | tr -s ' ' | cut -f $CF -d ' ' | sed 's/,//g'`"
              echo "" # an empty line flushes data inside awesome
              sleep 4
            done | awesome-client
        else
            sleep 4
        fi
    done

Code: Select all

#!/bin/sh


    while true
    do
        # if you start this from .xinitrc, the script will start before
        # awesome, and will fail.
        if [ -S ~/.awesome_ctl.0 ]; then
            while true; do
                usage=`df | grep -w '/'| tr -s " " | cut -f 5 -d " " | sed 's/\%//g'`
                echo "0 widget_tell mystatusbar diskusage data disk ${usage}"
                echo "" # an empty line flushes data inside awesome
                echo "0 widget_tell mystatusbar free text "`expr 100 - $usage`' %' free""
                sleep 6;
            done | awesome-client
        else
            sleep 7
        fi
    done

Code: Select all

!/bin/sh
    while true
    do
        # if you start this from .xinitrc, the script will start before
        # awesome, and will fail.
        if [ -S ~/.awesome_ctl.0 ]; then
            while true
            do
              echo "0 widget_tell mystatusbar clock text `date +%H:%M:%a`"
              echo "" # an empty line flushes data inside awesome
              sleep 4
            done | awesome-client
        else
            sleep 8
        fi
    done

Code: Select all

#!/bin/sh

#[[ "`pidof xconsole`" = "" ]] && killall xconsole

#xconsole &

#DF=`df`

#echo "$DF" >> /dev/console

DF=`df`
mkdir -p /tmp/awesome
sync
echo "$DF" > /tmp/awesome/df.txt

[[ "`which less`" != "" ]] && rxvt -e less /tmp/awesome/df.txt && exit
[[ "`which mp`" != "" ]] && rxvt -e e3 /tmp/awesome/df.txt && exit
[[ "`which e3`" != "" ]] && rxvt -e e3 /tmp/awesome/df.txt && exit

awesome-message "Sorry no suitable viewer (e3,mp,less) detected"

exit
these four scripts would create the clock,load,freemem applet .

Code: Select all

        iconbox RxVT
        {
            image = "/usr/local/lib/X11/mini-icons/xterm.png"
            mouse
            {
                button = "1"
                command = "spawn"
                arg = "exec xterm"
            }
         }
        iconbox gEANY
        {
            image = "/usr/local/lib/X11/mini-icons/geany.xpm"
            mouse
            {
                button = "1"
                command = "spawn"
                arg = "exec geany"
            }
        }
        iconbox logo
        {
            image = "/usr/local/share/awesome/icons/awesome16.png"
            mouse
            {
                button = "1"
                command = "spawn"
                arg = "exec xterm -e man awesome"
            }
         }
        
    }
}

rules
this works to create clickable StartIcons in the taskbar.
first scouting is done, now I'll leave it for the moment .
AWESOME uptime :
[20:31 0 /bin/bash 8923 1 ~ ]
[puppypc]# uptime
21:28:04 up 1 day, 5:04, load average: 1.12, 1.14, 1.08

kerl
Posts: 154
Joined: Tue 16 Apr 2013, 21:15

#13 Post by kerl »

These other window managers are similar

dwm

i3wm

notion

You can find a guy on youtube using notion on slackware.
I don't think I've ever seen something like this on my Microsoft native homeland. Maybe there is some program that tries to emulate "Tiling, Tabbing, Static"

Edit: yes, on dwm's site there are links for M$ too

Post Reply