There is no installation. Just put the binary 'mudesk' somewhere permanent. There are no other files to install.
Once started, it will look at the files in ~/Desktop (or the given directory with the -d option) and create some icons for them on the background of your X11 screen.
You can drag icons with the left mouse button to position them. To execute the action associated with an icon, double click it.
You can right-click on the desktop to see a menu of operations:
The program has no means to pass right-clicks on the window to a window manager etc. to let that program show its menu. Instead of doing that, I run it with a height slightly smaller than the display. This way, the small strip below the desktop window is the root window showing from behind and can be used to access the window manager's menu. My xinitrc looks like this:
#!/bin/sh xsetroot -solid '#222200' TZ=GMT-2 export TZ mudesk -h 980 & simplewm& exec mupanel
define file_type { array string extensions; string command; string icon; } define menu_style { int pad_hor; // horizontal padding to window border int pad_ver; // vertical padding to window border int pad_mid; // padding between the lines of the menu int font_size; string font_name; int bgcolor; int fgcolor; int hilight; // hilight color is XORed with the menu item when // the item is hovered } top_level desk { array string icon_path; // where to look for icons when they are not // specified with full paths array file_type file_type; string directory_icon; // icon to be displayed for directories string file_manager; // command line for the file manager, which // will be used for opening directories. // something like "xfe %f" int pad_mid; // padding between the icon and its text int icon_size; // 48 works best for me int max_width; // maximum width allocated for text. // if some text doesn't fit this, it will // be truncated int font_size; string font_name; // full path to a .ttf file int foreground; // text color string background_image; // only PNG images int double_click_threshold; // in milliseconds int drag_threshold; // number of pixels of mouse movement // after which a drag will be recognized menu_style menu_style; }The file_type option can be used to teach mudesk how to open files. You can provide icons, command lines or both for each type of file. By default, mudesk tries to use "xdg-open %f" to open a file, which may do some stupid things. Here is an example of how to use this option:
file_type { command "okular %f" extensions ".pdf" } file_type { command "viewnior %f" extensions { ".jpg" ".gif" ".png" ".jpeg" } icon "/home/dodo/bin/image.png" }
The background image also has to be in PNG format. It's best to trim down your image to the desktop window size because otherwise the program scales it down to fit the desktop and this will take some time. Even if this is a very short time, it's annoying to slow down a program for no good reason.
The program stores the state of your desktop in $XDG_CONFIG_HOME/mudesk/desk. If you make a change and don't see it applied, remove this file and restart the program: not from the right click menu, but by actually killing the process and running the program again.
For some reason, if the program seems to forget about the effects of your most recent configuration changes then it means that the program isn't writing out the cache file $XDG_CONFIG_HOME/mudesk/desk when it should. In order to force a write, simply drag an icon to a different position.
The program could use the Linux inotify interface to discover when files have changed etc. instead of relying on the user to click 'refresh'. However, I don't think it's such a critical feature. My desktop rarely changes and I'm very aware of it when it does, since nothing automatic changes it. I do it manually by creating a new shortcut etc. So, clicking refresh after doing my changes is quite trivial.
Icon search algorithm could be improved, but I'd have to follow some retarded conventions set by freedesktop.org.