A proof of concept Linux screen reader, with minimal features.

Overview

Odilia

A proof of concept Linux screen reader, with minimal features.

Status: prototype

We're breaking things daily. This is not usable whatsoever, and has no real functionality. Check back later for progress.

The following information is for developers and testers:

Building

AUR

AUR Git Rpository: https://aur.archlinux.org/odilia

Manual

Run the followimg commands:

$ cargo build
$ sudo ./fix-permissions.sh
$ cargo run

You will need to restart to activate the udev and group permission changes the fix-permissions.sh file makes.

You might also like...
A Rust port of the
A Rust port of the "Heroes of Math & Mech" game. Currently macOS, Windows, Linux and iOS app. WIP.

[WIP] Герои Мата и Меха Попытка переписать известный в узких кругах текстовый квест «Герои Мата и Меха» на Rust. Ещё не закончено! Оригинальная версия

Play jungle chess on the linux terminal.
Play jungle chess on the linux terminal.

Jungle-Chess This is my first project written in Rust. Happy for contributors and feedback! The code is dirty. Play Jungle Chess on an Emoji-Enabled L

A Rust port of alien, a tool that converts software packages between Linux package managers.

alien A Rust port of alien, a tool that converts software packages to work from one package manager to the next. Currently, the tool supports converti

DragonOS/Linux Termial text editor

Held DragonOS/Linux Termial text editor 面向DragonOS和Linux系统的终端文本编辑器。 作者:Heyicong [email protected] 安装 默认安装路径为./install/bin/held Linux: make install

Building a better screen reader for the Linux desktop, one step at a time.

Building a better screen reader for the Linux desktop, one step at a time.

Single-reader, multi-writer & single-reader, multi-verifier; broadcasts reads to multiple writeable destinations in parallel

Bus Writer This Rust crate provides a generic single-reader, multi-writer, with support for callbacks for monitoring progress. It also provides a gene

A fetcher hook for the Plato document reader that syncs an e-reader with an OPDS catalogue.

plato-opds A fetcher hook for the Plato document reader that syncs an e-reader with an OPDS catalogue. Motivation I wanted to be able to sync my e-rea

Pure Rust implementation of Arbitrum sequencer feed reader with built-in transaction decoding and MEV features

Sequencer-Client (WIP 🚧 ) Pure Rust implementation of Arbitrum sequencer feed reader with built-in transaction decoding and MEV features Design Goal

Proof-of-concept for a memory-efficient data structure for zooming billion-event traces

Proof-of-concept for a gigabyte-scale trace viewer This repo includes: A memory-efficient representation for event traces An unusually simple and memo

A proof of concept implementation of cyclic data structures in stable, safe, Rust.

A proof of concept implementation of cyclic data structures in stable, safe, Rust. This demonstrates the combined power of the static-rc crate and the

Proof-of-concept of getting OpenXR rendering support for Bevy game engine using gfx-rs abstractions
Proof-of-concept of getting OpenXR rendering support for Bevy game engine using gfx-rs abstractions

