├── .gitignore ├── LICENSE ├── Make.android ├── Make.android-386 ├── Make.android-amd64 ├── Make.android-arm ├── Make.android-arm64 ├── Make.config ├── Make.dragonfly ├── Make.fbdev ├── Make.freebsd ├── Make.haiku ├── Make.irix ├── Make.linux ├── Make.linux386 ├── Make.netbsd ├── Make.openbsd ├── Make.osx-cocoa ├── Make.osx-metal ├── Make.osx-x11 ├── Make.pthread ├── Make.sun ├── Make.unix ├── Make.win32 ├── Make.win64 ├── Makefile ├── README ├── aan.c ├── args.h ├── cpu.c ├── drawterm.1 ├── drawterm.h ├── drawterm.rc ├── drawterm.res ├── exportfs ├── Makefile ├── exportfs.c ├── exportfs.h └── exportsrv.c ├── glenda-t.ico ├── glenda-t.rc ├── glenda-t.xbm ├── gui-android ├── AndroidManifest.xml ├── Makefile ├── cpp │ ├── android.c │ ├── devandroid.c │ └── native-lib.c ├── java │ └── org │ │ └── echoline │ │ └── drawterm │ │ ├── DrawTermThread.java │ │ ├── MainActivity.java │ │ └── MySurfaceView.java └── res │ ├── layout │ ├── activity_main.xml │ ├── content_main.xml │ ├── drawterm_main.xml │ ├── item_main.xml │ └── server_main.xml │ └── values │ ├── colors.xml │ ├── strings.xml │ └── styles.xml ├── gui-cocoa ├── Makefile ├── drawterm.app │ ├── Info.plist │ └── glenda-t.icns └── screen.m ├── gui-fbdev ├── Makefile └── fbdev.c ├── gui-haiku ├── Makefile └── screen.cpp ├── gui-metal ├── Makefile ├── ball9png.h └── screen.m ├── gui-win32 ├── Makefile └── screen.c ├── gui-wl ├── Makefile ├── wl-cb.c ├── wl-inc.h ├── wl-screen.c └── wl-util.c ├── gui-x11 ├── Makefile ├── keysym2ucs-x11.c ├── keysym2ucs.h └── x11.c ├── include ├── 9windows.h ├── auth.h ├── authsrv.h ├── cursor.h ├── draw.h ├── dtos.h ├── fcall.h ├── ip.h ├── keyboard.h ├── lib.h ├── libc.h ├── libsec.h ├── memdraw.h ├── memlayer.h ├── mp.h ├── u.h ├── unix.h └── user.h ├── kern ├── Makefile ├── alloc.c ├── allocb.c ├── chan.c ├── dat.h ├── data.c ├── dev.c ├── devaudio-alsa.c ├── devaudio-haiku.cpp ├── devaudio-none.c ├── devaudio-pipewire.c ├── devaudio-sndio.c ├── devaudio-sun.c ├── devaudio-unix.c ├── devaudio-win32.c ├── devaudio.c ├── devaudio.h ├── devcmd.c ├── devcons.c ├── devdraw.c ├── devenv.c ├── devfs-posix.c ├── devfs-win32.c ├── devip-posix.c ├── devip-win32.c ├── devip.c ├── devip.h ├── devkbd.c ├── devlfd-posix.c ├── devlfd-win32.c ├── devmnt.c ├── devmouse.c ├── devpipe.c ├── devroot.c ├── devssl.c ├── devtab.c ├── devtls.c ├── error.c ├── error.h ├── exportfs.c ├── fns.h ├── netif.h ├── parse.c ├── pgrp.c ├── posix.c ├── procinit.c ├── qio.c ├── qlock.c ├── rwlock.c ├── screen.h ├── sleep.c ├── stub.c ├── sysfile.c ├── term.c ├── waserror.c └── win32.c ├── latin1.c ├── libauth ├── Makefile ├── attr.c ├── auth_attr.c ├── auth_proxy.c ├── auth_rpc.c └── authlocal.h ├── libauthsrv ├── Makefile ├── _asgetpakkey.c ├── _asgetresp.c ├── _asgetticket.c ├── _asrdresp.c ├── _asrequest.c ├── authdial.c ├── authpak.c ├── convA2M.c ├── convM2A.c ├── convM2PR.c ├── convM2T.c ├── convM2TR.c ├── convPR2M.c ├── convT2M.c ├── convTR2M.c ├── decaf.mpc ├── ed448.mpc ├── edwards.mpc ├── elligator2.mpc ├── form1.c ├── msqrt.mpc ├── nvcsum.c ├── passtokey.c ├── readcons.c ├── readnvram.c └── spake2ee.mpc ├── libc ├── Makefile ├── atexit.c ├── charstod.c ├── cleanname.c ├── convD2M.c ├── convM2D.c ├── convM2S.c ├── convS2M.c ├── crypt.c ├── ctime.c ├── dial.c ├── dirfstat.c ├── dirfwstat.c ├── dirmodefmt.c ├── dirstat.c ├── dirwstat.c ├── dofmt.c ├── dorfmt.c ├── encodefmt.c ├── fcallfmt.c ├── fltfmt.c ├── fmt.c ├── fmtdef.h ├── fmtfd.c ├── fmtfdflush.c ├── fmtlock.c ├── fmtprint.c ├── fmtquote.c ├── fmtrune.c ├── fmtstr.c ├── fmtvprint.c ├── fprint.c ├── frand.c ├── getenv.c ├── getfields.c ├── lnrand.c ├── lock.c ├── lrand.c ├── mallocz.c ├── nan.h ├── nan64.c ├── netmkaddr.c ├── nrand.c ├── nsec.c ├── pow10.c ├── print.c ├── pushssl.c ├── pushtls.c ├── rand.c ├── read9pmsg.c ├── readn.c ├── rune.c ├── runefmtstr.c ├── runeseprint.c ├── runesmprint.c ├── runesnprint.c ├── runesprint.c ├── runestrcat.c ├── runestrchr.c ├── runestrcmp.c ├── runestrcpy.c ├── runestrdup.c ├── runestrecpy.c ├── runestrlen.c ├── runestrncat.c ├── runestrncmp.c ├── runestrncpy.c ├── runestrrchr.c ├── runestrstr.c ├── runetype.c ├── runevseprint.c ├── runevsmprint.c ├── runevsnprint.c ├── seprint.c ├── smprint.c ├── snprint.c ├── sprint.c ├── strecpy.c ├── strtod.c ├── strtod.h ├── strtoll.c ├── sysfatal.c ├── time.c ├── tokenize.c ├── truerand.c ├── u16.c ├── u32.c ├── u64.c ├── utf.h ├── utfdef.h ├── utfecpy.c ├── utflen.c ├── utfnlen.c ├── utfrrune.c ├── utfrune.c ├── utfutf.c ├── vfprint.c ├── vseprint.c ├── vsmprint.c └── vsnprint.c ├── libdraw ├── Makefile ├── alloc.c ├── arith.c ├── badrect.c ├── bytesperline.c ├── chan.c ├── defont.c ├── drawrepl.c ├── fmt.c ├── icossin.c ├── icossin2.c ├── rectclip.c └── rgb.c ├── libip ├── Makefile ├── bo.c ├── classmask.c ├── eipfmt.c ├── ipaux.c └── parseip.c ├── libmemdraw ├── Makefile ├── alloc.c ├── alpha.hoc ├── arc.c ├── cload.c ├── cmap.c ├── cread.c ├── defont.c ├── draw.c ├── ellipse.c ├── fillpoly.c ├── hwdraw.c ├── line.c ├── load.c ├── mkcmap.c ├── openmemsubfont.c ├── poly.c ├── read.c ├── string.c ├── subfont.c ├── times ├── unload.c └── write.c ├── libmemlayer ├── Makefile ├── draw.c ├── lalloc.c ├── layerop.c ├── ldelete.c ├── lhide.c ├── line.c ├── load.c ├── lorigin.c ├── lsetrefresh.c ├── ltofront.c ├── ltorear.c └── unload.c ├── libmp ├── Makefile ├── betomp.c ├── cnfield.c ├── crt.c ├── crttest.c ├── dat.h ├── gmfield.c ├── letomp.c ├── mpadd.c ├── mpaux.c ├── mpcmp.c ├── mpdigdiv.c ├── mpdiv.c ├── mpexp.c ├── mpextendedgcd.c ├── mpfactorial.c ├── mpfield.c ├── mpfmt.c ├── mpinvert.c ├── mpleft.c ├── mplogic.c ├── mpmod.c ├── mpmodop.c ├── mpmul.c ├── mpnrand.c ├── mprand.c ├── mpright.c ├── mpsel.c ├── mpsub.c ├── mptobe.c ├── mptober.c ├── mptoi.c ├── mptole.c ├── mptolel.c ├── mptoui.c ├── mptouv.c ├── mptov.c ├── mpvecadd.c ├── mpveccmp.c ├── mpvecdigmuladd.c ├── mpvecsub.c ├── mpvectscmp.c ├── os.h ├── reduce └── strtomp.c ├── libsec ├── Makefile ├── aes.c ├── aesCBC.c ├── aesCFB.c ├── aesOFB.c ├── aes_gcm.c ├── aes_xts.c ├── aesni.c ├── blowfish.c ├── ccpoly.c ├── chacha.c ├── chachablock.c ├── curve25519.c ├── curve25519_dh.c ├── decodepem.c ├── des.c ├── des3CBC.c ├── desmodes.c ├── dh.c ├── ecc.c ├── fastrand.c ├── genrandom.c ├── hkdf.c ├── hmac.c ├── jacobian.c ├── md5.c ├── md5block.c ├── nfastrand.c ├── os.h ├── pbkdf2.c ├── poly1305.c ├── prng.c ├── rc4.c ├── readcert.c ├── rsaalloc.c ├── rsadecrypt.c ├── rsaencrypt.c ├── secp256k1.c ├── secp256r1.c ├── secp384r1.c ├── sha1.c ├── sha1block.c ├── sha2_128.c ├── sha2_64.c ├── sha2block128.c ├── sha2block64.c ├── thumb.c ├── tlshand.c ├── tsmemcmp.c └── x509.c ├── main.c ├── posix-factotum.c ├── posix-port ├── Makefile ├── getcallerpc.c └── tas.c ├── resource.h ├── secstore.c └── win32-factotum.c /.gitignore: -------------------------------------------------------------------------------- 1 | /drawterm 2 | *.a 3 | *.o 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright © 2021 Plan 9 Foundation 2 | Portions Copyright © 2005 Russ Cox, MIT 3 | Portions Copyright © 20XX 9front authors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /Make.android: -------------------------------------------------------------------------------- 1 | # Android 2 | SDKPREFIX=$(HOME)/Android/Sdk 3 | JAVA_HOME=/usr 4 | OBJS=lib/arm64-v8a/libdrawterm.so lib/armeabi-v7a/libdrawterm.so lib/x86/libdrawterm.so lib/x86_64/libdrawterm.so 5 | 6 | all: drawterm.apk 7 | 8 | clean: 9 | rm -f *.apk lib/*/*.so 10 | 11 | lib/arm64-v8a/libdrawterm.so: 12 | CONF=android-arm64 make -j5; 13 | CONF=android-arm64 make clean; 14 | 15 | lib/armeabi-v7a/libdrawterm.so: 16 | CONF=android-arm make -j5; 17 | CONF=android-arm make clean; 18 | 19 | lib/x86/libdrawterm.so: 20 | CONF=android-386 make -j5; 21 | CONF=android-386 make clean; 22 | 23 | lib/x86_64/libdrawterm.so: 24 | CONF=android-amd64 make -j5; 25 | CONF=android-amd64 make clean; 26 | 27 | drawterm.apk: drawterm-signed.apk 28 | $(SDKPREFIX)/build-tools/30.0.3/zipalign -v -f 4 $< $@ 29 | 30 | drawterm-signed.apk: drawterm-unsigned.apk drawterm.keystore 31 | $(JAVA_HOME)/bin/jarsigner -verbose -keystore ./drawterm.keystore -storepass glendarocks -keypass glendarocks -signedjar $@ $< drawtermKey 32 | 33 | drawterm-unsigned.apk: $(OBJS) 34 | $(SDKPREFIX)/build-tools/30.0.3/aapt package -v -f -M gui-android/AndroidManifest.xml -S gui-android/res -I $(SDKPREFIX)/platforms/android-21/android.jar -F $@ gui-android/bin 35 | $(SDKPREFIX)/build-tools/30.0.3/aapt add $@ $(OBJS) 36 | 37 | drawterm.keystore: 38 | $(JAVA_HOME)/bin/keytool -genkeypair -validity 1000 -dname "CN=9front,O=Android,C=US" -keystore $@ -storepass glendarocks -keypass glendarocks -alias drawtermKey -keyalg RSA -v 39 | -------------------------------------------------------------------------------- /Make.android-386: -------------------------------------------------------------------------------- 1 | # Android 2 | SDKPREFIX=$(HOME)/Android/Sdk 3 | NDKPREFIX=$(SDKPREFIX)/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/bin 4 | JAVA_HOME=/usr 5 | 6 | PTHREAD=-pthread 7 | AR=$(NDKPREFIX)/i686-linux-android-ar 8 | AS=$(NDKPREFIX)/i686-linux-android-as 9 | RANLIB=$(NDKPREFIX)/i686-linux-android-ranlib 10 | STRIP=$(NDKPREFIX)/i686-linux-android-strip 11 | CC=$(NDKPREFIX)/i686-linux-android21-clang 12 | CFLAGS=-Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -Dmain=dt_main -fPIC 13 | O=o 14 | OS=posix 15 | GUI=android 16 | LDADD=-ggdb -lm -shared -llog -landroid 17 | LDFLAGS=$(PTHREAD) 18 | TARG=lib/x86/libdrawterm.so 19 | AUDIO=none 20 | 21 | all: default 22 | -------------------------------------------------------------------------------- /Make.android-amd64: -------------------------------------------------------------------------------- 1 | # Android 2 | SDKPREFIX=$(HOME)/Android/Sdk 3 | NDKPREFIX=$(SDKPREFIX)/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/bin 4 | JAVA_HOME=/usr 5 | 6 | PTHREAD=-pthread 7 | AR=$(NDKPREFIX)/x86_64-linux-android-ar 8 | AS=$(NDKPREFIX)/x86_64-linux-android-as 9 | RANLIB=$(NDKPREFIX)/x86_64-linux-android-ranlib 10 | STRIP=$(NDKPREFIX)/x86_64-linux-android-strip 11 | CC=$(NDKPREFIX)/x86_64-linux-android21-clang 12 | CFLAGS=-Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -Dmain=dt_main -fPIC 13 | O=o 14 | OS=posix 15 | GUI=android 16 | LDADD=-ggdb -lm -shared -llog -landroid 17 | LDFLAGS=$(PTHREAD) 18 | TARG=lib/x86_64/libdrawterm.so 19 | AUDIO=none 20 | 21 | all: default 22 | -------------------------------------------------------------------------------- /Make.android-arm: -------------------------------------------------------------------------------- 1 | # Android 2 | SDKPREFIX=$(HOME)/Android/Sdk 3 | NDKPREFIX=$(SDKPREFIX)/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/bin 4 | JAVA_HOME=/usr 5 | 6 | PTHREAD=-pthread 7 | AR=$(NDKPREFIX)/arm-linux-androideabi-ar 8 | AS=$(NDKPREFIX)/arm-linux-androideabi-as 9 | RANLIB=$(NDKPREFIX)/arm-linux-androideabi-ranlib 10 | STRIP=$(NDKPREFIX)/arm-linux-androideabi-strip 11 | CC=$(NDKPREFIX)/armv7a-linux-androideabi21-clang 12 | CFLAGS=-Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -Dmain=dt_main -fPIC 13 | O=o 14 | OS=posix 15 | GUI=android 16 | LDADD=-ggdb -lm -shared -llog -landroid 17 | LDFLAGS=$(PTHREAD) 18 | TARG=lib/armeabi-v7a/libdrawterm.so 19 | AUDIO=none 20 | 21 | all: default 22 | 23 | -------------------------------------------------------------------------------- /Make.android-arm64: -------------------------------------------------------------------------------- 1 | # Android 2 | SDKPREFIX=$(HOME)/Android/Sdk 3 | NDKPREFIX=$(SDKPREFIX)/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/bin 4 | JAVA_HOME=/usr 5 | 6 | PTHREAD=-pthread 7 | AR=$(NDKPREFIX)/aarch64-linux-android-ar 8 | AS=$(NDKPREFIX)/aarch64-linux-android-as 9 | RANLIB=$(NDKPREFIX)/aarch64-linux-android-ranlib 10 | STRIP=$(NDKPREFIX)/aarch64-linux-android-strip 11 | CC=$(NDKPREFIX)/aarch64-linux-android21-clang 12 | CFLAGS=-Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -Dmain=dt_main -fPIC 13 | O=o 14 | OS=posix 15 | GUI=android 16 | LDADD=-ggdb -lm -shared -llog -landroid 17 | LDFLAGS=$(PTHREAD) 18 | TARG=lib/arm64-v8a/libdrawterm.so 19 | AUDIO=none 20 | 21 | all: default 22 | -------------------------------------------------------------------------------- /Make.config: -------------------------------------------------------------------------------- 1 | AUDIO=none 2 | include $(ROOT)/Make.$(CONF) 3 | -------------------------------------------------------------------------------- /Make.dragonfly: -------------------------------------------------------------------------------- 1 | # DragonFlyBSD 2 | PTHREAD=-pthread 3 | AR=ar 4 | AS=as 5 | RANLIB=ranlib 6 | X11=/usr/local 7 | CC=gcc 8 | CFLAGS=-Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -I$(X11)/include -D_THREAD_SAFE $(PTHREAD) -O2 9 | O=o 10 | OS=posix 11 | GUI=x11 12 | LDADD=-L$(X11)/lib64 -L$(X11)/lib -lX11 -ggdb 13 | LDFLAGS=$(PTHREAD) 14 | TARG=drawterm 15 | AUDIO=none 16 | 17 | all: default 18 | -------------------------------------------------------------------------------- /Make.fbdev: -------------------------------------------------------------------------------- 1 | # Unix 2 | #PTHREAD= # for Mac 3 | PTHREAD=-pthread -DPTHREAD 4 | AR=ar 5 | AS=as 6 | RANLIB=ranlib 7 | CC=gcc 8 | CFLAGS=-Wall -Wextra -Wno-implicit-fallthrough -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -D_THREAD_SAFE $(PTHREAD) -DKBDSCANCODE -O2 -march=native -flto=auto 9 | O=o 10 | OS=posix 11 | GUI=fbdev 12 | LDADD=-ggdb -lm -lasound -O2 -march=native -flto=auto 13 | LDFLAGS=$(PTHREAD) 14 | TARG=drawterm 15 | # AUDIO=none 16 | AUDIO=alsa 17 | 18 | all: default 19 | -------------------------------------------------------------------------------- /Make.freebsd: -------------------------------------------------------------------------------- 1 | # OpenBSD 2 | PTHREAD=-pthread -DPTHREAD 3 | AR=llvm-ar 4 | AS=as 5 | RANLIB=llvm-ranlib 6 | X11=/usr/local 7 | CC=clang 8 | CFLAGS=-Wall -Wextra -Werror -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -I$(X11)/include -D_THREAD_SAFE $(PTHREAD) -O2 -march=native -flto 9 | O=o 10 | OS=posix 11 | GUI=x11 12 | LDADD=-L$(X11)/lib64 -L$(X11)/lib -lX11 -ggdb 13 | LDFLAGS=$(PTHREAD) -O2 -march=native -flto 14 | TARG=drawterm 15 | AUDIO=unix 16 | 17 | all: default 18 | -------------------------------------------------------------------------------- /Make.haiku: -------------------------------------------------------------------------------- 1 | # Haiku 2 | AR=ar 3 | AS=as 4 | RANLIB=ranlib 5 | CC=gcc 6 | CXX=g++ 7 | CFLAGS=-Wall -Wno-missing-braces -Wno-parentheses -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -D_THREAD_SAFE -D_POSIX_C_SOURCE -O2 8 | O=o 9 | OS=posix 10 | GUI=haiku 11 | AUDIO=haiku 12 | LDADD=-ggdb -lbe -lnetwork -lmedia -lstdc++ 13 | LDFLAGS= 14 | TARG=drawterm 15 | 16 | all: default 17 | -------------------------------------------------------------------------------- /Make.irix: -------------------------------------------------------------------------------- 1 | # Unix 2 | PTHREAD= # for Mac 3 | #PTHREAD=-pthread 4 | AR=ar 5 | AS=as 6 | ASFLAGS=-c -mips3 7 | RANLIB=true 8 | X11=/usr/X11R6 9 | #CC=gcc 10 | #CFLAGS=-Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -I$(X11)/include -D_THREAD_SAFE $(PTHREAD) -O2 11 | CC=cc 12 | CFLAGS=-g -O2 -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -I$(X11)/include -DIRIX 13 | O=o 14 | OS=posix 15 | GUI=x11 16 | LDADD=-L$(X11)/lib -lX11 -g -lpthread 17 | LDFLAGS=$(PTHREAD) 18 | TARG=drawterm 19 | MAKE=gmake 20 | 21 | all: default 22 | -------------------------------------------------------------------------------- /Make.linux: -------------------------------------------------------------------------------- 1 | # Linux 2 | PTHREAD=-pthread 3 | AR=ar 4 | AS=as 5 | RANLIB=ranlib 6 | CC?=cc 7 | # CFLAGS=-Wall -Wno-missing-braces -Wno-parentheses -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -D_THREAD_SAFE -DPTHREAD $(PTHREAD) `pkg-config --cflags libpipewire-0.3` -D_REENTRANT -O2 8 | CFLAGS=-Wall -Wno-missing-braces -Wno-parentheses -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -D_THREAD_SAFE -DPTHREAD $(PTHREAD) -D_REENTRANT -O2 -march=native -flto 9 | O=o 10 | OS=posix 11 | GUI=wl 12 | LDADD=-lwayland-client -lxkbcommon -ggdb -lm -lrt -lasound -O2 -march=native -flto 13 | LDFLAGS=$(PTHREAD) 14 | TARG=drawterm 15 | # AUDIO=none 16 | AUDIO=alsa 17 | # AUDIO=pipewire 18 | 19 | all: default 20 | -------------------------------------------------------------------------------- /Make.linux386: -------------------------------------------------------------------------------- 1 | # Unix 2 | PTHREAD=-pthread 3 | AR=ar 4 | AS=as 5 | RANLIB=ranlib 6 | X11=/usr/X11R6 7 | CC=gcc 8 | CFLAGS=-Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -I$(X11)/include -D_THREAD_SAFE $(PTHREAD) -O2 9 | O=o 10 | OS=posix 11 | GUI=x11 12 | LDADD=-L$(X11)/lib64 -L$(X11)/lib -lX11 -ggdb -lm 13 | LDFLAGS=$(PTHREAD) 14 | TARG=drawterm 15 | # AUDIO=none 16 | AUDIO=unix 17 | 18 | all: default 19 | -------------------------------------------------------------------------------- /Make.netbsd: -------------------------------------------------------------------------------- 1 | # NetBSD 2 | PTHREAD=-pthread 3 | AR=ar 4 | AS=as 5 | RANLIB=ranlib 6 | X11=/usr/X11R7 7 | CC=gcc 8 | CFLAGS=-Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -I$(X11)/include -D_THREAD_SAFE $(PTHREAD) -O2 9 | O=o 10 | OS=posix 11 | GUI=x11 12 | LDADD=-Wl,-rpath,$(X11)/lib64 -Wl,-rpath,$(X11)/lib -L$(X11)/lib64 -L$(X11)/lib -lX11 -ggdb -lossaudio 13 | LDFLAGS=$(PTHREAD) 14 | TARG=drawterm 15 | AUDIO=unix 16 | 17 | all: default 18 | 19 | -------------------------------------------------------------------------------- /Make.openbsd: -------------------------------------------------------------------------------- 1 | # OpenBSD 2 | PTHREAD=-pthread 3 | AR=ar 4 | AS=as 5 | RANLIB=ranlib 6 | X11=/usr/X11R6 7 | CFLAGS=-Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -I$(X11)/include -D_THREAD_SAFE $(PTHREAD) -O2 8 | O=o 9 | OS=posix 10 | GUI=x11 11 | LDADD=-L$(X11)/lib64 -L$(X11)/lib -lX11 -lsndio -ggdb 12 | LDFLAGS=$(PTHREAD) 13 | TARG=drawterm 14 | AUDIO=sndio 15 | 16 | all: default 17 | -------------------------------------------------------------------------------- /Make.osx-cocoa: -------------------------------------------------------------------------------- 1 | # Mac OS X 2 | PTHREAD= # for Mac 3 | AR=ar 4 | AS=as 5 | RANLIB=ranlib 6 | CC=gcc 7 | CFLAGS=-Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -D_THREAD_SAFE $(PTHREAD) -O2 8 | O=o 9 | OS=posix 10 | GUI=cocoa 11 | LDADD=-ggdb -framework Cocoa -framework Metal -framework QuartzCore 12 | LDFLAGS=$(PTHREAD) 13 | TARG=drawterm 14 | AUDIO=none 15 | 16 | all: default 17 | -------------------------------------------------------------------------------- /Make.osx-metal: -------------------------------------------------------------------------------- 1 | # Mac OS X 2 | PTHREAD=-DPTHREAD # for Mac 3 | AR=ar 4 | AS=as 5 | RANLIB=ranlib 6 | CC=xcrun --sdk macosx clang 7 | CFLAGS=-Wall -Wno-missing-braces -g -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -D_THREAD_SAFE $(PTHREAD) -O2 -flto $(DEBUGCFLAGS) 8 | O=o 9 | OS=posix 10 | GUI=metal 11 | LDADD=-ggdb -framework Cocoa -framework Metal -framework QuartzCore -march=native -O2 -flto 12 | LDFLAGS=$(PTHREAD) 13 | TARG=drawterm 14 | AUDIO=none 15 | 16 | all: default 17 | 18 | libmachdep.a: 19 | arch=`uname -m|sed 's/i.86/386/;s/x86_64/amd64/'`; \ 20 | (cd posix-$$arch && $(MAKE)) 21 | -------------------------------------------------------------------------------- /Make.osx-x11: -------------------------------------------------------------------------------- 1 | # Mac OS X 2 | PTHREAD= # for Mac 3 | AR=ar 4 | AS=as 5 | RANLIB=ranlib 6 | X11=/usr/X11R6 7 | CC=gcc 8 | CFLAGS=-Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -I$(X11)/include -D_THREAD_SAFE $(PTHREAD) -O2 9 | O=o 10 | OS=posix 11 | GUI=x11 12 | LDADD=-L$(X11)/lib -lX11 -ggdb 13 | LDFLAGS=$(PTHREAD) 14 | TARG=drawterm 15 | AUDIO=none 16 | 17 | all: default 18 | -------------------------------------------------------------------------------- /Make.pthread: -------------------------------------------------------------------------------- 1 | # Unix 2 | #PTHREAD= # for Mac 3 | PTHREAD=-pthread -DPTHREAD 4 | AR=ar 5 | AS=no-as-here 6 | RANLIB=ranlib 7 | X11=/usr/X11R6 8 | CC=gcc 9 | CFLAGS=-Wall -Wno-missing-braces -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -I$(X11)/include -D_THREAD_SAFE $(PTHREAD) -O2 10 | O=o 11 | OS=posix 12 | GUI=x11 13 | LDADD=-L$(X11)/lib64 -L$(X11)/lib -lX11 -ggdb 14 | LDFLAGS=$(PTHREAD) 15 | TARG=drawterm 16 | # AUDIO=none 17 | AUDIO=unix 18 | 19 | all: default 20 | -------------------------------------------------------------------------------- /Make.sun: -------------------------------------------------------------------------------- 1 | # Sun-specific 2 | PTHREAD= 3 | AR=ar 4 | AS=as 5 | RANLIB=ranlib 6 | X11=/usr/X11R6 7 | CC=cc 8 | CFLAGS=-xCC -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -g -D_THREAD_SAFE 9 | O=o 10 | OS=posix 11 | GUI=x11 12 | LDADD=-L$(X11)/lib -lX11 -lrt -lpthread -lsocket -lnsl 13 | LDFLAGS= 14 | TARG=drawterm 15 | AUDIO=none 16 | 17 | all: default 18 | -------------------------------------------------------------------------------- /Make.unix: -------------------------------------------------------------------------------- 1 | # Unix 2 | #PTHREAD= # for Mac 3 | PTHREAD=-pthread -DPTHREAD 4 | AR=ar 5 | AS=as 6 | RANLIB=ranlib 7 | X11=/usr/X11R6 8 | CC=gcc 9 | CFLAGS=-Wall -Wno-missing-braces -Wno-parentheses -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -I$(X11)/include -D_THREAD_SAFE $(PTHREAD) -O2 -march=native 10 | #CFLAGS=-Wall -Wno-missing-braces -Wno-parentheses -ggdb -I$(ROOT) -I$(ROOT)/include -I$(ROOT)/kern -c -I$(X11)/include -D_THREAD_SAFE $(PTHREAD) -fno-omit-frame-pointer 11 | O=o 12 | OS=posix 13 | GUI=x11 14 | LDADD=-L$(X11)/lib64 -L$(X11)/lib -lX11 -ggdb -lm -lasound 15 | LDFLAGS=$(PTHREAD) 16 | TARG=drawterm 17 | # AUDIO=none 18 | AUDIO=alsa 19 | 20 | all: default 21 | -------------------------------------------------------------------------------- /Make.win32: -------------------------------------------------------------------------------- 1 | # Windows via mingw32 2 | # MING=mingw32- is necessary if you're cross-compiling 3 | # on another platform. Otherwise the binaries are just 4 | # named gcc, etc. 5 | 6 | AUDIO=win32 7 | MING=i686-w64-mingw32- 8 | #MING= 9 | AR=$(MING)ar 10 | CC=$(MING)gcc 11 | AS=$(MING)as 12 | RANLIB=$(MING)ranlib 13 | WINDRES=$(MING)windres 14 | CFLAGS=-Wall -Wno-missing-braces -I$(ROOT)/include -I$(ROOT) -I$(ROOT)/kern -c -D_X86_ -DIS_32 -DWINDOWS -DUNICODE -O2 15 | O=o 16 | FS=fs-win32 17 | IP=win32 18 | OS=win32 19 | GUI=win32 20 | LDADD=-lkernel32 -ladvapi32 -lgdi32 -lmpr -lwsock32 -lws2_32 -lmsvcrt -lmingw32 -lwinmm 21 | TARG=drawterm.exe 22 | XOFILES=glenda-t.$O 23 | 24 | # Windows via MSVC 25 | #AR=??? 26 | #CC=cl 27 | #CFLAGS=-c -nologo -W3 -YX -Zi -MT -Zl -Iinclude -DWINDOWS 28 | #O=obj 29 | #FS=fs-win32 30 | #IP=win32 31 | #OS=win32 32 | #GUI=win32 33 | 34 | all: default 35 | 36 | glenda-t.$O: glenda-t.rc glenda-t.ico 37 | $(WINDRES) -i glenda-t.rc -o glenda-t.o 38 | 39 | -------------------------------------------------------------------------------- /Make.win64: -------------------------------------------------------------------------------- 1 | # Windows via mingw-w64 2 | # MING=mingw32- is necessary if you're cross-compiling 3 | # on another platform. Otherwise the binaries are just 4 | # named gcc, etc. 5 | 6 | AUDIO=win32 7 | MING=x86_64-w64-mingw32- 8 | #MING= 9 | AR=$(MING)ar 10 | CC=$(MING)gcc 11 | AS=$(MING)as 12 | RANLIB=$(MING)ranlib 13 | WINDRES=$(MING)windres 14 | CFLAGS=-Wall -Wno-missing-braces -I$(ROOT)/include -I$(ROOT) -I$(ROOT)/kern -c -DWINDOWS -DUNICODE -O2 15 | O=o 16 | FS=fs-win32 17 | IP=win32 18 | OS=win32 19 | GUI=win32 20 | LDADD=-lgdi32 -lws2_32 -lwinmm -mwindows 21 | TARG=drawterm.exe 22 | XOFILES=glenda-t.$O 23 | 24 | all: default 25 | 26 | glenda-t.$O: glenda-t.rc glenda-t.ico 27 | $(WINDRES) -i glenda-t.rc -o glenda-t.o 28 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | ROOT=. 2 | 3 | include Make.config 4 | 5 | OFILES=\ 6 | main.$O\ 7 | cpu.$O\ 8 | aan.$O\ 9 | secstore.$O\ 10 | latin1.$O\ 11 | $(OS)-factotum.$O\ 12 | $(XOFILES)\ 13 | 14 | LIBS1=\ 15 | kern/libkern.a\ 16 | exportfs/libexportfs.a\ 17 | libauth/libauth.a\ 18 | libauthsrv/libauthsrv.a\ 19 | libsec/libsec.a\ 20 | libmp/libmp.a\ 21 | libmemdraw/libmemdraw.a\ 22 | libmemlayer/libmemlayer.a\ 23 | libdraw/libdraw.a\ 24 | gui-$(GUI)/libgui.a\ 25 | libc/libc.a\ 26 | libip/libip.a\ 27 | 28 | # stupid gcc 29 | LIBS=$(LIBS1) $(LIBS1) $(LIBS1) libmachdep.a 30 | 31 | default: $(TARG) 32 | $(TARG): $(OFILES) $(LIBS) 33 | $(CC) $(LDFLAGS) -o $(TARG) $(OFILES) $(LIBS) $(LDADD) 34 | 35 | %.$O: %.c 36 | $(CC) $(CFLAGS) $*.c 37 | 38 | clean: 39 | rm -f *.o */*.o */*.a *.a drawterm drawterm.exe 40 | 41 | libmachdep.a: 42 | (cd posix-port; $(MAKE)) 43 | 44 | kern/libkern.a: 45 | (cd kern; $(MAKE)) 46 | 47 | exportfs/libexportfs.a: 48 | (cd exportfs; $(MAKE)) 49 | 50 | libauth/libauth.a: 51 | (cd libauth; $(MAKE)) 52 | 53 | libauthsrv/libauthsrv.a: 54 | (cd libauthsrv; $(MAKE)) 55 | 56 | libmp/libmp.a: 57 | (cd libmp; $(MAKE)) 58 | 59 | libsec/libsec.a: 60 | (cd libsec; $(MAKE)) 61 | 62 | libmemdraw/libmemdraw.a: 63 | (cd libmemdraw; $(MAKE)) 64 | 65 | libmemlayer/libmemlayer.a: 66 | (cd libmemlayer; $(MAKE)) 67 | 68 | libdraw/libdraw.a: 69 | (cd libdraw; $(MAKE)) 70 | 71 | libc/libc.a: 72 | (cd libc; $(MAKE)) 73 | 74 | libip/libip.a: 75 | (cd libip; $(MAKE)) 76 | 77 | gui-$(GUI)/libgui.a: 78 | (cd gui-$(GUI); $(MAKE)) 79 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | DESCRIPTION 2 | ----------- 3 | This is a fork of 9front's drawterm with the addition of osx-metal. 4 | 5 | - native resolution support for HiDPI screens using metal 6 | 7 | - use control, option, and command keys for mouse 1, 2, and 3 clicks 8 | 9 | - use three finger touch for mouse 2 click 10 | 11 | - use four finger touch for mouse 2-1 chord 12 | 13 | - scale cursor to 32x32 using an EPX algorithm 14 | 15 | - basic support for macOS input method 16 | 17 | ~~ 18 | 19 | Original README from Plan9front 20 | =============================== 21 | 22 | DESCRIPTION 23 | ----------- 24 | This is a fork of Russ Cox's drawterm to incorporate features 25 | from Plan9front (http://9front.org), most importantly DP9IK 26 | authentication support (see authsrv(6)) and the TLS based rcpu(1) 27 | protocol. 28 | 29 | 30 | INSTALLATION 31 | -------------- 32 | To build on Unix, run CONF=unix make. 33 | 34 | To build on Solaris using Sun cc, run CONF=sun make. 35 | 36 | To build on Windows, you can't use Visual C. Use Mingw on cygwin. 37 | 38 | To build on Mac OS X with X11 (xquartz), run CONF=osx-x11 make. 39 | 40 | To build on Mac OS X with Cocoa, run CONF=osx-cocoa make and "cp drawterm gui-cocoa/drawterm.app/". 41 | 42 | To build for Android, make sure Make.android* and gui-android/Makefile are correct for your build and target systems, then run make -f Make.android 43 | 44 | USAGE 45 | ------- 46 | On Android the five checkboxes at the top represent the three mouse buttons and mousewheel, determining which "buttons" are clicked. The "kb" button toggles the soft keyboard. 47 | 48 | 49 | CAVEATS 50 | -------- 51 | Be aware that right now on Android the login details are saved as a plaintext string if saved, and there is no secstore support. 52 | 53 | 54 | BINARIES 55 | --------- 56 | http://drawterm.9front.org/ 57 | 58 | 59 | SOURCE 60 | ------ 61 | http://git.9front.org/plan9front/drawterm/HEAD/info.html 62 | 63 | 64 | HELP 65 | ---- 66 | No. 67 | -------------------------------------------------------------------------------- /args.h: -------------------------------------------------------------------------------- 1 | extern char *argv0; 2 | #define ARGBEGIN for((argv0? 0: (argv0=*argv)),argv++,argc--;\ 3 | argv[0] && argv[0][0]=='-' && argv[0][1];\ 4 | argc--, argv++) {\ 5 | char *_args, *_argt;\ 6 | Rune _argc;\ 7 | _args = &argv[0][1];\ 8 | if(_args[0]=='-' && _args[1]==0){\ 9 | argc--; argv++; break;\ 10 | }\ 11 | _argc = 0;\ 12 | while(*_args && (_args += chartorune(&_argc, _args)))\ 13 | switch(_argc) 14 | #define ARGEND SET(_argt);USED(_argt); USED(_argc); USED(_args);}USED(argv); USED(argc); 15 | #define ARGF() (_argt=_args, _args="",\ 16 | (*_argt? _argt: argv[1]? (argc--, *++argv): 0)) 17 | #define ARGC() _argc 18 | 19 | #define EARGF(x) (_argt=_args, _args="",\ 20 | (*_argt? _argt: argv[1]? (argc--, *++argv): (x, (char*)0))) 21 | -------------------------------------------------------------------------------- /drawterm.h: -------------------------------------------------------------------------------- 1 | extern int havesecstore(char *addr, char *owner); 2 | extern char *secstore; 3 | extern char *secstorefetch(char *addr, char *owner, char *passwd); 4 | extern char *authserver; 5 | extern int exportfs(int, int); 6 | extern int dialfactotum(void); 7 | extern char *getuser(void); 8 | extern void cpumain(int, char**); 9 | extern char *estrdup(char*); 10 | extern int aanclient(char*, int); 11 | extern int mlock(void *, size_t); 12 | -------------------------------------------------------------------------------- /drawterm.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Plan9-Archive/drawterm-metal-cocoa/0ea0eaedb3ebcb9c57d85227561e62d32cac37dc/drawterm.res -------------------------------------------------------------------------------- /exportfs/Makefile: -------------------------------------------------------------------------------- 1 | ROOT=.. 2 | include ../Make.config 3 | LIB=libexportfs.a 4 | 5 | OFILES=\ 6 | exportfs.$O\ 7 | exportsrv.$O 8 | 9 | default: $(LIB) 10 | $(LIB): $(OFILES) 11 | $(AR) r $(LIB) $(OFILES) 12 | $(RANLIB) $(LIB) 13 | 14 | %.$O: %.c 15 | $(CC) $(CFLAGS) $*.c 16 | 17 | -------------------------------------------------------------------------------- /glenda-t.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Plan9-Archive/drawterm-metal-cocoa/0ea0eaedb3ebcb9c57d85227561e62d32cac37dc/glenda-t.ico -------------------------------------------------------------------------------- /glenda-t.rc: -------------------------------------------------------------------------------- 1 | 101 ICON DISCARDABLE "glenda-t.ico" 2 | -------------------------------------------------------------------------------- /gui-android/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | 15 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /gui-android/Makefile: -------------------------------------------------------------------------------- 1 | ROOT=.. 2 | include ../Make.config 3 | LIB=libgui.a 4 | 5 | OFILES=\ 6 | cpp/android.$O\ 7 | cpp/native-lib.$O\ 8 | cpp/devandroid.$O\ 9 | 10 | default: $(LIB) gen/org/echoline/drawterm/R.java bin/classes.dex 11 | $(LIB): $(OFILES) 12 | $(AR) r $(LIB) $(OFILES) 13 | $(RANLIB) $(LIB) 14 | 15 | gen/org/echoline/drawterm/R.java: $(shell find res/ -type f) 16 | $(SDKPREFIX)/build-tools/30.0.3/aapt package -f -m -M AndroidManifest.xml -I $(SDKPREFIX)/platforms/android-21/android.jar -S res/ -J gen 17 | 18 | bin/classes.dex: obj/org/echoline/drawterm/MainActivity.class obj/org/echoline/drawterm/DrawTermThread.class obj/org/echoline/drawterm/MySurfaceView.class 19 | $(SDKPREFIX)/build-tools/30.0.3/dx --dex --verbose --output=$@ obj/ 20 | 21 | obj/org/echoline/drawterm/%.class: java/org/echoline/drawterm/%.java 22 | $(JAVA_HOME)/bin/javac -d obj/ -classpath $(SDKPREFIX)/platforms/android-21/android.jar -sourcepath java java/org/echoline/drawterm/$*.java gen/org/echoline/drawterm/R.java 23 | 24 | -------------------------------------------------------------------------------- /gui-android/java/org/echoline/drawterm/DrawTermThread.java: -------------------------------------------------------------------------------- 1 | package org.echoline.drawterm; 2 | 3 | /** 4 | * Created by eli on 12/4/17. 5 | */ 6 | 7 | public class DrawTermThread extends Thread { 8 | private MainActivity m; 9 | private String p; 10 | private String []args; 11 | 12 | public DrawTermThread(String []args, String p, MainActivity m) { 13 | this.m = m; 14 | this.p = p; 15 | this.args = args; 16 | } 17 | 18 | @Override 19 | public void run() { 20 | if (p != null && !p.equals("")) 21 | m.setPass(p); 22 | m.dtmain(args); 23 | m.runOnUiThread(new Runnable() { 24 | @Override 25 | public void run() { 26 | m.exitDT(); 27 | m.setContentView(R.layout.server_main); 28 | m.populateServers(m); 29 | } 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /gui-android/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 16 | 17 |