Make A Skin For Minimenu If You Like; Heres How


skeezix

Internal Development
Joined
Mar 11, 2003
Messages
8,063
Website
www.codejedi.com
minimenu_0007_dave.png


This is a _Desktop linux_ build of minimenu; it will be sufficiently workable for skinning, but not really workable for a lot of things (ie: working with pnd files and actually running stuff.) (Yes, if you set things up right, it wil run x86 pnd files just fine, etc and so on, but I'm not making a nice formal package.. just packing it up easy enough to fiddle with skins.)

This tarball was just build using a variation of Ubuntu; it dynlinks a lot of libs but I'm expecting all those libs to be present on other Linux variations as well.

So just grab the tarball, open a terminal and do ..

cd /where/tarball/lives
tar zxvf libpnd-mmenu-current.tgz
./bin/mmenu

Thats it, it should work. If not, do 'ldd bin/mmenu' and see which libs are missing :)

NOTE 1: when run like this, it'll look in minimenu/mmenu.conf for base config, and that directs it to minimenu/skins for skin stuff
NOTE 2: this has slightly different conf from the one that deploys to pandora; preview pics are turned off and it is set to windowed moded, since fullscreen on a 'small' app like that would be weird on a desktop; otherwise, pretty simialr conf file
NOTE 3: includes 'two skins' right now for sample; 'default' is my minimal skin you've seen before; 'perty' is DaveC's new "work in progress" skin, which will probably become the _Shipping default_ since it looks _way better_ to mine.

I hope its okay with DaveC I just released it like this. THIS IS WORK IN PROGRESS, DON'T BUG HIM :)

NOTE 4: Some *bogus* pnd files are included; they're old and broken mostly, with old and broken PXML.xml; don't look at those :) I include them just so your menu shows _Something_

NOTE 5: mmenu doesn't "run" much; its job is to select files to run, and then it passes them to anothe job to actually run them (and quits, to free up all resources.) So mmenu isn't going to run much for you, since I didn't include the job that does the work.

NOTE 6: If you have non-empty directories in /media (default file browser location, see mmenu.conf to alter it) it will show tabs for those (by default, you can configurfe it to not do that, or to look elsehweere, or etc etc.); in this case, using the file browser, it can run stuff, but I dont' see much point in you using 800x480 program on your desktop linux machine to run xeyes :p

Manual -- I'll write one. Suffice to say ..

mmenu,.conf -- defines menu required stuff, and stuff the user might want to change (ie: searchpaths for things, enable this tab or that tab.) Nothing to do with _skinning_
mmskin.conf -- anyh directory in the 'skin path', that also contains mmskin.conf, is candidate to be a skin directory. ie:
./minimenu/skins/default and ./minimenu/skins/perty makes for two skin options ("perty" and "default").

