Giter Club home page Giter Club 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 Distribution 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.

Loading a module

Loading a module can usually be done in your ~/.stumpwmrc for a module module-name using:

(load-module "module-name")

Please see README.org files for each module for further details. Missing module dependencies, can be installed with:

(ql:quickload "notify")

Third Party Modules

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

stumpwm-weather
Displays weather in the modeline
stumpwm-dmenu
StumpWM dmenu integration
stumpwm-pamixer
Pulseaudio volume and microphone control module
stumpwm-acpi-backlight
ACPI backlight control module for StumpWM
stumpwm-mullvad
StumpWM mullvad cli integration

Current Modules

(click for its respective README/docs)

Media

amixer
Manipulate the volume using amixer
stump-radio
Minimalistic mplayer-based radio for StumpWM.
stump-volume-control
Minimalistic amixer-based volume control for StumpWM.
stumpwm-mixer
Interface to FreeBSD’s built-in sound mixer
stumpwm-sndioctl
Interface to OpenBSD’s sndioctl from StumpWM.

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.

Modeline

battery-portable
Add battery information to the modeline in a portable way.
bitcoin
Display bitcoin price on StumpWM modeline.
clim-mode-line
A modeline written in CLIM
cpu
Add cpu info to the modeline.
disk
Display filesystem information in the modeline
hidden
Add hidden window info to the modeline.
hostname
Put hostname in the StumpWM modeline
maildir
Display maildir information in the modeline (%M conflicts with mem).
mem
Display memory in the modeline, %M conflicts with maildir.
net
Displays information about the current network connection.
pianobar
Display Pianobar’s now playing info in modeline
stumptray
System Tray for stumpwm.
ticker
Display ticker price on StumpWM modeline.
wifi
Display information about your wifi.

Utilities

