diff --git a/.config/SubMiner/config.jsonc##os.Linux b/.config/SubMiner/config.jsonc##os.Linux deleted file mode 100644 index 21d3666..0000000 --- a/.config/SubMiner/config.jsonc##os.Linux +++ /dev/null @@ -1,318 +0,0 @@ -{ - "keybindings": [ - { - "key": "KeyF", - "command": ["cycle", "fullscreen"], - }, - { - "key": "KeyR", - "command": ["add", "sub-pos", -5], - }, - { - "key": "Shift+KeyR", - "command": ["add", "sub-pos", 5], - }, - { - "key": "KeyJ", - "command": ["cycle", "sub"], - }, - { - "key": "BracketRight", - "command": ["add", "sub-delay", 0.1], - }, - { - "key": "BracketLeft", - "command": ["add", "sub-delay", -0.1], - }, - { - "key": "Backslash", - "command": ["set_property", "sub-delay", 0], - }, - ], - "shortcuts": { - "copySubtitle": "CommandOrControl+C", - "copySubtitleMultiple": "CommandOrControl+Shift+C", - "updateLastCardFromClipboard": "CommandOrControl+V", - "triggerFieldGrouping": "CommandOrControl+G", - "triggerSubsync": "CommandOrControl+Alt+S", - "mineSentence": "CommandOrControl+S", - "mineSentenceMultiple": "CommandOrControl+Shift+S", - "multiCopyTimeoutMs": 3000, - "toggleSecondarySub": "CommandOrControl+Shift+V", - "markAudioCard": "CommandOrControl+Shift+A", - "openRuntimeOptions": "CommandOrControl+Shift+O", - "toggleVisibleOverlayGlobal": "Alt+Shift+O", - "toggleInvisibleOverlayGlobal": "Alt+Shift+I", - }, - "auto_start_overlay": false, - "texthooker": { - "launchAtStartup": true, - "openBrowser": false, - }, - "websocket": { - "enabled": "auto", - "port": 6677, - }, - "ankiConnect": { - "enabled": true, - "url": "http://127.0.0.1:8765", - "deck": "Minecraft", - "pollingRate": 500, - "proxy": { - "enabled": true, - "host": "127.0.0.1", - "port": 8766, - "upstreamUrl": "http://127.0.0.1:8765", - }, - "fields": { - "audio": "ExpressionAudio", - "image": "Picture", - "sentence": "Sentence", - "miscInfo": "MiscInfo", - "translation": "SelectionText", - }, - "ai": { - "enabled": true, - "model": "openai/gpt-oss-120b:free", - "systemPrompt": "You are a translation engine for translating Japanese into natural-sounding, context-aware English. Return only the translated text with no extra explanations or commentary. The translation must preserve the original tone and intent of the source. If the input is not in the target language, translate it to the target language. If the input is already in the target language, return it as is.", - }, - "media": { - "generateAudio": true, - "generateImage": true, - "imageType": "avif", - "imageFormat": "webp", - "animatedFps": 24, - "animatedMaxWidth": 640, - "animatedMaxHeight": null, - "animatedCrf": 35, - "audioPadding": 0.5, - "fallbackDuration": 3, - "syncAnimatedImageToWordAudio": true, - }, - "behavior": { - "overwriteAudio": false, - "overwriteImage": true, - "mediaInsertMode": "append", - "highlightWord": true, - "notificationType": "both", - "showNotificationOnUpdate": true, - "autoUpdateNewCards": true, - }, - "knownWords": { - "decks": { - "Minecraft": ["Expression", "Reading"], - "Kaishi 1.5k": ["Word", "Word Reading"], - }, - "highlightEnabled": true, - "refreshMinutes": 60, - "matchMode": "headword", - "addMinedWordsImmediately": true, - }, - "nPlusOne": { - "minSentenceWords": 3, - }, - "metadata": { - "pattern": "[SubMiner] %f (%t)", - }, - "isLapis": { - "enabled": true, - "sentenceCardModel": "Lapis Morph", - }, - "isKiku": { - "enabled": true, - "fieldGrouping": "manual", - "deleteDuplicateInAuto": false, - }, - "tags": ["SubMiner"], - }, - "ai": { - "enabled": true, - "alwaysUseAiTranslation": false, - "apiKeyCommand": "cat ~/.openrouterapikey", - "baseUrl": "https://openrouter.ai/api/v1", - "sourceLanguage": "Japanese", - }, - "secondarySub": { - "autoLoadSecondarySub": true, - "secondarySubLanguages": ["en", "eng"], - }, - "youtube": { - "primarySubLanguages": ["ja", "jpn"], - }, - "subsync": { - "defaultMode": "manual", - "alass_path": null, - "ffsubsync_path": null, - "ffmpeg_path": null, - "replace": true, - }, - "subtitleStyle": { - "hoverTokenColor": "#f4dbd6", - "hoverTokenBackgroundColor": "transparent", - "preserveLineBreaks": false, - "autoPauseVideoOnHover": true, - "autoPauseVideoOnYomitanPopup": true, - "secondary": { - "css": { - "font-family": "Manrope, Inter", - "color": "#cad3f5", - "background-color": "transparent", - "font-size": "24px", - "text-shadow": "0 1px 4px rgba(0,0,0,0.85), 0 0 10px rgba(0,0,0,0.5)", - "paint-order": "stroke fill", - "-webkit-text-stroke": "0.75px #000" - }, - }, - "frequencyDictionary": { - "enabled": true, - "sourcePath": "", - "topX": 10000, - "mode": "single", - "matchMode": "headword", - "singleColor": "#f5a97f", - "bandedColors": ["#ed8796", "#f5a97f", "#f9e2af", "#8bd5ca", "#8aadf4"], - }, - "enableJlpt": true, - "jlptColors": { - "N1": "#ed8796", - "N2": "#f5a97f", - "N3": "#f9e2af", - "N4": "#8bd5ca", - "N5": "#8aadf4", - }, - "nPlusOneColor": "#c6a0f6", - "knownWordColor": "#a6da95", - "css": { - "font-family": "Hiragino Sans, M PLUS 1, Source Han Sans JP, Noto Sans CJK JP", - "color": "#cad3f5", - "background-color": "transparent", - "font-size": "38px", - "font-weight": "500", - "font-style": "normal", - "line-height": "1.4", - "letter-spacing": "0.02em", - "word-spacing": "0", - "font-kerning": "normal", - "text-rendering": "optimizeLegibility", - "text-shadow": "0 2px 6px rgba(0,0,0,0.9), 0 0 12px rgba(0,0,0,0.55)", - "paint-order": "stroke fill", - "-webkit-text-stroke": "1.5px #000", - "backdrop-filter": "blur(6px)" - }, - }, - "jimaku": { - "apiKeyCommand": "cat ~/.jimaku-api-key", - "apiBaseUrl": "https://jimaku.cc", - "languagePreference": "ja", - "maxEntryResults": 10, - }, - "anilist": { - "enabled": true, - "characterDictionary": { - "enabled": true, - "collapsibleSections": { - "description": false, - "characterInformation": false, - "voicedBy": false, - }, - }, - }, - "immersionTracking": { - "enabled": true, - "dbPath": "", - }, - "jellyfin": { - "enabled": true, - "serverUrl": "http://pve-main:8096", - "username": "sudacode", - "deviceId": "subminer", - "clientName": "SubMiner", - "clientVersion": "0.1.0", - "defaultLibraryId": "", - "directPlayPreferred": true, - "remoteControlEnabled": true, - "remoteControlAutoConnect": true, - "autoAnnounce": false, - "remoteControlDeviceName": "SubMiner", - "directPlayContainers": ["mkv", "mp4", "webm", "mov", "flac", "mp3", "aac"], - "transcodeVideoCodec": "h265", - "pullPictures": true, - "iconCacheDir": "~/S/japanese/subminer-jellyfin-icons", - }, - "logging": { - "level": "info", - }, - "discordPresence": { - "enabled": true, - "detailsTemplate": "Mining and crafting (Anki cards)", - "stateTemplate": "Idle", - "largeImageKey": "subminer-logo", - "largeImageText": "SubMiner", - "smallImageKey": "study", - "smallImageText": "Sentence Mining", - "buttonLabel": "", - "buttonUrl": "", - "updateIntervalMs": 15000, - "debounceMs": 750, - }, - "startupWarmups": { - "lowPowerMode": false, - "mecab": true, - "yomitanExtension": true, - "subtitleDictionaries": true, - "jellyfinRemoteSession": false, - }, - "yomitan": { - "externalProfilePath": "", - }, - "stats": { - "toggleKey": "Backquote", - "serverPort": 6969, - "autoStartServer": true, - "autoOpenBrowser": false, - }, - "subtitleSidebar": { - "enabled": true, - "toggleKey": "Backslash", - "pauseVideoOnHover": true, - "autoScroll": true, - "maxWidth": 420, - "opacity": 0.69, - "backgroundColor": "rgba(36, 39, 58, 0.78)", - "textColor": "#cad3f5", - "fontFamily": "\"M PLUS 1\", \"Noto Sans CJK JP\", sans-serif", - "fontSize": 16, - "timestampColor": "#a5adcb", - "activeLineColor": "#f5bde6", - "activeLineBackgroundColor": "rgba(138, 173, 244, 0.22)", - "hoverLineBackgroundColor": "rgba(54, 58, 79, 0.84)", - }, - "controller": { - "enabled": true, - "profiles": { - "Sony Interactive Entertainment Wireless Controller (STANDARD GAMEPAD Vendor: 054c Product: 09cc)": { - "label": "Sony Interactive Entertainment Wireless Controller (STANDARD GAMEPAD Vendor: 054c Product: 09cc)", - "bindings": { - "toggleMpvPause": { - "kind": "button", - "buttonIndex": 10, - }, - "quitMpv": { - "kind": "button", - "buttonIndex": 8, - }, - }, - }, - }, - }, - "mpv": { - "executablePath": "", - "launchMode": "normal", - }, - "updates": { - "enabled": true, - "checkIntervalHours": 24, - "notificationType": "system", - "channel": "prerelease", - }, -} diff --git a/.config/hypr/keybindings.lua b/.config/hypr/keybindings.lua index bb68f05..d3a86c1 100644 --- a/.config/hypr/keybindings.lua +++ b/.config/hypr/keybindings.lua @@ -41,32 +41,32 @@ hl.bind("CTRL+ALT + j", hl.dsp.focus({ monitor = "r" })) hl.bind("CTRL+ALT + k", hl.dsp.focus({ monitor = "l" })) -- Switch workspaces with mainMod + [0-9] -hl.bind(mainMod .. " + 1", hl.dsp.focus({ workspace = 1 })) -hl.bind(mainMod .. " + 2", hl.dsp.focus({ workspace = 2 })) -hl.bind(mainMod .. " + 3", hl.dsp.focus({ workspace = 3 })) -hl.bind(mainMod .. " + 4", hl.dsp.focus({ workspace = 4 })) -hl.bind(mainMod .. " + 5", hl.dsp.focus({ workspace = 5 })) -hl.bind(mainMod .. " + 6", hl.dsp.focus({ workspace = 6 })) -hl.bind(mainMod .. " + 7", hl.dsp.focus({ workspace = 7 })) -hl.bind(mainMod .. " + 8", hl.dsp.focus({ workspace = 8 })) -hl.bind(mainMod .. " + 9", hl.dsp.focus({ workspace = 9 })) -hl.bind(mainMod .. " + 0", hl.dsp.focus({ workspace = 10 })) - +for i = 1, 10 do + local key = i % 10 + hl.bind( + mainMod .. " + " .. key, + hl.dsp.focus({ + workspace = i, + silent = true, + }) + ) +end -- Move active window to a workspace with mainMod + SHIFT + [0-9] -hl.bind(mainMod .. " + SHIFT + 1", hl.dsp.window.move({ workspace = 1, silent = true })) -hl.bind(mainMod .. " + SHIFT + 2", hl.dsp.window.move({ workspace = 2, silent = true })) -hl.bind(mainMod .. " + SHIFT + 3", hl.dsp.window.move({ workspace = 3, silent = true })) -hl.bind(mainMod .. " + SHIFT + 4", hl.dsp.window.move({ workspace = 4, silent = true })) -hl.bind(mainMod .. " + SHIFT + 5", hl.dsp.window.move({ workspace = 5, silent = true })) -hl.bind(mainMod .. " + SHIFT + 6", hl.dsp.window.move({ workspace = 6, silent = true })) -hl.bind(mainMod .. " + SHIFT + 7", hl.dsp.window.move({ workspace = 7, silent = true })) -hl.bind(mainMod .. " + SHIFT + 8", hl.dsp.window.move({ workspace = 8, silent = true })) -hl.bind(mainMod .. " + SHIFT + 9", hl.dsp.window.move({ workspace = 9, silent = true })) -hl.bind(mainMod .. " + SHIFT + 0", hl.dsp.window.move({ workspace = 10, silent = true })) +for i = 1, 10 do + local key = i % 10 -- workspace 10 maps to key 0 + hl.bind( + mainMod .. " + SHIFT + " .. key, + hl.dsp.window.move({ + workspace = i, + follow = false, + silent = true, + }) + ) +end -- Example special workspace (scratchpad) -hl.bind("SUPER + S", hl.dsp.workspace.toggle_special("magic")) -hl.bind("CTRL + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" })) +-- hl.bind("SUPER + S", hl.dsp.workspace.toggle_special("magic")) +-- hl.bind("CTRL + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" })) -- Scroll through existing workspaces with mainMod + scroll hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" })) @@ -128,7 +128,8 @@ hl.bind(mainMod .. " + SHIFT + n", hl.dsp.exec_cmd("swaync-client -t")) -- mpv add hl.bind("SUPER + m", hl.dsp.exec_cmd("~/.local/bin/mpv-add.sh")) -hl.bind("SUPER + SHIFT + s", hl.dsp.exec_cmd("slurp | grim -g - - | wl-copy")) +-- hl.bind("SUPER + SHIFT + s", hl.dsp.exec_cmd("slurp | grim -g - - | wl-copy")) +hl.bind("SUPER + SHIFT + s", hl.dsp.exec_cmd([[sh -c 'grim -g "$(slurp -d)" - | wl-copy']])) hl.bind("code:107", hl.dsp.exec_cmd("~/.local/bin/screenshot")) hl.bind("SHIFT + code:107", hl.dsp.exec_cmd("~/.local/bin/screenshot-active-window.sh")) hl.bind("SUPER + code:107", hl.dsp.exec_cmd("~/.local/bin/screenshot-active-window.sh -s")) diff --git a/.config/mpv/script-opts/modernz.conf b/.config/mpv/script-opts/modernz.conf index 89d6a74..a7a7dc1 100644 --- a/.config/mpv/script-opts/modernz.conf +++ b/.config/mpv/script-opts/modernz.conf @@ -1,6 +1,6 @@ # Language and display # set language (for available options, see: https://github.com/Samillion/ModernZ/blob/main/docs/TRANSLATIONS.md) -language=en +language=default # set layout: "modern" or "modern-compact" layout=modern # set icon theme. accepts fluent or material @@ -14,8 +14,6 @@ font=mpv-osd-symbols idlescreen=yes # show OSC window top bar: "auto", "yes", or "no" (borderless/fullscreen) window_top_bar=auto -# show window controls in fullscreen -window_controls_fullscreen=yes # show OSC when windowed showwindowed=yes # show OSC when fullscreen @@ -24,32 +22,31 @@ showfullscreen=yes showonselect=no # show OSC when paused showonpause=yes -# disable OSC hide timeout when paused -keeponpause=yes +# keep OSC visible while paused: no, bottombar, both +keeponpause=both # disable Santa hat in December greenandgrumpy=no # OSC behaviour and scaling # time (in ms) before OSC hides if no mouse movement hidetimeout=1500 +# keep OSC visible while cursor hovers over bottom or top bar +keep_with_cursor=yes # fade-out duration (in ms), set to 0 for no fade fadeduration=200 # whether to enable fade-in effect fadein=no # minimum mouse movement (in pixels) required to show OSC minmousemove=0 -# mode for showing OSC/WC on mouse move: always, zones, independent -zones_hover_mode=zones -# height of the bottom hover zone (in pixels) -bottomhover_zone=130 -# height of the top hover zone (in pixels) -tophover_zone=130 +# controls how much of the window ignores mouse movement for showing the osc +# 0.0 always shows on movement, 1.0 only shows when directly hovered +deadzonesize=0.75 +# hide behavior when cursor enters deadzone or leaves window: instant or timeout +deadzone_hide=instant # show OSC when seeking osc_on_seek=yes # show OSC/window controls on start of every file (no, bottom, top, both) osc_on_start=both -# keep OSC visible if mouse cursor is within OSC boundaries -osc_keep_with_cursor=yes # pause video while seeking with mouse move (on button hold) mouse_seek_pause=yes # force show seekbar tooltip on mouse drag, even if not hovering seekbar @@ -101,12 +98,12 @@ speed_font_size=16 # Title bar settings # show window title in borderless/fullscreen mode show_window_title=no -# same as title but for window_top_bar -window_title=${media-title} # window title font size window_title_font_size=26 # show window controls (close, minimize, maximize) in borderless/fullscreen window_controls=yes +# show window controls (top bar) and bottom bar independently on hover +windowcontrols_independent=yes # Subtitle and OSD display settings # IMPORTANT: It is recommended to add the following @@ -141,8 +138,6 @@ jump_mode=relative jump_softrepeat=yes # show the chapter skip backward and forward buttons chapter_skip_buttons=no -# enable continuous skipping when holding down chapter skip buttons -chapter_softrepeat=yes # show next/previous playlist track buttons track_nextprev_buttons=yes @@ -172,18 +167,11 @@ loop_button=no shuffle_button=no # show speed control button speed_button=no -# speed change amount per click -speed_button_click=1 -# speed change amount on scroll -speed_button_scroll=0.25 # show info button info_button=yes # show fullscreen toggle button fullscreen_button=yes -# enable loop with mouse actions on pause button -loop_in_pause=yes - # force buttons to always be active. can add: playlist_prev,playlist_next buttons_always_active=none @@ -219,12 +207,16 @@ windowcontrols_min_hover=#A6DA95 title_color=#CAD3F5 # color of the cache information cache_info_color=#CAD3F5 -# color of the seekbar progress and handle +# color of the seekbar progress seekbarfg_color=#C6A0F6 # color of the remaining seekbar seekbarbg_color=#B7BDF8 # color of the cache ranges on the seekbar seekbar_cache_color=#A5ADCB +# color of the seekbar handle +seek_handle_color=#C6A0F6 +# inner border color drawn inside the seekbar handle (set to disable to disable) +seek_handle_border_color=#C6A0F6 # match volume bar color with seekbar color (ignores side_buttons_color) volumebar_match_seek_color=no # color of the timestamps (below seekbar) @@ -242,42 +234,44 @@ playpause_color=#C6A0F6 held_element_color=#939AB7 # color of a hovered button when hover_effect includes "color" hover_effect_color=#C6A0F6 -# color of the border for thumbnails (with thumbfast) -thumbnail_border_color=#181926 -# color of the border outline for thumbnails -thumbnail_border_outline=#363A4F +# color of the background for thumbnail box +thumbnail_box_color=#181926 +# color of the border outline for thumbnail box +thumbnail_box_outline=#363A4F -# alpha of the OSC background box -fade_alpha=130 +# strength of the OSC background fade (0 to disable) +osc_fade_strength=100 # blur strength for the OSC alpha fade. caution: high values can take a lot of CPU time to render fade_blur_strength=100 # use with "fade_blur_strength=0" to create a transparency box fade_transparency_strength=0 -# alpha of the window title bar (0 to disable) -window_fade_alpha=100 +# strength of the window title bar fade (0 to disable) +window_fade_strength=100 # blur strength for the window title bar. caution: high values can take a lot of CPU time to render window_fade_blur_strength=100 # use with "window_fade_blur_strength=0" to create a transparency box window_fade_transparency_strength=0 -# width of the thumbnail border (for thumbfast) -thumbnail_border=3 -# rounded corner radius for thumbnail border (0 to disable) -thumbnail_border_radius=3 +# thumbnail box padding around the image +thumbnail_box_padding=4.5 +# round corner radius for thumbnail box border (0 to disable) +thumbnail_box_radius=3 +# thumbnail box border outline size (thickness) +thumbnail_box_outline_size=3 -# Button hover effects -# active button hover effects: "glow", "size", "color"; can use multiple separated by commas +# Button interaction settings +# active button hover effects: glow, size, color, box; can use multiple separated by commas hover_effect=size,glow,color # relative size of a hovered button if "size" effect is active -hover_button_size=115 +button_hover_size=115 +# relative size of a button when held/pressed. below 100 shrinks button when held down +button_held_size=100 +# alpha of the hover background box when a button is held down +button_held_box_alpha=18 # glow intensity when "glow" hover effect is active button_glow_amount=5 -# apply hover size effect to slider handle -hover_effect_for_sliders=yes - -# Tooltips and hints -# enable tooltips for disabled buttons and elements -tooltips_for_disabled_elements=yes -# enable text hints for info, loop, ontop, and screenshot buttons +# relative size of a hovered slider handle (100 = no size change) +slider_hover_size=115 +# enable tooltips for most buttons. seek and volume tooltips are always enabled tooltip_hints=yes # Progress bar settings @@ -331,30 +325,24 @@ tick_delay_follow_display_fps=no # Elements Position # Useful when adjusting font size or type -# title height position above seekbar -title_height=96 -# title height position if a chapter title is below it -title_with_chapter_height=108 -# chapter title height position above seekbar -chapter_title_height=91 -# time codes height position -time_codes_height=35 -# time codes height position with portrait window -time_codes_centered_height=57 +# title vertical offset relative to seekbar +title_offset=20 +# title vertical offset if a chapter title is below it +title_with_chapter_offset=5 +# chapter title vertical offset relative to seekbar +chapter_title_offset=18 +# chapter offset when shown above title +chapter_above_title_offset=3 +# time codes vertical offset relative to seekbar +time_codes_offset=0 # tooltip height position offset tooltip_height_offset=2 # portrait window width trigger to move some elements portrait_window_trigger=1000 # hide volume bar trigger window width hide_volume_bar_trigger=1150 -# osc height offset if title above seekbar is disabled -notitle_osc_h_offset=25 -# osc height offset if chapter title is disabled or doesn't exist -nochapter_osc_h_offset=10 -# seek hover timecodes tooltip height position offset -seek_hover_tooltip_h_offset=0 # osc height without offsets -osc_height=132 +osc_height=100 ## Mouse commands ## details: https://github.com/Samillion/ModernZ#mouse-commands-user-options