LINUX.ORG.RU

.sawfishrc
------------------------------------------
(require 'sawfish.wm.commands.move-resize)
(require 'maximize)

(define (toggle-window-decorated)
  (let ((win (input-focus)))
    (if (eq (window-type win) 'unframed) (set-window-type win 'default)
      (set-window-type win 'unframed))))

(define (crop-and-create-menu lst index)   
     (if (= (length lst) 1) nil
       (cons (list (car lst) 
		   (list 'system 
 			(concat "mpc play " (number->string index)))) 
	     (crop-and-create-menu 
 	     (cdr lst) 
 	     (+ 1 index)))))

(define (mpc-playlist-menu)   
  ((lambda (out-stream)     
     (crop-and-create-menu      
       (string-split "\n" (progn (call-process 
				  (make-process out-stream)  
 				 nil 
 				 "mpc" 
 				 "playlist") 
				 (get-output-stream-string out-stream)))       
       1)) 
   (make-string-output-stream))) 

(define (wallpapers-menu path)
  (mapcar 
   (lambda (name)
     `(,name ("Centered" (system ,(concat "fbsetbg -c \"" path name "\"")))
  	     ("Fullscreen" (system ,(concat "fbsetbg -f \"" path name "\"")))
	     ("Maximized" (system ,(concat "fbsetbg -a \"" path name "\"")))))
   (filter (lambda (name) (string-match ".*\\.(jpg|png)$" name)) 
  	   (directory-files path))))


(setq root-menu 
      (let ((s (lambda (name . command) 
		 (list name (list 'system (concat (if command (car command) name) " &"))))))
	`(
	  ,(s "Terminal" "urxvt")
	  ,(s "Browser" "firefox")
	  ,(s "Mail" "thunderbird")
	  ,(s "Editor" "emacs")
	  ("Programs" 
 	   ("System" 
 	    ,(s "xterm")
	    ,(s "rox")
 	    ,(s "gconf-editor")
 	    )
 	   ("Edit/Devel"
	    ,(s "emacs -nw" "urxvt -e emacs -nw")
 	    ,(s "leafpad")
 	    ,(s "eclipse" "eclipse-3.1")
 	    ,(s "glade" "glade-2")
	    ,(s "qt designer" "designer")
 	    )
 	   ("Office"
 	    ,(s "openoffice" "ooo-wrapper2")
 	    ,(s "gucharmap")
 	    ,(s "gimp")
 	    ,(s "inkscape")
 	    ,(s "acroread")
 	    ,(s "evince")
	    ,(s "epdfview")
 	    )
 	   ("Math"
 	    ,(s "mathematica" "Mathematica")
 	    ,(s "wxmaxima")
 	    ,(s "fsa6-tk" "urxvt -e fsa -tk")
 	    ,(s "kseg")
 	    ,(s "ipython" "urxvt -e ipython")
 	    ,(s "gnuplot" "urxvt -e gnuplot")
 	    )
 	   ("Net"
 	    ,(s "limewire")
 	    ,(s "yafc" "urxvt -e yafc")
 	    ,(s "lftp" "urxvt -e lftp")
 	    ,(s "elinks" "urxvt -e elinks")
 	    ,(s "psi")
 	    ,(s "gaim")
 	    ,(s "bittorrent")
	    ,(s "amule")
 	    )
 	   ("Media"
 	    ,(s "gmplayer")
 	    ,(s "xine")
 	    ,(s "ncmpc" "urxvt -e ncmpc &")
 	    ,(s "gmpc")
	    ,(s "amarok")
 	    ,(s "ogle")
 	    ,(s "kino")
 	    ,(s "realplayer" "realplay")
 	    )    	      
 	   )
	  ("MPD" ,@mpc-playlist-menu)
	  ()
	  ("WM Stuff" 
	   ("Wallpapers" ,@(lambda () (wallpapers-menu "/home/oleg/documents/images/wallpapers")))
	   ("Workspaces" . workspace-menu)
	   ("Restart" restart)
	   ("Quit" quit)
	   )
	  )))

(bind-keys global-keymap 
	   "H-TAB" 'cycle-windows
	   "H-F1" '(activate-workspace 1)
	   "H-F2" '(activate-workspace 2)
	   "H-F3" '(activate-workspace 3)
	   "H-F4" '(activate-workspace 4)
	   "H-f" '(system "firefox &")
	   "H-s" '(system "thunderbird &")
	   "H-t" '(system "urxvt &") 
	   "H-r" '(system "fbrun &")
 	   "XF86AudioPlay" '(system "mpc toggle") 
 	   "XF86AudioStop" '(system "mpc stop") 
 	   "XF86AudioNext" '(system "mpc next")
 	   "XF86AudioPrev" '(system "mpc prev")
	   "XF86AudioRaiseVolume" '(system "amixer set PCM 4%+")
	   "XF86AudioLowerVolume" '(system "amixer set PCM 4%-")
	   "XF86AudioMute" '(system "amixer set PCM toggle")
	   "C-XF86AudioRaiseVolume" '(system "amixer set Master 4%+")
	   "C-XF86AudioLowerVolume" '(system "amixer set Master 4%-")
	   "C-XF86AudioMute" '(system "amixer set Master toggle")
	   "M-XF86AudioRaiseVolume" '(system "amixer set Headphone 4%+")
	   "M-XF86AudioLowerVolume" '(system "amixer set Headphone 4%-")
	   "M-XF86AudioMute" '(system "amixer set Headphone toggle")
	   "H-l" '(system "scrot")
	   "H-z" (lambda () (show-message (current-time-string))))


;; ugly as fuck

(define (resize-window-anyway)
  (let* ((win (input-focus))
	 (maxp (window-maximized-p win)))
    (progn
      (if maxp
	  (progn
	    (let ((pos (window-position win))
		  (dim (window-dimensions win)))
	      (rplaca (cdr 
		       (rplaca (cdr 
				(rplaca (cdr 
					 (rplaca maxp 
						 (car pos))) 
					(cdr pos))) 
			       (car dim))) 
		      (cdr dim)))
	    (unmaximize-window win)))
      (resize-window-interactively win))))

(bind-keys title-keymap
	   "Button1-Click2" 'toggle-window-shaded)

(bind-keys window-keymap
	   "H-m" 'maximize-window-toggle
	   "H-h" 'toggle-window-shaded
	   "H-d" toggle-window-decorated
	   "H-Up" (lambda () 
		    (let ((win (input-focus)))
		      (move-window-to win (car (window-position win)) 0)))
	   "H-Down" (lambda ()
		      (let ((win (input-focus)))
			(move-window-to win (car (window-position win)) (- (screen-height) (cdr (window-dimensions win))))))
	   "H-Left" (lambda ()
		      (let ((win (input-focus)))
			(move-window-to win 0 (cdr (window-position win)))))
	   "H-Right" (lambda ()
		       (let ((win (input-focus)))
			 (move-window-to win (- (screen-width) (car (window-dimensions win))) (cdr (window-position win)))))
	   "M-Button3-Click" resize-window-anyway)

grob ★★★★★
()
Ответ на: комментарий от grob

.sawfish/custom
-----------------------
(custom-set-typed-variable (quote default-frame-style) (quote mavosBox) (quote frame-style))
(custom-set-typed-variable (quote match-window-profile) (quote ((((WM_NAME . "MPlayer") (WM_CLASS . "MPlayer")) (depth . 1) (frame-type . none)) (((WM_CLASS . "^xpad/xpad$")) (depth . -1)) (((WM_CLASS . "^xine/xine Video Window$")) (depth . 1) (frame-type . none)) (((WM_NAME . "^Amarok$") (WM_CLASS . "^Amarokapp/amarokapp$")) (workspace . 3)) (((WM_NAME . "^panel$") (WM_CLASS . "^trayer/panel$")) (depth . 1)) (((WM_CLASS . "^com-limegroup-gnutella-gui-Main/sun-awt-X11-XFramePeer$")) (workspace . 4)) (((WM_CLASS . "^Gimp/gimp$") (WM_WINDOW_ROLE . "^gimp-toolbox$")) (depth . 1)) (((WM_CLASS . "^Gimp/gimp$") (WM_WINDOW_ROLE . "^gimp-dock$")) (depth . 1)))) (quote match-window) (quote sawfish.wm.ext.match-window))
(custom-set-typed-variable (quote default-font) (quote ("Xft" . "Tahoma-8")) (quote font))
(custom-set-typed-variable (quote tooltips-enabled) (quote ()) (quote boolean) (quote sawfish.wm.ext.tooltips))
(custom-set-typed-variable (quote tooltips-show-doc-strings) (quote t) (quote boolean))
(custom-set-keymap (quote window-keymap) (quote (keymap (maximize-window-toggle . "H-m") (raise-and-pass-through-click . "Button1-Click") (move-window-interactively . "M-Button1-Click"))))
(custom-set-keymap (quote global-keymap) (quote (keymap)))
(custom-set-keymap (quote title-keymap) (quote (keymap (move-window-interactively . "Button1-Move") (popup-window-menu . "Button3-Click"))))
(custom-set-keymap (quote border-keymap) (quote (keymap (resize-window-interactively . "Button1-Move") (move-window-interactively . "Button2-Move"))))
(custom-set-keymap (quote root-window-keymap) (quote (keymap (popup-root-menu . "Button3-Click") (next-workspace . "Button4-Click") (previous-workspace . "Button5-Click"))))
(custom-set-typed-variable (quote workspace-names) (quote ("first" "second" "third" "fourth")) (quote (list string "Workspace names")))

grob ★★★★★
()
Ответ на: комментарий от grob

Удивительно похож на мой конфиг :) Даже струкрура меню почти такая же. Отличаются в основном клавиатурными биндингами, используемым софтом, и отсутсвием заморочек с плеером м обоями. И написано у меня написано гораздо грязнее.

Кстати, насколько безболезнено удалось подружить sawfish с композитом ? У меня xcompmgr при запущенном sawfish начинает чудить и постоянно жаловаться в поток ошибок о какой-то ерунде.

Burbaka ★★
()
Ответ на: комментарий от Burbaka

> Кстати, насколько безболезнено удалось подружить sawfish с композитом ? У меня xcompmgr при запущенном sawfish начинает чудить и постоянно жаловаться в поток ошибок о какой-то ерунде.

Я composite не пользуюсь, но вообще он работает нормально и прекрасно дружит с sawfish через _NET_WM_WINDOW_OPACITY. Возможно проблема не с sawfish?

grob ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.