Added youtube-tui
This commit is contained in:
parent
62f7a4728a
commit
9c82993de4
15 changed files with 393 additions and 6 deletions
|
|
@ -1,5 +1,6 @@
|
|||
# This file contains fish universal variable definitions.
|
||||
# VERSION: 3.0
|
||||
SETUVAR --export BAT_THEME:Dracula
|
||||
SETUVAR __done_min_cmd_duration:10000
|
||||
SETUVAR __done_notification_urgency_level:low
|
||||
SETUVAR __fish_initialized:3800
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
[Settings]
|
||||
gtk-theme-name=Dracula
|
||||
gtk-icon-theme-name=Dracula
|
||||
gtk-font-name=Adwaita Sans 11
|
||||
gtk-font-name=Inter Variable 11
|
||||
gtk-cursor-theme-name=Dracula
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-toolbar-style=GTK_TOOLBAR_ICONS
|
||||
|
|
@ -14,4 +14,4 @@ gtk-xft-antialias=1
|
|||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle=hintslight
|
||||
gtk-xft-rgba=rgb
|
||||
gtk-application-prefer-dark-theme=0
|
||||
gtk-application-prefer-dark-theme=1
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
[Settings]
|
||||
gtk-theme-name=Dracula
|
||||
gtk-icon-theme-name=Dracula
|
||||
gtk-font-name=Adwaita Sans 11
|
||||
gtk-font-name=Inter Variable 11
|
||||
gtk-cursor-theme-name=Dracula
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-application-prefer-dark-theme=0
|
||||
gtk-application-prefer-dark-theme=1
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ include dracula.conf
|
|||
confirm_os_window_close 0
|
||||
|
||||
# BEGIN_KITTY_FONTS
|
||||
font_family family="JetBrainsMono Nerd Font"
|
||||
font_family family="Iosevka Term"
|
||||
bold_font auto
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
|
|
|
|||
|
|
@ -1 +1,10 @@
|
|||
include dracula.conf
|
||||
|
||||
confirm_os_window_close 0
|
||||
|
||||
# BEGIN_KITTY_FONTS
|
||||
font_family family="Source Code Pro"
|
||||
bold_font auto
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
# END_KITTY_FONTS
|
||||
|
|
|
|||
27
.config/youtube-tui/appearance.yml
Normal file
27
.config/youtube-tui/appearance.yml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
borders: Rounded
|
||||
colors:
|
||||
text: Reset
|
||||
text_special: Reset
|
||||
text_secondary: Reset
|
||||
text_error: LightRed
|
||||
outline: Reset
|
||||
outline_selected: LightBlue
|
||||
outline_hover: LightRed
|
||||
outline_secondary: LightYellow
|
||||
message_outline: '#FF7F00'
|
||||
message_error_outline: LightRed
|
||||
message_success_outline: LightGreen
|
||||
command_capture: '#64FF64'
|
||||
item_info:
|
||||
tag: Gray
|
||||
title: LightBlue
|
||||
description: Gray
|
||||
author: LightGreen
|
||||
viewcount: LightYellow
|
||||
length: LightCyan
|
||||
published: LightMagenta
|
||||
video_count: '#838DFF'
|
||||
sub_count: '#65FFBA'
|
||||
likes: '#C8FF81'
|
||||
genre: '#FF75D7'
|
||||
page_turner: Gray
|
||||
25
.config/youtube-tui/cmdefine.yml
Normal file
25
.config/youtube-tui/cmdefine.yml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
playlist: loadpage playlist
|
||||
watchhistory: loadpage watchhistory
|
||||
library: loadpage library
|
||||
search: loadpage search
|
||||
feed: loadpage feed
|
||||
cp: copy
|
||||
v: version
|
||||
x: quit
|
||||
pause: mpv sprop pause yes ;; echo mpv Player paused
|
||||
resume: mpv sprop pause no ;; echo mpv Player resumed
|
||||
print: echo
|
||||
channel: loadpage channel
|
||||
tpause: mpv tprop pause ;; echo success Toggled player pause
|
||||
video: loadpage video
|
||||
bookmarks: loadpage bookmarks
|
||||
h: help
|
||||
back: mpv playlist-previous ;; echo mpv Skipped
|
||||
exit: quit
|
||||
trending: loadpage trending
|
||||
next: mpv playlist-next ;; echo mpv Skipped
|
||||
popular: loadpage popular
|
||||
q: quit
|
||||
r: reload
|
||||
sub: sync
|
||||
rc: reload configs
|
||||
82
.config/youtube-tui/commandbindings.yml
Normal file
82
.config/youtube-tui/commandbindings.yml
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
global:
|
||||
'f':
|
||||
2: run ${browser} '${url}'
|
||||
'c':
|
||||
2: cp ${url}
|
||||
Left:
|
||||
3: back ;; echo mpv Unskipped
|
||||
2: mpv seek -5 ;; echo mpv Rewinded 5 seconds
|
||||
Right:
|
||||
3: next ;; echo mpv Skipped
|
||||
2: mpv seek 5 ;; echo mpv Fast forwarded 5 seconds
|
||||
'y':
|
||||
0: cp ${url}
|
||||
' ':
|
||||
0: tpause ;; echo mpv Player pause toggled
|
||||
search:
|
||||
'a':
|
||||
2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video
|
||||
'p':
|
||||
2: parrun mpv '${hover-url}'
|
||||
'A':
|
||||
1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle
|
||||
popular:
|
||||
'p':
|
||||
2: parrun mpv '${hover-url}'
|
||||
'a':
|
||||
2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video
|
||||
'A':
|
||||
1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle
|
||||
trending:
|
||||
'A':
|
||||
1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle
|
||||
'a':
|
||||
2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video
|
||||
'p':
|
||||
2: parrun mpv '${hover-url}'
|
||||
video: {}
|
||||
playlist:
|
||||
'p':
|
||||
2: parrun mpv '${hover-url}'
|
||||
'A':
|
||||
1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle
|
||||
'a':
|
||||
2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video
|
||||
channel_main: {}
|
||||
channel_videos:
|
||||
'A':
|
||||
1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle
|
||||
'a':
|
||||
2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video
|
||||
'p':
|
||||
2: parrun mpv '${hover-url}'
|
||||
channel_playlists:
|
||||
'a':
|
||||
2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video
|
||||
'A':
|
||||
1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle
|
||||
'p':
|
||||
2: parrun mpv '${hover-url}'
|
||||
watchhistory:
|
||||
'A':
|
||||
1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle
|
||||
'a':
|
||||
2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video
|
||||
'p':
|
||||
2: parrun mpv '${hover-url}'
|
||||
feed:
|
||||
'A':
|
||||
1: parrun ${terminal-emulator} mpv '${hover-channel-url}/videos' --no-video --loop-playlist=inf --shuffle
|
||||
'p':
|
||||
2: parrun mpv '${hover-video-url}'
|
||||
'P':
|
||||
1: parrun ${terminal-emulator} mpv '${hover-channel-url}/videos' --no-video --loop-playlist=inf --shuffle
|
||||
'a':
|
||||
2: parrun ${terminal-emulator} mpv '${hover-video-url}' --no-video
|
||||
library:
|
||||
'A':
|
||||
1: parrun ${terminal-emulator} mpv '${hover-url}' --no-video --loop-playlist=inf --shuffle
|
||||
'p':
|
||||
2: parrun mpv '${hover-url}'
|
||||
'a':
|
||||
2: parrun ${terminal-emulator} mpv '${hover-url}' --no-video
|
||||
56
.config/youtube-tui/commands.yml
Normal file
56
.config/youtube-tui/commands.yml
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
launch_command: loadpage library ;; flush ;; history clear ;; key Esc 0 ;; key Up 0 ;; key Up 0 ;; key Left 0 ;; key Enter 0
|
||||
video:
|
||||
- Reload updated video: run rm '~/.cache/youtube-tui/info/${id}.json' ;; video ${id}
|
||||
- Play video: parrun ${video-player} '${embed-url}'
|
||||
- Play audio: mpv stop ;; resume ;; mpv sprop loop-file no ;; mpv loadfile '${embed-url}' ;; echo mpv Player started
|
||||
- Play audio (loop): mpv stop ;; resume ;; mpv sprop loop-file inf ;; mpv loadfile '${embed-url}' ;; echo mpv Player started
|
||||
- View channel: channel ${channel-id}
|
||||
- Subscribe to channel: sync ${channel-id}
|
||||
- Open in browser: parrun ${browser} '${url}'
|
||||
- Toggle bookmark: togglemark ${id}
|
||||
- Save video to library: bookmark ${id} ;; run rm -rf '${save-path}${id}.*' ;; parrun ${terminal-emulator} ${youtube-downloader} '${embed-url}' -o '${save-path}%(title)s[%(id)s].%(ext)s'
|
||||
- Save audio to library: bookmark ${id} ;; parrun rm -rf '${save-path}${id}.*' ;; parrun ${terminal-emulator} ${youtube-downloader} '${embed-url}' -x -o '${save-path}%(title)s[%(id)s].%(ext)s'
|
||||
- 'Mode: ${provider}': switchprovider
|
||||
saved_video:
|
||||
- Reload updated video: run rm '~/.cache/youtube-tui/info/${id}.json' ;; video ${id}
|
||||
- '[Offline] Play saved file': parrun ${video-player} '${offline-path}' --force-window
|
||||
- '[Offline] Play saved file (audio)': mpv stop ;; resume ;; mpv sprop loop-file no ;; mpv loadfile '${offline-path}' ;; echo mpv Player started
|
||||
- '[Offline] Play saved file (audio loop)': mpv stop ;; resume ;; mpv sprop loop-file inf ;; mpv loadfile '${offline-path}' ;; echo mpv Player started
|
||||
- View channel: channel ${channel-id}
|
||||
- Subscribe to channel: sync ${channel-id}
|
||||
- Open in browser: parrun ${browser} '${url}'
|
||||
- Toggle bookmark: togglemark ${id}
|
||||
- Redownload video to library: bookmark ${id} ;; run rm ${save-path}*${id}*.* ;; parrun ${terminal-emulator} ${youtube-downloader} ${embed-url} -o '${save-path}%(title)s[%(id)s].%(ext)s'
|
||||
- Redownload audio to library: bookmark ${id} ;; run rm ${save-path}*${id}*.* ;; parrun ${terminal-emulator} ${youtube-downloader} ${embed-url} -x -o '${save-path}%(title)s[%(id)s].%(ext)s'
|
||||
- Delete saved file: run rm ${save-path}*${id}*.*
|
||||
playlist:
|
||||
- Switch view: '%switch-view%'
|
||||
- Reload updated playlist: run rm ~/.cache/youtube-tui/info/${id}.json ;; reload
|
||||
- Play all (videos): parrun ${video-player} ${url}
|
||||
- Play all (audio): mpv stop ;; resume ;; ${mpv-queuelist} ;; mpv sprop loop-playlist no ;; mpv playlist-play-index 0 ;; echo mpv Player started
|
||||
- Shuffle play all (audio loop): mpv stop ;; resume ;; ${mpv-queuelist} ;; mpv sprop loop-playlist yes ;; mpv playlist-shuffle ;; mpv playlist-play-index 0 ;; echo mpv Player started
|
||||
- View channel: channel ${channel-id}
|
||||
- Subscribe to channel: sync ${channel-id}
|
||||
- Open in browser: parrun ${browser} '${url}'
|
||||
- Toggle bookmark: togglemark ${id}
|
||||
- Save playlist videos to library: bookmark ${id} ;; run rm -rf '${save-path}*${id}*' ;; parrun ${terminal-emulator} bash -c "${youtube-downloader} ${all-videos} -o '"'${save-path}${title}[${id}]/%(title)s[%(id)s].%(ext)s'"'"
|
||||
- Save playlist audio to library: bookmark ${id} ;; run rm -rf '${save-path}*${id}*' ;; parrun ${terminal-emulator} bash -c "${youtube-downloader} ${all-videos} -x -o '"'${save-path}${title}[${id}]/%(title)s[%(id)s].%(ext)s'"'"
|
||||
- 'Mode: ${provider}': switchprovider
|
||||
saved_playlist:
|
||||
- Switch view: '%switch-view%'
|
||||
- Reload updated playlist: run rm ~/.cache/youtube-tui/info/${id}.json ;; reload
|
||||
- '[Offline] Play all (videos)': parrun ${video-player} ${save-path}*${id}*/* --force-window
|
||||
- '[Offline] Play all (audio)': mpv stop ;; resume ;; ${offline-queuelist} ;; mpv sprop loop-playlist no ;; mpv playlist-play-index 0 ;; echo mpv Player started
|
||||
- '[Offline] Shuffle play all (audio loop)': mpv stop ;; resume ;; ${offline-queuelist} ;; mpv sprop loop-playlist yes ;; mpv playlist-shuffle ;; mpv playlist-play-index 0 ;; echo mpv Player started
|
||||
- View channel: channel ${channel-id}
|
||||
- Subscribe to channel: sync ${channel-id}
|
||||
- Open in browser: parrun ${browser} '${url}'
|
||||
- Toggle bookmark: togglemark ${id}
|
||||
- Redownload playlist videos to library: bookmark ${id} ;; run rm -rf ${save-path}*${id}* ;; parrun ${terminal-emulator} bash -c "${youtube-downloader} ${all-videos} -o '"'${save-path}${title}[${id}]/%(title)s[%(id)s].%(ext)s'"'"
|
||||
- Redownload playlist audio to library: bookmark ${id} ;; run rm -rf ${save-path}*${id}* ;; parrun ${terminal-emulator} bash -c "${youtube-downloader} ${all-videos} -x -o '"'${save-path}${title}[${id}]/%(title)s[%(id)s].%(ext)s'"'"
|
||||
- Delete saved files: run rm -rf ${save-path}*${id}*
|
||||
channel:
|
||||
- Subscribe to channel: sync ${id}
|
||||
- Play all (videos): parrun ${video-player} ${url}
|
||||
- Play all (audio): mpv stop ;; resume ;; mpv loadfile ${url} ;; mpv sprop loop-playlist no ;; mpv playlist-play-index 0 ;; echo mpv Player started
|
||||
- Shuffle play all (audio loop): mpv stop ;; resume ;; mpv loadfile ${url} ;; mpv sprop loop-playlist yes ;; mpv playlist-shuffle ;; mpv playlist-play-index 0 ;; echo mpv Player started
|
||||
52
.config/youtube-tui/keybindings.yml
Normal file
52
.config/youtube-tui/keybindings.yml
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
'd':
|
||||
4: RemoveWord
|
||||
0: ClearHistory
|
||||
Down:
|
||||
2: NextEntry
|
||||
0: MoveDown
|
||||
Enter:
|
||||
0: Select
|
||||
'j':
|
||||
0: MoveDown
|
||||
Esc:
|
||||
0: Deselect
|
||||
'l':
|
||||
0: MoveRight
|
||||
'w':
|
||||
2: RemoveWord
|
||||
'v':
|
||||
2: Paste
|
||||
Home:
|
||||
0: FirstHistory
|
||||
Up:
|
||||
0: MoveUp
|
||||
2: PreviousEntry
|
||||
'u':
|
||||
2: ClearLine
|
||||
Left:
|
||||
0: MoveLeft
|
||||
2: PreviousWord
|
||||
4: Back
|
||||
':':
|
||||
0: StartCommandCapture
|
||||
'r':
|
||||
2: Reload
|
||||
'k':
|
||||
0: MoveUp
|
||||
'a':
|
||||
2: First
|
||||
'e':
|
||||
2: End
|
||||
Right:
|
||||
0: MoveRight
|
||||
2: NextWord
|
||||
F5:
|
||||
0: Reload
|
||||
Backspace:
|
||||
0: Back
|
||||
End:
|
||||
0: ClearHistory
|
||||
'q':
|
||||
0: Exit
|
||||
'h':
|
||||
0: MoveLeft
|
||||
30
.config/youtube-tui/main.yml
Normal file
30
.config/youtube-tui/main.yml
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
mouse_support: true
|
||||
invidious_instance: https://invidious.f5.si
|
||||
write_config: Try
|
||||
allow_unicode: true
|
||||
message_bar_default: All good :)
|
||||
images: Sixels
|
||||
refresh_after_modifying_search_filters: true
|
||||
syncing:
|
||||
download_images: true
|
||||
sync_channel_info: true
|
||||
sync_channel_cooldown_secs: 86400
|
||||
sync_videos_cooldown_secs: 600
|
||||
limits:
|
||||
watch_history: 50
|
||||
search_history: 75
|
||||
commands_history: 75
|
||||
textbar_scroll_behaviour: History
|
||||
image_index: 4
|
||||
provider: YouTube
|
||||
search_provider: RustyPipe
|
||||
api_key: YOUR API KEY HERE
|
||||
shell: sh
|
||||
legacy_input_handling: false
|
||||
env:
|
||||
terminal-emulator: konsole -e
|
||||
save-path: ~/.local/share/youtube-tui/saved/
|
||||
browser: xdg-open
|
||||
youtube-downloader: yt-dlp
|
||||
download-path: ~/Downloads/%(title)s-%(id)s.%(ext)s
|
||||
video-player: mpv
|
||||
88
.config/youtube-tui/pages.yml
Normal file
88
.config/youtube-tui/pages.yml
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
main_menu:
|
||||
layout:
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- SearchBar
|
||||
- SearchFilters
|
||||
- type: CenteredRow
|
||||
items:
|
||||
- Library
|
||||
- Feed
|
||||
- History
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- ItemList
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- MessageBar
|
||||
message: Loading main menu...
|
||||
command: key Esc 0 ;; key Down 0 ;; key Down 0 ;; key Enter 0
|
||||
feed:
|
||||
layout:
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- SearchBar
|
||||
- SearchFilters
|
||||
- type: CenteredRow
|
||||
items:
|
||||
- Library
|
||||
- Feed
|
||||
- History
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- ChannelList
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- VideoList
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- MessageBar
|
||||
message: Loading feed...
|
||||
command: key Esc 0 ;; key Down 0 ;; key Down 0 ;; key Enter 0
|
||||
search:
|
||||
layout:
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- SearchBar
|
||||
- SearchFilters
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- ItemList
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- MessageBar
|
||||
message: Loading search results...
|
||||
command: key Esc 0 ;; key Down 0 ;; key Enter 0
|
||||
singleitem:
|
||||
layout:
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- SearchBar
|
||||
- SearchFilters
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- SingleItemInfo
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- MessageBar
|
||||
message: Loading item details...
|
||||
command: key Esc 0 ;; key Down 0 ;; key Enter 0
|
||||
channeldisplay:
|
||||
layout:
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- SearchBar
|
||||
- SearchFilters
|
||||
- type: CenteredRow
|
||||
items:
|
||||
- ChannelMain
|
||||
- ChannelVideos
|
||||
- ChannelPlaylists
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- ChannelDisplay
|
||||
- type: NonCenteredRow
|
||||
items:
|
||||
- MessageBar
|
||||
message: Loading channel details...
|
||||
command: key Esc 0 ;; key Down 0 ;; key Enter 0 ;; key Up 0
|
||||
4
.config/youtube-tui/remaps.yml
Normal file
4
.config/youtube-tui/remaps.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
'a':
|
||||
5:
|
||||
code: 'b'
|
||||
modifiers: 5
|
||||
7
.config/youtube-tui/search.yml
Normal file
7
.config/youtube-tui/search.yml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
query: ''
|
||||
filters:
|
||||
sort: Relevance
|
||||
date: None
|
||||
duration: None
|
||||
type: All
|
||||
page: 1
|
||||
|
|
@ -7,13 +7,19 @@
|
|||
// custom settings, run `zed: open default settings` from the
|
||||
// command palette (cmd-shift-p / ctrl-shift-p)
|
||||
{
|
||||
"buffer_font_family": "JetBrainsMono Nerd Font",
|
||||
"ui_font_family": "Inter Variable",
|
||||
"buffer_font_family": "Iosevka Term",
|
||||
"vim_mode": false,
|
||||
"disable_ai": true,
|
||||
"telemetry": {
|
||||
"diagnostics": false,
|
||||
"metrics": false
|
||||
},
|
||||
"languages": {
|
||||
"Markdown": {
|
||||
"format_on_save": "on"
|
||||
}
|
||||
},
|
||||
"icon_theme": "Zed (Default)",
|
||||
"ui_font_size": 16,
|
||||
"buffer_font_size": 15,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue