diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables index 480188b..0c28332 100644 --- a/.config/fish/fish_variables +++ b/.config/fish/fish_variables @@ -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 diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini index 87a420f..abf1fb9 100644 --- a/.config/gtk-3.0/settings.ini +++ b/.config/gtk-3.0/settings.ini @@ -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 diff --git a/.config/gtk-4.0/settings.ini b/.config/gtk-4.0/settings.ini index 9dbb4e1..3b3718a 100644 --- a/.config/gtk-4.0/settings.ini +++ b/.config/gtk-4.0/settings.ini @@ -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 diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf index 046c8d4..a761cdb 100644 --- a/.config/kitty/kitty.conf +++ b/.config/kitty/kitty.conf @@ -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 diff --git a/.config/kitty/kitty.conf.bak b/.config/kitty/kitty.conf.bak index ec898e5..b8d13d0 100644 --- a/.config/kitty/kitty.conf.bak +++ b/.config/kitty/kitty.conf.bak @@ -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 diff --git a/.config/youtube-tui/appearance.yml b/.config/youtube-tui/appearance.yml new file mode 100644 index 0000000..4fab7fa --- /dev/null +++ b/.config/youtube-tui/appearance.yml @@ -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 diff --git a/.config/youtube-tui/cmdefine.yml b/.config/youtube-tui/cmdefine.yml new file mode 100644 index 0000000..abe7f4f --- /dev/null +++ b/.config/youtube-tui/cmdefine.yml @@ -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 diff --git a/.config/youtube-tui/commandbindings.yml b/.config/youtube-tui/commandbindings.yml new file mode 100644 index 0000000..bba40ae --- /dev/null +++ b/.config/youtube-tui/commandbindings.yml @@ -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 diff --git a/.config/youtube-tui/commands.yml b/.config/youtube-tui/commands.yml new file mode 100644 index 0000000..ac18ab4 --- /dev/null +++ b/.config/youtube-tui/commands.yml @@ -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 diff --git a/.config/youtube-tui/keybindings.yml b/.config/youtube-tui/keybindings.yml new file mode 100644 index 0000000..ea48cb1 --- /dev/null +++ b/.config/youtube-tui/keybindings.yml @@ -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 diff --git a/.config/youtube-tui/main.yml b/.config/youtube-tui/main.yml new file mode 100644 index 0000000..70917b6 --- /dev/null +++ b/.config/youtube-tui/main.yml @@ -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 diff --git a/.config/youtube-tui/pages.yml b/.config/youtube-tui/pages.yml new file mode 100644 index 0000000..7dce167 --- /dev/null +++ b/.config/youtube-tui/pages.yml @@ -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 diff --git a/.config/youtube-tui/remaps.yml b/.config/youtube-tui/remaps.yml new file mode 100644 index 0000000..13ea7f9 --- /dev/null +++ b/.config/youtube-tui/remaps.yml @@ -0,0 +1,4 @@ +'a': + 5: + code: 'b' + modifiers: 5 diff --git a/.config/youtube-tui/search.yml b/.config/youtube-tui/search.yml new file mode 100644 index 0000000..f531ade --- /dev/null +++ b/.config/youtube-tui/search.yml @@ -0,0 +1,7 @@ +query: '' +filters: + sort: Relevance + date: None + duration: None + type: All +page: 1 diff --git a/.config/zed/settings.json b/.config/zed/settings.json index 2dd65cc..7281aa9 100644 --- a/.config/zed/settings.json +++ b/.config/zed/settings.json @@ -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,