Closed The-Compiler closed 7 years ago
nice to see this :) I think it is very good to be able to search the config options by full name
I am a fan of the proposed explicit grouping as it's clear and allows for the notion of both sub configs (as illustrated in fonts.web...) but also might make it simple to express something as a domain specific config ( for example content.cookies.accept = no ... url(some.site.com).content.cookies.accept = yes )
That said though it would imply that every config should live in a group, for the oddballs at the top would 'browser' be an acceptable label?
@notbenh That syntax isn't going to work, but there are some other plans to enable per-domain settings - they're documented in #499 for the most part, and unrelated to this in my eyes.
That said though it would imply that every config should live in a group, for the oddballs at the top would 'browser' be an acceptable label?
Why would it?
I like this!
colors.downloads.bg.bar colors.downloads.bg.error ... statusbar.fg.private statusbar.bg.private
Could these be colors.downloads.bar.bg
for consistency?
I'm thinking some kind of "formula" would be nice. Perhaps:
object = statusbar | messages | downloads
subobject = bar | category | item ...
conditions = even | odd | selected | error ...
what = bg | fg | border
colors.[object].[subobject].[conditions].[what]
That said though it would imply that every config should live in a group, for the oddballs at the top would 'browser' be an acceptable label?
I would vote for qute.*
or misc.*
. I do think they should have a category, it feels a little bit weird to have top level config options.
Why? Neither qute
nor misc
add information, plus not all options belong together. Making them part of the same set would be misleading.
Don't complexify with hierarchies when there is no need for it. Keep it simple.
re: why I feel should everything be grouped:
1: I'm unclear how having one way is adding complexity?
2: By creating a tree you are implying structure. Thus is the suggesting that the one off of ignore_case
and grouping of all thecolors
should be peers? To me it seems that the peers here would be colors
and qute|misc|browser|...
that could have ignore_case
as a member.
In the end, I'm not going to write the change so it's not something that I'm going to fight for. It is just a config structure, so even with un-grouped one-offs it's still going to work.
Continue crusading, my man ;)
On Jun 9, 2017 7:14 AM, "Florian Bruhin" notifications@github.com wrote:
With the current config revolution™ going on, it's a good time to rename all settings to be more consistent and clear, or do any other breaking changes. I'd like some input on that topic! Current settings
For reference, here's how things look currently:
general
ignore-case startpage yank-ignored-url-parameters default-open-dispatcher default-page auto-search auto-save-config auto-save-interval editor editor-encoding private-browsing developer-extras print-element-backgrounds xss-auditing site-specific-quirks default-encoding new-instance-open-target new-instance-open-target.window log-javascript-console save-session session-default-name url-incdec-segments
ui
history-session-interval zoom-levels default-zoom downloads-position status-position message-timeout message-unfocused confirm-quit zoom-text-only frame-flattening user-stylesheet hide-scrollbar css-media-type smooth-scrolling remove-finished-downloads hide-statusbar statusbar-padding window-title-format modal-js-dialog hide-wayland-decoration keyhint-blacklist keyhint-delay prompt-radius prompt-filebrowser
network
do-not-track accept-language referer-header user-agent proxy proxy-dns-requests ssl-strict dns-prefetch custom-headers netrc-file
completion
show download-path-suggestion timestamp-format height cmd-history-max-items web-history-max-items quick-complete shrink scrollbar-width scrollbar-padding
input
timeout partial-timeout insert-mode-on-plugins auto-leave-insert-mode auto-insert-mode forward-unbound-keys spatial-navigation links-included-in-focus-chain rocker-gestures mouse-zoom-divider
tabs
background-tabs select-on-remove new-tab-position new-tab-position-explicit last-close show show-switching-delay wrap movable close-mouse-button position show-favicons favicon-scale width pinned-width indicator-width tabs-are-windows title-format title-format-pinned title-alignment mousewheel-tab-switching padding indicator-padding
storage
download-directory prompt-download-directory remember-download-directory maximum-pages-in-cache object-cache-capacities offline-storage-default-quota offline-web-application-cache-quota offline-storage-database offline-web-application-storage local-storage cache-size
content
allow-images allow-javascript allow-plugins webgl css-regions hyperlink-auditing geolocation notifications media-capture javascript-can-open-windows-automatically javascript-can-close-windows javascript-can-access-clipboard ignore-javascript-prompt ignore-javascript-alert local-content-can-access-remote-urls local-content-can-access-file-urls cookies-accept cookies-store host-block-lists host-blocking-enabled host-blocking-whitelist enable-pdfjs
hints
border mode chars min-chars scatter uppercase dictionary auto-follow auto-follow-timeout next-regexes prev-regexes find-implementation hide-unmatched-rapid-hints
colors
completion.fgcompletion.bg completion.alternate-bg completion.category.fgcompletion.category.bg completion.category.border.top completion.category.border.bottom completion.item.selected.fgcompletion.item.selected.bg completion.item.selected.border.top completion.item.selected.border.bottom completion.match.fg completion.scrollbar.fgcompletion.scrollbar.bg statusbar.fgstatusbar.bg statusbar.fg.private statusbar.bg.private statusbar.fg.insert statusbar.bg.insert statusbar.fg.command statusbar.bg.command statusbar.fg.command.private statusbar.bg.command.private statusbar.fg.caret statusbar.bg.caret statusbar.fg.caret-selection statusbar.bg.caret-selectionstatusbar.progress.bg statusbar.url.fg statusbar.url.fg.success statusbar.url.fg.success.https statusbar.url.fg.error statusbar.url.fg.warn statusbar.url.fg.hover tabs.fg.odd tabs.bg.odd tabs.fg.even tabs.bg.even tabs.fg.selected.odd tabs.bg.selected.odd tabs.fg.selected.even tabs.bg.selected.even tabs.bg.bar tabs.indicator.start tabs.indicator.stop tabs.indicator.error tabs.indicator.system hints.fghints.bg hints.fg.match downloads.bg.bar downloads.fg.start downloads.bg.start downloads.fg.stop downloads.bg.stop downloads.fg.system downloads.bg.system downloads.fg.error downloads.bg.errorwebpage.bg keyhint.fg keyhint.fg.suffixkeyhint.bg messages.fg.error messages.bg.error messages.border.error messages.fg.warning messages.bg.warning messages.border.warningmessages.fg.infomessages.bg.infomessages.border.info prompts.fgprompts.bgprompts.selected.bg
fonts
_monospace completion completion.category tabbar statusbar downloads hints debug-console web-family-standard web-family-fixed web-family-serif web-family-sans-serif web-family-cursive web-family-fantasy web-size-minimum web-size-minimum-logical web-size-default web-size-default-fixed keyhint messages.error messages.warningmessages.info prompts
New
With the new config, there won't be any sections anymore, instead there are dotted "paths" to settings. After a quick first look, they could look something like this:
aliases auto_search confirm_quit default_page history_session_interval ignore_case new_instance_open_target new_instance_open_target_window url_incdec_segments searchengines session_default_name start_page yank_ignored_url_parameters
auto_save.config auto_save.interval auto_save.session
colors.completion.alternate_bgcolors.completion.bgcolors.completion.category.bg colors.completion.category.border.bottom colors.completion.category.border.top colors.completion.category.fg colors.completion.fgcolors.completion.item.selected.bg colors.completion.item.selected.border.bottom colors.completion.item.selected.border.top colors.completion.item.selected.fg colors.completion.match.fgcolors.completion.scrollbar.bg colors.completion.scrollbar.fg colors.downloads.bg.bar colors.downloads.bg.error colors.downloads.bg.start colors.downloads.bg.stop colors.downloads.bg.system colors.downloads.fg.error colors.downloads.fg.start colors.downloads.fg.stop colors.downloads.fg.systemcolors.hints.bg colors.hints.fg colors.hints.match.fgcolors.keyhint.bg colors.keyhint.fg colors.keyhint.suffix.fg colors.messages.bg.errorcolors.messages.bg.info colors.messages.bg.warning colors.messages.border.errorcolors.messages.border.info colors.messages.border.warning colors.messages.fg.errorcolors.messages.fg.info colors.messages.fg.warningcolors.prompts.bg colors.prompts.fgcolors.prompts.selected.bg colors.statusbar.bg.caret colors.statusbar.bg.caret_selection colors.statusbar.bg.command colors.statusbar.bg.command_private colors.statusbar.bg.insert colors.statusbar.bg.normal colors.statusbar.bg.private colors.statusbar.fg.caret colors.statusbar.fg.caret_selection colors.statusbar.fg.command colors.statusbar.fg.command_private colors.statusbar.fg.insert colors.statusbar.fg.normal colors.statusbar.fg.privatecolors.statusbar.progress.bg colors.statusbar.url.fg colors.statusbar.url.fg.error colors.statusbar.url.fg.hover colors.statusbar.url.fg.warn colors.statusbar.url.success.http.fgcolors.statusbar.url.success.https.bg colors.tabs.bg.bar colors.tabs.bg.even colors.tabs.bg.odd colors.tabs.bg.selected.even colors.tabs.bg.selected.odd colors.tabs.fg.even colors.tabs.fg.odd colors.tabs.fg.selected.even colors.tabs.fg.selected.odd colors.tabs.indicator.error colors.tabs.indicator.start colors.tabs.indicator.stop colors.tabs.indicator.systemcolors.webpage.bg
completion.cmd_history_max_items completion.height completion.quick completion.scrollbar.padding completion.scrollbar.width completion.show completion.shrink completion.timestamp_format completion.web_history_max_items
content.accept_language content.cache_size content.cookies.accept content.custom_headers content.default_encoding content.developer_extras content.dns_prefetch content.do_not_track content.frame_flattening content.geolocation content.host_blocking.enabled content.host_blocking.lists content.host_blocking.whitelist content.hyperlink_auditing content.images content.javascript content.javascript.alert content.javascript.can_access_clipboard content.javascript.can_close_windows content.javascript.can_open_windows_automatically content.javascript.log content.javascript.modal_dialog content.javascript.prompt content.local_content_can_access_file_urls content.local_content_can_access_remote_urls content.local_storage content.maximum_pages_in_cache content.media_capture content.netrc_file content.notifications content.offline_web_application_cache content.pdfjs content.plugins content.print_element_backgrounds content.private_browsing content.proxy content.proxy_dns_requests content.referer_header content.ssl_strict content.user_agent content.user_stylesheet content.webgl content.xss_auditing cookies.cookies.store
downloads.location.directory downloads.location.prompt downloads.location.remember downloads.open_dispatcher downloads.path_suggestion downloads.position downloads.remove_finished
editor.command editor.encoding
fonts.completion.category fonts.completion.entry fonts.debug_console fonts.downloads fonts.hints fonts.keyhint fonts.messages.errorfonts.messages.info fonts.messages.warning fonts.monospace fonts.prompts fonts.statusbar fonts.tabbar fonts.web.family.cursive fonts.web.family.fantasy fonts.web.family.fixed fonts.web.family.sans_serif fonts.web.family.serif fonts.web.family.standard fonts.web.size.default fonts.web.size.default_fixed fonts.web.size.minimum fonts.web.size.minimum_logical
hints.auto_follow hints.auto_follow_timeout hints.border hints.chars hints.dictionary hints.find_implementation hints.hide_unmatched_rapid_hints hints.min_chars hints.mode hints.next_regexes hints.prev_regexes hints.scatter hints.uppercase
input.ambiguous_timeout input.forward_unbound_keys input.insert_mode.auto_focused input.insert_mode.auto_leave input.insert_mode.plugins input.links_included_in_focus_chain input.partial_timeout input.rocker_gestures input.spatial_navigation
keyhint.blacklist keyhint.delay
messages.timeout messages.unfocused
prompt.filebrowser prompt.radius
scrolling.bar scrolling.smooth
statusbar.position statusbar.hide statusbar.padding
tabs.background tabs.close_mouse_button tabs.favicons.scale tabs.favicons.show tabs.indicator_padding tabs.last_close tabs.mousewheel_switching tabs.movable tabs.new_position tabs.new_position_explicit tabs.padding tabs.position tabs.select_on_remove tabs.show tabs.show_switching_delay tabs.tabs_are_windows tabs.title.alignment tabs.title.format tabs.title.format_pinned tabs.width.bar tabs.width.indicator tabs.width.pinned tabs.wrap
window.hide_wayland_decoration window.title_format
zoom.default zoom.levels zoom.mouse_divider zoom.text_only
I've tried to group related settings together, but there are still a few oddballs at the top. Compared with the previous sections, more stuff is in content (notably, stuff which was in network or general before), ui is gone, and there are some more fine-grained groups.
What do you think? What would you do differently? What setting name (or possible values) have you always found confusing? I personally think new_instance_open_target and tabs.new_position_explicit need a new name, but I don't know what yet...
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/qutebrowser/qutebrowser/issues/2708, or mute the thread https://github.com/notifications/unsubscribe-auth/ATT4eVlNljxY_Hnm7ysEMx1jCuBbvnx2ks5sCSkegaJpZM4N1OJY .
Depending on how you will be doing the per-domain settings, we could copy weechat's style of having a inheritable default and a specific setting having their domain prepended:
default.content.cookies.accept = yes
google.content.cookies.accept = no
@nishantjr I agree, good catch! I've changed things accordingly in 371c15a93aafe0400f4a1f1806c6f530101df1ce, see configdata.yml for the newest version.
As for adding a hierarchy for the oddballs, I'll have to agree with @Ambrevar and others above - I don't think adding something like general.
or behavior.
or qute.
or browser.
to them is an improvement.
Anything else? Any ideas about what to do with new_instance_open_target
and tabs.new_position_explicit
(and maybe others?) which don't really have intuitive names?
Things I'd change:
window
colors...
fonts...
interaction
keyhint...
messages...
prompt...
scrolling...
statusbar
hide_wayland_decoration
title_format
zoom...
I once again forgot what the "explicit" means in new_position_explicit
, so I can't really do anything but admit the problem.
I once again forgot what the "explicit" means in
new_position_explicit
, so I can't really do anything but admit the problem.
If I remember correctly, new_position
affects the position of tabs opened by webkit or webengine (e.g. when you middle-click), while new_position_explicit
affects the position of tabs opened by qutebrowser (e.g. :open -t <url>
and qutebrowser <url>
).
What @lahwaacz says sounds about right.
If you check the behavior in Chromium, Ctrl-clicking a link opens a tab to the right of the current one ("not explicit", i.e. it's a "child" of the current tab), but doing ctrl-t opens a tab at the far right ("explicit", i.e. it's really a new unrelated tab).
Maybe new_tab_position.unrelated
and new_tab_position.related
would already make things clearer? Still not 100% happy though...
What about new_tab_position
and new_subtab_position
?
@NoctuaNivalis Thanks for the suggestions there, but I decided I actually don't like them (sorry! 😆). I find it difficult to say what actually belongs to "window"/"instance" and what doesn't with your proposal.
As for the new_tab_position
, I went for my .related
/.unrelated
proposal above - it makes it clear that there's a distinction, and Firefox has browser.tabs.insertRelatedAfterCurrent
too, so it can't be too far off.
I'll take another look at configdata.yml now, and look at it again later to make sure I didn't miss anything - but other than that, I consider this done.
I also just updated the settings docs for the new config- might be nicer way to look at them :wink:
I think I actually found a "group" for most of the oddball settings which doesn't feel completely arbitrary: url
.
For url_incdec_segments
(now url.incdec_segments
) and yank_ignored_url_parameters
(now url.yank_ignored_parameters
) I think it's clear that it fits.
For auto_search
, searchengines
, default_page
and start_pages
I also think it's a pretty good fit - they're all about what happens when you use :open
and don't enter an URL (or if what you entered should be handled as URL or not).
I also moved new_instance_open_target
and new_instance_open_target_window
under it - because they're about what happens when you open an URL from an external application. Still thinking about how to name those... Maybe url.external_*
instead of new_instance
?
This leaves us with aliases
, confirm_quit
, history_session_interval
, ignore_case
and session_default_name
. I think it's okay to keep them as-is.
I also moved
new_instance_open_target
andnew_instance_open_target_window
under it - because they're about what happens when you open an URL from an external application.
That's arguable at best - for example, the new_tab_position
setting discussed previously is about what happens when you open a URL from within qutebrowser.
Hm, yeah, you're right. It's definitely more of a stretch than I thought. I reversed that part.
I did some more changes:
history_session_interval
-> history_gap_interval
(because "session" is already overloaded enough)content.javascript.can_close_windows
(and .can_open_windows_automatically
) -> .can_close_tabs
(because they aren't actually new windows in qutebrowser).headers
subgroup for content
:
content.accept_language
-> content.headers.accept_language
content.custom_headers
-> content.headers.custom
content.do_not_track
-> content.headers.do_not_track
content.referer
-> content.headers.referer
content.user_agent
-> content.headers.user_agent
.cache
subgroup for `content:
content.cache_size
-> content.cache.size
content.maximum_pages_in_cache
-> content.cache.maximum_pages
content.offline_web_application_cache
-> content.cache.appcache
Pretty satisfied so far. Still open for feedback, though.
With the current config revolution™ going on, it's a good time to rename all settings to be more consistent and clear, or do any other breaking changes. I'd like some input on that topic!
Current settings
For reference, here's how things look currently:
New
With the new config, there won't be any sections anymore, instead there are dotted "paths" to settings. After a quick first look, they could look something like this:
I've tried to group related settings together, but there are still a few oddballs at the top. Compared with the previous sections, more stuff is in
content
(notably, stuff which was innetwork
orgeneral
before),ui
is gone, and there are some more fine-grained groups.What do you think? What would you do differently? What setting name (or possible values) have you always found confusing? I personally think
new_instance_open_target
andtabs.new_position_explicit
need a new name, but I don't know what yet...