Introduction Proof-of-concept of getting OpenXR rendering support for Bevy game engine using gfx-rs abstractions. (hand interaction with boxes missing

Interactive interpreter for a statement-based proof-of-concept language.

nhotyp-lang Nhotyp is a conceptual language designed for ease of implementation during my tutoring in an introductive algorithmic course at Harbin Ins

This shows proof-of-concept implementation of lexer-parser-evaluator which allows setting custom values to keywords.

Custom Configurable Lexer-Parser Note This is still very experimental, and for any syntax error it will just panic giving very unhelpful error message

Proof of concept for a web API that can export 3MF files from parametric OpenSCAD models

Model API About A proof of concept for a web API that can export 3MF files from a parametric OpenSCAD model. A typical use would be to have a form on

Proof of Concept / Experiment: Use IDF-HAL-LL from bare metal Rust
Proof of Concept / Experiment: Use IDF-HAL-LL from bare metal Rust

Proof of Concept / Experiment: Use IDF-HAL-LL from BM Rust idf-ll-compile pre-compiles a static library for ESP32C3 and ESP32 esp-ll a simple crate th

[Proof of Concept] Embedded functional scripting language with YAML ¯\_(ツ)_/¯

[YAML, fun] Just an experimental project implementing embedded functional scripting language based on YAML syntax. API docs for the standard library:

A proof-of-concept for building Orbiter spaceflight simulator addons in Rust

Orbiter spacecraft addon development in Rust This project is a proof of concept for creating a spacecraft addon for the Orbiter spaceflight simulator

Lumiere is a proof-of-concept/example video player built with the Slint UI framework and libmpv
Lumiere is a proof-of-concept/example video player built with the Slint UI framework and libmpv

Lumiere is a proof-of-concept/example video player built with the Slint UI framework and libmpv. This was built quickly to try out Slint and it's new OpenGL underlay feature.

A proof of concept file dropper utilizing PowerShell loosely based off
A proof of concept file dropper utilizing PowerShell loosely based off

A proof of concept file dropper utilizing PowerShell loosely based off

Comments
  • Is this project currently accepting contributors?

    Is this project currently accepting contributors?

    Hello, I apologize for opening an issue for this but I was having trouble finding a way to contact you. I'm an experienced Rust developer and I'd love to help out with this project. Are you currently accepting contributors?

    opened by pwoolcoc 9
  • please how to build from source

    please how to build from source

    dear MR drasil, I Am visually impaired advanced user and I would like to try The latest bleeding edge code of yours screen reader. I AM triing to build it by using cargo build command. But unfortunately, build process fails due to bad reference to at-spi library.

    atspi={git="https://github.com/yggdrasil-sr/atspi-rs.git"}

    I have decided to try this ammazing project, because you have chosen ammazing programming language which support very professional memory management and allow to produce fast machine code. I have found out, that building projects based on Cargo or Rust can be very painful adventure thanks to libraryes issues. I had very painful adventure when I have tried to build Shortwave Internet radio player. May be, that yours instructions would show Me, thsat Rust can be A friendly language and Especially Cargo build system too. Thank you very much for yours instructions. With kindness regards and with The deepest possible appreciation to yours programmers work. Janusz Chmiel

    opened by JanuszChmiel 4
Releases(v-0.1.0)
  • v-0.1.0(Feb 8, 2022)

    as I said before, we are going to release the last copy of the prototype known to work, though you can expect huge, huge bugs. One of those is that...well, let's just say that if you let odilia in front of a terminal too much, it may blow up, literarely.

    short note and usage directions

    Before you could start using odilia, you have to execute setup_permissions.sh as root, it's required for evdev and key input.
    Then, execute startup.sh to start it, shutdown.sh to turn it off.
    If you want to see interesting internal debug messages, run startup.sh with the RUST_LOG environment variable set to "debug". An example of such an invocation may be
    RUST_LOG="debug" ./startup.sh
    have fun with the prototype if you can, and remember, if you think this is good, it would be even better in stable versions.

    changelog

    we have been working on this prototype for some time, therefore the changelog may be rather long and technical, so we tryed our best to remove unnecesary junk and implementation-specific log entries, however keep in mind some of it may still be technical. With that said, here are the most important things since the latest prototype:

    • add afew log messages
    • add log and env_logger as dependencies, to allow some primitive form of logging in stead of relying purely on println since it fills the terminal quickly
    • last merge of testing into main, this should fix compilation errors for good
    • add the ability to stop speech with the ctrl key
    • made sure the screen reader can't panic because of trying to read non-existant accessibles. It will just try to read the attributes of the ones that are actually valid accessibles. If an invalid accessible is incountered, it will sylently be skipped for now
    • fix clippy warnings. All unused imports are commented out in stead of removal, in anticipation of later usage
    • fix linter warning, add an extra unwrap when creating the speaker global instance
    • add basic, messy structural navigation
    • Add support for modes, consumption and notification on every keypress.
    • Add permission setup
    • fix a warning related to static identifier name conventions
    • Add read on focus change. Change edition to 2021. Refactor to allow a more user-friendly reporting of controlls and other UI elements
    Source code(tar.gz)
    Source code(zip)
    odilia-release.tar.gz(713.09 KB)
  • v-0.4.20(Oct 26, 2021)

Owner
Odilia
Building a better screen reader for the Linux desktop, one step at a time.
Odilia
An ORC reader for Rust

An ORC reader for Rust This project contains tools for working with Apache ORC files from the Rust programming language. ORC is an open source data fo

Travis Brown 12 Apr 9, 2022
A lightweight, cross-platform epub reader.

Pend Pend is a program for reading EPUB files. Check out the web demo! Preview Image(s) Installation Building Pend is simple & easy. You should be abl

bx100 11 Oct 17, 2022
A tool to display the minimap of a game larger on a second screen

maximap A tool to display the minimap of a game larger on a second screen. Should work on all operating systems supported by captrs and rust_minifb, s

Richard Baumann 18 Oct 11, 2022
A convenient on-screen message print macro for bevy.

Bevy Debug Text Overlay A proof of concept for adding a very convenient text overlay macro to the bevy game engine. This is derived from the code I us

Nicola Papale 15 Oct 8, 2022
A simple example showcasing how to use Bevy to display a square with acceleration (controllable with your keyboard) that wraps around the screen!

Bevy Wrapping Square example A simple example showcasing how to use Bevy to display a square with acceleration (controllable with your keyboard) that

Luciano Mammino 3 Oct 23, 2022
Highly customizable splash screen library for Bevy games.

bevy_intro_screen This is a versatile Bevy library designed to create engaging and customizable introductory screens for your game. Initially conceive

Aarav Shah 4 Aug 13, 2024
A novel path-based approach to UI built on top of existing Bevy features

Bevy Lunex A novel path-based approach to UI built on top of existing Bevy features. A recreation of Cyberpunk 2077 menu in Bevy using Lunex Table of

Bytestring 4 Jun 29, 2023
A simple, very minimal Minecraft server implementation in Rust.

A simple, very minimal Minecraft server implementation in Rust. For a simple Minecraft server that isn't supposed to do much (for example, a limbo ser

Chris 8 Dec 22, 2022
Pure, minimal, and scalable timers

timer-queue A pure, minimal, and scalable structure for tracking expiration of timers let mut q = TimerQueue::new(); q.insert(42, "second"); q.insert(

Benjamin Saunders 18 Nov 15, 2022
A simple and minimal game engine library built in rust.

Neptune A brand new free, open-source minimal and compact game engine built in rust. Design Goals We plan to make Neptune a small and minimal engine,

Levitate 17 Jan 25, 2023