A terminal interface for StackOverflow written in Rust

栏目: IT技术 · 发布时间: 5年前

内容简介:While I like the acronymYou can install the AUR package

A terminal interface for StackOverflow written in Rust

A terminal interface for StackOverflow written in Rust

A terminal interface for StackOverflow written in Rust

example usage

While I like the acronym so , this tool would actually be better described as se : an interface to the StackExchange network. In particular one thing that differentiates it from similar tools is that you can simultaneously search any number of sites in the StackExchange network:

# search using your default configuration
$ so how do i reverse a list in python

# search for a latex solution
$ so --site tex how to put tilde over character

# use google to search stackoverflow.com, askubuntu.com, and unix.stackexchange.com
$ so -e google -s askubuntu -s stackoverflow -s unix how do i install linux

installation

Arch Linux

You can install the AUR package so (tracks latest release) or so-git (tracks master), e.g.

yay -S so-git

MacOS

You can install via homebrew

brew install samtay/tui/so

cargo

cargo install so

release binaries

Static binaries are available on the releases page for common Linux, MacOS, and Windows targets. You can quickly install the one you need to directory DEST with:

curl --proto '=https' --tlsv1.2 -sSf https://samtay.github.io/so/install.sh \
  | bash -s -- --to DEST

Right now I'm only building the most common targets, but in theory it should be easy to add more, so if you don't see what you are looking for just open an issue and I can add it. Here's a list of the supported targets . If you don't know what you need, you can install rustc and open an issue with the output of rustc -Vv | grep host | cut -d' ' -f2 .

documentation

configuration

The configuration files for e.g. a user Alice can be found in the following directories:

/home/alice/.config/so
C:\Users\Alice\AppData\Roaming\Sam Tay\so
/Users/Alice/Library/Preferences/io.Sam-Tay.so

defaults

The config.yml file let's you specify your CLI defaults. So if you dislike the lucky prompt, always search serverfault.com and unix.stackexchange.com, and want thefastest search engine, you can set your config file like this:

# config.yml
---
api_key: ~
limit: 10
lucky: false
sites:
  - serverfault
  - unix
search_engine: stackexchange

Run so --help to see your current defaults.

themes

In the same directory you'll find colors.toml which is self-documented. The default theme attempts to blend in with your default terminal theme, but you can change it as necessary. In particular, you may want to change the highlight_text if the current selection is difficult to read. There are some themes in the themes directory as well.

api keys

If you want to use your own StackExchange API Key you can set it via

so --set-api-key <KEY>

You can also choose to use no key by editing your configuration to api_key: ~ . If for some reason my API key is globally throttled, you can hit the StackExchange API with no key up to 300 times per day per IP, which I imagine is fine for most users.

search engines

The available search engines are StackExchange, DuckDuckGo, and Google. StackExchange will always be the fastest to search because it doesn't require an additional request or any HTML parsing; however, it is also very primitive. DuckDuckGo is in second place for speed, as its response HTML is much smaller than Google's. I've found that it performs well for my queries, so it is the default search engine.

multi-site searching

As stated in the docs ,

If a single IP is making more than 30 requests a second, new requests will be dropped.

So, don't go crazy with the multi-site search, since it is all done in parallel. In particular, if you specify more than 30 sites, SE will likely ban you for a short time.

selecting a backend

If you're installing from source, you can choose from a number of available backend rendering engines. Note that the package default and windows feature flags do not have an ncurses dependency, for the sake of portability. The default backend is termion , a bindless library in pure Rust which seems to work quite well on Linux, MacOS, BSD, and Redox. The windows backend is by default crossterm , and while its level of support is awesome, it does comes at a price in performance. On my machine, the app kind of flashes between draws. So if you are on Mac, Linux, or Redox, your best bet is to compile with default features which uses the termion backend. If you are on windows, use crossterm, but know it will be slightly jumpy.

If the crossterm folks figure out a fix for allowing ncurses to receive resize events , and you have ncurses installed on your system, then the ncurses and pancurses backends are likely the most performant. Just know that currently if you choose this option, and you run the --lucky prompt, you won't be able to resize the terminal window while the TUI is open.

Available backends:

termion-backend
ncurses-backend
pancurses-backend
crossterm-backend

E.g. to use ncurses-backend :

cargo install so --no-default-features --features ncurses-backend

See more information about this choice here .

contributing

Warning: this was my first time writing Rust and there is very likely some non-idiomatic and straight up ugly code throughout this project, so don't come looking here for a good Rust example! That being said, I would love to improve the codebase. Feel free to check out the contributing guidelines and submit any refactoring issues or pull requests.

credits

Credit to my good friend Charles for logo design.


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

网络营销实战密码

网络营销实战密码

昝辉Zac / 电子工业出版社 / 2009.1 / 56.00元

本书是作者几年来网络营销实战的总结,与其他网络营销书籍最大不同之处是:只专注于实战,不谈理论。本书分三部分详细介绍了网络营销实用策略和技巧,并分析了大量实战案例。第一部分介绍市场与产品研究,包括用户、市场和竞争对手的调查;产品、目标市场的确定;价格策略;赢利模式等。第二部分讨论以网络营销为导向的网站设计,包括怎样在网站上卖东西、提高转化率,以及网站目标设定等。第三部分研究怎样给网站带来流量,详细讨......一起来看看 《网络营销实战密码》 这本书的介绍吧!

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具