From 2e834bd879a862e4737ea1a01e9829255f9fdfdd Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Sun, 29 Jan 2023 00:14:53 -0800 Subject: [PATCH 1/3] Add Running on Linux page that describes new Linux installation packages in the Medley repo. --- .../running/{online => 10-online}/_index.md | 0 .../usingOnline/Login_Screen.png | Bin .../usingOnline/Online_Initial_Medley.png | Bin .../usingOnline/_index.md | 0 .../en/running/{build => 20-build}/_index.md | 0 .../running/{build => 20-build}/building.md | 0 .../running/{build => 20-build}/releases.md | 0 content/en/running/30-running-on-linux.md | 183 ++++++++++++++++++ ...running-on-mac.md => 40-running-on-mac.md} | 0 ...running-on-win.md => 50-running-on-win.md} | 0 ...th-docker.md => 60-running-with-docker.md} | 0 11 files changed, 183 insertions(+) rename content/en/running/{online => 10-online}/_index.md (100%) rename content/en/running/{online => 10-online}/usingOnline/Login_Screen.png (100%) rename content/en/running/{online => 10-online}/usingOnline/Online_Initial_Medley.png (100%) rename content/en/running/{online => 10-online}/usingOnline/_index.md (100%) rename content/en/running/{build => 20-build}/_index.md (100%) rename content/en/running/{build => 20-build}/building.md (100%) rename content/en/running/{build => 20-build}/releases.md (100%) create mode 100644 content/en/running/30-running-on-linux.md rename content/en/running/{running-on-mac.md => 40-running-on-mac.md} (100%) rename content/en/running/{running-on-win.md => 50-running-on-win.md} (100%) rename content/en/running/{running-with-docker.md => 60-running-with-docker.md} (100%) diff --git a/content/en/running/online/_index.md b/content/en/running/10-online/_index.md similarity index 100% rename from content/en/running/online/_index.md rename to content/en/running/10-online/_index.md diff --git a/content/en/running/online/usingOnline/Login_Screen.png b/content/en/running/10-online/usingOnline/Login_Screen.png similarity index 100% rename from content/en/running/online/usingOnline/Login_Screen.png rename to content/en/running/10-online/usingOnline/Login_Screen.png diff --git a/content/en/running/online/usingOnline/Online_Initial_Medley.png b/content/en/running/10-online/usingOnline/Online_Initial_Medley.png similarity index 100% rename from content/en/running/online/usingOnline/Online_Initial_Medley.png rename to content/en/running/10-online/usingOnline/Online_Initial_Medley.png diff --git a/content/en/running/online/usingOnline/_index.md b/content/en/running/10-online/usingOnline/_index.md similarity index 100% rename from content/en/running/online/usingOnline/_index.md rename to content/en/running/10-online/usingOnline/_index.md diff --git a/content/en/running/build/_index.md b/content/en/running/20-build/_index.md similarity index 100% rename from content/en/running/build/_index.md rename to content/en/running/20-build/_index.md diff --git a/content/en/running/build/building.md b/content/en/running/20-build/building.md similarity index 100% rename from content/en/running/build/building.md rename to content/en/running/20-build/building.md diff --git a/content/en/running/build/releases.md b/content/en/running/20-build/releases.md similarity index 100% rename from content/en/running/build/releases.md rename to content/en/running/20-build/releases.md diff --git a/content/en/running/30-running-on-linux.md b/content/en/running/30-running-on-linux.md new file mode 100644 index 000000000..04951b52c --- /dev/null +++ b/content/en/running/30-running-on-linux.md @@ -0,0 +1,183 @@ +--- +title: Running on Linux (including WSL) +weight: 50 +type: docs +--- + +Medley can run on any Linux system that includes X Windows, including Windows +System For Linux (WSL2 only) on Windows 11 and Windows 10 Build 19044+. + +It is also recommended that the Linux system have a web browser installed. +For WSL installations, the browser(s) on the Windows side will suffice. +A browser is not strictly necessary to run Medley, but several features of the system +(e.g., displaying some user documentation) will not work without an external browser +installed. + +Medley can be installed on your system in one of two configurations: *standard* and +*local*. Standard installation will install Medley into system directories and install +any prerequisite packages. Local installation will install Medley into any user directory +but any prerequisite packages must be installed manually. + + +## Standard Installation \(Debian-based systems only\) + +Standard installations are currently supported only for Debian-based systems (i.e., +systems that support dpkg), including Debian-based distros on WSL. + +In a standard installation, Medley is installed in system directories +(specifically, /usr/local/interlisp) and support like man pages and (a link to) the +medley executable are also installed in standard system locations (e.g., /usr/local/man +and /usr/local/bin). + +Standard installations are ideal for users who want to explore Medley (including its +system code) or to develop applications built on top of Medley. Standard installations +are not good for users who want to modify the Medley system code, since that code is +installed in protected locations. + +Standard installation uses `apt` to install a .deb package downloaded from +[the Medley downloads site](https://online.interlisp.org/downloads/medley_downloads.html). +The .deb package will install Medley as well as any other packages needed for Medley to +run. + +There are separate .deb packages for "standard" Linux and for WSL (as well as for the +three machine architectures - X86_64, ARM64, ARMv7). The WSL packages differ only in +that they include an additional functionality to have Medley display in a VNC Window +instead of a standard X Window. This is useful on high resolution displays since +the VNC window will scale according to the Windows Settings->Display->Scale setting, +while the X Window on WSL will not so scale. The WSL packages also install the wslu +package, which is used by Medley to connect to external browsers as described above. +Aside from these two features, a non-WSL .deb package will install and run on WSL. + +To install a standard package and run Medley: + +1. Download + + Using a browser download from + [the Medley downloads site](https://online.interlisp.org/downloads/medley_downloads.html) + the .deb package for your platform (i.e., "standard" Linux or WSL) and your machine + architecture (X86_64, ARM64, or ARMv7) to \. + +2. Install + + In a terminal: + + ``` + ubuntu@oio:~$ sudo apt update + ubuntu@oio:~$ sudo apt install -y + ``` + +3. Run + + In a terminal: + + ``` + ubuntu@oio:~$ medley + ``` + + There are many options to the `medley` command. For a brief overview, run `medley --help`. + For a more complete description, run `man medley` or `medley --man` or click + [here](https://online.interlisp.org/downloads/man_medley.html). + + For first-time users: `medley --apps` or for WSL `medley --apps --vnc` is a good starting + point. This will give you a fully populated Medley system, including the applications built + on Medley such as Notecards and Rooms. + + Note: By default, `medley` will create a directory in *$HOME/il*. This will be used by the Medley + system as its *LOGINDIR*. Medley will start up with *LOGINDIR* as its current connected directory. + It will load the personal init file (if any) from *LOGINDIR*/INIT or *LOGINDIR*/INIT.LCOM. Finally, + Medley will use *LOGINDIR*/vmem/ to store its virtual memory file(s). The location of *LOGINDIR* + can be changed using the `--logindir` option to `medley`. + + + +## Local Installation + +In a local installation, the Medley system is installed into any user directory from a .tar file. +Multiple "Medleys" can be installed in different directories on one machine without interference +(except see description of Medley *LOGINDIR* below). Local installation makes it easy (from a file +management p.o.v.) to modify the Medley system code. + +Local installation doesn't involve a package manager, so you are responsible for installing any +prerequisite packages onto your system before you installing Medley. + +Also note that with local installations, `man medley` will not work. However, as indicated below, +`./medley --man` will show the medley man page. + +To install and run Medley locally: + +1. Install prerequite packages + + * For non-WSL installations, use your distro's package manager to install `xdg-utils`. + + * For WSL all installations, use your distro's package manager to install `wslu`. + + Note that some distros do not include `wslu` in their standard repos. See + [https://wslutiliti.es/wslu/install.html](https://wslutiliti.es/wslu/install.html) + for installation instructions if this is the case. + + Also note that `wslu v4.0` does not work with Medley, so you will need to install + either a version < v.40 or >= v4.1. + + + * For WSL installations where the VNC feature will be used, install the `tigervnc-standalone-server` and `tigervnc-xorg-extension` packages. + + When using the VNC feature Medley will display in a VNC Window instead of a standard X Window. + This is useful on high resolution displays since the VNC window will scale according to the + Windows Settings->Display->Scale setting, while the X Window on WSL will not so scale. + + Note that Medley will install and run even if none of these prerequite packages are installed. + However, some features (e.g., viewing documentation in an external browser) will be inoperable. + +2. Download + + Using a browser download from + [the Medley downloads site](https://online.interlisp.org/downloads/medley_downloads.html) + the tar (.tgz) file for your platform (i.e., "standard" Linux or WSL) and your machine + architecture (X86_64, ARM64, or ARMv7) to \. + +3. Install Medley + + In a terminal: + + ``` + ubuntu@oio:~$ mkdir + ubuntu@oio:~$ tar -C -xzf + ``` + +4. Run Medley + + In a terminal: + + ``` + ubuntu@oio:~$ cd + ubuntu@oio:~$ ./medley + ``` + + There are many options to the `medley` command. For a brief overview, run `./medley --help`. + For a more complete description, run `./medley --man` or click + [here](https://online.interlisp.org/downloads/man_medley.html). + + For first-time users: `./medley --apps` or for WSL (and you have installed the VNC prerequisites) + `./medley --apps --vnc` is a good starting point. This will give you a fully populated Medley system, + including the applications built on Medley such as Notecards and Rooms. + + Note: By default, `medley` will create a directory in *$HOME/il*. This will be used by the Medley + system as its *LOGINDIR*. Medley will start up *LOGINDIR* as its current connected directory. + It will load any personal init file from *LOGINDIR*/INIT or *LOGINDIR*/INIT.LCOM. Finally, + Medley will use *LOGINDIR*/vmem/ to store its virtual memory file(s). The location of *LOGINDIR* + can be changed using the `--logindir` option to `medley`. In particular, if you have multiple + installations of Medley that you would like to keep completely seperate, then you can use the + `--logindir -` option, which will set *LOGINDIR* to \/logindir. + + + + + + + + + + + + + diff --git a/content/en/running/running-on-mac.md b/content/en/running/40-running-on-mac.md similarity index 100% rename from content/en/running/running-on-mac.md rename to content/en/running/40-running-on-mac.md diff --git a/content/en/running/running-on-win.md b/content/en/running/50-running-on-win.md similarity index 100% rename from content/en/running/running-on-win.md rename to content/en/running/50-running-on-win.md diff --git a/content/en/running/running-with-docker.md b/content/en/running/60-running-with-docker.md similarity index 100% rename from content/en/running/running-with-docker.md rename to content/en/running/60-running-with-docker.md From 70583403d6da694f4fb0bd2ab4dd1f7631e3537f Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Mon, 30 Jan 2023 15:38:56 -0800 Subject: [PATCH 2/3] Reverting filenames in running section back to previous names; adjusted weights of .md files in running section to set my preferred ordering; added a script in the scripts directory to print out the weights of the files/subdirs within a directory --- content/en/running/build/_index.md | 65 +++++++ content/en/running/build/building.md | 25 +++ content/en/running/build/releases.md | 9 + content/en/running/online/_index.md | 18 ++ .../online/usingOnline/Login_Screen.png | Bin 0 -> 39939 bytes .../usingOnline/Online_Initial_Medley.png | Bin 0 -> 29739 bytes .../en/running/online/usingOnline/_index.md | 63 ++++++ content/en/running/running-on-linux.md | 183 ++++++++++++++++++ content/en/running/running-on-mac.md | 35 ++++ content/en/running/running-on-win.md | 61 ++++++ content/en/running/running-with-docker.md | 15 ++ scripts/weights.sh | 29 +++ 12 files changed, 503 insertions(+) create mode 100644 content/en/running/build/_index.md create mode 100644 content/en/running/build/building.md create mode 100644 content/en/running/build/releases.md create mode 100644 content/en/running/online/_index.md create mode 100644 content/en/running/online/usingOnline/Login_Screen.png create mode 100644 content/en/running/online/usingOnline/Online_Initial_Medley.png create mode 100644 content/en/running/online/usingOnline/_index.md create mode 100644 content/en/running/running-on-linux.md create mode 100644 content/en/running/running-on-mac.md create mode 100644 content/en/running/running-on-win.md create mode 100644 content/en/running/running-with-docker.md create mode 100755 scripts/weights.sh diff --git a/content/en/running/build/_index.md b/content/en/running/build/_index.md new file mode 100644 index 000000000..b6ab923ef --- /dev/null +++ b/content/en/running/build/_index.md @@ -0,0 +1,65 @@ +--- +title: Building the Interlisp system +weight: 60 +url: /doc/build.html +aliases: +- /_pages/doc/build.html +type: docs +--- + +Medley Interlisp is open-source and may be obtained from GitHub. It is portable to many different Linux and Apple MacOS systems, as well as Windows using WSL2. + +The core is written in portable C. The system currently depends on an X11 system for its display. + +### Obtaining The System + +The system comes in two parts. The first is a C-based virtual machine [Maiko](https://github.com/interlisp/maiko). + +The remainder of the system is OS / architecture-independent and can be found in the [Medley repository](https://github.com/interlisp/medley). + +You can now download Medley Interlisp from a release without building anything; see the Medley [README](https://github.com/interlisp/medley/#readme) + +See The Maiko [README](https://github.com/Interlisp/maiko/#readme) for build instructions for Maiko, for systems for which there is no pre-built release. + +(See [Medley repo README](https://github.com/Interlisp/medley/#readme) for instructions on getting Medley. +Make sure you have an X-server running to manage the Medley Interlisp display, and the DISPLAY environment variable set to point to your X-server. + +Running Medley can be done by typing: + +```bash +$ cd medley +$ ./run-medley +``` + +Or, if you wish to start Medley up with a particular image file (SYSOUT): + +```bash +$ cd medley +$ ./run-medley +``` + +The first time the system is run it loads the system image that comes +with the system. When you exit the system (or "do a `SaveVM`" menu option) +the state of your machine is saved +in a file named `~/lisp.virtualmem`. Subsequent system startups +load the `~/lisp.virtualmem` image by default. + +### Exiting The System + +The system may be exited from an Interlisp prompt by typing: + +```lisp +(LOGOUT) +``` + +Or from a Common Lisp prompt with: + +```lisp +(IL:LOGOUT) +``` + +When you logout of the system, Medley automatically creates a binary +dump of your system located in your home directory named +``lisp.virtualmem''. The next time you run the system, if you don't +specify a specific image to run, Medley restores that image so that +you can continue right where you left off. diff --git a/content/en/running/build/building.md b/content/en/running/build/building.md new file mode 100644 index 000000000..872289648 --- /dev/null +++ b/content/en/running/build/building.md @@ -0,0 +1,25 @@ +--- +title: Building Medley Interlisp +weight: 3 +type: docs +--- + +Medley Interlisp is open-source and may be obtained from GitHub. It is +portable to many different Linux and Apple MacOS systems, as well as Windows using WSL2. + +The core is written in portable C. The system currently depends on an +X11 system for its display. + +## Obtaining The System + +The system comes in two parts. The first is a C-based +virtual machine [maiko](https://github.com/interlisp/maiko). + +The remainder of the system is OS / architecture-independent and can be found in +the [medley](https://github.com/interlisp/medley) repository. + +You can now download Medley Interlisp from a [release](https://github.com/interlisp/medley/releases) +without building anything; see [medley README](https://github.com/Interlisp/medley#readme) + +See [The Maiko README](https://github.com/Interlisp/maiko#readme) for build instructions +for Maiko, for systems for which there is no pre-built release. diff --git a/content/en/running/build/releases.md b/content/en/running/build/releases.md new file mode 100644 index 000000000..6c9d3f79e --- /dev/null +++ b/content/en/running/build/releases.md @@ -0,0 +1,9 @@ +--- +title: Releases +weight: 8 +type: docs +--- + +[Medley repo releases](https://github.com/interlisp/medley/releases) contains the current Medley release. New releases are generated regularly as functionality is restored and extended. + +An alternative is to point your browser to [Online Interlisp](https://online.interlisp.org/) and try our cloud hosted version of Medley Interlisp. diff --git a/content/en/running/online/_index.md b/content/en/running/online/_index.md new file mode 100644 index 000000000..ed1558d06 --- /dev/null +++ b/content/en/running/online/_index.md @@ -0,0 +1,18 @@ +--- +title: Interlisp Online +weight: 10 +type: docs +--- + +[Interlisp Online](https://online.interlisp.org/user/login) provides access to a version of Medley running in the cloud. You can login as a guest, but if you want to save state from one session to the next, you should create an acccount. All that is needed is an email address and password. Once an account has been created you can log in and start a Medley Interlisp session. + +Sessions are preserved (we hope) but may be deleted after 30 days of inactivity. Running online should be good for experimenting and introducing yourself to the environment. Anything you create in the online environment should be treated as transient. If you're interested in developing and experimenting with Lisp programs then you will want to investigate other options. But, for a first foray, this is a good starting place. The Interlisp/online repository may have more details. + +### Things to note when running online + +* Browser compatibility +* Watch out for control-character conflicts (control-W always gets me) +* Security not guaranteed +* Need a solid net connection to our AWS server (currently in Ohio) +* Back to time-sharing +* Maximum load 256/16 24 simultaneous sessions diff --git a/content/en/running/online/usingOnline/Login_Screen.png b/content/en/running/online/usingOnline/Login_Screen.png new file mode 100644 index 0000000000000000000000000000000000000000..b22ecd96cea595410d19c0afa9392c3b7e71bc2e GIT binary patch literal 39939 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 QNC5S?p=|&u(YzP@FWsiA?f?J) literal 0 HcmV?d00001 diff --git a/content/en/running/online/usingOnline/Online_Initial_Medley.png b/content/en/running/online/usingOnline/Online_Initial_Medley.png new file mode 100644 index 0000000000000000000000000000000000000000..36170d7473ae0498e41e6d2c637d0a4b1cb3674e GIT binary patch literal 29739 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 Interlisp Online Login {{< /imgproc >}} + You may either login as a Guest or create an account. If you plan to save and later retrieve files, [register](https://online.interlisp.org/user/register) and create an account. Guest logins are not guaranteed to perserve sessions and stored files. + +However, if you just want to get a taste of Interlisp without the extra effort of creating an account, the guest login will suit your needs. + +* Select the Exec you want to run. For this exercise, select `Interlisp` +* Leave the `Fill browser window` option set. + +Select `Run Medley`. Your browser will open a window that represents the Interlisp Desktop and looks much like this: + +{{< imgproc Online_Initial_Medley Resize "800x450">}} Medley Interlisp{{< /imgproc >}} + +The Interlisp Desktop at startup contains 4 windows of interest: + +* Prompt Window: The black window at the top of the screen. It is used to display system or application prompts +* Exec (INTERLISP) window: The main window where you run functions and develop programs. +* Medley logo window: A window containing the Interlisp Medley logo as a bit map. +* Status Bar window + +### Writing Interlisp programs + +In the Exec window, type the following: + +```lisp +(PLUS 1 1) +``` + +When you complete typing the ending `)` the Interlisp interpreter will perform the calculation and return the result. + +One thing you probably noticed, the command `PLUS` is capitalized. It’s not that the developers of Interlisp were always shouting at each other. Rather, when Interlisp was developed computer programming was in its infancy and standards for naming commands were still evolving. + +### Managing memory images and sessions + +In Interlisp, there are two types of files relevant to managing memory images and updating them across sessions: `lisp.virtualmem` and `.sysout`. + +The `lisp.virtualmem` file is a capture of the "current" state of the system (i.e., it is a copy of the virtual memory at a point in time). `lisp.virtualmem` is written whenever you execute `(IL:LOGOUT)` and also whenever executing `(IL:SAVEVM)`. You can restart Medley using a `lisp.virtualmem` and it will pick up essentially where it left off before the `LOGOUT` or `SAVEVM` (with the exception that the user can set `BEFORE`/`AFTER` and `LOGOUT`/`SAVEVM` code that runs before you get control of the restarted `lisp.virtualmem`). + +A `.sysout` is a virtual memory image produced by `MAKESYS` (for writing an image for distribution) and `SYSOUT` (for saving a named checkpoint, e.g. to revert to a previous state if needed), which differ in the way they process the startup options. You can (and most frequently do) start Medley from a sysout file. When Medley starts from a sysout, it automatically runs initialization scripts β€” a site initialization script followed by a per-user initialization script (if available). A sysout is what you might call "a clean image". + +As for Interlisp Online: except as noted below, every time you `Run Medley` you are starting up from a sysout file (i.e., from a clean image). The exception is if you check the `Resume previous session` box. In that case, you will be starting up from the `lisp.virtualmem` stored for you online (if any) and that was created by the `(IL:LOGOUT)` at the end of your previous session. + +As a registered Interlisp Online user you get the choice of resuming your previous image or starting from a clean image β€” with the default being starting from a clean image. + +For guest logins, there is no `Resume previous session` because `lisp.virtualmem` is never preserved for guests. + +For registered users, any files that you create (e.g., with `IL:MAKEFILE`) will also be preserved across sessions online. But these files will never be automatically loaded into the system when you re-start with a clean image β€” you need to `LOAD` them explicitly (or add a `LOAD` to your personal `INIT` file stored online at `{DSK}/home/medley/il/INIT`). + +### Save your program as a file + +### Opening a saved program + +### What next? diff --git a/content/en/running/running-on-linux.md b/content/en/running/running-on-linux.md new file mode 100644 index 000000000..0c6da9255 --- /dev/null +++ b/content/en/running/running-on-linux.md @@ -0,0 +1,183 @@ +--- +title: Running on Linux (incl. WSL) +weight: 20 +type: docs +--- + +Medley can run on any Linux system that includes X Windows, including Windows +System For Linux (WSL2 only) on Windows 11 and Windows 10 Build 19044+. + +It is also recommended that the Linux system have a web browser installed. +For WSL installations, the browser(s) on the Windows side will suffice. +A browser is not strictly necessary to run Medley, but several features of the system +(e.g., displaying some user documentation) will not work without an external browser +installed. + +Medley can be installed on your system in one of two configurations: *standard* and +*local*. Standard installation will install Medley into system directories and install +any prerequisite packages. Local installation will install Medley into any user directory +but any prerequisite packages must be installed manually. + + +## Standard Installation \(Debian-based systems only\) + +Standard installations are currently supported only for Debian-based systems (i.e., +systems that support dpkg), including Debian-based distros on WSL. + +In a standard installation, Medley is installed in system directories +(specifically, /usr/local/interlisp) and support like man pages and (a link to) the +medley executable are also installed in standard system locations (e.g., /usr/local/man +and /usr/local/bin). + +Standard installations are ideal for users who want to explore Medley (including its +system code) or to develop applications built on top of Medley. Standard installations +are not good for users who want to modify the Medley system code, since that code is +installed in protected locations. + +Standard installation uses `apt` to install a .deb package downloaded from +[the Medley downloads site](https://online.interlisp.org/downloads/medley_downloads.html). +The .deb package will install Medley as well as any other packages needed for Medley to +run. + +There are separate .deb packages for "standard" Linux and for WSL (as well as for the +three machine architectures - X86_64, ARM64, ARMv7). The WSL packages differ only in +that they include an additional functionality to have Medley display in a VNC Window +instead of a standard X Window. This is useful on high resolution displays since +the VNC window will scale according to the Windows Settings->Display->Scale setting, +while the X Window on WSL will not so scale. The WSL packages also install the wslu +package, which is used by Medley to connect to external browsers as described above. +Aside from these two features, a non-WSL .deb package will install and run on WSL. + +To install a standard package and run Medley: + +1. Download + + Using a browser download from + [the Medley downloads site](https://online.interlisp.org/downloads/medley_downloads.html) + the .deb package for your platform (i.e., "standard" Linux or WSL) and your machine + architecture (X86_64, ARM64, or ARMv7) to \. + +2. Install + + In a terminal: + + ``` + ubuntu@oio:~$ sudo apt update + ubuntu@oio:~$ sudo apt install -y + ``` + +3. Run + + In a terminal: + + ``` + ubuntu@oio:~$ medley + ``` + + There are many options to the `medley` command. For a brief overview, run `medley --help`. + For a more complete description, run `man medley` or `medley --man` or click + [here](https://online.interlisp.org/downloads/man_medley.html). + + For first-time users: `medley --apps` or for WSL `medley --apps --vnc` is a good starting + point. This will give you a fully populated Medley system, including the applications built + on Medley such as Notecards and Rooms. + + Note: By default, `medley` will create a directory in *$HOME/il*. This will be used by the Medley + system as its *LOGINDIR*. Medley will start up with *LOGINDIR* as its current connected directory. + It will load the personal init file (if any) from *LOGINDIR*/INIT or *LOGINDIR*/INIT.LCOM. Finally, + Medley will use *LOGINDIR*/vmem/ to store its virtual memory file(s). The location of *LOGINDIR* + can be changed using the `--logindir` option to `medley`. + + + +## Local Installation + +In a local installation, the Medley system is installed into any user directory from a .tar file. +Multiple "Medleys" can be installed in different directories on one machine without interference +(except see description of Medley *LOGINDIR* below). Local installation makes it easy (from a file +management p.o.v.) to modify the Medley system code. + +Local installation doesn't involve a package manager, so you are responsible for installing any +prerequisite packages onto your system before you installing Medley. + +Also note that with local installations, `man medley` will not work. However, as indicated below, +`./medley --man` will show the medley man page. + +To install and run Medley locally: + +1. Install prerequite packages + + * For non-WSL installations, use your distro's package manager to install `xdg-utils`. + + * For WSL all installations, use your distro's package manager to install `wslu`. + + Note that some distros do not include `wslu` in their standard repos. See + [https://wslutiliti.es/wslu/install.html](https://wslutiliti.es/wslu/install.html) + for installation instructions if this is the case. + + Also note that `wslu v4.0` does not work with Medley, so you will need to install + either a version < v.40 or >= v4.1. + + + * For WSL installations where the VNC feature will be used, install the `tigervnc-standalone-server` and `tigervnc-xorg-extension` packages. + + When using the VNC feature Medley will display in a VNC Window instead of a standard X Window. + This is useful on high resolution displays since the VNC window will scale according to the + Windows Settings->Display->Scale setting, while the X Window on WSL will not so scale. + + Note that Medley will install and run even if none of these prerequite packages are installed. + However, some features (e.g., viewing documentation in an external browser) will be inoperable. + +2. Download + + Using a browser download from + [the Medley downloads site](https://online.interlisp.org/downloads/medley_downloads.html) + the tar (.tgz) file for your platform (i.e., "standard" Linux or WSL) and your machine + architecture (X86_64, ARM64, or ARMv7) to \. + +3. Install Medley + + In a terminal: + + ``` + ubuntu@oio:~$ mkdir + ubuntu@oio:~$ tar -C -xzf + ``` + +4. Run Medley + + In a terminal: + + ``` + ubuntu@oio:~$ cd + ubuntu@oio:~$ ./medley + ``` + + There are many options to the `medley` command. For a brief overview, run `./medley --help`. + For a more complete description, run `./medley --man` or click + [here](https://online.interlisp.org/downloads/man_medley.html). + + For first-time users: `./medley --apps` or for WSL (and you have installed the VNC prerequisites) + `./medley --apps --vnc` is a good starting point. This will give you a fully populated Medley system, + including the applications built on Medley such as Notecards and Rooms. + + Note: By default, `medley` will create a directory in *$HOME/il*. This will be used by the Medley + system as its *LOGINDIR*. Medley will start up *LOGINDIR* as its current connected directory. + It will load any personal init file from *LOGINDIR*/INIT or *LOGINDIR*/INIT.LCOM. Finally, + Medley will use *LOGINDIR*/vmem/ to store its virtual memory file(s). The location of *LOGINDIR* + can be changed using the `--logindir` option to `medley`. In particular, if you have multiple + installations of Medley that you would like to keep completely seperate, then you can use the + `--logindir -` option, which will set *LOGINDIR* to \/logindir. + + + + + + + + + + + + + diff --git a/content/en/running/running-on-mac.md b/content/en/running/running-on-mac.md new file mode 100644 index 000000000..1003b9a69 --- /dev/null +++ b/content/en/running/running-on-mac.md @@ -0,0 +1,35 @@ +--- +title: Running on MacOS +weight: 30 +type: docs +--- + +*DRAFT -- This page is currently being revised.* + + +## online + requires a recent version of Safari or Chrome or Firefox. + +## docker desktop + +Running with Docker Desktop is an option, but installing locally is better. + +## Install from release + + +We don't have it build automation yet, but usually a release will include a build for darwin.aarch64. + +## install medley from release, build maiko + +Need XCode +Need XQuartz installed before you build maiko (includes XClient libraries). + +* Requirements + +- Intel or M1/M2 Macintosh (or even older) +- XQuartz Macintosh X server for your OS/mac vintage) + + +## XQuartz settings + +emulate 3-button mouse diff --git a/content/en/running/running-on-win.md b/content/en/running/running-on-win.md new file mode 100644 index 000000000..9213ba587 --- /dev/null +++ b/content/en/running/running-on-win.md @@ -0,0 +1,61 @@ +--- +title: Running on Windows +weight: 40 +type: docs +--- +## Running on Windows + +* Interlisp Online seems to works fine with recent Edge and Chrome; we've tested others but don't regularly use them. +WARNING: Window/Chrome and Edge use keystrokes (control-W for example) that conflict with Medley use. + +* Docker Desktop is a great possibility, too, if your system can run it. +* Otherwise, to run installed, you either need + * WSLg (available with Windows 11) OR + * WsL2 A running X-server installed on your machine + +WsL stands for "Windows Subsystem for Linux". It's like docker but a little more integrated (You can get at your linux files from windows and your windows files from linux). + +## Running on Windows with WSL2 + +For users of Windows 10 or 11 (pro), running in WSL2 is a good choice. This requires installing both Maiko, the underlying engine, and Medley. This option requires at least a little familiarity with Linux and running Linux within Microsoft's WSL environment. + +### X Server selection + +The X11 protocol was invented quite a while ago (inspired by Warren Teitelman and Bob Sproull's Alto Display protocol as part of early Interlisp window system work.) + +With X11, the notion of "client" and "server" are reversed. The software you run to manage the display and windows is the "server", and the thing far away which is running with access to files and doing the work is the "client". + +When you run WSL it's like you have two (or more) computers in one box, where one is running windows and the other(s) are running Linux. The linux side(s) have their own Internet Protocol address. + +The thing that hooks them together is the "DISPLAY" variable in the linux side has the address of the "client". + +There have apparently been some (mainly unsuccessful) attempts to simplify this for windows 11 users. + +If you're running Windows 10, you will also need to install an X11 server within your Windows environment. There are different servers with varying capabilities and problems. + +* [Cygwin/X](https://x.cygwin.com) +* [XMing](http://www.straightrunning.com/XmingNotes/) (the 6.9 release is old but usable). +* X410 (in the Microsoft Store, $40) -- useful uses windows sockets. + https://x410.dev/cookbook/wsl/using-x410-with-wsl2#vsock + - [VcXsrv](https://sourceforge.net/projects/vcxsrv/) +* GWSL from Microsoft store +* install Xvnc and [TightVNC Version 2.8.63 or higher](https://www.tightvnc.com/download.php) + +### X Server and Windows and Monitor sleep + +If your windows system or monitor don't sleep by the schedule, there is a [WSLg problem](https://github.com/microsoft/wslg/issues/380) that they didn't want your Windows machine to fall asleep when watching a Linux-side video. If this turns out to be a problem, set your IDLE.PROFILE to TIMEOUT (to run a "screen saver") and then LOGOUT later. + +## Requirements + - Windows 10 *or* Windows 11 + - Windows Subsystem for Linux Enabled. [Installing WSL](https://docs.microsoft.com/en-us/windows/wsl/install). + - An installed Linux distribution. The following distros have been tested: + - [Pengwin Linux Distro](https://www.microsoft.com/store/apps/9NV1GV1PXZ6P) + - [Ubuntu Linux Distro](https://www.microsoft.com/en-us/p/ubuntu/9nblggh4msv6) + +### Installing Medley via an Install script + +*tbd* + +### Manual Installation of Medley + +The [medley repo README](https://github.com/Interlisp/medley#readme) has a guide for downloading or building your own maiko (for your OS / architecture) and for obtaining Medley diff --git a/content/en/running/running-with-docker.md b/content/en/running/running-with-docker.md new file mode 100644 index 000000000..7bab32891 --- /dev/null +++ b/content/en/running/running-with-docker.md @@ -0,0 +1,15 @@ +--- +title: Running with Docker +weight: 50 +type: docs +--- + +As an experiment, we've set up a way to use Medley Interlisp via a pre-built Docker configuration. As part of the experiment, we've set up a docker container that contains Xvnc (a kind of protocol gateway) so you would just need a VNC client. + +If this is your first time working with Docker, you'll want to [install it](https://docs.docker.com/get-docker/) before continuing. + +You'll also need a modern VNC client; [TightVNC](https://www.tightvnc.com/) works well. Rumor has it that Macs and Linux use VNC normally for screen sharing. + +``` +docker run -p 5900:5900 -e DISPLAY=$DISPLAY --rm --name interlisp interlisp/medley +``` diff --git a/scripts/weights.sh b/scripts/weights.sh new file mode 100755 index 000000000..5beb04bbb --- /dev/null +++ b/scripts/weights.sh @@ -0,0 +1,29 @@ +#!/bin/bash +############################################################################### +# +# weights.sh - print out the weights (and names) of the .md files in the +# directory $1 as wellas the weights (and names) of any _index.md +# files in the subdirectories of $1, sorted by increasing weight. +# +# Frank Halasz 2023-01-30 +# +# Copyright 2023 Interlisp.org +# +############################################################################### + + +if [ -z "$1" ]; then dir="."; else dir="$1"; fi +find "${dir}" -mindepth 2 -maxdepth 2 -name _index.md -exec grep -i -H weight {} \; >/tmp/weights-$$ +find "${dir}" -mindepth 1 -maxdepth 1 -type f \ + ! -name _index.md ! -name "weights.sh" ! -name "*.swp" \ + -exec grep -i -H weight {} \; \ + >>/tmp/weights-$$ +sed -i \ + -e "s/:\s*weight:/ /" \ + -e "s/\s+/ /" \ + -e "s/\s+\$//" \ + -e "s#${dir%/}/##" \ + -e "s/_index.md//" \ + /tmp/weights-$$ +awk "{print \$2 \"\t\" \$1}" < /tmp/weights-$$ | sort -n + From e1cef4a90124fe35669135e3421027a92adb0e65 Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Mon, 30 Jan 2023 15:40:52 -0800 Subject: [PATCH 3/3] Ooops. Forgot to git add -u to pick up some of the changes in the last commit. This picks up those changes. --- content/en/running/10-online/_index.md | 18 -- .../10-online/usingOnline/Login_Screen.png | Bin 39939 -> 0 bytes .../usingOnline/Online_Initial_Medley.png | Bin 29739 -> 0 bytes .../running/10-online/usingOnline/_index.md | 63 ------ content/en/running/20-build/_index.md | 65 ------- content/en/running/20-build/building.md | 25 --- content/en/running/20-build/releases.md | 9 - content/en/running/30-running-on-linux.md | 183 ------------------ content/en/running/40-running-on-mac.md | 35 ---- content/en/running/50-running-on-win.md | 61 ------ content/en/running/60-running-with-docker.md | 15 -- scripts/weights.sh | 2 +- 12 files changed, 1 insertion(+), 475 deletions(-) delete mode 100644 content/en/running/10-online/_index.md delete mode 100644 content/en/running/10-online/usingOnline/Login_Screen.png delete mode 100644 content/en/running/10-online/usingOnline/Online_Initial_Medley.png delete mode 100644 content/en/running/10-online/usingOnline/_index.md delete mode 100644 content/en/running/20-build/_index.md delete mode 100644 content/en/running/20-build/building.md delete mode 100644 content/en/running/20-build/releases.md delete mode 100644 content/en/running/30-running-on-linux.md delete mode 100644 content/en/running/40-running-on-mac.md delete mode 100644 content/en/running/50-running-on-win.md delete mode 100644 content/en/running/60-running-with-docker.md diff --git a/content/en/running/10-online/_index.md b/content/en/running/10-online/_index.md deleted file mode 100644 index 8132aabc8..000000000 --- a/content/en/running/10-online/_index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Interlisp Online -weight: 2 -type: docs ---- - -[Interlisp Online](https://online.interlisp.org/user/login) provides access to a version of Medley running in the cloud. You can login as a guest, but if you want to save state from one session to the next, you should create an acccount. All that is needed is an email address and password. Once an account has been created you can log in and start a Medley Interlisp session. - -Sessions are preserved (we hope) but may be deleted after 30 days of inactivity. Running online should be good for experimenting and introducing yourself to the environment. Anything you create in the online environment should be treated as transient. If you're interested in developing and experimenting with Lisp programs then you will want to investigate other options. But, for a first foray, this is a good starting place. The Interlisp/online repository may have more details. - -### Things to note when running online - -* Browser compatibility -* Watch out for control-character conflicts (control-W always gets me) -* Security not guaranteed -* Need a solid net connection to our AWS server (currently in Ohio) -* Back to time-sharing -* Maximum load 256/16 24 simultaneous sessions diff --git a/content/en/running/10-online/usingOnline/Login_Screen.png b/content/en/running/10-online/usingOnline/Login_Screen.png deleted file mode 100644 index b22ecd96cea595410d19c0afa9392c3b7e71bc2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39939 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 QNC5S?p=|&u(YzP@FWsiA?f?J) diff --git a/content/en/running/10-online/usingOnline/Online_Initial_Medley.png b/content/en/running/10-online/usingOnline/Online_Initial_Medley.png deleted file mode 100644 index 36170d7473ae0498e41e6d2c637d0a4b1cb3674e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29739 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 Interlisp Online Login {{< /imgproc >}} - You may either login as a Guest or create an account. If you plan to save and later retrieve files, [register](https://online.interlisp.org/user/register) and create an account. Guest logins are not guaranteed to perserve sessions and stored files. - -However, if you just want to get a taste of Interlisp without the extra effort of creating an account, the guest login will suit your needs. - -* Select the Exec you want to run. For this exercise, select `Interlisp` -* Leave the `Fill browser window` option set. - -Select `Run Medley`. Your browser will open a window that represents the Interlisp Desktop and looks much like this: - -{{< imgproc Online_Initial_Medley Resize "800x450">}} Medley Interlisp{{< /imgproc >}} - -The Interlisp Desktop at startup contains 4 windows of interest: - -* Prompt Window: The black window at the top of the screen. It is used to display system or application prompts -* Exec (INTERLISP) window: The main window where you run functions and develop programs. -* Medley logo window: A window containing the Interlisp Medley logo as a bit map. -* Status Bar window - -### Writing Interlisp programs - -In the Exec window, type the following: - -```lisp -(PLUS 1 1) -``` - -When you complete typing the ending `)` the Interlisp interpreter will perform the calculation and return the result. - -One thing you probably noticed, the command `PLUS` is capitalized. It’s not that the developers of Interlisp were always shouting at each other. Rather, when Interlisp was developed computer programming was in its infancy and standards for naming commands were still evolving. - -### Managing memory images and sessions - -In Interlisp, there are two types of files relevant to managing memory images and updating them across sessions: `lisp.virtualmem` and `.sysout`. - -The `lisp.virtualmem` file is a capture of the "current" state of the system (i.e., it is a copy of the virtual memory at a point in time). `lisp.virtualmem` is written whenever you execute `(IL:LOGOUT)` and also whenever executing `(IL:SAVEVM)`. You can restart Medley using a `lisp.virtualmem` and it will pick up essentially where it left off before the `LOGOUT` or `SAVEVM` (with the exception that the user can set `BEFORE`/`AFTER` and `LOGOUT`/`SAVEVM` code that runs before you get control of the restarted `lisp.virtualmem`). - -A `.sysout` is a virtual memory image produced by `MAKESYS` (for writing an image for distribution) and `SYSOUT` (for saving a named checkpoint, e.g. to revert to a previous state if needed), which differ in the way they process the startup options. You can (and most frequently do) start Medley from a sysout file. When Medley starts from a sysout, it automatically runs initialization scripts β€” a site initialization script followed by a per-user initialization script (if available). A sysout is what you might call "a clean image". - -As for Interlisp Online: except as noted below, every time you `Run Medley` you are starting up from a sysout file (i.e., from a clean image). The exception is if you check the `Resume previous session` box. In that case, you will be starting up from the `lisp.virtualmem` stored for you online (if any) and that was created by the `(IL:LOGOUT)` at the end of your previous session. - -As a registered Interlisp Online user you get the choice of resuming your previous image or starting from a clean image β€” with the default being starting from a clean image. - -For guest logins, there is no `Resume previous session` because `lisp.virtualmem` is never preserved for guests. - -For registered users, any files that you create (e.g., with `IL:MAKEFILE`) will also be preserved across sessions online. But these files will never be automatically loaded into the system when you re-start with a clean image β€” you need to `LOAD` them explicitly (or add a `LOAD` to your personal `INIT` file stored online at `{DSK}/home/medley/il/INIT`). - -### Save your program as a file - -### Opening a saved program - -### What next? diff --git a/content/en/running/20-build/_index.md b/content/en/running/20-build/_index.md deleted file mode 100644 index 50ba5d8ed..000000000 --- a/content/en/running/20-build/_index.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Building the Interlisp system -weight: 10 -url: /doc/build.html -aliases: -- /_pages/doc/build.html -type: docs ---- - -Medley Interlisp is open-source and may be obtained from GitHub. It is portable to many different Linux and Apple MacOS systems, as well as Windows using WSL2. - -The core is written in portable C. The system currently depends on an X11 system for its display. - -### Obtaining The System - -The system comes in two parts. The first is a C-based virtual machine [Maiko](https://github.com/interlisp/maiko). - -The remainder of the system is OS / architecture-independent and can be found in the [Medley repository](https://github.com/interlisp/medley). - -You can now download Medley Interlisp from a release without building anything; see the Medley [README](https://github.com/interlisp/medley/#readme) - -See The Maiko [README](https://github.com/Interlisp/maiko/#readme) for build instructions for Maiko, for systems for which there is no pre-built release. - -(See [Medley repo README](https://github.com/Interlisp/medley/#readme) for instructions on getting Medley. -Make sure you have an X-server running to manage the Medley Interlisp display, and the DISPLAY environment variable set to point to your X-server. - -Running Medley can be done by typing: - -```bash -$ cd medley -$ ./run-medley -``` - -Or, if you wish to start Medley up with a particular image file (SYSOUT): - -```bash -$ cd medley -$ ./run-medley -``` - -The first time the system is run it loads the system image that comes -with the system. When you exit the system (or "do a `SaveVM`" menu option) -the state of your machine is saved -in a file named `~/lisp.virtualmem`. Subsequent system startups -load the `~/lisp.virtualmem` image by default. - -### Exiting The System - -The system may be exited from an Interlisp prompt by typing: - -```lisp -(LOGOUT) -``` - -Or from a Common Lisp prompt with: - -```lisp -(IL:LOGOUT) -``` - -When you logout of the system, Medley automatically creates a binary -dump of your system located in your home directory named -``lisp.virtualmem''. The next time you run the system, if you don't -specify a specific image to run, Medley restores that image so that -you can continue right where you left off. diff --git a/content/en/running/20-build/building.md b/content/en/running/20-build/building.md deleted file mode 100644 index 872289648..000000000 --- a/content/en/running/20-build/building.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Building Medley Interlisp -weight: 3 -type: docs ---- - -Medley Interlisp is open-source and may be obtained from GitHub. It is -portable to many different Linux and Apple MacOS systems, as well as Windows using WSL2. - -The core is written in portable C. The system currently depends on an -X11 system for its display. - -## Obtaining The System - -The system comes in two parts. The first is a C-based -virtual machine [maiko](https://github.com/interlisp/maiko). - -The remainder of the system is OS / architecture-independent and can be found in -the [medley](https://github.com/interlisp/medley) repository. - -You can now download Medley Interlisp from a [release](https://github.com/interlisp/medley/releases) -without building anything; see [medley README](https://github.com/Interlisp/medley#readme) - -See [The Maiko README](https://github.com/Interlisp/maiko#readme) for build instructions -for Maiko, for systems for which there is no pre-built release. diff --git a/content/en/running/20-build/releases.md b/content/en/running/20-build/releases.md deleted file mode 100644 index 6c9d3f79e..000000000 --- a/content/en/running/20-build/releases.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Releases -weight: 8 -type: docs ---- - -[Medley repo releases](https://github.com/interlisp/medley/releases) contains the current Medley release. New releases are generated regularly as functionality is restored and extended. - -An alternative is to point your browser to [Online Interlisp](https://online.interlisp.org/) and try our cloud hosted version of Medley Interlisp. diff --git a/content/en/running/30-running-on-linux.md b/content/en/running/30-running-on-linux.md deleted file mode 100644 index 04951b52c..000000000 --- a/content/en/running/30-running-on-linux.md +++ /dev/null @@ -1,183 +0,0 @@ ---- -title: Running on Linux (including WSL) -weight: 50 -type: docs ---- - -Medley can run on any Linux system that includes X Windows, including Windows -System For Linux (WSL2 only) on Windows 11 and Windows 10 Build 19044+. - -It is also recommended that the Linux system have a web browser installed. -For WSL installations, the browser(s) on the Windows side will suffice. -A browser is not strictly necessary to run Medley, but several features of the system -(e.g., displaying some user documentation) will not work without an external browser -installed. - -Medley can be installed on your system in one of two configurations: *standard* and -*local*. Standard installation will install Medley into system directories and install -any prerequisite packages. Local installation will install Medley into any user directory -but any prerequisite packages must be installed manually. - - -## Standard Installation \(Debian-based systems only\) - -Standard installations are currently supported only for Debian-based systems (i.e., -systems that support dpkg), including Debian-based distros on WSL. - -In a standard installation, Medley is installed in system directories -(specifically, /usr/local/interlisp) and support like man pages and (a link to) the -medley executable are also installed in standard system locations (e.g., /usr/local/man -and /usr/local/bin). - -Standard installations are ideal for users who want to explore Medley (including its -system code) or to develop applications built on top of Medley. Standard installations -are not good for users who want to modify the Medley system code, since that code is -installed in protected locations. - -Standard installation uses `apt` to install a .deb package downloaded from -[the Medley downloads site](https://online.interlisp.org/downloads/medley_downloads.html). -The .deb package will install Medley as well as any other packages needed for Medley to -run. - -There are separate .deb packages for "standard" Linux and for WSL (as well as for the -three machine architectures - X86_64, ARM64, ARMv7). The WSL packages differ only in -that they include an additional functionality to have Medley display in a VNC Window -instead of a standard X Window. This is useful on high resolution displays since -the VNC window will scale according to the Windows Settings->Display->Scale setting, -while the X Window on WSL will not so scale. The WSL packages also install the wslu -package, which is used by Medley to connect to external browsers as described above. -Aside from these two features, a non-WSL .deb package will install and run on WSL. - -To install a standard package and run Medley: - -1. Download - - Using a browser download from - [the Medley downloads site](https://online.interlisp.org/downloads/medley_downloads.html) - the .deb package for your platform (i.e., "standard" Linux or WSL) and your machine - architecture (X86_64, ARM64, or ARMv7) to \. - -2. Install - - In a terminal: - - ``` - ubuntu@oio:~$ sudo apt update - ubuntu@oio:~$ sudo apt install -y - ``` - -3. Run - - In a terminal: - - ``` - ubuntu@oio:~$ medley - ``` - - There are many options to the `medley` command. For a brief overview, run `medley --help`. - For a more complete description, run `man medley` or `medley --man` or click - [here](https://online.interlisp.org/downloads/man_medley.html). - - For first-time users: `medley --apps` or for WSL `medley --apps --vnc` is a good starting - point. This will give you a fully populated Medley system, including the applications built - on Medley such as Notecards and Rooms. - - Note: By default, `medley` will create a directory in *$HOME/il*. This will be used by the Medley - system as its *LOGINDIR*. Medley will start up with *LOGINDIR* as its current connected directory. - It will load the personal init file (if any) from *LOGINDIR*/INIT or *LOGINDIR*/INIT.LCOM. Finally, - Medley will use *LOGINDIR*/vmem/ to store its virtual memory file(s). The location of *LOGINDIR* - can be changed using the `--logindir` option to `medley`. - - - -## Local Installation - -In a local installation, the Medley system is installed into any user directory from a .tar file. -Multiple "Medleys" can be installed in different directories on one machine without interference -(except see description of Medley *LOGINDIR* below). Local installation makes it easy (from a file -management p.o.v.) to modify the Medley system code. - -Local installation doesn't involve a package manager, so you are responsible for installing any -prerequisite packages onto your system before you installing Medley. - -Also note that with local installations, `man medley` will not work. However, as indicated below, -`./medley --man` will show the medley man page. - -To install and run Medley locally: - -1. Install prerequite packages - - * For non-WSL installations, use your distro's package manager to install `xdg-utils`. - - * For WSL all installations, use your distro's package manager to install `wslu`. - - Note that some distros do not include `wslu` in their standard repos. See - [https://wslutiliti.es/wslu/install.html](https://wslutiliti.es/wslu/install.html) - for installation instructions if this is the case. - - Also note that `wslu v4.0` does not work with Medley, so you will need to install - either a version < v.40 or >= v4.1. - - - * For WSL installations where the VNC feature will be used, install the `tigervnc-standalone-server` and `tigervnc-xorg-extension` packages. - - When using the VNC feature Medley will display in a VNC Window instead of a standard X Window. - This is useful on high resolution displays since the VNC window will scale according to the - Windows Settings->Display->Scale setting, while the X Window on WSL will not so scale. - - Note that Medley will install and run even if none of these prerequite packages are installed. - However, some features (e.g., viewing documentation in an external browser) will be inoperable. - -2. Download - - Using a browser download from - [the Medley downloads site](https://online.interlisp.org/downloads/medley_downloads.html) - the tar (.tgz) file for your platform (i.e., "standard" Linux or WSL) and your machine - architecture (X86_64, ARM64, or ARMv7) to \. - -3. Install Medley - - In a terminal: - - ``` - ubuntu@oio:~$ mkdir - ubuntu@oio:~$ tar -C -xzf - ``` - -4. Run Medley - - In a terminal: - - ``` - ubuntu@oio:~$ cd - ubuntu@oio:~$ ./medley - ``` - - There are many options to the `medley` command. For a brief overview, run `./medley --help`. - For a more complete description, run `./medley --man` or click - [here](https://online.interlisp.org/downloads/man_medley.html). - - For first-time users: `./medley --apps` or for WSL (and you have installed the VNC prerequisites) - `./medley --apps --vnc` is a good starting point. This will give you a fully populated Medley system, - including the applications built on Medley such as Notecards and Rooms. - - Note: By default, `medley` will create a directory in *$HOME/il*. This will be used by the Medley - system as its *LOGINDIR*. Medley will start up *LOGINDIR* as its current connected directory. - It will load any personal init file from *LOGINDIR*/INIT or *LOGINDIR*/INIT.LCOM. Finally, - Medley will use *LOGINDIR*/vmem/ to store its virtual memory file(s). The location of *LOGINDIR* - can be changed using the `--logindir` option to `medley`. In particular, if you have multiple - installations of Medley that you would like to keep completely seperate, then you can use the - `--logindir -` option, which will set *LOGINDIR* to \/logindir. - - - - - - - - - - - - - diff --git a/content/en/running/40-running-on-mac.md b/content/en/running/40-running-on-mac.md deleted file mode 100644 index 8334ceee2..000000000 --- a/content/en/running/40-running-on-mac.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Running on MacOS -weight: 50 -type: docs ---- - -*DRAFT -- This page is currently being revised.* - - -## online - requires a recent version of Safari or Chrome or Firefox. - -## docker desktop - -Running with Docker Desktop is an option, but installing locally is better. - -## Install from release - - -We don't have it build automation yet, but usually a release will include a build for darwin.aarch64. - -## install medley from release, build maiko - -Need XCode -Need XQuartz installed before you build maiko (includes XClient libraries). - -* Requirements - -- Intel or M1/M2 Macintosh (or even older) -- XQuartz Macintosh X server for your OS/mac vintage) - - -## XQuartz settings - -emulate 3-button mouse diff --git a/content/en/running/50-running-on-win.md b/content/en/running/50-running-on-win.md deleted file mode 100644 index 4f15e230b..000000000 --- a/content/en/running/50-running-on-win.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Running on Windows -weight: 50 -type: docs ---- -## Running on Windows - -* Interlisp Online seems to works fine with recent Edge and Chrome; we've tested others but don't regularly use them. -WARNING: Window/Chrome and Edge use keystrokes (control-W for example) that conflict with Medley use. - -* Docker Desktop is a great possibility, too, if your system can run it. -* Otherwise, to run installed, you either need - * WSLg (available with Windows 11) OR - * WsL2 A running X-server installed on your machine - -WsL stands for "Windows Subsystem for Linux". It's like docker but a little more integrated (You can get at your linux files from windows and your windows files from linux). - -## Running on Windows with WSL2 - -For users of Windows 10 or 11 (pro), running in WSL2 is a good choice. This requires installing both Maiko, the underlying engine, and Medley. This option requires at least a little familiarity with Linux and running Linux within Microsoft's WSL environment. - -### X Server selection - -The X11 protocol was invented quite a while ago (inspired by Warren Teitelman and Bob Sproull's Alto Display protocol as part of early Interlisp window system work.) - -With X11, the notion of "client" and "server" are reversed. The software you run to manage the display and windows is the "server", and the thing far away which is running with access to files and doing the work is the "client". - -When you run WSL it's like you have two (or more) computers in one box, where one is running windows and the other(s) are running Linux. The linux side(s) have their own Internet Protocol address. - -The thing that hooks them together is the "DISPLAY" variable in the linux side has the address of the "client". - -There have apparently been some (mainly unsuccessful) attempts to simplify this for windows 11 users. - -If you're running Windows 10, you will also need to install an X11 server within your Windows environment. There are different servers with varying capabilities and problems. - -* [Cygwin/X](https://x.cygwin.com) -* [XMing](http://www.straightrunning.com/XmingNotes/) (the 6.9 release is old but usable). -* X410 (in the Microsoft Store, $40) -- useful uses windows sockets. - https://x410.dev/cookbook/wsl/using-x410-with-wsl2#vsock - - [VcXsrv](https://sourceforge.net/projects/vcxsrv/) -* GWSL from Microsoft store -* install Xvnc and [TightVNC Version 2.8.63 or higher](https://www.tightvnc.com/download.php) - -### X Server and Windows and Monitor sleep - -If your windows system or monitor don't sleep by the schedule, there is a [WSLg problem](https://github.com/microsoft/wslg/issues/380) that they didn't want your Windows machine to fall asleep when watching a Linux-side video. If this turns out to be a problem, set your IDLE.PROFILE to TIMEOUT (to run a "screen saver") and then LOGOUT later. - -## Requirements - - Windows 10 *or* Windows 11 - - Windows Subsystem for Linux Enabled. [Installing WSL](https://docs.microsoft.com/en-us/windows/wsl/install). - - An installed Linux distribution. The following distros have been tested: - - [Pengwin Linux Distro](https://www.microsoft.com/store/apps/9NV1GV1PXZ6P) - - [Ubuntu Linux Distro](https://www.microsoft.com/en-us/p/ubuntu/9nblggh4msv6) - -### Installing Medley via an Install script - -*tbd* - -### Manual Installation of Medley - -The [medley repo README](https://github.com/Interlisp/medley#readme) has a guide for downloading or building your own maiko (for your OS / architecture) and for obtaining Medley diff --git a/content/en/running/60-running-with-docker.md b/content/en/running/60-running-with-docker.md deleted file mode 100644 index ba6ab0c5f..000000000 --- a/content/en/running/60-running-with-docker.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Running with Docker -weight: 75 -type: docs ---- - -As an experiment, we've set up a way to use Medley Interlisp via a pre-built Docker configuration. As part of the experiment, we've set up a docker container that contains Xvnc (a kind of protocol gateway) so you would just need a VNC client. - -If this is your first time working with Docker, you'll want to [install it](https://docs.docker.com/get-docker/) before continuing. - -You'll also need a modern VNC client; [TightVNC](https://www.tightvnc.com/) works well. Rumor has it that Macs and Linux use VNC normally for screen sharing. - -``` -docker run -p 5900:5900 -e DISPLAY=$DISPLAY --rm --name interlisp interlisp/medley -``` diff --git a/scripts/weights.sh b/scripts/weights.sh index 5beb04bbb..e29479baa 100755 --- a/scripts/weights.sh +++ b/scripts/weights.sh @@ -15,7 +15,7 @@ if [ -z "$1" ]; then dir="."; else dir="$1"; fi find "${dir}" -mindepth 2 -maxdepth 2 -name _index.md -exec grep -i -H weight {} \; >/tmp/weights-$$ find "${dir}" -mindepth 1 -maxdepth 1 -type f \ - ! -name _index.md ! -name "weights.sh" ! -name "*.swp" \ + ! -name _index.md -name "*.md" \ -exec grep -i -H weight {} \; \ >>/tmp/weights-$$ sed -i \