* A collection of StumpWM modules
Documentation on modules can be found [[https://github.com/stumpwm/stumpwm/wiki/Modules][on our wiki]].  
** How to write a module
*** General guidelines
- Create your own package and optionally import the stumpwm
  package. Don't use the stumpwm package. If you need a symbol
  exported, [[https://github.com/stumpwm/stumpwm/issues][open an issue]].
- Use =asdf=.
- Document exported symbols and commands.
- Stay organized!  Put things in neat little directories.  A distro
  might want to package your module.

*** A pseudo-tutorial
The path of least resistance is to use `quickproject` and its helper
functions.  Specifically (get [[http://www.quicklisp.org/beta/][quicklisp]]):
#+BEGIN_SRC lisp
  (ql:quickload "quickproject")
  (quickproject:make-project #p"~/path/to/new-module" :depends-on '(stumpwm) :name "swm-new-module")
#+END_SRC
Then in =~/path/to/new-module/= you will have:
#+BEGIN_EXAMPLE
  -rw-rw-r--  1 dave dave   68 Apr  6 19:38 package.lisp
  -rw-rw-r--  1 dave dave   53 Mar 16  2014 README.txt
  -rw-rw-r--  1 dave dave  271 Mar 16  2014 swm-new-module.asd
  -rw-rw-r--  1 dave dave 1.8K Apr  6 17:51 swm-new-module.lisp
#+END_EXAMPLE
The files that are important for you are =package.lisp= and
=swm-new-module.asd=.  They contain the =asdf= metadata that describes
your project.

An example =asd= file looks like:
#+BEGIN_EXAMPLE
(asdf:defsystem #:swm-new-module
  :serial t
  :description "Describe swm-new-module here"
  :author "Guy Steele"
  :license "GPLv3"
  :depends-on (#:stumpwm)
  :components ((:file "package")
               (:file "swm-emacs"))) ; any other files you make go here
#+END_EXAMPLE
A =package.lisp= looks like:
#+BEGIN_EXAMPLE
(defpackage #:swm-new-module
  (:use #:cl :stumpwm))
#+END_EXAMPLE

From here you can commence hacking.  When you're ready, advertise it
to the world!

[[http://www.xach.com/lisp/quickproject/][More docs here]].
* Current Modules 
(click for its respective README/docs)
** Media 
- [[./media/amixer/README.org][amixer]]
- [[./media/aumix/README.org][aumix]]
** Minor Modes
- [[./minor-mode/mpd/README.org][mpd]]
- [[./minor-mode/notifications/README.org][notifications]]
** Modeline
- [[./modeline/battery-portable/README.org][battery (portable)]]
- [[./modeline/cpu/README.org][cpu]]
- [[./modeline/disk/README.org][disk]]
- [[file:modeline/hostname/README.org][hostname]]
- [[./modeline/maildir/README.org][maildir]]
- [[./modeline/mem/README.org][mem]]
- [[./modeline/net/README.org][net]]
- [[./modeline/wifi/README.org][wifi]]
** Utilities 
- [[./util/app-menu/README.org][app-menu]]
- [[./util/numpad-layouts/README.org][numpad-layouts]]
- [[./util/app-menu/README.org][menu]]
- [[./util/logitech-g15-keysyms/README.org][keysyms]]
- [[./util/passwd/README.org][passwd]]
- [[./util/productivity/README.org][productivity]]
- [[./util/stumptray/README.org][stumptray]]
- [[./util/surfraw/README.org][surfraw]]
- [[./util/undocumented/README.org][undocumented]]
- [[./util/windowtags/README.org][windowtags]]
- [[./util/kbd-layouts/README.org][kbd-layouts]]
- [[./util/pinentry/README.org][pinentry]]
- [[./util/command-history/README.org][command-history]]
