# Load autoconfig
config.load_autoconfig()

# Load css
c.content.user_stylesheets = '~/.config/qutebrowser/css/user.css'

try:
    from qutebrowser.api import message
    config.source('pyconfig/new_redirectors.py')
    # config.source('pyconfig/audio_indicator.py')
except ImportError:
    pass

c.auto_save.session = True
c.session.lazy_restore = True

config.set('content.cookies.accept', 'all', 'chrome-devtools://*')

config.set('content.geolocation', False)

c.content.blocking.method = 'both'

config.set('content.images', True, 'chrome-devtools://*')
config.set('content.images', True, 'devtools://*')
config.set('content.javascript.enabled', True, 'chrome-devtools://*')
config.set('content.javascript.enabled', True, 'devtools://*')
config.set('content.javascript.enabled', True, 'chrome://*/*')
config.set('content.javascript.enabled', True, 'qute://*/*')

c.downloads.position = 'bottom'

c.downloads.remove_finished = 5000 

c.input.media_keys = True

c.input.insert_mode.auto_load = True

c.editor.command = ['kitty', 'nvim', '-f', '{}']

c.hints.radius = 0

c.scrolling.bar = 'overlay'

c.scrolling.smooth = False

ui_padding = 5

c.statusbar.show = 'always'
c.statusbar.padding = {'bottom': ui_padding, 'left': ui_padding, 'right': ui_padding, 'top': ui_padding}

c.tabs.background = True
c.tabs.padding = {'bottom': ui_padding, 'left': ui_padding, 'right': ui_padding, 'top': ui_padding}
c.tabs.position = 'top'
c.tabs.show = 'always'
c.tabs.title.format = '{audio}{index} {current_title}'
c.tabs.width = '20%'
c.tabs.min_width = 60
c.tabs.indicator.width = 0
c.tabs.last_close = 'close'

# c.url.searchengines = { "DEFAULT": "https:/search.brave.com/search?q={}" }
c.url.searchengines = { "DEFAULT": "https:/searx.2dkun.xyz/search?q={}" }

c.fileselect.handler = 'external'
c.fileselect.single_file.command = ["kitty", "lf", "-selection-path", "{}"] 
c.fileselect.multiple_files.command = ["kitty", "lf", "-selection-path", "{}"] 

### Colors ###

c.window.transparent = False

# Color variables
bg_dark = '#1c1f26'
bg_light = '#2b303b'
tab_overlay = '#33FFFFFF'
fg_light = '#d8dee9'
yellow = '#ccebcb8b'
red = '#bf616a'
green = '#a3be8c'
blue = '#8fa1be'
blank = '#00000000'

c.colors.completion.fg = fg_light
c.colors.completion.odd.bg = bg_light
c.colors.completion.even.bg = bg_light
c.colors.completion.category.fg = fg_light
c.colors.completion.category.bg = bg_dark
c.colors.completion.category.border.top = blank
c.colors.completion.category.border.bottom = blank
c.colors.completion.item.selected.bg = red
c.colors.completion.item.selected.border.top = blank
c.colors.completion.item.selected.border.bottom = blank
c.colors.completion.item.selected.match.fg = fg_light
c.colors.completion.match.fg = red
c.colors.completion.scrollbar.fg = fg_light
c.colors.completion.scrollbar.bg = bg_dark
c.colors.downloads.bar.bg = bg_dark
c.colors.downloads.start.bg = '#8fa1b3'
c.colors.downloads.stop.bg = green
c.colors.hints.bg = yellow
c.colors.messages.error.bg = red
c.colors.messages.error.border = blank
c.colors.statusbar.normal.fg = fg_light
c.colors.statusbar.normal.bg = bg_dark
c.colors.statusbar.insert.fg = bg_dark
c.colors.statusbar.insert.bg = green
c.colors.statusbar.command.bg = bg_dark
c.colors.statusbar.caret.fg = bg_dark
c.colors.statusbar.caret.bg = '#b48ead'
c.colors.statusbar.url.hover.fg = '#96b5b4'
c.colors.statusbar.url.success.https.fg = green
c.colors.tabs.bar.bg = bg_dark
c.colors.tabs.odd.bg = blank
c.colors.tabs.even.bg = blank
c.colors.tabs.selected.odd.bg = tab_overlay
c.colors.tabs.selected.even.bg = tab_overlay
c.colors.tabs.pinned.odd.bg = blank
c.colors.tabs.pinned.even.bg = blank
c.colors.tabs.pinned.selected.odd.bg = bg_light
c.colors.tabs.pinned.selected.even.bg = bg_light
c.colors.messages.warning.bg = 'darkorange'
c.colors.prompts.bg = bg_light
c.colors.statusbar.normal.bg = bg_dark