alert-me
Alert me that an event is coming
app-menu
A simple application menu for launching shell commands
beckon
Beckon the mouse to the current window
binwarp
Keyboard-driven divide-and-conquer mouse control mode.
browse
Open the default web browser portably
clipboard-history
Simple clipboard history module for StumpWM
command-history
Save and load the stumpwm::*input-history* to a file
desktop-entry
desktop-entry
end-session
Provides commands to stumpwm that allow the user to shutdown, restart, and logoff through the stumpwm UI
globalwindows
Manipulate all windows in the current X session
gnu-pw-mgr
Reconstruct passwords with gnu-pw-mgr
swm-golden-ratio
Resize the currently focused frame to the golden ratio
kbd-layouts
Keyboard layout switcher for StumpWM
logitech-g15-keysyms
Describe logitech-g15-keysyms here
lookup
Dictionary/search engine lookup module for StumpWM.
notify
DBus-based notification server part
numpad-layouts
A module for handling different keyboards numpad layouts
pass
Integrate ‘pass’ with StumpWM
passwd
A simple password utility based on ironclad.
perwindowlayout
Change the keyboard layout per window.
pinentry
Integrate GnuPG Agent with StumpWM
swm-pomodoro
Pretty basic Pomodoro-tracker for StumpWM.
productivity
Lock StumpWM down so you have to get work done.
qubes
Integration to Qubes OS (https://www.qubes-os.org)
screenshot
Takes screenshots and stores them as png files
searchengines
Allows searching text using prompt or clipboard contents with various search engines
shell-command-history
Save and load the stumpwm::*input-shell-history* to a file
spatial-groups
Spatial Groups navigation for StumpWM
stump-backlight
Native backlight control from StumpWM
stump-lock
Screen locker in StumpWM
stump-nm
StumpWM integration with NetworkManager
surfraw
Integrates surfraw with stumpwm.
swm-clim-message
Display StumpWM messages and menus through CLIM
swm-emacs
A set of utilities for launching the beast.
swm-gaps
Pretty (useless) gaps for StumpWM
swm-ssh
A simple menu selector for ssh to a remote host for stumpwm that parses your ssh config to get available hosts
ttf-fonts
A pure lisp implementation of TTF font rendering.
undocumented
Look for stuff that should probably be in the manual that isn’t
urgentwindows
Allows focusing application windows that need user attention
wacom
Map StumpWM frames to Wacom tablets using `xsetwacom`.
windowtags
Add metadata to windows to manipulate them en mass.
winner-mode
Emacs’ winner-mode for StumpWM

stumpwm-contrib's People

Contributors

alethiophile avatar brandoninvergo avatar catap avatar dmb2 avatar eihli avatar enzuru avatar jehops avatar jorams avatar junker avatar juszczakn avatar kisp avatar klutometis avatar kostafey avatar kriyative avatar lepisma avatar mirdono avatar notarock avatar nyx-land avatar patzy avatar phikal avatar puercopop avatar ralt avatar rladams avatar santiagopim avatar sasanidas avatar szos avatar vdikan avatar voobscout avatar wsgac avatar xstrtok avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stumpwm-contrib's Issues

Useless code in stumpwm-utils.el?

Line 11 of stumpwm-contrib/utils/swm-emacs/stumpwm-utils.el reads:

(mapcar #'buffer-name (buffer-list))

Not only does this cause a warning "stumpwm-utils.el:11:2:Warning: mapcar' called for effect; usemapc' or `dolist' instead", but this line appears to serve no purpose. Should it simply be deleted?

Update windowtags module

It references functions that have have been removed in favor the SBCL specific version

  • string-to-utf8 -> sb-ext:octets-to-string
  • utf8-to-string -> sb-ext:string-to-octets

An Additional complication is that the removed functions weren't as strict as the SBCL version about the type of the arguments received. SBCL insists in received a VECTOR of (UNSIGNED-BYTE 8)s.

Also it needs to import STUMPWM:FIND-GROUP

Bug in cl-mount-info can render stumpwm instable

Hello

Unfortunately i discovered a bug in cl-mount-info that can make stumpwm (and probably the whole system) unstable.

I have fixed the issue in the git repository of the library (https://notabug.org/cage/cl-mount-info) but the version shipped with quicklisp has the bug and won't be updated until the next release.

The solution is to get the library from the above repository until quicklisp is updated.

Sorry for the inconvenience.
C.

[aumix] Remove from modules

Aumix is a rather old program and the module doesn't appear to work as advertised. I will remove in preparation from the next release at the end of May.

Failed to find the TRUENAME of /tmp/yaourt-tmp-hao/aur-stumpwm-git/src/stumpwm/package.lisp:

Some modules don't load and yield and error, specifically battery and battery-portable (so far i only tried to use those), amixer does load without any error tho.

I realize this is an Arch Linux problem, i'm trying to find a variable pointing to the file but the debugger gave no info

(find-module "amixer") -> "amixer"
(load-module "amixer") -> #<ASDF/LISP-ACTION:LOAD-OP >
                          #<ASDF/PLAN:SEQUENTIAL-PLAN {1006967AF3}>
(find-module "battery") -> "battery"
(load-module "battery") -> Failed to find the TRUENAME of /tmp/yaourt-tmp-hao/aur-stumpwm-git/src/stumpwm/package.lisp:
       No existe el fichero o el directorioBacktrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10039EE3C3}>
0: (STUMPWM::BACKTRACE-STRING)
1: (ERR "~A" #<SB-INT:SIMPLE-FILE-ERROR "~@<~?: ~2I~_~A~:>" {100644C203}>)
2: (EVAL-LINE "(load-module \"battery\")")
3: (STUMPWM::CALL-INTERACTIVELY "eval" #S(STUMPWM::ARGUMENT-LINE :STRING "eval (load-module \"battery\")" :START 28))
4: (STUMPWM::EVAL-COMMAND "eval (load-module \"battery\")" NIL)
5: (STUMPWM::HANDLE-STUMPWM-COMMANDS #<XLIB:WINDOW :0 D3>)
6: (STUMPWM::HANDLE-EVENT :DISPLAY #<XLIB:DISPLAY :0 (The X.Org Foundation R11803000)> :EVENT-KEY :PROPERTY-NOTIFY :EVENT-CODE 28 :SEND-EVENT-P NIL :SEQUENCE 15214 :WINDOW #<XLIB:WINDOW :0 D3> :EVENT-WINDOW #<XLIB:WINDOW :0 D3> :ATOM :STUMPWM_COMMAND :TIME 462695454 :STATE :NEW-VALUE)
7: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN XLIB:PROCESS-EVENT))
8: ((FLET #:WITHOUT-INTERRUPTS-BODY-387 :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK))
9: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK #<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN XLIB:PROCESS-EVENT) {7FFFF2D1767B}> #<SB-THREAD:MUTEX "CLX Event Lock" owner: #<SB-THREAD:THREAD "main thread" RUNNING {10039EE3C3}>> T NIL)
10: ((FLET SB-IMPL::TIMEOUT-BODY :IN XLIB:PROCESS-EVENT))
11: (XLIB:PROCESS-EVENT #<XLIB:DISPLAY :0 (The X.Org Foundation R11803000)> :HANDLER #<FUNCTION STUMPWM::HANDLE-EVENT> :TIMEOUT 0 :PEEK-P NIL :DISCARD-P NIL :FORCE-OUTPUT-P T)
12: ((FLET #:WITHOUT-INTERRUPTS-BODY-387 :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK))
13: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK #<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN STUMPWM::STUMPWM-INTERNAL-LOOP) {7FFFF2D17AEB}> #<SB-THREAD:MUTEX "CLX Event Lock" owner: #<SB-THREAD:THREAD "main thread" RUNNING {10039EE3C3}>> T NIL)
14: (STUMPWM::STUMPWM-INTERNAL-LOOP)
15: (STUMPWM::STUMPWM-INTERNAL ":0")
16: (STUMPWM ":0")
17: ((LAMBDA NIL :IN "/tmp/yaourt-tmp-hao/aur-stumpwm-git/src/stumpwm/make-image.lisp"))
18: ((FLET #:WITHOUT-INTERRUPTS-BODY-86 :IN SB-EXT:SAVE-LISP-AND-DIE))
19: ((LABELS SB-IMPL::RESTART-LISP :IN SB-EXT:SAVE-LISP-AND-DIE))

I saw a package.lisp file in amixer folder but i didnt see that file on battery or battery-portable folders, i tried to recreate the file but still got the error.

Need help with a bug in golden-ratio.lisp

I created this module but did not test it on multi-monitors setup, and later found a bug where going from one monitor to the other crash the on-focus-hook. It happens when the destination head has only one frame in it, and I have found where the exception come from:

(defun balance-current-group ()
  (stumpwm::balance-frames-internal (stumpwm:current-group)
                                    (list (stumpwm::tile-group-frame-head
                                           (stumpwm:current-group)
                                           (stumpwm:current-head)))))

And im trying to fix it with something like:

(defun balance-current-group ()
  (if  (not stumpwm::single-frame-p)  
    (stumpwm::balance-frames-internal (stumpwm:current-group)
                                    (list (stumpwm::tile-group-frame-head
                                           (stumpwm:current-group)
                                           (stumpwm:current-head))))))

But I can't get it to work properly. Any idea on how to fix this?

Battery-portable does not work with certain sysfs battery directories

I think battery-portable can be more robust to different kinds of monitoring support via sysfs. Some files are not available on some machines, but there is more than one way to skin a cat. In my case, capacity holds the percent charge in that file, and should be used.
On my machine:

$ ls /path/to/battery
alarm
capacity
capacity_level
charge_full
charge_full_design
charge_now
current_now
cycle_count
device
hwmon2
manufacturer
model_name
power
present
serial_number
status
subsystem
technology
type
uevent
voltage_min_design
voltage_now

Which fails because there is no power_now file.

Also, there is this comment in the lisp file:

;; energy_* seems not to be there on
;; some boxes. Strange...

Duplicated keybinding in mpd module

Both command use "S"...
<978> (kbd "S") "mpd-current-song"
<993> (kbd "S") '*mpd-search-map*
...so please change one it, eg.:
<978> (kbd "i") "mpd-current-song" ;like info

cpu gives divide by zero

I've been using stumpwm + cpu module for many years with no problems, but since I started using libvirt (virt-manager + KVM/QEMU) the other day, I get about 3 crashes in three hours, plus same thing on another computer.

Both running Arch Linux, one with fairly recent stump 1db36707e67c0e729f6203cfd5712dac6aebb109 and stump-contrib 86b5ebd, the other computer is a fresh install, with current master of both.

I can't get at the error message other than taking a picture. Looks like something where the cpu module divides by zero?
bug

stumpwm gaps broken in 19.11

StumpWM 19.11 release breaks swm-gaps on loading of the module indicating that it does not know how to reference the HEAD for manipulation.

modeline/maildir broken with new faster mode-line

StumpWM issue/pull #577 broke the maildir modeline module. Stump effectively freezes as soon as the modeline loads.

If you remove the timer code (maildir.lisp lines 83-85 plus the earlier definitions), it works fine but of course then the maildir recounts need to be triggered manually. That's fine for me because that's already what I was doing in my own customization of the code. However I'm not sure what would be the best way to properly fix it for everyone, hence just a simple bug report and not a full pull request.

Battery module doesn't work on desktop pc

Ok, i know. But i share the same config between my desktop pc and notebook. current-battery-charge was signalling an error.

For it to behave properly i had to make some minor changes. A trivial fix would be:

--- battery.lisp.orig   2015-01-09 13:44:51.903697887 -0300
+++ battery.lisp        2014-12-30 10:01:10.207440102 -0300
@@ -33,7 +33,7 @@
             (let ((split (cl-ppcre:split ":\\s*" line)))
               (setf (gethash (string-trim '(#\Space) (car split)) fields)
                     (string-trim '(#\Space) (cadr split)))))
-          ""))))
+          (make-hash-table)))))

 (defun current-battery-charge ()
   "Calculate remaining battery charge. Don't make calculation more than once in 15 seconds."
@@ -45,11 +45,11 @@
         (if (string= "no" (gethash "present" battery-state))
             (setf *bat-state* nil)
             (let ((charge-state (gethash "charging state" battery-state))
-                  (remain (parse-integer (gethash "remaining capacity" battery-state)
+                  (remain (parse-integer (gethash "remaining capacity" battery-state "0")
                                          :junk-allowed t))
-                  (rate (/ (or (parse-integer (gethash "present rate" battery-state)
+                  (rate (/ (or (parse-integer (gethash "present rate" battery-state "0")
                                               :junk-allowed t) 0) 60))
-                  (full (parse-integer (gethash "last full capacity" battery-info)
+                  (full (parse-integer (gethash "last full capacity" battery-info "100")
                                        :junk-allowed t)))
               (setf *bat-remain* (round (/ (* 100 remain) full))
                     *bat-state* charge-state

Another possible solution would be to test the presence of a battery in fmt-bat-charge (maybe probing the file "/proc/acpi/battery/BAT0", the one the module uses), and then return an empty string (as to avoid the 'no battery' message on desktops modeline).

cant get productivity do what I want

I put following in my config:

(add-to-load-path "~/.stumpwm.d/contrib/util/productivity")
(load-module "productivity")
(define-key *top-map* (kbd "S-Menu") "productivity-mode-toggle")

(setf *productivity-keys*
      '(("C-Menu"   *root-map*)
        ("Menu"   "app-send-key-menu")
    ))

the problem is when I press S-Menu it says correctly "Break time" or "Get to Work" but it changes nothing. My Menu + y command (Menu is my prefix key) always calls always "window-list" I thought in Workmode that should not happen.

here the setup of the window list and prefix key:

(set-prefix-key (kbd "Menu"))
(define-key *root-map* (kbd "y") "windowlist")

Am I understanding it wrong how to set it up or what it should do? ignore basicly everything till I press S-Menu again?

Give an indication of mute in amixer

I would like to have an indication that the volume is 0 when it is muted. I have written code to indicate this for the amixer module, would a pull request for this be appreciated?

Guide on how to add contrib modules to stumpwm after refactoring

Hello there!

I am currently using the 0.9.8 of stumpwm. I packaged it for NixOS (not yet commited). I tried to package current master, too, but failed to do it. stumpwm works, but fails to load modules. The *contrib-dir* is set properly, but that ain't enough/the right thing to do anymore, apparently.

The error message I get as soon as I am trying to load a module via (load-module ...) tells me something about a missing package.lisp and TRUENAME in a path in tmp.

I am not familiar enough with Common Lisp to help myself. Especially, asdfis completely unknown to me. Maybe a guide on how to work with the contrib modules after the split would help a lot.

clipboard-history crashes when trying to yank big things

If you try to copy Tolstoy's fantastic War and Peace into ram, and do it repeatedly, it can crash clipboard-history. I propose fixing this with some kind of continuation. This way, a user can choose to interactively:

  • clear the history
  • disable history on this one thing
  • just save it anyway and raise the limit for this session

Long notifications crash stumpwm

Long notification strings crash stumpwm because the message is drawn too far off screen. This can be either too long in the x direction or the y direction. The crash, unfortunately, does not just kill stumpwm, but locks it up so that the leader can no longer be pressed and focus can't be switched. The only way to fix it is to get into another TTY and kill it.

I have a fix (that also adds some formatting options) in pull request #168

Idea for feature request - "alert-me-at"

Hi,

I made a small command that I deem useful enough to be part of stumpwm-contrib, but am not sure if that's the opinion of maintainers. (It is pretty small, after all.)

The "alert-me-at" command will give you a remainder of something at some point in time. This is useful if you have a meeting at 3pm, it's 11am and you don't want to forget about it.

Future improvements could be adding "in 10 minutes" options, better handling errors, refactoring the repetitions in the code, etc.

Basically, the function is here: https://gist.github.com/ralt/a1c41a4a56399897a63c

Would stumpwm-contrib be open for a PR including this new module?

Cheers,
Florian

name-conflicts in util/notify

$ cat /etc/sbclrc
(load "/usr/lib/quicklisp/setup")

$ cat ~/.config/common-lisp/source-registry.conf.d/10-stumpwm.conf 
(:tree "/home/username/tmp/stumpwm-contrib/")

$ sbcl --eval "(ql:quickload :notify)"
<...truncated output...>
debugger invoked on a NAME-CONFLICT in thread
#<THREAD "main thread" RUNNING {1001BB64B3}>:
  USE-PACKAGE #<PACKAGE "DBUS/ALL"> causes name-conflicts in
  #<PACKAGE "NOTIFY"> between the following symbols:
    DBUS/MESSAGES:MESSAGE, STUMPWM:MESSAGE
<...truncated output...>

I wish I knew enough lisp to fix it, probably something really trivial, like moving a variable into different namespace or similar stuff.

Could someone take a look at it please?

Add missing contrib packages in the README

I see at least alert-me and winner-mode that are missing in the README (I probably should've added them when I made the PR to add them), but there are probably others missing?

Convert README.txt to markdown

I would like the README's (currently pulled from the commentary in the contrib files) to be written in markdown (either md or org-mode)

ttf-fonts rendering issue

To reproduce set a ttf font, and importantly, a non-white fg color (that is (set-fg-color "gray") say), and try the windows command, or any such list with highlights. Issue is I don't know where, but starts in the invert-rect function.

Attaching a screenshot illustrating the issue.

render

Reorganize utils to be less of a grab-bag

We should make some new subdirs to better organize the modules. Utils should be split:

media
minor-mode
keyboard-tools
desktop-tools
interface-tools (stumpish, stumpwm.el, debian)
stumpwm-extensions
misc

Please use cl-diskspace for the modeline/disk module

The current one is shelling out to use df, while cl-diskspace (available on quicklisp) is using the proper statvfs syscall to retrieve the information.

Given how performance sensitive the mode-line is, avoiding the shelling out makes sense.

XEMBED:*TIMESTAMP* is bound to nil when initialzing StumpTray. Expecting an (UNSIGNED-BYTE 32)

After upgrading my archlinux system with:

sudo pacman -Syyu

and re-installing the StumpWM from AUR, the stumptray no longer works. In my ~/.stumpwm.d/init.lisp file, I have the following lines:

(load-module "stumptray")
(stumptray::stumptray)

If I remove the line:

(stumptray::stumptray)

The entire init.lisp file would be evaluated successfully, but with no system tray, of course. Then if I manually evaluate the above line, I got the following errors:

The value
  NIL
is not of type
  (UNSIGNED-BYTE 32)
   [Condition of type TYPE-ERROR]

Restarts:
 0: [RETRY] Retry SLIME interactive evaluation request.
 1: [*ABORT] Return to SLIME's top level.
 2: [ABORT] abort thread (#<THREAD "worker" RUNNING {1005FDF353}>)

Backtrace:
  0: (XLIB::WRITE-VECTOR-CARD32 #<XLIB:DISPLAY :0 (The X.Org Foundation R12005000)> 24 #(NIL 502 8389191 0 0) 0 5)
  1: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN XLIB:SEND-EVENT))
  2: ((FLET "WITHOUT-INTERRUPTS-BODY-29" :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK))
  3: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK #<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN XLIB:SEND-EVENT) {7F0AA63BDDFB}> #<SB-THREAD:MUTEX "CLX Buffer Lock" owner: #<SB-THREAD:THREAD "worker" RU..
  4: (XLIB:SEND-EVENT #<XLIB:WINDOW :0 6FA> :CLIENT-MESSAGE 131072 :WINDOW #<XLIB:WINDOW :0 6FA> :TYPE :MANAGER :FORMAT 32 :DATA #(NIL 502 8389191 0 0) :PROPAGATE-P NIL)
  5: (XLIB:SEND-EVENT #<XLIB:WINDOW :0 6FA> :CLIENT-MESSAGE 131072 :WINDOW #<XLIB:WINDOW :0 6FA> :TYPE :MANAGER :FORMAT 32 :DATA #(NIL 502 8389191 0 0) :PROPAGATE-P NIL) [more]
  6: (STUMPTRAY::TRAY-INIT #S(STUMPTRAY::TRAY :WIN #<XLIB:WINDOW stumpwm/stumpwm#1=:0 800245> :SOWIN #<XLIB:WINDOW stumpwm/stumpwm#1#:0 800247> :FPWIN #<XLIB:WINDOW stumpwm/stumpwm#1#:0 800246> :VIWIN #<XLIB:WINDOW stumpwm/stumpwm#1#:0 800248> :HIWIN #<XLIB:WINDOW ..
  7: (STUMPTRAY:STUMPTRAY)
  8: (SB-INT:SIMPLE-EVAL-IN-LEXENV (STUMPTRAY:STUMPTRAY) #<NULL-LEXENV>)
  9: (EVAL (STUMPTRAY:STUMPTRAY))
 10: ((LAMBDA NIL :IN SWANK:INTERACTIVE-EVAL))
 11: (SWANK::CALL-WITH-RETRY-RESTART "Retry SLIME interactive evaluation request." #<CLOSURE (LAMBDA NIL :IN SWANK:INTERACTIVE-EVAL) {10074C788B}>)
 12: (SWANK::CALL-WITH-BUFFER-SYNTAX NIL #<CLOSURE (LAMBDA NIL :IN SWANK:INTERACTIVE-EVAL) {10074C786B}>)
 13: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SWANK:INTERACTIVE-EVAL "(stumptray::stumptray)") #<NULL-LEXENV>)
 14: (EVAL (SWANK:INTERACTIVE-EVAL "(stumptray::stumptray)"))
 15: (SWANK:EVAL-FOR-EMACS (SWANK:INTERACTIVE-EVAL "(stumptray::stumptray)") ":stumpwm" 11)
 16: ((LAMBDA NIL :IN SWANK::SPAWN-WORKER-THREAD))
 17: (SWANK/SBCL::CALL-WITH-BREAK-HOOK #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<FUNCTION (LAMBDA NIL :IN SWANK::SPAWN-WORKER-THREAD) {5363983B}>)
 18: ((FLET SWANK/BACKEND:CALL-WITH-DEBUGGER-HOOK :IN "/home/yzhao/quicklisp/local-projects/slime/swank/sbcl.lisp") #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<FUNCTION (LAMBDA NIL :IN SWANK::SPAWN-WORKER-THRE..
 19: (SWANK::CALL-WITH-BINDINGS ((*STANDARD-INPUT* . stumpwm/stumpwm#1=#<SWANK/GRAY::SLIME-INPUT-STREAM {10040E81A3}>) (*STANDARD-OUTPUT* . stumpwm/stumpwm#2=#<SWANK/GRAY::SLIME-OUTPUT-STREAM {10040E8233}>) (*TRACE-OUTPUT* . stumpwm/stumpwm#2#) (*ERR..
 20: ((LAMBDA NIL :IN SWANK::SPAWN-WORKER-THREAD))
 21: ((FLET SB-UNIX::BODY :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE))
 22: ((FLET "WITHOUT-INTERRUPTS-BODY-4" :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE))
 23: ((FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE))
 24: ((FLET "WITHOUT-INTERRUPTS-BODY-1" :IN SB-THREAD::CALL-WITH-MUTEX))
 25: (SB-THREAD::CALL-WITH-MUTEX #<CLOSURE (FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE) {7F0AA63BED7B}> #<SB-THREAD:MUTEX "thread result lock" owner: #<SB-THREAD:THR..
 26: (SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE #<SB-THREAD:THREAD "worker" RUNNING {1005FDF353}> NIL #<CLOSURE (LAMBDA NIL :IN SWANK::SPAWN-WORKER-THREAD) {1005FDF2FB}> NIL)
 27: ("foreign function: call_into_lisp")
 28: ("foreign function: new_thread_trampoline")

Please help, thanks in advance!

P.S. stumpwm was upgraded from 18.11.61.g4653857-1 to 18.11.81.gf6966ca-1

Pinentry sometimes returns the error message <character> is not bound

This makes it impossible to continue using StumpWM, because pinentry captures all the keybindings and declares them "not bound".

Reproduction:
Setup the pinentry and pass contribs.
(pass-copy) and select a password.
When pinentry comes up, hold DEL (ie. backspace).
The message DEL is not bound. is shown. The window is out of focus but it still captures all keysyms, making it impossible to use StumpWM.

Stumptray covers part of the mode-line

When right-aligning some text in the stumpwm mode-line and enabling stumptray the text will not be pushed to the left but instead is covered by the tray. It should be enough to have this in your .stumpwmrc for example:

(setf *screen-mode-line-format* "foo^>bar")
(stumptray:stumptray)

Here's a screenshot with vlc running:

tray

I'm looking at a way to fix this, but I haven't found a good solution yet. I've looked at changing render-string in color.lisp, but it seems strange to check for something in a contrib module in a core file. Any pointers or help would be greatly appreciated.

swm-gaps not working?

I followed the instructions, and yet there is nothing happening. There is no gaps even if i evaluate something like :
(setf swm-gaps:*outer-gaps-size* 200)

Thanx in advance

stumptray fails to compile

fails to compile unless i comment out the defun tray-icon-height
;;(defun tray-icon-height (tray)
;; "Returns the height of the icons embedded in the TRAY."
;; (screen-tray-icon-height (tray-screen tray)))

stumptray - module not found

very easy to repro:

;; asdf system loads perfectly fine
(ql:quickload "stumptray")
;; stumpwm doesn't know about that module
(load-module "stumptray")

[swm-gaps] gaps should not be applied to modeline

When I turn on swm-gaps it moves my modeline and adds gaps to it.
I presume this should not be the default behavior and maybe it was only tested using Polybar instead of the Stump modeline?

Screenshot:
2018-04-05-223601_1366x768_scrot

Here is my .stumpwmrc.

Removing defun add-outer-gaps function seems to fix the problem but the outergaps feature is lost.

[wifi] "Link Quality" field is missing unless "sudo"

When I enable wifi in mode-line by "%I", I got "The value NIL is not of type VECTOR" in the mode line.

Diving into the code, I found the following code cause the bug:

(qual (multiple-value-bind (match? sub)
                         (cl-ppcre:scan-to-strings "Link Quality=(\\d+)/(\\d+)" iwconfig)
                       (truncate (float (* (/ (parse-integer (aref sub 0))
                                              (parse-integer (aref sub 1)))
                                           100)))))

The cause is iwconfig does not report "Link Quality" unless run as root.

I'm using a macbook, thus not sure if this is the case for other hardware, but I guess so. The fix might be:
Option 1. remove the Link Quality
Option 2. run the command iwconfig in root priviliage

Investigate modules for bitrot and cull ones that are non-functional

This could be a potentially large project, but also fairly easy for someone new to Common Lisp. We should all the modules and remove the non-functional ones. Here's a check list:

  • modules/media/amixer
  • modules/media/aumix
  • modules/minor-mode/mpd
  • modules/minor-mode/notifications
  • modules/modeline/battery
  • modules/modeline/battery-portable
  • modules/modeline/cpu
  • modules/modeline/disk
  • modules/modeline/hostname
  • modules/modeline/maildir
  • modules/modeline/mem
  • modules/modeline/net
  • modules/modeline/wifi
  • modules/util/alert-me
  • modules/util/app-menu
  • modules/util/debian
  • modules/util/ft2-fonts
  • modules/util/globalwindows
  • modules/util/kbd-layouts
  • modules/util/logitech-g15-keysyms
  • modules/util/numpad-layouts
  • modules/util/passwd
  • modules/util/perwindowlayout
  • modules/util/productivity
  • modules/util/qubes
  • modules/util/sbclfix
  • modules/util/screenshot
  • modules/util/searchengines
  • modules/util/stumpish
  • modules/util/stumptray
  • modules/util/surfraw
  • modules/util/swm-emacs
  • modules/util/ttf-fonts
  • modules/util/undocumented
  • modules/util/urgentwindows
  • modules/util/windowtags
  • modules/util/winner-mode

No license file

This project doesn't have a COPYING file or any license notification, so I'm really not sure what license things are under... remember that the default copyright status is "all rights reserved", which is surely not what stumpwm contributors want!

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.