Code Monkey home page Code Monkey logo

stumpwm-contrib's Introduction

A collection of StumpWM modules

Documentation on modules can be found on our wiki.

Submitting a module

Right now we have an open door policy for modules. If you want it in, just submit a PR adding the module to this repo. Follow the directory structure already laid out below. Right before you’re ready to make the final PR commit, run the script ’update-readme.sh’ to have your module (and its description) added to the appropriate category. The script uses the ”:description” tag in the .asd file. The script is pretty dumb, so if your description spans multiple lines, it probably won’t show up correctly. Keep it short and sweet.

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, 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 quicklisp):

(ql:quickload "quickproject")
(quickproject:make-project #p"~/path/to/new-module" :depends-on '(stumpwm) :name "swm-new-module")

Then in ~/path/to/new-module/ you will have:

-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

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:

(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

A package.lisp looks like:

(defpackage #:swm-new-module
  (:use #:cl :stumpwm))

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

More docs here.

Third Party Modules

Advertise your module here, open a PR and include a org-mode link!

Current Modules

(click for its respective README/docs)

Utilities

ttf-fonts
A pure lisp implementation of TTF font rendering.
kbd-layouts
Keyboard layout switcher for StumpWM
screenshot
Takes screenshots and stores them as png files
alert-me
Alert me that an event is coming
ft2-fonts
An implementation of font rendering that allows users to select OTF/TTF fonts using FreeType rendering.
winner-mode
Emacs’ winner-mode for StumpWM
windowtags
Add metadata to windows to manipulate them en mass.
end-session
Provides commands to stumpwm that allow the user to shutdown, restart, and logoff through the stumpwm UI
notify
DBus-based notification server part
qubes
Integration to Qubes OS (https://www.qubes-os.org)
stumptray
System Tray for stumpwm.
numpad-layouts
A module for handling different keyboards numpad layouts
clipboard-history
Simple clipboard history module for StumpWM
globalwindows
Manipulate all windows in the current X session
urgentwindows
Allows focusing application windows that need user attention
swm-gaps
Pretty (useless) gaps for StumpWM
searchengines
Allows searching text using prompt or clipboard contents with various search engines
command-history
Save and load the stumpwm::*input-history* to a file
logitech-g15-keysyms
Describe logitech-g15-keysyms here
pass
Integrate ‘pass’ with StumpWM
surfraw
Integrates surfraw with stumpwm.
passwd
A simple password utility based on ironclad.
swm-emacs
A set of utilities for launching the beast.
pinentry
Integrate GnuPG Agent with StumpWM
app-menu
A simple application menu for launching shell commands
perwindowlayout
Change the keyboard layout per window.
undocumented
Look for stuff that should probably be in the manual that isn’t
productivity
Lock StumpWM down so you have to get work done.

Media

amixer
Manipulate the volume using amixer
aumix
Manipulate your volume with aumix

Modeline

hostname
Put hostname in the StumpWM modeline
cpu
Add cpu info to the modeline.
battery-portable
Add battery information to the modeline in a portable way.
disk
Display filesystem information in the modeline
maildir
Display maildir information in the modeline (%M conflicts with mem).
mem
Display memory in the modeline, %M conflicts with maildir.
wifi
Display information about your wifi.
net
Displays information about the current network connection.

Minor Modes

mpd
Displays information about the music player daemon (MPD).
notifications
A notification library that sends notifications to the modeline via stumpish or from stumpwm itself.

stumpwm-contrib's People

Contributors

puercopop avatar jorams avatar lepisma avatar ralt avatar jehops avatar klutometis avatar juszczakn avatar kostafey avatar 2kays avatar hying-caritas avatar kisp avatar lboc avatar luka-n avatar npavlinek avatar libre-man avatar rvm521443 avatar mosconi avatar runejuhl avatar russell avatar keens avatar valtimchenko avatar wogac avatar wsgac avatar swiftlawngnome avatar lgrapenthin avatar miacro avatar sdilts avatar kriyative avatar ereslibre avatar manandbytes avatar

Watchers

Steve Losh avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.