Go to file
Daniel Barlow cba4549304 update README to describe configuration.nix 2022-08-02 23:24:05 +00:00
bin add eufonctl script 2022-07-12 23:16:45 +00:00
blinkenlicht merge blinkenlicht, add modeline 2022-04-26 22:13:37 +01:00
crier add crier, bodge relative pathnames 2022-04-27 10:07:33 +01:00
just add Just Browsing 2022-04-27 13:26:54 +01:00
kiwmi initial support for touch events 2022-07-12 23:16:44 +00:00
saturn add dependencies for saturn 2022-04-26 23:01:30 +01:00
LICENSE Create LICENSE 2022-04-27 13:33:17 +01:00
README.md update README to describe configuration.nix 2022-08-02 23:24:05 +00:00
build.nix add kiwmi as git subtree and derivation to build it 2022-04-26 15:52:14 +01:00
carousel.png add some very professional icons 2022-05-08 22:38:44 +01:00
close-window.png add some very professional icons 2022-05-08 22:38:44 +01:00
default.nix add eufonctl script 2022-07-12 23:16:45 +00:00
fennelrun.lua add crier, bodge relative pathnames 2022-04-27 10:07:33 +01:00
init.lua add Fennel support 2022-04-26 21:14:46 +01:00
kiwmi.nix kiwmi debug build 2022-05-18 10:33:37 +01:00
launcher.png add some very professional icons 2022-05-08 22:38:44 +01:00
lua-dbus-proxy.nix add dependencies for saturn 2022-04-26 23:01:30 +01:00
matrix.fnl add some matrix functions 2022-07-03 23:08:33 +01:00
modeline.css merge blinkenlicht, add modeline 2022-04-26 22:13:37 +01:00
modeline.fnl resize and show view on creation 2022-04-26 22:14:15 +01:00
module.nix kiwmi verbose log and sensible syslog identifier 2022-07-12 23:16:45 +00:00
pinephone.nix some generally (I hope) useful config for the Pinephone 2022-07-03 23:08:33 +01:00
rc.fnl emacs magic to use eufonctl as inferior lisp 2022-07-12 23:16:45 +00:00
refresh-bootfs.nix some generally (I hope) useful config for the Pinephone 2022-07-03 23:08:33 +01:00
run.sh kiwmi verbose log and sensible syslog identifier 2022-07-12 23:16:45 +00:00
shell.nix kiwmi verbose log and sensible syslog identifier 2022-07-12 23:16:45 +00:00
socket-repl.fnl extract function 2022-07-03 11:09:02 +01:00
texture.fnl extract texture-from-file into module 2022-07-03 23:08:33 +01:00

README.md

eufon

Broken, not ready for use

euphony: noun Harmonious aqrrangement of sounds in composition; a smooth and agreeable combination of articulate elements in any piece of writing.

A mostly Fennel-based graphical environment tailored for Linux-based mobile devices. The principles we aspire to are

  • "habitable software" - build the system in such a way that a technically competent user may change it to serve their needs, potentially even in ways that weren't anticipated in the original design. Emacs has this quality.

  • optimised for touchscreens. My phone has no hardware keyboard and few hardware buttons, let's play to its strengths instead of compensating for its weaknesses

As of 2022 these principles are more aspirational than actual. This repo is basically in an advanced state of brokenness

Building for a device

To build an image, unpack Mobile NixOS in a sibling directory of this repo (so that ../mobile-nixos addresses it) and then do something like this (substituing an appropriate device name for motorola-potter)

$ nix-build ../mobile-nixos/ -I mobile-nixos-configuration=./configuration.nix --argstr device motorola-potter -A build.default

You are warmly encouraged to refer to the Mobile Nixos docs for how to use this image.

Once you have your device up and running and you can ssh into it somehow (this may take further research, again I invite you to look at the Mobile Nixos site) then you should be able to use nix-copy-closure to update it without reinstalling.

$ phone=myphone.lan
$ nix-build ../mobile-nixos/ -I mobile-nixos-configuration=./configuration.nix --argstr device motorola-potter -A config.system.build.toplevel
$ nix-copy-closure --to root@${phone} --include-outputs \
   ./result && ssh root@${phone} \
   `readlink result`/bin/switch-to-configuration switch

Running the shell/apps locally

You may prefer to develop on a desktop device of some kind, especially if you're changing C code and have that edit/compile run cycle to go round. You can start the shell locally with

 $ nix-shell --run "kiwmi -c init.lua"

shell.nix sets LUA_PATH and LUA_CPATH settings appropriately - if you want to write a real derivation (I'll get to it eventually) you'll need to sort that out yourself. Nix generates a wrapper script for the Lua interpreter itself, but it doesn't do the same for kiwmi.

Connecting to the repl

If you are using the example rc.fnl, it opens a Unix socket that you can connect to and interact with a Fennel REPL. I use socat for this purpose:

$ socat - unix-connect:${XDG_RUNTIME_DIR}/kiwmi-repl.wayland-1.socket

TODO

Packages

  • notifications (crier)
  • web browser (just)
  • keyboard
  • wifi network chooser
  • settings: toggle network interfaces, change volume & screen brightness

Other

  • better window management

  • some way to add launcher shortcuts for Fennel functions

  • hook up system to session bus, to handle incoming calls

  • kiwmi: support reloading config or otherwise making live changes

  • why are overlay windows overlapping regular view?

  • screen lock