An open source, programmed in rust, privacy focused tool for reading programming resources (like stackoverflow) fast, efficient and asynchronous from the terminal.

Overview

Contributors Forks Stargazers Issues MIT License


Logo

Falion

An open source, programmed in rust, privacy focused tool for reading programming resources (like StackOverFlow) fast, efficient and asynchronous from the terminal.
Report Bug | Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Road Map
  5. Contributing
  6. License
  7. Contact

About The Project

An open source, programmed in rust, privacy focused tool for reading programming resources (like StackOverFlow) fast, efficient and asynchronous from the terminal. By the time the results appear most of the pages are fully loaded, meaning when going through them you don't have to await for the page to load like in a browser, it just loads instantly, and the pages are parsed in way to make it easier to view them from the terminal. All the searches are done through DuckDuckGo (only through HTTPs), and the requests to the respective pages are done only for getting the html of it and nothing else, making this tool a privacy focused one. For a demo just watch the video under here, and for information about the key binds go to key binds

Supported programming sources:

These are generic resources and work for most languages, in the future i may add language specific ones, but for now this is what I am focusing on. More will come.

  • StackOverFlow don't think I need to say anything about it.
  • StackExchange a q&a forum like StackOverFlow that grabs questions and answers from over 170 sources.
  • Github Gists here code snippets and guides are posted in form of like a file list.
  • GeeksForGeeks can find various good resources on programming and other computer related things.
  • DuckDuckGo Results as a last resort in case none of the above resources work for you (it's like 20+ of each on every search), you can get the basic sites you get on search and view them, tho it's not gonna be as nicely printed, but still readable so you don't have to leave the terminal

Video showcase

falion2.mp4

Built with

The stock libraries and these awesome 3rd party ones:

  • reqwest for making all the HTTPs requests.
  • tokio for making requests asynchronously.
  • regex for scraping information about pages, like getting urls etc.
  • urlencoding for encoding the query in order to be URL compliant.
  • futures for handling the asynchronous tasks.
  • colored for easily colorizing the terminal output.
  • crossterm for manipulating the terminal, like getting key inputs, clearing it and others.
  • html2text for converting html to readable text in order to display pages in terminal better.
  • url for parsing strings to an URL object for easier and safer manipulation.
  • indexmap for having an object Hash Map like that supports indexing.
  • argparse to easily handle command line arguments.

Getting Started

Running The Program

Install with cargo

This method will work across most (if not all) Linux distributions supporting cargo, and other operating systems that support rust and cargo (I only tested on Linux).

  1. Install rust, cargo and all it's things using the official rustup installer
  2. Run the following command in your terminal of choice:
cargo install falion
  1. Make sure you have .cargo/bin in path, you would need to add the following line in your terminal RC file (e.g $HOME/.zshrc)
export PATH=$HOME/.cargo/bin:$PATH

On windows it should work automatically (restart if just installed), if not you can follow this guide for how to add something to path. The cargo bin folder will be {your-user-folder}\.cargo\bin

  1. In order to update run the install command again, and you can now follow usage for more information on how to use it.

Install from AUR

a. Using yay or any other AUR helper

yay -Sy falion-bin

b. Manually cloning and building it from AUR

  1. First install the basic build dependencies, if you don't already have them:
sudo pacman -Sy gcc base-devel --needed
  1. Then clone the build script
git clone https://aur.archlinux.org/falion-bin.git
  1. Cd into the new cloned repository and run the following to build the package
makepkg
  1. In order to install the package run the following (where * is just an any other characters place holder)
sudo pacman -U falion-bin-*.pkg.tar.zst

Install from provided binaries

a. For Arch Linux based distros (not recommended, use AUR in order to have auto updates as well)

  1. Download from the releases tab from the version you want (latest stable recommended), the file named like falion-bin-*.pkg.tar.zst
  2. From where you downloaded it run the following command in your terminal of choice (where * is just an any other characters place holder):
sudo pacman -U falion-bin-*.pkg.tar.zst

b. For Debian based distros (I'm working on a PPA, for now I recommended you use the cargo version instead)

  1. Download from the releases tab from the version you want (latest stable recommended), the file named like falion_*_debian_amd64.deb
  2. From where you downloaded it run the following command in your terminal of choice (where * is just an any other characters place holder):
sudo dpkg -i falion_*_debian_amd64.deb

Manually

Placing the executable somewhere than adding it to path. (Not recommended, installing it with cargo is better)

  1. Either follow compilation and build it for the platform of your choice or download from the releases tab the prebuilt Linux binary, called "falion"
  2. Copy the falion executable to a location you want (it will have to stay there), usually in Linux you would create a folder in /opt called falion and put the executable there, or you can place anywhere else in the home dir.
  3. On Linux modify your .zshrc / .bashrc / .fishrc , the hell you use, and add this line to it: (without quotation marks) "alias falion=your/path". On windows you will have to modify your path variable, here is a guide. And on Mac same as Linux.
  4. After you are done, you should be able to just type "falion" in terminal and you should see something pop up, saying you didn't input any query and directing you to run falion -h.

Compilation

This program only uses cross platform libraries, but I have problems compiling it for windows from Linux, when I have time I will spin up a VM to see if it compiles in windows (on MacOS it should like 99.99% compile without problems). The following steps require that you have rust installed, check their official installation page.

  1. Clone this repo on your PC, you can use "git clone", if you have git installed, like this:
git clone https://github.com/Obscurely/falion.git

Otherwise in the right up side of the repo page you will see a download button, download the repo as zip and extract it in a folder

  1. Open a new terminal/cmd window in the folder you extracted the repo in, if you can't right click on the folder and open it there do:
cd the/path

and you will get there.

  1. From there run this compile command in the terminal:
cargo build --release

It will take a bit depending on your system because of executable size optimizations, but be patient.

  1. Done, navigate to target/release and grab only the "falion" file from there. Now you can follow manually install

Usage

Basics

  1. First you would have to get it installed and in path, follow this, after you can continue.
  2. Then from the terminal (regardless of the os) you can use it by running these commands.
    For getting help about the program
falion -h

For getting a list of the key binds, also available on this README at key binds

falion -k

For doing a search

falion rust how to print

Or if you want to do a search and see all the warnings (like parsing problems of text etc) run it in verbose mode

falion -v rust how to print

Key binds

Key Binds list for falion!

Note: where '..' is used it means from that to that like '1..5' would mean from 1 to 5.

Main menu:

[1..5] = Access that resource.
SHIFT + [1..5] = Go to the next element in the list of that resource.
ALT + [1..5] = Go to the previous element in the list of that resource.
CTRL + n = Move to the next element in the list of every resource.
CTRL + b = Move back to the previous element in the list of every resource.
CTRL + c = Clear terminal and exit.

Sub menus for the resources:

CTRL + n = Move to the next element in the content list (like questions & answers).
CTRL + b = Move back to the previous element in the content list.
CTRL + q = Go back to the main menu.
CTRL + c = Clear terminal and exit.

These were all the key binds, enjoy using Falion!

Road Map

Adding more generic resources, but also maybe add lanaguage related one that get enabled based on the first word in the query. And also just improve it in general.

Contributing

Edit a file you want, do a pull request, I will look at it and if the change makes sense and is a good one I will accept it and that's it.

License

Is under GPL-3.0 so stick to the license conditions and have fun :)

Contact

Either post an issue in the Issues Tab or contact me at this email adddress if you have more to say: [email protected]

You might also like...
This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files
This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files

This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files

Unopinionated low level API bindings focused on soundness, safety, and stronger types over raw FFI.

🔥 firehazard 🔥 Create a fire hazard by locking down your (Microsoft) Windows so nobody can escape (your security sandbox.) Unopinionated low level A

Experimental implementation of the Privacy Preserving Measurement (PPM) specification.

janus Janus is an experimental implementation of the Privacy Preserving Measurement (PPM) specification. It is currently in active development. Runnin

Open-source compiler for the Papyrus scripting language of Bethesda games.

Open Papyrus Compiler This project is still WORK IN PROGRESS. If you have any feature requests, head over to the Issues tab and describe your needs. Y

Rust crate `needleman_wunsch` of the `fasebare` package: reading FASTA sequences, Needleman-Wunsch alignment

fasebare Rust crate needleman_wunsch of the fasebare package: reading FASTA sequences, Needleman-Wunsch alignment. Synopsis The crate needleman_wunsch

A robust, customizable, blazingly-fast, efficient and easy-to-use command line application to uwu'ify your text!
A robust, customizable, blazingly-fast, efficient and easy-to-use command line application to uwu'ify your text!

uwuifyy A robust, customizable, blazingly-fast, efficient and easy-to-use command line application to uwu'ify your text! Logo Credits: Jade Nelson Tab

Command line tool for cheap and efficient email automation written in Rust

Pigeon Pigeon is a command line tool for automating your email workflow in a cheap and efficient way. Utilize your most efficient dev tools you are al

A fast, efficient emulator for the osu! Bancho protocol written in Rust

rosu. A fast, efficient emulator for the osu! Bancho protocol written in Rust. Setup Git clone rosu, setup your nginx (example config is in the ext fo

Cloc - cloc counts blank lines, comment lines, and physical lines of source code in many programming languages.

cloc Count Lines of Code cloc counts blank lines, comment lines, and physical lines of source code in many programming languages. Latest release: v1.9

Releases(v0.2.0)
Owner
Obscurely
Obscurely
zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.

zigfi zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets

Aldrin Zigmund Cortez Velasco 17 Sep 8, 2022
YAML(ish) - Terminal UI framework based on templates focused on simplicity

A YAML(ish) based terminal GUI framework for- and by Rust, focussed on making it quick and easy to create a functional UI for an app or game. Based on Crossterm and inspired by Kivy.

null 23 Sep 6, 2022
📚 flow state reading in the terminal

fsrx ?? (f)low (s)tate (r)eading e(x)change – flow state reading in the terminal Inspired by (but not affiliated with) Renato Casutt and his revolutio

colby thomas 259 Sep 16, 2022
An open source artifact manager. Written in Rust back end and an Vue front end to create a fast and modern experience

nitro_repo Nitro Repo is an open source free artifact manager. Written with a Rust back end and a Vue front end to create a fast and modern experience

Wyatt Jacob Herkamp 23 Aug 26, 2022
Curated list of awesome projects and resources related to Rust and computer security

Awesome Rust Security Curated list of awesome projects and resources related to Rust and computer security Table of Contents Tools Web and Cloud Secur

Alan 88 Sep 21, 2022
Cost saving K8s controller to scale down and up of resources during non-business hours

Kube-Saver Motivation Scale down cluster nodes by scaling down Deployments, StatefulSet, CronJob, Hpa during non-business hours and save $$, but if yo

Mahesh Rayas 5 Aug 15, 2022
A blazing fast command line license generator for your open source projects written in Rust🚀

Overview This is a blazing fast ⚡ , command line license generator for your open source projects written in Rust. I know that GitHub

Shoubhit Dash 28 Sep 18, 2022
rip is a command-line deletion tool focused on safety, ergonomics, and performance

rip (Rm ImProved) rip is a command-line deletion tool focused on safety, ergonomics, and performance. It favors a simple interface, and does not imple

Kevin Liu 659 Sep 29, 2022
Shellharden is a syntax highlighter and a tool to semi-automate the rewriting of scripts to ShellCheck conformance, mainly focused on quoting

Shellharden is a syntax highlighter and a tool to semi-automate the rewriting of scripts to ShellCheck conformance, mainly focused on quoting

Andreas Nordal 4.3k Sep 27, 2022
Adds back-and-forth jumping between current and previous focused windows to Sway.

sway-focus-back-and-forth Implements back-and-forth movement between the current and the previous focused windows. It also can be seen as a fix to thi

Vinícius Müller 4 Aug 11, 2022