commit 30a19be8ca7cafce6da503899056920212d75f9c Author: Ryan Reed Date: Wed Sep 8 20:12:28 2021 -0400 Initial commit diff --git a/.chezmoidata.toml b/.chezmoidata.toml new file mode 100644 index 0000000..cee8759 --- /dev/null +++ b/.chezmoidata.toml @@ -0,0 +1,2 @@ +# defaults +hostname_color="red" diff --git a/.chezmoiignore b/.chezmoiignore new file mode 100644 index 0000000..f937e7c --- /dev/null +++ b/.chezmoiignore @@ -0,0 +1,8 @@ +README.md +{{ if (hasKey . "firefox") | not }} +.mozilla +{{- end }} + +{{ if (hasKey . "git") | not }} +.gitconfig +{{- end }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e3075c2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Swap files +*.sw[a-p] diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..54f81bb --- /dev/null +++ b/.gitmodules @@ -0,0 +1,39 @@ +[submodule "dot_vim/bundle/gruvbox"] + path = dot_vim/bundle/gruvbox + url = https://github.com/morhetz/gruvbox.git +[submodule "dot_vim/bundle/indentLine"] + path = dot_vim/bundle/indentLine + url = https://github.com/Yggdroot/indentLine.git +[submodule "dot_vim/bundle/lightline.vim"] + path = dot_vim/bundle/lightline.vim + url = https://github.com/itchyny/lightline.vim.git +[submodule "dot_vim/bundle/nerdcommenter"] + path = dot_vim/bundle/nerdcommenter + url = https://github.com/preservim/nerdcommenter.git +[submodule "dot_vim/bundle/nerdtree"] + path = dot_vim/bundle/nerdtree + url = https://github.com/preservim/nerdtree.git +[submodule "dot_vim/bundle/python-syntax"] + path = dot_vim/bundle/python-syntax + url = https://github.com/hdima/python-syntax.git +[submodule "dot_vim/bundle/tabular"] + path = dot_vim/bundle/tabular + url = https://github.com/godlygeek/tabular.git +[submodule "dot_vim/bundle/vim-indent-guides"] + path = dot_vim/bundle/vim-indent-guides + url = https://github.com/nathanaelkane/vim-indent-guides.git +[submodule "dot_vim/bundle/vim-markdown-toc"] + path = dot_vim/bundle/vim-markdown-toc + url = https://github.com/mzlogin/vim-markdown-toc.git +[submodule "dot_vim/bundle/vim-rainbow"] + path = dot_vim/bundle/vim-rainbow + url = https://github.com/frazrepo/vim-rainbow.git +[submodule "dot_vim/bundle/vim-surround"] + path = dot_vim/bundle/vim-surround + url = https://github.com/tpope/vim-surround.git +[submodule "dot_vim/pack/dist/opt/vim-matchit"] + path = dot_vim/pack/dist/opt/vim-matchit + url = https://github.com/adelarsq/vim-matchit.git +[submodule "dot_vim/pack/git-plugins/start/ale"] + path = dot_vim/pack/git-plugins/start/ale + url = https://github.com/dense-analysis/ale.git diff --git a/README.md b/README.md new file mode 100644 index 0000000..2cdb35b --- /dev/null +++ b/README.md @@ -0,0 +1,126 @@ +``` + _ _ __ _ _ + | | | | / _(_) | + __| | ___ | |_| |_ _| | ___ ___ + / _` |/ _ \| __| _| | |/ _ \/ __| + | (_| | (_) | |_| | | | | __/\__ \ + \__,_|\___/ \__|_| |_|_|\___||___/ +``` + +## Table of Contents + + + +* [Overview](#overview) +* [Chezmoi TLDR](#chezmoi-tldr) +* [Configs and Applications](#configs-and-applications) +* [Requirements](#requirements) +* [Chezmoi Configuration File (Optional)](#chezmoi-configuration-file-optional) +* [Initial Setup](#initial-setup) +* [Special Notes](#special-notes) + * [Mozilla Firefox](#mozilla-firefox) + + + +# Overview + +These are my dotfiles for various systems which are managed using [chezmoi](https://www.chezmoi.io/) + +This includes custom profiles for various machines + + +# Chezmoi TLDR + +``` +chezmoi init ssh://git@gitea.ryanreed.net:3001/ryanreed/dotfiles-chezmoi.git +chezmoi apply -n # Apply changes to ~ (Dry run) +chezmoi archive # Create an archive of the dotfiles +chezmoi cd # cd to chosmoi source path +chezmoi merge # Merge changes made to local copy with chezmoi managed +chezmoi update # Pull latest version from git and apply changes + +chezmoi add ~/.my_file # Manage new file +chezmoi forget ~/.my_file # Stop managing a file +chezmoi managed # View managed files +``` + + +# Configs and Applications + +Check out the README's of the various apps for shortcuts, plugin info, etc: + +* [Tmux](dot_tmux/README.md) +* [Vim](dot_vim/README.md) +* [ZSH](dot_zsh/README.md) + + +# Requirements + +| Application | Min Version | +| ----------- | ----------- | +| Chezmoi | 2.3 | +| Tmux | 3.0 | +| Vim | 8.2 | +| zsh | 5.8 | + +The above are only the versions that each package was last known working with. It's likely most would work on earlier versions. + + +# Chezmoi Configuration File (Optional) + +Create the chezmoi configuration at `~/.config/chezmoi/chezmoi.toml`: + +``` +[data] + hostname_color = "blue" + +[data.firefox] + enabled = true + bookmarks = "/home/user/bookmarks.html" + +[data.git] + email = "git@email.com" + name = "My User" + ssl_verify = false + +# The following is not currently in use +[keepassxc] + database = "/home/user/database.kdbx" +``` + + +# Initial Setup + +Chezmoi does not support submodules. However, submodules are how we want to handle this rather than having to use the chezmoi configuration + +``` +sh -c "$(curl -fsLS git.io/chezmoi)" +chezmoi init ssh://git@gitea.ryanreed.net:3001/ryanreed/dotfiles-chezmoi.git +chezmoi apply -v -n # Remove -n to actually apply +``` + + +# Special Notes + +## Mozilla Firefox + +I utilize various [user.js](private_dot_mozilla/private_firefox/private_personal-profile.default/user.js.tmpl) and userChrome.css tweaks. These are setup within `~/.mozilla/firefox/personal-profile.default/`. + +Because of how firefox creates profile directories with randomish names, the best method is to: + +1. **Make Sure Firefox is Closed** +2. Rename your current profile to `personal-profile.default` +3. Symlink `personal-profile.default` to your original directory's name + +For example: + +``` +mv ~/.mozilla/firefox/yyaabb123.default ~/.mozilla/firefox/personal-profile.default +ln -s ~/.mozilla/firefox/personal-profile.default ~/.mozilla/firefox/yyaabb123.default +``` + +Renaming the profile (`firefox -p`), renaming the directory, and modifying `profiles.ini` isn't enough either. You would need to check the profile directory for any files where the path is hardcoded. + +Unfortunately, it can't be automated with Chezmoi. Chezmoi can NOT add files to the symlink directory. It will delete the symlink and create just the directory needed. + +The above implementation seems to get around these issues. diff --git a/dot_gitconfig.tmpl b/dot_gitconfig.tmpl new file mode 100644 index 0000000..56bf715 --- /dev/null +++ b/dot_gitconfig.tmpl @@ -0,0 +1,18 @@ +[user] + email = {{ default "unknown@unknown.com" .git.email | quote }} + name = {{ default "Unknown" .git.name | quote }} + +[http] +{{- if hasKey .git "ssl_verify" }} + sslVerify = {{ .git.ssl_verify }} +{{- else }} + sslVerify = true +{{- end }} + +[apply] + # Detect whitespace errors when applying a patch. + whitespace = fix + +[fetch] + # Remove any remote-tracking references that no longer exist on the remote. + prune = true diff --git a/dot_local/share/fonts/Hack-Bold.ttf b/dot_local/share/fonts/Hack-Bold.ttf new file mode 100644 index 0000000..0f42131 Binary files /dev/null and b/dot_local/share/fonts/Hack-Bold.ttf differ diff --git a/dot_local/share/fonts/Hack-BoldItalic.ttf b/dot_local/share/fonts/Hack-BoldItalic.ttf new file mode 100644 index 0000000..02191bc Binary files /dev/null and b/dot_local/share/fonts/Hack-BoldItalic.ttf differ diff --git a/dot_local/share/fonts/Hack-Italic.ttf b/dot_local/share/fonts/Hack-Italic.ttf new file mode 100644 index 0000000..9a71c9c Binary files /dev/null and b/dot_local/share/fonts/Hack-Italic.ttf differ diff --git a/dot_local/share/fonts/Hack-Regular.ttf b/dot_local/share/fonts/Hack-Regular.ttf new file mode 100644 index 0000000..a35ea2e Binary files /dev/null and b/dot_local/share/fonts/Hack-Regular.ttf differ diff --git a/dot_tmux.conf b/dot_tmux.conf new file mode 100644 index 0000000..7e14b5c --- /dev/null +++ b/dot_tmux.conf @@ -0,0 +1,96 @@ +# ========================== +# === General settings === +# ========================== +set -g default-terminal "screen-256color" +set -g history-limit 50000 +#set -sg escape-time 0 # fix for delay in switching modes in vim +# set -g display-time 4000 # Tmux messages are displayed for 4 seconds +# set -g remain-on-exit off +set -g repeat-time 200 # Allow multiple tmux commands to be run within time period (ms) without pressing the prefix (Default: 500) +setw -g aggressive-resize on + +setw -g mode-keys vi # Prefer vi style key table + + + +# =========================== +# === Windows and Panes === +# =========================== + +#set-hook -g after-new-window 'command-prompt -I "#{window_name}" "rename-window '%%'"' # Prompt to rename window right after it's created + +# Set parent terminal title to reflect current window in tmux session +# set -g set-titles on +# set -g set-titles-string "#I:#W" + +#setw -g allow-rename off # Don't allow rename of window name (\o33k...\033\\) +#setw -g automatic-rename off # Don't rename window based on command being run + +set -g base-index 1 # start session number from 1 rather than 0 +set -g pane-base-index 1 # start pane number from 1 + +set -g renumber-windows on # renumber windows sequentially after closing any of them + +# Silence +set-option -g visual-activity off +set-option -g visual-bell off +set-option -g visual-silence off +set-window-option -g monitor-activity off +set-option -g bell-action none + + + +# ====================== +# === Key bindings === +# ====================== + +# Add secondary prefix of Ctrl-a; easier to type, same to "screen" +# Leave Ctrl-b for legacy purposes +set -g prefix2 C-a +bind C-a send-prefix # dont mess with other ctrl-a options by pressing ctrl-a twice + +bind r source-file ~/.tmux.conf \; display "Config reloaded" # Reload tmux configuration + +# bind c new-window -c "#{pane_current_path}" # new window and retain cwd +bind | split-window -h -c "#{pane_current_path}" # split panes vertically +bind - split-window -v -c "#{pane_current_path}" # split panes horizontally +bind -r Tab last-window # cycle through most recently used tabs +bind T swap-window -t 1 # Make the current window the first window + +bind + resize-pane -Z # zoom on pane +bind -n M-Up copy-mode # trigger copy mode with PgUp +bind d detach # detach session + +# Force home/end to only move to start/end of line +unbind-key -T copy-mode-vi 'Home' +unbind-key -T copy-mode-vi 'End' +bind-key -T copy-mode-vi 'Home' send -X start-of-line +bind-key -T copy-mode-vi 'End' send -X end-of-line + +bind m set -g mouse \; display 'Mouse Mode Toggled' + +# Save Last 32000 lines to file +bind-key P command-prompt -p 'save history to filename:' -I '~/tmux.history' 'capture-pane -S -32000 ; save-buffer %1 ; delete-buffer' + +# Start capture of current pane +bind-key H pipe-pane -o "exec cat >>$HOME/'tmux-#W.log'" \; display-message 'Toggled logging to $HOME/tmux-#W.log' + + + +# =================================== +# === Appearence and status bar === +# =================================== +# Load the tmux theme, based on the environment variable TMUX_THEME +# If TMUX_THEME is not set or empty, use ~/.tmux/themes/material.tmux +# Taken from https://github.com/PeterMosmans/dotfiles +run-shell "tmux source-file ~/.tmux/themes/\${TMUX_THEME:-widecentered}.tmux" + +set -g status-position top + + + +# =============== +# === Final === +# =============== +# Load local config, if it exists +if-shell "[ -f ~/.tmux.conf.local ]" 'source ~/.tmux.conf.local' diff --git a/dot_tmux/README.md b/dot_tmux/README.md new file mode 100644 index 0000000..bdf0dfd --- /dev/null +++ b/dot_tmux/README.md @@ -0,0 +1,42 @@ +# Tmux + +## Table of Contents + + + +* [Shortcuts](#shortcuts) +* [Notes](#notes) + * [Copying and save buffer](#copying-and-save-buffer) + + + + +## Shortcuts + +**Leader Combo:** `ctrl + a` + +| Shortcut | Description | +| -------------- | ----------------------------------------- | +| `| ` | Split Vertically | +| `-` | Split Horizontally | +| `m` | Toggle mouse mode | +| `P` | Save current window to file (32000 lines) | +| `H` | Toggle logging of session | +| `r` | Reload tmux configuration | +| `T` | Make current window first window | +| `PgUp` | Enter copy mode | + +## Notes + +### Copying and save buffer +This can be done through the shortcut `P` which will ask where to +save the entire buffer of the current window, up to 32000 lines. + +Below is the manual method for saving a selection rather than the whole buffer + +1. `` +2. Move to line you want to start copying from +3. `` +4. Move to last line +5. ` ` +6. ` :save-buffer ` diff --git a/dot_tmux/themes/alternate.tmux b/dot_tmux/themes/alternate.tmux new file mode 100644 index 0000000..05f2b74 --- /dev/null +++ b/dot_tmux/themes/alternate.tmux @@ -0,0 +1,19 @@ +set -g status on + +set -g status-bg black +set -g status-fg white +set -g status-position top +set -g status-justify left +set -g status-interval 2 + +setw -g window-status-current-format ' #I#[fg=colour250]:#[fg=colour255]#W#[fg=colour50]#F ' + +set -g window-status-format "#[fg=colour244,bg=colour234]#I #[fg=colour240] #[default]#W " +set -g window-status-current-format "#[fg=colour234,bg=colour31]#[fg=colour117,bg=colour31] #I  #[fg=colour231,bold]#W #[fg=colour31,bg=colour234,nobold]" +set -g window-status-last-style fg=colour31 + +set -g status-left-length 30 +set -g status-left '#{?client_prefix,#[fg=colour254]#[bg=colour31]#[bold],#[fg=colour16]#[bg=colour254]#[bold]} #S #{?client_prefix,#[fg=colour31]#[bg=colour234]#[nobold],#[fg=colour254]#[bg=colour234]#[nobold]} ' + +set -g status-right-length 150 +set -g status-right '#[bg=black,fg=yellow] #[bg=yellow, fg=black] #(cut -d " " -f 1-3 /proc/loadavg) #[bg=yellow,fg=colour241]#[fg=colour233,bg=colour241,bold] %d/%m #[bg=colour241,fg=colour245]#[fg=colour233,bg=colour245,bold] %H:%M:%S ' diff --git a/dot_tmux/themes/default.tmux b/dot_tmux/themes/default.tmux new file mode 100644 index 0000000..6fe558f --- /dev/null +++ b/dot_tmux/themes/default.tmux @@ -0,0 +1,19 @@ +set -g status on + +set -g status-bg black +set -g status-fg white +set -g status-position top +set -g status-justify left +set -g status-interval 2 + +setw -g window-status-current-format ' #I#[fg=colour250]:#[fg=colour255]#W#[fg=colour50]#F ' + +set -g window-status-format "#[fg=colour244,bg=colour234]#I #[fg=colour240]| #[default]#W " +set -g window-status-current-format "#[fg=colour117,bg=colour31] #I #[fg=colour231,bold]#W " +#set -g window-status-last-style fg=colour31 + +set -g status-left-length 30 +set -g status-left '#{?client_prefix,#[fg=colour254]#[bg=colour31]#[bold],#[fg=colour16]#[bg=colour254]#[bold]} #S #{?client_prefix,#[fg=colour31]#[bg=colour234]#[nobold],#[fg=colour254]#[bg=colour234]#[nobold]} #(whoami) ' + +set -g status-right-length 150 +set -g status-right '#[bg=yellow, fg=black] #(cut -d " " -f 1-3 /proc/loadavg) #[fg=colour254,bg=black] #[fg=colour233,bg=colour241,bold] %d/%m #[fg=colour254,bg=black] #[fg=colour233,bg=colour245,bold] %H:%M ' diff --git a/dot_tmux/themes/material.tmux b/dot_tmux/themes/material.tmux new file mode 100644 index 0000000..1e6a3a5 --- /dev/null +++ b/dot_tmux/themes/material.tmux @@ -0,0 +1,62 @@ +# Original Source: https://github.com/mit17k/tmux-material-dark-theme/blob/master/tmux-onedark-theme.tmux +material_dark_black="#292929" +material_dark_blue="#82aaff" +material_dark_yellow="#ffcb6b" +material_dark_red="#f07178" +material_dark_white="#B0BEC5" +material_dark_green="#c3e88d" +material_dark_visual_grey="#3F3F3F" +material_dark_comment_grey="#5c6370" + +set -g "status" "on" +set -g "status-justify" "left" + +set -g "status-left-length" "100" +set -g "status-right-length" "100" +set -g "status-right-attr" "none" + +set -g "message-fg" "$material_dark_white" +set -g "message-bg" "$material_dark_black" + +set -g "message-command-fg" "$material_dark_white" +set -g "message-command-bg" "$material_dark_black" + +set -g "status-attr" "none" +set -g "status-left-attr" "none" + +setw -g "window-status-fg" "$material_dark_black" +setw -g "window-status-bg" "$material_dark_black" +setw -g "window-status-attr" "none" + +setw -g "window-status-activity-bg" "$material_dark_black" +setw -g "window-status-activity-fg" "$material_dark_black" +setw -g "window-status-activity-attr" "none" + +setw -g "window-status-separator" "" + +set -g "window-style" "fg=$material_dark_comment_grey" +set -g "window-active-style" "fg=$material_dark_white" + +set -g "pane-border-fg" "$material_dark_white" +set -g "pane-border-bg" "$material_dark_black" +set -g "pane-active-border-fg" "$material_dark_green" +set -g "pane-active-border-bg" "$material_dark_black" + +set -g "display-panes-active-colour" "$material_dark_yellow" +set -g "display-panes-colour" "$material_dark_blue" + +set -g "status-bg" "$material_dark_black" +set -g "status-fg" "$material_dark_white" + +set -g "@prefix_highlight_fg" "$material_dark_black" +set -g "@prefix_highlight_bg" "$material_dark_green" +set -g "@prefix_highlight_copy_mode_attr" "fg=$material_dark_black,bg=$material_dark_green" +set -g "@prefix_highlight_output_prefix" "  " + +set -g "status-left" "#[fg=$material_dark_black,bg=$material_dark_green,bold] #S #{prefix_highlight}#[fg=$material_dark_green,bg=$material_dark_black,nobold,nounderscore,noitalics]" + +set -g status-right ' #(cut -d " " -f 1-3 /proc/loadavg) #[fg=colour233,bg=colour241,bold] %d/%m #[fg=colour254,bg=black] #[fg=colour233,bg=colour245,bold] %H:%M ' +set -g status-right-length 150 + +set -g "window-status-format" "#[fg=$material_dark_black,bg=$material_dark_black,nobold,nounderscore,noitalics]#[fg=$material_dark_white,bg=$material_dark_black] #I  #W #[fg=$material_dark_black,bg=$material_dark_black,nobold,nounderscore,noitalics]" +set -g "window-status-current-format" "#[fg=$material_dark_black,bg=$material_dark_visual_grey,nobold,nounderscore,noitalics]#[fg=$material_dark_white,bg=$material_dark_visual_grey,nobold] #I  #W #[fg=$material_dark_visual_grey,bg=$material_dark_black,nobold,nounderscore,noitalics]" diff --git a/dot_tmux/themes/widecentered.tmux b/dot_tmux/themes/widecentered.tmux new file mode 100644 index 0000000..43c52b3 --- /dev/null +++ b/dot_tmux/themes/widecentered.tmux @@ -0,0 +1,20 @@ +set -g status 'on' +set -g status-position top +set -g status-bg 'colour235' +set -g status-justify 'centre' +set -g status-left-length '100' +set -g status-right-length '100' +set -g message-style fg='colour222',bg='colour238' +set -g message-command-style fg='colour222',bg='colour238' +set -g pane-border-style fg='colour238' +set -g pane-active-border-style fg='colour202' + +setw -g window-status-activity-style fg='colour202',bg='colour235',none +setw -g window-status-separator '' +setw -g window-status-style fg='colour172',bg='colour235',none + +set -g status-left '#[fg=colour232,bg=colour202] #S #[fg=colour202,bg=colour238,nobold,nounderscore,noitalics]#[fg=colour222,bg=colour238] #W #[fg=colour238,bg=colour235,nobold,nounderscore,noitalics]#[fg=colour172,bg=colour235] #(whoami) #[fg=colour235,bg=colour235,nobold,nounderscore,noitalics]' +set -g status-right '#[fg=colour235,bg=colour235,nobold,nounderscore,noitalics]#[fg=colour172,bg=colour235] %r  %a  %Y #[fg=colour238,bg=colour235,nobold,nounderscore,noitalics]#[fg=colour222,bg=colour238] #H #[fg=colour202,bg=colour238,nobold,nounderscore,noitalics]#[fg=colour232,bg=colour202] #(rainbarf --battery --remaining --no-rgb) ' + +setw -g window-status-format '#[fg=colour235,bg=colour235,nobold,nounderscore,noitalics]#[default] #I  #W #[fg=colour235,bg=colour235,nobold,nounderscore,noitalics]' +setw -g window-status-current-format '#[fg=colour235,bg=colour238,nobold,nounderscore,noitalics]#[fg=colour222,bg=colour238] #I  #W #[fg=colour238,bg=colour235,nobold,nounderscore,noitalics]' diff --git a/dot_vim/README.md b/dot_vim/README.md new file mode 100644 index 0000000..b0b2b4d --- /dev/null +++ b/dot_vim/README.md @@ -0,0 +1,114 @@ +# VIM + +Note: Some features require version 8+ of vim. For instance, the ALE plugin which utilizes the built-in `~/.vim/pack/` for autoloading plugins + +## Table of Contents + + +* [Snippets](#snippets) + * [Incrementing a column of numbers](#incrementing-a-column-of-numbers) +* [Plugins](#plugins) +* [Keybindings](#keybindings) + * [Display Related](#display-related) + * [Formatting Related](#formatting-related) + * [Navigation Related](#navigation-related) + * [Tabs and Windows Related](#tabs-and-windows-related) + * [Misc Related](#misc-related) + + + +## Snippets +``` + # select to end of word/variable and yank +<)> # cut everything before ) [eg func(text-to-cut)] +``` + +### Incrementing a column of numbers +``` + # Select all number columns to increment + # If using tmux config, may need to hit a twice (e.g. +``` + +## Plugins +* ~~[Easymotion](https://github.com/easymotion/vim-easymotion) - Easily navigate documents~~ Disabled recently as unused, although useful +* [Asynchronous Lint Engine (ALE)](https://github.com/dense-analysis/ale) - Linting while working +* [Gruvbox](https://github.com/morhetz/gruvbox) - Retro colorscheme (colorscheme in vimrc) +* [Matchit](https://github.com/adelarsq/vim-matchit) - For expanding % matching (matches start/end tags for html, for example) +* [Lightline](https://github.com/itchyny/lightline.vim) - Configurable statusline/tabline +* [Markdown TOC](https://github.com/mzlogin/vim-markdown-toc) - A markdown Table of Contents generator +* [NERDCommenter](https://github.com/preservim/nerdcommenter) - Quick commenting/uncommenting of lines +* [NERDTree](https://github.com/scrooloose/nerdtree) - Local file explorer +* [python-syntax](https://github.com/vim-python/python-syntax) - Better syntax highlighting for python +* [Tabular](https://github.com/godlygeek/tabular/) - Easily align text based on delimeters (e.g. |) +* [surround.vim](https://github.com/tpope/vim-surround) - Easily surround with delimeters (e.g. "Something") +* [IndentLines](https://github.com/Yggdroot/indentLine) - View the indentations (`i`) +* [vim-rainbow](https://github.com/frazrepo/vim-rainbow.git) - Different colors for different levels of brackets + + + +## Keybindings + +**Leader Key:** `,` (comma) + +### Display Related + +| Shortcut | Description | Plugin | +| ---------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | +| `` | Toggle wordwrap | | +| `bg` | Toggle dark/light background | | +| `h` | Disable search highlight | | +| `f<0-9>` | Set foldlevel (0-9) | | +| `i` | Toggle indent guides | IndentLines | + +### Formatting Related + +| Shortcut | Description | Plugin | +| ---------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | +| `-` | Comment out selected lines (filetype needs to be configured in vimrc for support) | NERDcommenter | +| `_` | Uncomment selected lines (filetype needs to be configured in vimrc for support) | NERDcommenter | +| `` | Remove trailing whitespace from file | | +| `a` | Accept various common delimiters for tabulizing blocks of code (e.g. `varname = something`, = being the delimiter) | Tabular | +| `d` | Add delimiters around entire line (normal mode) or selection (visual mode) | vim-surround | +| `j` | Pretty print json (current open file) | | +| `D` | Add delimiters around current word (normal mode) | vim-surround | +| `q` | Format a paragraph/line to better fit the textwidth | | +| `p` | Toggle paste mode | | +| `S)` | Add delimiters current selection | vim-surround | +| `cs` | Replace a character with anothere charcter (e.g. `cs"'`, or `cs'

