Add experimental style browser ui
This commit is contained in:
parent
5e0e6e150e
commit
f7922f419a
6 changed files with 484 additions and 0 deletions
110
add_style.py
Normal file
110
add_style.py
Normal file
|
@ -0,0 +1,110 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
#
|
||||
# usage:
|
||||
# add_style.py <file_name> <tags>
|
||||
# where <tags> is a space-separated list of tags to apply for that style (1 minimum)
|
||||
# OR
|
||||
# add_style-py --update-only
|
||||
#
|
||||
# When called with <file_name> <tags> it will create a new file to chrome/ folder and
|
||||
# update tags.csv and docs/tagmap.json
|
||||
#
|
||||
# With --update-only it will only update docs/tagmap.json based on tags.csv
|
||||
|
||||
import sys, os
|
||||
|
||||
def filterEmpty(list):
|
||||
for i in range(2,len(list)):
|
||||
if list[i] == "":
|
||||
del list[i]
|
||||
|
||||
def createJSON(tagmap,filename,args,onlyupdate):
|
||||
charBuffer = "{\n"
|
||||
map_last = len(tagmap) - 1
|
||||
n_line=0
|
||||
for line in tagmap:
|
||||
tokens = line.rsplit(",")
|
||||
filterEmpty(tokens)
|
||||
if len(tokens) < 2:
|
||||
continue
|
||||
charBuffer += "\"{}\":[".format(tokens[0])
|
||||
for t in range(1,len(tokens)):
|
||||
# if len(tokens[t]) > 0:
|
||||
charBuffer += "\"{}\"".format(tokens[t])
|
||||
if t < len(tokens)-1:
|
||||
charBuffer += ","
|
||||
if(n_line < map_last):
|
||||
charBuffer += "],\n"
|
||||
|
||||
else:
|
||||
if onlyupdate:
|
||||
charBuffer += "]\n}"
|
||||
break
|
||||
else:
|
||||
charBuffer += "],\n"
|
||||
n_line += 1
|
||||
if not(onlyupdate):
|
||||
charBuffer += "\"{}\":[".format(filename)
|
||||
for t in range(0,len(args)):
|
||||
charBuffer += "\"{}\"".format(args[t])
|
||||
if t < len(args) - 1:
|
||||
charBuffer += ","
|
||||
charBuffer += "]\n}"
|
||||
|
||||
with open("html_resources/tagmap.json","w") as json:
|
||||
print(charBuffer,file=json)
|
||||
print("wrote JSON\n")
|
||||
|
||||
|
||||
def searchFile(tagmap,name):
|
||||
for line in tagmap:
|
||||
if name in line:
|
||||
return True
|
||||
return False
|
||||
|
||||
def createNewFile(name):
|
||||
text = "/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/{} made available under Mozilla Public License v. 2.0\nSee the above repository for updates as well as full license text. */\n".format(name)
|
||||
|
||||
if os.path.isfile("chrome/{}".format(name)):
|
||||
confirm = input("File {} already exists! proceed (will overwrite) ? [y/N] ".format(name))
|
||||
if confirm != "y":
|
||||
print("Aborted")
|
||||
return False
|
||||
|
||||
|
||||
with open("chrome/{}".format(name),"w") as css:
|
||||
print(text,file=css)
|
||||
print("Created chrome/{}".format(name))
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
if len(sys.argv) < (2 + (0 if (sys.argv[1] == "--update-only") else 1)):
|
||||
print("usage: add_file.py <filename> <list_of_tags>")
|
||||
exit()
|
||||
|
||||
args = []
|
||||
for i in range (2,(len(sys.argv))):
|
||||
args.append(sys.argv[i])
|
||||
|
||||
name = sys.argv[1]
|
||||
update_only = name == "--update-only"
|
||||
|
||||
file = open("tags.csv")
|
||||
|
||||
tagmap = file.read().lstrip().splitlines()
|
||||
file.close()
|
||||
if not(update_only) and searchFile(tagmap,name):
|
||||
print(name + "exist already")
|
||||
else:
|
||||
if not(update_only):
|
||||
exists = createNewFile(name)
|
||||
file = open("tags.csv","a")
|
||||
file.write(name+","+",".join(args)+"\n")
|
||||
file.close()
|
||||
else:
|
||||
print("Only update json")
|
||||
createJSON(tagmap,name,args,update_only)
|
||||
print("Done")
|
||||
exit(0)
|
3
chrome/test.css
Normal file
3
chrome/test.css
Normal file
|
@ -0,0 +1,3 @@
|
|||
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/test.css made available under Mozilla Public License v. 2.0
|
||||
See the above repository for updates as well as full license text. */
|
||||
|
44
html_resources/main.css
Normal file
44
html_resources/main.css
Normal file
|
@ -0,0 +1,44 @@
|
|||
body{background-color: rgb(60,50,70); color: silver; margin: 0px }
|
||||
#ui{ display: flex; }
|
||||
|
||||
#categories{
|
||||
padding-block: 1em;
|
||||
box-sizing: border-box;
|
||||
border-inline-end: 1px solid gold;
|
||||
background-color: rgb(60,60,70);
|
||||
max-height: 100vh;
|
||||
overflow-y: auto;
|
||||
min-width: 18ch
|
||||
}
|
||||
a{ color: rgb(100,150,200); margin-inline-start: 1ch }
|
||||
a:visited{ color: rgb(150,100,200) }
|
||||
a:hover{ color: rgb(200,150,100) }
|
||||
pre:empty{ display: none }
|
||||
.category{ padding: 0.2em 1em; cursor: pointer }
|
||||
|
||||
.currentCategory,
|
||||
.category:hover{ background-color: grey }
|
||||
|
||||
.target{
|
||||
margin: 0.2em;
|
||||
background-color: rgb(60,60,70);
|
||||
padding: 0.5em;
|
||||
border: 1px solid rgb(40,40,40);
|
||||
border-radius: 4px;
|
||||
max-width: 50ch;
|
||||
cursor: pointer
|
||||
}
|
||||
.target:hover{ background-color: rgb(80,80,90) }
|
||||
#targets{ display: flex; flex-wrap: wrap }
|
||||
|
||||
pre{
|
||||
white-space: pre-wrap;
|
||||
margin: 1em;
|
||||
border: 2px inset;
|
||||
padding: 0.5em;
|
||||
background-color: rgb(40,50,50)
|
||||
}
|
||||
|
||||
.hidden{ display: none !important }
|
||||
|
||||
.target{ display: flex; justify-content: space-between }
|
139
html_resources/selector.js
Normal file
139
html_resources/selector.js
Normal file
|
@ -0,0 +1,139 @@
|
|||
'use strict';
|
||||
|
||||
let DB = null;
|
||||
|
||||
function initDB(obj){
|
||||
DB = obj;
|
||||
Object.defineProperty(DB,"query",{value:function (q,list){
|
||||
let nlist = [];
|
||||
for(let key of list || Object.keys(this)){
|
||||
if(this[key].includes(q)){
|
||||
nlist.push(key)
|
||||
}
|
||||
}
|
||||
return nlist
|
||||
}});
|
||||
return true
|
||||
}
|
||||
|
||||
let previousCategory = new (function(){
|
||||
let current = null;
|
||||
this.set = function(t){
|
||||
current&¤t.classList.remove("currentCategory");
|
||||
current = t;
|
||||
current.classList.add("currentCategory");
|
||||
};
|
||||
return this
|
||||
})()
|
||||
|
||||
function getText(node){
|
||||
return node.childNodes[0].textContent
|
||||
}
|
||||
|
||||
async function onCategoryClicked(categoryNode){
|
||||
|
||||
previousCategory.set(categoryNode);
|
||||
|
||||
let names = DB.query(categoryNode.textContent);
|
||||
for(let c of Array.from(document.querySelectorAll(".target"))){
|
||||
names.includes(getText(c)) ? c.classList.remove("hidden") : c.classList.add("hidden");
|
||||
}
|
||||
}
|
||||
|
||||
async function onTargetClicked(targetNode){
|
||||
const codeBlock = document.querySelector("pre");
|
||||
let file = await fetch(`chrome/${getText(targetNode)}`);
|
||||
let t = await file.text();
|
||||
codeBlock.textContent = t;
|
||||
}
|
||||
|
||||
function onSomeClicked(e){
|
||||
let cl = e.target.parentNode.id;
|
||||
switch(cl){
|
||||
case "categories":
|
||||
onCategoryClicked(e.target);
|
||||
break;
|
||||
case "targets":
|
||||
onTargetClicked(e.target);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function createCategories(){
|
||||
|
||||
const CAT_PARENT = document.getElementById("categories");
|
||||
CAT_PARENT.addEventListener("click",onSomeClicked)
|
||||
|
||||
const TAR_PARENT = document.getElementById("targets");
|
||||
TAR_PARENT.addEventListener("click",onSomeClicked);
|
||||
|
||||
const createNode = function(name,type){
|
||||
let node = document.createElement("div");
|
||||
node.classList.add(type);
|
||||
node.textContent = name;
|
||||
if(type === "target"){
|
||||
let link = node.appendChild(document.createElement("a"));
|
||||
node.classList.add("hidden");
|
||||
link.href = `https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/${name}`;
|
||||
link.textContent = "Github";
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
const createCategory = name => createNode(name,"category");
|
||||
|
||||
const createTarget = name => createNode(name,"target");
|
||||
|
||||
const CAT_NAMES = (function(){
|
||||
let list = [];
|
||||
|
||||
for(let key of Object.keys(DB)){
|
||||
TAR_PARENT.appendChild(createNode(key,"target"));
|
||||
let things = DB[key];
|
||||
for(let t of things){
|
||||
list.push(t)
|
||||
}
|
||||
}
|
||||
list.sort();
|
||||
let ret = [];
|
||||
let ns = [0];
|
||||
ret[0] = list[0];
|
||||
let i = 0;
|
||||
for(let item of list){
|
||||
if(ret[i]!=item){
|
||||
ret[++i]=item;
|
||||
ns[i]=0;
|
||||
}else{
|
||||
ns[i]++
|
||||
}
|
||||
}
|
||||
let map = ret.map((a,i)=>({name:a,value:ns[i]}))
|
||||
|
||||
return map.sort((a,b)=>(a.value > b.value?-1:a.value < b.value ? 1:0))
|
||||
})();
|
||||
|
||||
for(let cat of CAT_NAMES){
|
||||
CAT_PARENT.appendChild(createCategory(cat.name))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
document.onreadystatechange = (function () {
|
||||
if (document.readyState === "complete") {
|
||||
fetch("html_resources/tagmap.json")
|
||||
.then(response => {
|
||||
const contentType = response.headers.get('content-type');
|
||||
if (!contentType || !contentType.includes('application/json')) {
|
||||
throw new TypeError("Oops, we haven't got JSON!");
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then(json=>(initDB(json)))
|
||||
.then(()=>createCategories())
|
||||
.catch(e=>{console.log(e);document.getElementById("ui").textContent = "FAILURE, Database could not be loaded"});
|
||||
}
|
||||
});
|
95
html_resources/tagmap.json
Normal file
95
html_resources/tagmap.json
Normal file
|
@ -0,0 +1,95 @@
|
|||
{
|
||||
"Fx65_tabs_on_bottom.css":["tabs","toolbars","classic"],
|
||||
"Fx65_tabs_on_bottom_menubar_on_top_patch.css":["tabs","menubar","toolbars","classic","patch"],
|
||||
"autohide_bookmarks_and_main_toolbars.css":["autohide","bookmarks","toolbars","nav-bar","toolbox"],
|
||||
"autohide_bookmarks_toolbar.css":["autohide","bookmarks","toolbars"],
|
||||
"autohide_menubar.css":["autohide","menubar","toolbars"],
|
||||
"autohide_navigation_button.css":["autohide","minimal","navigation","buttons"],
|
||||
"autohide_sidebar.css":["autohide","sidebar"],
|
||||
"autohide_tabstoolbar.css":["autohide","tabs","toolbars"],
|
||||
"autohide_toolbox.css":["autohide","toolbox","toolbars","fullscreen"],
|
||||
"blank_page_background.css":["dark-mode","flash","blank","background"],
|
||||
"bookmarksbar_on_new_tabs_only.css":["legacy"],
|
||||
"button_effect_icon_glow.css":["buttons","effect","minimal"],
|
||||
"button_effect_scale_onclick.css":["buttons","effect","minimal"],
|
||||
"button_effect_scale_onhover.css":["buttons","effect","minimal"],
|
||||
"classic_grid_main_menu_popup.css":["classic","grid","menu","popup"],
|
||||
"click_selected_tab_to_focus_urlbar.css":["hack","tabs","urlbar"],
|
||||
"color_variable_template.css":["theme","color","variables"],
|
||||
"combined_favicon_and_tab_close_button.css":["tab","icon","close"],
|
||||
"combined_tabs_and_main_toolbars.css":["minimal","tabs","toolbars"],
|
||||
"compact_urlbar_megabar.css":["urlbar","minimal"],
|
||||
"dark_additional_windows.css":["windows","dark-mode"],
|
||||
"dark_checkboxes_and_radios.css":["widgets","dark-mode"],
|
||||
"dark_context_menus.css":["dark-mode","menus"],
|
||||
"dark_theme_aware_statuspanel.css":["staus","dark-mode"],
|
||||
"disable_newtab_on_middle_click.css":["hack","newtab","tab"],
|
||||
"fake_statusbar.css":["hack","status","toolbar"],
|
||||
"floating_findbar_on_top.css":["findbar","overlay"],
|
||||
"full_width_urlbar_popup.css":["ulrbar","popup"],
|
||||
"google_style_urlbar_popup.css":["urlbar","popup"],
|
||||
"grid_overflow_menu.css":["popup","menu"],
|
||||
"hide_statuspanel_when_fullscreen.css":["status","fullscreen","hiding"],
|
||||
"hide_tabs_toolbar.css":["hiding","tabs","toolbars"],
|
||||
"hide_tabs_with_one_tab.css":["hiding","tabs","toolbars"],
|
||||
"hide_tabs_with_one_tab_w_window_controls.css":["hiding","tabs","toolbars"],
|
||||
"hide_toolbox_top_bottom_borders.css":["toolbox","hiding"],
|
||||
"hide_urlbar_first_row.css":["urlbar","popup","hiding"],
|
||||
"linux_gtk_window_control_patch.css":["patch","window-control"],
|
||||
"menubar_in_toolbar.css":["toolbars","minimal"],
|
||||
"menubar_in_toolbar_oneliner_compatible.css":["toolbars","minimal"],
|
||||
"minimal_in-UI_scrollbars.css":["minimal","scrollbar"],
|
||||
"minimal_text_fields.css":["minimal","urlbar","searchbar"],
|
||||
"minimal_toolbarbuttons.css":["minimal","buttons"],
|
||||
"minimal_toolbarbuttons_v2.css":["minimal","buttons"],
|
||||
"minimal_toolbarbuttons_v3.css":["minimal","buttons"],
|
||||
"more_visible_tab_icon.css":["tab","icon"],
|
||||
"multi-row_bookmarks.css":["multi-row","bookmarks"],
|
||||
"multi-row_oneliner_combo_patch.css":["multi-row","patch","1-line","minimal"],
|
||||
"multi-row_tabs.css":["tabs","multi-row","toolbars"],
|
||||
"multi-row_tabs_Fx66%2B.css":["legacy"],
|
||||
"multi-row_tabs_below_content.css":["multi-row","tabs","toolbars"],
|
||||
"multi-row_tabs_below_content_legacy.css":["legacy"],
|
||||
"multi-row_tabs_legacy.css":["legacy"],
|
||||
"multi-row_tabs_window_control_patch.css":["patch","multi-row","window-control"],
|
||||
"navbar_below_content.css":["nav-bar","toolbars"],
|
||||
"navbar_tabs_oneliner.css":["1-line","minimal","tabs","nav-bar","toolbars"],
|
||||
"navbar_tabs_oneliner_menu_buttons_on_right.css":["1-line","minimal","tabs","nav-bar","toolbars","patch","menubar"],
|
||||
"navbar_tabs_oneliner_tabs_on_left.css":["1-line","minimal","tabs","nav-bar","toolbar"],
|
||||
"navbar_tabs_responsive_oneliner.css":["1-line","minimal","tabs","nav-bar","toolbars"],
|
||||
"navigation_buttons_inside_urlbar.css":["navigation","buttons","urlbar"],
|
||||
"numbered_tabs.css":["tabs"],
|
||||
"overlay_menubar.css":["menubar"],
|
||||
"overlay_scrollbars.as.css":["scrollbar"],
|
||||
"page_action_buttons_on_hover.css":["urlbar","minimal","effect"],
|
||||
"pinned_tabs_on_right.css":["tabs"],
|
||||
"scrollable_menupopups.css":["scrollbar","popup","menu"],
|
||||
"scrollable_urlbar_popup.css":["scrollbar","popup","urlbar"],
|
||||
"show_navbar_on_focus_only.css":["urlbar","nav-bar","toolbar","hiding"],
|
||||
"show_window_title_in_menubar.css":["windows","menubar"],
|
||||
"status_inside_urlbar.css":["status","urlbar","hack"],
|
||||
"tab_close_button_always_on_hover.css":["tab","close"],
|
||||
"tab_loading_progress_throbber.css":["tab","icon","animation"],
|
||||
"tabs_animated_gradient_border.css":["hack","animation"],
|
||||
"tabs_below_content.css":["toolbars","tabs"],
|
||||
"tabs_fill_available_width.css":["tab","tabs"],
|
||||
"textual_context_navigation.css":["navigation","popup","menu"],
|
||||
"theme_additional_windows.css":["legacy"],
|
||||
"theme_color_variables.css":["legacy"],
|
||||
"theme_popups_and_menus.css":["legacy"],
|
||||
"theme_sidebar.css":["legacy"],
|
||||
"theme_toolbars.css":["legacy"],
|
||||
"toggle_bookmarksbar_with_alt.css":["legacy"],
|
||||
"toggle_tabs_toolbar_with_alt.css":["hack","tabs","menubar"],
|
||||
"toolbarbuttons_icon%2Blabel.css":["buttons","icon"],
|
||||
"toolbars_below_content.css":["tabs","toolbox","toolbars"],
|
||||
"urlbar_and_popup_equal_width.css":["legacy"],
|
||||
"urlbar_centered_text.css":["urlbar"],
|
||||
"urlbar_full_width.css":["urlbar","popup"],
|
||||
"urlbar_results_in_two_rows.css":["urlbar","popup"],
|
||||
"urlbar_visible_on_active_tab_click.css":["hack","urlbar"],
|
||||
"vertical_context_navigation.css":["navigation","menu","popup"],
|
||||
"vertical_context_navigation_v2.css":["navigation","menu","popup"],
|
||||
"vertical_menubar.css":["menubar","hack"],
|
||||
"window_control_placeholder_support.css":["window-control","patch"]
|
||||
}
|
93
tags.csv
Normal file
93
tags.csv
Normal file
|
@ -0,0 +1,93 @@
|
|||
Fx65_tabs_on_bottom.css,tabs,toolbars,classic
|
||||
Fx65_tabs_on_bottom_menubar_on_top_patch.css,tabs,menubar,toolbars,classic,patch
|
||||
autohide_bookmarks_and_main_toolbars.css,autohide,bookmarks,toolbars,nav-bar,toolbox
|
||||
autohide_bookmarks_toolbar.css,autohide,bookmarks,toolbars
|
||||
autohide_menubar.css,autohide,menubar,toolbars
|
||||
autohide_navigation_button.css,autohide,minimal,navigation,buttons
|
||||
autohide_sidebar.css,autohide,sidebar
|
||||
autohide_tabstoolbar.css,autohide,tabs,toolbars
|
||||
autohide_toolbox.css,autohide,toolbox,toolbars,fullscreen
|
||||
blank_page_background.css,dark-mode,flash,blank,background
|
||||
bookmarksbar_on_new_tabs_only.css,legacy
|
||||
button_effect_icon_glow.css,buttons,effect,minimal
|
||||
button_effect_scale_onclick.css,buttons,effect,minimal
|
||||
button_effect_scale_onhover.css,buttons,effect,minimal
|
||||
classic_grid_main_menu_popup.css,classic,grid,menu,popup
|
||||
click_selected_tab_to_focus_urlbar.css,hack,tabs,urlbar
|
||||
color_variable_template.css,theme,color,variables
|
||||
combined_favicon_and_tab_close_button.css,tab,icon,close
|
||||
combined_tabs_and_main_toolbars.css,minimal,tabs,toolbars
|
||||
compact_urlbar_megabar.css,urlbar,minimal
|
||||
dark_additional_windows.css,windows,dark-mode
|
||||
dark_checkboxes_and_radios.css,widgets,dark-mode
|
||||
dark_context_menus.css,dark-mode,menus
|
||||
dark_theme_aware_statuspanel.css,staus,dark-mode
|
||||
disable_newtab_on_middle_click.css,hack,newtab,tab
|
||||
fake_statusbar.css,hack,status,toolbar
|
||||
floating_findbar_on_top.css,findbar,overlay
|
||||
full_width_urlbar_popup.css,ulrbar,popup
|
||||
google_style_urlbar_popup.css,urlbar,popup
|
||||
grid_overflow_menu.css,popup,menu
|
||||
hide_statuspanel_when_fullscreen.css,status,fullscreen,hiding
|
||||
hide_tabs_toolbar.css,hiding,tabs,toolbars
|
||||
hide_tabs_with_one_tab.css,hiding,tabs,toolbars
|
||||
hide_tabs_with_one_tab_w_window_controls.css,hiding,tabs,toolbars
|
||||
hide_toolbox_top_bottom_borders.css,toolbox,hiding
|
||||
hide_urlbar_first_row.css,urlbar,popup,hiding
|
||||
linux_gtk_window_control_patch.css,patch,window-control
|
||||
menubar_in_toolbar.css,toolbars,minimal
|
||||
menubar_in_toolbar_oneliner_compatible.css,toolbars,minimal
|
||||
minimal_in-UI_scrollbars.css,minimal,scrollbar
|
||||
minimal_text_fields.css,minimal,urlbar,searchbar
|
||||
minimal_toolbarbuttons.css,minimal,buttons
|
||||
minimal_toolbarbuttons_v2.css,minimal,buttons
|
||||
minimal_toolbarbuttons_v3.css,minimal,buttons
|
||||
more_visible_tab_icon.css,tab,icon
|
||||
multi-row_bookmarks.css,multi-row,bookmarks
|
||||
multi-row_oneliner_combo_patch.css,multi-row,patch,1-line,minimal
|
||||
multi-row_tabs.css,tabs,multi-row,toolbars
|
||||
multi-row_tabs_Fx66%2B.css,legacy
|
||||
multi-row_tabs_below_content.css,multi-row,tabs,toolbars
|
||||
multi-row_tabs_below_content_legacy.css,legacy
|
||||
multi-row_tabs_legacy.css,legacy
|
||||
multi-row_tabs_window_control_patch.css,patch,multi-row,window-control
|
||||
navbar_below_content.css,nav-bar,toolbars
|
||||
navbar_tabs_oneliner.css,1-line,minimal,tabs,nav-bar,toolbars
|
||||
navbar_tabs_oneliner_menu_buttons_on_right.css,1-line,minimal,tabs,nav-bar,toolbars,patch,menubar
|
||||
navbar_tabs_oneliner_tabs_on_left.css,1-line,minimal,tabs,nav-bar,toolbar
|
||||
navbar_tabs_responsive_oneliner.css,1-line,minimal,tabs,nav-bar,toolbars
|
||||
navigation_buttons_inside_urlbar.css,navigation,buttons,urlbar
|
||||
numbered_tabs.css,tabs
|
||||
overlay_menubar.css,menubar
|
||||
overlay_scrollbars.as.css,scrollbar
|
||||
page_action_buttons_on_hover.css,urlbar,minimal,effect
|
||||
pinned_tabs_on_right.css,tabs
|
||||
scrollable_menupopups.css,scrollbar,popup,menu
|
||||
scrollable_urlbar_popup.css,scrollbar,popup,urlbar
|
||||
show_navbar_on_focus_only.css,urlbar,nav-bar,toolbar,hiding
|
||||
show_window_title_in_menubar.css,windows,menubar
|
||||
status_inside_urlbar.css,status,urlbar,hack
|
||||
tab_close_button_always_on_hover.css,tab,close
|
||||
tab_loading_progress_throbber.css,tab,icon,animation
|
||||
tabs_animated_gradient_border.css,hack,animation
|
||||
tabs_below_content.css,toolbars,tabs
|
||||
tabs_fill_available_width.css,tab,tabs
|
||||
textual_context_navigation.css,navigation,popup,menu
|
||||
theme_additional_windows.css,legacy
|
||||
theme_color_variables.css,legacy,
|
||||
theme_popups_and_menus.css,legacy
|
||||
theme_sidebar.css,legacy
|
||||
theme_toolbars.css,legacy
|
||||
toggle_bookmarksbar_with_alt.css,legacy
|
||||
toggle_tabs_toolbar_with_alt.css,hack,tabs,menubar
|
||||
toolbarbuttons_icon%2Blabel.css,buttons,icon
|
||||
toolbars_below_content.css,tabs,toolbox,toolbars
|
||||
urlbar_and_popup_equal_width.css,legacy
|
||||
urlbar_centered_text.css,urlbar
|
||||
urlbar_full_width.css,urlbar,popup
|
||||
urlbar_results_in_two_rows.css,urlbar,popup
|
||||
urlbar_visible_on_active_tab_click.css,hack,urlbar
|
||||
vertical_context_navigation.css,navigation,menu,popup
|
||||
vertical_context_navigation_v2.css,navigation,menu,popup
|
||||
vertical_menubar.css,menubar,hack
|
||||
window_control_placeholder_support.css,window-control,patch
|
|
Loading…
Reference in a new issue