Git Product home page Git Product logo

lex's Introduction

LEX

Table of Contents

ℹ️ Information about the project

⚙️ Installation Instructions

🔬 Compatibility

🚩 Bugs, Issues, and other Important Information

📜 Legal Disclaimer

🧰 Technologies that were used to create LEX


ℹ️ Information about the project

What is LEX? / Issues with Reddit

LEX (LazerEX) is a Lightweight, Open Source Frontend for Reddit written in Go.
The name "Lazer" is an intentional misspelling of the word "Laser"

Why?

Reddit has a lot of potential, but is purposely degraded.
Why? It was likely done to push their mobile app, which is kind of saddening.

The issues with Reddit currently are some of the following:

  • NSFW is heavily blocked (even if the post is not actually NSFW)
  • The UI is extremely slow, and unresponsive.
    • To the point that it can take 20 seconds just to go back from a comment section.
  • Too much bloat, and therefore the data usage is very high.

These issues can be observed on all browsers (for example: Chrome, Firefox, Brave, etc.)

These are some of the issues that LEX aims to fix.

How does LEX Fix these Issues?

  • NSFW content is allowed, but only if you allow it.
    • In the settings page (located at http://localhost:9090/config there is an option to enable NSFW subreddits, and posts.)
  • Optional Javascript and Configurations.
    • A lot of configurations, so you can use LEX as you want to!
      Configurations include:
      • Enabling HLS Videos
      • Enabling Infinite "Scroll"
      • Enabling Gallery Navigation via Arrow Keys
      • Allowing NSFW Subreddits and Posts
      • Allowing Images from Unknown Sources
      • Using Advanced Math to Re-size the Page
      • Setting Preferred Image Resolutions
  • No Ads.

How do I use LEX?

Unfortunately, unlike other open source reddit frontends, LEX does not provide a demo website, and there are three ways to build/use LEX.

  1. Downloading a pre-built binary
  2. Building LEX yourself
  3. Using go install

⚙️ Installation Instructions

Building Instructions

The only requirement to build the project is Go

If Go is installed, run the following commands in your terminal

git clone https://github.com/cmd777/lex.git &&
cd lex/cmd/lex &&
go get -u &&
go run main.go

That's everything! All you need to do next, is just navigate to http://localhost:9090/r/{your_favorite_subreddit}

Downloading Binaries

LEX provides downloadable, pre-built binaries for all major operating systems, including Windows, Linux, and MacOS.

To install LEX via these automatically built binaries, go to the releases tab, and download the appropriate zip for your OS + ARCH, and extract it.

  • For 32 bit Windows machines, download lex-windows.zip, then launch lex-i386-windows.exe
  • For 64 bit Windows machines, download lex-windows.zip, then launch lex-amd64-windows.exe

  • For 32 bit Linux machines, download lex-linux.zip, then launch lex-i386-linux
  • For 64 bit Linux machines, download lex-linux.zip, then launch lex-amd64-linux

  • For Intel MacOS machines, download lex-darwin.zip, then launch lex-amd64-darwin
  • For M1 MacOS machines, download lex-darwin.zip, then launch lex-arm64-darwin

That's everything! All you need to do next, is just navigate to http://localhost:9090/r/{your_favorite_subreddit}

* Pre-built binaries are published around every two weeks.

** This is not definitive, releases can be published earlier, or later, depending on functionality, and current it's current status. (example; a hotfix release would be published as soon as possible)

Go Install

LEX can also be installed via the go install command.

If you have at least go 1.16 or later, you can run the following command:

go install github.com/cmd777/lex/cmd/lex@latest

which will install the latest version of LEX.

Afterwards, simply run lex in your terminal, and that's everything!

Note

you may need to add export PATH=$PATH:$(go env GOPATH)/bin to your .profile file to be able to use the command lex!

If you wish to uninstall LEX, simply run the following command:

rm $(go env GOPATH)/bin/lex

🔬 Compatibility

No JavaScript
Chrome Edge Safari Firefox Opera IE
26> 19> 6.1> 49> 15> 11(?)
INFScroll Setting Enabled
Chrome Edge Safari Firefox Opera IE
42> - 10.1> - 29> X
GalleryNav Setting Enabled
Chrome Edge Safari Firefox Opera IE
45> - 9> - 32> X
HLS Setting Enabled
Chrome Edge Safari Firefox Opera IE
41> ? 9> - ? X
Advanced Math Enabled
Chrome Edge Safari Firefox Opera IE
79> 79> 13.1> 75> 66> X
Legend

> -> Any equal, or newer version is supported

? -> Unsure of compatability

X -> Not compatible

- -> No newer version required

The table displays the recommended versions for browsers, though older versions may be compatible to an extent.

Based on Can I Use data


Windows Linux macOS
Windows 7 or newer Kernel version 2.6.32 or newer macOS 10.13 High Sierra or newer

The table displays the required minimum versions for operating systems.

LEX does not require administrator, or firewall privileges.

Based on the Go Documentation

🚩 Bugs, Issues, and other Important Information

LEX is still in early stages of development, a lot of features are missing, and it might be prone to bugs.

I try to fix most of the critical bugs before pushing any changes, but if you find a bug, or have any questions, feel free to create an issue for it.

For the features that are planned to be added, or the things that need to be fixed, you can once again, take a look at the issues tab

I work on LEX in my free time as a hobby, therefore development may be slow, thank you for your patience!

📜 Legal Disclaimer

LEX is not affiliated with, sponsored, or endorsed by Reddit.

All content that is displayed on LEX has been sourced from Reddit. LEX does not host any of the content.

In case of any issues with a post, such as copyright infringement, trademark infringement, or violation of Reddit's community rules, the reports should be directed to Reddit.

🧰 Technologies that were used to create LEX

Go ➡️ Programming Language https://github.com/golang/go/blob/master/LICENSE
Humanize (go-humanize) ➡️ Formatting time, numbers, etc.. to Human Friendly Units https://github.com/dustin/go-humanize/blob/master/LICENSE
Fiber ➡️ HTTP Web Framework https://github.com/gofiber/fiber/blob/master/LICENSE
(Fiber) Utils ➡️ Common functions with better performance https://github.com/gofiber/utils/blob/master/LICENSE
Go-JSON ➡️ Fast JSON Decoder https://github.com/goccy/go-json/blob/master/LICENSE
Bluemonday ➡️ HTML Sanitizer https://github.com/microcosm-cc/bluemonday/blob/main/LICENSE.md
Blackfriday ➡️ Markdown Processor https://github.com/russross/blackfriday/blob/master/LICENSE.txt
SASS ➡️ CSS Extension https://github.com/sass/sass/blob/main/LICENSE

Also used to create LEX:

Josefin Sans ➡️ Navbar, index font https://github.com/googlefonts/josefinsans/blob/master/OFL.txt
Open Sans ➡️ Subreddit font https://github.com/googlefonts/opensans/blob/main/OFL.txt
Teko ➡️ Favicon font https://fonts.google.com/specimen/Teko/about (OFL)
SVGRepo ➡️ SVGs https://www.svgrepo.com/page/licensing
Yqnn's SVG Path Editor ➡️ Was used to edit almost all SVGs https://github.com/Yqnn/svg-path-editor/blob/master/LICENSE

lex's People

Contributors

github-actions[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.