`) | vim-surround | +| `ds` | Remove a delimiter | vim-surround | +| `ysiw]` | Add delimiters around current word | vim-surround | +| `yss)` | Add delimiters around entire line | vim-surround | + +### Navigation Related + +| Shortcut | Description | Plugin | +| ---------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | +| `%` | Find the end {}, [], or start/end tags (e.g. html) | Base, Matchit | +| `*` | Highlight all occurences of word under cursor (default in vim) | | +| `ff` | Display all occurences of word under cursor | | +| `cwd` | Change working dirctory to current file's | | +| `n` | Toggle NERDTree | NERDTree | +| `j` | Move to next linting error | ALE | +| `k` | Move to previous linting error | ALE | + +### Tabs and Windows Related + +| Shortcut | Description | Plugin | +| ---------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | +| `sh` | Split horizontally | | +| `sv` | Split vertically | | +| `t` | Tab Next | | +| `T` | Tab Previous | | +| `w` | cycle through split windows | | +| `<+>` | Resize horizontal pane (3/2) | | +| `<->` | Resize horizontal pane (2/3) | | +| `<<>` | Resize vertical pane (3/2) | | +| `<>>` | Resize vertical pane (2/3) | | + +### Misc Related + +| Shortcut | Description | Plugin | +| ---------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------- | +| `` | Reload vimrc file | | +| `w!!` | Attempt to sudo and write to file | | + diff --git a/dot_vim/after/ftplugin/gitcommit.vim b/dot_vim/after/ftplugin/gitcommit.vim new file mode 100644 index 0000000..8b38143 --- /dev/null +++ b/dot_vim/after/ftplugin/gitcommit.vim @@ -0,0 +1,4 @@ +setlocal colorcolumn=80 +setlocal textwidth=80 +setlocal spell +setlocal spelllang=en_us diff --git a/dot_vim/after/ftplugin/go.vim b/dot_vim/after/ftplugin/go.vim new file mode 100644 index 0000000..1622f89 --- /dev/null +++ b/dot_vim/after/ftplugin/go.vim @@ -0,0 +1,5 @@ +setlocal shiftwidth=4 +setlocal softtabstop=4 +setlocal tabstop=4 +setlocal foldmethod=indent +setlocal colorcolumn=79 diff --git a/dot_vim/after/ftplugin/json.vim b/dot_vim/after/ftplugin/json.vim new file mode 100644 index 0000000..0c5222d --- /dev/null +++ b/dot_vim/after/ftplugin/json.vim @@ -0,0 +1,4 @@ +setlocal shiftwidth=2 +setlocal softtabstop=2 +setlocal tabstop=2 +setlocal foldmethod=indent diff --git a/dot_vim/after/ftplugin/make.vim b/dot_vim/after/ftplugin/make.vim new file mode 100644 index 0000000..e7fc84c --- /dev/null +++ b/dot_vim/after/ftplugin/make.vim @@ -0,0 +1,2 @@ +" Do not expand tabs into spaces for 'make' files. 'make' files MUST use tabs +setlocal noexpandtab diff --git a/dot_vim/after/ftplugin/markdown.vim b/dot_vim/after/ftplugin/markdown.vim new file mode 100644 index 0000000..863fd55 --- /dev/null +++ b/dot_vim/after/ftplugin/markdown.vim @@ -0,0 +1,2 @@ +setlocal colorcolumn=80 +setlocal foldmethod=manual diff --git a/dot_vim/after/ftplugin/php.vim b/dot_vim/after/ftplugin/php.vim new file mode 100644 index 0000000..f68581e --- /dev/null +++ b/dot_vim/after/ftplugin/php.vim @@ -0,0 +1,2 @@ +setlocal foldmethod=marker +setlocal wrapmargin=0 diff --git a/dot_vim/after/ftplugin/yaml.vim b/dot_vim/after/ftplugin/yaml.vim new file mode 100644 index 0000000..0c5222d --- /dev/null +++ b/dot_vim/after/ftplugin/yaml.vim @@ -0,0 +1,4 @@ +setlocal shiftwidth=2 +setlocal softtabstop=2 +setlocal tabstop=2 +setlocal foldmethod=indent diff --git a/dot_vim/autoload/pathogen.vim b/dot_vim/autoload/pathogen.vim new file mode 100644 index 0000000..3582fbf --- /dev/null +++ b/dot_vim/autoload/pathogen.vim @@ -0,0 +1,264 @@ +" pathogen.vim - path option manipulation +" Maintainer: Tim Pope +" Version: 2.4 + +" Install in ~/.vim/autoload (or ~\vimfiles\autoload). +" +" For management of individually installed plugins in ~/.vim/bundle (or +" ~\vimfiles\bundle), adding `execute pathogen#infect()` to the top of your +" .vimrc is the only other setup necessary. +" +" The API is documented inline below. + +if exists("g:loaded_pathogen") || &cp + finish +endif +let g:loaded_pathogen = 1 + +" Point of entry for basic default usage. Give a relative path to invoke +" pathogen#interpose() or an absolute path to invoke pathogen#surround(). +" Curly braces are expanded with pathogen#expand(): "bundle/{}" finds all +" subdirectories inside "bundle" inside all directories in the runtime path. +" If no arguments are given, defaults "bundle/{}", and also "pack/{}/start/{}" +" on versions of Vim without native package support. +function! pathogen#infect(...) abort + if a:0 + let paths = filter(reverse(copy(a:000)), 'type(v:val) == type("")') + else + let paths = ['bundle/{}', 'pack/{}/start/{}'] + endif + if has('packages') + call filter(paths, 'v:val !~# "^pack/[^/]*/start/[^/]*$"') + endif + let static = '^\%([$~\\/]\|\w:[\\/]\)[^{}*]*$' + for path in filter(copy(paths), 'v:val =~# static') + call pathogen#surround(path) + endfor + for path in filter(copy(paths), 'v:val !~# static') + if path =~# '^\%([$~\\/]\|\w:[\\/]\)' + call pathogen#surround(path) + else + call pathogen#interpose(path) + endif + endfor + call pathogen#cycle_filetype() + if pathogen#is_disabled($MYVIMRC) + return 'finish' + endif + return '' +endfunction + +" Split a path into a list. +function! pathogen#split(path) abort + if type(a:path) == type([]) | return a:path | endif + if empty(a:path) | return [] | endif + let split = split(a:path,'\\\@]','\\&','') + endif +endfunction + +" Like findfile(), but hardcoded to use the runtimepath. +function! pathogen#runtime_findfile(file,count) abort + let rtp = pathogen#join(1,pathogen#split(&rtp)) + let file = findfile(a:file,rtp,a:count) + if file ==# '' + return '' + else + return fnamemodify(file,':p') + endif +endfunction + +" vim:set et sw=2 foldmethod=expr foldexpr=getline(v\:lnum)=~'^\"\ Section\:'?'>1'\:getline(v\:lnum)=~#'^fu'?'a1'\:getline(v\:lnum)=~#'^endf'?'s1'\:'=': diff --git a/dot_vim/bundle/gruvbox b/dot_vim/bundle/gruvbox new file mode 160000 index 0000000..bf2885a --- /dev/null +++ b/dot_vim/bundle/gruvbox @@ -0,0 +1 @@ +Subproject commit bf2885a95efdad7bd5e4794dd0213917770d79b7 diff --git a/dot_vim/bundle/indentLine b/dot_vim/bundle/indentLine new file mode 160000 index 0000000..5617a1c --- /dev/null +++ b/dot_vim/bundle/indentLine @@ -0,0 +1 @@ +Subproject commit 5617a1cf7d315e6e6f84d825c85e3b669d220bfa diff --git a/dot_vim/bundle/lightline.vim b/dot_vim/bundle/lightline.vim new file mode 160000 index 0000000..b06d921 --- /dev/null +++ b/dot_vim/bundle/lightline.vim @@ -0,0 +1 @@ +Subproject commit b06d921023cf6536bcbee5754071d122296e8942 diff --git a/dot_vim/bundle/nerdcommenter b/dot_vim/bundle/nerdcommenter new file mode 160000 index 0000000..a65465d --- /dev/null +++ b/dot_vim/bundle/nerdcommenter @@ -0,0 +1 @@ +Subproject commit a65465d321f2f8a74b2ffa540b9b87563f7e12e8 diff --git a/dot_vim/bundle/nerdtree b/dot_vim/bundle/nerdtree new file mode 160000 index 0000000..e5f24e2 --- /dev/null +++ b/dot_vim/bundle/nerdtree @@ -0,0 +1 @@ +Subproject commit e5f24e2b8bc09ce6fc3488215d69ddb7cadc5f8d diff --git a/dot_vim/bundle/python-syntax b/dot_vim/bundle/python-syntax new file mode 160000 index 0000000..69760cb --- /dev/null +++ b/dot_vim/bundle/python-syntax @@ -0,0 +1 @@ +Subproject commit 69760cb3accce488cc072772ca918ac2cbf384ba diff --git a/dot_vim/bundle/tabular b/dot_vim/bundle/tabular new file mode 160000 index 0000000..339091a --- /dev/null +++ b/dot_vim/bundle/tabular @@ -0,0 +1 @@ +Subproject commit 339091ac4dd1f17e225fe7d57b48aff55f99b23a diff --git a/dot_vim/bundle/vim-indent-guides b/dot_vim/bundle/vim-indent-guides new file mode 160000 index 0000000..54d889a --- /dev/null +++ b/dot_vim/bundle/vim-indent-guides @@ -0,0 +1 @@ +Subproject commit 54d889a63716ee2f1818aa2ec5082db47147147b diff --git a/dot_vim/bundle/vim-markdown-toc b/dot_vim/bundle/vim-markdown-toc new file mode 160000 index 0000000..b7bb6c3 --- /dev/null +++ b/dot_vim/bundle/vim-markdown-toc @@ -0,0 +1 @@ +Subproject commit b7bb6c37033d3a6c93906af48dc0e689bd948638 diff --git a/dot_vim/bundle/vim-rainbow b/dot_vim/bundle/vim-rainbow new file mode 160000 index 0000000..a6c7fd5 --- /dev/null +++ b/dot_vim/bundle/vim-rainbow @@ -0,0 +1 @@ +Subproject commit a6c7fd5a2b0193b5dbd03f62ad820b521dea3290 diff --git a/dot_vim/bundle/vim-surround b/dot_vim/bundle/vim-surround new file mode 160000 index 0000000..f51a26d --- /dev/null +++ b/dot_vim/bundle/vim-surround @@ -0,0 +1 @@ +Subproject commit f51a26d3710629d031806305b6c8727189cd1935 diff --git a/dot_vim/pack/dist/opt/vim-matchit b/dot_vim/pack/dist/opt/vim-matchit new file mode 160000 index 0000000..d297e64 --- /dev/null +++ b/dot_vim/pack/dist/opt/vim-matchit @@ -0,0 +1 @@ +Subproject commit d297e643627fe996f909c5e86e450ac04d17e93d diff --git a/dot_vim/pack/git-plugins/start/ale b/dot_vim/pack/git-plugins/start/ale new file mode 160000 index 0000000..c5c58f5 --- /dev/null +++ b/dot_vim/pack/git-plugins/start/ale @@ -0,0 +1 @@ +Subproject commit c5c58f5bf82bf1cd6782d66e08d22af41de8e8f7 diff --git a/dot_vim/vimrc b/dot_vim/vimrc new file mode 100644 index 0000000..40de139 --- /dev/null +++ b/dot_vim/vimrc @@ -0,0 +1,288 @@ +"""""""" +" If error when loading about 'Unknown Command: ^M', run the following: +" :w ++ff=unix +"""""""" + +" 01 - General + filetype plugin on " Enable filetype-specific plugins + + set foldenable " Fold by default + set foldmethod=indent + set foldlevel=2 " Default fold levelss to leave open + set modelines=0 " Dont need modelines and the potential security hazard + + "set mouse=a " Automatically enable mouse usage + "set mousehide " Hide the mouse cursor while typing + set encoding=utf-8 + + set history=300 " Default is 20 + set undolevels=300 + + set backspace=indent,eol,start " Make backspace act like most other applications + + let g:netrw_dirhistmax=0 " Do not create the network history files + let mapleader = "," " Leader key (default: \) + +" 02 - Plugin/Bundle Related + packadd! matchit + packloadall " Load plugins (for utilizing ~/.vim/pack loading in vim 8+) + + " ALE - Asynchronous Line Engine + nmap k (ale_previous_wrap) + nmap j (ale_next_wrap) + + let g:airline#extensions#ale#enabled = 1 + let g:ale_echo_msg_error_str = 'E' + let g:ale_echo_msg_warning_str = 'W' + let g:ale_echo_msg_format = '[%linter%] %s [%severity%]' + + function! LinterStatus() abort + " Display all errors as one figure, and all non-errors as another figure + let l:counts = ale#statusline#Count(bufnr('')) + + let l:all_errors = l:counts.error + l:counts.style_error + let l:all_non_errors = l:counts.total - l:all_errors + + return l:counts.total == 0 ? 'OK' : printf( + \ '%dW %dE', + \ all_non_errors, + \ all_errors + \) + endfunction + + set statusline=%{LinterStatus()} + + " Pathogen + execute pathogen#infect() + call pathogen#helptags() " generate helptags for everything in ‘runtimepath’ + + " Python Syntax + let g:python_highlight_all = 1 + + " Plugin - indentLine + let g:indentLine_enabled = 0 " Disable by default (messes with syntax highlighting) + + " Plugin - lightline + if isdirectory(expand("~/.vim/bundle/lightline.vim")) + let g:lightline = { + \ 'active': { + \ 'left': [ [ 'mode', 'paste' ], + \ [ 'readonly', 'filename', 'modified', 'charvaluehex' ] ] + \ }, + \ 'component': { + \ 'charvaluehex': '0x%B' + \ }, + \ } + endif + + " Plugin - NERDCommenter + let g:NERDSpaceDelims = 1 " Add spaces after comment delimiters by default + map - NERDCommenterToggle + map _ NERDCommenterUncomment + + " Plugin - NERDTree related + if isdirectory(expand("~/.vim/bundle/nerdtree")) + " Open NERDTree when opening nothing (just vim) + "autocmd StdinReadPre * let s:std_in=1 + "autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif + + " Open NERDTree when opening directory + autocmd StdinReadPre * let s:std_in=1 + autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif + + map n :NERDTreeToggle + + let NERDTreeShowBookmarks=1 + let NERDTreeIgnore=['\\.pyc', '\\\~$', '\\.swo$', '\\.swp$', '\\.git', '\\.hg', '\\.svn', '\\.bzr'] + endif + + " Plugin - Tabular + if isdirectory(expand("~/.vim/bundle/tabular")) + nmap a& :Tab /& + vmap a& :Tab /& + nmap a# :Tab /# + vmap a# :Tab /# + nmap a= :Tab /^[^=]*\zs= + vmap a= :Tab /^[^=]*\zs= + nmap a=> :Tab /=> + vmap a=> :Tab /=> + nmap a: :Tab /: + vmap a: :Tab /: + nmap a:: :Tab /:\zs + vmap a:: :Tab /:\zs + nmap a, :Tab /, + vmap a, :Tab /, + nmap a,, :Tab /,\zs + vmap a,, :Tab /,\zs + nmap a :Tab / + vmap a :Tab / + endif + + " Plugin - vim-rainbow + let g:rainbow_active = 1 + + " Plugin - vim-surround + " This allows for surrounding test with something + " Note: In the following, [ will add a space around text, ] will not (e.g. [ TEST ] vs [TEST]) + " Examples: + " cs"' " Replace double quotes with single on the current line + " cs' " Replace single quote with

