├── demo.png ├── icons ├── icons.png ├── README.md ├── Makefile ├── winicon16x16.xpm ├── winicon32x32.xpm ├── winicon48x48.xpm ├── winicon16x16.abgr ├── x.xpm ├── file.xpm ├── folder.xpm ├── file-code.xpm ├── file-gear.xpm ├── file-text.xpm ├── folder-up.xpm ├── file-archive.xpm ├── file-config.xpm ├── file-object.xpm ├── winicon64x64.xpm ├── file-info.xpm ├── file-audio.xpm ├── file-video.xpm ├── file-broken.xpm ├── folder-code.xpm ├── folder-gear.xpm ├── folder-db.xpm ├── folder-mount.xpm ├── folder-video.xpm ├── folder-download.xpm ├── folder-link.xpm ├── folder-mail.xpm ├── folder-music.xpm ├── folder-book.xpm ├── folder-apps.xpm ├── folder-trash.xpm ├── file-app.xpm ├── file-core.xpm ├── folder-game.xpm ├── folder-home.xpm └── folder-meme.xpm ├── control ├── font.h ├── selection.h ├── dragndrop.h ├── ctrlfnt.3 ├── icccm.txt └── selection.c ├── examples ├── Xresources ├── xfilesthumb └── xfilesctl ├── util.h ├── LICENSE ├── icons.h ├── widget.h ├── util.c ├── Makefile ├── README └── icons.c /demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phillbush/xfiles/HEAD/demo.png -------------------------------------------------------------------------------- /icons/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phillbush/xfiles/HEAD/icons/icons.png -------------------------------------------------------------------------------- /icons/README.md: -------------------------------------------------------------------------------- 1 | # Default Icons for XFiles 2 | 3 |

4 | 5 |

