;; $Id: simple.scwmrc,v 1.6 2006/03/05 03:19:53 dsmith Exp $ -*- scheme -*- ;; simple.scwmrc was system.scwmrc until Scwm-0.99.2 ;; Uncomment the below to send a single UDP packet to ;; the scwm usage counter machine at startup ;; The single packet just contains the hostname and version number ;; To disable, set environment variable SCWM_DO_NOT_LOG_USAGE ;;(define thank-scwm-authors-with-usage-note #t) ;(define (foo filename) ; (simple-format #t "Loading ~S~%" filename)) ;(set! %load-hook foo) (define user-image-load-path (list (string-append (user-home) "/src/scwm/pixmaps") (string-append (user-home) "/src/scwm/bitmaps"))) ;;; set path to use for image searches (set! image-load-path (append user-image-load-path '("/usr/X11/lib/X11/mini-icons" "/usr/X11/include/X11/pixmaps" "/usr/lib/icons" "/usr/local/X11/include/X11/pixmaps" "/usr/local/lib/icons" "/usr/local/icons" "/uns/share/include/X11/pixmaps" "/uns/share/include/X11/bitmaps") image-load-path)) ;;-------------------------------;; ;; import the scwm modules ;; #! (use-scwm-modules minimal base winops winlist wininfo doc style message-window face preferences style ;optargs winlist-menu) winlist-menu) !# (use-modules (app scwm minimal) (app scwm base) (app scwm style) (app scwm winops) (app scwm winlist) (app scwm wininfo) (app scwm doc) (app scwm message-window) (app scwm face) ;(app scwm preferences) (app scwm optargs) (app scwm winlist-menu)) ;;-------------------------------;; ;; set some basic styles info ;; (define font12 (make-font "-adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*")) (define font14 (make-font "-adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-*")) (menu-style #:fg "white" #:bg "blueviolet" #:stipple "blue" #:hl-fg "yellow" #:font font14) (title-style #:font font12 #:justify 'left) (set-icon-font! font12) (set-highlight-foreground! "white") (set-highlight-background! "blueviolet") (set-rubber-band-mask! 127) ;;-------------------------------;; ;; set some paths ;; ;; ;; these are OK for my system, but may need to be changed for ;; yours. This should probably be eventually autoconfed or something. ;;; set path to use for image searches (set! image-load-path (append user-image-load-path '("/usr/X11/lib/X11/mini-icons" "/usr/X11/include/X11/pixmaps" "/usr/lib/icons" "/usr/local/X11/include/X11/pixmaps" "/usr/local/lib/icons" "/usr/local/icons" "/uns/share/include/X11/pixmaps" "/uns/share/include/X11/bitmaps") image-load-path)) ;;-------------------------------;; ;; set some window styles ;; (window-style "*" #:fg "white" #:bg "navy" #:icon "unknown1.xpm" #:icon-box (list (x- 70) 1 69 (y- 141)) #:border-width 6 #:focus 'mouse #:mwm-func-hint #t #:mwm-decor-hint #t #:hint-override #t #:decorate-transient #t #:PPosition-hint #f #:lenience #t ) (define desk-widget (make-style #:plain-border #t #:sticky #t #:winlist-skip #t #:border-width 3 #:focus 'none)) (window-style "*lock" #:use-style desk-widget) (window-style "xload" #:no-titlebar #t #:use-style desk-widget) (window-style "xscreensaver" #:no-titlebar #t #:use-style desk-widget) (window-style "xbiff" #:no-titlebar #t #:use-style desk-widget) (window-style "xcalc" #:icon "xcalc.xpm") (window-style "xman" #:icon "xman.xpm") (window-style "xmag" #:icon "mag_glass.xpm") (window-style "Emacs" #:icon "gnu-animal.xpm") (window-style "XTerm" #:icon "xterm.xpm") ;; People seem to prefer move by full virtual desks (set-edge-resistance! 500 10) (set-edge-scroll! (%x 100) (%y 100)) ;;-------------------------------;; ;; define some useful menus ;; (define window-ops-menu (menu (list (menu-title "Window Ops") menu-separator (menuitem "Move" #:action interactive-move) (menuitem "Resize" #:action interactive-resize) (menuitem "Raise" #:action raise-window) (menuitem "Lower" #:action lower-window) ;; (menuitem "Print" #:action print-window) (menuitem "(Un)Window-Shade" #:action toggle-window-shade) (menuitem "(De)Iconify" #:action toggle-iconify) (menuitem "(Un)Maximize" #:action toggle-maximize-vertical) (menuitem "(Un)Stick" #:action toggle-stick) (menuitem "(Un)Keep On Top" #:action toggle-on-top) menu-separator (menuitem "Close" #:action close-window) (menuitem "Delete" #:action delete-window) (menuitem "Destroy" #:action destroy-window) menu-separator (menuitem "Refresh Screen" #:action refresh)))) (define* (popup-ops) "" (interactive) (popup-menu window-ops-menu)) ;; Hack to let quit work (set-procedure-property! quit 'interactive #t) (define menu-quit-verify (menu (list (menu-title "Really quit scwm?") menu-separator ;;(menuitem "Yes" #:action scheme-quit) (menuitem "Yes" #:action quit) (menuitem "No" #:action #f) menu-separator (menuitem "Restart scwm" #:action (lambda () (restart "scwm")))))) (define (quit-verify) (popup-menu menu-quit-verify)) (define desk-menu (menu (list (menu-title "Desks") menu-separator (menuitem "Desk 1" #:action (lambda () (set-current-desk! 0))) (menuitem "Desk 2" #:action (lambda () (set-current-desk! 1))) (menuitem "Desk 3" #:action (lambda () (set-current-desk! 2))) (menuitem "Desk 4" #:action (lambda () (set-current-desk! 3)))))) (define util-menu (menu (list (menu-title "Utilities") menu-separator ;(menuitem "Preferences..." #:action scwm-options-dialog) menu-separator (menuitem "xterm" #:action (lambda () (execute "xterm"))) (menuitem "rxvt" #:action (lambda () (execute "rxvt"))) (menuitem "emacs" #:action (lambda () (execute "emacs"))) (menuitem "top" #:action (lambda () (execute "rxvt -T Top -n Top -e top"))) (menuitem "xcalc" #:action (lambda () (execute "xcalc"))) (menuitem "xmag" #:action (lambda () (execute "xmag"))) menu-separator (menuitem "Desks" #:action desk-menu) menu-separator (menuitem "Exit scwm" #:action menu-quit-verify)))) (define* (popup-util) "" (interactive) (popup-menu util-menu)) (define (make-small-window-ops-menu w) (menu (list ;; (menu-title "Window Ops2") ;; menu-separator (menuitem "Move" #:action interactive-move) (menuitem "Resize" #:action interactive-resize) (menuitem "Raise" #:action raise-window) (menuitem "Lower" #:action lower-window) (menuitem "Iconify" #:action iconify-window) menu-separator (menuitem "More..." #:action (menu (list (menuitem (if (maximized? w) "Unmaximize" "Maximize") #:action toggle-maximize-vertical) (menuitem (if (sticky-window? w) "Unstick" "Stick") #:action toggle-stick) (menuitem (if (shaded-window? w) "UnWindow-Shade" "Window-Shade") #:action toggle-window-shade) (menuitem (if (kept-on-top? w) "UnKeep On Top" "Keep On Top") #:action toggle-on-top)))) menu-separator (menuitem "Close" #:action close-window) (menuitem "Destroy" #:action destroy-window)))) (define* (popup-small-ops) "" (interactive) (popup-menu (make-small-window-ops-menu (get-window)))) ;; now set some mouse and key bindings ;; ;; first our root menus (bind-mouse 'root 1 popup-util) (bind-mouse 'root 2 popup-ops) (bind-mouse 'root 3 (lambda () (show-window-list-menu #f #f #:show-geometry #t))) (bind-mouse 'root "M-3" (lambda () (popup-menu desk-menu))) ;; window buttons (bind-mouse 'left-button-1 1 popup-small-ops) (bind-mouse 'right-button-1 1 toggle-maximize-vertical) (bind-mouse 'right-button-2 1 iconify-window) ;; operations on parts of the window (bind-mouse '(frame-corners frame-sides) 2 popup-small-ops) (bind-mouse 'frame-corners 1 resize-or-raise) (bind-mouse 'frame-sides 1 move-or-raise) (define* (move-or-shade) "" (interactive) (case (mouse-event-type) ((double-click) (toggle-window-shade)) (else (move-or-raise)))) (bind-mouse 'title 1 move-or-shade) (bind-mouse 'title 3 lower-window) ;; key bindings for the menus (bind-key 'all "M-F1" popup-util) (bind-key 'all "M-F2" popup-ops) ;; in case of emergency, hit Control-Meta-Shift-Q (bind-key 'all "C-M-S-q" quit-verify) ;; some stuff for icons (define* (move-or-deiconify) "" (interactive) (case (mouse-event-type) ((motion) (interactive-move)) ((double-click) (deiconify-window)))) (bind-mouse 'icon 1 move-or-deiconify) (bind-mouse 'icon 2 deiconify-window) ;; move the pointer with the keyboard (bind-key 'all "M-Left" (lambda () (move-pointer (%x -1) 0))) (bind-key 'all "M-Right" (lambda () (move-pointer (%x 1) 0))) (bind-key 'all "M-Up" (lambda () (move-pointer 0 (%y -1)))) (bind-key 'all "M-Down" (lambda () (move-pointer 0 (%y 1)))) ;; move the viewport with the keyboard (bind-key 'all "C-M-Left" (lambda () (move-viewport (%x -100) 0))) (bind-key 'all "C-M-Right" (lambda () (move-viewport (%x 100) 0))) (bind-key 'all "C-M-Up" (lambda () (move-viewport 0 (%y -100)))) (bind-key 'all "C-M-Down" (lambda () (move-viewport 0 (%y 100)))) ;; rotate the current window with the keyboard (bind-key 'all "C-S-Tab" (lambda () (next-window #:only visible? #:except iconified-window?))) (bind-key 'all "M-S-Tab" (lambda () (prev-window #:only visible? #:except iconified-window?)))