https://github.com/rabbibotton/clog Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Case Studies + Customer Stories + Resources * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. {{ message }} rabbibotton / clog Public * * Notifications * Fork 80 * Star 1.2k CLOG - The Common Lisp Omnificent GUI License View license 1.2k stars 80 forks Star Notifications * Code * Issues 10 * Pull requests 3 * Discussions * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Security * Insights rabbibotton/clog This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 1 branch 9 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/r] Use Git or checkout with SVN using the web URL. [gh repo clone rabbib] Work fast with our official CLI. Learn more about the CLI. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @rabbibotton rabbibotton Merge pull request #280 from melisgl/main ... 6302deb Jun 15, 2023 Merge pull request #280 from melisgl/main follow up on PAX changes 6302deb Git stats * 1,362 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github Create FUNDING.yml December 3, 2021 09:12 clogframe Update README.md September 3, 2022 22:07 demos added js api clogframe_quit() September 2, 2022 16:58 doc update docs September 14, 2022 19:06 source Merge pull request #280 from melisgl/main June 14, 2023 12:43 static-files support auto complete with packages August 16, 2022 20:32 templates create panel in window-content October 27, 2022 15:37 test add declare ignores July 18, 2022 22:58 tools Fix typo January 11, 2023 13:42 tutorial adds font-css and correct tutorial 28 December 7, 2022 12:49 .gitattributes fix git attrib file September 2, 2022 08:29 .gitignore custom slots on panels February 3, 2022 22:49 CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md January 23, 2021 22:26 CONCEPT.md just a couple of typos August 31, 2022 23:01 LEARN.md final webgl binding and examples for now August 15, 2022 21:25 LICENSE add connection-body February 8, 2022 17:59 MACOS.md Add tip for remapping command key to be a second meta on Mac June 9, 2022 13:57 NATIVE.md builder in clogframe September 2, 2022 17:53 README.md Update README.md December 26, 2022 13:51 VSCODE.md update documentation, remove tabs July 18, 2022 22:26 WEBSERVER.md update documentation, remove tabs July 18, 2022 22:26 WINDOWS.md update Windows install December 11, 2022 13:39 clean update documentation, remove tabs July 18, 2022 22:26 clog.asd Only depend on cl-issac if it will be used. February 8, 2023 19:47 make-builder builder in clogframe September 2, 2022 17:53 make-docs doc updates August 22, 2022 16:27 run-builder more options for startup August 30, 2022 11:34 run-render batch command line rendering of .clog files August 31, 2022 13:58 View code CLOG - The Common Lisp Omnificent GUI David Botton david@botton.com License BSD 3-Clause License README.md CLOG - The Common Lisp Omnificent GUI David Botton david@botton.com License BSD 3-Clause License View the HTML Documentation: https://rabbibotton.github.io/clog/clog-manual.html View the CLOG "Plunger" Video series (more weekly) and learn by example how to use the CLOG Builder to create a pro-app: https://www.youtube.com/playlist?list= PLSUeblYuDUiOucAaqkrVlmOG4p-q7lFU6 LEARN COMMON-LISP AND CLOG - LEARN.md --------------------------------------------------------------------- Image of CLOG The Common Lisp Omnificent GUI, CLOG for short, uses web technology to produce graphical user interfaces for applications locally or remotely. CLOG can take the place, or work alongside, most cross-platform GUI frameworks and website frameworks. The CLOG package starts up the connectivity to the browser or other websocket client (often a browser embedded in a native template application.) CLOG - Technical Overview and Purpose STATUS: CLOG and CLOG Builder 1.7 released. CLOG is actually based on GNOGA, a framework I wrote for Ada in 2013 and used in commercial production code for the last 9+ years. CLOG itself is already used in commerical products, corporate websites, and other opensource projects. CLOG is being actively extended with new tools and new custom controls but the core API is stable and proven, the Builder is rich in features. Check the github discussion boards for the latest. Some potential applications for CLOG: * Cross-platform GUIs and Reports * Secure websites and complex interactive web applications * Mobile software (CLOG Runs native on Android and iOS) * Massive multiplayer online games * Monitoring software for embedded systems * A fun way to teach programming and advanced multi-tasking parallel programming techniques. (CLOG is a parallel GUI) * And the list goes on The key to CLOG is the relationship it forms with a Browser window or Browser control compiled to native code. CLOG uses websockets for communications and the browser to render a GUI that maintains an active soft realtime connection. For most CLOG applications all programming logic, events and decisions are done on the server which can be local, or remote over the web. CLOG is developed with ECL and SBCL, it is tested fairly regulary on Linux, Windows, Rasberry Pi (running Ubuntu), M1 and Intel Mac. It should in theory work out of the box on any system with Quicklisp (although you could hand install) and CLACK (easily switched out and the ecl Android/iPhone branch for example doesn't use). CLOG is in QuickLisp (ql:quickload :clog), however I recommend installing Ultralisp into your QuickLisp as you likely want the most up to date version or you can also clone the github repo into ~/ common-lisp directory [or other quicklisp/asdf findable directory (push #P"path/to/dir/of/projects" ql:*local-project-directories*) ]: For git (you need the ace editor plug in for the builder too from git): cd ~/common-lisp git clone https://github.com/rabbibotton/clog.git git clone https://github.com/rabbibotton/clog-ace.git git clone https://github.com/rabbibotton/clog-terminal.git To update in the future go to the created directories and type: git pull To add UltraLisp to QuickLisp (_RECOMMENDED_): To add UtraLisp to quicklisp install: (ql-dist:install-dist "http://dist.ultralisp.org/" :prompt nil) To update to latest packages do _often_ to get the latest: (ql:update-all-dists) Then as always: (ql:quickload :clog) List of plugins for CLOG on UltraLisp - https://ultralisp.org/tags/ clog-plugin/ To load this package and work through tutorials (assuming you have Quicklisp configured.) Note: If using portacle for Windows you will need to update Quicklisp use (ql:update-dist "quicklisp") You will also likely need to copy the sqlite3 dll from https://www.sqlite.org/download.html to portacle \win\lib Consider a custom install on windows 1. Start emacs then M-x slime 2. In the REPL, run: CL-USER> (ql:quickload :clog) CL-USER> (clog:run-tutorial 1) Tip for Windows WSL linux user. Install "sudo apt install xdg-utils" to install xdg-open so that run-tutorial uses the windows browser. To see where the source, tutorial and demo files are: CL-USER> (clog:clog-install-dir) You can the run the demos with: CL-USER> (ql:quickload :clog) CL-USER> (clog:run-demo 1) The CLOG Builder tool can be run with: CL-USER> (ql:quickload :clog/tools) CL-USER> (clog-tools:clog-builder) You can also open a "clog-repl" window in your browser to play from the common-lisp repl: CL-USER> (in-package clog-user) CLOG-USER> (clog-repl) CLOG-USER> (setf (background-color *body*) "beige") CLOG-USER> (create-div *body* :content "Hello World!") The clog-repl URL is http://127.0.0.1:8080/repl body will always refer to the last access of that URL. To open a browser with the CLOG manual: CL-USER> (clog:open-manual) Work your way through the tutorials. You will see how quick and easy it is to be a CLOGer. Image of clog-builder Image of clog-builder-web Image of demo1 Image of demo2 Image of demo3 Image of clog-db-admin Image of clog-web-containers Here is a sample CLOG app: (defpackage #:clog-user ; Setup a package for our work to exist in (:use #:cl #:clog) ; Use the Common Lisp language and CLOG (:export start-tutorial)) ; Export as public the start-tutorial function (in-package :clog-user) ; Tell the "reader" we are in the clog-user package ;; Define our CLOG application (defun on-new-window (body) ; Define the function called on-new-window "On-new-window handler." ; Optional docstring to describe function (let ((hello-element ; hello-element is a local variable that ; will be bound to our new CLOG-Element ;; This application simply creates a CLOG-Element as a child to the ;; CLOG-body object in the browser window. ;; A CLOG-Element represents a block of HTML (we will later see ways to ;; directly create buttons and all sorts of HTML elements in more ;; lisp-like ways with no knowledge of HTML or JavaScript. (create-child body "