6 | 7 | This directory includes a few icons that are loaded into XFiles at 8 | compile time. 9 | 10 | These icons are in public domain (CC0) and were drawn using GIMP. 11 | -------------------------------------------------------------------------------- /icons/Makefile: -------------------------------------------------------------------------------- 1 | .SUFFIXES: .xpm .abgr 2 | 3 | # Convert XPM images into ARGB raw images. Requires Imagemagick and 4 | # hexdump. You need not run this. The source code is released with 5 | # the converted files included. 6 | .xpm.abgr: 7 | { \ 8 | printf 'unsigned long %s[] = {\n' "$<" | \ 9 | sed 's,icons/,,;s,.xpm,,' ; \ 10 | convert $< -color-matrix '0 0 1 0, 0 1 0 0, 1 0 0 0, 0 0 0 1' RGBA:- | \ 11 | hexdump -v -e '1/4 "0x%08x,\n"' ; \ 12 | printf '};\n' ; \ 13 | } >$@ 14 | -------------------------------------------------------------------------------- /icons/winicon16x16.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * winicon16x16_xpm[] = { 3 | "16 16 6 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #000000", 7 | "@ c #EDD400", 8 | "# c #EEEEEC", 9 | "$ c #FCE94F", 10 | " ", 11 | " ", 12 | " ......+ ", 13 | " .@@@@@@.+ ", 14 | "..######....... ", 15 | ".$......$$$$$$.+", 16 | ".$$$$$$$$@@@.@.+", 17 | ".$@$@$@$@@@@@@.+", 18 | ".$$@$@@@@@.@.@.+", 19 | ".$@$@$@@@@@.@@.+", 20 | ".$$@@@@@.@.@.@.+", 21 | ".$@$@@@@@.@.@@.+", 22 | ".$@@@@@@@@@@@@.+", 23 | "...............+", 24 | "++++++++++++++++", 25 | " "}; 26 | -------------------------------------------------------------------------------- /control/font.h: -------------------------------------------------------------------------------- 1 | typedef struct CtrlFontSet CtrlFontSet; 2 | 3 | CtrlFontSet * 4 | ctrlfnt_open( 5 | Display *display, 6 | int screen, 7 | Visual *visual, 8 | Colormap colormap, 9 | const char *fontset_spec, 10 | double fontsize 11 | ); 12 | 13 | int 14 | ctrlfnt_draw( 15 | CtrlFontSet *fontset, 16 | Picture picture, 17 | Picture src, 18 | XRectangle rect, 19 | const char *text, 20 | int nbytes 21 | ); 22 | 23 | int ctrlfnt_width(CtrlFontSet *fontset, const char *text, int nbytes); 24 | int ctrlfnt_height(CtrlFontSet *fontset); 25 | void ctrlfnt_free(CtrlFontSet *fontset); 26 | void ctrlfnt_init(void); 27 | void ctrlfnt_term(void); 28 | -------------------------------------------------------------------------------- /examples/Xresources: -------------------------------------------------------------------------------- 1 | ! Font 2 | XFiles.faceName: DejaVu Sans,Noto Sans CJK JP 3 | XFiles.faceSize: 12 4 | 5 | ! Plan 9 Acme colors 6 | XFiles.background: #FFFFAA 7 | XFiles.foreground: #000000 8 | XFiles.activeBackground: #AAFFFF 9 | XFiles.activeForeground: #000000 10 | 11 | ! Background transparency (requires X11 compositor) 12 | XFiles.opacity: 0.5 13 | 14 | ! Icons for XDG user directories 15 | XFiles.fileIcons: \n\ 16 | *.c=code \n\ 17 | *.h=code \n\ 18 | ~/Documents/=documents_dir \n\ 19 | ~/Download/=downloads_dir \n\ 20 | ~/Memes/=meme_dir \n\ 21 | ~/Music/=music_dir \n\ 22 | ~/Pictures/=images_dir \n\ 23 | ~/Videos/=videos_dir 24 | -------------------------------------------------------------------------------- /examples/xfilesthumb: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | BACKGROUND="#0A0A0A" 4 | THUMBSIZE=64 5 | umask 077 6 | 7 | case "$#" in 8 | (2) 9 | ;; 10 | (*) 11 | printf "usage: %s file\n" "$0" >&2 12 | exit 1 13 | ;; 14 | esac 15 | 16 | case "$2" in 17 | (*/*) 18 | mkdir -p "${2%/*}" 19 | ;; 20 | (*) 21 | ;; 22 | esac 23 | 24 | case "${1##*.}" in 25 | png|jpg|jpeg|gif|xpm|xbm|ppm) 26 | convert "${1}[0]" -background "$BACKGROUND" -flatten \ 27 | -define filename:literal=true -format ppm \ 28 | -thumbnail "${THUMBSIZE}x${THUMBSIZE}" \ 29 | "${2}" 30 | ;; 31 | webm|mp4|mkv|ogv) 32 | ffmpegthumbnailer -c png -i "${1}" -o - -s "${THUMBSIZE}" \ 33 | | convert - -define filename:literal=true -format ppm \ 34 | "${2}" 35 | ;; 36 | svg) 37 | rsvg-convert -h "${THUMBSIZE}" "${1}" \ 38 | | convert - -format ppm "${2}" 39 | ;; 40 | pdf) 41 | pdftoppm -f 1 -l 1 -scale-to "${THUMBSIZE}" -singlefile \ 42 | "${1}" "${2%.ppm}" 43 | ;; 44 | *) 45 | exit 1 46 | ;; 47 | esac 2>/dev/null 48 | -------------------------------------------------------------------------------- /control/selection.h: -------------------------------------------------------------------------------- 1 | /* 2 | * ctrlsel: API to own/convert/transfer X11 selections 3 | * Refer to the accompanying manual for a description of the interface. 4 | */ 5 | #ifndef _CTRLSEL_H_ 6 | #define _CTRLSEL_H_ 7 | 8 | #include 9 | 10 | ssize_t ctrlsel_request( 11 | Display *display, 12 | Time timestamp, 13 | Atom selection, 14 | Atom target, 15 | unsigned char **pbuf 16 | ); 17 | 18 | ssize_t ctrlsel_gettargets( 19 | Display *display, 20 | Time timestamp, 21 | Atom selection, 22 | Atom **ptargets 23 | ); 24 | 25 | Time ctrlsel_own( 26 | Display *display, 27 | Window owner, 28 | Time timestamp, 29 | Atom selection 30 | ); 31 | 32 | int ctrlsel_answer( 33 | XEvent const *event, 34 | Time epoch, 35 | Atom const targets[], 36 | size_t ntargets, 37 | ssize_t (*callback)(void *, Atom, unsigned char **), 38 | void *arg 39 | ); 40 | 41 | #endif /* _CTRLSEL_H_ */ 42 | -------------------------------------------------------------------------------- /util.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #define LEN(a) (sizeof(a) / sizeof((a)[0])) 8 | #define FLAG(f, b) (((f) & (b)) == (b)) 9 | #define RETURN_FAILURE (-1) 10 | #define RETURN_SUCCESS 0 11 | 12 | pid_t efork(void); 13 | int max(int x, int y); 14 | int min(int x, int y); 15 | int diff(int x, int y); 16 | int between(int x, int y, int x0, int y0, int w0, int h0); 17 | int escandir(const char *dirname, struct dirent ***namelist, int (*select)(const struct dirent *), int (*compar)(const struct dirent **, const struct dirent **)); 18 | void *emalloc(size_t size); 19 | void *ecalloc(size_t nmemb, size_t size); 20 | char *estrdup(const char *s); 21 | void *erealloc(void *ptr, size_t size); 22 | void egetcwd(char *path, size_t size); 23 | void eexec(char *const argv[]); 24 | void etcreate(pthread_t *tid, void *(*thrfn)(void *), void *arg); 25 | void etjoin(pthread_t tid, void **rval); 26 | void etlock(pthread_mutex_t *mutex); 27 | void etunlock(pthread_mutex_t *mutex); 28 | int ewaitpid(pid_t pid); 29 | void eclose(int fd); 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT/X Consortium License 2 | 3 | © 2021-2024 Lucas de Sena 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a 6 | copy of this software and associated documentation files (the "Software"), 7 | to deal in the Software without restriction, including without limitation 8 | the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 | and/or sell copies of the Software, and to permit persons to whom the 10 | Software is furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 | THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 | DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /icons/winicon32x32.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * winicon32x32_xpm[] = { 3 | "32 32 7 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #101010", 8 | "# c #EDD400", 9 | "$ c #EEEEEC", 10 | "% c #000000", 11 | " ", 12 | " ", 13 | " ", 14 | " ............ ", 15 | " .+++++++++++.@ ", 16 | " .+############.@ ", 17 | " .+##############.@ ", 18 | ".+.$$$$$$$$$$$$$$.+........... ", 19 | ".++.$$$$$$$$$$$$.+#++++++++++.% ", 20 | ".+#+............+#############.%", 21 | ".+##++++++++++++##############.%", 22 | ".+############################.%", 23 | ".+############################.%", 24 | ".+############################.%", 25 | ".+############################.%", 26 | ".+############################.%", 27 | ".+############################.%", 28 | ".+############################.%", 29 | ".+############################.%", 30 | ".+############################.%", 31 | ".+############################.%", 32 | ".+############################.%", 33 | ".+############################.%", 34 | ".+############################.%", 35 | ".+############################.%", 36 | ".+############################.%", 37 | ".+############################.%", 38 | "...............................%", 39 | "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", 40 | " ", 41 | " ", 42 | " "}; 43 | -------------------------------------------------------------------------------- /control/dragndrop.h: -------------------------------------------------------------------------------- 1 | /* 2 | * ctrldnd: X11 drag-and-drop helper functions 3 | * 4 | * Refer to the accompanying manual for a description of the interface. 5 | */ 6 | #ifndef _CTRLDND_H_ 7 | #define _CTRLDND_H_ 8 | 9 | #include 10 | 11 | enum ctrldnd_action { 12 | CTRLDND_COPY = 0x01, 13 | CTRLDND_MOVE = 0x02, 14 | CTRLDND_LINK = 0x04, 15 | CTRLDND_ASK = 0x08, 16 | CTRLDND_PRIVATE = 0x10, 17 | CTRLDND_ANYACTION = 0xFFFF, 18 | }; 19 | 20 | struct ctrldnd_data { 21 | unsigned char *data; 22 | ssize_t size; 23 | Atom target; 24 | }; 25 | 26 | struct ctrldnd_drop { 27 | enum ctrldnd_action action; 28 | struct ctrldnd_data content; 29 | Time time; 30 | Window window; 31 | int x, y; 32 | }; 33 | 34 | void ctrldnd_announce( 35 | Display *display, 36 | Window dropsite 37 | ); 38 | 39 | struct ctrldnd_drop ctrldnd_drag( 40 | Display *display, 41 | int screen, 42 | Time timestamp, 43 | Window icon, 44 | struct ctrldnd_data const contents[], 45 | size_t ncontents, 46 | enum ctrldnd_action actions, 47 | Time interval, 48 | int (*callback)(XEvent *, void *), 49 | void *arg 50 | ); 51 | 52 | struct ctrldnd_drop ctrldnd_getdrop( 53 | XEvent *climsg, 54 | Atom const targets[], 55 | size_t ntargets, 56 | enum ctrldnd_action actions, 57 | Time interval, 58 | int (*callback)(XEvent *, void *), 59 | void *arg 60 | ); 61 | #endif /* _CTRLDND_H_ */ 62 | -------------------------------------------------------------------------------- /icons.h: -------------------------------------------------------------------------------- 1 | /* file mode */ 2 | enum Mode { 3 | /* file type, 0x00 ~ 0x07 */ 4 | MODE_ANY = 0x00, /* any type */ 5 | MODE_DIR = 0x01, /* directory */ 6 | MODE_FIFO = 0x02, /* named pipe */ 7 | MODE_SOCK = 0x03, /* socket */ 8 | MODE_DEV = 0x04, /* block or character devices */ 9 | MODE_BROK = 0x05, /* broken links */ 10 | MODE_FILE = 0x07, /* regular file */ 11 | 12 | /* file mask */ 13 | MODE_MASK = 0x07, 14 | 15 | /* file mode bit */ 16 | MODE_LINK = 0x08, 17 | MODE_READ = 0x10, 18 | MODE_WRITE = 0x20, 19 | MODE_EXEC = 0x40, 20 | }; 21 | 22 | /* mapping of filetype names into pixmaps */ 23 | extern struct IconType { 24 | char *name; 25 | char **xpm; 26 | } icon_types[]; 27 | 28 | /* size of the icon_types[] array */ 29 | extern size_t nicon_types; 30 | 31 | /* mapping of globbing patterns into indices from the icon_types[] array */ 32 | extern struct IconPatt { 33 | unsigned char mode; 34 | char *patt; 35 | size_t index; 36 | } icon_patts[]; 37 | 38 | /* size of the icon_patts[] array */ 39 | extern size_t nicon_patts; 40 | 41 | /* array of window icons */ 42 | extern struct WinIcon { 43 | int size; 44 | unsigned long *data; 45 | } win_icons[]; 46 | 47 | /* size of the win_icons[] array */ 48 | extern size_t nwin_icons; 49 | 50 | /* indices from the icon_types[] array for a few default icons */ 51 | extern size_t icon_for_updir; /* icon for the parent directory */ 52 | extern size_t icon_for_dir; /* icon for child directories */ 53 | extern size_t icon_for_file; /* icon for files */ 54 | -------------------------------------------------------------------------------- /widget.h: -------------------------------------------------------------------------------- 1 | typedef struct Scroll { 2 | /* scroll position */ 3 | int row, ydiff; 4 | int highlight; 5 | } Scroll; 6 | 7 | typedef struct Item { 8 | unsigned char mode; /* entry mode */ 9 | char *name; /* item display name */ 10 | char *fullname; /* item full name */ 11 | char *status; /* item statusbar info */ 12 | size_t icon; /* index for the icon array */ 13 | } Item; 14 | 15 | typedef enum { 16 | WIDGET_NONE, 17 | WIDGET_INTERNAL, 18 | WIDGET_CONTEXT, 19 | WIDGET_CLOSE, 20 | WIDGET_OPEN, 21 | WIDGET_PREV, 22 | WIDGET_NEXT, 23 | WIDGET_GOTO, 24 | WIDGET_KEYPRESS, 25 | WIDGET_DROPASK, 26 | WIDGET_DROPCOPY, 27 | WIDGET_DROPMOVE, 28 | WIDGET_DROPLINK, 29 | WIDGET_ERROR, 30 | } WidgetEvent; 31 | 32 | typedef struct Widget Widget; 33 | 34 | Widget *widget_create( 35 | const char *class, 36 | const char *name, 37 | int argc, 38 | char *argv[], 39 | const char *resources[] 40 | ); 41 | 42 | int widget_set( 43 | Widget *widget, 44 | const char *cwd, 45 | const char *title, 46 | Item *items, 47 | size_t nitems, 48 | Scroll *scrl 49 | ); 50 | 51 | /* get value of icons resource into allocated string */ 52 | char *widget_geticons(Widget *widget); 53 | 54 | WidgetEvent widget_wait(Widget *widget); 55 | 56 | int widget_fd(Widget *widget); 57 | 58 | void widget_map(Widget *widget); 59 | 60 | WidgetEvent widget_poll(Widget *widget, int *selitems, int *nselitems, Scroll *scrl, char **sel); 61 | 62 | void widget_thumb(Widget *widget, char *path, int index); 63 | 64 | void widget_free(Widget *widget); 65 | 66 | void widget_busy(Widget *widget); 67 | -------------------------------------------------------------------------------- /icons/winicon48x48.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * winicon48x48_xpm[] = { 3 | "48 48 8 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #101010", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #000000", 12 | " ", 13 | " ", 14 | " ", 15 | " ", 16 | " ", 17 | " .................. ", 18 | " .+++++++++++++++++.@ ", 19 | " .+##################.@ ", 20 | " .+####################.@ ", 21 | " .+######################.@ ", 22 | " .+########################.@ ", 23 | ".+.$$$$$$$$$$$$$$$$$$$$$$$.+................. ", 24 | ".++.%%%%%%%%%%%%%%%%%%%%%.+#++++++++++++++++.& ", 25 | ".+#+.%%%%%%%%%%%%%%%%%%%.+###################.& ", 26 | ".+##+...................+#####################.&", 27 | ".+###+++++++++++++++++++######################.&", 28 | ".+############################################.&", 29 | ".+############################################.&", 30 | ".+############################################.&", 31 | ".+############################################.&", 32 | ".+############################################.&", 33 | ".+############################################.&", 34 | ".+############################################.&", 35 | ".+############################################.&", 36 | ".+############################################.&", 37 | ".+############################################.&", 38 | ".+############################################.&", 39 | ".+############################################.&", 40 | ".+############################################.&", 41 | ".+############################################.&", 42 | ".+############################################.&", 43 | ".+############################################.&", 44 | ".+############################################.&", 45 | ".+############################################.&", 46 | ".+############################################.&", 47 | ".+############################################.&", 48 | ".+############################################.&", 49 | ".+############################################.&", 50 | ".+############################################.&", 51 | ".+############################################.&", 52 | ".+############################################.&", 53 | "...............................................&", 54 | "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&", 55 | " ", 56 | " ", 57 | " ", 58 | " ", 59 | " "}; 60 | -------------------------------------------------------------------------------- /util.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include "util.h" 9 | 10 | int 11 | max(int x, int y) 12 | { 13 | return x > y ? x : y; 14 | } 15 | 16 | int 17 | min(int x, int y) 18 | { 19 | return x < y ? x : y; 20 | } 21 | 22 | int 23 | diff(int x, int y) 24 | { 25 | return x > y ? x - y : y - x; 26 | } 27 | 28 | void * 29 | emalloc(size_t size) 30 | { 31 | void *p; 32 | 33 | if ((p = malloc(size)) == NULL) 34 | err(EXIT_FAILURE, "malloc"); 35 | return p; 36 | } 37 | 38 | void * 39 | ecalloc(size_t nmemb, size_t size) 40 | { 41 | void *p; 42 | 43 | if ((p = calloc(nmemb, size)) == NULL) 44 | err(EXIT_FAILURE, "calloc"); 45 | return p; 46 | } 47 | 48 | char * 49 | estrdup(const char *s) 50 | { 51 | char *t; 52 | 53 | if ((t = strdup(s)) == NULL) 54 | err(EXIT_FAILURE, "strdup"); 55 | return t; 56 | } 57 | 58 | void * 59 | erealloc(void *ptr, size_t size) 60 | { 61 | void *p; 62 | 63 | if ((p = realloc(ptr, size)) == NULL) 64 | err(EXIT_FAILURE, "realloc"); 65 | return p; 66 | } 67 | 68 | void 69 | egetcwd(char *path, size_t size) 70 | { 71 | if (getcwd(path, size) == NULL) { 72 | err(EXIT_FAILURE, "getcwd"); 73 | } 74 | } 75 | 76 | int 77 | escandir(const char *dirname, struct dirent ***namelist, int (*select)(const struct dirent *), int (*compar)(const struct dirent **, const struct dirent **)) 78 | { 79 | int ret; 80 | 81 | if ((ret = scandir(dirname, namelist, select, compar)) == -1) 82 | err(EXIT_FAILURE, "scandir"); 83 | return ret; 84 | } 85 | 86 | pid_t 87 | efork(void) 88 | { 89 | pid_t pid; 90 | 91 | if ((pid = fork()) < 0) 92 | err(EXIT_FAILURE, "fork"); 93 | return pid; 94 | } 95 | 96 | void 97 | eexec(char *const argv[]) 98 | { 99 | execvp(argv[0], argv); 100 | err(EXIT_FAILURE, "%s", argv[0]); 101 | } 102 | 103 | void 104 | etcreate(pthread_t *tid, void *(*thrfn)(void *), void *arg) 105 | { 106 | int errn; 107 | 108 | if ((errn = pthread_create(tid, NULL, thrfn, arg)) != 0) { 109 | errno = errn; 110 | err(EXIT_FAILURE, "could not create thread"); 111 | } 112 | } 113 | 114 | void 115 | etjoin(pthread_t tid, void **rval) 116 | { 117 | int errn; 118 | 119 | if ((errn = pthread_join(tid, rval)) != 0) { 120 | errno = errn; 121 | err(EXIT_FAILURE, "could not join with thread"); 122 | } 123 | } 124 | 125 | void 126 | etlock(pthread_mutex_t *mutex) 127 | { 128 | int errn; 129 | 130 | if ((errn = pthread_mutex_lock(mutex)) != 0) { 131 | errno = errn; 132 | err(EXIT_FAILURE, "could not lock mutex"); 133 | } 134 | } 135 | 136 | void 137 | etunlock(pthread_mutex_t *mutex) 138 | { 139 | int errn; 140 | 141 | if ((errn = pthread_mutex_unlock(mutex)) != 0) { 142 | errno = errn; 143 | err(EXIT_FAILURE, "could not unlock mutex"); 144 | } 145 | } 146 | 147 | int 148 | ewaitpid(pid_t pid) 149 | { 150 | int status; 151 | 152 | for (;;) { 153 | if (waitpid(pid, &status, 0) == -1) { 154 | if (errno != EINTR) { 155 | err(EXIT_FAILURE, "waitpid"); 156 | } 157 | } else if (!WIFSTOPPED(status)) { 158 | return status; 159 | } 160 | } 161 | } 162 | 163 | void 164 | eclose(int fd) 165 | { 166 | while (close(fd) == -1) { 167 | if (errno != EINTR) { 168 | err(EXIT_FAILURE, "close"); 169 | } 170 | } 171 | } 172 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .SUFFIXES: .c .o .dbg 2 | 3 | PROG = xfiles 4 | 5 | DEBUG_PROG = ${PROG:=_dbg} 6 | 7 | OBJS = \ 8 | ${PROG:=.o} \ 9 | widget.o util.o icons.o \ 10 | control/dragndrop.o \ 11 | control/selection.o \ 12 | control/font.o 13 | 14 | DEBUG_OBJS = ${OBJS:.o=.dbg} 15 | 16 | SRCS = ${OBJS:.o=.c} 17 | 18 | MANS = \ 19 | xfiles.1 \ 20 | control/ctrldnd.3 \ 21 | control/ctrlfnt.3 \ 22 | control/ctrlsel.3 23 | 24 | SCRIPTS = \ 25 | examples/xfilesctl \ 26 | examples/xfilesthumb 27 | 28 | WINICONS = \ 29 | icons/winicon16x16.abgr \ 30 | icons/winicon32x32.abgr \ 31 | icons/winicon48x48.abgr \ 32 | icons/winicon64x64.abgr 33 | ICONS = \ 34 | icons/file-app.xpm \ 35 | icons/file-archive.xpm \ 36 | icons/file-audio.xpm \ 37 | icons/file-code.xpm \ 38 | icons/file-config.xpm \ 39 | icons/file-core.xpm \ 40 | icons/file-gear.xpm \ 41 | icons/file-image.xpm \ 42 | icons/file-info.xpm \ 43 | icons/file-object.xpm \ 44 | icons/file-text.xpm \ 45 | icons/file-video.xpm \ 46 | icons/file.xpm \ 47 | icons/folder-apps.xpm \ 48 | icons/folder-book.xpm \ 49 | icons/folder-code.xpm \ 50 | icons/folder-db.xpm \ 51 | icons/folder-download.xpm \ 52 | icons/folder-game.xpm \ 53 | icons/folder-gear.xpm \ 54 | icons/folder-home.xpm \ 55 | icons/folder-image.xpm \ 56 | icons/folder-link.xpm \ 57 | icons/folder-mail.xpm \ 58 | icons/folder-meme.xpm \ 59 | icons/folder-mount.xpm \ 60 | icons/folder-music.xpm \ 61 | icons/folder-trash.xpm \ 62 | icons/folder-up.xpm \ 63 | icons/folder-video.xpm \ 64 | icons/folder.xpm 65 | 66 | PROG_CPPFLAGS = \ 67 | -D_POSIX_C_SOURCE=200809L -D_BSD_SOURCE -D_GNU_SOURCE -D_DEFAULT_SOURCE \ 68 | -I. -I/usr/local/include -I/usr/X11R6/include \ 69 | -I/usr/include/freetype2 -I/usr/X11R6/include/freetype2 \ 70 | ${CPPFLAGS} 71 | 72 | PROG_CFLAGS = \ 73 | -std=c99 -pedantic \ 74 | ${PROG_CPPFLAGS} \ 75 | ${CFLAGS} 76 | 77 | PROG_LDFLAGS = \ 78 | -L/usr/local/lib -L/usr/X11R6/lib \ 79 | -lfontconfig -lXft -lX11 -lXext -lXcursor -lXrender -lXpm -lpthread \ 80 | ${LDFLAGS} ${LDLIBS} 81 | 82 | DEBUG_FLAGS = \ 83 | -g -O0 -DDEBUG -Wall -Wextra -Wpedantic 84 | 85 | all: ${PROG} 86 | ${PROG}: ${OBJS} 87 | ${CC} -o $@ ${OBJS} ${PROG_LDFLAGS} 88 | .c.o: 89 | ${CC} ${PROG_CFLAGS} -o $@ -c $< 90 | 91 | debug: ${DEBUG_PROG} 92 | ${DEBUG_PROG}: ${DEBUG_OBJS} 93 | ${CC} -o $@ ${DEBUG_OBJS} ${PROG_LDFLAGS} ${DEBUG_FLAGS} 94 | .c.dbg: 95 | ${CC} ${PROG_CFLAGS} ${DEBUG_FLAGS} -o $@ -c $< 96 | 97 | # Brace expansion in makefile targets is a {GNU,BSD} extension. 98 | # Should we make this portable? (How?) 99 | control/selection.{dbg,o}: control/selection.h 100 | control/dragndrop.{dbg,o}: control/dragndrop.h control/selection.h 101 | control/font.{dbg,o}: control/font.h 102 | xfiles.{dbg,o}: util.h widget.h icons/file.xpm icons/folder.xpm 103 | widget.{dbg,o}: util.h widget.h icons/x.xpm control/selection.h control/dragndrop.h control/font.h 104 | icons.{dbg,o}: ${ICONS} ${WINICONS} 105 | 106 | lint: ${SCRIPTS} ${MANS} 107 | -shellcheck ${SCRIPTS} 108 | -mandoc -T lint -W warning ${MANS} 109 | 110 | tags: ${SRCS} 111 | ctags ${SRCS} 112 | 113 | clean: 114 | rm -f ${OBJS} ${PROG} ${PROG:=.core} 115 | 116 | distclean: clean 117 | rm -f ${DEBUG_OBJS} ${DEBUG_PROG} ${DEBUG_PROG:=.core} tags 118 | rm -f tags 119 | 120 | .PHONY: all debug lint clean distclean 121 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | XFiles: a X11 File Manager 2 | 3 | 4 | Features: 5 | • Icons representing directory entries. 6 | • Icon view only (list/culumn/tree/etc view is not and will not be implemented). 7 | • Uncluttered interface (no toolbar, sidebar, etc but grid of icons). 8 | • Mouse interaction with drag-and-drop and selection actions. 9 | • Drag-and-drop within the same XFiles window. 10 | • Drag-and-drop between two XFiles windows. 11 | • Drag-and-drop between an XFiles window and another application. 12 | • Scroller widget (activated on middle mouse button) replacing scrollbars. 13 | • XEmbed support, to incorporate other application's windows as widgets 14 | (for example, dmenu can be used as an address bar). 15 | • File operations are delegated to a user-written script (xfilesctl). 16 | • Thumbnail (64x64 PPM image) generation delegated to a script (xfilesthumb). 17 | • Appearance (like colors and font) customizable by X resources. 18 | 19 | See ./demo.png for a illustration of XFiles in action. 20 | 21 | 22 | § INSTALLATION 23 | 24 | Build XFiles with “make”. 25 | Copy the built binary file ./xfiles into your system's $PATH. 26 | Optionally, copy the manual file `./xfiles.1` in your system's $MANPATH. 27 | Optionally, copy the scripts in ./examples/ in your system's $PATH. 28 | 29 | Dependencies: 30 | • C99 compiler, for building. 31 | • POSIX make, for building. 32 | • Mandoc, for the manual. 33 | • POSIX C standard library and headers. 34 | • X11 libraries and headers (Xlib, Xcursor, Xext, Xft, Xpm, Xrender). 35 | • Fontconfig library and headers. 36 | • Pthreads library and headers. 37 | • (NOTE: The xfilesctl and xfilesthumb scripts may depend on other programs). 38 | 39 | 40 | § QUICK-START 41 | 42 | Context menu. 43 | XFiles has no context menu; but it invokes “xfilesctl” at right-click. 44 | You can make a xfilesctl script open xmenu(1) or other pop-up menu program. 45 | On right-click, it is invoked as follows (%s is the paths to selected files): 46 | 47 | xfilesctl menu %s 48 | 49 | Address bar. 50 | XFiles has no address bar; but it invokes “xfilesctl” at Ctrl+key presses. 51 | You can make a xfilesctl script open dmenu(1) or other prompt program. 52 | On, say, Ctrl+L, it is invoked as follows (%s is the paths to selected files): 53 | 54 | xfilesctl ^L %s 55 | 56 | File operations. 57 | XFiles does no file operation; but it invokes “xfilesctl” at icon manipulation. 58 | You can make a xfilesctl script call cp(1) or other command on a drop action. 59 | On file dropping, it is invoked as follows (%s is the path to selected files): 60 | 61 | xfilesctl drop-ask %s 62 | 63 | Thumbnails. 64 | XFiles does not generate thumbnails; but it invokes “xfilesthumb” to do so. 65 | Thumbnails must be 64x64 pixels in size, and must be in the PPM format. 66 | You can make a xfilesthumb script call pdftoppm(1) to create a pdf thumbnail. 67 | The xfilesthumb script is invoked as follows: 68 | 69 | xfilesthumb /path/to/file /path/to/miniature.ppm 70 | 71 | Examples. 72 | See the ./examples/ directories for script and configuration examples: 73 | • ./examples/xfilesctl (example controller script). 74 | • ./examples/xfilesthumb (example thumbnailer script). 75 | • ./examples/Xresources (example X resources database). 76 | 77 | Read the manual at ./xfiles.1 for more information on usage. 78 | 79 | 80 | § CONTRIBUTING 81 | 82 | If possible, send feedback (positive or negative) via email or issue tracker. 83 | If possible, report bugs (possibly with a fix) via email or issue tracker. 84 | 85 | Feature requests and patches adding new features are welcome. 86 | But it is ultimately up to author's discretion to approve them or not. 87 | 88 | Keep in mind that this is a personal project and a work in progress. 89 | 90 | Read ./TODO for a list of known bugs and features intended to be added. 91 | 92 | 93 | § AUTHOR 94 | 95 | By Lucas de Sena © 2021-2024. 96 | 97 | Code and manual distributed under the MIT/X license. 98 | Icons are distributed under CC0/Public Domain. 99 | See ./LICENSE for more information. 100 | -------------------------------------------------------------------------------- /control/ctrlfnt.3: -------------------------------------------------------------------------------- 1 | .Dd March 17, 2023 2 | .Dt CTRLFNT 3 3 | .Os 4 | .Sh NAME 5 | .Nm ctrlfnt_open , 6 | .Nm ctrlfnt_draw , 7 | .Nm ctrlfnt_width , 8 | .Nm ctrlfnt_height , 9 | .Nm ctrlfnt_free 10 | .Nd Xft selection ownership and requesting helper functions 11 | .Sh SYNOPSIS 12 | .In X11/Xlib.h 13 | .In X11/Xft/Xft.h 14 | .In control/ctrlfnt.h 15 | .Ft void 16 | .Fo ctrlfnt_init 17 | .Ft "void" 18 | .Fc 19 | .Ft "CtrlFontSet *" 20 | .Fo ctrlfnt_open 21 | .Fa "Display display" 22 | .Fa "int screen" 23 | .Fa "Visual *visual" 24 | .Fa "Colormap colormap" 25 | .Fa "const char *fontset_spec" 26 | .Fa "double fontsize" 27 | .Fc 28 | .Ft int 29 | .Fo ctrlfnt_draw 30 | .Fa "CtrlFontSet *fontset" 31 | .Fa "Picture picture" 32 | .Fa "Picture src" 33 | .Fa "XRectangle rectangle" 34 | .Fa "cont char *text" 35 | .Fa "int nbytes" 36 | .Fc 37 | .Ft int 38 | .Fo ctrlfnt_width 39 | .Fa "CtrlFontSet *fontset" 40 | .Fa "cont char *text" 41 | .Fa "int nbytes" 42 | .Fc 43 | .Ft int 44 | .Fo ctrlfnt_height 45 | .Fa "CtrlFontSet *fontset" 46 | .Fc 47 | .Ft void 48 | .Fo ctrlfnt_free 49 | .Fa "CtrlFontSet *fontset" 50 | .Fc 51 | .Ft void 52 | .Fo ctrlfnt_term 53 | .Ft "void" 54 | .Fc 55 | .Sh ARGUMENTS 56 | .Bl -tag -width Ds 57 | .It Fa display 58 | Specifies the connection to the X server. 59 | .It Fa colormap 60 | Specifies the colormap to draw the string with. 61 | .It Fa picture 62 | Specifies the picture to draw the string on. 63 | .It Fa fontset 64 | Specifies the fontset created with 65 | .Fn ctrlfnt_open . 66 | .It Fa fontset_spec 67 | Specifies the string specifying the fonts to be open. 68 | .It Fa fontsize 69 | Specifies the font size in points. 70 | If equal to 71 | .Ic 0.0 , 72 | use the default font size (equal to 73 | .Ic 8.0 74 | points). 75 | .It Fa nbytes 76 | Specifies the size of 77 | .Fa text 78 | in bytes. 79 | .It Fa rectangle 80 | Specifies the rectangle within the drawable to place the the drawn string in. 81 | .It Fa screen 82 | Specifies a X screen. 83 | .It Fa src 84 | Specifies the source picture containing the color to draw the string with. 85 | .It Fa text 86 | Specifies the string to draw. 87 | .It Fa visual 88 | Specifies the visual to draw the string with. 89 | .El 90 | .Sh DESCRIPTION 91 | The 92 | .Fn ctrlfnt_init 93 | function initializes the fontconfig library. 94 | .Pp 95 | The 96 | .Fn ctrlfnt_open 97 | function opens the fonts specified in 98 | .Fa fontset_spec 99 | into a newly allocated 100 | .Fa fontset 101 | structure, and returns its address. 102 | The open fonts will have size equal to 103 | .Fa fontsize 104 | in points. 105 | The fontset is created for the given 106 | .Fa display 107 | and 108 | .Fa screen , 109 | with the given 110 | .Fa visual 111 | and 112 | .Fa colormap . 113 | .Pp 114 | The 115 | .Fn ctrlfnt_draw 116 | function uses 117 | .Fa fontset 118 | to draw the first 119 | .Fa nbytes 120 | of 121 | .Fa text 122 | in the given 123 | .Fa picture 124 | within the given 125 | .Fa rectangle , 126 | using 127 | .Fa src 128 | as source color. 129 | It returns the width of the drawn text, or 130 | .Ic -1 131 | if the text could not be drawn because of any error. 132 | .Pp 133 | The 134 | .Fn ctrlfnt_width 135 | function returns the width of the first 136 | .Fa nbytes 137 | of 138 | .Fa text 139 | if drawn by 140 | .Fn ctrlfnt_draw 141 | using the given 142 | .Fa fontset , 143 | or 144 | .Ic -1 145 | if the width could not be computed. 146 | (This function returns the same as 147 | .Fn ctrlfnt_draw 148 | without drawing anything). 149 | .Pp 150 | The 151 | .Fn ctrlfnt_height 152 | returns the height of the fonts in 153 | .Fa fontset . 154 | .Pp 155 | the 156 | .Fn ctrlfnt_free 157 | frees the fonts open in 158 | .Ft fontset . 159 | .Pp 160 | The 161 | .Fn ctrlfnt_term 162 | function terminates the fontconfig library. 163 | .Sh RETURN VALUES 164 | The 165 | .Fn ctrlfnt_open 166 | function returns NULL on error. 167 | The 168 | .Fn ctrlfnt_draw , 169 | .Fn ctrlfnt_width , 170 | and 171 | .Fn ctrlfnt_height , 172 | functions return a value less than zero on error. 173 | .Pp 174 | If an error occurs, the functions write a string describing the error into standard output with 175 | .Xr warnx 3 . 176 | .Sh EXAMPLES 177 | [...] 178 | .Sh SEE ALSO 179 | .Xr Xft 3 , 180 | .Xr X 7 181 | -------------------------------------------------------------------------------- /icons/winicon16x16.abgr: -------------------------------------------------------------------------------- 1 | unsigned long winicon16x16[] = { 2 | 0x00000000, 3 | 0x00000000, 4 | 0x00000000, 5 | 0x00000000, 6 | 0x00000000, 7 | 0x00000000, 8 | 0x00000000, 9 | 0x00000000, 10 | 0x00000000, 11 | 0x00000000, 12 | 0x00000000, 13 | 0x00000000, 14 | 0x00000000, 15 | 0x00000000, 16 | 0x00000000, 17 | 0x00000000, 18 | 0x00000000, 19 | 0x00000000, 20 | 0x00000000, 21 | 0x00000000, 22 | 0x00000000, 23 | 0x00000000, 24 | 0x00000000, 25 | 0x00000000, 26 | 0x00000000, 27 | 0x00000000, 28 | 0x00000000, 29 | 0x00000000, 30 | 0x00000000, 31 | 0x00000000, 32 | 0x00000000, 33 | 0x00000000, 34 | 0x00000000, 35 | 0x00000000, 36 | 0xffc4a000, 37 | 0xffc4a000, 38 | 0xffc4a000, 39 | 0xffc4a000, 40 | 0xffc4a000, 41 | 0xffc4a000, 42 | 0xff000000, 43 | 0x00000000, 44 | 0x00000000, 45 | 0x00000000, 46 | 0x00000000, 47 | 0x00000000, 48 | 0x00000000, 49 | 0x00000000, 50 | 0x00000000, 51 | 0xffc4a000, 52 | 0xffedd400, 53 | 0xffedd400, 54 | 0xffedd400, 55 | 0xffedd400, 56 | 0xffedd400, 57 | 0xffedd400, 58 | 0xffc4a000, 59 | 0xff000000, 60 | 0x00000000, 61 | 0x00000000, 62 | 0x00000000, 63 | 0x00000000, 64 | 0x00000000, 65 | 0x00000000, 66 | 0xffc4a000, 67 | 0xffc4a000, 68 | 0xffeeeeec, 69 | 0xffeeeeec, 70 | 0xffeeeeec, 71 | 0xffeeeeec, 72 | 0xffeeeeec, 73 | 0xffeeeeec, 74 | 0xffc4a000, 75 | 0xffc4a000, 76 | 0xffc4a000, 77 | 0xffc4a000, 78 | 0xffc4a000, 79 | 0xffc4a000, 80 | 0xffc4a000, 81 | 0x00000000, 82 | 0xffc4a000, 83 | 0xfffce94f, 84 | 0xffc4a000, 85 | 0xffc4a000, 86 | 0xffc4a000, 87 | 0xffc4a000, 88 | 0xffc4a000, 89 | 0xffc4a000, 90 | 0xfffce94f, 91 | 0xfffce94f, 92 | 0xfffce94f, 93 | 0xfffce94f, 94 | 0xfffce94f, 95 | 0xfffce94f, 96 | 0xffc4a000, 97 | 0xff000000, 98 | 0xffc4a000, 99 | 0xfffce94f, 100 | 0xfffce94f, 101 | 0xfffce94f, 102 | 0xfffce94f, 103 | 0xfffce94f, 104 | 0xfffce94f, 105 | 0xfffce94f, 106 | 0xfffce94f, 107 | 0xffedd400, 108 | 0xffedd400, 109 | 0xffedd400, 110 | 0xffc4a000, 111 | 0xffedd400, 112 | 0xffc4a000, 113 | 0xff000000, 114 | 0xffc4a000, 115 | 0xfffce94f, 116 | 0xffedd400, 117 | 0xfffce94f, 118 | 0xffedd400, 119 | 0xfffce94f, 120 | 0xffedd400, 121 | 0xfffce94f, 122 | 0xffedd400, 123 | 0xffedd400, 124 | 0xffedd400, 125 | 0xffedd400, 126 | 0xffedd400, 127 | 0xffedd400, 128 | 0xffc4a000, 129 | 0xff000000, 130 | 0xffc4a000, 131 | 0xfffce94f, 132 | 0xfffce94f, 133 | 0xffedd400, 134 | 0xfffce94f, 135 | 0xffedd400, 136 | 0xffedd400, 137 | 0xffedd400, 138 | 0xffedd400, 139 | 0xffedd400, 140 | 0xffc4a000, 141 | 0xffedd400, 142 | 0xffc4a000, 143 | 0xffedd400, 144 | 0xffc4a000, 145 | 0xff000000, 146 | 0xffc4a000, 147 | 0xfffce94f, 148 | 0xffedd400, 149 | 0xfffce94f, 150 | 0xffedd400, 151 | 0xfffce94f, 152 | 0xffedd400, 153 | 0xffedd400, 154 | 0xffedd400, 155 | 0xffedd400, 156 | 0xffedd400, 157 | 0xffc4a000, 158 | 0xffedd400, 159 | 0xffedd400, 160 | 0xffc4a000, 161 | 0xff000000, 162 | 0xffc4a000, 163 | 0xfffce94f, 164 | 0xfffce94f, 165 | 0xffedd400, 166 | 0xffedd400, 167 | 0xffedd400, 168 | 0xffedd400, 169 | 0xffedd400, 170 | 0xffc4a000, 171 | 0xffedd400, 172 | 0xffc4a000, 173 | 0xffedd400, 174 | 0xffc4a000, 175 | 0xffedd400, 176 | 0xffc4a000, 177 | 0xff000000, 178 | 0xffc4a000, 179 | 0xfffce94f, 180 | 0xffedd400, 181 | 0xfffce94f, 182 | 0xffedd400, 183 | 0xffedd400, 184 | 0xffedd400, 185 | 0xffedd400, 186 | 0xffedd400, 187 | 0xffc4a000, 188 | 0xffedd400, 189 | 0xffc4a000, 190 | 0xffedd400, 191 | 0xffedd400, 192 | 0xffc4a000, 193 | 0xff000000, 194 | 0xffc4a000, 195 | 0xfffce94f, 196 | 0xffedd400, 197 | 0xffedd400, 198 | 0xffedd400, 199 | 0xffedd400, 200 | 0xffedd400, 201 | 0xffedd400, 202 | 0xffedd400, 203 | 0xffedd400, 204 | 0xffedd400, 205 | 0xffedd400, 206 | 0xffedd400, 207 | 0xffedd400, 208 | 0xffc4a000, 209 | 0xff000000, 210 | 0xffc4a000, 211 | 0xffc4a000, 212 | 0xffc4a000, 213 | 0xffc4a000, 214 | 0xffc4a000, 215 | 0xffc4a000, 216 | 0xffc4a000, 217 | 0xffc4a000, 218 | 0xffc4a000, 219 | 0xffc4a000, 220 | 0xffc4a000, 221 | 0xffc4a000, 222 | 0xffc4a000, 223 | 0xffc4a000, 224 | 0xffc4a000, 225 | 0xff000000, 226 | 0xff000000, 227 | 0xff000000, 228 | 0xff000000, 229 | 0xff000000, 230 | 0xff000000, 231 | 0xff000000, 232 | 0xff000000, 233 | 0xff000000, 234 | 0xff000000, 235 | 0xff000000, 236 | 0xff000000, 237 | 0xff000000, 238 | 0xff000000, 239 | 0xff000000, 240 | 0xff000000, 241 | 0xff000000, 242 | 0x00000000, 243 | 0x00000000, 244 | 0x00000000, 245 | 0x00000000, 246 | 0x00000000, 247 | 0x00000000, 248 | 0x00000000, 249 | 0x00000000, 250 | 0x00000000, 251 | 0x00000000, 252 | 0x00000000, 253 | 0x00000000, 254 | 0x00000000, 255 | 0x00000000, 256 | 0x00000000, 257 | 0x00000000, 258 | }; 259 | -------------------------------------------------------------------------------- /icons/x.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * x_xpm[] = { 3 | "64 64 5 1", 4 | " c None", 5 | ". c #A40000", 6 | "+ c #EF2929", 7 | "@ c #000000", 8 | "# c #CC0000", 9 | " ", 10 | " ", 11 | " ", 12 | " ", 13 | " ", 14 | " ", 15 | " ", 16 | " ", 17 | ".................. .......", 18 | ".++++++++++++++++.@ .+++++.@", 19 | " .+###############.@ .+####.@ ", 20 | " .+###############.@ .+####.@ ", 21 | " .+###############.@ .+####.@ ", 22 | " .+###############.@ .+####.@ ", 23 | " .+###############.@ .+####.@ ", 24 | " .+###############.@ .+####.@ ", 25 | " .+###############.@ .+####.@ ", 26 | " .+###############.@ .+####.@ ", 27 | " .+###############.@ .+####.@ ", 28 | " .+###############.@ .+####.@ ", 29 | " .+###############.@ .+####.@ ", 30 | " .+###############.@ .+####.@ ", 31 | " .+###############.@ .+####.@ ", 32 | " .+###############.@ .+####.@ ", 33 | " .+###############.@ .+####.@ ", 34 | " .+###############.@ .+####.@ ", 35 | " .+###############.@ .+####.@ ", 36 | " .+#############.@ .+####.@ ", 37 | " .+###########.@ .+####.@ ", 38 | " .+#########.@ .+####.@ ", 39 | " .+#######.@ .+####.@ ", 40 | " .+#####.@ .+####.@ ", 41 | " .+####.@ .+#####.@ ", 42 | " .+####.@ .+#######.@ ", 43 | " .+####.@ .+#########.@ ", 44 | " .+####.@ .+###########.@ ", 45 | " .+####.@ .+#############.@ ", 46 | " .+####.@ .+###############.@ ", 47 | " .+####.@ .+###############.@ ", 48 | " .+####.@ .+###############.@ ", 49 | " .+####.@ .+###############.@ ", 50 | " .+####.@ .+###############.@ ", 51 | " .+####.@ .+###############.@ ", 52 | " .+####.@ .+###############.@ ", 53 | " .+####.@ .+###############.@ ", 54 | " .+####.@ .+###############.@ ", 55 | " .+####.@ .+###############.@ ", 56 | " .+####.@ .+###############.@ ", 57 | " .+####.@ .+###############.@ ", 58 | " .+####.@ .+###############.@ ", 59 | " .+####.@ .+###############.@ ", 60 | " .+####.@ .+###############.@ ", 61 | " .+####.@ .+###############.@ ", 62 | " .+####.@ .+###############.@ ", 63 | ".......@ ..................@", 64 | "@@@@@@@ @@@@@@@@@@@@@@@@@@", 65 | " ", 66 | " ", 67 | " ", 68 | " ", 69 | " ", 70 | " ", 71 | " ", 72 | " "}; 73 | -------------------------------------------------------------------------------- /icons/file.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * file_xpm[] = { 3 | "64 64 5 1", 4 | " c None", 5 | ". c #BABDB6", 6 | "+ c #EEEEEC", 7 | "@ c #D3D7CF", 8 | "# c #000000", 9 | " ................................ ", 10 | " .++++++++++++++++++++++++++++++.. ", 11 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+. ", 12 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.++. ", 13 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@+. ", 14 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@+. ", 15 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@+. ", 16 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@.@+. ", 17 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@+. ", 18 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@.@.@+. ", 19 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@+. ", 20 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@.@.@+. ", 21 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@.@+. ", 22 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@@@.@.@+. ", 23 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@.@.@.@.@+. ", 24 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@................ ", 25 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################# ", 26 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 27 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 28 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 29 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 30 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 31 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 32 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 33 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 34 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 35 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 36 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 37 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 38 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 39 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 40 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 41 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 42 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 43 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 44 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 45 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 46 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 47 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 48 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 49 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 50 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 51 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 52 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 53 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 54 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 55 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 56 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 57 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 58 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 59 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 60 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 61 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 62 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 63 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 64 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 65 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 66 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 67 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 68 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 69 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 70 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 71 | " ...............................................# ", 72 | " ################################################ "}; 73 | -------------------------------------------------------------------------------- /icons/folder.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_xpm[] = { 3 | "64 64 7 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | " ", 12 | " ", 13 | " ", 14 | " ", 15 | " ", 16 | " ", 17 | " ........................ ", 18 | " .+++++++++++++++++++++++.@ ", 19 | " .+########################.@ ", 20 | " .+##########################.@ ", 21 | " .+############################.@ ", 22 | " .+##############################.@ ", 23 | " .+################################.@ ", 24 | " .+##################################.@ ", 25 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 26 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 27 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 28 | ".+##+..............................+##########################.@", 29 | ".+###++++++++++++++++++++++++++++++###########################.@", 30 | ".+############################################################.@", 31 | ".+############################################################.@", 32 | ".+############################################################.@", 33 | ".+############################################################.@", 34 | ".+############################################################.@", 35 | ".+############################################################.@", 36 | ".+############################################################.@", 37 | ".+############################################################.@", 38 | ".+############################################################.@", 39 | ".+############################################################.@", 40 | ".+############################################################.@", 41 | ".+############################################################.@", 42 | ".+############################################################.@", 43 | ".+############################################################.@", 44 | ".+############################################################.@", 45 | ".+############################################################.@", 46 | ".+############################################################.@", 47 | ".+############################################################.@", 48 | ".+############################################################.@", 49 | ".+############################################################.@", 50 | ".+############################################################.@", 51 | ".+############################################################.@", 52 | ".+############################################################.@", 53 | ".+############################################################.@", 54 | ".+############################################################.@", 55 | ".+############################################################.@", 56 | ".+############################################################.@", 57 | ".+############################################################.@", 58 | ".+############################################################.@", 59 | ".+############################################################.@", 60 | ".+############################################################.@", 61 | ".+############################################################.@", 62 | ".+############################################################.@", 63 | ".+############################################################.@", 64 | ".+############################################################.@", 65 | ".+############################################################.@", 66 | ".+############################################################.@", 67 | "...............................................................@", 68 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 69 | " ", 70 | " ", 71 | " ", 72 | " ", 73 | " ", 74 | " "}; 75 | -------------------------------------------------------------------------------- /icons/file-code.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * file_code_xpm[] = { 3 | "64 64 7 1", 4 | " c None", 5 | ". c #BABDB6", 6 | "+ c #EEEEEC", 7 | "@ c #D3D7CF", 8 | "# c #000000", 9 | "$ c #729FCF", 10 | "% c #3465A4", 11 | " ................................ ", 12 | " .++++++++++++++++++++++++++++++.. ", 13 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+. ", 14 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.++. ", 15 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@+. ", 16 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@+. ", 17 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@+. ", 18 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@.@+. ", 19 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@+. ", 20 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@.@.@+. ", 21 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@+. ", 22 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@.@.@+. ", 23 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@.@+. ", 24 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@@@.@.@+. ", 25 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@.@.@.@.@+. ", 26 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@................ ", 27 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################# ", 28 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 29 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 30 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 31 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 32 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 33 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 34 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 35 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 36 | " .+@@@@@@@@@@@$$%%%.@@@@@@@@@@$%%%..@@@@@@@@@@@.# ", 37 | " .+@@@@@@@@@@$%%%..@@@@@@@@@@@@$$%%%.@@@@@@@@@@.# ", 38 | " .+@@@@@@@@@$%%%.@@@@@@@@@@@@@@@@$%%%.@@@@@@@@@.# ", 39 | " .+@@@@@@@@@$%%%.@@@@@@@@@@@@@@@@$%%%.@@@@@@@@@.# ", 40 | " .+@@@@@@@@@$%%%.@@%%%%%@%%%@%%@@$%%%.@@@@@@@@@.# ", 41 | " .+@@@@@@@@@$%%%.@@@@@@@@@@@@@@@@$%%%.@@@@@@@@@.# ", 42 | " .+@@@@@@@@@$%%%.@@%%@%%%%%@@@@@@$%%%.@@@@@@@@@.# ", 43 | " .+@@@@@@@@@$%%%.@@@@@@@@@@@@@@@@$%%%.@@@@@@@@@.# ", 44 | " .+@@@@@@@@@$%%%.@@%%@%%%@@@@@@@@$%%%.@@@@@@@@@.# ", 45 | " .+@@@@@@@@@$%%%.@@@@@@@@@@@@@@@@$%%%.@@@@@@@@@.# ", 46 | " .+@@@@@@@@@$%%%.@@@@@%%@%%%%@@@@$%%%.@@@@@@@@@.# ", 47 | " .+@@@@@@@@@$%%%.@@@@@@@@@@@@@@@@$%%%.@@@@@@@@@.# ", 48 | " .+@@@@@@@@@$%%%.@@@@@%%%%%@%%@@@$%%%.@@@@@@@@@.# ", 49 | " .+@@@@@@@@$%%%.@@@@@@@@@@@@@@@@@@$%%%.@@@@@@@@.# ", 50 | " .+@@@@@@@$%%%.@@@@%@@@@@@@@@@@@@@@$%%%.@@@@@@@.# ", 51 | " .+@@@@@@$%%%.@@@@@@@@@@@@@@@@@@@@@@$%%%.@@@@@@.# ", 52 | " .+@@@@@@@$%%%.@@@@%%%%@%%@@@@@@@@@$%%%.@@@@@@@.# ", 53 | " .+@@@@@@@@$%%%.@@@@@@@@@@@@@@@@@@$%%%.@@@@@@@@.# ", 54 | " .+@@@@@@@@@$%%%.@@@@@@@@@@@@@@@@$%%%.@@@@@@@@@.# ", 55 | " .+@@@@@@@@@$%%%.@@%%@%%%%%@@@@@@$%%%.@@@@@@@@@.# ", 56 | " .+@@@@@@@@@$%%%.@@@@@@@@@@@@@@@@$%%%.@@@@@@@@@.# ", 57 | " .+@@@@@@@@@$%%%.@@@@@%%@%%%@@@@@$%%%.@@@@@@@@@.# ", 58 | " .+@@@@@@@@@$%%%.@@@@@@@@@@@@@@@@$%%%.@@@@@@@@@.# ", 59 | " .+@@@@@@@@@$%%%.@@@@@%%%@@@@@@@@$%%%.@@@@@@@@@.# ", 60 | " .+@@@@@@@@@$%%%.@@@@@@@@@@@@@@@@$%%%.@@@@@@@@@.# ", 61 | " .+@@@@@@@@@$%%%.@@@@@%@@@@@@@@@@$%%%.@@@@@@@@@.# ", 62 | " .+@@@@@@@@@$%%%.@@@@@@@@@@@@@@@@$%%%.@@@@@@@@@.# ", 63 | " .+@@@@@@@@@$%%%.@@%%@@@@@@@@@@@@$%%%.@@@@@@@@@.# ", 64 | " .+@@@@@@@@@$%%%.@@@@@@@@@@@@@@@@$%%%.@@@@@@@@@.# ", 65 | " .+@@@@@@@@@@$%%%..@@@@@@@@@@@@$$%%%.@@@@@@@@@@.# ", 66 | " .+@@@@@@@@@@@$$%%%.@@@@@@@@@@$%%%..@@@@@@@@@@@.# ", 67 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 68 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 69 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 70 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 71 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 72 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 73 | " ...............................................# ", 74 | " ################################################ "}; 75 | -------------------------------------------------------------------------------- /icons/file-gear.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * file_gear_xpm[] = { 3 | "64 64 7 1", 4 | " c None", 5 | ". c #BABDB6", 6 | "+ c #EEEEEC", 7 | "@ c #D3D7CF", 8 | "# c #000000", 9 | "$ c #555753", 10 | "% c #888A85", 11 | " ................................ ", 12 | " .++++++++++++++++++++++++++++++.. ", 13 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+. ", 14 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.++. ", 15 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@+. ", 16 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@+. ", 17 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@+. ", 18 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@.@+. ", 19 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@+. ", 20 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@.@.@+. ", 21 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@+. ", 22 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@.@.@+. ", 23 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@.@+. ", 24 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@@@.@.@+. ", 25 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@.@.@.@.@+. ", 26 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@................ ", 27 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################# ", 28 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 29 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 30 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 31 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 32 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 33 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 34 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 35 | " .+@@@@@@@@@@@@@@@@@@@$$$$$$@@@@@@@@@@@@@@@@@@@.# ", 36 | " .+@@@@@@@@@@@@@@@@@@#.....$#@@@@@@@@@@@@@@@@@@.# ", 37 | " .+@@@@@@@@@@@@@@@@@@#.%%%%$#@@@@@@@@@@@@@@@@@@.# ", 38 | " .+@@@@@@@@@@@@@@@@@@#.%%%%$#@@@@@@@@@@@@@@@@@@.# ", 39 | " .+@@@@@@@@@@@@@@@@@@#.%%%%$#@@@@@@@@@@@@@@@@@@.# ", 40 | " .+@@@@@@@@@$$@@@@@@$.%%%%%%$$@@@@@@$$@@@@@@@@@.# ", 41 | " .+@@@@@@@@$..$$@@$$.%%%%%%%%.$$@@$$..#@@@@@@@@.# ", 42 | " .+@@@@@@@$.%%..$$..%%%%%%%%%%..$$..%%$#@@@@@@@.# ", 43 | " .+@@@@@@@$.%%%%..%%%%%%%%%%%%%%..%%%%$#@@@@@@@.# ", 44 | " .+@@@@@@$.%%%%%%%%%%%%%%%%%%%%%%%%%%%%$#@@@@@@.# ", 45 | " .+@@@@@@$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%$#@@@@@@.# ", 46 | " .+@@@@@@@#$$%%%%%%%%%%%%%%%%%%%%%%%%$$#@@@@@@@.# ", 47 | " .+@@@@@@@@##$$%%%%%%%%####%%%%%%%%$$##@@@@@@@@.# ", 48 | " .+@@@@@@@@@@##.%%%%%%#@@@@$%%%%%%$##@@@@@@@@@@.# ", 49 | " .+@@@@@@@@@@@@$.%%%%#@@@@@@$%%%%$#@@@@@@@@@@@@.# ", 50 | " .+@@@@@@@@@@@@$.%%%%#@@@@@@$%%%%$#@@@@@@@@@@@@.# ", 51 | " .+@@@@@@@@@@@@$.%%%%#@@@@@@$%%%%$#@@@@@@@@@@@@.# ", 52 | " .+@@@@@@@@@@@@$.%%%%#@@@@@@$%%%%$#@@@@@@@@@@@@.# ", 53 | " .+@@@@@@@@@@$$.%%%%%%#@@@@$%%%%%%$$$@@@@@@@@@@.# ", 54 | " .+@@@@@@@@$$..%%%%%%%%$$$$%%%%%%%%..$$@@@@@@@@.# ", 55 | " .+@@@@@@@$..%%%%%%%%%%%%%%%%%%%%%%%%..$@@@@@@@.# ", 56 | " .+@@@@@@$.%%%%%%%%%%%%%%%%%%%%%%%%%%%%.#@@@@@@.# ", 57 | " .+@@@@@@$.%%%%%%%%%%%%%%%%%%%%%%%%%%%%$#@@@@@@.# ", 58 | " .+@@@@@@@$.%%%%$$%%%%%%%%%%%%%%$$%%%%$#@@@@@@@.# ", 59 | " .+@@@@@@@$.%%$$##$$%%%%%%%%%%$$##$$%%$#@@@@@@@.# ", 60 | " .+@@@@@@@@$$$##@@##$%%%%%%%%$##@@##$$#@@@@@@@@.# ", 61 | " .+@@@@@@@@@##@@@@@@#.%%%%%%$#@@@@@@##@@@@@@@@@.# ", 62 | " .+@@@@@@@@@@@@@@@@@@$.%%%%$#@@@@@@@@@@@@@@@@@@.# ", 63 | " .+@@@@@@@@@@@@@@@@@@$.%%%%$#@@@@@@@@@@@@@@@@@@.# ", 64 | " .+@@@@@@@@@@@@@@@@@@$.%%%%$#@@@@@@@@@@@@@@@@@@.# ", 65 | " .+@@@@@@@@@@@@@@@@@@$$$$$$$#@@@@@@@@@@@@@@@@@@.# ", 66 | " .+@@@@@@@@@@@@@@@@@@@######@@@@@@@@@@@@@@@@@@@.# ", 67 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 68 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 69 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 70 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 71 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 72 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 73 | " ...............................................# ", 74 | " ################################################ "}; 75 | -------------------------------------------------------------------------------- /icons/file-text.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * file_text_xpm[] = { 3 | "64 64 7 1", 4 | " c None", 5 | ". c #BABDB6", 6 | "+ c #EEEEEC", 7 | "@ c #D3D7CF", 8 | "# c #2E3436", 9 | "$ c #000000", 10 | "% c #729FCF", 11 | " ................................ ", 12 | " .++++++++++++++++++++++++++++++.. ", 13 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+. ", 14 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.++. ", 15 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@+. ", 16 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@+. ", 17 | " .+@@@@@@@@#.@@@@@@@@@@@@@@@@@@@.+@.@+. ", 18 | " .+@@@@@@@@#.@@####@####@######@.+.@.@+. ", 19 | " .+@@@@@@@#.#.@@@@@@@@@@@@@@@@@@.+@.@.@+. ", 20 | " .+@@@@@@@#.#.@#######@#####@##@.+@@.@.@+. ", 21 | " .+@@@@@@#.@#.@@@@@@@@@@@@@@@@@@.+@.@.@.@+. ", 22 | " .+@@@@@@#.@#.@###@##@###@#####@.+@@@@.@.@+. ", 23 | " .+@@@@@#####.@@@@@@@@@@@@@@@@@@.+@.@.@.@.@+. ", 24 | " .+@@@@@#...#.@##@#####@###@###@.+@@@@@@.@.@+. ", 25 | " .+@@@@#.@@@#.@@@@@@@@@@@@@@@@@@.+@@@.@.@.@.@+. ", 26 | " .+@@@@#.@@@#.@@####@###@######@................ ", 27 | " .+@@@###.@###.@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$ ", 28 | " .+@@@....@....@##@#####@##@#@@@@@@@@@@@@@@@@@@.$ ", 29 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 30 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 31 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 32 | " .+@@@#####@######@##@####@#@#####@####@####@@@.$ ", 33 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 34 | " .+@@@##@####@####@####@#@####@@@###@####@##@@@.$ ", 35 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 36 | " .+@@@#@##@####@#######@##@#####@###@##@####@@@.$ ", 37 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 38 | " .+@@@###@###@#####@##@###@#@@@@@@@@@@@@@@@@@@@.$ ", 39 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.@@@.$ ", 40 | " .+@@@##@###@####@#####@####@@@@@@@@@@@@@%#.@@@.$ ", 41 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#.@@@.$ ", 42 | " .+@@@###@####@##@@####@@###@@@@@%@@@@@@%#@.@@@.$ ", 43 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%@@@@@%#@.@@@.$ ", 44 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#@#%@@@%#@@.@@@.$ ", 45 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@%#@@@#%@@%#@@.@@@.$ ", 46 | " .+@@@###@###@#####@#####@##@@#@@@@@#%%#@@@.@@@.$ ", 47 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#%#@@@.@@@.$ ", 48 | " .+@@@##@##@##@#####@@##@###@@@@@@@@@@#@@@@.@@@.$ ", 49 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@..............@@@.$ ", 50 | " .+@@@##@####@####@#####@@##@@@@@@@@@@@@@@@@@@@.$ ", 51 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 52 | " .+@@@####@##@@####@##@#####@##@####@###@###@@@.$ ", 53 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 54 | " .+@@@##@@@###@####@#####@@####@####@#######@@@.$ ", 55 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 56 | " .+@@@#####@#######@########@@####@@####@@##@@@.$ ", 57 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 58 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 59 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 60 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 61 | " .+@@@@@@@@@@@@@@@####@#.@@@@#.@@@@@@@@@@@@@@@@.$ ", 62 | " .+@@@@@@@@@@@@@@@#..#@#.@#.@#.@@@@@@@@@@@@@@@@.$ ", 63 | " .+@@@@@@@@@@@@@@@.#..@..@..@..@@@@@@@@@@@@@@@@.$ ", 64 | " .+@@@@@@@@@@@@@@@@.#@@@@#######.@@@@@@@@@@@@@@.$ ", 65 | " .+@@@@@@@@@@@@@@@@#.@@@@........@@@@@@@@@@@@@@.$ ", 66 | " .+@@@@@@@@@@@@@@@#..#.@@@@@#.##.@@@@@@@@@@@@@@.$ ", 67 | " .+@@@@@@@@@@@@@@@####.@@@#.#....@@@@@@@@@@@@@@.$ ", 68 | " .+@@@@@@@@@@@@@@@.....@@@....@@@@@@@@@@@@@@@@@.$ ", 69 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 70 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 71 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 72 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.$ ", 73 | " ...............................................$ ", 74 | " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ "}; 75 | -------------------------------------------------------------------------------- /icons/folder-up.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_up_xpm[] = { 3 | "64 64 7 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | " ", 12 | " ", 13 | " ", 14 | " ", 15 | " ", 16 | " ", 17 | " ........................ ", 18 | " .+++++++++++++++++++++++.@ ", 19 | " .+########################.@ ", 20 | " .+##########################.@ ", 21 | " .+############################.@ ", 22 | " .+##############################.@ ", 23 | " .+################################.@ ", 24 | " .+##################################.@ ", 25 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 26 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 27 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 28 | ".+##+..............................+##########################.@", 29 | ".+###++++++++++++++++++++++++++++++###########################.@", 30 | ".+############################################################.@", 31 | ".+############################################################.@", 32 | ".+############################################################.@", 33 | ".+############################################################.@", 34 | ".+############################################################.@", 35 | ".+############################################################.@", 36 | ".+############################################################.@", 37 | ".+############################################################.@", 38 | ".+############################################################.@", 39 | ".+############################################################.@", 40 | ".+############################################################.@", 41 | ".+############################################################.@", 42 | ".+############################################################.@", 43 | ".+############################################################.@", 44 | ".+############################################################.@", 45 | ".+############################################################.@", 46 | ".+############################################################.@", 47 | ".+############################################################.@", 48 | ".+############################################################.@", 49 | ".+############################################################.@", 50 | ".+###################################################..#######.@", 51 | ".+##################################################.#.+######.@", 52 | ".+#################################################.#...+#####.@", 53 | ".+################################################.#.....+####.@", 54 | ".+###############################################.#.......+###.@", 55 | ".+##############################################.#.........+##.@", 56 | ".+#############################################.#####.......+#.@", 57 | ".+#############################################.....#...+++++#.@", 58 | ".+#################################################.#...+#####.@", 59 | ".+#################################################.#...+#####.@", 60 | ".+#################################################.#...+#####.@", 61 | ".+#################################################.#...+#####.@", 62 | ".+#################################################.#...+#####.@", 63 | ".+#################################################.#...+#####.@", 64 | ".+#################################################.....+#####.@", 65 | ".+#################################################++++++#####.@", 66 | ".+############################################################.@", 67 | "...............................................................@", 68 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 69 | " ", 70 | " ", 71 | " ", 72 | " ", 73 | " ", 74 | " "}; 75 | -------------------------------------------------------------------------------- /icons/file-archive.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * file_archive_xpm[] = { 3 | "64 64 7 1", 4 | " c None", 5 | ". c #BABDB6", 6 | "+ c #EEEEEC", 7 | "@ c #888A85", 8 | "# c #555753", 9 | "$ c #D3D7CF", 10 | "% c #000000", 11 | " ................................ ", 12 | " .+++++++++++++++++++++@@##+++++.. ", 13 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$.+. ", 14 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.++. ", 15 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$.+$+. ", 16 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$.+.$+. ", 17 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.+$.$+. ", 18 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$.+.$.$+. ", 19 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$.+$.$.$+. ", 20 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.+$$.$.$+. ", 21 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$.+$.$.$.$+. ", 22 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$.+$$$$.$.$+. ", 23 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.+$.$.$.$.$+. ", 24 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$.+$$$$$$.$.$+. ", 25 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$.+$$$.$.$.$.$+. ", 26 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$................ ", 27 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$%%%%%%%%%%%%%%%%% ", 28 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$.% ", 29 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 30 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$.% ", 31 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$.% ", 32 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 33 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$.% ", 34 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$.% ", 35 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 36 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$.% ", 37 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$.% ", 38 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 39 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$.% ", 40 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$.% ", 41 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 42 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$.% ", 43 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$.% ", 44 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 45 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$.% ", 46 | " .+$$$$$$$$$$$$$$$$$$$$@@##$$$$$$$$$$$$$$$$$$$$.% ", 47 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 48 | " .+$$$$$$$$$$$$$$$$$$$$$##$$$$$$$$$$$$$$$$$$$$$.% ", 49 | " .+$$$$$$$$$$$$$$$$$$$$#@@#$$$$$$$$$$$$$$$$$$$$.% ", 50 | " .+$$$$$$$$$$$$$$$$$$$#@@@@#$$$$$$$$$$$$$$$$$$$.% ", 51 | " .+$$$$$$$$$$$$$$$$$$$#@##@#$$$$$$$$$$$$$$$$$$$.% ", 52 | " .+$$$$$$$$$$$$$$$$$$$#@##@#$$$$$$$$$$$$$$$$$$$.% ", 53 | " .+$$$$$$$$$$$$$$$$$$$#@@@@#$$$$$$$$$$$$$$$$$$$.% ", 54 | " .+$$$$$$$$$$$$$$$$$$$#@##@#$$$$$$$$$$$$$$$$$$$.% ", 55 | " .+$$$$$$$$$$$$$$$$$$$#@##@#$$$$$$$$$$$$$$$$$$$.% ", 56 | " .+$$$$$$$$$$$$$$$$$$$#@@@@#$$$$$$$$$$$$$$$$$$$.% ", 57 | " .+$$$$$$$$$$$$$$$$$$$$#@@#$$$$$$$$$$$$$$$$$$$$.% ", 58 | " .+$$$$$$$$$$$$$$$$$$$$$##$$$$$$$$$$$$$$$$$$$$$.% ", 59 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 60 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 61 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 62 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 63 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 64 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 65 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 66 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 67 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 68 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 69 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 70 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 71 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 72 | " .+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.% ", 73 | " ...............................................% ", 74 | " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% "}; 75 | -------------------------------------------------------------------------------- /icons/file-config.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * file_config_xpm[] = { 3 | "64 64 7 1", 4 | " c None", 5 | ". c #BABDB6", 6 | "+ c #EEEEEC", 7 | "@ c #D3D7CF", 8 | "# c #000000", 9 | "$ c #555753", 10 | "% c #888A85", 11 | " ................................ ", 12 | " .++++++++++++++++++++++++++++++.. ", 13 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+. ", 14 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.++. ", 15 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@+. ", 16 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@+. ", 17 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@+. ", 18 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@.@+. ", 19 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@+. ", 20 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@.@.@+. ", 21 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@+. ", 22 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@.@.@+. ", 23 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@.@+. ", 24 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@@@.@.@+. ", 25 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@.@.@.@.@+. ", 26 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@................ ", 27 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################# ", 28 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 29 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 30 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 31 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 32 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 33 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 34 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$.@@@@@@@@@@.# ", 35 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@$$..$.@@@@@@@@@@@.# ", 36 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@$..%$.@@@@@@@@@@@@.# ", 37 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@.$%%$.@@@@@@@@@@@@@.# ", 38 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@.$%.$@@@@@@@@@@@@@@.# ", 39 | " .+@@@@@@@@@@@@@@@@@@@@@@@@.$%%.$@@@@@@@@$@@@@@.# ", 40 | " .+@@@@@@@@@@@@@@@@@@@@@@@@.$%%%.$@@@@@@$$@@@@@.# ", 41 | " .+@@@@@@@@@@@@@@@@@@@@@@@@.$%%%%.$@@@@$.$@@@@@.# ", 42 | " .+@@@@@@@@@@@@@@@@@@@@@@@@.$%%%%%.$@@$..$@@@@@.# ", 43 | " .+@@@@@@@@@@@@@@@@@@@@@@@@.$%%%%%%.$$.%.$@@@@@.# ", 44 | " .+@@@@@@@@@@@@@@@@@@@@@@@$$%%%%%%%%..%.$@@@@@@.# ", 45 | " .+@@@@@@@@@@@@@@@@@@@@@@$.%%%%%%%%%%%%$$@@@@@@.# ", 46 | " .+@@@@@@@@@@@@@@@@@@@@@$.%%%%%%%%%%%$$.@@@@@@@.# ", 47 | " .+@@@@@@@@@@@@@@@@@@@@$.%%%%%%%$$$$$..@@@@@@@@.# ", 48 | " .+@@@@@@@@@@@@@@@@@@@$.%%%%%%%$.....@@@@@@@@@@.# ", 49 | " .+@@@@@@@@@@@@@@@@@@$.%%%%%%%$.@@@@@@@@@@@@@@@.# ", 50 | " .+@@@@@@@@@@@@@@@@@$.%%%%%%%$.@@@@@@@@@@@@@@@@.# ", 51 | " .+@@@@@@@@@@@@@@@@$.%%%%%%%$.@@@@@@@@@@@@@@@@@.# ", 52 | " .+@@@@@@@@@@@@@@@$.%%%%%%%$.@@@@@@@@@@@@@@@@@@.# ", 53 | " .+@@@@@@@@@@$$$$$.%%%%%%%$.@@@@@@@@@@@@@@@@@@@.# ", 54 | " .+@@@@@@@@$$.....%%%%%%%$.@@@@@@@@@@@@@@@@@@@@.# ", 55 | " .+@@@@@@@$..%%%%%%%%%%%$.@@@@@@@@@@@@@@@@@@@@@.# ", 56 | " .+@@@@@@.$%%%%%%%%%%%%$.@@@@@@@@@@@@@@@@@@@@@@.# ", 57 | " .+@@@@@@.$%$$%%%%%%%%$.@@@@@@@@@@@@@@@@@@@@@@@.# ", 58 | " .+@@@@@.$%$..$%%%%%%.$@@@@@@@@@@@@@@@@@@@@@@@@.# ", 59 | " .+@@@@@.$$.@@.$%%%%%.$@@@@@@@@@@@@@@@@@@@@@@@@.# ", 60 | " .+@@@@@.$.@@@@.$%%%%.$@@@@@@@@@@@@@@@@@@@@@@@@.# ", 61 | " .+@@@@@..@@@@@@.$%%%.$@@@@@@@@@@@@@@@@@@@@@@@@.# ", 62 | " .+@@@@@.@@@@@@@@.$%%.$@@@@@@@@@@@@@@@@@@@@@@@@.# ", 63 | " .+@@@@@@@@@@@@@@.$%%$@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 64 | " .+@@@@@@@@@@@@@$.%%$.@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 65 | " .+@@@@@@@@@@@@$.%$$.@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 66 | " .+@@@@@@@@@@@$$$$..@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 67 | " .+@@@@@@@@@@.....@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 68 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 69 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 70 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 71 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 72 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 73 | " ...............................................# ", 74 | " ################################################ "}; 75 | -------------------------------------------------------------------------------- /icons/file-object.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * file_object_xpm[] = { 3 | "64 64 7 1", 4 | " c None", 5 | ". c #BABDB6", 6 | "+ c #EEEEEC", 7 | "@ c #D3D7CF", 8 | "# c #000000", 9 | "$ c #555753", 10 | "% c #888A85", 11 | " ................................ ", 12 | " .++++++++++++++++++++++++++++++.. ", 13 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+. ", 14 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.++. ", 15 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@+. ", 16 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@+. ", 17 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@+. ", 18 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@.@+. ", 19 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@+. ", 20 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@.@.@+. ", 21 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@+. ", 22 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@.@.@+. ", 23 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@.@+. ", 24 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@@@.@.@+. ", 25 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@.@.@.@.@+. ", 26 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@................ ", 27 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################# ", 28 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 29 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 30 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 31 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 32 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 33 | " .+@@@@@@@@@@@@@@@@$$$$@@@@@@@@@@@@@@@@@@@@@@@@.# ", 34 | " .+@@@@@@@@@@@@@@@@$.$#@@@@@@@@@@@@@@@@@@@@@@@@.# ", 35 | " .+@@@@@@@@@@@@$@@@$.$#@@@#@@@@@@@@@@@@@@@@@@@@.# ", 36 | " .+@@@@@@@@@@@$.$@$.%%$#@#$#@@@@@@@@@@@@@@@@@@@.# ", 37 | " .+@@@@@@@@@@$.%.$.%%%%$#$%$#@@@@@@@@@@@@@@@@@@.# ", 38 | " .+@@@@@@@@@@@$.%.%%%%%%$%$#@@@@@@@@@@@@@@@@@@@.# ", 39 | " .+@@@@@@@@@@@@$.%%%##%%%$#@@@@@@@@@@@@@@@@@@@@.# ", 40 | " .+@@@@@@@@@@@@@$.%#@@$%$#@@@@@@@@@@@@@@@@@@@@@.# ", 41 | " .+@@@@@@@@@@@@@$.%#@@$%$#@@@@@@@@@@@@@@@@@@@@@.# ", 42 | " .+@@@@@@@@@@@@$.%%%$$%%%$#@@@@@@@@@@@@@@@@@@@@.# ", 43 | " .+@@@@@@@@@@@$.%.%%%%%%$%$#$$$$@@@@@@@@@@@@@@@.# ", 44 | " .+@@@@@@@@@@$.%.$.%%%%$#$%$#.$#@@@@@@@@@@@@@@@.# ", 45 | " .+@@@@@@@@@@@$.$@$.%%$#$#$#$.$#@@@#@@@@@@@@@@@.# ", 46 | " .+@@@@@@@@@@@@$@@@$.$#$.$#$.%%$#@#$#@@@@@@@@@@.# ", 47 | " .+@@@@@@@@@@@@@@@@$$$#.%.$.%%%%$#$%$#@@@@@@@@@.# ", 48 | " .+@@@@@@@@@@@@@@@@####$.%.%%%%%%$%$#@@@@@@@@@@.# ", 49 | " .+@@@@@@@@@@@@@@@@@@@@@$.%%%##%%%$#@@@@@@@@@@@.# ", 50 | " .+@@@@@@@@@@@@@@@@@@@@@@$.%#@@$%$#@@@@@@@@@@@@.# ", 51 | " .+@@@@@@@@@@@@@@@@@@@@@@$.%#@@$%$#@@@@@@@@@@@@.# ", 52 | " .+@@@@@@@@@@@@@@@@@@@@@$.%%%$$%%%$#@@@@@@@@@@@.# ", 53 | " .+@@@@@@@@@@@@@@@@$$$$$.%.%%%%%%$%$#@@@@@@@@@@.# ", 54 | " .+@@@@@@@@@@@@@@@@$.$#.%.$.%%%%$#$%$#@@@@@@@@@.# ", 55 | " .+@@@@@@@@@@@@$@@@$.$#$.$#$.%%$#@#$#@@@@@@@@@@.# ", 56 | " .+@@@@@@@@@@@$.$@$.%%$#$#$#$.$#@@@#@@@@@@@@@@@.# ", 57 | " .+@@@@@@@@@@$.%.$.%%%%$#$%$#$$#@@@@@@@@@@@@@@@.# ", 58 | " .+@@@@@@@@@@@$.%.%%%%%%$%$#####@@@@@@@@@@@@@@@.# ", 59 | " .+@@@@@@@@@@@@$.%%%##%%%$#@@@@@@@@@@@@@@@@@@@@.# ", 60 | " .+@@@@@@@@@@@@@$.%#@@$%$#@@@@@@@@@@@@@@@@@@@@@.# ", 61 | " .+@@@@@@@@@@@@@$.%#@@$%$#@@@@@@@@@@@@@@@@@@@@@.# ", 62 | " .+@@@@@@@@@@@@$.%%%$$%%%$#@@@@@@@@@@@@@@@@@@@@.# ", 63 | " .+@@@@@@@@@@@$.%.%%%%%%$%$#@@@@@@@@@@@@@@@@@@@.# ", 64 | " .+@@@@@@@@@@$.%.$.%%%%$#$%$#@@@@@@@@@@@@@@@@@@.# ", 65 | " .+@@@@@@@@@@@$.$@$.%%$#@#$#@@@@@@@@@@@@@@@@@@@.# ", 66 | " .+@@@@@@@@@@@@$@@@$.$#@@@#@@@@@@@@@@@@@@@@@@@@.# ", 67 | " .+@@@@@@@@@@@@@@@@$$$#@@@@@@@@@@@@@@@@@@@@@@@@.# ", 68 | " .+@@@@@@@@@@@@@@@@####@@@@@@@@@@@@@@@@@@@@@@@@.# ", 69 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 70 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 71 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 72 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 73 | " ...............................................# ", 74 | " ################################################ "}; 75 | -------------------------------------------------------------------------------- /icons/winicon64x64.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * winicon64x64_xpm[] = { 3 | "64 64 7 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | " ", 12 | " ", 13 | " ", 14 | " ", 15 | " ", 16 | " ", 17 | " ........................ ", 18 | " .+++++++++++++++++++++++.@ ", 19 | " .+########################.@ ", 20 | " .+##########################.@ ", 21 | " .+############################.@ ", 22 | " .+##############################.@ ", 23 | " .+################################.@ ", 24 | " .+##################################.@ ", 25 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 26 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 27 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 28 | ".+##+..............................+##########################.@", 29 | ".+###++++++++++++++++++++++++++++++###########################.@", 30 | ".+############################################################.@", 31 | ".+############################################################.@", 32 | ".+############################################################.@", 33 | ".+############################################################.@", 34 | ".+############################################################.@", 35 | ".+############################################################.@", 36 | ".+############################################################.@", 37 | ".+############################################################.@", 38 | ".+############################################################.@", 39 | ".+############################################################.@", 40 | ".+############################################################.@", 41 | ".+############################################################.@", 42 | ".+############################################################.@", 43 | ".+############################################################.@", 44 | ".+############################################################.@", 45 | ".+############################################################.@", 46 | ".+############################################################.@", 47 | ".+############################################################.@", 48 | ".+############################################################.@", 49 | ".+############################################################.@", 50 | ".+############################################################.@", 51 | ".+############################################################.@", 52 | ".+############################################################.@", 53 | ".+############################################################.@", 54 | ".+############################################################.@", 55 | ".+############################################################.@", 56 | ".+############################################################.@", 57 | ".+############################################################.@", 58 | ".+############################################################.@", 59 | ".+############################################################.@", 60 | ".+############################################################.@", 61 | ".+############################################################.@", 62 | ".+############################################################.@", 63 | ".+############################################################.@", 64 | ".+############################################################.@", 65 | ".+############################################################.@", 66 | ".+############################################################.@", 67 | "...............................................................@", 68 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 69 | " ", 70 | " ", 71 | " ", 72 | " ", 73 | " ", 74 | " "}; 75 | -------------------------------------------------------------------------------- /icons/file-info.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * file_info_xpm[] = { 3 | "64 64 8 1", 4 | " c None", 5 | ". c #BABDB6", 6 | "+ c #EEEEEC", 7 | "@ c #D3D7CF", 8 | "# c #000000", 9 | "$ c #204A87", 10 | "% c #729FCF", 11 | "& c #3465A4", 12 | " ................................ ", 13 | " .++++++++++++++++++++++++++++++.. ", 14 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+. ", 15 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.++. ", 16 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@+. ", 17 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@+. ", 18 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@+. ", 19 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@.@+. ", 20 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@+. ", 21 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@.@.@+. ", 22 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@+. ", 23 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@.@.@+. ", 24 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@.@+. ", 25 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@@@.@.@+. ", 26 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@.@.@.@.@+. ", 27 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@................ ", 28 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################# ", 29 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 30 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 31 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 32 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 33 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 34 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 35 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 36 | " .+@@@@@@@@@@@@@@@@@@$$$$$$$$@@@@@@@@@@@@@@@@@@.# ", 37 | " .+@@@@@@@@@@@@@@@$$$%%%%%%%%$$$@@@@@@@@@@@@@@@.# ", 38 | " .+@@@@@@@@@@@@@$$%%%&&&&&&&&%%%$$@@@@@@@@@@@@@.# ", 39 | " .+@@@@@@@@@@@@$%%&&&&&&&&&&&&&&%%$@@@@@@@@@@@@.# ", 40 | " .+@@@@@@@@@@@$%&&&&&&&&&&&&&&&&&&%$@@@@@@@@@@@.# ", 41 | " .+@@@@@@@@@@$%&&&&&&&&&%%&&&&&&&&&%.@@@@@@@@@@.# ", 42 | " .+@@@@@@@@@$%&&&&&&&&&%...&&&&&&&&&$.@@@@@@@@@.# ", 43 | " .+@@@@@@@@$%&&&&&&&&&%.@@+.&&&&&&&&&$.@@@@@@@@.# ", 44 | " .+@@@@@@@@$%&&&&&&&&&%.@@+.&&&&&&&&&$.@@@@@@@@.# ", 45 | " .+@@@@@@@$%&&&&&&&&&&&%.+.&&&&&&&&&&&$.@@@@@@@.# ", 46 | " .+@@@@@@@$%&&&&&&&&&&&&..&&&&&&&&&&&&$.@@@@@@@.# ", 47 | " .+@@@@@@@$%&&&&&&&&&&&&&&&&&&&&&&&&&&$.@@@@@@@.# ", 48 | " .+@@@@@@$%&&&&&&&&&&&&&&&&&&&&&&&&&&&&$.@@@@@@.# ", 49 | " .+@@@@@@$%&&&&&&&&&%%%%%%%%&&&&&&&&&&&$.@@@@@@.# ", 50 | " .+@@@@@@$%&&&&&&&&&%.......&&&&&&&&&&&$.@@@@@@.# ", 51 | " .+@@@@@@$%&&&&&&&&&%%%.@@+.&&&&&&&&&&&$.@@@@@@.# ", 52 | " .+@@@@@@$%&&&&&&&&&&&%.@@+.&&&&&&&&&&&$.@@@@@@.# ", 53 | " .+@@@@@@$%&&&&&&&&&&&%.@@+.&&&&&&&&&&&$.@@@@@@.# ", 54 | " .+@@@@@@$%&&&&&&&&&&&%.@@+.&&&&&&&&&&&$.@@@@@@.# ", 55 | " .+@@@@@@$%&&&&&&&&&&&%.@@+.&&&&&&&&&&&$.@@@@@@.# ", 56 | " .+@@@@@@@$%&&&&&&&&&&%.@@+.&&&&&&&&&&$.@@@@@@@.# ", 57 | " .+@@@@@@@$%&&&&&&&&&&%.@@+.&&&&&&&&&&$.@@@@@@@.# ", 58 | " .+@@@@@@@$%&&&&&&&&&&%.@@+.&&&&&&&&&&$.@@@@@@@.# ", 59 | " .+@@@@@@@@$%&&&&&&&&&%.@@+.&&&&&&&&&$.@@@@@@@@.# ", 60 | " .+@@@@@@@@$%&&&&&&&%%%.@@+...&&&&&&&$.@@@@@@@@.# ", 61 | " .+@@@@@@@@@$%&&&&&&%++++++++.&&&&&&$.@@@@@@@@@.# ", 62 | " .+@@@@@@@@@@$%&&&&&..........&&&&&$.@@@@@@@@@@.# ", 63 | " .+@@@@@@@@@@@.$&&&&&&&&&&&&&&&&&&$.@@@@@@@@@@@.# ", 64 | " .+@@@@@@@@@@@@.$$&&&&&&&&&&&&&&$$.@@@@@@@@@@@@.# ", 65 | " .+@@@@@@@@@@@@@..$$$&&&&&&&&$$$..@@@@@@@@@@@@@.# ", 66 | " .+@@@@@@@@@@@@@@@...$$$$$$$$...@@@@@@@@@@@@@@@.# ", 67 | " .+@@@@@@@@@@@@@@@@@@........@@@@@@@@@@@@@@@@@@.# ", 68 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 69 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 70 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 71 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 72 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 73 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 74 | " ...............................................# ", 75 | " ################################################ "}; 76 | -------------------------------------------------------------------------------- /icons/file-audio.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * file_audio_xpm[] = { 3 | "64 64 8 1", 4 | " c None", 5 | ". c #BABDB6", 6 | "+ c #EEEEEC", 7 | "@ c #D3D7CF", 8 | "# c #000000", 9 | "$ c #AD7FA8", 10 | "% c #75507B", 11 | "& c #5C3566", 12 | " ................................ ", 13 | " .++++++++++++++++++++++++++++++.. ", 14 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+. ", 15 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.++. ", 16 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@+. ", 17 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@+. ", 18 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@+. ", 19 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@.@+. ", 20 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@+. ", 21 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@.@.@+. ", 22 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@+. ", 23 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@.@.@+. ", 24 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@.@+. ", 25 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@@@.@.@+. ", 26 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@.@.@.@.@+. ", 27 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@................ ", 28 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################# ", 29 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 30 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 31 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 32 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 33 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 34 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 35 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 36 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@..$$%%&&&&&&@@@@@@.# ", 37 | " .+@@@@@@@@@@@@@@@@@@@@..$$%%&&&&&&$$$$&.@@@@@@.# ", 38 | " .+@@@@@@@@@@@@@@..$$%%&&&&&&$$$$$$%%%%&.@@@@@@.# ", 39 | " .+@@@@@@@@@@@@@@&&&&&&$$$$$$%%%%%%%%%%&.@@@@@@.# ", 40 | " .+@@@@@@@@@@@@@@&$$$$$%%%%%%%%%%%%%%%%&.@@@@@@.# ", 41 | " .+@@@@@@@@@@@@@@&$++@%%%%%%%%%%%%%%%%%&.@@@@@@.# ", 42 | " .+@@@@@@@@@@@@@@&$@%%%%%%%%%%%%%&&&&&%&.@@@@@@.# ", 43 | " .+@@@@@@@@@@@@@@&$%%%%%%%%%%&&&&%$..&$&.@@@@@@.# ", 44 | " .+@@@@@@@@@@@@@@&$%%%%%%&&&&%$..@@@@&$&.@@@@@@.# ", 45 | " .+@@@@@@@@@@@@@@&$%&&&&&%$..@@@@@@@@&$&.@@@@@@.# ", 46 | " .+@@@@@@@@@@@@@@&$&.....@@@@@@@@@@@@&$&.@@@@@@.# ", 47 | " .+@@@@@@@@@@@@@@&$&.@@@@@@@@@@@@@@@@&$&.@@@@@@.# ", 48 | " .+@@@@@@@@@@@@@@&$&.@@@@@@@@@@@@@@@@&$&.@@@@@@.# ", 49 | " .+@@@@@@@@@@@@@@&$&.@@@@@@@@@@@@@@@@&$&.@@@@@@.# ", 50 | " .+@@@@@@@@@@@@@@&$&.@@@@@@@@@@@@@@@@&$&.@@@@@@.# ", 51 | " .+@@@@@@@@@@@@@@&$&.@@@@@@@@@@@@@@@@&$&.@@@@@@.# ", 52 | " .+@@@@@@@@@@@@@@&$&.@@@@@@@@@@@@@@@@&$&.@@@@@@.# ", 53 | " .+@@@@@@@@@@@@@@&$&.@@@@@@@@@@@@@@@@&$&.@@@@@@.# ", 54 | " .+@@@@@@@@@@@@@@&$&.@@@@@@@@@@@@@@@@&$&.@@@@@@.# ", 55 | " .+@@@@@@@@@@@@@@&$&.@@@@@@@@@@@@@@@@&$&.@@@@@@.# ", 56 | " .+@@@@@@@@@@@@@@&$&.@@@@@@@@@@@&&&&&&$&.@@@@@@.# ", 57 | " .+@@@@@@@@@@@@@@&$&.@@@@@@@@@@&$$$$$$%&.@@@@@@.# ", 58 | " .+@@@@@@@@@@@@@@&$&.@@@@@@@@@&$+@%%%%%&.@@@@@@.# ", 59 | " .+@@@@@@@@@&&&&&&$&.@@@@@@@@&$@+%%%%%%&.@@@@@@.# ", 60 | " .+@@@@@@@@&$$$$$$%&.@@@@@@@@&$%%%%%%%%&.@@@@@@.# ", 61 | " .+@@@@@@@&$+@%%%%%&.@@@@@@@@&$%%%%%%%%&.@@@@@@.# ", 62 | " .+@@@@@@&$@+%%%%%%&.@@@@@@@@@&$%%%%%%&.@@@@@@@.# ", 63 | " .+@@@@@@&$%%%%%%%%&.@@@@@@@@@@&&&&&&&.@@@@@@@@.# ", 64 | " .+@@@@@@&$%%%%%%%%&.@@@@@@@@@@@......@@@@@@@@@.# ", 65 | " .+@@@@@@@&$%%%%%%&.@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 66 | " .+@@@@@@@@&&&&&&&.@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 67 | " .+@@@@@@@@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 68 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 69 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 70 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 71 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 72 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 73 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 74 | " ...............................................# ", 75 | " ################################################ "}; 76 | -------------------------------------------------------------------------------- /icons/file-video.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * file_video_xpm[] = { 3 | "64 64 8 1", 4 | " c None", 5 | ". c #BABDB6", 6 | "+ c #EEEEEC", 7 | "@ c #D3D7CF", 8 | "# c #000000", 9 | "$ c #2E3436", 10 | "% c #888A85", 11 | "& c #555753", 12 | " ................................ ", 13 | " .++++++++++++++++++++++++++++++.. ", 14 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+. ", 15 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.++. ", 16 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@+. ", 17 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@+. ", 18 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@+. ", 19 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@.@+. ", 20 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@+. ", 21 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@.@.@+. ", 22 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@+. ", 23 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@.@.@+. ", 24 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@.@+. ", 25 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@@@.@.@+. ", 26 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@.@.@.@.@+. ", 27 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@................ ", 28 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################# ", 29 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 30 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 31 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 32 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 33 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 34 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 35 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 36 | " .+@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@@@.# ", 37 | " .+@@@@@@$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$.@@@@@@.# ", 38 | " .+@@@@@@$%++++$$$$++++$$$$++++$$$$++++$.@@@@@@.# ", 39 | " .+@@@@@@$%$++++$$$$++++$$$$++++$$$$+++$.@@@@@@.# ", 40 | " .+@@@@@@$%$$++++$$$$++++$$$$++++$$$$++$.@@@@@@.# ", 41 | " .+@@@@@@$%$$$++++$$$$++++$$$$++++$$$$+$.@@@@@@.# ", 42 | " .+@@@@@@$%&&&&&&&&&&&&&&&&&&&&&&&&&&&&$.@@@@@@.# ", 43 | " .+@@@@@@$%$$$++++$$$$++++$$$$++++$$$$+$.@@@@@@.# ", 44 | " .+@@@@@@$%$$++++$$$$++++$$$$++++$$$$++$.@@@@@@.# ", 45 | " .+@@@@@@$%$++++$$$$++++$$$$++++$$$$+++$.@@@@@@.# ", 46 | " .+@@@@@@$%++++$$$$++++$$$$++++$$$$++++$.@@@@@@.# ", 47 | " .+@@@@@@$%&&&&&&&&&&&&&&&&&&&&&&&&&&&&$.@@@@@@.# ", 48 | " .+@@@@@@$%&&&&&&&&&&&&&&&&&&&&&&&&&&&&$.@@@@@@.# ", 49 | " .+@@@@@@$%&&&&&&&&&&&&&&&&&&&&&&&&&&&&$.@@@@@@.# ", 50 | " .+@@@@@@$%&&&&&&&&$$&&&&&&&&&&&&&&&&&&$.@@@@@@.# ", 51 | " .+@@@@@@$%&&&&&&&&$$$$&&&&&&&&&&&&&&&&$.@@@@@@.# ", 52 | " .+@@@@@@$%&&&&&&&&$$$$$$&&&&&&&&&&&&&&$.@@@@@@.# ", 53 | " .+@@@@@@$%&&&&&&&&$$$$$$$$&&&&&&&&&&&&$.@@@@@@.# ", 54 | " .+@@@@@@$%&&&&&&&&$$$$$$$$$$&&&&&&&&&&$.@@@@@@.# ", 55 | " .+@@@@@@$%&&&&&&&&$$$$$$$$$$$$&&&&&&&&$.@@@@@@.# ", 56 | " .+@@@@@@$%&&&&&&&&$$$$$$$$$$$$%&&&&&&&$.@@@@@@.# ", 57 | " .+@@@@@@$%&&&&&&&&$$$$$$$$$$%%&&&&&&&&$.@@@@@@.# ", 58 | " .+@@@@@@$%&&&&&&&&$$$$$$$$%%&&&&&&&&&&$.@@@@@@.# ", 59 | " .+@@@@@@$%&&&&&&&&$$$$$$%%&&&&&&&&&&&&$.@@@@@@.# ", 60 | " .+@@@@@@$%&&&&&&&&$$$$%%&&&&&&&&&&&&&&$.@@@@@@.# ", 61 | " .+@@@@@@$%&&&&&&&&$$%%&&&&&&&&&&&&&&&&$.@@@@@@.# ", 62 | " .+@@@@@@$%&&&&&&&&%%&&&&&&&&&&&&&&&&&&$.@@@@@@.# ", 63 | " .+@@@@@@$%&&&&&&&&&&&&&&&&&&&&&&&&&&&&$.@@@@@@.# ", 64 | " .+@@@@@@$%&&&&&&&&&&&&&&&&&&&&&&&&&&&&$.@@@@@@.# ", 65 | " .+@@@@@@$%&&&&&&&&&&&&&&&&&&&&&&&&&&&&$.@@@@@@.# ", 66 | " .+@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.@@@@@@.# ", 67 | " .+@@@@@@................................@@@@@@.# ", 68 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 69 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 70 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 71 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 72 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 73 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 74 | " ...............................................# ", 75 | " ################################################ "}; 76 | -------------------------------------------------------------------------------- /icons/file-broken.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * file_broken_xpm[] = { 3 | "64 64 9 1", 4 | " c None", 5 | ". c #BABDB6", 6 | "+ c #EEEEEC", 7 | "@ c #D3D7CF", 8 | "# c #000000", 9 | "$ c #737373", 10 | "% c #555753", 11 | "& c #2E3436", 12 | "* c #888A85", 13 | " ................................ ", 14 | " .++++++++++++++++++++++++++++++.. ", 15 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+. ", 16 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.++. ", 17 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@+. ", 18 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@+. ", 19 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@+. ", 20 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@.@+. ", 21 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@+. ", 22 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@.@.@+. ", 23 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@+. ", 24 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@.@.@+. ", 25 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@.@+. ", 26 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@@@.@.@+. ", 27 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@.@.@.@.@+. ", 28 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@................ ", 29 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################# ", 30 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 31 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 32 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 33 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 34 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 35 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 36 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 37 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 38 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 39 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 40 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.@@@@@@.# ", 41 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.#.@@@@@.# ", 42 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# #.@@@@.# ", 43 | " ......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..# #.@@@.# ", 44 | " ######.@@@@@@@.@@@@@...@@@@@@@@@@@.## #.@@.# ", 45 | " #.@@@@@.#.@@@.###..@@@@@@@@.# #...# ", 46 | " #.@@@.# #.@.# ##..@@@@@.# #### ", 47 | " #.@.# #.# ##..@@.# ", 48 | " #.# # ##..# ", 49 | " ...... # ## ........ ", 50 | " .+++++. .++++++.# ", 51 | " .+@@@@+. . . .+@@@@@@.# ", 52 | " .+@@@@@+. . .+. .+. .+@@@@@@@.# ", 53 | " .+@@@@@@+.. ..+.. .+@+. .+@+.+@@@@@@@@.# ", 54 | " .+@@@@@@@++.++@++....+@@@+......+@@@+@@@@@@@@@.# ", 55 | " .+@@@@@@@@@+@@@@@++++@@@@@++++++@@@@@@@@@@@@@@.# ", 56 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 57 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 58 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 59 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$@.# ", 60 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$+++++++++++++.@.# ", 61 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$+++%&&%++++++.@.# ", 62 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$++%*%&&%+++++.@.# ", 63 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$++*++&&&.++++.@.# ", 64 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$++.++.&&&+%++.@.# ", 65 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$++@+++%&&%&++.@.# ", 66 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$++++%&&&&&&++.@.# ", 67 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$+++++%&&&&&++.@.# ", 68 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$++++++%&&&&++.@.# ", 69 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$+++++++%&&&++.@.# ", 70 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$++++++++%&&++.@.# ", 71 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$+++++++++%&++.@.# ", 72 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@$+++++++++++++.@.# ", 73 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@...............@.# ", 74 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 75 | " ...............................................# ", 76 | " ################################################ "}; 77 | -------------------------------------------------------------------------------- /icons/folder-code.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_code_xpm[] = { 3 | "64 64 9 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #729FCF", 12 | "* c #3465A4", 13 | " ", 14 | " ", 15 | " ", 16 | " ", 17 | " ", 18 | " ", 19 | " ........................ ", 20 | " .+++++++++++++++++++++++.@ ", 21 | " .+########################.@ ", 22 | " .+##########################.@ ", 23 | " .+############################.@ ", 24 | " .+##############################.@ ", 25 | " .+################################.@ ", 26 | " .+##################################.@ ", 27 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 28 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 29 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 30 | ".+##+..............................+##########################.@", 31 | ".+###++++++++++++++++++++++++++++++###########################.@", 32 | ".+############################################################.@", 33 | ".+############################################################.@", 34 | ".+############################################################.@", 35 | ".+############################################################.@", 36 | ".+############################################################.@", 37 | ".+################################&&***.##########&***..######.@", 38 | ".+###############################&***..############&&***.#####.@", 39 | ".+##############################&***.################&***.####.@", 40 | ".+##############################&***.################&***.####.@", 41 | ".+##############################&***.##*****#***#**##&***.####.@", 42 | ".+##############################&***.################&***.####.@", 43 | ".+##############################&***.##**#*****######&***.####.@", 44 | ".+##############################&***.################&***.####.@", 45 | ".+##############################&***.##**#***########&***.####.@", 46 | ".+##############################&***.################&***.####.@", 47 | ".+##############################&***.#####**#****####&***.####.@", 48 | ".+##############################&***.################&***.####.@", 49 | ".+##############################&***.#####*****#**###&***.####.@", 50 | ".+#############################&***.##################&***.###.@", 51 | ".+############################&***.####*###############&***.##.@", 52 | ".+###########################&***.######################&***.#.@", 53 | ".+############################&***.####****#**#########&***.##.@", 54 | ".+#############################&***.##################&***.###.@", 55 | ".+##############################&***.################&***.####.@", 56 | ".+##############################&***.##**#*****######&***.####.@", 57 | ".+##############################&***.################&***.####.@", 58 | ".+##############################&***.#####**#***#####&***.####.@", 59 | ".+##############################&***.################&***.####.@", 60 | ".+##############################&***.#####***########&***.####.@", 61 | ".+##############################&***.################&***.####.@", 62 | ".+##############################&***.#####*##########&***.####.@", 63 | ".+##############################&***.################&***.####.@", 64 | ".+##############################&***.##**############&***.####.@", 65 | ".+##############################&***.################&***.####.@", 66 | ".+###############################&***..############&&***.#####.@", 67 | ".+################################&&***.##########&***..######.@", 68 | ".+############################################################.@", 69 | "...............................................................@", 70 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 71 | " ", 72 | " ", 73 | " ", 74 | " ", 75 | " ", 76 | " "}; 77 | -------------------------------------------------------------------------------- /icons/folder-gear.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_gear_xpm[] = { 3 | "64 64 9 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #555753", 12 | "* c #888A85", 13 | " ", 14 | " ", 15 | " ", 16 | " ", 17 | " ", 18 | " ", 19 | " ........................ ", 20 | " .+++++++++++++++++++++++.@ ", 21 | " .+########################.@ ", 22 | " .+##########################.@ ", 23 | " .+############################.@ ", 24 | " .+##############################.@ ", 25 | " .+################################.@ ", 26 | " .+##################################.@ ", 27 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 28 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 29 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 30 | ".+##+..............................+##########################.@", 31 | ".+###++++++++++++++++++++++++++++++###########################.@", 32 | ".+############################################################.@", 33 | ".+############################################################.@", 34 | ".+############################################################.@", 35 | ".+############################################################.@", 36 | ".+########################################&&&&&&##############.@", 37 | ".+#######################################@$$$$$&@#############.@", 38 | ".+#######################################@$****&@#############.@", 39 | ".+#######################################@$****&@#############.@", 40 | ".+#######################################@$****&@#############.@", 41 | ".+##############################&&######&$******&&######&&####.@", 42 | ".+#############################&$$&&##&&$********$&&##&&$$@###.@", 43 | ".+############################&$**$$&&$$**********$$&&$$**&@##.@", 44 | ".+############################&$****$$**************$$****&@##.@", 45 | ".+###########################&$****************************&@#.@", 46 | ".+###########################&&****************************&@#.@", 47 | ".+############################@&&************************&&@##.@", 48 | ".+#############################@@&&********@@@@********&&@@###.@", 49 | ".+###############################@@$******@####&******&@@#####.@", 50 | ".+#################################&$****@######&****&@#######.@", 51 | ".+#################################&$****@######&****&@#######.@", 52 | ".+#################################&$****@######&****&@#######.@", 53 | ".+#################################&$****@######&****&@#######.@", 54 | ".+###############################&&$******@####&******&&&#####.@", 55 | ".+#############################&&$$********&&&&********$$&&###.@", 56 | ".+############################&$$************************$$&##.@", 57 | ".+###########################&$****************************$@#.@", 58 | ".+###########################&$****************************&@#.@", 59 | ".+############################&$****&&**************&&****&@##.@", 60 | ".+############################&$**&&@@&&**********&&@@&&**&@##.@", 61 | ".+#############################&&&@@##@@&********&@@##@@&&@###.@", 62 | ".+##############################@@######@$******&@######@@####.@", 63 | ".+#######################################&$****&@#############.@", 64 | ".+#######################################&$****&@#############.@", 65 | ".+#######################################&$****&@#############.@", 66 | ".+#######################################&&&&&&&@#############.@", 67 | ".+########################################@@@@@@##############.@", 68 | ".+############################################################.@", 69 | "...............................................................@", 70 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 71 | " ", 72 | " ", 73 | " ", 74 | " ", 75 | " ", 76 | " "}; 77 | -------------------------------------------------------------------------------- /icons/folder-db.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_db_xpm[] = { 3 | "64 64 10 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #204A87", 12 | "* c #729FCF", 13 | "= c #3465A4", 14 | " ", 15 | " ", 16 | " ", 17 | " ", 18 | " ", 19 | " ", 20 | " ........................ ", 21 | " .+++++++++++++++++++++++.@ ", 22 | " .+########################.@ ", 23 | " .+##########################.@ ", 24 | " .+############################.@ ", 25 | " .+##############################.@ ", 26 | " .+################################.@ ", 27 | " .+##################################.@ ", 28 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 29 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 30 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 31 | ".+##+..............................+##########################.@", 32 | ".+###++++++++++++++++++++++++++++++###########################.@", 33 | ".+############################################################.@", 34 | ".+############################################################.@", 35 | ".+############################################################.@", 36 | ".+############################################################.@", 37 | ".+######################################&&&&&&&&&&############.@", 38 | ".+##################################&&&&**********&&&&########.@", 39 | ".+###############################&&&****==========****&&&#####.@", 40 | ".+#############################&&***==================***&&###.@", 41 | ".+############################&**========================**&##.@", 42 | ".+###########################&*============================&@#.@", 43 | ".+###########################&*&&========================&&&@#.@", 44 | ".+###########################&***&&&==================&&&**&@#.@", 45 | ".+###########################&*==***&&&&==========&&&&***==&@#.@", 46 | ".+###########################&*=====****&&&&&&&&&&****=====&@#.@", 47 | ".+###########################&*=========**********=========&@#.@", 48 | ".+############################@============================@##.@", 49 | ".+#############################@@========================@@###.@", 50 | ".+############################&==@@@==================@@@==@##.@", 51 | ".+###########################&*&&===@@@@==========@@@@===&&&@#.@", 52 | ".+###########################&***&&&====@@@@@@@@@@====&&&**&@#.@", 53 | ".+###########################&*==***&&&&==========&&&&***==&@#.@", 54 | ".+###########################&*=====****&&&&&&&&&&****=====&@#.@", 55 | ".+###########################&*=========**********=========&@#.@", 56 | ".+############################@============================@##.@", 57 | ".+#############################@@========================@@###.@", 58 | ".+############################&==@@@==================@@@==@##.@", 59 | ".+###########################&*&&===@@@@==========@@@@===&&&@#.@", 60 | ".+###########################&***&&&====@@@@@@@@@@====&&&**&@#.@", 61 | ".+###########################&*==***&&&&==========&&&&***==&@#.@", 62 | ".+###########################&*=====****&&&&&&&&&&****=====&@#.@", 63 | ".+###########################&&=========**********=========&@#.@", 64 | ".+############################@&&========================&&@##.@", 65 | ".+#############################@@&&&==================&&&@@###.@", 66 | ".+###############################@@@&&&&==========&&&&@@@#####.@", 67 | ".+##################################@@@@&&&&&&&&&&@@@@########.@", 68 | ".+######################################@@@@@@@@@@############.@", 69 | ".+############################################################.@", 70 | "...............................................................@", 71 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 72 | " ", 73 | " ", 74 | " ", 75 | " ", 76 | " ", 77 | " "}; 78 | -------------------------------------------------------------------------------- /icons/folder-mount.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_mount_xpm[] = { 3 | "64 64 10 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #2E3436", 12 | "* c #888A85", 13 | "= c #555753", 14 | " ", 15 | " ", 16 | " ", 17 | " ", 18 | " ", 19 | " ", 20 | " ........................ ", 21 | " .+++++++++++++++++++++++.@ ", 22 | " .+########################.@ ", 23 | " .+##########################.@ ", 24 | " .+############################.@ ", 25 | " .+##############################.@ ", 26 | " .+################################.@ ", 27 | " .+##################################.@ ", 28 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 29 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 30 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 31 | ".+##+..............................+##########################.@", 32 | ".+###++++++++++++++++++++++++++++++###########################.@", 33 | ".+############################################################.@", 34 | ".+############################################################.@", 35 | ".+############################################################.@", 36 | ".+############################################################.@", 37 | ".+###############################################&&###########.@", 38 | ".+##############################################&**@##########.@", 39 | ".+#############################################&*==&@#########.@", 40 | ".+#############################################@@=&@@#########.@", 41 | ".+###############################################&@###########.@", 42 | ".+###############################################&@#&&&&&&####.@", 43 | ".+###############################################&@#&***&@####.@", 44 | ".+#########################################&&&&##&@#&*==&@####.@", 45 | ".+########################################&***&@#&@#&*==&@####.@", 46 | ".+########################################&*==&@#&@#&&&&&@####.@", 47 | ".+########################################&*==&@#&@#@@@@@@####.@", 48 | ".+########################################&&&&&@#&@###&@######.@", 49 | ".+#########################################@&@@##&@###&@######.@", 50 | ".+##########################################&@###&@###&@######.@", 51 | ".+##########################################&@###&@##&=@######.@", 52 | ".+##########################################&@###&@#&=@#######.@", 53 | ".+##########################################&@###&=&=@########.@", 54 | ".+##########################################&@###&==@#########.@", 55 | ".+##########################################@=&##&@@##########.@", 56 | ".+###########################################@=&#&@###########.@", 57 | ".+############################################@=&=@###########.@", 58 | ".+#############################################@==@###########.@", 59 | ".+##############################################@=@###########.@", 60 | ".+###############################################&@###########.@", 61 | ".+###############################################&@###########.@", 62 | ".+###############################################&@###########.@", 63 | ".+##############################################&&@@##########.@", 64 | ".+#############################################&**=&@#########.@", 65 | ".+#############################################&*==&@#########.@", 66 | ".+#############################################&*==&@#########.@", 67 | ".+#############################################&&&&&@#########.@", 68 | ".+##############################################@@@@##########.@", 69 | ".+############################################################.@", 70 | "...............................................................@", 71 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 72 | " ", 73 | " ", 74 | " ", 75 | " ", 76 | " ", 77 | " "}; 78 | -------------------------------------------------------------------------------- /icons/folder-video.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_video_xpm[] = { 3 | "64 64 10 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #2E3436", 12 | "* c #888A85", 13 | "= c #555753", 14 | " ", 15 | " ", 16 | " ", 17 | " ", 18 | " ", 19 | " ", 20 | " ........................ ", 21 | " .+++++++++++++++++++++++.@ ", 22 | " .+########################.@ ", 23 | " .+##########################.@ ", 24 | " .+############################.@ ", 25 | " .+##############################.@ ", 26 | " .+################################.@ ", 27 | " .+##################################.@ ", 28 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 29 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 30 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 31 | ".+##+..............................+##########################.@", 32 | ".+###++++++++++++++++++++++++++++++###########################.@", 33 | ".+############################################################.@", 34 | ".+############################################################.@", 35 | ".+############################################################.@", 36 | ".+############################################################.@", 37 | ".+###########################&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#.@", 38 | ".+###########################&*****************************&.#.@", 39 | ".+###########################&*%%%%&&&&%%%%&&&&%%%%&&&&%%%%&.#.@", 40 | ".+###########################&*&%%%%&&&&%%%%&&&&%%%%&&&&%%%&.#.@", 41 | ".+###########################&*&&%%%%&&&&%%%%&&&&%%%%&&&&%%&.#.@", 42 | ".+###########################&*&&&%%%%&&&&%%%%&&&&%%%%&&&&%&.#.@", 43 | ".+###########################&*============================&.#.@", 44 | ".+###########################&*&&&%%%%&&&&%%%%&&&&%%%%&&&&%&.#.@", 45 | ".+###########################&*&&%%%%&&&&%%%%&&&&%%%%&&&&%%&.#.@", 46 | ".+###########################&*&%%%%&&&&%%%%&&&&%%%%&&&&%%%&.#.@", 47 | ".+###########################&*%%%%&&&&%%%%&&&&%%%%&&&&%%%%&.#.@", 48 | ".+###########################&*============================&.#.@", 49 | ".+###########################&*============================&.#.@", 50 | ".+###########################&*============================&.#.@", 51 | ".+###########################&*========&&==================&.#.@", 52 | ".+###########################&*========&&&&================&.#.@", 53 | ".+###########################&*========&&&&&&==============&.#.@", 54 | ".+###########################&*========&&&&&&&&============&.#.@", 55 | ".+###########################&*========&&&&&&&&&&==========&.#.@", 56 | ".+###########################&*========&&&&&&&&&&&&========&.#.@", 57 | ".+###########################&*========&&&&&&&&&&&&*=======&.#.@", 58 | ".+###########################&*========&&&&&&&&&&**========&.#.@", 59 | ".+###########################&*========&&&&&&&&**==========&.#.@", 60 | ".+###########################&*========&&&&&&**============&.#.@", 61 | ".+###########################&*========&&&&**==============&.#.@", 62 | ".+###########################&*========&&**================&.#.@", 63 | ".+###########################&*========**==================&.#.@", 64 | ".+###########################&*============================&.#.@", 65 | ".+###########################&*============================&.#.@", 66 | ".+###########################&*============================&.#.@", 67 | ".+###########################&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.#.@", 68 | ".+###########################................................#.@", 69 | ".+############################################################.@", 70 | "...............................................................@", 71 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 72 | " ", 73 | " ", 74 | " ", 75 | " ", 76 | " ", 77 | " "}; 78 | -------------------------------------------------------------------------------- /icons/folder-download.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_download_xpm[] = { 3 | "64 64 10 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #4E9A06", 12 | "* c #8AE234", 13 | "= c #73D216", 14 | " ", 15 | " ", 16 | " ", 17 | " ", 18 | " ", 19 | " ", 20 | " ........................ ", 21 | " .+++++++++++++++++++++++.@ ", 22 | " .+########################.@ ", 23 | " .+##########################.@ ", 24 | " .+############################.@ ", 25 | " .+##############################.@ ", 26 | " .+################################.@ ", 27 | " .+##################################.@ ", 28 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 29 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 30 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 31 | ".+##+..............................+##########################.@", 32 | ".+###++++++++++++++++++++++++++++++###########################.@", 33 | ".+############################################################.@", 34 | ".+############################################################.@", 35 | ".+############################################################.@", 36 | ".+############################################################.@", 37 | ".+############################################################.@", 38 | ".+####################################&&&########&&&##########.@", 39 | ".+##################################&&*&.########&**&&########.@", 40 | ".+#################################&**=&.########&*=**&#######.@", 41 | ".+################################&*===&.########&*===*&######.@", 42 | ".+###############################&*====&.########&*====*.#####.@", 43 | ".+##############################&*=====&.########&*=====&.####.@", 44 | ".+#############################&*======&.########&*======&.###.@", 45 | ".+#############################&*======&.########&*======&.###.@", 46 | ".+############################&*=======&.########&*=======&.##.@", 47 | ".+############################&*=======&.########&*=======&.##.@", 48 | ".+############################&*=======&.########&*=======&.##.@", 49 | ".+###########################&*========&.########&*========&.#.@", 50 | ".+###########################&*========&.########&*========&.#.@", 51 | ".+###########################&*========&.########&*========&.#.@", 52 | ".+###########################&*=====&&&&.########&&&&&=====&.#.@", 53 | ".+###########################&*=====.....########.....=====&.#.@", 54 | ".+###########################&*=====.################&=====&.#.@", 55 | ".+###########################&*=====&.##############&*=====&.#.@", 56 | ".+###########################&*======&.############&*======&.#.@", 57 | ".+############################&*======&.##########&*======&.##.@", 58 | ".+############################&*=======&.########&*=======&.##.@", 59 | ".+############################&*========&.######&*========&.##.@", 60 | ".+#############################&*========&.####&*========&.###.@", 61 | ".+#############################&*=========&.##&*=========&.###.@", 62 | ".+##############################&*=========&&&*=========&.####.@", 63 | ".+###############################&&=========**=========&.#####.@", 64 | ".+################################.&==================&.######.@", 65 | ".+#################################.&&==============&&.#######.@", 66 | ".+##################################..&&&========&&&..########.@", 67 | ".+####################################...&&&&&&&&...##########.@", 68 | ".+#######################################........#############.@", 69 | ".+############################################################.@", 70 | "...............................................................@", 71 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 72 | " ", 73 | " ", 74 | " ", 75 | " ", 76 | " ", 77 | " "}; 78 | -------------------------------------------------------------------------------- /icons/folder-link.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_link_xpm[] = { 3 | "64 64 11 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #555753", 12 | "* c #2E3436", 13 | "= c #888A85", 14 | "- c #D3D7CF", 15 | " ", 16 | " ", 17 | " ", 18 | " ", 19 | " ", 20 | " ", 21 | " ........................ ", 22 | " .+++++++++++++++++++++++.@ ", 23 | " .+########################.@ ", 24 | " .+##########################.@ ", 25 | " .+############################.@ ", 26 | " .+##############################.@ ", 27 | " .+################################.@ ", 28 | " .+##################################.@ ", 29 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 30 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 31 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 32 | ".+##+..............................+##########################.@", 33 | ".+###++++++++++++++++++++++++++++++###########################.@", 34 | ".+############################################################.@", 35 | ".+############################################################.@", 36 | ".+############################################################.@", 37 | ".+############################################################.@", 38 | ".+############################################################.@", 39 | ".+############################################################.@", 40 | ".+############################################################.@", 41 | ".+############################################################.@", 42 | ".+############################################################.@", 43 | ".+############################################################.@", 44 | ".+############################################################.@", 45 | ".+############################################################.@", 46 | ".+############################################################.@", 47 | ".+############################################################.@", 48 | ".+############################################################.@", 49 | ".+############################################################.@", 50 | ".+############################################################.@", 51 | ".+############################################################.@", 52 | ".+############################################################.@", 53 | ".+############################################################.@", 54 | ".+############################################################.@", 55 | ".+############################################...............#.@", 56 | ".+############################################.%%%%%%%%%%%%%+#.@", 57 | ".+############################################.%%%&**&%%%%%%+#.@", 58 | ".+############################################.%%&=&**&%%%%%+#.@", 59 | ".+############################################.%%=%%***$%%%%+#.@", 60 | ".+############################################.%%$%%$***%&%%+#.@", 61 | ".+############################################.%%-%%%&**&*%%+#.@", 62 | ".+############################################.%%%%&******%%+#.@", 63 | ".+############################################.%%%%%&*****%%+#.@", 64 | ".+############################################.%%%%%%&****%%+#.@", 65 | ".+############################################.%%%%%%%&***%%+#.@", 66 | ".+############################################.%%%%%%%%&**%%+#.@", 67 | ".+############################################.%%%%%%%%%&*%%+#.@", 68 | ".+############################################.%%%%%%%%%%%%%+#.@", 69 | ".+############################################+++++++++++++++#.@", 70 | ".+############################################################.@", 71 | "...............................................................@", 72 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 73 | " ", 74 | " ", 75 | " ", 76 | " ", 77 | " ", 78 | " "}; 79 | -------------------------------------------------------------------------------- /icons/folder-mail.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_mail_xpm[] = { 3 | "64 64 11 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #B9A29B", 12 | "* c #FEF9ED", 13 | "= c #685854", 14 | "- c #FFEDC8", 15 | " ", 16 | " ", 17 | " ", 18 | " ", 19 | " ", 20 | " ", 21 | " ........................ ", 22 | " .+++++++++++++++++++++++.@ ", 23 | " .+########################.@ ", 24 | " .+##########################.@ ", 25 | " .+############################.@ ", 26 | " .+##############################.@ ", 27 | " .+################################.@ ", 28 | " .+##################################.@ ", 29 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 30 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 31 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 32 | ".+##+..............................+##########################.@", 33 | ".+###++++++++++++++++++++++++++++++###########################.@", 34 | ".+############################################################.@", 35 | ".+############################################################.@", 36 | ".+############################################################.@", 37 | ".+############################################################.@", 38 | ".+############################################################.@", 39 | ".+############################################################.@", 40 | ".+############################################################.@", 41 | ".+############################################################.@", 42 | ".+############################################################.@", 43 | ".+############################################################.@", 44 | ".+############################################################.@", 45 | ".+############################################################.@", 46 | ".+###########################&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#.@", 47 | ".+###########################&*****************************&.#.@", 48 | ".+###########################&*=*------------------------*=&.#.@", 49 | ".+###########################&*&=*----------------------*=&&.#.@", 50 | ".+###########################&*-&=*--------------------*=&-&.#.@", 51 | ".+###########################&*--&=*------------------*=&--&.#.@", 52 | ".+###########################&*---&=*----------------*=&---&.#.@", 53 | ".+###########################&*----&=*--------------*=&----&.#.@", 54 | ".+###########################&*-----&=*------------*=&-----&.#.@", 55 | ".+###########################&*------&=*----------*=&------&.#.@", 56 | ".+###########################&*-------&=*--------*=&-------&.#.@", 57 | ".+###########################&*--------&=*------*=&--------&.#.@", 58 | ".+###########################&*--------&&=*----*=&&--------&.#.@", 59 | ".+###########################&*-------&=*&=****=&*=&-------&.#.@", 60 | ".+###########################&*------&=*--&====&--*=&------&.#.@", 61 | ".+###########################&*-----&=*----&&&&----*=&-----&.#.@", 62 | ".+###########################&*----&=*--------------*=&----&.#.@", 63 | ".+###########################&*---&=*----------------*=&---&.#.@", 64 | ".+###########################&*--&=*------------------*=&--&.#.@", 65 | ".+###########################&*-&=*--------------------*=&-&.#.@", 66 | ".+###########################&*&=*----------------------*=&&.#.@", 67 | ".+###########################&*=*------------------------*=&.#.@", 68 | ".+###########################&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.#.@", 69 | ".+###########################................................#.@", 70 | ".+############################################################.@", 71 | "...............................................................@", 72 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 73 | " ", 74 | " ", 75 | " ", 76 | " ", 77 | " ", 78 | " "}; 79 | -------------------------------------------------------------------------------- /icons/folder-music.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_music_xpm[] = { 3 | "64 64 11 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #AD7FA8", 12 | "* c #75507B", 13 | "= c #5C3566", 14 | "- c #D3D7CF", 15 | " ", 16 | " ", 17 | " ", 18 | " ", 19 | " ", 20 | " ", 21 | " ........................ ", 22 | " .+++++++++++++++++++++++.@ ", 23 | " .+########################.@ ", 24 | " .+##########################.@ ", 25 | " .+############################.@ ", 26 | " .+##############################.@ ", 27 | " .+################################.@ ", 28 | " .+##################################.@ ", 29 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 30 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 31 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 32 | ".+##+..............................+##########################.@", 33 | ".+###++++++++++++++++++++++++++++++###########################.@", 34 | ".+############################################################.@", 35 | ".+############################################################.@", 36 | ".+############################################################.@", 37 | ".+############################################################.@", 38 | ".+##################################################.&*======#.@", 39 | ".+############################################.&*======&&&&=.#.@", 40 | ".+######################################.&*======&&&&&&****=.#.@", 41 | ".+###################################======&&&&&&**********=.#.@", 42 | ".+###################################=&&&&&****************=.#.@", 43 | ".+###################################=&%%-*****************=.#.@", 44 | ".+###################################=&-*************=====*=.#.@", 45 | ".+###################################=&**********====*&..=&=.#.@", 46 | ".+###################################=&******====*&..####=&=.#.@", 47 | ".+###################################=&*=====*&..########=&=.#.@", 48 | ".+###################################=&=.....############=&=.#.@", 49 | ".+###################################=&=.################=&=.#.@", 50 | ".+###################################=&=.################=&=.#.@", 51 | ".+###################################=&=.################=&=.#.@", 52 | ".+###################################=&=.################=&=.#.@", 53 | ".+###################################=&=.################=&=.#.@", 54 | ".+###################################=&=.################=&=.#.@", 55 | ".+###################################=&=.################=&=.#.@", 56 | ".+###################################=&=.################=&=.#.@", 57 | ".+###################################=&=.################=&=.#.@", 58 | ".+###################################=&=.###########======&=.#.@", 59 | ".+###################################=&=.##########=&&&&&&*=.#.@", 60 | ".+###################################=&=.#########=&%-*****=.#.@", 61 | ".+##############################======&=.########=&-%******=.#.@", 62 | ".+#############################=&&&&&&*=.########=&********=.#.@", 63 | ".+############################=&%-*****=.########=&********=.#.@", 64 | ".+###########################=&-%******=.#########=&******=.##.@", 65 | ".+###########################=&********=.##########=======.###.@", 66 | ".+###########################=&********=.###########......####.@", 67 | ".+############################=&******=.######################.@", 68 | ".+#############################=======.#######################.@", 69 | ".+##############################......########################.@", 70 | ".+############################################################.@", 71 | "...............................................................@", 72 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 73 | " ", 74 | " ", 75 | " ", 76 | " ", 77 | " ", 78 | " "}; 79 | -------------------------------------------------------------------------------- /icons/folder-book.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_book_xpm[] = { 3 | "64 64 12 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #D3D7CF", 12 | "* c #A40000", 13 | "= c #2E3436", 14 | "- c #EF2929", 15 | "; c #CC0000", 16 | " ", 17 | " ", 18 | " ", 19 | " ", 20 | " ", 21 | " ", 22 | " ........................ ", 23 | " .+++++++++++++++++++++++.@ ", 24 | " .+########################.@ ", 25 | " .+##########################.@ ", 26 | " .+############################.@ ", 27 | " .+##############################.@ ", 28 | " .+################################.@ ", 29 | " .+##################################.@ ", 30 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 31 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 32 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 33 | ".+##+..............................+##########################.@", 34 | ".+###++++++++++++++++++++++++++++++###########################.@", 35 | ".+############################################################.@", 36 | ".+############################################################.@", 37 | ".+############################################################.@", 38 | ".+############################################################.@", 39 | ".+############################################################.@", 40 | ".+############################################################.@", 41 | ".+############################################################.@", 42 | ".+############################################################.@", 43 | ".+##################################$$$$$#####################.@", 44 | ".+##############################$$$$$%%%%$$#####$$$$$$$$$$####.@", 45 | ".+##############################$%%%$%&&&%%$#$$$%%%%%$%%%$####.@", 46 | ".+#############################*$%&&$%===&&%$%%%&&&&&$%&&$*###.@", 47 | ".+############################*-$%==$%&&&==&$%&&=====$%=&$;*##.@", 48 | ".+###########################*-;$%&&$%==&&&=$%==&&&&&$%&&$;*@#.@", 49 | ".+###########################*-;$%==$%&&&=&&$%&&===&=$%=&$;*@#.@", 50 | ".+###########################*-;$%&&$%===&&=$%&=&&&&&$%&&$;*@#.@", 51 | ".+###########################*-;$%=&$%&&&==&$%&&=====$%=&$;*@#.@", 52 | ".+###########################*-;$%&&$%=&=&&=$%==&&&&&$%&&$;*@#.@", 53 | ".+###########################*-;$%==$%&&&==&$%&&==&==$%=&$;*@#.@", 54 | ".+###########################*-;$%&&$%==&&&=$%==&&&&&$%&&$;*@#.@", 55 | ".+###########################*-;$%==$%&&&==&$%&&&====$%=&$;*@#.@", 56 | ".+###########################*-;$%&&$%===&&=$%=&&&&&&$%&&$;*@#.@", 57 | ".+###########################*-;$%==$%&&&=&&$%&&=====$%=&$;*@#.@", 58 | ".+###########################*-;$%&&$%===&&=$%==&&&&&$%&&$;*@#.@", 59 | ".+###########################*-;$%==$%&&&&=&$%&&=====$%=&$;*@#.@", 60 | ".+###########################*-;$%&&$%==&&&=$%==&&&&&$%&&$;*@#.@", 61 | ".+###########################*-;$%==$%&&&==&$%&&====&$%=&$;*@#.@", 62 | ".+###########################*-;$%&&$%===&&=$%==&&&&&$%&&$;*@#.@", 63 | ".+###########################*-;$%%%$$$$&&=&$%&&$$$$$$$$$$;*@#.@", 64 | ".+###########################*-;;;;;;;;;;;&&$%&&;;;;;;;;;;;*@#.@", 65 | ".+############################@***********;&$%&;***********@##.@", 66 | ".+#############################@@@@@@@@@@@*;;;;*@@@@@@@@@@@###.@", 67 | ".+########################################@****@##############.@", 68 | ".+#########################################@@@@###############.@", 69 | ".+############################################################.@", 70 | ".+############################################################.@", 71 | ".+############################################################.@", 72 | "...............................................................@", 73 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 74 | " ", 75 | " ", 76 | " ", 77 | " ", 78 | " ", 79 | " "}; 80 | -------------------------------------------------------------------------------- /icons/folder-apps.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_apps_xpm[] = { 3 | "64 64 13 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #204A87", 12 | "* c #729FCF", 13 | "= c #EF2929", 14 | "- c #3465A4", 15 | "; c #CC0000", 16 | "> c #A40000", 17 | " ", 18 | " ", 19 | " ", 20 | " ", 21 | " ", 22 | " ", 23 | " ........................ ", 24 | " .+++++++++++++++++++++++.@ ", 25 | " .+########################.@ ", 26 | " .+##########################.@ ", 27 | " .+############################.@ ", 28 | " .+##############################.@ ", 29 | " .+################################.@ ", 30 | " .+##################################.@ ", 31 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 32 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 33 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 34 | ".+##+..............................+##########################.@", 35 | ".+###++++++++++++++++++++++++++++++###########################.@", 36 | ".+############################################################.@", 37 | ".+############################################################.@", 38 | ".+############################################################.@", 39 | ".+############################################################.@", 40 | ".+##########################################.@################.@", 41 | ".+#########################################.++@###############.@", 42 | ".+########################################.++++@##############.@", 43 | ".+#######################################.++++++@#############.@", 44 | ".+######################################.++++++++@############.@", 45 | ".+#####################################.++++++++++@###########.@", 46 | ".+####################################.++++++++++++@##########.@", 47 | ".+###################################.%++++++++++++#@#########.@", 48 | ".+###################################.+%++++++++++#.@#########.@", 49 | ".+###################################.++%++++++++#..@#########.@", 50 | ".+###################################.+++%++++++#...@#########.@", 51 | ".+###################################.++++%++++#....@#########.@", 52 | ".+##################################&.+++++%++#.....@@########.@", 53 | ".+#################################&**.+++++%#.....@==@#######.@", 54 | ".+################################&****.+++++.....@====@######.@", 55 | ".+###############################&******.++++....@======@#####.@", 56 | ".+##############################&********.+++...@========@####.@", 57 | ".+#############################&**********.++..@==========@###.@", 58 | ".+############################&************.+.@============@##.@", 59 | ".+###########################&%************-.@%============;@#.@", 60 | ".+###########################&*%**********-&@>=%==========;>@#.@", 61 | ".+###########################&**%********-&&@>==%========;>>@#.@", 62 | ".+###########################&***%******-&&&@>===%======;>>>@#.@", 63 | ".+###########################&****%****-&&&&@>====%====;>>>>@#.@", 64 | ".+###########################&*****%**-&&&&&@>=====%==;>>>>>@#.@", 65 | ".+############################&*****%-&&&&&@##>=====%;>>>>>@##.@", 66 | ".+#############################&*****&&&&&@####>=====>>>>>@###.@", 67 | ".+##############################&****&&&&@######>====>>>>@####.@", 68 | ".+###############################&***&&&@########>===>>>@#####.@", 69 | ".+################################&**&&@##########>==>>@######.@", 70 | ".+#################################&*&@############>=>@#######.@", 71 | ".+##################################&@##############>@########.@", 72 | ".+############################################################.@", 73 | "...............................................................@", 74 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 75 | " ", 76 | " ", 77 | " ", 78 | " ", 79 | " ", 80 | " "}; 81 | -------------------------------------------------------------------------------- /icons/folder-trash.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_trash_xpm[] = { 3 | "64 64 13 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #4E9A06", 12 | "* c #888A85", 13 | "= c #555753", 14 | "- c #2E3436", 15 | "; c #8AE234", 16 | "> c #73D216", 17 | " ", 18 | " ", 19 | " ", 20 | " ", 21 | " ", 22 | " ", 23 | " ........................ ", 24 | " .+++++++++++++++++++++++.@ ", 25 | " .+########################.@ ", 26 | " .+##########################.@ ", 27 | " .+############################.@ ", 28 | " .+##############################.@ ", 29 | " .+################################.@ ", 30 | " .+##################################.@ ", 31 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 32 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 33 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 34 | ".+##+..............................+##########################.@", 35 | ".+###++++++++++++++++++++++++++++++###########################.@", 36 | ".+############################################################.@", 37 | ".+############################################################.@", 38 | ".+############################################################.@", 39 | ".+############################################################.@", 40 | ".+############################################################.@", 41 | ".+############################################################.@", 42 | ".+############################################################.@", 43 | ".+############################################################.@", 44 | ".+###############################&&&&&&&&&&&&&&&&&&&&&&&&&&###.@", 45 | ".+##############################&**************************&##.@", 46 | ".+#############################&*===========================@#.@", 47 | ".+#############################&*=-------------------------=@#.@", 48 | ".+#############################&*=-------------------------=@#.@", 49 | ".+#############################&*=-------------------------=@#.@", 50 | ".+#############################&==************************=@@#.@", 51 | ".+#############################&;==========================&@#.@", 52 | ".+#############################&;;;;;;;;;;;;;;;;;;;;;;;;;;;&@#.@", 53 | ".+#############################&;>>>>>>>>>>;;;;;>>>>>>>>>>>&@#.@", 54 | ".+##############################&;>>>>;;;;;&&&&&;;>>>>>>>>&@##.@", 55 | ".+##############################&;>>>;&&&&&;;&&&&&;>>;>>>>&@##.@", 56 | ".+##############################&;>>>>;;&&&;>;;&&&&;;&;>>>&@##.@", 57 | ".+##############################&;>>>>;&&&&;>>>;&&&&&&;>>>&@##.@", 58 | ".+###############################&;>>>;&&&&;>>>>;&&&&&;>>&@###.@", 59 | ".+###############################&;>>;&&&;&;>>>>>;&&&&;>>&@###.@", 60 | ".+###############################&;>>;&&;>;>>>>>;&&&&&;>>&@###.@", 61 | ".+###############################&;>>;&&;>>>>>>>>;;;;;>>>&@###.@", 62 | ".+################################&;>;&&;>>>>>;>>>>;&;>>&@####.@", 63 | ".+################################&;>;&&;>>>>;&;>>;&&;>>&@####.@", 64 | ".+################################&;>>;&&;>>;&&;;;&&;>>>&@####.@", 65 | ".+################################&;>>;&&;>;&&&&&&&&;>>>&@####.@", 66 | ".+#################################&;>>;&;;&&&&&&&&;>>>&@#####.@", 67 | ".+#################################&;>>>;&;;&&&&&&;>>>>&@#####.@", 68 | ".+#################################&;>>>>;>>;&&&;;>>>>>&@#####.@", 69 | ".+#################################&;>>>>>>>>;&;>>>>>>>&@#####.@", 70 | ".+##################################&&&&&&&&&&&&&&&&&&&@######.@", 71 | ".+###################################@@@@@@@@@@@@@@@@@@#######.@", 72 | ".+############################################################.@", 73 | "...............................................................@", 74 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 75 | " ", 76 | " ", 77 | " ", 78 | " ", 79 | " ", 80 | " "}; 81 | -------------------------------------------------------------------------------- /icons/file-app.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * file_app_xpm[] = { 3 | "64 64 14 1", 4 | " c None", 5 | ". c #BABDB6", 6 | "+ c #EEEEEC", 7 | "@ c #D3D7CF", 8 | "# c #000000", 9 | "$ c #C4A000", 10 | "% c #FCE94F", 11 | "& c #EDD400", 12 | "* c #204A87", 13 | "= c #729FCF", 14 | "- c #EF2929", 15 | "; c #3465A4", 16 | "> c #CC0000", 17 | ", c #A40000", 18 | " ................................ ", 19 | " .++++++++++++++++++++++++++++++.. ", 20 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+. ", 21 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.++. ", 22 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@+. ", 23 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@+. ", 24 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@+. ", 25 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@.@+. ", 26 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@+. ", 27 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@.@.@+. ", 28 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@+. ", 29 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@.@.@+. ", 30 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@.@+. ", 31 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@@@.@.@+. ", 32 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@.@.@.@.@+. ", 33 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@................ ", 34 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################# ", 35 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 36 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 37 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 38 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 39 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 40 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 41 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 42 | " .+@@@@@@@@@@@@@@@@@@@@@$#@@@@@@@@@@@@@@@@@@@@@.# ", 43 | " .+@@@@@@@@@@@@@@@@@@@@$%%#@@@@@@@@@@@@@@@@@@@@.# ", 44 | " .+@@@@@@@@@@@@@@@@@@@$%%%%#@@@@@@@@@@@@@@@@@@@.# ", 45 | " .+@@@@@@@@@@@@@@@@@@$%%%%%%#@@@@@@@@@@@@@@@@@@.# ", 46 | " .+@@@@@@@@@@@@@@@@@$%%%%%%%%#@@@@@@@@@@@@@@@@@.# ", 47 | " .+@@@@@@@@@@@@@@@@$%%%%%%%%%%#@@@@@@@@@@@@@@@@.# ", 48 | " .+@@@@@@@@@@@@@@@$%%%%%%%%%%%%#@@@@@@@@@@@@@@@.# ", 49 | " .+@@@@@@@@@@@@@@$+%%%%%%%%%%%%&#@@@@@@@@@@@@@@.# ", 50 | " .+@@@@@@@@@@@@@@$%+%%%%%%%%%%&$#@@@@@@@@@@@@@@.# ", 51 | " .+@@@@@@@@@@@@@@$%%+%%%%%%%%&$$#@@@@@@@@@@@@@@.# ", 52 | " .+@@@@@@@@@@@@@@$%%%+%%%%%%&$$$#@@@@@@@@@@@@@@.# ", 53 | " .+@@@@@@@@@@@@@@$%%%%+%%%%&$$$$#@@@@@@@@@@@@@@.# ", 54 | " .+@@@@@@@@@@@@@*$%%%%%+%%&$$$$$##@@@@@@@@@@@@@.# ", 55 | " .+@@@@@@@@@@@@*==$%%%%%+&$$$$$#--#@@@@@@@@@@@@.# ", 56 | " .+@@@@@@@@@@@*====$%%%%%$$$$$#----#@@@@@@@@@@@.# ", 57 | " .+@@@@@@@@@@*======$%%%%$$$$#------#@@@@@@@@@@.# ", 58 | " .+@@@@@@@@@*========$%%%$$$#--------#@@@@@@@@@.# ", 59 | " .+@@@@@@@@*==========$%%$$#----------#@@@@@@@@.# ", 60 | " .+@@@@@@@*============$%$#------------#@@@@@@@.# ", 61 | " .+@@@@@@*+============;$#+------------>#@@@@@@.# ", 62 | " .+@@@@@@*=+==========;*#,-+---------->,#@@@@@@.# ", 63 | " .+@@@@@@*==+========;**#,--+-------->,,#@@@@@@.# ", 64 | " .+@@@@@@*===+======;***#,---+------>,,,#@@@@@@.# ", 65 | " .+@@@@@@*====+====;****#,----+---->,,,,#@@@@@@.# ", 66 | " .+@@@@@@*=====+==;*****#,-----+-->,,,,,#@@@@@@.# ", 67 | " .+@@@@@@@*=====+;*****#@@,-----+>,,,,,#@@@@@@@.# ", 68 | " .+@@@@@@@@*=====*****#@@@@,-----,,,,,#@@@@@@@@.# ", 69 | " .+@@@@@@@@@*====****#@@@@@@,----,,,,#@@@@@@@@@.# ", 70 | " .+@@@@@@@@@@*===***#@@@@@@@@,---,,,#@@@@@@@@@@.# ", 71 | " .+@@@@@@@@@@@*==**#@@@@@@@@@@,--,,#@@@@@@@@@@@.# ", 72 | " .+@@@@@@@@@@@@*=*#@@@@@@@@@@@@,-,#@@@@@@@@@@@@.# ", 73 | " .+@@@@@@@@@@@@@*#@@@@@@@@@@@@@@,#@@@@@@@@@@@@@.# ", 74 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 75 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 76 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 77 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 78 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 79 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.# ", 80 | " ...............................................# ", 81 | " ################################################ "}; 82 | -------------------------------------------------------------------------------- /icons/file-core.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * file_core_xpm[] = { 3 | "64 64 14 1", 4 | " c None", 5 | ". c #BABDB6", 6 | "+ c #EEEEEC", 7 | "@ c #D3D7CF", 8 | "# c #B2B5AE", 9 | "$ c #191919", 10 | "% c #777974", 11 | "& c #F57900", 12 | "* c #CC0000", 13 | "= c #EDD400", 14 | "- c #000000", 15 | "; c #2E3436", 16 | "> c #888A85", 17 | ", c #555753", 18 | " ................................ ", 19 | " .++++++++++++++++++++++++++++++.. ", 20 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+. ", 21 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.++. ", 22 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@+. ", 23 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@+. ", 24 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@+. ", 25 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+.@.@+. ", 26 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@+. ", 27 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@.@.@+. ", 28 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@.@.@.@+. ", 29 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+@@@@.@.@+. ", 30 | " .+@@@@@@@@@#$%@@@@@@@@@@@@@@@@@.+@.@.@.@.@+. ", 31 | " .+@@@@@@@@@$&$$@@@@@@@@@@@@@@@@.+@@@@@@.@.@+. ", 32 | " .+@@@@@@@@$*&&*$$@@@@@@@@@@@@@@.+@@@.@.@.@.@+. ", 33 | " .+@@@@@@@$*&&&&**$@@@@@@@@@@@@@................ ", 34 | " .+@@@@@@@$*&==&&&*$$@@@@@@@@@@@----------------- ", 35 | " .+@@@@@@@$*&====&&**$@@@@@@@@@@@@@@@@@@@@@@@@@.- ", 36 | " .+@@@@@@$*&&=====&*$@@@@@@@@@@@@@@@@@@@@@@@@@@.- ", 37 | " .+@@@@@@$*&====&&*$@@@@@@@@@@@@@@@@@@@@@@@@@@@.- ", 38 | " .+@@@@@@$*&===&&*$@@@@@@@@@@@@@@@@@@@@@@@@@@@@.- ", 39 | " .+@@@@@@$*&&==&*$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.- ", 40 | " .+@@@@@@@$*&&&&&*$@@@@@@@@@@@@@@@@@@@@@@@@@@@@.- ", 41 | " .+@@@@@@;-$**&&&**$@@@@@@@@@@@@@@@@@@@@@@@@@@@.- ", 42 | " .+@@@@@;->@$$***$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@.- ", 43 | " .+@@@@@;->@@@$$$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.- ", 44 | " .+@@@@;->@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.- ", 45 | " .+@@@@;->@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.- ", 46 | " .+@@@@@;->@@@@@@@@@@;;;;;;;;@@@@@@@@@@@@@@@@@@.- ", 47 | " .+@@@@@;->@@@@@@@;;;>>>>>>>>;;;@@@@@@@@@@@@@@@.- ", 48 | " .+@@@@@@;->@@@@;;>>>>>>>>,>,>>>;;@@@@@@@@@@@@@.- ", 49 | " .+@@@@@@;->@@@;+.>>>>>>>,>,>,,,>>;@@@@@@@@@@@@.- ", 50 | " .+@@@@@@@;->@;++.>>>>>>>>,>,,,,,,>;@@@@@@@@@@@.- ", 51 | " .+@@@@@@@@;->+++.>>>>>>>,>,>,,,,,,>-@@@@@@@@@@.- ", 52 | " .+@@@@@@@@@;->+.>>>>>>>,>,>,,,,,,;,;-@@@@@@@@@.- ", 53 | " .+@@@@@@@@;+;-.>>>>>>>,>,>,,,,,,,,;,;-@@@@@@@@.- ", 54 | " .+@@@@@@@@;++.>>>>>>>,>,>,>,,,,,,;,;;-@@@@@@@@.- ", 55 | " .+@@@@@@@;++.>>>>>>>>>,>,>,,,,,,,,;,;;-@@@@@@@.- ", 56 | " .+@@@@@@@;..>>>>>>>>>,>,>,>,,,,,,;,;;;-@@@@@@@.- ", 57 | " .+@@@@@@@;>>>>>>>>>>,>,>,>,,,,,,;,;,;;-@@@@@@@.- ", 58 | " .+@@@@@@;>>>>>>>>>>,>,>,>,,,,,,,,;,;;;;-@@@@@@.- ", 59 | " .+@@@@@@;>>>>>>>,>,>,>,>,>,,,,,,;,;;;;;-@@@@@@.- ", 60 | " .+@@@@@@;>>>>>>,>,>,>,>,>,,,,,,;,;,;;;;-@@@@@@.- ", 61 | " .+@@@@@@;>>>>>,>,>,>,>,>,,,,,,,,;,;;;;;-@@@@@@.- ", 62 | " .+@@@@@@;>>,>,>,>,>,>,>,,,,,,,,;,;,;;;;-@@@@@@.- ", 63 | " .+@@@@@@;>,>,>,>,>,>,>,,,,,,,,;,;,;;;;;-@@@@@@.- ", 64 | " .+@@@@@@;>>,>,>,>,>,,,,,,,,,,;,;,;,;;;;-@@@@@@.- ", 65 | " .+@@@@@@;>,>,>,,,,,,,,,,,,,,;,;,;,;;;;;-@@@@@@.- ", 66 | " .+@@@@@@@;>,,,,,,,,,,,,,,,,;,;,;,;;;;;-@@@@@@@.- ", 67 | " .+@@@@@@@;>,,,,,,,,,,,,,,,;,;,;,;,;;;;-@@@@@@@.- ", 68 | " .+@@@@@@@;>,,,,,,,,,,,,,,;,;,;,;,;;;;;-@@@@@@@.- ", 69 | " .+@@@@@@@@;>,,,,,,,,,,;,;,;,;,;,;;;;;-@@@@@@@@.- ", 70 | " .+@@@@@@@@;>,,,,,,,;,;,;,;,;,;,;;;;;;-@@@@@@@@.- ", 71 | " .+@@@@@@@@@;>,;,;,;,;,;,;,;,;,;;;;;;-@@@@@@@@@.- ", 72 | " .+@@@@@@@@@@;>,;,;,;,;,;,;,;;;;;;;;-@@@@@@@@@@.- ", 73 | " .+@@@@@@@@@@@-;,;,;,;;;;;;;;;;;;;;-@@@@@@@@@@@.- ", 74 | " .+@@@@@@@@@@@@-;;;;;;;;;;;;;;;;;;-@@@@@@@@@@@@.- ", 75 | " .+@@@@@@@@@@@@@--;;;;;;;;;;;;;;--@@@@@@@@@@@@@.- ", 76 | " .+@@@@@@@@@@@@@@@---;;;;;;;;---@@@@@@@@@@@@@@@.- ", 77 | " .+@@@@@@@@@@@@@@@@@@--------@@@@@@@@@@@@@@@@@@.- ", 78 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.- ", 79 | " .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.- ", 80 | " ...............................................- ", 81 | " ------------------------------------------------ "}; 82 | -------------------------------------------------------------------------------- /icons/folder-game.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_game_xpm[] = { 3 | "64 64 14 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #D3D7CF", 12 | "* c #2E3436", 13 | "= c #A40000", 14 | "- c #555753", 15 | "; c #CC0000", 16 | "> c #888A85", 17 | ", c #EF2929", 18 | " ", 19 | " ", 20 | " ", 21 | " ", 22 | " ", 23 | " ", 24 | " ........................ ", 25 | " .+++++++++++++++++++++++.@ ", 26 | " .+########################.@ ", 27 | " .+##########################.@ ", 28 | " .+############################.@ ", 29 | " .+##############################.@ ", 30 | " .+################################.@ ", 31 | " .+##################################.@ ", 32 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 33 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 34 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 35 | ".+##+..............................+##########################.@", 36 | ".+###++++++++++++++++++++++++++++++###########################.@", 37 | ".+############################################################.@", 38 | ".+############################################################.@", 39 | ".+############################################################.@", 40 | ".+############################################################.@", 41 | ".+############################################################.@", 42 | ".+############################################################.@", 43 | ".+############################################################.@", 44 | ".+#############################$$$$##################$$$$#####.@", 45 | ".+############################$%%%%$################$%%%%$####.@", 46 | ".+###########################$%&&&&%$$############$$%&&&&%$###.@", 47 | ".+###########################$%&&&&&%%$##########$%%&&&&&%$###.@", 48 | ".+##########################$%&&&&&&&&%$$$$$$$$$$%&&&&&&&&$@##.@", 49 | ".+##########################$%&&&****&&%%%%%%%%%%&&====&&&$@##.@", 50 | ".+##########################$%&&*----*&&&&&&&&&&&&=;;;;=&&$@##.@", 51 | ".+##########################$%&*-->>--*&&&&&&&&&&=;,;;,;=&$@##.@", 52 | ".+##########################$%*--->>---*&&&&&&&&=;,,,,,,;=$@##.@", 53 | ".+##########################$%*->>>>>>-*&&&&&&&&=;;,,,,;;=$@##.@", 54 | ".+##########################$%*->>>>>>-*&&&&&&&&=;;,,,,;;=$@##.@", 55 | ".+##########################$%*--->>---*&&&&&&&&=;,,,,,,;=$@##.@", 56 | ".+##########################$%&*-->>--*&&*&&&&*&&=;,;;,;=&$@##.@", 57 | ".+##########################$%&&*----*&&*-*&&*>*&&=;;;;=&&$@##.@", 58 | ".+##########################$%&&&****&&&&*%%%%*&&&&====&&&$@##.@", 59 | ".+##########################$%&&&&&&&&&&&$$$$$%&&&&&&&&&&&$@##.@", 60 | ".+##########################$%&&&&&&&&&&$@####$%&&&&&&&&&&$@##.@", 61 | ".+##########################$%&&&&&&&&&$@######$%&&&&&&&&&$@##.@", 62 | ".+##########################$%&&&&&&&&$@########$%&&&&&&&&$@##.@", 63 | ".+##########################$%&&&&&&&$@##########$%&&&&&&&$@##.@", 64 | ".+##########################$%&&&&&&&$@##########$%&&&&&&&$@##.@", 65 | ".+##########################$%&&&&&&&$@##########$%&&&&&&&$@##.@", 66 | ".+##########################$%&&&&&&&$@##########$%&&&&&&&$@##.@", 67 | ".+###########################$%&&&&&$@############$%&&&&&$@###.@", 68 | ".+############################$$$$$$@##############$$$$$$@####.@", 69 | ".+#############################@@@@@################@@@@@#####.@", 70 | ".+############################################################.@", 71 | ".+############################################################.@", 72 | ".+############################################################.@", 73 | ".+############################################################.@", 74 | "...............................................................@", 75 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 76 | " ", 77 | " ", 78 | " ", 79 | " ", 80 | " ", 81 | " "}; 82 | -------------------------------------------------------------------------------- /icons/folder-home.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_home_xpm[] = { 3 | "64 64 17 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #A40000", 12 | "* c #EF2929", 13 | "= c #CC0000", 14 | "- c #D3D7CF", 15 | "; c #2E3436", 16 | "> c #888A85", 17 | ", c #555753", 18 | "' c #4E9A06", 19 | ") c #8AE234", 20 | "! c #73D216", 21 | " ", 22 | " ", 23 | " ", 24 | " ", 25 | " ", 26 | " ", 27 | " ........................ ", 28 | " .+++++++++++++++++++++++.@ ", 29 | " .+########################.@ ", 30 | " .+##########################.@ ", 31 | " .+############################.@ ", 32 | " .+##############################.@ ", 33 | " .+################################.@ ", 34 | " .+##################################.@ ", 35 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 36 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 37 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 38 | ".+##+..............................+##########################.@", 39 | ".+###++++++++++++++++++++++++++++++###########################.@", 40 | ".+############################################################.@", 41 | ".+############################################################.@", 42 | ".+############################################################.@", 43 | ".+############################################################.@", 44 | ".+##########################################&&################.@", 45 | ".+#########################################&**@###############.@", 46 | ".+########################################&*==&@##############.@", 47 | ".+#######################################&*====&@#############.@", 48 | ".+######################################&*======&@############.@", 49 | ".+#####################################&*========&@###########.@", 50 | ".+####################################&*====&&*===&@##########.@", 51 | ".+###################################&*====&%%&*===&@#########.@", 52 | ".+##################################&*====&%---&*===&@########.@", 53 | ".+#################################&*====&%-----&*===&@#######.@", 54 | ".+################################&*====&%-------&*===&@######.@", 55 | ".+###############################&*====&%---------&*===&@#####.@", 56 | ".+##############################&*====&%-----------&*===&@####.@", 57 | ".+#############################&*====&%-------------&*===&@###.@", 58 | ".+############################&*====&%---------------&*===&@##.@", 59 | ".+###########################&&&&&&&%-----------------&&&&&&@#.@", 60 | ".+###############################$%%-;;;;;;;;%---------$@#####.@", 61 | ".+###############################$%--;>>>>>>;%---------$@#####.@", 62 | ".+###############################$%--;>,,,,,;%-;;;;;;%-$@#####.@", 63 | ".+###############################$%--;>,,,,,;%-;>>>>;%-$@#####.@", 64 | ".+###############################$%--;>,,,,,;%-;>,,,;%-$@#####.@", 65 | ".+###############################$%--;>,,,,,;%-;>,,,;%-$@#####.@", 66 | ".+###############################$%--;>,,,,,;%-;>,,,;%-$@#####.@", 67 | ".+###############################$%--;>,,,,,;%-;;;;;;%-$@#####.@", 68 | ".+##############################'$%--;>,,,,,;%-%%%%%%%-$@@####.@", 69 | ".+#############################')$%--;>,,,,,;%---------$@'@###.@", 70 | ".+############################')!$$$$;>,,,,,;$$$$$$$$$$$@!'@##.@", 71 | ".+###########################')!!@@@@@@@@@@@@@@@@@@@@@@@@!!'@#.@", 72 | ".+###########################')!!!!!!!!!!!!!!!!!!!!!!!!!!!!'@#.@", 73 | ".+###########################')!!!!!!!!!!!!!!!!!!!!!!!!!!!!'@#.@", 74 | ".+###########################'''''''''''''''''''''''''''''''@#.@", 75 | ".+###########################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#.@", 76 | ".+############################################################.@", 77 | "...............................................................@", 78 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 79 | " ", 80 | " ", 81 | " ", 82 | " ", 83 | " ", 84 | " "}; 85 | -------------------------------------------------------------------------------- /icons/folder-meme.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * folder_meme_xpm[] = { 3 | "64 64 17 1", 4 | " c None", 5 | ". c #C4A000", 6 | "+ c #FCE94F", 7 | "@ c #000000", 8 | "# c #EDD400", 9 | "$ c #BABDB6", 10 | "% c #EEEEEC", 11 | "& c #4E9A06", 12 | "* c #8AE234", 13 | "= c #73D216", 14 | "- c #D3D7CF", 15 | "; c #204A87", 16 | "> c #A40000", 17 | ", c #729FCF", 18 | "' c #EF2929", 19 | ") c #3465A4", 20 | "! c #CC0000", 21 | " ", 22 | " ", 23 | " ", 24 | " ", 25 | " ", 26 | " ", 27 | " ........................ ", 28 | " .+++++++++++++++++++++++.@ ", 29 | " .+########################.@ ", 30 | " .+##########################.@ ", 31 | " .+############################.@ ", 32 | " .+##############################.@ ", 33 | " .+################################.@ ", 34 | " .+##################################.@ ", 35 | ".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$......................... ", 36 | ".++.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.++++++++++++++++++++++++.@ ", 37 | ".+#+.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.+#########################.@", 38 | ".+##+..............................+##########################.@", 39 | ".+###++++++++++++++++++++++++++++++###########################.@", 40 | ".+############################################################.@", 41 | ".+############################################################.@", 42 | ".+############################################################.@", 43 | ".+############################################################.@", 44 | ".+############################################################.@", 45 | ".+############################################################.@", 46 | ".+#################################&&&&&&&&########&&&&&&&&###.@", 47 | ".+#################################&*****&@########&*****&@###.@", 48 | ".+#################################&*====&@########&*====&@###.@", 49 | ".+#################################&*====&@########&*====&@###.@", 50 | ".+#############################&&&&&*====&&&&&&&&&&&*====&@###.@", 51 | ".+#############################&****======**********=====&@###.@", 52 | ".+#############################&*========================&@###.@", 53 | ".+#############################&*========================&@###.@", 54 | ".+#############################&*======$$$$@@@@====$$$$@@@@###.@", 55 | ".+#############################&*======$---@@@@====$---@@@@###.@", 56 | ".+#############################&*======$-%%@@@@====$-%%@@@@###.@", 57 | ".+#############################&*======$$$$@@@@====$$$$@@@@###.@", 58 | ".+#############################&*========================&@###.@", 59 | ".+#############################&*========================&@###.@", 60 | ".+#############################&*========================&@###.@", 61 | ".+#############################&&&&&*====================&@###.@", 62 | ".+#############################;;;;&*==>>>>>>>>>>>>>>>>>>>@###.@", 63 | ".+#############################;,,;&*==>'''''''''''''''''>@###.@", 64 | ".+#############################;,);&*==>'!!!!!!!!!!!!!>>>>@###.@", 65 | ".+#############################;,);&*==>>>>>>>>>>>>>>>>@@@@###.@", 66 | ".+#############################;,);&*================&@#######.@", 67 | ".+#############################;,);&*================&@#######.@", 68 | ".+#############################;,);&*================&@#######.@", 69 | ".+#############################;,);&&&&&&&&&&&&&&&&&&&@#######.@", 70 | ".+#############################;,);;;;;;;;;;;;;;;;;;;;@#######.@", 71 | ".+#############################;,))))))))))))))))))));@#######.@", 72 | ".+#############################;;;;;;;;;;;;;;;;;;;;;;;@#######.@", 73 | ".+#############################@@@@@@@@@@@@@@@@@@@@@@@@#######.@", 74 | ".+############################################################.@", 75 | ".+############################################################.@", 76 | ".+############################################################.@", 77 | "...............................................................@", 78 | "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", 79 | " ", 80 | " ", 81 | " ", 82 | " ", 83 | " ", 84 | " "}; 85 | -------------------------------------------------------------------------------- /control/icccm.txt: -------------------------------------------------------------------------------- 1 | On Thu, Jul 12, 2001 at 09:32:45AM +0100, Sean Neakums wrote: 2 | > >>>>> "JW" == Jeff Waugh writes: 3 | > 4 | > JW> (The cynical prat in me says: Did you honestly expect a global 5 | > JW> option, and software to interact and cooperate correctly on 6 | > JW> this platform?) 7 | > 8 | > Go read the ICCCM. Come back when you're done crying. 9 | 10 | d00d, that document is devilspawn. I've recently spent my nights in pain 11 | implementing the selection mechanism. WHY OH WHY OH WHY? why me? why did 12 | I choose to do this? and what sick evil twisted mind wrote this damn spec? 13 | I don't know why I'm working with it, I just wanted to make a useful program. 14 | I didn't know what I was getting myself in to. Nobody knows until they try 15 | it. And once you start, you're unable to stop. You can't stop, if you stop 16 | then you haven't completed it to spec. You can't fail on this, it's just a 17 | few pages of text, how can that be so hard? So what if they use Atoms for 18 | everything. So what if there's no explicit correlation between the target 19 | type of a SelectionNotify event and the type of the property it indicates? 20 | So what if the distinction is ambiguous? So what if the document is 21 | littered with such atrocities? It's not the spec's fault, the spec is 22 | authoritative. It's obviously YOUR (the implementor's) fault for 23 | misunderstanding it. If you didn't misunderstand it, you wouldn't be here 24 | complaining about it would you? 25 | 26 | It's all about understanding. Obviously, once you come to understand how 27 | the Atoms all fit together and exactly what the sequence of events for an 28 | incremental transfer is, and once you come to APPRECIATE how Atoms are so 29 | guilelessly delicately cast and communicated, its BEAUTIFUL it really is, 30 | I'm like SO GLAD I spent my last few evenings bashing my head against this 31 | damn document because now I can SEE CLEARLY and it all fits into place and 32 | you know what, it damn well better because you just know that if one Atom 33 | is out of place or you mistake the requestor's property's window with your 34 | property's requestor's window or you forget to delete an empty property at 35 | the right time, then, well, you're screwed and the whole thing is going to 36 | come tumbling down and then who's going to look like a fool, huh? The 37 | malicious bastards who designed ICCCM? NO! YOU you idiot fool coder for 38 | misunderstanding such a seemingly benign (maligned) document. It all makes 39 | perfect sense and who ever heard of synchronous error handling anyway? 40 | 41 | Name one fucking program in the whole world that uses MULTIPLE selections 42 | by choice? "ooh, for performance" well kiss my ass, if no other program 43 | is going to fucking care about my packet then why the fuck would I send 44 | such a thing? Optimize ZERO you fucking overengineered piece of shit. And 45 | XA_SECONDARY? Who the fuck uses the SECONDARY selection? and who actually 46 | queries TARGETS? All anyone ever fucking does with the selection is COPY 47 | TEXT!! That's what its fucking used for, that's what its good for so why 48 | is it such a fucking pain in the date to just share a fucking STRING? How 49 | about HOSTNAME? ooh I want to find a random HOSTNAME. I'll just ask 50 | whichever random process happens to be the selection owner right now to 51 | tell me it's fucking HOSTNAME! Yes, that sounds like a worthwhile bit of 52 | behaviour, let's just stick it in Xmu and hope noone notices for the next 53 | fucking 30 years. Same goes for the fricking IP_ADDRESS. Oh yeah, and 54 | the user's name. getenv("USER")? Nooooooooo! primitive idiot. Let's just 55 | query a random selection owner and hope it feels like telling us. Yes, yes, 56 | 57 | remind me to put THAT into production code; about as reliable as cleaning 58 | your motherboard with fried eel and it smells bad too. Can I have mine in 59 | Motif please? 60 | 61 | The ICCCM is the coding equivalent of the Medieval rack, except its 62 | advertised as some kind of X11 swingers party. "Wanna see hot sexy X 63 | applications getting it on with each other live? Wanna join in the 64 | action? Come and lie down here, we're all waiting for you!" 65 | 66 | ZZZZZZZZZZZzzzzzzzzip! Then they close the handcuffs and you realise 67 | you're lying in a cold dark room and all you can see are Atoms blocking 68 | you in and every time you think you understand CCRRreeeeeeeaAACK! they 69 | turn the rack a notch and you turn the page to find another 20 paragraphs 70 | of hellborne protocol fantasy. 71 | 72 | I've seen more elegant protocols in unlikely places. When blowflies fight 73 | over a pile of elephant shit, their pecking order is a more elegant 74 | protocol than ICCCM. You should watch it some time; if you're an X hacker, 75 | you'll see the beauty. You'll wanna dig right in there and get your hands 76 | dirty. Italian cabbies. English football hooligans -- if I want to get a 77 | short message to the other side of the field, do I use my ICCCM-based X 78 | Window PDA? no, I tell it to a random hooligan, poke him in the ribs and 79 | hope he gets riled up enough to start a riot. Will my message get to the 80 | other side? who knows? at least the resulting carnage will be more orderly 81 | than that fucking Interclient protocol. 82 | 83 | ALL OR NOTHING! ALL OR NOTHING! Either you understand it ALL, or you are 84 | NOTHING! 85 | 86 | OR BOTH! 87 | 88 | I. C. C. C. M. 89 | 90 | Inter- 91 | Client 92 | Communications 93 | Conventions 94 | Manual! 95 | 96 | Manual, like in "manual labour", like in "pain" 97 | Conventions, like in "not required, just do ALL OF IT or you SUCK!" 98 | Communications, like in "fucking overengineered carrier pigeons" 99 | Client, like in "see that guy with the limp, he was one of my ``clients''" 100 | Inter-, like in "Inter-nal bleeding" 101 | 102 | A million monkeys hacking at a million protocol hammers couldn't come up 103 | with this shit in a million years, that's because it's EVIL, E-V-I-L, 104 | it's irrational, it's discontinuous, it is a truth within our codebase that 105 | cannot be derived from the axioms, it's OUT THERE, it was given to us to 106 | degrade us and as a warning to our children. We may have been stupid enough 107 | to work with the ICCCM but what of humanity? the humanity! oh! 108 | 109 | K. 110 | -------------------------------------------------------------------------------- /icons.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "icons.h" 4 | 5 | #define LEN(a) (sizeof(a) / sizeof((a)[0])) 6 | 7 | /* icons for files */ 8 | #include "icons/file-app.xpm" 9 | #include "icons/file-archive.xpm" 10 | #include "icons/file-broken.xpm" 11 | #include "icons/file-audio.xpm" 12 | #include "icons/file-code.xpm" 13 | #include "icons/file-core.xpm" 14 | #include "icons/file-config.xpm" 15 | #include "icons/file-gear.xpm" 16 | #include "icons/file-image.xpm" 17 | #include "icons/file-info.xpm" 18 | #include "icons/file-object.xpm" 19 | #include "icons/file-text.xpm" 20 | #include "icons/file-video.xpm" 21 | #include "icons/file.xpm" 22 | 23 | /* icons for directories */ 24 | #include "icons/folder-apps.xpm" 25 | #include "icons/folder-book.xpm" 26 | #include "icons/folder-code.xpm" 27 | #include "icons/folder-db.xpm" 28 | #include "icons/folder-download.xpm" 29 | #include "icons/folder-game.xpm" 30 | #include "icons/folder-gear.xpm" 31 | #include "icons/folder-home.xpm" 32 | #include "icons/folder-image.xpm" 33 | #include "icons/folder-link.xpm" 34 | #include "icons/folder-mail.xpm" 35 | #include "icons/folder-meme.xpm" 36 | #include "icons/folder-mount.xpm" 37 | #include "icons/folder-music.xpm" 38 | #include "icons/folder-trash.xpm" 39 | #include "icons/folder-up.xpm" 40 | #include "icons/folder-video.xpm" 41 | #include "icons/folder.xpm" 42 | 43 | /* icons for the window (used by the pager or window manager) */ 44 | #include "icons/winicon16x16.abgr" 45 | #include "icons/winicon32x32.abgr" 46 | #include "icons/winicon48x48.abgr" 47 | #include "icons/winicon64x64.abgr" 48 | 49 | #define TYPES \ 50 | X(executable, file_app_xpm )\ 51 | X(object, file_object_xpm )\ 52 | X(archive, file_archive_xpm )\ 53 | X(audio, file_audio_xpm )\ 54 | X(code, file_code_xpm )\ 55 | X(core, file_core_xpm )\ 56 | X(config, file_config_xpm )\ 57 | X(makefile, file_gear_xpm )\ 58 | X(image, file_image_xpm )\ 59 | X(info, file_info_xpm )\ 60 | X(document, file_text_xpm )\ 61 | X(video, file_video_xpm )\ 62 | X(up_dir, folder_up_xpm )\ 63 | X(apps_dir, folder_apps_xpm )\ 64 | X(code_dir, folder_code_xpm )\ 65 | X(database_dir, folder_db_xpm )\ 66 | X(documents_dir, folder_book_xpm )\ 67 | X(downloads_dir, folder_download_xpm )\ 68 | X(games_dir, folder_game_xpm )\ 69 | X(images_dir, folder_image_xpm )\ 70 | X(config_dir, folder_gear_xpm )\ 71 | X(home_dir, folder_home_xpm )\ 72 | X(mail_dir, folder_mail_xpm )\ 73 | X(meme_dir, folder_meme_xpm )\ 74 | X(mount_dir, folder_mount_xpm )\ 75 | X(music_dir, folder_music_xpm )\ 76 | X(trash_dir, folder_trash_xpm )\ 77 | X(videos_dir, folder_video_xpm )\ 78 | X(link_dir, folder_link_xpm )\ 79 | X(link_broken, file_broken_xpm )\ 80 | X(dir, folder_xpm )\ 81 | X(file, file_xpm ) 82 | 83 | #define PATTERNS \ 84 | X("..", up_dir, MODE_DIR )\ 85 | X("*.zip", archive, MODE_FILE )\ 86 | X("*.tar", archive, MODE_FILE )\ 87 | X("*.gz", archive, MODE_FILE )\ 88 | X("*.bz2", archive, MODE_FILE )\ 89 | X("*.rar", archive, MODE_FILE )\ 90 | X("*.mp[23]", audio, MODE_FILE )\ 91 | X("*.m4a", audio, MODE_FILE )\ 92 | X("*m3u", audio, MODE_FILE )\ 93 | X("*.ogg", audio, MODE_FILE )\ 94 | X("*.opus", audio, MODE_FILE )\ 95 | X("*.flac", audio, MODE_FILE )\ 96 | X("*.core", core, MODE_FILE )\ 97 | X("*.xbm", image, MODE_FILE )\ 98 | X("*.xpm", image, MODE_FILE )\ 99 | X("*.p[bgp]m", image, MODE_FILE )\ 100 | X("*.png", image, MODE_FILE )\ 101 | X("*.bmp", image, MODE_FILE )\ 102 | X("*.gif", image, MODE_FILE )\ 103 | X("*.tiff", image, MODE_FILE )\ 104 | X("*.jpeg", image, MODE_FILE )\ 105 | X("*.jpg", image, MODE_FILE )\ 106 | X("*.gif", image, MODE_FILE )\ 107 | X("*.svg", image, MODE_FILE )\ 108 | X("*.[1-9]", info, MODE_FILE )\ 109 | X("README", info, MODE_FILE )\ 110 | X("README.md", info, MODE_FILE )\ 111 | X("COPYING", info, MODE_FILE )\ 112 | X("LICENSE", info, MODE_FILE )\ 113 | X("COPYRIGHT", info, MODE_FILE )\ 114 | X("[Mm]akefile", makefile, MODE_FILE )\ 115 | X("configure", makefile, MODE_FILE )\ 116 | X("configure", makefile, MODE_FILE )\ 117 | X("*.pdf", document, MODE_FILE )\ 118 | X("*.epub", document, MODE_FILE )\ 119 | X("*.txt", document, MODE_FILE )\ 120 | X("*.ps", document, MODE_FILE )\ 121 | X("*.eps", document, MODE_FILE )\ 122 | X("*.djvu", document, MODE_FILE )\ 123 | X("*.o", object, MODE_FILE )\ 124 | X("*.so", object, MODE_FILE )\ 125 | X("*.a", object, MODE_FILE )\ 126 | X("*.mp4", video, MODE_FILE )\ 127 | X("*.webm", video, MODE_FILE )\ 128 | X("*.mkv", video, MODE_FILE )\ 129 | X("*.mov", video, MODE_FILE )\ 130 | X("*.ogv", video, MODE_FILE )\ 131 | X("*.ogv", video, MODE_FILE )\ 132 | X("*", executable, MODE_FILE|MODE_EXEC )\ 133 | X("*", link_dir, MODE_DIR|MODE_LINK )\ 134 | X("*", link_broken, MODE_BROK|MODE_LINK )\ 135 | X("~", home_dir, MODE_DIR ) 136 | 137 | #define WINICONS \ 138 | X(16, winicon16x16)\ 139 | X(32, winicon32x32)\ 140 | X(48, winicon48x48)\ 141 | X(64, winicon64x64) 142 | 143 | enum { 144 | #define X(type, xpm) type, 145 | TYPES 146 | NTYPES 147 | #undef X 148 | }; 149 | 150 | struct IconType icon_types[NTYPES] = { 151 | #define X(n, p) [n] = { .name = #n, .xpm = p }, 152 | TYPES 153 | #undef X 154 | }; 155 | 156 | struct IconPatt icon_patts[] = { 157 | #define X(p, i, m) { .patt = p, .index = i, .mode = m }, 158 | PATTERNS 159 | #undef X 160 | }; 161 | 162 | struct WinIcon win_icons[] = { 163 | #define X(s, d) { .size = s, .data = d }, 164 | WINICONS 165 | #undef X 166 | }; 167 | 168 | size_t nicon_types = NTYPES; 169 | size_t nicon_patts = LEN(icon_patts); 170 | size_t nwin_icons = LEN(win_icons); 171 | 172 | size_t icon_for_updir = up_dir; 173 | size_t icon_for_dir = dir; 174 | size_t icon_for_file = file; 175 | -------------------------------------------------------------------------------- /examples/xfilesctl: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # xfilesctl -- XFiles control script 3 | # 4 | # This file is called by xfiles(1) upon user interaction. 5 | # 6 | # When invoked, XFiles waits for this script to exit. Therefore, if 7 | # this script does something that takes too much time to return, the 8 | # XFiles window will become unresponsive. 9 | # 10 | # If this script calls a program that may take some time, you should 11 | # do it asynchronously by ending the command with an ampersand (&). 12 | # 13 | # This script depends on the following programs: 14 | # - $OPENER (defaults to xdg-open) for opening files. 15 | # - $EDITOR (defaults to vi) for editing text files. 16 | # - xmessage, for displaying dialogs. 17 | # - xterm, for opening the text editor. 18 | # - xmenu, for popping up a mouse-based menu. 19 | # - dmenu, for popping up a keyboard-based menu. 20 | # - xclip, for setting the clipboard. 21 | # - xprop, for setting window properties. 22 | # - File management core utilities (rm, mkdir, mv, cp, etc). 23 | # - Sed and AWK. 24 | 25 | # set this to false to not open dialogs asking for confirmation 26 | ask=true 27 | 28 | # default paths 29 | TRASH="${TRASH:-"${XDG_DATA_HOME:-"$HOME/.local/share"}/Trash"}" 30 | 31 | # default commands 32 | OPENER="${OPENER:-"xdg-open"}" 33 | EDITOR="${EDITOR:-"${VISUAL:-"vi"}"}" 34 | 35 | # print error message 36 | warn() { 37 | printf '%s: %s\n' "${0##*/}" "$*" >&2 38 | } 39 | 40 | # print error message and exit 41 | err() { 42 | warn "$@" 43 | exit 1 44 | } 45 | 46 | # open mouse-based menu containing entries from stdin 47 | menu() { 48 | xmenu 49 | } 50 | 51 | # open keyboard-based menu containing entries from stdin 52 | prompt() { 53 | dmenu -w "$WINDOWID" 54 | } 55 | 56 | # open new xfiles window on current directory 57 | newwin() { 58 | xfiles & 59 | } 60 | 61 | # open terminal window running given command 62 | term() { 63 | xterm & 64 | } 65 | 66 | # open given files (on background, so xfiles not wait) 67 | open() { 68 | command -- "$OPENER" "$@" & 69 | } 70 | 71 | # open text editor on given file 72 | edit() { 73 | xterm -into "$WINDOWID" -bw 0 -e "$EDITOR" -- "$@" 74 | } 75 | 76 | # open dialog asking for confirmation ("$1" is the prompt, rest are filenames) 77 | dialog() { 78 | "$ask" || return 0 79 | prompt="$1" 80 | shift 1 81 | { 82 | printf "%s\n" "$prompt" 83 | printf "\t%s\n" "$@" 84 | } | xmessage -buttons Yes:0,No:1 -nearmouse -file - 85 | } 86 | 87 | # if $1 == /path/to/file_1.txt exists, set $uniquepath to /path/to/file_2.txt and so on 88 | setuniquepath() { 89 | basename="${1##*/}" 90 | dirname="${1%/*}" 91 | body="${basename%.*}" 92 | ext="${basename##"$body"}" 93 | 94 | # create unique name 95 | unset -v i p 96 | while test -e "$dirname/$body$p$i$ext" 97 | do 98 | p="_" 99 | if [ -z "$i" ] 100 | then 101 | i=1 102 | else 103 | i=$((i + 1)) 104 | fi 105 | done 106 | uniquepath="$dirname/$body$p$i$ext" 107 | } 108 | 109 | # copy files here if user confirms dialog 110 | copy() { 111 | dialog "Copy files to $PWD?" "$@" && { 112 | for file 113 | do 114 | setuniquepath "$PWD/${file##*/}" 115 | cp -v "$file" "$uniquepath" 116 | done 117 | } 118 | } 119 | 120 | # move files here if user confirms dialog 121 | move() { 122 | dialog "Move files to $PWD?" "$@" && { 123 | for file 124 | do 125 | setuniquepath "$PWD/${file##*/}" 126 | mv -v "$file" "$uniquepath" 127 | done 128 | } 129 | } 130 | 131 | # link files here if user confirms dialog 132 | link() { 133 | dialog "Link files to $PWD?" "$@" && { 134 | for file 135 | do 136 | setuniquepath "$PWD/${file##*/}" 137 | ln -s "$file" "$uniquepath" 138 | done 139 | } 140 | } 141 | 142 | # send files to trash if user confirms dialog 143 | trash() { 144 | case $# in (0) return ;; esac 145 | dialog "Send files to trash?" "$@" || return 146 | # shellcheck disable=SC2174 147 | mkdir -m 700 -p -- "$TRASH/files" "$TRASH/info" || exit 1 148 | for file 149 | do 150 | test -e "$file" || continue 151 | 152 | # get unique target 153 | setuniquepath "$TRASH/files/${file##*/}" 154 | 155 | # move file to trash and write trash information 156 | mv -- "$file" "$uniquepath" && \ 157 | cat > "$TRASH/info/${uniquepath##*/}.trashinfo" <<-END 158 | [Trash Info] 159 | Path=$file 160 | DeletionDate=$(date +"%FT%H:%M:%S") 161 | END 162 | done 163 | } 164 | 165 | # restore files from trash if user confirms dialog 166 | untrash() { 167 | case $# in (0) return ;; esac 168 | 169 | # compose dialog message 170 | msg="Restore files from trash?" 171 | for file 172 | do 173 | shift 174 | basename="${file##*/}" 175 | infofile="$TRASH/info/$basename.trashinfo" 176 | origfile="$(sed -En '/^[[:blank:]]*Path[[:blank:]]*=/{s/.*=[[:blank:]]*//;p;q;}' < "$infofile")" 177 | if test -e "$origfile" 178 | then 179 | warn "$basename: file already exists on original directory" 180 | else 181 | set -- "$file" "$origfile" "$infofile" 182 | msg="$msg 183 | $origfile" 184 | fi 185 | done 186 | 187 | dialog "$msg" || return 188 | 189 | while test $# -gt 0 190 | do 191 | file="$1" 192 | origfile="$2" 193 | infofile="$3" 194 | shift 3 195 | mv -- "$file" "$origfile" && rm -- "$infofile" 196 | done 197 | } 198 | 199 | # rm file if user confirms dialog (if at trash, also remove info file) 200 | delete() { 201 | dialog "Delete files permanently?" "$@" || return 202 | rm -rf -- "$@" 203 | case "$PWD" in 204 | ("$TRASH/files") 205 | for file 206 | do 207 | rm -rf -- "$TRASH/info/${file##*/}.trashinfo" 208 | done 209 | ;; 210 | esac 211 | } 212 | 213 | # delete all files in trash can 214 | emptytrash() { 215 | dialog "Empty trash?" || return 216 | rm -rf "$TRASH/files/"* 217 | rm -rf "$TRASH/info/"* 218 | } 219 | 220 | # save file paths into clipboard 221 | snarf() { 222 | case "$#" in 223 | (0) 224 | # no file to copy 225 | return 226 | ;; 227 | esac 228 | # send URIs to clipboard 229 | printf 'file://%s\r\n' "$@" |\ 230 | xclip -selection clipboard -in -target "text/uri-list" & 231 | } 232 | 233 | # paste file whose paths are on clipboard 234 | paste() { 235 | cmd="$1" 236 | shift 1 237 | { 238 | # get URIs from clipboard 239 | xclip -selection clipboard -out -target "text/uri-list" 240 | echo 241 | } | sed 's,^file://,,' | tr -d '\r' | { 242 | set -- 243 | while read -r f 244 | do 245 | case "$f" in 246 | ("") 247 | ;; 248 | (*) 249 | set -- "$@" "$f" 250 | ;; 251 | esac 252 | done 253 | case "$cmd" in 254 | ("cp") 255 | copy "$@" 256 | ;; 257 | ("mv") 258 | move "$@" 259 | ;; 260 | ("ln") 261 | link "$@" 262 | ;; 263 | esac 264 | } 265 | } 266 | 267 | # rename files in text editor 268 | rename() { 269 | case "$#" in (0) return ;; esac 270 | 271 | unset -v tempfile tempdir TMPDIR 272 | trap ' 273 | test "$tempfile" && rm -f -- "$tempfile" 2>/dev/null 274 | test "$tempdir" && rmdir -- "$tempdir" 2>/dev/null 275 | exit 276 | ' EXIT HUP 277 | tempfile="$(mktemp)" || exit 1 278 | tempdir="$(mktemp -d -p "$PWD")" || exit 1 279 | 280 | for file 281 | do 282 | file="${file#"$PWD/"}" 283 | case "$file" in 284 | ("") 285 | err "empty argument" 286 | ;; 287 | (*[[:cntrl:]]*) 288 | err "renaming files containing control characters is not supported" 289 | ;; 290 | ([[:space:]]*|*[[:space:]]) 291 | err "renaming files beginning or ending in space is not supported" 292 | ;; 293 | esac 294 | printf "%s\n" "$file" >> "$tempfile" 295 | done 296 | 297 | edit "$tempfile" || exit 1 298 | 299 | mv -- "$@" "$tempdir" || exit 1 300 | while read -r target 301 | do 302 | source="$tempdir/${1##*/}" 303 | if test -z "$target" 304 | then 305 | trash "$source" 306 | else 307 | case "$target" in 308 | (*/*) 309 | mkdir -p "${target%/*}" 310 | ;; 311 | esac 312 | case "$target" in 313 | (/*|./*|../*) 314 | ;; 315 | (*) 316 | target="$PWD/$target" 317 | ;; 318 | esac 319 | setuniquepath "$target" 320 | mv -- "$source" "$uniquepath" 321 | fi 322 | shift 323 | done <"$tempfile" 324 | { 325 | mv -- "$tempdir/"* ./ 326 | rmdir -- "$tempdir" 327 | rm -f -- "$tempfile" 328 | } 2>/dev/null 329 | } 330 | 331 | # create directories named on text editor 332 | makedir() { 333 | unset -v tempfile 334 | trap 'test "$tempfile" && rm -f -- "$tempfile" 2>/dev/null' EXIT 335 | tempfile="$(mktemp)" || exit 1 336 | edit "$tempfile" 337 | while read -r dir 338 | do 339 | mkdir -p "$dir" 340 | done <"$tempfile" 341 | rm "$tempfile" 342 | } 343 | 344 | # open random file in current directory 345 | random() { 346 | set -- 347 | for file in * 348 | do 349 | test -f "$file" && set -- "$file" "$@" 350 | done 351 | case "$#" in 352 | (0) 353 | return 354 | ;; 355 | (*) 356 | shift "$(awk 'BEGIN{print int(ARGV[1]*rand())}' "$#")" 357 | open "$1" 358 | ;; 359 | esac 360 | } 361 | 362 | # change current directory of XFiles window 363 | changedir() { 364 | xprop -id "$WINDOWID" -format "_CONTROL_GOTO" 8u -set "_CONTROL_GOTO" "$1" 365 | } 366 | 367 | # prompt for file to open or directory to go to 368 | urlbar() { 369 | printf '%s\n' * | prompt | { 370 | read -r entry 371 | if test -d "$entry" 372 | then 373 | changedir "$entry" 374 | else 375 | open "$entry" 376 | fi 377 | } 378 | } 379 | 380 | # pop-up menu for file dropping 381 | dropmenu() { 382 | { 383 | cat <<-EOF 384 | copy 385 | move 386 | link 387 | none 388 | EOF 389 | } | menu | { 390 | read -r option 391 | case "$option" in 392 | ("copy") 393 | copy "$@" 394 | ;; 395 | ("move") 396 | move "$@" 397 | ;; 398 | ("link") 399 | link "$@" 400 | ;; 401 | ("term") 402 | term 403 | ;; 404 | esac 405 | } 406 | } 407 | 408 | # context menu for no selection 409 | dirmenu() { 410 | { 411 | cat < 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | 13 | #define ENUM(sym) sym, 14 | #define NAME(sym) #sym, 15 | 16 | #define ATOMS(X) \ 17 | X(TIMESTAMP) \ 18 | X(TARGETS) \ 19 | X(MULTIPLE) \ 20 | X(INCR) \ 21 | X(ATOM_PAIR) 22 | 23 | #define SYNC_NTRIES 120 /* iterate at most this times */ 24 | #define SYNC_WAIT 6 /* wait at most this milliseconds between each try */ 25 | #define SYNC_EVENT(dpy, win, type, ev) for ( \ 26 | int SYNC_TRY = 0; \ 27 | SYNC_TRY < SYNC_NTRIES; \ 28 | SYNC_TRY++, poll(&(struct pollfd){ \ 29 | .fd = XConnectionNumber((dpy)), \ 30 | .events = POLLIN, \ 31 | }, 1, SYNC_WAIT) \ 32 | ) while (XCheckTypedWindowEvent((dpy), (win), (type), (ev))) 33 | 34 | enum errors { 35 | /* ctrlsel(3) functions returns negative error codes on error */ 36 | CTRL_NOERROR = 0, 37 | CTRL_ENOMEM = -ENOMEM, 38 | CTRL_ETIMEDOUT = -ETIMEDOUT, 39 | CTRL_EMSGSIZE = -EMSGSIZE, 40 | }; 41 | 42 | enum atoms { 43 | ATOMS(ENUM) 44 | NATOMS 45 | }; 46 | 47 | static Atom atomtab[NATOMS]; 48 | 49 | static void 50 | init(Display *display) 51 | { 52 | static char *atomnames[NATOMS] = { ATOMS(NAME) }; 53 | static Bool done = False; 54 | 55 | if (done) 56 | return; 57 | XInternAtoms(display, atomnames, NATOMS, False, atomtab); 58 | done = True; 59 | } 60 | 61 | static int 62 | ignoreerror(Display *display, XErrorEvent *event) 63 | { 64 | (void)display, (void)event; 65 | return 0; 66 | } 67 | 68 | static Window 69 | createwindow(Display *display) 70 | { 71 | return XCreateWindow( 72 | display, DefaultRootWindow(display), 73 | 0, 0, 1, 1, 0, 74 | CopyFromParent, CopyFromParent, CopyFromParent, 75 | CWEventMask, &(XSetWindowAttributes){ 76 | /* this window will get PropertyNotify events */ 77 | .event_mask = PropertyChangeMask, 78 | } 79 | ); 80 | } 81 | 82 | static Time 83 | getservertime(Display *display) 84 | { 85 | XEvent event; 86 | Window window; 87 | 88 | /* 89 | * To get the server time, we append a zero-length data to a 90 | * window's property (any can do), and get the timestamp from 91 | * the server in the corresponding XPropertyEvent(3). 92 | * 93 | * We create (and then delete) a window for that, to not mess 94 | * with the mask of events selected on any existing window by 95 | * the client. 96 | */ 97 | if ((window = createwindow(display)) == None) 98 | return CurrentTime; 99 | (void)XChangeProperty( 100 | display, window, 101 | XA_WM_NAME, XA_STRING, 102 | 8L, PropModeAppend, 103 | (void *)"", 0 /* zero-length data */ 104 | ); 105 | (void)XWindowEvent(display, window, PropertyChangeMask, &event); 106 | (void)XDestroyWindow(display, window); 107 | return event.xproperty.time; 108 | } 109 | 110 | static ssize_t 111 | getmaxsize(Display *display) 112 | { 113 | size_t n; 114 | 115 | /* compute maximum size for the payload of a ChangeProperty request */ 116 | if ((n = XExtendedMaxRequestSize(display)) == 0) 117 | n = XMaxRequestSize(display); 118 | if (n < 0x1000) 119 | n = 0x1000; /* requests are no smaller than that */ 120 | n *= 4; /* request units are 4-byte long */ 121 | n -= 24; /* ignore ChangeProperty header */ 122 | return n; /* got sizeof ChangeProperty's payload */ 123 | } 124 | 125 | static ssize_t 126 | getcontent(Display *display, Window requestor, Atom property, unsigned char **pbuf) 127 | { 128 | Atom type; 129 | unsigned long len, remain; 130 | ssize_t ret; 131 | int status, format; 132 | 133 | status = XGetWindowProperty( 134 | display, requestor, property, 135 | 0, INT_MAX, 136 | True, /* delete property after get */ 137 | AnyPropertyType, &type, &format, 138 | &len, &remain, pbuf 139 | ); 140 | ret = 0; 141 | if (status != Success) 142 | ret = CTRL_ENOMEM; 143 | else if (type == atomtab[INCR]) 144 | ret = CTRL_EMSGSIZE; 145 | else if (*pbuf != NULL && len > 0) 146 | return len; 147 | XFree(*pbuf); 148 | *pbuf = NULL; 149 | return ret; 150 | } 151 | 152 | static ssize_t 153 | getatompairs(XSelectionRequestEvent const *event, Atom **atoms) 154 | { 155 | unsigned long nitems, remain; 156 | int status, format; 157 | Atom type; 158 | 159 | status = XGetWindowProperty( 160 | event->display, event->requestor, event->property, 161 | 0, INT_MAX, 162 | True, /* delete property after get */ 163 | atomtab[ATOM_PAIR], &type, &format, 164 | &nitems, &remain, (void *)atoms 165 | ); 166 | if (status == Success && format == 32 && *atoms != NULL && nitems > 0) 167 | return nitems; 168 | XFree(*atoms); 169 | *atoms = NULL; 170 | return status == BadAlloc ? -1 : 0; 171 | } 172 | 173 | static Bool 174 | waitnotify(Display *display, Window window, Time timestamp, 175 | Atom selection, Atom target, XEvent *event) 176 | { 177 | SYNC_EVENT(display, window, SelectionNotify, event) { 178 | XSelectionEvent *selevent = &event->xselection; 179 | 180 | if (selevent->selection != selection) 181 | continue; 182 | if (selevent->target != target) 183 | continue; 184 | if (selevent->time == CurrentTime) 185 | return True; 186 | if (selevent->time >= timestamp) 187 | return True; 188 | } 189 | return False; 190 | } 191 | 192 | static ssize_t 193 | getatonce(Display *display, Window requestor, Time timestamp, 194 | Atom selection, Atom target, unsigned char **pbuf) 195 | { 196 | XEvent event; 197 | 198 | *pbuf = NULL; 199 | if (target == None) 200 | return CTRL_NOERROR; 201 | if (timestamp == CurrentTime) 202 | timestamp = getservertime(display); 203 | if (timestamp == CurrentTime) 204 | return CTRL_NOERROR; 205 | XDeleteProperty(display, requestor, target); 206 | XSync(display, False); 207 | while(XCheckTypedWindowEvent(display, requestor, SelectionNotify, &event)) 208 | ; /* drop any out-of-sync XSelectionEvent(3) */ 209 | (void)XConvertSelection( 210 | display, selection, 211 | target, target, 212 | requestor, timestamp 213 | ); 214 | if (!waitnotify(display, requestor, timestamp, selection, target, &event)) 215 | return CTRL_ETIMEDOUT; 216 | if (event.xselection.property != target) 217 | return CTRL_NOERROR; /* request not responded */ 218 | return getcontent(display, requestor, target, pbuf); 219 | } 220 | 221 | static ssize_t 222 | getbyparts(Display *display, Window requestor, Atom target, 223 | unsigned char **pbuf) 224 | { 225 | FILE *stream; 226 | XEvent event; 227 | size_t size; 228 | ssize_t retval; 229 | 230 | if ((stream = open_memstream((char **)pbuf, &size)) == NULL) 231 | return -errno; 232 | SYNC_EVENT(display, requestor, PropertyNotify, &event) { 233 | ssize_t n; 234 | unsigned char *tmpbuf; 235 | 236 | if (event.xproperty.atom != target) 237 | continue; 238 | if (event.xproperty.state != PropertyNewValue) 239 | continue; 240 | n = getcontent(display, requestor, target, &tmpbuf); 241 | errno = 0; 242 | if (n > 0 && fwrite(tmpbuf, 1, n, stream) != (size_t)n) 243 | n = errno ? -errno : CTRL_ENOMEM; 244 | XFree(tmpbuf); 245 | if (n <= 0) { 246 | retval = n; 247 | goto done; 248 | } 249 | } 250 | retval = CTRL_ETIMEDOUT; 251 | done: 252 | while (fclose(stream) == EOF) { 253 | if (errno != EINTR) { 254 | retval = -errno; 255 | break; 256 | } 257 | } 258 | if (retval == 0) 259 | return size; 260 | free(*pbuf); 261 | *pbuf = NULL; 262 | return retval; 263 | } 264 | 265 | ssize_t 266 | ctrlsel_request(Display *display, Time timestamp, Atom selection, 267 | Atom target, unsigned char **pbuf) 268 | { 269 | Window requestor; 270 | ssize_t retval; 271 | 272 | init(display); 273 | if (selection == None || target == None) 274 | return CTRL_NOERROR; 275 | if ((requestor = createwindow(display)) == None) 276 | return CTRL_NOERROR; 277 | retval = getatonce(display, requestor, timestamp, selection, target, pbuf); 278 | if (retval == CTRL_EMSGSIZE) /* message is too large */ 279 | retval = getbyparts(display, requestor, target, pbuf); 280 | (void)XDestroyWindow(display, requestor); 281 | return retval; 282 | } 283 | 284 | ssize_t 285 | ctrlsel_gettargets(Display *display, Time timestamp, Atom selection, Atom **ptargets) 286 | { 287 | init(display); 288 | return ctrlsel_request( 289 | display, timestamp, selection, 290 | atomtab[TARGETS], (unsigned char **)ptargets 291 | ); 292 | } 293 | 294 | Time 295 | ctrlsel_own(Display *display, Window owner, Time timestamp, Atom selection) 296 | { 297 | if (selection == None) 298 | return 0; 299 | if (timestamp == CurrentTime) 300 | timestamp = getservertime(display); 301 | if (timestamp == CurrentTime) 302 | return 0; 303 | (void)XSetSelectionOwner(display, selection, owner, timestamp); 304 | if (XGetSelectionOwner(display, selection) == owner) 305 | return timestamp; 306 | return 0; 307 | } 308 | 309 | static int 310 | answer(XSelectionRequestEvent const *event, Time time, 311 | Atom const targets[], size_t ntargets, 312 | ssize_t (*callback)(void *, Atom, unsigned char **), void *arg) 313 | { 314 | enum { PAIR_TARGET, PAIR_PROPERTY, PAIR_LENGTH }; 315 | ssize_t natoms = PAIR_LENGTH; 316 | int retval = CTRL_NOERROR; 317 | Atom storeat = None; /* requestor's property where we'll store data */ 318 | Atom *p = NULL; 319 | Atom *atoms = (Atom []){ 320 | [PAIR_TARGET] = event->target, 321 | [PAIR_PROPERTY] = event->property, 322 | }; 323 | 324 | if (event->target == None) 325 | goto done; 326 | if (event->time != CurrentTime && event->time < time) 327 | goto done; /* out-of-time request */ 328 | if (event->target == atomtab[MULTIPLE]) { 329 | if (event->property == None) 330 | goto done; 331 | natoms = getatompairs(event, &p); 332 | if (natoms < 0) 333 | retval = CTRL_ENOMEM; 334 | if (natoms <= 0) 335 | goto done; 336 | atoms = p; 337 | } else if (event->property == None) { 338 | atoms[PAIR_PROPERTY] = event->target; 339 | } 340 | 341 | for (ssize_t i = 0; i < natoms; i += 2) { 342 | Atom *pair = &atoms[i]; 343 | Atom target = pair[PAIR_TARGET]; 344 | Atom property = pair[PAIR_PROPERTY]; 345 | unsigned char *buf = NULL; 346 | ssize_t size; 347 | 348 | if (property == None) { 349 | continue; 350 | } else if (target == atomtab[TIMESTAMP]) { 351 | (void)XChangeProperty( 352 | event->display, event->requestor, property, 353 | XA_INTEGER, 32, PropModeReplace, 354 | (void *)&time, 1 355 | ); 356 | } else if (target == atomtab[TARGETS]) { 357 | (void)XChangeProperty( 358 | event->display, event->requestor, property, 359 | XA_ATOM, 32, PropModeReplace, 360 | (void *)targets, ntargets 361 | ); 362 | (void)XChangeProperty( 363 | event->display, event->requestor, property, 364 | XA_ATOM, 32, PropModeAppend, 365 | (void *)(Atom[3]){ 366 | atomtab[TIMESTAMP], 367 | atomtab[TARGETS], 368 | atomtab[MULTIPLE], 369 | }, 3 370 | ); 371 | } else if (target == atomtab[MULTIPLE] || target == None) { 372 | /* unsupported target */ 373 | pair[PAIR_PROPERTY] = None; 374 | } else if ((size = callback(arg, target, &buf)) < 0) { 375 | pair[PAIR_PROPERTY] = None; 376 | } else if (size > getmaxsize(event->display)) { 377 | retval = CTRL_EMSGSIZE; 378 | pair[PAIR_PROPERTY] = None; 379 | } else { 380 | (void)XChangeProperty( 381 | event->display, event->requestor, property, 382 | target, 8, PropModeReplace, 383 | buf, size 384 | ); 385 | } 386 | } 387 | 388 | if (event->target == atomtab[MULTIPLE]) { 389 | storeat = event->property; 390 | (void)XChangeProperty( 391 | event->display, event->requestor, storeat, 392 | atomtab[ATOM_PAIR], 32, PropModeReplace, 393 | (unsigned char *)atoms, natoms 394 | ); 395 | } else { 396 | storeat = atoms[PAIR_PROPERTY]; 397 | } 398 | 399 | done: 400 | XFree(p); 401 | XSendEvent( 402 | event->display, 403 | event->requestor, 404 | False, 405 | NoEventMask, 406 | (XEvent *)&(XSelectionEvent){ 407 | .type = SelectionNotify, 408 | .display = event->display, 409 | .requestor = event->requestor, 410 | .selection = event->selection, 411 | .time = event->time, 412 | .target = event->target, 413 | .property = storeat, 414 | } 415 | ); 416 | return retval; 417 | } 418 | 419 | static XErrorHandler 420 | seterrfun(Display *display, XErrorHandler fun) 421 | { 422 | (void)XSync(display, False); 423 | return XSetErrorHandler(fun); 424 | } 425 | 426 | int 427 | ctrlsel_answer(XEvent const *ep, Time time, 428 | Atom const targets[], size_t ntargets, 429 | ssize_t (*callback)(void *, Atom, unsigned char **), void *arg) 430 | { 431 | XErrorHandler oldhandler; 432 | int retval; 433 | 434 | if (ep->type != SelectionRequest) 435 | return 0; 436 | init(ep->xany.display); 437 | oldhandler = seterrfun(ep->xany.display, ignoreerror); 438 | retval = answer(&ep->xselectionrequest, time, targets, ntargets, callback, arg); 439 | (void)seterrfun(ep->xany.display, oldhandler); 440 | return retval; 441 | } 442 | --------------------------------------------------------------------------------