Using bubbletea and libgloss to write a web favorates handler for command line usage.
It's still in the development stage, and I'm dealing with problems with the UI components. Code comments and documentation will be written soon. Bugs are being fixed along the way!
show.mp4
Have a nice UI, customization of UI components'position, maybe drag with mouse and store the new position parameter
Add/delete web ✅
Could add description for each web ✅
Multiple name alias for each web page ✅
Scroll bar
Open a web page through target web browser ✅
Icon setting for each web page
Fuzzy finder ✅
Classification support
Vim mode for moving around and search space ✅
Maybe customization for keybindings
YMAL configuration file ✅
Custom sort way: folder, label
Flip between description and link ✅
Copy the link to clipboard ✅
Edit link and description in real time ✅
Basic help info on the top, could be hidden ✅
Check whether the keybindings is conflict
Configuration file should be placed at "~/.config/web-tree/" ✅
Every tree have a storage file? data 目录, 每创建一个 tree, 就添加一个文件 ✅
Check configuration
Move a node to another position ✅
Browser list show ✅
Sort method, tree? node? label and so on.
git clone https://github.com/zKurisu/web-tree.git
cd web-tree
go build .
./web-tree
You can copy the binary file to local path:
cp ./web-tree/web-tree ~/.local/bin/
Press specific keys to enter different modes:
Mode | Key | Desc |
---|---|---|
Display | ESC | From any mode |
Search | Ctrl+n | From any mode. |
AdSearch | Ctrl+u | From any mode |
Browser | Ctrl+o | From any mode |
Add | Ctrl+a | From display mode |
Edit | Ctrl+e | From display mode |
Fuzzy find a web node:
<Tab>
for autocompletion<Ctrl+j>
to move down<Ctrl+k>
to move upEnter
to jump to specific node
Using tree path (web folder), links, alias, and labels to find a node:
<Tab>
for autocompletion<Ctrl+j>
to move down<Ctrl+k>
to move upEnter
to jump to specific node
Add new subtree (web folder) or node:
<Ctrl+j>
to move down<Ctrl+k>
to move upEnter
to jump to specific node
Chose browser for opening a web link, default value is the first one setting in configuration file:
Navigate subtrees and nodes:
h
for leftl
for rightk
for upj
for downctrl+x
for opening linkctrl+e
for editing nodectrl+t
for toggling display info
Open tui
webtree
Open with browser in conf file by alias
webtree --tree=<name> --node --alias=<alias>
Open with browser in conf file by link
webtree --tree=<name> --node --link=<url>
Target browser
webtree --tree=<name> --node --alias=<alias> --browser=firefox
Add a new web folder:
webtree add --tree=<name>
Add a new web folder with sub folder:
webtree add --tree=<name>/<subname>/<subsubname>
Add multiple tree
webtree add --tree=<name>/<subname>/<subsubname>,<another>
Add a new node to a tree (at lease url and alias):
webtree add --tree=<name>/<subname> --node --link=<url1>,<url2> --alias=<alias1>,<alias2> --desc=<desc1>,<desc2> --label=<label1>,<label2>
Delete a tree
webtree del --tree=<name>/<subname>
Delete multiple trees
webtree del --tree=<name>/<subname>,<another>
Delete a node by url
webtree del --tree=<name> --node --link=<url>
Delete a node by alias
webtree del --tree=<name> --node --alias=<alias>
Edit a tree name
webtree edit --tree=<name> --tname=<newname>
Edit a node chosen by link
webtree edit --tree=<name> --node --link=<url> --nlink=<newlink> --nalias=<newalias> --ndesc=<newdesc> --nlabel=<newlabel>
Edit a node chosen by alias
webtree edit --tree=<name> --node --alias=<alias> --nlink=<newlink> --nalias=<newalias> --ndesc=<newdesc> --nlabel=<newlabel>
Move a tree as a subtree of another tree
webtree move --tree=<name> <another tree name>
Move a node to another tree
webtree move --tree=<name> --node --alias=<alias> <another tree name>
List all trees
webtree list tree
List all nodes
webtree list node
List all tags/labels
webtree list label
List all styles
webtree list style
Show detail of a tree
webtree show --tree=<name>
Show detail of a node
webtree show --tree=<name> --node --link=<url>
or:
webtree show --tree=<name> --node --alias=<alias>
Show detail of a label
webtree show --label=<name>