5个版本 (稳定版)
1.0.3 | 2024年5月2日 |
---|---|
1.0.2 | 2024年3月18日 |
1.0.0 | 2024年3月14日 |
0.2.0 | 2022年4月22日 |
#329 in Web编程
4.5MB
4K SLoC
目录
🪽 关于项目
Falion 是一个由 Rust 创建的创意开源工具,旨在改善编程资源交互,优先考虑 隐私、速度 和 效率,针对 StackOverflow、GitHub Gists 等资源。
该项目旨在解决编程世界中快速、私密 获取信息的挑战,使用 DuckDuckGo 进行 安全、私密 搜索结果。仅使用 HTTPS 连接和 无JavaScript、纯HTML。
Falion 非常 快速 和 高效,具有异步结果检索和 并行 抓取。从每个资源获取五个结果只需 大约1-1.5秒。这意味着,当你看到结果时,所有内容都已加载并准备好访问。
它提供以用户为中心的界面,包括具有类似 VIM 键绑定(适用时)的 命令行界面 (CLI) 和 图形用户界面 (GUI)。
跨平台支持 确保它可以在 Linux、MacOS 和 Windows 上运行。
它可以用作独立工具或作为 crate 集成到 Rust 项目中,增强开发能力。
关键亮点
隐私优先:它使用 DuckDuckGo 查找结果,坚持使用 HTTPS 连接,并保持无跟踪。
闪电速度:得益于异步结果检索和并行抓取,您可以在瞬间获得答案。
以用户为中心的界面:在类似 VIM 的 CLI(适用时)和轻量级 GUI 之间进行选择,以获得您偏好的体验。
跨平台:在 Linux、MacOS 和 Windows 上无缝运行。
无速率限制:在正常使用下无中断地浏览。
多功能:用作独立工具或将它作为 crate 集成到您的 Rust 项目中。
支持的资源
这些是适用于大多数流行语言的通用资源。未来还将增加更多资源,并支持自定义资源。此外,您可以在此处 请求资源。
- StackOverflow 是一个编程问答网站。
- StackExchange 是一个由社区驱动的问答网站网络。
- GitHub Gists 是一个用于分享和协作代码片段的平台。
- GeeksForGeeks 是一个计算机科学和编程的在线学习平台。
- DuckDuckGo 结果 只是正常呈现为文本的结果,没有像上面那样美好,作为最后的手段。
如果您有任何问题,请查看 常见问题解答 (FAQ)。
(返回顶部)
💡 功能
- 与编程资源交互
- StackOverflow - 无需多言
- StackExchange- 不同论坛的索引
- Github Gists - 用于代码片段和指南
- GeeksForGeeks - 有各种优秀的编程资源
- DuckDuckGo - 只是为了您不需要离开程序,您也有基本结果的 HTML 版本
- 隐私关注
- DuckDuckGo 用于结果
- 仅请求 HTTPS 请求
- 只获取 HTML,不进行不必要的跟踪
- 非常 快 和 高效
- 结果异步检索
- 资源并行抓取
- 立即查看页面,在结果出现时内容已经加载完成
- 大约需要 1 秒到 1.5 秒来获取结果(及内容)。每个资源 5 个结果
- 利用 Rust 的性能
- 进行了许多 优化
- 资源消耗轻量(GUI 和 CLI)
- CLI 界面
- 快速 和渲染优化界面
- 类似 VIM 的键绑定(适用时)
- 简单 和 直观
- GUI 界面
- 轻量级 界面
- 简单
- 响应式
- 跨平台
- Linux
- MacOS
- Windows
- 不会在正常使用下速率限制
- 项目也可以 用作 crate
- 结果最多缓存 7 天
- Web UI
- 自定义资源支持
- 可配置
- 可从程序编辑配置文件
(返回顶部)
🎥 视频展示
(返回顶部)
🍔 构建
(返回顶部)
库存库和这些优秀的第三方库
- chrono 用于日志文件的名称
- clap 用于 CLI 参数
- crossterm 是 CLI 的核心
- dashmap 是一个并发哈希表
- dirs 用于获取存储日志文件的路径
- futures 用于并行执行
- hashbrown 是 std 哈希表,但哈希速度更快
- html2text 用于将 HTML 转换为可读文本
- rand 用于生成随机用户代理
- rayon 用于并行迭代器
- reqwest 用于发送网络请求
- slint 用于 GUI
- slint-build 用于构建 GUI 文件
- thiserror 用于改进错误处理
- tokio 是一个异步运行时
- tracing 用于获取日志
- tracing-subscriber 用于解析和存储日志
- url 用于解析 URL 以测试其有效性
- urlencoding 用于编码搜索查询
- user32-sys、winapi 和 kernel32-sys 用于检查程序运行的路径以及在 Windows 上隐藏终端窗口
- embed-resource 用于在 Windows 上构建时将图标嵌入可执行文件
(返回顶部)
🏁 入门
🏃 运行程序
平台 | 版本 |
---|---|
Windows | 7 及以上 |
Linux | 任何版本 |
MacOS | 10.15 及以上 |
所有平台 | 所有以上 |
(返回顶部)
🪟 Windows
便携式EXE
- 转到 发行标签 并下载 falion-windows.exe 文件(可能需要点击显示全部)。
- 双击您刚下载的 exe 文件,程序即可运行。
- 如果您对它不了解,可以查看 使用标签。
- 您还可以创建一个桌面快捷方式和放入 开始菜单 的快捷方式。
安装程序
- 转到 发行标签 并下载 falion-windows-installer.exe 文件(可能需要点击显示全部)。
- 双击安装程序,就像其他安装程序一样进行操作。
- 现在,如果您查看开始菜单(或者在您勾选创建桌面快捷方式的情况下在桌面上),您将看到一个 falion 的快捷方式,就像运行其他程序一样运行它。
- 如果您对它不了解,可以查看 使用标签。
(返回顶部)
🐧 Linux
⚠️ 依赖项: openssl,可能已经安装。
(返回顶部)
便携式Bin
- 转到 发行标签 并下载 falion-linux 文件。
- 双击您刚下载的 bin 文件,程序即可运行。
- 如果您对它不了解,可以查看 使用标签。
- 您也可以下载 falion-linux.tar.gz 文件,然后将 linux/desktop/falion.desktop 提取到 $HOME/.local/share/applications,linux/desktop/icons 提取到 $HOME/.local/share/icons,以便在开始菜单中创建快捷方式和将 falion 放入 /usr/bin/。
AppImage
- 转到 发行标签 并下载 falion-linux.AppImage 文件。
- 双击下载的AppImage,程序就会正常运行。如果您还没有安装,可以安装AppImageLauncher,这样在启动AppImage时会有提示,询问您是否想要集成并运行它。如果这样做,它将就像您安装了它一样出现。
- 如果您对它不了解,可以查看 使用标签。
AUR
PKGs包括:
- falion-bin(对于预编译,这是唯一可用的,因为在pkgbuild中构建失败的原因)
a. 如果您有一个AUR管理器(如paru或yay,您应该安装一个)
-
就像使用任何其他AUR包一样,选择您喜欢的类型,然后可以运行以下命令,例如。
paru -Sy falion-bin
-
在应用程序启动器中搜索falion并启动它。
-
如果您对它不了解,可以查看 使用标签。
b. 手动从AUR克隆和构建它
-
首先安装基本构建依赖项,如果您还没有安装
sudo pacman -Sy gcc base-devel --needed
-
然后克隆构建脚本
git clone https://aur.archlinux.org/falion-bin.git
-
进入新克隆的存储库并运行以下命令来构建软件包
makepkg
-
为了安装软件包,运行以下命令(其中*是任何其他字符的占位符)
sudo pacman -U falion-*.pkg.tar.zst
Nix文件
您正在使用NixOS,不用担心,我为您准备好了。
- 转到发布标签并下载falion-linux.nix文件。
- 如果您使用flakes,则将其放入pkgs文件夹中,并在顶部添加您的标签(例如my)。如果没有,只需将代码添加到您的default.nix文件中,然后以这种方式安装。
- 如果您对它不了解,可以查看 使用标签。
Deb文件
您应该使用应用镜像。这不会提供桌面文件,您需要从命令行运行它。这里只是作为另一种需要的手段。我会尽力创建一个ppa。
-
转到发布标签并下载falion-linux.deb文件。
-
在下载的文件夹中打开终端并运行以下命令
sudo dpkg -i falion-linux.deb
-
在终端中运行falion,应用程序就出现了。
-
如果您对它不了解,可以查看 使用标签。
-
您也可以下载falion-linux.tar.gz文件,并将linux/desktop/falion.desktop提取到$HOME/.local/share/applications,将linux/desktop/icons提取到$HOME/.local/share/icons,以便有启动菜单快捷方式。
(返回顶部)
🍎 macOS
(返回顶部)
便携式二进制文件
应用文件夹
与便携式二进制文件非常相似,唯一的真正区别是这个有一个图标。
-
转到发布标签并下载falion-macos-app.tar.gz文件。
-
使用您的归档管理器或在终端中运行以下命令
tar -xzf falion-macos-app.tar.gz
-
双击您刚刚下载的应用程序文件夹,程序就会运行。
-
如果您对它不了解,可以查看 使用标签。
DMG安装程序
就像您使用的任何其他dmg安装程序一样。
- 转到发布标签并下载falion-macos-installer.dmg文件。
- 双击运行dmg。
- 将应用程序文件夹拖到Applications文件夹。
- 完成,您已经安装了应用程序,现在应该在启动器中看到它。
- 如果您对它不了解,可以查看 使用标签。
Homebrew
注意,这种方法不包含桌面条目。您需要运行falion命令或自己创建一个快捷方式,这非常简单。
-
您需要安装homebrew,如果您还没有安装,请运行以下命令
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
您需要添加我的tap存储库,运行以下命令即可
brew tap Obscurely/tap
-
安装软件包。
brew install falion
-
如果您对它不了解,可以查看 使用标签。
(返回顶部)
🚉 所有平台
此方法适用于任何Linux发行版、Windows 10/11和macOS(Big Sur+已测试)。
-
安装rust,可以使用官方的rustup安装程序或您可能使用的任何包管理器。(如果您使用nix,仓库中还有一个shell.nix文件)
-
在您选择的终端中运行以下命令
cargo install falion
-
确保您的路径中包含.cargo/bin,对于Linux和macOS,您需要在终端RC文件(例如$HOME/.zshrc)中添加以下行
export PATH=$HOME/.cargo/bin:$PATH # This is for Linux & macOS, look below for Windows.
在Windows上,它应该会自动工作(如果刚刚安装,则需要重启),如果不可以,您可以遵循此指南了解如何将内容添加到路径中。Cargo bin文件夹位于Users\{您的用户}\.cargo\bin
-
如果您在Linux & macOS上,可能想要创建一个符号链接或如果您在Windows上,创建一个快捷方式到bin文件以方便访问。
-
要更新,请再次运行安装命令,现在您可以遵循使用说明了解更多有关如何使用它的信息。
-
此外,您可能还想根据您的平台创建快捷方式并将其放置在开始菜单中。
(返回顶部)
🛠 编译
此程序仅使用跨平台库。以下步骤要求您已安装rust,请检查他们的官方安装页面或使用您可能想要的任何包管理器。(如果您使用nix,仓库中还有一个shell.nix文件)
-
在您的PC上克隆此仓库,如果您已安装git,可以使用"git clone",如下所示
git clone https://github.com/Obscurely/falion.git
否则,在仓库页面的右上角,您将看到下载按钮,下载仓库作为zip文件并提取到文件夹中
-
在新终端/cmd窗口中打开提取的仓库文件夹,如果您无法在该文件夹上右键单击并打开它,请这样做
cd the/path
然后您就会到达那里。
-
从那里,在终端中运行此编译命令
cargo build --release
这需要一段时间,因为系统会对可执行文件的速度进行优化,但请耐心等待。
-
完成,导航到target/release并从那里获取"fafion"文件。
(返回顶部)
🪧 使用
在提供的视频中展示了您应该了解的有关如何使用falion的所有信息。我也认为UI足够直观,但显然我不能有一个无偏见的眼光或第一次使用体验,所以就这样吧。
基础知识
CLI键绑定
注意:当使用'..'时,它意味着从那个到这个,例如'1..5'意味着从1到5。
主菜单
[1..5] = 访问该资源。
SHIFT + [1..5] = 前往该资源列表中的下一个元素。
ALT + [1..5] = 前往该资源列表中的上一个元素。
n = 移动到每个资源列表中的下一个元素。
SHIFT + n = 移动到每个资源列表中的上一个元素。
CTRL + c = 清除终端并退出。
资源子菜单
n = 移动到内容列表中的下一个元素(如问题 & 答案)。
SHIFT + n = 移动到内容列表中的上一个元素。
q = 返回主菜单。
CTRL + c = 清除终端并退出。
如何使用GUI
- 在搜索框中输入您的查询并按Enter键或点击旁边的按钮。
- 浏览资源
- 资源旁边的箭头用于单独移动一个元素向前或向后。
- 底部的箭头用于向前或向后移动一个元素以及所有资源。
- 点击包含标题的按钮,可以进入该结果的查看结果视图。
- 如果是动态结果,请使用箭头进行移动;如果不是,则只需滚动浏览。
- 左上角有一个返回按钮,可以带您返回主菜单。
高级
以下是一些您可能需要了解的命令行选项。
--verbose
使日志详细。--disable-logs
禁用写入日志文件。--ui
从命令行运行 UI。--help
显示帮助信息。--keybinds
显示 CLI 的快捷键列表。
(返回顶部)
🗾 路线图
路线图(看板)位于项目选项卡顶部或此链接。
(返回顶部)
💁 贡献
欢迎贡献!
请阅读 CONTRIBUTING.md 和 CODE_OF_CONDUCT.md,但概括来说,基本流程是:编辑您想要编辑的文件,进行 pull request,我会查看它,如果更改合理且良好,我将接受它。另外,请友好且尊重。
(返回顶部)
❓常见问题解答
-
Falion 是否支持从支持的资源(如 StackOverflow 或 GitHub Gists)抓取非英语内容?
不。一方面,DuckDuckGO 在处理非英语内容时存在困难;另一方面,我已将客户端配置为仅接受英语,因为大部分编程相关内容都是英文的。
-
我可以贡献吗?如果是,过程是什么?
首先,请参考贡献。其次,只要您编写的代码良好、干净、高效、有文档/注释,并且有助于项目,我将非常乐意接受您的 pull request。
-
Falion 在抓取资源内容时采取了哪些隐私措施?
它使用 DuckDuckGO 进行搜索结果,尽可能查询最少的 URL,并且仅向客户端提供没有添加指纹的 HTML 页面。唯一需要担心的是您的 IP 地址,大多数人在重启路由器后都可以获得一个新的 IP 地址,因此这并没有什么价值。
-
在较旧的硬件上运行 Falion 是否比广告中的慢?
我在我的 6 年老 CPU(ryzen 7 2700)上的 1 核 Windows 虚拟机中运行过它,禁用了涡轮加速,2Gb 的内存,性能似乎差不多(最多慢半秒)。只要您的总网络延迟低,速度在 100Mbits/s 以上,它将基本符合广告中的描述。无论如何,它将比使用浏览器快。
-
我如何报告错误或请求功能?
只需在这里。
-
Falion crate 能为我项目做什么?
用于从编程资源或 DuckDuckGO 获取结果的所有方法都公开了。所以如果您想以高效的方式从这些资源中获取搜索结果,这个 crate 就适合您。
(返回顶部)
📟 Semver
falion 遵循 Semantic Versioning 2.0。
(返回顶部)
🔰 安全性
如果您发现任何问题,请仔细阅读 SECURITY.md 并严格遵守其中所述的所有内容。
(返回顶部)
🪪 许可证
该软件遵循 MIT 许可协议,请遵守许可条件并享受乐趣 :)。
(返回顶部)
📧 联系方式
您可以在问题标签页中发布问题,或者如果您有更多要说的,可以联系我:[email protected]
(返回顶部)
📄 模板
此存储库基于这个模板 Obscurely/RustTemplate
🦾 致谢
(返回顶部)
依赖项
~22–38MB
~634K SLoC