I always want the capability to reach my files and the software I use to edit them. Not all of my stuff exists as a webapp, so I use a webtop. A webtop is a desktop in a browser tab. Webtops are awesome.
I use the KasmVNC-based lsio containers. Earlier ones were based on xrdp & guacamole.
Rabbitholes within Rabbitholes.
Inside the webtop, I install:
- Emacs
- Obsidian
- Remina
- Double Commander
- a browser
I mainly use Obsidian because Emacs on iOS isn’t there yet. Obsidian can’t open Resilio folders on iOS. beorg can’t open Syncthing folders on iOS.
future considerations
- xrdp now supports h264. Haven’t had a chance to test that out yet.
- research if the GUI Emacs in the webtop session should rather connect to a long-running Emacs server session elsewhere (see here)
flowchart LR WT((Webtop)) MD -- volume mount --> Q((Quartz)) --> SW(static website) OSI("Obsidian (iOS)") --> ST(SyncThing) --> MD(Markdown folder) beorg("beorg (iOS)") --> RS(Resilio) --> org(Org folder) -- volume mount --> WT MD -- volume mount --> WT WT --> E(Emacs) WT --> OS(Obsidian) WT --> R(Remmina) WT --> DC(Double Commander) SW -- rsync --> jes_moe(jes.moe) click WT "./webtop" click Q "./quartz" click jes_moe "https://jes.moe"
Like everything else, the webtop’s a docker container.
compose.yml
services:
webtop:
image: lscr.io/linuxserver/webtop:ubuntu-mate
container_name: webtop
security_opt:
- seccomp:unconfined #optional
environment:
- PUID=1000
- PGID=1000
- CUSTOM_USER=foo
- PASSWORD=bar
- TZ=Europe/Berlin
- SUBFOLDER=/ #optional
- TITLE=Webtop #optional
- DRINODE=/dev/dri/renderD128
- DOCKER_MODS=linuxserver/mods:universal-package-install
- INSTALL_PACKAGES=emacs|cmatrix|mesa-utils|caca-utils|xfce4-whiskermenu-plugin|ristretto|fonts-noto-cjk|libxcb-xinerama0|libxcb-cursor0|libnss3|zstd|libx11-xcb-dev|libglu1-mesa-dev|libxrender-dev|libxi-dev|libxkbcommon-dev|libxkbcommon-x11-dev
volumes:
- ./config:/config
- /var/run/docker.sock:/var/run/docker.sock #optional
- /mnt/hgfs/tree:/config/tree
- /mnt/hgfs/SyncthingObsidianVault:/config/SyncthingObsidianVault
- ./custom-cont-init.d:/custom-cont-init.d:ro
ports:
- 3001:3001
devices:
- /dev/dri:/dev/dri #optional
shm_size: 1gb #optional
restart: unless-stopped
(Re-) Install PRoot Apps:
rm -f $HOME/.local/bin/{ncat,proot-apps,proot,jq}
mkdir -p $HOME/.local/bin
curl -L https://github.com/linuxserver/proot-apps/releases/download/$(curl -sX GET "https://api.github.com/repos/linuxserver/proot-apps/releases/latest" | awk '/tag_name/{print $4;exit}' FS='[""]')/proot-apps-$(uname -m).tar.gz | tar -xzf - -C $HOME/.local/bin/
export PATH="$HOME/.local/bin:$PATH"
proot-apps install obsidian
proot-apps install remmina
proot-apps install retroarch
proot-apps install doublecmd
Update PRoot apps:
proot-apps update all