tagging + " ds" " Remove a delimeter (double quotes) + " ysiw] " Add delimeters around current work + " yss) " Add delimeters around entire line + " S( " Add delimeters around current selected line (Shift+V) + " + + silent! helptags ALL " Load all helptags after plugins loaded, all messages and errors are ignored + +" 03 - VIM UI + syntax on " Enable syntax highlighting + match ErrorMsg '\s\+$' " Highlight spaces (makes it obvious when trailing) + + " Theme - PaperColor + let g:PaperColor_Theme_Options = { + \ 'theme': { + \ 'default.dark': { + \ 'override' : { + \ 'folded_fg' : ['#34FB42', ''], + \ 'folded_bg' : ['#686868', ''], + \ } + \ } + \ } + \ } + "\ 'folded_fg' : ['#3B1317', ''], + " 'folded_bg' : ['#009494', ''], + + colorscheme gruvbox + set background=dark + set cul " Highlight the current line + set ignorecase " Case insensitive search + set smartcase " If a capital lever is included in search, make it case-sensitive + set incsearch " Show matches as you type + set hlsearch " Highlight search results + set laststatus=2 " 0 to never show status line, 1 means only if >1 windows, 2 means always + set number " Enable line numbers + set ruler " Enable the ruler + set scrolljump=5 " Lines to scroll when cursor leaves screen + set scrolloff=3 " Always show two lines around the cursor when scrolling + set noerrorbells + set noerrorbells " Don't sound warning on error + set visualbell " Don't blink on error + set t_vb= " Disable visual blink + + " Allow for transparent consoles + hi Normal guibg=NONE ctermbg=NONE + hi NonText ctermbg=NONE + + set wildmenu " visual autocomplete for command menu (below settings ignore this option for certain file types) + set wildmode=list:longest,full " Command completion, list matches, then longest common part, then all. + set wildignore+=*.o,*.obj,.git,*.rbc,*.class,.svn,vendor/gems/*,*.bak,*.exe + set wildignore+=*.pyc,*.DS_Store,*.db + + function! ToggleBG() + let s:tbg = &background + if s:tbg == "dark" + set background=light + else + set background=dark + endif + endfunction + +" 04 - Formatting Layout + set autoindent " Use indent of previous line after hitting enter to create a new line + set copyindent " Copy the previous indentation on autoindenting + set expandtab " Change tabs to spaces + set shiftround " use multiple of shiftwidth when indenting with '<' and '>' + set smarttab " Insert tabs on the start of a line according to shiftwidth, not tabstop + set shiftwidth=4 " Number of spaces to use for autoindenting + set softtabstop=4 " Let backspace delete indent + set tabstop=4 " A tab is x spaces + set textwidth=0 + set wrapmargin=0 + +" 05 - Keybindings + " Modes - Prefex of map and remap (ie modes 'n' and 'o' for nomap) + " * n: normal only + " * v: visual and select + " * o: operator-pending + " * x: visual only + " * s: select only + " * i: insert + " * c: command-line + " * l: insert, command-line, regexp-search (and others. Collectively called 'Lang-Arg' pseudo-mode) + + " Don't remap the numpad + inoremap Oq 1 + inoremap Or 2 + inoremap Os 3 + inoremap Ot 4 + inoremap Ou 5 + inoremap Ov 6 + inoremap Ow 7 + inoremap Ox 8 + inoremap Oy 9 + inoremap Op 0 + inoremap On . + inoremap OQ / + inoremap OR * + inoremap Ol + + inoremap OS - + inoremap OM + + cmap cwd lcd %:p:h " change working directory to current file + + nnoremap j gj " Move to next line (not remapped line from wordwrap) + nnoremap k gk " Move to previous line (not remapped line from wordwrap) + vnoremap Q gq " Word wrap visually highlighted line + nnoremap Q gqap " Word wrap line + vnoremap < >gv " Retain visual selection when outdenting + nnoremap n nzzzv " Keep next search result in middle of view + nnoremap N Nzzzv " Keey previous search results in middle of view + + " Map f to toggle folds + " If in visual mode, will create a fold + " If capital F, will toggle ALL folds below cursor + inoremap f za + nnoremap f za + nnoremap F zA + onoremap f za + vnoremap f zf + + nnoremap + :exe "resize " . (winheight(0) * 3/2) + nnoremap - :exe "resize " . (winheight(0) * 2/3) + nnoremap > :exe "vertical resize " . (winwidth(0) * 3/2) + nnoremap < :exe "vertical resize " . (winwidth(0) * 2/3) + + nnoremap :%s/\s\+$//:let @/='' " Remove trailing whitespace on lines + nnoremap :set invwrap wrap? " Toggle wordwrap + nnoremap :source $MYVIMRC " Reload .vimrc file + + noremap bg :call ToggleBG() " Toggle dark/light colors + nnoremap q gwip " format paragraph + nmap h :nohl " Toggle search hilight + nmap p :set paste! " Toggle paste mode + nmap sh :split " Split window horizontally + nmap sv :vsplit " Split window veritcally + nmap i :IndentLinesToggle " Toggle indent guides + nmap t :tabn " Next tab + nmap T :tabp " Previous tab + nmap w w " Cycle through splits + nnoremap j :%!python -m json.tool " Pretty print json + + cmap w!! w !sudo tee % >/dev/null " When you forget to sudo first + + " Display all occurences of word under cursor and allow quick navigation + nmap ff [I:let nr = input("Which one: ")exe "normal " . nr ."[\t" + + " Wrap line and word with delimiter (follow with [ similar delimiter) + nmap d yss + nmap D ysiw + " Wrap selection with delimiter + xmap d S + +" 06 - Auto Commands + autocmd BufNewFile,BufRead *.markdown,*.md set filetype=markdown + autocmd BufRead,BufNewFile *.go setfiletype go + + "autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand(''), '/\')) " highlight all occurences of word under cursor (* does this as well) diff --git a/dot_zsh/README.md b/dot_zsh/README.md new file mode 100644 index 0000000..c8cfb44 --- /dev/null +++ b/dot_zsh/README.md @@ -0,0 +1,83 @@ +# ZSH + +## Table of Contents + + + +* [Aliases](#aliases) +* [Functions](#functions) +* [Customizations - ~/.zshrc.local](#customizations---zshrclocal) + * [Useful Examples](#useful-examples) + + + +## Aliases + +| Alias | Command | Description | +| --------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------- | +| ` ` | ` -i ` | Require confirmation when overwriting | +| `ch ` | `ch --preserve-root ` | Don't allow modifying / | +| `ff` | `find . -name $1` | Quick find with ff and the pattern | +| `gitlog` | | Provide an easy method for view git commit logs | +| `grep ` | `grep --color=always` | Ensure color is enabled | +| `mkdir ` | `mkdir -p ` | Always create the full path if it doesn't exit | +| `mountt` | `mount [pipe] columnt -t` | Better display of mount, with columns | +| `ports` | `netstat -tulanp` | Provide a list of open ports | +| `rm ` | `rm -I --preserve-root ` | Don't allow removing / and require confirmation when deleting more then 3 files | +| `tmux` | `tmux -2` | Forcing 256 color mode for tmux | +| `prettyjson ` | `python -m json.tool ` | Pretty printing of json | + +## Functions + +| Function | Example | Description | +| -------------- | -------------------------------------- | ---------------------------------------------------------------------------- | +| `calc` | `calc "3*3"` | Run a quick calculation | +| `curl_json` | `curl_json https://something.com/json` | Download and prettyprint JSON | +| `extract` | `extract archive.zip` | Extract various types of archives (tgz, zip, etc) | +| `fix` | `fix` | Fix the current terminal after cating a binary file | +| `man` | `man ` | Set colors for man | +| `mktmpdir` | `mktmpdir [name]` | Uses mktmp to make a dir and cd into (add name for /tmp/.XXXXXXX name) | +| `prettyjson` | `prettyjson ` | Pretty print json file | +| `prettyjson_s` | `prettyjson ""` | Pretty print json string | +| `server` | `server [port]` | Start a simple http server in the current dir (optional port) | +| `systemload` | `systemload` | Display the current system load | + +## Customizations - ~/.zshrc.local + +Source File: ~/.zshrc.local + +| Variable | Default | Example | Description | +| ------------------------- | ------- | ----------------------------------- | -------------------------------------------------------------------- | +| LS_COLORS_THEME | simple | `export LS_COLORS_THEME='complex'` | Allows multiple ls colors themes (only simple and complex currently) | +| PROMPT_POST | | `export PROMPT_POST=' :-)'` | Adds some text or information after the ZSH shell prompt | +| PROMPT_PRE | | `export PROMPT_PRE=':-) '` | Adds some text or information before the ZSH shell prompt | + +### Useful Examples + +The following will add a warning when you've dropped to shell from VIM. This makes it obvious when you should or shouldn't exit out, thinking you're in a VIM shell. + +``` +if [ ! -z "${VIMRUNTIME}" ]; then + PROMPT_PRE="%F{yellow}[VIM SHELL] " +fi +``` + + +The following allows for encrypting decrypting a file using yubikey +``` +export KEYID=0x123A4E56789AB123 + +yubiencrypt () { + default=~/"${1}".$(date +%s).enc + output="${2:-$default}" + gpg --encrypt --armor --output ${output} -r "${KEYID}" "${1}" && echo "${1} -> ${output}" +} + +yubidecrypt () { + # Must use full path for some reason + default=$(echo "${1}" | rev | cut -c16- | rev) + output="${2:-$default}" + gpg --decrypt --output "${output}" "${1}" && echo "${1} -> ${output}" +} +``` + diff --git a/dot_zsh/configs/aliases.zsh b/dot_zsh/configs/aliases.zsh new file mode 100644 index 0000000..313875f --- /dev/null +++ b/dot_zsh/configs/aliases.zsh @@ -0,0 +1,59 @@ +# +# Suffix Aliases +# Open commands if running filetype (e.g. myfile.yml opens in vim) +# +alias -s {ini,md,txt,yml,yaml}=vim + + +# Non-BSD Aliases +# +if [ -x /usr/bin/dircolors ]; then + export COLUMNS # Remember columns for subprocesses. + alias grep='grep --color=auto' + alias fgrep='fgrep --color' + alias egrep='egrep --color' + alias ls='ls --color --time-style=long-iso --group-directories-first' +fi + + +# +# Various command defaults +# +alias cp='cp -i' # confirm on overwrite +alias ln='ln -i' # confirm on overwrite +alias mv='mv -i' # confirm on overwrite +alias mkdir='mkdir -p' +alias tmux='tmux -2' # ensure tmux is run in 256 color mode +alias wget='wget -c' # Resume wget by default +alias ip='ip -c' + +# Don't allow changing permissions on / +# Doesn't work for Mac or Freebsd distros +if [[ "$OSTYPE" == "linux-gnu"* ]]; then + alias rm='rm -I --preserve-root' # Don't allow removing / and require confirmation for more than 3 deletions + alias chgrp='chgrp --preserve-root' + alias chmod='chmod --preserve-root' + alias chown='chown --preserve-root' +fi + + +# +# Quick Commands +# +alias -g ll='ls -lAhF' +alias -g l='ls -lhF' +alias -g ff='find . -name $1' +alias digga='dig +nocmd any +multiline +noall +answer' +alias ipbrief='ip -c -br a' +alias tm='tmux attach || tmux new' # attach tmux or start a new session if no sessions +alias gitlog='git log --graph --abbrev-commit --decorate --date=relative --format=format:"%C(bold red)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold blue)<%an>%C(reset)%C(bold yellow)%d%C(reset)" --all' +alias mountt='mount | column -t' # Make mount output easier to read +alias ports='netstat -tulanp' + + +# +# Misc +# +alias :q='echo You are not editing a file, dummy.' +alias :wq=':q' +alias boss='while [ TRUE ]; do head -n 100 /dev/urandom; sleep .1; done | hexdump -C | grep "ca fe"' diff --git a/dot_zsh/configs/colors.zsh b/dot_zsh/configs/colors.zsh new file mode 100644 index 0000000..8f7bd08 --- /dev/null +++ b/dot_zsh/configs/colors.zsh @@ -0,0 +1,22 @@ +export CLICOLOR=1 # enable colored output from ls, etc. on FreeBSD-based systems + +if [ -x /usr/bin/dircolors ]; then + export GREP_COLOR='1;32' + LS_COLORS_AUDIO="38;5;218" + LS_COLORS_VIDEO="38;5;216" + LS_COLORS_ARCHIVE="38;5;204" + LS_COLORS_IMAGES="38;5;147" + LS_COLORS_DOCS="38;5;121" + export LS_COLORS="di=1;33:cd=38;5;225:or=30;48;5;202:ow=38;5;75:so=38;5;177:su=36;48;5;63:ex=38;5;156:mi=38;5;115:\ +*.tar=${LS_COLORS_ARCHIVE}:*.tgz=${LS_COLORS_ARCHIVE}:*.tbz2=${LS_COLORS_ARCHIVE}:*.zip=${LS_COLORS_ARCHIVE}:\ +*.7z=${LS_COLORS_ARCHIVE}:*.gz=${LS_COLORS_ARCHIVE}:*.bz2=${LS_COLORS_ARCHIVE}:*.rar=${LS_COLORS_ARCHIVE}:\ +*.jpg=${LS_COLORS_IMAGES}:*.jpeg=${LS_COLORS_IMAGES}:*.png=${LS_COLORS_IMAGES}:\ +*.mpg=${LS_COLORS_VIDEO}:*.avi=${LS_COLORS_VIDEO}:*.mov=${LS_COLORS_VIDEO}:*.wmv=${LS_COLORS_VIDEO}:*.mp4=${LS_COLORS_VIDEO}:*.mkv=${LS_COLORS_VIDEO}:\ +*.flac=${LS_COLORS_AUDIO}:*.mp3=${LS_COLORS_AUDIO}:\ +*.conf=${LS_COLORS_DOCS}:*.ini=${LS_COLORS_DOCS}:*.txt=${LS_COLORS_DOCS}:*.yml=${LS_COLORS_DOCS}:*yaml=${LS_COLORS_DOCS}:*.md=${LS_COLORS_DOCS}:\ +*.exe=38;5;156:*.bat=38;5;156:*.rpm=38;5;173:*.deb=38;5;173:*.dmg=38;5;173:*.iso=38;5;205:\ +*README=38;5;224" + +# export LS_COLORS='no=00:fi=00:di=01;33:ln=01;36:pi=33:so=01;35:bd=33;01:cd=33;01:or=01;05;37;41:mi=01;37;41:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:' + export LSCOLORS='ExGxFxdxCxDxDxcxcxxCxc' +fi diff --git a/dot_zsh/configs/editor.zsh b/dot_zsh/configs/editor.zsh new file mode 100644 index 0000000..4d6ef2a --- /dev/null +++ b/dot_zsh/configs/editor.zsh @@ -0,0 +1,2 @@ +export VISUAL=vim +export EDITOR=$VISUAL diff --git a/dot_zsh/configs/exports.zsh.tmpl b/dot_zsh/configs/exports.zsh.tmpl new file mode 100644 index 0000000..076fd8b --- /dev/null +++ b/dot_zsh/configs/exports.zsh.tmpl @@ -0,0 +1,6 @@ +export TMUX_PLUGIN_ENABLE="true" + +{{- if (ne .chezmoi.os "darwin") }} +export GIT_ASKPASS='/usr/bin/ksshaskpass' +export SSH_ASKPASS='/usr/bin/ksshaskpass' +{{- end }} diff --git a/dot_zsh/configs/history.zsh b/dot_zsh/configs/history.zsh new file mode 100644 index 0000000..74d0b02 --- /dev/null +++ b/dot_zsh/configs/history.zsh @@ -0,0 +1,14 @@ +setopt extended_history # Give timestamp and time to run in history file +setopt share_history # Share history between different shell instances +setopt inc_append_history # Add commands to history as entered, not at shell exit +setopt hist_ignore_all_dups # Ignore duplicates +setopt hist_find_no_dups # Ignore duplicates when searching +setopt hist_reduce_blanks # Hide blank lines +setopt hist_ignore_space # Ignore commands in history beginning with a space +setopt hist_expire_dups_first # Expire duplicate entries first +setopt hist_verify # Do not submit history searches before allowing for editing + +#HISTCONTRO=ignoreboth:erasedups # Ignore duplicates in the history and commands starting with space +HISTSIZE=10000 +SAVEHIST=10000 +HISTFILE=${ZDOTDIR:-$HOME}/.zsh_history diff --git a/dot_zsh/configs/keybindings.zsh.tmpl b/dot_zsh/configs/keybindings.zsh.tmpl new file mode 100644 index 0000000..8d680bf --- /dev/null +++ b/dot_zsh/configs/keybindings.zsh.tmpl @@ -0,0 +1,36 @@ +bindkey -v # vim bindings + +# Correct various commond binding issues +bindkey '\e[3~' delete-char + +# Home/End keys +bindkey '\e[1~' beginning-of-line +bindkey '\e[4~' end-of-line +bindkey '\e[H' beginning-of-line +bindkey '\e[F' end-of-line + +# Ctrl + arrow to go back/forward a word at a time in a command +bindkey '\e[1;5D' backward-word +bindkey '\e[1;5C' forward-word + +# +# Search history with partial completion +# +autoload -Uz up-line-or-beginning-search down-line-or-beginning-search +zle -N up-line-or-beginning-search +zle -N down-line-or-beginning-search + +{{ if (eq .chezmoi.os "darwin") }} + bindkey '^[[A' history-beginning-search-backward + bindkey '^[[B' history-beginning-search-forward +{{ else if (eq .chezmoi.os "linux") }} + [[ -n "${key[Control-Left]}" ]] && bindkey -- "${key[Control-Left]}" backward-word + [[ -n "${key[Control-Right]}" ]] && bindkey -- "${key[Control-Right]}" forward-word + [[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-beginning-search + [[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-beginning-search +{{- end }} + +bindkey '\e[A' up-line-or-beginning-search +bindkey '\e[B' down-line-or-beginning-search + +bindkey '^R' history-incremental-search-backward diff --git a/dot_zsh/configs/options.zsh b/dot_zsh/configs/options.zsh new file mode 100644 index 0000000..6e7e258 --- /dev/null +++ b/dot_zsh/configs/options.zsh @@ -0,0 +1,21 @@ +setopt NO_CASE_GLOB + +# Allow for suggesting corrections on mistyped commands/files +setopt CORRECT +setopt CORRECT_ALL + +setopt auto_list # Automatically list choices on ambiguous completion +setopt always_to_end # Move cursor to end if word had only 1 match +setopt auto_menu # Automatically use menu completion + +# AUTOCOMPLETION RELATED +# zstyles and settings should come BEFORE the compinit autoload +setopt autocd # cd if directory (e.g. forgot 'cd' in command) + +zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*' # Case insensitive completion +zstyle ':completion:*' list-suffixes
zstyle ':completion:*' expand prefix suffix
 # Partial/fragmented completion +zstyle ':completion:*' menu select # select completions with arrow keys +zstyle ':completion:*' group-name '' # group results by category +zstyle ':completion:::::' completer _expand _complete _ignored _approximate # enable approximate matches for completion + +autoload -Uz compinit && compinit diff --git a/dot_zsh/configs/post/path.zsh b/dot_zsh/configs/post/path.zsh new file mode 100644 index 0000000..2f9d789 --- /dev/null +++ b/dot_zsh/configs/post/path.zsh @@ -0,0 +1,4 @@ +# ensure dotfiles bin directory is loaded first +PATH="$HOME/.bin:$HOME/bin:/usr/local/sbin:$PATH" + +export -U PATH diff --git a/dot_zsh/functions/calc.zsh b/dot_zsh/functions/calc.zsh new file mode 100644 index 0000000..de459eb --- /dev/null +++ b/dot_zsh/functions/calc.zsh @@ -0,0 +1,3 @@ +function calc() { + awk "BEGIN{ print $* }" ; +} diff --git a/dot_zsh/functions/curl_json.zsh b/dot_zsh/functions/curl_json.zsh new file mode 100644 index 0000000..5e10449 --- /dev/null +++ b/dot_zsh/functions/curl_json.zsh @@ -0,0 +1,3 @@ +function curl_json() { + curl -s $1 | python -m json.tool +} diff --git a/dot_zsh/functions/extract.zsh b/dot_zsh/functions/extract.zsh new file mode 100644 index 0000000..f7397ea --- /dev/null +++ b/dot_zsh/functions/extract.zsh @@ -0,0 +1,32 @@ +# extract most file type automatically +function extract() { + if [ -z "$1" ]; then + # display usage if no parameters given + echo "Usage: extract ." + else + if [ -f $1 ] ; then + # NAME=${1%.*} + # mkdir $NAME && cd $NAME + case $1 in + *.tar.bz2) tar -xvjf $1 ;; + *.tar.gz) tar -xvzf $1 ;; + *.tar.xz) tar -xvJf $1 ;; + *.lzma) unlzma $1 ;; + *.bz2) bunzip2 $1 ;; + *.rar) unrar x -ad $1 ;; + *.gz) gunzip $1 ;; + *.tar) tar xvf $1 ;; + *.tbz2) tar xvjf $1 ;; + *.tgz) tar xvzf $1 ;; + *.zip) unzip $1 ;; + *.Z) uncompress $1 ;; + *.7z) 7z x $1 ;; + *.xz) unxz $1 ;; + *.exe) cabextract $1 ;; + *) echo "extract: '$1' - unknown archive method" ;; + esac + else + echo "$1 - file does not exist" + fi + fi +} diff --git a/dot_zsh/functions/fix.zsh b/dot_zsh/functions/fix.zsh new file mode 100644 index 0000000..7822017 --- /dev/null +++ b/dot_zsh/functions/fix.zsh @@ -0,0 +1,8 @@ +function fix(){ + # Reset terminal after cating binary file + reset; + stty sane; + tput rs1; + clear; + echo -e "\e[0m"; +} diff --git a/dot_zsh/functions/man.zsh b/dot_zsh/functions/man.zsh new file mode 100644 index 0000000..c0e9730 --- /dev/null +++ b/dot_zsh/functions/man.zsh @@ -0,0 +1,12 @@ +# Set colors for man +function man() { + env \ + LESS_TERMCAP_mb="$(printf '\e[1;31m')" \ + LESS_TERMCAP_md="$(printf '\e[1;31m')" \ + LESS_TERMCAP_me="$(printf '\e[0m')" \ + LESS_TERMCAP_se="$(printf '\e[0m')" \ + LESS_TERMCAP_so="$(printf '\e[1;44;33m')" \ + LESS_TERMCAP_ue="$(printf '\e[0m')" \ + LESS_TERMCAP_us="$(printf '\e[1;32m')" \ + man "$@" +} diff --git a/dot_zsh/functions/mktmpdir.zsh b/dot_zsh/functions/mktmpdir.zsh new file mode 100644 index 0000000..e4f5b39 --- /dev/null +++ b/dot_zsh/functions/mktmpdir.zsh @@ -0,0 +1,10 @@ +# Make a temporary directory and enter it +mktmpdir() { + local dir + if [ $# -eq 0 ]; then + dir=$(mktemp -d) + else + dir=$(mktemp -d -t "${1}.XXXXXXXXXX") + fi + cd "$dir" || exit +} diff --git a/dot_zsh/functions/prettyjson.zsh b/dot_zsh/functions/prettyjson.zsh new file mode 100644 index 0000000..bc57ad3 --- /dev/null +++ b/dot_zsh/functions/prettyjson.zsh @@ -0,0 +1,7 @@ +prettyjson_s() { + echo "$1" | python -m json.tool +} + +prettyjson() { + python3 -m json.tool "$1" +} diff --git a/dot_zsh/functions/server.zsh b/dot_zsh/functions/server.zsh new file mode 100644 index 0000000..963fa29 --- /dev/null +++ b/dot_zsh/functions/server.zsh @@ -0,0 +1,8 @@ +# Start an HTTP server from a directory, optionally specifying the port +function server() { + local port="${1:-8000}" + sleep 1 && open "http://localhost:${port}/" & + # Set the default Content-Type to `text/plain` instead of `application/octet-stream` + # And serve everything as UTF-8 (although not technically correct, this doesn’t break anything for binary files) + python -c $'import SimpleHTTPServer;\nmap = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map;\nmap[""] = "text/plain";\nfor key, value in map.items():\n\tmap[key] = value + ";charset=UTF-8";\nSimpleHTTPServer.test();' "$port" +} diff --git a/dot_zsh/functions/systemload.zsh b/dot_zsh/functions/systemload.zsh new file mode 100644 index 0000000..7a99e1c --- /dev/null +++ b/dot_zsh/functions/systemload.zsh @@ -0,0 +1,7 @@ +# Show current system load average and what the max load average is for your system (max = full system resource utilization) +function systemload() { + loadAverage=$(uptime | cut -d',' -f4 | grep -o "[0-9]*\.[0-9]*$") + processors=$(cat /proc/cpuinfo | grep processor | tail -n1 | awk '{ print $3 }') + let processors=$processors+1 + echo "$loadAverage ($processors.00 max)" +} diff --git a/dot_zsh/functions/yubikey.zsh b/dot_zsh/functions/yubikey.zsh new file mode 100644 index 0000000..fd1e15c --- /dev/null +++ b/dot_zsh/functions/yubikey.zsh @@ -0,0 +1,12 @@ +yubiencrypt () { + default=~/"${1}".$(date +%s).enc + output="${2:-$default}" + gpg --encrypt --armor --output ${output} -r "${KEYID}" "${1}" && echo "${1} -> ${output}" +} + +yubidecrypt () { + # Must use full path for some reason + default=$(echo "${1}" | rev | cut -c16- | rev) + output="${2:-$default}" + gpg --decrypt --output "${output}" "${1}" && echo "${1} -> ${output}" +} diff --git a/dot_zshenv b/dot_zshenv new file mode 100644 index 0000000..cf63b19 --- /dev/null +++ b/dot_zshenv @@ -0,0 +1,29 @@ +# Taken from https://github.com/thoughtbot/dotfiles/blob/master/zshenv + +local _old_path="$PATH" + +# Set local env file if exists +[[ -f ~/.zshenv.local ]] && source ~/.zshenv.local + +if [[ $PATH != $_old_path ]]; then + # `colors` isn't initialized yet, so define a few manually + typeset -AHg fg fg_bold + if [ -t 2 ]; then + fg[red]=$'\e[31m' + fg_bold[white]=$'\e[1;37m' + reset_color=$'\e[m' + else + fg[red]="" + fg_bold[white]="" + reset_color="" + fi + + cat <&2 +${fg[red]}Warning:${reset_color} your \`~/.zshenv.local' configuration seems to edit PATH entries. +Please move that configuration to \`.zshrc.local' like so: + ${fg_bold[white]}cat ~/.zshenv.local >> ~/.zshrc.local && rm ~/.zshenv.local${reset_color} +(called from ${(%):-%N:%i}) +MSG +fi + +unset _old_path diff --git a/dot_zshrc.tmpl b/dot_zshrc.tmpl new file mode 100644 index 0000000..02eb546 --- /dev/null +++ b/dot_zshrc.tmpl @@ -0,0 +1,60 @@ +# load custom executable functions +for function in ~/.zsh/functions/*; do + source $function +done + +# extra files in ~/.zsh/configs/pre , ~/.zsh/configs , and ~/.zsh/configs/post +# these are loaded first, second, and third, respectively. +_load_settings() { + _dir="$1" + if [ -d "$_dir" ]; then + if [ -d "$_dir/pre" ]; then + for config in "$_dir"/pre/**/*~*.zwc(N-.); do + . $config + done + fi + + for config in "$_dir"/**/*(N-.); do + case "$config" in + "$_dir"/(pre|post)/*|*.zwc) + : + ;; + *) + . $config + ;; + esac + done + + if [ -d "$_dir/post" ]; then + for config in "$_dir"/post/**/*~*.zwc(N-.); do + . $config + done + fi + fi +} +_load_settings "$HOME/.zsh/configs" + +declare -A hostname_colors + +# Load local override configs +[[ -f ~/.zshrc.local ]] && source ~/.zshrc.local + +# +# PROMPT +# I'd like to move this into it's own file but am having issues with the git branch extrapolating correctly +# +if [ ! -z "${VIMRUNTIME}" ]; then + PROMPT_PRE="%F{yellow}[VIM SHELL] " +fi + +HOSTNAME_COLOR="${HOSTNAME_COLOR:={{ .hostname_color }}}" +PROMPT="${PROMPT_PRE:=}%F{blue}%n%f@%F{$HOSTNAME_COLOR}%m%f:%F{cyan}%~%f [%F{214}%*%f] \$vcs_info_msg_0_%(?.%F{green}:).%F{red}:()%f"$' ${PROMPT_POST:=}\n'"|--%# " + +# The following is to configure git branch info +# Git branch appears on right side of prompt, where available +autoload -Uz vcs_info +precmd_vcs_info() { vcs_info } +precmd_functions+=( precmd_vcs_info ) +setopt prompt_subst +zstyle ':vcs_info:git:*' formats '%F{5}(%b)%f ' +zstyle ':vcs_info:*' enable git diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/arrow-repeat-all.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/arrow-repeat-all.svg new file mode 100644 index 0000000..04d35f3 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/arrow-repeat-all.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/arrow-sort-down-lines.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/arrow-sort-down-lines.svg new file mode 100644 index 0000000..c3efd48 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/arrow-sort-down-lines.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/arrow-swap.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/arrow-swap.svg new file mode 100644 index 0000000..3e9cd87 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/arrow-swap.svg @@ -0,0 +1,4 @@ + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/book-add.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/book-add.svg new file mode 100644 index 0000000..701f923 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/book-add.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/book.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/book.svg new file mode 100644 index 0000000..e60114d --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/book.svg @@ -0,0 +1,4 @@ + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/broom.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/broom.svg new file mode 100644 index 0000000..7428fad --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/broom.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/bug.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/bug.svg new file mode 100644 index 0000000..4ee7ba9 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/bug.svg @@ -0,0 +1,5 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/calendar-agenda.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/calendar-agenda.svg new file mode 100644 index 0000000..dd6470c --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/calendar-agenda.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/checkmark-circle.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/checkmark-circle.svg new file mode 100644 index 0000000..accc8e0 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/checkmark-circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/code.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/code.svg new file mode 100644 index 0000000..e9aa4fc --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/code.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/command-frames.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/command-frames.svg new file mode 100644 index 0000000..ceae757 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/command-frames.svg @@ -0,0 +1,6 @@ + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/command-responsivemode.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/command-responsivemode.svg new file mode 100644 index 0000000..66a4818 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/command-responsivemode.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/container-openin-16.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/container-openin-16.svg new file mode 100644 index 0000000..2ddadb3 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/container-openin-16.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/copy-select.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/copy-select.svg new file mode 100644 index 0000000..0d56800 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/copy-select.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/developer.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/developer.svg new file mode 100644 index 0000000..d02257d --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/developer.svg @@ -0,0 +1,6 @@ + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/document-landscape-split-hint.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/document-landscape-split-hint.svg new file mode 100644 index 0000000..fc9f621 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/document-landscape-split-hint.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/eye-hide.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/eye-hide.svg new file mode 100644 index 0000000..2b64e30 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/eye-hide.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/eye-show.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/eye-show.svg new file mode 100644 index 0000000..51e4fb5 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/eye-show.svg @@ -0,0 +1,4 @@ + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image-add.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image-add.svg new file mode 100644 index 0000000..871abf8 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image-add.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image-alt-text.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image-alt-text.svg new file mode 100644 index 0000000..f568344 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image-alt-text.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image-arrow-counterclockwise.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image-arrow-counterclockwise.svg new file mode 100644 index 0000000..782ff9c --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image-arrow-counterclockwise.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image-copy.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image-copy.svg new file mode 100644 index 0000000..795a283 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image-copy.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image.svg new file mode 100644 index 0000000..863c9d7 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/image.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/key-multiple.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/key-multiple.svg new file mode 100644 index 0000000..36f5121 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/key-multiple.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/link-square.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/link-square.svg new file mode 100644 index 0000000..36362fe --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/link-square.svg @@ -0,0 +1,4 @@ + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/movetowindow-16.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/movetowindow-16.svg new file mode 100644 index 0000000..80181a3 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/movetowindow-16.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/password-hide.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/password-hide.svg new file mode 100644 index 0000000..10e6271 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/password-hide.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/password.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/password.svg new file mode 100644 index 0000000..a485de7 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/password.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/paste.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/paste.svg new file mode 100644 index 0000000..339916a --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/paste.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/performance.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/performance.svg new file mode 100644 index 0000000..b5b4a79 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/performance.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/pin-tab.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/pin-tab.svg new file mode 100644 index 0000000..1f951a3 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/pin-tab.svg @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/play.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/play.svg new file mode 100644 index 0000000..756dcc2 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/play.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/quit.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/quit.svg new file mode 100644 index 0000000..6478b62 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/quit.svg @@ -0,0 +1,6 @@ + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/resize-image.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/resize-image.svg new file mode 100644 index 0000000..c68de66 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/resize-image.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/restore-session.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/restore-session.svg new file mode 100644 index 0000000..08e2b4e --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/restore-session.svg @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/screenshot.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/screenshot.svg new file mode 100644 index 0000000..1f27aa5 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/screenshot.svg @@ -0,0 +1,5 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/search-file.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/search-file.svg new file mode 100644 index 0000000..00688ff --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/search-file.svg @@ -0,0 +1,5 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/select-all-on.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/select-all-on.svg new file mode 100644 index 0000000..88c9496 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/select-all-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/send-to-device.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/send-to-device.svg new file mode 100644 index 0000000..cef1604 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/send-to-device.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/send.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/send.svg new file mode 100644 index 0000000..573ed55 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/send.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/share.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/share.svg new file mode 100644 index 0000000..a143388 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/share.svg @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/sign-out.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/sign-out.svg new file mode 100644 index 0000000..2e1bcab --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/sign-out.svg @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/star-line-horizontal.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/star-line-horizontal.svg new file mode 100644 index 0000000..734beba --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/star-line-horizontal.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab-bottom-corner-left.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab-bottom-corner-left.svg new file mode 100644 index 0000000..37bfa26 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab-bottom-corner-left.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab-bottom-corner-right.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab-bottom-corner-right.svg new file mode 100644 index 0000000..b443ef3 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab-bottom-corner-right.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab-copy.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab-copy.svg new file mode 100644 index 0000000..427332b --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab-copy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab-multiple.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab-multiple.svg new file mode 100644 index 0000000..f77d817 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab-multiple.svg @@ -0,0 +1,4 @@ + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab.svg new file mode 100644 index 0000000..1d13dd1 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/tab.svg @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/text-direction-horizontal-ltr.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/text-direction-horizontal-ltr.svg new file mode 100644 index 0000000..e5ad45e --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/text-direction-horizontal-ltr.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/text-number-format.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/text-number-format.svg new file mode 100644 index 0000000..fb4d19b --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/text-number-format.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/text-proofing-tools.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/text-proofing-tools.svg new file mode 100644 index 0000000..038e9e1 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/text-proofing-tools.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/text-sort-ascending.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/text-sort-ascending.svg new file mode 100644 index 0000000..d5613d1 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/text-sort-ascending.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/time-picker.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/time-picker.svg new file mode 100644 index 0000000..75cf3d4 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/time-picker.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/unpin-tab.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/unpin-tab.svg new file mode 100644 index 0000000..bd2b382 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/unpin-tab.svg @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/vertical-line.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/vertical-line.svg new file mode 100644 index 0000000..c8d4ad4 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/vertical-line.svg @@ -0,0 +1 @@ + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/video-clip.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/video-clip.svg new file mode 100644 index 0000000..8be8616 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/video-clip.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/video-snapshot.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/video-snapshot.svg new file mode 100644 index 0000000..be15181 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/video-snapshot.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/video.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/video.svg new file mode 100644 index 0000000..4cf7727 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/video.svg @@ -0,0 +1,3 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/webdeveloper.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/webdeveloper.svg new file mode 100644 index 0000000..b066ab4 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/webdeveloper.svg @@ -0,0 +1,5 @@ + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/window.svg b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/window.svg new file mode 100644 index 0000000..1c3e1b2 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/icons/window.svg @@ -0,0 +1,6 @@ + + + + diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/userChrome.css b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/userChrome.css new file mode 100644 index 0000000..711c7b5 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/chrome/userChrome.css @@ -0,0 +1,1706 @@ +/* + * Outline inactive tabs + * Added: 2021-06-02 89.0 + */ +@media (-moz-proton) { + /* Add darker border around tabs so more visiable */ + .tab-background:not([selected=true]):not([multiselected=true]) { + border: 1px solid rgba(0, 0, 0, .30) !important; + } + + /* Add color line to active tab */ + .tab-background:is([selected],[multiselected]) { + background: linear-gradient(var(--focus-outline-color), hsla(0, 0%, 90%, .2) 10%) !important; /* Gradiant */ + } +} +/* + */ + + +/* + * Based on Technetium (https://github.com/edo0/Technetium) + * Version: 2.1.1 + */ + +@media (-moz-proton) { + /** Darkmode - Color lighter ************************************************/ + :root[lwtheme-mozlightdark][lwthemetextcolor="bright"] { + --toolbar-bgcolor: rgba(43, 42, 51, 5) !important; /* Original: rgba(43, 42, 51, 1) */ + } + + /* Theme - Compatibility ****************************************************/ + /* Header Image */ + :root[lwtheme-image] { + background-image: var(--lwt-header-image) !important; /* Original: var(--lwt-header-image) */ + background-repeat: no-repeat !important; + background-position: right top !important; + } + :root[lwtheme-image] #navigator-toolbox:-moz-lwtheme { + background-image: var(--lwt-additional-images) !important; /* Original: var(--lwt-header-image), var(--lwt-additional-images); */ + background-repeat: var(--lwt-background-tiling) !important; + background-position: var(--lwt-background-alignment) !important; + background-color: unset !important; /* Original: var(--lwt-accent-color) */ + } + + /* Navbar Border */ + #navigator-toolbox:-moz-lwtheme { + --tabs-border-color: rgba(0,0,0,.3); + } + + /** Windows 7 - Compatibility ***********************************************/ + @media (-moz-os-version: windows-win7) { + /* Header Color */ + :root:not([lwtheme-image]) #navigator-toolbox:-moz-lwtheme { + background-color: var(--lwt-accent-color) !important; + } + #TabsToolbar:-moz-lwtheme { + color: var(--lwt-text-color) !important; + + /* Remove Aero */ + /* Original: radial-gradient(eclipse at bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.5) 80%, transparent) */ + background-image: unset !important; + } + } + + /** Windows System Default Theme - Use acccent color ************************/ + @media (-moz-windows-accent-color-in-titlebar) { + /* Tab Bar */ + :root[tabsintitlebar]:not(:-moz-window-inactive, :-moz-lwtheme) .titlebar-color, + :root[tabsintitlebar][lwt-default-theme-in-dark-mode]:not(:-moz-window-inactive) .titlebar-color { + color: -moz-accent-color-foreground; + background-color: -moz-accent-color; + } + + :root[tabsintitlebar]:not(:-moz-window-inactive, :-moz-lwtheme) .toolbar-items, + :root[tabsintitlebar][lwt-default-theme-in-dark-mode]:not(:-moz-window-inactive) .toolbar-items { + --toolbarbutton-icon-fill: -moz-accent-color-foreground; + --toolbarbutton-hover-background: color-mix(in srgb, -moz-accent-color-foreground 10%, transparent); + --toolbarbutton-active-background: color-mix(in srgb, -moz-accent-color-foreground 15%, transparent); + } + + /* URL Bar */ + :root[tabsintitlebar]:not(:-moz-window-inactive, :-moz-lwtheme), + :root[tabsintitlebar][lwt-default-theme-in-dark-mode]:not(:-moz-window-inactive) { + --focus-outline-color: -moz-accent-color !important; + } + + :root[tabsintitlebar]:not(:-moz-window-inactive, :-moz-lwtheme) #urlbar[open] > #urlbar-background, + :root[tabsintitlebar][lwt-default-theme-in-dark-mode]:not(:-moz-window-inactive) #urlbar[open] > #urlbar-background { + border-color: color-mix(in srgb, -moz-accent-color 50%, transparent) !important; /* Like: --toolbar-field-focus-border-color */ + } + } + + /** Reduce Padding **********************************************************/ + /*= Root - Reduce Padding ==================================================*/ + :root { + /* Tab Bar */ + --inline-tab-padding: 6px !important; /* Original: 8px */ + + /* Panel */ + --arrowpanel-menuicon-padding: 8px; + --arrowpanel-menuitem-margin: 0 var(--arrowpanel-menuicon-padding) !important; /* Original: 0 8px */ + --arrowpanel-menuitem-padding: 5px !important; /* Original: 8px */ + --arrowpanel-padding: 0.8em !important; /* Original: 16px or .cui-widget-panel, .cui-widget-panel::part(arrowcontent) => 4px 0 */ + } + + :root[uidensity=compact] { + /* Tool Bar */ + --toolbarbutton-outer-padding: 2px !important; /* Original: 3px, General is 2px */ + + /* Panel */ + --arrowpanel-menuitem-padding: 3px !important; /* Original: 8px */ + } + + :root[uidensity=touch] { + /* Tab Bar - Like Original */ + --proton-tab-block-margin: 4px !important; /* Original: 4px */ + --tab-block-margin: 4px !important; /* New version of --proton-tab-block-margin */ + --inline-tab-padding: 8px !important; /* Original: 8px */ + + /* Panel - Like Original */ + --arrowpanel-menuitem-padding: 8px !important; /* Original: 8px */ + } + + /*= Tab Bar - Reduce Width, Show more tabs =================================*/ + .titlebar-spacer[type="pre-tabs"] { + width: 30px !important; /* Original: 40px */ + } + .titlebar-spacer[type="post-tabs"] { + width: 25px !important; /* Original: 40px */ + } + + :root { + --newtab-button-minus-width-padding: 2px; + --newtab-button-width-padding: calc(var(--toolbarbutton-inner-padding) - var(--newtab-button-minus-width-padding)); + } + #new-tab-button > .toolbarbutton-icon, + #alltabs-button > .toolbarbutton-badge-stack { + /* Original: calc(2 * var(--toolbarbutton-inner-padding) + 16px) */ + width: calc(2 * var(--newtab-button-width-padding) + 16px) !important; + + /* Original: --toolbarbutton-inner-padding */ + padding-left: var(--newtab-button-width-padding) !important; + padding-right: var(--newtab-button-width-padding) !important; + } + + #tabbrowser-tabs[haspinnedtabs]:not([positionpinnedtabs]) > #tabbrowser-arrowscrollbox > .tabbrowser-tab[first-visible-unpinned-tab] { + margin-inline-start: 1px !important; + } + + :root:not([uidensity=touch]) #tabbrowser-arrowscrollbox { + --scrollbtn-inner-padding: 1px; + --scrollbtn-outer-padding: 3px; + } + #scrollbutton-up { + padding-left: var(--scrollbtn-inner-padding, 4px) !important; /* Original: 4px */ + padding-right: var(--scrollbtn-outer-padding, 4px) !important; + } + #scrollbutton-down { + padding-left: var(--scrollbtn-outer-padding, 4px) !important; /* Original: 4px */ + padding-right: var(--scrollbtn-inner-padding, 4px) !important; + } + + :root:not([uidensity=touch]) #new-tab-button, #alltabs-button { + --toolbarbutton-outer-padding: 1px; /* Original: 2px*/ + } + + /* Tab - Max Size */ + .tabbrowser-tab[fadein]:not([pinned]):not([style*="max-width"]) { + max-width: 225px !important; /* Lepton: 240px */ + } + + /* neighbouring tabs should "pinch" together */ + .tabbrowser-tab { + padding-inline: 1px !important; + } + + .tabbrowser-tab:not([last-visible-tab]) { + margin-inline-end: -.5px !important; + } + + /*= Tab Bar - Reduce Height, Show more contents ============================*/ + /* Toolbar Height */ + :root:not([uidensity=touch]) #TabsToolbar { + --toolbarbutton-inner-padding: 9px; /* Original: calc((var(--tab-min-height) - 16px) / 2) = 10px */ + } + + :root:not([uidensity]) #TabsToolbar { + --tab-min-height: 38px !important; + } + :root[uidensity=compact] #TabsToolbar { + --tab-min-height: 29px !important; + } + + /* Scroll Button - Size Fix */ + :root:not([uidensity=touch]) #tabbrowser-arrowscrollbox { + --scrollbtn-vertical-padding: 3px; + --scrollbtn-vertical-border: 2px; + --scrollbtn-border-radius: 7px; + } + #scrollbutton-up, + #scrollbutton-down { + /* Original: var(--toolbarbutton-inner-padding) calc(var(--toolbarbutton-inner-padding) - 6px) = 9px */ + /* https://github.com/mozilla/gecko-dev/blob/71b1259afd1cdaf41871ae675c2dadb967ea5b34/browser/themes/shared/toolbarbuttons.inc.css#L142 */ + padding-top: var(--scrollbtn-vertical-padding, var(--toolbarbutton-inner-padding)) !important; + padding-bottom: var(--scrollbtn-vertical-padding, var(--toolbarbutton-inner-padding)) !important; + + /* Original: 4px */ + border-top-width: var(--scrollbtn-vertical-border, 4px) !important; + border-bottom-width: var(--scrollbtn-vertical-border, 4px) !important; + /* Original: calc(var(--tab-border-radius) + 4px) = 8px */ + border-radius: var(--scrollbtn-border-radius, calc(var(--tab-border-radius) + 4px)) !important; + } + + :root[tabsintitlebar]:not([uidensity=compact]) #toolbar-menubar[autohide="true"] { + height: calc(var(--tab-min-height) - var(--tabs-navbar-shadow-size) - 2px); /* Compact: 28px, Normal: 33px, Touch: 38px */ + } + + /* Pinned Tab - Titlechanged Indicator position fix */ + :root:not([uidensity=touch]) .tabbrowser-tab:is([image], [pinned]) > .tab-stack > .tab-content[attention]:not([selected="true"]), + :root:not([uidensity=touch]) .tabbrowser-tab > .tab-stack > .tab-content[pinned][titlechanged]:not([selected="true"]) { + /* Original: center bottom calc(6.5px + var(--tabs-navbar-shadow-size)); */ + background-position-y: bottom calc(4.5px + var(--tabs-navbar-shadow-size)) !important; + } + :root[uidensity=compact] .tabbrowser-tab:is([image], [pinned]) > .tab-stack > .tab-content[attention]:not([selected="true"]), + :root[uidensity=compact] .tabbrowser-tab > .tab-stack > .tab-content[pinned][titlechanged]:not([selected="true"]) { + /* Original: center bottom calc(6.5px + var(--tabs-navbar-shadow-size)); */ + background-position-y: bottom calc(.5px + var(--tabs-navbar-shadow-size)) !important; + } + + /*= URL Bar - Reduce Padding ===============================================*/ + :root:not([uidensity=touch]) #urlbar-container, #search-container { + padding-block: 2px; /* Original: 4px */ + margin-inline: 5px; /* Original: 5px */ + } + + /* spread menu */ + :root[uidensity=compact] .urlbarView-row:not([type=tip], [type=dynamic]) { + padding-block: 1px; /* [Compact, General]: 2px, Touch: 11px */ + } + :root[uidensity=compact] #urlbar .search-one-offs:not([hidden]) { + padding-block: 2px; /* [Compact, General]: 4px, Touch 11px */ + } + + /*= BookMark Bar - Reduce Height ===========================================*/ + :root[uidensity=compact] #PersonalToolbar toolbarbutton { + margin-top: 0px; /* Original: 2px */ + } + + /*= Menu - Reduce Padding ==================================================*/ + :root { + --menu-padding: 0.35em; + } + :root[uidensity=compact] { + --menu-padding: 0.25em; + } + :root[uidensity=touch] { + --menu-padding: 0.5em; + } + menupopup > menuitem, menupopup > menu { + /* Original: 0.5em */ + padding-block: var(--menu-padding) !important; + } + + @supports not -moz-bool-pref("layout.css.osx-font-smoothing.enabled") { + :root:not([uidensity=touch]) .menu-text, .menu-iconic-text { + padding-inline-end: 0 !important; /* Original: 2px */ + } + :root:not([uidensity=touch]) .menupopup-arrowscrollbox { + padding-block: 1px !important; /* Original: 4px*/ + } + :root:not([uidensity=touch]) #context-navigation:not([hidden]) { + padding: 0 0 1px !important; /* Original: 0 0 4px*/ + } + :root:not([uidensity=touch]) .menu-right { + margin-right: 6px !important; /* Original: 12px */ + } + } + + /*= Popup Panel - Reduce padding ============================================*/ + #protections-popup-main-header-label { + height: unset !important; /* Original: 37.6px */ + } + + #identity-popup, + #permission-popup, + #protections-popup { + --vertical-section-padding: 0.8em; /* Original: 0.9em */ + } + + .protections-popup-footer-button, + .protections-popup-category { + min-height: 24px; /* Original: 32px */ + height: unset !important; + } + + /** Popup panel - Compact mode */ + /* Footer Button Height */ + :root[uidensity=compact] .panel-footer.panel-footer-menulike > button { + padding: 3px 8px !important; + } + /* Footer Button Height */ + :root[uidensity=compact] #protections-popup-trackersView-settings-button { + margin: 4px 8px 0 !important; + } + /* not cut off for Protection popup Footer on windows */ + :root[uidensity=compact] #protections-popup-multiView #protections-popup-footer { + padding: 3px 0 20px !important; + } + /* Button and disabed category in Protection popup */ + :root[uidensity=compact] #protections-popup-multiView .protections-popup-footer-button, + :root[uidensity=compact] #protections-popup-multiView .protections-popup-category { + height: 20px !important; + min-height: 20px !important; + } + /* Footer Button in Tracking Content Panel */ + :root[uidensity=compact] #protections-popup-multiView .panel-footer.panel-footer-menulike { + margin: 0 0 3px !important; + } + /* Identity popup header padding */ + :root[uidensity=compact] #identity-popup-multiView #identity-popup-mainView-panel-header { + padding: 2px 5px !important; + } + /* Text When There is no trackers */ + :root[uidensity=compact] #protections-popup-no-trackers-found-description { + margin: 2em 4em !important; + } + /* Download Item margin */ + :root[uidensity=compact] #downloadsListBox { + margin: 0 !important; + } + + /** Multi Selected Color - More Contrast ************************************/ + #tabbrowser-tabs:not([movingtab]) > #tabbrowser-arrowscrollbox > .tabbrowser-tab > .tab-stack > .tab-background[multiselected]:not([selected]):-moz-lwtheme { + background-image: linear-gradient(var(--toolbar-bgcolor, transparent), var(--toolbar-bgcolor, transparent)), + linear-gradient(var(--toolbar-bgcolor), var(--toolbar-bgcolor)), + var(--lwt-header-image, none) !important; + } + + .tab-background[multiselected="true"]:not([selected="true"]) > .tab-loading-burst:not([bursting]) { + background: color-mix(in srgb, currentColor 65%, transparent); + opacity: .3; + } + #TabsToolbar[brighttext] .tab-background[multiselected="true"]:not([selected="true"]) > .tab-loading-burst:not([bursting]) { + opacity: .15; + } + + .tab-background::before { + transform: translateX(-2.5px) translateY(calc(-50% + 1px)) !important; + } + .tabbrowser-tab[last-visible-tab] .tab-background::after { + right: 0; + transform: translateX(1.5px) translateY(calc(-50% + 1px)) !important; + } + + .tabbrowser-tab:is([visuallyselected], [multiselected], :hover) + .tabbrowser-tab:not([visuallyselected]) .tab-background::before, + .tabbrowser-tab[first-visible-unpinned-tab]:is([visuallyselected], [multiselected], :hover) .tab-background::before, + #tabbrowser-arrowscrollbox[overflowing] tab.tabbrowser-tab[first-visible-unpinned-tab] .tab-background::before { + opacity: 0 !important; + } + + /* Latest Tab & New tab margin */ + #tabbrowser-arrowscrollbox:not([overflowing]) .tabbrowser-tab[last-visible-tab] { + margin-inline-end: 1px !important; + } + + /* New tab button - Smaller button ******************************************/ + :root:not([uidensity=touch]) #tabs-newtab-button > .toolbarbutton-icon { + --toolbarbutton-inner-padding: calc((var(--tab-min-height) - 16px) / 2 - 1px); + } + + :root:not([uidensity=compact]) #tabs-newtab-button > .toolbarbutton-icon { + margin-left: 2px; + } + :root[uidensity=compact] #tabs-newtab-button > .toolbarbutton-icon { + margin-left: 1px; + } + + /** Clipped tabs - Letters cleary *******************************************/ + #tabbrowser-tabs[closebuttons=activetab] .tab-content:not([pinned]) { + padding-inline-start: 8px !important; + } + + #tabbrowser-tabs[closebuttons="activetab"] > #tabbrowser-arrowscrollbox > .tabbrowser-tab:not([pinned]) > .tab-stack > .tab-content > .tab-close-button:not([selected="true"]) { + display: -moz-inline-box !important; + } + + #tabbrowser-tabs[closebuttons=activetab] .tabbrowser-tab:not([visuallyselected], :hover) .tab-close-button { + visibility: collapse !important; + } + + #tabbrowser-tabs[closebuttons=activetab] .tab-label-container[textoverflow][labeldirection="ltr"]:not([pinned]), + #tabbrowser-tabs[closebuttons=activetab] .tab-label-container[textoverflow]:not([labeldirection]):-moz-locale-dir(ltr):not([pinned]) { + mask-image: linear-gradient(to right, black 70%, transparent) !important; + } + + #tabbrowser-tabs[closebuttons=activetab] .tab-label-container[textoverflow][labeldirection="rtl"]:not([pinned]), + #tabbrowser-tabs[closebuttons=activetab] .tab-label-container[textoverflow]:not([labeldirection]):-moz-locale-dir(rtl):not([pinned]) { + mask-image: linear-gradient(to left, black 70%, transparent) !important; + } + + /** Sound Tab - Hide Label **************************************************/ + .tab-secondary-label:is([soundplaying], [muted], [activemedia-blocked], [pictureinpicture]){ + display: none !important; + } + + /** Sound Tab - Show with Favicons ******************************************/ + /* Makes the favicons always visible (also on hover) */ + .tab-icon-image:not([pinned]){ + opacity: 1 !important + } + + /* Makes the speaker icon to always appear if the tab is playing (not only on hover) */ + .tab-icon-overlay:not([crashed]), + .tab-icon-overlay[pinned][crashed][selected] { + /* Position */ + top: -3.5px !important; + inset-inline-end: -9px !important; + z-index: 1 !important; + + /* Shape */ + padding: 1.5px !important; + border-radius: 10px !important; + width: 17px !important; + height: 17px !important; + } + .tab-icon-overlay:not([sharing], [crashed]):is([soundplaying], [muted], [activemedia-blocked]) { + /* Color */ + color: currentColor !important; + stroke: transparent !important; + background: transparent !important; + fill-opacity: 0.8 !important; + opacity: 1 !important; + } + .tab-icon-overlay:not([pinned], [sharing], [crashed]):is([soundplaying], [muted], [activemedia-blocked]) { + margin-inline-end: 9.5px !important; + } + + /* None exist favicon */ + .tabbrowser-tab:not([image]) .tab-icon-overlay:not([pinned], [sharing],[crashed]) { + top: 0 !important; + inset-inline-end: 0 !important; + margin-inline-end: 5.5px !important; + padding: 2px 0 !important; + } + + /* Busy - Show */ + .tab-throbber[busy], .tab-icon-pending[busy] { + opacity: 1 !important; + } + + /* Busy - Overlay Position */ + .tabbrowser-tab:not([pinned])[busy] .tab-icon-overlay:is([soundplaying], [muted], [activemedia-blocked]) { + transform: translateX(-.5px) translateY(-2.5px); + } + .tabbrowser-tab:not([image]) .tab-icon-overlay:not([pinned], [sharing],[crashed])[busy] { + top: -3.5px !important; + inset-inline-end: -9px !important; + margin-inline-end: 9.5px !important; + padding: 1.5px !important; + } + + /* Hover */ + .tab-icon-overlay:not([crashed])[soundplaying]:hover, + .tab-icon-overlay:not([crashed])[muted]:hover, + .tab-icon-overlay:not([crashed])[activemedia-blocked]:hover { + color: var(--toolbar-bgcolor, white) !important; + stroke: var(--lwt-tab-text, var(--toolbar-color)) !important; + background-color: var(--lwt-tab-text, var(--toolbar-color)) !important; + fill-opacity: 0.95 !important; + } + + #TabsToolbar[brighttext] .tab-icon-overlay:not([crashed])[soundplaying]:hover, + #TabsToolbar[brighttext] .tab-icon-overlay:not([crashed])[muted]:hover, + #TabsToolbar[brighttext] .tab-icon-overlay:not([crashed])[activemedia-blocked]:hover { + color: var(--toolbar-bgcolor, black) !important; + } + + .tabbrowser-tab:not([image]) .tab-icon-overlay:not([pinned], [sharing],[crashed]):hover { + padding: 0 !important; + } + + /** PictureInPicture Tab - Show PIP Icon ************************************/ + .tab-icon-sound[pictureinpicture]:not([pinned]) { + /* Shape */ + display: -moz-inline-box !important; + width: 14px; + height: 14px; + -moz-box-ordinal-group: 2 !important; + + /* Color */ + fill: currentColor; + opacity: 0.8; + -moz-context-properties: fill; + + /* Icon */ + list-style-image: url(chrome://global/skin/media/picture-in-picture-open.svg); + } + .tab-icon-sound[pictureinpicture]:not([pinned])[selected] { + opacity: 0.95; + } + + .tabbrowser-tab[pictureinpicture]:not([pinned]):hover .tab-close-button { + margin-left: 0px !important; + } + + /** Container Tab - Color line at icon's bottom *****************************/ + .tab-context-line { + display: none; + } + + .tab-icon-image { + box-sizing: content-box; + padding: 3px 0; + + border-bottom: 2px solid var(--identity-icon-color); + } + + /* None exist favicon - With Sound */ + .tabbrowser-tab:not([image]) .tab-icon-overlay:not([pinned], [sharing], [crashed]):is([soundplaying], [muted], [activemedia-blocked]) { + box-sizing: content-box; + padding: 3px 0; + + border-radius: 0 !important; + border-bottom: 2px solid var(--identity-icon-color); + } + .tabbrowser-tab:not([image]) .tab-icon-overlay:not([pinned], [sharing], [crashed]):is([soundplaying], [muted], [activemedia-blocked]):hover { + padding: 0; + + border-radius: 10px !important; + border-bottom: none; + } + + /* Pinned Tab - Titlechanged Indicator override */ + .tabbrowser-tab:is([image], [pinned]) > .tab-stack > .tab-content[attention]:not([selected="true"]) .tab-icon-image, + .tabbrowser-tab > .tab-stack > .tab-content[pinned][titlechanged]:not([selected="true"]) .tab-icon-image { + border-bottom: 2px solid transparent !important; + } + + .tabbrowser-tab:is([image], [pinned])[usercontextid] > .tab-stack > .tab-content[attention]:not([selected="true"]), + .tabbrowser-tab[usercontextid] > .tab-stack > .tab-content[pinned][titlechanged]:not([selected="true"]) { + /* Original: radial-gradient(circle, var(--attention-icon-color), var(--attention-icon-color) 2px, transparent 2px); */ + --dotted-identity-image: radial-gradient(circle, var(--identity-icon-color), var(--identity-icon-color) 2px, transparent 2px); + background-image: var(--dotted-identity-image), var(--dotted-identity-image), var(--dotted-identity-image) !important; + background-position-x: 32%, 50%, 70% !important; + } + :root[uidensity=compact] .tabbrowser-tab:is([image], [pinned])[usercontextid] > .tab-stack > .tab-content[attention]:not([selected="true"]), + :root[uidensity=compact] .tabbrowser-tab[usercontextid] > .tab-stack > .tab-content[pinned][titlechanged]:not([selected="true"]) { + /* Original: radial-gradient(circle, var(--attention-icon-color), var(--attention-icon-color) 2px, transparent 2px); */ + var(--dotted-identity-image) !important; + background-position-x: 30%, 50%, 70% !important; + } + + /* Pinned Tab - Titlechanged & soundplaying */ + .tabbrowser-tab:is([image], [pinned])[usercontextid]:is([soundplaying], [muted], [activemedia-blocked]) > .tab-stack > .tab-content[attention]:not([selected="true"]), + .tabbrowser-tab[usercontextid]:is([soundplaying], [muted], [activemedia-blocked]) > .tab-stack > .tab-content[pinned][titlechanged]:not([selected="true"]) { + background-position-x: calc(32% - 1px), calc(50% - 1px), calc(70% - 1px) !important; + } + :root[uidensity=compact] .tabbrowser-tab:is([image], [pinned])[usercontextid]:is([soundplaying], [muted], [activemedia-blocked]) > .tab-stack > .tab-content[attention]:not([selected="true"]), + :root[uidensity=compact] .tabbrowser-tab[usercontextid]:is([soundplaying], [muted], [activemedia-blocked]) > .tab-stack > .tab-content[pinned][titlechanged]:not([selected="true"]) { + var(--dotted-identity-image) !important; + background-position-x: calc(30% - 1px), calc(50% - 1px), calc(70% - 1px) !important; + } + + /** Crashed Tab - Don't show Favicons ***************************************/ + .tab-icon-image[crashed] { + display: none !important; + } + + /** Panel - Icons ***********************************************************/ + /*= Padding ================================================================*/ + :root { + --arrowpanel-menublank-padding: calc(var(--arrowpanel-menuicon-padding) * 2 + 8px) !important; + --arrowpanel-menuimageblank-padding: calc(var(--arrowpanel-menuitem-padding) - 2px) !important; + } + + #downloadsHistory .button-text, + .subviewbutton > .toolbarbutton-text { + padding-inline-start: var(--arrowpanel-menuicon-padding) !important; + } + .toolbaritem-combined-buttons > .subviewbutton:not(.subviewbutton-iconic) > .toolbarbutton-text { + padding-inline-start: 0 !important; + } + #panelMenu_bookmarksMenu .subviewbutton[disabled=true] .toolbarbutton-text, + #appMenu_historyMenu .subviewbutton[disabled=true] .toolbarbutton-text { + padding-inline-start: var(--arrowpanel-menublank-padding) !important; + } + #appMenu-proton-update-banner .toolbarbutton-text { + margin-inline-start: 0 !important; + } + + #appMenu-multiView .subviewbutton::before, + #appMenu-proton-update-banner::before { + display: -moz-inline-box; + margin-inline-end: var(--arrowpanel-menuicon-padding); + width: 16px !important; + height: 16px !important; + } + #appMenu-proton-update-banner { + margin-bottom: 2px !important; + } + #appMenu-proton-update-banner::before { + margin-inline-start: var(--arrowpanel-menuitem-padding) !important; + } + #appMenu-fxa-status2, + #appMenu-zoom-controls2 { + align-items: center; + padding-top: var(--arrowpanel-menuimageblank-padding) !important; + padding-bottom: var(--arrowpanel-menuimageblank-padding) !important; + } + #appMenu-zoom-controls2::before { + margin-inline-end: 0 !important; + } + + /* Icons Color */ + #appMenu-multiView .subviewbutton::before, + #appMenu-proton-update-banner::before, + #downloadsHistory .button-icon, + .subviewbutton > image { + fill: currentColor !important; + fill-opacity: var(--toolbarbutton-icon-fill-opacity) !important; + -moz-context-properties: fill !important; + } + #appMenu-zoomReduce-button2 > .toolbarbutton-icon, + #appMenu-zoomEnlarge-button2 > .toolbarbutton-icon { + stroke: var(--zoom-controls-bgcolor, var(--button-bgcolor, ButtonFace)) !important; + -moz-context-properties: fill, stroke !important; + } + #appMenu-zoomReduce-button2:not([disabled], [open], :active):is(:hover) > .toolbarbutton-icon, #appMenu-zoomEnlarge-button2:not([disabled], [open], :active):is(:hover) > .toolbarbutton-icon { + stroke: var(--button-hover-bgcolor) !important; + } + + .subviewbutton[disabled=true] > image { + /* Ghost icons when disabled */ + opacity: 0.4; + } + + /*= Panel - Main ===========================================================*/ + #appMenu-proton-addon-banners > .addon-banner-item > .toolbarbutton-icon { + display: -moz-inline-box !important; + margin-inline-start: var(--arrowpanel-menuicon-padding); + -moz-box-ordinal-group: 0 !important; + } + + #appMenu-proton-update-banner::before { + content: url(chrome://browser/skin/whatsnew.svg); + } + #appMenu-fxa-status2::before { /* Don't exist img tag */ + content: url(chrome://browser/skin/fxa/avatar-empty.svg); + } + #appMenu-fxa-status2:is([fxastatus=signedin], [fxastatus=unverified], [fxastatus=login-failed])::before { + display: none; + } + #appMenu-fxa-status2:is([fxastatus=signedin], [fxastatus=unverified], [fxastatus=login-failed]) #appMenu-fxa-label2::before { + /* url("https://profile.accounts.firefox.com/v1/avatar/a") */ + content: ''; + border-radius: 50% !important; + background-size: 16px !important; + background-image: var(--avatar-image-url) !important; + } + + #appMenu-new-tab-button2 { + list-style-image: url(chrome://browser/skin/new-tab.svg); + } + #appMenu-new-window-button2 { + list-style-image: url(chrome://browser/skin/window.svg); + } + #appMenu-new-private-window-button2 { + list-style-image: url(chrome://browser/skin/privateBrowsing.svg); + } + + #appMenu-bookmarks-button{ + list-style-image: url(chrome://browser/skin/bookmark.svg); + } + #appMenu-history-button { + list-style-image: url(chrome://browser/skin/history.svg); + } + #appMenu-downloads-button { + list-style-image: url(chrome://browser/skin/downloads/downloads.svg); + } + #appMenu-passwords-button { + list-style-image: url(chrome://browser/skin/login.svg); + } + #appMenu-extensions-themes-button { + list-style-image: url(chrome://mozapps/skin/extensions/extension.svg); + } + + #appMenu-print-button2 { + list-style-image: url(chrome://global/skin/icons/print.svg); + } + #appMenu-save-file-button2 { + list-style-image: url(chrome://browser/skin/save.svg); + } + #appMenu-find-button2 { + list-style-image: url(chrome://global/skin/icons/search-glass.svg); + } + #appMenu-zoom-controls2::before { + content: url(./icons/screenshot.svg); + } + + #appMenu-settings-button { + list-style-image: url(chrome://global/skin/icons/settings.svg); + } + #appMenu-more-button2 { + list-style-image: url(chrome://browser/skin/ion.svg); + } + #appMenu-help-button2 { + list-style-image: url(chrome://global/skin/icons/help.svg); + } + + #appMenu-quit-button2 { + list-style-image: url(./icons/quit.svg); + } + + /*= Panel - Account ========================================================*/ + #PanelUI-fxa-menu-connect-device-button .toolbarbutton-icon, + #PanelUI-fxa-menu-account-signout-button .toolbarbutton-icon { + width: 16px !important; + height: 16px !important; + } + + /* Default */ + #fxa-menu-avatar { + display: -moz-inline-box !important; + margin-inline-end: var(--arrowpanel-menuicon-padding); + } + + .syncNowBtn { + visibility: visible !important; + -moz-box-ordinal-group: 1 !important; + margin-inline-end: var(--arrowpanel-menuicon-padding); + } + #PanelUI-fxa-menu-setup-sync-button { + list-style-image: url(chrome://browser/skin/sync.svg); + } + + #PanelUI-fxa-menu-connect-device-button { + list-style-image: url(chrome://browser/skin/fxa/add-device.svg); + } + #PanelUI-fxa-menu-sendtab-button { + list-style-image: url(./icons/send-to-device.svg); + } + #PanelUI-fxa-menu-sync-prefs-button, + #PanelUI-remotetabs-view-managedevices { + list-style-image: url(chrome://global/skin/icons/settings.svg); + } + #PanelUI-fxa-menu-account-signout-button { + list-style-image: url(./icons/sign-out.svg); + } + + .PanelUI-remotetabs-notabsforclient-label { + margin-inline-start: calc(var(--arrowpanel-menuicon-padding) + var(--arrowpanel-menuitem-padding)) !important; + padding-inline-start: var(--arrowpanel-menublank-padding) !important; + } + + /* Change Separator */ + #PanelUI-fxa-menu::before{ + content: ""; + display: -moz-box; + border-bottom: 1px solid var(--panel-separator-color); + margin: var(--panel-separator-margin); + padding: 0; + } + #PanelUI-fxa-menu > :first-child{ + -moz-box-ordinal-group: 0; + } + #PanelUI-sign-out-separator { + display: none; + } + .pageAction-sendToDevice-device.subviewbutton.sync-menuitem.sendtab-target[clientType=""] { + list-style-image: url(./icons/send-to-device.svg); + } + .pageAction-sendToDevice-device.subviewbutton.sync-menuitem.sendtab-target:not([clientType]) { + list-style-image: url(chrome://global/skin/icons/settings.svg); + } + + /*= Panel - Bookmark =======================================================*/ + #panelMenuBookmarkThisPage { + list-style-image: url(chrome://browser/skin/bookmark-hollow.svg); + } + panelMenuBookmarkThisPage[starred] { + list-style-image: url(chrome://browser/skin/bookmark.svg); + } + + #panelMenu_searchBookmarks { + list-style-image: url(chrome://global/skin/icons/search-glass.svg); + } + #panelMenu_viewBookmarksToolbar { + list-style-image: url(chrome://browser/skin/bookmarks-toolbar.svg); + } + + #panelMenu_showAllBookmarks { + list-style-image: url(chrome://browser/skin/bookmark-star-on-tray.svg); + } + + /*= Panel - History ========================================================*/ + #appMenuRecentlyClosedTabs { + list-style-image: url(chrome://browser/skin/tab.svg); + } + #appMenuRecentlyClosedWindows { + list-style-image: url(chrome://browser/skin/window.svg); + } + #appMenuRestoreSession { + list-style-image: url(./icons/restore-session.svg); + } + #appMenuClearRecentHistory { + list-style-image: url(chrome://browser/skin/forget.svg); + } + + #PanelUI-historyMore { + list-style-image: url(chrome://browser/skin/history.svg); + } + + #appMenu-library-recentlyClosedTabs { + list-style-image: url(./icons/movetowindow-16.svg); + } + #appMenu-library-recentlyClosedWindows { + list-style-image: url(./icons/restore-session.svg); + } + + /*= Panel - More tools =====================================================*/ + #appmenu-moreTools-button { + list-style-image: url(chrome://browser/skin/customize.svg); + } + + #appmenu-developer-tools-view .subviewbutton:nth-child(1) { /* Web Developer Tools */ + list-style-image: url(chrome://browser/skin/developer.svg); + } + #appmenu-developer-tools-view .subviewbutton:nth-child(2) { /* Task Manager */ + list-style-image: url(./icons/performance.svg); + } + #appmenu-developer-tools-view .subviewbutton:nth-child(3) { /* Remote Debugging - Edge bug.svg */ + list-style-image: url(./icons/bug.svg); + } + #appmenu-developer-tools-view .subviewbutton:nth-child(4) { /* Browser Toolbox - Edge webdeveloper.svg */ + list-style-image: url(./icons/webdeveloper.svg); + } + #appmenu-developer-tools-view .subviewbutton:nth-child(5) { /* Browser Content Toolbaox - */ + list-style-image: url(./icons/command-frames.svg); + } + #appmenu-developer-tools-view .subviewbutton:nth-last-child(5) { /* Browser Console */ + list-style-image: url(chrome://devtools/skin/images/command-console.svg); + } + #appmenu-developer-tools-view .subviewbutton:nth-last-child(4) { /* Responsive Design Mode */ + list-style-image: url(./icons/command-responsivemode.svg); + } + #appmenu-developer-tools-view .subviewbutton:nth-last-child(3) { /* Eyedropper */ + list-style-image: url(chrome://devtools/skin/images/command-eyedropper.svg); + } + #appmenu-developer-tools-view .subviewbutton:nth-last-child(2) { /* Page Source - Edge file-search.svg */ + list-style-image: url(./icons/search-file.svg); + } + #appmenu-developer-tools-view .subviewbutton:nth-last-child(1) { /* Extensions for Devel */ + list-style-image: url(chrome://devtools/skin/images/debugging-addons.svg); + } + #appmenu-developer-tools-view .subviewbutton:last-child { + margin-bottom: 6px !important; + } + + /*= Panel - Help ===========================================================*/ + #appMenu_menu_openHelp { + list-style-image: url(chrome://global/skin/icons/help.svg); + } + #appMenu_feedbackPage { + list-style-image: url(./icons/send.svg); + } + #appMenu_helpSafeMode { + list-style-image: url(chrome://devtools/skin/images/debugging-workers.svg); + } + #appMenu_troubleShooting { + list-style-image: url(chrome://global/skin/icons/more.svg); + } + #appMenu_help_reportSiteIssue { + list-style-image: url(chrome://global/skin/icons/lightbulb.svg); + } + #appMenu_menu_HelpPopup_reportPhishingtoolmenu { + list-style-image: url(chrome://global/skin/icons/warning.svg); + } + #appMenu_aboutName{ + list-style-image: url(chrome://global/skin/icons/info.svg); + } + + /*= Panel - Library ========================================================*/ + #appMenu-library-bookmarks-button { + list-style-image: url(chrome://browser/skin/bookmark.svg); + } + #appMenu-library-history-button { + list-style-image: url(chrome://browser/skin/history.svg); + } + #appMenu-library-downloads-button{ + list-style-image: url(chrome://browser/skin/downloads/downloads.svg); + } + + /*= Panel - Downloads ======================================================*/ + #downloadsHistory { + list-style-image: url(chrome://browser/skin/downloads/downloads.svg); + } + #downloadsHistory .box-inherit.button-box { + display: -moz-inline-box !important; + } + + /*= Toolbar - Overflow Menu ================================================*/ + #overflowMenu-customize-button { + list-style-image: url(chrome://browser/skin/customize.svg); + } + + /*= Tabbar - All Tab Menu ==================================================*/ + #allTabsMenu-undoCloseTab { + list-style-image: url(chrome://global/skin/icons/undo.svg); + } + #allTabsMenu-searchTabs { + list-style-image: url(chrome://global/skin/icons/search-glass.svg); + } + #allTabsMenu-containerTabsButton { + list-style-image: url(./icons/container-openin-16.svg); + } + + #allTabsMenu-hiddenTabsButton { + list-style-image: url(./icons/password-hide.svg); + } + + #allTabsMenu-containerTabsView .subviewbutton:last-child { + list-style-image: url(chrome://global/skin/icons/settings.svg); + } + + /** Sound Tab - Show with Favicons */ + /* Makes the favicons always visible (also on hover) */ + .tab-icon-image:not([pinned]){ + opacity: 1 !important + } + + /* Makes the speaker icon to always appear if the tab is playing (not only on hover) */ + .tab-icon-overlay:not([crashed]), + .tab-icon-overlay[pinned][crashed][selected] { + /* Position */ + top: -3.5px !important; + inset-inline-end: -9px !important; + z-index: 1 !important; + + /* Shape */ + padding: 1.5px !important; + border-radius: 10px !important; + width: 17px !important; + height: 17px !important; + } + .tab-icon-overlay:not([sharing], [crashed]):is([soundplaying], [muted], [activemedia-blocked]) { + /* Color */ + color: currentColor !important; + stroke: transparent !important; + background: transparent !important; + fill-opacity: 0.8 !important; + opacity: 1 !important; + } + .tab-icon-overlay:not([pinned], [sharing], [crashed]):is([soundplaying], [muted], [activemedia-blocked]) { + margin-inline-end: 9.5px !important; + } + + /* None exist favicon */ + .tabbrowser-tab:not([image]) .tab-icon-overlay:not([pinned], [sharing],[crashed]) { + top: 0 !important; + inset-inline-end: 0 !important; + margin-inline-end: 5.5px !important; + padding: 2px 0 !important; + } + + /* Busy - Show */ + .tab-throbber[busy], .tab-icon-pending[busy] { + opacity: 1 !important; + } + + /* Busy - Overlay Position */ + .tabbrowser-tab:not([pinned])[busy] .tab-icon-overlay:is([soundplaying], [muted], [activemedia-blocked]) { + transform: translateX(-.5px) translateY(-2.5px); + } + .tabbrowser-tab:not([image]) .tab-icon-overlay:not([pinned], [sharing],[crashed])[busy] { + top: -3.5px !important; + inset-inline-end: -9px !important; + margin-inline-end: 9.5px !important; + padding: 1.5px !important; + } + + /* Hover */ + .tab-icon-overlay:not([crashed])[soundplaying]:hover, + .tab-icon-overlay:not([crashed])[muted]:hover, + .tab-icon-overlay:not([crashed])[activemedia-blocked]:hover { + color: var(--toolbar-bgcolor, white) !important; + stroke: var(--lwt-tab-text, var(--toolbar-color)) !important; + background-color: var(--lwt-tab-text, var(--toolbar-color)) !important; + fill-opacity: 0.95 !important; + } + + #TabsToolbar[brighttext] .tab-icon-overlay:not([crashed])[soundplaying]:hover, + #TabsToolbar[brighttext] .tab-icon-overlay:not([crashed])[muted]:hover, + #TabsToolbar[brighttext] .tab-icon-overlay:not([crashed])[activemedia-blocked]:hover { + color: var(--toolbar-bgcolor, black) !important; + } + + .tabbrowser-tab:not([image]) .tab-icon-overlay:not([pinned], [sharing],[crashed]):hover { + padding: 0 !important; + } + + + /** Context Menu - Icons ****************************************************/ + /*= Layout =================================================================*/ + menupopup menuitem:not([type="checkbox"]), + menupopup menu:not([type="checkbox"]) { + -moz-appearance: none !important; /* Linux: menulist */ + } + + /* Icon */ + :not(menu, #ContentSelectDropdown) > menupopup > menuitem:not(.menuitem-iconic, [type="checkbox"], .in-menulist), + :not(menu, #ContentSelectDropdown) > menupopup > menu:not(.menu-iconic, [type="checkbox"], .in-menulist), + #blockedPopupDontShowMessage { + /* Color */ + -moz-context-properties: fill, fill-opacity !important; + fill: currentColor !important; + + /* Layout */ + background-size: 16px !important; + background-repeat: no-repeat !important; + background-image: var(--menuitem-image); + } + + /* For native context menus on macOS */ + @supports -moz-bool-pref("widget.macos.native-context-menus") { + :not(menu, #ContentSelectDropdown) > menupopup > menuitem:not(.menuitem-iconic, [type="checkbox"], .in-menulist), + :not(menu, #ContentSelectDropdown) > menupopup > menu:not(.menu-iconic, [type="checkbox"], .in-menulist) { + list-style-image: var(--menuitem-image) !important; + } + } + + /* Padding */ + :root { + --context-menu-background-padding-default: 5px; + --context-menu-background-padding: var(--context-menu-background-padding-default); + } + :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menuitem, + :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menu, + #blockedPopupDontShowMessage { + background-position: left var(--context-menu-background-padding) center !important; + padding-inline-start: var(--context-menu-background-padding) !important; + } + + /* Padding - Windows */ + @media (-moz-os-version: windows-win7 ), + (-moz-os-version: windows-win8 ), + (-moz-os-version: windows-win10) { + :root { + --context-menu-background-padding: 1em; + --context-menu-text-padding: calc(var(--menu-padding) + var(--context-menu-background-padding-default) + 16px); + } + + :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menuitem:not(.menuitem-iconic, [type="checkbox"], .in-menulist), + :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menu:not(.menu-iconic, [type="checkbox"], .in-menulist), + #blockedPopupDontShowMessage { + padding-inline-start: calc(var(--context-menu-background-padding) + var(--context-menu-text-padding)) !important; + } + + /* Checkbox */ + :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menuitem[type="checkbox"][checked="false"] > .menu-iconic-left { + padding-inline-start: var(--context-menu-text-padding); + } + } + + /* Padding Mac */ + @supports -moz-bool-pref("layout.css.osx-font-smoothing.enabled") { + :root { + --context-menu-background-padding-default: 10px; + --context-menu-mac-padding: 21px; + } + + /* context menu width */ + :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menuitem:not(.menuitem-iconic, [type="checkbox"], .in-menulist), + :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menu:not(.menu-iconic, [type="checkbox"], .in-menulist), + #blockedPopupDontShowMessage { + padding-inline-end: var(--context-menu-background-padding) !important; + } + + /* text position */ + :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menuitem > .menu-text, + :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menu > menu-text { + padding-inline-start: var(--context-menu-mac-padding) !important; + } + + /* Checkbox menuitem, None iconic menu */ + :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menuitem[type="checkbox"], + :not(menu, #ContentSelectDropdown, #context-navigation) > menupopup > menu:not(.menu-iconic) { + padding-inline-start: calc(var(--context-menu-background-padding) + var(--context-menu-mac-padding)) !important; + } + } + + /*= tabContextMenu =========================================================*/ + #context_openANewTab { + --menuitem-image: url(chrome://browser/skin/new-tab.svg); + } + + #context_reloadTab, + #context_reloadSelectedTabs { + --menuitem-image: url(chrome://browser/skin/reload.svg); + } + #context_toggleMuteTab, + #context_toggleMuteSelectedTabs { + --menuitem-image: url(chrome://browser/skin/tabbrowser/tab-audio-muted-small.svg); + } + #context_toggleMuteTab[muted], + #context_toggleMuteSelectedTabs[muted] { + --menuitem-image: url(chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg); + } + #context_pinTab, + #context_pinSelectedTabs { + --menuitem-image: url(./icons/pin-tab.svg); + } + #context_unpinTab, + #context_unpinSelectedTabs { + --menuitem-image: url(./icons/unpin-tab.svg); + } + #context_duplicateTab, + #context_duplicateTabs { + --menuitem-image: url(./icons/tab-copy.svg); + } + + #context_bookmarkTab, + #context_bookmarkSelectedTabs { + --menuitem-image: url(chrome://browser/skin/bookmark.svg); + } + #context_moveTabOptions { + --menuitem-image: url(./icons/arrow-swap.svg); + } + #context_sendTabToDevice { + --menuitem-image: url(./icons/send-to-device.svg); + } + #context_shareTabURL { /* At windows */ + --menuitem-image: url(./icons/share.svg); + } + #context_reopenInContainer { + --menuitem-image: url(./icons/container-openin-16.svg); + } + #context_selectAllTabs { + --menuitem-image: url(./icons/tab-multiple.svg); + } + + #context_closeTab { + --menuitem-image: url(chrome://global/skin/icons/close.svg); + } + #context_closeTabOptions { + } + #context_undoCloseTab { + --menuitem-image: url(chrome://global/skin/icons/undo.svg); + } + + /*= new-tab-button-popup ===================================================*/ + #new-tab-button-popup > menuitem[command="Browser:OpenAboutContainers"] { + --menuitem-image: url(chrome://global/skin/icons/settings.svg); + } + + /*= toolbar-context-menu ===================================================*/ + .customize-context-manageExtension { + --menuitem-image: url(chrome://global/skin/icons/settings.svg); + } + .customize-context-removeExtension { + --menuitem-image: url(chrome://global/skin/icons/delete.svg); + } + .customize-context-reportExtension { + --menuitem-image: url(./icons/send.svg); + } + + .customize-context-moveToPanel { + --menuitem-image: url(chrome://browser/skin/pin-12.svg); + } + .toolbar-context-autohide-downloads-button { + --menuitem-image: url(./icons/password-hide.svg); + } + .customize-context-removeFromToolbar { + --menuitem-image: url(chrome://global/skin/icons/delete.svg); + } + #toolbar-context-openANewTab { + --menuitem-image: url(chrome://browser/skin/new-tab.svg); + } + + #toolbar-context-reloadSelectedTab, + #toolbar-context-reloadSelectedTabs { + --menuitem-image: url(chrome://browser/skin/reload.svg); + } + #toolbar-context-bookmarkSelectedTab, + #toolbar-context-bookmarkSelectedTabs { + --menuitem-image: url(chrome://browser/skin/bookmark.svg); + } + #toolbar-context-selectAllTabs { + --menuitem-image: url(./icons/tab-multiple.svg); + } + #toolbar-context-undoCloseTab { + --menuitem-image: url(chrome://global/skin/icons/undo.svg); + } + + #toggle_toolbar-menubar { /* checkbox */ + /* --menuitem-image: url(./icons/calendar-agenda.svg); */ + } + #toggle_PersonalToolbar { /* Also placeContext */ + --menuitem-image: url(chrome://browser/skin/bookmarks-toolbar.svg); + } + + menuitem.viewCustomizeToolbar { + --menuitem-image: url(chrome://browser/skin/customize.svg); + } + + /*= blockedPopupOptions ====================================================*/ + #blockedPopupAllowSite { + --menuitem-image: url("chrome://global/skin/icons/check.svg"); + } + #blockedPopupOptions > menuitem[oncommand="gPopupBlockerObserver.editPopupSettings();"] { + --menuitem-image: url("chrome://global/skin/icons/edit.svg"); + } + #blockedPopupDontShowMessage { /* checkbox */ + --menuitem-image: url("chrome://global/skin/icons/blocked.svg"); + } + + /*= autohide-context =======================================================*/ + #autohide-context > menuitem[data-l10n-id="full-screen-autohide"] { /* checkbox */ + } + + #autohide-context > menuitem[data-l10n-id="full-screen-exit"] { + --menuitem-image: url(chrome://browser/skin/fullscreen-exit.svg); + } + + /*= contentAreaContextMenu =================================================*/ + #context-viewsource-goToLine { + --menuitem-image: url(./icons/text-number-format.svg); + } + #context-viewsource-wrapLongLines { /* checkbox */ + /* --menuitem-image: url(./icons/arrow-sort-down-lines.svg); */ + } + + #context-viewsource-highlightSyntax { /* checkbox */ + /* --menuitem-image: url(./icons/code.svg); */ + } + + #spell-no-suggestions { + --menuitem-image: url(./icons/text-proofing-tools.svg); + } + #spell-add-to-dictionary { + --menuitem-image: url(./icons/book-add.svg); + } + #spell-undo-add-to-dictionary { + --menuitem-image: url(chrome://global/skin/icons/undo.svg); + } + + #context-openlinkincurrent { + --menuitem-image: url(./icons/link-square.svg); + } + #context-openlinkincontainertab { + --menuitem-image: url(chrome://browser/skin/new-tab.svg); + } + #context-openlinkintab { + --menuitem-image: url(chrome://browser/skin/new-tab.svg); + } + #context-openlinkinusercontext-menu { + --menuitem-image: url(./icons/container-openin-16.svg); + } + #context-openlink { + --menuitem-image: url(chrome://browser/skin/window.svg); + } + #context-openlinkprivate { + --menuitem-image: url(chrome://browser/skin/privateBrowsing.svg); + } + + #context-bookmarklink { + --menuitem-image: url(chrome://browser/skin/bookmark.svg); + } + #context-savelink { + --menuitem-image: url(chrome://browser/skin/save.svg); + } + #context-savelinktopocket { + --menuitem-image: url(chrome://browser/skin/pocket-outline.svg); + } + #context-copyemail { + --menuitem-image: url(chrome://browser/skin/mail.svg); + } + #context-copylink { + --menuitem-image: url(chrome://browser/skin/link.svg); + } + #context-sendlinktodevice { + --menuitem-image: url(./icons/send-to-device.svg); + } + + #context-media-play { + --menuitem-image: url(chrome://global/skin/media/play-fill.svg); + } + #context-media-pause { + --menuitem-image: url(chrome://global/skin/media/pause-fill.svg); + } + #context-media-mute { + --menuitem-image: url(chrome://global/skin/media/audio-muted.svg); + } + #context-media-unmute { + --menuitem-image: url(chrome://global/skin/media/audio.svg); + } + #context-media-playbackrate { + --menuitem-image: url(./icons/time-picker.svg); + } + #context-media-loop { /* checkbox */ + /* --menuitem-image: url(./icons/arrow-repeat-all.svg); */ + } + #context-leave-dom-fullscreen { + --menuitem-image: url(chrome://global/skin/media/fullscreenExitButton.svg); + } + #context-video-fullscreen { + --menuitem-image: url(chrome://global/skin/media/fullscreenEnterButton.svg); + } + #context-media-hidecontrols { + --menuitem-image: url(./icons/eye-hide.svg); + } + #context-media-showcontrols { + --menuitem-image: url(./icons/eye-show.svg); + } + + #context-viewvideo { + --menuitem-image: url(./icons/video.svg); + } + #context-video-pictureinpicture { /* checkbox */ + /* --menuitem-image: url(chrome://global/skin/media/picture-in-picture-open.svg); */ + } + + #context-reloadimage { + --menuitem-image: url(./icons/image-arrow-counterclockwise.svg); + } + #context-viewimage { + --menuitem-image: url(./icons/image-add.svg); + } + #context-saveimage { + --menuitem-image: url(./icons/image.svg); + } + #context-video-saveimage { + --menuitem-image: url(./icons/video-snapshot.svg); + } + #context-savevideo { + --menuitem-image: url(./icons/video.svg); + } + #context-saveaudio { + --menuitem-image: url(chrome://global/skin/media/audio.svg); + } + #context-copyimage-contents { + --menuitem-image: url(./icons/image-copy.svg); + } + #context-copyimage, + #context-copyvideourl, + #context-copyaudiourl { + --menuitem-image: url(chrome://browser/skin/link.svg); + } + #context-sendimage, + #context-sendvideo, + #context-sendaudio { + --menuitem-image: url(chrome://browser/skin/mail.svg); + } + #context-viewimageinfo { + --menuitem-image: url(chrome://global/skin/icons/info.svg); + } + #context-viewimagedesc { + --menuitem-image: url(./icons/image-alt-text.svg); + } + #context-setDesktopBackground { + --menuitem-image: url(./icons/resize-image.svg); + } + #context-ctp-play { + --menuitem-image: url(chrome://global/skin/icons/plugin.svg); + } + #context-ctp-hide { + --menuitem-image: url(chrome://global/skin/icons/plugin-blocked.svg); + } + + #context-savepage { + --menuitem-image: url(chrome://browser/skin/save.svg); + } + #context-pocket { + --menuitem-image: url(chrome://browser/skin/pocket-outline.svg); + } + #context-sendpagetodevice { + --menuitem-image: url(./icons/send-to-device.svg); + } + #fill-login { + --menuitem-image: url(./icons/password.svg); + } + #fill-login-generated-password { + --menuitem-image: url(chrome://browser/skin/login.svg); + } + #manage-saved-logins { + --menuitem-image: url(./icons/key-multiple.svg); + } + + #context-undo { + --menuitem-image: url(chrome://global/skin/icons/undo.svg); + } + #context-redo { + } + + #context-cut { + --menuitem-image: url(chrome://browser/skin/edit-cut.svg); + } + #context-copy { + --menuitem-image: url(chrome://browser/skin/edit-copy.svg); + } + #context-paste { + --menuitem-image: url(chrome://browser/skin/edit-paste.svg); + } + #context-delete { + --menuitem-image: url(chrome://global/skin/icons/delete.svg); + } + #context-selectall { + --menuitem-image: url(./icons/select-all-on.svg); + } + #context-print-selection { + --menuitem-image: url(chrome://global/skin/icons/print.svg); + } + + #context-take-screenshot { + --menuitem-image: url(chrome://browser/skin/screenshot.svg); + } + + #context-keywordfield { + --menuitem-image: url(chrome://browser/skin/bookmark.svg); + } + #context-searchselect, + #context-searchselect-private { + --menuitem-image: url(chrome://global/skin/icons/search-glass.svg); + } + + #frame { + --menuitem-image: url(./icons/command-frames.svg); + } + + #spell-check-enabled { /* checkbox */ + } + #spell-add-dictionaries-main { + --menuitem-image: url(./icons/book-add.svg); + } + #spell-dictionaries { + --menuitem-image: url(./icons/book.svg); + } + + #context-bidi-text-direction-toggle { + --menuitem-image: url(./icons/text-direction-horizontal-ltr.svg); + } + #context-bidi-page-direction-toggle { + --menuitem-image: url(./icons/document-landscape-split-hint.svg); + } + + #context-viewpartialsource-selection, + #context-viewsource { + --menuitem-image: url(./icons/search-file.svg); + } + #context-inspect-a11y { + --menuitem-image: url(chrome://devtools/skin/images/tool-accessibility.svg); + } + #context-inspect { + --menuitem-image: url(chrome://devtools/skin/images/command-pick.svg) + } + + #context-media-eme-learnmore { /* iconic */ + } + + @supports -moz-bool-pref("layout.css.osx-font-smoothing.enabled") { + #context-back { + --menuitem-image: url(chrome://browser/skin/back.svg); + } + #context-forward { + --menuitem-image: url(chrome://browser/skin/forward.svg); + } + #context-reload { + --menuitem-image: url(chrome://browser/skin/reload.svg); + } + #context-stop { + --menuitem-image: url(chrome://global/skin/icons/close.svg); + } + + #context-bookmarkpage { + --menuitem-image: url(chrome://browser/skin/bookmark.svg); + } + } + + /*= pictureInPictureToggleContextMenu ======================================*/ + #pictureInPictureToggleContextMenu > menuitem[oncommand="PictureInPicture.hideToggle();"] { + --menuitem-image: url(./icons/eye-hide.svg); + } + + /*= placeContext ===========================================================*/ + #placesContext_open { + --menuitem-image: url(./icons/link-square.svg); + } + #placesContext_openBookmarkContainer\:tabs, + #placesContext_openBookmarkLinks\:tabs { + --menuitem-image: url(./icons/movetowindow-16.svg); + } + #placesContext_open\:newtab, + #placesContext_openContainer\:tabs, + #placesContext_openLinks\:tabs { + --menuitem-image: url(chrome://browser/skin/new-tab.svg); + } + #placesContext_open\:newwindow { + --menuitem-image: url(chrome://browser/skin/window.svg); + } + #placesContext_open\:newprivatewindow { + --menuitem-image: url(chrome://browser/skin/privateBrowsing.svg); + } + + #placesContext_show_bookmark\:info, + #placesContext_show\:info, + #placesContext_show_folder\:info { + --menuitem-image: url(chrome://global/skin/icons/edit.svg); + } + #placesContext_deleteBookmark, + #placesContext_deleteFolder, + #placesContext_delete, + #placesContext_delete_history { + --menuitem-image: url(chrome://global/skin/icons/delete.svg); + } + #placesContext_deleteHost { + --menuitem-image: url(./icons/eye-hide.svg); + } + #placesContext_sortBy\:name { + --menuitem-image: url(./icons/text-sort-ascending.svg); + } + + #placesContext_cut { + --menuitem-image: url(chrome://browser/skin/edit-cut.svg); + } + #placesContext_copy { + --menuitem-image: url(chrome://browser/skin/edit-copy.svg); + } + #placesContext_paste_group { + --menuitem-image: url(chrome://browser/skin/edit-paste.svg); + } + + #placesContext_new\:bookmark { + --menuitem-image: url(chrome://browser/skin/bookmark.svg); + } + #placesContext_new\:folder { + --menuitem-image: url(chrome://global/skin/icons/folder.svg); + } + #placesContext_new\:separator { + --menuitem-image: url(./icons/vertical-line.svg); + } + + #placesContext_paste { + --menuitem-image: url(chrome://browser/skin/edit-paste.svg); + } + + #placesContext_createBookmark { + --menuitem-image: url(chrome://browser/skin/bookmark.svg); + } + #show-other-bookmarks_PersonalToolbar { /* checkbox */ + /* --menuitem-image: url(./icons/star-line-horizontal.svg); */ + } + #placesContext_showAllBookmarks { + --menuitem-image: url(chrome://browser/skin/bookmark-star-on-tray.svg); + } + + menupopup[context="placesContext"] > .openintabs-menuitem { + --menuitem-image: url(./icons/movetowindow-16.svg); + } + + /*= pageActionContextMenu ==================================================*/ + .pageActionContextMenuItem.extensionPinned.extensionUnpinned.manageExtensionItem { + --menuitem-image: url(chrome://global/skin/icons/settings.svg); + } + .pageActionContextMenuItem.extensionPinned.extensionUnpinned.removeExtensionItem { + --menuitem-image: url(chrome://global/skin/icons/delete.svg); + } + + /*= customizationPanelItemContextMenu ======================================*/ + #customizationPanelItemContextMenuUnpin { + --menuitem-image: url(./icons/unpin-tab.svg); + } + .customize-context-removeFromPanel { + --menuitem-image: url(chrome://global/skin/icons/delete.svg); + } + + /*= customizationPaletteItemContextMenu ====================================*/ + .customize-context-addToToolbar { + --menuitem-image: url(chrome://devtools/skin/images/dock-bottom.svg); + } + .customize-context-addToPanel { + --menuitem-image: url(chrome://browser/skin/menu.svg); + } + + /*= customizationPanelContextMenu ==========================================*/ + #customizationPanelContextMenu > menuitem[command="cmd_CustomizeToolbars"] { + --menuitem-image: url(chrome://browser/skin/customize.svg); + } + + /*= downloads-button-autohide-panel ========================================*/ + #downloads-button-autohide-checkbox { /* checkbox */ + } + + /*= downloadsContextMenu ===================================================*/ + .downloadPauseMenuItem { + --menuitem-image: url(chrome://global/skin/media/pause-fill.svg); + } + .downloadResumeMenuItem { + --menuitem-image: url(chrome://global/skin/media/play-fill.svg); + } + .downloadUnblockMenuItem { + --menuitem-image: url(./icons/checkmark-circle.svg); + } + .downloadUseSystemDefaultMenuItem { + --menuitem-image: url(chrome://browser/skin/open.svg); + } + .downloadAlwaysUseSystemDefaultMenuItem { /* checkbox */ + } + .downloadShowMenuItem { + --menuitem-image: url(chrome://global/skin/icons/folder.svg); + } + + #downloadsContextMenu > menuitem[command="downloadsCmd_openReferrer"] { + --menuitem-image: url(./icons/link-square.svg); + } + #downloadsContextMenu > menuitem[command="downloadsCmd_copyLocation"] { + --menuitem-image: url(chrome://browser/skin/link.svg); + } + + .downloadRemoveFromHistoryMenuItem { + --menuitem-image: url(chrome://global/skin/icons/delete.svg); + } + #downloadsContextMenu > menuitem[command="downloadsCmd_clearList"], + #downloadsContextMenu > menuitem[command="downloadsCmd_clearDownloads"] { + --menuitem-image: url(./icons/broom.svg); + } + + /*= SyncedTabsSidebarContext ===============================================*/ + #syncedTabsOpenSelected { + --menuitem-image: url(./icons/link-square.svg); + } + #syncedTabsOpenSelectedInTab { + --menuitem-image: url(chrome://browser/skin/new-tab.svg); + } + #syncedTabsOpenSelectedInWindow { + --menuitem-image: url(chrome://browser/skin/window.svg); + } + #syncedTabsOpenSelectedInPrivateWindow { + --menuitem-image: url(chrome://browser/skin/privateBrowsing.svg); + } + + #syncedTabsBookmarkSelected { + --menuitem-image: url(chrome://browser/skin/bookmark.svg); + } + #syncedTabsCopySelected { + --menuitem-image: url(chrome://browser/skin/link.svg); + } + + #syncedTabsOpenAllInTabs { + --menuitem-image: url(./icons/movetowindow-16.svg); + } + #syncedTabsManageDevices { + --menuitem-image: url(chrome://global/skin/icons/settings.svg); + } + #syncedTabsRefresh { + --menuitem-image: url(chrome://browser/skin/sync.svg); + } + + /*= SyncedTabsSidebarTabsFilterContext =====================================*/ + #SyncedTabsSidebarTabsFilterContext > menuitem[cmd="cmd_undo"] { + --menuitem-image: url(chrome://global/skin/icons/undo.svg); + } + #SyncedTabsSidebarTabsFilterContext > menuitem[cmd="cmd_cut"] { + --menuitem-image: url(chrome://browser/skin/edit-cut.svg); + } + #SyncedTabsSidebarTabsFilterContext > menuitem[cmd="cmd_copy"]{ + --menuitem-image: url(chrome://browser/skin/edit-copy.svg); + } + #SyncedTabsSidebarTabsFilterContext > menuitem[cmd="cmd_paste"]{ + --menuitem-image: url(chrome://browser/skin/edit-paste.svg); + } + #SyncedTabsSidebarTabsFilterContext > menuitem[cmd="cmd_delete"]{ + --menuitem-image: url(chrome://global/skin/icons/delete.svg); + } + + #SyncedTabsSidebarTabsFilterContext > menuitem[cmd="cmd_selectAll"]{ + --menuitem-image: url(./icons/select-all-on.svg); + } + + #syncedTabsRefreshFilter { + --menuitem-image: url(chrome://browser/skin/sync.svg); + } + + /*= urlbar-input-container =================================================*/ + #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_undo"] { + --menuitem-image: url(chrome://global/skin/icons/undo.svg); + } + #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_redo"] { + } + + #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_cut"] { + --menuitem-image: url(chrome://browser/skin/edit-cut.svg); + } + #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_copy"] { + --menuitem-image: url(chrome://browser/skin/edit-copy.svg); + } + #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_paste"] { + --menuitem-image: url(chrome://browser/skin/edit-paste.svg); + } + #paste-and-go { + } + #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_delete"] { + --menuitem-image: url(chrome://global/skin/icons/delete.svg); + } + #urlbar-input-container .textbox-contextmenu menuitem[cmd="cmd_selectAll"] { + --menuitem-image: url(./icons/select-all-on.svg); + } +} diff --git a/private_dot_mozilla/private_firefox/private_personal-profile.default/user.js.tmpl b/private_dot_mozilla/private_firefox/private_personal-profile.default/user.js.tmpl new file mode 100644 index 0000000..c466371 --- /dev/null +++ b/private_dot_mozilla/private_firefox/private_personal-profile.default/user.js.tmpl @@ -0,0 +1,236 @@ +/* + My custom defined user.js browser settings for Firefox + + ln -s ~/data/configs/browser.configs/user.js ~/.mozilla/firefox//user.js +*/ + +/******************************************************************************* + * SECTION: History Related * + *******************************************************************************/ +// PREF: Clear various settings when Firefox closes +// user_pref("privacy.clearOnShutdown.cookies", true); +user_pref("privacy.clearOnShutdown.downloads", true); +user_pref("privacy.clearOnShutdown.formdata", true); +user_pref("privacy.clearOnShutdown.offlineApps", true); +user_pref("privacy.sanitize.sanitizeOnShutdown", true); +// user_pref("privacy.clearOnShutdown.cache", true); +// user_pref("privacy.clearOnShutdown.history", true); +// user_pref("privacy.clearOnShutdown.sessions", true); +// user_pref("privacy.clearOnShutdown.openWindows", true); + +// PREF: Clear everything but "Site Preferences" in "Clear Recent History" +user_pref("privacy.cpd.offlineApps", true); +// user_pref("privacy.cpd.cache", true); +// user_pref("privacy.cpd.cookies", true); +user_pref("privacy.cpd.downloads", true); +user_pref("privacy.cpd.formdata", true); +// user_pref("privacy.cpd.history", true); +// user_pref("privacy.cpd.sessions", true); + +// PREF: Set time range to "Everything" as default in "Clear Recent History" +user_pref("privacy.sanitize.timeSpan", 0); + +// PREF: Disable password manager (use an external password manager!) +user_pref("signon.rememberSignons", false); + +// PREF: Require manual intervention to autofill known username/passwords sign-in forms +user_pref("signon.autofillForms", false); + + + +/******************************************************************************* + * SECTION: UI/Theme related * + *******************************************************************************/ +// Allow for loading of userChrome.css and userContent.css +user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); + +// Fill SVG Color +user_pref("svg.context-properties.content.enabled", true); + +// CSS Blur Filter - 88 Above +user_pref("layout.css.backdrop-filter.enabled", true); + +// Restore Compact Mode - 89 Above +user_pref("browser.compactmode.show", true); + +// Enable closetab to always be displayed +user_pref("browser.tabs.tabMinWidth", 0); +user_pref("browser.tabs.tabClipWidth", 0); + + + +/******************************************************************************* + * SECTION: Omni-Bar Related * + *******************************************************************************/ +// PREF: Don't trim HTTP off of URLs in the address bar. +user_pref("browser.urlbar.trimURLs", false); + +// PREF: Do not submit invalid URIs entered in the address bar to the default search engine +// This breaks searching in the omnibar without a shortcut +// user_pref("keyword.enabled", false); + +// PREF: Don't try to guess domain names when entering an invalid domain name in URL bar +user_pref("browser.fixup.alternate.enabled", false); + +// PREF: When browser.fixup.alternate.enabled is enabled, strip password from 'user:password@...' URLs +user_pref("browser.fixup.hide_user_pass", true); + +// PREF: Disable Displaying Javascript in History URLs +user_pref("browser.urlbar.filter.javascript", true); + +// PREF: Disable "Provide search suggestions" in the omni bar (not history suggestions) +user_pref("browser.search.suggest.enabled", false); + +// PREF: Disable "Show search suggestions in location bar results" +user_pref("browser.urlbar.suggest.searches", false); + +// PREF: Disable form autofill, don't save information entered in web page forms and the Search Bar +// user_pref("browser.formfill.enable", false); + +// PREF: Disable inline autocomplete in URL bar +// user_pref("browser.urlbar.autoFill", false); +// user_pref("browser.urlbar.autoFill.typed", false); + +// PREF: Disable URL bar autocomplete and history/bookmarks suggestions dropdown +// user_pref("browser.urlbar.autocomplete.enabled", false); + + +/******************************************************************************* + * SECTION: Misc * + *******************************************************************************/ +// PREF: When browser pings are enabled, only allow pinging the same host as the origin page +user_pref("browser.send_pings.require_same_host", true); + +// PREF: Disable remote debugging +user_pref("devtools.debugger.remote-enabled", false); +user_pref("devtools.chrome.enabled", false); +user_pref("devtools.debugger.force-local", true); + +// PREF: Do not automatically send selection to clipboard on some Linux platforms +user_pref("clipboard.autocopy", false); + +{{ if (hasKey . "firefox") }} +// Chezmoi defined configs + +{{ if (hasKey .firefox "bookmarks") }} +// PREF: Export bookmarks to HTML automatically when closing Firefox (disabled) +user_pref("browser.bookmarks.autoExportHTML", true); +user_pref("browser.bookmarks.file", {{ .firefox.bookmarks | quote }}); +user_pref("browser.bookmarks.max_backups", 5); +{{- end }} + +{{- end }} + +// PREF: Do not check if Firefox is the default browser +user_pref("browser.shell.checkDefaultBrowser", false); + +// PREF: Disable Pocket +user_pref("browser.pocket.enabled", false); +user_pref("extensions.pocket.enabled", false); + +// PREF: Disable "Recommended by Pocket" in Firefox Quantum +user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); + +// PREF: Restore previous session on startup +user_pref("browser.startup.page", 3); + +// PREF: Do not create screenshots of visited pages (relates to the "new tab page" feature) +user_pref("browser.pagethumbnails.capturing_disabled", true); + +// PREF: Disable Extension recommendations (Firefox >= 65) +user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false); +user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); +user_pref("browser.discovery.enabled", false); + +/* 0320: disable about:addons' Recommendations pane (uses Google Analytics) ***/ +/* 0321: disable recommendations in about:addons' Extensions and Themes panes [FF68+] ***/ +user_pref("extensions.getAddons.showPane", false); // [HIDDEN PREF] +user_pref("extensions.htmlaboutaddons.recommendations.enabled", false); + +// PREF: Disable Sponsored Top Sites +user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); + +// PREF: Disable Snippets +user_pref("browser.newtabpage.activity-stream.feeds.snippets", false); + +// PREF: Disable downloading homepage snippets/messages from Mozilla +user_pref("browser.aboutHomeSnippets.updateUrl", ""); + + +/******************************************************************************* + * SECTION: Privacy and Security Related * + *******************************************************************************/ +// PREF: Enable Firefox Tracking Protection +user_pref("privacy.trackingprotection.enabled", true); +user_pref("privacy.trackingprotection.pbmode.enabled", true); + +// PREF: Enable insecure password warnings (login forms in non-HTTPS pages) +user_pref("security.insecure_password.ui.enabled", true); + +// PREF: Send DNS request through SOCKS when SOCKS proxying is in use +user_pref("network.proxy.socks_remote_dns", true); + +// PREF: Don't monitor OS online/offline connection state +user_pref("network.manage-offline-status", false); + +// PREF: Disable "Autofill addresses" +user_pref("extensions.formautofill.addresses.enabled", false); + +// PREF: Disable "Autofill credit cards" +user_pref("extensions.formautofill.creditCards.enabled", false); + +// PREF: Disable collection/sending of the health report (healthreport.sqlite*) +user_pref("datareporting.healthreport.uploadEnabled", false); +user_pref("datareporting.healthreport.service.enabled", false); +user_pref("datareporting.policy.dataSubmissionEnabled", false); + +// "Allow Firefox to make personalized extension recommendations" +user_pref("browser.discovery.enabled", false); + +// PREF: Disable Shield/Heartbeat/Normandy (Mozilla user rating telemetry) +user_pref("app.normandy.enabled", false); +user_pref("app.normandy.api_url", ""); +user_pref("extensions.shield-recipe-client.enabled", false); +user_pref("app.shield.optoutstudies.enabled", false); + +// PREF: Disable Mozilla telemetry/experiments +user_pref("toolkit.telemetry.enabled", false); +user_pref("toolkit.telemetry.unified", false); +user_pref("toolkit.telemetry.archive.enabled", false); +user_pref("experiments.supported", false); +user_pref("experiments.enabled", false); +user_pref("experiments.manifest.uri", ""); + +// PREF: Disable face detection +user_pref("camera.control.face_detection.enabled", false); + +// PREF: Disable GeoIP lookup on your address to set default search engine region +user_pref("browser.search.countryCode", "US"); +user_pref("browser.search.region", "US"); +user_pref("browser.search.geoip.url", ""); + +// PREF: Don't use Mozilla-provided location-specific search engines +user_pref("browser.search.geoSpecificDefaults", false); + +// PREF: Do not automatically send selection to clipboard on some Linux platforms +user_pref("clipboard.autocopy", false); + +// PREF: Don't reveal build ID +user_pref("general.buildID.override", "20100101"); +user_pref("browser.startup.homepage_override.buildID", "20100101"); + +// PREF: Opt-out of add-on metadata updates +user_pref("extensions.getAddons.cache.enabled", false); + +// PREF: Disable sending Firefox crash reports to Mozilla servers +user_pref("breakpad.reportURL", ""); + +// PREF: Disable sending reports of tab crashes to Mozilla (about:tabcrashed), don't nag user about unsent crash reports +user_pref("browser.tabs.crashReporting.sendReport", false); +user_pref("browser.crashReports.unsubmittedCheck.enabled", false); + +// PREF: Disable FlyWeb (discovery of LAN/proximity IoT devices that expose a Web interface) +user_pref("dom.flyweb.enabled", false); + +// PREF: Disable Firefox Hello metrics collection +user_pref("loop.logDomains", false);