From f46bd4d41cc7f243bc8a321effee5200aa69e709 Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Sun, 1 Dec 2013 17:04:05 +0400 Subject: [PATCH 1/1] Initial import --- .bashrc | 2 + .cache/mc | 1 + .cvsignore | 7 + .cvsrc | 4 + .fvwm/.fvwm2rc | 113 +++ .fvwm/bindings | 233 ++++++ .fvwm/config | 1 + .fvwm/decorations | 116 +++ .fvwm/functions | 413 +++++++++++ .fvwm/globalfeel | 123 ++++ .fvwm/iconstyles | 252 +++++++ .fvwm/menus | 1090 ++++++++++++++++++++++++++++ .fvwm/modules | 492 +++++++++++++ .fvwm/phd.m4 | 1061 +++++++++++++++++++++++++++ .fvwm/restart | 17 + .fvwm/startup | 41 ++ .fvwm/styles | 43 ++ .gitconfig | 29 + .gtkrc-2.0 | 131 ++++ .hgrc | 23 + .inputrc | 48 ++ .local/share/mc | 1 + .mailcap | 128 ++++ .mc/bindings | 1 + .mc/filehighlight.ini | 50 ++ .mc/ini | 155 ++++ .mc/mc.ext | 771 ++++++++++++++++++++ .mc/menu | 376 ++++++++++ .mc/panels.ini | 34 + .mc/skins/black.ini | 74 ++ .mc/skins/grey.ini | 74 ++ .mime.types | 476 ++++++++++++ .muttrc | 372 ++++++++++ .my.cnf | 5 + .pdbrc | 11 + .plan | 10 + .procmailrc | 419 +++++++++++ .profile | 247 +++++++ .project | 2 + .psqlrc | 8 + .screenrc | 111 +++ .shellrc | 162 +++++ .sqliterc | 3 + .tmux.conf | 45 ++ .vim/after/ftplugin/mail.vim | 2 + .vim/after/indent/mail.vim | 1 + .vim/after/plugin/isk.vim | 1 + .vim/compiler/python.vim | 12 + .vim/filetype.vim | 37 + .vim/ftplugin/cvscommit.vim | 1 + .vim/ftplugin/gitcommit.vim | 2 + .vim/ftplugin/gitconfig.vim | 1 + .vim/ftplugin/hgcommit.vim | 2 + .vim/ftplugin/html.vim | 24 + .vim/ftplugin/htmlcheetah.vim | 15 + .vim/ftplugin/iss.vim | 3 + .vim/ftplugin/mail.vim | 23 + .vim/ftplugin/medaprm-method.vim | 12 + .vim/ftplugin/pep.vim | 4 + .vim/ftplugin/playlist.vim | 1 + .vim/ftplugin/po.vim | 12 + .vim/ftplugin/python.vim | 46 ++ .vim/ftplugin/ssh.vim | 2 + .vim/ftplugin/svncommit.vim | 1 + .vim/ftplugin/text.vim | 6 + .vim/ftplugin/vcscommit.vim | 4 + .vim/ftplugin/xhtml.vim | 1 + .vim/ftplugin/xml.vim | 18 + .vim/misc/ispell.vim | 219 ++++++ .vim/syntax/html.vim | 4 + .vim/syntax/mail.vim | 21 + .vim/syntax/python.vim | 1 + .vim/syntax/synload.vim | 18 + .vim/syntax/xml.vim | 3 + .vimrc | 730 +++++++++++++++++++ .xinitrc | 81 +++ .xserverrc | 2 + bin/GET.py | 71 ++ bin/HEAD.py | 61 ++ bin/PS | 10 + bin/abspath.py | 4 + bin/browser-stack.py | 31 + bin/browser_stack.py | 23 + bin/cgmem_nice | 23 + bin/cleanup-filenames-recursive.sh | 21 + bin/cleanup-filenames.sh | 26 + bin/cleanup-recode.sh | 22 + bin/cmp.py | 90 +++ bin/compyle | 17 + bin/compyle-ptl | 11 + bin/compyle4vim.py | 30 + bin/compyleall | 12 + bin/compyleall-ptl | 7 + bin/decode-URLs.py | 12 + bin/distutils | 5 + bin/doc2html1 | 9 + bin/doc2html2 | 9 + bin/doc2html_web | 19 + bin/e | 2 + bin/find_home_grep.sh | 4 + bin/fromdos | 2 + bin/fromwin | 2 + bin/get_html_encoding.py | 73 ++ bin/get_xml_encoding.py | 18 + bin/gmplay | 1 + bin/iconv.py | 28 + bin/iconvx.py | 37 + bin/iconvxml.py | 28 + bin/idna.py | 21 + bin/koi2lat | 10 + bin/l | 14 + bin/l8 | 4 + bin/lat2koi | 10 + bin/latin1_to_ascii.py | 125 ++++ bin/ll | 2 + bin/llp | 2 + bin/m | 2 + bin/mc_type.py | 32 + bin/mconfig | 4 + bin/mplay | 16 + bin/mutt8 | 4 + bin/p | 2 + bin/r | 2 + bin/recode-filenames-recursive.py | 39 + bin/recode-inplace | 13 + bin/recode_filenames.py | 68 ++ bin/replace | 20 + bin/reset_tty | 2 + bin/rm-pyc | 2 + bin/rumutt | 2 + bin/s | 2 + bin/screen-hardcopy | 21 + bin/setattrs.sh | 15 + bin/setnormattrs.sh | 10 + bin/smplay | 22 + bin/smplay-gui | 1 + bin/start-browser | 5 + bin/t | 2 + bin/text-wrap.py | 71 ++ bin/todos | 2 + bin/towin | 2 + bin/tt | 2 + bin/untar-home | 4 + bin/unzip.py | 48 ++ bin/vim8 | 2 + bin/webbrowser | 27 + bin/webbrowser-encode-url | 82 +++ bin/webbrowserX | 5 + bin/webdump | 12 + bin/webdump2 | 2 + bin/webstdin | 16 + bin/wget-m | 10 + bin/wget-wrapper | 9 + bin/whence | 2 + bin/ww | 1 + bin/xtitle | 12 + bin/zip.py | 42 ++ lib/X11/.XKeysymDB | 203 ++++++ lib/X11/.Xmodmap | 50 ++ lib/X11/.Xresources | 29 + lib/X11/colors | 49 ++ lib/X11/conf | 10 + lib/X11/fonts | 61 ++ lib/X11/gvim | 12 + lib/X11/inputrc | 27 + lib/X11/misc | 31 + lib/X11/mosaic | 51 ++ lib/X11/netscape | 96 +++ lib/X11/utf-8.vars | 3 + lib/X11/xterm | 413 +++++++++++ lib/config/dbus | 9 + lib/config/gpg-agent | 9 + lib/config/gpg-agent-ssh | 11 + lib/config/gpg-agent-stop | 6 + lib/config/gpg-agent-update-tty | 3 + lib/config/mc-nice | 1 + lib/config/nice-mc | 6 + lib/config/wget | 5 + lib/python/init.py | 185 +++++ lib/python/pdbrc.py | 42 ++ 180 files changed, 11930 insertions(+) create mode 100644 .bashrc create mode 120000 .cache/mc create mode 100644 .cvsignore create mode 100644 .cvsrc create mode 100644 .fvwm/.fvwm2rc create mode 100644 .fvwm/bindings create mode 120000 .fvwm/config create mode 100644 .fvwm/decorations create mode 100644 .fvwm/functions create mode 100644 .fvwm/globalfeel create mode 100644 .fvwm/iconstyles create mode 100644 .fvwm/menus create mode 100644 .fvwm/modules create mode 100644 .fvwm/phd.m4 create mode 100755 .fvwm/restart create mode 100644 .fvwm/startup create mode 100644 .fvwm/styles create mode 100644 .gitconfig create mode 100644 .gtkrc-2.0 create mode 100644 .hgrc create mode 100644 .inputrc create mode 120000 .local/share/mc create mode 100644 .mailcap create mode 120000 .mc/bindings create mode 100644 .mc/filehighlight.ini create mode 100644 .mc/ini create mode 100644 .mc/mc.ext create mode 100644 .mc/menu create mode 100644 .mc/panels.ini create mode 100644 .mc/skins/black.ini create mode 100644 .mc/skins/grey.ini create mode 100644 .mime.types create mode 100644 .muttrc create mode 100644 .my.cnf create mode 100644 .pdbrc create mode 100644 .plan create mode 100644 .procmailrc create mode 100644 .profile create mode 100644 .project create mode 100644 .psqlrc create mode 100644 .screenrc create mode 100644 .shellrc create mode 100644 .sqliterc create mode 100644 .tmux.conf create mode 100644 .vim/after/ftplugin/mail.vim create mode 100644 .vim/after/indent/mail.vim create mode 100644 .vim/after/plugin/isk.vim create mode 100644 .vim/compiler/python.vim create mode 100644 .vim/filetype.vim create mode 100644 .vim/ftplugin/cvscommit.vim create mode 100644 .vim/ftplugin/gitcommit.vim create mode 100644 .vim/ftplugin/gitconfig.vim create mode 100644 .vim/ftplugin/hgcommit.vim create mode 100644 .vim/ftplugin/html.vim create mode 100644 .vim/ftplugin/htmlcheetah.vim create mode 100644 .vim/ftplugin/iss.vim create mode 100644 .vim/ftplugin/mail.vim create mode 100644 .vim/ftplugin/medaprm-method.vim create mode 100644 .vim/ftplugin/pep.vim create mode 100644 .vim/ftplugin/playlist.vim create mode 100644 .vim/ftplugin/po.vim create mode 100644 .vim/ftplugin/python.vim create mode 100644 .vim/ftplugin/ssh.vim create mode 100644 .vim/ftplugin/svncommit.vim create mode 100644 .vim/ftplugin/text.vim create mode 100644 .vim/ftplugin/vcscommit.vim create mode 120000 .vim/ftplugin/xhtml.vim create mode 100644 .vim/ftplugin/xml.vim create mode 100644 .vim/misc/ispell.vim create mode 100644 .vim/syntax/html.vim create mode 100644 .vim/syntax/mail.vim create mode 100644 .vim/syntax/python.vim create mode 100644 .vim/syntax/synload.vim create mode 100644 .vim/syntax/xml.vim create mode 100644 .vimrc create mode 100644 .xinitrc create mode 100644 .xserverrc create mode 100755 bin/GET.py create mode 100755 bin/HEAD.py create mode 100755 bin/PS create mode 100755 bin/abspath.py create mode 100755 bin/browser-stack.py create mode 100755 bin/browser_stack.py create mode 100755 bin/cgmem_nice create mode 100755 bin/cleanup-filenames-recursive.sh create mode 100755 bin/cleanup-filenames.sh create mode 100755 bin/cleanup-recode.sh create mode 100755 bin/cmp.py create mode 100755 bin/compyle create mode 100755 bin/compyle-ptl create mode 100755 bin/compyle4vim.py create mode 100755 bin/compyleall create mode 100755 bin/compyleall-ptl create mode 100755 bin/decode-URLs.py create mode 100755 bin/distutils create mode 100755 bin/doc2html1 create mode 100755 bin/doc2html2 create mode 100755 bin/doc2html_web create mode 100755 bin/e create mode 100755 bin/find_home_grep.sh create mode 100755 bin/fromdos create mode 100755 bin/fromwin create mode 100755 bin/get_html_encoding.py create mode 100755 bin/get_xml_encoding.py create mode 120000 bin/gmplay create mode 100755 bin/iconv.py create mode 100755 bin/iconvx.py create mode 100755 bin/iconvxml.py create mode 100755 bin/idna.py create mode 100755 bin/koi2lat create mode 100755 bin/l create mode 100755 bin/l8 create mode 100755 bin/lat2koi create mode 100755 bin/latin1_to_ascii.py create mode 100755 bin/ll create mode 100755 bin/llp create mode 100755 bin/m create mode 100755 bin/mc_type.py create mode 100755 bin/mconfig create mode 100755 bin/mplay create mode 100755 bin/mutt8 create mode 100755 bin/p create mode 100755 bin/r create mode 100755 bin/recode-filenames-recursive.py create mode 100755 bin/recode-inplace create mode 100755 bin/recode_filenames.py create mode 100755 bin/replace create mode 100755 bin/reset_tty create mode 100755 bin/rm-pyc create mode 100755 bin/rumutt create mode 100755 bin/s create mode 100755 bin/screen-hardcopy create mode 100755 bin/setattrs.sh create mode 100755 bin/setnormattrs.sh create mode 100755 bin/smplay create mode 120000 bin/smplay-gui create mode 100755 bin/start-browser create mode 100755 bin/t create mode 100755 bin/text-wrap.py create mode 100755 bin/todos create mode 100755 bin/towin create mode 100755 bin/tt create mode 100755 bin/untar-home create mode 100755 bin/unzip.py create mode 100755 bin/vim8 create mode 100755 bin/webbrowser create mode 100755 bin/webbrowser-encode-url create mode 100755 bin/webbrowserX create mode 100755 bin/webdump create mode 100755 bin/webdump2 create mode 100755 bin/webstdin create mode 100755 bin/wget-m create mode 100755 bin/wget-wrapper create mode 100755 bin/whence create mode 120000 bin/ww create mode 100755 bin/xtitle create mode 100755 bin/zip.py create mode 100644 lib/X11/.XKeysymDB create mode 100644 lib/X11/.Xmodmap create mode 100644 lib/X11/.Xresources create mode 100644 lib/X11/colors create mode 100644 lib/X11/conf create mode 100644 lib/X11/fonts create mode 100644 lib/X11/gvim create mode 100644 lib/X11/inputrc create mode 100644 lib/X11/misc create mode 100644 lib/X11/mosaic create mode 100644 lib/X11/netscape create mode 100644 lib/X11/utf-8.vars create mode 100644 lib/X11/xterm create mode 100644 lib/config/dbus create mode 100644 lib/config/gpg-agent create mode 100644 lib/config/gpg-agent-ssh create mode 100644 lib/config/gpg-agent-stop create mode 100644 lib/config/gpg-agent-update-tty create mode 120000 lib/config/mc-nice create mode 100644 lib/config/nice-mc create mode 100644 lib/config/wget create mode 100644 lib/python/init.py create mode 100644 lib/python/pdbrc.py diff --git a/.bashrc b/.bashrc new file mode 100644 index 0000000..867f11d --- /dev/null +++ b/.bashrc @@ -0,0 +1,2 @@ +if [ "$SHLVL" -eq 1 -a -f "$HOME"/.profile ] ; then . "$HOME"/.profile ; fi +if [ "$SHLVL" -gt 1 -a -f "$HOME"/.shellrc ] ; then . "$HOME"/.shellrc ; fi diff --git a/.cache/mc b/.cache/mc new file mode 120000 index 0000000..7b655f8 --- /dev/null +++ b/.cache/mc @@ -0,0 +1 @@ +../.mc \ No newline at end of file diff --git a/.cvsignore b/.cvsignore new file mode 100644 index 0000000..6d2a162 --- /dev/null +++ b/.cvsignore @@ -0,0 +1,7 @@ +*.pyc +*.pyo +*.swp +*.tmp +MANIFEST +build/ +dist/ diff --git a/.cvsrc b/.cvsrc new file mode 100644 index 0000000..a21420f --- /dev/null +++ b/.cvsrc @@ -0,0 +1,4 @@ +-z9 +cvs -z9 +#diff -c +#update -dP diff --git a/.fvwm/.fvwm2rc b/.fvwm/.fvwm2rc new file mode 100644 index 0000000..9d41a51 --- /dev/null +++ b/.fvwm/.fvwm2rc @@ -0,0 +1,113 @@ + +Read decorations + +Read globalfeel + +Read startup + +Read styles + +Read iconstyles + +Read functions + +Read bindings + +Read menus + +Read modules + +# +# * What are the default bindings? +# +# Mouse bindings: +# -------------- +# +# Mouse 1 on the root window: main menu +# Mouse 2 on the root window: window operations menu +# Mouse 3 on the root window: Window List of all normal applications +# Ctrl-Mouse 3 on the root window: Window List of all skipped applications +# +# Alt-Mouse x inside a window: as Mouse x on the root window +# Shift-Alt-Mouse 3 inside a window: Raise or Lower + +# Mouse 1 on the title: Raise, Move for a drag, shade for a double click +# Mouse 1 on the borders: Raise, Resize for a drag, shade for a double click +# Mouse 1 on an icon: Move, Raise on one click, deiconify for a double +# Alt-Mouse 1 on an icon; Raise all the icons +# Ctrl-Mouse 1 on the borders: As mouse 1 on the title +# Mouse 2 on the title or the borders: window operations menu +# Mouse 2 on an icon: deiconify +# Mouse 3 on the title/borders: Raise or Lower +# Mouse 3 on an icon: The "modules/icons" window operations menu +# +# Window Buttons: +# -------------- +# +# - Left button: +# Mouse 1: Window operation menu, double click: close +# Mouse 2: Group operations menu +# Mouse 3: Quick Move window menu +# - Close button (right button) +# Mouse 1: Close +# Mouse 2: Close all the windows with the same class +# Mouse 3: Destroy +# - Maximize button (2nd right button) +# Mouse 1: Full Maximize +# Mouse 2: Maximize Horizontally +# Mouse 3: Maximize Vertically +# - Iconify button (3rd right button) +# Mouse 1: Iconify +# Mouse 2: Iconify all the windows with the same class +# Mouse 3: Shade all the windows with the same class +# +# Key bindings (anywhere): +# ------------ +# +# Shift-Left/Right/Up/Down: scroll Left/Right/Up/Down by 1 page +# Alt-Left/Right/Up/Down: scroll Left/Right/Up/Down by 1/10 page +# +# Shift-Ctrl-Left/Right/Up/Down: move the pointer by 1O% of a page +# Alt-Ctrl-Left/Right/Up/Down: move the pointer by 1% of a page +# +# Alt-Ctrl-PageUp/PageDown: scroll by one desktop page +# +# Shift-Alt-F1: Main menu +# Shift-Alt-F2: Window operations menu +# Shift-Alt-F3: WindowList +# Shift-Alt-F4: Close +# Shift-Alt-F5: RaiseLower +# Shift-Alt-F6: Raise all Icons +# Shift-Alt-F7: Move +# Shift-Alt-F8: Resize +# Shift-Alt-F9: Iconify +# Shift-Alt-F10: Maximize +# Shift-Alt-F11: Identify +# Shift-Alt-F12: Console +# +# Alt-Tab released at once: previous (normal) window +# Alt-Tab: WindowList of all normal windows and warp to the selected window +# when released +# +# Ctrl-Alt-Tab: WindowList of all skipped windows +# +# Stroke bindings: +# --------------- +# +# You need to have FVWM compiled with stroke support (these bindings +# are defined only in this case) and libstroke installed. +# Mouse button 3 is used (this button must be pressed during the stroke), +# no modifiers are needed when you start your mouse motion on the root +# window and you must use the Alt modifier if you start your mouse motion +# on a window (you cannot start your motion on a window title bar or frame). +# The mouses motion: +# +# A | from the top to the bottom: your preferred terminal +# A | from the bottom to the top: your prefered editor +# A / from the bottom to the top: your prefered file manager +# A C from the top: xcalc +# A N (from the bottom): netscape +# A clockwise box from the top left: FvwmForm-QuitVerify +# + +ModuleSynchronous FvwmM4 -lock phd.m4 diff --git a/.fvwm/bindings b/.fvwm/bindings new file mode 100644 index 0000000..8e8d063 --- /dev/null +++ b/.fvwm/bindings @@ -0,0 +1,233 @@ +#-----------------------------------------------------------------------------# +# +# 9. Mouse, frame buttons and keyboard bindings +# +#-----------------------------------------------------------------------------# + + +#------------------------------------------------------------------------------ +# First, for the mouse in the root window (Context=R) +# Button 1 gives the Utilities menu +# Button 2 gives the Window Ops menu +# Button 3 gives the WindowList (like TwmWindows) +# I use the AnyModifier (A) option for the modifier field, so you can hold down +# any Shift-Ctrl-whatever combination you want! +# Moreover on a window the same bindings are defined with the Alt modifier +#------------------------------------------------------------------------------ + + +# Button Context Modifi Function + +Mouse 1 R A Menu Utilities mouse -1p -1p +Mouse 2 R A Menu Window mouse -1p -1p +Mouse 3 R A WindowList mouse -1p -1p +Mouse 3 R C WindowList mouse -1p -1p OnlyListSkip + +#Mouse 1 W M Menu Utilities mouse -1p -1p +#Mouse 2 W M Menu Window mouse -1p -1p +#Mouse 3 W M WindowList mouse -1p -1p +#Mouse 3 W CM WindowList mouse -1p -1p OnlyListSkip + + +#G_SESSION 3 bind Shift Mouse * to gnomebutton +#Mouse 1 R S GnomeButton +#Mouse 2 R S GnomeButton +#Mouse 3 R S GnomeButton + +#------------------------------------------------------------------------------ +# Now the rest of the frame +# Here I invoke my complex functions for Move-or-lower, Move-or-Raise-Shade, +# and Resize-or-Raise. +#------------------------------------------------------------------------------ + +# Button 1 in the corners or sides, with any modifiers, gives resize or raise +Mouse 1 FS A Function "Resize-or-Raise-or-Shade" + +# Button 1 in the title, sides, w/ any modifiers, gives move or raise or shade +Mouse 1 T A Function "Move-or-Raise-or-Shade" +Mouse 1 FS C Function "Move-or-Raise-or-Shade" + +# Button 1 in an icons gives move for a drag, de-iconify for a double-click, +# raiselower for a single click +Mouse 1 I A Function "Move-or-Iconify-or-Raise" +# Alt Button 1 on an icons raise all icons +Mouse 1 I M All (CurrentPage Iconic) Raise + +# Button 2 in an icon, w/ any modifiers, gives de-iconify +Mouse 2 I A Iconify + +# Button 2 in the corners, sides, or title-bar gives the window ops menu +Mouse 2 FST A Menu Window-Ops2 + +# Button 3 anywhere in the decoration (except the title-bar buttons) +# does a raise-lower +Mouse 3 TSF A RaiseLower + +# Button 3 on a icon: +Mouse 3 I A Menu Window-Ops3 c+0 -101m + +# Button 3 in the window, with the Modifier-1 key (usually alt or diamond) +# gives Raise-Lower. Used to use control here, but that interferes with xterm +Mouse 3 W SM RaiseLower + + +#----------------------------------------------------------------------------- +# Mouse windows buttons binding +# buttons: 1 3 5 7 9 8 6 4 2 +#------------------------------------------------------------------------------ + + +# Button Context Modif Function +Mouse 1 1 A Function "window_ops_func" +Mouse 2 1 A Menu WindowGroupOps +Mouse 3 1 A Menu Move-Window +Mouse 1 2 A Close +Mouse 2 2 A All ($c) Close +Mouse 3 2 A Destroy +Mouse 1 4 A Maximize 100 100 +Mouse 2 4 A Maximize 0 100 +Mouse 3 4 A Maximize 100 0 +Mouse 1 6 A Iconify +Mouse 2 6 A All ($c) Iconify On +Mouse 3 6 A All ($c) WindowShade On + +#------------------------------------------------------------------------------ +# Now some keyboard shortcuts. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# press arrow + Shift anywhere, and scroll by 1 page +#------------------------------------------------------------------------------ + +#Key Left A S Scroll -100 0 +#Key Right A S Scroll +100 +0 +#Key Up A S Scroll +0 -100 +#Key Down A S Scroll +0 +100 + +#------------------------------------------------------------------------------ +# press arrow + Alt key, and scroll by 1/10 of a page +#------------------------------------------------------------------------------ + +#Key Left A M Scroll -10 +0 +#Key Right A M Scroll +10 +0 +#Key Up A M Scroll +0 -10 +#Key Down A M Scroll +0 +10 + +#------------------------------------------------------------------------------ +# press arrow + control-meta anywhere, and move the pointer by 1% of a page +#------------------------------------------------------------------------------ + +#Key Left A MC CursorMove -1 0 +#Key Right A MC CursorMove +1 +0 +#Key Up A MC CursorMove +0 -1 +#Key Down A MC CursorMove +0 +1 + +#------------------------------------------------------------------------------ +# press arrow + Shift-Alt key, and move the pointer by 1/10 of a page +#------------------------------------------------------------------------------ + +#Key Left A SM CursorMove -10 +0 +#Key Right A SM CursorMove +10 +0 +#Key Up A SM CursorMove +0 -10 +#Key Down A SM CursorMove +0 +10 + +#------------------------------------------------------------------------------ +# Page Up/Page Down keys are used to scroll by one desktop page +# in any context, press page up/down + control + alt +# in root context, just pressing page up/down is OK +#------------------------------------------------------------------------------ + +#Key Next A CM Desk -1 0 0 3 +#Key Next R M Desk -1 0 0 3 +#Key Prior A CM Desk +1 0 0 3 +#Key Prior R M Desk +1 0 0 3 + +#------------------------------------------------------------------------------ +# Alt-Shift-Fx window operations +#------------------------------------------------------------------------------ +#Key F4 A MS Close +#Key F5 A MS RaiseLower +#Key F6 A MS All (Iconic) Raise # originally Restore +#Key F7 A MS Move +#Key F8 A MS Resize +#Key F9 A MS Iconify +#Key F10 A MS Maximize 100 100 +#Key F11 A MS FvwmIdent +#Key F12 A MS FvwmConsole + +#------------------------------------------------------------------------------ +# The menus via Alt-Shift-Fx +#------------------------------------------------------------------------------ +#Key F1 A MS Menu Utilities mouse -1p -1p +#Key F2 A MS Menu Window mouse -1p -1p +#Key F3 A MS WindowList mouse -1p -1p + + +#------------------------------------------------------------------------------ +# The famous Alt-tab binding +#------------------------------------------------------------------------------ + +DestroyFunc my_dbltab2 +AddToFunc my_dbltab2 ++ I WindowListFunc $w +DestroyFunc my_dbltab_prev +AddToFunc my_dbltab_prev ++ I Prev my_dbltab2 + +#Key Tab A M WindowList Root c c NoGeometry, NoDeskSort, SelectOnRelease Alt_L my_dbltab_prev +#Key Tab A CM WindowList Root c c NoGeometry, OnlyListSkip, SelectOnRelease + + +#------------------------------------------------------------------------------ +# Stroke Bindings +#------------------------------------------------------------------------------ +# +# You need fvwm compiled with stroke support and libstroke installed +# See the Stroke and StrokeFunc entries in fvwm2 man page +# We use mostly simple stroke motion. For complex stroke motions we need +# to consider many sloppy stroke motions for each action. + +#STROKE 2 +Mouse 3 R N StrokeFunc FeedBack DrawMotion +Mouse 3 W M StrokeFunc FeedBack DrawMotion + +#STROKE 2 We need to redefine the default bindings +Stroke 0 0 R N WindowList mouse -1p -1p +Stroke 0 0 W M WindowList mouse -1p -1p + +#PREF 11 +#STROKE 2 A | from the top to the bottom +Stroke N852 0 R N Exec exec aterm +Stroke N852 0 W M Exec exec aterm + +#STROKE 2 A | from the bottom to the top +Stroke N258 0 R N Exec exec gvim +Stroke N258 0 W M Exec exec gvim + +#STROKE 2 A / from the bottom to the top +Stroke N159 0 R N Exec exec aterm -g 80x35 -e mc +Stroke N159 0 W M Exec exec aterm -g 80x35 -e mc + +#STROKE 2 A C from the top +Stroke N9874123 0 R N Exec exec xcalc +Stroke N9874123 0 W M Exec exec xcalc + +#STROKE 11 A N (from the bottom) +Stroke 7415963 0 R N Exec exec netscape +Stroke 74148963 0 R N Exec exec netscape +Stroke 74158963 0 R N Exec exec netscape +Stroke 7418963 0 R N Exec exec netscape +Stroke 415963 0 R N Exec exec netscape + +Stroke 7415963 0 W M Exec exec netscape +Stroke 74148963 0 W M Exec exec netscape +Stroke 74158963 0 W M Exec exec netscape +Stroke 7418963 0 W M Exec exec netscape +Stroke 415963 0 W M Exec exec netscape + +#STROKE 4 A clockwise box from the top left +Stroke N78963214 0 R N FvwmForm FvwmForm-QuitVerify +Stroke N789632147 0 R N FvwmForm FvwmForm-QuitVerify +Stroke N78963214 0 W M FvwmForm FvwmForm-QuitVerify +Stroke N789632147 0 W M FvwmForm FvwmForm-QuitVerify + diff --git a/.fvwm/config b/.fvwm/config new file mode 120000 index 0000000..29da2cf --- /dev/null +++ b/.fvwm/config @@ -0,0 +1 @@ +.fvwm2rc \ No newline at end of file diff --git a/.fvwm/decorations b/.fvwm/decorations new file mode 100644 index 0000000..f75b0d2 --- /dev/null +++ b/.fvwm/decorations @@ -0,0 +1,116 @@ +#-----------------------------------------------------------------------------# +# +# 2. Root cursor, Windows Decoration and Menu Styles: +# Default fonts, colors, Border, Title, Button Styles, Menu Styles +# window button bindings. +# (this section may be the theme part of the config, but you need to use +# FvwmTheme to define and propagate the colors) +#-----------------------------------------------------------------------------# + +#------------------------------------------------------------------------------ +# Set the root cursor +#------------------------------------------------------------------------------ + +#CursorStyle ROOT left_ptr +#CursorStyle TITLE left_ptr +#CursorStyle DEFAULT left_ptr +#CursorStyle SYS left_ptr +#CursorStyle MENU left_ptr + +#------------------------------------------------------------------------------ +# Fonts - one for window titles, another for icons, and another for the menus +#------------------------------------------------------------------------------ + +#WIN 1 +#Style * Font -*-times-medium-r-*-*-16-*-*-*-*-*-*-* +#FVWM 1 +Style * Font -*-times-bold-r-*-*-14-*-*-*-*-*-*-* + +Style * IconFont fixed + +#------------------------------------------------------------------------------ +# Set the default window colors. +#------------------------------------------------------------------------------ + +# Text and background color for the title bar (overridden in the WIN case), +# and the border of the inactive window (also used by icon title, +# and "hilight" and "shadow" colors). +#WIN 1 +#Style * ForeColor #c3c3c3, BackColor #c3c3c3 +#FVWM 1 +Style * ForeColor #c3c3c3, BackColor grey51 + +# Text and background color for the title bar (overriden in the WIN case), +# and the border of the active (selected) window (also used by icon title, +# and "hilight" and "shadow" colors). +#WIN 1 +#Style * HilightFore white, HilightBack #c3c3c3 +#FVWM 1 +Style * HilightFore white, HilightBack SlateBlue + +#------------------------------------------------------------------------------ +# Border, Title and Button Styles +#------------------------------------------------------------------------------ +Style * BorderWidth 5, HandleWidth 5 + +#WIN 13 +#Style "*" FvwmBorder # MWMBorder +#Style "*" FvwmButtons +#BorderStyle Inactive -- HiddenHandles NoInset +#BorderStyle Active -- HiddenHandles NoInset +#TitleStyle ActiveUp (solid Blue4 -- Flat) +#TitleStyle ActiveDown (solid Blue4 -- Flat) +#TitleStyle Inactive (solid grey51 -- Flat) +#TitleStyle LeftJustified +#ButtonStyle 1 MiniIcon (-- flat) +#ButtonStyle all -- UseTitleStyle Flat +#AddButtonStyle 2 Pixmap mini.winXX-close.xpm +#AddButtonStyle 4 Pixmap mini.winXX-maximize.xpm +#AddButtonStyle 6 Pixmap mini.winXX-minimize.xpm + +#FVWM 11 +Style "*" FvwmBorder +Style "*" MWMButtons +TitleStyle Centered +ButtonStyle all -- UseTitleStyle +ButtonStyle 2 17 20x20@1 30x20@1 50x40@1 70x20@1 80x20@1 80x30@0 60x50@0 80x70@1 80x80@0 70x80@0 50x60@0 30x80@0 20x80@0 20x70@0 40x50@1 20x30@0 20x20@1 +ButtonStyle 4 4 50x25@1 75x75@0 25x75@0 50x25@1 +ButtonStyle 6 4 50x65@1 35x35@1 65x35@1 50x65@0 +ButtonStyle 1 - Clear MWMDecorMenu +ButtonStyle 2 - Clear +ButtonStyle 4 - Clear MWMDecorMax +ButtonStyle 6 - Clear MWMDecorShade + +#------------------------------------------------------------------------------ +# The MenuStyle command allows almost full control over menu look and feel. +# We use the preconfigured 'Win' or 'Fvwm' default. This resets most other +# options and must be set first. We also define a menu called winops for +# the windows operations menus and very long one. The menus which use this +# style are (and must) be defined in the end of the menus. +#------------------------------------------------------------------------------ + +#WIN 4 +#MenuStyle * win +#MenuStyle * font -*-times-medium-r-*-*-16-*-*-*-*-*-*-* +#MenuStyle * Foreground black, Background grey80 +#MenuStyle * ActiveFore white, HilightBack Blue4 +#FVWM 5 +MenuStyle * fvwm +MenuStyle * font -*-times-bold-r-*-*-14-*-*-*-*-*-*-* +MenuStyle * Foreground black, Background grey80 +MenuStyle * ActiveFore black, HilightBack grey85 +MenuStyle * Hilight3DThick + +MenuStyle * Greyed grey60 # default is invisible on backgroud grey80 +MenuStyle * VerticalItemSpacing 2 4, VerticalTitleSpacing 2 4 + +CopyMenuStyle * winops + +#WIN 1 +#MenuStyle winops font -*-times-medium-r-*-*-14-*-*-*-*-*-*-* +#FVWM 2 +MenuStyle winops font -*-times-bold-r-*-*-12-*-*-*-*-*-*-* +MenuStyle winops TitleWarpOff + +MenuStyle winops VerticalItemSpacing 1 2, VerticalTitleSpacing 1 2 + diff --git a/.fvwm/functions b/.fvwm/functions new file mode 100644 index 0000000..c438f27 --- /dev/null +++ b/.fvwm/functions @@ -0,0 +1,413 @@ +#----------------------------------------------------------------------------# +# +# 8. Now define some handy complex functions +# +#----------------------------------------------------------------------------# + +#------------------------------------------------------------------------------ +# This one moves and then raises the window if you drag the mouse, +# only raises the window if you click, or does a vertical maximize if +# you double click (full screen maximize would be 'Maximize 100 100') +#------------------------------------------------------------------------------ + +DestroyFunc Move-or-Raise +AddToFunc Move-or-Raise M Move ++ M Raise ++ C Raise ++ D Maximize 0 100 + + +#------------------------------------------------------------------------------ +# As above but double click shade +#------------------------------------------------------------------------------ + +DestroyFunc Move-or-Raise-or-Shade +AddToFunc Move-or-Raise-or-Shade M Move ++ M Raise ++ C Raise ++ D WindowShade + +#------------------------------------------------------------------------------ +# This one moves and then lowers the window if you drag the mouse, +# only lowers the window if you click, or does a RaiseLower if you double +# click +#------------------------------------------------------------------------------ + +DestroyFunc Move-or-Lower +AddToFunc Move-or-Lower M Move ++ M Lower ++ C Lower ++ D RaiseLower + + +#------------------------------------------------------------------------------ +# This one moves or (de)iconifies: +#------------------------------------------------------------------------------ + +DestroyFunc Move-or-Iconify-or-Raise +AddToFunc Move-or-Iconify-or-Raise M Move ++ C Raise ++ D Iconify + +#------------------------------------------------------------------------------ +# This one maximizes vertically if you click (leaving room for the taskbar +# at the bottom, or does a full maximization if you double click, or a +# true full vertical maximization if you just hold the mouse button down. +#------------------------------------------------------------------------------ + +DestroyFunc Maximize-Func +AddToFunc Maximize-Func M Maximize 0 98 ++ C Maximize 0 100 ++ D Maximize 100 98 + +#------------------------------------------------------------------------------ +# This one resizes and then raises the window if you drag the mouse, +# only raises the window if you click, or does shade if you double +# click +#------------------------------------------------------------------------------ + +DestroyFunc Resize-or-Raise-or-Shade +AddToFunc Resize-or-Raise-or-Shade M Resize ++ M Raise ++ C Raise ++ D WindowShade + + +#------------------------------------------------------------------------------ +# This one focuses and then 'warps' to the window. +#------------------------------------------------------------------------------ + + +DestroyFunc FocusAndWarp +AddToFunc FocusAndWarp I Focus ++ I WarpToWindow 1 1 + + +#------------------------------------------------------------------------------ +# Like the previous one, but de-iconifies first. +#------------------------------------------------------------------------------ + +DestroyFunc DeiconifyFocusAndWarp +AddToFunc DeiconifyFocusAndWarp I Iconify off ++ I FocusAndWarp + +#------------------------------------------------------------------------------ +# Like the previous one, but only Raise. +#------------------------------------------------------------------------------ + +DestroyFunc DeiconifyFocusAndRaise +AddToFunc DeiconifyFocusAndRaise I Iconify off ++ I Focus ++ I Raise + +#------------------------------------------------------------------------------ +# This one is used to modify some style for a window (almost obsolet) +#------------------------------------------------------------------------------ + +DestroyFunc StyleAndRecapture +AddToFunc StyleAndRecapture I Style "$0" $1 ++ I All ("$0") RecaptureWindow + + +#------------------------------------------------------------------------------ +# A really useful one: de-iconifies, warps to the window +# or creates it if it doen't exist (often used with mailtools) +#------------------------------------------------------------------------------ + +DestroyFunc WarpOrExec +AddToFunc WarpOrExec I Next (AcceptsFocus $0) Iconify -1 ++ I Next (AcceptsFocus $0) FocusAndWarp ++ I None (AcceptsFocus $0) Exec $0 $1 + +#------------------------------------------------------------------------------ +# For the left button +#------------------------------------------------------------------------------ + +DestroyMenu "window_ops_func" +AddToFunc "window_ops_func" "C" PopUp Window-Ops2 ++ "M" PopUp Window-Ops2 ++ "D" Delete + +#------------------------------------------------------------------------------ +# Functions to restart Modules and Restart/Kill FvwmButtons by aliases +#------------------------------------------------------------------------------ + +DestroyFunc RestartModule +AddToFunc RestartModule ++ I KillModule $0 ++ I Module $0 + +DestroyFunc RestartModuleByAlias +AddToFunc RestartModuleByAlias ++ I All ($2) Close ++ I Module $0 $1 + + +# This function is for WMakerFvwmButtons (start or iconify id started) +DestroyFunc MyPanelButtons +AddToFunc MyPanelButtons ++ I All ($0) Iconify ++ I None (CirculateHit $0) FvwmButtons -g +$1+$2 $0 + +#------------------------------------------------------------------------------ +# Functions for FvwmScript-BaseConfig +#------------------------------------------------------------------------------ + +DestroyFunc BaseConfigOkFunc +AddToFunc BaseConfigOkFunc I Read styles + +DestroyFunc BaseConfigApplyFunc +AddToFunc BaseConfigApplyFunc I Read styles + + +#------------------------------------------------------------------------------ +# Functions which start and save state for FvwmAnimate, FvwmEvent, etc ... +# $1 $2 is used only by FvwmAuto +#------------------------------------------------------------------------------ + +DestroyFunc ModuleOn +AddToFunc ModuleOn ++ I KillModule $0 ++ I Module $0 $1 $2 ++ I Exec echo "AddToFunc StartFunction I $0 $1 $2" > $FVWM_USERDIR/.start-$0 + +DestroyFunc ModuleOff +AddToFunc ModuleOff ++ I KillModule $0 ++ I Exec echo "# Do not start $0" > $FVWM_USERDIR/.start-$0 + +#------------------------------------------------------------------------------ +# Functions which start and save state for MiniButtons and WinMakerAppButtons +#------------------------------------------------------------------------------ + +DestroyFunc ButtonsOn +AddToFunc ButtonsOn ++ I All ($2) Close ++ I Module $0 $1 ++ I Exec echo "AddToFunc StartFunction I $0 $1" > $FVWM_USERDIR/.start-$1 + +DestroyFunc ButtonsOff +AddToFunc ButtonsOff ++ I All ($1) Close ++ I Exec echo "# Do not start $0" > $FVWM_USERDIR/.start-$0 + +#------------------------------------------------------------------------------ +# Functions for choosing the "Big" buttons Wharf or BarButtons +#------------------------------------------------------------------------------ + +DestroyFunc ChangeButtonsOn +AddToFunc ChangeButtonsOn ++ I All (BarButtons) Close ++ I KillModule FvwmWharf ++ I Exec echo "AddToFunc StartFunction I $0" > $FVWM_USERDIR/.start-FvwmButtons ++ I $0 + +DestroyFunc ChangeButtonsOff +AddToFunc ChangeButtonsOff ++ I All (BarButtons) Close ++ I KillModule FvwmWharf ++ I Exec echo "# No Buttons Bar" > $FVWM_USERDIR/.start-FvwmButtons ++ I $0 + +#------------------------------------------------------------------------------ +# Functions for Raising modules only +#------------------------------------------------------------------------------ + +DestroyFunc StartModulesAutoRaise +AddToFunc StartModulesAutoRaise ++ I Style FvwmDesker Lenience ++ I FvwmAuto 400 Silent ModulesAutoRaise ++ I Exec echo "AddToFunc StartFunction I StartModulesAutoRaise" > $FVWM_USERDIR/.start-FvwmAuto + +DestroyFunc ModulesAutoRaise +AddToFunc ModulesAutoRaise ++ I Current (FvwmButtons) Raise ++ I Current (FvwmTaskBar) Raise ++ I Current (FvwmIconBox) Raise ++ I Current (FvwmDesker) Raise ++ I Current (FvwmIconMan) Raise ++ I Current (FvwmWinList) Raise ++ I Current (FvwmWharf) Raise ++ I Current (panel) Raise + +#------------------------------------------------------------------------------ +# Functions which start and save a background +#------------------------------------------------------------------------------ + +DestroyFunc SetBackground +AddToFunc SetBackground ++ I KillModule FvwmBacker ++ I $0 ++ I Exec echo "AddToFunc StartFunction I $0" > $FVWM_USERDIR/.start-Background + +DestroyFunc SetBackgroundOff +AddToFunc SetBackgroundOff ++ I KillModule FvwmBacker ++ I Exec echo "# Background disabled" > $FVWM_USERDIR/.start-Background + +#------------------------------------------------------------------------------ +# Functions which start and defines which applications manager we use +#------------------------------------------------------------------------------ + +DestroyFunc ChangeAppsMan +AddToFunc ChangeAppsMan ++ I KillModule FvwmTaskBar ++ I KillModule FvwmWinList ++ I KillModule FvwmIconMan ++ I KillModule FvwmIconBox ++ I Exec echo "AddToFunc StartFunction I $0" > $FVWM_USERDIR/.start-apps-man ++ I $0 + +DestroyFunc AppsManNone +AddToFunc AppsManNone ++ I Style * NoIcon ++ I KillModule FvwmTaskBar ++ I KillModule FvwmWinList ++ I KillModule FvwmIconMan ++ I KillModule FvwmIconBox ++ I Exec echo "AddToFunc StartFunction I Style * NoIcon # No applications Manager" > $FVWM_USERDIR/.start-apps-man + +DestroyFunc UseIcons +AddToFunc UseIcons ++ I Style * Icon ++ I Read iconstyles +# Need to reaload menus for KDE mini-icons styles ++ I Read menus ++ I KillModule FvwmTaskBar ++ I KillModule FvwmWinList ++ I KillModule FvwmIconMan ++ I KillModule FvwmIconBox ++ I Exec echo "# Use Icons" > $FVWM_USERDIR/.start-apps-man + +DestroyFunc WinListDesk +AddToFunc WinListDesk ++ I Style * NoIcon ++ I *FvwmWinList: ShowCurrentDesk ++ I Module FvwmWinList + +DestroyFunc WinListGlobal +AddToFunc WinListGlobal ++ I Style * NoIcon ++ I DestroyModuleConfig FvwmWinList: ShowCurrent* ++ I Module FvwmWinList + +DestroyFunc TaskBarDesk +AddToFunc TaskBarDesk ++ I Style * NoIcon ++ I DestroyModuleConfig FvwmTaskBar: AutoHid* ++ I *FvwmTaskBar: DeskOnly ++ I Module FvwmTaskBar + +DestroyFunc TaskBarGlobal +AddToFunc TaskBarGlobal ++ I Style * NoIcon ++ I DestroyModuleConfig FvwmTaskBar: AutoHid* ++ I DestroyModuleConfig FvwmTaskBar: Desk* ++ I Module FvwmTaskBar + +DestroyFunc TaskBarDeskAutoHide +AddToFunc TaskBarDeskAutoHide ++ I Style * NoIcon ++ I *FvwmTaskBar: DeskOnly ++ I *FvwmTaskBar: AutoHide ++ I Module FvwmTaskBar + +DestroyFunc TaskBarGlobalAutoHide +AddToFunc TaskBarGlobalAutoHide ++ I Style * NoIcon ++ I DestroyModuleConfig FvwmTaskBar: Desk* ++ I *FvwmTaskBar: AutoHide ++ I Module FvwmTaskBar + +DestroyFunc IconManGlobal +AddToFunc IconManGlobal ++ I Style * NoIcon ++ I *FvwmIconMan: *Resolution global ++ I Module FvwmIconMan + +DestroyFunc IconManDesk +AddToFunc IconManDesk ++ I Style * NoIcon ++ I *FvwmIconMan: *Resolution desk ++ I Module FvwmIconMan + +DestroyFunc IconManPage +AddToFunc IconManPage ++ I Style * NoIcon ++ I *FvwmIconMan: *Resolution page ++ I Module FvwmIconMan + +DestroyFunc IconBoxDesk +AddToFunc IconBoxDesk ++ I Style * NoIcon ++ I *FvwmIconBox: ResolutionDesk ++ I Module FvwmIconBox + +DestroyFunc IconBoxGlobal +AddToFunc IconBoxGlobal ++ I Style * NoIcon ++ I DestroyModuleConfig FvwmIconBox: Reso* ++ I Module FvwmIconBox + +#------------------------------------------------------------------------------ +# Functions for Layers +#------------------------------------------------------------------------------ + +DestroyFunc SetLayers +AddToFunc SetLayers ++ I StyleAndRecapture $n $0 ++ I Exec F=$FVWM_USERDIR; Z=$F/.fvwm-layers; T=$F/.tmp-layers; if grep -qe "$n" $Z; then sed -e "s/\ $n\ .*/\ $n\ $0/" $Z>$T; cat $T>$Z; else echo "Style $n $0" >>$Z; fi + +DestroyFunc DestroyLayers +AddToFunc DestroyLayers ++ I StyleAndRecapture $n StaysPut ++ I Exec F=$FVWM_USERDIR; Z=$F/.fvwm-layers; T=$F/.tmp-layers; sed -e "/^Style\ $n\ .*/d" $Z>$T; cat $T>$Z + +#------------------------------------------------------------------------------ +# Function for reloading the icons styles +#------------------------------------------------------------------------------ + +DestroyFunc ReloadIconStylesAndMenus +AddToFunc ReloadIconStylesAndMenus ++ I Read iconstyles ++ I Read menus +# Need to reload the NoIcon style ++ I PipeRead 'if grep -qe AddToFunc $FVWM_USERDIR/.start-apps-man; then echo "Style * NoIcon"; fi' + +#------------------------------------------------------------------------------ +# Functions for Loading/Saving/Showing Settings +#------------------------------------------------------------------------------ + +DestroyFunc SaveAsSettings +AddToFunc SaveAsSettings ++ I Exec F=$FVWM_USERDIR;for i in ~/.xinitrc-fvwm $F/.FvwmBaseConfig $F/.FvwmAnimate $F/.FvwmForm $F/.start-Background $F/.start-apps-man $F/.start-FvwmButtons $F/.start-DeskerPanelButtons $F/.start-MiniButtons $F/.start-WinMakerAppButtons $F/.start-FvwmAnimate $F/.start-FvwmAuto $F/.start-FvwmBanner $F/.start-FvwmEvent $F/.fvwm-layers; do [ ! -f "$i" ] || /bin/cp $i $i-$0; done; + +DestroyFunc LoadSettings +AddToFunc LoadSettings ++ I Exec F=$FVWM_USERDIR; for i in ~/.xinitrc-fvwm $F/.FvwmBaseConfig $F/.FvwmAnimate $F/.FvwmForm $F/.start-Background $F/.start-apps-man $F/.start-FvwmButtons $F/.start-DeskerPanelButtons $F/.start-MiniButtons $F/.start-WinMakerAppButtons $F/.start-FvwmAnimate $F/.start-FvwmAuto $F/.start-FvwmBanner $F/.start-FvwmEvent $F/.fvwm-layers; do [ ! -f "$i-$0" ] || /bin/cp $i-$0 $i; done; ++ I Exec [ ! -f ~/.xinitrc-fvwm-$0 ] || (xscreensaver-command -exit; ~/.xinitrc-fvwm-$0) ++ I PipeRead '[ ! -f $FVWM_USERDIR/.FvwmBaseConfig ] || (echo Read .FvwmBaseConfig; echo BaseConfigOkFunc)' ++ I Style * StaysPut ++ I Read .fvwm-layers-$0 ++ I KillModule FvwmAnimate ++ I KillModule FvwmAuto ++ I KillModule FvwmEvent ++ I KillModule FvwmButtons ++ I KillModule FvwmWharf ++ I KillModule FvwmTaskBar ++ I KillModule FvwmWinList ++ I KillModule FvwmIconMan ++ I KillModule FvwmIconBox ++ I PipeRead 'F=$FVWM_USERDIR; F=$FVWM_USERDIR; for i in $F/.start-Background $F/.start-apps-man $F/.start-FvwmButtons $F/.start-DeskerPanelButtons $F/.start-MiniButtons $F/.start-WinMakerAppButtons $F/.start-FvwmAnimate $F/.start-FvwmAuto $F/.start-FvwmBanner $F/.start-FvwmEvent; do [ ! -f "$i-$0" ] || sed -e s/AddToFunc\\.StartFunction\\.I\\.// $i-$0; done; if [ -f "$F/.start-apps-man-$0" ]; then if grep -qe Icons $F/.start-apps-man-$0; then echo "Style * Icon"; echo "Read iconstyles"; echo "Read menus"; fi; fi' + +DestroyFunc ShowFvwmSettings +AddToFunc ShowFvwmSettings I Exec F=$FVWM_USERDIR;f=$F/.tmp-modules-setting; echo "" > $f; for j in 0 1 2 3 4; do if [ "$j" -eq "0" ]; then j=""; t="Current Setting:"; l="--------------"; else j="-$j"; t="Setting$j:"; l="---------"; fi; echo $t >> $f; echo $l >> $f; for i in $F/.start-Background $F/.start-apps-man $F/.start-FvwmButtons $F/.start-DeskerPanelButtons $F/.start-MiniButtons $F/.start-WinMakerAppButtons $F/.start-FvwmAnimate $F/.start-FvwmAuto $FVWM_USERDIR/.start-FvwmBanner $F/.start-FvwmEvent; do z="$i$j"; [ ! -f "$z" ] || sed -e s/^\\#\.// -e s/\.*exec/Background:/ -e s/AddToFunc\.StartFunction\.I/Start/ -e s/FvwmEvent/Sounds\ Effect/ $z >> $f; done; echo -n "Base Config: ">>$f; if [ -f $F/.FvwmBaseConfig$j ]; then echo "Used">>$f; else echo "Not Used">>$f; fi; echo "">>$f;done; xmessage -file $f + +DestroyFunc ShowXSettings +AddToFunc ShowXSettings \ +I Exec T=$FVWM_USERDIR/.tmp-x-set;u=~/.xinitrc-fvwm;echo "">$T;for j in 0 1 2 3 4;do if [ "$j" -eq "0" ];then z=$u;t="Current Setting:";else z="$u-$j";t="Setting-$j:";fi;echo $t >>$T;if grep -qe Bell $z;then grep -e "xset b" $z|sed -e s/xset\.b/Bell:/>>$T;fi;if grep -qe Screen $z;then echo -n "Background: ">>$T;if grep -qe \#xsetroot $z;then echo "disabled">>$T;elif grep -qe xpmroot $z;then grep -e xpmroot $z|sed -e s/xpmroot\.//>>$T;else grep -e xsetroot $z|sed -e s/xsetroot\.//>>$T;fi;grep -e "xset s" $z|sed -e s/xset\.s/xsaver:/>>$T;echo -n "DPMS: ">>$T;grep -e xset\.*dpms $z|sed -e s/xset\.-dpms/Off/ -e s/xset\.dpms/On/>>$T;echo -n "xscreensaver: ">>$T;if grep -qe \#xscreen $z;then echo "Off">>$T;else echo "On">>$T;fi;fi;if grep -qe Keyboard $z;then echo -n "Keyboard: ">>$T;grep -e "xset r" $z|sed -e s/xset\.r/auto\ repeat/ -e s/c/Vol/>>$T;fi;if grep -qe Pointer $z;then echo -n "Mouse: ">>$T;grep -e "xset m" $z|sed -e s/xset\.m//>>$T;fi;echo "">>$T;done;xmessage -file $T + + +DestroyFunc ShowLayers +AddToFunc ShowLayers I Exec F=$FVWM_USERDIR; T=$F/.tmp-layers; echo -e "A StaysOnTop window is a window which is above \nthe normal (i.e., StaysPut) windows, a StaysOnBottom\nwindow is below the normal windows. Here the list\nof StaysOnTop and StaysOnBottom windows:\n"> $T; u=$F/.fvwm-layers; for j in 0 1 2 3 4; do if [ "$j" -eq "0" ];then z=$u; t="Current Setting:"; l="---------------"; else z="$u-$j"; t="Setting-$j:"; l="----------"; fi; echo $t >>$T; echo $l >>$T; [ ! -f $z ] || cat $z>>$T; echo "" >> $T; done; xmessage -file $T + diff --git a/.fvwm/globalfeel b/.fvwm/globalfeel new file mode 100644 index 0000000..7f6a84a --- /dev/null +++ b/.fvwm/globalfeel @@ -0,0 +1,123 @@ +#-----------------------------------------------------------------------------# +# +# 3. Set up the major operating modes +# +#-----------------------------------------------------------------------------# + +# WARNING!!! +# +# If you use (or ever used) Settings-->Configuration-->Base Config +# to configure your major operating modes then all commands in this +# section 3 are overridden by the last line of this section (PipeRead). +# So, you can comment the last line of this section. +# Or, instead, you can remove all the lines of this section but the last one. +# +# If you use Base Config and this section has some application dependent +# styles, a suggested solution is to move them to the styles file. +# This way Base Config does not destroy your application specific +# styles when you use it. + +#WIN 1 To have more WIN-like behavior +#Emulate win +#FVWM 1 +Emulate fvwm + +HideGeometryWindow Never + +#WIN 1 +#SnapAttraction 10 SameType Screen +#FVWM 1 +Style * SnapAttraction 0 + +#FAST 3 +OpaqueMoveSize 100 +Style * ResizeOpaque +Style * WindowShadeSteps 20 +#SLOW 3 +#OpaqueMoveSize 0 +#Style * ResizeOutline +#Style * WindowShadeSteps 0 + + +EdgeScroll 0 0 +#EdgeResistance 500 0 +EdgeThickness 1 + +# +# The focus policy. Once you are used to clicking *inside* windows to +# raise them you will not want to lose this feature. +# +Style * SloppyFocus +#Style * MouseFocusClickRaises + +# +# MinOverlapPlacement places window automatically in a way that attempts to be +# place windows 'intelligent'. +# +Style * MinOverlapPlacement + +# +# NoPPosition instructs FVWM to ignore the PPosition field in window +# geometry hints. Emacs annoyingly sets PPosition to (0,0)! +# + +Style * NoPPosition + +Style * GrabFocusOff + +# If you ever used Base Config, then the next line overrides this section +# with the settings you defined! In this case you may replace the whole +# section 3 by one command "Read .FvwmBaseConfig". +PipeRead '[ ! -f $FVWM_USERDIR/.FvwmBaseConfig ] || echo Read .FvwmBaseConfig' + +#----------------------------------------------------------------------------# +# +# 4. Miscellaneous Major operating mode +# +#----------------------------------------------------------------------------# + +#------------------------------------------------------------------------------ +# Set the desk top size in units of physical screen size +#------------------------------------------------------------------------------ + +DeskTopSize 2x2 + +#------------------------------------------------------------------------------ +# Some good things (in general) +#------------------------------------------------------------------------------ +Style * MWMFunctions +Style * MWMDecor +Style * HintOverride +Style * OLDecor + +BusyCursor DynamicMenu True, Read True + +#------------------------------------------------------------------------------ +# transient windows +#------------------------------------------------------------------------------ + +# You can do a lot of things with transient windows. However, you may +# want to set transient style by application (in styles). +# Heres one example: +# +# If you want to decorate transient windows: +#Style * DecorateTransient +# In *general* it is not a good idea to be able to lower transient window +# under its main window, but why not... +#Style * DontRaiseTransient +# In my HO the defaults (which are "Motif" compliant) are good. + +#------------------------------------------------------------------------------ +# bogus hack +#------------------------------------------------------------------------------ + +# +# FVWM has a command for bogus applications. Here an example with KFM +# + +#KFM_ICONS 1 uncomment the next line if you use the KFM "icons" +#BugOpts RaiseOverUnmanaged on + +#PANEL_PUT 1 you may try this for a "stays put" gnome panel +#DefaultLayers 6 8 10 + diff --git a/.fvwm/iconstyles b/.fvwm/iconstyles new file mode 100644 index 0000000..dc57849 --- /dev/null +++ b/.fvwm/iconstyles @@ -0,0 +1,252 @@ +#-----------------------------------------------------------------------------# +# +# 7. Set applications Mini Icons and Icons +# +#-----------------------------------------------------------------------------# + +# Note: Most applications provide an icon. + +Style * IconBox 10 -80 -0 -0, IconGrid 64 64, IconFill left bottom, \ + IconBox 10 +300 -150 -80, IconGrid 64 64, IconFill bottom left +Style * SlipperyIcon, IconTitle + + +# default +Style * MiniIcon mini.doc.xpm, Icon page.xpm + +# Terminals +Style *term* MiniIcon mini.term.xpm, Icon rterm2.xpm +Style rxvt MiniIcon mini.term.xpm, Icon rterm2.xpm + +# Accessories +Style xcalc MiniIcon mini.calc.xpm, Icon rcalc2.xpm +Style xconsole MiniIcon mini.term.xpm, Icon rtrem2.xpm +Style xmag MiniIcon mini.zoom.xpm, Icon mag_glass.xpm +Style xfontsel MiniIcon mini.font.xpm, Icon toolbox.xpm +Style xgrab MiniIcon mini.camera.xpm +Style *clock* MiniIcon mini.clock.xpm +#Style ddd MiniIcon mini.bug2.xpm +#Style xgdb MiniIcon mini.bug2.xpm +Style XClipboard MiniIcon mini.clipboard.xpm, Icon toolbox.xpm +Style *color* MiniIcon mini.colors.xpm, Icon resize + +# Applications +#Style lyx MiniIcon mini.edit.xpm +#Style thot MiniIcon mini.edit.xpm +#Style ghostview MiniIcon mini.gv.xpm +Style gv MiniIcon mini.gv.xpm +#Style xdvi MiniIcon mini.zoom.xpm +#Style acroread MiniIcon mini.pdf.xpm +Style xpdf MiniIcon mini.pdf.xpm +#Style plan MiniIcon mini.calandar.xpm + +# Sciences +#Style GNUplot MiniIcon mini.graph.xpm, Icon graphs.xpm +#Style *maple MiniIcon mini.zoom.xpm +#Style Scilab MiniIcon mini.graph2.xpm +Style Xaos MiniIcon mini.fractal.xpm +#Style fractint MiniIcon mini.fractal.xpm +#Style xephem MiniIcon mini.exp.xpm +#Style XTide MiniIcon mini.exp.xpm +#Style THX-1138 MiniIcon mini.calc.xpm + +# System +Style Top MiniIcon mini.run.xpm, Icon toolbox.xpm +#Style tkps MiniIcon mini.hex.xpm, Icon toolbox.xpm +#Style xosview MiniIcon mini.run.xpm, Icon toolbox.xpm +Style xload MiniIcon mini.perf.xpm, Icon toolbox.xpm +#Style xmem MiniIcon mini.perf.xpm, Icon toolbox.xpm +#Style XSysStats MiniIcon mini.run.xpm +# File Mgr +#Style xfm MiniIcon mini.filemgr.xpm, Icon Xfm.xpm +#Style fr MiniIcon mini.filemgr.xpm, Icon Xfm.xpm +Style Midnight-Commander MiniIcon mini.filemgr.xpm, Icon Xfm.xpm + +# Editors +#Style emacs MiniIcon mini.edit.xpm, Icon lemacs.xpm +Style VIM MiniIcon mini.edit.xpm, Icon lemacs.xpm +Style *edit MiniIcon mini.edit.xpm, Icon lemacs.xpm +#Style dtpad MiniIcon mini.edit.xpm, Icon lemacs.xpm + +# Network +Style *ppp* MiniIcon mini.connect.xpm, Icon Mosaic.xpm +#Style Hifs MiniIcon mini.connect.xpm, Icon Mosaic.xpm + +# Internet +# Netscape resource +Style Netscape MiniIcon mini.nscape.xpm +Style Navigator MiniIcon mini.nscape.xpm +Style MailFolder MiniIcon mini.dirlink.xpm +Style MailThread MiniIcon mini.mail.xpm +Style Composition MiniIcon mini.letter.xpm +Style Composer MiniIcon mini.editor.xpm +Style *Download* MiniIcon mini.ftp.xpm +# +#Style amaya MiniIcon mini.nscape.xpm +Style Mozilla MiniIcon mini.nscape.xpm +Style lynx MiniIcon mini.cat.xpm, Icon Mosaic.xpm +Style xmh MiniIcon mini.mail.xpm, Icon Mail2.xpm +Style Mail MiniIcon mini.mail.xpm, Icon Mail2.xpm +Style *mail* MiniIcon mini.mail.xpm, Icon Mail2.xpm +#Style Pine MiniIcon mini.mail.xpm, Icon Mail2.xpm +Style Mutt MiniIcon mini.mail.xpm, Icon Mail2.xpm +#Style NcFtp MiniIcon mini.ftp.xpm, Icon Mosaic.xpm +Style *ftp* MiniIcon mini.ftp.xpm, Icon Mosaic.xpm +#Style "X-Chat*" MiniIcon mini.doc1.xpm, Icon page.xpm +#Style Irc MiniIcon mini.doc1.xpm +#Style tkirc MiniIcon mini.doc1.xpm +#Style Licq MiniIcon mini.doc1.xpm +Style +Style zircon MiniIcon mini.zircon.xpm +#Style xgopher MiniIcon mini.gopher.xpm + +# Graphics +#Style xv MiniIcon mini.xv.xpm +Style "The GIMP" MiniIcon mini.gimp.xpm, Icon gimp.xpm +Style "Gimp" MiniIcon mini.gimp.xpm, Icon gimp.xpm +#Style xfig MiniIcon mini.xfig.xpm +#Style xfpovary MiniIcon mini.ray.xpm +# xpaint resource names +Style xpaint MiniIcon mini.palette.xpm +Style Canvas MiniIcon mini.palette.xpm +Style fatbits MiniIcon mini.palette.xpm +Style filebrowser MiniIcon mini.ofolder.xpm +# +#Style XbmBrowser MiniIcon mini.directory.xpm +#Style ee MiniIcon mini.palette.xpm + +# Multimedia +Style *mixer MiniIcon mini.audiovol.xpm +Style *playcd* MiniIcon mini.cdlabel.xpm +Style *cdplay* MiniIcon mini.cdlabel.xpm +#Style xltwavplay MiniIcon mini.sound.xpm +#Style MiXViews MiniIcon mini.audiovol.xpm +#Style freeamp MiniIcon mini.audiovol.xpm +#Style XAnim MiniIcon mini.display.xpm +# Games and amusement +Style *maze MiniIcon mini.maze.xpm +#Style xboard MiniIcon mini.slon.xpm +#Style XGammon MiniIcon mini.go.xpm +#Style xsokoban MiniIcon mini.go.xpm +#Style xlander MiniIcon mini.xlander.xpm +#Style xmahjongg MiniIcon mini.xmahjongg.xpm +#Style xjewel MiniIcon mini.xjewel.xpm +#Style hextris MiniIcon mini.hextris.xpm +Style *tetris* MiniIcon mini.tetris.xpm +#Style kpat2 MiniIcon mini.heart.xpm +Style xeyes MiniIcon mini.eyes.xpm +#Style xcat MiniIcon mini.cat.xpm +Style Quake* MiniIcon mini.destroy.xpm, Icon doomface.xpm +Style Koules MiniIcon mini.happy.xpm +Style xroach MiniIcon mini.roach.xpm +Style xlogo MiniIcon mini.x2.xpm + +# Modules, Form and script +Style Fvwm* MiniIcon - +Style FvwmScript* MiniIcon mini.fvwm.xpm +Style FvwmForm* MiniIcon mini.fvwm.xpm +Style FvwmIdent MiniIcon mini.question.xpm, Icon question.xpm +Style FvwmConsole MiniIcon mini.xterm.xpm, Icon wterm.xpm +Style FvwmScript-BellSetup MiniIcon mini.audiovol.xpm, Icon bell.xpm +Style FvwmScript-KeyboardSetup MiniIcon mini.keyboard.xpm,Icon keyboard.xpm +Style FvwmScript-ScreenSetup MiniIcon mini.monitor.xpm, Icon screen.xpm +Style FvwmScript-PointerSetup MiniIcon mini.mouse.xpm, Icon pointer.xpm +Style FvwmScript-BaseConfig MiniIcon mini.fvwm.xpm, Icon settings.xpm +Style FvwmScript-Find MiniIcon mini.zoom.xpm, Icon find1.xpm +Style FvwmScript-Quit MiniIcon mini.question.xpm +Style FvwmScript-Colorset MiniIcon mini.colors.xpm, Icon settings.xpm +Style FvwmScript-ScreenDump MiniIcon mini.camera.xpm, Icon resize.xpm +Style FvwmScript-Setup95 MiniIcon mini.fvwm.xpm, Icon settings.xpm +Style FvwmScript-Date MiniIcon mini.clock.xpm, Icon date.xpm +Style FvwmForm-QuitVerify MiniIcon mini.question.xpm +Style FvwmForm-Rlogin MiniIcon mini.connect.xpm, Icon Mosaic.xpm +Style FvwmForm-Capture MiniIcon mini.camera.xpm, Icon resize.xpm +Style FvwmForm-Talk MiniIcon mini.telnet.xpm, Icon rterm.xpm +Style FvwmForm-RootCursor MiniIcon mini.xarchie.xpm, Icon settings.xpm +Style FvwmForm-Form MiniIcon mini.fvwm.xpm, Icon settings.xpm +Style FvwmForm-Setup MiniIcon mini.fvwm.xpm, Icon settings.xpm +Style FormFvwmAnimate MiniIcon mini.iconify.xpm, Icon settings.xpm +Style xmessage MiniIcon mini.question.xpm, Icon settings.xpm +Style WinMakerAppButtons* NoIcon + +# Help +Style man MiniIcon mini.book1.xpm, Icon help.xpm +# xman resource names +Style topBox MiniIcon mini.book1.xpm, Icon help.xpm +Style help MiniIcon mini.book2.xpm, Icon help.xpm +Style manualBrowser MiniIcon mini.book2.xpm, Icon help.xpm +Style *FAQ* MiniIcon mini.question.xpm, Icon help.xpm +# others... +Style IDL* MiniIcon mini.zoom.xpm +Style XDbx MiniIcon mini.bug2.xpm +#Style control-panel MiniIcon mini.eye.xpm +Style xvidtune MiniIcon mini.x2.xpm + +# To get the kde mini-icon styles build the system menu (i.e., uncomment +# the lines that follow K_SM) + +#G_ST 51 some icons, an alternative is to use fvwm2gnome and fvwm-menu-desktop +#Style "gcolorsel" MiniIcon mini.colors.xpm, Icon resize.xpm +#Style "gcalc" MiniIcon mini.calc.xpm, Icon rcalc2.xpm +#Style "gdiskfree" MiniIcon mini.fdisk.xpm +#Style "gEdit" MiniIcon mini.edit.xpm, Icon lemacs.xpm +#Style "gedit" MiniIcon mini.edit.xpm, Icon lemacs.xpm +#Style "gfontsel" MiniIcon mini.font.xpm +#Style "ghex" MiniIcon mini.hex.xpm, Icon page.xpm +#Style "gless" MiniIcon mini.file.xpm Icon page.xpm +#Style "gmix" MiniIcon mini.sound.xpm +#Style "gmailman" MiniIcon mini.mail.xpm, Icon mail2.xpm +#Style "gmc" MiniIcon mini.filemgr.xpm, Icon Xfm.xpm +#Style "gmenu" MiniIcon mini.doc1.xpm, Icon dialog_box.xpm +#Style "gnome-help-browser" MiniIcon mini.book3.xpm, Icon help.xpm +#Style "GnomeHelpBrowser" MiniIcon mini.book3.xpm, Icon help.xpm +#Style "gnome-ppp" MiniIcon mini.connect.xpm, Icon Mosaic.xpm +#Style "gnome-run" MiniIcon mini.hammer.xpm, Icon run.xpm +#Style "gnome-sync" MiniIcon mini.folder.xpm, Icon folder.xpm +#Style "gnomecal" MiniIcon norm.calendar.xpm, Icon mini/clock.xpm +#Style "gnomecard" MiniIcon mini.doc1.xpm, Icon page2.xpm +#Style "gnomecc" MiniIcon mini.hammer.xpm, Icon mini/home.xpm +#Style "GnomeTerminal" MiniIcon mini.term.xpm, Icon rterm2.xpm +#Style "gnp" MiniIcon mini.doc1.xpm, Icon page2.xpm +#Style "gnp+" MiniIcon mini.doc1.xpm, Icon page2.xpm +#Style "gnumeric" MiniIcon mini.calc2.xpm Icon rcalc2.xpm +#Style "GQview" MiniIcon mini.palette.xpm Icon xpaint.xpm +#Style "gsearchtool" MiniIcon mini.zoom.xpm, Icon find1.xpm +#Style "gstripchart" MiniIcon mini.graph2.xpm +#Style "gtalk" MiniIcon mini.zircon.xpm +#Style "gtcd" MiniIcon mini.cdlabel.xpm +#Style "gtk-shell" MiniIcon mini.doc1.xpm, Icon page.xpm +#Style "gtop" MiniIcon mini.run.xpm, Icon toolbox.xpm +#Style "gtt" MiniIcon mini.clock.xpm, Icon toolbox.xpm +#Style "guname" MiniIcon mini.question.xpm Icon page2.xpm +#Style "gw" MiniIcon mini.run.xpm, Icon page2.xpm +#Style "gxedit" MiniIcon mini.edit.xpm, Icon lemacs.xpm +#Style "vumeter" MiniIcon mini.sound.xpm +#Style "freecell" MiniIcon mini.heart.xpm +#Style "gnibbles" MiniIcon mini.happy.xpm +#Style "gnobots" MiniIcon mini.happy.xpm +#Style "gnobots2" MiniIcon mini.happy.xpm +#Style "gnome-stones" MiniIcon mini.happy.xpm +#Style "gnomine" MiniIcon mini.happy.xpm +#Style "gtali" MiniIcon mini.happy.xpm +#Style "gturing" MiniIcon mini.happy.xpm +#Style "iagno" MiniIcon mini.happy.xpm +#Style "mahjongg" MiniIcon mini.happy.xpm +#Style "same-gnome" MiniIcon mini.happy.xpm +#Style "sol" MiniIcon mini.heart.xpm +#Style "gtkballs" MiniIcon mini.happy.xpm +#Style "gfpoken" MiniIcon mini.happy.xpm +#Style "Imlib*" MiniIcon mini.hammer.xpm + +#CDE 10 +#Style Dtfile MiniIcon mini.filemgr.xpm +#Style Dtpad MiniIcon mini.edit.xpm +#Style Dthelp* MiniIcon mini.book1.xpm +#Style Dtcm* MiniIcon mini.calendar.xpm +#Style Dtcalc MiniIcon mini.calc.xpm +#Style Dticon* MiniIcon mini.palette.xpm +#Style Dtprint* MiniIcon mini.fax.xpm +#Style Dtstyle* MiniIcon mini.desktop.xpm +#Style "Applications Manager" MiniIcon mini.programs.xpm +#Style "Trash Can" MiniIcon mini.paper.xpm + diff --git a/.fvwm/menus b/.fvwm/menus new file mode 100644 index 0000000..6e22ae6 --- /dev/null +++ b/.fvwm/menus @@ -0,0 +1,1090 @@ +#-----------------------------------------------------------------------------# +# +# 10. Now define the menus +# +#-----------------------------------------------------------------------------# + +#------------------------------------------------------------------------------ +#--------- Taskbar's start menu +#------------------------------------------------------------------------------ + +DestroyMenu StartMenu +AddToMenu StartMenu@side.fvwm2.xpm@^black^ ++ "&Screen Saver%screen.xpm%" Popup Screen ++ "&Module%modules.xpm" Popup Module-Popup ++ "" Nop ++ "&Shells%shells.xpm%" Popup Shells ++ "&Programs%programs.xpm%" Popup Programs ++ "&Documents%documents.xpm%" Popup Documents ++ "&Settings%settings.xpm%" Popup Settings ++ "&Find%find1.xpm%" FvwmScript FvwmScript-Find ++ "&Help%help.xpm%" Exec exec xman +#PREF 1 ++ "&Run...%run.xpm%" Exec exec aterm ++ "" Nop ++ "Shut &Down%shutdown.xpm%" Module FvwmScript FvwmScript-Quit + +#------------------------------------------------------------------------------ +# Root Menu: This menu will fire up some very common utilities +#------------------------------------------------------------------------------ + +DestroyMenu Utilities +AddToMenu Utilities "FVWM Root Menu" Title +#PREF 3 ++ "&Terminal%mini.term.xpm%" Exec exec aterm ++ "&Editor%mini.edit.xpm" Exec exec gvim ++ "&File Manager%mini.filemgr.xpm%" Exec exec aterm -g 80x35 -e mc ++ "&Top%mini.run.xpm%" Exec exec xterm -geometry 80x40 -T Top -n Top -e top ++ "" Nop ++ "&Shells%mini.term.xpm" Popup Shells ++ "&Programs%mini.start.xpm%" Popup Programs ++ "" Nop ++ "&Modules%mini.modules.xpm%" Popup Module-Popup ++ "&Settings%mini.desktop.xpm%" Popup Settings ++ "&Documents%mini.books.xpm%" Popup Documents ++ "&Screen Saver%mini.display.xpm%" Popup Screen ++ "" Nop ++ "&Restart%mini.turn.xpm%" Popup Restart ++ "&Exit FVWM%mini.stop.xpm%" FvwmForm FvwmForm-QuitVerify + + +#------------------------------------------------------------------------------ +#--------- SHELLS +#------------------------------------------------------------------------------ +DestroyMenu Shells +AddToMenu Shells ++ "&Xterm default%mini.term.xpm%" Exec exec xterm ++ "Xterm/&root default%mini.term.xpm%" Exec exec xterm -fg violet -bg black -e su -l +#+ "&NXterm default%mini.term.xpm%" Exec exec nxterm ++ "&Rxvt default%mini.term.xpm%" Exec exec rxvt +#+ "&Eterm default%mini.term.xpm%" Exec exec Eterm +#+ "X&iterm default%mini.term.xpm%" Exec exec xiterm ++ "&Aterm default%mini.term.xpm%" Exec exec aterm +#+ "&GNOME Term default%mini.term.xpm%" Exec exec gnome-terminal +#+ "&Konsole default%mini.term.xpm%" Exec exec konsole +#+ "&Kvt default%mini.term.xpm%" Exec exec kvt +#+ "&Dtterm default%mini.term.xpm%" Exec exec /usr/bin/dtterm ++ "" Nop ++ "&Xterm 80x40 (7x14 font)%mini.term.xpm%" Exec exec xterm -n $USER@$HOST -T $USER@$HOST -g 80x40 -sb +sk +si -sl 4096 -j -ls -fn 7x14 -fb 7x14bold ++ "Xterm/r&oot 80x40 (7x14 font)%mini.term.xpm%" Exec exec xterm -n root@$HOST -T root@$HOST -g 80x40 -sb +sk +si -sl 4096 -j -ls -fn 7x14 -fb 7x14bold -fg violet -bg black -e su -l +#+ "&NXterm 80x40 (7x14 font)%mini.term.xpm%" Exec exec nxterm -n $USER@$HOST -T $USER@$HOST -g 80x40 -sb +sk +si -sl 4096 -j -ls -fn 7x14 -fb 7x14bold ++ "&Rxvt 80x40 (7x14 font)%mini.term.xpm%" Exec exec rxvt -n $USER@$HOST -T $USER@$HOST -g 80x40 --loginShell -fn 7x14 -fb 7x14bold +#+ "&Eterm 80x40 (7x14 font)%mini.term.xpm%" Exec exec Eterm -n $USER@$HOST -T $USER@$HOST -g 80x40 --login-shell --font 7x14 --bold-font 7x14bold +#+ "X&iterm 80x40 (7x14 font)%mini.term.xpm%" Exec exec xiterm -n $USER@$HOST -T $USER@$HOST -g 80x40 -sb +sk +si -sl 4096 -ls -fn 7x14 -fb 7x14bold ++ "&Aterm 80x40 (7x14 font)%mini.term.xpm%" Exec exec aterm -n $USER@$HOST -T $USER@$HOST -g 80x40 -sb +sk +si -sl 4096 -ls -fn 7x14 -fb 7x14bold +#+ "&GNOME Term 80x40 (7x14 font)%mini.term.xpm%" Exec exec gnome-terminal --title=$USER@$HOST --geometry=80x40 --login --font=7x14 +#+ "&Kvt 80x40 (7x14 font)%mini.term.xpm%" Exec exec kvt -n $USER@$HOST -T $USER@$HOST -vt_geometry 80x40 -sl 4096 -ls -vt_font 7x14 +#+ "&Konsole 80x40%mini.term.xpm%" Exec exec konsole -nowelcome -sl 4096 -ls -vt_sz 80x40 +#+ "&Dtterm 80x40 (7x14 font)%mini.term.xpm%" Exec exec /usr/dt/bin/dtterm -n $USER@$HOST -T $USER@$HOST -sl 4096 -ls -g 80x40 -fn 7x14 -fb 7x14bold ++ "" Nop ++ "Remote &login ...%mini.connect.xpm%" FvwmForm FvwmForm-Rlogin + +#------------------------------------------------------------------------------ +#--------- Programs +#------------------------------------------------------------------------------ + +DestroyMenu Programs +AddToMenu Programs +#G_SM_G 2 +# AddToMenu Programs "&GNOME Menu%mini.gnome.xpm%" SendToModule FvwmGtk gnome-sys +#+ "" Nop +#G_SM_F 2 +#AddToMenu Programs "&GNOME Menu%mini.gnome.xpm%" Popup gnome-sys +#+ "" Nop +#G_UM_G 2 +#AddToMenu Programs "GNOME &User%mini.gnome.xpm%" SendToModule FvwmGtk gnome-user +#+ "" Nop +#G_UM_F 2 +#AddToMenu Programs "GNOME &User%mini.gnome.xpm%" Popup gnome-user +#+ "" Nop +#G_RHM_G 2 +#AddToMenu Programs "GNOME &RedHat%mini.gnome.xpm%" SendToModule FvwmGtk gnome-redhat +#+ "" Nop +#G_RHM_F 2 +#AddToMenu Programs "GNOME &RedHat%mini.gnome.xpm%" Popup gnome-redhat +#+ "" Nop +#K_SM 2 +#AddToMenu Programs "&KDE Menu%mini.kde.xpm" Popup kde-sys +#+ "" Nop +#K_UM 2 +#AddToMenu Programs "KDE &User%mini.kde.xpm" Popup kde-user +#+ "" Nop +#CDE 2 +#AddToMenu Programs "&CDE Menu%mini.folder.xpm" Popup cde-menu +#+ "" Nop +AddToMenu Programs ++ "&Accessories%mini.hammer.xpm%" Popup Accessories ++ "&Applications%mini.pencil.xpm%" Popup Applications ++ "&Science%mini.question.xpm" Popup Science ++ "&System%mini.filemgr.xpm" Popup System ++ "&Editors%mini.edit.xpm%" Popup Editors ++ "&Network%mini.telnet.xpm%" Popup Network ++ "&Internet%mini.connect.xpm%" Popup Internet ++ "&Graphics%mini.paint.xpm%" Popup Graphics ++ "&Multimedia%mini.cd.xpm%" Popup Multimedia ++ "&Games%mini.happy.xpm%" Popup Games + +#------------------------------------------------------------------------------ +#--------- KDE, CDE & GNOME "fvwm" menus + +# For more informtion man fvwm-menu-desktop + +#K_SM 1 +#PipeRead 'fvwm-menu-desktop --desktop kde-sys --enable-mini-icons --enable-style' +#K_UM 1 +#PipeRead 'fvwm-menu-desktop --desktop kde-user --enable-mini-icons' +#G_SM_F 1 +#PipeRead 'fvwm-menu-desktop --desktop gnome-sys --type fvwm --install-prefix No --enable-mini-icons --mini-icons-path '' --icon-toptitle :no::: --icon-title :no::: --icon-folder mini.folder.xpm:ow::: --icon-app mini.gnome.xpm:ow:::' +#G_UM_F 1 +#PipeRead 'fvwm-menu-desktop --desktop gnome-user --type fvwm --enable-mini-icons --mini-icons-path '' --icon-toptitle :no::: --icon-title :no::: --icon-folder mini.folder.xpm:ow::: --icon-app mini.doc.xpm:ow:::' +#G_RHM_F 1 +#PipeRead 'fvwm-menu-desktop --desktop gnome-redhat --type fvwm --enable-mini-icons --mini-icons-path '' --icon-toptitle :no::: --icon-title :no::: --icon-folder mini.folder.xpm:ow::: --icon-app mini.ball2.xpm:ow:::' + +#CDE 17 +#DestroyMenu cde-menu +#AddToMenu cde-menu +#+ "&Applications Manager%mini.programs.xpm%" Exec exec /usr/dt/bin/dtaction Dtappmgr +#+ "&Terminal%mini.term.xpm%" Exec exec /usr/dt/bin/dtterm +#+ "&File Manager%mini.filemgr.xpm%" Exec exec /usr/dt/bin/dtfile +#+ "&Trash Can%mini.paper.xpm%" Exec exec /usr/dt/bin/dtaction Dttrash +#+ "Text &Editor%mini.edit.xpm%" Exec exec /usr/dt/bin/dtpad +#+ "Desktop &Help%mini.book1.xpm%" Exec exec /usr/dt/bin/dthelpview -helpVolume browser +#+ "Man Pages%mini.book1.xpm%" Exec exec /usr/dt/bin/dthelpview -man +#+ "&Mailer%mini.mail.xpm%" Exec exec /usr/dt/bin/dtmail +#+ "&Calandar%mini.calandar.xpm" Exec exec /usr/dt/bin/dtcm +#+ "&Calculator%mini.calc.xpm%" Exec exec /usr/dt/bin/dtcalc +#+ "&Icon Editor%mini.palette.xpm%" Exec exec /usr/dt/bin/dticon +#+ "&Print Manager%mini.fax.xpm%" Exec exec /usr/dt/bin/dtprintinfo +#+ "&Styles Manager%mini.hammer.xpm%" Exec exec /usr/dt/bin/dtstyle +#+ "" Nop +#+ "&Exit CDE%mini.stop.xpm%" Exec exec /usr/dt/bin/dtaction ExitSession + +#------------------------------------------------------------------------------ +#--------- Accessories + +DestroyMenu Accessories +AddToMenu Accessories ++ "&Calculator%mini.calc.xpm%" Exec exec xcalc ++ "&Magnifying glass%mini.zoom.xpm%" Exec exec xmag ++ "&Font viewer%mini.font.xpm%" Exec exec xfontsel ++ "&Xdaliclock%mini.clock.xpm%" Exec exec xdaliclock ++ "X&clock%mini.clock.xpm%" Exec exec xclock ++ "&Rclock%mini.clock.xpm%" Exec exec rclock +#+ "x&apm%mini.connect.xpm%" Exec exec xapm +#+ "&View colormap%mini.colors.xpm%" Exec exec xcolormap ++ "&Color viewer%mini.colors.xpm%" Exec exec xcolorsel ++ "&Capture Form%mini.camera.xpm%" FvwmForm FvwmForm-Capture ++ "&Screen Dump Script%mini.camera.xpm%" FvwmScript FvwmScript-ScreenDump +#+ "X&grab%mini.camera.xpm%" Exec exec xgrab +#+ "&Ddd%mini.bug2.xpm%" Exec exec ddd +#+ "Xx&gdb%mini.bug2.xpm%" Exec exec xxgdb ++ "&Xclipboard%mini.clipboard.xpm%" Exec exec xclipboard + +#------------------------------------------------------------------------------ +#--------- Applications + + +DestroyMenu Applications +AddToMenu Applications +#+ "&Lyx%mini.edit.xpm%" Exec exec lyx +#+ "&Thot%mini.edit.xpm%" Exec exec thot +#+ "&Ghostview (Postscript)%mini.gv.xpm%" Exec exec ghostview ++ "&GV (Postscript)%mini.gv.xpm%" Exec exec gv +#+ "X&dvi%mini.zoom.xpm%" Exec exec xdvi +#+ "&Acroread (PDF)%mini.pdf.xpm%" Exec exec acroread ++ "&Xpdf (PDF)%mini.pdf.xpm%" Exec exec xpdf +#+ "&Plan%mini.doc1.xpm%" Exec exec plan + +#------------------------------------------------------------------------------ +#--------- Science + +DestroyMenu Science +AddToMenu Science +#+ "Thx-1138%mini.calc.xpm%" Exec exec thx-1138 +#+ "GNU &plot%mini.graph.xpm%" Exec exec xterm -T GNUplot -name GNUplot -e gnuplot +#+ "&SCILAB%mini.zoom.xpm%" Exec exec scilab +#+ "&Maple%mini.graph2.xpm%" Exec exec xmaple +#+ "&Mathematica%mini.graph2.xpm%" Exec exec mathematica ++ "&Xaos%mini.fractal.xpm%" Exec exec xaos +#+ "&Fractint%mini.fractal.xpm%" Exec exec xterm -font 7x14 -e xfractint +#+ "X&ephem%mini.exp.xpm%" Exec exec xephem +#+ "X&tide%mini.exp.xpm%" Exec exec xtide + +#------------------------------------------------------------------------------ +#--------- System + +DestroyMenu System +AddToMenu System ++ "&Running processes%mini.run.xpm%" Exec exec xterm -g 80x40 -e top +#+ "&TK processes%mini.hex.xpm%" Exec exec tkps ++ "&System load%mini.perf.xpm%" Exec exec xload +#+ "&Xosview%mini.run.xpm%" Exec exec xosview +#+ "&Memory usage%mini.perf.xpm%" Exec exec xmem +#+ "&XSysStats%mini.run.xpm%" Exec exec XSysStats ++ "&xconsole%mini.term.xpm%" Exec exec xconsole ++ "Set &Date Script%mini.clock.xpm%" FvwmScript FvwmScript-Date ++ "" Nop ++ "&Midnight-Commander%mini.filemgr.xpm%" Exec exec xterm -g 80x40 -n Midnight-Commander -T Midnight-Commander -e mc -x +#+ "X&fm%mini.filemgr.xpm%" Exec exec xfm +#+ "File &Runer%mini.filemgr.xpm%" Exec exec fr +#+ "&kfm%mini.filemgr.xpm%" Exec exec kfmclient openURL $HOME +#+ "&gmc%mini.filemgr.xpm%" Exec exec gmc + +#------------------------------------------------------------------------------ +#--------- Editors + +DestroyMenu Editors +AddToMenu Editors +#+ "&Emacs%mini.edit.xpm%" Exec exec emacs +#+ "&XEmacs%mini.edit.xpm%" Exec exec xemacs ++ "&Gvim%mini.edit.xpm%" Exec exec gvim +#+ "&Nedit%mini.edit.xpm%" Exec exec nedit ++ "&Xedit%mini.edit.xpm%" Exec exec xedit + +#------------------------------------------------------------------------------ +#--------- Network + +DestroyMenu Network +AddToMenu Network ++ "&Rlogin%mini.connect.xpm%" Module FvwmForm FvwmForm-Rlogin +#+ "&Vppp%mini.connect.xpm%" Exec exec vppp +#+ "&Ezppp%mini.connect.xpm%" Exec exec ezppp +#+ "&Hifs%mini.eyes.xpm%" Exec exec xterm -ls -bg #c0c0c0 -fg black -T Hifs -name Hifs -geometry 26x24 -e hifs + +#------------------------------------------------------------------------------ +#--------- Internet + +DestroyMenu Internet +AddToMenu Internet ++ "&Netscape%mini.nscape.xpm%" Exec exec netscape +#+ "&Amaya%mini.nscape.xpm%" Exec exec amaya ++ "&Mozilla%mini.nscape.xpm%" Exec exec mozilla ++ "&Lynx%mini.cat.xpm%" Exec exec xterm -g 80x30 -n lynx -T lynx -e lynx ++ "" Nop +#+ "Xfmail%mini.mail.xpm%" Exec exec xfmail ++ "&Xmh%mini.mail.xpm%" Exec exec xmh ++ "&Mail%mini.mail.xpm%" Exec exec xterm -g 80x30 -n Mail -T Mail -e mail +#+ "&Pine%mini.mail.xpm%" Exec exec xterm -g 80x30 -n Pine -T Pine -e pine ++ "&Mutt%mini.mail.xpm%" Exec exec xterm -g 80x30 -n Mutt -T Mutt -e mutt +#+ "&Elm%mini.mail.xpm%" Exec exec xterm -g 80x30 -n Elm -T Elm -e elm +#+ "" Nop +#+ "Nc&FTP%mini.ftp.xpm%" Exec exec xterm -g 80x30 -n NcFtp -T FTP -e ncftp +#+ "&Xftp%mini.ftp.xpm%" Exec exec xftp +#+ "X-&Chat%mini.doc1.xpm%" Exec exec xchat +#+ "Irc%mini.doc1.xpm%" Exec exec xterm -g 80x30 -n Irc -T Trc -e irc +#+ "Tkirc%mini.doc1.xpm%" Exec exec tkirc +#+ "Lirc%mini.doc1.xpm%" Exec exec licq +#+ "&Zircon%mini.zircon.xpm%" Exec exec zircon +#+ "X&Gopher%mini.gopher.xpm%" Exec exec xgopher +#+ "Minitel%mini.xterm.xpm%" Exec exec xtel -petit + +#------------------------------------------------------------------------------ +#--------- Graphics + +DestroyMenu Graphics +AddToMenu Graphics ++ "The &Gimp%mini.gimp.xpm%" Exec exec gimp +#+ "&XPaint%mini.palette.xpm%" Exec exec xpaint +#+ "X&fig%mini.xfig.xpm%" Exec exec xfig +#+ "X&Fpovray%mini.ray.xpm%" Exec exec xfpovray +#+ "" Nop +#+ "&XV%mini.xv.xpm%" Exec exec xv +#+ "Xbm&Browser%mini.directory.xpm%" Exec exec xbmbrowser +#+ "&EE%mini.palette.xpm%" Exec exec ee + +#------------------------------------------------------------------------------ +#--------- Multimedia + +DestroyMenu Multimedia +AddToMenu Multimedia +#+ "&CD player%mini.cdlabel.xpm%" Exec exec xplaycd +#+ "X&mixer%mini.audiovol.xpm%" Exec exec xmixer +#+ "X<wav%mini.sound.xpm%" Exec exec xltwavplay +#+ "FreeAmp%mini.sound.xpm%" Exec exec freeamp +#+ "MiXViews%mini.sound.xpm%" Exec exec mxv + +#------------------------------------------------------------------------------ +#--------- Games and amusements + +DestroyMenu Games +AddToMenu Games +#+ "&Maze%mini.maze.xpm%" Exec exec maze +#+ "&Spider%mini.espada.xpm%" Exec exec spider +#+ "&Chess%mini.slon.xpm%" Exec exec xboard +#+ "&XGammon%mini.go.xpm%" Exec exec xgammon +#+ "X&lander%mini.xlander.xpm%" Exec exec xlander +#+ "X&mahjongg%mini.xmahjongg.xpm%" Exec exec xmahjongg +#+ "X&Sokoban%mini.go.xpm%" Exec exec xsokoban +#+ "X&jewel%mini.xjewel.xpm%" Exec exec xjewel +#+ "&Hextris%mini.hextris.xpm%" Exec exec hextris +#+ "&Maelstrom%mini.destroy.xpm%" Exec exec Maelstrom +#+ "Koules%mini.happy.xpm%" Exec exec xkoules +#+ "Quake%mini.destroy.xpm%" Exec cd /usr/local/games/quake/ ; exec ./stquake +#+ "Quake2%mini.destroy.xpm%" Exec cd /usr/local/games/quake2/ ; exec ./quake2 +set vid_ref softx ++ "" Nop ++ "&Amusements%mini.happy.xpm%" Popup Amusements + +DestroyMenu Amusements +AddToMenu Amusements ++ "&Eyes%mini.eyes.xpm%" Exec exec xeyes ++ "&X logo%mini.bx2.xpm%" Exec exec xlogo +#+ "X&roach%mini.roach.xpm%" Exec exec xroach ++ "X&snow%mini.xsnow.xpm%" Exec exec xsnow ++ "&Stop Xsnow%mini.xsnow.xpm%" Exec exec killall xsnow +#+ "&Desktop cat%mini.cat.xpm%" Exec exec xcat + +#------------------------------------------------------------------------------ +#--------- Modules +#------------------------------------------------------------------------------ + + +DestroyMenu Module-Popup +AddToMenu Module-Popup ++ "&Autoraise%mini.raise.xpm%" RestartModule FvwmAuto 500 ++ "A&nimate%mini.iconify.xpm%" RestartModule FvwmAnimate ++ "&Backer%mini.rainbow.xpm%" RestartModule FvwmBacker ++ "B&anner%mini.ray.xpm%" RestartModule FvwmBanner ++ "B&uttons Bar%mini.pencil.xpm%" RestartModuleByAlias FvwmButtons BarButtons BarButtons ++ "&Mini button bar%mini.pencil.xpm%" RestartModuleByAlias FvwmButtons MiniButtons MiniButtons ++ "&WMaker buttons%mini.pencil.xpm%" RestartModuleByAlias FvwmButtons WinMakerAppButtons WinMakerApp* ++ "Fvwm &Console%mini.xterm.xpm%" Module FvwmConsole -sb ++ "&Debug%mini.bug2.xpm%" RestartModule FvwmDebug ++ "&IconBox%mini.icons.xpm%" RestartModule FvwmIconBox ++ "I&conMan%mini.run.xpm%" RestartModule FvwmIconMan ++ "Identif&y%mini.question.xpm%" RestartModule FvwmIdent ++ "Desker &Panel%mini.pager.xpm%" RestartModuleByAlias FvwmButtons DeskerPanelButtons DeskerPanelButtons ++ "Sound &effect%mini.sound.xpm%" RestartModule FvwmEvent ++ "&Talk to Fvwm%mini.telnet.xpm%" FvwmForm FvwmForm-Talk ++ "Task&Bar%mini.exp.xpm%" RestartModule FvwmTaskBar ++ "Window &List%mini.windows.xpm%" RestartModule FvwmWinList ++ "&Wharf%mini.pencil.xpm%" RestartModule FvwmWharf ++ "" Nop ++ "&Kill Modules%mini.bomb.xpm%" Popup Kill-Module-Popup + +DestroyMenu Kill-Module-Popup +AddToMenu Kill-Module-Popup ++ "&Autoraise%mini.raise.xpm%" KillModule FvwmAuto ++ "A&nimate%mini.iconify.xpm%" KillModule FvwmAnimate ++ "&Backer%mini.rainbow.xpm%" KillModule FvwmBacker ++ "B&anner%mini.ray.xpm%" KillModule FvwmBanner ++ "B&utton bar%mini.pencil.xpm%" All (BarButtons) Close ++ "&Mini button bar%mini.pencil.xpm%" All (MiniButtons) Close ++ "&WMaker buttons%mini.pencil.xpm%" All (WinMakerApp*) Close ++ "Fvwm &Console%mini.xterm.xpm%" KillModule FvwmConsole ++ "&Debug%mini.bug2.xpm%" KillModule FvwmDebug ++ "&IconBox%mini.icons.xpm%" KillModule FvwmIconBox ++ "I&conMan%mini.run.xpm%" KillModule FvwmIconMan ++ "Identif&y%mini.question.xpm%" KillModule FvwmIdent ++ "Desker &Panel%mini.pager.xpm%" All (DeskerPanelButtons) Close ++ "Sound &effect%mini.sound.xpm%" KillModule FvwmEvent ++ "&Talk%mini.telnet.xpm%" All (FvwmForm-Talk) Close ++ "Task&Bar%mini.exp.xpm" KillModule FvwmTaskBar ++ "Window &List%mini.windows.xpm%" KillModule FvwmWinList ++ "&Wharf%mini.pencil.xpm%" KillModule FvwmWharf + +#------------------------------------------------------------------------------ +#--------- Settings +#------------------------------------------------------------------------------ + + +DestroyMenu Settings +AddToMenu Settings ++ "&Configuration%mini.fvwm.xpm%" Popup FvwmConfig ++ "&Animation%mini.iconify.xpm%" Popup Animate-Settings ++ "Applications &Managers%mini.windows.xpm%" Popup AppsManager ++ "Auto&Raise%mini.raise.xpm%" Popup AutoRaise-Settings ++ "Back&ground%mini.display.xpm%" Popup Background-Settings ++ "&Banner%mini.ray.xpm%" Popup Banner-Settings ++ "B&uttons Bar%mini.pencil.xpm%" Popup Buttons-Settings ++ "&Mini Buttons%mini.pencil.xpm%" Popup MiniButtons-Settings ++ "Desker &Panel%mini.pager.xpm%" Popup DeskerPanel-settings ++ "S&ounds Effect%mini.audiovol.xpm%" Popup Sound-Settings ++ "&WMaker Applets%mini.pencil.xpm%" Popup WinMakerApp-Settings ++ "Set &Layers%mini.windows.xpm" Popup Layers-Settings ++ "&X Setup Scripts%mini.x.xpm%" Popup XsetupScripts ++ "&Show/Load/Save Settings%mini.turn.xpm%" Popup Load-Settings ++ "" Nop ++ "&Edit .fvwm2rc%mini.edit.xpm%" Popup Edit-Config ++ "Reload .fvwm2rc%mini.turn.xpm%" Popup Reload-Config ++ "Temporary Change:" Title ++ "&Focus/Paging%mini.zoom.xpm%" Popup Focus-Settings ++ "&Mouse Speed%mini.cat.xpm%" Popup Mouse-Settings ++ "&Keyboard%mini.keyboard.xpm%" Popup Keyboard-Settings ++ "&Bell%mini.audiovol.xpm%" Popup Bell-Settings ++ "&Screen%mini.monitor.xpm%" Popup X-settings + +#------------------------------------------------------------------------------ +#--------- Fvwm Config + +DestroyMenu FvwmConfig +AddToMenu FvwmConfig ++ "&Base Configuration%mini.fvwm.xpm%" FvwmScript FvwmScript-BaseConfig ++ "&Form Configuration%mini.fvwm.xpm" FvwmForm FvwmForm-Form ++ "" Nop ++ "&Rebuild Sample 95%mini.fvwm.xpm%" FvwmScript FvwmScript-Setup95 ++ "&Load Default Sample%mini.fvwm.xpm%" FvwmForm FvwmForm-Setup + + +#------------------------------------------------------------------------------ +#--------- Apps Manager + +DestroyMenu AppsManager +AddToMenu AppsManager ++ "TaskBar &Desk%mini.exp.xpm%" ChangeAppsMan TaskBarDesk ++ "TaskBar &Global%mini.exp.xpm%" ChangeAppsMan TaskBarGlobal ++ "TaskBar &Desk (Auto Hide)%mini.exp.xpm%" ChangeAppsMan TaskBarDeskAutoHide ++ "TaskBar &Global (Auto Hide)%mini.exp.xpm%" ChangeAppsMan TaskBarGlobalAutoHide ++ "" Nop ++ "IconBox &Desk%mini.icons.xpm%" ChangeAppsMan IconBoxDesk ++ "IconBox &Global%mini.icons.xpm%" ChangeAppsMan IconBoxGlobal ++ "" Nop ++ "IconMan &Page%mini.run.xpm%" ChangeAppsMan IconManPage ++ "IconMan &Desk%mini.run.xpm%" ChangeAppsMan IconManDesk ++ "IconMan &Global%mini.run.xpm%" ChangeAppsMan IconManGlobal ++ "" Nop ++ "WinList &Desk%mini.windows.xpm%" ChangeAppsMan WinListDesk ++ "WinList &Global%mini.windows.xpm%" ChangeAppsMan WinListGlobal ++ "" Nop ++ "Use &Icons%mini.icons.xpm%" UseIcons ++ "" Nop ++ "&None%mini.windows.xpm%" AppsManNone + +#------------------------------------------------------------------------------ +#--------- Animate settings + +DestroyMenu Animate-Settings +AddToMenu Animate-settings ++ "&Animation on%mini.iconify.xpm%" ModuleOn FvwmAnimate ++ "Animation &off%mini.cross.xpm%" ModuleOff FvwmAnimate ++ "Animate &Menu%mini.iconify.xpm%" Popup MenuFvwmAnimate + +#------------------------------------------------------------------------------ +#--------- AutoRaise settings + +DestroyMenu AutoRaise-Settings +AddToMenu AutoRaise-Settings ++ "Raise &Slow%mini.raise.xpm%" ModuleOn 'FvwmAuto' '1000' ++ "Raise &Default%mini.raise.xpm%" ModuleOn 'FvwmAuto' '500' ++ "Raise &Fast%mini.raise.xpm%" ModuleOn 'FvwmAuto' '250' ++ "Speedy &Gonzales%mini.raise.xpm%" ModuleOn 'FvwmAuto' '50' ++ "Raise &Modules Only%mini.modules.xpm%" StartModulesAutoRaise ++ "AutoRaise &off%mini.cross.xpm%" ModuleOff FvwmAuto + +#------------------------------------------------------------------------------ +#--------- Background settings + +DestroyMenu Background-Settings +AddToMenu Background-Settings ++ "&FvwmBacker%mini.rainbow.xpm%" SetBackground FvwmBacker ++ "&Disable Background%mini.cross.xpm%" SetBackgroundOff ++ "Some &Solid Colors%mini.colors.xpm%" Popup Back-Solid ++ "Some &Gradientd%mini.colors.xpm%" Popup Back-Gradient ++ "&Personal%mini.colors.xpm%" Popup Back-Personal +PipeRead '[ ! -d /usr/share/pixmaps/backgrounds ] || echo + \\"\\&Site Background%mini.colors.xpm%\\" Popup Back-Site' +PipeRead '[ ! -n "$KDEDIR" ] || echo + \\"\\&KDE Background%mini.colors.xpm%\\" Popup Back-KDE' +PipeRead '[ ! -d /usr/local/share/WindowMaker/Backgrounds ] || echo + \\"\\&WM Background%mini.colors.xpm%\\" Popup Back-Local-WM' +PipeRead '[ ! -d /usr/share/WindowMaker/Backgrounds ] || echo + \\"\\&WM Background%mini.colors.xpm%\\" Popup Back-WM' +PipeRead '[ ! -d /usr/share/afterstep/backgrounds ] || echo + \\"\\&AS Background%mini.colors.xpm%\\" Popup Back-AS' +PipeRead '[ ! -d /usr/local/share/afterstep/backgrounds ] || echo + \\"\\&AS Background%mini.colors.xpm%\\" Popup Back-Local-AS' + +DestroyFunc SetBackFromDirectory +AddToFunc SetBackFromDirectory ++ I DestroyMenu recreate $0 ++ I PipeRead 'for i in `/bin/ls $1`; \ + do echo AddToMenu $0 "`basename $i`" SetBackground \\"$2 $i\\"; done' + +DestroyFunc SetBackFromDirectories +AddToFunc SetBackFromDirectories ++ I DestroyMenu recreate $0 ++ I PipeRead 'for j in `/bin/ls -d $1`; do echo AddToMenu $0 "`basename $j`:" Title; for i in `/bin/ls $j/*`; do echo AddToMenu $0 "`basename $i`" SetBackground \\"$2 $i\\"; done; done' + + +# Replace $FVWM_USERDIR/images/backgrounds/ by your backgrounds directory +# and uncomment the next line +#AddToMenu Back-Personal DynamicPopupAction SetBackFromDirectory 'Back-Personal' '$FVWM_USERDIR/images/backgrounds/*' 'Exec exec xv -root -quit' + +AddToMenu Back-Site DynamicPopupAction SetBackFromDirectories 'Back-Site' '/usr/share/pixmaps/backgrounds/*' 'Exec exec xv -root -quit' + +AddToMenu Back-KDE DynamicPopupAction SetBackFromDirectory 'Back-KDE' '$KDEDIR/share/wallpapers/*' 'Exec exec xv -root -quit' + +AddToMenu Back-WM DynamicPopupAction SetBackFromDirectory 'Back-WM' '/usr/share/WindowMaker/Backgrounds/*' 'Exec exec xv -root -quit' + +AddToMenu Back-Local-WM DynamicPopupAction SetBackFromDirectory 'Back-Local-WM' '/usr/local/share/WindowMaker/Backgrounds/*' 'Exec exec xv -root -quit' + +AddToMenu Back-AS DynamicPopupAction SetBackFromDirectory 'Back-AS' '/usr/share/afterstep/backgrounds/*' 'Exec exec xv -root -quit' + +AddToMenu Back-Local-AS DynamicPopupAction SetBackFromDirectory 'Back-Local-AS' '/usr/local/share/afterstep/backgrounds/*' 'Exec exec xv -root -quit' + +DestroyMenu Back-Solid +AddToMenu Back-Solid ++ "&Red 1%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Red1' ++ "Red &2%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Red2' ++ "Red &3%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Red3' ++ "Red &4%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Red4' ++ "&Yellow 1%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Yellow1' ++ "Yellow &2%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Yellow2' ++ "Yellow &3%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Yellow3' ++ "Yellow &4%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Yellow4' ++ "&Orange 1%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Orange1' ++ "Orange &2%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Orange2' ++ "Orange &3%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Orange3' ++ "Orange &4%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Orange4' ++ "&Green 1%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Green1' ++ "Green &2%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Green2' ++ "Green &3%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Green3' ++ "Green &4%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Green4' ++ "&Cyan 1%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Cyan1' ++ "Cyan &2%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Cyan2' ++ "Cyan &3%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Cyan3' ++ "Cyan &4%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Cyan4' ++ "&Blue 1%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Blue1' ++ "Blue &2%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Blue2' ++ "Blue &3%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Blue3' ++ "Blue &4%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Blue4' ++ "&Magenta 1%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Magenta1' ++ "Magenta &2%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Magenta2' ++ "Magenta &3%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Magenta3' ++ "Magenta &4%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Magenta4' ++ "&Snow1%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid snow1' ++ "Snow &2%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid snow2' ++ "Snow &3%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid snow3' ++ "Snow &4%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid snow4' ++ "&Black%mini.rball.xpm%" SetBackground 'Exec exec xsetroot -solid Black' + +DestroyMenu Back-Gradient +AddToMenu Back-Gradient +#+ "&Red decay%mini.bball.xpm%" SetBackground 'Exec exec bggen red1 red4 | xv -root -quit -' +#+ "&Yellow Orange decay%mini.bball.xpm%" SetBackground 'Exec exec bggen Yellow1 Orange4 | xv -root -quit -' +#+ "&Green decay%mini.bball.xpm%" SetBackground 'Exec exec bggen green1 DarkGreen | xv -root -quit -' +#+ "&Blue decay%mini.bball.xpm%" SetBackground 'Exec exec bggen 100 100 255 0 0 100 | xv -root -quit -' +#+ "&Magenta decayy%mini.bball.xpm%" SetBackground 'Exec exec bggen blue magenta | xv -root -quit -' +#+ "&Blue to Red%mini.bball.xpm%" SetBackground 'Exec exec bggen blue red | xv -root -quit -' +#+ "Blue to &Cyan%mini.bball.xpm%" SetBackground 'Exec exec bggen blue4 Cyan1 | xv -root -quit -' +#+ "&Cyan to Blue%mini.bball.xpm%" SetBackground 'Exec exec bggen Cyan Blue4 | xv -root -quit -' +#+ "&Black/pink/black%mini.bball.xpm%" SetBackground 'Exec exec bggen black pink black | xv -root -quit -' +#+ "Black/&red/black%mini.bball.xpm%" SetBackground 'Exec exec bggen black red black | xv -root -quit -' +#+ "&Sun Raise 1%mini.bball.xpm%" SetBackground 'Exec exec bggen black orange black pink| xv -root -quit -' +#+ "Sun Raise &2%mini.bball.xpm%" SetBackground 'Exec exec bggen black orange black Blue4| xv -root -quit -' +#+ "Sun Raise &3%mini.bball.xpm%" SetBackground 'Exec exec bggen black red black grey60| xv -root -quit -' +#+ "&Rainbowy%mini.bball.xpm%" SetBackground 'Exec exec bggen red green blue | xv -root -quit -' +#+ "&Full Rainbowy%mini.bball.xpm%" SetBackground 'Exec exec bggen black red yellow green blue purple black | xv -root -quit -' +#+ "&White to Black%mini.bball.xpm%" SetBackground 'Exec exec bggen white black | xv -root -quit -' +#+ "&Black to White%mini.bball.xpm%" SetBackground 'Exec exec bggen white black | xv -root -quit -' + +#------------------------------------------------------------------------------ +#--------- Banner settings + +DestroyMenu Banner-Settings +AddToMenu Banner-Settings ++ "&Banner on%mini.ray.xpm%" ModuleOn FvwmBanner ++ "Banner &off%mini.cross.xpm%" ModuleOff FvwmBanner + +#------------------------------------------------------------------------------ +#--------- Buttons settings + +DestroyMenu Buttons-Settings +AddToMenu Buttons-Settings ++ "&Buttons Bar%mini.pencil.xpm%" ChangeButtonsOn 'FvwmButtons BarButtons' ++ "&Wharf%mini.pencil.xpm%" ChangeButtonsOn FvwmWharf ++ "&None%mini.cross.xpm%" ChangeButtonsOff + + +#------------------------------------------------------------------------------ +#--------- MiniButtons settings + +DestroyMenu MiniButtons-Settings +AddToMenu MiniButtons-Settings ++ "&Mini Buttons on%mini.pencil.xpm%" ButtonsOn FvwmButtons MiniButtons MiniButtons ++ "Mini Buttons &off%mini.cross.xpm%" ButtonsOff MiniButtons MiniButtons + +#------------------------------------------------------------------------------ +#--------- DeskerPanel settings + +DestroyMenu DeskerPanel-Settings +AddToMenu DeskerPanel-Settings ++ "&Desker Panel on%mini.pencil.xpm%" ButtonsOn FvwmButtons DeskerPanelButtons DeskerPanelButtons ++ "Desker Panel &off%mini.cross.xpm%" ButtonsOff DeskerPanelButtons DeskerPanelButtons + +#------------------------------------------------------------------------------ +#--------- WMaker Applets settings + +DestroyMenu WinMakerApp-Settings +AddToMenu WinMakerApp-Settings ++ "&WMaker Applets on%mini.pencil.xpm%" ButtonsOn FvwmButtons WinMakerAppButtons WinMakerApp* ++ "WMaker Applets &off%mini.cross.xpm%" ButtonsOff WinMakerAppButtons WinMakerApp* + + +#------------------------------------------------------------------------------ +#--------- Sound settings + +DestroyMenu Sound-Settings +AddToMenu Sound-Settings ++ "&Sound Effect on%mini.audiovol.xpm%" ModuleOn FvwmEvent ++ "Sound Effect &off%mini.cross.xpm%" ModuleOff FvwmEvent +#+ "Sound &card%mini.sound.xpm%" Exec exec xmixer + +#------------------------------------------------------------------------------ +#--------- Layers Settings + +DestroyMenu Layers-Settings +AddToMenu Layers-Settings ++ "%mini.raise2.xpm%StaysOn&Top" Pick (CirculateHit) SetLayers StaysOnTop ++ "%mini.window.xpm%Stays&Put" Pick (CirculateHit) DestroyLayers ++ "%mini.lower2.xpm%StaysOn&Bottom" Pick (CirculateHit) SetLayers StaysOnBottom + +#------------------------------------------------------------------------------ +#--------- X setup Script + +DestroyMenu XsetupScripts +AddToMenu XsetupScripts ++ "&Bell%mini.audiovol.xpm%" FvwmScript FvwmScript-BellSetup ++ "&KeyBoard%mini.keyboard.xpm%" FvwmScript FvwmScript-KeyboardSetup ++ "&Screen%mini.monitor.xpm%" FvwmScript FvwmScript-ScreenSetup ++ "&Mouse%mini.mouse.xpm%" FvwmScript FvwmScript-PointerSetup + +#------------------------------------------------------------------------------ +#--------- Edit config + +#PREF 12 +DestroyMenu Edit-Config +AddToMenu Edit-Config ++ "Edit .fvwm2rc%mini.edit.xpm%" Exec exec gvim $FVWM_USERDIR/.fvwm2rc ++ "Edit decorations%mini.edit.xpm%" Exec exec gvim $FVWM_USERDIR/decorations ++ "Edit globalfeel%mini.edit.xpm%" Exec exec gvim $FVWM_USERDIR/globalfeel ++ "Edit startup%mini.edit.xpm%" Exec exec gvim $FVWM_USERDIR/startup ++ "Edit styles%mini.edit.xpm%" Exec exec gvim $FVWM_USERDIR/styles ++ "Edit iconstyles%mini.edit.xpm%" Exec exec gvim $FVWM_USERDIR/iconstyles ++ "Edit functions%mini.edit.xpm%" Exec exec gvim $FVWM_USERDIR/functions ++ "Edit bindings%mini.edit.xpm%" Exec exec gvim $FVWM_USERDIR/bindings ++ "Edit menus%mini.edit.xpm%" Exec exec gvim $FVWM_USERDIR/menus ++ "Edit modules%mini.edit.xpm%" Exec exec gvim $FVWM_USERDIR/modules + +#------------------------------------------------------------------------------ +#--------- Reload config + +DestroyMenu Reload-Config +AddToMenu Reload-Config ++ "Reload decorations%mini.turn.xpm%" Read decorations ++ "Reload globalfeel%mini.turn.xpm%" Read globalfeel ++ "Reload styles%mini.turn.xpm%" Read styles ++ "Reload iconstyles && menus%mini.turn.xpm%" ReloadIconStylesAndMenus ++ "Reload functions%mini.turn.xpm%" Read functions ++ "Reload bindings%mini.turn.xpm%" Read bindings ++ "Reload modules%mini.turn.xpm%" Read modules + +#------------------------------------------------------------------------------ +#--------- Load / Save As settings + +DestroyMenu Load-Settings +AddToMenu Load-Settings ++ "Show &Fvwm Settings%mini.fvwm.xpm%" ShowFvwmSettings ++ "Show Layers Settings%mini.window.xpm%" ShowLayers ++ "Show &X Settings%mini.x2.xpm%" ShowXSettings ++ "" Nop ++ "&Load Setting 1%mini.turn.xpm%" LoadSettings 1 ++ "Load Setting &2%mini.turn.xpm%" LoadSettings 2 ++ "Load Setting &3%mini.turn.xpm%" LoadSettings 3 ++ "Load Setting &4%mini.turn.xpm%" LoadSettings 4 ++ "Save Current As:" Title ++ "&Setting 1%mini.diskette.xpm%" SaveAsSettings 1 ++ "Setting &2%mini.diskette.xpm%" SaveAsSettings 2 ++ "Setting &3%mini.diskette.xpm%" SaveAsSettings 3 ++ "Setting &4%mini.diskette.xpm%" SaveAsSettings 4 + +#------------------------------------------------------------------------------ +#--------- Focus/Paging settings + +DestroyMenu Focus-Settings +AddToMenu Focus-Settings ++ "&Sloppy Focus%mini.mouse.xpm%" Style * SloppyFocus ++ "&Click To Focus%mini.mouse.xpm%" Style * ClickToFocus ++ "&Focus Follows Mouse%mini.mouse.xpm%" Style * FocusFollowsMouse ++ "" Nop ++ "&Colormap Follows Mouse%mini.colors.xpm%" ColormapFocus FollowsMouse ++ "&Colormap Follows Focus%mini.colors.xpm%" ColormapFocus FollowsFocus ++ "" Nop ++ "&Full Paging ON%mini.maximize2.xpm%" EdgeScroll 100 100 ++ "&All Paging OFF%mini.cross.xpm%" EdgeScroll 0 0 ++ "&Horizontal Paging Only%mini.maximize-horiz.xpm%" EdgeScroll 100 0 ++ "&Vertical Paging Only%mini.maximize-vert.xpm%" EdgeScroll 0 100 ++ "&Partial Paging%mini.maximize2.xpm%" EdgeScroll 50 50 ++ "&Full Paging && Edge Wrap%mini.maximize2.xpm%" EdgeScroll 100000 100000 + + +#------------------------------------------------------------------------------ +#--------- Mouse settings + +DestroyMenu Mouse-Settings +AddToMenu Mouse-Settings ++ "Mouse &Slow%mini.mouse.xpm%" Exec xset m 1 1 ++ "Mouse &Default%mini.mouse.xpm%" Exec xset m default ++ "Mouse &Fast%mini.cat.xpm%" Exec xset m 4 2 ++ "Speedy &Gonzales%mini.cat.xpm%" Exec xset m 10 2 + +#------------------------------------------------------------------------------ +#--------- Keyboard settings + +DestroyMenu Keyboard-Settings +AddToMenu Keyboard-Settings ++ "&Auto-repeat on%mini.keyboard.xpm%" Exec xset r on ++ "Auto-repeat &off%mini.keyboard.xpm%" Exec xset r off + +#------------------------------------------------------------------------------ +#--------- Sound settings + +DestroyMenu Bell-Settings +AddToMenu Bell-Settings ++ "&Bell on%mini.sound.xpm%" Exec xset b on ++ "Bell &off%mini.cross.xpm%" Exec xset b off +#+ "Sound &card%mini.sound.xpm%" Exec exec xmixer + +#------------------------------------------------------------------------------ +#--------- X & screen settings + +DestroyMenu X-Settings +AddToMenu X-Settings ++ "Back &Color%mini.colors.xpm" Popup Backcolor ++ "Back &Animation%mini.fractal.xpm%" Popup Background-Animation ++ "&Root Cursor Form%mini.xarchie.xpm%" FvwmForm FvwmForm-RootCursor ++ "&Video tuning%mini.monitor.xpm%" Exec exec xterm -T Xvidtune -e xvidtune +#+ "&X configuration%mini.display.xpm%" Exec exec xterm -T Xconfig -e Xconfigurator + +#--------- Background color + +DestroyMenu Backcolor +AddToMenu Backcolor ++ "&Black%mini.bball.xpm%" Exec exec xsetroot -solid Black ++ "&Red%mini.bball.xpm%" Exec exec xsetroot -solid Red ++ "&Yellow%mini.bball.xpm%" Exec exec xsetroot -solid Yellow ++ "&Green%mini.bball.xpm%" Exec exec xsetroot -solid Green ++ "&Cyan%mini.bball.xpm%" Exec exec xsetroot -solid Cyan4 ++ "&Blue%mini.bball.xpm%" Exec exec xsetroot -solid Blue ++ "&Magenta%mini.bball.xpm%" Exec exec xsetroot -solid Magenta ++ "&White%mini.bball.xpm%" Exec exec xsetroot -solid White +#+ "&Blue decay%mini.bball.xpm%" Exec exec bggen 100 100 255 0 0 100 | xv -root -quit - +#+ "&Rainbow%mini.bball.xpm%" Exec exec bggen red green blue | xv -root -quit - +#+ "&Full Rainbow%mini.bball.xpm%" Exec exec bggen black red yellow green blue purple black | xv -root -quit - +#+ "&Magenta decay%mini.bball.xpm%" Exec exec bggen blue magenta | xv -root -quit - + +#--------- Background animation + +DestroyMenu "Background-Animation" +AddToMenu "Background-Animation" +#+ "&Braid%mini.rball.xpm%" Exec exec xlock -nice 10 -inroot -mode braid +#+ "&Flame%mini.rball.xpm%" Exec exec xlock -nice 10 -inroot -mode flame +#+ "&Grav%mini.rball.xpm%" Exec exec xlock -nice 10 -inroot -mode grav +#+ "&Pyro%mini.rball.xpm%" Exec exec xlock -nice 10 -inroot -mode pyro +#+ "&Qix%mini.rball.xpm%" Exec exec xlock -nice 10 -inroot -mode qix +#+ "&Rock%mini.rball.xpm%" Exec exec xlock -nice 10 -inroot -mode rock +#+ "&Slip%mini.rball.xpm%" Exec exec xlock -nice 10 -inroot -mode spiral +#+ "&Spline%mini.rball.xpm%" Exec exec xlock -nice 10 -inroot -mode spline +#+ "&Swarm%mini.rball.xpm%" Exec exec xlock -nice 10 -inroot -mode swarm +#+ "&Worm%mini.rball.xpm%" Exec exec xlock -nice 10 -inroot -mode worm +#+ "&Random%mini.rball.xpm%" Exec exec xlock -nice 10 -inroot -mode random + # Stop the animation in the background ++ "&Stop It%mini.cross.xpm%" Exec kill -9 \ + $(ps aux | grep xlock | grep -v grep | awk '{print $2}') + +#------------------------------------------------------------------------------ +#--------- Documents +#------------------------------------------------------------------------------ + +DestroyMenu Documents +AddToMenu Documents ++ "&Xman%mini.book1.xpm%" Exec exec xman ++ "&FVWM Home Page%mini.fvwm.xpm%" Exec exec netscape http://www.hpc.uh.edu/index.html ++ "&Sample 95 MINI-FAQ%mini.book1.xpm%" Exec exec xterm -bg white -fg black -g 80x35 -n "Sample-95 MINI-FAQ" -T "Sample-95 MINI-FAQ" -e less +?"-- Sample-95 MINI-FAQ --" $FVWM_USERDIR/.fvwm2rc ++ "FVWM &Man Pages%mini.book1.xpm%" Popup FvwmManPage ++ "" Nop ++ "&Browser%mini.folder.xpm%" Menu MenuBrowser ++ "Browser (&cached)%mini.folder.xpm%" Menu MenuBrowserCached +AddToMenu Documents MissingSubmenuFunction FuncFvwmMenuDirectory ++ "&Root dir%mini.folder.xpm%" Popup / ++ "&Home dir%mini.folder.xpm%" Popup ~ + +DestroyMenu MenuBrowser +#PREF 1 +AddToMenu MenuBrowser DynamicPopupAction Piperead 'fvwm-menu-directory --reuse --name MenuBrowser --dir $HOME --special-dirs --exec-file ^"gvim" --xterm=" aterm -e" --icon-dir=mini.folder.xpm --icon-title=mini.term.xpm --icon-file=mini.file.xpm --icon-app=mini.hex.xpm --check-subdir' + +DestroyMenu MenuBrowserCached +#PREF 1 +AddToMenu MenuBrowserCached DynamicPopupAction Piperead 'fvwm-menu-directory --all --reuse --name MenuBrowserCached --dir $HOME --special-dirs --exec-file ^"gvim" --xterm=" aterm -e" --icon-dir=mini.folder.xpm --icon-title=mini.term.xpm --icon-file=mini.file.xpm --icon-app=mini.hex.xpm --check-subdir' + +DestroyFunc FuncFvwmMenuDirectory +#PREF 1 +AddToFunc FuncFvwmMenuDirectory I PipeRead 'fvwm-menu-directory --dir "$0" --exec-file ^"gvim" --xterm=" aterm -e" --icon-dir=mini.folder.xpm --icon-title=mini.term.xpm --icon-file=mini.file.xpm --icon-app=mini.hex.xpm --check-subdir' + +#------------- FvwmManPage + +DestroyFunc ViewManPage +AddToFunc ViewManPage ++ I Exec exec xterm -g 80x40 -e man $0 + +DestroyMenu FvwmManPage +AddToMenu FvwmManPage "FVWM Man Pages" Title ++ "%mini.book1.xpm%fvwm2" ViewManPage fvwm2 ++ "%mini.book1.xpm%FvwmAnimate" ViewManPage FvwmAnimate ++ "%mini.book1.xpm%FvwmAuto" ViewManPage FvwmAuto ++ "%mini.book1.xpm%FvwmBacker" ViewManPage FvwmBacker ++ "%mini.book1.xpm%FvwmBanner" ViewManPage FvwmBanner ++ "%mini.book1.xpm%FvwmButtons" ViewManPage FvwmButtons ++ "%mini.book1.xpm%FvwmCommand" ViewManPage FvwmCommand ++ "%mini.book1.xpm%FvwmConsole" ViewManPage FvwmConsole ++ "%mini.book1.xpm%FvwmConsoleC.pl" ViewManPage FvwmConsoleC.pl ++ "%mini.book1.xpm%FvwmCpp" ViewManPage FvwmCpp ++ "%mini.book1.xpm%FvwmDebug" ViewManPage FvwmDebug ++ "%mini.book1.xpm%FvwmDragWell" ViewManPage FvwmDragWell ++ "%mini.book1.xpm%FvwmEvent" ViewManPage FvwmEvent ++ "%mini.book1.xpm%FvwmForm" ViewManPage FvwmForm ++ "%mini.book1.xpm%FvwmGtk" ViewManPage FvwmGtk ++ "%mini.book1.xpm%FvwmIconBox" ViewManPage FvwmIconBox ++ "%mini.book1.xpm%FvwmIconMan" ViewManPage FvwmIconMan ++ "%mini.book1.xpm%FvwmIdent" ViewManPage FvwmIdent ++ "%mini.book1.xpm%FvwmM4" ViewManPage FvwmM4 ++ "%mini.book1.xpm%FvwmPager" ViewManPage FvwmPager ++ "%mini.book1.xpm%FvwmRearrange" ViewManPage FvwmRearrange ++ "%mini.book1.xpm%FvwmSave" ViewManPage FvwmSave ++ "%mini.book1.xpm%FvwmSaveDesk" ViewManPage FvwmSaveDesk ++ "%mini.book1.xpm%FvwmScript" ViewManPage FvwmScript ++ "%mini.book1.xpm%FvwmScroll" ViewManPage FvwmScroll ++ "%mini.book1.xpm%FvwmTaskBar" ViewManPage FvwmTaskBar ++ "%mini.book1.xpm%FvwmTheme" ViewManPage FvwmTheme ++ "%mini.book1.xpm%FvwmWharf" ViewManPage FvwmWharf ++ "%mini.book1.xpm%FvwmWinList" ViewManPage FvwmWinList ++ "" Nop ++ "%mini.book1.xpm%fvwm-config" ViewManPage fvwm-config ++ "%mini.book1.xpm%fvwmbug" ViewManPage fvwmbug ++ "%mini.book1.xpm%fvwmrc_convert" ViewManPage fvwmrc_convert ++ "%mini.book1.xpm%fvwm24_convert" ViewManPage fvwm24_convert ++ "%mini.book1.xpm%xpmroot" ViewManPage xpmroot ++ "" Nop ++ "%mini.book1.xpm%fvwm-menu-desktop" ViewManPage fvwm-menu-desktop ++ "%mini.book1.xpm%fvwm-menu-directory" ViewManPage fvwm-menu-directory ++ "%mini.book1.xpm%fvwm-menu-headlines" ViewManPage fvwm-menu-headlines ++ "%mini.book1.xpm%fvwm-menu-xlock" ViewManPage fvwm-menu-xlock + +#------------------------------------------------------------------------------ +#--------- ScreenSaver +#------------------------------------------------------------------------------ + +DestroyMenu Screen +AddToMenu Screen +#+ "&Screensaver%mini.display.xpm%" Exec exec xlock -nolock -nice 19 -mode random +#+ "Screen&lock%mini.lock.xpm%" Exec exec xlock -nice 19 -mode random +#+ "" Nop +#+ "&Screensaver%mini.display.xpm%" Popup MenuSSaver +#+ "Sc&reen&lock%mini.lock.xpm%" Popup MenuSLock ++ "" Nop ++ "(Re)start &XscreenSaver%mini.display.xpm%" Exec xscreensaver-command -exit ; exec xscreensaver -no-splash ++ "&Stop XscreenSaver%mini.cross.xpm%" Exec exec xscreensaver-command -exit ++ "XscreenSaver &Demo%mini.display.xpm%" Exec xscreensaver-command -exit ; exec xscreensaver; exec xscreensaver-command -demo ++ "" Nop ++ "&Locked XscreenSaver%mini.lock.xpm%" Exec exec xscreensaver-command -lock ++ "&Activate XscreenSaver%mini.display.xpm%" Exec exec xscreensaver-command -activate + + +#PipeRead 'fvwm-menu-xlock -n MenuSSaver -t "Screensaver" -icon-item mini.bball.xpm -- -nice 19 -nolock' +#PipeRead 'fvwm-menu-xlock -n MenuSLock -t "Lock Screen" -icon-item mini.rball.xpm -- -nice 19' + +#------------------------------------------------------------------------------ +#--------- Restart +#------------------------------------------------------------------------------ + +DestroyMenu Restart +AddToMenu Restart "Restart Window Manager" Title ++ "&Restart Self%mini.turn.xpm%" Restart ++ "" Nop +#+ "&fvwm-themes-start%mini.fvwm.xpm%" Restart fvwm-themes-start ++ "&fvwm%mini.fvwm.xpm%" Restart fvwm -s ++ "&fvwm2%mini.fvwm.xpm%" Restart fvwm2 -s ++ "&fvwm95%mini.fvwm.xpm%" Restart fvwm95 -s +#+ "&AnotherLevel%mini.fvwm.xpm%" Restart AnotherLevel +#+ "&AnotherLevelUp%mini.fvwm.xpm%" Restart AnotherLevelUp ++ "" Nop +#+ "&afterstep%mini.windows.xpm%" Restart afterstep +#+ "&blackbox%mini.windows.xpm%" Restart blackbox +#+ "&enlightenment%mini.windows.xpm%" Restart enlightenment +#+ "&flwm%mini.windows.xpm%" Restart flwm +#+ "&icewm%mini.windows.xpm%" Restart icewm +#+ "&kwm%mini.windows.xpm%" Restart kwm +#+ "&mwm%mini.mwm.xpm%" Restart mwm +#+ "&olvwm%mini.olwm.xpm%" Restart olvwm +#+ "&sawfish%mini.windows.xpm%" Restart sawfish +#+ "&sawmill%mini.windows.xpm%" Restart sawmill +#+ "&scwm%mini.windows.xpm%" Restart scwm ++ "&twm%mini.twm.xpm%" Restart twm +#+ "&uwm%mini.windows.xpm%" Restart uwm +#+ "&wm2%mini.windows.xpm%" Restart wm2 +#+ "&wmaker%mini.windows.xpm%" Restart wmaker +#+ "&wmx%mini.windows.xpm%" Restart wmx +#+ "&xfwm%mini.windows.xpm%" Restart xfwm ++ "" Nop ++ "Just &xterm%mini.term.xpm%" Restart xterm +# A bit dangerous in a menu +#+ "" Nop +#+ "Halt%mini.stop.xpm%" Exec exec shutdown -h now +#+ "Reboot%mini.lightbolt-full.xpm%" Exec exec shutdown -r now + + +#------------------------------------------------------------------------------ +#------------- Windows Operations +#------------------------------------------------------------------------------ + +#----------------------------------------------------------------------------- +# The "root" windows ops menu (Mouse 2) + +DestroyMenu "Window" +AddToMenu "Window" "Window Operations" Title ++ "&Move%mini.move1.xpm%" Move ++ "&Resize%mini.resize3.xpm%" Resize ++ "(De)&Iconify%mini.iconify1.xpm%" Iconify ++ "(Un)M&aximize%mini.maximize1.xpm%" Maximize 100 100 ++ "(Un)Max&wide%mini.maximize-horiz1.xpm%" Maximize 100 0 ++ "(Un)Max&tall%mini.maximize-vert1.xpm%" Maximize 0 100 ++ "(Un)&Shade%mini.shade1.xpm%" WindowShade ++ "(Un)S&tick%mini.stick1.xpm%" Stick ++ "R&aise%mini.raise2.xpm%" Raise ++ "&Lower%mini.lower2.xpm%" Lower ++ "" Nop ++ "&Delete%mini.cross.xpm" Delete ++ "&Close%mini.delete.xpm" Close ++ "&Destroy%mini.bomb.xpm%" Destroy ++ "" Nop ++ "Move to &Page%mini.move1.xpm%" Popup Move-window ++ "&Group Ops%mini.windows.xpm%" Popup WindowGroupOps ++ "&Window Style%mini.window.xpm%" Popup WindowStyle ++ "&Rearrange/Scroll%mini.windows.xpm%" Popup WinRearrange ++ "" Nop ++ "&Identify%mini.question.xpm%" Module FvwmIdent ++ "Switch &to...%mini.windows.xpm%" WindowList + +#------------------------------------------------------------------------------ +# A trimmed down version of "Window Ops", good for binding to decorations + +DestroyMenu "Window-Ops2" +AddToMenu "Window-Ops2" ++ "&Move%mini.move1.xpm%" Move ++ "&Resize%mini.resize3.xpm%" Resize ++ "(De)&Iconify%mini.iconify1.xpm%" Iconify ++ "(Un)M&aximize%mini.maximize1.xpm%" Maximize 100 100 ++ "(Un)Max&wide%mini.maximize-horiz1.xpm%" Maximize 100 0 ++ "(Un)Max&tall%mini.maximize-vert1.xpm%" Maximize 0 100 ++ "(Un)&Shade%mini.shade1.xpm%" WindowShade ++ "(Un)S&tick%mini.stick1.xpm%" Stick +#+ "R&aiseLower%mini.raise2.xpm%" RaiseLower ++ "" Nop ++ "&Close%mini.delete.xpm" Close ++ "" Nop ++ "&Identify%mini.question.xpm%" Module FvwmIdent ++ "More&...%mini.window.xpm%" Menu Window This 0 0 + +#------------------------------------------------------------------------------ +# A trimmed down version of "Window Ops", good for binding to TaskBar, +# WinList ... buttons + +DestroyMenu "Window-Ops3" +AddToMenu "Window-Ops3" ++ "Move to &Page%mini.move1.xpm%" Popup Move-window ++ "&Group Ops%mini.windows.xpm%" Popup WindowGroupOps ++ "" Nop ++ "(De)&Iconify%mini.iconify1.xpm%" Iconify ++ "(Un)&Shade%mini.shade1.xpm%" WindowShade ++ "(Un)S&tick%mini.stick1.xpm%" Stick ++ "(Un)M&aximize%mini.maximize1.xpm%" Maximize 95 95 ++ "%mini.window.xpm%Scroll&Bar (75%% scr)" Module FvwmScroll 75p 75p ++ "" Nop ++ "&Close%mini.delete.xpm" Close ++ "" Nop ++ "&Identify%mini.question.xpm%" Module FvwmIdent ++ "More&...%mini.window.xpm%" Menu Window This 0 0 + + +#------------------------------------------------------------------------------ +# A "Move Window" menu + +DestroyMenu "Move-Window" +AddToMenu "Move-Window" "Move to ..." Title ++ 'Page &1%mini.move1.xpm%' MoveToPage 0 0 ++ 'Page &2%mini.move1.xpm%' MoveToPage 1 0 ++ 'Page &3%mini.move1.xpm%' MoveToPage 0 1 ++ 'Page &4%mini.move1.xpm%' MoveToPage 1 1 ++ '' Nop ++ '&Fvwm%mini.move1.xpm%' MoveToDesk 0 0 ++ '&Devel%mini.move1.xpm%' MoveToDesk 0 1 ++ '&Internet%mini.move1.xpm%' MoveToDesk 0 2 ++ '&Misc%mini.move1.xpm%' MoveToDesk 0 3 + +#------------------------------------------------------------------------------ +# A group version of WindowOps + +DestroyMenu WindowGroupOps +AddToMenu WindowGroupOps "Group Ops" Title ++ "&Iconify%mini.iconify1.xpm%" Pick All ($c) Iconify on ++ "&DeIconify%mini.iconify1.xpm%" Pick All ($c) Iconify off ++ "&Shade%mini.shade1.xpm%" Pick All ($c) WindowShade on ++ "&UnShade%mini.shade1.xpm%" Pick All ($c) WindowShade off ++ "R&aise%mini.raise2.xpm%" Pick All ($c) Raise ++ "&Lower%mini.lower2.xpm%" Pick All ($c) Lower ++ "" Nop ++ "&Delete%mini.cross.xpm" Pick Delete ++ "&Close%mini.delete.xpm" Pick Close ++ "&Destroy%mini.bomb.xpm%" Pick Destroy ++ "&Quick move to ..." Title ++ 'Page &1%mini.move1.xpm%' Pick All ($c) MoveToPage 0 0 ++ 'Page &2%mini.move1.xpm%' Pick All ($c) MoveToPage 1 0 ++ 'Page &3%mini.move1.xpm%' Pick All ($c) MoveToPage 0 1 ++ 'Page &4%mini.move1.xpm%' Pick All ($c) MoveToPage 1 1 ++ '' Nop ++ '&Fvwm%mini.move1.xpm%' Pick All ($c) MoveToDesk 0 0 ++ '&Devel%mini.move1.xpm%' Pick All ($c) MoveToDesk 0 1 ++ '&Internet%mini.move1.xpm%' Pick All ($c) MoveToDesk 0 2 ++ '&Misc%mini.move1.xpm%' Pick All ($c) MoveToDesk 0 3 + +DestroyMenu WindowStyle +AddToMenu WindowStyle ++ "%mini.window.xpm%Title&AtTop" Pick (CirculateHit) Style $n TitleAtTop ++ "%mini.window.xpm%&NoTitle" Pick (CirculateHit) Style $n NoTitle ++ "%mini.window.xpm%&Title" Pick (CirculateHit) Style $n NoTitle ++ "%mini.window.xpm%TitleAt&Bottom" Pick (CirculateHit) Style $n TitleAtBottom ++ "" Nop ++ "%mini.raise2.xpm%StaysOn&Top" Pick (CirculateHit) StyleAndRecapture $n StaysOnTop ++ "%mini.window.xpm%Stays&Put" Pick (CirculateHit) StyleAndRecapture $n StaysPut ++ "%mini.lower2.xpm%StaysOn&Bottom" Pick (CirculateHit) StyleAndRecapture $n StaysOnBottom ++ "" Nop ++ "%mini.window.xpm%&FvwmBorder" Pick (CirculateHit) Style $n FvwmBorder ++ "%mini.window.xpm%&MWMBorder" Pick (CirculateHit) Style $n MWMBorder ++ "%mini.window.xpm%&DepressableBorder" Pick (CirculateHit) Style $n DepressableBorder ++ "%mini.window.xpm%&FirmBorder" Pick (CirculateHit) Style $n FirmBorder ++ "%mini.window.xpm%&Handles" Pick (CirculateHit) Style $n Handles ++ "%mini.window.xpm%&NoHandles" Pick (CirculateHit) Style $n NoHandles ++ "%mini.window.xpm%BorderWidth &0" Pick (CirculateHit) Style $n BorderWidth 0 ++ "%mini.window.xpm%BorderWidth &5" Pick (CirculateHit) Style $n BorderWidth 5 ++ "%mini.window.xpm%HandleWidth &0" Pick (CirculateHit) Style $n HandleWidth 0 ++ "%mini.window.xpm%HandleWidth &7" Pick (CirculateHit) Style $n HandleWidth 7 ++ "" Nop ++ "%mini.resize3.xpm%&ResizeOpaque" Pick (CirculateHit) Style $n ResizeOpaque ++ "%mini.resize3.xpm%Resize&Outline" Pick (CirculateHit) Style $n ResizeOutline ++ "%mini.mouse.xpm%Sloppy&Focus" Pick (CirculateHit) Style $n SloppyFocus ++ "%mini.mouse.xpm%&ClickToFocus" Pick (CirculateHit) Style $n ClickToFocus ++ "%mini.mouse.xpm%&MouseFocus" Pick (CirculateHit) Style $n MouseFocus ++ "%mini.mouse.xpm%&NeverFocus" Pick (CirculateHit) Style $n NeverFocus + +DestroyMenu WinRearrange +AddToMenu WinRearrange ++ "&Cascade%mini.windows.xpm%" FvwmRearrange -cascade -m 3 3 -incx 2 ++ "Tile &horizontally%mini.windows.xpm%" FvwmRearrange -tile -h -m 2 2 98 98 ++ "Tile &vertically%mini.windows.xpm%" FvwmRearrange -tile -m 2 2 98 98 ++ "" Nop ++ "&ScrollBar (1/2 app)%mini.window.xpm%" Module FvwmScroll 2 2 ++ "%mini.window.xpm%&Scroll&Bar (75%% scr)" Module FvwmScroll 75p 75p ++ "" Nop ++ "&Arrange Icons%mini.icons.xpm%" All (CurrentDesk Iconic) RecaptureWindow ++ "&Refresh Screen%mini.ray.xpm%" Refresh + +#---------------------------------------------------------------------------- +# Use the winops menus styles for the "Windows Operations Menus" +# Use it also for big menu + +ChangeMenuStyle winops Window Window-Ops2 Window-Ops3 Move-Window WindowGroupOps WindowStyle WinRearrange Back-Solid Back-Gradient FvwmManPage +# MenuSSaver MenuSLock + diff --git a/.fvwm/modules b/.fvwm/modules new file mode 100644 index 0000000..7f3ae06 --- /dev/null +++ b/.fvwm/modules @@ -0,0 +1,492 @@ +#-----------------------------------------------------------------------------# +# +# 11. Definitions used by the modules +# (Alphabetic order is used, but the Form are at the end) +#-----------------------------------------------------------------------------# + +#------------------------------------------------------------------------------ +#------------------ FvwmBacker +#------------------------------------------------------------------------------ + +#*FvwmBacker: Command(Desk 0, Page * *) -solid Blue +#*FvwmBacker: Command(Desk 1, Page * *) -solid \#7F4B7F +#*FvwmBacker: Command(Desk 2, Page * *) -solid midnightblue +#*FvwmBacker: Command(Desk 3, Page * *) -solid black + +#------------------------------------------------------------------------------ +#------------------ FvwmBanner +#------------------------------------------------------------------------------ +Style FvwmBanner NoTitle, Sticky, StaysOnTop, WindowListSkip, CirculateSkip +*FvwmBannerTimeout 2 + +#------------------------------------------------------------------------------ +#------------------ FvwmButtons: BarButtons +#------------------------------------------------------------------------------ + +Style BarButtons NoTitle, NoHandles, Sticky, WindowListSkip,\ + BorderWidth 4, CirculateSkip + +DestroyModuleConfig BarButtons: * +*BarButtons: Fore Black +*BarButtons: Back #c3c3c3 +*BarButtons: Font -adobe-helvetica-bold-r-*-*-10-*-*-*-*-*-*-* +# Geometry - really likes to pick its own size, but giving a position is OK +# Warning: I've added a size geometry to avoid pbs if the fvwm_icons are +# not in the image path ! Remove the size in this geometry especially if +# you add buttons +*BarButtons: Geometry 120x445-5-84 +# Layout: specify rows or columns, not both +*BarButtons: Columns 2 + +#LAPTOP 1 Are you a laptop user ? +#*BarButtons: (2x1, Title "xapm", Swallow(Kill) "xapm" "Exec exec xapm -geometry -1500-1500 -p") +# Define the buttons to use..... +#PREF 3 +*BarButtons: (1x2, Title FileMgr, Icon Xfm.xpm, Action 'Exec exec aterm -g 80x35 -e mc') +*BarButtons: (1x2, Title terminal, Icon rterm2.xpm, Action 'Exec exec aterm') +*BarButtons: (1x2, Title editor, Icon lemacs.xpm, Action 'Exec exec gvim') +*BarButtons: (1x2, Title xv, Icon xv.xpm, Action 'Exec exec xv', \ + Action(Mouse 2) 'Exec exec ee', \ + Action(Mouse 3) 'Exec exec gqview') +*BarButtons: (1x2, Title Gimp, Icon gimp.xpm, Action 'Exec exec gimp', \ + Action(Mouse 2) 'Exec exec xpaint', \ + Action(Mouse 3) 'Exec exec kiconedit') +*BarButtons: (1x2, Title gview, Icon gv.xpm, Action 'Exec exec ghostview', \ + Action(Mouse 2) 'Exec exec xdvi', \ + Action(Mouse 3) 'Exec exec xpdf') +*BarButtons: (1x2, Title www, Icon nscape.xpm, Action 'Exec exec netscape', \ + Action(Mouse 2) 'Exec exec vppp', \ + Action(Mouse 3) 'Exec exec xterm -geometry 80x30 -e mutt') +*BarButtons: (1x2, Padding 0 0, Container(Padding 0 0, Frame 2, Columns 3)) +*BarButtons: (Icon mini.move1.xpm, Action Move) +*BarButtons: (Icon mini.resize3.xpm, Action Resize) +*BarButtons: (Icon mini.iconify1.xpm, Action Iconify) +*BarButtons: (Icon mini.maximize1.xpm, Action Maximize 90 90) +*BarButtons: (Icon mini.shade1.xpm, Action WindowShade) +*BarButtons: (Icon mini.stick1.xpm, Action Stick) +*BarButtons: (Icon mini.cross.xpm, Action Delete) +*BarButtons: (Icon mini.bomb.xpm, Action Destroy) +*BarButtons: (Icon mini.question.xpm, Action Module FvwmIdent) +*BarButtons: (End) +*BarButtons: (1x2, Title "xload", Swallow "xload" "Exec exec nice -16 \ + xload -nolabel -update 4 -bg grey59 -hl grey70 \ + -geometry -1500-1500") +*BarButtons: (1x2, Title "xclock", Swallow "xclock" "Exec \ + exec xclock -padding 0 -geometry -1500-1500") +*BarButtons: (2x2, Swallow "FvwmPagerPager" 'FvwmPager FvwmPagerPager * *') + +#------------------------------------------------------------------------------ +#------------------ FvwmButtons: MiniButtons +#------------------------------------------------------------------------------ + +Style "MiniButtons" NoTitle,NoHandles,Sticky,WindowListSkip,BorderWidth 0,\ + CirculateSkip + +DestroyModuleConfig MiniButtons* +*MiniButtons: Fore Black +*MiniButtons: Back #c0c0c0 +*MiniButtons: Font -adobe-helvetica-bold-r-*-*-10-*-*-*-*-*-*-* +*MiniButtons: Geometry -2+2 +*MiniButtons: Rows 1 +*MiniButtons: Padding 1 1 +#PREF 3 +*MiniButtons: - mini.term.xpm Exec exec aterm +*MiniButtons: - mini.filemgr.xpm Exec exec aterm -g 80x35 -e mc +*MiniButtons: - mini.doc1.xpm Exec exec gvim +*MiniButtons: - mini.calc.xpm Exec exec xcalc +*MiniButtons: - mini.cd.xpm Exec exec xplaycd +*MiniButtons: - mini.audiovol.xpm Exec exec xmixer +*MiniButtons: - mini.happy.xpm Exec exec xmine +*MiniButtons: - mini.bomb.xpm Destroy + +#------------------------------------------------------------------------------ +#------------------ FvwmButtons: DeskerPanelButtons +#------------------------------------------------------------------------------ + +Style "DeskerPanelButtons" NoTitle,NoHandles,Sticky,WindowListSkip,\ + BorderWidth 0, CirculateSkip +#Style "DeskerPanelButtons" StayOnTop +DestroyModuleConfig DeskerPanelButtons: * +*DeskerPanelButtons: Fore Black +*DeskerPanelButtons: Back grey57 +*DeskerPanelButtons: Font -adobe-helvetica-bold-r-*-*-10-*-*-*-*-*-*-* +*DeskerPanelButtons: Geometry 12x79 +*DeskerPanelButtons: Rows 1 +*DeskerPanelButtons: Frame 1 +*DeskerPanelButtons: Padding 0 0 +#FAST 1 +*DeskerPanelButtons: (Panel(right, steps 12, delay 0, position module top, indicator10) "FvwmDesker" 'Module FvwmPager FvwmDesker 0 3') +#SLOW 1 +#*DeskerPanelButtons: (Panel(right, steps 0, position module top, indicator10) "FvwmDesker" 'Module FvwmPager FvwmDesker 0 3') + +#------------------------------------------------------------------------------ +#------------------ FvwmButtons: WinMakerAppButtons & WinMakerAppPanelCd +#------------------------------------------------------------------------------ +Style "WinMakerApp*" NoTitle, NoHandles, BorderWidth 0, Sticky, \ + WindowListSkip, CirculateSkip +DestroyModuleConfig WinMakerAppButtons: * + +#------------------------------------- +# Buttons: +# We use "hands panel", the advantage is that we use the applet +# in the panel only when we need it: Button 3 kill the panel + +*WinMakerAppButtons: Geometry +0+120 +*WinMakerAppButtons: Columns 1 +*WinMakerAppButtons: Back #c0c0c0 +*WinMakerAppButtons: Fore black +*WinMakerAppButtons: (Frame 1, Size 64 64, \ + Swallow "wmjmail" 'Exec exec wmjmail', Action(Mouse 1) \ + 'MyPanelButtons "WinMakerAppPanelMail" $right $top', \ + Action(Mouse 3) 'All (WinMakerAppPanelMail) Close') +*WinMakerAppButtons: (Frame 1, Size 64 64, \ + Swallow "wmppp" 'Exec exec wmppp' Action(Mouse 1) \ + 'MyPanelButtons "WinMakerAppPanelPPP" $right $top', \ + Action(Mouse 3) 'All (WinMakerAppPanelPPP) Close') +*WinMakerAppButtons: (Frame 1, Size 64 64, \ + Swallow "wmmount" 'Exec exec wmmount -s', Action(Mouse 1) \ + 'MyPanelButtons "WinMakerAppPanelCd" $right $top', \ + Action(Mouse 3) 'All (WinMakerAppPanelCd) Close') + +#----------------- +# The Mail Panel +*WinMakerAppPanelMail: Rows 1 +*WinMakerAppPanelMail: Back #c0c0c0 +*WinMakerAppPanelMail: Fore black +*WinMakerAppPanelMail: (Frame 1, Size 64 64, \ + Swallow "wmCalClock" 'Exec exec wmCalClock') +*WinMakerAppPanelMail: (Frame 1, Size 64 64, \ + Swallow "wmglobe" 'Exec exec wmglobe') +*WinMakerAppPanelMail: (Frame 1, Size 64 64, \ + Swallow "wmMoonClock" 'Exec exec wmMoonClock') + +#----------------- +# The PPP Panel +*WinMakerAppPanelPPP: Rows 1 +*WinMakerAppPanelPPP: Back #c0c0c0 +*WinMakerAppPanelPPP: Fore black +*WinMakerAppPanelPPP: (Frame 1, Size 64 64, \ + Swallow "wminet" 'Exec exec wminet') +*WinMakerAppPanelPPP: (Frame 1, Size 64 64, \ + Swallow "wmsysmon" 'Exec exec wmsysmon') + +#----------------- +# The Cd Panel +*WinMakerAppPanelCd: Rows 1 +*WinMakerAppPanelCd: Back #c0c0c0 +*WinMakerAppPanelCd: Fore black +*WinMakerAppPanelCd: (Frame 1, Size 64 64, \ + Swallow "wmmixer" 'Exec exec wmmixer -s') +*WinMakerAppPanelCd: (Frame 1, Size 64 64, \ + Swallow "wmcdplay" 'Exec exec wmcdplay -s') + +#------------------------------------------------------------------------------ +#------------------ FvwmEvent +#------------------------------------------------------------------------------ + +DestroyModuleConfig FvwmEvent: * + +# replace rplay by a sound player that can play .au sound file +*FvwmEvent: Cmd "Exec exec rplay " + +*FvwmEvent: StartDelay 3 +*FvwmEvent: Delay 1 + +*FvwmEvent: startup "/usr/share/sounds/gong.au" +*FvwmEvent: add_window "/usr/share/sounds/wipe.au" +*FvwmEvent: destroy_window "/usr/share/sounds/pook.au" +*FvwmEvent: iconify "/usr/share/sounds/clong.au" +*FvwmEvent: deiconify "/usr/share/sounds/clong.au" +*FvwmEvent: windowshade "/usr/share/sounds/slide.au" +*FvwmEvent: dewindowshade "/usr/share/sounds/slide.au" +*FvwmEvent: new_page "/usr/share/sounds/slide.au" +*FvwmEvent: new_desk "/usr/share/sounds/slide.au" + +#------------------------------------------------------------------------------ +#------------------ FvwmGtk for GNOME menus +#------------------------------------------------------------------------------ + + +*FvwmGtk: IconSize 22 22 +#G_SM_G 1 +#*FvwmGtk: Destroy "gnome-sys" +#G_SM_G 1 +#PipeRead "fvwm-menu-desktop --desktop gnome-sys --install-prefix No --type gtk --enable-mini-icons" +#G_RHM_G 2 +#*FvwmGtk: Destroy "gnome-redhat" +#PipeRead "fvwm-menu-desktop --desktop gnome-redhat --type gtk --enable-mini-icons" +#G_UM_G 2 +#*FvwmGtk: Destroy "gnome-user" +#PipeRead "fvwm-menu-desktop --desktop gnome-user --type gtk --enable-mini-icons" + +#------------------------------------------------------------------------------ +#------------------ IconBox +#------------------------------------------------------------------------------ +Style "FvwmIconBox" NoTitle, NoHandles, Sticky, WindowListSkip, CirculateSkip + +DestroyModuleConfig FvwmIconBox: * +*FvwmIconBox: Back #c0c0c0 +*FvwmIconBox: Fore Black +#WIN 1 +#*FvwmIconBox: IconHiBack Blue4 +#FVWM 1 +*FvwmIconBox: IconHiBack SlateBlue +*FvwmIconBox: IconHiFore white +*FvwmIconBox: Geometry +0-0 +*FvwmIconBox: MaxIconSize 48x48 +*FvwmIconBox: Font -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-* +*FvwmIconBox: SortIcons IconName +#*FvwmIconBox: SortIcons ResClass +*FvwmIconBox: Padding 10 +*FvwmIconBox: FrameWidth 0 0 +*FvwmIconBox: Lines 6 +*FvwmIconBox: SBWidth 11 +*FvwmIconBox: Placement Left Top +*FvwmIconBox: HideSC Horizontal +*FvwmIconBox: SetWMIconSize +*FvwmIconBox: HilightFocusWin +*FvwmIconBox: Resolution Desk +*FvwmIconBox: UseSkipList +# mouse bindings +*FvwmIconBox: Mouse 1 Click DeiconifyFocusAndRaise +*FvwmIconBox: Mouse 1 DoubleClick DeiconifyFocusAndWarp +*FvwmIconBox: Mouse 2 Click Iconify +*FvwmIconBox: Mouse 3 DoubleClick Iconify off +*FvwmIconBox: Mouse 3 Click Menu Window-Ops3 c+0 -101m +*FvwmIconBox: Mouse 3 DoubleClick FvwmIdent +# Key bindings +*FvwmIconBox: Key r RaiseLower +*FvwmIconBox: Key space Iconify +*FvwmIconBox: Key d Close +# FvwmIconBox built-in functions +*FvwmIconBox: Key n Next +*FvwmIconBox: Key p Prev +*FvwmIconBox: Key h Left +*FvwmIconBox: Key j Down +*FvwmIconBox: Key k Up +*FvwmIconBox: Key l Right +# animation +*FvwmIconBoxNoIconAction SendToModule FvwmAnimate animate + +#------------------------------------------------------------------------------ +#------------------ IconMan +#------------------------------------------------------------------------------ +Style "FvwmIconMan" NoTitle, NoHandles, Sticky, WindowListSkip, CirculateSkip + +DestroyModuleConfig FvwmIconMan: * + +# nbr de manager +*FvwmIconMan: *nummanagers 2 +#global, desk, or page +#*FvwmIconMan: *Resolution page +*FvwmIconMan: *Resolution global +#*FvwmIconMan: *Resolution desk +*FvwmIconMan: *background #c0c0c0 +*FvwmIconMan: *foreground Black +*FvwmIconMan: *plainbutton up Black #c0c0c0 +*FvwmIconMan: *selectbutton down Black #c0c0c0 +#WIN 2 +#*FvwmIconMan: *focusbutton up white Blue4 +#*FvwmIconMan: *focusandselectbutton down white Blue4 +#FVWM 2 +*FvwmIconMan: *focusbutton up white SlateBlue +*FvwmIconMan: *focusandselectbutton down white SlateBlue +*FvwmIconMan: *iconbutton down Black grey51 +*FvwmIconMan: *font -adobe-times-bold-r-*-*-12-*-*-*-*-*-*-*- +*FvwmIconMan: *followfocus true +*FvwmIconMan: *usewinlist true +*FvwmIconMan: *sort name +*FvwmIconMan: *drawicons always +*FvwmIconMan: *2*title "Icon Man" +#PREF 4 +*FvwmIconMan: *1*title " gvim windows" +*FvwmIconMan: *1*iconname "FvwmIconMan: gvim" +*FvwmIconMan: *1*format "%i" +*FvwmIconMan: *1*show resource=VIM +*FvwmIconMan: *2*managergeometry 1x0+0-0 +*FvwmIconMan: *1*managergeometry 1x0+260-0 +*FvwmIconMan: *1*buttongeometry 200x20 +*FvwmIconMan: *2*buttongeometry 250x20 +# action +*FvwmIconMan: *action Mouse 1 N sendcommand DeiconifyFocusAndRaise +*FvwmIconMan: *action Mouse 2 N sendcommand Iconify +*FvwmIconMan: *action Mouse 3 N sendcommand "Menu Window-Ops3 c+0 -101m " +*FvwmIconMan: *action Key Left N gotobutton Left, select +*FvwmIconMan: *action Key Right N gotobutton Right, select +*FvwmIconMan: *action Key Up N gotobutton Up, select +*FvwmIconMan: *action Key Down N gotobutton Down, select +*FvwmIconMan: *action Key q A quit +*FvwmIconMan: *action Key i A sendcommand Iconify +*FvwmIconMan: *action Key g A sendcommand IconManGlobal +*FvwmIconMan: *action Key p A sendcommand IconManPage +*FvwmIconMan: *action Key d A sendcommand IconManDesk +# animation +*FvwmIconMan: *NoIconAction "SendToModule FvwmAnimate animate" + +#------------------------------------------------------------------------------ +#------------------ Identify +#------------------------------------------------------------------------------ +Style "FvwmIdent" Sticky, NoButton 2, NoButton 4, NoButton 6 + +*FvwmIdent: Back Blue4 +*FvwmIdent: Fore Yellow +*FvwmIdent: Font -adobe-times-medium-r-*-*-14-*-*-*-*-*-*-* + +#------------------------------------------------------------------------------ +#------------------ FvwmPager: Swallowed by ButtonBar +#------------------------------------------------------------------------------ +Style "FvwmPagerPager" NoTitle, NoHandles, Sticky, WindowListSkip, CirculateSkip + +DestroyModuleConfig FvwmPagerPager: * +*FvwmPagerPager: Back grey60 +*FvwmPagerPager: Fore black +*FvwmPagerPager: Font -adobe-helvetica-bold-r-*-*-10-*-*-*-*-*-*-* +*FvwmPagerPager: Hilight white +*FvwmPagerPager: MiniIcons +*FvwmPagerPager: Balloons +*FvwmPagerPager: BalloonFore black +*FvwmPagerPager: BalloonBack bisque +*FvwmPagerPager: Geometry 319x69+5000+5000 +#WIN 1 +#*FvwmPagerPager: WindowColors white grey51 white Blue4 +#FVWM 1 +*FvwmPagerPager: WindowColors white grey51 white SlateBlue +*FvwmPagerPager: Label 0 Fvwm +*FvwmPagerPager: Label 1 Development +*FvwmPagerPager: Label 2 Internet +*FvwmPagerPager: Label 3 Misc +*FvwmPagerPager: SmallFont 5x8 + +#------------------------------------------------------------------------------ +#------------------ FvwmPager: FvwmDesker, the panel of StartPagerButtons +#------------------------------------------------------------------------------ +Style "FvwmDesker" NoTitle, NoHandles, Sticky, WindowListSkip, CirculateSkip + +DestroyModuleConfig FvwmDesker: * +*FvwmDesker: Back grey60 +*FvwmDesker: Fore black +*FvwmDesker: Font -adobe-helvetica-bold-r-*-*-10-*-*-*-*-*-*-* +*FvwmDesker: Hilight white +*FvwmDesker: Geometry 319x69+5000+5000 +*FvwmDesker: MiniIcons +*FvwmDesker: Balloons +*FvwmDesker: BalloonFore black +*FvwmDesker: BalloonBack bisque +#WIN 1 +#*FvwmDesker: WindowColors white grey51 white Blue4 +#FVWM 1 +*FvwmDesker: Label 0 Fvwm +*FvwmDesker: Label 1 Development +*FvwmDesker: Label 2 Internet +*FvwmDesker: Label 3 Misc +*FvwmDesker: SmallFont 5x8 + +#------------------------------------------------------------------------------ +#------------------ FvwmScript +#------------------------------------------------------------------------------ + +*FvwmScript: DefaultFont -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-* +*FvwmScript: DefaultFore black +*FvwmScript: DefaultBack grey85 +*FvwmScript: DefaultHilight grey100 +*FvwmScript: DefaultShadow grey55 + +#------------------------------------------------------------------------------ +#------------------ FvwmTaskBar +#------------------------------------------------------------------------------ + +Style "FvwmTaskBar" NoTitle,Sticky,WindowListSkip,CirculateSkip,NoHandles, \ + TitleAtBottom +# Note: Title at bottom is for shading. + +*FvwmTaskBar: Geometry +0-0 +*FvwmTaskBar: Fore Black +*FvwmTaskBar: Back #c0c0c0 +*FvwmTaskBar: IconFore Black +*FvwmTaskBar: IconBack grey51 +*FvwmTaskBar: Font -adobe-times-medium-r-*-*-14-*-*-*-*-*-*-* +*FvwmTaskBar: SelFont -adobe-times-bold-r-*-*-14-*-*-*-*-*-*-* +*FvwmTaskBar: StatusFont fixed +*FvwmTaskBar: Action Click1 DeiconifyFocusAndRaise +*FvwmTaskBar: Action Click2 Iconify +*FvwmTaskBar: Action Click3 Menu Window-Ops3 c+0 -101m +*FvwmTaskBar: UseSkipList +*FvwmTaskBar: AutoStick +*FvwmTaskBar: StartName Start +*FvwmTaskBar: StartMenu StartMenu mouse -100p -100m +*FvwmTaskBar: StartIcon mini.penguin.xpm +*FvwmTaskBar: ShowTips +*FvwmTaskBar: ShowTransients +#*FvwmTaskBar: HighlightFocus +*FvwmTaskBar: AutoHide +*FvwmTaskBar: DeskOnly +*FvwmTaskBar: NoIconAction SendToModule FvwmAnimate animate + +#------------------------------------------------------------------------------ +#------------------ FvwmWharf +#------------------------------------------------------------------------------ + +Style "FvwmWharf" NoTitle, NoHandles, Sticky, WindowListSkip,\ + BorderWidth 2,CirculateSkip + +DestroyModuleConfig FvwmWharf: * +*FvwmWharf: Animate +*FvwmWharf: AnimateMain +*FvwmWharf: Geometry -2-50 +*FvwmWharf: Columns 1 +*FvwmWharf: Bgcolor Grey +#*FvwmWharf: ForceSize +*FvwmWharf: FullPush + +*FvwmWharf: TextureType 1 +*FvwmWharf: TextureColor WhiteSmoke DarkGrey + +*FvwmWharf X arrows2.xpm Folder +*FvwmWharf kill rbomb2.xpm Close +*FvwmWharf Recycler Jrecycle.xpm Restart +*FvwmWharf Exit exit.xpm FvwmForm FvwmForm-QuitVerify +*FvwmWharf xlock Jlock.xpm Exec exec xlock -nice 10 -mode random +*FvwmWharf ~Folder +#PREF 3 +*FvwmWharf term rterm2.xpm Exec exec aterm +*FvwmWharf editor lemacs.xpm Exec exec gvim +*FvwmWharf filemgr Xfm.xpm Exec exec aterm -g 80x35 -e mc + +*FvwmWharf Y arrows2.xpm Folder +*FvwmWharf netscape nscape.xpm Exec exec netscape +*FvwmWharf xview xv.xpm Exec exec xv +*FvwmWharf gimp gimp.xpm Exec exec gimp +*FvwmWharf GV gv.xpm Exec exec ghostview +*FvwmWharf ~Folder + +*FvwmWharf xclock nil MaxSwallow "xclock" xclock -padding 0 -bg white +*FvwmWharf xload nil MaxSwallow "xload" \ + xload -nolabel -update 5 -bg grey51 -geometry -1500-1500 +*FvwmWharf pager nil MaxSwallowModule "FvwmPagerPager" FvwmPager FvwmPagerPager * * + +#------------------------------------------------------------------------------ +#------------------ FvwmWinList +#------------------------------------------------------------------------------ +Style "FvwmWinList" NoTitle,Sticky,WindowListSkip,CirculateSkip + +DestroyModuleConfig FvwmWinList: * +*FvwmWinList: Back #c3c3c3 +*FvwmWinList: Fore Black +#WIN 1 +#*FvwmWinList: FocusBack Blue4 +#FVWM 1 +*FvwmWinList: FocusBack SlateBlue +*FvwmWinList: FocusFore white +*FvwmWinList: IconBack grey51 +*FvwmWinList: IconFore Black +*FvwmWinList: Font -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-* +*FvwmWinList: Action Click1 DeiconifyFocusAndRaise +*FvwmWinList: Action Click2 Iconify +*FvwmWinList: Action Click3 Menu Window-Ops3 c+0 -101m +*FvwmWinList: UseSkipList +*FvwmWinList: ShowCurrentDesk +*FvwmWinList: MinWidth 180 +*FvwmWinList: MaxWidth 250 +*FvwmWinList: Geometry +0-0 +*FvwmWinList: NoIconAction SendToModule FvwmAnimate animate + diff --git a/.fvwm/phd.m4 b/.fvwm/phd.m4 new file mode 100644 index 0000000..66043e7 --- /dev/null +++ b/.fvwm/phd.m4 @@ -0,0 +1,1061 @@ +########################################################################## +# FVWM - F? Virtual Window Manager, Version 2.x (fvwm2) Configuration File +# + +dnl The file is in m4 format, use FvwmM4 module to read it +dnl like this: ModuleSynchronous FvwmM4 -lock .fvwm2rc + + +dnl This is to prevent FvwmM4 to shadow $HOME +undefine(`HOME') + + +dnl Echo dimension +changecom(`/*', `*/') +# width = WIDTH +changecom(`#') + + +dnl koi8-r Fonts +dnl define(`SMALL_FONT_KOI8', `-*-fixed-medium-r-normal-*-*-100-*-*-*-*-koi8-r') +dnl define(`MEDIUM_FONT_KOI8', `-*-fixed-medium-r-normal-*-*-120-*-*-*-*-koi8-r') +dnl define(`BIG_FONT_KOI8', `-*-fixed-medium-r-normal-*-*-140-*-*-*-*-koi8-r') + +dnl cp1251 Fonts +dnl define(`SMALL_FONT_CP1251', `-*-fixed-medium-r-normal-*-*-100-*-*-*-*-*-cp1251') +dnl define(`MEDIUM_FONT_CP1251', `-*-fixed-medium-r-normal-*-*-120-*-*-*-*-*-cp1251') +dnl define(`BIG_FONT_CP1251', `-*-fixed-medium-r-normal-*-*-140-*-*-*-*-*-cp1251') + +dnl define(`XBUFFY_FONT', `-cronyx-helvetica-bold-r-*-*-*-100-*-*-*-*-koi8-r') + + +dnl TrueType Fonts +define(`SMALL_FONT', `xft:Sans:size=12') +define(`MEDIUM_FONT', `xft:Sans:size=14') +define(`BIG_FONT', `xft:Sans:size=16') +define(`LARGE_FONT', `xft:Sans:size=18') +define(`HUGE_FONT', `xft:Sans:size=20') + +dnl Bold TT fonts +define(`SMALL_BOLD_FONT', `SMALL_FONT:Bold') +define(`MEDIUM_BOLD_FONT', `MEDIUM_FONT:Bold') +define(`BIG_BOLD_FONT', `BIG_FONT:Bold') + + +dnl Font and geometry aliases that depend on whether the screen resolution is +dnl 800x600, 1024x768 or 1920x1200 + +define(`TITLE_FONT', `MEDIUM_FONT') + +define(`ICON_FONT', `LARGE_FONT') + + +define(`PAGER_GEOM', +`ifelse(eval(WIDTH < 1024), 1, `365x100+0+0',dnl +`ifelse(eval(WIDTH < 1920), 1, `365x100+0+0', `600x160+0+0'dnl +)')'dnl +) + +define(`PAGER_FONT', +`ifelse(eval(WIDTH < 1920), 1, `SMALL_FONT', `BIG_FONT'dnl +)') +define(`BUTTONS_FONT', PAGER_FONT) + + +define(`MENU_FONT', +`ifelse(eval(WIDTH < 1024), 1, `xft:Helvetica:size=16',dnl +`ifelse(eval(WIDTH < 1920), 1, `xft:Helvetica:size=18', `xft:Helvetica:size=22'dnl +)')'dnl +) +define(`IDENT_FONT', MENU_FONT) +define(`WIN_LIST_FONT', MENU_FONT) +define(`ICON_BOX_FONT', MENU_FONT) + + +dnl XSetBg message width and font +define(`TEXT_WIDTH', +`ifelse(eval(WIDTH < 1024), 1, 70,dnl +`ifelse(eval(WIDTH < 1920), 1, 75, 80 dnl +)')'dnl +) + +define(`MESSAGE_FONT', `Nimbus Sans L 18')'dnl + + +dnl Terminal emulator +define(`TERM', `urxvt') + +define(`TERM_KOI8', `Exec LC_CTYPE=ru_RU.KOI8-R exec TERM') + +define(`TERM_UTF8', `Exec exec "$HOME"/lib/X11/utf8rxvt') + +define(`TERM_GEOM', +`ifelse(eval(WIDTH < 1024), 1, `80x25-0-0',dnl +`ifelse(eval(WIDTH < 1920), 1, `80x28-0-0', `80x30-0-0'dnl +)')'dnl +) + +define(`TERM_GEOM_BIG', +`ifelse(eval(WIDTH < 1024), 1, `96x30-0-0',dnl +`ifelse(eval(WIDTH < 1920), 1, `112x32-0-0', `126x35-0-0'dnl +)')'dnl +) + + +define(`REMOTE_HOST_KOI8', +TERM_KOI8 -title "$2" -n "$2" -e ssh -4 "$1"dnl +) + +define(`REMOTE_HOST_KOI8_MENU', +"$2 (koi8)" REMOTE_HOST_KOI8($1, $2)dnl +) + +define(`REMOTE_HOST_UTF8', +TERM_UTF8 -e ssh -4 "$1"dnl +) + +define(`REMOTE_HOST_UTF8_MENU', +"$2 (utf8)" REMOTE_HOST_UTF8($1, $2)dnl +) + +define(`REMOTE_HOST_KOI8_BIG', +TERM_KOI8 -geometry TERM_GEOM_BIG -title "$2" -n "$2" -e ssh -4 "$1"dnl +) + +define(`REMOTE_HOST_KOI8_BIG_MENU', +"$2 (koi8)" REMOTE_HOST_KOI8_BIG($1, $2)dnl +) + + +########################################################################## +# PATH Setup +# +# Colon seperated unix directory paths for Modules, xpm files, and bitmaps +#ModulePath /usr/lib/fvwm +ImagePath /usr/share/pixmaps/fvwm:/usr/share/pixmaps:/usr/include/X11/bitmaps #:/usr/local/firefox/chrome/icons/default:/usr/local/firefox/icons + +############################################################################ +# COLORS and FONTS +# +# Set the fore and back border colors for the window that has focus +Style * HilightFore Black, HilightBack #c06077 + +# Set fore/back border colors for all other windows +Style * Color Black/#60a0c0 + +# Set colors/font for pop-up menus +# Syntax: MenuStyle forecolor backcolor shadecolor font style(fvwm/mwm) +MenuStyle * FVWM, Foreground Black, Background grey, Greyed SlateGrey, Font MENU_FONT fvwm + +# Set fonts to use on title bar and icon label +Style * Font TITLE_FONT + +############################################################################ +# ICON Setup +# +# If you don't want icons for some or all windows (or all of them!) +# Style * !Icon + +# If you want ALL icons to follow you around the desktop (Sticky) +#Style * StickyIcon + +# Auto Place Icons is a nice feature (Left Top Right Bottom) +#Style * IconBox 10 -75 -10 -0 + +Style * IconFont ICON_FONT + +############################################################################ +# FOCUS Setup +# +# Does the window with focus control the colormap, or the one under the mouse +ColormapFocus FollowsMouse + +# Uncomment this to force you to click in a window to give it focus +#Style * ClickToFocus + +# default: focus follows mouse +#Style * MouseFocus +#Style * FocusFollowsMouse + +# If you knock your mouse out of the term, it keeps focus while in root window +Style * SloppyFocus + +############################################################################ +# MISC Setup +# +# click/release must occur in ) +#ButtonStyle 8 8 20x40@1 50x40@1 50x20@1 80x50@1 50x80@0 50x60@0 20x60@0 20x40@1 +# Horizontal Line with arrowheads on left and right ( <-> ) +#ButtonStyle * 12 10x50@1 35x25@1 35x40@1 65x40@1 65x25@1 90x50@1 65x75@0 65x60@0 35x60@0 35x75@0 10x50@0 10x50@1 +# Vertical Line with arrowheads on top and bottom +#ButtonStyle * 12 50x10@1 25x35@1 40x35@1 40x60@1 25x60@1 50x85@1 75x60@0 60x60@0 60x35@0 75x35@0 50x10@0 50x10@1 +# Diagonal Line with arrowheads on top and bottom ( / ) +#ButtonStyle 5 11 80x15@1 45x15@1 55x25@1 25x55@1 15x45@1 15x80@1 50x80@0 40x70@0 70x40@0 80x50@0 80x15@0 +# Diagonal Line with arrowheads on top and bottom ( \ ) +#ButtonStyle 6 12 55x15@0 45x25@0 75x55@0 85x45@0 85x80@0 50x80@0 60x70@1 30x40@1 20x50@1 20x15@1 55x15@1 55x15@0 +# +# the number "2" +#ButtonStyle 8 12 80x80@0 22x80@0 80x40@0 70x25@0 30x25@0 20x35@0 20x30@1 30x20@1 70x20@1 80x30@1 20x75@1 80x75@1 + + +############################################################################ +# MOUSE Setup +# +# First, the root window. Button 1 brings up the Main Menu. B2 is the +# window operations list, and B3 is the winlist module +# Button Context Modifi Function +Mouse 1 R A Menu RootMenu Nop +Mouse 2 R A Menu Window-Ops Nop +Mouse 3 R A WindowList + +# Now, title bar buttons +# Left button is the Window-Ops2 menu +# Button Context Modifi Function +Mouse 0 1 A Menu Window-Ops2 Close +Mouse 0 3 A Stick +Mouse 0 5 A Center +# Right buttonsare iconify/maximize, rightmost is close +Mouse 0 2 A Close +Mouse 0 4 A Maximize toggle +Mouse 0 6 A Iconify + +# Button 1 in Frame or Sides is a resize-or-raise, in Icons is a move or +# de-iconify, and on Top does a move-or-raise +# Button Context Modifi Function +Mouse 1 F A Resize-or-Raise +Mouse 1 S A Move-or-Raise +Mouse 1 I A Move-or-Iconify +#Mouse 1 T A Move-or-Raise +Mouse 1 T A Shadify + +# Button 2 in an Icon is de-iconify, in Corners/Sides/Titlebar gets Ops Menu +# Button Context Modifi Function +Mouse 2 I A Iconify +Mouse 2 FST A Menu Window-Ops2 Nop + +# Button 3 does a raise-lower on anything +Mouse 3 TSIF A RaiseLower + +############################################################################ +# KEYBOARD Setup + +# +# press arrow + control + meta anywhere, and scroll by 1 page +Key Left A CM Scroll -100 +0 +Key Right A CM Scroll +100 +0 +Key Up A CM Scroll +0 -100 +Key Down A CM Scroll +0 +100 + +# press arrow + meta key, and scroll by 1/10 of a page +Key Left A M Scroll -10 +0 +Key Right A M Scroll +10 +0 +Key Up A M Scroll +0 -10 +Key Down A M Scroll +0 +10 + +# press shift arrow + control anywhere, and move the pointer by 1% of a page +Key Left A SC CursorMove -1 +0 +Key Right A SC CursorMove +1 +0 +Key Up A SC CursorMove +0 -1 +Key Down A SC CursorMove +0 +1 + +# press shift arrow + meta key, and move the pointer by 1/10 of a page +Key Left A SM CursorMove -10 +0 +Key Right A SM CursorMove +10 +0 +Key Up A SM CursorMove +0 -10 +Key Down A SM CursorMove +0 +10 + +# Switch window, mswindows style :) +Key Tab A M Next [*] focus +Key Escape A M Prev [*] focus + +# Goto desktop/page +Key 1 A CM Desk 0 0 +Key 2 A CM Desk 0 1 +Key 3 A CM Desk 0 2 +Key 4 A CM Desk 0 3 +Key 5 A CM GotoPage 0 0 +Key 6 A CM GotoPage 1 0 +Key 7 A CM GotoPage 0 1 +Key 8 A CM GotoPage 1 1 + +############################################################################# +# START-UP Functions +# +AddToFunc "InitFunction" ++ I Module FvwmBacker ++ I Module FvwmButtons ++ I Module FvwmCommandS ++ I Module FvwmPager 0 2 + +AddToFunc "RestartFunction" ++ I Module FvwmBacker ++ I Module FvwmButtons ++ I Module FvwmCommandS ++ I Module FvwmPager 0 2 ++ I Next [!iconic CurrentScreen xterm] Focus + +AddToFunc "StartStandardSession" ++ I GotoDeskAndPage 0 0 0 ++ I TERM_KOI8 ++ I Wait TERM ++ I GotoDeskAndPage 0 0 1 ++ I TERM_KOI8 -geometry 38x30+0-0 ++ I Wait TERM ++ I GotoDeskAndPage 0 1 0 ++ I TERM_KOI8 -e su - ++ I Wait TERM ++ I PaVuControl ++ I Wait "Volume Control" ++ I FireFox ++ I Wait "*Mozilla Firefox" ++ I GotoDeskAndPage 2 0 1 ++ I TERM_KOI8 -geometry TERM_GEOM_BIG ++ I Wait TERM ++ I Pidgin ++ I Wait Pidgin ++ I TERM_UTF8 -iconic -name term-im-remote ++ I Wait URxvt ++ I TERM_KOI8 -geometry 60x25-5-5 -iconic -name term-im-local ++ I Wait URxvt ++ I GotoDeskAndPage 1 1 0 ++ I Schedule 5000 GotoDeskAndPage 0 1 0 + + +############################################################################ +# COMPLEX FUNCTIONS +# +DestroyFunc Center +AddToFunc Center I Move 50-50w 50-50w ++ I WarpToWindow 74p 18p + +AddToFunc Iconify-and-Raise I Iconify ++ I Raise + +AddToFunc Maximize-Func C Maximize toggle ++ D Maximize 100 100 + +AddToFunc Move-or-Iconify I Raise ++ M Move ++ D Iconify + +AddToFunc Move-or-Raise I Raise ++ M Move ++ D Lower + +AddToFunc Move-or-Raise2 M Raise ++ M Move ++ D Lower + +AddToFunc Resize-or-Raise I Raise ++ M Resize ++ D Lower + +AddToFunc Resize-or-Raise2 M Raise ++ M Resize ++ D Lower + +AddToFunc Shadify D WindowShade ++ M Move ++ C RaiseLower + +AddToFunc warp-or-run I Next [$0 CirculateHit] Iconify -1 ++ I Next [$0 CirculateHit] Focus ++ I None [$0] $1 + +AddToFunc MailFunction I Next [$0] Iconify -1 ++ I Next [$0] focus ++ I None [$0] Exec exec $0 $1 + +AddToFunc PrintFunction I Raise ++ I Exec exec xdpr -id $w + +############################################################################## +# User-defined functions +# + +DestroyFunc PaVuControl +AddToFunc PaVuControl I GotoDeskAndPage 0 1 1 ++ I Exec exec pavucontrol + +changequote([,]) +DestroyFunc Id3Info +AddToFunc Id3Info I Exec "$HOME"/lib/audio/mp3/id3info.py "`deadbeef --nowplaying '%F'`" | text-wrap.py -n | gxmessage -buttons Ok -default Ok -fn 'MESSAGE_FONT' -file - +changequote([`], [']) + +#DestroyFunc Audacious +#AddToFunc Audacious I GotoDeskAndPage 0 1 1 +#+ I Exec LC_CTYPE=ru_RU.UTF-8 exec audacious + +DestroyFunc DeadBeef +AddToFunc DeadBeef I GotoDeskAndPage 0 1 1 ++ I Exec exec deadbeef + +DestroyFunc SMPlayer +AddToFunc SMPlayer I GotoDeskAndPage 0 1 1 ++ I Exec exec smplay -no-close-at-end + +DestroyFunc Term-Phdru +AddToFunc Term-Phdru I GotoDeskAndPage 1 0 1 ++ I REMOTE_HOST_KOI8(phdru.name, phdru.name) + +DestroyFunc Term-Phdru-Big +AddToFunc Term-Phdru-Big I GotoDeskAndPage 1 0 1 ++ I REMOTE_HOST_KOI8_BIG(phdru.name, phdru.name) + +DestroyFunc FireFox +AddToFunc FireFox I GotoDeskAndPage 1 0 0 ++ I Exec LC_CTYPE=ru_RU.KOI8-R exec start-browser firefox + +#DestroyFunc Gajim +#AddToFunc Gajim I GotoDeskAndPage 1 1 0 +#+ I Exec exec gajim + +DestroyFunc Pidgin +AddToFunc Pidgin I GotoDeskAndPage 1 1 0 ++ I Exec exec pidgin + +DestroyFunc Raise-All +AddToFunc Raise-All I All (!"FvwmButtons|System|*clock") Raise + +DestroyFunc UrgencyFunc +AddToFunc UrgencyFunc ++ I Iconify off ++ I ThisWindow ("*Downloads") Break ++ I FlipFocus ++ I Raise ++ I WarpToWindow 5p 5p + +############################################################################## +# MENU Setup +# + +# This defines the most common window operations +AddToMenu Window-Ops "Window Ops" Title ++ "Center" Center ++ "Move" Move-or-Raise2 ++ "Resize" Resize-or-Raise2 ++ "Raise" Raise ++ "Lower" Lower ++ "(De)Iconify" Iconify ++ "(Un)Stick" Stick ++ "(Un)Maximize" maximize_func ++ "" Nop ++ "Delete" Delete ++ "Close" Close ++ "Destroy" Destroy ++ "" Nop ++ "Refresh Screen" Refresh + +# A trimmed down version of "Window Ops", good for binding to decorations +DestroyMenu "Window-Ops2" +AddToMenu Window-Ops2 "Center" Center ++ "Move" Move-or-Raise ++ "Iconify" Iconify ++ "(Un)Stick" Stick ++ "Refresh" RefreshWindow ++ "" Nop ++ "Close" Close ++ "Delete" Delete ++ "Destroy" Destroy ++ "" Nop ++ "Resize" Resize-or-Raise ++ "Shade" WindowShade ++ "Raise/Lower" RaiseLower ++ "" Nop ++ "ScrollBar" Module FvwmScroll 2 2 ++ "Print" PrintFunction + +AddToMenu Terminals "Terminals" Title ++ "Grey term (koi8)" TERM_KOI8 ++ "Grey term (utf8)" TERM_UTF8 ++ "Big grey term (koi8)" TERM_KOI8 -geometry TERM_GEOM_BIG ++ "" Nop ++ "White/black term (koi8)" TERM_KOI8 -fg white -cr white -bg black ++ "White/black term (utf8)" TERM_UTF8 -fg white -bg black + +AddToMenu TermColors "Term Colors" Title ++ "Term: black/mediumturquoise" TERM_KOI8 -fg black -cr black -bg mediumturquoise ++ "Term: black/lightseagreen" TERM_KOI8 -fg black -cr black -bg lightseagreen ++ "" Nop ++ "Term: black/lightsteelblue" TERM_KOI8 -fg black -cr black -bg lightsteelblue ++ "Term: black/lightblue3" TERM_KOI8 -fg black -cr black -bg lightblue3 ++ "" Nop ++ "Term: black/lightgoldenrod" TERM_KOI8 -fg black -cr black -bg lightgoldenrod ++ "Term: black/rosybrown1" TERM_KOI8 -fg black -cr black -bg rosybrown1 ++ "Term: black/pink1" TERM_KOI8 -fg black -cr black -bg pink1 ++ "" Nop ++ "Term: white/orchid4" TERM_KOI8 -fg white -cr white -bg orchid4 ++ "Term: white/purple3" TERM_KOI8 -fg white -cr white -bg purple3 ++ "Term: white/purple4" TERM_KOI8 -fg white -cr white -bg purple4 ++ "" Nop ++ "Term: white/lightslategrey" TERM_KOI8 -fg white -cr white -bg lightslategrey ++ "Term: white/navyblue" TERM_KOI8 -fg white -cr white -bg navyblue ++ "Term: white/mediumblue" TERM_KOI8 -fg white -cr white -bg mediumblue ++ "Term: white/steelblue" TERM_KOI8 -fg white -cr white -bg steelblue ++ "" Nop ++ "Term: white/forestgreen" TERM_KOI8 -fg white -cr white -bg forestgreen ++ "Term: white/rosybrown" TERM_KOI8 -fg white -cr white -bg rosybrown ++ "Term: white/deeppink" TERM_KOI8 -fg white -cr white -bg deeppink ++ "Term: white/black" TERM_KOI8 -fg white -cr white -bg black + +AddToMenu Systems "Systems" Title ++ REMOTE_HOST_KOI8_MENU(phdru.name, phdru) ++ REMOTE_HOST_UTF8_MENU(phdru.name, phdru) ++ REMOTE_HOST_KOI8_BIG_MENU(phdru.name, PHDRU) + +AddToMenu FvwmCommands "Fvwm Commands" Title ++ "Restart" Restart ++ "Raise all" Raise-All +#+ "Restart Fvwm2" Restart fvwm2 +#+ "Start Fvwm" Restart fvwm ++ "Fvwm Setup" Popup FvwmSetup ++ "Fvwm Modules" Popup FvwmModules ++ "" Nop ++ "Exit Fvwm" Quit + +AddToMenu FvwmSetup "Fvwm Setup" Title ++ "Start standard session" StartStandardSession ++ "Change Scrolling" Popup FvwmScroll + +AddToMenu FvwmScroll "Change Scroll Behavior" Title ++ "OFF" EdgeScroll 0 0 ++ "ON" EdgeScroll 100 100 ++ "Horizontal Only" EdgeScroll 100 0 ++ "Vertical Only" EdgeScroll 0 100 ++ "Partial" EdgeScroll 50 50 + +AddToMenu FvwmModules "Fvwm Modules" Title ++ "Animate" Module FvwmAnimate ++ "Auto" Module FvwmAuto ++ "Backer" Module FvwmBacker ++ "Banner" Module FvwmBanner ++ "Buttons" Module FvwmButtons ++ "Cascade" Module FvwmCascade ++ "CommandS" Module FvwmCommandS ++ "Console" Module FvwmConsole ++ "ConsoleC" Module FvwmConsoleC -e FvwmConsoleC.pl ++ "Cpp" Module FvwmCpp ++ "Debug" Module FvwmDebug ++ "DragWell" Module FvwmDragWell ++ "Event" Module FvwmEvent ++ "Form" Module FvwmForm ++ "Gtk" Module FvwmGtk ++ "IconBox" Module FvwmIconBox ++ "IconMan" Module FvwmIconMan ++ "Ident" Module FvwmIdent ++ "M4" Module FvwmM4 ++ "Pager" Module FvwmPager 0 2 ++ "Rearrange" Module FvwmRearrange ++ "Save" Module FvwmSave ++ "SaveDesk" Module FvwmSaveDesk ++ "Script" Module FvwmScript ++ "Scroll" Module FvwmScroll ++ "TaskBar" Module FvwmTaskBar ++ "Theme" Module FvwmTheme ++ "Tile" Module FvwmTile ++ "Wharf" Module FvwmWharf ++ "WinList" Module FvwmWinList + +# This is the root menu +AddToMenu RootMenu "Root Menu" Title ++ "Terminals" Popup Terminals +#+ "Color term" Popup TermColors ++ "Systems" Popup Systems ++ "" Nop ++ "Browsers" Popup Browsers ++ "Utilities" Popup Utilities +#+ "" Nop +#+ "Lock Screen" Popup XlockMenu ++ "XScreenSaver" Popup XScreenSaverMenu +#+ "Tv-tuner" Popup Tv-tuner ++ "" Nop ++ "XSetBg" Popup XSetBgMenu ++ "Fvwm Commands" Popup FvwmCommands + +# This menu will fire up some often used programs +DestroyMenu Utilities +AddToMenu Utilities "Choose one:" Title ++ "FBReader" Exec exec fbreader ++ "GVim (koi8)" Exec LC_CTYPE=ru_RU.KOI8-R exec gvim ++ "GVim (utf8)" Exec LC_CTYPE=ru_RU.UTF-8 exec gvim ++ "MyRuLb (koi8)" Exec LC_CTYPE=ru_RU.KOI8-R exec "$HOME"/admin/prog/myrulib/myrulib ++ "MyRuLb (utf8)" Exec LC_CTYPE=ru_RU.UTF-8 exec "$HOME"/admin/prog/myrulib/myrulib +#+ "XFortune" Exec /usr/games/fortune | gxmessage -buttons Ok -default Ok -fn 'MESSAGE_FONT' -file - +#+ "xbuffy" Exec exec xbuffy -fn 'XBUFFY_FONT' -geometry +0+125 -boxfile mail/misc/.xbuffyrc ++ "" Nop ++ "pavucontrol" PaVuControl +#+ "audacious" Audacious ++ "DeadBeef" DeadBeef ++ "Id3Info" Id3Info +#+ "Gajim" Gajim ++ "Pidgin" Pidgin ++ "" Nop ++ "xload" Exec exec xload -geometry =136x136+0+0 ++ "Top" TERM_KOI8 -T Top -n Top -e top ++ "" Nop ++ "Refresh Screen" Refresh ++ "xrefresh" Exec exec xrefresh ++ "" Nop ++ "xcalc" Exec exec xcalc ++ "xclipboard" Exec exec xclipboard ++ "xcutsel" Exec exec xcutsel +#+ "xman" Exec exec xman -notopbox -geometry +150+102 +#+ "emacs" Exec emacs -geometry 81x35+150+34 +#+ "xv" Function warp-or-run xv "Exec exec xv -ncols 240 -geometry +0+0" + +DestroyMenu Browsers +AddToMenu Browsers "Choose one:" Title ++ "FireFox" FireFox ++ "Chromium" Exec LC_CTYPE=ru_RU.KOI8-R exec start-browser chromium ++ "Opera" Exec LC_CTYPE=ru_RU.KOI8-R exec start-browser opera + +# A wide variety of screenlocking options... +#AddToMenu XlockMenu "Choose one:" Title +#+ "Hop" Exec exec xlock -mode hop +#+ "Image" Exec exec xlock -mode image +#+ "Life" Exec exec xlock -mode life +#+ "Flame" Exec exec xlock -mode flame +#+ "Pyro" Exec exec xlock -mode pyro +#+ "Qix" Exec exec xlock -mode qix +#+ "Rotor" Exec exec xlock -mode rotor +#+ "Swarm" Exec exec xlock -mode swarm +#+ "" Nop +#+ "Random" Exec exec xlock -mode random +#+ "Blank" Exec exec xlock -mode blank + +AddToMenu XScreenSaverMenu "Choose mode:" Title ++ "Blank Screen Now" Exec exec xscreensaver-command -activate ++ "Lock Screen Now" Exec exec xscreensaver-command -lock ++ "Screen Saver Demo" Exec exec xscreensaver-command -demo ++ "Screen Saver Preferences" Exec exec xscreensaver-command -prefs ++ "Reinitialize Screen Saver" Exec exec xscreensaver-command -restart ++ "" Nop ++ "Launch Screen Saver" Exec exec xscreensaver ++ "Kill Screen Saver" Exec exec xscreensaver-command -exit + +AddToMenu XSetBgMenu "XSetBg" Title ++ "Change wallpaper" Exec exec "$HOME"/lib/xsetbg/xsetbg-force ++ "Start" Exec exec "$HOME"/lib/xsetbg/xsetbg-http-start ++ "Stop" Exec exec "$HOME"/lib/xsetbg/xsetbg-http-stop ++ "Restart" Exec exec "$HOME"/lib/xsetbg/xsetbg-http-restart ++ "" Nop +changequote([,]) ++ "Xli" Exec fn="`$HOME/lib/xsetbg/print-filename.py -e koi8-r`" && exec xli -title "`echo $fn | sed 's/ /_/g'`" "$fn" ++ "Xli (scaled)" Exec fn="`$HOME/lib/xsetbg/print-filename.py -e koi8-r`" && exec xli -title "`echo $fn | sed 's/ /_/g'`" -zoom auto "$fn" ++ "Open in browser" Exec exec webbrowserX -n "`$HOME/lib/xsetbg/print-filename.py -e koi8-r`" ++ "Filename" Exec exec "$HOME"/lib/xsetbg/print-filename.py -e koi8-r ++ "XFilename" Exec "$HOME"/lib/xsetbg/print-filename.py | text-wrap.py -n | gxmessage -buttons Ok -default Ok -fn 'MESSAGE_FONT' -file - ++ "XFilename (wrapped)" Exec "$HOME"/lib/xsetbg/print-filename.py | text-wrap.py -w TEXT_WIDTH -s -n | gxmessage -buttons Ok -default Ok -fn 'MESSAGE_FONT' -file - ++ "" Nop ++ "Xli (prev.)" Exec fn="`$HOME/lib/xsetbg/print-filename.py -e koi8-r -o`" && exec xli -title "`echo $fn | sed 's/ /_/g'`" "$fn" ++ "Xli (prev., scaled)" Exec fn="`$HOME/lib/xsetbg/print-filename.py -e koi8-r -o`" && exec xli -title "`echo $fn | sed 's/ /_/g'`" -zoom auto "$fn" ++ "Open in browser (prev.)" Exec exec webbrowserX -n "`$HOME/lib/xsetbg/print-filename.py -e koi8-r -o`" +changequote([`], [']) ++ "Filename (prev.)" Exec exec "$HOME"/lib/xsetbg/print-filename.py -e koi8-r -o ++ "XFilename (prev.)" Exec "$HOME"/lib/xsetbg/print-filename.py -o | text-wrap.py -n | gxmessage -buttons Ok -default Ok -fn 'MESSAGE_FONT' -file - ++ "XFilename (prev., wrapped)" Exec "$HOME"/lib/xsetbg/print-filename.py -o | text-wrap.py -w TEXT_WIDTH -s -n | gxmessage -buttons Ok -default Ok -fn 'MESSAGE_FONT' -file - + +############################################################################ +# FvwmBacker +# +#*FvwmBacker: Command (Desk 0, Page * *) -solid DarkCyan +#*FvwmBacker: Command (Desk 1, Page * *) -solid steelblue +#*FvwmBacker: Command (Desk 2, Page * *) -solid midnightblue +*FvwmBacker: Command (Desk *, Page * *) Exec exec "$HOME"/lib/xsetbg/xsetbg-http-change + +############################################################################ +# FvwmButtons +# +# Colors +*FvwmButtons: Fore Black +*FvwmButtons: Back rgb:90/80/90 + +# Font +*FvwmButtonsFont BUTTONS_FONT +*FvwmButtons: Font BUTTONS_FONT + +# Geometry-- really likes to pick its own size, but giving a position is OK +*FvwmButtons: Geometry -1+1 + +# Layout: specify rows or columns, not both +*FvwmButtons: Rows 2 #, Columns 5 + +# Transparent background +#*FvwmButtons: Pixmap none +# Background +#*FvwmButtons: Pixmap fvwm.xpm + + +# Define the buttons to use..... +#*FvwmButtons: Move arrows2.xpm Move +#*FvwmButtons: Kill skull.xpm Destroy +#*FvwmButtons: Quit nuke.xpm Popup "Quit-Verify" + +#*FvwmButtons: (de)Iconify eyenew.xpm Iconify +#*FvwmButtons: Restart eye2.xpm Restart +#*FvwmButtons: Xcalc rcalc.xpm Exec "Calculator" exec xcalc +#*FvwmButtons: junk 3dx.xpm Swallow "xload" xload -bg \#908090 +#*FvwmButtons: xmter x.xpm Swallow "xmter" xmter +#*FvwmButtons: "" clock.xpm Swallow "xclock" xclock -bg \#908090 -padding 0 +#*FvwmButtons: "" 3dx.xpm Swallow "Time 3D" t3d -fg \#908090 -mag .3 -wobber 0 + +#*FvwmButtons: (Swallow XClock 'Exec exec xclock -update 1 -geometry -3000-3000') +#*FvwmButtons: news page.xpm TERM_KOI8 -title "Tin" -fn 10x20 -fg white -cr white -bg black -e tin +#*FvwmButtons: Minicom mini-connect.xpm TERM_KOI8 -title "Minicom" -fg white -cr white -bg black -e minicom +#*FvwmButtons: Real bell.xpm Exec cd /opt/audio && exec realplay +#*FvwmButtons: Kill rbomb.xpm Destroy + + +# Buttons +*FvwmButtons: (Title Term, Icon rterm2.xpm, Action TERM_KOI8) +*FvwmButtons: (Title UTF-8, Icon rterm2.xpm, Action TERM_UTF8) +*FvwmButtons: (Title phdru, Icon xterm-sgi.xpm, Action Term-Phdru) + +*FvwmButtons: (Title Wallpaper, Icon find1.xpm, Action Exec $HOME/lib/xsetbg/print-filename.py | text-wrap.py -w TEXT_WIDTH -s -n | gxmessage -buttons Ok -default Ok -fn 'MESSAGE_FONT' -file -) +*FvwmButtons: (Title "-1", Icon find1.xpm, Action Exec $HOME/lib/xsetbg/print-filename.py -o | text-wrap.py -w TEXT_WIDTH -s -n | gxmessage -buttons Ok -default Ok -fn 'MESSAGE_FONT' -file -) +*FvwmButtons: (Title Next, Icon Jrecycle.xpm, Action Exec exec "$HOME"/lib/xsetbg/xsetbg-http-force) +*FvwmButtons: (Title pavucontrol, Icon mini.sound.xpm, Action PaVuControl) +#*FvwmButtons: (Title Id3Info, Icon bell.xpm, Action Id3Info) +#*FvwmButtons: (Title Audacious, Icon bell.xpm, Action Audacious) +*FvwmButtons: (Title DeadBeef, Icon bell.xpm, Action DeadBeef) +#*FvwmButtons: (Title SMPlayer, Icon bell.xpm, Action SMPlayer) +#*FvwmButtons: (Title XLock, Icon Jxlock.xpm, Action Exec exec xscreensaver-command -lock) + +############################################################################ +# FvwmForm +# +# FvwmForm alias - rlogin to host via term +#FvwmForm Rlogin +#*Rlogin: WarpPointer +#*Rlogin: Font *helvetica*m*r*n*14* +#*Rlogin: ButtonFont *helvetica*m*o*n*14* +#*Rlogin: InputFont *cour*m*r*n*14* +#*Rlogin: Fore Black +#*Rlogin: Back Light Gray +#*Rlogin: ItemFore Wheat +#*Rlogin: ItemBack Gray50 +## begin items +#*Rlogin: Line center +#*Rlogin: Text "Login to Remote Host" +#*Rlogin: Line center +#*Rlogin: Text "Host:" +#*Rlogin: Input HostName 20 "" +#*Rlogin: Line center +#*Rlogin: Selection UserSel single +#*Rlogin: Choice Default Default on "same user" +#*Rlogin: Choice Custom Custom off "user:" +#*Rlogin: Input UserName 10 "" +#*Rlogin: Line expand +#*Rlogin: Button quit "Login" ^M +#*Rlogin: Command TERM_KOI8 -T term@$(HostName) -e rlogin $(HostName) $(Custom?-l $(UserName)) +#*Rlogin: Button restart "Clear" +#*Rlogin: Command Beep +#*Rlogin: Button quit "Cancel" +#*Rlogin: Command Nop +## +## FvwmForm alias - query exit ala mwm +#FvwmForm QuitVerify +#*QuitVerify: GrabServer +#*QuitVerify: WarpPointer +#*QuitVerify: Font *helvetica*m*r*n*14* +##*QuitVerify: ButtonFont *helvetica*m*o*n*14* +#*QuitVerify: ButtonFont 7x13bold +#*QuitVerify: Fore Black +#*QuitVerify: Back Light Gray +#*QuitVerify: ItemFore Wheat +#*QuitVerify: ItemBack Gray50 +## begin items +#*QuitVerify: Line center +#*QuitVerify: Text "Do you really want to exit FVWM?" +#*QuitVerify: Line expand +#*QuitVerify: Button quit " Exit " +#*QuitVerify: Command Quit +#*QuitVerify: Button quit "Cancel" +#*QuitVerify: Command Nop +# +## +## MyTalk & MyFvwmTalk from Dave Goldberg +## MyTalk Form - dissappears after use +#FvwmForm MyTalk +#*MyTalk: WarpPointer +#*MyTalk: Font *helvetica*m*r*n*14* +#*MyTalk: ButtonFont *helvetica*m*o*n*14* +#*MyTalk: InputFont *cour*m*r*n*14* +#*MyTalk: Fore Red +#*MyTalk: Back Gray +#*MyTalk: ItemFore Blue +#*MyTalk: ItemBack Gray +#*MyTalk: Line center +#*MyTalk: Text "Fvwm Function" +#*MyTalk: Input Func 40 "" +#*MyTalk: Line expand +#*MyTalk: Button quit "Run" ^M +#*MyTalk: Command $(Func) +#*MyTalk: Button restart "Clear" ^R +#*MyTalk: Button quit "Cancel" ^C +#*MyTalk: Command Nop +## +## MyFvwmTalk Form - sticks around +#FvwmForm MyFvwmTalk +#*MyFvwmTalk: WarpPointer +#*MyFvwmTalk: Font *helvetica*m*r*n*14* +#*MyFvwmTalk: ButtonFont *helvetica*m*o*n*14* +#*MyFvwmTalk: InputFont *cour*m*r*n*14* +#*MyFvwmTalk: Fore Red +#*MyFvwmTalk: Back Gray +#*MyFvwmTalk: ItemFore Blue +#*MyFvwmTalk: ItemBack Gray +#*MyFvwmTalk: Line center +#*MyFvwmTalk: Text "Fvwm Function" +#*MyFvwmTalk: Input Func 40 "" +#*MyFvwmTalk: Line expand +#*MyFvwmTalk: Button restart "Run" ^M +#*MyFvwmTalk: Command $(Func) +#*MyFvwmTalk: Button restart "Clear" ^R +#*MyFvwmTalk: Command Nop +#*MyFvwmTalk: Button restart "Iconify" ^Z +#*MyFvwmTalk: Command Next [MyFvwmTalk] Iconify +#*MyFvwmTalk: Button quit "Quit" ^C +#*MyFvwmTalk: Command Nop + +############################################################################ +# FvwmIconBox +# +# NOTE: Icons will only be shown in module if "Style * !Icon" is set +*FvwmIconBox: IconBack #cfcfcf +*FvwmIconBox: IconHiFore black +*FvwmIconBox: IconHiBack LightSkyBlue +*FvwmIconBox: Back #5f9ea0 +#*FvwmIconBox: Fore blue +*FvwmIconBox: Geometry 5x1+0+0 +*FvwmIconBox: MaxIconSize 64x38 +*FvwmIconBox: Font ICON_BOX_FONT +*FvwmIconBox: SortIcons IconName +*FvwmIconBox: Padding 4 +*FvwmIconBox: Lines 10 +*FvwmIconBox: SBWidth 11 +*FvwmIconBox: Placement Left Top +*FvwmIconBox: Pixmap fvwm.xpm +#*FvwmIconBox: HideSC Horizontal +*FvwmIconBox: SetWMIconSize +*FvwmIconBox: HilightFocusWin +#*FvwmIconBox: Resolution Desk +*FvwmIconBox: Mouse 1 Click RaiseLower +*FvwmIconBox: Mouse 1 DoubleClick Iconify +*FvwmIconBox: Mouse 2 Click Iconify -1, Focus +*FvwmIconBox: Mouse 3 Click Module FvwmIdent +*FvwmIconBox: Key r RaiseLower +*FvwmIconBox: Key space Iconify +*FvwmIconBox: Key d Close +*FvwmIconBox: Key n Next +*FvwmIconBox: Key p Prev +*FvwmIconBox: Key h Left +*FvwmIconBox: Key j Down +*FvwmIconBox: Key k Up +*FvwmIconBox: Key l Right + +############################################################################ +# FvwmIdent +# +# Give us colors and a fonts +*FvwmIdent: Back MidnightBlue +*FvwmIdent: Fore Yellow +*FvwmIdent: Font IDENT_FONT + +############################################################################ +# FvwmPager +# +*FvwmPager: Back #908090 +*FvwmPager: Fore #484048 +*FvwmPager: Font TITLE_FONT +*FvwmPager: Hilight #cab3ca +*FvwmPager: Geometry PAGER_GEOM +*FvwmPager: Label 0 System +*FvwmPager: Label 1 Net +*FvwmPager: Label 2 Work +*FvwmPager: SmallFont PAGER_FONT + +*FvwmPager: Balloons All +*FvwmPager: BalloonBack #efe3b5 +*FvwmPager: BalloonFore Black +*FvwmPager: BalloonFont ICON_FONT +*FvwmPager: BalloonYOffset +2 +*FvwmPager: BalloonBorderWidth 1 +*FvwmPager: BalloonBorderColor Black + +############################################################################ +# FvwmScroll +# +*FvwmScroll: Back grey40 +*FvwmScroll: Fore green + +############################################################################ +# FvwmWinList +# +*FvwmWinList: Back #908090 +*FvwmWinList: Fore Black +*FvwmWinList: Font WIN_LIST_FONT +*FvwmWinList: Action Click1 Iconify -1, Focus +*FvwmWinList: Action Click2 Iconify +*FvwmWinList: Action Click3 Module "FvwmIdent: " FvwmIdent +*FvwmWinList: UseSkipList +*FvwmWinList: Geometry +10-10 diff --git a/.fvwm/restart b/.fvwm/restart new file mode 100755 index 0000000..c9932a1 --- /dev/null +++ b/.fvwm/restart @@ -0,0 +1,17 @@ +#! /bin/sh + +if [ -z "$DISPLAY" ]; then + exit 0 +fi + +if xscreensaver-command -time 2>/dev/null | grep -Eq 'screen (blanked|locked)'; then + exit 0 +fi + +if ps a | grep -v grep | grep -q mplayer; then + exit 0 +fi + +FvwmCommand Restart +sleep 3 +FvwmCommand Raise-All diff --git a/.fvwm/startup b/.fvwm/startup new file mode 100644 index 0000000..8ba71d1 --- /dev/null +++ b/.fvwm/startup @@ -0,0 +1,41 @@ +#-----------------------------------------------------------------------------# +# +# 5. Stuff to do at start-up and on restart +# +#-----------------------------------------------------------------------------# + +# The StartFunction is used at start and restart with or without a Session +# Manager. The above file .start-* defines this function. If +# we want Gtk menus and dialog (defined in the modules section) we start +# FvwmGtk. + +AddToFunc StartFunction +#G_M_G 1 +#+ I Module FvwmGtk + +# The InitFunction is used at FVWM start + +AddToFunc InitFunction +# Load the X Setup Scripts setting if we use it ++ I Exec [ -f $HOME/.xinitrc-fvwm ] && sh $HOME/.xinitrc-fvwm +#+ I Exec exec xsetroot -solid \#7F4B7F + +# The restart function: + +AddToFunc RestartFunction +#+ I Module FvwmButtons MyButtons + +# +# When used with a session manager FVWM uses SessionInitFunction and +# SessionRestartFunction in the place of InitFunction and RestartFunction +# + +AddToFunc SessionInitFunction +# Do not Load the X Setup Scripts setting, some Session Managers have its own +# method (e.g., GNOME) +#+ I Exec [ -f $HOME/.xinitrc-fvwm ] && sh $HOME/.xinitrc-fvwm +#+ I Module FvwmButtons MyButtons + +AddToFunc SessionRestartFunction +#+ I Module FvwmButtons MyButtons + diff --git a/.fvwm/styles b/.fvwm/styles new file mode 100644 index 0000000..63f65cd --- /dev/null +++ b/.fvwm/styles @@ -0,0 +1,43 @@ +#-----------------------------------------------------------------------------# +# +# 6. Set application dependent styles +# +# Order is important! +# If compatible styles are set for a single window in multiple Style +# commands, then the styles are ORed together. If conflicting styles +# are set, the last one specified is used. +# +#-----------------------------------------------------------------------------# + +Style *lock NoTitle, NoHandles, Sticky, WindowListSkip +Style xeyes NoTitle, Sticky +Style *biff* NoTitle, Sticky, WindowListSkip +Style xsysinfo NoTitle, Sticky, WindowListSkip +Style xload NoTitle, Sticky, WindowListSkip +Style xconsole Sticky, StartIconic +Style xpostit WindowListSkip +Style PostitNote WindowListSkip +Style Postit NoHandles, WindowListSkip +# gnome panel & icons +Style panel Sticky, NoTitle, WindowListSkip, CirculateSkip +Style desktop_icon CirculateSkip, WindowListSkip, NoTitle +# Animation is broken in gnome panel 1.4 with GNOMEUseHints. +# GNOMEIgnoreHints also disables panel moving itself from layer to layer. +Style panel GNOMEIgnoreHints +# xsm panel +Style xsm Sticky, NoTitle, WindowListSkip, CirculateSkip + +Style FvwmForm-QuitVerify NoButton 1, NoButton 2, NoButton 4, NoButton 6, \ + StaysOnTop, NoHandles, WindowListSkip + +# Some version of Netscape need the following if you want that the +# page source (and others horrible banner) to be decorated (but you may +# lost some MWM decor hints) +#Style Netscape NoDecorHint + +# I do not like that the "find in page" of netscape cannot be lowered. +# Uncomment the next line if your are agree. +#Style Netscape DontRaiseTransient + +#DT 1 for the CDE "desk icon" +#Style popup_* CirculateSkip, WindowListSkip diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 0000000..57f7589 --- /dev/null +++ b/.gitconfig @@ -0,0 +1,29 @@ +[alias] + b = branch + checkin = commit + ci = commit + co = checkout + l1 = log --oneline + l5 = log -5 + st = status + +[core] + pager = less -FRSXgimq + +[merge] + tool = vimdiff + +#[mergetool "vimdiff3"] +# Don't forget to add -f for gvim +# 3 way diffs +# cmd = vim -d \"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\" -c \"wincmd J\" + +[web] + browser = webbrowser + +[browser "webbrowser"] + cmd = webbrowser -n + +[gui] + fontui = -family \"DejaVu Sans\" -size 18 -weight normal -slant roman -underline 0 -overstrike 0 + fontdiff = -family \"DejaVu Sans Mono\" -size 18 -weight normal -slant roman -underline 0 -overstrike 0 diff --git a/.gtkrc-2.0 b/.gtkrc-2.0 new file mode 100644 index 0000000..28bc74e --- /dev/null +++ b/.gtkrc-2.0 @@ -0,0 +1,131 @@ +# When turned on, this option causes gtk to select the contents of an entry field when it becomes focused. +gtk-entry-select-on-focus = 1 + +############################# +#font stuff +############################ + +# Sets the font used by all gtk applications. +gtk-font-name = "Sans 16" + +# The following section allows you to change the style of the conversation +# window widgets, log viewer widget, and request and notify window widgets. +# These only work in Gaim 0.78 or higher. +style "imhtml-fix" +{ + font_name = "Sans 16" +} +class "*" style "imhtml-fix" + +# Set the widget style for the conversation entry box +widget "*gaim_gtkconv_entry" style "imhtml-fix" +# Set the widget style for the conversation +widget "*gaim_gtkconv_imhtml" style "imhtml-fix" +# Set the widget style for the log viewer +widget "*gaim_gtklog_imhtml" style "imhtml-fix" + +# Set the widget style for IMHtml input widgets in request dialogs +widget "*gaim_gtkrequest_imhtml" style "imhtml-fix" +# Set the widget style for IMHtml widgets in notify dialogs +widget "*gaim_gtknotify_imhtml" style "imhtml-fix" + +# Uncommenting the line below sets all IMHtml widgets in Gaim to the same style +# and will work in Gaim versions prior to 0.78 +#widget_class "*.GtkScrolledWindow.GtkIMHtml" style "imhtml-fix" + +# The following lets you customize the color of hyperlinks +# and also the text cursors. The link color thing is Gaim specific +# but the rest work for any Gtk2 program. You can search the Gtk2 +# docs for other style properties. +style "my-style-name" { + GtkIMHtml::hyperlink-color = "#000080" + GtkWidget::cursor-color = "#0000FF" + GtkWidget::secondary-cursor-color = "#00FF00" #for mixed ltr and rtl +} +widget_class "*" style "my-style-name" + +############################# +#Blist stuff +############################# + +# This style sets the expander size on a treeview to 0, which has the result +# of reducing the indent for items in the tree. This can be applied to the +# Gaim buddy list to reduce it's width. +# This only works in Gaim 0.79 and higher +#style "my-narrow-tree" +#{ +# GtkTreeView::expander_size = 0 +#} +# And apply the style to the buddy list: +#widget "*gaim_gtkblist_treeview" style "my-narrow-tree" + +# Customize the New 2.0.0 Status Selector +style "gaim-statusbox-style" { + # This is a work-around that keeps you from having to scroll + # if the status selector is at the bottom of the screen. + GtkComboBox::appears-as-list = 1 + + # Depending on your theme and/or GTK+ version, one of + # the following blocks should eliminate excess padding. + # The second approach is probably more universally + # applicable, but the first removes more padding for + # some people. + + # Eliminate Padding Approach 1 + xthickness = 0 + ythickness = 0 + + # Eliminate Padding Approach 2 + xthickness = 2 + ythickness = 2 + GtkWidget::focus-line-width = 0 + GtkWidget::focus-padding = 0 +} +widget "*gaim_gtkblist_statusbox*" style "gaim-statusbox-style" + + +############################# +#key bindings +############################# + +# Controls the keybindings that gtk uses for text entry/editing/etc +# The "emacs" theme turns on things like: +# ctrl-a == move to beginning of line, ctrl-e == move to end of line, etc. +gtk-key-theme-name = "Default" + +#to let you edit your gaim key bindings +#gtk-can-change-accels = 1 + +# In Gaim 2.0.0 and later, you can set custom keybindings in your theme. Here +# is an example to follow + +#binding "my-bindings" +#{ +# enter inserts a newline +# bind "Return" { "insert-at-cursor" ("\n") } +# ctrl-s sends message +# bind "s" { "message_send" () } +# shift-f1 toggles bold +# bind "F1" { "format_function_toggle" (1) } +# alt-f2 toggles italic +# bind "F2" { "format_function_toggle" (2) } +# Ctrl-alt-shift-f3 toggles underline +# bind "F3" { "format_function_toggle" (4) } +# Ctrl-f1 resets the formatting +# bind "F1" { "format_function_clear" () } +#} +#widget "*gaim_gtkconv_entry" binding "my-bindings" + +############################# +#misc +############################# + +# Tooltips - black on yellow-white +style "tooltips" +{ + fg[NORMAL] = "#000000" + bg[NORMAL] = "#efe3b5" +} +widget "gtk-tooltips*" style "tooltips" + +gtk-recent-files-max-age=1 diff --git a/.hgrc b/.hgrc new file mode 100644 index 0000000..ee97a0a --- /dev/null +++ b/.hgrc @@ -0,0 +1,23 @@ +[alias] +l5 = log -l 5 + +[extensions] +fetch = +graphlog = +pager = +record = +transplant = + +[pager] +pager = less -FRSXgimq +attend = annotate, cat, diff, export, glog, help, log, l5, qdiff, showconfig +ignore = update, version + +[ui] +merge = vimdiff + +#[merge-tools] +#vimdiff3.executable = vim +# Don't forget to add -f for gvim +# 3 way diffs +#vimdiff3.args = -d "$output" "$local" "$base" "$other" -c "wincmd J" diff --git a/.inputrc b/.inputrc new file mode 100644 index 0000000..0e96e09 --- /dev/null +++ b/.inputrc @@ -0,0 +1,48 @@ +# readline/history settings and bindings + +$include /etc/inputrc + +set meta-flag on +set convert-meta off +set input-meta on +set output-meta on + +set bell-style none +set completion-ignore-case off +set expand-tilde on + +# In all programs, all terminals, make sure this is bound. +"\C-x\C-r": re-read-init-file + +Tab: complete +M-Tab: menu-complete + +# Some terminals have ugly default behaviour for C-h. +#"\C-h": backward-delete-char +#"\e\C-h": backward-kill-word + +# Debug +"\C-xf": dump-functions +"\C-xv": dump-variables +"\C-xm": dump-macros + +# Notice the various bindings which are conditionalized depending +# on which program is running, or what terminal is active. + +# In xterm windows, make the arrow keys do the right thing. +$if term=xterm + $include $HOME/lib/X11/inputrc +$endif +$if term=rxvt + $include $HOME/lib/X11/inputrc +$endif +$if term=vt100 + $include $HOME/lib/X11/inputrc +$endif +$if term=screen + $include $HOME/lib/X11/inputrc +$endif + +# For bash, all terminals, add some bash specific hacks. +#$if Bash +#$endif diff --git a/.local/share/mc b/.local/share/mc new file mode 120000 index 0000000..ae50751 --- /dev/null +++ b/.local/share/mc @@ -0,0 +1 @@ +../../.mc \ No newline at end of file diff --git a/.mailcap b/.mailcap new file mode 100644 index 0000000..bab97ad --- /dev/null +++ b/.mailcap @@ -0,0 +1,128 @@ +# MIME types -> viewers map, RFC 1524. + +application/ogg; smplayer %s; description="Ogg container files"; test=test -n "$DISPLAY" -a -n "`which smplayer 2>/dev/null`" -a -n "`which smplayer 2>/dev/null`" +application/ogg; mplayer %s; description="Ogg container files"; test=test -n "$DISPLAY" -a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`" +application/ogg; audtool --playlist-clear --playlist-addurl %s --playback-play; description="Ogg container files"; test=test -n "$DISPLAY" -a -n "`which audtool 2>/dev/null`" && test "`audtool --get-volume`" -gt 0 +application/ogg; audacious %s; description="Ogg container files"; test=test -n "$DISPLAY" -a -n "`which audacious 2>/dev/null`" +application/ogg; foobar %s; description="Ogg container files"; test=test -n "$DISPLAY" -a -n "`which foobar 2>/dev/null`" +application/pdf; evince %s; description="Postscript files"; test=test -n "$DISPLAY" -a -n "`which evince 2>/dev/null`" +application/pdf; xpdf %s; description="Postscript files"; test=test -n "$DISPLAY" -a -n "`which xpdf 2>/dev/null`" +application/pdf; gv %s; description="Postscript files"; test=test -n "$DISPLAY" -a -n "`which gv 2>/dev/null`" +application/pdf; pdftotext %s; copiousoutput; description="Portable Document Format files"; test=test -n "`which pdftotext 2>/dev/null`" +application/pdf; pstotext %s; copiousoutput; description="Portable Document Format files"; test=test -n "`which pstotext 2>/dev/null`" +application/postscript; evince %s; description="Postscript files"; test=test -n "$DISPLAY" -a -n "`which evince 2>/dev/null`" +application/postscript; xpdf %s; description="Postscript files"; test=test -n "$DISPLAY" -a -n "`which xpdf 2>/dev/null`" +application/postscript; gv %s; description="Postscript files"; test=test -n "$DISPLAY" -a -n "`which gv 2>/dev/null`" +application/postscript; ghostview %s; description="Postscript files"; test=test -n "$DISPLAY" -a -n "`which ghostview 2>/dev/null`" +application/postscript; pstotext %s; copiousoutput; description="PostScript files"; test=test -n "`which pstotext 2>/dev/null`" +application/x-bittorrent; bittorrent.py %s; test=test -n "$DISPLAY" -a -n "`which bittorrent.py 2>/dev/null`" +application/x-chm; fbreader %s; description="Compiled HTML files"; test=test -n "$DISPLAY" -a -n "`which fbreader 2>/dev/null`" +application/x-dvi; xdvi %s; description="DVI files"; test=test -n "$DISPLAY" -a -n "`which xdvi 2>/dev/null`" +application/x-fb2; fbreader %s; description="FicionBook fb2 files"; test=test -n "$DISPLAY" -a -n "`which fbreader 2>/dev/null`" +application/x-fig; xfig %s; description="FIG files"; test=test -n "$DISPLAY" -a -n "`which xfig 2>/dev/null`" +application/x-tar; tar tvf %s; description="TAR files"; copiousoutput + +application/msword; doc2html_web %s; description="M$ Word Text"; test=test -n "`which wvHtml 2>/dev/null`" +application/msword; doc2html1 %s; copiousoutput; description="M$ Word Text"; test=test -n "`which wvHtml 2>/dev/null`" -a -n "`which elinks 2>/dev/null`" +application/msword; doc2html2 %s; copiousoutput; description="M$ Word Text"; test=test -n "`which wvHtml 2>/dev/null`" -a -n "`which links2 2>/dev/null`" +application/msword; catdoc %s; copiousoutput; description="M$ Word Text"; test=test -n "`which catdoc 2>/dev/null`" +application/msword; wordview %s; description="M$ Word Text"; test=test -n "$DISPLAY" -a -n "`which wordview 2>/dev/null`" +application/vnd.ms-excel; xls2csv %s; copiousoutput; description="M$ Excel files"; test=test -n "`which xls2csv 2>/dev/null`" + +audio/mpeg; smplayer %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which smplayer 2>/dev/null`" -a -n "`which smplayer 2>/dev/null`" +audio/mpeg; mplayer %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`" +audio/mpeg; audtool --playlist-clear --playlist-addurl %s --playback-play; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which audtool 2>/dev/null`" && test "`audtool --get-volume`" -gt 0 +audio/mpeg; audacious %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which audacious 2>/dev/null`" +audio/mpeg; foorbar %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which foorbar 2>/dev/null`" +audio/mpeg3; smplayer %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which smplayer 2>/dev/null`" -a -n "`which smplayer 2>/dev/null`" +audio/mpeg3; mplayer %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`" +audio/mpeg3; audtool --playlist-clear --playlist-addurl %s --playback-play; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which audtool 2>/dev/null`" && test "`audtool --get-volume`" -gt 0 +audio/mpeg3; audacious %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which audacious 2>/dev/null`" +audio/mpeg3; foorbar %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which foorbar 2>/dev/null`" +audio/mpegurl; smplayer -playlist %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which smplayer 2>/dev/null`" -a -n "`which smplayer 2>/dev/null`" +audio/mpegurl; mplayer -playlist %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`" +audio/mpegurl; audtool --playlist-clear --playlist-addurl %s --playback-play; description="MPEG URLs"; test=test -n "$DISPLAY" -a -n "`which audtool 2>/dev/null`" && test "`audtool --get-volume`" -gt 0 +audio/ogg; smplayer %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which smplayer 2>/dev/null`" -a -n "`which smplayer 2>/dev/null`" +audio/ogg; mplayer %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`" +audio/ogg; audtool --playlist-clear --playlist-addurl %s --playback-play; description="Ogg Vorbis audio files"; test=test -n "$DISPLAY" -a -n "`which audtool 2>/dev/null`" && test "`audtool --get-volume`" -gt 0 +audio/ogg; audacious %s; description="Ogg Vorbis audio files"; test=test -n "$DISPLAY" -a -n "`which audacious 2>/dev/null`" +audio/ogg; foobar %s; description="Ogg Vorbis audio files"; test=test -n "$DISPLAY" -a -n "`which foobar 2>/dev/null`" +audio/x-mod; audtool --playlist-clear --playlist-addurl %s --playback-play; description="MOD audio files"; test=test -n "$DISPLAY" -a -n "`which audtool 2>/dev/null`" && test "`audtool --get-volume`" -gt 0 +audio/x-mod; audacious %s; description="MOD audio files"; test=test -n "$DISPLAY" -a -n "`which audacious 2>/dev/null`" +audio/x-mod; foorbar %s; description="MOD audio files"; test=test -n "$DISPLAY" -a -n "`which foorbar 2>/dev/null`" +audio/x-mpeg; smplayer %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which smplayer 2>/dev/null`" -a -n "`which smplayer 2>/dev/null`" +audio/x-mpeg; mplayer %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`" +audio/x-mpeg; audtool --playlist-clear --playlist-addurl %s --playback-play; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which audtool 2>/dev/null`" && test "`audtool --get-volume`" -gt 0 +audio/x-mpeg; audacious %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which audacious 2>/dev/null`" +audio/x-mpeg; foobar %s; description="MPEG audio files"; test=test -n "$DISPLAY" -a -n "`which foobar 2>/dev/null`" +audio/x-pn-realaudio; realplay %s; description="RealAudio files"; test=test -n "$DISPLAY" -a -n "`which realplay 2>/dev/null`" +audio/x-realaudio; realplay %s; description="RealAudio files"; test=test -n "$DISPLAY" -a -n "`which realplay 2>/dev/null`" +audio/x-wav; smplayer %s; description="WAV audio files"; test=test -n "$DISPLAY" -a -n "`which smplayer 2>/dev/null`" -a -n "`which smplayer 2>/dev/null`" +audio/x-wav; mplayer %s; description="WAV audio files"; test=test -n "$DISPLAY" -a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`" +audio/x-wav; audtool --playlist-clear --playlist-addurl %s --playback-play; description="WAV audio files"; test=test -n "$DISPLAY" -a -n "`which audtool 2>/dev/null`" && test "`audtool --get-volume`" -gt 0 +audio/x-wav; audacious %s; description="WAV audio files"; test=test -n "$DISPLAY" -a -n "`which audacious 2>/dev/null`" +audio/x-wav; foobar %s; description="WAV audio files"; test=test -n "$DISPLAY" -a -n "`which foobar 2>/dev/null`" +audio/*; smplayer %s; description="Audio files"; test=test -n "$DISPLAY" -a -n "`which smplayer 2>/dev/null`" -a -n "`which smplayer 2>/dev/null`" +audio/*; mplayer %s; description="Audio files"; test=test -n "$DISPLAY" -a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`" +audio/*; audtool --playlist-clear --playlist-addurl %s --playback-play; description="Audio files"; test=test -n "$DISPLAY" -a -n "`which audtool 2>/dev/null`" && test "`audtool --get-volume`" -gt 0 +audio/*; audacious %s; description="Audio files"; test=test -n "$DISPLAY" -a -n "`which audacious 2>/dev/null`" +audio/*; foobar %s; description="Audio files"; test=test -n "$DISPLAY" -a -n "`which foobar 2>/dev/null`" + +image/gif; xli %s; description="GIF image files"; test=test -n "$DISPLAY" -a -n "`which xli 2>/dev/null`" +image/gif; xloadimage %s; description="GIF image files"; test=test -n "$DISPLAY" -a -n "`which xloadimage 2>/dev/null`" +image/gif; xview %s; description="GIF image files"; test=test -n "$DISPLAY" -a -n "`which xview 2>/dev/null`" +image/gif; display %s; description="GIF image files"; test=test -n "$DISPLAY" -a -n "`which display 2>/dev/null`" +image/jpeg; xli %s; description="JPEG image files"; test=test -n "$DISPLAY" -a -n "`which xli 2>/dev/null`" +image/jpeg; xloadimage %s; description="JPEG image files"; test=test -n "$DISPLAY" -a -n "`which xloadimage 2>/dev/null`" +image/jpeg; xview %s; description="JPEG image files"; test=test -n "$DISPLAY" -a -n "`which xview 2>/dev/null`" +image/jpeg; display %s; description="JPEG image files"; test=test -n "$DISPLAY" -a -n "`which display 2>/dev/null`" +image/tiff; xview %s; description="TIFF image files"; test=test -n "$DISPLAY" -a -n "`which xview 2>/dev/null`" +image/tiff; display %s; description="TIFF image files"; test=test -n "$DISPLAY" -a -n "`which display 2>/dev/null`" +image/x-djvu; evince %s; description="DJVu image files"; test=test -n "$DISPLAY" -a -n "`which evince 2>/dev/null`" +image/x-djvu; djview %s; description="DJVu image files"; test=test -n "$DISPLAY" -a -n "`which djview 2>/dev/null`" +image/x-icon; display %s; description="Icon image files"; test=test -n "$DISPLAY" -a -n "`which display 2>/dev/null`" +image/x-xpm2; xli %s; description="XPM image files"; test=test -n "$DISPLAY" -a -n "`which xli 2>/dev/null`" +image/x-xpm2; display %s; description="XPM image files"; test=test -n "$DISPLAY" -a -n "`which display 2>/dev/null`" +image/x-xpm2; sxpm %s; description="XPM image files"; test=test -n "$DISPLAY" -a -n "`which sxpm 2>/dev/null`" +image/x-xpm3; xli %s; description="XPM image files"; test=test -n "$DISPLAY" -a -n "`which xli 2>/dev/null`" +image/x-xpm3; display %s; description="XPM image files"; test=test -n "$DISPLAY" -a -n "`which display 2>/dev/null`" +image/x-xpm3; sxpm %s; description="XPM image files"; test=test -n "$DISPLAY" -a -n "`which sxpm 2>/dev/null`" +image/*; xli %s; description="Image files"; test=test -n "$DISPLAY" -a -n "`which xli 2>/dev/null`" + +text/html; webbrowserX -t "file://`abspath.py %s`"; description="HTML Text"; test=test -n "$DISPLAY" +text/html; webbrowser -t "file://`abspath.py %s`"; needsterminal; description="HTML Text" +text/html; webdump %s; copiousoutput; description="HTML Text"; test=test -n "`which elinks 2>/dev/null`" +text/html; webdump2 %s; copiousoutput; description="HTML Text"; test=test -n "`which links2 2>/dev/null`" +text/html; xlinks2 -force-html %s; description="HTML Text"; test=test -n "$DISPLAY" -a -n "`which links2 2>/dev/null`" +text/html; links2 -force-html %s; needsterminal; description="HTML Text"; test=test -n "`which links2 2>/dev/null`" +text/html; links -force-html %s; needsterminal; description="HTML Text"; test=test -n "`which links 2>/dev/null`" +text/html; elinks -force-html %s; needsterminal; description="HTML Text"; test=test -n "`which elinks 2>/dev/null`" +text/html; elinks -force-html -dump %s; copiousoutput; description="HTML Text"; test=test -n "`which elinks 2>/dev/null`" +text/html; w3m -T text/html %s; needsterminal; description="HTML Text"; test=test -n "`which w3m 2>/dev/null`"; nametemplate=%s.html +text/html; w3m -T text/html -dump %s; copiousoutput; description="HTML Text"; test=test -n "`which w3m 2>/dev/null`"; nametemplate=%s.html +text/html; lynx -force_html %s; needsterminal; description="HTML Text"; test=test -n "`which lynx 2>/dev/null`"; nametemplate=%s.html +text/html; lynx -force_html -dump %s; copiousoutput; description="HTML Text"; test=test -n "`which lynx 2>/dev/null`"; nametemplate=%s.html +text/plain; less %s; edit=vim %s; needsterminal; description=Text; test=test -n "`which less 2>/dev/null`" +text/plain; more %s; edit=vi %s; needsterminal; description=Text; test=test -n "`which more 2>/dev/null`" +text/rtf; fbreader %s; description="Rich Text Format"; test=test -n "$DISPLAY" -a -n "`which catdoc 2>/dev/null`" +text/rtf; catdoc %s; copiousoutput; description="Rich Text Format"; test=test -n "`which catdoc 2>/dev/null`" +text/rtf; unrtf --html --nopict %s | webstdin; description="Rich Text Format"; test=test -n "`which unrtf 2>/dev/null`" -a -n "`which elinks 2>/dev/null`" +text/*; gview %s; edit=gvim -f %s; compose=gvim -f %s; description="Text"; test=test -n "$DISPLAY" -a -n "`which gview 2>/dev/null`" +text/*; less %s; edit=vim %s; needsterminal; description=Text; test=test -n "`which less 2>/dev/null`" +text/*; more %s; edit=vi %s; needsterminal; description=Text; test=test -n "`which more 2>/dev/null`" + +video/mpeg; smplayer %s; description="MPEG video files"; test=test -n "$DISPLAY" -a -n "`which smplayer 2>/dev/null`" -a -n "`which smplayer 2>/dev/null`" +video/mpeg; mplayer %s; description="MPEG video files"; test=test -n "$DISPLAY" -a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`" +video/ogg; smplayer %s; description="Ogg Theora files"; test=test -n "$DISPLAY" -a -n "`which smplayer 2>/dev/null`" -a -n "`which smplayer 2>/dev/null`" +video/ogg; mplayer %s; description="Ogg Theora files"; test=test -n "$DISPLAY" -a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`" +video/quicktime; smplayer %s; description="QuickTime video files"; test=test -n "$DISPLAY" -a -n "`which smplayer 2>/dev/null`" -a -n "`which smplayer 2>/dev/null`" +video/quicktime; mplayer %s; description="QuickTime video files"; test=test -n "$DISPLAY" -a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`" +video/x-msvideo; smplayer %s; description="AVI video files"; test=test -n "$DISPLAY" -a -n "`which smplayer 2>/dev/null`" -a -n "`which smplayer 2>/dev/null`" +video/x-msvideo; mplayer %s; description="AVI video files"; test=test -n "$DISPLAY" -a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`" +video/*; smplayer %s; description="Video files"; test=test -n "$DISPLAY" -a -n "`which smplayer 2>/dev/null`" -a -n "`which smplayer 2>/dev/null`" +video/*; mplayer %s; description="Video files"; test=test -n "$DISPLAY" -a -n "`which mplayer 2>/dev/null`" -a -n "`which mplayer 2>/dev/null`" + +x-world/x-vrml; freewrl -url %s; test=test -n "$DISPLAY" -a -n "`which freewrl 2>/dev/null`"; description="VRML world"; nametemplate=%s.wrl + +*/*; less %s; needsterminal; test=test -n "`which less 2>/dev/null`" +*/*; cat -vT %s; copiousoutput diff --git a/.mc/bindings b/.mc/bindings new file mode 120000 index 0000000..f9816bb --- /dev/null +++ b/.mc/bindings @@ -0,0 +1 @@ +mc.ext \ No newline at end of file diff --git a/.mc/filehighlight.ini b/.mc/filehighlight.ini new file mode 100644 index 0000000..7f05112 --- /dev/null +++ b/.mc/filehighlight.ini @@ -0,0 +1,50 @@ +[executable] + type=FILE_EXE + +[directory] + type=DIR + + +[device] + type=DEVICE + +[special] + type=SPECIAL + +[stalelink] + type=STALE_LINK + +[symlink] + type=SYMLINK + +[core] + regexp=^core\\.*\\d*$ + +[temp] + extensions=tmp;$$$;~;bak + extensions_case=false + regexp=(^#.*|.*~$) + +[archive] + extensions= +#gz;bz2;tar;tgz;rpm;Z;rar;zip;arj;cab;lzh;lha;zoo;arc;ark;xz;tbz;tbz2; + +[doc] + extensions= +#txt;doc;rtf;diz;ctl;me;ps;pdf;xml;xsd;xslt;dtd;html;shtml;htm;mail;msg;lsm;po;nroff;man;tex;sgml;css;text;letter;chm + +[source] + extensions=py +#c;h;cc;hh;cpp;cxx;hpp;asm;py;pl;pm;inc;cgi;php;phps;js;java;jav;jasm;sh;bash;diff;patch;pas;tcl;tk;awk;m4;st;mak;sl;ada;caml;ml;mli;mly;mll;mlp;sas;prg;hs;hi;erl + +[media] + extensions= +#mp2;mp3;mpg;ogg;mpeg;wav;avi;asf;mov;mol;mpl;xm;mod;it;med;mid;midi;s3m;umx;vob;mkv;flv;mp4;m3u + +[graph] + extensions= +#jpg;jpeg;gif;png;tif;pcx;bmp;xpm;xbm;eps;pic;rle;ico;wmf;omf;ai;cdr + +[database] + extensions= +#dbf;mdn;db;mdb;dat;fox;dbx;mdx;sql;mssql;msql;ssql;pgsql;xls;cdx;dbi diff --git a/.mc/ini b/.mc/ini new file mode 100644 index 0000000..0fc0804 --- /dev/null +++ b/.mc/ini @@ -0,0 +1,155 @@ +[Midnight-Commander] +alternate_plus_minus=0 +auto_fill_mkdir_name=1 +auto_menu=0 +auto_save_setup=0 +cd_symlinks=0 +classic_progressbar=1 +clear_before_exec=1 +confirm_delete=1 +confirm_directory_hotlist_delete=1 +confirm_execute=0 +confirm_exit=1 +confirm_history_cleanup=1 +confirm_overwrite=1 +confirm_view_dir=0 +copymove_persistent_attr=1 +double_click_speed=250 +drop_menus=0 +editor_backspace_through_tabs=0 +editor_backup_extension=~ +editor_check_new_line=0 +editor_cursor_beyond_eol=0 +editor_edit_confirm_save=1 +editor_fake_half_tabs=1 +editor_fill_tabs_with_spaces=0 +editor_group_undo=0 +editor_key_emulation=0 +editor_line_state=0 +editor_option_auto_para_formatting=0 +editor_option_backup_ext_int=-1 +editor_option_save_mode=0 +editor_option_save_position=1 +editor_option_typewriter_wrap=0 +editor_persistent_selections=1 +editor_return_does_auto_indent=1 +editor_show_right_margin=0 +editor_simple_statusbar=0 +editor_syntax_highlighting=1 +editor_tab_spacing=8 +editor_visible_spaces=1 +editor_visible_tabs=1 +editor_word_wrap_line_length=72 +fast_refresh=0 +fast_reload=0 +fast_reload_msg_shown=0 +file_op_compute_totals=1 +fish_directory_timeout=900 +ftpfs_always_use_proxy=0 +ftpfs_directory_timeout=900 +ftpfs_first_cd_then_ls=1 +ftpfs_retry_seconds=30 +ftpfs_use_passive_connections=1 +ftpfs_use_passive_connections_over_proxy=0 +ftpfs_use_unix_list_options=1 +have_fast_cpu=0 +ignore_ftp_chattr_errors=true +keymap=mc.keymap +mark_moves_down=1 +max_dirt_limit=10 +mcview_eof= +mcview_remember_file_position=0 +mix_all_files=0 +mouse_close_dialog=0 +mouse_move_pages=1 +mouse_move_pages_viewer=1 +mouse_repeat_rate=100 +navigate_with_arrows=0 +nice_rotating_dash=1 +num_history_items_recorded=60 +old_esc_mode=0 +old_esc_mode_timeout=1000000 +only_leading_plus_minus=1 +panel_scroll_pages=1 +pause_after_run=2 +preallocate_space=0 +safe_delete=0 +select_flags=6 +shell_patterns=1 +show_all_if_ambiguous=0 +show_backups=1 +show_dot_files=1 +show_output_starts_shell=0 +skin=default +torben_fj_mode=0 +use_8th_bit_as_meta=0 +use_file_to_guess_type=1 +use_internal_edit=0 +use_internal_view=1 +use_netrc=1 +verbose=1 +vfs_timeout=60 +wrap_mode=1 +xtree_mode=0 + +[Layout] +command_prompt=1 +equal_split=1 +filetype_mode=1 +free_space=1 +horizontal_equal=1 +horizontal_split=0 +keybar_visible=1 +menubar_visible=0 +message_visible=0 +output_lines=0 +permission_mode=0 +show_mini_info=1 +vertical_equal=1 +xterm_title=1 + +[Misc] +autodetect_codeset= +clipboard_paste= +clipboard_store= +display_codepage=KOI8-R +ftp_codepage=CP1251 +ftp_proxy_host=gate +ftpfs_password=anonymous@ +source_codepage=Other_8_bit +timeformat_old=%b %e %Y +timeformat_recent=%b %e %H:%M + +[Colors] +base_color= +color_terminals= +rxvt= + +[Panels] +auto_save_setup_panels=false +fast_reload=false +fast_reload_msg_shown=false +filetype_mode=true +kilobyte_si=false +mark_moves_down=true +mix_all_files=false +mouse_move_pages=true +navigate_with_arrows=false +panel_scroll_pages=true +permission_mode=false +quick_search_mode=2 +reverse_files_only=true +show_backups=true +show_dot_files=true +show_mini_info=true +simple_swap=true +torben_fj_mode=false + +[terminal:rxvt] +backtab=\\e[Z +kpasterisk=\\eOj + +[Panelize] +Find *.orig after patching=find . -name \\*.orig -print +Find SUID and SGID programs=find . \\( \\( -perm -04000 -a -perm +011 \\) -o \\( -perm -02000 -a -perm +01 \\) \\) -print +Find rejects after patching=find . -name \\*.rej -print diff --git a/.mc/mc.ext b/.mc/mc.ext new file mode 100644 index 0000000..c839830 --- /dev/null +++ b/.mc/mc.ext @@ -0,0 +1,771 @@ +# Midnight Commander 3.0 extension file +# Warning: Structure of this file has changed completely with version 3.0 +# +# All lines starting with # or empty lines are thrown away. +# Lines starting in the first column should have following format: +# +# keyword/descNL, i.e. everything after keyword/ until new line is desc +# +# keyword can be: +# +# shell (desc is, when starting with a dot, any extension (no wildcars), +# i.e. matches all the files *desc . Example: .tar matches *.tar; +# if it doesn't start with a dot, it matches only a file of that name) +# +# regex (desc is an extended regular expression) +# Please note that we are using the GNU regex library and thus +# \| matches the literal | and | has special meaning (or) and +# () have special meaning and \( \) stand for literal ( ). +# +# type (file matches this if `file %f` matches regular expression desc +# (the filename: part from `file %f` is removed)) +# +# directory (matches any directory matching regular expression desc) +# +# include (matches an include directive) +# +# default (matches any file no matter what desc is) +# +# Other lines should start with a space or tab and should be in the format: +# +# keyword=commandNL (with no spaces around =), where keyword should be: +# +# Open (if the user presses Enter or doubleclicks it), +# +# View (F3), Edit (F4) +# +# Include is the keyword used to add any further entries from an include/ +# section +# +# command is any one-line shell command, with the following substitutions: +# +# %% -> % character +# %p -> name of the current file (without path, but pwd is its path) +# %f -> name of the current file. Unlike %p, if file is located on a +# non-local virtual filesystem, i.e. either tarfs or ftpfs, +# then the file will be temporarily copied into a local directory +# and %f will be the full path to this local temporal file. +# If you don't want to get a local copy and want to get the +# virtual fs path (like /#ftp:ftp.cvut.cz/pub/hungry/xword), then +# use %d/%p instead of %f. +# %d -> name of the current directory (pwd, without trailing slash) +# %s -> "selected files", i.e. space separated list of tagged files if any +# or name of the current file +# %t -> list of tagged files +# %u -> list of tagged files (they'll be untaged after the command) +# +# (If these 6 letters are in uppercase, they refer to the other panel. +# But you shouldn't have to use it in this file.) +# +# +# %cd -> the rest is a path mc should change into (cd won't work, since it's +# a child process). %cd handles even vfs names. +# +# %view -> the command you type will be piped into mc's internal file viewer +# if you type only the %view and no command, viewer will load %f file +# instead (i.e. no piping, so it is different to %view cat %f) +# %view may be directly followed by {} with a list of any of +# ascii (Ascii mode), hex (Hex mode), nroff (color highlighting for +# text using backspace for bold and underscore) and unform +# (no highlighting for nroff sequences) separated by commas. +# +# %var -> You use it like this: %var{VAR:default}. This macro will expand +# to the value of the VAR variable in the environment if it's set +# otherwise the value in default will be used. This is similar to +# the Bourne shell ${VAR-default} construct. +# +# Rules are applied from top to bottom, thus the order is important. +# If some actions are missing, search continues as if this target didn't +# match (i.e. if a file matches the first and second entry and View action +# is missing in the first one, then on pressing F3 the View action from +# the second entry will be used. default should catch all the actions. +# +# Any new entries you develop for you are always welcome if they are +# useful on more than one system. You can post your modifications +# as tickets at www.midnight-commander.org + + +### Changes ### +# +# Reorganization: 2000-05-01 Michal Svec + + +### TODO ### +# +# Postscript Open: ps2svga [gs -DEVICE=jpeg|zgv or something] +# Images asciiview +# +# All X Apps [Nothing/Warning] if no DISPLAY +# Not found [Default/Warning] +# Empty Output [Default/Warning] +# Edit: CopyOut+EDIT+CopyIn +# Security Check gzip/bzip EDIT (mktemp) +# +# Maybe: Open/XOpen/GOpen/KOpen/... for Console/X/GNOME/KDE/etc. + + +### GIT Repo ### +# gitfs changeset +regex/^\[git\] + Open=%cd %p/changesetfs:// + View=%cd %p/patchsetfs:// + +### Archives ### + +# .tgz, .tpz, .tar.gz, .tar.z, .tar.Z, .ipk +regex/\.t([gp]?z|ar\.g?[zZ])$|\.ipk|\.gem$ + Open=%cd %p/utar:// + View=%view{ascii} gzip -dc %f 2>/dev/null | tar tvvf - + +regex/\.tar\.bz$ + # Open=%cd %p/utar:// + View=%view{ascii} bzip -dc %f 2>/dev/null | tar tvvf - + +regex/\.t(ar\.bz2|bz2?|b2)$ + Open=%cd %p/utar:// + View=%view{ascii} bzip2 -dc %f 2>/dev/null | tar tvvf - + +# .tar.lzma, .tlz +regex/\.t(ar\.lzma|lz)$ + Open=%cd %p/utar:// + View=%view{ascii} lzma -dc %f 2>/dev/null | tar tvvf - + +# .tar.xz, .txz +regex/\.t(ar\.xz|xz)$ + Open=%cd %p/utar:// + View=%view{ascii} xz -dc %f 2>/dev/null | tar tvvf - + +# .tar.F - used in QNX +regex/\.tar\.F$ + # Open=%cd %p/utar:// + View=%view{ascii} freeze -dc %f 2>/dev/null | tar tvvf - + +# .qpr/.qpk - QNX Neutrino package installer files +regex/\.(qp[rk])$ + Open=%cd %p/utar:// + View=%view{ascii} gzip -dc %f 2>/dev/null | tar tvvf - + +# tar +regex/\.(tar|TAR)$ + Open=%cd %p/utar:// + View=%view{ascii} tar tvvf - < %f + +# lha +type/^LHa\ .*archive + Open=%cd %p/ulha:// + View=%view{ascii} lha l %f + +# arj +regex/\.[aA]([rR][jJ]|[0-9][0-9])$ + Open=%cd %p/uarj:// + View=%view{ascii} unarj l %f + +# cab +regex/\.([cC][aA][bB])$ + Open=%cd %p/ucab:// + View=%view{ascii} cabextract -l %f + +# ha +regex/\.([Hh][Aa])$ + Open=%cd %p/uha:// + View=%view{ascii} ha lf %f + +# rar +regex/\.[rR]([aA][rR]|[0-9][0-9])$ + Open=%cd %p/urar:// + View=%view{ascii} rar v -c- %f + +# ALZip +regex/\.(alz|ALZ)$ + Open=%cd %p/ualz:// + View=%view{ascii} unalz -l %f + +# cpio +shell/.cpio.Z + Open=%cd %p/ucpio:// + View=%view{ascii} gzip -dc %f | cpio -itv 2>/dev/null + +shell/.cpio.xz + Open=%cd %p/ucpio:// + View=%view{ascii} xz -dc %f | cpio -itv 2>/dev/null + +shell/.cpio.gz + Open=%cd %p/ucpio:// + View=%view{ascii} gzip -dc %f | cpio -itv 2>/dev/null + +shell/.cpio + Open=%cd %p/ucpio:// + View=%view{ascii} cpio -itv < %f 2>/dev/null + +# ls-lR +regex/(^|\.)ls-?lR(\.gz|Z|bz2)$ + Open=%cd %p/lslR:// + +# patch +regex/\.(diff|patch)(\.bz2)$ + Open=%cd %p/patchfs:// + View=%view{ascii} bzip2 -dc %f 2>/dev/null + +regex/\.(diff|patch)(\.(gz|Z))$ + Open=%cd %p/patchfs:// + View=%view{ascii} gzip -dc %f 2>/dev/null + +regex/\.(diff|patch)$ + Open=%cd %p/patchfs:// + View=%view{ascii} /bin/cat %f 2>/dev/null + +# ar library +regex/\.s?a$ + Open=%cd %p/uar:// + #Open=%view{ascii} ar tv %f + View=%view{ascii} file %f && nm -C %f + +# trpm +regex/\.trpm$ + Open=%cd %p/trpm:// + View=%view{ascii} rpm -qivl --scripts `basename %p .trpm` + +# RPM packages (SuSE uses *.spm for source packages) +regex/\.(src\.rpm|spm)$ + Open=%cd %p/rpm:// + View=%view{ascii} if rpm --nosignature --version >/dev/null 2>&1; then RPM="rpm --nosignature" ; else RPM="rpm" ; fi ; $RPM -qivlp --scripts %f + +regex/\.rpm$ + Open=%cd %p/rpm:// + View=%view{ascii} if rpm --nosignature --version >/dev/null 2>&1; then RPM="rpm --nosignature" ; else RPM="rpm" ; fi ; $RPM -qivlp --scripts %f + +# deb +regex/\.u?deb$ + Open=%cd %p/deb:// + View=%view{ascii} dpkg-deb -I %f && echo && dpkg-deb -c %f + +# dpkg +shell/.debd + Open=%cd %p/debd:// + View=%view{ascii} dpkg -s `echo %p | sed 's/\([0-9a-z.-]*\).*/\1/'` +# apt +shell/.deba + Open=%cd %p/deba:// + View=%view{ascii} apt-cache show `echo %p | sed 's/\([0-9a-z.-]*\).*/\1/'` + +# ISO9660 +regex/\.([iI][sS][oO](\.wv)?)$ + Open=%cd %p/iso9660:// + View=%view{ascii} isoinfo -l -i %f + +# 7zip archives (they are not man pages) +regex/\.(7z|7Z)$ + Open=%cd %p/u7z:// + View=%view{ascii} 7za l %f 2>/dev/null + +# Mailboxes +type/^ASCII\ mail\ text + Open=%cd %p/mailfs:// + + +### Sources ### + +# C +shell/.c + Include=editor + +# Fortran +shell/.f + Include=editor + +# Header +regex/\.(h|hpp)$ + Include=editor + +# Asm +shell/.s + Include=editor + +# C++ +regex/\.(C|cc|cpp)$ + Include=editor + +include/editor + Open=%var{EDITOR:vi} %f + +# .so libraries +regex/\.(so|so\.[0-9\.]*)$ + View=%view{ascii} file %f && nm -C -D %f + +# Object +type/^ELF + #Open=%var{PAGER:more} %f + View=%view{ascii} file %f && nm -C %f + +### Documentation ### + +# Texinfo +#regex/\.(te?xi|texinfo)$ + +# GNU Info page +type/^Info\ text + Open=info -f %f + +shell/.info + Open=info -f %f + +# Exception: .3gp are video files not manual pages +regex/\.(3[gG][pP])$ + Include=video + +# Manual page +regex/(([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])|\.man)$ + Open=case %d/%f in */log/*|*/logs/*) cat %f ;; *) { zsoelim %f 2>/dev/null || cat %f; } | nroff -c -Tlatin1 -mandoc ;; esac | %var{PAGER:more} + View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) cat %f ;; *) { zsoelim %f 2>/dev/null || cat %f; } | nroff -c -Tlatin1 -mandoc ;; esac + +# Perl pod page +shell/.pod + Open=pod2man %f | nroff -c -Tlatin1 -mandoc | %var{PAGER:more} + View=%view{ascii,nroff} pod2man %f | nroff -c -Tlatin1 -mandoc + +# Troff with me macros. +# Exception - "read.me" is not a nroff file. +shell/read.me + Open= + View= + +shell/.me + Open=nroff -c -Tlatin1 -me %f | %var{PAGER:more} + View=%view{ascii,nroff} nroff -c -Tlatin1 -me %f + +# Troff with ms macros. +shell/.ms + Open=nroff -c -Tlatin1 -ms %f | %var{PAGER:more} + View=%view{ascii,nroff} nroff -c -Tlatin1 -ms %f + +# Manual page - compressed +regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.g?[Zz]$ + Open=case %d/%f in */log/*|*/logs/*) gzip -dc %f ;; *) gzip -dc %f | nroff -c -Tlatin1 -mandoc ;; esac | %var{PAGER:more} + View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) gzip -dc %f ;; *) gzip -dc %f | nroff -c -Tlatin1 -mandoc ;; esac + +regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.bz$ + Open=case %d/%f in */log/*|*/logs/*) bzip -dc %f ;; *) bzip -dc %f | nroff -c -Tlatin1 -mandoc ;; esac | %var{PAGER:more} + View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) bzip -dc %f ;; *) bzip -dc %f | nroff -c -Tlatin1 -mandoc ;; esac + +regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.bz2$ + Open=case %d/%f in */log/*|*/logs/*) bzip2 -dc %f ;; *) bzip2 -dc %f | nroff -c -Tlatin1 -mandoc ;; esac | %var{PAGER:more} + View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) bzip2 -dc %f ;; *) bzip2 -dc %f | nroff -c -Tlatin1 -mandoc ;; esac + +regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lzma$ + Open=case %d/%f in */log/*|*/logs/*) lzma -dc %f ;; *) lzma -dc %f | nroff -c -Tlatin1 -mandoc ;; esac | %var{PAGER:more} + View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) lzma -dc %f ;; *) lzma -dc %f | nroff -c -Tlatin1 -mandoc ;; esac + +regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.xz$ + Open=case %d/%f in */log/*|*/logs/*) xz -dc %f ;; *) xz -dc %f | nroff -c -Tlatin1 -mandoc ;; esac | %var{PAGER:more} + View=%view{ascii,nroff} case %d/%f in */log/*|*/logs/*) xz -dc %f ;; *) xz -dc %f | nroff -c -Tlatin1 -mandoc ;; esac + +# CHM +regex/\.(chm|CHM)$ + Open=which kchmviewer > /dev/null 2>&1 && (kchmviewer %f &) || (xchm %f &) + +### Images ### + +type/^GIF + Include=image + +type/^JPEG + View=%view{ascii} identify %f; test -x /usr/bin/exif && echo && exif %f 2>/dev/null + Include=image + +type/^PC\ bitmap + Include=image + +type/^PNG + Include=image + +#type/^TIFF +# Include=image + +type/^PBM + Include=image + +type/^PGM + Include=image + +type/^PPM + Include=image + +type/^Netpbm + Include=image + +shell/.xcf + Open=(gimp %f &) + +shell/.xbm + Open=bitmap %f + +shell/.xpm + Include=image + View=sxpm %f + +shell/.ico + Include=image + +include/image + Open=(see %f &) + View=%view{ascii} identify %f + #View=%view{ascii} asciiview %f + + +### Sound files ### + +#regex/\.([wW][aA][vV]|[sS][nN][dD]|[vV][oO][cC]|[aA][uU]|[sS][mM][pP]|[aA][iI][fF][fF]|[sS][nN][dD])$ +# Open=if [ "$DISPLAY" = "" ]; then play %f; else (xmms %f >/dev/null 2>&1 &); fi +# +#regex/\.([mM][oO][dD]|[sS]3[mM]|[xX][mM]|[iI][tT]|[mM][tT][mM]|669|[sS][tT][mM]|[uU][lL][tT]|[fF][aA][rR])$ +# Open=mikmod %f +# #Open=tracker %f +# +#regex/\.([wW][aA][wW]22)$ +# Open=vplay -s 22 %f +# +#regex/\.([mM][pP]3)$ +# Open=if [ "$DISPLAY" = "" ]; then mpg123 %f; else (xmms %f >/dev/null 2>&1 &); fi +# View=%view{ascii} mpg123 -vtn1 %f 2>&1 | sed -n '/^Title/,/^Comment/p;/^MPEG/,/^Audio/p' +# +#regex/\.([oO][gG][gG|aA|vV|xX])$ +# Open=if [ "$DISPLAY" = "" ]; then ogg123 %f; else (xmms %f >/dev/null 2>&1 &); fi +# View=%view{ascii} ogginfo %s +# +#regex/\.([sS][pP][xX]|[fF][lL][aA][cC])$ +# Open=if [ "$DISPLAY" = "" ]; then play %f; else (xmms %f >/dev/null 2>&1 &); fi +# +#regex/\.([mM][iI][dD][iI]?|[rR][mM][iI][dD]?)$ +# Open=timidity %f +# +#regex/\.([wW][mM][aA])$ +# Open=mplayer -vo null %f +# View=%view{ascii} mplayer -quiet -slave -frames 0 -vo null -ao null -identify %f 2>/dev/null | tail +13 || file %f + + +### Play lists ### + +#regex/\.([mM]3[uU]|[pP][lL][sS])$ +# Open=if [ -z "$DISPLAY" ]; then mplayer -vo null -playlist %f; else (xmms -p %f >/dev/null 2>&1 &); fi + + +### Video ### + +regex/\.([aA][vV][iI])$ + Include=video + +regex/\.([aA][sS][fFxX])$ + Include=video + +regex/\.([dD][iI][vV][xX])$ + Include=video + +regex/\.([mM][kK][vV])$ + Include=video + +regex/\.([mM][oO][vV]|[qQ][tT])$ + Include=video + +regex/\.([mM][pP]4|[mM]4[vV]|[mM][pP][eE]?[gG])$ + Include=video + +# MPEG-2 TS container + H.264 codec +regex/\.([mM][tT][sS])$ + Include=video + +regex/\.([tT][sS])$ + Include=video + +regex/\.([vV][oO][bB])$ + Include=video + +regex/\.([wW][mM][vV])$ + Include=video + +regex/\.([fF][lL][iIcCvV])$ + Include=video + +regex/\.([oO][gG][mM])$ + Include=video + +regex/\.([rR][aA]?[mM])$ + Open=(realplay %f >/dev/null 2>&1 &) + +#include/video + Open=(mplayer %f >/dev/null 2>&1 &) + #Open=(gtv %f >/dev/null 2>&1 &) + #Open=(xanim %f >/dev/null 2>&1 &) + + +### Documents ### + +# Postscript +type/^PostScript + Open=(gv %f &) + View=%view{ascii} ps2ascii %f + +# PDF +type/^PDF + Open=(see %f &) + #Open=(acroread %f &) + #Open=(ghostview %f &) + View=%view{ascii} pdftotext %f - + +# The following code very ugly and should not be taken as example. +# It should be cleaned up when the new format of mc.ext is developed. + +# html +regex/\.([hH][tT][mM][lL]?)$ + Open=(if test -n "" && test -n "$DISPLAY"; then ( file://%d/%p &) 1>&2; else links %f || lynx -force_html %f || ${PAGER:-more} %f; fi) 2>/dev/null + View=%view{ascii} links -dump %f 2>/dev/null || w3m -dump %f 2>/dev/null || lynx -dump -force_html %f + +# StarOffice 5.2 +shell/.sdw + Open=(libreoffice %f &) + +# StarOffice 6 and OpenOffice.org formats +regex/\.(odt|ott|sxw|stw|ods|ots|sxc|stc|odp|otp|sxi|sti|odg|otg|sxd|std|odb|odf|sxm|odm|sxg)$ + Open=(libreoffice %f &) + View=%view{ascii} odt2txt %f + +# AbiWord +shell/.abw + Open=(abiword %f &) + +# Microsoft Word Document +regex/\.([Dd][oO][cCtT]|[Ww][rR][iI])$ + Open=(abiword %f >/dev/null 2>&1 &) + View=%view{ascii} antiword -t %f || catdoc -w %f || word2x -f text %f - || strings %f +type/^Microsoft\ Word + Open=(abiword %f >/dev/null 2>&1 &) + View=%view{ascii} antiword -t %f || catdoc -w %f || word2x -f text %f - || strings %f + +# RTF document +#regex/\.([rR][tT][fF])$ +# Open=(abiword %f >/dev/null 2>&1 &) + +# Microsoft Excel Worksheet +regex/\.([xX][lL][sSwW])$ + Open=(gnumeric %f >/dev/null 2>&1 &) + View=%view{ascii} xls2csv %f || strings %f +type/^Microsoft\ Excel + Open=(gnumeric %f >/dev/null 2>&1 &) + View=%view{ascii} xls2csv %f || strings %f + +# Use OpenOffice.org to open any MS Office documents +type/^Microsoft\ Office\ Document + Open=(libreoffice %f &) + +# Framemaker +type/^FrameMaker + Open=fmclient -f %f + +# DVI +regex/\.([dD][vV][iI])$ + Open=run-mailcap %f 2>&1 & + View=%view{ascii} catdvi %f + +# TeX +regex/\.([Tt][Ee][Xx])$ + Include=editor + +# DjVu +regex/\.(djvu?|DJVU?)$ + Open=djview %f & + View=%view{ascii} djvused -e print-pure-txt %f + +### Miscellaneous ### + +# Makefile +regex/[Mm]akefile$ + Open=make -f %f %{Enter parameters} + +# Imakefile +shell/Imakefile + Open=xmkmf -a + +# Makefile.PL (MakeMaker) +regex/^Makefile.(PL|pl)$ + Open=%var{PERL:perl} %f + +# dbf +regex/\.([dD][bB][fF])$ + Open=%view{ascii} dbview %f + View=%view{ascii} dbview -b %f + +# REXX script +regex/\.(rexx?|cmd)$ + Open=rexx %f %{Enter parameters};echo "Press ENTER";read y + +# Disk images for Commodore computers (VIC20, C64, C128) +regex/\.(d64|D64)$ + Open=%cd %p/uc1541:// + View=%view{ascii} c1541 %f -list + Extract=c1541 %f -extract + +# Glade, a user interface designer for GTK+ and GNOME +regex/\.([Gg][Ll][Aa][Dd][Ee])$ + Open=if glade-3 --version >/dev/null 2>&1; then (glade-3 %f >/dev/null 2>&1 &); else (glade-2 %f >/dev/null 2>&1 &); fi + +# Gettext Catalogs +shell/.mo + View=%view{ascii} msgunfmt %f || cat %f + +# lyx +regex/\.(lyx|LYX)$ + Open=lyx %f + View=%view{ascii} lyxcat %f + +# torrent +#regex/\.([tT][oO][rR][rR][eE][nN][tT])$ +# View=%view{ascii} ctorrent -x %f 2>/dev/null + +### Plain compressed files ### + +# ace +regex/\.(ace|ACE)$ + Open=%cd %p/uace:// + View=%view{ascii} unace l %f + Extract=unace x %f + +# arc +regex/\.(arc|ARC)$ + Open=%cd %p/uarc:// + View=%view{ascii} arc l %f + Extract=arc x %f '*' + Extract (with flags)=I=%{Enter any Arc flags:}; if test -n "$I"; then arc x $I %f; fi + +# zip +type/^([Zz][Ii][Pp])\ archive + Open=%cd %p/uzip:// + View=%view{ascii} unzip -v %f + +# zoo +regex/\.([Zz][Oo][Oo])$ + Open=%cd %p/uzoo:// + View=%view{ascii} zoo l %f + +# gzip +type/^gzip + Open=gzip -dc %f | %var{PAGER:more} + View=%view{ascii} gzip -dc %f 2>/dev/null + +regex/\.(gz|Z)$ + View=%view{ascii} gzip -dc %f 2>/dev/null + +# bzip2 +type/^bzip2 + Open=bzip2 -dc %f | %var{PAGER:more} + View=%view{ascii} bzip2 -dc %f 2>/dev/null + +regex/\.bz2?$ + View=%view{ascii} bzip2 -dc %f 2>/dev/null + +# bzip +type/^bzip + Open=bzip -dc %f | %var{PAGER:more} + View=%view{ascii} bzip -dc %f 2>/dev/null + +# compress +type/^compress + Open=gzip -dc %f | %var{PAGER:more} + View=%view{ascii} gzip -dc %f 2>/dev/null + +# lzma +regex/\.lzma$ + Open=lzma -dc %f | %var{PAGER:more} + View=%view{ascii} lzma -dc %f 2>/dev/null + +# xz +regex/\.xz$ + Open=xz -dc %f | %var{PAGER:more} + View=%view{ascii} xz -dc %f 2>/dev/null + +### phd + +type/^Berkeley\ DB\ 1.85 + View=%view{ascii} db_dump185 -p %f + +# Compiled HTML +shell/.chm + Open=fbreader %f & + +# DejaVu +shell/.djvu + #Open=djview %f & + Open=evince %f & + +# EPUB +shell/.epub + Open=fbreader %f & + +# FB2 +shell/.fb2 + Open=fbreader %f & + View=%view{ascii} xsltproc /usr/local/src/FictionBook/FB2_2_txt_ru.xsl %f + +# RTF +regex/\.([rR][tT][fF])$ + Open=fbreader %f & + View=%view{ascii} catdoc %f + +# ftplist +regex/\.ftplist$ + Open=%cd %p#ftplist + +# Play list +regex/\.([mM]3[uU]|[pP][lL][sS])$ + Include=audio + +# Lossless audio +regex/\.(cue|aac|ac3|ape|flac|wv|mka)$ + Include=audio + +# Object +shell/.o + View=%view{ascii} nm %f + Disassemble=%view{ascii} objdump -d -r %f + +# Python +shell/.py + Open=python %f + View=%view{ascii} + Compile=compyle %s + Icon=snake.xpm + +regex/\.(tif|TIF|tiff|TIFF)$ + Open=xview %f + +shell/.torrent + Open=%cd %p/torrent:// + +regex/\.([xX][mM][lL])$ + Include=xml + +type/^XML *(1\.0 *)?document text + Include=xml + +include/audio + #Open=[ "`audtool --get-volume`" -eq 0 ] && (audacious & sleep 3); audtool --playlist-clear --playlist-addurl %f --playback-play + #Open=smplay %f & + Open=deadbeef %f & + #Open=mediaplayer_open %f + View=%view{ascii} %f + +include/video + Open=smplay %f & + #Open=mediaplayer_open %f + View=%view{ascii} %f + +include/xml + Open=%cd %p/xml:// + +### Default ### + +# Default target for anything not described above +default/* + Open= + View= + + +### EOF ### diff --git a/.mc/menu b/.mc/menu new file mode 100644 index 0000000..4b2944f --- /dev/null +++ b/.mc/menu @@ -0,0 +1,376 @@ +shell_patterns=0 + +# This is necessary to overcome a bug in mc - without this +# mc makes default wrong item +N NOOP + : + +@ Do something on all of the file(s) at once + CMD=%{Enter command} + exec $CMD %s + ++ t t +@ Do something on the tagged files one by one + CMD=%{Enter command} + for f in %t; do + $CMD "$f" + done + ++ t r +p View the file in the pager + exec $PAGER %f + ++ t r +b View the file in a browser + exec webbrowser file://%d/%f + ++ t r +w View the file in a new browser window + exec webbrowser -n file://%d/%f + ++ t r += f \.(htm(l?)|txt)$ +t View the file in a new browser tab + exec webbrowser -t file://%d/%f + ++= f \.fb2(\.bz2|\.gz|\.zip)?$ | f \.(chm|epub|htm(l?)|txt|rtf)$ & t r +f FBReader + fbreader %f & + ++ t r & f \.fb2(\.bz2|\.gz|\.zip)$ +H fb2html + case %f in + *.fb2.bz2) A="bunzip2 -c" ;; + *.fb2.gz) A="gunzip -c" ;; + *.fb2.zip) A="unzip -p" ;; + *.fb2) A="cat" ;; + esac + $A %f | xsltproc /usr/local/src/FictionBook/FB2_2_html_ru.xsl - | webstdin -t + ++ t r & f \.fb2(\.bz2|\.gz|\.zip)$ +T fb2txt + case %f in + *.fb2.bz2) A="bunzip2 -c" ;; + *.fb2.gz) A="gunzip -c" ;; + *.fb2.zip) A="unzip -p" ;; + *.fb2) A="cat" ;; + esac + $A %f | xsltproc /usr/local/src/FictionBook/FB2_2_txt_ru.xsl - | webstdin -e txt -t + ++= t r & f \.(pdf|PDF|djvu)(\.bz2|\.gz)?$ +e evince + evince %f & + ++= t r & f \.(doc|DOC|rtf)$ +d catdoc + catdoc %f | less + ++= t r & f \.(xls|XLS)$ +x xls2csv + xls2csv %f | less + ++ t r & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|png|PNG|xpm)$ | t t += t r & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|png|PNG|xpm)$ +i View image(s) scaled + xli -zoom auto %s & + ++ t r & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|png|PNG|xpm)$ | t t +I View image(s) full size + xli %s & + ++ t r & f \.(ico|jp2|tif|TIF|tiff|TIFF)$ | t t += t r & f \.(ico|jp2|tif|TIF|tiff|TIFF)$ +I View icon, JPEG-2000 or TIFF image + display %s & + ++ t r & f \.(aac|ac3|ape|cue|flac|m3u|mka|mp3|MP3|pls|wv)$ | t t +a Add the audiofile(s) or playlist(s) + #if [ "`audtool --get-volume`" -eq 0 ]; then cgmem_nice 500 audacious & sleep 3; fi + #for f in %s; do + # audtool --playlist-addurl "$f" + #done + #smplayer -add-to-playlist %s & + deadbeef --queue %s & + ++ t r & f \.(aac|ac3|ape|cue|flac|m3u|mka|mp3|MP3|pls|wv)$ | t t += t r & f \.(m3u|mp3|MP3|cue|ac3|ape|flac|wv)$ +p Load the audiofile(s) or playlist(s) + #if [ "`audtool --get-volume`" -eq 0 ]; then cgmem_nice 500 audacious & sleep 3; fi + #audtool --playlist-clear + #for f in %s; do + # audtool --playlist-addurl "$f" + #done + #smplayer -send-action pl_remove_all + #smplayer -add-to-playlist %s & + deadbeef --queue %s & + ++ t r & f \.(aac|ac3|ape|cue|flac|m3u|mka|mp3|MP3|pls|wv)$ | t t +P Play the audiofile(s) or playlist(s) + #if [ "`audtool --get-volume`" -eq 0 ]; then cgmem_nice 500 audacious & sleep 3; fi + #audtool --playlist-clear + #for f in %s; do + # audtool --playlist-addurl "$f" + #done + #exec audtool --playback-play + #mplayer -playlist %f & + #smplayer %s & + deadbeef %s & + #exec mediaplayer_open %f + ++ t r & f \.m3u +R Play the playlist in random order + "$HOME"/lib/audio/shuffle-playlist.py %f random-playlist-tmp.m3u + #if [ "`audtool --get-volume`" -eq 0 ]; then cgmem_nice 500 audacious & sleep 3; fi + #audtool --playlist-clear + #audtool --playlist-addurl random-playlist-tmp.m3u + #audtool --playback-play + #mplayer -playlist random-playlist-tmp.m3u & + #smplayer random-playlist-tmp.m3u & + #smplayer -actions pl_shuffle %f & + deadbeef --queue random-playlist-tmp.m3u & deadbeef --play + #mediaplayer_open random-playlist-tmp.m3u + (sleep 5; exec rm random-playlist-tmp.m3u) & + ++ f \.(aac|ac3|ape|cue|flac|m3u|mp3|MP3|pls|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wmv)$ | t d | t t += t r & f \.(aac|ac3|ape|cue|flac|m3u|mp3|MP3|pls|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wmv)$ +s Play audio/video file(s) or directory with smplayer + smplayer %s & + ++= t d & f (video_ts|VIDEO_TS)$ +c Play the current directory with smplayer + smplayer . & + ++ t r & f \.(m3u|mp3|MP3|cue|aac|ac3|ape|flac|pls|wv|avi|AVI|flv|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wmv)$ | t t +i Audio/video info + exec mplayer -msglevel identify=6 -frames 0 %s + ++ t d & f (video_ts|VIDEO_TS)$ +i DVD info + exec mplayer -dvd-device . dvd:// -msglevel identify=6 -frames 0 + ++ f \.(avi|AVI|flv|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wmv)$ | t t +m Play video file(s) with mplayer + mplayer %s & + ++ f \.(m3u|mp3|MP3|cue|aac|ac3|ape|flac|pls|wv|avi|AVI|flv|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wmv)$ | t t +M Play audio/video with gmplayer + gmplayer %s & + ++ t d & f (video_ts|VIDEO_TS)$ +d Play DVD directory with mplayer + mplayer -dvd-device . dvd:// & + ++ t d & f (video_ts|VIDEO_TS)$ +D Play DVD directory with gmplayer + gmplayer -dvd-device . dvd:// & + ++ t d & f (video_ts|VIDEO_TS)$ +t Play DVD title with mplayer + title=%{Enter title} + mplayer -dvd-device . dvd://"$title" & + ++ t d & f (video_ts|VIDEO_TS)$ +T Play DVD title with gmplayer + title=%{Enter title} + gmplayer -dvd-device . dvd://"$title" & + ++ t d +p Play directory with mplayer + mplayer %f/* & + ++ t d +P Play directory with gmplayer + gmplayer %f/* & + ++ t d & f ^\.\.$ +b Make a .tar.bz2 release of the current directory + Pwd="`basename %d /`" + echo -n "Name of the distribution file (without extension) [$Pwd]: " + read tar + if [ "$tar"x = x ]; then tar="$Pwd"; fi + cd .. && tar cvf - "$Pwd" | bzip2 -f9 > "$tar".tar.bz2 + echo ../"$tar".tar.bz2 created. + ++ t d & f ^\.\.$ +g Make a .tar.gz release of the current directory + Pwd="`basename %d /`" + echo -n "Name of the distribution file (without extension) [$Pwd]: " + read tar + if [ "$tar"x = x ]; then tar="$Pwd"; fi + cd .. && tar cvf - "$Pwd" | gzip -f9 > "$tar".tar.gz + echo ../"$tar".tar.gz created. + ++ t d & f ^\.\.$ +t Make a .tar release of the current directory + Pwd="`basename %d /`" + echo -n "Name of the distribution file (without extension) [$Pwd]: " + read tar + if [ "$tar"x = x ]; then tar="$Pwd"; fi + cd .. && tar cvf - "$Pwd" > "$tar".tar + echo ../"$tar".tar created. + ++ t d & f ^\.\.$ +z Make a .zip release of the current directory + Pwd="`basename %d /`" + echo -n "Name of the distribution file (without extension) [$Pwd]: " + read zip + if [ "$zip"x = x ]; then zip="$Pwd"; fi + cd .. && zip -r9 "$zip".zip "$Pwd" + echo ../"$zip".zip created. + ++ t d & f ^\.\.$ +y Make a .zip release of the current directory with recoded filenames + Pwd="`basename %d /`" + echo -n "Name of the distribution file (without extension) [$Pwd]: " + read zip + if [ "$zip"x = x ]; then zip="$Pwd"; fi + cd .. && zip.py "$zip".zip "$Pwd" + echo ../"$zip".zip created. + ++ ! f \.(\.|zip|ZIP)$ +z zip the file/directory + exec zip -r9 %f.zip %f + ++ ! f \.(\.|zip|ZIP)$ +y zip the file/directory with recoded filename(s) + exec zip.py %f.zip %f + ++ t t +Z zip these files/directories + ZIP=%{Enter zip name} + exec zip -r9 "$ZIP" %s + ++ t t +Y zip these files/directories with recoded filenames + ZIP=%{Enter zip name} + exec zip.py "$ZIP" %s + ++ t r & f \.tar\.bz2$ +u Extract from tar-bzip2 + exec bzip2 -cd %f | tar xpvf - + ++ f \.tar\.gz$ | f \.tgz$ & t r +u Extract from tar-gzip + exec gzip -cd %f | tar xpvf - + ++ t r & f \.tar$ +u Extract from tar + exec tar xpvf %f + ++ t r & f \.(zip|ZIP)$ +u Extract from zip + exec unzip %f + ++ t r & f \.(zip|ZIP)$ +y Extract from zip with recoded filenames + exec unzip.py %f + ++ t r & f \.7z$ +u Extract from 7zip + exec 7zr x %f + ++ t r & f \.(rar|RAR)$ +u Extract from rar + exec unrar x -y %f + ++ t r & f \.tar\.xz$ +u Extract from tar-xz + exec xz -cd %f | tar xpvf - + ++ T r & F \.tar\.bz2$ +U Extract from the other tar-bzip2 + exec bzip2 -cd %D/%F | tar xpvf - + ++ F \.tar\.gz$ | F \.tgz$ & T r +U Extract from the other tar-gzip + exec gzip -cd %D/%F | tar xpvf - + ++ T r & F \.tar$ +U Extract from the other tar + exec tar xpvf %D/%F + ++ T r & F \.(zip|ZIP)$ +U Extract from the other zip + exec unzip %D/%F + ++ T r & F \.(zip|ZIP)$ +Y Extract from the other zip with recoded filenames + exec unzip.py %D/%F + ++ T r & F \.(rar|RAR)$ +U Extract from the other rar + exec unrar x -y %D/%F + ++ T r & F \.7z$ +U Extract from 7zip + exec 7zr x %D/%F + ++ T r & F \.tar\.xz$ +U Extract from tar-xz + exec xz -cd %D/%F | tar xpvf - + ++ f \.tar\.bz2$ | f \.tar\.gz$ | f \.tgz$ | f \.(zip|ZIP)$ | f \.(rar|RAR)$ | f \.7z$ & t r +n Create a directory for this archive + case %f in + *.tar.bz2) D="`basename %f .tar.bz2`";; + *.tar.gz) D="`basename %f .tar.gz`";; + *.tgz) D="`basename %f .tgz`";; + *.zip) D="`basename %f .zip`";; + *.ZIP) D="`basename %f .ZIP`";; + *.rar) D="`basename %f .rar`";; + *.RAR) D="`basename %f .RAR`";; + *.7z) D="`basename %f .7z`";; + esac + exec mkdir "$D" + ++ t r +v View via mailcap + exec see %f + ++ t r +c Compare the file + exec cmp %D/%f %f + ++ t r & T r +C Compare these files + exec cmp %D/%F %f + ++ t r +d Diff the file + exec diff -u --speed-large-files %D/%f %f + ++ t r & T r +D Diff these files + exec diff -u --speed-large-files %D/%F %f + ++ t r +v vimdiff the file + exec vim -d %D/%f %f + ++ t r & T r +V vimdiff these files + exec vim -d %D/%F %f + ++ t d & ! f ^\.\.$ +d Diff the directory + exec diff -ru --speed-large-files %D/%f %f + ++ t d & T d & ! F ^\.\.$ +D Diff these directories + exec diff -ru --speed-large-files %D/%F %f + ++= f \.(asc|sig(n)?)$ & t r +v Verify signature + exec gpg --verify %f + ++= f \.[1-8]$ | f \.man$ & t r +1 Display the file with roff -man + %view nroff -man %f + +m View a manual page + MAN=%{Enter manual name} + %view man -P cat $MAN + ++ t r | t d | t t +r rsync the file(s) there + rsync -ahP --del %s %D diff --git a/.mc/panels.ini b/.mc/panels.ini new file mode 100644 index 0000000..2879d3f --- /dev/null +++ b/.mc/panels.ini @@ -0,0 +1,34 @@ + +[Dirs] +current_is_left=0 +other_dir=.. + +[New Left Panel] +case_sensitive=1 +display=listing +exec_first=0 +list_mode=full +panel_display_codepage=Other_8_bit +reverse=0 +sort_order=name +user_format=half type name | size | perm +user_mini_status=1 +user_status0=half type name | size | perm +user_status1=half type name | size | perm +user_status2=half type name | size | perm +user_status3=half type name | size | perm + +[New Right Panel] +case_sensitive=1 +display=listing +exec_first=0 +list_mode=full +panel_display_codepage=Other_8_bit +reverse=0 +sort_order=name +user_format=half type name | size | perm +user_mini_status=1 +user_status0=half type name | size | perm +user_status1=half type name | size | perm +user_status2=half type name | size | perm +user_status3=half type name | size | perm diff --git a/.mc/skins/black.ini b/.mc/skins/black.ini new file mode 100644 index 0000000..16c34e0 --- /dev/null +++ b/.mc/skins/black.ini @@ -0,0 +1,74 @@ +[skin] + description=Monochrome gray-on-black skin, similar to mc -b + +[Lines] + lefttop=╔ + righttop=╗ + centertop=╤ + centerbottom=╧ + leftbottom=╚ + rightbottom=╝ + leftmiddle=╟ + rightmiddle=╢ + centermiddle=┼ + horiz=═ + vert=║ + thinhoriz=─ + thinvert=│ + +[core] + _default_=lightgray;black + selected=black;lightgray + marked=white;black + markselect=white;lightgray + gauge=white;black + input=lightgray;black + reverse=black;lightgray + +[dialog] + _default_=black;lightgray + dfocus=white;black + dhotnormal=white;black + dhotfocus=white;black + +[error] + _default_=white;black + errdhotnormal=white;black + errdhotfocus=white;black + +[filehighlight] + _default_=lightgray;black + +[menu] + _default_=black;lightgray + menuhot=white;black + menusel=lightgray;black + menuhotsel=black;white + menuinactive=black;lightgray + +[buttonbar] + hotkey=lightgray;black + button=black;lightgray + +[help] + _default_=black;lightgray + helpitalic=white;lightgray + helpbold=white;lightgray + helplink=black;lightgray + helpslink=white;black + +[editor] + _default=lightgray;black + editbold=white;black + editmarked=black;white + editwhitespace=white;black + editlinestate= + bookmark=white; + bookmarkfound=black; + +[viewer] + viewunderline=white;black + +[widget-common] + sort-sign-up = ' + sort-sign-down = , diff --git a/.mc/skins/grey.ini b/.mc/skins/grey.ini new file mode 100644 index 0000000..a9d6ff8 --- /dev/null +++ b/.mc/skins/grey.ini @@ -0,0 +1,74 @@ +[skin] + description=Monochrome black-on-gray skin, similar to mc -b + +[Lines] + lefttop=┌ + righttop=┐ + centertop=─ + centerbottom=─ + leftbottom=└ + rightbottom=┘ + leftmiddle=├ + rightmiddle=┤ + centermiddle=┼ + horiz=─ + vert=│ + thinhoriz=─ + thinvert=│ + +[core] + _default_=black;lightgray + selected=lightgray;black + marked=white;lightgray + markselect=white;black + gauge=white;black + input=white;black + reverse=white;black + +[dialog] + _default_=black;lightgray + dfocus=white;black + dhotnormal=white;black + dhotfocus=white;black + +[error] + _default_=white;black + errdhotnormal=black;lightgray + errdhotfocus=black;lightgray + +[filehighlight] + _default_=black;lightgray + +[menu] + _default_=black;lightgray + menuhot=white;black + menusel=white;black + menuhotsel=white;black + menuinactive=black;lightgray + +[buttonbar] + hotkey=lightgray;black + button=black;lightgray + +[help] + _default_=black;lightgray + helpitalic=white;lightgray + helpbold=white;lightgray + helplink=black;lightgray + helpslink=white;black + +[editor] + _default_=black;lightgray + editbold=white;lightgray + editmarked=black;lightgray + editwhitespace=white;lightgray + editlinestate=white;black + bookmark=white;red + bookmarkfound=black;green + +[viewer] + viewunderline=white;lightgray + +[widget-common] + sort-sign-up = ' + sort-sign-down = , diff --git a/.mime.types b/.mime.types new file mode 100644 index 0000000..bf28200 --- /dev/null +++ b/.mime.types @@ -0,0 +1,476 @@ +# File extension -> MIME type map. +# MIME type Extension + +application/activexdocument vbd +application/andrew-inset ez +application/applefile +application/astound asd asn asz +application/atomicmail +application/batch-SMTP +application/beep+xml +application/cprplayer pqi +application/datawindow psr +application/dca-rft +application/dec-dx +application/dsptype tsp +application/dvcs +application/fastman lcc +application/fml fml ofml +application/font-tdpfr pfr # TrueDoc Portable Font Resource +application/freeloader frl +application/ghostview +application/hep hep # Hummingbird Host Explorer Profiles +application/http +application/hyperstudio stk +application/listenup ptlk +application/lit lit +application/lotus-123 123 wk wks # Lotus 123 +application/mac-binhex40 hqx # Macintosh binhexed archives +application/mathematica nb +application/mbedlet mbd +application/mirage mfp +application/msm msm +application/msword doc dot # Microsoft Word +application/n2p n2p +application/octet-stream ani bat com exe dll cur dbf sjf # Binary File +application/octet-stream-bin seq +application/oda oda +application/olescript axs +application/pagemaker pm5 pt5 # PageMaker +application/parityfec +application/pcphoto zpa +application/pdf pdf # Adobe Acrobat +application/pkcs10 +application/pkcs7-mime +application/pkcs7-signature +application/pkix-cert +application/pkix-crl +application/pkixcmp +application/postscript ai eps ps # Postscript File +application/presentations shw +application/quest qrt +application/remote-printing +application/riscos +application/rtc rtc +application/sgml-open-catalog cat +application/sieve +application/slate +application/smil smi smil sml +application/studiom smp +application/tajima dst +application/talker talk +application/timbuktu tbt +application/toolbook tbk # Toolbook +application/vemmi +application/vnd.cups-postscript +application/vnd.cups-raster +application/vnd.cups-raw +application/vnd.hp-HPGL +application/vnd.hp-PCL pcl +application/vnd.hp-PCLXL +application/vnd.mif mi mif +application/vnd.mozilla.xul+xml +application/vnd.ms-access mda mdb mde mdf # MS Access +application/vnd.ms-excel xla xlb xlc xlm xls xlt xlw # Microsoft Excel +application/vnd.ms-powerpoint pot pps ppt ppz # Microsoft PowerPoint Slideshow +application/vnd.ms-project mpc mpt mpx mpw mpp # MS Project +application/vnd.ms-tnef +application/vnd.ms-works +application/vnd.oasis.opendocument.chart odc +application/vnd.oasis.opendocument.database odb +application/vnd.oasis.opendocument.formula odf +application/vnd.oasis.opendocument.graphics odg +application/vnd.oasis.opendocument.graphics-template otg +application/vnd.oasis.opendocument.image odi +application/vnd.oasis.opendocument.presentation odp +application/vnd.oasis.opendocument.presentation-template otp +application/vnd.oasis.opendocument.spreadsheet ods +application/vnd.oasis.opendocument.spreadsheet-template ots +application/vnd.oasis.opendocument.text odt +application/vnd.oasis.opendocument.text-master odm +application/vnd.oasis.opendocument.text-template ott +application/vnd.oasis.opendocument.text-web oth +application/vnd.palm +application/vnd.powerbuilder6 pbd +application/vnd.powerbuilder6-s +application/vnd.powerbuilder7 +application/vnd.powerbuilder7-s +application/vnd.powerbuilder75 +application/vnd.powerbuilder75-s +application/vnd.stardivision.calc sdc +application/vnd.stardivision.calc sdc +application/vnd.stardivision.chart sds +application/vnd.stardivision.draw sda +application/vnd.stardivision.draw sda +application/vnd.stardivision.impress sdd +application/vnd.stardivision.impress sdd sdp +application/vnd.stardivision.impress-packed sdp +application/vnd.stardivision.mail smd +application/vnd.stardivision.math smf +application/vnd.stardivision.math smf +application/vnd.stardivision.writer sdw vor +application/vnd.stardivision.writer sdw vor +application/vnd.stardivision.writer-global sgl +application/vnd.stardivision.writer-global sgl +application/vnd.sun.xml.calc sxc +application/vnd.sun.xml.calc.template stc +application/vnd.sun.xml.draw sxd +application/vnd.sun.xml.draw.template std +application/vnd.sun.xml.impress sxi +application/vnd.sun.xml.impress.template sti +application/vnd.sun.xml.math sxm +application/vnd.sun.xml.writer sxw +application/vnd.sun.xml.writer.global sxg +application/vnd.sun.xml.writer.template stw +application/vnd.svd +application/vnd.wap.sic +application/vnd.wap.slc +application/vnd.wap.wbxml wbxml +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/vocaltec-media-desc vmd +application/vocaltec-media-file vmf +application/vpa vpa +application/wordperfect wp # WordPerfect +application/wordperfect5.1 wp5 # WordPerfect Version 5.1 +application/wordperfect6.1 wp6 # WordPerfect Version 6.1 +application/wordperfectd wpd # WordPerfect +application/x-CorelXARA web xar +application/x-DemoShield wid +application/x-InstallFromTheWeb rrf +application/x-InstallShield wis +application/x-NET-Install ins +application/x-Parable-Thing tmv +application/x-applix aw +application/x-arj arj +application/x-asap asp +application/x-authorware-bin aab +application/x-authorware-map aam aas +application/x-autocad dwg dxf svf +application/x-bcpio bcpio +application/x-bzip2 bz2 +application/x-cdlink vcd +application/x-chat chat +application/x-chess-pgn pgn +application/x-chm chm +application/x-cnc cnc +application/x-coda coda page +application/x-compress Z +application/x-connector con +application/x-core +application/x-cpio cpio +application/x-cprplayer pqf +application/x-crossword puz +application/x-csh csh # C-Shell Program +application/x-cu-seeme cu csm +application/x-cult3d-object co +application/x-debian-package deb +application/x-director dcr dir dxr swa # Director File +application/x-dms dms +application/x-doom wad +application/x-dreamcast-vms vms +application/x-dreamcast-vms-info vmi +application/x-dvi dvi # TeX dvi Format +application/x-dwf dwf # AutoCAD +application/x-earthtime etc +application/x-envoy evy +application/x-executable +application/x-expandedbook ebk +application/x-fb2 fb2 +application/x-fmr fmr +application/x-font pfa pfb gsf pcf pcf.Z ttf TTF # Font File +application/x-fr fr +application/x-futuresplash spl # Macromedia Flash +application/x-gnumeric gnumeric +application/x-gtar gtar taz tgz tar.gz tar.bz2 # Tar+GZip or BZip2 file +application/x-gzip gz +application/x-hdf hdf # NCSA HDF +application/x-hsp-erf erf +application/x-httpd-imap map +application/x-httpd-php php pht phtml +application/x-httpd-php-source phps +application/x-httpd-php3 php3 +application/x-httpd-php3-preprocessed php3p +application/x-httpd-php4 php4 +application/x-ica ica # WinFrames +application/x-icq uin +application/x-ipix ipx +application/x-ipscript ips +application/x-java-applet +application/x-java-archive jar +application/x-java-bean +application/x-java-jnlp-file jnlp +application/x-java-serialized-object ser +application/x-java-vm class +application/x-javascript js # Javascript +application/x-kchart chrt +application/x-kdelnk +application/x-killustrator kil +application/x-koan skd skm skp skt +application/x-kpresenter kpr kpt +application/x-kspread ksp +application/x-kword kwd kwt +application/x-latex latex # Latex File +application/x-lha lha +application/x-lzh lzh +application/x-lzx lzx +application/x-macbinary bin +application/x-maker book fb fbdoc fm frame frm maker +application/x-mocha moc mocha +application/x-mpire mpl mpire +application/x-ms-wmd wmd +application/x-ms-wmz wmz +application/x-msaddr adr +application/x-mscardfile crd +application/x-msi msi +application/x-msmediaview m13 m14 +application/x-msmoney mny +application/x-mspublisher pub +application/x-msschedule scd +application/x-msterminal trm +application/x-mswallet wlt +application/x-mswrite wri +application/x-net120NM cnf +application/x-netcdf cdf nc +application/x-netfpx npx +application/x-nokia-9000-communicator-add-on-software aos +application/x-ns-proxy-autoconfig pac proxy +application/x-nschat nsc +application/x-object o +application/x-ogg ogg +application/x-oz-application oza +application/x-perl perl pl pm +application/x-pgp-plugin pgp +application/x-pkcs7-crl crl +application/x-quicktimeplayer qtl # Quicktime +application/x-redhat-package-manager rpm +application/x-rx +application/x-salsa slc +application/x-sh sh # Shell Program +application/x-shar shar +application/x-shockwave-flash swf swfl # Macromedia Shockwave file +application/x-sprite spr sprite +application/x-spss sav spp sbs sps spo # SPSS +application/x-stuffit sit # Macintosh Stuff-It +application/x-supercard sca +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar # Unix Tape Archive +application/x-tcl tcl tk # TCL Programming Language +application/x-tex tex ltx sty cls # Tex/LaTeX +application/x-tex-gf gf +application/x-tex-pk pk +application/x-texinfo texi texinfo # TexInfo +application/x-timbuktu tbp +application/x-tkined tki tkined +application/x-tlk tlk +application/x-trash ~ % bak old sik +application/x-troff roff t tr # Troff file +application/x-troff-man man # Troff with MAN macros +application/x-troff-me me # Troff with ME macros +application/x-troff-ms ms # Troff with MS macros +application/x-up-alert alt +application/x-up-cacheop che +application/x-ustar ustar # Ustar file +application/x-wais-source src # WAIS Sources +application/x-wingz wz +application/x-wordpro lwp +application/x-x509-ca-cert cacert crt +application/x-x509-email-cert ecert email +application/x-x509-server-cert scert servercert +application/x-x509-user-cert ucert usercert +application/x-xfig fig +application/x400-bp +application/xhtml+xml xhtml +application/xml xml +application/xml-dtd dtd +application/xml-external-parsed-entity +application/zip zip # ZIP Compressed File + +audio/basic au snd voc VOC # Audio Sound File +audio/echospeech es esl +audio/imelody imy +audio/mp4a-latm +audio/mpa-robust +audio/mpeg mp2 mpa mpega mpg mpga # MP2 Sound File +audio/mpeg3 mp3 # MP3 Sound File +audio/mpegurl m3u m3url # MP3 File List +audio/prs.sid sid +audio/tsplayer tsi +audio/voxware vox +audio/x-aiff aif aifc aiff faif # AIFF Sound File +audio/x-dspeech cht dus +audio/x-epac pae +audio/x-gsm gsm gsd +audio/x-midi kar mid midi # MIDI Sound File +audio/x-mod it m15 mod mtm s3m stm ult uni xm +audio/x-ms-wax wax +audio/x-ms-wma wma +audio/x-pn-realaudio ra ram rm # RealAudio Sound File +audio/x-qt-stream stream +audio/x-rmf rmf +audio/x-scpls pls +audio/x-twinvq vqf vql +audio/x-twinvq-plugin vqe +audio/x-wav WAV wav # WAV Sound File +audio/x-wtx wtx + +image/bmp bmp +image/cgm cgm +image/cis-cod cod +image/cpi cpi +image/fif fif +image/g3fax +image/gif GIF gif # GIF image file +image/ief ief # Image Exchange +image/ifs ifs +image/jpeg JPEG JPG jpe jpeg jpg # JPG image file +image/naplps +image/pcx PCX pcx +image/png png # Portable Network Graphics +image/rip rip +image/svg+xml svg svgz +image/svh svh +image/tiff TIF TIFF tif tiff # TIFF image file +image/vasa mcf +image/vnd.nok-oplogo-color nokia-op-logo +image/vnd.svf +image/vnd.wap.wbmp wbmp +image/vnd.xiff xif +image/wavelet wi +image/x-clp clp CLP +image/x-cmu-raster ras +image/x-cmx cmx +image/x-coreldraw cdr +image/x-coreldrawpattern pat +image/x-coreldrawtemplate cdt +image/x-corelphotopaint cpt +image/x-djvu djv djvu +image/x-emf emf EMF +image/x-etf etf +image/x-fpx fpx +image/x-freehand fh5 fh4 fhc +image/x-halo-cut cut +image/x-icon ico +image/x-iw44 iw4 iw44 +image/x-jng jng +image/x-jps jps +image/x-mgx-dsf dsf +image/x-photo-cd pcd +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-quicktime qti +image/x-rgb rgb # RGB Image File +image/x-rush uff +image/x-wmf wmf W32 MetaFile +image/x-xbitmap xbm # X-bitmap Image File +image/x-xpixmap xpm # X-pixmap Image File +image/x-xwindowdump xwd + +inode/blockdevice +inode/chardevice +inode/directory +inode/directory-locked +inode/fifo +inode/socket + +message/delivery-status +message/disposition-notification +message/external-body +message/http +message/news +message/partial +message/rfc822 +message/s-http + +multipart/alternative +multipart/byteranges +multipart/digest +multipart/encrypted +multipart/form-data +multipart/header-set +multipart/mixed dig +multipart/parallel +multipart/related +multipart/report +multipart/signed +multipart/voice-message +multipart/x-mixed-replace push + +plugin/wanimate wan waf + +text/ccs ccs +text/comma-separated-values csv +text/css css # Cascading Style Sheet +text/directory +text/dss dss +text/enriched +text/html HTM HTML htm html # HTML Document +text/lsp lsp +text/mathml mml +text/parsnegar-document pgr +text/plain TXT asc cgi diff text txt # Plain Text File +text/rfc822-headers +text/richtext rtx # Rich Text File +text/rtf rtf # Rich Text Format +text/tab-separated-values tsv +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/x-c++hdr h++ hpp hxx hh +text/x-c++src c++ cpp cxx cc +text/x-chdr h +text/x-crontab +text/x-csrc c +text/x-hdml hdml +text/x-java java +text/x-makefile +text/x-pascal p pas +text/x-server-parsed-html shtml +text/x-setext etx +text/x-sgml sgm sgml # SGML Document +text/x-speech spc +text/x-vcalendar vcs +text/x-vcard vcf +text/x-vmel mel +text/xml xml xsl +text/xml-external-parsed-entity + +urdu/urdu98 u98 + +video/animaflex afl +video/gl gl +video/isivideo fvi +video/mp4v-es +video/mpeg MPEG MPG mpe mpeg mpg # MPEG Movie File +video/quicktime mov qt # Quicktime Movie File +video/vnd.mpegurl mxu +video/vnd.vivo viv vivo +video/wavelet wv +video/x-anim anim anim5 anim3 anim7 +video/x-dl dl +video/x-flc flc +video/x-fli fli +video/x-iff iff +video/x-mng mng +video/x-mpeg2 +video/x-ms-asf asf asx # Windows Media File +video/x-ms-wm wm +video/x-ms-wmv wmv +video/x-ms-wmx wmx +video/x-ms-wvx wvx +video/x-msvideo avi vob # AVI Movie File +video/x-rad-screenplay avx +video/x-sgi-movie movi movie mv # SGI Movie File +video/x-sunvideo vcr +video/x-videogram vgm vgx xdr +video/x-videogram-plugin vgp + +workbook/formulaone vts vtts + +x-conference/x-cooltalk ice +x-world/x-3dmf 3dmf 3dm qd3d qd3 +x-world/x-svr svr +x-world/x-vrml vrm vrml wrl wrz +x-world/x-vrt vrt diff --git a/.muttrc b/.muttrc new file mode 100644 index 0000000..ab0edef --- /dev/null +++ b/.muttrc @@ -0,0 +1,372 @@ +# +# User configuration file for Mutt +# + +# Note: $folder should be set _before_ any other path vars where `+' or `=' +# is used because paths are expanded when parsed +# +#set folder=~/Mail # Where I keep my mailboxes; I am happy with this default + +# source aliases +source =mutt/aliases + +# All my addresses +alternates `awk '{s=s"|"$0} END {print substr(s,2)}' $HOME/mail/misc/.myemail` # All my addresses + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# Mailboxes to watch for new mail +# +# mailboxes [ ... ] +# + +mailboxes ! =admin =block =bulk =spam `echo $HOME/mail/lists/* | sed s#$HOME/mail/#=#g` + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# Settings +# + +#set indent_string='%v> ' # How to quote replied text + +# Settings for dumb slow term +set ascii_chars=`[ -n "$SLOWTERM" ] && echo yes || echo no` # Use ASCII instead of ACS chars for threads +set arrow_cursor=`[ -n "$SLOWTERM" ] && echo yes || echo no` # Draw a simple cursor on slow terminals + +# Character set for my terminal +set charset=`case "$LC_CTYPE" in *UTF-8) echo utf-8 ;; *) echo koi8-r ;; esac` +set assumed_charset="us-ascii:utf-8:windows-1251:koi8-r" # Character sets for mail without a charset +set config_charset=koi8-r # Character set for this config file and alias files +set send_charset="us-ascii:iso-8859-1:koi8-r:windows-1251:utf-8" # Character sets for outgoing mail +charset-hook x-unknown koi8-r # Show unknow encoding as koi8-r +charset-hook windows-1251 cp1251 # Autoconvert windoze encoding + +set index_format="%4C %Z %{%b %d} %-15.15F (%4c) %s" # Somewhat different index format, which works nicely with mail lists. +set pager_format="%4C %Z %[%b %d] %-15.15F (%4l) %s %* ---(%P)---" # Mostly match index_format + +set sort=mailbox-order # Primary sorting method +#set sort=threads # Sort by threads,... +set sort_aux=date # ...then by date + +set sort_alias=unsorted +set sort_browser=alpha + +set history=1000 # Number of lines of history in memory +set history_file==tmp/.mutt-history +set save_history=1000 # Number of lines of history in file + +set read_inc=10 # Progress indicator when reading folders. +set write_inc=10 # Progress indicator when writing folders. + +set allow_8bit # Never do Q-P encoding on legal 8-bit chars +set abort_unmodified=no # Let me send empty messages +set alias_file==mutt/aliases # Where to store aliases +set beep=no # Never beep on errors +set collapse_unread=no # Do not collapse thread with unread messages +set confirmappend=no # Don't ask me if i want to append to mailboxes +set fast_reply # Skip initial prompts when replying if no autoedit +set forward_format="[Fwd: %s]" # Subject to use when forwarding messages +set help # Show the help lines +set ignore_list_reply_to # Ignore Reply-To headers pointing to mailing lists. +set include=yes # Always include a copy when replying. +set locale=`echo $LC_TIME` # Locale to format dates +set mail_check=30 # How often (in seconds) to poll for new mail +set mark_old=no # Distinguish between seen (but unread) and new messages +set mask="" # Show dot-files in the file browser +set menu_scroll # No implicit next-page/prev-page +set move=no # Do not move read messages to ~/mbox +set pager_context=1 # No. of lines of context to give when scrolling +set pager_index_lines=6 # How many index lines to show in the pager +set pager_stop # Don't move to the next message on next-page +set postponed==tmp/.mutt-postponed +set print=ask-no # Don't waste paper +set recall=no # When I say "compose", ask me whether I want to continue composing a postponed message. +set reply_regexp="^((re([\\[0-9\\]+])*|aw|ÎÁ):[ \t]*)+[ \t]*" # A regular expression to detect replies +set rfc2047_parameters # Sometimes, I get mails which use a bogus encoding for MIME parameters. Setting this shouldn't harm. +set sendmail_wait=5 # Wait 5 seconds before putting sendmail to the background. +set sig_dashes=no # Do not add "-- " before my sig - I already have it there +set status_on_top # I prefer the status bar on top +set suspend=no # Do not suspend on Ctrl+Z +set tilde # Indicate empty lines in the pager. +set tmpdir=~/tmp # Temporary files aren't stored in public places. +set use_domain=no # Don't qualify local addresses with $domain +set use_ipv6=no # Speed up DNS +set wait_key=no # Do not wait for a key after running external programs, pipes + +set xterm_set_titles +set xterm_title="%f: %?m?%m messages&no messages?%?n? N:%n?%?d? D:%d?%?b? [%b new mboxes]? [$USER@%h] mutt" +set xterm_icon="%f: %m%?n?:%n?%?d?/%d?%?b? [%b]? [$USER@%h] mutt" + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# MIME settings +# + +alternative_order text/enriched text/plain text + +#auto_view text/html +#auto_view application/ms-tnef text/x-vcard +#auto_view application/x-gzip application/x-gunzip +#auto_view application/rtf +#set implicit_autoview # Use copiousoutput filters from mailcap for all types of attachments + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# Header fields I don't normally want to see +# +ignore * # Ignore all lines by default + +# I do want to see these fields, though! +unignore date from to x-original-to reply-to mail-followup-to cc \ + newsgroups subject user-agent x-mailer x-url x-face + +# Default list of header fields to weed when displaying +# +#ignore "from " received content- mime-version status x-status message-id +#ignore sender references return-path lines + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# Specify the order of the headers to appear when displaying a message +# +# hdr_order [ ... ] +# + +hdr_order date from to x-original-to reply-to mail-followup-to cc \ + newsgroups subject user-agent x-mailer x-url x-face + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# My special headers +# + +my_hdr X-Attribution: phd + +my_hdr X-Face: \"4chVP^f8\;3Bi>x\"ic0%DuP(ZLyn:\;kzQ1njs]5,GRZG<{<\\~\`|Shxi7|)d|8uO~HFRfyym\n\ + {[xs@OYG]2Q]0\#}0sjJp\`1^1+B6]A2+{9fW=S [ ... ] + +subscribe (python-(announce|dev|ideas)|.*-(list|sig))@python\.org \ + .*@moderators\.isc\.org .*@lists\.sourceforge\.net \ + (durus|quixote)-users@mems-exchange\.org pysqlite@lists\.initd\.org \ + .*@googlegroups\.com \ + mlug@unixcenter\.ru + +#lists + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# Change settings based on mailbox +# +# folder-hook [!] +# +# is executed when opening a mailbox matching + +# Restore defaults +folder-hook .* "\ + my_hdr From: Oleg Broytman ; \ + my_hdr Reply-To: Oleg Broytman ; \ + my_hdr X-Url: http://phdru.name/; \ + set attribution='On %d, %f wrote:'; \ + set record==sent-mail; \ + set signature==signatures/phd@phdru.name" + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# Multiple spool mailboxes +# +# mbox-hook [!] +# +# Read mail in is moved to when is closed. + +#mbox-hook =mutt-users.in =mutt-users +#mbox-hook +TEST +inbox + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# Specify default filename when saving messages +# +# save-hook [!] +# +# is provided as default when saving messages from + +#save-hook mutt- =mutt-mail +#save-hook aol\.com +spam + +save-hook .* =inbox + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# Specify where to save composed messages +# +# fcc-hook [!] +# +# is recipient(s), is where to save a copy + +#fcc-hook joe +joe +#fcc-hook bob +bob + +#fcc-hook .* +sent + +fcc-hook .* =sent-mail + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# Change settings based upon message recipient +# +# send-hook [!] +# +# is executed when sending mail to an address matching + +#send-hook mutt- 'set signature=~/.sigmutt; my_hdr From: Mutt User ' + +# Restore defaults +send-hook .* "\ + my_hdr From: Oleg Broytman ; \ + my_hdr Reply-To: Oleg Broytman ; \ + my_hdr X-Url: http://phdru.name/; \ + set attribution='On %d, %f wrote:'; \ + set signature==signatures/phd@phdru.name" + +send-hook "~L '@.*\.(r|s)u$'" "\ + my_hdr From: ïÌÅÇ âÒÏÊÔÍÁÎ ; \ + my_hdr Reply-To: ïÌÅÇ âÒÏÊÔÍÁÎ ; \ + set attribution='÷ %{%a, %d %b %Y × %I:%M:%S%p %Z} %f ÎÁÐÉÓÁÌ:'; \ + set signature==signatures/phd@phdru.name-ru" + +send-hook "~L '@(mail|list|inbox|bk)\.ru'" "\ + my_hdr From: ïÌÅÇ âÒÏÊÔÍÁÎ ; \ + my_hdr Reply-To: ïÌÅÇ âÒÏÊÔÍÁÎ ; \ + my_hdr X-Url: http://my.mail.ru/mail/phd; \ + set signature==signatures/phd@mail.ru" + +send-hook "~L '(@|\.)(((ya|yandex|narod)\.ru)|(yandex\.com)|yandex-team\.ru)$'" "\ + my_hdr From: ïÌÅÇ âÒÏÊÔÍÁÎ ; \ + my_hdr Reply-To: ïÌÅÇ âÒÏÊÔÍÁÎ ; \ + my_hdr X-Url: http://phd2.ya.ru/; \ + set signature==signatures/phd2@yandex.ru" + +send-hook ~u unmy_hdr Reply-To + +send-hook "~L python-announce-list@python\.org" "\ + set followup_to=no; \ + my_hdr Reply-To: python-list@python.org; \ + my_hdr Mail-Followup-To: phd@phdru.name, python-list@python.org" + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# Key bindings +# + +# Change Up/Down for pager +bind pager previous-line +bind pager next-line + +bind index,pager c copy-message +bind index,pager S decode-save + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# Macros +# + +# Go to the first folder with unread messages +macro index C c\n +macro pager C qc\n + +# Move current message to inbox +macro index,pager S s!\n + +macro index,pager h ":auto_view text/html\n" +macro index,pager H ":unauto_view text/html\n" + +# Pipe spam +#macro index,pager z |"sa-learn --no-sync --ham\n" +#macro index,pager Z |"sa-learn --no-sync --spam\n" +macro index,pager s "q"|"spamassassin -d | ~/mail/bin/spamcop.py\nj" +macro index,pager z "q:set editor='vim -s ~/mail/misc/spamcop.vim'\nr:set editor=vim.sh\nqn" + +# Go to main mailbox +macro index H c!\n +macro pager H qc!\n + +# Go to python mailbox +macro index Y c=lists/python\n +macro pager Y qc=lists/python\n + +# Recode base64 to 8bit, html to plain text, mustdie-1251 to koi8-r, etc. +macro index,pager M "|mimedecode.py | less\n" +macro index,pager E ":set editor=mimedecode.sh\ne:set editor=vim.sh\n" + +# Convert X-Face header to an image and display it +macro index,pager f |"~/mail/bin/view-x-face\n" + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# Colors +# + +# This is for an xterm with with grayish background + +# object foreground background regexp/pattern + +color normal default default +color hdrdefault black default + +color header magenta default ^(date|x-mailer|user-agent|x-operating-system): +color header blue default ^(from|to|cc|delivered-to|reply-to|mail-followup-to|x-attribution): +color header brightblack default ^subject: + +color quoted blue default +color quoted1 magenta default +color quoted2 red default +color quoted3 green default +color quoted4 cyan default +color quoted5 blue default +color quoted6 magenta default +color quoted7 red default +color quoted8 green default +color quoted9 cyan default +color quoted10 blue default + +color attachment white green +color error brightred default +color index brightblack default ~N +color indicator black cyan +color message blue default +color search black yellow +color signature magenta default +color status white blue +color underline blue default + +color markers brightblue default +color tilde blue default +color tree blue default + +# email +color body brightblue default [-a-Z_0-9.+]+@[-a-Z_0-9.]+ + +# URLs +color body brightblue default "(((https?|ftp|gopher|telnet)://|(mailto|file|news|about|ed2k|irc|sip|magnet):)[^' \t<>\"]+)[A-Za-z0-9/]" + +# Smilies (emoticons) +color body brightmagenta default " [;:]-*[dp(){}<>|\\/]| [(){}<>|\\/]-*[;:]" # :-) + +# Attributes when using a mono terminal +mono header underline ^Subject: +mono quoted bold + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# Encryption: GnuPG +# +source /usr/share/doc/mutt/examples/gpg.rc +set pgp_use_gpg_agent diff --git a/.my.cnf b/.my.cnf new file mode 100644 index 0000000..353a5fa --- /dev/null +++ b/.my.cnf @@ -0,0 +1,5 @@ +[mysql] +auto-rehash +default-character-set=utf8 +pager +prompt="\u@\d > " diff --git a/.pdbrc b/.pdbrc new file mode 100644 index 0000000..1bc8abf --- /dev/null +++ b/.pdbrc @@ -0,0 +1,11 @@ +# http://wiki.python.org/moin/PdbRcIdea + +# .pdbrc only allows for debugger commands; you cannot insert Python scripts. + +# To overcome this restriction, this .pdbrc executes pdbrc.py, +# which can contain arbitrary Python commands. + +# If pdbrc.py is missing, you get an error message (which doesn't hurt). + +import os +x = execfile(os.path.expanduser("~/lib/python/pdbrc.py")) diff --git a/.plan b/.plan new file mode 100644 index 0000000..90018f8 --- /dev/null +++ b/.plan @@ -0,0 +1,10 @@ +Home page: http://phdru.name/ +e-mail: phd@phdru.name, phd@mail.ru +Jabber: phd@phdru.name, phd@jabber.ru +SIP: phd@iptel.org, phd@sipnet.ru +ICQ: 39288223 +mobile phone: +7 (905) 704-20-85 +home phone: +7 (496 46) 3-40-83 +work phone: +7 (499) 248-5600 +PGP: 0x6E080B70B6287B03 + 0179 A9FA FE7B EB77 06FC E328 6E08 0B70 B628 7B03 diff --git a/.procmailrc b/.procmailrc new file mode 100644 index 0000000..7574f6d --- /dev/null +++ b/.procmailrc @@ -0,0 +1,419 @@ +# +# User configuration file for procmail +# + +# +# SET VARIABLES + +# Internal Variables + +SHELL=/bin/sh #Shell used to run procmail. Be sure this points to + #your system's copy of sh. DO NOT substitute a + #different shell unless you really know Unix + +LINEBUF=4096 #Needed to keep Procmail from choking on long + #"recipes", or instructions on what to do with + #particular kinds of email. + +PATH=$HOME/bin:$HOME/mail/bin:/bin:/usr/bin:/usr/local/bin + #Path for your programs -- this is probably best + #left alone. + +VERBOSE=off #Change this to "on" when you try a new recipe + #so that Procmail will log literally every step + #it takes. DO NOT LEAVE IT ON, though, because + #it creates huge logfiles. + +# Default Program & file locations + +MAILDIR=${HOME}/Mail #you'd better make sure this directory exists + +#ORGMAIL=/var/spool/mail/phd +#DEFAULT=${ORGMAIL} + +LOGFILE=${MAILDIR}/procmail.log #Logs message disposition. Recommended -- otherwise + #errors are emailed to you. :/ + +SENDMAIL=/usr/sbin/sendmail #useful for autoreply recipes. +FORMAIL=/usr/bin/formail #useful for autoreply recipes. + + +MYEMAIL=${HOME}/mail/misc/.myemail #Tells Procmail where your MYEMAIL + #file is located, a text file containing all the + #email addresses you use. + +ADMINFOLDER=${MAILDIR}/admin #for bounced mail, mail from root, + #postmaster, abuse, etc. + +BLOCKFOLDER=${MAILDIR}/block #for suspicious mail, but possibly not spam + +BULKFOLDER=${MAILDIR}/bulk #for bulk mail which appears legitimate, such + #as mail from mailing lists or mail sent using + #Bcc: + +SPAMFOLDER=${MAILDIR}/spam #change this to SPAMFOLDER=/dev/null + #to delete spam entirely. + +VIRUSFOLDER=/dev/null #Set this variable to /dev/null to delete + #all viruses. You don't want to take chances with a virus, + #and the false positive rate on the virus filters is near zero. + +# BEGIN RECIPES + + +# Create a backup cache of 2000 most recent messages in case of mistakes +:0 c +backup + + :0 ic + | cd backup && rm -f dummy `ls -t msg.* | sed -e 1,2000d` + +# Regenerate "From" lines to make sure they are valid +:0 fhw +| ${FORMAIL} -I "From " -a "From " + + +# *CLOSED (only subscribers can write)* MAILING LISTS +# No need to filter them for spam + +:0 +* ^List-Id: Moscow Linux User Group +lists/mlug + +:0 +* ^(From|To|Cc|Reply-To): .*((mlug@unixcenter\.ru)|@altlinux\.ru) +lists/mlug + +:0 +* ^(To|Cc|Reply-To|Resent-To|X-BeenThere): .*(-list@(python\.org|cwi\.nl)) +lists/python + +:0 +* ^Sender: python-list-admin@python\.org +lists/python + +:0 +* ^Newsgroups: .*comp\.lang\.python +lists/python + +:0 +* ^List-Id: Python core developers +lists/python + +:0 +* ^List-Id: "Python 3000 process, design, development" +lists/python + +:0 +* ^List-Id: Discussions of speculative Python language ideas.* +lists/python + +:0 +* ^Sender: "Email-SIG" +lists/python + +:0 +* ^Sender: mimelib-devel-admin@lists\.sourceforge\.net +lists/python + +:0 +* ^List-Id: Discussion of the Quixote Web development framework.* +lists/python + +:0 +* ^List-Id: Discussion of the Durus object database.* +lists/python + +:0 +* ^From: sitelist-bounces@lists\.sourceforge\.net +* ^To: sqlobject-discuss-owner@lists\.sourceforge\.net +* ^Subject: Uncaught bounce notification +${SPAMFOLDER} + +:0 +* ^From: sqlobject-cvs-bounces@lists\.sourceforge\.net +* ^To: sqlobject-cvs-owner@lists\.sourceforge\.net +* ^Subject: Auto-discard notification +${SPAMFOLDER} + +:0 +* ^List-Id: .+ +lists/python + +:0 +* ^To: "(\[sqlobject:bugs\] )|(Ticket [0-9]+)" <[0-9]+@bugs\.sqlobject\.p\.re\.sf\.net> +* ^Reply-To: "?(\\?\[sqlobject:bugs\\?\] )|(Ticket [0-9]+)"? <[0-9]+@bugs\.sqlobject\.p\.re\.sf\.net> +* ^Subject: (\[SQL-CVS\] )?\[sqlobject:bugs\] (Re: )?\#[0-9]+ +lists/python + +:0 +* ^Sender: ppa-qps-devel-admin@lists\.sourceforge\.net +lists/python + +:0 +* ^Sender: pysqlite-bounces@lists\.initd\.org +lists/python + +:0 +* ^List-Id: +lists/python + +:0 +* ^(To|Cc|Reply-To|Resent-To|Sender): .*(zope.*@zope\.(org|net|com))|(zip@eevolute\.com) +lists/zope + + +# Now filters + +# Klez +:0 B +* ^Content-Transfer-Encoding: base64 +* name( ?)=.*\.(com|exe|bat|scr|pif) +| ${FORMAIL} -A"X-Note: Klez" -A"X-Folder: Virus" >${VIRUSFOLDER} + +# Sobig.E +:0 HB +* ^Subject: Re: (Movie|Application)$ +* ^Content-Transfer-Encoding: base64 +* ^Content-Disposition: attachment; +* filename=.your_details\.zip +| ${FORMAIL} -A"X-Note: Sobig.E" -A"X-Folder: Virus" >${VIRUSFOLDER} + +# Sobig.F +:0 H +* ^Subject: .*(Thank you!|Your application|That movie|Approved|Details|My details|Your details|Wicked screensaver)$ +* ^X-MailScanner: Found to be clean$ +| ${FORMAIL} -A"X-Note: Sobig.F" -A"X-Folder: Virus" >${VIRUSFOLDER} + +# MyDoom/Novarg +:0 HB +* <50000 +* ^Subject: (test|hi|hello|Mail Delivery System|Mail Transaction Failed|Server Report|Status|Error|)$ +* ^Content-type: application/octet-stream; +* (file)?name="(document|readme|doc|text|file|data|test|message|body)\.(pif|scr|exe|cmd|bat|zip) +| ${FORMAIL} -A"X-Note: MyDoom" -A"X-Folder: Virus" >${VIRUSFOLDER} + +# Netsky +:0 +* > 20000 +* < 60000 +* ^Subject:[ ]*(hi|hello|read it immediately|\ +something for you|warning|information|stolen|fake|unknown) +* B ?? ^(anything ok\?|what does it mean?|ok|\ +i'm waiting|read the details\.|here is the document\.|\ +read it immediately\!|my hero|\ +here|is that true?|is that your name?|is that your account?|\ +i wait for a reply\!|is that from you?|you are a bad writer|\ +I have your password\!|something about you\!|\ +kill the writer of this document\!|i hope it is not true\!|\ +your name is wrong|i found this document about you|\ +yes, really\?|that is bad|here it is|see you|\ +greetings|stuff about you\?|something is going wrong!|\ +information about you|about me|from the chatter|\ +here, the serials|here, the introduction|here, the cheats|\ +that's funny|do you\?|reply|take it easy|why\?|\ +thats wrong|misc|you earn money|you feel the same|\ +you try to steal|you are bad|something is going wrong|\ +something is fool)$ +* B ?? ^(Content-Disposition:[ ]*attachment;)?[ ]*(file)?name="?(document|msg|doc|talk|message|creditcard|\ +details|attachment|me|stuff|posting|textfile|concert|\ +information|note|bill|swimmingpool|product|\ +topseller|ps|shower|aboutyou|nomoney| found|\ +story|mails|website|friend|jokes|location|\ +final|release|dinner|ranking|object|mail2|part2|\ +disco|party|misc)\..*(zip|exe|scr|com|pif)"?$ +| ${FORMAIL} -A"X-Note: Netsky" -A"X-Folder: Virus" >${VIRUSFOLDER} + +# Bagle.J +:0 +* ^Subject:(.*E-mail account disabling warning)|\ + (.*E-mail account security warning)|\ + (.*Email account utilization warning)|\ + (.*Important notify about your e-mail account)|\ + (.*Notify about using the e-mail account)|\ + (.*Notify about your e-mail account utilization)|\ + (.*Warning about your e-mail account) +* B ?? ^Content-Type: application/octet-stream; +* B ?? ^Content-Transfer-Encoding: base64 +* B ?? ^Content-Disposition: attachment; +| ${FORMAIL} -A"X-Note: Bagle.J" -A"X-Folder: Virus" >${VIRUSFOLDER} + + +# From http://www.internetguru.com.au/igblog-102.html + +# Redirect common virus attachments inc. zipped versions +:0 B +* name=.*(document|readme|doc|text|file|data|test|message|body)\.(vbs\"|wsf\"|vbe\"|wsh\"|hta\"|scr\"|pif\"|exe\"|shs\"|bat\"|bas\"|cmd\"|zip\") +{ + :0 + | ${FORMAIL} -A"X-Note: executable attachment virus" -A"X-Folder: Virus" >>${VIRUSFOLDER} +} + +# Some more common virus attachments inc. zipped versions +:0 B +* name=.*(Attach|Information|Readme|Document|Info|TextDocument|Textfile|MoreInfo|Message)\.(pif\"|zip\") +{ + :0 + | ${FORMAIL} -A"X-Note: executable attachment virus" -A"X-Folder: Virus" >>${VIRUSFOLDER} +} + +# Redirect windows executables (note - haven't included exe and com +:0 B +* name=.*\.(vbs\"|wsf\"|vbe\"|wsh\"|hta\"|scr\"|pif\"|shs\"|bat\"|bas\"|scr\"|dll\") +{ + :0 + | ${FORMAIL} -A"X-Note: executable attachment virus" -A"X-Folder: Virus" >>${VIRUSFOLDER} +} + +# This one finds them annoying Custom Logo spams that seem to get past most filters +:0 B +* .*out\.php\?email\=(sales|info)\@ +{ + :0 + | ${FORMAIL} -A"X-Note: Custom Logo spam" -A"X-Folder: Spam" >>${SPAMFOLDER} +} + +# This catches about 99% of deliberate viagra mispellings ie v1@GRa, v1agr@ etc +:0 H +* ^Subject.*[Vv][1jl\|][aA\@][Gg][Rr][Aa\@] +{ + :0 + | ${FORMAIL} -A"X-Note: viagra spam" -A"X-Folder: Spam" >/dev/null +} + + +# Chineese/japaneese/korean spam + +:0 +* ^Content-Type: text/(plain|html); *charset=("?)(big5|gb2312|iso-2022-jp|ks_c_5601-1987|shift_jis)("?) +| ${FORMAIL} -A"X-Note: chineese/japaneese/korean charset" -A"X-Folder: Spam" >/dev/null + +:0 +* ^X-RBL-Warning: .*(china|korea) does not seem to care about spam +| ${FORMAIL} -A"X-Note: chineese/korean source" -A"X-Folder: Spam" >>${SPAMFOLDER} + + +# SpamAssassin (spamassassin.org) +:0fw +* < 10240000 +| spamc -U /tmp/spamassassin.sock -s 10240000 + +# Mail with a score of 14 or higher is certainly spam +:0: +* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\* +| ${FORMAIL} -A"X-Note: certainly spam" -A"X-Folder: Spam" >/dev/null + +:0: +* ^X-Spam-Status: Yes +* > 20000 +| ${FORMAIL} -A"X-Note: oversized spam" -A"X-Folder: Spam" >/dev/null + +:0 HB: +* ^X-Spam-Status: Yes +* http://www\.gstinc\.com/ +| ${FORMAIL} -A"X-Note: gstinc spam" -A"X-Folder: Spam" >/dev/null + +:0 HB: +* ^X-Spam-Status: Yes +* (www\.)?sonidom\.ru +| ${FORMAIL} -A"X-Note: sonidom spam" -A"X-Folder: Spam" >/dev/null + +:0 HB: +* ^X-Spam-Status: Yes +* (www\.)?pos-tel\.ru +| ${FORMAIL} -A"X-Note: pos-tel spam" -A"X-Folder: Spam" >/dev/null + +:0 HB: +* ^X-Spam-Status: Yes +* @besttraining\.ru +| ${FORMAIL} -A"X-Note: besttraining spam" -A"X-Folder: Spam" >/dev/null + +# HTML-only mail is almost certainly spam +#:0 +#* ^Content-Type: text/html +#| ${FORMAIL} -A"X-Note: HTML-only mail" -A"X-Folder: Spam" >/dev/null + +:0: +* ^X-Spam-Status: Yes +${SPAMFOLDER} + + +# MAILING LISTS + +# Filter out mail from all mailing lists you are on. Just duplicate the recipe +# for each mailing list you are on, and put the correct address for the list in +# the condition statement. (The "* ^TO" part.) If you read mail on shell, you +# may find it easier to deliver this mail to separate folders, especially for +# busy lists. I do. :) + + +# Block all messages that are too big +:0 +* > 1000000 +| ${FORMAIL} -A"X-Note: the message is too big" -A"X-Folder: Block" >>${BLOCKFOLDER} + + +# unfiltered mail marked by exim (using RBL/ORBS/etc) + +:0 +* ^X-RBL-Warning: +* ^(To|Cc):.*phd +${BLOCKFOLDER} + +:0 +* ^X-RBL-Warning: +${SPAMFOLDER} + + +# Sort out mail that really is to you from mail Bcc'd to you, or mail +# which doesn't have any of your email addresses on the To: or Cc: line. +# For this to work properly, you must create a text file named .myemail +# in your home directory and enter all email addresses that belong to +# you in it, one per line, just as you do with your .nobounce file. +# +# This does =wonders= in keeping spam from appearing in your personal +# mail. :) +# +# Substitute your shell account email address, custom domain, and any other email +# address you may have for the entries below. +:0: +* ? test -f ${MYEMAIL} && \ + (${FORMAIL} -zxTo: -zxCc: |\ + fgrep -i -f ${MYEMAIL}) +| ${FORMAIL} -A"X-Folder: Default" >>${DEFAULT} + +# Deliver email which passed spam filtering, but which wasn't sent to +# a recognizable personal email address of yours, to your "bulk mail" +# folder, for reading on a less-urgent basis. +:0: +| ${FORMAIL} -A"X-Folder: Bulk" >>${BULKFOLDER} + + +# Vacation - modified version of procmail example from "man procmailex" + +# Drop duplicates +#:0 Wh: msgid.lock +#| ${FORMAIL} -D 65536 msgid.cache +# +#:0 Whc: vacation.lock +#* !^From: .*phd +#* !^FROM_MAILER +#* !^FROM_DAEMON +#* !^X-Loop: phd@phdru.name +#* !^X-Loop: phd@iskra.aviel.ru +#* !^From: .* +#| ${FORMAIL} -rD 65536 vacation.cache +# +#:0 ehc # if the name was not in the cache - reply +#| (egrep -v '^From phd|^Return-Path: phd' | \ +# ${FORMAIL} -r -A"Precedence: junk" \ +# -A"X-Loop: phd@phdru.name" -A"X-Loop: phd@iskra.aviel.ru" \ +# -A"Content-Type: text/plain; charset=koi8-r"; \ +# echo "Hello!"; echo "";\ +# echo " I am on vacation. This is an auto-generated reply. Your message has been"; \ +# echo "delivered to my mailbox. Thanks a lot. I will read it after 0th of ."; \ +# echo ""; \ +# echo "úÄÒÁ×ÓÔ×ÕÊÔÅ."; echo ""; \ +# echo " ñ ÕÅÈÁÌ × ÏÔÐÕÓË. üÔÏ Á×ÔÏÍÁÔÉÞÅÓËÉÊ ÏÔ×ÅÔ. ÷ÁÛÅ ÓÏÏÂÝÅÎÉÅ ÂÙÌÏ ÄÏÓÔÁ×ÌÅÎÏ."; \ +# echo "× ÍÏÊ ÐÏÞÔÏ×ÙÊ ÑÝÉË. âÏÌØÛÏÅ ÓÐÁÓÉÂÏ. ñ ÐÒÏÞÔÕ ÅÇÏ, ËÏÇÄÁ ×ÅÒÎÕÓØ 0 ."; \ +# echo ""; cat $HOME/.signature) | $SENDMAIL -oi -t diff --git a/.profile b/.profile new file mode 100644 index 0000000..9a88f80 --- /dev/null +++ b/.profile @@ -0,0 +1,247 @@ +# +# $HOME/.profile (works with sh, ksh and bash) +# + +case "$SHELL" in + */*csh) SHELL=/bin/bash + ;; + # this is for bash.exe + *command.com | \ + *\\bash) SHELL=//c/ubin/bash + ;; +esac + +if [ -z "$USER" ]; then + USER="$LOGNAME"; export USER +fi + +### umask sets a mask for the default file permissions, +### umask 022 is less restrictive, 077 more paranoid +umask 027 + +PATH="$HOME"/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +MANPATH="$HOME"/man:/usr/local/man:/usr/share/man:/usr/man +# LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/lib +export PATH MANPATH # LD_LIBRARY_PATH + +LANG=C +#LC_ALL=C +case "$LC_CTYPE" in + *UTF-8) # LC_CTYPE is already set + ;; + + *) LC_CTYPE=ru_RU.KOI8-R + ;; +esac +LC_COLLATE="$LC_CTYPE" +#LANGUAGE="ru en" +export LANG LC_CTYPE LC_COLLATE +unset LC_ALL LANGUAGE + +# Default for df/du +BLOCKSIZE=1k +export BLOCKSIZE + +### uncomment to select an alternate timezone (/etc/localtime is default) +# TZ=/usr/share/zoneinfo/Europe/Moscow; export TZ + +### NEWS Configuration +ORGANIZATION=Home +# NNTPSERVER=news +export ORGANIZATION # NNTPSERVER + +(set -P 2>/dev/null) && set -P # follow physical paths, not symlinks + +# Interactive only commands +if [ -t 0 ] ; then + if [ -z "$TERM" ]; then + eval `tset -Q -s -m 'network:?xterm'` + fi + + stty sane erase ^H + + case "$TERM" in + linux) + # mutt, vim and python + BACKGROUND=DARK + export BACKGROUND + ;; + + *term*|*rxvt*|vt100|screen*) + BACKGROUND=LIGHT + export BACKGROUND + ;; + esac + + PAGER=less + LESS="-gimq" + case "$LC_CTYPE" in + *UTF-8) LESSCHARSET=utf-8 + ;; + + *) LESSCHARSET=koi8-r + ;; + esac + #LESSCHARDEF=32c. + LESSEDIT='vim ?lm+%lm -- %f' + export PAGER LESS LESSCHARSET LESSEDIT # LESSCHARDEF + + EDITOR="$HOME"/.vim/vim.sh + VISUAL="$EDITOR" + FCEDIT="$EDITOR" + export EDITOR VISUAL FCEDIT + + HISTCONTROL=ignoreboth + HISTIGNORE='&: *:x:X:[bf]g' + HISTFILE="$HOME/.sh_history" + HISTFILESIZE=1000 + HISTSIZE=1000 + export HISTCONTROL HISTIGNORE HISTFILE HISTFILESIZE HISTSIZE + + # Used by bash/mc for hostname completion + HOSTFILE="$HOME"/lib/config/hosts + export HOSTFILE + + MAIL="/var/mail/$USER" + MAILPATH="$MAIL:$HOME/mail/admin:$HOME/mail/block:$HOME/mail/bulk" + if [ -d "$HOME"/mail/lists/ ]; then + MAILPATH="$MAILPATH:`echo $HOME/mail/lists/* | sed 's/ /:/g'`" + fi + export MAIL MAILPATH + + BROWSER="links2:links:elinks:w3m:lynx" + case "$TERM" in + *term*|*rxvt*|vt100|screen*) + BROWSER="l:$BROWSER" + ;; + esac + export BROWSER + + #all_proxy="http://localhost:3128" + #ftp_proxy="$all_proxy" + #gopher_proxy="$all_proxy" + #http_proxy="$all_proxy" + #https_proxy="$all_proxy" + auto_proxy="file:///home/phd/admin/WWW/Mozilla/mozilla.pac" + no_proxy="localhost,127.0.0.1" + #export all_proxy ftp_proxy http_proxy https_proxy auto_proxy no_proxy # gopher_proxy + export auto_proxy no_proxy + + ENV="$HOME/.shellrc" + export ENV + + case "$SHELL" in + */bash) + shopt -s checkwinsize + OPS1='\u@\h ' + . "$ENV" + ;; + *) + OPS1="`/usr/bin/whoami`@`/bin/hostname -s` " + ;; + esac + + export OPS1 + + case "$TERM" in + *term*|*rxvt*|vt100|screen*) + if [ -x "`which xtitle 2>/dev/null`" ]; then + PROMPT_COMMAND=xtitle + export PROMPT_COMMAND + fi + ;; + esac + + ### biff controls new mail notification + #biff n + ### mesg controls messages (write/talk) from other users + mesg n + # make mail(1) use a pager + crt=; export crt + + PYTHONSTARTUP="$HOME"/lib/python/init.py + export PYTHONSTARTUP + + name="Oleg Broytman" + email="phd@phdru.name" + + GIT_AUTHOR_NAME="$name" + GIT_AUTHOR_EMAIL="$email" + GIT_COMMITTER_NAME="$name" + GIT_COMMITTER_EMAIL="$email" + export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL + + HGUSER="$name <$email>" + export HGUSER + + unset name email +fi + +# No need to set DISPLAY - ssh sets DISPLAY and calls xauth +#DISPLAY="`who am i | awk '{print substr($6, 2, length($6)-2 )}' | sed -e 's/:.*$//'`:0.0" +#export DISPLAY + +if [ -n "$DISPLAY" ]; then + # mutt, vim and python + BACKGROUND=LIGHT + export BACKGROUND + + # BROWSERs + BROWSER="firefox:seamonkey:google-chrome:opera:xlinks2:$BROWSER" + + ### X Window System Configuration + #XAPPLRESDIR="$HOME/lib/X11/app-defaults/"; export XAPPLRESDIR + ### Old-style XNLSPATH + #XNLSPATH=/usr/X11R6/lib/X11/nls; export XNLSPATH + + # For GTK2/GLib to convert filenames between internal and locale encodings + G_FILENAME_ENCODING="@locale" + export G_FILENAME_ENCODING + #G_BROKEN_FILENAMES=1 + #export G_BROKEN_FILENAMES + + # X Input Method, for Multi key (Compose) to work + GTK_IM_MODULE=xim + QT_IM_MODULE=xim + export GTK_IM_MODULE QT_IM_MODULE + + # GTK2 anti-aliasing + GDK_USE_XFT=1 + export GDK_USE_XFT + + # nVidia OpenGL full scene anti-aliasing + #__GL_FSAA_MODE=4 + #export __GL_FSAA_MODE +fi + +# +# read in usepkg function +# . "$HOME"/lib/config/usepkg.sh +# + +# +# usepkg gnu +# + +# +# If SUN console, start the windows system +# +# if [ `tty` = /dev/console ] ; then +# if [ "$TERM" = sun -o "$TERM" = AT386 ] ; then +# +# if [ ${OPENWINHOME:-""} = "" ] ; then +# OPENWINHOME=/usr/openwin +# export OPENWINHOME +# fi +# +# echo "" +# echo "Starting OpenWindows in 5 seconds (type Control-C to interrupt)" +# sleep 5 +# +# "$OPENWINHOME"/bin/openwin +# +# clear # get rid of annoying cursor rectangle +# #exit # logout after leaving windows system +# +# fi +# fi diff --git a/.project b/.project new file mode 100644 index 0000000..00ca8ca --- /dev/null +++ b/.project @@ -0,0 +1,2 @@ +Senior programmer at BioChemMack - https://medap.biochemmack.ru/trac/wiki +Programmer/sysadmin at NRSC - http://oper.med.ru/ diff --git a/.psqlrc b/.psqlrc new file mode 100644 index 0000000..9758699 --- /dev/null +++ b/.psqlrc @@ -0,0 +1,8 @@ +\set FETCH_COUNT 1000 +\set HISTCONTROL ignoreboth +\set HISTSIZE 1000 +\set PROMPT1 '%m %n@%/ %R%# ' +\set PROMPT2 :PROMPT1 +\set PROMPT3 '>> ' +/* \pset pager off */ +\timing diff --git a/.screenrc b/.screenrc new file mode 100644 index 0000000..c5feba6 --- /dev/null +++ b/.screenrc @@ -0,0 +1,111 @@ +# detach on hangup +autodetach on + +deflogin on + +# set every new windows hardstatus line to somenthing descriptive +# defhstatus "screen: ^E (^Et)" + +defscrollback 1000 + +# emulate .logout message +pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended." + +# make the shell in every window a login shell +shell -$SHELL + +# shelltitle '> |bash' +# shelltitle '$ |sh' +# shelltitle '# |root sh' + +# don't display the copyright page +startup_message off + +# no annoying audible bell, please +#vbell on + +# don't kill window after the process died +# zombie "^[" + +################ +# +# xterm tweaks +# + +# advertise hardstatus support to $TERMCAP +# termcapinfo * '' 'hs:ts=\E_:fs=\E\\:ds=\E_\E\\' + +# do not confuse Solaris :) +#term vt100 + +# xterm understands both im/ic and doesn't have a status line. +# note: do not specify im and ic in the real termcap/info file as +# some programs (e.g. vi) will not work anymore. +#termcap xterm hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l +#terminfo xterm hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l + +# 80/132 column switching must be enabled for ^AW to work +# change init sequence to not switch width +#termcapinfo xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l + +# make the output buffer large for (fast) xterms. +#termcapinfo xterm* OL=10000 + +# tell screen that xterm can switch to dark background and has function keys +#termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l' +#termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~' +#termcapinfo xterm 'kh=\E[1~:kI=\E[2~:kD=\E[3~:kH=\E[4~:kP=\E[H:kN=\E[6~' + +# special xterm hardstatus: use the window title. +#termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]0;screen\007' + +# our xterm has colors! (rxvt, too) +#termcap xterm 'AF=\E[3%dm:AB=\E[4%dm' +#terminfo xterm 'AF=\E[3%p1%dm:AB=\E[4%p1%dm' + +#terminfo xterm 'vb=\E[?5h$<200/>\E[?5l' +#termcapinfo xterm 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l' + +# emulate part of the 'K' charset +#termcapinfo xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337' + +################ +# +# other terminals +# + +# extend the vt100 desciption by some sequences. +#termcap vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC +#terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC + +# https://savannah.gnu.org/bugs/?14930 +#termcapinfo linux|xterm|rxvt|xterm-color ti@:te@:XT + +################ +# +# keybindings +# + +# remove some stupid / dangerous key bindings +bind h +bind ^h +bind k +bind ^k +bind z +bind ^z +bind . +bind \\ +bind ^\ +# make them better +#bind 'I' login on +#bind 'O' login off + +# yet another hack: +# prepend/append register [/] to the paste if ^a^] is pressed. +# this lets me have autoindent mode in vi. +#register [ "\033:se noai\015a" +#register ] "\033:se ai\015a" +#bind ^] paste [.] + +# on backspace send ^H +bindkey -d -k kb stuff "\010" diff --git a/.shellrc b/.shellrc new file mode 100644 index 0000000..670a9a2 --- /dev/null +++ b/.shellrc @@ -0,0 +1,162 @@ +# +# $HOME/.shellrc +# + +OPS1="$OPS1\\$" +PS1="$OPS1 " + + +case "$SHELL" in +*/bash) + [ "`type -t ls`" = alias ] && unalias ls + [ "`type -t ll`" = alias ] && unalias ll + [ "`type -t mc`" = alias ] && unalias mc + + back() { cd - ${1:+"$@"}; } + clo() { clear; logout; } + eval 'functions() { typeset -f ${1:+"$@"}; }' + j() { jobs; } + + complete -A command -o default builtin cgmem_nice command dbus-launch exec \ + nice nohup pidof pidOf KillAll pgrep pkill psg pswg su sudo time \ + whence whereis which xargs + if [ -z "$BASH_COMPLETION_COMPAT_DIR" ]; then + complete -A command -o default man + fi + complete -A hostname dig host nslookup nc netcat nmap p ping ping6 socat \ + telnet t tt \ + tcptraceroute tcptraceroute6 tracert tracert6 traceroute traceroute6 \ + whois wget wget-m wget-wrapper ww + complete -A hostname -o default distribute ftp lftp r rsync \ + s scp ssh smbclient tcpdump tshark wireshark + complete -A job bg fg j jobs wait + complete -A variable unset + + if [ -d "$HOME/lib/config" ]; then + complete -W "`cd \"$HOME/lib/config\" && echo *`" include + fi + complete -W "`echo $BROWSER | sed 's/:/ /g'`" start-browser + ;; + +*/ksh) + back() { cd - ${1:+"$@"}; } + clo() { clear; exit; } + j() { jobs; } + ;; + +*/sh) + clo() { clear; exit; } + ;; +esac + + +# clear history, clear screen and logout +#chlo() { cd; unset HISTFILE; rm -f .*history*; clo; } + + +#Pwd() { pwd | sed "s/.*\/\(.*\)\/\(.*\)\/\(.*\)\/\(.*\)/...\/\2\/\3\/\4/"; } +#PWd() { pwd | sed "s/.*\/\(.*\)\/\(.*\)/...\/\2/"; } + + +psg() { ps auxw | grep -i ${1:+"$@"} | grep -v '\(ps auxw\|grep\)'; } +pswg() { ps auxwww | grep -i ${1:+"$@"} | grep -v '\(ps auxw\|grep\)'; } + +# Like pgrep -f +pidOf() { ps auxwww | grep -i ${1:+"$@"} | grep -v '\(ps auxw\|grep\|pidOf\|KillAll\)' | awk '{print $2}'; } + +# A kind of pkill +KillAll() { + if [ -z "$2" ]; then + kill `pidOf "$1"` + else + kill "$1" `pidOf "$2"` + fi +} + + +x() { exit; } +X() { startx >> .Xserver.log 2>&1; cyr; } + + +include() +{ + cfg="$1" + if [ -f "./$cfg" -a -r "./$cfg" ]; then + echo "Reading config file \`$cfg'" 1>&2 + . "./$cfg" + elif [ -f "$HOME/lib/config/$cfg" -a -r "$HOME/lib/config/$cfg" ]; then + echo "Reading config file \`$HOME/lib/config/$cfg'" 1>&2 + . "$HOME/lib/config/$cfg" + else + echo "Cannot find config file \`$cfg'" 1>&2 + fi +} + + +mc() { + if [ -n "$SLOWTERM" ]; then + MC_SLOW="--slow" + fi + + case "$TERM" in + screen*) # screen, screen.rxvt + if [ "$TERM" = screen.rxvt ]; then + MC_SAVE_TERM="$TERM" + TERM=rxvt + fi + MC_XTERM="-x" + ;; + esac + + #TMPDIR="$HOME"/tmp + #export TMPDIR + + MC_FOUND=NO + + for wrapper in \ + /usr/local/share/mc/bin/mc-wrapper.sh \ + /usr/local/libexec/mc/mc-wrapper.sh \ + /usr/share/mc/bin/mc-wrapper.sh; do + if [ -r $wrapper ]; then + . $wrapper $MC_SLOW $MC_XTERM "$@" + rc=$? + MC_FOUND=YES + break + fi + done + + if [ $MC_FOUND = NO ]; then + for mc in /usr/local/bin/mc /usr/bin/mc; do + if [ -x $mc ]; then + MC_TMP_DIR="${TMPDIR-/tmp}/mc-$USER" + if [ ! -d MC_TMP_DIR="${TMPDIR-/tmp}/mc-$USER" ]; then + MC_TMP_DIR="${TMPDIR-/tmp}" + fi + MC_PWD_FILE="$MC_TMP_DIR/mc.pwd.$$" + mc_type="`mc_type.py $mc`" + if [ "$mc_type" = old ]; then + $mc -P $MC_SLOW $MC_XTERM "$@" > "$MC_PWD_FILE" + rc=$? + MC_FOUND=YES + elif [ "$mc_type" = new ]; then + $mc -P "$MC_PWD_FILE" $MC_SLOW $MC_XTERM "$@" + rc=$? + MC_FOUND=YES + else + continue + fi + cd "`cat \"$MC_PWD_FILE\"`" && /bin/rm "$MC_PWD_FILE" + break + fi + done + fi + + if [ $MC_FOUND = NO ]; then + echo "Cannot find mc-wrapper.sh or mc" >&2 + rc=1 + fi + + [ -n "$MC_SAVE_TERM" ] && TERM="$MC_SAVE_TERM" + unset MC_FOUND MC_PWD_FILE MC_SAVE_TERM MC_SLOW MC_TMP_DIR MC_XTERM + return $rc +} diff --git a/.sqliterc b/.sqliterc new file mode 100644 index 0000000..3e48178 --- /dev/null +++ b/.sqliterc @@ -0,0 +1,3 @@ +.headers on +.mode columns +PRAGMA cache_size=500000; diff --git a/.tmux.conf b/.tmux.conf new file mode 100644 index 0000000..b301c69 --- /dev/null +++ b/.tmux.conf @@ -0,0 +1,45 @@ +# Start window numbers at 1 to match keyboard order with tmux window order +set-option -g base-index 1 +set-option -g pane-base-index 1 +# Renumber windows sequentially after closing any of them +#set-option -g renumber-windows on + +# Attempt to set the client terminal title +set-option -g set-titles on +# Terminal emulator window title +set -g set-titles-string 'tmux #S:#I.#P [ #W ]' + +# Pass [Ctrl]+[PgUp/PgDn] +set-window-option -g xterm-keys on + +# Mouse +set-window-option -g mode-mouse on +set-option -g mouse-select-pane on +set-option -g mouse-resize-pane on +# Mouse can be used to select windows (by clicking in the status bar) +set-option -g mouse-select-window on + +# Rather than constraining window size to the maximum size of any client +# connected to the *session*, constrain window size to the maximum size of any +# client connected to *that window*. Much more reasonable. +set-window-option -g aggressive-resize on + +# Activity monitoring +set-option -g visual-activity on +set-window-option -g monitor-activity on + +# Soften status bar color from harsh green to black on cyan +set-option -g status-fg black +set-option -g status-bg cyan + +# Clock color +set-window-option -g clock-mode-colour black + +# Increase scrollback lines +set-option -g history-limit 1000 + +# C-b C-a for last-window +bind-key C-a last-window + +# Reload config without restart +bind R source-file ~/.tmux.conf diff --git a/.vim/after/ftplugin/mail.vim b/.vim/after/ftplugin/mail.vim new file mode 100644 index 0000000..20cc2ce --- /dev/null +++ b/.vim/after/ftplugin/mail.vim @@ -0,0 +1,2 @@ +" Please not 'q'-flag to allow formatting over '-' at column 1. +setlocal formatoptions=2t diff --git a/.vim/after/indent/mail.vim b/.vim/after/indent/mail.vim new file mode 100644 index 0000000..08b8813 --- /dev/null +++ b/.vim/after/indent/mail.vim @@ -0,0 +1 @@ +setlocal noautoindent diff --git a/.vim/after/plugin/isk.vim b/.vim/after/plugin/isk.vim new file mode 100644 index 0000000..de39405 --- /dev/null +++ b/.vim/after/plugin/isk.vim @@ -0,0 +1 @@ +autocmd BufReadPost * set iskeyword-=. diff --git a/.vim/compiler/python.vim b/.vim/compiler/python.vim new file mode 100644 index 0000000..7dd0503 --- /dev/null +++ b/.vim/compiler/python.vim @@ -0,0 +1,12 @@ +if exists("current_compiler") + finish +endif +let current_compiler = "python" + +if exists(":CompilerSet") != 2 " older Vim always used :setlocal + command -nargs=* CompilerSet setlocal +endif + +CompilerSet makeprg=compyle4vim.py\ % + \ errorformat=%E\ \ File\ \"%f\"\\,\ line\ %l\\,\ column\ %c,%C%m + diff --git a/.vim/filetype.vim b/.vim/filetype.vim new file mode 100644 index 0000000..971c75e --- /dev/null +++ b/.vim/filetype.vim @@ -0,0 +1,37 @@ +if exists("did_load_filetypes") + finish +endif + +augroup filetypedetect + " Text files + autocmd BufNewFile,BufReadPost *.txt,*README* setlocal filetype=text + autocmd BufReadPost ~/tmp/*.txt setlocal textwidth=0 " Files from ViewSourceWith + + " Cheetah templates + autocmd BufNewFile,BufReadPost *.tmpl setlocal filetype=htmlcheetah + + " Pascal files with case-insensitive extensions + autocmd BufReadPost *.PAS setlocal filetype=pascal + + " Play list + autocmd BufReadPost *.m3u,*.M3U setlocal filetype=playlist + + " Python files sometimes are recognized as conf + autocmd BufReadPost *.py setlocal filetype=python + " Python Templates (Quixote) are Python files + autocmd BufNewFile,BufReadPost *.ptl setlocal filetype=python + " Python Embedded are mason-like python templates + autocmd BufNewFile,BufReadPost *.pyem setlocal filetype=python filetype=mason + + " ssh files + autocmd BufReadPost known_hosts setlocal filetype=ssh + autocmd BufReadPost authorized_keys setlocal filetype=ssh + + " Set mapping for CVS/Subversion/Mercurial commit files + autocmd BufReadPost /tmp/cvs* setlocal filetype=cvscommit + autocmd BufReadPost svn-commit.tmp*,svn-commit.*.tmp* setlocal filetype=svncommit + autocmd BufReadPost /tmp/hg-editor-*.txt setlocal filetype=hgcommit + + " Medap-RM Method files + autocmd BufNewFile,BufReadPost *.rsc setlocal filetype=conf filetype=medaprm-method +augroup END diff --git a/.vim/ftplugin/cvscommit.vim b/.vim/ftplugin/cvscommit.vim new file mode 100644 index 0000000..99dca89 --- /dev/null +++ b/.vim/ftplugin/cvscommit.vim @@ -0,0 +1 @@ +runtime! ftplugin/vcscommit.vim diff --git a/.vim/ftplugin/gitcommit.vim b/.vim/ftplugin/gitcommit.vim new file mode 100644 index 0000000..094c29c --- /dev/null +++ b/.vim/ftplugin/gitcommit.vim @@ -0,0 +1,2 @@ +runtime! ftplugin/vcscommit.vim +setlocal fileencoding=utf-8 diff --git a/.vim/ftplugin/gitconfig.vim b/.vim/ftplugin/gitconfig.vim new file mode 100644 index 0000000..4e04506 --- /dev/null +++ b/.vim/ftplugin/gitconfig.vim @@ -0,0 +1 @@ +setlocal noexpandtab softtabstop=8 shiftwidth=8 diff --git a/.vim/ftplugin/hgcommit.vim b/.vim/ftplugin/hgcommit.vim new file mode 100644 index 0000000..094c29c --- /dev/null +++ b/.vim/ftplugin/hgcommit.vim @@ -0,0 +1,2 @@ +runtime! ftplugin/vcscommit.vim +setlocal fileencoding=utf-8 diff --git a/.vim/ftplugin/html.vim b/.vim/ftplugin/html.vim new file mode 100644 index 0000000..3950834 --- /dev/null +++ b/.vim/ftplugin/html.vim @@ -0,0 +1,24 @@ +if exists("b:did_ftplugin") + finish +endif + +if version >= 702 && has("iconv") && !exists('b:encoding_set') + " Try to recognize the file encoding and convert the file + let encoding = system("get_html_encoding.py " . shellescape(expand("%"))) + if !v:shell_error + if strlen(encoding) != 0 + call SetupEncoding(encoding) + endif + endif +endif + +setlocal matchpairs+=<:> " Add brokets to the list of pairs that match for the '%' command +set shiftwidth=2 softtabstop=2 + +if expand("%:t") == "bookmarks.html" + setlocal textwidth=0 + call SetNoWrap() + nmap \h G6k6dd1G0 +else + setlocal textwidth=78 +endif diff --git a/.vim/ftplugin/htmlcheetah.vim b/.vim/ftplugin/htmlcheetah.vim new file mode 100644 index 0000000..3b802f6 --- /dev/null +++ b/.vim/ftplugin/htmlcheetah.vim @@ -0,0 +1,15 @@ +if exists("b:did_ftplugin") + finish +endif + +if has("iconv") && !exists('b:encoding_set') + " Try to recognize the file encoding and convert the file + if search('^#\(encoding\|unicode\) ') > 0 + let line = getline(".") + let encoding = matchlist(line, '#\(encoding\|unicode\) \([^ ]\+\)$')[2] + call SetupEncoding(encoding) + endif +endif + +setlocal autoindent shiftwidth=2 softtabstop=2 textwidth=78 +setlocal matchpairs+=<:> " Add brokets to the list of pairs that match for the '%' command diff --git a/.vim/ftplugin/iss.vim b/.vim/ftplugin/iss.vim new file mode 100644 index 0000000..adc21a2 --- /dev/null +++ b/.vim/ftplugin/iss.vim @@ -0,0 +1,3 @@ +if has("iconv") && !exists('b:encoding_set') + call SetupEncoding("cp1251") +endif diff --git a/.vim/ftplugin/mail.vim b/.vim/ftplugin/mail.vim new file mode 100644 index 0000000..79ceb6d --- /dev/null +++ b/.vim/ftplugin/mail.vim @@ -0,0 +1,23 @@ +if exists("b:did_ftplugin") + finish +endif + +if has("iconv") && !exists('b:encoding_set') + " Try to recognize the file encoding and convert the file + if search('^Content-Type: text/\(plain\|html\);\n\?\( \|\t\)\+charset=', 'bew') > 0 + let line = getline(".") + let encoding = matchlist(line, 'charset="\?\(\(\w\|-\)\+\)')[1] + call SetupEncoding(encoding) + endif +endif + +setlocal textwidth=72 + +" SpamCop reports - goto the 9th line and start a browser +nmap z 9G3,b + +" Remove my signature from a forwarded message +nmap \f 2GddG4k5ddkdd + +" Remove boilerplate from a forwarded message from Trac +nmap \t 1G21ddG15k11dd:%s/^+//:%s/^ \*/--/1G diff --git a/.vim/ftplugin/medaprm-method.vim b/.vim/ftplugin/medaprm-method.vim new file mode 100644 index 0000000..455a750 --- /dev/null +++ b/.vim/ftplugin/medaprm-method.vim @@ -0,0 +1,12 @@ +if exists("b:did_ftplugin") + finish +endif + +if has("iconv") && !exists('b:encoding_set') + " Try to recognize the file encoding and convert the file + if search("^encoding ") > 0 + let line = getline(".") + let encoding = matchlist(line, 'encoding *[:=] *\([^ ]\+\)$')[1] + call SetupEncoding(encoding) + endif +endif diff --git a/.vim/ftplugin/pep.vim b/.vim/ftplugin/pep.vim new file mode 100644 index 0000000..5c8a1b8 --- /dev/null +++ b/.vim/ftplugin/pep.vim @@ -0,0 +1,4 @@ +" Python Enhancement Proposal +setlocal autoindent fileencoding=utf-8 formatoptions=1t joinspaces textwidth=70 +setlocal expandtab shiftwidth=4 softtabstop=4 +inoremap . . diff --git a/.vim/ftplugin/playlist.vim b/.vim/ftplugin/playlist.vim new file mode 100644 index 0000000..5848aa0 --- /dev/null +++ b/.vim/ftplugin/playlist.vim @@ -0,0 +1 @@ +map \r :%sort!Gdd1GP diff --git a/.vim/ftplugin/po.vim b/.vim/ftplugin/po.vim new file mode 100644 index 0000000..2c798d9 --- /dev/null +++ b/.vim/ftplugin/po.vim @@ -0,0 +1,12 @@ +if exists("b:did_ftplugin") + finish +endif + +if has("iconv") && !exists('b:encoding_set') + " Try to recognize the file encoding and convert the file + if search("^\"Content-Type: text/plain; charset=") > 0 + let line = getline(".") + let encoding = matchlist(line, 'charset=\(\(\w\|-\)\+\)')[1] + call SetupEncoding(encoding) + endif +endif diff --git a/.vim/ftplugin/python.vim b/.vim/ftplugin/python.vim new file mode 100644 index 0000000..44ec35e --- /dev/null +++ b/.vim/ftplugin/python.vim @@ -0,0 +1,46 @@ +if exists("b:did_ftplugin") + finish +endif + +" Do not set b:did_ftplugin - it prevents standard plugins from running +" let b:did_ftplugin = 1 " it will be set in the standard plugin + +if has("iconv") && !exists('b:encoding_set') + " Try to recognize the file encoding and convert the file + let line = getline(1) + if line !~ '^ *#.*coding[=:]\s*\([-0-9A-Za-z_.]\+\)' + let line = getline(2) + endif + if line =~ '^ *#.*coding[=:]\s*\([-0-9A-Za-z_.]\+\)' + let encoding = matchlist(line, 'coding[=:]\s*\([-0-9A-Za-z_.]\+\)')[1] + call SetupEncoding(encoding) + endif +endif + +setlocal fo-=t fo+=croql +setlocal keywordprg=pydoc +setlocal shiftwidth=4 softtabstop=4 +compiler python + +if has("unix") + execute "autocmd BufWritePost " . expand("%") . " call SavePython()" +endif + +" Compile and remove *.cgi[co] files after compilation; do not remove *.py[co] files; +" if it is a shebang script change file mode to make it executable. +function! SavePython() + let ext = expand("%:e") + if ext == "pyem" + return + elif ext == "ptl" + !compyle-ptl % + else + !compyle % + if ext != "py" + !rm -f %[co] + endif + if getline(1) =~ "^#!" + !chmod +x % + endif + endif +endfunction diff --git a/.vim/ftplugin/ssh.vim b/.vim/ftplugin/ssh.vim new file mode 100644 index 0000000..fdc13ce --- /dev/null +++ b/.vim/ftplugin/ssh.vim @@ -0,0 +1,2 @@ +setlocal textwidth=0 +call SetNoWrap() diff --git a/.vim/ftplugin/svncommit.vim b/.vim/ftplugin/svncommit.vim new file mode 100644 index 0000000..99dca89 --- /dev/null +++ b/.vim/ftplugin/svncommit.vim @@ -0,0 +1 @@ +runtime! ftplugin/vcscommit.vim diff --git a/.vim/ftplugin/text.vim b/.vim/ftplugin/text.vim new file mode 100644 index 0000000..059a304 --- /dev/null +++ b/.vim/ftplugin/text.vim @@ -0,0 +1,6 @@ +if &tw == 0 + setlocal tw=72 +endif + +" Set 'formatoptions' to break text lines and keep the comment leader ">". +setlocal fo+=tcql diff --git a/.vim/ftplugin/vcscommit.vim b/.vim/ftplugin/vcscommit.vim new file mode 100644 index 0000000..2ce1476 --- /dev/null +++ b/.vim/ftplugin/vcscommit.vim @@ -0,0 +1,4 @@ +" Go home! +call cursor(1, 1) +let b:position_resored = 1 +nmap \c 1G0p8dwkdd diff --git a/.vim/ftplugin/xhtml.vim b/.vim/ftplugin/xhtml.vim new file mode 120000 index 0000000..9dfabb8 --- /dev/null +++ b/.vim/ftplugin/xhtml.vim @@ -0,0 +1 @@ +html.vim \ No newline at end of file diff --git a/.vim/ftplugin/xml.vim b/.vim/ftplugin/xml.vim new file mode 100644 index 0000000..02d8ac6 --- /dev/null +++ b/.vim/ftplugin/xml.vim @@ -0,0 +1,18 @@ +if exists("b:did_ftplugin") + finish +endif + +if version >= 702 && has("iconv") && !exists('b:encoding_set') + " Try to recognize the file encoding and convert the file + let encoding = system("get_xml_encoding.py " . shellescape(expand("%"))) + if !v:shell_error + if strlen(encoding) == 0 + " By default XML files are in UTF-8 + let encoding = "UTF-8" + endif + endif + call SetupEncoding(encoding) +endif + +setlocal matchpairs+=<:> " Add brokets to the list of pairs that match for the '%' command +set shiftwidth=2 softtabstop=2 diff --git a/.vim/misc/ispell.vim b/.vim/misc/ispell.vim new file mode 100644 index 0000000..b0c3eb4 --- /dev/null +++ b/.vim/misc/ispell.vim @@ -0,0 +1,219 @@ +" Define `Ispell' language and personal dictionary, used in several places below +let IspellLang = 'russian' +let PersonalDict = '~/.ispell_' . IspellLang + +" Try to avoid misspelling words in the first place -- have the insert mode +" +N/+P keys perform completion on partially-typed words by +" checking the Linux word list and the personal `Ispell' dictionary; sort out +" case sensibly (so that words at starts of sentences can still be completed +" with words that are in the dictionary all in lower case): +execute 'set dictionary+=' . '~/.ispell_english' +execute 'set dictionary+=' . PersonalDict +set dictionary+=/usr/dict/words + +" Spell checking operations are defined next. They are all set to normal mode +" keystrokes beginning \s but function keys are also mapped to the most common +" ones. The functions referred to are defined at the end of this .vimrc. + +" \se ("spelling english") saves the current file then spell checks it +" interactively through `Ispell' and reloads the corrected version: +nmap \se :call RecodeAndSpellcheck("") + +" \sr ("spelling russian") converts the file to the locale encoding, +" saves it, then spell checks it interactively through `Ispell', +" reloads the corrected version and converts it back to the original encoding: +nmap \sr :call RecodeAndSpellcheck(IspellLang) + +" \sl ("spelling list") lists all spelling mistakes in the current buffer, +" but excludes any in news/mail headers or in ("> ") quoted text: +execute 'nmap \sl :up! grep -v "^>" grep -E -v "^[[:alpha:]-]+: " ' . +\ ' ispell -l -d ' . IspellLang . ' sort uniq' + +" \sh ("spelling highlight") highlights (in red) all misspelt words in the +" current buffer, and also excluding the possessive forms of any valid words +" (e.g. "Lizzy's" won't be highlighted if "Lizzy" is in the dictionary); with +" mail and news messages it ignores headers and quoted text; for HTML it +" ignores tags and only checks words that will appear, and turns off other +" syntax highlighting to make the errors more apparent [function at end of +" file]: +nmap \sh :call HighlightSpellingErrors() + +" \sc ("spelling clear") clears all highlighted misspellings; for HTML it +" restores regular syntax highlighting: +nmap \sc :if &ft == 'html' sy on +\ else :sy clear SpellError endif + +" \sa ("spelling add") adds the word at the cursor position to the personal +" dictionary (but for possessives adds the base word, so that when the cursor +" is on "Ceri's" only "Ceri" gets added to the dictionary), and stops +" highlighting that word as an error (if appropriate) [function at end of +" file]: +nmap \sa :call AddWordToDictionary() + + +" Functions referred to above + +function! HighlightSpellingErrors() +" highlights spelling errors in the current window; used for the \sh operation +" defined above; +" requires the ispell, sort, and uniq commands to be in the path; +" requires the global variable IspellLang to be defined above, and to contain +" the preferred `Ispell' language; +" for mail/news messages, requires the grep command to be in the path; +" for HTML documents, saves the file to disk and requires the lynx command to +" be in the path +" +" by Smylers http://www.stripey.com/vim/ +" (inspired by Krishna Gadepalli and Neil Schemenauer's vimspell.sh) +" +" 2000 Jun 1: for `Vim' 5.6 + +" for HTML files, remove all current syntax highlighting (so that +" misspellings show up clearly), and note it's HTML for future reference: + if &filetype == 'html' + let HTML = 1 + syntax clear + + " for everything else, simply remove any previously-identified spelling + " errors (and corrections): + else + let HTML = 0 + if hlexists('SpellError') + syntax clear SpellError + endif + if hlexists('Normal') + syntax clear Normal + endif + endif + + " form a command that has the text to be checked piping through standard + " output; for HTML files this involves saving the current file and processing + " it with `Lynx'; for everything else, use all the buffer except quoted text + " and mail/news headers: + update + if HTML + let PipeCmd = '! lynx --raw --dump --nolist % |' + else + let PipeCmd = '!' + if &filetype == 'mail' + let PipeCmd = PipeCmd . ' grep -v "^> " | grep -E -v "^[[:alpha:]-]+:" |' + endif + endif + + " execute that command, then generate a unique list of misspelt words and + " store it in a temporary file: + let ErrorsFile = tempname() + execute PipeCmd . ' ispell -l -d '. g:IspellLang . + \ ' | sort | uniq > ' . ErrorsFile + + " open that list of words in another window: + execute 'split ' . ErrorsFile + + " for every word in that list ending with "'s", check if the root form + " without the "'s" is in the dictionary, and if so remove the word from the + " list: + global /'s$/ execute 'read ! echo ' . expand('') . + \ ' | ispell -l -d ' . g:IspellLang | delete + " (If the root form is in the dictionary, ispell -l will have no output so + " nothing will be read in, the cursor will remain in the same place and the + " :delete will delete the word from the list. If the root form is not in the + " dictionary, then ispell -l will output it and it will be read on to a new + " line; the delete command will then remove that misspelt root form, leaving + " the original possessive form in the list!) + + " only do anything if there are some misspellings: + if strlen(getline('.')) > 0 + + " if (previously noted as) HTML, replace each non-alphanum char with a + " regexp that matches either that char or a &...; entity: + if HTML + % substitute /\W/\\(&\\|\&\\(#\\d\\{2,4}\\|\w\\{2,8}\\);\\)/e + endif + + " turn each mistake into a `Vim' command to place it in the SpellError + " syntax highlighting group: + % substitute /^/syntax match SpellError !\\!/ + endif + + " save and close that file (so switch back to the one being checked): + exit + + " make syntax highlighting case-sensitive, then execute all the match + " commands that have just been set up in that temporary file, delete it, and + " highlight all those words in red: + syntax case match + execute 'source ' . ErrorsFile + call delete(ErrorsFile) + highlight SpellError term=reverse ctermfg=DarkRed guifg=Red + + " with HTML, don't mark any errors in e-mail addresses or URLs, and ignore + " anything marked in a fix-width font (as being computer code): + if HTML + syntax case ignore + syntax match Normal !\<[[:alnum:]._-]\+@[[:alnum:]._-]\+\.\a\+\>! + syntax match Normal + \ !\<\(ht\|f\)tp://[-[:alnum:].]\+\a\(/[-_.[:alnum:]/#&=,]*\)\=\>! + syntax region Normal start=!
! end=!
! + syntax region Normal start=!! end=!! + syntax region Normal start=!! end=!! + endif +endfunction " HighlightSpellingErrors() + + +function! AddWordToDictionary() +" adds the word under the cursor to the personal dictionary; used for the \sa +" operation defined above; +" requires the global variable PersonalDict to be defined above, and to contain +" the `Ispell' personal dictionary; +" +" by Smylers http://www.stripey.com/vim/ +" +" 2000 Apr 30: for `Vim' 5.6 + +" get the word under the cursor, including the apostrophe as a word character +" to allow for words like "won't", but then ignoring any apostrophes at the +" start or end of the word: + setlocal iskeyword+=' + let Word = substitute(expand(''), "^'\\+", '', '') + let Word = substitute(Word, "'\\+$", '', '') + setlocal iskeyword-=' + + " override any SpellError highlighting that might exist for this word, + " `highlighting' it as normal text: + execute 'syntax match Normal #\<' . Word . '\>#' + + " remove any final "'s" so that possessive forms don't end up in the + " dictionary, then add the word to the dictionary: + let Word = substitute(Word, "'s$", '', '') + execute '!echo "' . Word . '" >> ' . g:PersonalDict +endfunction " AddWordToDictionary() + + +function! RecodeAndSpellcheck(language) + " If the console encoding differs from the file encoding... + if strlen(&encoding) && strlen(&fileencoding) && &encoding != &fileencoding + " ...save the file encoding... + let FileEncoding = &fileencoding + " ...and recode to the console encoding + execute 'setlocal fileencoding=' . &encoding + else + let FileEncoding = '' + endif + + update + + if strlen(a:language) + execute '!ispell -x -d ' . a:language . ' ' . shellescape(expand("%")) + else + execute '!ispell -x ' . shellescape(expand("%")) + endif + + edit % + + if strlen(FileEncoding) + " Now recode it back to the saved file encoding + execute 'setlocal fileencoding=' . FileEncoding + update + endif +endfunction " RecodeAndSpellcheck() diff --git a/.vim/syntax/html.vim b/.vim/syntax/html.vim new file mode 100644 index 0000000..80df508 --- /dev/null +++ b/.vim/syntax/html.vim @@ -0,0 +1,4 @@ +if &background == 'light' + highlight link javaScript Identifier + highlight Title cterm=NONE ctermfg=black gui=NONE guifg=black +endif diff --git a/.vim/syntax/mail.vim b/.vim/syntax/mail.vim new file mode 100644 index 0000000..024fad9 --- /dev/null +++ b/.vim/syntax/mail.vim @@ -0,0 +1,21 @@ +syntax case ignore +syntax match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|to|cc|delivered-to|reply-to|mail-followup-to|x-attribution):.*$" +syntax match mailSmile ' [;:]-*[dp(){}<>|\\/]\| [(){}<>\\/]-*[;:]' " :-) +syntax match mailURL contains=@NoSpell `\v<(((https?|ftp|gopher|telnet)://|(mailto|file|news|about|ed2k|irc|sip|magnet):)[^' \t<>"]+|(www|web|w3)[a-z0-9_-]*\.[a-z0-9._-]+\.[^' \t<>"]+)[a-z0-9/]` + +if &background == 'light' + highlight Constant cterm=bold ctermfg=blue gui=bold guifg=blue + highlight Statement cterm=NONE ctermfg=black gui=NONE guifg=darkgrey + highlight link mailHeaderEmail Normal + highlight link mailHeaderKey SpecialKey + highlight mailSubject cterm=bold ctermfg=darkgrey gui=bold + highlight mailSmile cterm=bold ctermfg=darkmagenta gui=bold guifg=darkmagenta + highlight mailQuoted1 cterm=NONE ctermfg=blue gui=NONE guifg=blue + highlight mailQuoted2 cterm=NONE ctermfg=darkmagenta gui=NONE guifg=darkmagenta + highlight mailQuoted3 cterm=NONE ctermfg=brown gui=NONE guifg=brown + highlight mailQuoted4 cterm=NONE ctermfg=green gui=NONE guifg=green + highlight mailQuoted5 cterm=NONE ctermfg=cyan gui=NONE guifg=cyan + highlight mailQuoted6 cterm=NONE ctermfg=white gui=NONE guifg=white +else + highlight mailSmile cterm=NONE ctermfg=yellow +endif diff --git a/.vim/syntax/python.vim b/.vim/syntax/python.vim new file mode 100644 index 0000000..a94c29c --- /dev/null +++ b/.vim/syntax/python.vim @@ -0,0 +1 @@ +let python_highlight_all=1 diff --git a/.vim/syntax/synload.vim b/.vim/syntax/synload.vim new file mode 100644 index 0000000..6ddce26 --- /dev/null +++ b/.vim/syntax/synload.vim @@ -0,0 +1,18 @@ +" Load standard colors +source $VIMRUNTIME/syntax/synload.vim + +" Override for all syntax files +if &background == 'light' + highlight Comment cterm=NONE ctermfg=darkgrey gui=NONE guifg=SlateGray + highlight Constant cterm=NONE ctermfg=blue gui=NONE guifg=blue + highlight Identifier cterm=NONE ctermfg=black gui=NONE guifg=black + highlight Statement cterm=bold ctermfg=darkgrey gui=bold guifg=black + highlight Type cterm=NONE ctermfg=black gui=NONE guifg=black + + if &diff + highlight DiffAdd ctermbg=green ctermfg=white + highlight DiffChange ctermbg=cyan ctermfg=black + highlight DiffText ctermbg=magenta ctermfg=white + highlight DiffDelete ctermbg=red ctermfg=black + endif +endif diff --git a/.vim/syntax/xml.vim b/.vim/syntax/xml.vim new file mode 100644 index 0000000..9083ff3 --- /dev/null +++ b/.vim/syntax/xml.vim @@ -0,0 +1,3 @@ +if &background == 'light' + highlight Identifier cterm=bold ctermfg=darkgrey gui=bold guifg=black +endif diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000..aed3f7f --- /dev/null +++ b/.vimrc @@ -0,0 +1,730 @@ +" User configuration file for Vi IMproved. +" +" vim 6.0+ required, 7.0+ recommended. + +" 1 important + +" Remove ALL autocommands in case the file is sourced for the second time +autocmd! + +language messages C " Print messages in English + +if exists("b:wrap") " Only do this on the second and subsequent :source's + let fenc = &fileencoding + let ftype = &filetype + let mod = &modified + set all& " Reset all options, except terminal options, to their default value. + execute 'set fileencoding=' . fenc + execute 'set filetype=' . ftype + if mod + set modified + else + set nomodified + endif + unlet fenc ftype mod +endif + +" No, it is not VI, it is VIM! It is important to set this first, because this +" command resets many other options. +set nocompatible + +" Set behavior to xterm, not mswin +behave xterm + +" 2 moving around, searching and patterns + +set ignorecase " Ignore case in search patterns +set smartcase " Match 'word' case-insensitive and 'Word' case-sensitive + +set nostartofline " Keep cursor's column +set whichwrap=b,s,h,l,<,>,[,],~ " Wrap to the previous/next line on all keys and ~ command + +" 4 displaying text + +set display=lastline,uhex " Show the last line instead of '@'; show non-printable chars as +set lazyredraw " Do not update screen while executing macros +set list " listchars only works with 'list' +set listchars=tab:>_,trail:_,extends:+ " Show tabs, trailing spaces, long lines +set wrap " Visually wrap long lines + +" With 'set wrap' wrap long lines at a character in 'breakat' +" Please note 'nolist' is required to use 'linebreak' +set linebreak showbreak=+\ " A plus and a space + +set sidescroll=1 " The minimal number of columns to scroll horizontally + +" 5 highlighting + +set nohlsearch " Stop the search highlighting + +" 6 multiple windows + +set hidden " Don't unload a buffer when no longer shown in a window; allow to switch between buffers/windows when the buffer is modified +set laststatus=2 " Always show status line + +set splitbelow " A new window is put below of the current one +set splitright " A new window is put right of the current one + +" 8 terminal + +set ttyfast " terminal connection is fast + +set title " Set title to the value of 'titlestring' or to 'filename - VIM' +set titleold= " string to restore the title to when exiting Vim + +" 9 using the mouse + +set mouse=ar " Use mouse in all modes, plus hit-return + +" 12 messages and info + +set ruler " Show cursor position below each window +set showcmd " Show (partial) command keys in the status line + +" Short message for [Modified]; +" overwrite message for writing a file with subsequent message; +" truncate long file messages +set shortmess=mot + +" 14 editing text + +set backspace=indent,eol,start +set complete+=k " Scan spell dictionaries for completion in addition to standard places +set infercase " adjust case of a keyword completion match +set nojoinspaces " Do not insert two spaces after a '.', '?' and '!' with a join command +set nrformats=hex " I seldom edit octal numbers, but very often dates like 2001-02-01 + +" Default value 'croql' is a compromise for both natural and programming +" languages, but as any compromise it works good for neither natural nor +" programming languages. This value is good for natural texts, +" let ftplugins to set values suitable for programming languages. +set formatoptions=2t " list of flags that tell how automatic formatting works + +" 15 tabs and indenting + +set expandtab " expand to spaces in Insert mode +set shiftwidth=3 " number of spaces used for each step of (auto)indent +set smarttab " a in an indent inserts 'shiftwidth' spaces +set softtabstop=3 " number of spaces to insert for a + +set noautoindent " Do not automatically set the indent of a new line + +" 18 mapping + +set timeout timeoutlen=3000 " allow timing out up to 3 seconds halfway into a mapping + +" 21 command line editing + +set history=1000 " how many command lines are remembered +set suffixes+=.pyc,.pyo " list of file name extensions that have a lower priority +set wildignore+=*.py[co] " Ignore these patterns when completing file names +set wildmenu " command-line completion shows a list of matches +set wildmode=longest,list:longest,full " Bash-vim completion behavior + +" 22 executing external commands + +if has("filterpipe") + set noshelltemp " Use pipes on Unix +endif + +" 25 multi-byte characters + +" Automatically detected character encodings +set fileencodings=ucs-bom,us-ascii,utf-8,koi8-r,cp1251,cp866,latin1 + +" 26 various + +" ! - when included, save and restore global variables that start +" with an uppercase letter, and don't contain a lowercase letter; +" h - disable the effect of 'hlsearch'; +" ' - number of files for which the marks are remembered; +" " and < - maximum number of lines saved for a register; +" s - maximum size of an item in Kbytes. +if version < 603 + set viminfo=!,h,'50,\"1000 +else + set viminfo=!,h,'50,<1000,s10 +endif + +" c - convert viminfo to the current encoding; +if has("iconv") + set viminfo^=c +endif + +" Removable media paths +if has("win32") + set viminfo+=ra:,rb: +endif + +" ---------- + +if has("gui_running") + set background=light + + if has("win32") + "set guifont=Courier_New:h18:cRUSSIAN + set guifont=Lucida_Console:h18:cRUSSIAN + else + set guifont=Monospace\ 16 + set toolbar=icons,text " how to show the toolbar + endif + + " set guicursor+=a:blinkon0 " Stop cursor blinking + + " Make shift-insert work like in Xterm + " map + " map! + + + " Set nice colors + " Background for normal text is light grey + " Cursor is green + " Text below the last line is darker grey + " Status line is bright white on blue + highlight Normal guibg=grey90 + highlight Cursor guibg=green guifg=NONE + highlight NonText guibg=grey80 + highlight Constant guibg=grey90 + highlight Special gui=NONE guibg=grey90 + highlight StatusLine gui=bold guifg=white guibg=blue + + " ---------- + " From http://slobin.pp.ru/vim/_vimrc.html + + " Arrows should go into wrapped lines, but not while popup menu is visible + imap pumvisible() ? "" : "gj" + imap pumvisible() ? "" : "gk" + + " The key should select from completion menu without adding a newline + imap pumvisible() ? "" : "" + " ---------- +else + + if (&term =~ "linux") || ($BACKGROUND == 'DARK') || ($BACKGROUND == 'dark') + \ || has("win32") + " Background of the terminal is black or dark grey + set background=dark + else + set background=light + endif + + if (&term =~ "linux") + set = + else + highlight MoreMsg cterm=bold ctermfg=NONE + highlight Question cterm=bold ctermfg=NONE + endif + + if (&term =~ "term") || (&term =~ "rxvt") || (&term =~ "vt100") || (&term =~ "screen") + set = + + " 'autoselect' to always put selected text on the clipboard; + " 'unnamed' to use the * register like unnamed register '*' + " for all yank, delete and put operations; + " This allows to use mouse for copy/paste in local xterm, + " but prevents to save the unnamed register between sessions. + " set clipboard=autoselect,unnamed,exclude:cons\|linux + + if has ("terminfo") + " set t_Co=256 + set t_Co=16 + else + set t_Co=8 + set t_Sf="\e[3%dm" + set t_Sb="\e[4%dm" + endif + endif + + if (&term =~ "screen") + set ttymouse=xterm " Enable mouse codes under GNU screen + if empty(&t_ts) + " Enable window title under screen/tmux + let &t_ts = "\e]2;" + let &t_fs = "\007" + endif + endif +endif + +highlight SpellBad term=underline cterm=NONE ctermfg=white ctermbg=red guifg=white guibg=red " gui=undercurl guisp=red +highlight StatusLine cterm=bold ctermfg=white ctermbg=blue gui=NONE guifg=white guibg=blue +highlight Visual cterm=NONE ctermfg=white ctermbg=blue gui=NONE guifg=white guibg=blue " Selection highlighting + +" Multiline comments often confuse vim syntax highlighting - these maps +" allow to resynchronize; the first is faster, the second is more thorough +nmap \sc :syntax sync clear +nmap \ss :syntax sync fromstart + + +" AUTOCOMMANDS + +" Enable filetype detection +filetype plugin indent on + +" Reread me after editing +autocmd BufWritePost ~/.vimrc source ~/.vimrc | syntax on + +if version >= 700 +" Save all files before running any quickfix command (grep, makeprg, etc.) +autocmd QuickFixCmdPre * wall +endif + +" Syntax highlighting +autocmd BufReadPost * syntax on + + +" Restore last known cursor position +function! RestorePosition() + if exists('b:position_resored') + return + endif + + if line("'\"") > 0 + call cursor(line("'\""), col("'\"")) + endif + let b:position_resored = 1 +endfunction + +" When editing a file, always jump to the last cursor position (if saved) +autocmd BufReadPost * call RestorePosition() + + +function! SetupEncoding(encoding) + if !has("iconv") || exists('b:encoding_set') + return + endif + + if strlen(a:encoding) > 0 + call RestorePosition() + let b:encoding_set = 1 + execute "edit ++enc=" . a:encoding + endif +endfunction + + +" http://lwn.net/Articles/226514/ + +augroup gpg +" Remove ALL autocommands for the current group. +autocmd! +autocmd BufReadPre,FileReadPre *.gpg set viminfo= +autocmd BufReadPre,FileReadPre *.gpg setlocal noswapfile +autocmd BufReadPost *.gpg :%!gpg -q -d +autocmd BufReadPost *.gpg | redraw +autocmd BufWritePre *.gpg :%!gpg --default-recipient-self -q -e -a +autocmd BufWritePost *.gpg u +autocmd VimLeave *.gpg :!clear +" For OpenSSL: +" BufReadPost: use "openssl bf -d -a" +" BufWritePre: use "openssl bf -salt -a" +augroup END + + +function! SetWrap() + setlocal wrap + map gk + imap gk + map gj + imap gj + let b:wrap = 1 +endfunction + +function! SetNoWrap() + setlocal nowrap + map k + map j + let b:wrap = 0 +endfunction + +command! SetWrap call SetWrap() +command! SetNoWrap call SetNoWrap() + +" b:wrap can be set by an ftplugin +autocmd BufReadPost * if !exists("b:wrap") | call SetWrap() | endif + + +" MAPPINGS + +" Do not unindent #-comment +inoremap # X# + +" map +" map +" map :shell + + +if version >= 700 +" WEB BROWSERS + +let s:URL_re="\\v(((https?|ftp|gopher|telnet)://|(mailto|file|news|about|ed2k|irc|sip|magnet):)[^' \t<>\"]+|(www|web|w3)[a-z0-9_-]*\\.[a-z0-9._-]+\\.[^' \t<>\"]+)[a-z0-9/]\\c" + +function! ExtractURL() + let line = getline('.') + let parts = split(line, s:URL_re . '\zs') + + if len(parts) == 0 + throw 'ExtractURLCannotFindURL' " No URL found + endif + + let length = 0 + let column = col('.') + + for p in parts + let save_length = length + let length += len(p) + if length >= column + break + endif + endfor + + let pos = match(p, s:URL_re) + if pos == -1 + throw 'ExtractURLCannotFindURL' " No URL found + endif + + if save_length + pos >= column " cursor left of the URL + throw 'ExtractURLCannotFindURL' + endif + + return strpart(p, pos) +endfunction + +function! EscapeURL(url) + let url = substitute(a:url, ' ', '%20', 'g') + return escape(url, '!#$%') +endfunction + +function! OpenURL(url, newwin) + execute "!webbrowser " . a:newwin . " '" . EscapeURL(a:url) . "'" +endfunction + +function! ExtractOpenURL(newwin) + try + let url = ExtractURL() + catch /^ExtractURLCannotFindURL$/ + echoerr 'No URL found under cursor' + return + endtry + + call OpenURL(url, a:newwin) +endfunction + +function! EncodeOpenURL(url, newwin) + execute "!webbrowser-encode-url " . a:newwin . " '" . EscapeURL(a:url) . "'" +endfunction + + +" Send current link to a browser +nmap \b :call ExtractOpenURL('') +nmap \w :call ExtractOpenURL('-n') +nmap \t :call ExtractOpenURL('-t') +" Send visual block to a browser +vmap \b ""y:call OpenURL('"', '') +vmap \w ""y:call OpenURL('"', '-n') +vmap \t ""y:call OpenURL('"', '-t') +" Encode and send visual block to a browser +vmap \B ""y:call EncodeOpenURL('"', '') +vmap \W ""y:call EncodeOpenURL('"', '-n') +vmap \T ""y:call EncodeOpenURL('"', '-t') +" Send current file's name to a browser +nmap \B :call EncodeOpenURL('file:' . expand("%:p"), '') +nmap \W :call EncodeOpenURL('file:' . expand("%:p"), '-n') +nmap \T :call EncodeOpenURL('file:' . expand("%:p"), '-t') + +endif " version >= 700 + + +" SPELLING + +if has("spell") " Works in 7.0+ + " Use builtin spellchecker + nmap \sv :syntax off setlocal spell + " Clear + nmap \sn :syntax on setlocal nospell +endif + + +" Russian letters mapped in normal mode +"if has("keymap") +" set keymap=russian-jcuken +"endif + +if has("langmap") + if v:version >= 702 + " langmap in utf-8 mode requires at least Vim 7.2.109 + scriptencoding utf-8 + set langmap=ё`Ё~йqцwуeкrеtнyгuшiщoзpх[ъ]фaыsвdаfпgрhоjлkдlж\\;э' + \яzчxсcмvиbтnьmб\\,ю.ЙQЦWУEКRЕTНYГUШIЩOЗPÐ¥{Ъ} + \ФAЫSВDАFПGРHОJЛKДLЖ:Э\\"ЯZЧXСCМVИBТNЬMБ<Ю> + + elseif &encoding != 'utf-8' + scriptencoding koi8-r + set langmap=£`³~ÊqÃwÕeËrÅtÎyÇuÛiÝoÚpÈ[ß]ÆaÙs×dÁfÐgÒhÏjÌkÄlÖ\\;Ü' + \ÑzÞxÓcÍvÉbÔnØmÂ\\,À.êQãWõEëRåTîYçUûIýOúPè{ÿ} + \æAùS÷DáFðGòHïJìKäLö:ü\\"ñZþXóCíVéBôNøMâ<à> + endif + + scriptencoding us-ascii +endif + + +if version >= 700 +function! W() + " let encodings=filter(split(&fileencodings, ','), 'v:val != "ucs-bom"') + let encodings = ['us-ascii'] + if $LC_CTYPE == 'ru_RU.UTF-8' + let encodings += ['utf-8'] + elseif $LC_CTYPE == 'ru_RU.KOI8-R' + let encodings += ['koi8-r', 'utf-8'] + elseif v:lc_time == 'Russian_Russia.1251' + let encodings += ['cp1251', 'utf-8'] + endif + + for e in encodings + try + execute 'set fileencoding=' . e + w + break + catch /E513: write error, conversion failed/ + continue + endtry + endfor + + if &modified + throw '"' . expand('%') . '" E513: write error, conversion failed; tried ' . join(encodings, ',') + elseif has("spell") + call SetupSpell() + endif +endfunction + +command! W call W() +endif + + +function! SlowTerm() + set laststatus=1 + set noruler + set shortmess=aoOtT + set noshowcmd + set scrolljump=5 " The minimal number of lines to scroll vertically when the cursor gets of the screen + set sidescroll=5 + set nottyfast + set notitle + set timeoutlen=5000 + set nowildmenu + set wildmode=list:longest + set viminfo=!,h,'10,<100,s5 + syntax off + highlight NonText cterm=NONE ctermfg=NONE +endfunction + +if exists("$SLOWTERM") + call SlowTerm() +endif + + +" ---------- +" From http://slobin.pp.ru/vim/_vimrc.html + +" These options will be kept between editing sessions +" let options = [] + +" Called automagically after .viminfo and plugins are loaded, sets +" miscellaneous options from persistent global variables +" function! VimEnter() + " for optname in g:options + " let varname = "g:OPT_" . toupper(optname) + " if exists(varname) + " execute "let &" . optname . " = " . varname + " endif + " endfor + + " if has("gui_running") && exists("g:WINPOSX") && exists("g:WINPOSY") + " execute "winpos" g:WINPOSX g:WINPOSY + " endif +" endfunction + +" Called automagically before .viminfo is saved, saves miscellaneous +" options into persistent global variables +" function! VimLeavePre() + " call filter(g:, 'v:key !~# "^OPT_"') + " for optname in g:options + " let varname = "g:OPT_" . toupper(optname) + " execute "let " . varname . " = &g:" . optname + " endfor + + " if has("gui_running") + " let g:WINPOSX = getwinposx() + " let g:WINPOSY = getwinposy() + " endif +" endfunction + +" autocmd VimEnter * call VimEnter() +" autocmd VimLeavePre * call VimLeavePre() + + +" Called automagically after every buffer read, enables fileencoding +" setting from modeline (see Tip #911) +function! AutoEncoding() + if exists("b:justloaded") + unlet b:justloaded + if &modified && &fileencoding != "" + call SetupEncoding(&fileencoding) + endif + endif +endfunction + +" Magic autocommands installed here +autocmd BufReadPost * let b:justloaded = 1 +autocmd BufWinEnter * call AutoEncoding() + + +let CONVERT=1 + +" Value of a character under cursor; better than standard '0x%02B (%b)' +function! HexDec() + let char = matchstr(getline("."), ".", col(".") - 1) + if g:CONVERT + let char = iconv(char, &encoding, &fileencoding) + let format = "0x%02X <%d>" + else + let format = "0x%02X (%d)" + endif + let char = char2nr(char) + return printf(format, char, char) +endfunction + + +if has("iconv") + " Helper function for :DecodeQP and :DecodeURL commands + function! DecodeHex(arg) + return iconv(printf("%c", str2nr(submatch(1), 16)), a:arg, &encoding) + endfunction + + " Custom completion for encoding names + function! EncList(ArgLead, CmdLine, CursorPos) + return filter(split(&fileencodings, ','), + \ "strpart(v:val, 0, strlen(a:ArgLead)) == a:ArgLead") + endfunction + + if version >= 700 + " Command for decoding qp-encoded text + command! -bar -nargs=? -range -complete=customlist,EncList DecodeQP + \ ,s/=\(\x\x\|\n\)/\=DecodeHex()/eg + + " Command for decoding url-encoded text + command! -bar -nargs=? -range -complete=customlist,EncList DecodeURL + \ ,s/%\(\x\x\)/\=DecodeHex()/eg + endif +endif + + +if has("spell") + function! SetupSpell() + if &fileencoding =~ 'ascii' + setlocal spelllang=en spellfile=~/.vim/spell/en.ascii.add + elseif &fileencoding == 'koi8-r' + setlocal spelllang=en,ru spellfile=~/.vim/spell/en.ascii.add,~/.vim/spell/ru.koi8-r.add + elseif &fileencoding == 'utf-8' + setlocal spelllang=en,ru spellfile=~/.vim/spell/en.ascii.add,~/.vim/spell/ru.utf-8.add + else + setlocal spelllang= spellfile= + endif + endfunction + autocmd BufReadPost * call SetupSpell() +endif + + +function! SyntaxName() + echomsg synIDattr(synID(line("."), col("."), 1), "name") +endfunction + + +if has("python") + +python << END_OF_PYTHON + +import sys, rlcompleter, unicodedata, vim +from itertools import * +vim_complete = rlcompleter.Completer().complete + +def vim_comp_list(): + """Implementation of CompList() function""" + arglead = vim.eval("a:ArgLead") + fence = int(vim.eval("match(a:ArgLead, '\(\w\|\.\)*$')")) + left, right = arglead[:fence], arglead[fence:] + try: + completions = (vim_complete(right, i) for i in count()) + candidates = list(takewhile(bool, completions)) + except NameError: + candidates = [] + suggestions = [left + x for x in candidates] + vim.command("return " + repr(suggestions)) + +def vim_calc(command): + """Implementation of :Calc command""" + global _ + try: + result = eval(command) + except SyntaxError: + exec command in globals() + else: + if result != None: + print result + _ = result + xx = ''.join('\\x%02x' % ord(x) for x in str(_)) + vim.command('let @" = "%s"' % xx) + +def vim_pydo(command): + """Implementation of :Pydo command""" + codeobj = compile(command, "command", "eval") + line1 = vim.current.range.start + line2 = vim.current.range.end + delta = 0 + for numz in range(line1, line2+1): + line = vim.current.buffer[numz-delta] + uline = unicode(line, vim.eval('&fileencoding')) + num = numz + 1 + words = line.split() + result = eval(codeobj, globals(), locals()) + if result is None or result is False: + del vim.current.buffer[numz-delta] + delta += 1 + continue + if isinstance(result, list) or isinstance(result, tuple): + result = " ".join(map(str, result)) + else: + result = str(result) + vim.current.buffer[numz-delta] = result + +def vim_unicode_name(): + try: + char = vim.eval("matchstr(getline('.'), '.', col('.') - 1)") + print map(unicodedata.name, char.decode(vim.eval("&encoding"))) + except (AttributeError, ValueError), target: + print "%s: %s" % (target.__class__.__name__, target.message) + +END_OF_PYTHON + +" Custom completion for python expressions +function! CompList(ArgLead, CmdLine, CursorPos) + python vim_comp_list() +endfunction + +" Python command line calculator +command! -nargs=+ -range -complete=customlist,CompList Calc + \ , python vim_calc() + +" Python text range filter +command! -nargs=+ -range -complete=customlist,CompList Pydo + \ , python vim_pydo() + +" Display unicode name for the character under cursor +command! Uname python vim_unicode_name() +command! UName call Uname() + +endif +" ---------- + + +" This has to go to the very end of ~/.vimrc to allow reading the .vimrc +set secure " safer working with script files in the current directory diff --git a/.xinitrc b/.xinitrc new file mode 100644 index 0000000..d3a76ea --- /dev/null +++ b/.xinitrc @@ -0,0 +1,81 @@ +#!/bin/sh + +PATH="$PATH":/usr/games + +# Set initial background +xsetroot -solid DarkCyan +xli -onroot -quiet -center -border darkcyan -zoom auto "`$HOME/lib/xsetbg/print-filename.py`" + +# load .Xdefaults/.Xresources +if [ -f "$HOME"/lib/X11/.Xdefaults ]; then + xrdb -merge -I"$HOME" "$HOME"/lib/X11/.Xdefaults +fi +if [ -f "$HOME"/lib/X11/.Xresources ]; then + xrdb -merge -I"$HOME" "$HOME"/lib/X11/.Xresources +fi + +# SUN OpenWindows +#if [ -f "$HOME"/lib/X11/.OWdefaults ]; then +# xrdb -merge -nocpp "$HOME"/lib/X11/.OWdefaults # Load Users OW resource database +#fi +#if [ -f "$OPENWINHOME"/lib/Xdefaults ]; then +# xrdb -merge "$OPENWINHOME"/lib/Xdefaults # Load Default X11 resource database +#fi + +#if [ -x "$HOME"/lib/X11/.openwin-init ]; then +# "$HOME"/lib/X11/.openwin-init # Custom OpenWindows tools +#elif [ -x "$OPENWINHOME"/lib/openwin-init ]; then +# "$OPENWINHOME"/lib/openwin-init # Default OpenWindows tools +#fi + +# EN/RU/Hebrew, switch on RightAlt, Compose: RightControl, Level3:RightMenu +setxkbmap -layout '' -variant '' -option '' +setxkbmap -layout 'us,ru' -variant ',common' -option 'grp:toggle,compose:rctrl,lv3:menu_switch' + +# adjust key bindings (if any) +#[ -f "$HOME"/lib/X11/.Xmodmap ] && xmodmap "$HOME"/lib/X11/.Xmodmap + +# X settings: shorter beep +#xset b 50 400 50 +# autorepeat +xset r on +# screen saver 5 minutes +xset s 300 300 +# DPMS on desktop: standby - 1 hour, suspend - 2 hours, off - 4 hours +#xset dpms 3600 7200 14400 +# DPMS on notebook: standby - 10 minutes, suspend - 15 minutes, off - 20 minutes +xset dpms 600 900 1200 + +xscreensaver & +xbindkeys +xxkb & + +synclient AccelFactor=0.1 MaxDoubleTapTime=80 MaxSpeed=1 RightEdge=5000 \ + TapButton1=1 TapButton2=2 TapButton3=3 HorizEdgeScroll=1 VertEdgeScroll=1 + +# Turn mouse off on keyboard activity; turn it back on after 1 second +#syndaemon -dt -i1 + +# start a small console shell +#xterm -C -geometry 80x8-0+0 -n Console -T Consle -ls +ut -fn 6x10 & + +#WIDTH=1024: 85x85+400+1 +#WIDTH=1600: 100x100+600+1 +#WIDTH=1920: 150x150+880+1 +xclock -geometry 100x100+600+1 -bg white -update 1 & + +# multi-biff +#xbuffy -fn '-*-helvetica-bold-r-*-*-*-100-*-*-*-*-koi8-r' -geometry +0+125 -boxfile mail/misc/.xbuffyrc & + +if [ -z "$WINDOW_MANAGER" ]; then + WINDOW_MANAGER=fvwm2 + export WINDOW_MANAGER +fi + +gpg-agent --daemon --write-env-file "$HOME"/.gnupg/agent-info \ + dbus-launch --exit-with-session \ + "$WINDOW_MANAGER" + +# Stop xscreensaver and xsetbg.py +xscreensaver-command -exit & +"$HOME/lib/xsetbg"/xsetbg-http-stop & diff --git a/.xserverrc b/.xserverrc new file mode 100644 index 0000000..ce84721 --- /dev/null +++ b/.xserverrc @@ -0,0 +1,2 @@ +#!/bin/sh +exec X -auth $HOME/.Xauthority -nolisten tcp -quiet diff --git a/bin/GET.py b/bin/GET.py new file mode 100755 index 0000000..f7fddbd --- /dev/null +++ b/bin/GET.py @@ -0,0 +1,71 @@ +#! /usr/bin/env python + +import sys +url = sys.argv[1] + +import urllib +urllib._urlopener = urllib.FancyURLopener() + +from cgi import parse_qsl +from m_lib.defenc import default_encoding + +protocol, request = urllib.splittype(url) +user, password, port = None, None, None +host, path = urllib.splithost(request) +if host: + user, host = urllib.splituser(host) + if user: + user, password = urllib.splitpasswd(user) + host, port = urllib.splitport(host) + if port: port = int(port) +path, tag = urllib.splittag(path) +path, query = urllib.splitquery(path) +path = urllib.unquote(path) +if tag: tag = urllib.unquote_plus(tag) + +if query: + qlist = [] + for name, value in parse_qsl(query): + qlist.append((name, value)) + +url = protocol + "://" +if user: + url += urllib.quote(user) + if password: + url += ':' + urllib.quote(password) + url += '@' +if host: + url += host.decode(default_encoding).encode('idna') + if port: + url += ':%d' % port +if path: + if protocol == "file": + url += urllib.quote(path) + else: + url += urllib.quote(path) +if query: + url += '?' + urllib.urlencode(qlist) +if tag: + url += '#' + urllib.quote_plus(tag) + +# I remember seeing some sites that return broken HTML or even HTTP response +# without "compatible" user agent; I don't know if such sites are still around, +# but this header doesn't cause any harm so I'd better continue to use it. +# UPDATE: I saw a number of sites that forbid "Mozilla compatible" +server_version = "Python-urllib/%s" % urllib.__version__ +urllib._urlopener.addheaders[0] = ('User-agent', server_version) +urllib._urlopener.addheaders.append(('Accept-Charset', "koi8-r;q=1.0")) + +import os +dest_file = os.path.basename(url) + +if not dest_file: + dest_file = "_index.html" + +filename, headers = urllib.urlretrieve(url, dest_file) + +if headers.has_key("last-modified"): + from m_lib.net.www.util import parse_time + last_modified = parse_time(headers["last-modified"]) + if last_modified: + os.utime(dest_file, (last_modified, last_modified)) diff --git a/bin/HEAD.py b/bin/HEAD.py new file mode 100755 index 0000000..c7b3764 --- /dev/null +++ b/bin/HEAD.py @@ -0,0 +1,61 @@ +#! /usr/bin/env python + +import sys +url = sys.argv[1] + +import socket +socket.setdefaulttimeout(30) + +from cgi import parse_qsl +import urllib +from m_lib.defenc import default_encoding + +protocol, request = urllib.splittype(url) +user, password, port = None, None, None +host, path = urllib.splithost(request) +if host: + user, host = urllib.splituser(host) + if user: + user, password = urllib.splitpasswd(user) + host, port = urllib.splitport(host) + if port: port = int(port) +path, tag = urllib.splittag(path) +path, query = urllib.splitquery(path) +path = urllib.unquote(path) +if tag: tag = urllib.unquote_plus(tag) + +if query: + qlist = [] + for name, value in parse_qsl(query): + qlist.append((name, value)) + +url = '' +host = host.decode(default_encoding).encode('idna') +if path: + url += urllib.quote(path) +if query: + url += '?' + urllib.urlencode(qlist) +if tag: + url += '#' + urllib.quote_plus(tag) + +import httplib +server = httplib.HTTP(host, port) +server.set_debuglevel(1) + +server.putrequest("HEAD", path) +if port: + server.putheader("Host", '%s:%d' % (host, port)) +else: + server.putheader("Host", host) + +# I remember seeing some sites that return broken HTML or even HTTP response +# without "compatible" user agent; I don't know if such sites are still around, +# but this header doesn't cause any harm so I'd better continue to use it. +# UPDATE: I saw a number of sites that forbid "Mozilla compatible" +client_version = "Python-urllib/%s" % urllib.__version__ +server.putheader('User-agent', client_version) + +server.putheader('Accept-Charset', "koi8-r;q=1.0") +server.endheaders() + +server.getreply() diff --git a/bin/PS b/bin/PS new file mode 100755 index 0000000..db86d2b --- /dev/null +++ b/bin/PS @@ -0,0 +1,10 @@ +#! /usr/bin/env python + +import sys, os + +args = ' '.join(sys.argv[1:]) +if "--sort=" not in args: + args += " --sort=user" + +pager = os.environ.get("PAGER", "more") +os.system("ps %s | %s" % (args, pager)) diff --git a/bin/abspath.py b/bin/abspath.py new file mode 100755 index 0000000..fe57b54 --- /dev/null +++ b/bin/abspath.py @@ -0,0 +1,4 @@ +#! /usr/bin/env python + +import sys, os +print os.path.abspath(sys.argv[1]) diff --git a/bin/browser-stack.py b/bin/browser-stack.py new file mode 100755 index 0000000..cec4f7d --- /dev/null +++ b/bin/browser-stack.py @@ -0,0 +1,31 @@ +#! /usr/bin/env python + +import sys, os +from browser_stack import get_stack, save_stack + +command = sys.argv[1] +if command.startswith('--'): + command = command[2:] + +stack = get_stack() + +if command in ('get', 'peek', 'print'): + if stack: print stack[0], + sys.exit() +elif command in ('list', 'list-all'): + if stack: print ''.join(stack), + sys.exit() + +browser = os.path.basename(sys.argv[2]) + '\n' +if browser in stack: + # With 'push' this prevents duplicates + stack.remove(browser) + +if command == 'push': + stack.insert(0, browser) +elif command == 'pop': + pass # The browser was already removed +else: + raise ValueError('Unknown command "%s"' % command) + +save_stack(stack) diff --git a/bin/browser_stack.py b/bin/browser_stack.py new file mode 100755 index 0000000..b81e6da --- /dev/null +++ b/bin/browser_stack.py @@ -0,0 +1,23 @@ +#! /usr/bin/env python + +import os, shutil +browser_stack = os.path.expanduser('~/.config/.browser-stack') + +def get_stack(): + try: + with open(browser_stack, 'rU') as stack_file: + return stack_file.readlines() + except IOError: # No such file + return [] + +def save_stack(stack): + os.umask(0066) # octal -rw------- + with open(browser_stack+'.tmp', 'w') as stack_file: + stack_file.writelines(stack) + shutil.copy(browser_stack+'.tmp', browser_stack) + os.remove(browser_stack+'.tmp') + +def set_current_browser(): + stack = get_stack() + if stack: + os.environ['BROWSER'] = stack[0].strip() diff --git a/bin/cgmem_nice b/bin/cgmem_nice new file mode 100755 index 0000000..b36a6c5 --- /dev/null +++ b/bin/cgmem_nice @@ -0,0 +1,23 @@ +#! /bin/sh + +usage() { + echo "Usage: $0 {100|200|300|500|1000|2000|4000} [command [args]]" + exit 1 +} + +case "$1" in + 100|200|300|500|1000|2000|4000) + ;; + + *) usage + ;; +esac + +size="$1" # in megabytes +shift + +CGROUPS=/sys/fs/cgroup +echo $$ > "$CGROUPS"/${size}M/tasks || exit 1 + +ulimit -d ${size}000 +exec nice -20 ionice -c3 "${@:-$SHELL}" diff --git a/bin/cleanup-filenames-recursive.sh b/bin/cleanup-filenames-recursive.sh new file mode 100755 index 0000000..1c1d69a --- /dev/null +++ b/bin/cleanup-filenames-recursive.sh @@ -0,0 +1,21 @@ +#! /bin/sh + +if ! echo "$LC_CTYPE" | grep -Fiq utf-8; then + echo "This script requires UTF-8 locale" 1>&2 + exit 1 +fi + +if [ "$1" ]; then + cd -- "$1" || exit 1 # or just do it in current directory +fi +start_dir="`pwd`" + +find . -depth -type d -print | +while read dir; do + cd -- "$dir" && + cleanup-filenames.sh * && + cd -- "$start_dir" || exit 1 +done + +[ "$1" ] && [ "$1" != . ] && exec cleanup-filenames.sh "$1" +exit 0 diff --git a/bin/cleanup-filenames.sh b/bin/cleanup-filenames.sh new file mode 100755 index 0000000..c977312 --- /dev/null +++ b/bin/cleanup-filenames.sh @@ -0,0 +1,26 @@ +#! /bin/sh + +if ! echo "$LC_CTYPE" | grep -Fiq utf-8; then + echo "This script requires UTF-8 locale" 1>&2 + exit 1 +fi + +for fname in "$@"; do + + newname=$(echo "$fname" | sed -e " +s/[‘“’”‘“’”″′«»\`\"]/'/g +s/ *: */ - /g +s/[–—]/-/g +s/…/.../g +s/ \+/ /g +s/\?//g +s/№/N/g +") + + if [ "$fname" \!= "$newname" ]; then + echo "$fname" + echo "$newname" + mv -- "$fname" "$newname" + echo + fi +done diff --git a/bin/cleanup-recode.sh b/bin/cleanup-recode.sh new file mode 100755 index 0000000..427cd6d --- /dev/null +++ b/bin/cleanup-recode.sh @@ -0,0 +1,22 @@ +#! /bin/sh + +if ! echo "$LC_CTYPE" | grep -Fiq utf-8; then + echo "This script requires UTF-8 locale" 1>&2 + exit 1 +fi + +from_enc=utf-8 +to_enc=koi8-r + +while getopts f:t: opt; do + case $opt in + f ) from_enc="$OPTARG" ;; + t ) to_enc="$OPTARG" ;; + esac +done +shift `expr $OPTIND - 1` + +for dir in "$@"; do + cleanup-filenames-recursive.sh "$dir" && + recode-filenames-recursive.py "$from_enc" "$to_enc" "$dir" || exit 1 +done diff --git a/bin/cmp.py b/bin/cmp.py new file mode 100755 index 0000000..37cc0ff --- /dev/null +++ b/bin/cmp.py @@ -0,0 +1,90 @@ +#! /usr/bin/env python +"""cmp.py: compare two files. Replace cmp because standard cmp cannot compare +large files. +""" + +import sys, os + +if sys.argv[1] in ("-h", "--help"): + print "Broytman cmp.py 1.0, Copyright (C) 2003 PhiloSoft Design" + print "Usage: cmp.py [-h|--help|-V|--version] [-i] file1 file2" + sys.exit() +elif sys.argv[1] in ("-V", "--version"): + print "Broytman cmp.py 1.0, Copyright (C) 2003 PhiloSoft Design" + sys.exit() +elif sys.argv[1] == "-i": + show_pbar = False + fname1 = sys.argv[2] + fname2 = sys.argv[3] +else: + show_pbar = sys.stderr.isatty() + fname1 = sys.argv[1] + fname2 = sys.argv[2] + +if show_pbar: + try: + from m_lib.pbar.tty_pbar import ttyProgressBar + except ImportError: + show_pbar = 0 + +if show_pbar: + try: + size = os.path.getsize(fname1) + except: + print filename, ": no such file" + sys.exit(1) + +if show_pbar: + pbar = ttyProgressBar(0, size) + +file1 = open(fname1, 'rb') +file2 = open(fname2, 'rb') + +M = 1024*1024 +diff = False +count = 0 + + +def report(): + if show_pbar: + global pbar + del pbar + sys.stderr.write("Files differ at %d megabayte block\n" % count) + global diff + diff = True + + +while True: + block1 = file1.read(M) + block2 = file2.read(M) + + if show_pbar: + pbar.display(file1.tell()) + + if block1 and block2: + if len(block1) <> len(block2): + report() + break + elif block1: + report() + break + elif block2: + report() + break + else: + break + + if block1 <> block2: + report() + break + + count += 1 + +if show_pbar and not diff: + del pbar + +file1.close() +file2.close() + +if diff: + sys.exit(1) diff --git a/bin/compyle b/bin/compyle new file mode 100755 index 0000000..260788a --- /dev/null +++ b/bin/compyle @@ -0,0 +1,17 @@ +#! /bin/sh + +if [ -z "$1" ]; then + echo "Usage: compyle [-1] file.py..." + exit 1 +fi + +TEMPLATE="from py_compile import compile; compile('" + +for file in "$@"; do + pgm=$TEMPLATE$file"')" + python"$PY_VER" -c "$pgm" || exit 1 + python"$PY_VER" -OOc "$pgm" || exit 1 +done + +#pgm="$HOME/lib/python/com.py" +#python"$PY_VER" $pgm "$@" && python"$PY_VER" -O $pgm "$@" diff --git a/bin/compyle-ptl b/bin/compyle-ptl new file mode 100755 index 0000000..97292bb --- /dev/null +++ b/bin/compyle-ptl @@ -0,0 +1,11 @@ +#! /usr/bin/env python + + +import sys +from quixote.ptl.ptl_compile import compile + +if len(sys.argv) <= 1: + sys.exit(1) + +for file in sys.argv[1:]: + compile(file, file[:-3]+'pyc') diff --git a/bin/compyle4vim.py b/bin/compyle4vim.py new file mode 100755 index 0000000..8b5c78b --- /dev/null +++ b/bin/compyle4vim.py @@ -0,0 +1,30 @@ +#! /usr/bin/env python + + +import sys, os + +filename = sys.argv[1] +ext = os.path.splitext(filename)[1] + +infile = open(filename, 'r') +codestring = infile.read() +infile.close() + +try: + if ext == ".ptl": # Python Template (Quixote) + from quixote.ptl_compile import Template + template = Template(codestring, filename) + template.compile() + else: + compile(codestring, filename, "exec") +except SyntaxError, detail: + pass +else: + sys.exit() + +msg, (_fname, lineno, offset, line) = detail +if offset is None: offset = 1 + +sys.stderr.write(""" File "%s", line %d, column %d +SyntaxError: %s +""" % (filename, lineno, offset, msg)) diff --git a/bin/compyleall b/bin/compyleall new file mode 100755 index 0000000..8ba7cb5 --- /dev/null +++ b/bin/compyleall @@ -0,0 +1,12 @@ +#! /bin/sh + +umask 022 + +if [ -z "$PY_VER" ]; then + PY_VER="`python -c 'import sys; print sys.version[:3]'`" +fi + +PY_PREFIX="`python$PY_VER -c 'import sys; print sys.prefix'`" + +python$PY_VER $PY_PREFIX/lib/python$PY_VER/compileall.py . +python$PY_VER -O $PY_PREFIX/lib/python$PY_VER/compileall.py . diff --git a/bin/compyleall-ptl b/bin/compyleall-ptl new file mode 100755 index 0000000..bf602a9 --- /dev/null +++ b/bin/compyleall-ptl @@ -0,0 +1,7 @@ +#! /usr/bin/env python + + +import sys +from quixote.ptl.ptl_compile import compile_dir + +compile_dir('.') diff --git a/bin/decode-URLs.py b/bin/decode-URLs.py new file mode 100755 index 0000000..70400ab --- /dev/null +++ b/bin/decode-URLs.py @@ -0,0 +1,12 @@ +#! /usr/bin/env python + +import sys, urllib + +while True: + url = sys.stdin.readline() + if not url: + break + unqoted = urllib.unquote(url.strip()) + if unqoted.startswith('file://'): + unqoted = unqoted[len('file://'):] + print unqoted diff --git a/bin/distutils b/bin/distutils new file mode 100755 index 0000000..b592282 --- /dev/null +++ b/bin/distutils @@ -0,0 +1,5 @@ +#! /bin/sh + +umask 022 +python"$PY_VER" setup.py "$@" +exec rm -f MANIFEST diff --git a/bin/doc2html1 b/bin/doc2html1 new file mode 100755 index 0000000..5319869 --- /dev/null +++ b/bin/doc2html1 @@ -0,0 +1,9 @@ +#! /bin/sh + +if [ -z "$1" ]; then + echo "Usage: $0 file.doc" + exit 1 +fi + +tmpfile="`mktemp -t XXXXXX.html`" && wvHtml "$1" "$tmpfile" && +webdump "$tmpfile" && exec rm "$tmpfile" diff --git a/bin/doc2html2 b/bin/doc2html2 new file mode 100755 index 0000000..32fd6f9 --- /dev/null +++ b/bin/doc2html2 @@ -0,0 +1,9 @@ +#! /bin/sh + +if [ -z "$1" ]; then + echo "Usage: $0 file.doc" + exit 1 +fi + +tmpfile="`mktemp -t XXXXXX.html`" && wvHtml "$1" "$tmpfile" && +webdump2 "$tmpfile" && exec rm "$tmpfile" diff --git a/bin/doc2html_web b/bin/doc2html_web new file mode 100755 index 0000000..4c4c701 --- /dev/null +++ b/bin/doc2html_web @@ -0,0 +1,19 @@ +#! /bin/sh + +if [ -z "$1" ]; then + echo "Usage: $0 file.doc" + exit 1 +fi + +new_win='' + +while getopts e:nt opt; do + case $opt in + n ) new_win="-n" ;; + t ) new_win="-t" ;; + esac +done +shift `expr $OPTIND - 1` + +tmpfile="`mktemp -t XXXXXX.html`" && wvHtml "$1" "$tmpfile" && +webbrowserX $new_win file://"$tmpfile" && (sleep 10 && exec rm "$tmpfile" &) diff --git a/bin/e b/bin/e new file mode 100755 index 0000000..fca58c3 --- /dev/null +++ b/bin/e @@ -0,0 +1,2 @@ +#! /bin/sh +exec elinks "$@" diff --git a/bin/find_home_grep.sh b/bin/find_home_grep.sh new file mode 100755 index 0000000..13f725c --- /dev/null +++ b/bin/find_home_grep.sh @@ -0,0 +1,4 @@ +#! /bin/sh + +cd "$HOME" && +exec cgmem_nice 100 find . \( -type d \( -name CVS -o -name .svn -o -name .hg -o -name .git -o -path ./.cache/chromium/\* -o -path ./.cache/mozilla/\* -o -path ./Internet/WWW/htdocs/doc/\* -o -path ./archive/STORE/\* -o -path ./current/Bregis/nobackup/\* -o -path ./lib/xsetbg/images/\* -o -path ./media/\* -o -path ./mnt/\*\* \) -prune \) -o -type f -exec grep -I "$@" '{}' \+ 2>/dev/null diff --git a/bin/fromdos b/bin/fromdos new file mode 100755 index 0000000..d5dfcf7 --- /dev/null +++ b/bin/fromdos @@ -0,0 +1,2 @@ +#! /bin/sh +exec iconvx.py -f cp866 -t koi8-r "$@" diff --git a/bin/fromwin b/bin/fromwin new file mode 100755 index 0000000..57964a1 --- /dev/null +++ b/bin/fromwin @@ -0,0 +1,2 @@ +#! /bin/sh +exec iconvx.py -f cp1251 -t koi8-r "$@" diff --git a/bin/get_html_encoding.py b/bin/get_html_encoding.py new file mode 100755 index 0000000..8fd9656 --- /dev/null +++ b/bin/get_html_encoding.py @@ -0,0 +1,73 @@ +#! /usr/bin/env python + + +from HTMLParser import HTMLParseError +from m_lib.net.www.html import HTMLParser as _HTMLParser + + +class HTMLHeadDone(Exception): pass + + +class HTMLParser(_HTMLParser): + def end_head(self): + raise HTMLHeadDone() + + + def do_meta(self, attrs): + http_equiv = "" + content = "" + + for attrname, value in attrs: + if value: + value = value.strip() + if attrname == 'http-equiv': + http_equiv = value.lower() + elif attrname == 'content': + content = value + + if http_equiv == "content-type": + try: + # extract charset from "text/html; foo; charset=UTF-8; bar;" + self.charset = content.lower().split('charset=')[1].split(';')[0] + except IndexError: + pass + raise HTMLHeadDone() + + +def parse_html(filename): + infile = open(filename, 'r') + parser = HTMLParser() + + for line in infile: + try: + parser.feed(line) + except (HTMLParseError, HTMLHeadDone): + break + + infile.close() + + try: + parser.close() + except (HTMLParseError, HTMLHeadDone): + pass + + if hasattr(parser, "charset"): + parser.charset = parser.charset.replace("windows-", "cp").lower() + + return parser + + +if __name__ == '__main__': + try: + import sys + parser = parse_html(sys.argv[1]) + if hasattr(parser, "charset"): + print parser.charset + else: + import chardet + charset = chardet.detect(open(sys.argv[1]).read())["encoding"] + if charset in ("ISO-8859-2", "MacCyrillic"): + charset = "cp1251" + print charset + except: + pass diff --git a/bin/get_xml_encoding.py b/bin/get_xml_encoding.py new file mode 100755 index 0000000..5007971 --- /dev/null +++ b/bin/get_xml_encoding.py @@ -0,0 +1,18 @@ +#! /usr/bin/env python + +charset = None +def xml_decl_handler(version, encoding, standalone): + global charset + charset = encoding + raise StopIteration + +if __name__ == '__main__': + try: + import sys + import xml.parsers.expat + parser = xml.parsers.expat.ParserCreate() + parser.XmlDeclHandler = xml_decl_handler + parser.ParseFile(open(sys.argv[1], 'r')) + except: + pass + if charset: print charset diff --git a/bin/gmplay b/bin/gmplay new file mode 120000 index 0000000..015dece --- /dev/null +++ b/bin/gmplay @@ -0,0 +1 @@ +mplay \ No newline at end of file diff --git a/bin/iconv.py b/bin/iconv.py new file mode 100755 index 0000000..41631fe --- /dev/null +++ b/bin/iconv.py @@ -0,0 +1,28 @@ +#! /usr/bin/env python +"Recode to default charset" + +import sys +from getopt import getopt +from m_lib.defenc import default_encoding + +from_charset = "cp1251" +to_charset = default_encoding + +options, arguments = getopt(sys.argv[1:], 'f:t:') +for option, value in options: + if option == '-f': + from_charset = value + elif option == '-t': + to_charset = value + +if arguments: + for file in arguments: + infile = open(file) + try: + for line in infile: + sys.stdout.write(unicode(line, from_charset, "replace").encode(to_charset, "replace")) + except: + infile.close() +else: + for line in sys.stdin: + sys.stdout.write(unicode(line, from_charset, "replace").encode(to_charset, "replace")) diff --git a/bin/iconvx.py b/bin/iconvx.py new file mode 100755 index 0000000..9352e73 --- /dev/null +++ b/bin/iconvx.py @@ -0,0 +1,37 @@ +#! /usr/bin/env python +"iconv wrapper" + +import sys +from getopt import getopt + +options, arguments = getopt(sys.argv[1:], 'f:t:') + +from_charset = to_charset = None + +for option, value in options: + if option == '-f': + from_charset = value + elif option == '-t': + to_charset = value + + +if from_charset is None: + raise ValueError, "you must use -f param to name source charset" + +if to_charset is None: + raise ValueError, "you must use -t param to name destination charset" + + +import tempfile, os, shutil +tempfname = "_iconvx" + tempfile.gettempprefix() + "tmp" + +if arguments: + try: + for file in arguments: + os.system("iconv.py -f '%s' -t '%s' '%s' > '%s'" % (from_charset, to_charset, file, tempfname)) + shutil.copy2(tempfname, file) + finally: + os.unlink(tempfname) + +else: # filter stdin => stdout + os.system("iconv.py -f '%s' -t '%s'" % (from_charset, to_charset)) diff --git a/bin/iconvxml.py b/bin/iconvxml.py new file mode 100755 index 0000000..86eb66d --- /dev/null +++ b/bin/iconvxml.py @@ -0,0 +1,28 @@ +#! /usr/bin/env python +"Recode using XML char references" + +import sys +from getopt import getopt +from m_lib.defenc import default_encoding + +from_charset = "utf-8" +to_charset = default_encoding + +options, arguments = getopt(sys.argv[1:], 'f:t:') +for option, value in options: + if option == '-f': + from_charset = value + elif option == '-t': + to_charset = value + +if arguments: + for file in arguments: + infile = open(file) + try: + for line in infile: + sys.stdout.write(unicode(line, from_charset, "replace").encode(to_charset, "xmlcharrefreplace")) + except: + infile.close() +else: + for line in sys.stdin: + sys.stdout.write(unicode(line, from_charset, "replace").encode(to_charset, "xmlcharrefreplace")) diff --git a/bin/idna.py b/bin/idna.py new file mode 100755 index 0000000..a0dabc6 --- /dev/null +++ b/bin/idna.py @@ -0,0 +1,21 @@ +#! /usr/bin/env python + +import sys +l = len(sys.argv) + +if (l == 2) and (sys.argv[1] != '-r'): + reverse = False + address = sys.argv[1] +elif (l == 3) and (sys.argv[1] == '-r'): + reverse = True + address = sys.argv[2] +else: + print >>sys.stderr, 'Usage: %s [-r] name.domain' % sys.argv[0] + sys.exit(1) + +from m_lib.defenc import default_encoding + +if reverse: + print address.decode("idna").encode(default_encoding) +else: + print unicode(address, default_encoding).encode("idna") diff --git a/bin/koi2lat b/bin/koi2lat new file mode 100755 index 0000000..e5cd63b --- /dev/null +++ b/bin/koi2lat @@ -0,0 +1,10 @@ +#! /usr/bin/env python + + +import sys +from m_lib.rus import rus2lat + + +for line in sys.stdin: + if line[-1] == '\n': line = line[:-1] + print rus2lat.rus2lat(line) diff --git a/bin/l b/bin/l new file mode 100755 index 0000000..c8baf8f --- /dev/null +++ b/bin/l @@ -0,0 +1,14 @@ +#! /bin/sh + +case "$TERM" in + *term*|*rxvt*|vt100|screen*) + TERM=xterm + export TERM + + xtitle "links@${HOSTNAME}" + exec links2 "$@" + ;; + + *)echo "Wrong TERM" >&2 + ;; +esac diff --git a/bin/l8 b/bin/l8 new file mode 100755 index 0000000..d8b8566 --- /dev/null +++ b/bin/l8 @@ -0,0 +1,4 @@ +#! /bin/sh + +. "$HOME"/lib/X11/koi8.vars +exec luit -encoding koi8-r "$@" diff --git a/bin/lat2koi b/bin/lat2koi new file mode 100755 index 0000000..c4ed131 --- /dev/null +++ b/bin/lat2koi @@ -0,0 +1,10 @@ +#! /usr/bin/env python + + +import sys +from m_lib.rus import lat2rus + + +for line in sys.stdin: + if line[-1] == '\n': line = line[:-1] + print lat2rus.lat2rus(line) diff --git a/bin/latin1_to_ascii.py b/bin/latin1_to_ascii.py new file mode 100755 index 0000000..974edd9 --- /dev/null +++ b/bin/latin1_to_ascii.py @@ -0,0 +1,125 @@ +#! /usr/bin/env python + +# See http://code.activestate.com/recipes/251871/ + +import sys, os + +xlate = { + u'\N{ACUTE ACCENT}': "'", + u'\N{BROKEN BAR}': '|', + u'\N{CEDILLA}': '{cedilla}', + u'\N{CENT SIGN}': '{cent}', + u'\N{COPYRIGHT SIGN}': '{C}', + u'\N{CURRENCY SIGN}': '{currency}', + u'\N{DEGREE SIGN}': '{degrees}', + u'\N{DIAERESIS}': '{umlaut}', + u'\N{DIVISION SIGN}': '/', + u'\N{FEMININE ORDINAL INDICATOR}': '{^a}', + u'\N{INVERTED EXCLAMATION MARK}': '!', + u'\N{INVERTED QUESTION MARK}': '?', + u'\N{LATIN CAPITAL LETTER A WITH ACUTE}': 'A', + u'\N{LATIN CAPITAL LETTER A WITH CIRCUMFLEX}': 'A', + u'\N{LATIN CAPITAL LETTER A WITH DIAERESIS}': 'A', + u'\N{LATIN CAPITAL LETTER A WITH GRAVE}': 'A', + u'\N{LATIN CAPITAL LETTER A WITH RING ABOVE}': 'A', + u'\N{LATIN CAPITAL LETTER A WITH TILDE}': 'A', + u'\N{LATIN CAPITAL LETTER AE}': 'Ae', + u'\N{LATIN CAPITAL LETTER C WITH CEDILLA}': 'C', + u'\N{LATIN CAPITAL LETTER E WITH ACUTE}': 'E', + u'\N{LATIN CAPITAL LETTER E WITH CIRCUMFLEX}': 'E', + u'\N{LATIN CAPITAL LETTER E WITH DIAERESIS}': 'E', + u'\N{LATIN CAPITAL LETTER E WITH GRAVE}': 'E', + u'\N{LATIN CAPITAL LETTER ETH}': 'Th', + u'\N{LATIN CAPITAL LETTER I WITH ACUTE}': 'I', + u'\N{LATIN CAPITAL LETTER I WITH CIRCUMFLEX}': 'I', + u'\N{LATIN CAPITAL LETTER I WITH DIAERESIS}': 'I', + u'\N{LATIN CAPITAL LETTER I WITH GRAVE}': 'I', + u'\N{LATIN CAPITAL LETTER N WITH TILDE}': 'N', + u'\N{LATIN CAPITAL LETTER O WITH ACUTE}': 'O', + u'\N{LATIN CAPITAL LETTER O WITH CIRCUMFLEX}': 'O', + u'\N{LATIN CAPITAL LETTER O WITH DIAERESIS}': 'O', + u'\N{LATIN CAPITAL LETTER O WITH GRAVE}': 'O', + u'\N{LATIN CAPITAL LETTER O WITH STROKE}': 'O', + u'\N{LATIN CAPITAL LETTER O WITH TILDE}': 'O', + u'\N{LATIN CAPITAL LETTER THORN}': 'th', + u'\N{LATIN CAPITAL LETTER U WITH ACUTE}': 'U', + u'\N{LATIN CAPITAL LETTER U WITH CIRCUMFLEX}': 'U', + u'\N{LATIN CAPITAL LETTER U WITH DIAERESIS}': 'U', + u'\N{LATIN CAPITAL LETTER U WITH GRAVE}': 'U', + u'\N{LATIN CAPITAL LETTER Y WITH ACUTE}': 'Y', + u'\N{LATIN SMALL LETTER A WITH ACUTE}': 'a', + u'\N{LATIN SMALL LETTER A WITH CIRCUMFLEX}': 'a', + u'\N{LATIN SMALL LETTER A WITH DIAERESIS}': 'a', + u'\N{LATIN SMALL LETTER A WITH GRAVE}': 'a', + u'\N{LATIN SMALL LETTER A WITH RING ABOVE}': 'a', + u'\N{LATIN SMALL LETTER A WITH TILDE}': 'a', + u'\N{LATIN SMALL LETTER AE}': 'ae', + u'\N{LATIN SMALL LETTER C WITH CEDILLA}': 'c', + u'\N{LATIN SMALL LETTER E WITH ACUTE}': 'e', + u'\N{LATIN SMALL LETTER E WITH CIRCUMFLEX}': 'e', + u'\N{LATIN SMALL LETTER E WITH DIAERESIS}': 'e', + u'\N{LATIN SMALL LETTER E WITH GRAVE}': 'e', + u'\N{LATIN SMALL LETTER ETH}': 'th', + u'\N{LATIN SMALL LETTER I WITH ACUTE}': 'i', + u'\N{LATIN SMALL LETTER I WITH CIRCUMFLEX}': 'i', + u'\N{LATIN SMALL LETTER I WITH DIAERESIS}': 'i', + u'\N{LATIN SMALL LETTER I WITH GRAVE}': 'i', + u'\N{LATIN SMALL LETTER N WITH TILDE}': 'n', + u'\N{LATIN SMALL LETTER O WITH ACUTE}': 'o', + u'\N{LATIN SMALL LETTER O WITH CIRCUMFLEX}': 'o', + u'\N{LATIN SMALL LETTER O WITH DIAERESIS}': 'o', + u'\N{LATIN SMALL LETTER O WITH GRAVE}': 'o', + u'\N{LATIN SMALL LETTER O WITH STROKE}': 'o', + u'\N{LATIN SMALL LETTER O WITH TILDE}': 'o', + u'\N{LATIN SMALL LETTER SHARP S}': 'ss', + u'\N{LATIN SMALL LETTER THORN}': 'th', + u'\N{LATIN SMALL LETTER U WITH ACUTE}': 'u', + u'\N{LATIN SMALL LETTER U WITH CIRCUMFLEX}': 'u', + u'\N{LATIN SMALL LETTER U WITH DIAERESIS}': 'u', + u'\N{LATIN SMALL LETTER U WITH GRAVE}': 'u', + u'\N{LATIN SMALL LETTER Y WITH ACUTE}': 'y', + u'\N{LATIN SMALL LETTER Y WITH DIAERESIS}': 'y', + u'\N{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}': '<<', + u'\N{MACRON}': '_', + u'\N{MASCULINE ORDINAL INDICATOR}': '{^o}', + u'\N{MICRO SIGN}': '{micro}', + u'\N{MIDDLE DOT}': '*', + u'\N{MULTIPLICATION SIGN}': '*', + u'\N{NOT SIGN}': '{not}', + u'\N{PILCROW SIGN}': '{paragraph}', + u'\N{PLUS-MINUS SIGN}': '{+/-}', + u'\N{POUND SIGN}': '{pound}', + u'\N{REGISTERED SIGN}': '{R}', + u'\N{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}': '>>', + u'\N{SECTION SIGN}': '{section}', + u'\N{SOFT HYPHEN}': '-', + u'\N{SUPERSCRIPT ONE}': '{^1}', + u'\N{SUPERSCRIPT THREE}': '{^3}', + u'\N{SUPERSCRIPT TWO}': '{^2}', + u'\N{VULGAR FRACTION ONE HALF}': '{1/2}', + u'\N{VULGAR FRACTION ONE QUARTER}': '{1/4}', + u'\N{VULGAR FRACTION THREE QUARTERS}': '{3/4}', + u'\N{YEN SIGN}': '{yen}' +} + +def latin1_to_ascii(uinput): + if not isinstance(uinput, unicode): + uinput = unicode(uinput, sys.getfilesystemencoding()) + out = [] + for c in uinput: + i = ord(c) + if i in xlate: + out.append(xlate[i]) + elif i >= 0x80: + pass + else: + out.append(str(c)) + return ''.join(out) + +if __name__ == '__main__': + if len(sys.argv) == 1: + sys.exit('Usage: %s filename\n' % sys.argv[0]) + for name in sys.argv[1:]: + plain_ascii = latin1_to_ascii(name) + if plain_ascii != name: + os.rename(name, plain_ascii) diff --git a/bin/ll b/bin/ll new file mode 100755 index 0000000..362c79a --- /dev/null +++ b/bin/ll @@ -0,0 +1,2 @@ +#! /bin/sh +exec ls -lAF "$@" diff --git a/bin/llp b/bin/llp new file mode 100755 index 0000000..6ad0b68 --- /dev/null +++ b/bin/llp @@ -0,0 +1,2 @@ +#! /bin/sh +ll "$@" | ${PAGER:-more} diff --git a/bin/m b/bin/m new file mode 100755 index 0000000..477c15d --- /dev/null +++ b/bin/m @@ -0,0 +1,2 @@ +#! /bin/sh +exec make "$@" diff --git a/bin/mc_type.py b/bin/mc_type.py new file mode 100755 index 0000000..a9d6322 --- /dev/null +++ b/bin/mc_type.py @@ -0,0 +1,32 @@ +#! /usr/bin/env python + +import sys, subprocess + +mc = sys.argv[1] +assert mc in ['/usr/local/bin/mc', '/usr/bin/mc'] + +mc = subprocess.Popen([mc, '--version'], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) +mc.wait() +mc_version = mc.stdout.readline() +mc.stdout.read() +mc.stdout.close() + +if mc_version.startswith('Midnight Commander'): + mc_version = mc_version.split()[2] +elif mc_version.startswith('GNU Midnight Commander') or \ + mc_version.startswith('The Midnight Commander'): + mc_version = mc_version.split()[3] +else: + raise ValueError('Unknown mc version') +if '.' in mc_version: + major, minor = [int(v) for v in mc_version.split('.')[:2]] + if major < 4: + print 'old' + elif (major == 4) and (minor < 6): + print 'old' + else: + print 'new' +else: + print 'new' diff --git a/bin/mconfig b/bin/mconfig new file mode 100755 index 0000000..08ba64a --- /dev/null +++ b/bin/mconfig @@ -0,0 +1,4 @@ +#! /bin/sh +CC="${CC:-gcc}" CPPFLAGS="-DNDEBUG=1 $CPPFLAGS" CFLAGS="-O3 $CFLAGS" \ + CXX="${CXX:-g++}" CXXFLAGS="-O3 $CXXFLAGS" LDFLAGS="-s $LDFLAGS" \ + exec ./configure "$@" diff --git a/bin/mplay b/bin/mplay new file mode 100755 index 0000000..4786233 --- /dev/null +++ b/bin/mplay @@ -0,0 +1,16 @@ +#! /bin/sh + +options="-ao pulse -quiet" + +if [ "$DISPLAY" ]; then + (xscreensaver-command -exit + xset -dpms s off) & +fi + +cgmem_nice 500 "`basename $0`"er $options "$@" + +if [ "$DISPLAY" ]; then + cd "$HOME" + xset +dpms s on + xscreensaver & +fi diff --git a/bin/mutt8 b/bin/mutt8 new file mode 100755 index 0000000..0fa81c4 --- /dev/null +++ b/bin/mutt8 @@ -0,0 +1,4 @@ +#! /bin/sh + +. "$HOME"/lib/X11/utf-8.vars +exec mutt "$@" diff --git a/bin/p b/bin/p new file mode 100755 index 0000000..673ef8a --- /dev/null +++ b/bin/p @@ -0,0 +1,2 @@ +#! /bin/sh +exec ping "$@" diff --git a/bin/r b/bin/r new file mode 100755 index 0000000..6656358 --- /dev/null +++ b/bin/r @@ -0,0 +1,2 @@ +#! /bin/sh +exec rsync -ahP4 "$@" diff --git a/bin/recode-filenames-recursive.py b/bin/recode-filenames-recursive.py new file mode 100755 index 0000000..9afd6c7 --- /dev/null +++ b/bin/recode-filenames-recursive.py @@ -0,0 +1,39 @@ +#! /usr/bin/env python + +import sys, os + +if len(sys.argv) == 3: + start_dir = '.' +elif len(sys.argv) == 4: + start_dir = sys.argv[3] +else: + sys.exit("Usage: %s src_enc dst_enc [start_dir]" % sys.argv[0]) + + +def _p(plist, dirname, names): + plist.append((dirname, names)) + + +plist = [] +os.path.walk(start_dir, _p, plist) +plist.reverse() + + +from recode_filenames import _recode + +save_dir = os.getcwd() +for dirname, names in plist: + os.chdir(dirname) + for filename in names: + # if not exists - it was renamed already + if os.path.exists(filename) and \ + os.path.isfile(filename): + newname = _recode(filename) + if newname <> filename: + os.rename(filename, newname) + os.chdir('..') + dirname = os.path.basename(dirname) + newname = _recode(dirname) + if newname <> dirname: + os.rename(dirname, newname) + os.chdir(save_dir) diff --git a/bin/recode-inplace b/bin/recode-inplace new file mode 100755 index 0000000..e354b87 --- /dev/null +++ b/bin/recode-inplace @@ -0,0 +1,13 @@ +#! /bin/sh + +fromenc="$1" +shift + +toenc="$1" +shift + +tmpfile="`python -c 'import tempfile; print tempfile.mktemp()'`" && + +for file in "$@"; do + iconv -f "$fromenc" -t "$toenc" "$file" >"$tmpfile" && cp "$tmpfile" "$file" && rm "$tmpfile" +done diff --git a/bin/recode_filenames.py b/bin/recode_filenames.py new file mode 100755 index 0000000..93b76cb --- /dev/null +++ b/bin/recode_filenames.py @@ -0,0 +1,68 @@ +#! /usr/bin/env python +# -*- coding: koi8-r -*- + + +import sys + +src_encoding = sys.argv[1] +dst_encoding = sys.argv[2] + +if src_encoding == "translit": + if dst_encoding == "koi8-r": + from m_lib.rus.lat2rus import lat2koi as _recode + elif dst_encoding == "cp1251": + from m_lib.rus.lat2rus import lat2win as _recode + else: + raise NotImplementedError, "destination encoding must be koi8-r or cp1251, not `%s'" % dst_encoding + +elif dst_encoding == "translit": + if src_encoding == "koi8-r": + from m_lib.rus.rus2lat import koi2lat as _recode + elif src_encoding == "cp1251": + from m_lib.rus.rus2lat import win2lat as _recode + else: + raise NotImplementedError, "source encoding must be koi8-r or cp1251, not `%s'" % src_encoding + + from m_lib.rus.rus2lat import koi2lat_d + koi2lat_d["ÿ"] = '' # remove apostrophs - + koi2lat_d["ø"] = '' # they are not very good characters in filenames + koi2lat_d["ß"] = '' # especially on Windoze + koi2lat_d["Ø"] = '' # :-) + +elif src_encoding == "url": + try: + src_encoding, dst_encoding = dst_encoding.split('/') + except ValueError: + src_encoding = dst_encoding + from m_lib.opstring import recode + import urllib + def _recode(s): + s = urllib.unquote(s) + if src_encoding <> dst_encoding: + s = recode(s, src_encoding, dst_encoding, "replace") + return s + +elif dst_encoding == "url": + try: + src_encoding, dst_encoding = src_encoding.split('/') + except ValueError: + dst_encoding = src_encoding + from m_lib.opstring import recode + import urllib + def _recode(s): + if src_encoding <> dst_encoding: + s = recode(s, src_encoding, dst_encoding, "replace") + return urllib.quote(s, safe=";/?:@&=+$,()'") # wget treats them as safe + +else: + from m_lib.opstring import recode + def _recode(s): + return recode(s, src_encoding, dst_encoding, "replace") + + +if __name__ == "__main__": + import os + for filename in sys.argv[3:]: + new_name = _recode(filename) + if new_name <> filename: + os.rename(filename, new_name) diff --git a/bin/replace b/bin/replace new file mode 100755 index 0000000..166eb57 --- /dev/null +++ b/bin/replace @@ -0,0 +1,20 @@ +#! /usr/bin/env python + +import sys + +if len(sys.argv) < 4: + sys.stderr.write("Usage: %s from_re to_re file....\n" % sys.argv[0]) + sys.exit(1) + +import re +search = re.compile(sys.argv[1]) +replace = sys.argv[2] + +from fileinput import FileInput +files = FileInput(sys.argv[3:], inplace=1) + +for line in files: + line = search.sub(replace, line) + sys.stdout.write(line) + +files.close() diff --git a/bin/reset_tty b/bin/reset_tty new file mode 100755 index 0000000..0631a99 --- /dev/null +++ b/bin/reset_tty @@ -0,0 +1,2 @@ +#! /bin/sh +stty sane erase '^H' && exec xtitle diff --git a/bin/rm-pyc b/bin/rm-pyc new file mode 100755 index 0000000..1f9d7ce --- /dev/null +++ b/bin/rm-pyc @@ -0,0 +1,2 @@ +#! /bin/sh +exec find . -name '*.py[co]' -delete diff --git a/bin/rumutt b/bin/rumutt new file mode 100755 index 0000000..d0f112c --- /dev/null +++ b/bin/rumutt @@ -0,0 +1,2 @@ +#! /bin/sh +LC_TIME=$LC_CTYPE exec mutt "$@" diff --git a/bin/s b/bin/s new file mode 100755 index 0000000..4f8570d --- /dev/null +++ b/bin/s @@ -0,0 +1,2 @@ +#! /bin/sh +exec ssh -4 "$@" diff --git a/bin/screen-hardcopy b/bin/screen-hardcopy new file mode 100755 index 0000000..3df3d81 --- /dev/null +++ b/bin/screen-hardcopy @@ -0,0 +1,21 @@ +#! /bin/sh + +SESSION= +WINDOW= + +while getopts r:p: opt; do + case $opt in + r) SESSION="-r $OPTARG" ;; + p) WINDOW="-p $OPTARG" ;; + esac +done +shift `expr $OPTIND - 1` + +i=1 +screen $SESSION $WINDOW -X hardcopy && +while [ $i -lt 30 -a \! -f hardcopy.0 ]; do + sleep 0.1 && + i=$((i+1)) +done && +less hardcopy.0 && +exec rm hardcopy.0 diff --git a/bin/setattrs.sh b/bin/setattrs.sh new file mode 100755 index 0000000..fcb5a15 --- /dev/null +++ b/bin/setattrs.sh @@ -0,0 +1,15 @@ +#! /bin/sh + +for d in "$@"; do + if [ -d "$d" ]; then + if [ "$d" = .. ]; then + echo 'Cannot operate on ".."!' >&2 + exit 1 + fi + chmod u+rwX,go+rX "$d" + find "$d" -type d -print0 | xargs -r0 chmod u+rwX,go+rX + find "$d" -type f -print0 | xargs -r0 chmod u+rwX,go+rX + else + chmod u+rwX,go+rX "$d" + fi +done diff --git a/bin/setnormattrs.sh b/bin/setnormattrs.sh new file mode 100755 index 0000000..55686fe --- /dev/null +++ b/bin/setnormattrs.sh @@ -0,0 +1,10 @@ +#! /bin/sh + +for d in "$@"; do + if [ "$d" = .. ]; then + echo 'Cannot operate on ".."!' >&2 + exit 1 + fi + find "$d" -type d -print0 | xargs -r0 chmod u=rwX,go=rX + find "$d" -type f -print0 | xargs -r0 chmod u=rw,go=r +done diff --git a/bin/smplay b/bin/smplay new file mode 100755 index 0000000..2dd72e4 --- /dev/null +++ b/bin/smplay @@ -0,0 +1,22 @@ +#! /bin/sh + +(xscreensaver-command -exit +xset -dpms s off) & + +b="`basename $0`" + +if [ "$b" = smplay ]; then + GUI="-minigui" +elif [ "$b" = smplay-gui ]; then + GUI="-defaultgui" +else + echo "Bad script name, aborted" 1>&2 + exit 1 +fi + +cgmem_nice 500 smplayer "$GUI" "$@" +"$HOME"/lib/audio/pa-volume + +cd "$HOME" +xset +dpms s on +xscreensaver & diff --git a/bin/smplay-gui b/bin/smplay-gui new file mode 120000 index 0000000..8c13708 --- /dev/null +++ b/bin/smplay-gui @@ -0,0 +1 @@ +smplay \ No newline at end of file diff --git a/bin/start-browser b/bin/start-browser new file mode 100755 index 0000000..48a1896 --- /dev/null +++ b/bin/start-browser @@ -0,0 +1,5 @@ +#! /bin/sh + +browser-stack.py push "$@" +"$@" +exec browser-stack.py pop "$@" diff --git a/bin/t b/bin/t new file mode 100755 index 0000000..af0d2d2 --- /dev/null +++ b/bin/t @@ -0,0 +1,2 @@ +#! /bin/sh +exec traceroute -4 "$@" diff --git a/bin/text-wrap.py b/bin/text-wrap.py new file mode 100755 index 0000000..a8e4871 --- /dev/null +++ b/bin/text-wrap.py @@ -0,0 +1,71 @@ +#! /usr/bin/env python + +import sys + + +def usage(code=0): + sys.stderr.write("Usage: %s [-0|--null] [-n|--no-newline] [-s|--space] [-w|--width] [width]\n" % sys.argv[0]) + sys.exit(code) + + +def get_args(): + from getopt import getopt, GetoptError + + try: + options, arguments = getopt(sys.argv[1:], "0nsw:", + ["null", "no-newline", "space", "width="]) + except GetoptError: + usage(1) + + print0 = False + newline = True + space = '' + width = None + + for option, value in options: + if option in ("-h", "--help"): + usage() + elif option in ("-0", "--null"): + print0 = True + elif option in ("-n", "--no-newline"): + newline = False + elif option in ("-s", "--space"): + space = u' ' + elif option in ("-w", "--width"): + width = int(value) + else: + usage(2) + + if arguments: + if width is not None: + usage(3) + elif len(arguments) > 1: + usage(4) + else: + width = int(arguments[0]) + + return print0, newline, space, width + +print0, newline, space, width = get_args() + + +from m_lib.defenc import default_encoding +text = sys.stdin.read().decode(default_encoding) +if not newline: + text = text.rstrip() + +if width: + import textwrap + text = textwrap.fill(text, width - 2*len(space), + initial_indent=space, subsequent_indent=space) + if space: + text = u'\n'.join([line+space for line in text.split(u'\n')]) +else: + text = u"%s%s%s" % (space, text, space) + +sys.stdout.write(text.encode(default_encoding)) + +if print0: + sys.stdout.write('\0') +elif newline: + print diff --git a/bin/todos b/bin/todos new file mode 100755 index 0000000..59c591e --- /dev/null +++ b/bin/todos @@ -0,0 +1,2 @@ +#! /bin/sh +exec iconvx.py -f koi8-r -t cp866 "$@" diff --git a/bin/towin b/bin/towin new file mode 100755 index 0000000..f02f336 --- /dev/null +++ b/bin/towin @@ -0,0 +1,2 @@ +#! /bin/sh +exec iconvx.py -f koi8-r -t cp1251 "$@" diff --git a/bin/tt b/bin/tt new file mode 100755 index 0000000..72eca81 --- /dev/null +++ b/bin/tt @@ -0,0 +1,2 @@ +#! /bin/sh +exec tcptraceroute "$@" diff --git a/bin/untar-home b/bin/untar-home new file mode 100755 index 0000000..deba4c3 --- /dev/null +++ b/bin/untar-home @@ -0,0 +1,4 @@ +#! /bin/sh + +cd /var/tmp && +bunzip2 -c "$HOME"/archive/STORE/phd/Home/phd.tar.bz2 | tar xpvf - diff --git a/bin/unzip.py b/bin/unzip.py new file mode 100755 index 0000000..6eb4832 --- /dev/null +++ b/bin/unzip.py @@ -0,0 +1,48 @@ +#! /usr/bin/env python +"""Unzip with encoded filenames + + Written by Oleg Broytman. Copyright (C) 2009, 2010 PhiloSoft Design. +""" + +import sys, os, time +from getopt import getopt, GetoptError +from zipfile import ZipFile +from m_lib.defenc import default_encoding + +def usage(): + sys.exit('Usage: %s file.zip' % sys.argv[0]) + +try: + options, arguments = getopt(sys.argv[1:], '') +except GetoptError: + usage() + +if len(arguments) <> 1: + usage() + +zf = ZipFile(arguments[0], 'r') +out = '.' + +for zinfo in zf.infolist(): + path = zinfo.filename + if not isinstance(path, unicode): + path = path.decode('cp866') + recoded_path = path.encode(default_encoding) + print recoded_path + + if path.startswith('./'): + tgt = os.path.join(out, recoded_path[2:]) + else: + tgt = os.path.join(out, recoded_path) + + tgtdir = os.path.dirname(tgt) + if not os.path.exists(tgtdir): + os.makedirs(tgtdir) + + if not tgt.endswith('/'): + fp = open(tgt, 'wb') + fp.write(zf.read(zinfo.filename)) + fp.close() + dt = time.mktime(zinfo.date_time + (0, 0, -1)) + os.utime(tgt, (dt, dt)) +zf.close() diff --git a/bin/vim8 b/bin/vim8 new file mode 100755 index 0000000..63793c0 --- /dev/null +++ b/bin/vim8 @@ -0,0 +1,2 @@ +#! /bin/sh +exec vim -c "ed ++enc=utf-8" "$@" diff --git a/bin/webbrowser b/bin/webbrowser new file mode 100755 index 0000000..0590aa0 --- /dev/null +++ b/bin/webbrowser @@ -0,0 +1,27 @@ +#! /usr/bin/env python + +import sys, os + +# This must be imported and called before webbrowser +# because webbrowser reads BROWSER environment variable at the import time +from browser_stack import set_current_browser +set_current_browser() + +import webbrowser + +if sys.argv[1] in ("-t", "--tab"): + new = 2 + url = sys.argv[2] + +elif sys.argv[1] in ("-n", "--new"): + new = 1 + url = sys.argv[2] + +else: + new = 0 + url = sys.argv[1] + +if '://' not in url: # Make an URL from a local file name + url = 'file://' + os.path.abspath(url) + +webbrowser.open(url, new) diff --git a/bin/webbrowser-encode-url b/bin/webbrowser-encode-url new file mode 100755 index 0000000..cc8f827 --- /dev/null +++ b/bin/webbrowser-encode-url @@ -0,0 +1,82 @@ +#! /usr/bin/env python + +from cgi import parse_qsl +from getopt import getopt +import sys, urllib +from m_lib.defenc import default_encoding + +# This must be imported and called before webbrowser +# because webbrowser reads BROWSER environment variable at the import time +from browser_stack import set_current_browser +set_current_browser() + +import webbrowser + +def usage(): + sys.exit('Usage: %s [-e|--encoding=encoding] [-n|--newwin|-t|--tab] URL' % sys.argv[0]) + +try: + options, arguments = getopt(sys.argv[1:], 'e:nt', ['encoding=', 'newwin', 'tab']) +except GetoptError: + usage() + +if len(arguments) <> 1: + usage() + +encoding = None +new = 0 + +for option, value in options: + if option in ('-e', '--encoding'): + encoding = value + elif option in ('-n', '--newwin'): + new = 1 + elif option in ('-t', '--tab'): + new = 2 + +if not encoding: + encoding = default_encoding + +url = arguments[0] +protocol, request = urllib.splittype(url) +user, password, port = None, None, None +host, path = urllib.splithost(request) +if host: + user, host = urllib.splituser(host) + if user: + user, password = urllib.splitpasswd(user) + host, port = urllib.splitport(host) + if port: port = int(port) +path, tag = urllib.splittag(path) +path, query = urllib.splitquery(path) +path = urllib.unquote(path) +if tag: tag = urllib.unquote_plus(tag) + +if query: + qlist = [] + for name, value in parse_qsl(query): + name = unicode(name, default_encoding).encode(encoding) + value = unicode(value, default_encoding).encode(encoding) + qlist.append((name, value)) + +url = protocol + "://" +if user: + url += urllib.quote(unicode(user, default_encoding).encode(encoding)) + if password: + url += ':' + urllib.quote(unicode(password, default_encoding).encode(encoding)) + url += '@' +if host: + url += host.decode(encoding).encode('idna') + if port: + url += ':%d' % port +if path: + if protocol == "file": + url += urllib.quote(path) + else: + url += urllib.quote(unicode(path, default_encoding).encode(encoding)) +if query: + url += '?' + urllib.urlencode(qlist) +if tag: + url += '#' + urllib.quote_plus(unicode(tag, default_encoding).encode(encoding)) + +webbrowser.open(url, new) diff --git a/bin/webbrowserX b/bin/webbrowserX new file mode 100755 index 0000000..590c42f --- /dev/null +++ b/bin/webbrowserX @@ -0,0 +1,5 @@ +#! /bin/sh + +SHELL=/bin/sh +. "$HOME"/.profile +exec webbrowser "$@" diff --git a/bin/webdump b/bin/webdump new file mode 100755 index 0000000..4a72c09 --- /dev/null +++ b/bin/webdump @@ -0,0 +1,12 @@ +#! /bin/sh + +case "$LC_CTYPE" in + *UTF-8) charset=utf-8 + ;; + + *) charset=koi8-r + ;; +esac + +exec elinks -dump -dump-width 80 -dump-charset "$charset" \ + -no-numbering -no-references "$1" diff --git a/bin/webdump2 b/bin/webdump2 new file mode 100755 index 0000000..6110f12 --- /dev/null +++ b/bin/webdump2 @@ -0,0 +1,2 @@ +#! /bin/sh +exec links2 -dump -width 80 -codepage "$LC_CTYPE" "$1" diff --git a/bin/webstdin b/bin/webstdin new file mode 100755 index 0000000..395456c --- /dev/null +++ b/bin/webstdin @@ -0,0 +1,16 @@ +#! /bin/sh + +ext=html +new_win='' + +while getopts e:nt opt; do + case $opt in + e ) ext="$OPTARG" ;; + n ) new_win="-n" ;; + t ) new_win="-t" ;; + esac +done +shift `expr $OPTIND - 1` + +tmpfile="`mktemp -t XXXXXX.$ext`" && cat - >"$tmpfile" && +webbrowser $new_win file://"$tmpfile" && (sleep 10 && exec rm "$tmpfile" &) diff --git a/bin/wget-m b/bin/wget-m new file mode 100755 index 0000000..f678271 --- /dev/null +++ b/bin/wget-m @@ -0,0 +1,10 @@ +#! /bin/sh + +. "$HOME"/lib/config/wget + +exec wget --mirror --continue -e robots=off --limit-rate="$wget_speed" \ + --page-requisites --wait=15 --random-wait --proxy=off -nH --no-parent \ + --trust-server-names "$@" + +# Other useful flags are: -b (--background) --cut-dirs -E (--html-extension) +# -k (--convert-links) diff --git a/bin/wget-wrapper b/bin/wget-wrapper new file mode 100755 index 0000000..04ca4eb --- /dev/null +++ b/bin/wget-wrapper @@ -0,0 +1,9 @@ +#! /bin/sh + +. "$HOME"/lib/config/wget + +exec wget --continue -N --limit-rate="$wget_speed" --proxy=off \ + --no-directories --trust-server-names "$@" + +# Other useful flags are: -b (--background) +# -E (--html-extension) --page-requisites diff --git a/bin/whence b/bin/whence new file mode 100755 index 0000000..e02906e --- /dev/null +++ b/bin/whence @@ -0,0 +1,2 @@ +#! /usr/bin/env bash +type -path "$@" diff --git a/bin/ww b/bin/ww new file mode 120000 index 0000000..9cd412e --- /dev/null +++ b/bin/ww @@ -0,0 +1 @@ +wget-wrapper \ No newline at end of file diff --git a/bin/xtitle b/bin/xtitle new file mode 100755 index 0000000..3d5e8e0 --- /dev/null +++ b/bin/xtitle @@ -0,0 +1,12 @@ +#! /usr/bin/env bash + +case "$TERM" in + *term*|*rxvt*|vt100|screen) + if [ -z "$1" ]; then + TITLE="${USER}@${HOSTNAME}:$(echo ${PWD} | sed -e "s|^${HOME}|~|")" + else + TITLE="$@" + fi + echo -ne "\033]0;${TITLE}\007" + ;; +esac diff --git a/bin/zip.py b/bin/zip.py new file mode 100755 index 0000000..eebbaeb --- /dev/null +++ b/bin/zip.py @@ -0,0 +1,42 @@ +#! /usr/bin/env python +"""Zip (zip -r9) with encoded filenames + + Written by Oleg Broytman. Copyright (C) 2009, 2010 PhiloSoft Design. +""" + +import sys, os +from getopt import getopt, GetoptError +from zipfile import ZipFile, ZIP_DEFLATED +from m_lib.defenc import default_encoding + +def usage(): + sys.exit('Usage: %s file.zip file1 dir2...' % sys.argv[0]) + +try: + options, arguments = getopt(sys.argv[1:], '') +except GetoptError: + usage() + +if len(arguments) < 2: + usage() + +def addToZip(zf, path): + if os.path.isfile(path): + print path + recoded_path = path.decode(default_encoding).encode('cp866') + zf.write(path, recoded_path, ZIP_DEFLATED) + elif os.path.isdir(path): + for nm in os.listdir(path): + addToZip(zf, os.path.join(path, nm)) + # else: ignore + +zname = arguments[0] +if os.path.splitext(zname)[1] not in ('.zip', '.ZIP'): + zname += '.zip' + +zf = ZipFile(zname, 'w', allowZip64=True) + +for path in arguments[1:]: + addToZip(zf, path) + +zf.close() diff --git a/lib/X11/.XKeysymDB b/lib/X11/.XKeysymDB new file mode 100644 index 0000000..b5202b9 --- /dev/null +++ b/lib/X11/.XKeysymDB @@ -0,0 +1,203 @@ +! +! This is the file XKeysymDB, which is used by X clients at +! execution time to translate X keysyms. +! +! Your system already has one version of the XKeysymDB file. The +! path '/usr/lib/X11/XKeysymDB' is the standard place; Sun systems +! with OpenWindows will place the file in $OPENWINHOME/lib. +! +! This version of the file contains various vendor-specific +! keysyms, including the OSF keysyms needed by the OSF/Motif +! toolkit, which may be lacking from the version currently on your +! system. +! +! This file can be used in two ways: +! +! 1) It can be used to replace the existing XKeysymDB file. This +! version is most likely a superset of the existing one. To be +! safe, be sure to rename you existing file before you copy in this +! version. +! +! 2) You can define the XKEYSYMDB environment variable to point to +! this version of the file, and X clients will then use this one +! instead of the system version. +! +! For example, if you have the SAS System, Release 6.09 installed +! in /usr/local/sas, and you are using the C-Shell, then you can +! define the environment variable with the command +! +! setenv XKEYSYMDB /usr/local/sas/X11/resource_files/XKeysymDB +! +! If you are using the Bourne or Korn shells, you could do +! +! XKEYSYMDB=/usr/local/sas/X11/resource_files/XKeysymDB +! export XKEYSYMDB +! + +hpmute_acute :100000A8 +hpmute_grave :100000A9 +hpmute_asciicircum :100000AA +hpmute_diaeresis :100000AB +hpmute_asciitilde :100000AC +hplira :100000AF +hpguilder :100000BE +hpYdiaeresis :100000EE +hpIO :100000EE +hplongminus :100000F6 +hpblock :100000FC +apLineDel :1000FF00 +apCharDel :1000FF01 +apCopy :1000FF02 +apCut :1000FF03 +apPaste :1000FF04 +apMove :1000FF05 +apGrow :1000FF06 +apCmd :1000FF07 +apShell :1000FF08 +apLeftBar :1000FF09 +apRightBar :1000FF0A +apLeftBox :1000FF0B +apRightBox :1000FF0C +apUpBox :1000FF0D +apDownBox :1000FF0E +apPop :1000FF0F +apRead :1000FF10 +apEdit :1000FF11 +apSave :1000FF12 +apExit :1000FF13 +apRepeat :1000FF14 +hpModelock1 :1000FF48 +hpModelock2 :1000FF49 +hpReset :1000FF6C +hpSystem :1000FF6D +hpUser :1000FF6E +hpClearLine :1000FF6F +hpInsertLine :1000FF70 +hpDeleteLine :1000FF71 +hpInsertChar :1000FF72 +hpDeleteChar :1000FF73 +hpBackTab :1000FF74 +hpKP_BackTab :1000FF75 + +ClearLine :1000FF6F +InsertLine :1000FF70 +DeleteLine :1000FF71 +InsertChar :1000FF72 +DeleteChar :1000FF73 + +apKP_parenleft :1000FFA8 +apKP_parenright :1000FFA9 + +I2ND_FUNC_L :10004001 +I2ND_FUNC_R :10004002 +IREMOVE :10004003 +IREPEAT :10004004 +IA1 :10004101 +IA2 :10004102 +IA3 :10004103 +IA4 :10004104 +IA5 :10004105 +IA6 :10004106 +IA7 :10004107 +IA8 :10004108 +IA9 :10004109 +IA10 :1000410A +IA11 :1000410B +IA12 :1000410C +IA13 :1000410D +IA14 :1000410E +IA15 :1000410F +IB1 :10004201 +IB2 :10004202 +IB3 :10004203 +IB4 :10004204 +IB5 :10004205 +IB6 :10004206 +IB7 :10004207 +IB8 :10004208 +IB9 :10004209 +IB10 :1000420B +IB11 :1000420B +IB12 :1000420C +IB13 :1000420D +IB14 :1000420E +IB15 :1000420F +IB16 :10004210 + +DRemove :1000FF00 +Dring_accent :1000FEB0 +Dcircumflex_accent :1000FE5E +Dcedilla_accent :1000FE2C +Dacute_accent :1000FE27 +Dgrave_accent :1000FE60 +Dtilde :1000FE7E +Ddiaeresis :1000FE22 + +osfCopy :1004FF02 +osfCut :1004FF03 +osfPaste :1004FF04 +osfBackTab :1004FF07 +osfBackSpace :1004FF08 +osfClear :1004FF0B +osfEscape :1004FF1B +osfAddMode :1004FF31 +osfPrimaryPaste :1004FF32 +osfQuickPaste :1004FF33 +osfPageLeft :1004FF40 +osfPageUp :1004FF41 +osfPageDown :1004FF42 +osfPageRight :1004FF43 +osfActivate :1004FF44 +osfMenuBar :1004FF45 +osfLeft :1004FF51 +osfUp :1004FF52 +osfRight :1004FF53 +osfDown :1004FF54 +osfEndLine :1004FF57 +osfBeginLine :1004FF58 +osfEndData :1004FF59 +osfBeginData :1004FF5A +osfPrevMenu :1004FF5B +osfNextMenu :1004FF5C +osfPrevField :1004FF5D +osfNextField :1004FF5E +osfSelect :1004FF60 +osfInsert :1004FF63 +osfUndo :1004FF65 +osfMenu :1004FF67 +osfCancel :1004FF69 +osfHelp :1004FF6A +osfSelectAll :1004FF71 +osfDeselectAll :1004FF72 +osfReselect :1004FF73 +osfExtend :1004FF74 +osfRestore :1004FF78 +osfDelete :1004FFFF + +SunFA_Grave :1005FF00 +SunFA_Circum :1005FF01 +SunFA_Tilde :1005FF02 +SunFA_Acute: 1005FF03 +SunFA_Diaeresis: 1005FF04 +SunFA_Cedilla: 1005FF05 +SunF36 :1005FF10 +SunF37 :1005FF11 +SunSys_Req :1005FF60 +SunProps :1005FF70 +SunFront :1005FF71 +SunCopy :1005FF72 +SunOpen :1005FF73 +SunPaste :1005FF74 +SunCut :1005FF75 + +SunCompose :FF20 +SunPageUp :FF55 +SunPageDown :FF56 +SunPrint_Screen :FF61 +SunUndo :FF65 +SunAgain :FF66 +SunFind :FF68 +SunStop :FF69 +SunAltGraph :FF7E + +WYSetup :1006FF00 diff --git a/lib/X11/.Xmodmap b/lib/X11/.Xmodmap new file mode 100644 index 0000000..0270549 --- /dev/null +++ b/lib/X11/.Xmodmap @@ -0,0 +1,50 @@ +!clear shift +!clear control +!clear mod1 +!clear mod2 +!clear mod3 +!clear mod4 + +! Key Base Shift Caps ShiftCaps +!------------------------------------------------------------------------ +!keycode 113 = Alt_R + +! Disable RightWin +keycode 94 = + +! RightMenu = Compose +keycode 117 = Multi_key + +!add shift = Shift_L Shift_R +!add control = Control_L Control_R +!add mod1 = Alt_L Alt_R +!add mod2 = Num_Lock + +! Use CapsLock as rus/lat switch key. + +!clear lock +!clear mod5 +!add mod5 = Caps_Lock Mode_switch + + +! +! Some examples +! + +!!!!! +!!!!! Swap Caps_Lock and Control_R +!!!!! +! remove Lock = Caps_Lock +! remove Control = Control_R +! keysym Control_R = Caps_Lock +! keysym Caps_Lock = Control_R +! add Lock = Caps_Lock +! add Control = Control_R + +!!!!! move around the escape key (PC only!) +!!!!! `/~ key does Escape (shifted, ~) +! keycode 49 = Escape asciitilde + +!!!!! make backspace be ` and ~ +! keysym BackSpace = quoteleft asciitilde +! keycode 22 = quoteleft asciitilde diff --git a/lib/X11/.Xresources b/lib/X11/.Xresources new file mode 100644 index 0000000..c3622e7 --- /dev/null +++ b/lib/X11/.Xresources @@ -0,0 +1,29 @@ +! +! .Xresources -- specifies your personal preferences for X applications +! +! Load into the server with the command: +! xrdb -DHOME=$HOME -I$HOME -load $HOME/.Xresources +! +! Resource Search Order: +! RESOURCE_MANAGER (X server) +! SCREEN_RESOURCES (X server) +! $XUSERFILESEARCHPATH || $XAPPLRESDIR || $XFILESEARCHPATH +! $XENVIRONMENT || $HOME/.Xdefaults-hostname +! Command line [-xrm resource_string] +! +#include "lib/X11/conf" +#include "lib/X11/fonts" +#include "lib/X11/colors" + +#include "lib/X11/xterm" +!#include "lib/X11/mosaic" +!#include "lib/X11/netscape" + +! +! Place your application specific configuration files in +! $HOME/lib/X11/app-defaults and then include them here: +! +! #include "lib/X11/app-defaults/Twm" +! +#include "lib/X11/gvim" +!#include "lib/X11/misc" diff --git a/lib/X11/colors b/lib/X11/colors new file mode 100644 index 0000000..dc29022 --- /dev/null +++ b/lib/X11/colors @@ -0,0 +1,49 @@ +! text colors +#define FOREGROUND_TEXT black +#define BACKGROUND_TEXT light gray +#define POINTER_COLOR C_forest +#define CURSOR_COLOR C_forest +#define BORDER_COLOR blue +#define WINBACK_COLOR gray75 + +#ifdef COLOR +*customization: -color +#endif + +#ifndef XAW3DCOLOR +#define XAW3DCOLOR gray75 +#endif + +! color definitions +#define C_amber #ffc070 +#define C_grayish #bfbfbf +#define C_forest #006000 +#define C_blue #307090 +#define C_purple #8925d1 +#define C_khaki #505a1b +#define C_orange #c75a00 +#define C_brown #714820 +#define C_charcoal #403640 +#define C_chocolate #563028 +#define C_green #308070 +#define C_auga #009080 +#define C_maroon #6e003c +#define C_newgreen #007079 +#define C_gold #c08900 + +! +! Motif colors +! +! active colors and inactive colors +#define motifAC C_gold +#define motifIC C_newgreen + +! background color for IconBox +#define motifSC DimGrey + +! icontext should contrast with motifIC +#define icontext white + +! set text colors to contrast with the motif colors +#define textAC black +#define textIC white diff --git a/lib/X11/conf b/lib/X11/conf new file mode 100644 index 0000000..4f9879d --- /dev/null +++ b/lib/X11/conf @@ -0,0 +1,10 @@ +#undef bsdi +#ifndef X11VER +# define X11VER 6 +#endif +#ifndef XBITMAPS +# define XBITMAPS /usr/X11/include/X11/bitmaps +#endif + +Xcursor.theme: whiteglass +Xcursor.size: 24 diff --git a/lib/X11/fonts b/lib/X11/fonts new file mode 100644 index 0000000..8549f16 --- /dev/null +++ b/lib/X11/fonts @@ -0,0 +1,61 @@ +! font selections +#if WIDTH > 800 +! 1024x768 or bigger +# define STD_FONT -misc-fixed-medium-r-normal-*-*-140-*-*-*-*-iso10646-1 +#elif WIDTH > 640 +! 800x600 +# define STD_FONT -misc-fixed-medium-r-normal-*-*-120-*-*-*-*-iso10646-1 +#else +! 640x480 +# define STD_FONT -misc-fixed-medium-r-normal-*-*-100-*-*-*-*-iso10646-1 +#endif + +#define UNREADABLE_FONT nil2 +#define TINY_FONT x10 +#define SMALL_FONT 8x13 +#define MEDIUM_FONT 9x15 +#define LARGE_FONT 10x20 +#define HUGE_FONT 12x24 + +! good font sizes 8 10 11 12 14 16 18 20 24 34 + +#if WIDTH > 800 +! 1024x768 or bigger +# define FIXED_FONT -*-courier-medium-r-normal-*-14-*-*-*-*-*-iso10646-1 +# define LABEL_FONT -*-lucidatypewriter-medium-r-normal-*-14-*-*-*-*-*-iso10646-1 +# define NORML_FONT -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-iso10646-1 +# define ITAL_FONT -*-helvetica-bold-o-normal-*-14-*-*-*-*-*-iso10646-1 +# define BOLD_FONT -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1 +# define H6_FONT -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1 +# define H5_FONT -*-helvetica-bold-r-normal-*-16-*-*-*-*-*-iso10646-1 +# define H4_FONT -*-helvetica-bold-r-normal-*-18-*-*-*-*-*-iso10646-1 +# define H3_FONT -*-helvetica-bold-r-normal-*-20-*-*-*-*-*-iso10646-1 +# define H2_FONT -*-helvetica-bold-r-normal-*-24-*-*-*-*-*-iso10646-1 +# define H1_FONT -*-helvetica-bold-r-normal-*-26-*-*-*-*-*-iso10646-1 +#elif WIDTH > 640 +! 800x600 +# define FIXED_FONT -*-courier-medium-r-normal-*-12-*-*-*-*-*-iso10646-1 +# define LABEL_FONT -*-lucidatypewriter-medium-r-normal-*-12-*-*-*-*-*-iso10646-1 +# define NORML_FONT -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso10646-1 +# define ITAL_FONT -*-helvetica-bold-o-normal-*-12-*-*-*-*-*-iso10646-1 +# define BOLD_FONT -*-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso10646-1 +# define H6_FONT -*-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso10646-1 +# define H5_FONT -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1 +# define H4_FONT -*-helvetica-bold-r-normal-*-16-*-*-*-*-*-iso10646-1 +# define H3_FONT -*-helvetica-bold-r-normal-*-18-*-*-*-*-*-iso10646-1 +# define H2_FONT -*-helvetica-bold-r-normal-*-20-*-*-*-*-*-iso10646-1 +# define H1_FONT -*-helvetica-bold-r-normal-*-24-*-*-*-*-*-iso10646-1 +#else +! 640x480 +# define FIXED_FONT -*-courier-medium-r-normal-*-10-*-*-*-*-*-iso10646-1 +# define LABEL_FONT -*-lucidatypewriter-medium-r-normal-*-10-*-*-*-*-*-iso10646-1 +# define NORML_FONT -*-helvetica-medium-r-normal-*-10-*-*-*-*-*-iso10646-1 +# define ITAL_FONT -*-helvetica-bold-o-normal-*-10-*-*-*-*-*-iso10646-1 +# define BOLD_FONT -*-helvetica-bold-r-normal-*-10-*-*-*-*-*-iso10646-1 +# define H6_FONT -*-helvetica-bold-r-normal-*-10-*-*-*-*-*-iso10646-1 +# define H5_FONT -*-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso10646-1 +# define H4_FONT -*-helvetica-bold-r-normal-*-14-*-*-*-*-*-iso10646-1 +# define H3_FONT -*-helvetica-bold-r-normal-*-16-*-*-*-*-*-iso10646-1 +# define H2_FONT -*-helvetica-bold-r-normal-*-18-*-*-*-*-*-iso10646-1 +# define H1_FONT -*-helvetica-bold-r-normal-*-20-*-*-*-*-*-iso10646-1 +#endif diff --git a/lib/X11/gvim b/lib/X11/gvim new file mode 100644 index 0000000..52910ce --- /dev/null +++ b/lib/X11/gvim @@ -0,0 +1,12 @@ +Vim*useSchemes: all +Vim*sgiMode: true +Vim*useEnhancedFSB: true +Vim*background: #000020 +Vim*foreground: Wheat +!Vim*menuBar*backgroundPixmap: ~/graphics/slate.xpm +Vim*menuBackground: #2f4f4f +Vim*menuForeground: Wheat +Vim*scrollbarWidth: 12 +Vim*scrollBackground: #2f4f4f +Vim*scrollForeground: #3f6262 +Vim*font: fixed diff --git a/lib/X11/inputrc b/lib/X11/inputrc new file mode 100644 index 0000000..6f5424f --- /dev/null +++ b/lib/X11/inputrc @@ -0,0 +1,27 @@ +"\e[A": previous-history +"\e[B": next-history +"\e[C": forward-char +"\e[D": backward-char + +# alternate arrow key prefix +"\eOA": previous-history +"\eOB": next-history +"\eOC": forward-char +"\eOD": backward-char + +# Under Xterm in bash, we bind local Function keys to do something useful. +$if Bash +"\e[11~": "Function Key 1" +"\e[12~": "Function Key 2" +"\e[13~": "Function Key 3" +"\e[14~": "Function Key 4" +"\e[15~": "Function Key 5" + +# I know the following escape sequence numbers are 1 greater than +# the function key. Don't ask me why, I didn't design the xterm terminal. +"\e[17~": "Function Key 6" +"\e[18~": "Function Key 7" +"\e[19~": "Function Key 8" +"\e[20~": "Function Key 9" +"\e[21~": "Function Key 10" +$endif diff --git a/lib/X11/misc b/lib/X11/misc new file mode 100644 index 0000000..8b140ca --- /dev/null +++ b/lib/X11/misc @@ -0,0 +1,31 @@ +*background: BACKGROUND_TEXT +*foreground: FOREGROUND_TEXT +login*background: black +login*foreground: green + +!## Athena text widgets +*Paned.Text.translations: #override\n\ + Shift,: scroll-one-line-down()\n\ + Shift,: scroll-one-line-up()\n\ + Ctrl,: previous-page()\n\ + Ctrl,: next-page()\n\ + None,:scroll-one-line-down()scroll-one-line-down()scroll-one-line-down()scroll-one-line-down()scroll-one-line-down()\n\ + None,:scroll-one-line-up()scroll-one-line-up()scroll-one-line-up()scroll-one-line-up()scroll-one-line-up() + +xscreensaver*splash: false + +Xautolock*time: 300 +Xautolock*locker: xlock -lockdelay 120 +usefirst + +emacs*font: -cronyx-courier-medium-r-*-*-13-*-*-*-*-*-koi8-r +emacs*Background: DarkSlateGray +emacs*Foreground: Wheat +emacs*pointerColor: Orchid +emacs*cursorColor: Orchid +emacs*bitmapIcon: on +emacs.geometry: 80x25 + +Seyon.modems: /dev/modem + +XDu*translations: #override\n\ + : info() diff --git a/lib/X11/mosaic b/lib/X11/mosaic new file mode 100644 index 0000000..afd63a0 --- /dev/null +++ b/lib/X11/mosaic @@ -0,0 +1,51 @@ +#if WIDTH > 640 +# if WIDTH > 800 +! Mosaic*geometry: DEFAULT +# else +Mosaic*geometry: 500x525 +# endif +#else +Mosaic*geometry: 445x420 +#endif + +Mosaic*Font: NORML_FONT +Mosaic*AddressFont: ITAL_FONT +Mosaic*ItalicFont: ITAL_FONT +Mosaic*BoldFont: BOLD_FONT +Mosaic*FixedFont: FIXED_FONT +Mosaic*PlainFont: FIXED_FONT +Mosaic*ListingFont: FIXED_FONT +Mosaic*TitleFont: LABEL_FONT +Mosaic*Header1Font: H1_FONT +Mosaic*Header2Font: H2_FONT +Mosaic*Header3Font: H3_FONT +Mosaic*Header4Font: H4_FONT +Mosaic*Header5Font: H5_FONT +Mosaic*Header6Font: H6_FONT + +Mosaic*XmBulletinBoard*buttonFontList: NORML_FONT +Mosaic*XmBulletinBoard*labelFontList: BOLD_FONT +Mosaic*XmCascadeButton*fontList: LABEL_FONT +Mosaic*XmCascadeButtonGadget*fontList: LABEL_FONT +Mosaic*XmIconGadget*fontList: NORML_FONT +Mosaic*XmLabel*fontList: BOLD_FONT +Mosaic*XmLabelGadget*fontList: BOLD_FONT +Mosaic*XmList*fontList: NORML_FONT +Mosaic*XmMenuShell*XmCascadeButton*fontList: ITAL_FONT +Mosaic*XmMenuShell*XmCascadeButtonGadget*fontList: ITAL_FONT +Mosaic*XmMenuShell*XmLabelGadget*fontList: ITAL_FONT +Mosaic*XmMenuShell*XmPushButton*fontList: ITAL_FONT +Mosaic*XmMenuShell*XmPushButtonGadget*fontList: ITAL_FONT +Mosaic*XmMenuShell*XmToggleButton*fontList: ITAL_FONT +Mosaic*XmMenuShell*XmToggleButtonGadget*fontList: ITAL_FONT +Mosaic*XmPushButton*fontList: NORML_FONT +Mosaic*XmPushButtonGadget*fontList: NORML_FONT +Mosaic*XmScale*fontList: BOLD_FONT +Mosaic*XmText.fontList: LABEL_FONT +Mosaic*XmTextField.fontList: LABEL_FONT +Mosaic*XmToggleButton*fontList: NORML_FONT +Mosaic*XmToggleButtonGadget*fontList: NORML_FONT +Mosaic*optionmenu*fontList: NORML_FONT +Mosaic*optionmenu.XmLabelGadget*fontList: BOLD_FONT +Mosaic*pulldownmenu*fontList: ITAL_FONT +Mosaic*menubar*fontList: BOLD_FONT diff --git a/lib/X11/netscape b/lib/X11/netscape new file mode 100644 index 0000000..abc0532 --- /dev/null +++ b/lib/X11/netscape @@ -0,0 +1,96 @@ +Netscape*noAboutSplash: true + +!Netscape*fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*XmTextField.fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*XmText.fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*XmList*fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*menuBar*fontList: -*-courier-bold-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*menuBar*historyTruncated.fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*popup*fontList: -*-courier-bold-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*topArea*fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*topArea*XmTextField.fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*topArea*XmText.fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*bookmark*fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*bookmark*XmTextField.fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*bookmark*XmText.fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*bookmark*selectedLabel.fontList: -*-courier-bold-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*bookmark*multiFontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r,-*-courier-bold-r-*-*-*-140-*-*-*-*-koi8-r=HEADING,-*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r=ICON +!Netscape*mouseDocumentation.fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*docinfoButton.fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*licenseDialog*text.fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r +!Netscape*documentFonts*foundry: * +!Netscape*documentFonts*family: courier +!Netscape*documentFonts*weight: medium +!Netscape*documentFonts*slant: r +!Netscape*documentFonts*swidth: * +!Netscape*documentFonts*adstyle: * +!Netscape*documentFonts*pixelsize: * +!Netscape*documentFonts*pointsize: 140 +!Netscape*documentFonts*resx: * +!Netscape*documentFonts*resy: * +!Netscape*documentFonts*spacing: * +!Netscape*documentFonts*avgwidth: * +!Netscape*documentFonts*registry: koi8 +!Netscape*documentFonts*encoding: r +!*Netscapemailto*urlLabel.fontList: -*-courier-medium-r-*-*-*-140-*-*-*-*-koi8-r + +!Netscape*XmText.translations: #override\n\ + osfDelete: delete-previous-character() +!Netscape*XmTextField.translations: #override\n\ + osfDelete: delete-previous-character() +!Netscape*documentFonts.charset*koi8-1: iso-8859-1 +!Netscape*documentFonts.charset*koi8-r: koi8-r +!Netscape*documentFonts.charset*iso8859-1: koi8-r + +Netscape*documentFonts.sizeIncrement: 10 + +Netscape*toolBar.destinations.isEnabled: false +Netscape*toolBar.myshopping.isEnabled: false +Netscape*toolBar.search.isEnabled: false +Netscape*toolBar.viewSecurity.isEnabled: false + +!Netscape*selectForeground: White +!Netscape*selectBackground: Blue + +!## NETSCAPE +Netscape*drawingArea.translations: #replace \ + : ArmLink() \n\ + : ArmLink() \n\ + ~Shift: ActivateLink() \n\ + ~Shift: ActivateLink(new-window) \ + DisarmLink() \n\ + Shift: ActivateLink(save-only) \ + DisarmLink() \n\ + Shift: ActivateLink(save-only) \ + DisarmLink() \n\ + : DisarmLinkIfMoved() \n\ + : DisarmLinkIfMoved() \n\ + : DisarmLinkIfMoved() \n\ + : DescribeLink() \n\ + : xfeDoPopup() \n\ + : ActivatePopup() \n\ + Ctrl: PageUp()\n\ + Ctrl: PageDown()\n\ + Shift: LineUp()\n\ + Shift: LineDown()\n\ + None: LineUp()LineUp()LineUp()LineUp()LineUp()LineUp()\n\ + None: LineDown()LineDown()LineDown()LineDown()LineDown()LineDown()\n\ + Alt: xfeDoCommand(forward)\n\ + Alt: xfeDoCommand(back) + +Netscape*globalNonTextTranslations: #override\n\ + Shift: LineUp()\n\ + Shift: LineDown()\n\ + None:LineUp()LineUp()LineUp()LineUp()LineUp()LineUp()\n\ + None:LineDown()LineDown()LineDown()LineDown()LineDown()LineDown()\n\ + Alt: xfeDoCommand(forward)\n\ + Alt: xfeDoCommand(back)\n\ + KP_9: PageUp()\n\ + KP_3: PageDown()\n\ + KP_8: LineUp()\n\ + KP_2: LineDown()\n\ + KP_4: ColumnLeft()\n\ + KP_6: ColumnRight()\n\ + : \n\ + ,: xfeDoCommand(back)\n\ + ,: xfeDoPopup() diff --git a/lib/X11/utf-8.vars b/lib/X11/utf-8.vars new file mode 100644 index 0000000..17502a9 --- /dev/null +++ b/lib/X11/utf-8.vars @@ -0,0 +1,3 @@ +LESSCHARSET=utf-8 +LC_CTYPE=ru_RU.UTF-8 +LC_COLLATE=ru_RU.UTF-8 diff --git a/lib/X11/xterm b/lib/X11/xterm new file mode 100644 index 0000000..1d28cb4 --- /dev/null +++ b/lib/X11/xterm @@ -0,0 +1,413 @@ +! +! XTerm +! +#if WIDTH > 640 +# define XTERM_GEOMETRY 80x30 +#else +! 640x480 +# define XTERM_GEOMETRY 80x25-0-0 +#endif + +XTerm*Background: BACKGROUND_TEXT +XTerm*Foreground: FOREGROUND_TEXT +XTerm*VT100*Background: BACKGROUND_TEXT +XTerm*VT100*Foreground: FOREGROUND_TEXT + +XTerm*VT100*borderColor: BORDER_COLOR +XTerm*VT100*cursorColor: CURSOR_COLOR +XTerm*VT100*pointerColor: POINTER_COLOR +XTerm*VT100*pointerColorBackGround: BACKGROUND_TEXT + +XTerm*SimpleMenu*menuLabel.font: STD_FONT +XTerm*VT100*iconFont: STD_FONT +XTerm*VT100*font: STD_FONT +XTerm*VT100*font1: UNREADABLE_FONT +XTerm*VT100*font2: TINY_FONT +XTerm*VT100*font3: SMALL_FONT +XTerm*VT100*font4: MEDIUM_FONT +XTerm*VT100*font5: LARGE_FONT +XTerm*VT100*font6: HUGE_FONT + +XTerm*VT100*c132: true +XTerm*VT100*curses: true +XTerm*VT100*deiconifyWarp: false +XTerm*VT100*fullCursor: true +XTerm*VT100*iconStartup: false +XTerm*VT100*internalBorder: 2 +XTerm*VT100*jumpScroll: true +XTerm*VT100*logFile: XtermLog.XXXXX +XTerm*VT100*logging: false +XTerm*VT100*logInhibit: false +XTerm*VT100*loginShell: true +XTerm*VT100*marginBell: false +XTerm*VT100*multiScroll: true +XTerm*VT100*nMarginBell: 10 +XTerm*VT100*pageOverlap: 1 +XTerm*VT100*pageScroll: false +XTerm*VT100*reverseVideo: false +XTerm*VT100*reverseWrap: true +XTerm*VT100*saveLines: 1024 +XTerm*VT100*scrollBar: true +XTerm*VT100*scrollInput: true +XTerm*VT100*scrollKey: false +XTerm*scrollTtyOutput: false +XTerm*VT100*scrollPosition: right +XTerm*VT100*statusLine: false +XTerm*VT100*statusNormal: false +XTerm*VT100*termName: x11term +XTerm*VT100*textUnderIcon: true +XTerm*VT100*title: xterm +XTerm*VT100*titleBar: true +XTerm*VT100*titleFont: SMALL_FONT +XTerm*VT100*utmpInhibit: false +XTerm*VT100*visualBell: false +XTerm*VT100*vt102: false +XTerm*VT100*warp: false + +XTerm*locale: true +XTerm*utf8Title: true +XTerm*EightBitInput: True +XTerm*metaSendsEscape: true +XTerm*charClass: 33:48,37:48,45-47:48,64:48,126:48 +XTerm*loginShell: true + +UXTerm*locale: true +UXTerm*utf8Title: true +UXTerm*termName: xterm +UXTerm*geometry: XTERM_GEOMETRY +UXTerm*font: STD_FONT +UXTerm*saveLines: 1024 +UXTerm*loginShell: true + +! http://threebit.net/mail-archive/kde/msg00076.html +*VT100*dynamicColors: on +XTerm*color0: black +XTerm*color1: red3 +XTerm*color2: green3 +XTerm*color3: yellow3 +XTerm*color4: blue3 +XTerm*color5: magenta3 +XTerm*color6: cyan3 +XTerm*color7: gray90 +XTerm*color8: gray30 +XTerm*color9: red +XTerm*color10: green +XTerm*color11: yellow +XTerm*color12: blue +XTerm*color13: magenta +XTerm*color14: cyan +XTerm*color15: white +XTerm*colorBD: white +XTerm*colorMode: on +XTerm*colorUL: yellow + +! http://www.muquit.com/muquit/software/ansi_xterm/XTerm +! color1 is mutt''s RFC 822 headers +! color4 is mutt''s foreground +! color7 is mutt''s background +! color10 is used for ls --color for file with execute bit set +! color12 is used in ls --color for directories +!*xterm*color16: snow +!*xterm*color17: GhostWhite +!*xterm*color18: WhiteSmoke +!*xterm*color19: gainsboro +!*xterm*color20: FloralWhite +!*xterm*color21: OldLace +!*xterm*color22: linen +!*xterm*color23: AntiqueWhite +!*xterm*color24: PapayaWhip +!*xterm*color25: BlanchedAlmond +!*xterm*color26: bisque +!*xterm*color27: PeachPuff +!*xterm*color28: NavajoWhite +!*xterm*color29: moccasin +!*xterm*color30: cornsilk +!*xterm*color31: ivory +!*xterm*color32: LemonChiffon +!*xterm*color33: seashell +!*xterm*color34: honeydew +!*xterm*color35: MintCream +!*xterm*color36: azure +!*xterm*color37: AliceBlue +!*xterm*color38: lavender +!*xterm*color39: LavenderBlush +!*xterm*color40: MistyRose +!*xterm*color41: white +!*xterm*color42: black +!*xterm*color43: DarkSlateGray +!*xterm*color44: DarkSlateGrey +!*xterm*color45: DimGray +!*xterm*color46: DimGrey +!*xterm*color47: SlateGray +!*xterm*color48: SlateGrey +!*xterm*color49: LightSlateGray +!*xterm*color50: LightSlateGrey +!*xterm*color51: gray +!*xterm*color52: grey +!*xterm*color53: LightGrey +!*xterm*color54: LightGray +!*xterm*color55: MidnightBlue +!*xterm*color56: navy +!*xterm*color57: NavyBlue +!*xterm*color58: CornflowerBlue +!*xterm*color59: DarkSlateBlue +!*xterm*color60: SlateBlue +!*xterm*color61: MediumSlateBlue +!*xterm*color62: LightSlateBlue +!*xterm*color63: MediumBlue +!*xterm*color64: RoyalBlue +!*xterm*color65: blue +!*xterm*color66: DodgerBlue +!*xterm*color67: DeepSkyBlue +!*xterm*color68: SkyBlue +!*xterm*color69: LightSkyBlue +!*xterm*color70: SteelBlue +!*xterm*color71: LightSteelBlue +!*xterm*color72: LightBlue +!*xterm*color73: PowderBlue +!*xterm*color74: PaleTurquoise +!*xterm*color75: DarkTurquoise +!*xterm*color76: MediumTurquoise +!*xterm*color77: turquoise +!*xterm*color78: cyan +!*xterm*color79: LightCyan +!*xterm*color80: CadetBlue +!*xterm*color81: MediumAquamarine +!*xterm*color82: aquamarine +!*xterm*color83: DarkGreen +!*xterm*color84: DarkOliveGreen +!*xterm*color85: DarkSeaGreen +!*xterm*color86: SeaGreen +!*xterm*color87: MediumSeaGreen +!*xterm*color88: LightSeaGreen +!*xterm*color89: PaleGreen +!*xterm*color90: SpringGreen +!*xterm*color91: LawnGreen +!*xterm*color92: green +!*xterm*color93: chartreuse +!*xterm*color94: MediumSpringGreen +!*xterm*color95: GreenYellow +!*xterm*color96: LimeGreen +!*xterm*color97: YellowGreen +!*xterm*color98: ForestGreen +!*xterm*color99: OliveDrab +!*xterm*color100: DarkKhaki +!*xterm*color101: khaki +!*xterm*color102: PaleGoldenrod +!*xterm*color103: LightGoldenrodYellow +!*xterm*color104: LightYellow +!*xterm*color105: yellow +!*xterm*color106: gold +!*xterm*color107: LightGoldenrod +!*xterm*color108: goldenrod +!*xterm*color109: DarkGoldenrod +!*xterm*color110: RosyBrown +!*xterm*color111: IndianRed +!*xterm*color112: SaddleBrown +!*xterm*color113: sienna +!*xterm*color114: peru +!*xterm*color115: burlywood +!*xterm*color116: beige +!*xterm*color117: wheat +!*xterm*color118: SandyBrown +!*xterm*color119: tan +!*xterm*color120: chocolate +!*xterm*color121: firebrick +!*xterm*color122: brown +!*xterm*color123: DarkSalmon +!*xterm*color124: salmon +!*xterm*color125: LightSalmon +!*xterm*color126: orange +!*xterm*color127: DarkOrange +!*xterm*color128: coral +!*xterm*color129: LightCoral +!*xterm*color130: tomato +!*xterm*color131: OrangeRed +!*xterm*color132: red +!*xterm*color133: HotPink +!*xterm*color134: DeepPink +!*xterm*color135: pink +!*xterm*color136: LightPink +!*xterm*color137: PaleVioletRed +!*xterm*color138: maroon +!*xterm*color139: MediumVioletRed +!*xterm*color140: VioletRed +!*xterm*color141: magenta +!*xterm*color142: violet +!*xterm*color143: plum +!*xterm*color144: orchid +!*xterm*color145: MediumOrchid +!*xterm*color146: DarkOrchid +!*xterm*color147: DarkViolet +!*xterm*color148: BlueViolet +!*xterm*color149: purple +!*xterm*color150: MediumPurple +!*xterm*color151: thistle +!*xterm*color152: snow1 +!*xterm*color153: snow2 +!*xterm*color154: snow3 +!*xterm*color155: snow4 + +! http://www.math.colostate.edu/~reinholz/freebsd/apps_terminal.html +!XTerm*Foreground: light grey +!XTerm*Background: black +!XTerm*boldMode: false +!XTerm*visiblebell: false +! +!!red +!XTerm*color1: #EA6868 +!XTerm*color9: #FF7272 +!!green +!XTerm*color2: #ABCB8D +!XTerm*color10: #AFD78A +!!yellow +!XTerm*color3: #E8AE5B +!XTerm*color11: #FFA75D +!!blue +!XTerm*color4: #71C5F4 +!XTerm*color12: #67CDE9 +!!magenta +!XTerm*color5: #E2BAF1 +!XTerm*color13: #ECAEE9 +!!cyan +!XTerm*color6: #21F1EA +!XTerm*color14: #36FFFC +!!white +!XTerm*color7: #F1F1F1 +!XTerm*color15: #FFFFFF + +!Aterm*termName: xterm +!Aterm*geometry: XTERM_GEOMETRY +!Aterm*font: STD_FONT +!Aterm*saveLines: 1024 +!Aterm*loginShell: true + +! http://www.opennet.ru/base/X/xterm_color.txt.html +! Scrollbar tuning +!BlueTerm*VT100.Scrollbar.thumb: royal blue +!BlueTerm*VT100.Scrollbar.width: 9 +!BlueTerm*VT100.Scrollbar.background: steel blue +!BlueTerm*VT100.Scrollbar.foreground: black + +!BlueTerm*mainMenu*backgroundPixmap: gradient:vertical?dimension=350&start=SkyBlue1&end=blue4 +!BlueTerm*SimpleMenu*background: dark slate blue +!BlueTerm*SimpleMenu*foreground: deep sky blue + +!BlueTerm*VT100.background: midnight blue +!BlueTerm*VT100.foreground: cornflower blue +! Uncomment this to use color for the bold attribute +!BlueTerm*VT100*colorBDMode: on +!BlueTerm*VT100*colorBD: deep sky blue +!BlueTerm*VT100*cursorColor: blue +! fonts +!BlueTerm*VT100*boldMode: false +!BlueTerm*VT100*boldFont: fixed + +!BlueTerm*VT100*color0: black +!BlueTerm*VT100*color1: red3 +!BlueTerm*VT100*color2: sea green +!BlueTerm*VT100*color3: goldenrod +!BlueTerm*VT100*color4: royal blue +!BlueTerm*VT100*color5: magenta3 +!BlueTerm*VT100*color6: #007474 +!BlueTerm*VT100*color7: lightgray +!BlueTerm*VT100*color8: gray50 +!BlueTerm*VT100*color9: red +!BlueTerm*VT100*color10: green +!BlueTerm*VT100*color11: yellow +!BlueTerm*VT100*color12: blue +!BlueTerm*VT100*color13: magenta +!BlueTerm*VT100*color14: cyan +!BlueTerm*VT100*color15: white + +Rxvt*saveLines: 1024 +Rxvt*loginShell: true +Rxvt*geometry: XTERM_GEOMETRY +Rxvt*font: STD_FONT +Rxvt*cursorColor: CURSOR_COLOR +Rxvt*colorBD: black +Rxvt*colorIT: black +Rxvt*colorUL: black +Rxvt*colorRV: black +Rxvt*scrollTtyOutput: false +Rxvt*scrollWithBuffer: false +Rxvt*scrollTtyKeypress: true + +Rxvt*foreground: black +Rxvt*background: light gray +Rxvt*boldMode: false +Rxvt*visibleBell: false + +Rxvt*color0: black +!red +Rxvt*color1: red3 +Rxvt*color9: red2 +!green +Rxvt*color2: green3 +Rxvt*color10: green2 +!yellow +Rxvt*color3: brown3 +Rxvt*color11: yellow +!blue +Rxvt*color4: blue3 +Rxvt*color12: blue2 +!magenta +Rxvt*color5: magenta3 +Rxvt*color13: magenta2 +!cyan +Rxvt*color6: cyan3 +Rxvt*color14: cyan2 +!white +Rxvt*color7: LightGrey +Rxvt*color15: white + +#if WIDTH > 1600 +# define XFT_FONT xft:Monospace:size=18 +#elif WIDTH > 1200 +# define XFT_FONT xft:Monospace:size=16 +#elif WIDTH > 800 +# define XFT_FONT xft:Monospace:size=14 +#else +# define XFT_FONT xft:Monospace:size=12 +#endif + +URxvt*termName: rxvt +URxvt*font: XFT_FONT + +Rxvt.keysym.KP_End: \033[8~ +Rxvt.keysym.KP_Down: \033OB +Rxvt.keysym.KP_Next: \033[6~ +Rxvt.keysym.KP_Left: \033OD +Rxvt.keysym.KP_Right: \033OC +Rxvt.keysym.KP_Home: \033[7~ +Rxvt.keysym.KP_Up: \033OA +Rxvt.keysym.KP_Prior: \033[5~ + +Rxvt.keysym.(AppKeypad-)KP_End: \033Oq +Rxvt.keysym.(AppKeypad-)KP_Down: \033Or +Rxvt.keysym.(AppKeypad-)KP_Next: \033Os +Rxvt.keysym.(AppKeypad-)KP_Left: \033Ot +Rxvt.keysym.(AppKeypad-)KP_Right: \033Ov +Rxvt.keysym.(AppKeypad-)KP_Home: \033Ow +Rxvt.keysym.(AppKeypad-)KP_Up: \033Ox +Rxvt.keysym.(AppKeypad-)KP_Prior: \033Oy + +!Rxvt*keysym.S-Prior: ^[[5;2~ +!Rxvt*keysym.S-Next: ^[[6;2~ + +!URxvt.keysym.C-Left: \033[1;5D +!URxvt.keysym.C-Right: \033[1;5C +!URxvt.keysym.C-Up: \033[1;5B +!URxvt.keysym.C-Down: \033[1;5A +!URxvt.keysym.C-S-Left: \033[1;6D +!URxvt.keysym.C-S-Right: \033[1;6C +!URxvt.keysym.C-S-Up: \033[1;6B +!URxvt.keysym.C-S-Down: \033[1;6A + +!pine*vt100.translations: #override\n\ +! Shift,:string("OA")\n\ +! Shift,:string("OB")\n\ +! Ctrl,:string("OAOAOAOAOA")\n\ +! Ctrl,:string("OBOBOBOBOB")\n\ +! ,: string("OA")\n\ +! ,: string("OB") diff --git a/lib/config/dbus b/lib/config/dbus new file mode 100644 index 0000000..997ee83 --- /dev/null +++ b/lib/config/dbus @@ -0,0 +1,9 @@ +if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then + + . "$HOME"/.dbus/session-bus/* + export DBUS_SESSION_BUS_ADDRESS + +else + + echo "DBUS has already been set" +fi diff --git a/lib/config/gpg-agent b/lib/config/gpg-agent new file mode 100644 index 0000000..8ff9bee --- /dev/null +++ b/lib/config/gpg-agent @@ -0,0 +1,9 @@ +if test -f "$HOME"/.gnupg/agent-info && + kill -0 `head -1 "$HOME"/.gnupg/agent-info | cut -d: -f 2` 2>/dev/null; then + . "$HOME"/.gnupg/agent-info + export GPG_AGENT_INFO +else + eval `gpg-agent --daemon --write-env-file "$HOME"/.gnupg/agent-info` +fi + +include gpg-agent-update-tty diff --git a/lib/config/gpg-agent-ssh b/lib/config/gpg-agent-ssh new file mode 100644 index 0000000..61d7489 --- /dev/null +++ b/lib/config/gpg-agent-ssh @@ -0,0 +1,11 @@ +if test -f "$HOME"/.gnupg/agent-info && + kill -0 `head -1 "$HOME"/.gnupg/agent-info | cut -d: -f 2` 2>/dev/null; then + . "$HOME"/.gnupg/agent-info + export GPG_AGENT_INFO + export SSH_AUTH_SOCK + export SSH_AGENT_PID +else + eval `gpg-agent --daemon --enable-ssh-support --write-env-file "$HOME"/.gnupg/agent-info` +fi + +include gpg-agent-update-tty diff --git a/lib/config/gpg-agent-stop b/lib/config/gpg-agent-stop new file mode 100644 index 0000000..33ed837 --- /dev/null +++ b/lib/config/gpg-agent-stop @@ -0,0 +1,6 @@ +if test -f "$HOME"/.gnupg/agent-info && + kill -0 `head -1 "$HOME"/.gnupg/agent-info | cut -d: -f 2` 2>/dev/null; then + kill `head -1 "$HOME"/.gnupg/agent-info | cut -d: -f 2` +else + echo GPG agent is not running >&2 +fi diff --git a/lib/config/gpg-agent-update-tty b/lib/config/gpg-agent-update-tty new file mode 100644 index 0000000..cda45eb --- /dev/null +++ b/lib/config/gpg-agent-update-tty @@ -0,0 +1,3 @@ +GPG_TTY=`tty` +export GPG_TTY +echo UPDATESTARTUPTTY | gpg-connect-agent diff --git a/lib/config/mc-nice b/lib/config/mc-nice new file mode 120000 index 0000000..b8e12aa --- /dev/null +++ b/lib/config/mc-nice @@ -0,0 +1 @@ +nice-mc \ No newline at end of file diff --git a/lib/config/nice-mc b/lib/config/nice-mc new file mode 100644 index 0000000..575e764 --- /dev/null +++ b/lib/config/nice-mc @@ -0,0 +1,6 @@ +MC_PWD_FILE="${TMPDIR-/tmp}/mc-$USER/mc.pwd.$$" +nice -20 ionice -c3 mc -P "$MC_PWD_FILE" +rc=$? +cd "`cat \"$MC_PWD_FILE\"`" && rm "$MC_PWD_FILE" || rc=$? +unset MC_PWD_FILE +return $rc diff --git a/lib/config/wget b/lib/config/wget new file mode 100644 index 0000000..371ea50 --- /dev/null +++ b/lib/config/wget @@ -0,0 +1,5 @@ +if [ "$WGET_SPEED" ]; then + wget_speed="$WGET_SPEED" +else + wget_speed=9000k +fi diff --git a/lib/python/init.py b/lib/python/init.py new file mode 100644 index 0000000..8b86300 --- /dev/null +++ b/lib/python/init.py @@ -0,0 +1,185 @@ +# This is startup file for interactive python. +# It is not automatically loaded by python interpreter. +# To instruct the interpreter to load it insert the following commands +# into your .profile (use whatever syntax and initialization file +# is appropriate for your shell): +# +# PYTHONSTARTUP=$HOME/init.py # or where you really put it +# export PYTHONSTARTUP + +def init(): + import sys, os + import __builtin__ + + pyreadlinew32_startup = os.path.join(sys.prefix, + 'lib', 'site-packages', 'pyreadline', 'configuration', 'startup.py') + + if os.path.exists(pyreadlinew32_startup): + execfile(pyreadlinew32_startup) + + else: + # From Bruce Edge + + try: + import rlcompleter, readline + initfile = os.environ.get('INPUTRC') or os.path.expanduser('~/.inputrc') + readline.read_init_file(initfile) + + histfile = os.path.expanduser('~/.python-history') + try: + readline.read_history_file(histfile) + except IOError: + pass # No such file + + def savehist(): + histfilesize = os.environ.get('HISTFILESIZE') or \ + os.environ.get('HISTSIZE') + if histfilesize: + try: + histfilesize = int(histfilesize) + except ValueError: + pass + else: + readline.set_history_length(histfilesize) + readline.write_history_file(histfile) + + import atexit + atexit.register(savehist) + + except (ImportError, AttributeError): + pass # no readline or atexit, or readline doesn't have + # {read,write}_history_file - ignore the error + + + term = os.environ.get('TERM', '') + if 'linux' in term: + background = 'dark' + else: + background = os.environ.get('BACKGROUND', 'light').lower() + + # From Randall Hopper + + for _term in ['linux', 'term', 'rxvt', 'vt100', 'screen']: + if _term in term: + if background == 'dark': + ps1_color = '3' # yellow + stdout_color = '7' # bold white + else: + ps1_color = '4' # blue + stdout_color = '0' # bold black + + sys.ps1 = '\001\033[3%sm\002>>>\001\033[0m\002 ' % ps1_color + sys.ps2 = '\001\033[1;32m\002...\001\033[0m\002 ' # bold green + + + # From Denis Otkidach + + class ColoredFile: + def __init__(self, fp, begin, end='\033[0m'): # reset all attributes + self.__fp = fp + self.__begin = begin + self.__end = end + + def write(self, s): + self.__fp.write(self.__begin+s+self.__end) + + def writelines(self, lines): + map(self.write, lines) + + def __getattr__(self, attr): + return getattr(self.__fp, attr) + + sys.stdout = ColoredFile(sys.stdout, '\033[1;3%sm' % stdout_color) + sys.stderr = ColoredFile(sys.stderr, '\033[31m') # red + + break + + try: + import locale + except ImportError: + pass # locale was not compiled + else: + try: + locale.setlocale(locale.LC_ALL, '') + + from pprint import pprint + + def displayhook(value): + if value is not None: + __builtin__._ = value + pprint(value) + + sys.displayhook = displayhook + + except (ImportError, locale.Error): + pass # no locale support or unsupported locale + + + # From: Paul Magwene with a lot of my fixes + + class DirLister: + def __getitem__(self, key): + s = os.listdir(os.curdir) + return s[key] + + def __getslice__(self, i, j): + s = os.listdir(os.curdir) + return s[i:j] + + def __repr__(self): + return str(os.listdir(os.curdir)) + + def __call__(self, path=None): + if path: + path = os.path.expanduser(os.path.expandvars(path)) + else: + path = os.curdir + return os.listdir(path) + + class DirChanger: + def __repr__(self): + self() + return os.getcwd() + + def __call__(self, path=None): + path = os.path.expanduser(os.path.expandvars(path or '~')) + os.chdir(path) + + __builtin__.ls = DirLister() + __builtin__.cd = DirChanger() + + + # From Thomas Heller + # + #import pdb + # + #def info(*args): + # pdb.pm() + #sys.excepthook = info + + + class Pwd: + def __repr__(self): + return os.getcwd() + + def __call__(self): + return repr(self) + + __builtin__.pwd = Pwd() + + + class _Exit: + def __repr__(self): + sys.exit() + + def __call__(self, msg=None): + sys.exit(msg) + + __builtin__.x = _Exit() + + if isinstance(__builtin__.exit, str): # In Python 2.5+ exit and quit are objects + __builtin__.exit = __builtin__.quit = x + + +init() +del init diff --git a/lib/python/pdbrc.py b/lib/python/pdbrc.py new file mode 100644 index 0000000..0e67e51 --- /dev/null +++ b/lib/python/pdbrc.py @@ -0,0 +1,42 @@ +# Command line history: +import os, readline +histfile = os.path.expanduser("~/.pdb-history") + +try: + readline.read_history_file(histfile) +except IOError: + pass + +def savehist(histfile=histfile): + import os, readline + histfilesize = os.environ.get('HISTFILESIZE') or \ + os.environ.get('HISTSIZE') + if histfilesize: + try: + histfilesize = int(histfilesize) + except ValueError: + pass + else: + readline.set_history_length(histfilesize) + readline.write_history_file(histfile) + +import atexit +atexit.register(savehist) + +# return to debugger after fatal exception (Python cookbook 14.5): +import sys +def info(type, value, tb): + if hasattr(sys, 'ps1') or not sys.stderr.isatty(): + sys.__excepthook__(type, value, tb) + import traceback, pdb + traceback.print_exception(type, value, tb) + print + pdb.pm() +sys.excepthook = info + +# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/498182 +import pdb, rlcompleter +pdb.Pdb.complete = rlcompleter.Completer().complete + +# Cleanup any variables that could otherwise clutter up the namespace. +del atexit, info, os, pdb, readline, rlcompleter, savehist, sys -- 2.39.2