c.colors.contextmenu.menu.bg = bg_dark
c.colors.contextmenu.menu.fg = fg_light
c.colors.contextmenu.disabled.fg = bg_light
c.colors.contextmenu.selected.bg = bg_light

c.colors.tabs.indicator.error = red
c.colors.tabs.indicator.start = blue
c.colors.tabs.indicator.stop  = green

c.hints.border = 'none'

c.colors.webpage.preferred_color_scheme = 'dark'

c.colors.webpage.darkmode.enabled = True
c.colors.webpage.darkmode.algorithm = 'lightness-cielab'
c.colors.webpage.darkmode.policy.images = 'never'

c.fonts.default_size = '13pt'
c.fonts.default_family = 'Operator Mono Light'

# Disable autoplaying video
c.content.autoplay = False

# Font used for selected tabs.
# Type: Font
c.fonts.tabs.selected = 'default_size default_family'

# Font used for unselected tabs.
# Type: Font
c.fonts.tabs.unselected = 'default_size default_family'

c.url.default_page = 'https://searx.2dkun.xyz'
c.url.start_pages = 'https://searx.2dkun.xyz'

c.aliases = { "q": "close", "qa": "quit", "w": "session-save", "wq": "quit --save", "wqa": "quit --save", "ss": "session-save", "sl": "session-load" } 

# Bindings for normal mode
config.bind('<Alt+d>', 'cmd-set-text -s :open {url:pretty}')    # Edit current URL
config.bind('<Alt+t>', 'config-cycle tabs.position left top')   # Cycle tabs between top and left sides
config.unbind('<Ctrl+t>')
config.bind('<F12>', 'devtools')
config.bind('?', 'open -t -- {primary}')
config.bind('J', 'tab-prev')
config.bind('K', 'tab-next')
config.bind('cm', 'clear-messages')
config.bind('gr', 'greasemonkey-reload')
config.bind(',c', 'config-source')
config.bind(',r', 'restart')
config.bind('wu', 'undo -w')
# Userscripts
config.bind('yi', 'hint images userscript ~/.config/qutebrowser/userscripts/clip.sh')
config.bind('yc', 'spawn --userscript url-cleaner.py')
config.bind('ym', 'spawn --userscript yank-music.sh')
config.bind('zl', 'spawn --userscript qute-pass -d "fuzzel --dmenu"')
config.bind('zol', 'spawn --userscript qute-pass -d "fuzzel --dmenu" --otp-only')
config.bind('zpl', 'spawn --userscript qute-pass -d "fuzzel --dmenu" --password-only')
config.bind('zul', 'spawn --userscript qute-pass -d "fuzzel --dmenu" --username-only')
config.bind(',m', 'hint links spawn --userscript auto-mpv.sh')
config.bind(',M', 'spawn --userscript auto-mpv.sh')
config.bind(',t', 'spawn --userscript translate')
config.bind(',T', 'spawn --userscript translate --text')
config.bind('<Ctrl+r>', 'spawn --userscript ~/.config/qutebrowser/userscripts/toggle-redirect.sh')
config.bind('<Ctrl+i>', 'hint images userscript ~/.config/qutebrowser/userscripts/reverse-image')
config.bind('<Ctrl+g>', 'spawn --userscript google.sh')

config.unbind('[[')
config.unbind(']]')
config.bind('[', 'fake-key <Shift+,>')
config.bind(']', 'fake-key <Shift+.>')
config.bind('\\', 'fake-key f')

config.bind(',u', 'open -p https://tools.usps.com/schedule-pickup-steps.htm')

c.hints.selectors['all'] += ['i.icon-reply', 'i.icon-retweet-toggle', 'i.icon-favorite-toggle']
