1
0
Fork 0
Infinite canvas arcan appl
  • Lua 99.9%
  • Shell 0.1%
2026-02-20 08:43:30 +02:00
bin Use ARCAN_PATH instead of ARCAN_STORE_PATH as store has a meaning in arcan-net 2026-02-09 10:28:20 +02:00
lasso Fix copy and paste of rect 2026-02-20 08:43:30 +02:00
.gitignore Initial commit 2025-10-03 11:04:58 +03:00
README.md Remove ui note 2026-02-18 13:52:05 +02:00

Lasso

Notice: Undergoing refactor for 0.2.0 changes. Currently in broken state. Use 0.1.0 tag until this notice is removed.

Infinite canvas Arcan appl.

Config and setup

Install by:

  • cd ~/.arcan/appl: Or wherever your applpath is set
  • git clone https://codeberg.org/tsamples/lasso.git
  • arcan lasso

Bindings are contextual based on mode and submode. Conceptually not too dissimilar from a modal editor like vim or helix. mode is based on what is or isn't selected. submode indicates new or editing. Bindings base on mode can be configured in ./bindings.lua

Default bindings (to be improved):

  • lctrl-l: Line

  • lctrl-w: Target

  • lctrl-r: Rectangle

  • lctrl-x: Terminal

  • lctrl-t + mouse 1: Text

  • escape: Unfocus

  • delete: Delete

  • lalt-f: Float (moves with you)

  • lalt-a: Attach (stays put)

  • lctrl-c: Copy

  • lctrl-c: Paste

  • lalt_2: Cycle Spawn Target

  • lalt_5: Cycle Font Size

  • lalt_8: Cycle Font Color

  • lalt_9: Cycle Line Color

  • lalt_0: Cycle Fill Color

  • lalt_k: Cycle Keyboard Layout

  • lalt_lctrl_u: Hide/Show UI

Targets are determined by list_targets() from the API and as such they need to be added via arcan_db:

$ arcan_db add_target lasso BIN /usr/local/bin/arcan_lwa lasso

Development plans

0.1.0: Initial canvas

  • Infinite Panning
  • Nested instances of Lasso
  • Create primitives: Line, Rect, Text, Target, Terminal
  • Manipulate said primitives via Delete, Move
  • Dark mode

0.2.0: Media as mediums

  • Reimplementing line and rect in shaders
    • Enables rotation, will allow for fixes to blending
  • Integration with arcan-net
    • discovery modes
  • Text: Pipe to editor, decode as tts
  • Rect: Into image, into Lasso, as a selection
  • New primitives: Image, Video, Audio, <$decode>
  • Persistence; dump contents to json

0.3.0: Lets get physical

  • Integration with vaquero (mix of syndicated actors and shmif clients)
  • Pair Video with an instance of lasso
  • Spawn clients in lasso based on information decoded from video

0.n.0: TBD

  • ???
  • Profit

Ugly bits

Some things that are known and will eventually be improved. Some of these have reasonable explanations; time, interest, knowledge, challenged myself to various constraints, etc... and others do not.

  • Bindings aren't where I want them.
  • Commands are currently pretty haphazard.
  • This UI is temporary.

License

Unlicense