Giter Site home page Giter Site logo

stumpwm-contrib's Introduction

The Stump Window Manager

Gitter

StumpWM is a window manager written entirely in Common Lisp. It attempts to be highly customizable while relying entirely on the keyboard for input. You will not find buttons, icons, title bars, tool bars, or any of the other conventional GUI widgets.

These design decisions reflect the growing popularity of productive, customizable lisp based systems.

Philosophy

StumpWM is a "everything-and-the-kitchen-sink WM" or "the Emacs of WMs."

StumpWM:Windows::Emacs:Text

  • StumpWM is
    • Hackable
    • Written in Common Lisp
    • A multi paradigm window manager
    • A Superior window managing experience
  • StumpWM is not
    • Minimalist
    • Narrow scope
    • Configured by editing the source directly
    • A full blown desktop environment

If you want a minimalist tiling window manager, then StumpWM is not what you're looking for. The code base is ~15k lines, the binaries produced are ~60mb.

StumpWM manages windows the way emacs manages buffers, or the way screen manages terminals. If you want a flexible, customizable, hackable desktop experience, look no further.

Build & Start Stumpwm

Prerequisites

  • SBCL
  • quicklisp (for obtaining the following dependencies; not needed if you use your distribution's package manager.)
  • clx
  • cl-ppcre
  • alexandria

The recommended way to install the dependencies is using Quicklisp. Follow the instructions at http://www.quicklisp.org/ to install it. In short:

$ curl -O https://beta.quicklisp.org/quicklisp.lisp
$ sbcl --load quicklisp.lisp

Then at the REPL:

(quicklisp-quickstart:install)

Make sure you have added it to your lisp init file using:

 (ql:add-to-init-file)

Then, in a repl:

 (ql:quickload "clx")
 (ql:quickload "cl-ppcre")
 (ql:quickload "alexandria")

Note: The recommended way to install SBCL is by downloading one of their pre-built binaries available in their web page or build it from source. Please do not install SBCL using your distributions package manager, especially Ubuntu. If you do so it is likely that you'll run into problems when building StumpWM due to using obsolete versions of the dependencies.

Building

Building stumpwm from git requires that you build the configure script:

 ./autogen.sh

Then run it:

 ./configure

Now build it:

 make

If all goes well, you should have a stumpwm binary now. You can run the binary from where it is (starting it with X) or install it, along with the .info documentation, with:

 make install

Now that you have a binary, call it from your ~/.xinitrc file:

 # The default path is /usr/local/bin/stumpwm
 echo /path/to/stumpwm >> ~/.xinitrc
 startx

Hopefully that will put you in X running stumpwm! See StartUp on the wiki for more examples.

Contributing

Pull requests are always welcome! Here are some guidelines to ensure that your contribution gets merged in a timely manner:

  • Do's
    • Add your name to the list of AUTHORS with your pull request.
    • Preserve comments or docstrings explaining what code does, and update them if your patch changes them in a significant way
    • Try to follow an "80 column rule." The current code base does not follow this all the time, so don't use it as an example
    • If you export a symbol, you must add it to the manual.
    • Use lisp idioms
    • If you are working on a major change to the internals, keep us informed on stumpwm-devel! Also, it will probably help if the changes are made and then incrementally applied to the codebase in order to avoid introducing show-stopping bugs.
    • Run ./ci before making a pull request to confirm that the GitHub workflow will succeed.
  • Do not's
    • Include Emacs local variables
    • Change whitespace
    • Write lots of code without supporting comments/documentation
    • Delete comments or docstrings (yes this is a duplicate of above!)
    • Export symbols from packages that aren't widely useful (many times a little more thought will reveal how to implement your internal change without having to export/break encapsulation)
    • Make stylistic changes that suit your coding style/way of thinking

If you aren't a lisp hacker, you can contribute in the form of documenting and organizing the wiki. There's a lot of information floating around; if you find it where you didn't expect it, move or link to it in a more logical place.

Wishlist

Fancy yourself a lisp hacker? Here's a wishlist of features for the StumpWM universe (in no particular order):

  • float-splits (ie allow floating windows over tiled ones)
  • Float windows within parent applications (specifically dialogs in gimp or firefox).
  • tab-list showing the contents of the current frame at the side, top, or bottom of the frame
  • Emacs' iswitchb function implemented in emacs
    • Re-arranging windows between groups
    • Killing windows
    • Marking windows for batch operations
    • Deleting/adding groups
    • Import data from stumpwm to emacs, use an emacs minor mode to implement the above features, then export the data back to stumpwm and let stumpwm perform the appropriate actions
  • Emacs' completing-read-multiple function
  • Lock Screen (with support for leaving notes, bonus points if emacs is involved)
  • Wallpapers! (support pulling from remote sources, changing based on timers, and other hacky features)
  • Shutdown, restart, suspend, and hibernate functions that don't require root access
  • Revamped, mouse-friendly mode-line.
    • Support fixed number of chars for window titles
    • Dynamically trim window titles to fit them all on the mode-line
    • Split the mode-line into multiple cells for containing different information
    • Implement widget icons to indicate system status (new mail, low battery, network etc)
    • Support raising windows when left-clicked, closing/killing when right-clicked

Help

There's a texinfo manual, stumpwm.texi. The build scripts generate an info file you can read in emacs or with the `info' program. The manual for the latest git version (may be slightly out of date) is available to read online at: The Manual

And, as in Emacs, you can always get documentation with:

Key Help
C-t h v Variables
C-t h f Functions
C-t h k Key sequences
C-t h c Commands
C-t h w Find key sequences for a command

For other stuff (tips tricks and examples) visit the stumpwm wiki

There's a #stumpwm channel on irc.libera.chat, too.

Finally, there's our mailing list (click to sign up) [email protected].

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

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.

[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

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

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.

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 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.

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.

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?

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

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.

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)))

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

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).

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?

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

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!

[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.

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

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?

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?

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

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.

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?

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 - 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")

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

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

[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.

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

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

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?

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...

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.

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)

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.