McCLIM: A GUI Toolkit for Common Lisp
common-lisp.net
common-lisp.net
I mostly worked on Drei, which was the input editor. It finds use in Climacs (which is probably not worth using if you have Emacs), and the McCLIM Listener, which is really cool. It shows the potential of adding bits of graphics support to a classical REPL, and being able to work interactively with opaque objects.
Using CLIM is a bit like operating an artifact that somehow made its way from an alternative universe.
Two days ago I came across the "Immediate Mode GUI" approach. It has some following for example in the games or realtime graphics sector. I think it's nice and very flexible, but could imagine it falls flat for complex interaction models where you just need considerable state, and it's better to use conventional widgets which have much of the logic encapsulated:
https://www.youtube.com/watch?v=Z1qyvQsjK5Y
https://github.com/ocornut/imguiOn MS-DOS your application owned the machine when it was running, so most graphical applications controlled the rendering loop and explicitly checked the state of each widget, keyboard and mouse buttons.
A bit like the SDL event loop works, but extended to widgets as well.
There have been other systems developed which have similar approaches to simplifying desktop user interfaces; Enso comes immediately to mind. But I'm not aware of any systems that's completely replaced the notion of sandboxed applications running in their own windows and employing their own menu systems and widget layouts.
With web applications things have become many times worse. I absolutely hate all the different UI paradigms I must deal with on a daily bases.
There's empirical evidence to support the fact that I'm not in the minority either. I don't have the reference off hand but I was reading how a very large percentage of the Chinese population uses WeChat for many common, daily tasks other than chat. My claim: this is because consciously or not they don't like dealing with multiple, varying user interface paradigms.
I mostly browse the web using emacs-w3m in a terminal. It works great with the exception of javascript, which it can't handle. For that, I reluctantly switch to a traditional browser.
emacs-w3m is definitely not up to handling "every desktop user interface use case", but it's very nice for browsing the web in "plain text mode", as it were, viewing the occasional image (or more, if you're using gui emacs), and having full integration with emacs.
What I envision is something very close to Gmail's interface. But instead of just email the interface presents a list of items. Each item is of a particular type and each type has an associated renderer. A command box facilitates command entry and the result of each command is a list of these items. When an item is selected a view of the item is rendered. Items can also have tags associated with them such that we can filter item sets by tags. A resulting set of items can be piped to an ensuing command to produce another set of items.
Item renderers don't need to be read only either. For example I could issue a file search command that returned a set of files. By selecting one, if an editor renderer existed I could edit the result in place and issue a save command on the item.
I could take the paradigm even further. I could issue something like a project command that returned a set of projects where a project was really just a tag for an item which had metadata pointing to a directory path. After selecting one of these project items I might be presented with a rendered view of the directory's contents. From there I might be able to execute a build command on this item and the command would use the metadata associated with the item to build the project. The output would be a list of one item with the build results.
I've been thinking about this for a long time and the only apps I can think of that don't fit with this paradigm are apps that actually require a mouse or pen pad for input like photo shop or auto cad.
There are varying technologies which nibble around the edges of such a system but nothing that really implements it fully. Emacs comes close, the command line in a terminal comes close, Gmail exhibits aspects, Enso exhibited aspects but nothing exists which puts all the pieces together.
We are moving steadily forward, if you have any questions I'll try to answer - I'm one of the current maintainers.
Framebuffer backend working (although it uses X11, porting it to something else should be considerably easier)
OSX backend beagle is broken (bounty $400)
I suppose that's all we have atm (plus CLX backend of course, which is X11)
I recently started a project called Studio that is a suite of interactive development tools (profilers, etc.) The two frameworks that I shortlisted were McCLIM and The Glamorous Toolkit. Everything else seemed too low-level to me. (I ended up going with the latter because it was more actively developed.)
Studio: https://hydra.snabb.co/job/lukego/studio-manual/studio-manua...
The Glamorous Toolkit: http://gtoolkit.org/
small world
ps: I just peeked at the regexp function, did someone told you or did you come up with it on your own ? it's so damn short
ps: always skip the parsing.
https://common-lisp.net/project/mcclim/static/media/screensh...
If you find anything else, please let me know, I'm one of the maintainers. Picture removed.
There is still some snark in the screenshots on the site but nothing I found too off putting.
It may seem like a small thing, but content that literally says "we expect you to already know Emacs and Symbolics, if you used something else, piss off" is a major turn-off.
Given that you lisp, you're probably familiar with Emacs or the symbolics lisp machine. This environment shares some of its modality with these systems and is modeled (rather imperfectly), in their image.
that's too optimistic for sure, but how is it a turn-off without you putting different words into author's mouth?
your claim literally says "we expect you to already know Emacs and Symbolics, if you used something else, piss off" is bullshit, figuratively speaking. i just wanted to point out that your high horse of niceness is not so high or nice if you need to lean on slandering people. that's all. i don't know the guy or the software.
Please don't defend him, especially via these kind of tactical omissions.
The editor wars are not over yet. Emacs is still winning over new users, as is vim, and both are growing and improving all the time.
"A modern developer coming to Lisp would much rather use Sublime, Visual Studio Code, or even vim with appropriate plugins."
They might until they see the power of emacs tools like slime and paredit.
In reality there is plenty of support for both to continue.
Not really offensive unless you identify as Smalltalk (called a "toy"), or C++ (called a "cancerous abstraction"), but kind of shrill and not a good way to present the project.
Welcome to the wonderful world of Common Lisp, and beware: CL is addictive like a hard drug!
That guy's face on the screen is creeeepy af though...