For some reason, this does not always start swank though. When that happens, I just hit(load "/home/mostafa/slime/swank-loader.lisp") (swank-loader:init) (defcommand swank () () (setf stumpwm:*top-level-error-action* :break) (swank:create-server :port 4005 :style swank:*communication-style* :dont-close t) (echo-string (current-screen) "Starting swank. M-x slime-connect RET RET, then (in-package stumpwm).")) (swank)
C-t ;
and run "swank." I can then connect to the Lisp image by invoking slime-connect
in emacs.I've been using this sample as the base for my own .stumpwmrc. What I've learned? First, I learned how I can declare a command that can be run interactively run through StumpWM's semi-colon prompt. The macro is defcommand. It's similar to defun, only with an additional set of "interactive" parameters which will be prompted for at run time.
I also learned that I can define my own key-bindings using define-key. Here's an example:
This tells StumpWM to run the command "firefox" previously declared by defcommand when I hit(define-key *root-map* (kbd "x") "firefox")
C-t x
. C-t
is StumpWM's prefix key (can be changed of course). Any key-binding added to *root-map*
is should be used after pressing this prefix. If wan't to make a key-binding without the prefix key, I can add it to *top-map*
. This is how the "firefox" command is defined:Remember that the value after :class should be Firefox with a capital F. If it's not written like that, rerunning the command will not raise the current window, but will open a new one. On Debian, :class should be Iceweasel instead of Firefox. (For a short explanation of class and other window attributes in X see here. In short, class name is, by convention, the instance name with the first letter capitalized.);; launch web browser (defcommand firefox () () "start firefox or switch to it if already running." (run-or-raise "firefox" '(:class "Firefox")))
One of the most frequent things I do throughout my day is jumping to Wikipedia to look up something, or to search for it in Google. These two commands help me do that easier:
Finally, I need to more things. First, Network Manager seems essential. I'm going to use it's Tray icon at the moment, so since StumpWM doesn't have a tray, I'll use trayer which launches a tray in a floating window. In Debian, trayer can be installed by running;; ask the user for a search string and search for it in Wikipedia (defcommand wikipedia (search) ((:string "Search in Wikipedia for: ")) "prompt the user for a search term and look it up in the English Wikipedia" (check-type search string) (let ((uri (format nil "http://en.wikipedia.org/wiki/Special:Search?search=~a" search))) (run-shell-command (cat "firefox \"" uri "\"")))) ;; ask the user for a search string and search for it in Google (defcommand google (search) ((:string "Search in Google for: ")) "prompt the user for a search term and look it up in Google " (check-type search string) (let ((uri (format nil "http://www.google.com/search?q=~a" search))) (run-shell-command (cat "firefox \"" uri "\""))))
apt-get install trayer
. This launches trayer properly and then runs the Network Manager applet.And then I need to load my own customized keymap (I swap the ctrl and alt keys and make Caps Lock an additional alt).;; system tray (run-shell-command "/usr/bin/trayer --SetDockType false --transparent true --expand false") ;; start network manager applet (run-shell-command "nm-applet --sm-disable")
That's it for now.;; load keyboard map (run-shell-command "xmodmap ~/.xmodmap")
No comments:
Post a Comment