(defun xwem-turn-on-debug ()
(interactive)
(setf (X-Dpy-log-buffer (xwem-dpy)) "*xwem-debug*")
(X-Dpy-set-log-routines (xwem-dpy) xwem-debug-routines))
(unless xwem-use-presetup
(require 'xwem-clgen)
(require 'xwem-transient)
(require 'xwem-netwm))
(require 'xwem-launcher)
(require 'xwem-clswi)
(require 'xwem-strokes)
(require 'xwem-rooticon)
(balloon-help-mode -1)
(setq find-function-regexp
(concat "^\\s-*(\\(def[^cgvW]\\w+\\*?"
"\\|define-function"
"\\|define-obsolete-function-alias"
"\\|define-compatible-function-alias"
"\\|define-derived-mode"
"\\|define-xwem-command"
"\\)\\s-+%s\\(\\s-\\|$\\)"))
(setq
xwem-cl-other-strategy 'sameframe
xwem-cursor-default-foreground-color "red"
xwem-cursor-help-background-color "black"
xwem-cursor-quote-background-color "black"
xwem-cursor-quote-foreground-color "blanchedalmond"
xwem-cursor-wait-foreground-color "cyan"
xwem-default-focus-mode 'follow-mouse
xwem-frame-cursor-foreground-color "red"
xwem-frame-cursor-grab-foreground-color "blanchedalmond"
xwem-keymacro-show-macro nil
xwem-launcher-beep-done t
xwem-minibuffer-active-border-color "yellow"
xwem-minibuffer-bgcol "black"
xwem-minibuffer-emacs-frames-has-minibuffer nil
xwem-minibuffer-width 58
xwem-sound-default-alist '((default :sound bass :volume 100)
(undefined-key :sound drum :volume 100)
(command-fail :sound bass :volume 100)
(quit :sound quiet :volume 100)
(ready :sound cuckoo :volume 100)
(alarm :sound cuckoo :volume 100)
(msg-warning :sound clink :volume 100)
(msg-error :sound bong :volume 100))
xwem-sound-extension-list ".au:.wav"
xwem-strokes-file "sy-xwem-strokes.el"
xwem-time-auto-start nil
xwem-time-time-color "yellow"
xwem-tray-cursor-foreground-color "yellow"
xwem-xterm-program "xterm -bg black -fg white")
(setq special-display-frame-plist
(xwem-misc-merge-plists
special-display-frame-plist
'(top 350 left 100 width 80 height 20)))
(setq xwem-special-default-strategy 'someshit)
(defvar sy-xwem-vline-win nil)
(define-xwem-command sy-xwem-set-vline (&optional column colour)
"Setup one-pixel wide vertical line at COLUMN.
COLOUR is vline colour default \"red\".
Default COLUMN is value of `fill-column'."
(xwem-interactive
(list (or (and xwem-prefix-arg (prefix-numeric-value xwem-prefix-arg))
fill-column)))
(unless colour
(setq colour "red"))
(let (cxwin)
(setq cxwin
(X-Win-find-or-make
(xwem-dpy)
(float
(string-to-int (frame-property (selected-frame) 'window-id)))))
(when (X-Win-p sy-xwem-vline-win)
(XDestroyWindow (xwem-dpy) sy-xwem-vline-win)
(setq sy-xwem-vline-win nil))
(when (> column 0)
(setq
sy-xwem-vline-win
(XCreateWindow
(xwem-dpy) cxwin
(+ (frame-property (selected-frame) 'internal-border-width)
(* (font-width (face-font 'default)) column))
0 1
(* (frame-height (selected-frame))
(font-height (face-font 'default)))
0 nil nil nil
(make-X-Attr :background-pixel
(XAllocNamedColor
(xwem-dpy) (XDefaultColormap (xwem-dpy)) colour))))
(XMapWindow (xwem-dpy) sy-xwem-vline-win))))
(define-xwem-command sy-xwem-unset-vline ()
"*Turn off the vertical line created by `sy-xwem-set-vline'.
This works by side-effect of setting the vertical line to column zero."
(xwem-interactive)
(sy-xwem-set-vline 0))
(define-key xwem-global-map (xwem-kbd "H-c m V") 'sy-xwem-set-vline)
(define-key xwem-global-map (xwem-kbd "H-c m v") 'sy-xwem-unset-vline)
(setq
xwem-worklog-auto-worklog-file t
xwem-worklog-day-ends 23
xwem-worklog-day-start 0
xwem-worklog-dockapp-diagram-type '3d
xwem-worklog-file "~/.xwem/worklog"
xwem-worklog-logout-auto-period 0.01
xwem-worklog-silent t
xwem-worklog-tasks-description
'(("Web browsing"
(:key [(hyper ?w)] :color "dodgerblue" :cost 0)
(or (application "mozilla")
(name "Links")
(buffer-major-mode w3-mode)
(and (application "xemacs")
(name "W3:.*"))
(buffer-major-mode w3m-mode)
(and (application "xemacs")
(name "\\*w3m\\*"))))
("Mail reading"
(:key [(hyper ?m) ?r] :color "blue1" :cost 0)
(or (buffer-major-mode gnus-group-mode)
(buffer-major-mode gnus-article-mode)
(buffer-major-mode gnus-summary-mode)
(and (application "xemacs")
(name "\\*\\(Group\\|Summary\\|Article\\)"))))
("Mail writing"
(:key [(hyper ?m) ?w] :color "blue4" :cost 0)
(or (buffer-major-mode message-mode)
(buffer-major-mode bbdb-mode)
(and (application "xemacs")
(name "\\*\\(BBDB\\*\\|mail\\*\\|wide reply\\|reply\\)"))))
("Chatting"
(:key [?C] :color "palegreen" :cost 0)
(or (buffer-major-mode erc-mode)
(buffer-major-mode riece-channel-list-mode)
(buffer-major-mode riece-channel-mode)
(buffer-major-mode riece-command-mode)
(buffer-major-mode riece-dialogue-mode)
(buffer-major-mode riece-others-mode)
(buffer-major-mode riece-user-list-mode)
(name "BitchX:BaBy!")
(and (application "xemacs")
(name "\\(#eicq\\|#xemacs\\|#sxemacs\\|irc\\.freenode\\.org\\)"))
(buffer-major-mode eicq-buddy-mode)
(buffer-major-mode eicq-log-mode)
(and (application "xemacs")
(name ".*\\*Status\\*.*"))
(name ".*[LlMm][Ii][Cc][Qq].*")))
("Info/man reading"
(:key [(hyper ?i)] :color "cyan" :cost 10)
(or (buffer-major-mode Manual-mode)
(buffer-major-mode Info-mode)
(buffer-major-mode hyper-apropos-mode)
(and
(application "xemacs")
(name
".*\\(\\*info\\*\\|Man: \\|\\*Help\\*\\|\\*Hyper Apropos\\*\\).*"))
(class-name "Xman")))
("Emacs lisping"
(:key [(hyper ?e)] :color "yellow2" :cost 0)
(or (buffer-major-mode emacs-lisp-mode)
(and (application "xemacs")
(name ".*\\.el\\.*"))))
("C coding"
(:key [(hyper ?p)] :color "magenta" :cost 100)
(or (buffer-major-mode cvs-mode)
(buffer-major-mode c-mode)
(buffer-major-mode gdb-mode)
(and (or (application "xemacs")
(and (class-inst "^.term$")
(class-name "^.Term$")))
(name ".*\\(gdb\\|\\*cvs\\*\\|\\.[ch]\\).*"))))
("WorkProject"
(:key [(hyper ?c)] :color "green2" :cost 200))
("Administrivia"
(:key [(hyper ?a)] :color "lightblue" :cost 150)
(or (buffer-major-mode emoney-mode)
(buffer-major-mode eshell-mode)
(buffer-major-mode shell-mode)
(name "xsensors 0.46")
(application "xterm")
(name "top")
(name "tcpdump")
(name "ssh")))
("Movies"
(:key [(hyper ?M)] :color "blanchedalmond" :cost 0)
(name "xine.*"))
("Smoke" (:key [(hyper ?s)] :color "red3" :cost -50))
("Nothing"
(:key [(hyper ?n)] :color "gray80" :cost 50)
(or (and (application "xemacs")
(name ".*\\*scratch\\*.*"))
(eval t)))))
(require 'xwem-worklog)
(define-key xwem-global-map (xwem-kbd "H-W") 'xwem-worklog-prefix)
(add-hook 'xwem-worklog-logout-hook 'xwem-worklog-login t)
(setq one-time-file (expand-file-name "one-time-desktop.el" xwem-dir))
(setq xwem-desktop-goals
'((keymap . xwem-user-macros-prefix) (xwem-launcher-history . 100) (xwem-read-expression-history . 100)))
(xwem-desktop-load)
(defun sy-save-xwem-one-time-config ()
(let ((xwem-desktop-goals '(frames-config)))
(xwem-desktop-save one-time-file)))
(if (file-exists-p one-time-file)
(xwem-desktop-load one-time-file)
(add-hook 'xwem-exit-hook 'sy-save-xwem-one-time-config))
(add-hook 'xwem-exit-hook 'xwem-desktop-save)
(require 'xwem-holer)
(define-key xwem-global-map (xwem-kbd "H-x h") 'xwem-holer-prefix)
(require 'xwem-register)
(setq xwem-registers-auto-registers
'((?g (buffer-major-mode gnus-group-mode))
(?$ (buffer-major-mode emoney-mode))
(?e (buffer-major-mode eicq-log-mode))
(?x (application "xemacs"))
(?m (application "mozilla"))
(?b (name ".*[Bb]itch[Xx].*"))))
(defun sy-xwem-check-register (cl)
"Return xwem register where CL stored.
If no register return \"-\"."
(let ((rs xwem-registers))
(while (and rs
(or (not (eq (cadr (car rs)) 'XWEM-CLIENT))
(not (eq (caddr (car rs)) cl))))
(setq rs (cdr rs)))
(if rs
(char-to-string (car (car rs)))
"")))
(defadvice xwem-register-client (around call-client-change activate)
"Call client change hook."
(let ((rval (xwem-register-get (event-key (ad-get-arg 0)))))
ad-do-it
(when (and (xwem-cl-p rval)
(not (eq rval (xwem-cl-selected))))
(run-hook-with-args 'xwem-cl-change-hook rval))
(run-hook-with-args 'xwem-cl-change-hook (xwem-cl-selected))))
(define-xwem-face xwem-tabber-face1
`(((frame-selected tab-selected)
(:foreground "red" :bold t))
((frame-selected tab-nonselected)
(:foreground "red2"))
((frame-nonselected tab-selected)
(:foreground "red3" :bold t))
((frame-nonselected tab-nonselected)
(:foreground "red4"))
(t (:foreground "red")))
"Additional face for tabber.")
(setq xwem-tab-default-format
" %i %*%#%I%1%{(sy-xwem-check-register cl)%}%0 %n")
(define-abbrev-table 'xwem-launcher-abbrev-table
'(("215d" "~/test-it/XEmacs-21.5/debug-mule/src/xemacs" nil 0)
("215o" "~/test-it/XEmacs-21.5/opt-mule/src/xemacs" nil 0)
("bitch" "xterm -bg black -fg white -T BitchX:BaBy! -e BitchX" nil 0)
("eicq" "xterm -bg black -fg white -T SSH:eicq -e ssh eicq" nil 0)
("ian" "xterm -bg black -fg white -T SSH:vk4kij -e ssh ian-online" nil 0)
("irc" "xterm -bg black -fg white -T BitchX:BaBy! -e BitchX" nil 0)
("links" "links -g" nil 0)
("michelle"
"xterm -bg black -fg white -T SSH:michelle -e ssh michelle" nil 0)
("micq"
"xterm -bg black -fg white -T mICQ:JackaLX -sb -sl 256 -rightbar -e micq"
nil 0)
("mozilla" "mozilla -splash" nil 0)
("news" "xterm -bg black -fg white -T SSH:news -e ssh news" nil 0)
("pysol" "/usr/local/games/pysol-4.81/pysol" nil 0)
("root" "xterm -bg black -fg red -T SSH:root -e ssh local" nil 0)
("sf" "xterm -bg black -fg white -T SSH:sf -e ssh eicq" nil 0)
("sql" "xterm -bg black -fg white -T SSH:sql -e ssh sql" nil 0)
("squid" "xterm -bg black -fg white -T SSH:squid -e ssh squid" nil 0)
("sunsite"
"xterm -bg black -fg white -T SSH:sunsite.dk -e ssh xemacs-cvs" nil 0)
("tcpdump"
"xterm -bg yellow -sl 4096 -T tcpdump:eth0 -e sudo tcpdump -api eth0"
nil 0)
("tlinks" "links" nil 0)
("top" "xterm -bg black -fg white -e top" nil 0)
("tux" "xterm -bg black -fg white -T SSH:tux -e ssh xemacs-ftp" nil 0)
("xine" "xine --fullscreen" nil 0)
("yahoo" "/opt/ymessenger/bin/ymessenger" nil 0)))
(require 'xwem-osd)
(defvar sy-osd-date nil)
(copy-face 'default 'sy-osd-date-face)
(set-face-foreground 'sy-osd-date-face "blanchedalmond")
(defvar sy-osd-date-keymap
(let ((map (make-sparse-keymap 'sy-osd-date-keymap)))
(define-key map [button3] '(lambda () (interactive) (calendar)))
map)
"Keymap for date OSD.")
(defun sy-show-date-osd ()
"*Display the current date using OSD."
(interactive)
(let* ((face `sy-osd-date-face)
(text (format-time-string "%a, %b %e"))
(width (+ 3 (X-Text-width
(xwem-dpy)
(X-Font-get (xwem-dpy)
(face-font-name face))
text)))
(height (+ 3 (X-Text-height
(xwem-dpy)
(X-Font-get (xwem-dpy)
(face-font-name face))
text))))
(setq sy-osd-date (xwem-osd-create-dock
(xwem-dpy)
width
height
(list 'keymap sy-osd-date-keymap)))
(xwem-osd-set-color sy-osd-date (face-foreground-name face))
(xwem-osd-set-font sy-osd-date (face-font-name face))
(xwem-osd-text sy-osd-date text)
(xwem-osd-show sy-osd-date)))
(defun sy-update-osd-date-maybe (&optional force)
"Update the OSD date at midnight.
Optional Argument FORCE means to update the date now."
(let* ((now (decode-time))
(cur-hour (nth 2 now))
(cur-min (nth 1 now))
(cur-comp-time (+ (* cur-hour 60) cur-min)))
(when (or force (= 0 cur-comp-time))
(when (xwem-osd-p sy-osd-date)
(xwem-osd-text sy-osd-date (format-time-string "%a, %b %e"))))))
(defun sy-update-osd-date ()
"*Force update of the OSD date."
(interactive)
(when (xwem-osd-p sy-osd-date)
(sy-update-osd-date-maybe t)))
(defun sy-delete-osd-date ()
"*Delete the OSD date."
(interactive)
(when (xwem-osd-p sy-osd-date)
(when (itimerp "sy-osd-date-itimer")
(delete-itimer "sy-osd-date-itimer"))
(xwem-osd-destroy sy-osd-date)))
(define-key xwem-global-map [(meta shift button1)] 'xwem-frame-imove)
(define-key xwem-global-map [(meta shift button3)] 'xwem-frame-iresize)
(setq xwem-frame-autoiconify-mode 'intersect
xwem-frame-imove-mode 'opaque
xwem-frame-on-delim-resize-mode 'opaque)
(defun sy-xwem-switch-frame (key)
"To be used by H-C-<digit> bindings."
(interactive (list (event-key xwem-last-event)))
(xwem-frame-switch-nth (- (char-to-int key) 48)))
(define-key xwem-global-map (xwem-kbd "H-C-0") 'sy-xwem-switch-frame)
(define-key xwem-global-map (xwem-kbd "H-C-1") 'sy-xwem-switch-frame)
(define-key xwem-global-map (xwem-kbd "H-C-2") 'sy-xwem-switch-frame)
(define-key xwem-global-map (xwem-kbd "H-C-3") 'sy-xwem-switch-frame)
(define-key xwem-global-map (xwem-kbd "H-C-4") 'sy-xwem-switch-frame)
(define-key xwem-global-map (xwem-kbd "H-C-5") 'sy-xwem-switch-frame)
(define-key xwem-global-map (xwem-kbd "H-C-6") 'sy-xwem-switch-frame)
(define-key xwem-global-map (xwem-kbd "H-C-7") 'sy-xwem-switch-frame)
(define-key xwem-global-map (xwem-kbd "H-C-8") 'sy-xwem-switch-frame)
(define-key xwem-global-map (xwem-kbd "H-C-9") 'sy-xwem-switch-frame)
(define-xwem-command sy-xwem-switch-frame-by-name (name)
"Switch to xwem frame named by NAME."
(xwem-interactive
(list (xwem-completing-read "XWEM Frame: "
(mapcar (lambda (f) (list (xwem-frame-name f)))
xwem-frames-list))))
(let ((frame (xwem-frame-find 'name name)))
(when (xwem-frame-p frame)
(xwem-select-frame frame))))
(define-key xwem-global-map (xwem-kbd "H-C-n") 'sy-xwem-switch-frame-by-name)
(xwem-sound-load-default)
(defconst sy-icons-dir (file-name-as-directory
(expand-file-name "etc/icons" (getenv "HOME")))
"The directory where I keep my icons.")
(push '("mini-bitchx.xpm" (name ".*[Bb]itch[Xx].*")) xwem-icons-list)
(defun xwem-my-start-ldocks ()
"Start my launch docks."
(xwem-tray-delimeter nil nil "blue")
(xwem-launch-button-start
(expand-file-name "mini-xterm.xpm" xwem-icons-dir)
'(cmd . "xterm -bg black -fg white"))
(xwem-launch-button-start
(expand-file-name "mini-xemacs.xpm" xwem-icons-dir)
'(elisp . "(make-frame)"))
(xwem-launch-button-start
(expand-file-name "mini-mozilla1.xpm" xwem-icons-dir)
'(cmd . "mozilla -splash"))
(xwem-launch-button-start
(expand-file-name "links.xpm" sy-icons-dir)
'(cmd . "links -g")))
(require 'xwem-weather)
(customize-set-variable 'xwem-weather-update-frequency 3600)
(defun sy-xwem-hooks ()
(progn
(xwem-worklog-start-dockapp)
(xwem-framei-init)
(xwem-framei-dockapp)
(xwem-time)
(sy-show-date-osd)
(xwem-weather-init)
(start-itimer "sy-osd-date-itimer"
'sy-update-osd-date-maybe
60 60)
(xwem-recover-turn-on)
(xwem-my-start-ldocks)))
(add-hook 'xwem-after-init-hook 'sy-xwem-hooks)
(define-key xwem-global-map (xwem-kbd "H-C-g") 'xwem-recover-do-recover)
(require 'xwem-theme)
(make-face 'xwem-tray-delimiter-face)
(make-face 'xwem-window-outline-face)
(make-face 'xwem-window-delimiter-face)
(defvar xwem-theme-steve
`((face xwem-tabber-face
(((frame-selected tab-selected)
(:foreground "white" :background "gray20"
:font "-*-times-medium-r-*-*-14-*-*-*-*-*-*-*" :bold t))
((delimiter-left frame-selected tab-selected)
(:foreground "white"))
((delimiter-right frame-selected tab-selected)
(:foreground "black"))
((frame-selected tab-nonselected)
(:foreground "black"
:background "gray80"
:font "-*-times-medium-r-*-*-14-*-*-*-*-*-*-*"))
((delimiter-left frame-selected tab-nonselected)
(:foreground "white"))
((delimiter-right frame-selected tab-nonselected)
(:foreground "black"))
((frame-nonselected tab-selected)
(:foreground "gray80" :background "gray40"
:font "-*-times-medium-r-*-*-14-*-*-*-*-*-*-*" :bold t))
((delimiter-left frame-nonselected tab-selected)
(:foreground "white"))
((delimiter-right frame-nonselected tab-selected)
(:foreground "black"))
((frame-nonselected tab-nonselected)
(:foreground "black"
:background "gray40"
:font "-*-times-medium-r-*-*-14-*-*-*-*-*-*-*"))
((delimiter-left frame-nonselected tab-nonselected)
(:foreground "white"))
((delimiter-right frame-nonselected tab-nonselected)
(:foreground "black"))
(t (:foreground "white"))))
(face x-border-face
(((selected) (:foreground "white"))
(t (:foreground "dark"))))
(face xwem-frame-inner-border-face
(((light nonselected)
(:foreground "gray80"))
((medium nonselected)
(:foreground "gray50"))
((dark nonselected)
(:foreground "gray20"))
((light selected)
(:foreground "white"))
((medium selected)
(:foreground "gray50"))
((dark selected)
(:foreground "dark"))))
(face xwem-launch-dock-face
(((background-light)
(:foreground "gray70"))
((background-light shadow-light)
(:foreground "white"))
((background-light shadow-dark)
(:foreground "black"))
((background-dark)
(:foreground "gray50"))
((background-dark shadow-light)
(:foreground "white"))
((background-dark shadow-dark)
(:foreground "black"))
(t (:foreground "gray70" :background "black"))))
(face xwem-strokes-face
(((background light)
(:foreground "dimgray" :background "black"))
((background dark)
(:foreground "lightgray" :background "black"))
((background begin light)
(:foreground "darkslategrey" :background "black"
:line-width 12 :cap-style X-CapRound))
((background begin dark)
(:foreground "grey" :background "black"
:line-width 12 :cap-style X-CapRound))
(t (:foreground "dimgray" :background "black"
:line-width 6 :cap-style X-CapRound
:subwindow-mode X-IncludeInferiors
:function (eval xwem-strokes-gc-function)))))
(face xwem-tray-delimiter-face
(((background light)
(:foreground "gray40"))
((background light shadow)
(:foreground "gray30"))
((background dark)
(:foreground "gray70"))
((background dark shadow)
(:foreground "gray80"))))
(face xwem-window-outline-face
(((frame-selected win-selected)
(:foreground "dark" :background "dark"))
((frame-selected win-nonselected)
(:foreground "gray50" :background "gray50"))
((frame-nonselected win-selected)
(:foreground "gray20" :background "gray20"))
((frame-nonselected win-nonselected)
(:foreground "gray60" :background "gray40"))))
(face xwem-window-delimiter-face
(((horizontal)
(:foreground "gray30" :background "black"))
((horizontal shadow)
(:foreground "gray10" :background "black"))
((horizontal light shadow)
(:foreground "gray80" :background "black"))
((vertical)
(:foreground "gray10" :background "black"))
((shadow vertical)
(:foreground "gray40" :background "black"))
((light shadow vertical)
(:foreground "white" :background "black"))
(t (:foreground "gray20" :background "black"))))
(frame-property inner-border-width 3)
(frame-property inner-border-thickness 1)
(frame-property title-height 20)
(client-property x-border-width 3)
(custom xwem-cursor-help-foreground-color "#888888")
(custom xwem-cursor-help-background-color "#080808")
(custom xwem-root-cursor-foreground-color "black")
(custom xwem-root-cursor-background-color "white")
(custom xwem-frame-cursor-foreground-color "white")
(custom xwem-frame-cursor-background-color "black")
(custom xwem-minibuffer-bgcol "gray50")
(custom xwem-minibuffer-passive-border-color "gray70")
(custom xwem-minibuffer-active-border-color "red")
)
"Steve's xwem theme.")
(push (intern (symbol-name 'xwem-theme-steve)) xwem-theme-themes)
(xwem-theme-apply xwem-theme-steve)
Copyright © 2004, 2005 Steve Youngs
Verbatim copying and distribution is permitted in any medium,
providing this notice is preserved.
Last modified: Sat Jan 22 00:53:19 EST 2005