[HN Gopher] McCLIM - GUI toolkit for Common Lisp
       ___________________________________________________________________
        
       McCLIM - GUI toolkit for Common Lisp
        
       Author : lelf
       Score  : 135 points
       Date   : 2021-02-04 12:27 UTC (1 days ago)
        
 (HTM) web link (common-lisp.net)
 (TXT) w3m dump (common-lisp.net)
        
       | jwr wrote:
       | I really enjoyed the concepts in CLIM back when I programmed in
       | CL. These days I can't even imagine using CLOS and relying on
       | mutable state in objects. I'd much rather have my UI be a
       | function of data, which is why I enjoy using React (with
       | ClojureScript and the Rum library). But there are many ideas in
       | CLIM that are worth at least learning and thinking about (for
       | example, Presentation Types and presentations in general).
        
       | reikonomusha wrote:
       | Daniel Kochmanski [1] has been continually improving the features
       | and performance of this very advanced library. Kudos to him,
       | because it's a lot of thankless dirty work dealing with the
       | intricacies of X and the CLIM standard [2], and his work is
       | hitherto relatively unappreciated.
       | 
       | CLIM is such an interesting and different GUI paradigm, and when
       | the implementation works it's both a joy and a mind-bending
       | experience. (CLIM has been implemented and re-implemented
       | commercially and in open-source many times over in the past 30
       | years, but the OS's keep changing!)
       | 
       | In one of my first jobs I wrote a little SQL database editor with
       | LispWorks CLIM, and it was really nice to have "object
       | presentations". The non-technical staff of the company could
       | easily edit complex data/objects in this database without knowing
       | anything about what it was behind the scenes, and it didn't take
       | all that much programming to make it possible.
       | 
       | [1] http://turtleware.eu/turtleware.html
       | 
       | [2] http://bauhh.dyndns.org:8000/clim-spec/index.html
        
         | jackdaniel wrote:
         | Hey, thank you for very kind words!
        
       | jonathanstrange wrote:
       | The reason why I never tried CLIM was that it hides deep in the
       | specs what kind of host functionality is exposed and what isn't.
       | I don't even know whether I can display a context menu with a
       | right-mouse click, or whether the mouse-wheel is supported, let
       | alone things like drag&drop, etc.
       | 
       | It would be nice to see a list of what it can do and what it
       | can't do, so people can choose it for the right purpose.
        
         | jackdaniel wrote:
         | All things that you have mentioned are supported. That said,
         | I'm working on a guide for writing backends, while it won't
         | directly address this kind of questions, it should give at
         | least some picture of features used by project.
         | 
         | Many features are illustrated in a the system clim-examples.
        
       | fmakunbound wrote:
       | I'm hesitant to ask, because perhaps it's my own Linux box or
       | display driver or something... Why does McCLIM seem to flicker a
       | lot while moving the mouse over things?
        
         | jackdaniel wrote:
         | Lack of double buffering, actually that one will be merged next
         | week. I gather that you move your pointer over an image or
         | another complex record that gets highlighted (by drawing a
         | rectangle around it).
        
           | fmakunbound wrote:
           | Yes, it was when I moved the mouse over the menu bar (of the
           | climacs window iirc). I'll be sure to go look for a double
           | buffer branch and try it out!
        
       | chr wrote:
       | Recommendations for especially inspiring and/or informative
       | videos on McCLIM?
       | 
       | https://www.youtube.com/results?search_query=mcclim
        
         | mepian wrote:
         | The maintainer made this demo:
         | https://www.youtube.com/watch?v=kfBmRsPRdGg
        
           | jackdaniel wrote:
           | Fun fact: google outed me from my account a year ago (I
           | didn't bother to set up another one).
        
         | phoe-krk wrote:
         | There is a pair of videos by Jan Moringen on the Online Lisp
         | Meeting playlist - one is about an inspector written in CLIM,
         | and the other uses CLIM for helping with presenting an
         | extensible Lisp reader.
         | 
         | https://www.youtube.com/playlist?list=PLgq_B39Y_kKD9_sdCeE5S...
        
       | lukego wrote:
       | I'm doing some McCLIM hacking this week. It's fun. So far it Just
       | Works.
       | 
       | I'm writing code to draw PCB designs for fabrication. Just
       | getting started and highly speculative. I've been bouncing
       | between various programming languages and graphics toolkits now
       | at the beginning of the project and so far Lisp/CLIM feels the
       | most productive.
       | 
       | https://twitter.com/lukego/status/1357304452668088320
       | 
       | https://twitter.com/lukego/status/1357679840334409730
        
       | nerdponx wrote:
       | Maybe this is a silly question that reflects my lack of
       | understanding of how it works, but: does it support Wayland?
        
         | jackdaniel wrote:
         | The question makes sense and the answer is no, McCLIM may work
         | on wayland display server only via XWayland (there is currently
         | no explicit Wayland backend).
        
           | slyrus wrote:
           | But that would be a nice project for a hacker looking to
           | learn CLIM internals, no?
        
             | jackdaniel wrote:
             | Sure, but I'd wait for the backend writing guide I'm
             | working on - it is easy to get confused without a guide.
        
       | jackdaniel wrote:
       | Hey, I'm currently maintaining McCLIM. Cool to see in on the
       | front page of Hacker News :-). I'm occasionally dropping
       | screenshots of current things I'm working on, i.e this ad-hoc
       | animation:
       | 
       | https://twitter.com/i/status/1357289617385525248
       | 
       | I hope that you enjoy the project. We have multiple contributors
       | and it gets better with each week.
        
         | levosmetalo wrote:
         | Hey, looks great.
         | 
         | What is the state of Windows support?
         | 
         | I tried quickloading mccclim under sbcl on windows and it
         | started complaining about fontconfig.
        
           | jackdaniel wrote:
           | Currently it requires X11 server running, please see
           | https://github.com/McCLIM/McCLIM/wiki/Backends; as of
           | fontconfig, since the next release we are going to use cl-
           | dejavu to not depend on hardcoded paths. Before that you
           | should put dejavu ttf files in C:/Windows/Fonts.
        
         | mark_l_watson wrote:
         | Thanks for your work! I will spin up whatever X Windows support
         | for M1 silicon on my new MacBook and give it a try, again.
         | 
         | I have a license for LispWorks Professional, but that does not
         | include CLIM on macOS.
        
           | lispm wrote:
           | CLIM 2 for LispWorks Professional on Mac OS uses the old
           | Motif backend.
        
         | User23 wrote:
         | Thanks for supporting this!
         | 
         | How would you recommend getting started with this on a modern
         | Ubuntu or similar Linux system? I'm not a stranger to Common
         | Lisp, but it's been about 8 years since I last did anything
         | with it. Back then I used GNU Emacs and SLIME.
        
           | jackdaniel wrote:
           | Hey,
           | 
           | 1. install your favorite implementation (sbcl, ccl, ecl)
           | 
           | 2. install quicklisp (see quicklisp.org for instructions)
           | 
           | 3. > (ql:quickload 'clim-examples)
           | 
           | 4. > (clim-demo:demodemo)
           | 
           | You are all set :-) Soon(tm) we are going to switch to
           | xrender protocol (you may see wip in backend-manual branch).
        
         | Athas wrote:
         | I'm happy to see that McCLIM is still alive! I hacked on it
         | during my teenage years (I wrote Drei and a few other things),
         | although I eventually lost motivation due to the sheer vastness
         | of how much work there was to do.
         | 
         | Out of curiosity, how does McCLIM adapt to new trends such as
         | Wayland and HiDPI displays?
        
           | jackdaniel wrote:
           | Regarding HiDPI there are some ideas, but right now they are
           | not implemented (see i.e
           | https://github.com/McCLIM/McCLIM/issues/827). I'm writing a
           | vt100 terminal backend to reveal some underlying assumptions
           | about the pixel size.
           | 
           | Thank you for working on McCLIM back then! If you feel
           | motivated to join development efforts please don't hesitate
           | joining #clim @ freenode :)
        
       | roenxi wrote:
       | In a typically niche fashion, the "Guided Tour" has an abstract
       | and no pictures. What screenshots exist are divorced from code
       | samples.
       | 
       | So there is a conundrum here for the passing coder - this toolkit
       | comes from the lisp tradition so it is probably completely
       | serious when it says it is _a powerful toolkit for writing GUIs_.
       | But it appears to require a serious investment of time to figure
       | out why that is or how it might compare to a webpage of
       | Javascript.
       | 
       | Does this toolkit have killer features that are being poorly
       | articulated, or are the advantages from lots of smaller good
       | ideas?
        
         | jackdaniel wrote:
         | The toolkit is based on presentations which provide a direct
         | representation of underlying objects. That (I think) is the
         | most distinctive feature of CLIM-like systems (compared to
         | other toolkits). That said, maybe we should remove the link to
         | Guided Tour from the about page, because the manual is much
         | more comprehensive. The specification is very well written, but
         | it is rather hard to grok as a learning material.
        
       ___________________________________________________________________
       (page generated 2021-02-05 23:02 UTC)