156 lines
6.1 KiB
Plaintext
156 lines
6.1 KiB
Plaintext
Project haven
|
|
=============
|
|
|
|
haven is an umbrella project for a range of mostly desktop applications.
|
|
|
|
This README is being converted into a wiki on the wiki branch, also publicly
|
|
available at https://p.janouch.name/haven/Haven.html[]. We should only document
|
|
here that which has been created, as the extent of the rationale and plans is
|
|
gigantic and seems to have a life of its own.
|
|
|
|
Goal
|
|
----
|
|
The greater goal is to create a fresh computing environment for daily work and
|
|
play--easily controllable, reasonably complex, both visually and internally
|
|
unified and last but not least responsive. One should be able to use it
|
|
comfortably with a 60% keyboard and no pointing device.
|
|
|
|
haven serves as a testing ground, leaning on the side of compromises. It aims
|
|
to use today's Linux desktop as a support, relying on X11/Wayland, existing
|
|
window managers and web browsers.
|
|
|
|
The focus is therefore on going breadth-first, not depth-first. Applications
|
|
only need to be good enough to be able to replace their older siblings at all.
|
|
I.e. for me personally.
|
|
|
|
Scope
|
|
-----
|
|
Subproject names aim to have the minimum viable, reasonably identifiable name.
|
|
To group them together, a common prefix of "h" is used. The second column is
|
|
what should be used as the name in .desktop files, just like the GNOME project
|
|
figured out it would make sense:
|
|
|
|
- hbe - bitmap editor
|
|
- hbfe - bitmap font editor
|
|
- he - text editor
|
|
- hfm - file manager
|
|
- hm - mail client
|
|
- hnc - netcat-alike
|
|
- ho - all-powerful organizer
|
|
- hsm - system monitor
|
|
- hss - spreadsheets
|
|
- htd - translation dictionary
|
|
- ht - terminal emulator
|
|
- htk - GUI toolkit library
|
|
|
|
See Projects for more information about the individual projects.
|
|
|
|
Some taken names in Debian: hd (important), hte, hy.
|
|
|
|
Projects
|
|
--------
|
|
These are sorted in the order in which they should be created in order to gain
|
|
the best possible momentum. The htk GUI toolkit is implied as a side product
|
|
permeating the entire list.
|
|
|
|
Some information is omitted from these descriptions and lies either in my head
|
|
or in my other notes.
|
|
|
|
hnc -- netcat-alike
|
|
~~~~~~~~~~~~~~~~~~~
|
|
The result of testing xK/xS with telnet, OpenSSL s_client, OpenBSD nc, GNU nc,
|
|
and Ncat is that neither of them can properly shutdown the connection.
|
|
We need a good implementation with TLS support.
|
|
|
|
hpcu -- PRIMARY-CLIPBOARD unifier
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
An improved replacement for autocutsel in selection synchronization "mode":
|
|
|
|
- using only one OS process;
|
|
- not polling selections twice a second unnecessarily;
|
|
- calling SetSelectionOwner on change even when it already owns the selection,
|
|
so that XFIXES SelectionNotify events are delivered;
|
|
- not using cut buffers for anything.
|
|
|
|
Only UTF8_STRING-convertible selections are synchronized.
|
|
|
|
hswg -- static website generator
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
link:hswg/README.adoc[See hswg's README for details.]
|
|
|
|
ht -- terminal emulator
|
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
Similar scope to st(1). Clever display of internal padding for better looks.
|
|
|
|
he -- text editor
|
|
~~~~~~~~~~~~~~~~~
|
|
VIM controls, no scripting, no syntax highlight, single-file, made for
|
|
variable-width/proportional fonts. Initially done primarily to produce a text
|
|
editing widget, which is going to be an interesting challenge, arguably better
|
|
solved by whole program composition. Scintilla may provide some inspiration.
|
|
|
|
In the second stage, support for the Language Server Protocol will be added so
|
|
that the project can be edited using its own tools. Some scripting, perhaps
|
|
a tiny subset of VimL, might be desirable. Or other means of configuration.
|
|
|
|
Visual block mode or the color column may still be implemented.
|
|
|
|
The real model for the editor is Qt Creator with FakeVIM, though this is not to
|
|
be a clone of it, e.g. the various "Output" lists could be just special buffers,
|
|
which may be have names starting on "// ".
|
|
|
|
.Resources:
|
|
- http://doc.cat-v.org/plan_9/4th_edition/papers/sam/
|
|
|
|
ho -- all-powerful organizer
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Zettelkasten with fulltext search, arbitrary reciprocal links, arbitrary tags.
|
|
Flat storage. Should be able to use translation dictionaries for search hints.
|
|
|
|
Indexing and search may be based on a common database, no need to get all fancy:
|
|
|
|
- http://rachbelaid.com/postgres-full-text-search-is-good-enough/
|
|
- https://www.sqlite.org/fts3.html#full_text_index_queries (FTS4 seems better)
|
|
|
|
htd -- translation dictionary
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
This specific kind of application doesn't need a lot of user interface either,
|
|
just a tab bar, text entry and two columns of text with simple formatting.
|
|
|
|
For simplicity we will establish a custom dictionary format based on either
|
|
simple compress/gzip with separate files in StarDict style or, since we don't
|
|
really strive for random access and memory-efficiency (those 120M that sdtui
|
|
takes with my 10 dictionaries isn't particularly bad), pack everything with
|
|
archive/zip.
|
|
|
|
Instead of ICU we may use x/text/collate and that's about everything we need.
|
|
Since we have our own format, we may expect the index to be ordered by the
|
|
locale's rules, assuming they don't change between versions.
|
|
|
|
hfm -- file manager
|
|
~~~~~~~~~~~~~~~~~~~
|
|
All we need to achieve here is replace Midnight Commander, which besides the
|
|
most basic features includes a VFS for archives. The editing widget in
|
|
read-only mode could be used for F3. The shell is going to work very simply,
|
|
creating a PTY device and running things under TERM=dumb while decoding SGR,
|
|
or one could decide to run a new terminal emulator with a different shortcut.
|
|
ht could probably also be integrated.
|
|
|
|
Eventually the number of panels should be arbitrary with proper shortcuts for
|
|
working with them. We might also integrate a special view for picture previews,
|
|
which might or might not deserve its own program.
|
|
|
|
hss -- spreadsheets
|
|
~~~~~~~~~~~~~~~~~~~
|
|
The first version doesn't need to be able to reference other cells, and can more
|
|
or less be a CSV editor.
|
|
|
|
We can take inspiration from Excel:
|
|
|
|
- https://docs.microsoft.com/en-us/office/client-developer/excel/excel-recalculation
|
|
- https://www.microsoft.com/en-us/research/uploads/prod/2018/03/build-systems.pdf
|
|
|
|
The rest
|
|
~~~~~~~~
|
|
Currently there are no significant, specific plans about the other applications.
|