All Projects → cfcs → eye-of-mirage

cfcs / eye-of-mirage

Licence: other
WiP image viewer using MirageOS

Programming Languages

ocaml
1615 projects

Projects that are alternatives of or similar to eye-of-mirage

keyfender
Secure HSM implementation based on MirageOS
Stars: ✭ 33 (+106.25%)
Mutual labels:  mirageos
mirage-solo5
Solo5 core platform libraries for MirageOS
Stars: ✭ 18 (+12.5%)
Mutual labels:  mirageos
ocaml-dns
OCaml implementation of the DNS protocol
Stars: ✭ 93 (+481.25%)
Mutual labels:  mirageos
qubes-video-companion
Securely stream webcams and share screens across virtual machines *THIS PROJECT IS CURRENTLY STILL IN DEVELOPMENT (Mostly finishing switch to MJPEG for big performance boost; see FAQ)*
Stars: ✭ 38 (+137.5%)
Mutual labels:  qubes
mirage-xen
Xen core platform libraries for MirageOS
Stars: ✭ 17 (+6.25%)
Mutual labels:  mirageos
rekernel
A minimal setup for writing Unikernels in ReasonML
Stars: ✭ 28 (+75%)
Mutual labels:  mirageos
awesome-unikernels
A list about Unikernels
Stars: ✭ 86 (+437.5%)
Mutual labels:  mirageos
prometheus
OCaml library for reporting metrics to a Prometheus server
Stars: ✭ 44 (+175%)
Mutual labels:  mirageos
mirage-xmpp
Implementation of XMPP for MirageOS
Stars: ✭ 12 (-25%)
Mutual labels:  mirageos
qvm-create-windows-qube
Spin up new Windows qubes quickly, effortlessly and securely on Qubes OS
Stars: ✭ 267 (+1568.75%)
Mutual labels:  qubes
contruno
A TLS termination proxy as a MirageOS
Stars: ✭ 13 (-18.75%)
Mutual labels:  mirageos
Mirage
MirageOS is a library operating system that constructs unikernels
Stars: ✭ 1,707 (+10568.75%)
Mutual labels:  mirageos
Irmin
Built-in Snapshotting - backup and restore Storage Agnostic - you can use Irmin on top of your own storage layer Custom Datatypes - (de)serialization for custom data types, derivable via ppx_irmin Highly Portable - runs anywhere from Linux to web browsers and Xen unikernels Git Compatibility - irmin-git uses an on-disk format that can be inspected and modified using Git Dynamic Behavior - allows the users to define custom merge functions, use in-memory transactions (to keep track of reads as well as writes) and to define event-driven workflows using a notification mechanism
Stars: ✭ 1,524 (+9425%)
Mutual labels:  mirageos
ocaml-pcap
OCaml code for generating and analysing pcap (packet capture) files
Stars: ✭ 20 (+25%)
Mutual labels:  mirageos
mirage-framebuffer
Experimental portable bitmap framebuffer graphics for MirageOS
Stars: ✭ 16 (+0%)
Mutual labels:  mirageos
docteur
An opiniated file-system for MirageOS
Stars: ✭ 16 (+0%)
Mutual labels:  mirageos
ocaml-x509
X509 (RFC5280) handling in OCaml
Stars: ✭ 40 (+150%)
Mutual labels:  mirageos
arp
Address resolution protocol (ARP) implementation in OCaml targeting MirageOS
Stars: ✭ 20 (+25%)
Mutual labels:  mirageos
qubes-app-split-browser
Tor Browser (or Firefox) in a Qubes DisposableVM, with persistent bookmarks and login credentials
Stars: ✭ 33 (+106.25%)
Mutual labels:  qubes
Qway-qubes-repo
Repository is intended to provide patches and rpm specs with experimental features to run under the Qubes OS.
Stars: ✭ 19 (+18.75%)
Mutual labels:  qubes

WiP - Eye of Mirage

This aims to be a portable image viewer based on MirageOS, using mirage-framebuffer solely using pure image rendering code - (no image libraries written in C).

The goal is to be able to use the same unikernel code to

  • be able to display an image, or a a directory containing images, on Linux/FreeBSD/MacOSX.
  • implement a QRExec-based Qubes AppVM that will display images transferred to it from other VMs.

Latest screenshot

PNG rendering of rainbow.png, with text and calibration pixel (different set of pixels) overlays on Qubes (yellow window) and SDL/Linux (blue window).

Qubes and SDL targets

Current limitations / feature list

This is very much a work-in-progress, so there's a lot of things that do not work. Off the top of my head:

  • It only displays one image, and there is no way to change.
  • Pixel color blending is not implemented; all you get is shades of red.
  • Transparency is not implemented.
  • Only PNG images are supported.
    • support for PNG, BMP, and GIF.
  • No scaling of the image is done.
    • Configurable zoom
  • The only target supported so far is Qubes (hardcoded). -t unix now supported
    • On which receiving images via QRexec is not implemented.
    • On which images are rendered upside-down.
  • with -t unix it should be able to open a file or directory passed on the command-line instead of having to compile them in
  • instead of ocaml-crunch for compiled-in things it should probably use the ppx_literal or whatever that ppx is called.

Dependencies

opam pin add -n mirage-framebuffer --dev -k git \
               'https://github.com/cfcs/mirage-framebuffer#master'

# Qubes target:
opam pin add -n mirage-qubes.0.7.0 --dev -k git \
               'https://github.com/mirage/mirage-qubes.git'
opam pin add -n mirage-framebuffer-qubes --dev -k git \
               'https://github.com/cfcs/mirage-framebuffer#master'

# Unix target:
opam pin add -n mirage-framebuffer-tsdl --dev -k git \
               'https://github.com/cfcs/mirage-framebuffer#master'

# shared dependencies:

opam pin add -n mirage-framebuffer-imagelib --dev -k git \
               'https://github.com/cfcs/mirage-framebuffer#master'


# installing dependencies:

opam install lwt crunch mirage-logs \
             mirage-runtime mirage-types-lwt ocamlbuild cstruct \
             'imagelib>=20171028' mirage


# installing for qubes:
opam install mirage-framebuffer-qubes mirage-clock-freestanding

# installing for unix:
opam install mirage-framebuffer-tsdl mirage-clock-unix

Setup

  1. Compile image to an OCaml module
mkdir images/
cp image-to-display images/image.png
ocaml-crunch -m plain -o myfiles.ml images/

Setup for QubesOS

  1. Follow the instructions at https://github.com/talex5/qubes-test-mirage

  2. make clean
    mirage configure -t xen && make
    ../qubes-test-mirage/test-mirage eye_of_mirage.xen mirage-test

Setup for Unix

  1. make clean
    mirage configure -t unix && make && ./main.native
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].