PieDock
Description
PieDock is a task bar and application launcher in shape of a pie menu. It feels a little bit like the famous OS X dock in a circle. Here are some screenshots:
To see the idea in action, try the WebPie demo or watch this video.
Download
Latest version: piedock-1.6.6.tar.bz2
Options:
Full automatic install or update:
$ curl piedock.markusfisch.de/install.sh | sh
If you don't have curl, just download the source tarball, extract it, change into the new directory and type:
$ sh/deploy
This will configure, build, install and run PieDock.
If you're on Gentoo Linux, you may use emerge:
$ emerge piedock
This may not always be the latest version.
The development version is available on GitHub.
You may easily clone the project by running:$ git clone git://github.com/markusfisch/PieDock
Requirements
Requires a C++ compiler, headers and libraries of X11 and libpng. Xft and the X Rendering Extension (to make use of a compositing manager) are optional.
Runs on Linux, BSD and Solaris.
Installation
Download tarball above
Unpack tarball:
$ tar xjvf piedock-x.x.x.tar.bz2
Change into the new directory "piedock-x.x.x" and compile it:
$ cd piedock-x.x.x $ ./configure $ make
If everything went well, install as root:
# make install
Now you need to set up your configuration, either manually (see below) or by running the enclosed setup script:
$ sh/setup
Configuration
Find some icons (approx. 128x128 Pixels) in PNG format. I'd recommend those places:
You may use GIMP to convert XP icons; OS X icons can be converted by gthumb or ImageMagick.
Create a directory named ".piedock" in your home directory:
$ mkdir ~/.piedock
Place all your PNG icons into this directory
Create a ".piedockrc" configuration file in your home directory; you may use the enclosed "res/piedockrc.sample" as a template:
$ cp res/piedockrc.sample ~/.piedockrc
Edit ".piedockrc" to meet your requirements. The format of the file is very simple: Each line begins with a statement and continues with space-seperated arguments to this statement. If an argument has spaces, it must be enclosed in quotes, just like you do on the command line. There are only two statements that are important: icon and alias.
Use the icon statement to specify persistent icons in the menu. Normally an icon would only appear if there is a corresponding window. icon icons do always appear. The statement accepts two arguments: the name of the application (which must also be the name of the icon in "~/.piedock/") and, optionally, a string to launch the application if the first argument isn't enough to do that (i.e. a path is required or you want to give some arguments).
The alias directive allows you to recognize windows that do not give the correct name of their corresponding executable. Every application window in X11 should have a resource with it's name in it (the so-called class hints for the interested).
Unfortunately, this name may differ from the name of the executable which is where alias comes in. alias accepts two arguments: a string for recognition and the true name of the executable. The recognition string may be prefixed by another argument (either name, class or title) to specifiy the property which the string is checked against.
There is a "utils" subdirectory which contains a helpful utitlity to find the right settings. Just change into this directory and do:
$ ./piedockutils -l
A list of all open windows with their properties will be displayed. Now you can use those values (always prefer the class or name property) to set up aliases for windows which doesn't get recognized the right way.
If you have some unused button on your mouse, I suggest you specify its number to the trigger button directive like this:
trigger button (number of mouse button)
You may find the right number by using the xev utitlity. Then you can open the pie menu by clicking that button.
Documentation
Browse source code documentation.
License
PieDock is open source and licensed under the MIT license.
WebPie
Description
WebPie is a pie menu for web pages. Its appearance is very similar to PieDock. Image and animation quality do depend heavily on browser and operating system.
Download
Latest version: WebPieIcon.js and WebPie.js
Those files are uncompressed. To get production libraries, use a compressor.
The development version is available on
GitHub.
You may easily clone the project by running:
$ git clone git://github.com/markusfisch/WebPie
How to use
Place both files somewhere in your web project and add those two lines to the <head/> element of your web page:
<script type="text/javascript" src="path/to/WebPieIcon.js"></script> <script type="text/javascript" src="path/to/WebPie.js"></script>
Next you'll have to set up the menu, for example:
<script type="text/javascript"> <!-- var p = new WebPie( { icons: [ new WebPieIcon( "path/to/icon.png", function(){ alert( "First" ); } ), new WebPieIcon( "path/to/icon.png", function(){ alert( "Second" ); } ), new WebPieIcon( "path/to/icon.png", function(){ alert( "Third" ); } ) ] } ); p.create(); --> </script>
For more information browse the script files. For a full sample see DemoWebPie.js.
If you want to extend WebPie, you may want to subclass it. For example:
<script type="text/javascript"> <!-- WebPie2.prototype = new WebPie(); WebPie2.prototype.constructor = WebPie2; function WebPie2( p ) { WebPie.call( this, p ); } WebPie2.prototype.preShow = function( e ) { // do here what you want to do before the menu opens return true; } var p = new WebPie2( { icons: [ new WebPieIcon( "path/to/icon.png", function(){ alert( "First" ); } ), new WebPieIcon( "path/to/icon.png", function(){ alert( "Second" ); } ), new WebPieIcon( "path/to/icon.png", function(){ alert( "Third" ); } ) ] } ); p.create(); --> </script>
Compatibilty
Works with the latest versions of Opera, Firefox, Chrome, Safari and Internet Explorer.
License
WebPie is licensed under the MIT license.
ShaderEditor
Description
Create and edit GLSL shaders on your Android phone or tablet and use them as live wallpaper.
Source
This app is open source. Clone, fork, contribute on GitHub.
Features
Live preview
Syntax highlighting
Error highlighting
FPS display
Use any shader as live wallpaper
Exposure of accelerometer sensor
Exposure of wallpaper offset
Previous rendered frame in backbuffer texture
Tips
How many FPS should I get to set my shader as live wallpaper?
Some devices do limit the GPU to consume less power when not plugged in. That's why you should always check your FPS in full screen (use the eye icon in the upper left) with the power cord off. Your shader should make at least 30 FPS or so to not slow down the UI. Low resolution displays will produce better FPS as there's just a lot less to calculate.
How much battery will a live wallpaper take?
A live wallpaper should only consume battery when you see it. So it generally depends on how often and how long you look at it. With normal use, you shouldn't note a difference in battery consumption.
Errors are not highlighted
Unfortunately error information is disabled on some devices (e.g. Huawei Ideos X3, Asus Transformer). Error highlighting/reporting is not available on these devices.
Wave lines live wallpaper
Description
A simple, unobstrusive live wallpaper for Android showing slowly moving wave lines.
Originally written on my phone using AIDE.
Source
This app is open source. Clone, fork, contribute on GitHub.
Features
You can choose a color theme, build your own, change if the lines should grow and shrink or if they should have a uniform width. The lines may swing in harmony or each line independently. You may set the number of lines, the number of waves in a line and the maximum amplitude.
simsalabash
Description
Static site generator in BASH. For command line nerds. With love.
A sample is worth a thousand words:
$ mkdir contents htdocs layouts $ echo '<h1>Hello World</h1>' > contents/Hello-World $ echo '<html><body>`content`</body></html>' > layouts/contents.html $ simsalabash $ firefox htdocs/index.html
Download
Latest version: simsalabash
The development version is available on
GitHub.
You may easily clone the project by running:
$ git clone git://github.com/markusfisch/simsalabash
How does it work?
For every file in contents/, the corresponding layout will get expanded into htdocs/ where the output is stored under the name of the content file with the extension of the layout file.
Layouts correspond to content files, when their name (without extension) does match a component of the (relative) path of the content file. Matching starts from the rear end with the file name.
In your content and/or layout files you may use shell expansions like
$(command)or
`command`or
$((expression))or
Hi, this is $USER talking.
to combine your website.
simsalabash does provide the following handy commands:
title
Prints the title which is the formatted file name of the content file in process.usage: title
nav
Prints a recursive standard list navigation.usage: [(UNFOLD|FLAT)=1] nav [PATH] PATH - content path (optional, defaults to content/) UNFOLD - unfold navigation, this will make a sitemap FLAT - do not dive into subdirectories
content
Prints the content of file in process.usage: content
include
Include (and expand) another content/layout file.usage: include FILE... FILE - path and name of file to include
Apart from that, you're free to invoke any command you like. For example, you may do something like this:
$FILE was written by `whoami`
$FILE holds the path and name of the content file in process.
How to extend simsalabash?
There are two places for additional source files:
$HOME/.simsalabash/ $PWD/lib/
Use the first location for general extensions you want to have always. Use the latter for project specific extensions and modifications.
You can override existing functions to extend simsalabash or add new ones to add further functionality.
How to use Markdown?
Download Markdown.pl and put it into your path. Then paste this
content() { include $FILE | Markdown.pl }
into a file in $HOME/.simsalabash/ to override and extend the default function.
Purpose
simsalabash aims to be a simple tool to combine a website from a bunch of text files and generate a recursive standard list navigation for it.
It was designed to minify the effort to build and maintain small static websites and targets the experienced BASH user.
simsalabash is not a Jack of all trades, though. Please check out the advantages and disadvantages:
Advantages and principles
Little to no configuration.
Meaningful structure of content/ which mirrors your web site.
Automatically generates a recursive standard list navigation.
Easy sorting of navigation items with .nav files.
The output directory is not temporary so assets and downloads won't get copied everytime you're doing an rsync.
No dependencies beyond BASH, cat, mktemp, rm and probably tr (BASH < 4).
Disadvantages and limitations
Markdown and things like that are external.
There's no integrated web server and never will be.
BASH is slow (but fast enough for any web site of reasonable size).
BASH is not object-oriented, nor easy, nor hip.
License
simsalabash is licensed under the MIT license.
readmail
Description
BASH eMail client. Only POP and SMTP are supported.
Probably the worlds smallest, simplest, yet full featured eMail client without any dependencies beyond a working GNU environment running BASH.
Use it as a fallback, as a quick & slim alternative or as a tool to read, send and manage messages.
Download
Latest version: readmail
The development version is available on
GitHub.
You may easily clone the project by running:
$ git clone git://github.com/markusfisch/readmail
Requirements
A working GNU environment running BASH.
Features
The following commands are available:
$ readmail h q p(eek) peek for new messages s(tatus) request mailbox status n(ew) list new messages only t(ail) [N] list the latest N messages l(ist) [N[-N]]... list messages r(ead) [N[-N]]... read message x(tract) N extract attachments of message N f(ile) N[-N]... file message d(elete) N[-N]... remove message a(nswer) N answer message w(rite) ADDRESS write a message to ADDRESS m(ime) FILE show a message file in MIME format (e.g. *.mbs) c(lear) clear screen (or CTRL+L) h(elp) show this info q(uit) quit (or CTRL+D)
You may invoke the commands directly from the command line, e.g.:
$ readmail s 'f 1' 'r 3-5' q
Or inside the interactive shell.
Examples
Quickly get the size of your mailbox:
$ readmail s q
Show your latest message:
$ readmail r q
Get the number of new messages since the last call:
$ FORMAT="%d\n" readmail p q
Send a message in one line:
$ ATTACHMENTS=' ' SUBJECT='subject' BODY='body' \ readmail 'w john@example.com doe@example.com' q
Send one or more files:
$ ATTACHMENTS='file1 file2' SUBJECT='subject' BODY='body' \ readmail 'w john@example.com' q
Installation
Download the file above
Make it executable:
$ chmod a+x readmail
Place the script somewhere in your path, i.e. for a local install do:
$ mv readmail ~/bin/readmail
Set up your configuration, see below
Configuration
Just run readmail or:
Create ".readmailrc" in your home directory:
$ vi ~/.readmailrc
Put the following lines into it (fill in the values in brackets):
POP_HOST='(your POP3 server)' POP_ACCOUNT='(your POP3 account)' POP_PASSWORD='(your POP3 password, this is optional)'
If you don't want to give passwords, readmail will ask you for it.
Append this block to configure your SMTP settings:
SMTP_HOST='(your SMTP server)' SMTP_ACCOUNT='(your SMTP account)' SMTP_PASSWORD='(your SMTP password, this is optional)'
TIP: If you use "@" for the name of the script, you have always quick access and can query your eMails by:
$ @ n q
In this case your configuration file must read ".@rc", of course.
License
readmail is Public Domain.
ZoomGrid
Description
ZoomGrid is a grid which can zoom its cells. In other words, it's a two-dimensional accordion menu inside a fixed rectangle.
Alternatives:
Recently Chris Coyier did something very similar: the Nine Image Expander Thing.
If you're looking for a traditional accordion that expands both vertically and horizontally, you should have a look at InfoGrid.
Another great alternative are Rotating Blocks (almost pure CSS 3).
Download
Latest version: ZoomGrid.js.
Extensions:
ZoomGridTransparency.js - make cells transparent
ZoomGridHighlight.js - add highlighting
ZoomGridFrame.js - add ornament frames around each cell
ZoomGridMaxChildWidth.js - maximize width of child elements
ZoomGridDisableFoldedLinks.js - disable links in folded cells
ZoomGridUnfocusedHide.js - hide contents of unfocused cells
ZoomGridRestoreButton.js - show a button to unfocus all cells
ZoomGridContainerFade.js - fade out unfocused grid when mouse is inactive
Those files are uncompressed. To get production libraries, use a compressor.
The development version is available on
GitHub.
You may easily clone the project by running:
$ git clone git://github.com/markusfisch/ZoomGrid
How to use
Copy ZoomGrid.js (along with any optional extension) into your web folder and add a corresponding <script/> tag for each file to the <head/> element of your page.
<script type="text/javascript" src="path/to/ZoomGrid.js"></script> <script type="text/javascript" src="path/to/ZoomGridTransparency.js"></script> ...
Then invoke the grid:
<script type="text/javascript"> <!-- var z = new ZoomGrid( { container: document.getElementById( "Contents" ) } );
In this case, you should have a <div id="Contents"/> somewhere on your page, of course.
After that, you need to activate the extensions you want to use. For example, to activate the transparency extension do:
z.addTransparency(); --> </script>
Some extensions may require attributes. Just look at the corresponding source file. For a full sample see DemoZoomGrid.js.
Compatibilty
Works with the latest versions of Opera, Firefox, Chrome, Safari and Internet Explorer.
License
ZoomGrid is Public Domain.
cpprc
Description
C++ resource compiler. cpprc will generate a C++ source file (along with the corresponding header file) that embeds any given data file and provides a Resource class which gives access to this data. The Resource class can be created in two flavours: one using STL streams, the other is using WxWidgets streams.
If you know "qtrc" of the famous QT toolkit, then you know what this tool is doing too.
Download
Latest version: cpprc-0.4.3.tar.bz2
The development version is available on
GitHub.
You may easily clone the project by running:
$ git clone git://github.com/markusfisch/cpprc
Requirements
This tool should run on any system that has a decent C++ compiler.
Installation
Download tarball above
Unpack tarball:
$ tar xjvf cpprc-x.x.x.tar.bz2
Change into the new directory "cpprc" and compile it by:
$ cd cpprc $ make
Place the executable somewhere in your path, i.e. for a local install try:
$ mv cpprc ~/bin
Or, if you want to make the program available for all users, do this as root:
$ mv cpprc /usr/local/bin
Configuration
There is no configuration necessary.
If you are using Makefiles and (at least) a *nix-like environment and have your resources in a subdirectory called say "data", you can do something like this in your Makefile:
resources: if ! [ -f Resources.cpp ] || \ [ "`find data/ -newer Resources.cpp`" ]; then \ cpprc -f wxWidgets -o Resources `find data/ -type f`; \ fi
License
Cpprc is open source and licensed under the MIT license.
About
What is this all about?
This is a mixed and very loose collection of things I wrote in my spare time which I consider worth sharing.
This and that
Twitter
News and noise. You decide.GitHub
Fork or contribute.Gists
Miscellaneous code snippets.Kartpokal
Local indoor go-kart championship. If you're into that kind of stuff, live anywhere near me and/or don't know what to do any given sunday.Striker
A (very old) vertical shooter. Still fun.
For germans: Warum ist hier alles in Englisch?
Darum: