• Stars
    star
    344
  • Rank 123,066 (Top 3 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 7 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A front-end for the xi-editor built with modern web technologies.

Xi Electron

A front-end for the xi-editor built with modern web technologies.

Build Status

NOTE: This is still a WIP!

Demo

canvas renderer

Goals of this Repo

  • Make a front-end for xi-editor that is consistent across platforms
  • Experiment with different editor rendering techniques on the web, specifically:
    • 2d - <canvas>
    • DOM - direct use of the DOM (have a look at how CodeMirror tackled some of the challenges of using the DOM)
    • WebGL - GPU accelerated rendering (via <canvas>)
  • Hopefully create a functional mobile friendly version that is also fast and pleasant to use
    • once all three views are implemented we can benchmark them against each other

The main motivation for this repo is to experiment and profile the speeds and performance of different rendering techniques for text editors in the browser, specifically with modern HTML5 APIs and the like. The final goal would be a fully cross-platform (desktop+mobile) text editing experience, but that's still a long hope at this stage.

Getting started

To build and run xi-electron you'll need to have NodeJS installed (Node version 6 or greater) as well as Git.

To get started:

> git clone https://github.com/acheronfail/xi-electron --recursive
> cd xi-electron
> yarn            # or: npm install

# Build xi-core:
> yarn core:build

# If you just want to run in dev mode then run:
> yarn start      # or: npm run start

# To build xi-electron into an application:
> yarn make       # or: npm run make

The yarn build:core script will attempt to build xi-editor, so you'll need Rust (see below for details). The built app will be output to xi-electron/out/.

Building xi-core

Keep in mind you'll need Rust (version 1.30+ is recommended at the moment). On macOS platforms you'll need Xcode 8.2 and other relevant build tools.

You can build and install xi-core via yarn build:core. You can re-run this script anytime you like. xi-editor is currently placed in this repository as a submodule, so we can have a "somewhat" stable experience.

If you run into build issues ensure the submodule is present, ie:

> git submodule update --init

Alternatively, if you'd like to clean and re-build everything again, you can run:

# Deletes all build artefacts:
> yarn core:clean
# Rebuilds the core:
> yarn core:build

If you'd like to build and use a more recent version of xi-editor then just place it under src/xi-core. For building xi-editor manually refer to its instructions.

Contributing

Please! πŸ™

Credits

  • All credits for the xi-editor go to Raph Levien.

License

MIT

More Repositories

1

pixel-picker

A tiny menu bar application that helps you pick colours from your screen! πŸ”βœ¨
Swift
395
star
2

repgrep

An interactive replacer for ripgrep that makes it easy to find and replace across files on the command line.
Rust
256
star
3

apptivator

A macOS menubar app which activates applications via global shorcuts ⌨️
Swift
81
star
4

ia-writer-sublime

A sublime color scheme which aims to match iA Writer as much as possible
15
star
5

k1

Notes for using the Keychron K1 Mechanical RGB keyboard
14
star
6

ColorCode

The Cross-Browser Syntax Highlighter Extension! πŸŽ‰
JavaScript
9
star
7

karabinux

An attempt to port (as much as possible) the functionality of https://github.com/tekezo/Karabiner-Elements to Linux.
Rust
6
star
8

i3stat

A lightweight and batteries-included status_command for i3 and sway
Rust
5
star
9

rotp

A simple HOTP and TOTP generator on the command line
Rust
5
star
10

pyatvui

A terminal UI for pyatv
Python
4
star
11

VSCodeColumnSelection

A Sublime Text plugin for creating column selections like VSCode
Python
4
star
12

trrs

A simple command line tool to convert between common encodings
Rust
4
star
13

human_id

Generate human readable identifier strings by chaning common (short) words of the english language.
Rust
4
star
14

easy_collections

Wrappers around standard collections for ease of use and quick prototyping
Rust
3
star
15

ftrace

Easily discover which files/directories a program accesses.
Rust
3
star
16

gash

A little tool to create custom prefixes on every git commit you make!
Rust
2
star
17

aurrs

An experimental wrapper for pacman.
Rust
2
star
18

rttw

Return true to win clone
TypeScript
2
star
19

timeRS

Like GNU time but in Rust! (timeRS) loaded with more features!
Rust
2
star
20

vscode-arithmetic

Perform easy operations on multiple selections like Sublime Text
TypeScript
2
star
21

convert-apple-loops

A simple script that converts the Apple Loops from Garageband from `caf` into `aiff` so other programs (like Ableton) can use them.
Shell
2
star
22

oryx-stats

A simple tool to analyse data about users' layouts from Oryx
TypeScript
2
star
23

aoc

advent of code
Rust
2
star
24

max_rss

Rust
2
star
25

keyboard-music

Rust
1
star
26

travis-rs

Shell
1
star
27

neli-async-hang

Rust
1
star
28

fakeroot

Rust
1
star
29

cydia

https://acheronfail.github.io/cydia/
Objective-C
1
star
30

i3-plasma-integration

An IPC addon for i3 to integrate it better with plasma
Rust
1
star
31

netwatch

Rust
1
star
32

electron-bookmarks

Hacky implementation of MAS security-scoped bookmarks for electron
JavaScript
1
star
33

di

Rust
1
star
34

file-duplicate-finder

Simple script to find duplicate files
JavaScript
1
star
35

count

Just
1
star
36

pulse-stream-segfault

Rust
1
star
37

plasma-pong

Rust
1
star
38

pulse-rs

Rust
1
star
39

makepkg

Docker container to be able to run Arch's `makepkg` on non-Arch distributions
Dockerfile
1
star
40

acpi_call_finder

JavaScript
1
star
41

zero-check

check the percentage of zero bytes in a file
Rust
1
star
42

lgogdownloader-docker

Dockerfile
1
star
43

morrsse

BSD's `morse` but with more `rs`!
Rust
1
star
44

mdbook-dynamic-templates

This is an addon for `mdbook` which adds support for "Dynamic Templates".
JavaScript
1
star
45

acheronfail.github.io

TypeScript
1
star
46

nxkit

TypeScript
1
star
47

float-view

A tool to view rides recorded with Float Control
Svelte
1
star
48

gnome-application-toggle

A simple extension to toggle an application in gnome easily
JavaScript
1
star
49

atv-ui

Simple HTTP server for a gesture-based AppleTV Remote UI
TypeScript
1
star
50

galaga

Rust
1
star
51

kobo

A simple tool which makes using kobopatch and kobopatch-patches much simpler.
Go
1
star
52

bitport

A program to export all of your bitwarden data, including attachments!
TypeScript
1
star
53

c

Rust
1
star
54

vscode-tree

Description to be updated...
TypeScript
1
star
55

templater.js

A super simple file templater
JavaScript
1
star
56

opng

A tiny program to take a screenshot in X11, then convert it to greyscale and pixelate it; use it with other tools for screensaver backgrounds!
Rust
1
star