MCPcopy Index your code
hub / github.com/codyd51/uefirc

github.com/codyd51/uefirc @1.0.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.0.1 ↗ · + Follow
215 symbols 396 edges 25 files 2 documented · 1% updated 2y ago1.0.1 · 2024-04-06★ 3336 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

UEFIRC is a graphical UEFI IRC client. Connect to an IRC server, chat and read messages, all from the comfort of your motherboard's pre-boot environment.

50 years of computing, yet no solution for IRC software that can also fry your motherboard. Until now.

UEFIRC is written in Rust and leverages uefi-rs.

The GUI toolkit comes from axle OS. I think that this is the first time anyone has put TrueType in UEFI.

NO kernel. NO GUI toolkit. NO scheduler. NO memory protection. Just you, the motherboard firmware, and all your pals across the internet.

https://github.com/codyd51/uefirc/assets/4972184/123da2d1-f99f-49c3-9850-8ce2f5be31de

UEFIRC comes with keyboard and mouse support by leveraging UEFI's Simple Text Protocol and Simple Pointer Protocol.

Most notably, UEFIRC implements a memory-safe wrapper around UEFI's TCP implementation.

Here's me saying hello to the UEFI development chat from UEFI itself.

UEFIRC comes with a blog post with fun animations showing some of the tricky bits it took to get this working. Check it out!

Configuration

The IRC server, and the identity of the user, are controlled by a configuration file in the EFI filesystem.

Modify config.toml to change these values.

Running

NOTE: If you are not running macOS, you'll be unable to use QEMU's vmnet network backend, and will need to set up a network backend that can bridge packets into the guest.

Precompiled release

Download the latest release. Run this command:

qemu-system-x86_64 -bios ./OVMF_with_mouse_support.fd -monitor stdio -m 4G -vga virtio -device virtio-rng-pci -device virtio-mouse-pci -usb "device usb-mouse" -drive format=raw,file=fat:rw:./efi_filesystem/

Compile at home

UEFIRC uses a small (no-dependency) Python 3.7+ script to coordinate the build. Build and run:

$ python3 scripts/build.py

Should I use this?

This should not exist.

License

MIT license.

Core symbols most depended-on inside this repo

parse_line
called by 34
src/irc/response_parser.rs
read_to
called by 17
src/irc/tokenizer.rs
render_structured_server_notice
called by 14
src/main_uefi.rs
render_structured_message_with_attributes
called by 10
src/main_uefi.rs
send_line_command
called by 6
src/app.rs
read_to_str
called by 6
src/irc/tokenizer.rs
add_component
called by 6
src/gui/title_view.rs
peek
called by 5
src/irc/tokenizer.rs

Shape

Method 98
Class 57
Function 55
Enum 5

Languages

Rust98%
Python2%

Modules by API surface

src/irc/response_parser.rs74 symbols
src/main_uefi.rs34 symbols
src/tcpv4/definitions.rs16 symbols
src/irc/tokenizer.rs13 symbols
src/tcpv4/lifecycle_manager.rs9 symbols
src/app.rs9 symbols
src/tcpv4/proto.rs8 symbols
src/tcpv4/receive_data.rs7 symbols
src/ipv4.rs7 symbols
src/event.rs7 symbols
src/connection.rs7 symbols
src/tcpv4/transmit_data.rs6 symbols

For agents

$ claude mcp add uefirc \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page