You can make a new dir minimenu/skins/ILoveFurries and copy minimenu/skins/perty/* into it, and it'll show up as a new skin option "ILoveFurries". Just that easy.

Then you can hack up mmskin.conf to change the number of rows/columns in the grid, or chnage its location, resize the detial panel and tabs, specify what files to use for artwork and _so on_. Its pretty configurable, all things considered (ie: hacked most of it together over a week :)

There are other conf files that be can be used, and when on Pandora it will look on SD cards for skins, and all sorts of stuff, but I',m not going to tell you about that in this post; this build is for SKINNING, not for you to talk about all that other stuff.

I'm creating documentation here: http://pandorawiki.o...n_Documentation

Keys .. well, its mostly set up for use on the Pandora obviously, but it ahs various weird keys I use for testing..
- z is left trigger, x is right trigger -- for going through tabs. (default setting is no wrap around on tabs, stop and leftmost and rightmost tab rather than cycling.)
- q is for quit; same as killing the window or process.
- cursor keys -- move the selection around
- spacebar -- try to 'run the pnd', which won't work since they're not real pnd files or using proper PXML.xml in them (haha, suckers.)
- left control -- brings up the "Select menu", you'd see on pandora. Select -> change skin is all you really care about in this case

When you change skins, the menu will just quit. This is on purpose, since the other job wil restart it normally on a Pandora; for oyu, just rerun it to see the new skin choice. (It'll remember the selection for each run.)

It will log various notes or complaints to the terminal; if your skin is bad, it'll usually tell you what file is missing or why it hates it. If you edit the conf 'just so', you can make it crash.. I figure thats your problem, don't break the conf files ;)

So, in essence,,

** This is just for skinning, not for discussing everything else about it; stay on topic please :)

** a skin is just a directory, that contains mmskin.conf and the artwork/etc as needed. The directory must be in the skin searchpath, which in this case is ./minimenu/skins

Get this build here, and let me know if it works at all :)

http://www.codejedi....enu-current.tgz

Remember "perty" (with whatever changes happen to it over the next week or two) will be default, but if you make some good skins, maybe we can include them.. or certainly, we can put them in the appstore or file archive!

jeff

mmskin.conf is where all the skin goodies are; look there to set font colours and sizes, move thingds around, etc. Transparencies are supported. Use png for everything ideally, but it'll probably accept jpg and such.. but it was desigtned to use png for everything :)

DOCUMENTATION FOR THE MYRIAD CONF FILE OPTIONS: Will come soon .. I'llt ry to write some up tonight, tomorrow, Thursday, or something. ITs actualy pretty configurable, even though minimal :)

pic in crappy quality phone (with broken lcd cable in my pandora): http://www.codejedi....u_0007_real.jpg
 

Attachments

  • minimenu_0007_dave.png
    minimenu_0007_dave.png
    278.3 KB · Views: 228
Skeezix ..thank you very much for this Minimenu...i like it a lot... :)
i think i will use it very often with my Pandora.
 
Instructions for running mmenu for mortals
(skeezix - no skin designer will have "LD_LIBRARY_PATH=." set up per default ;) )

Ubuntu Recent Raven
(aka any recent Ubuntu distro - sorry Canonical for blatantly inventing new distro names)
  1. If you don't have SDL, do "sudo aptitude install libsdl1.2-all"
  2. If you're on 64-bit, do:
    Code:
    cd /tmp
    wget http://se.archive.ubuntu.com/ubuntu/pool/universe/s/sdlgfx/libsdl-gfx1.2-4_2.0.19-2_i386.deb
    dpkg -x libsdl-gfx1.2-4_2.0.19-2_i386.deb tmp
    sudo cp tmp/usr/lib/libSDL_gfx* /usr/lib32
    sudo aptitude install ia32-libs
  3. If you're on 32-bit, do "export LD_LIBRARY_PATH=.:/usr/lib"
  4. If you're on 64-bit, do "export LD_LIBRARY_PATH=.:/usr/lib32"
  5. Go to where you extracted mmenu
  6. Do "./bin/mmenu"
Combined commands for 64-bit:
Code:
sudo aptitude install libsdl1.2-all
cd /tmp
wget http://se.archive.ubuntu.com/ubuntu/pool/universe/s/sdlgfx/libsdl-gfx1.2-4_2.0.19-2_i386.deb
dpkg -x libsdl-gfx1.2-4_2.0.19-2_i386.deb tmp
sudo cp tmp/usr/lib/libSDL_gfx* /usr/lib32
sudo aptitude install ia32-libs
export LD_LIBRARY_PATH=.:/usr/lib32
cd .../libpnd-mmenu-current
./bin/mmenu

Combined commands for 32-bit:
Code:
sudo aptitude install libsdl1.2-all
export LD_LIBRARY_PATH=.:/usr/lib
cd .../libpnd-mmenu-current
./bin/mmenu

Fedora 10-12
Because Fedora has unified repositories, this works for 32- and 64-bit:
Code:
sudo yum install SDL.i686 SDL_gfx.i686 SDL_ttf.i686 SDL_image.i686
export LD_LIBRARY_PATH=.:/usr/lib
cd .../libpnd-mmenu-current
./bin/mmenu
 
Thanks dflemstr -- I usually do my hacking at night, and then post crap during the day when I'm in meetings and there is a lull (fireless ftw :p , and I am in too many meetings :( ... but it always makes me rush everything :)

I hacked together some docs for mmskin.conf on the main pandorawiki, will write up docs for the skinning relevent bits soon.
http://pandorawiki.org/User_manual#Minimenu_-_Comprehensive_Configuration_Documentation

For a couple week hack, I'm really likely minimenu. I am sorely tempted to rewrite it to be entirely plugin driven (so people could add 'weather panels' and such), and not be called 'minimal' anymore, but I keep resisting.. IT hink panorama and such can be for fun stuff like that (and a weather panel would be so easy to write in pure js/css).

jeff
 
skeezix said:
For a couple week hack, I'm really likely minimenu. I am sorely tempted to rewrite it to be entirely plugin driven (so people could add 'weather panels' and such), and not be called 'minimal' anymore, but I keep resisting.. IT hink panorama and such can be for fun stuff like that (and a weather panel would be so easy to write in pure js/css).

jeff
Hopefully you will keep a fast version like this. That was the whole idea. If we want other menus full of useless fluff and bloat there are others with that stuff. The idea was to get to your apps easily and quick (which this does). We need at least ONE fast loader, not sure why there is such a strong urge by everyone to want to fill everything up with crap :p
 
Last edited by a moderator:
Uh, wow this sounds complicated. :blink:
Can I just make some graphics and put them into a "skin" directory of the menu and then select these graphic set and DONE? Would be much more easy for guys like me, without coding skills and without Linux. ;)
 
fusion power -- yes, thats all there is to it ;) The trick is mmskin.conf says *Where* to put all the stuff.

If you want to use the existing layout, and just replace the artwork with art that is the same size, then no need to alter anything.. just drop in new files with the same name and specs and good to go.

The mmskin.conf is in case you want to change the icon size, make more or less rows in the grid, make the detail panel larger or smaller, put the tabs on the bottom or top, stuff like that.

If you want, just grab the file and unpack it (winzip and winrar can handle tgz files), and look in the skin/perty directory, and thereds about 10 png files to hack on.

jeff

edit: oh and Dave -- because its fun, mostly ;) Being modular and extensible doesn't usually cost much performance to the basics, it just takes time to design and code more sensibly; however, you can certainly bog down an extensible system by extending it too much. (or if its toooo extensible then yeah, the extension mechanism itself can make things clumsy.) I keep thinking back to the old Perl blog software "Blosxom" (and related non-Perl variations) -- sort of akin vaguely to old MAc OS (pre-OSX). Have every facet of the tool be .. instead of doing the task it needs to do on a function in the code, have it iterate across a list of all plugins that registered for that operation.

So a plugin based codebase becomes..

// do some task
call_task_function();

becomes

// for each registered task handler
foreach handler ( my_list_of_handlers ) {
call_handler ( handler );
}

So instead of 1 direct call, you have zero-to-many indirect calls. Not bad. But if you end up with 50 callbacks, its certainly going to chug you down; also, all that burden of iterating across handlers can slow you down if its a performance important piece of code (ie: rendering, say.)

Still, it makes it fun to wrtite -- your framework becomes a skeleton of empty code, very 'high level business logic', and then you write a bunch of standaloine little blobs that register for the tasks they want to recerive callbacks for, etc. Makes everything a bit more PITA, but pretty entertaining.

And amusement.. thats why coders do anything, right? :)
 
Hi skeezix,

Call me thick, Others have :p .

I`ve just downloaded your tarball of MiniMenu (goes all goose pimply) :wub:

I`ve extracted it, And tried to run it, No go.

Typed in "ldd bin/mmenu" as you said, To see what libs are missing (output below)

From the output, I can see that i am missing 4 libs, Where would one get those missing libs ?.

Code:
~/libpnd-mmenu-current $ ldd bin/mmenu
	linux-gate.so.1 =>  (0xb7840000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7741000)
	libpnd.so.1 => not found
	libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0xb76ab000)
	libSDL_image-1.2.so.0 => not found
	libSDL_ttf-2.0.so.0 => not found
	libSDL_gfx.so.4 => not found
	libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7548000)
	libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7521000)
	/lib/ld-linux.so.2 (0xb7841000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7512000)
	libasound.so.2 => /usr/lib/libasound.so.2 (0xb744a000)
	libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7446000)
	libdirectfb-1.0.so.0 => /usr/lib/libdirectfb-1.0.so.0 (0xb73e0000)
	libfusion-1.0.so.0 => /usr/lib/libfusion-1.0.so.0 (0xb73d6000)
	libdirect-1.0.so.0 => /usr/lib/libdirect-1.0.so.0 (0xb73c1000)
	libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb73a8000)
	librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb739f000)

Sorry to be a noob and a complete pain in the ass.

I would really love to see MiniMenu running, And would also like to have a go at
making a skin/theme.

Thanks Jeff. :)

Trooper
 
For libpnd it is included; eiher copy it to /usr/lib or the better option.. Add . or current full path to your LD_CONFIG_PATH

depending on whic shell you're something like

LD_LIBRARY_PATH=.
export LD_LIBRARY_PATH

this is helll to type on phoneand my brain is dead from trying FF13 :)

for the other libs, just get the packages.. In an apt system like debian or ubuntu use your package manager or just apt

on my phone so can look up the lib names but try For each..

Apt-cache search sdl | grep <gfx> and see if you can find the package you need. Should be easy to find. Look for words lib sdl and gfx (or whichever you need)

so 3 30s apt get installs and the env var set and you should be fine

see dflemstrs post above, he mightbe listed all this

we'll get you all set :)

jeffPhone
 
skeezix said:
fusion power -- yes, thats all there is to it ;) The trick is mmskin.conf says *Where* to put all the stuff.

If you want to use the existing layout, and just replace the artwork with art that is the same size, then no need to alter anything.. just drop in new files with the same name and specs and good to go.

The mmskin.conf is in case you want to change the icon size, make more or less rows in the grid, make the detail panel larger or smaller, put the tabs on the bottom or top, stuff like that.

If you want, just grab the file and unpack it (winzip and winrar can handle tgz files), and look in the skin/perty directory, and thereds about 10 png files to hack on.

jeff
Nice. :)
Yes, I thought on only alter the graphics and not the position/size of each Element. However, simple layout things like the number of Icons displayed on one page can be altered within the menu itself, maybe per options window? Like in GMenu 2X where you can set the number of icons per line etc. Would be more comfortable than doing this with a config file or so. ^^
 
Last edited by a moderator:
I'll probably add some config panels and such eventually; I didn't have the timeline for it -- Craig said "hey, howabout that menu idea you had, I want that, can you get it ready now", and I see I had about 2 weeks or so to finish it beofre we needed to ship that time, so.. *panic*. So it works, works well, but all configuration is in the conf files :)

I'll add pretty GUI options later :p

Dont' be afraid of textfiles, they're easy and powerful. It looks like:

rows_max 4
col_max 5

Somethign like that; piece of cake ;)

jeff
 
Seems like thread-fizzle; did I make the firstpost tl;dr, or are peopelo only interested if theres a Windows build?

jeff
 
skeezix said:
Seems like thread-fizzle; did I make the firstpost tl;dr, or are peopelo only interested if theres a Windows build?

jeff
I think that most people already made a pmenu skin and don't want to do another one, or somesuch. I had that problem with Panorama and made it compatible with pmenu skins for that reason (and I will of course also make mmenu skins compatible, as well!)

Or yeah, might be tl;dr.
 
Last edited by a moderator:
I briefly considered making pmenu-compatibility, but (Without looking at it much) figured it wouldn't work too well -- ie: mmenu is grid oriented, not scrolling list oriented, and I seem to recall people were making a background image with embedded space for the list and preview and such (I coudl be wrong) .. where mmenu has a background image, and a detail image that is overlaid for that area. (I should support a grid background image too I suppose as right now it just putw the icons on the background art which leads to the same problem.) ie: I figured it woudl not be possible to automatically just use pmenu designed artwork... but maybe it could, I should probably look into it. Or maybe not .. I don't have to do anything, once the unit ships, people will be motivated and then they can do it :)

jeff
 
skeezix said:
Seems like thread-fizzle; did I make the firstpost tl;dr, or are peopelo only interested if theres a Windows build?

jeff
I think it is a few things. One is many of us aren't linux wizzes. I looked at all of that set-up and thought no effin' way! Too complex for my feeble mind.

Then there is the fact that if you don't have a Pandora you won't be as motivated to do work for something you don't have yet. Once they are shipped more interest will come.

As far as pmenu compatibility that would mean compromising minimenu just for that sake and would mean minimenu wouldn't be as good as it could be. Right now minimenu can use pmenu icons imbedded in if you change nothing. If you want to make more minimenu specific you can use overrides. For icons this is as simple as putting an Appname.PNG in the same folder as the PND. There doen't seem to be a problem.

Also it also depends on which will become more widely used. It will depend if users prefer scrolling sequentially to load their app or if selecting an icon from a grid will suit their needs. Pmenu has the iPhone scrolly gimmick and Minimenu is quicker to get to stuff but has less bells and whistles.
 
Last edited by a moderator:
I do use Linux, but I'm afraid it seemed like rather a lot of setup to me, as well. :( (Nothing that bothers me, mind - I did understand it all. :p)

I'd be happy enough if I could just download the folder with the mmenu.conf file and the existing skins, so that I can take a look and figure things out from that. I'm not that fussed about testing anything right now - I can do that when I get my Pandora. :p

(Don't expect anything good out of me, mind - I'm not much of an artist in this sense. I just wanted to adapt some pre-existing artwork ripped from some games that I like, to try to make a skin for my personal use. :lol: )
 
Grab the dl, untar, try running :) easy :) maybe you'll have the libs...

Or maybe I should include them and a runscript :)

the skin/Perty is a folder of bits you can edit tho

jeffphone
 
May as well give it a go. :lol:

EDIT: I just had a quick shot at running it, but it doesn't seem to want to. I'll just poke around with the skin files - this looks like it'll be fun. :D

EDIT 2: Ok, I just got around to reading all of the included text files - slow of me, I know. :p Just wanted to say thankyou, regarding "about.txt". :)
 
Got it going?

I shoudl just include the extra libs, and a runme.sh that sets up LD_LIBRARY_PATH so has a higher chance of working..

On the other hand, it is tempting to make a windows build, but its not like I don't have enough on the plate already.. so maybe I'll just let it sit until release time, when peopel can go skin happy if they want :)

about.txt .. I'm still working on a UI for that, shh, its a secret :)

jeff
 
Back
Top