This commit is contained in:
2026-03-23 22:37:27 -07:00
parent 19e7680316
commit 8c2da7fea7
7 changed files with 176 additions and 89 deletions

View File

@@ -165,6 +165,9 @@ trust_level = "trusted"
[projects."/home/sudacode/projects/lua/ModernZ"] [projects."/home/sudacode/projects/lua/ModernZ"]
trust_level = "trusted" trust_level = "trusted"
[projects."/home/sudacode/.config/rofi/scripts"]
trust_level = "trusted"
[notice.model_migrations] [notice.model_migrations]
"gpt-5.3-codex" = "gpt-5.4" "gpt-5.3-codex" = "gpt-5.4"

View File

@@ -2,32 +2,58 @@
"keybindings": [ "keybindings": [
{ {
"key": "KeyF", "key": "KeyF",
"command": ["cycle", "fullscreen"], "command": [
"cycle",
"fullscreen"
]
}, },
{ {
"key": "KeyR", "key": "KeyR",
"command": ["add", "sub-pos", -5], "command": [
"add",
"sub-pos",
-5
]
}, },
{ {
"key": "Shift+KeyR", "key": "Shift+KeyR",
"command": ["add", "sub-pos", 5], "command": [
"add",
"sub-pos",
5
]
}, },
{ {
"key": "KeyJ", "key": "KeyJ",
"command": ["cycle", "sub"], "command": [
"cycle",
"sub"
]
}, },
{ {
"key": "BracketRight", "key": "BracketRight",
"command": ["add", "sub-delay", 0.1], "command": [
"add",
"sub-delay",
0.1
]
}, },
{ {
"key": "BracketLeft", "key": "BracketLeft",
"command": ["add", "sub-delay", -0.1], "command": [
"add",
"sub-delay",
-0.1
]
}, },
{ {
"key": "Backslash", "key": "Backslash",
"command": ["set_property", "sub-delay", 0], "command": [
}, "set_property",
"sub-delay",
0
]
}
], ],
"shortcuts": { "shortcuts": {
"copySubtitle": "CommandOrControl+C", "copySubtitle": "CommandOrControl+C",
@@ -42,16 +68,16 @@
"markAudioCard": "CommandOrControl+Shift+A", "markAudioCard": "CommandOrControl+Shift+A",
"openRuntimeOptions": "CommandOrControl+Shift+O", "openRuntimeOptions": "CommandOrControl+Shift+O",
"toggleVisibleOverlayGlobal": "Alt+Shift+O", "toggleVisibleOverlayGlobal": "Alt+Shift+O",
"toggleInvisibleOverlayGlobal": "Alt+Shift+I", "toggleInvisibleOverlayGlobal": "Alt+Shift+I"
}, },
"auto_start_overlay": false, "auto_start_overlay": false,
"texthooker": { "texthooker": {
"launchAtStartup": true, "launchAtStartup": true,
"openBrowser": false, "openBrowser": false
}, },
"websocket": { "websocket": {
"enabled": "auto", "enabled": "auto",
"port": 6677, "port": 6677
}, },
"ankiConnect": { "ankiConnect": {
"enabled": true, "enabled": true,
@@ -62,19 +88,19 @@
"enabled": true, "enabled": true,
"host": "127.0.0.1", "host": "127.0.0.1",
"port": 8766, "port": 8766,
"upstreamUrl": "http://127.0.0.1:8765", "upstreamUrl": "http://127.0.0.1:8765"
}, },
"fields": { "fields": {
"audio": "ExpressionAudio", "audio": "ExpressionAudio",
"image": "Picture", "image": "Picture",
"sentence": "Sentence", "sentence": "Sentence",
"miscInfo": "MiscInfo", "miscInfo": "MiscInfo",
"translation": "SelectionText", "translation": "SelectionText"
}, },
"ai": { "ai": {
"enabled": true, "enabled": true,
"model": "openai/gpt-oss-120b:free", "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": { "media": {
"generateAudio": true, "generateAudio": true,
@@ -87,7 +113,7 @@
"animatedCrf": 35, "animatedCrf": 35,
"audioPadding": 0.5, "audioPadding": 0.5,
"fallbackDuration": 3, "fallbackDuration": 3,
"syncAnimatedImageToWordAudio": true, "syncAnimatedImageToWordAudio": true
}, },
"behavior": { "behavior": {
"overwriteAudio": false, "overwriteAudio": false,
@@ -96,52 +122,63 @@
"highlightWord": true, "highlightWord": true,
"notificationType": "both", "notificationType": "both",
"showNotificationOnUpdate": true, "showNotificationOnUpdate": true,
"autoUpdateNewCards": true, "autoUpdateNewCards": true
}, },
"knownWords": { "knownWords": {
"decks": { "decks": {
"Minecraft": ["Expression", "Reading"], "Minecraft": [
"Kaishi 1.5k": ["Word", "Word Reading"], "Expression",
"Reading"
],
"Kaishi 1.5k": [
"Word",
"Word Reading"
]
}, },
"highlightEnabled": true, "highlightEnabled": true,
"refreshMinutes": 60, "refreshMinutes": 60,
"matchMode": "headword", "matchMode": "headword",
"addMinedWordsImmediately": true, "addMinedWordsImmediately": true
}, },
"nPlusOne": { "nPlusOne": {
"minSentenceWords": 3, "minSentenceWords": 3
}, },
"metadata": { "metadata": {
"pattern": "[SubMiner] %f (%t)", "pattern": "[SubMiner] %f (%t)"
}, },
"isLapis": { "isLapis": {
"enabled": true, "enabled": true,
"sentenceCardModel": "Lapis Morph", "sentenceCardModel": "Lapis Morph"
}, },
"isKiku": { "isKiku": {
"enabled": true, "enabled": true,
"fieldGrouping": "manual", "fieldGrouping": "manual",
"deleteDuplicateInAuto": false, "deleteDuplicateInAuto": false
}, },
"tags": ["SubMiner"], "tags": [
"SubMiner"
]
}, },
"ai": { "ai": {
"enabled": true, "enabled": true,
"alwaysUseAiTranslation": false, "alwaysUseAiTranslation": false,
"apiKeyCommand": "cat ~/.openrouterapikey", "apiKeyCommand": "cat ~/.openrouterapikey",
"baseUrl": "https://openrouter.ai/api/v1", "baseUrl": "https://openrouter.ai/api/v1",
"sourceLanguage": "Japanese", "sourceLanguage": "Japanese"
}, },
"secondarySub": { "secondarySub": {
"autoLoadSecondarySub": true, "autoLoadSecondarySub": true,
"secondarySubLanguages": ["en", "eng"], "secondarySubLanguages": [
"en",
"eng"
]
}, },
"subsync": { "subsync": {
"defaultMode": "manual", "defaultMode": "manual",
"alass_path": null, "alass_path": null,
"ffsubsync_path": null, "ffsubsync_path": null,
"ffmpeg_path": null, "ffmpeg_path": null,
"replace": true, "replace": true
}, },
"subtitleStyle": { "subtitleStyle": {
"fontFamily": "M PLUS 1 Medium, Source Han Sans JP, Noto Sans CJK JP", "fontFamily": "M PLUS 1 Medium, Source Han Sans JP, Noto Sans CJK JP",
@@ -155,7 +192,6 @@
"textRendering": "geometricPrecision", "textRendering": "geometricPrecision",
"textShadow": "0 3px 10px rgba(0,0,0,0.69)", "textShadow": "0 3px 10px rgba(0,0,0,0.69)",
"fontStyle": "normal", "fontStyle": "normal",
// "backgroundColor": "transparent",
"backgroundColor": "#232634", "backgroundColor": "#232634",
"hoverTokenColor": "#f4dbd6", "hoverTokenColor": "#f4dbd6",
"hoverBackground": "rgba(54, 58, 79, 0.84)", "hoverBackground": "rgba(54, 58, 79, 0.84)",
@@ -165,7 +201,7 @@
"secondary": { "secondary": {
"fontFamily": "Manrope, Inter", "fontFamily": "Manrope, Inter",
"fontSize": 24, "fontSize": 24,
"fontColor": "#cad3f5", "fontColor": "#cad3f5"
}, },
"frequencyDictionary": { "frequencyDictionary": {
"enabled": true, "enabled": true,
@@ -174,7 +210,13 @@
"mode": "single", "mode": "single",
"matchMode": "headword", "matchMode": "headword",
"singleColor": "#f5a97f", "singleColor": "#f5a97f",
"bandedColors": ["#ed8796", "#f5a97f", "#f9e2af", "#a6e3a1", "#8aadf4"], "bandedColors": [
"#ed8796",
"#f5a97f",
"#f9e2af",
"#a6e3a1",
"#8aadf4"
]
}, },
"enableJlpt": true, "enableJlpt": true,
"jlptColors": { "jlptColors": {
@@ -182,16 +224,16 @@
"N2": "#f5a97f", "N2": "#f5a97f",
"N3": "#f9e2af", "N3": "#f9e2af",
"N4": "#a6e3a1", "N4": "#a6e3a1",
"N5": "#8aadf4", "N5": "#8aadf4"
}, },
"nPlusOneColor": "#c6a0f6", "nPlusOneColor": "#c6a0f6",
"knownWordColor": "#a6da95", "knownWordColor": "#a6da95"
}, },
"jimaku": { "jimaku": {
"apiKeyCommand": "cat ~/.jimaku-api-key", "apiKeyCommand": "cat ~/.jimaku-api-key",
"apiBaseUrl": "https://jimaku.cc", "apiBaseUrl": "https://jimaku.cc",
"languagePreference": "ja", "languagePreference": "ja",
"maxEntryResults": 10, "maxEntryResults": 10
}, },
"youtubeSubgen": { "youtubeSubgen": {
"mode": "automatic", "mode": "automatic",
@@ -202,9 +244,12 @@
"fixWithAi": true, "fixWithAi": true,
"ai": { "ai": {
"model": "google/gemini-2.5-flash-lite", "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": { "anilist": {
"characterDictionary": { "characterDictionary": {
@@ -212,13 +257,13 @@
"collapsibleSections": { "collapsibleSections": {
"description": false, "description": false,
"characterInformation": false, "characterInformation": false,
"voicedBy": false, "voicedBy": false
}, }
}, }
}, },
"immersionTracking": { "immersionTracking": {
"enabled": true, "enabled": true,
"dbPath": "", "dbPath": ""
}, },
"jellyfin": { "jellyfin": {
"enabled": true, "enabled": true,
@@ -233,13 +278,21 @@
"remoteControlAutoConnect": true, "remoteControlAutoConnect": true,
"autoAnnounce": false, "autoAnnounce": false,
"remoteControlDeviceName": "SubMiner", "remoteControlDeviceName": "SubMiner",
"directPlayContainers": ["mkv", "mp4", "webm", "mov", "flac", "mp3", "aac"], "directPlayContainers": [
"mkv",
"mp4",
"webm",
"mov",
"flac",
"mp3",
"aac"
],
"transcodeVideoCodec": "h265", "transcodeVideoCodec": "h265",
"pullPictures": true, "pullPictures": true,
"iconCacheDir": "~/S/japanese/subminer-jellyfin-icons", "iconCacheDir": "~/S/japanese/subminer-jellyfin-icons"
}, },
"logging": { "logging": {
"level": "info", "level": "info"
}, },
"discordPresence": { "discordPresence": {
"enabled": true, "enabled": true,
@@ -252,27 +305,26 @@
"buttonLabel": "", "buttonLabel": "",
"buttonUrl": "", "buttonUrl": "",
"updateIntervalMs": 15000, "updateIntervalMs": 15000,
"debounceMs": 750, "debounceMs": 750
}, },
"startupWarmups": { "startupWarmups": {
"lowPowerMode": false, "lowPowerMode": false,
"mecab": true, "mecab": true,
"yomitanExtension": true, "yomitanExtension": true,
"subtitleDictionaries": true, "subtitleDictionaries": true,
"jellyfinRemoteSession": false, "jellyfinRemoteSession": false
}, },
"yomitan": { "yomitan": {
"externalProfilePath": "", "externalProfilePath": ""
}, },
"stats": { "stats": {
"toggleKey": "Backquote", // Key code to toggle the stats overlay. "toggleKey": "Backquote",
"serverPort": 6969, // Port for the stats HTTP server. "serverPort": 6969,
"autoStartServer": true, // Automatically start the stats server on launch. Values: true | false "autoStartServer": true,
"autoOpenBrowser": false, "autoOpenBrowser": false
}, // Local immersion stats dashboard served on localhost and available as an in-app overlay. },
"subtitleSidebar": { "subtitleSidebar": {
"enabled": true, "enabled": true,
// "layout": "embedded",
"toggleKey": "Backslash", "toggleKey": "Backslash",
"pauseVideoOnHover": true, "pauseVideoOnHover": true,
"autoScroll": true, "autoScroll": true,
@@ -285,6 +337,10 @@
"timestampColor": "#a5adcb", "timestampColor": "#a5adcb",
"activeLineColor": "#f5bde6", "activeLineColor": "#f5bde6",
"activeLineBackgroundColor": "rgba(138, 173, 244, 0.22)", "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)"
}
} }

View File

@@ -80,15 +80,20 @@ bindm = $mainMod, mouse:273, resizewindow
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @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 = ,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 = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, 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 # Requires playerctl
bindl = , XF86AudioNext, exec, mpc next bindl = , XF86AudioNext, exec, mpc next
bindl = , XF86AudioPause, exec, mpc toggle bindl = , XF86AudioPause, exec, mpc toggle
bindl = , XF86AudioPlay, exec, mpc toggle bindl = , XF86AudioPlay, exec, mpc toggle
bindl = , XF86AudioPrev, exec, mpc prev 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 # bindl = , XF86AudioStop, exec, mpc stop
# rofi # rofi
@@ -139,9 +144,11 @@ bind = CTRL $mainMod SHIFT, R, exec, hyprctl dispatch dpms off && sleep 1 && hyp
# Disable keybinds with one master keybind # Disable keybinds with one master keybind
# https://wiki.hypr.land/0.49.0/Configuring/Uncommon-tips--tricks/#disabling-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 bind = $mainMod, code:117, submap, clean
submap = clean submap = clean
bind = $mainMod, code:110, submap, reset # PAGE UP
bind = $mainMod, code:112, submap, reset
submap = reset submap = reset
bind = SUPER, l, exec, hyprlock bind = SUPER, l, exec, hyprlock

View File

@@ -88,5 +88,13 @@ windowrule = dim_around off, match:class SubMiner
windowrule = allows_input offf, match:class SubMiner windowrule = allows_input offf, match:class SubMiner
windowrule = border_size 0, match:class steam_app_1277940 windowrule = border_size 0, match:class steam_app_1277940
windowrule = opacity 1.0 override, match:class SubMiner 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
# }}}

View File

@@ -15,7 +15,7 @@ idlescreen=yes
# show OSC window top bar: "auto", "yes", or "no" (borderless/fullscreen) # show OSC window top bar: "auto", "yes", or "no" (borderless/fullscreen)
window_top_bar=auto window_top_bar=auto
# show window controls in fullscreen # show window controls in fullscreen
windowcontrols_fullscreen=yes window_controls_fullscreen=yes
# show OSC when windowed # show OSC when windowed
showwindowed=yes showwindowed=yes
# show OSC when fullscreen # show OSC when fullscreen
@@ -311,11 +311,11 @@ automatickeyframemode=yes
automatickeyframelimit=600 automatickeyframelimit=600
# always show a small progress line at the bottom of the screen # always show a small progress line at the bottom of the screen
persistentprogress=no persistent_progress=no
# height of the persistent progress bar # height of the persistent progress bar
persistentprogressheight=17 persistent_progress_height=17
# show buffer status on web videos in the persistent progress line # show buffer status on web videos in the persistent progress line
persistentbuffer=no persistent_buffer=no
# Miscellaneous settings # Miscellaneous settings
# only used at init to set visibility_mode(...) # only used at init to set visibility_mode(...)

View File

@@ -5,48 +5,61 @@ source "$SCRIPT_DIR/rofi-menu-helpers.sh"
BROWSER=/usr/bin/zen-browser BROWSER=/usr/bin/zen-browser
DOC_GROUPS=( DOC_GROUPS=(
"Arch Linux (btw)|ARCH" "Arch Linux (btw)|ARCH"
"Hyprland|HYPRLAND" "Hyprland|HYPRLAND"
"EVO|EVO80"
) )
ARCH=( ARCH=(
"Archlinux Wiki|https://wiki.archlinux.org/title/Main_page" "Archlinux Wiki|https://wiki.archlinux.org/title/Main_page"
) )
HYPRLAND=( HYPRLAND=(
"Hyprland Docs|https://wiki.hypr.land/" "Hyprland Docs|https://wiki.hypr.land/"
"Hyprland Window Rules|https://wiki.hypr.land/Configuring/Window-Rules/" "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() { select_group() {
rofi_select_label_value "Select Documentation Group" DOC_GROUPS rofi_select_label_value "Select Documentation Group" DOC_GROUPS
} }
select_url() { select_url() {
local urls_array="$1" local urls_array="$1"
rofi_select_label_value "Select Documentation" "$urls_array" "Back" rofi_select_label_value "Select Documentation" "$urls_array" "Back"
} }
main() { main() {
while true; do while true; do
group_key="$(select_group)" || exit 0 group_key="$(select_group)" || exit 0
case "$group_key" in case "$group_key" in
ARCH) ARCH)
urls_ref=ARCH urls_ref=ARCH
;; ;;
HYPRLAND) HYPRLAND)
urls_ref=HYPRLAND urls_ref=HYPRLAND
;; ;;
*) EVO80)
exit 0 urls_ref=EVO80
;; ;;
esac *)
exit 0
;;
esac
selection="$(select_url "$urls_ref")" || exit 0 selection="$(select_url "$urls_ref")" || exit 0
if [[ "$selection" == "Back" ]]; then if [[ "$selection" == "Back" ]]; then
continue continue
fi fi
$BROWSER "$selection" &>/dev/null & if [[ "$selection" == feh* ]]; then
exit 0 bash -c "$selection" &> /dev/null &
done exit $?
fi
$BROWSER "$selection" &> /dev/null &
exit 0
done
} }
main main