Source of https://sdf.org/~vito/
Mirrors:
Calm down and draw something, in Lisp.
Home Page: https://vitovan.com/calm/
License: GNU General Public License v2.0
Mirrors:
And this file should be associated in the Finder or File Explorer, double click to run it.
This could be easily improved, and need to be improved at a higher priority.
Since our first CALM friend @Hellseher mentioned it.
Many developers didn't use Cairo or Pango to draw text, instead they use SDL2_ttf.
So we could:
and this may also fix #17
Related: #18
The reason is not yet clear, maybe it's caused by the upgrade of Quicklisp or SBCL.
It has been solved by the following approach:
rm /Applications/Calm.app/Contents/MacOS/calm.core
rm -rf ~/.cache/common-lisp/sbcl-2.3.*
We could write this in the document, or provide some mechanism to prevent this?
There should be at least some prompt tips?
While running github workflow, it will take about 7 minutes, and github won't cache this for TAG triggered builds.
We might need a precompiled SBCL with compression for Windows, maybe this could also benefit Linux as well.
Could be related to #21
0.1.3...0.1.4#diff-450217fafb1125c6c1048da28e4a126ddcbb193d560fec8ee7167137c6daea86
Because I accidentally deleted calmNoConsole.exe.
Damn!
This might be achieved by modifying the icon of SBCL
instead of the current:
(in-package #:calm)
It should be something like:
(in-package #:calm-user)
User code should be at user-space level, this also could avoid the WARNINGs about redefining functions.
The current description of CALM is:
Canvas Aided Lisp Magic: Create canvas-based applications with Lisp and distribute them on Linux, macOS, Windows, and the web.
Another version is:
A Lisp development environment that enables you to build and distribute canvas based applications as Linux AppImage, macOS Application Bundle, Windows Installer and Web Application.
Which one do you prefer?
maybe we should use Mix_Music like this one:
This might be archived by ECL
~/Downloads/calm-dmg/Calm - CALM/Calm.app/Contents/MacOS $ ./calm
CALM_CMD=show
APP_DIR=/Users/vito/Downloads/calm-dmg/Calm - CALM/Calm.app/Contents/MacOS/
CALM_DIR=/Users/vito/Downloads/calm-dmg/Calm - CALM/Calm.app/Contents/MacOS/
SBCL_HOME=/Users/vito/Downloads/calm-dmg/Calm - CALM/Calm.app/Contents/MacOS/sbcl/lib/sbcl
LIB_PATH=/Users/vito/Downloads/calm-dmg/Calm - CALM/Calm.app/Contents/MacOS/lib
EXECUTING: DYLD_FALLBACK_LIBRARY_PATH="/Users/vito/Downloads/calm-dmg/Calm - CALM/Calm.app/Contents/MacOS/lib" /Users/vito/Downloads/calm-dmg/Calm - CALM/Calm.app/Contents/MacOS/sbcl/bin/sbcl --no-sysinit --no-userinit --load entry.lisp
sh: /Users/vito/Downloads/calm-dmg/Calm: No such file or directory
The current implementation:
Lines 9 to 15 in 94e45f9
Could be replaced by:
https://wiki.libsdl.org/SDL2/SDL_SetHint
https://wiki.libsdl.org/SDL2/CategoryHints
https://wiki.libsdl.org/SDL2/SDL_HINT_RENDER_DRIVER
Chocolatey and Fedora didn't ship the SBCL with compression enabled yet.
This will end up with huge size binaries while calm dist
.
On macOS 13, we call create-dmg like this:
create-dmg --skip-jenkins ...
We do not call any apple scripts to beautify the dmg, because of actions/runner-images#7531
We should keep this issue open until it was fixed on github side.
To support the Visual Studio extension Alive
I still can't find any other suitable editor for Lisp newcomers.
Lem is too hard to install, Emacs is too intimidating.
I see CALM recently got added to QuickLisp (in the october release).
While the calm
CLI obviously wouldn't be added to the path (unless added programmatically via eg uiop
calling shell commands), is the Quicklisp distribution otherwise usable? And if so can we add a note in the README so that people know it's an option?
I propose the following changes in CALM:
Make all user-related calm
command on Windows Bash-free
Windows users don't deserve the torment of Bash, they should suffer CMD or Powershell.
If this were done, the sh
folder could be renamed to s
(as script).
Organise the current calm
command into the following form:
calm s
Running internal scripts, this should not be exposed to the end-user, but should not prevent anyone using them either. But they are meant to be changed at anytime.
calm publish
Publish the current CALM project into a fancy distributable package, i.e. AppImage / macOS Application inside DMG / Windows Installer
calm share
Share the current CALM project as an ZIP file, with the following 2 options
calm share
with no more arguments
Generate *.calm
file, it is actually just an ZIP file packed with canvas.lisp
and assets
+ src
directory if they exist alongside with canvas.lisp
.
This file should be easily opened on any CALM installed machine, there should be file-type associations if the OS has that kind of support.
calm share --with-runtime
This command will generate an ZIP file contains all the 3rd party dependencies and a pre-dumped CALM image (from the sample application, without loading the current canvas.lisp
). A warning should be shown to the user to inform that to make this method working, Quicklisp or any other 3rd party dependencies should not be used.
Except calm s
, all the other end-user commands could be provided with an interactive shell, i.e. ask questions like 'What's the name of your app?'
https://vitovan.com/calm/examples-0.1.1/meditator/calm.html
Meditator building needs:
export REBUILD_WASM_P=yes
since it requires extra files to be packed.
The CALM Application will hang if there is no audio device.
Would it hurt someone?
Or, will it be good?
There should be the ability to load .env
file.
CDK, include:
If we start CALM command inside $HOME
directory, the font-config will search for all the fonts inside this directory recursively, that will cause huge pain to the developers.
Should delete the following line:
Lines 18 to 19 in ff4c42b
cannot be opened because the developer cannot be verified.
cannot be opened because the developer cannot be verified.
cannot be opened because the developer cannot be verified.
cannot be opened because the developer cannot be verified.
cannot be opened because the developer cannot be verified.
cannot be opened because the developer cannot be verified.
cannot be opened because the developer cannot be verified.
cannot be opened because the developer cannot be verified.
cannot be opened because the developer cannot be verified.
cannot be opened because the developer cannot be verified.
cannot be opened because the developer cannot be verified.
cannot be opened because the developer cannot be verified.
cannot be opened because the developer cannot be verified.
If we use docker image fedora:36
then the glibc is 2.35
https://src.fedoraproject.org/rpms/glibc
I think glibc 2.33 would do the job.
Line 19 in 452e851
OS: Windows 10
What I did:
C:\calm
.calm.exe
Error opening shared object "SDL2_image.dll":
The specified procedure could not be found.
I ensured the dll's are present
C:\calm\lib\SDL2.dll
C:\calm\lib\SDL2_image.dll
C:\calm\lib\SDL2_mixer.dll
Here is the "complete" powershell output
LIB_PATH=C:\calm\lib
LIB_ENV=C:\calm;C:\calm\lib
CALM_CMD=core
inherited CALM_APP_DIR=C:\Users\sgraetz\
inherited CALM_HOME=C:\calm\
SBCL_HOME=C:\calm\sbcl\lib\sbcl
PATH=C:\calm;C:\calm\lib
EXECUTING: "C:\calm\sbcl\bin\sbcl" --noinform --no-sysinit --no-userinit --load entry.lisp
To load "calm":
Load 1 ASDF system:
calm
; Loading "calm"
.....................While evaluating the form starting at line 8, column 0
of #P"C:/calm/entry.lisp":
debugger invoked on a CFFI:LOAD-FOREIGN-LIBRARY-ERROR in thread
#<THREAD "main thread" RUNNING {10044B8113}>:
Unable to load foreign library (LIBSDL2-IMAGE).
Error opening shared object "SDL2_image.dll":
The specified procedure could not be found.
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [RETRY ] Try loading the foreign library again.
1: [USE-VALUE ] Use another library instead.
2: [TRY-RECOMPILING ] Recompile library and try loading it again
3: [RETRY ] Retry
loading FASL for #<CL-SOURCE-FILE "sdl2-image" "library">.
4: [ACCEPT ] Continue, treating
loading FASL for #<CL-SOURCE-FILE "sdl2-image" "library">
as having been successful.
5: Retry ASDF operation.
6: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the
configuration.
7: Retry ASDF operation.
8: Retry ASDF operation after resetting the
configuration.
9: [ABORT ] Give up on "calm"
10: [REGISTER-LOCAL-PROJECTS ] Register local projects and try again.
11: [RETRY ] Retry EVAL of current toplevel form.
12: [CONTINUE ] Ignore error and continue loading file "C:\\calm\\entry.lisp".
13: Abort loading file "C:\\calm\\entry.lisp".
14: Ignore runtime option --load "entry.lisp".
15: Skip rest of --eval and --load options.
16: Skip to toplevel READ/EVAL/PRINT loop.
17: [EXIT ] Exit SBCL (calling #'EXIT, killing the process).
(CFFI::FL-ERROR "Unable to load foreign library (~A).~% ~A" LIBSDL2-IMAGE "Error opening shared object \"SDL2_image.dll\":
The specified procedure could not be found.")
source: (ERROR 'LOAD-FOREIGN-LIBRARY-ERROR :FORMAT-CONTROL CONTROL
:FORMAT-ARGUMENTS ARGUMENTS)
0]
If there was an application requires extra dependencies other than the ones bundled with CALM, it should be picked up.
It is larger than the size of the total zipped content
instead of the current #:calm
open-audio-if-not-yet
should return the current state instead of NIL
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.