From 8c2da7fea770201772901fe03794817ae744c480 Mon Sep 17 00:00:00 2001 From: sudacode Date: Mon, 23 Mar 2026 22:37:27 -0700 Subject: [PATCH] update --- .codex/config.toml##os.Linux | 3 + .config/SubMiner/config.jsonc##os.Linux | 162 ++++++++++++++++-------- .config/hypr/keybindings.conf | 11 +- .config/hypr/windowrules.conf | 10 +- .config/mpv-modules/ModernZ | 2 +- .config/mpv/script-opts/modernz.conf | 8 +- .config/rofi/scripts/rofi-docs.sh | 69 ++++++---- 7 files changed, 176 insertions(+), 89 deletions(-) diff --git a/.codex/config.toml##os.Linux b/.codex/config.toml##os.Linux index 35bf909..fa27617 100644 --- a/.codex/config.toml##os.Linux +++ b/.codex/config.toml##os.Linux @@ -165,6 +165,9 @@ trust_level = "trusted" [projects."/home/sudacode/projects/lua/ModernZ"] trust_level = "trusted" +[projects."/home/sudacode/.config/rofi/scripts"] +trust_level = "trusted" + [notice.model_migrations] "gpt-5.3-codex" = "gpt-5.4" diff --git a/.config/SubMiner/config.jsonc##os.Linux b/.config/SubMiner/config.jsonc##os.Linux index efd4682..e135419 100644 --- a/.config/SubMiner/config.jsonc##os.Linux +++ b/.config/SubMiner/config.jsonc##os.Linux @@ -2,32 +2,58 @@ "keybindings": [ { "key": "KeyF", - "command": ["cycle", "fullscreen"], + "command": [ + "cycle", + "fullscreen" + ] }, { "key": "KeyR", - "command": ["add", "sub-pos", -5], + "command": [ + "add", + "sub-pos", + -5 + ] }, { "key": "Shift+KeyR", - "command": ["add", "sub-pos", 5], + "command": [ + "add", + "sub-pos", + 5 + ] }, { "key": "KeyJ", - "command": ["cycle", "sub"], + "command": [ + "cycle", + "sub" + ] }, { "key": "BracketRight", - "command": ["add", "sub-delay", 0.1], + "command": [ + "add", + "sub-delay", + 0.1 + ] }, { "key": "BracketLeft", - "command": ["add", "sub-delay", -0.1], + "command": [ + "add", + "sub-delay", + -0.1 + ] }, { "key": "Backslash", - "command": ["set_property", "sub-delay", 0], - }, + "command": [ + "set_property", + "sub-delay", + 0 + ] + } ], "shortcuts": { "copySubtitle": "CommandOrControl+C", @@ -42,16 +68,16 @@ "markAudioCard": "CommandOrControl+Shift+A", "openRuntimeOptions": "CommandOrControl+Shift+O", "toggleVisibleOverlayGlobal": "Alt+Shift+O", - "toggleInvisibleOverlayGlobal": "Alt+Shift+I", + "toggleInvisibleOverlayGlobal": "Alt+Shift+I" }, "auto_start_overlay": false, "texthooker": { "launchAtStartup": true, - "openBrowser": false, + "openBrowser": false }, "websocket": { "enabled": "auto", - "port": 6677, + "port": 6677 }, "ankiConnect": { "enabled": true, @@ -62,19 +88,19 @@ "enabled": true, "host": "127.0.0.1", "port": 8766, - "upstreamUrl": "http://127.0.0.1:8765", + "upstreamUrl": "http://127.0.0.1:8765" }, "fields": { "audio": "ExpressionAudio", "image": "Picture", "sentence": "Sentence", "miscInfo": "MiscInfo", - "translation": "SelectionText", + "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.", + "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, @@ -87,7 +113,7 @@ "animatedCrf": 35, "audioPadding": 0.5, "fallbackDuration": 3, - "syncAnimatedImageToWordAudio": true, + "syncAnimatedImageToWordAudio": true }, "behavior": { "overwriteAudio": false, @@ -96,52 +122,63 @@ "highlightWord": true, "notificationType": "both", "showNotificationOnUpdate": true, - "autoUpdateNewCards": true, + "autoUpdateNewCards": true }, "knownWords": { "decks": { - "Minecraft": ["Expression", "Reading"], - "Kaishi 1.5k": ["Word", "Word Reading"], + "Minecraft": [ + "Expression", + "Reading" + ], + "Kaishi 1.5k": [ + "Word", + "Word Reading" + ] }, "highlightEnabled": true, "refreshMinutes": 60, "matchMode": "headword", - "addMinedWordsImmediately": true, + "addMinedWordsImmediately": true }, "nPlusOne": { - "minSentenceWords": 3, + "minSentenceWords": 3 }, "metadata": { - "pattern": "[SubMiner] %f (%t)", + "pattern": "[SubMiner] %f (%t)" }, "isLapis": { "enabled": true, - "sentenceCardModel": "Lapis Morph", + "sentenceCardModel": "Lapis Morph" }, "isKiku": { "enabled": true, "fieldGrouping": "manual", - "deleteDuplicateInAuto": false, + "deleteDuplicateInAuto": false }, - "tags": ["SubMiner"], + "tags": [ + "SubMiner" + ] }, "ai": { "enabled": true, "alwaysUseAiTranslation": false, "apiKeyCommand": "cat ~/.openrouterapikey", "baseUrl": "https://openrouter.ai/api/v1", - "sourceLanguage": "Japanese", + "sourceLanguage": "Japanese" }, "secondarySub": { "autoLoadSecondarySub": true, - "secondarySubLanguages": ["en", "eng"], + "secondarySubLanguages": [ + "en", + "eng" + ] }, "subsync": { "defaultMode": "manual", "alass_path": null, "ffsubsync_path": null, "ffmpeg_path": null, - "replace": true, + "replace": true }, "subtitleStyle": { "fontFamily": "M PLUS 1 Medium, Source Han Sans JP, Noto Sans CJK JP", @@ -155,7 +192,6 @@ "textRendering": "geometricPrecision", "textShadow": "0 3px 10px rgba(0,0,0,0.69)", "fontStyle": "normal", - // "backgroundColor": "transparent", "backgroundColor": "#232634", "hoverTokenColor": "#f4dbd6", "hoverBackground": "rgba(54, 58, 79, 0.84)", @@ -165,7 +201,7 @@ "secondary": { "fontFamily": "Manrope, Inter", "fontSize": 24, - "fontColor": "#cad3f5", + "fontColor": "#cad3f5" }, "frequencyDictionary": { "enabled": true, @@ -174,7 +210,13 @@ "mode": "single", "matchMode": "headword", "singleColor": "#f5a97f", - "bandedColors": ["#ed8796", "#f5a97f", "#f9e2af", "#a6e3a1", "#8aadf4"], + "bandedColors": [ + "#ed8796", + "#f5a97f", + "#f9e2af", + "#a6e3a1", + "#8aadf4" + ] }, "enableJlpt": true, "jlptColors": { @@ -182,16 +224,16 @@ "N2": "#f5a97f", "N3": "#f9e2af", "N4": "#a6e3a1", - "N5": "#8aadf4", + "N5": "#8aadf4" }, "nPlusOneColor": "#c6a0f6", - "knownWordColor": "#a6da95", + "knownWordColor": "#a6da95" }, "jimaku": { "apiKeyCommand": "cat ~/.jimaku-api-key", "apiBaseUrl": "https://jimaku.cc", "languagePreference": "ja", - "maxEntryResults": 10, + "maxEntryResults": 10 }, "youtubeSubgen": { "mode": "automatic", @@ -202,9 +244,12 @@ "fixWithAi": true, "ai": { "model": "google/gemini-2.5-flash-lite", - "systemPrompt": "Fix transcription mistakes only. Preserve the original language exactly. Do not translate, paraphrase, summarize, merge, split, reorder, or omit cues. Preserve cue numbering, cue count, timestamps, line breaks within each cue, and valid SRT formatting exactly. Return only corrected SRT.", + "systemPrompt": "Fix transcription mistakes only. Preserve the original language exactly. Do not translate, paraphrase, summarize, merge, split, reorder, or omit cues. Preserve cue numbering, cue count, timestamps, line breaks within each cue, and valid SRT formatting exactly. Return only corrected SRT." }, - "primarySubLanguages": ["ja", "jpn"], + "primarySubLanguages": [ + "ja", + "jpn" + ] }, "anilist": { "characterDictionary": { @@ -212,13 +257,13 @@ "collapsibleSections": { "description": false, "characterInformation": false, - "voicedBy": false, - }, - }, + "voicedBy": false + } + } }, "immersionTracking": { "enabled": true, - "dbPath": "", + "dbPath": "" }, "jellyfin": { "enabled": true, @@ -233,13 +278,21 @@ "remoteControlAutoConnect": true, "autoAnnounce": false, "remoteControlDeviceName": "SubMiner", - "directPlayContainers": ["mkv", "mp4", "webm", "mov", "flac", "mp3", "aac"], + "directPlayContainers": [ + "mkv", + "mp4", + "webm", + "mov", + "flac", + "mp3", + "aac" + ], "transcodeVideoCodec": "h265", "pullPictures": true, - "iconCacheDir": "~/S/japanese/subminer-jellyfin-icons", + "iconCacheDir": "~/S/japanese/subminer-jellyfin-icons" }, "logging": { - "level": "info", + "level": "info" }, "discordPresence": { "enabled": true, @@ -252,27 +305,26 @@ "buttonLabel": "", "buttonUrl": "", "updateIntervalMs": 15000, - "debounceMs": 750, + "debounceMs": 750 }, "startupWarmups": { "lowPowerMode": false, "mecab": true, "yomitanExtension": true, "subtitleDictionaries": true, - "jellyfinRemoteSession": false, + "jellyfinRemoteSession": false }, "yomitan": { - "externalProfilePath": "", + "externalProfilePath": "" }, "stats": { - "toggleKey": "Backquote", // Key code to toggle the stats overlay. - "serverPort": 6969, // Port for the stats HTTP server. - "autoStartServer": true, // Automatically start the stats server on launch. Values: true | false - "autoOpenBrowser": false, - }, // Local immersion stats dashboard served on localhost and available as an in-app overlay. + "toggleKey": "Backquote", + "serverPort": 6969, + "autoStartServer": true, + "autoOpenBrowser": false + }, "subtitleSidebar": { "enabled": true, - // "layout": "embedded", "toggleKey": "Backslash", "pauseVideoOnHover": true, "autoScroll": true, @@ -285,6 +337,10 @@ "timestampColor": "#a5adcb", "activeLineColor": "#f5bde6", "activeLineBackgroundColor": "rgba(138, 173, 244, 0.22)", - "hoverLineBackgroundColor": "rgba(54, 58, 79, 0.84)", + "hoverLineBackgroundColor": "rgba(54, 58, 79, 0.84)" }, -} + "controller": { + "preferredGamepadId": "8BitDo 8BitDo Ultimate 2 Wireless Controller for PC (Vendor: 2dc8 Product: 310b)", + "preferredGamepadLabel": "8BitDo 8BitDo Ultimate 2 Wireless Controller for PC (Vendor: 2dc8 Product: 310b)" + } +} \ No newline at end of file diff --git a/.config/hypr/keybindings.conf b/.config/hypr/keybindings.conf index b38181f..5c36378 100644 --- a/.config/hypr/keybindings.conf +++ b/.config/hypr/keybindings.conf @@ -80,15 +80,20 @@ bindm = $mainMod, mouse:273, resizewindow bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle -bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+ bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%- +bindel = ,F12, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ +bindel = ,F11, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindel = ,F10, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle # Requires playerctl bindl = , XF86AudioNext, exec, mpc next bindl = , XF86AudioPause, exec, mpc toggle bindl = , XF86AudioPlay, exec, mpc toggle bindl = , XF86AudioPrev, exec, mpc prev +bindl = , F9, exec, playerctl next +bindl = , F8, exec, playerctl play-pause +bindl = , F7, exec, playerctl previous # bindl = , XF86AudioStop, exec, mpc stop # rofi @@ -139,9 +144,11 @@ bind = CTRL $mainMod SHIFT, R, exec, hyprctl dispatch dpms off && sleep 1 && hyp # Disable keybinds with one master keybind # https://wiki.hypr.land/0.49.0/Configuring/Uncommon-tips--tricks/#disabling-keybinds-with-one-master-keybind +# PAGE DOWN bind = $mainMod, code:117, submap, clean submap = clean -bind = $mainMod, code:110, submap, reset +# PAGE UP +bind = $mainMod, code:112, submap, reset submap = reset bind = SUPER, l, exec, hyprlock diff --git a/.config/hypr/windowrules.conf b/.config/hypr/windowrules.conf index dab02ef..a89d28b 100644 --- a/.config/hypr/windowrules.conf +++ b/.config/hypr/windowrules.conf @@ -88,5 +88,13 @@ windowrule = dim_around off, match:class SubMiner windowrule = allows_input offf, match:class SubMiner windowrule = border_size 0, match:class steam_app_1277940 windowrule = opacity 1.0 override, match:class SubMiner -# {{{ GSM Overlay and LunaTranslator tweaks +# }}} +# {{{ FEH +windowrule = float on, match:class feh +windowrule = center on, match:class feh +windowrule = border_size 0, match:class feh +windowrule = no_shadow on, match:class feh +windowrule = no_blur on, match:class feh +windowrule = no_anim on, match:class feh +# }}} diff --git a/.config/mpv-modules/ModernZ b/.config/mpv-modules/ModernZ index b4c27a8..4ee0abf 160000 --- a/.config/mpv-modules/ModernZ +++ b/.config/mpv-modules/ModernZ @@ -1 +1 @@ -Subproject commit b4c27a8cf4a43c330fcb1dddce5984f25ec4e7f3 +Subproject commit 4ee0abfd4ab40384ddccb7f8fa9fff601e6c9154 diff --git a/.config/mpv/script-opts/modernz.conf b/.config/mpv/script-opts/modernz.conf index c526391..d683516 100644 --- a/.config/mpv/script-opts/modernz.conf +++ b/.config/mpv/script-opts/modernz.conf @@ -15,7 +15,7 @@ idlescreen=yes # show OSC window top bar: "auto", "yes", or "no" (borderless/fullscreen) window_top_bar=auto # show window controls in fullscreen -windowcontrols_fullscreen=yes +window_controls_fullscreen=yes # show OSC when windowed showwindowed=yes # show OSC when fullscreen @@ -311,11 +311,11 @@ automatickeyframemode=yes automatickeyframelimit=600 # always show a small progress line at the bottom of the screen -persistentprogress=no +persistent_progress=no # height of the persistent progress bar -persistentprogressheight=17 +persistent_progress_height=17 # show buffer status on web videos in the persistent progress line -persistentbuffer=no +persistent_buffer=no # Miscellaneous settings # only used at init to set visibility_mode(...) diff --git a/.config/rofi/scripts/rofi-docs.sh b/.config/rofi/scripts/rofi-docs.sh index 589c01c..1b9ce0b 100755 --- a/.config/rofi/scripts/rofi-docs.sh +++ b/.config/rofi/scripts/rofi-docs.sh @@ -5,48 +5,61 @@ source "$SCRIPT_DIR/rofi-menu-helpers.sh" BROWSER=/usr/bin/zen-browser DOC_GROUPS=( - "Arch Linux (btw)|ARCH" - "Hyprland|HYPRLAND" + "Arch Linux (btw)|ARCH" + "Hyprland|HYPRLAND" + "EVO|EVO80" ) ARCH=( - "Archlinux Wiki|https://wiki.archlinux.org/title/Main_page" + "Archlinux Wiki|https://wiki.archlinux.org/title/Main_page" ) HYPRLAND=( - "Hyprland Docs|https://wiki.hypr.land/" - "Hyprland Window Rules|https://wiki.hypr.land/Configuring/Window-Rules/" + "Hyprland Docs|https://wiki.hypr.land/" + "Hyprland Window Rules|https://wiki.hypr.land/Configuring/Window-Rules/" +) +EVO80=( + "Reference|feh $HOME/Documents/screenshots/reference/evo80/EVO80-Wireless-Keyboard-Reference.webp" + "Backlight|feh $HOME/Documents/screenshots/reference/evo80/EVO80-Wireless-Keyboard-Backlight-LED.webp" + "Modes|feh $HOME/Documents/screenshots/reference/evo80/EVO80-Wireless-Keyboard-Modes.webp" ) select_group() { - rofi_select_label_value "Select Documentation Group" DOC_GROUPS + rofi_select_label_value "Select Documentation Group" DOC_GROUPS } select_url() { - local urls_array="$1" - rofi_select_label_value "Select Documentation" "$urls_array" "Back" + local urls_array="$1" + rofi_select_label_value "Select Documentation" "$urls_array" "Back" } main() { - while true; do - group_key="$(select_group)" || exit 0 - case "$group_key" in - ARCH) - urls_ref=ARCH - ;; - HYPRLAND) - urls_ref=HYPRLAND - ;; - *) - exit 0 - ;; - esac + while true; do + group_key="$(select_group)" || exit 0 + case "$group_key" in + ARCH) + urls_ref=ARCH + ;; + HYPRLAND) + urls_ref=HYPRLAND + ;; + EVO80) + urls_ref=EVO80 + ;; + *) + exit 0 + ;; + esac - selection="$(select_url "$urls_ref")" || exit 0 - if [[ "$selection" == "Back" ]]; then - continue - fi - $BROWSER "$selection" &>/dev/null & - exit 0 - done + selection="$(select_url "$urls_ref")" || exit 0 + if [[ "$selection" == "Back" ]]; then + continue + fi + if [[ "$selection" == feh* ]]; then + bash -c "$selection" &> /dev/null & + exit $? + fi + $BROWSER "$selection" &> /dev/null & + exit 0 + done } main