diff --git a/flake.nix b/flake.nix
index 10e0548..24449e4 100755
--- a/flake.nix
+++ b/flake.nix
@@ -19,6 +19,11 @@
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
+
+ nur = {
+ url = "github:nix-community/NUR";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
};
outputs =
diff --git a/modules/web/default.nix b/modules/web/default.nix
index f8d6f9a..85d40a5 100644
--- a/modules/web/default.nix
+++ b/modules/web/default.nix
@@ -1,17 +1,8 @@
{ pkgs, inputs, ... }:
{
- # TODO: switch to home manager
- # then configure plugins n shi here too
- # make a shared section (about:config sections, plugins, profiles) and then have two separate configs in firefox.nix and librewolf.nix
- # https://wiki.nixos.org/wiki/Librewolf
- # https://wiki.nixos.org/wiki/Firefox/en
imports = [
./firefox.nix
- ];
-
- users.users.djai.packages = with pkgs; [
- librewolf
- firefox
+ ./librewolf.nix
];
}
diff --git a/modules/web/extensions/darkreader.nix b/modules/web/extensions/darkreader.nix
new file mode 100644
index 0000000..6e8f800
--- /dev/null
+++ b/modules/web/extensions/darkreader.nix
@@ -0,0 +1,55 @@
+{ pkgs, ... }:
+
+{
+ extensions = {
+ packages = [ pkgs.nur.repos.rycee.firefox-addons.darkreader ];
+ settings = {
+ "darkreader".settings = { # TODO: Check id
+ enabled = true;
+ fetchNews = true;
+ theme = {
+ mode = 1;
+ brightness = 100;
+ contrast = 100;
+ grayscale = 0;
+ sepia = 0;
+ useFont = false;
+ fontFamily = "Open Sans";
+ textStroke = 0;
+ engine = "dynamicTheme";
+ stylesheet = "";
+ darkSchemeBackgroundColor = "#24273a";
+ darkSchemeTextColor = "#cad3f5";
+ lightSchemeBackgroundColor = "#eff1f5";
+ lightSchemeTextColor = "#4c4f69";
+ scrollbarColor = "auto";
+ selectionColor = "#5b6078";
+ styleSystemControls = false;
+ lightColorScheme = "Default";
+ darkColorScheme = "Default";
+ immediateModify = false;
+ };
+ enabledByDefault = true;
+ changeBrowserTheme = false;
+ syncSettings = false;
+ syncSitesFixes = false;
+ automation = {
+ enabled = false;
+ mode = "system";
+ behavior = "OnOff";
+ enable = false;
+ };
+ time = {
+ activation = "18:00";
+ deactivation = "9:00";
+ };
+ previewNewDesign = true;
+ previewNewestDesign = false;
+ enableForPDF = true;
+ enableForProtectedPages = false;
+ enableContextMenus = false;
+ detectDarkTheme = false;
+ };
+ };
+ };
+}
diff --git a/modules/web/extensions/default.nix b/modules/web/extensions/default.nix
new file mode 100644
index 0000000..75a7b82
--- /dev/null
+++ b/modules/web/extensions/default.nix
@@ -0,0 +1,21 @@
+{ ... }:
+
+{
+ imports = [
+ ./darkeader.nix
+ ./sidebery.nix
+ ./ublock.nix
+ ./vimium.nix
+ # ./sponsorblock.nix
+ # ./xkit.nix
+ ];
+
+ extensions.packages = with pkgs.nur.repos.rycee.firefox-addons [
+ # no settings
+ tablissng
+ firefox-color
+
+ # no exportable settings
+ bitwarden
+ ];
+}
diff --git a/modules/web/extensions/sidebery.css b/modules/web/extensions/sidebery.css
new file mode 100644
index 0000000..af55dfd
--- /dev/null
+++ b/modules/web/extensions/sidebery.css
@@ -0,0 +1,46 @@
+#root.root {--tabs-activated-bg: var(--ctp-surface2);}
+#root.root {--tabs-normal-fg: var(--ctp-text);}
+#root.root {--tabs-activated-fg: var(--ctp-subtext1);}
+#root.root {--tabs-notification-badge-dot-bg: var(--ctp-maroon);}
+#root.root {--tabs-notification-badge-count-bg: var(--ctp-red);}
+#root.root {--badge-bg: var(--ctp-blue);}
+#root.root {--badge-fg: var(--ctp-text);}
+#root.root {--badge-urgent-bg: var(--ctp-maroon);}
+#root.root {--border: var(--ctp-maroon);}
+#root.root {--status-ok: var(--ctp-green);}
+#root.root {--status-err: var(--ctp-maroon);}
+#root.root {--status-active: var(--ctp-teal);}
+#root.root {--status-notice: var(--ctp-sky);}
+#root.root {--bookmarks-node-activated-fg: var(--ctp-surface2);}
+#root.root {--bookmarks-expanded-folder-bg: var(--ctp-mantle);}
+#root.root {--frame-fg: var(--ctp-text);}
+#root.root {--frame-bg: var(--ctp-mantle);}
+
+:root {
+ --ctp-rosewater: #f4dbd6;
+ --ctp-flamingo: #f0c6c6;
+ --ctp-pink: #f5bde6;
+ --ctp-mauve: #c6a0f6;
+ --ctp-red: #ed8796;
+ --ctp-maroon: #ee99a0;
+ --ctp-peach: #f5a97f;
+ --ctp-yellow: #eed49f;
+ --ctp-green: #a6da95;
+ --ctp-teal: #8bd5ca;
+ --ctp-sky: #91d7e3;
+ --ctp-sapphire: #7dc4e4;
+ --ctp-blue: #8aadf4;
+ --ctp-lavender: #b7bdf8;
+ --ctp-text: #c5cff5;
+ --ctp-subtext1: #b3bce0;
+ --ctp-subtext0: #a1aacb;
+ --ctp-overlay2: #8f97b7;
+ --ctp-overlay1: #7d84a2;
+ --ctp-overlay0: #6c728d;
+ --ctp-surface2: #5a5f78;
+ --ctp-surface1: #484c64;
+ --ctp-surface0: #363a4f;
+ --ctp-base: #24273a;
+ --ctp-mantle: #1e2030;
+ --ctp-crust: #181926;
+}
diff --git a/modules/web/extensions/sidebery.nix b/modules/web/extensions/sidebery.nix
new file mode 100644
index 0000000..ace3a9f
--- /dev/null
+++ b/modules/web/extensions/sidebery.nix
@@ -0,0 +1,304 @@
+{ pkgs, ... }:
+
+{
+ extensions = {
+ packages = [ pkgs.nur.repos.rycee.firefox-addons.sidebery ];
+ settings = {
+ "sidebery".settings = { # TODO: Check id
+ settings = {
+ nativeScrollbars = true;
+ nativeScrollbarsThin = true;
+ nativeScrollbarsLeft = false;
+ selWinScreenshots = false;
+ updateSidebarTitle = true;
+ markWindow = false;
+ markWindowPreface = "[Sidebery] ";
+ copyTemplates = "HTML:%B%CT\nMarkdown:%B[%CT](%U)";
+ updTooltipDelay = 100;
+ selLen = true;
+ ctxMenuNative = false;
+ ctxMenuRenderInact = true;
+ ctxMenuRenderIcons = true;
+ omniReopenInCtr = true;
+ omniSwitchToPanel = true;
+ omniMoveToPanel = true;
+ omniMoveToGroup = true;
+ navBarLayout = "horizontal";
+ navBarInline = true;
+ navBarSide = "left";
+ navBtnCount = true;
+ hideEmptyPanels = true;
+ hideDiscardedTabPanels = false;
+ navActTabsPanelLeftClickAction = "none";
+ navActTabsPanelLeftClickTabPos = "general";
+ navActBookmarksPanelLeftClickAction = "none";
+ navTabsPanelMidClickAction = "discard";
+ navBookmarksPanelMidClickAction = "none";
+ navSwitchPanelsWheel = true;
+ subPanelRecentlyClosedBar = true;
+ subPanelBookmarks = true;
+ subPanelHistory = true;
+ subPanelSync = false;
+ groupLayout = "grid";
+ containersSortByName = false;
+ skipEmptyPanels = false;
+ dndTabAct = true;
+ dndTabActDelay = 750;
+ dndTabActMod = "none";
+ dndExp = "pointer";
+ dndExpDelay = 750;
+ dndExpMod = "none";
+ dndOutside = "win";
+ dndOutsideThresholdTimeout = 350;
+ dndActTabFromLink = true;
+ dndActSearchTab = true;
+ dndMoveTabs = false;
+ dndMoveBookmarks = false;
+ dndTabToPanelPos = "end";
+ searchBarMode = "dynamic";
+ searchPanelSwitch = "same_type";
+ searchTabSwitch = false;
+ searchMenuTrig = false;
+ searchInputTimeout = 300;
+ warnOnMultiTabClose = "collapsed";
+ activateLastTabOnPanelSwitching = true;
+ activateLastTabOnPanelSwitchingLoadedOnly = true;
+ switchPanelAfterSwitchingTab = "always";
+ scrollPanelAfterSwitchingTab = "always";
+ tabRmBtn = "hover";
+ activateAfterClosing = "next";
+ activateAfterClosingStayInPanel = false;
+ activateAfterClosingGlobal = false;
+ activateAfterClosingNoFolded = true;
+ activateAfterClosingNoDiscarded = true;
+ askNewBookmarkPlace = true;
+ tabsRmUndoNote = true;
+ tabsUnreadMark = false;
+ tabsBadge = true;
+ tabsBadgeRules = "minIdleTime:5000; urgent";
+ tabsReloadLimit = 5;
+ tabsReloadLimitNotif = true;
+ showNewTabBtns = true;
+ newTabBarPosition = "after_tabs";
+ tabsPanelSwitchActMove = false;
+ tabsPanelSwitchActMoveAuto = true;
+ tabsUrlInTooltip = "full";
+ tabsContainerInTooltip = true;
+ newTabCtxReopen = false;
+ tabWarmupOnHover = true;
+ tabSwitchDelay = 0;
+ forceDiscard = true;
+ tabUpdDelay = 150;
+ forceUpdTooltip = false;
+ moveNewTabPin = "start";
+ moveNewTabParent = "first_child";
+ moveNewTabParentIndent = false;
+ moveNewTabParentActPanel = false;
+ moveNewTabButton = "end";
+ moveNewTabButtonActivePin = "start";
+ moveNewTab = "end";
+ moveNewTabActivePin = "start";
+ autoScrollToNewTab = true;
+ pinnedTabsPosition = "panel";
+ pinnedTabsList = false;
+ pinnedAutoGroup = false;
+ pinnedNoUnload = false;
+ pinnedNoUnloadExplicit = true;
+ pinnedForcedDiscard = false;
+ tabsTree = true;
+ tabsTreeLimit = "none";
+ autoFoldTabs = false;
+ autoFoldTabsExcept = "none";
+ autoExpandTabs = false;
+ autoExpandTabsOnNew = false;
+ rmChildTabs = "folded";
+ tabsLvlDots = true;
+ discardFolded = false;
+ discardFoldedDelay = 0;
+ discardFoldedDelayUnit = "sec";
+ tabsTreeBookmarks = true;
+ treeRmOutdent = "branch";
+ autoGroupOnClose = false;
+ autoGroupOnClose0Lvl = false;
+ autoGroupOnCloseMouseOnly = false;
+ ignoreFoldedParent = false;
+ showNewGroupConf = true;
+ sortGroupsFirst = true;
+ colorizeTabs = false;
+ colorizeTabsSrc = "domain";
+ colorizeTabsBranches = true;
+ colorizeTabsBranchesSrc = "domain";
+ inheritCustomColor = true;
+ previewTabs = false;
+ previewTabsMode = "p";
+ previewTabsPageModeFallback = "n";
+ previewTabsInlineHeight = 70;
+ previewTabsPopupWidth = 280;
+ previewTabsTitle = 2;
+ previewTabsUrl = 1;
+ previewTabsSide = "right";
+ previewTabsDelay = 500;
+ previewTabsFollowMouse = true;
+ previewTabsInPageOffsetY = 0;
+ previewTabsInPageOffsetX = 0;
+ previewTabsCropRight = 0;
+ hideInact = false;
+ hideFoldedTabs = false;
+ hideFoldedParent = "none";
+ hideUnloadedTabs = false;
+ nativeHighlight = true;
+ warnOnMultiBookmarkDelete = "collapsed";
+ autoCloseBookmarks = false;
+ autoRemoveOther = false;
+ highlightOpenBookmarks = false;
+ activateOpenBookmarkTab = false;
+ showBookmarkLen = true;
+ bookmarksRmUndoNote = true;
+ loadBookmarksOnDemand = true;
+ pinOpenedBookmarksFolder = true;
+ oldBookmarksAfterSave = "ask";
+ historyTitleUpdInterval = 1100;
+ fontSize = "m";
+ animations = true;
+ animationSpeed = "norm";
+ theme = "proton";
+ density = "default";
+ colorScheme = "ff";
+ snapNotify = true;
+ snapExcludePrivate = false;
+ snapInterval = 0;
+ snapIntervalUnit = "min";
+ snapLimit = 0;
+ snapLimitUnit = "snap";
+ snapAutoExport = false;
+ snapAutoExportType = "json";
+ snapAutoExportPath = "Sidebery/snapshot-%Y.%M.%D-%h.%m.%s";
+ snapMdFullTree = false;
+ hScrollAction = "none";
+ onePanelSwitchPerScroll = false;
+ wheelAccumulationX = true;
+ wheelAccumulationY = true;
+ navSwitchPanelsDelay = 128;
+ scrollThroughTabs = "none";
+ scrollThroughTabsGlobPinIsolate = true;
+ scrollThroughVisibleTabs = true;
+ scrollThroughTabsSkipDiscarded = true;
+ scrollThroughTabsExceptOverflow = true;
+ scrollThroughTabsCyclic = false;
+ scrollThroughTabsScrollArea = 0;
+ scrollThroughTabsPreselAct = false;
+ scrollThroughTabsPreselDelay = 0;
+ autoMenuMultiSel = true;
+ multipleMiddleClose = false;
+ longClickDelay = 500;
+ wheelThreshold = false;
+ wheelThresholdX = 10;
+ wheelThresholdY = 60;
+ tabDoubleClick = "none";
+ tabsSecondClickActPrev = false;
+ tabsSecondClickActPrevPanelOnly = false;
+ tabsSecondClickActPrevNoUnload = false;
+ shiftSelAct = true;
+ ctrlSelAct = true;
+ activateOnMouseUp = false;
+ tabCloseOnMouseUp = true;
+ tabLongLeftClick = "none";
+ tabLongRightClick = "none";
+ tabMiddleClick = "close";
+ tabPinnedMiddleClick = "discard";
+ tabMiddleClickCtrl = "discard";
+ tabMiddleClickShift = "duplicate";
+ tabCloseMiddleClick = "close";
+ tabsPanelLeftClickAction = "none";
+ tabsPanelLeftClickTabPos = "general";
+ tabsPanelDoubleClickAction = "tab";
+ tabsPanelDoubleClickTabPos = "general";
+ tabsPanelRightClickAction = "menu";
+ tabsPanelMiddleClickAction = "tab";
+ tabsPanelMiddleClickTabPos = "general";
+ newTabMiddleClickAction = "new_child";
+ bookmarksLeftClickAction = "open_in_act";
+ bookmarksLeftClickActivate = false;
+ bookmarksLeftClickPos = "default";
+ bookmarksMidClickAction = "open_in_new";
+ bookmarksMidClickActivate = false;
+ bookmarksMidClickRemove = false;
+ bookmarksMidClickPos = "default";
+ historyLeftClickAction = "open_in_act";
+ historyLeftClickActivate = false;
+ historyLeftClickPos = "default";
+ historyMidClickAction = "open_in_new";
+ historyMidClickActivate = false;
+ historyMidClickPos = "default";
+ syncUseFirefox = false;
+ syncUseGoogleDrive = false;
+ syncUseGoogleDriveApi = false;
+ syncSaveSettings = false;
+ syncSaveCtxMenu = false;
+ syncSaveStyles = false;
+ syncSaveKeybindings = false;
+ selectActiveTabFirst = true;
+ selectCyclic = false;
+ loopPanelsIgnoreHidden = false;
+ kbNewTabInPanelPos = "general"
+ };
+ sidebar = {
+ panels = {
+ XAC10qlx5Gg2 = {
+ type = 2;
+ id = "XAC10qlx5Gg2";
+ name = "Default";
+ color = "toolbar";
+ iconSVG = "icon_tabs";
+ lockedPanel = false;
+ skipOnSwitching = false;
+ noEmpty = false;
+ newTabCtx = "none";
+ dropTabCtx = "none";
+ moveExcludedTo = -1;
+ bookmarksFolderId = "PHhiPLb-YBcr";
+ srcPanelConfig = {
+ id = "WmRe539DYInZ";
+ autoConvert = true;
+ tempMode = false;
+ viewMode = "tree"
+ }
+ }
+ };
+ nav = [
+ "XAC10qlx5Gg2";
+ "add_tp";
+ "sp-0";
+ "settings";
+ "remute_audio_tabs";
+ "create_snapshot"
+ ];
+ };
+ sidebarCSS = builtins.readFile ./sidebery.css;
+ keybindings = {
+ _execute_sidebar_action = "Ctrl+E";
+ activate = "Alt+Space";
+ reset_selection = "Alt+R";
+ next_panel = "Alt+K";
+ prev_panel = "Alt+J";
+ up = "Alt+Up";
+ down = "Alt+Down";
+ up_shift = "Alt+Shift+Up";
+ down_shift = "Alt+Shift+Down";
+ sel_child_tabs = "Alt+C";
+ unload_tabs = "Alt+Q";
+ unload_other_tabs_in_panel = "Ctrl+Shift+Q";
+ unload_all_tabs_in_inact_panels = "Alt+Shift+Q";
+ switch_to_panel_0 = "Alt+1";
+ switch_to_panel_1 = "Alt+2";
+ switch_to_panel_2 = "Alt+3";
+ switch_to_panel_3 = "Alt+4";
+ switch_to_panel_4 = "Alt+5";
+ switch_to_panel_5 = "Alt+6";
+ switch_to_panel_6 = "Alt+7"
+ };
+ };
+ };
+ };
+}
+
diff --git a/modules/web/extensions/sponsorblock.nix b/modules/web/extensions/sponsorblock.nix
new file mode 100644
index 0000000..d8831fd
--- /dev/null
+++ b/modules/web/extensions/sponsorblock.nix
@@ -0,0 +1,122 @@
+{ pkgs, ... }:
+
+{
+ extensions = {
+ packages = [ pkgs.nur.repos.rycee.firefox-addons.sponsorblock ];
+ settings = {
+ "sponsorblock".settings = { # TODO: Check id
+ changeChapterColor = true;
+ showZoomToFillError2 = false;
+ autoSkipOnMusicVideosUpdate = true;
+ categoryPillUpdate = true;
+ chapterCategoryAdded = true;
+ barTypes = {
+ preview-chooseACategory = { color = "#ffffff"; opacity = "0.7" };
+ sponsor = { color = "#62a0ea"; opacity = "0.7"; };
+ preview-sponsor = { color = "#007800"; opacity = "0.7"; };
+ selfpromo = { color = "#f8e45c"; opacity = "0.7"; };
+ preview-selfpromo = { color = "#bfbf35"; opacity = "0.7"; };
+ exclusive_access = { color = "#a51d2d"; opacity = "0.7"; };
+ interaction = { color = "#57e389"; opacity = "0.7"; };
+ preview-interaction = { color = "#6c0087"; opacity = "0.7"; };
+ intro = { color = "#ffa348"; opacity = "0.7"; };
+ preview-intro = { color = "#008080"; opacity = "0.7"; };
+ outro = { color = "#ffa348"; opacity = "0.7"; };
+ preview-outro = { color = "#000070"; opacity = "0.7"; };
+ preview = { color = "#ffa348"; opacity = "0.7"; };
+ preview-preview = { color = "#005799"; opacity = "0.7"; };
+ hook = { color = "#395699"; opacity = "0.8"; };
+ preview-hook = { color = "#273963"; opacity = "0.7"; };
+ music_offtopic = { color = "#ff9900"; opacity = "0.7"; };
+ preview-music_offtopic = { color = "#a6634a"; opacity = "0.7"; };
+ poi_highlight = { color = "#ff1684"; opacity = "0.7"; };
+ preview-poi_highlight = { color = "#9b044c"; opacity = "0.7"; };
+ filler = { color = "#7300FF"; opacity = "0.9"; };
+ preview-filler = { color = "#2E0066"; opacity = "0.7"; };
+ chapter = { color = "#ffd983"; opacity = "0.0"; };
+ categorySelections = [
+ { name = "sponsor"; option = 2; }
+ { name = "chapter"; option = 0; }
+ { name = "selfpromo"; option = 2; }
+ { name = "preview"; option = 0; }
+ { name = "outro"; option = 0; }
+ { name = "intro"; option = 0; }
+ { name = "interaction"; option = 2; }
+ ];
+ permissions = {
+ sponsor = true;
+ selfpromo = true;
+ exclusive_access = true;
+ interaction = true;
+ intro = true;
+ outro = true;
+ preview = true;
+ hook = true;
+ music_offtopic = true;
+ filler = true;
+ poi_highlight = true;
+ chapter = false
+ };
+ individiousInstances = ["yewtu.be" "invidious.djairo.dev" "invidious.tiekotter.dev" ];
+ showDeArrowPromotion = false;
+ segmentListDefaultTab = 0;
+ renderSegmentsAsChapters = false;
+ forceChannelCheck = false;
+ sponsorTimesContributed = 0;
+ submissionCountSinceCategories = 0;
+ showTimeWithSkips = true;
+ disableSkipping = false;
+ muteSegments = true;
+ fullVideoSegments = true;
+ fullVideoLabelsOnThumbnails = true;
+ manualSkipOnFullVideo = false;
+ trackViewCount = true;
+ trackViewCountInPrivate = true;
+ trackDownvotes = true;
+ trackDownvotesInPrivate = false;
+ dontShowNotice = false;
+ showUpcomingNotice = false;
+ noticeVisibilityMode = 3;
+ hideVideoPlayerControls = false;
+ hideInfoButtonPlayerControls = false;
+ hideDeleteButtonPlayerControls = false;
+ hideUploadButtonPlayerControls = false;
+ hideSkipButtonPlayerControls = false;
+ hideDiscordLaunches = 0;
+ hideDiscordLink = false;
+ supportInvidious = true;
+ serverAddress = "https =//sponsor.ajay.app";
+ minDuration = 0;
+ skipNoticeDuration = 4;
+ audioNotificationOnSkip = false;
+ checkForUnlistedVideos = false;
+ testingServer = false;
+ ytInfoPermissionGranted = false;
+ allowExpirements = true;
+ showDonationLink = true;
+ showPopupDonationCount = 0;
+ showUpsells = true;
+ showNewFeaturePopups = true;
+ donateClicked = 0;
+ autoHideInfoButton = true;
+ showChapterInfoMessage = true;
+ darkMode = true;
+ showCategoryGuidelines = true;
+ showSegmentNameInChapterBar = true;
+ showAutogeneratedChapters = true;
+ showCreatorChapters = true;
+ useVirtualTime = true;
+ showSegmentFailedToFetchWarning = true;
+ allowScrollingToEdit = true;
+ showDeArrowInSettings = false;
+ colorPalette = {
+ red = "#780303";
+ white = "#ffffff";
+ locked = "#ffc83d";
+ };
+ };
+ };
+ };
+
+}
+
diff --git a/modules/web/extensions/ublock.nix b/modules/web/extensions/ublock.nix
new file mode 100644
index 0000000..86aaa62
--- /dev/null
+++ b/modules/web/extensions/ublock.nix
@@ -0,0 +1,93 @@
+{ pkgs, ... }:
+
+{
+ extensions = {
+ packages = [ pkgs.nur.repos.rycee.firefox-addons.ublock-origin ];
+ settings = {
+ "uBlock0@raymondhill.net".settings = {
+ userSettings = {
+ externalLists = "https://raw.githubusercontent.com/laylavish/uBlockOrigin-HUGE-AI-Blocklist/main/list.txt";
+ importedLists = [
+ "https://raw.githubusercontent.com/laylavish/uBlockOrigin-HUGE-AI-Blocklist/main/list.txt"
+ ];
+ popupPanelSections: 31;
+ };
+ selectedFilterLists = [
+ "user-filters"
+ "ublock-filters"
+ "ublock-badware"
+ "ublock-privacy"
+ "ublock-quick-fixes"
+ "ublock-unbreak"
+ "easylist"
+ "easyprivacy"
+ "LegitimateURLShortener"
+ "adguard-spyware-url"
+ "urlhaus-1"
+ "curben-phishing"
+ "plowe-0"
+ "fanboy-cookiemonster"
+ "ublock-cookies-easylist"
+ "fanboy-social"
+ "fanboy-thirdparty_social"
+ "easylist-chat"
+ "easylist-newsletters"
+ "easylist-notifications"
+ "ublock-annoyances"
+ "https://raw.githubusercontent.com/laylavish/uBlockOrigin-HUGE-AI-Blocklist/main/list.txt"
+ ];
+ whitelist = [
+ "chrome-extension-scheme"
+ "moz-extension-scheme"
+ ];
+ dynamicFilteringString = ''
+ behind-the-scene * * noop
+ behind-the-scene * inline-script noop
+ behind-the-scene * 1p-script noop
+ behind-the-scene * 3p-script noop
+ behind-the-scene * 3p-frame noop
+ behind-the-scene * image noop
+ behind-the-scene * 3p noop
+ '';
+ hostnameSwitchesString = ''
+ no-large-media: behind-the-scene false
+ no-csp-reports: * true
+ no-scripting: * true
+ no-scripting: duckduckgo.com false
+ no-scripting: html.duckduckgo.com false
+ no-scripting: groningenhuurt.mijndak.nl false
+ no-scripting: brightspace.rug.nl false
+ no-scripting: signon.rug.nl false
+ no-scripting: docs.djairo.dev false
+ no-scripting: git.djairo.dev false
+ no-scripting: www.buienradar.nl false
+ no-scripting: www.openstreetmap.org false
+ no-scripting: qbittorrent.djairo.dev false
+ no-scripting: backrest.djairo.dev false
+ no-scripting: dozzle.djairo.dev false
+ no-scripting: opencloud.djairo.dev false
+ no-scripting: backrest.m.djairo.dev false
+ no-scripting: dozzle.m.djairo.dev false
+ no-scripting: vault.m.djairo.dev false
+ no-scripting: wg-easy.u.djairo.dev false
+ no-scripting: invidious.djairo.dev false
+ no-scripting: radarr.m.djairo.dev false
+ no-scripting: sonarr.m.djairo.dev false
+ no-scripting: navidrome.djairo.dev false
+ no-scripting: navidrome.u.djairo.dev false
+ no-scripting: mijnzakelijk.belastingdienst.nl false
+ no-scripting: www.belastingdienst.nl false
+ no-scripting: www.overleaf.com false
+ no-scripting: sci-hub.box false
+ no-scripting: riichi.djairo.dev false
+ no-scripting: riichi.garfield.sh false
+ no-scripting: ocasys.rug.nl false
+ no-scripting: rooster.rug.nl false
+ no-scripting: www.tumblr.com false
+ no-scripting: music.youtube.com false
+ '';
+ };
+ };
+ };
+
+}
diff --git a/modules/web/extensions/vimium.css b/modules/web/extensions/vimium.css
new file mode 100644
index 0000000..6cb5742
--- /dev/null
+++ b/modules/web/extensions/vimium.css
@@ -0,0 +1,216 @@
+/* Catppuccin Macchiato Palette */
+
+:root {
+ --vimium-rosewater: #f4dbd6;
+ --vimium-peach: #f5a97f;
+ --vimium-green: #a6da95;
+ --vimium-blue: #8aadf4;
+ --vimium-lavender: #b7bdf8;
+ --vimium-text: #cad3f5;
+ --vimium-mauve: #c6a0f6;
+ --vimium-subtext0: #a5adcb
+ --vimium-subtext1: #b8c0e0
+ --vimium-surface2: #5b6078;
+ --vimium-surface1: #494d64;
+ --vimium-surface0: #363a4f;
+ --vimium-base: #24273a;
+ --vimium-mantle: #1e2030;
+ --vimium-crust: #181926;
+
+ --vimium-foreground-text-color: var(--vimium-text);
+ --vimium-background-text-color: var(--vimium-text);
+ --vimium-foreground-color: var(--vimium-mantle);
+}
+
+/* link hints */
+
+#vimium-hint-marker-container div.internal-vimium-hint-marker,
+#vimium-hint-marker-container div.vimiumHintMarker {
+ padding: 3px 4px;
+ background: var(--vimium-mauve);
+ border: 10px;
+ border-color: var(--vimium-mantle);
+ box-shadow: none;
+}
+
+#vimium-hint-marker-container div span {
+ color: var(--vimium-mantle);
+ text-shadow: none;
+}
+
+#vimium-hint-marker-container div span.matchingCharacter {
+ color: var(--vimium-surface2);
+}
+
+/* vomnibar */
+
+#vomnibar {
+ background: var(--vimium-base);
+ border: 2px solid var(--vimium-lavender);
+ animation: show 200ms cubic-bezier(0, 0, 0.2, 1) forwards;
+ max-height: calc(100vh - 70px);
+ overflow: hidden;
+ border-radius: 10px;
+}
+
+@keyframes show {
+ 0% {
+ transform: translateY(50px);
+ opacity: 0;
+ }
+ 100% {
+ transform: translateY(0);
+ opacity: 1;
+ }
+}
+
+#vomnibar input {
+ color: var(--vimium-text);
+ background: var(--vimium-base);
+ border: none;
+ box-shadow: none;
+ height: unset;
+ padding: 16px 30px;
+}
+
+#vomnibar #vomnibar-search-area {
+ border: none;
+ padding: unset;
+ background: var(--vimium-base);
+}
+
+#vomnibar ul {
+ padding: 0;
+ margin: 0;
+ background: var(--vimium-base);
+ border-top: 1px solid var(--vimium-surface0);
+}
+
+#vomnibar li {
+ padding: 10px;
+ border-bottom: 1px solid var(--vimium-surface0);
+}
+
+#vomnibar li .top-half,
+#vomnibar li .bottom-half {
+ padding: 3px 0;
+}
+
+#vomnibar li .source {
+ color: var(--vimium-mauve);
+}
+
+#vomnibar li em,
+#vomnibar li .title {
+ color: var(--vimium-blue);
+ font-weight: bold;
+}
+
+#vomnibar li .url {
+ color: var(--vimium-rosewater);
+}
+
+#vomnibar li .match {
+ color: var(--vimium-green);
+ font-weight: bold;
+}
+
+#vomnibar li .title .match {
+ color: var(--vimium-blue);
+}
+
+#vomnibar li.selected {
+ background-color: var(--vimium-surface0);
+}
+
+/* search/find hud */
+
+div#hud-container {
+ background: var(--vimium-base);
+ border: 1px solid var(--vimium-text);
+ box-shadow: none;
+}
+
+div#hud-container span#hud-find-input,
+div#hud-container div#hud {
+ color: var(--vimium-text);
+}
+
+div#hud-container .hud-find,
+div#hud-container #search-area {
+ background-color: var(--vimium-base);
+}
+
+::selection {
+ background-color: var(--vimium-peach) !important;
+ color: var(--vimium-mantle) !important;
+}
+
+/* vimium settings */
+
+body.vimium-body header,
+body.vimium-body label,
+body.vimium-body {
+ color: var(--vimium-text);
+ background-color: var(--vimium-base);
+}
+
+body.vimium-body button,
+body.vimium-body footer,
+body.vimium-body textarea,
+body.vimium-body input {
+ scrollbar-color: var(--vimium-surface2) var(--vimium-surface0);
+ background-color: var(--vimium-mantle);
+}
+
+body.vimium-body #wrapper .example {
+ color: var(--vimium-subtext1);
+}
+
+body.vimium-body a {
+ color: var(--vimium-lavender);
+}
+
+body.vimium-body input,
+body.vimium-body button {
+ border-color: var(--vimium-crust);
+}
+
+body.vimium-body button:focus {
+ border-color: var(--vimium-blue);
+}
+
+/* help dialog */
+
+#dialog {
+ color: var(--vimium-text);
+ background: var(--vimium-mantle);
+}
+
+#dialog .divider {
+ background: var(--vimium-text);
+}
+
+#dialog a,
+#dialog span.vim {
+ color: var(--vimium-blue);
+}
+
+#dialog div.help-description,
+#dialog h2,
+#dialog h1,
+#dialog a#close {
+ color: var(--vimium-text);
+}
+
+#dialog a#close:hover {
+ color: var(--vimium-surface0);
+}
+
+#dialog .key,
+body.vimium-body .key {
+ color: var(--vimium-text);
+ background: var(--vimium-mantle);
+ border-color: var(--vimium-surface1);
+}
+
diff --git a/modules/web/extensions/vimium.nix b/modules/web/extensions/vimium.nix
new file mode 100644
index 0000000..aa1a597
--- /dev/null
+++ b/modules/web/extensions/vimium.nix
@@ -0,0 +1,54 @@
+{ pkgs, ...}:
+
+{
+ extensions = {
+ packages = [ pkgs.nur.repos.rycee.firefox-addons.vimium ];
+ settings = {
+ "vimium".settings = { # TODO: check correct
+ exclusionRules = [
+ { passKeys = ""; pattern = "https?://www.overleaf.com/*"}
+ { passKeys = ""; pattern = "https?://neetcode.io/*"}
+ ];
+ keyMappings = ''
+ # defaults
+ unmap R
+ unmap
+ map c LinkHints.activateMode action=hover
+
+ # swap local and global marks
+ map m Marks.activateCreateMode swap
+ map ' Marks.activateGotoMode swap
+
+ # move tab all the way left/right
+ map moveTabLeft count=99
+ map moveTabRight count=99
+
+ # scrolling
+ map D scrollFullPageDown
+ map U scrollFullPageUp
+ map a scrollDown count=5
+ map d scrollUp count=5
+ map J scrollDown count=5
+ map K scrollUp count=5
+ '';
+ newTabCustomUrl = "web.tabliss.io";
+ newTabDestination = "customUrl";
+ regexFindMode = true;
+ searchEngines = ''
+ b: https://bulbapedia.bulbagarden.net/w/index.php?title=Special%3ASearch&search=%s&go=Go Bulbapedia
+ w: https://www.wikipedia.org/w/index.php?title=Special:Search&search=%s Wikipedia
+ d: https://duckduckgo.com/?q=%s Duckduckgo
+ o: https://www.openstreetmap.org/search?query=%s Openstreetmap
+ g: https://www.google.com/search?q=%s Google
+ y: https://www.youtube.com/results?search_query=%s Youtube
+ e: https://www.ecosia.org/search?method=index&q=%s Ecosia
+ a: https://wiki.archlinux.org/index.php?search=%s Archwiki
+ ym: https://music.youtube.com/search?q=%s Youtube Music
+ m: https://www.google.com/maps?q=%s Google maps
+ '';
+ userDefinedLinkHintCss = builtins.readFile ./vimium.css;
+ };
+ };
+ };
+
+}
diff --git a/modules/web/extensions/xkit.nix b/modules/web/extensions/xkit.nix
new file mode 100644
index 0000000..bcc459e
--- /dev/null
+++ b/modules/web/extensions/xkit.nix
@@ -0,0 +1,109 @@
+{ pkgs, ...}:
+
+{
+ extensions = {
+ packages = [ pkgs.nur.repos.rycee.firefox-addons.xkit-rewritten ];
+ settings = {
+ "xkit-rewritten".settings = { # TODO: check correct
+ enabledScripts = [
+ "anti_capitalism"
+ "vanilla_video"
+ "vanilla_audio"
+ "classic_search"
+ "mass_unliker"
+ "mutual_checker"
+ "no_recommended"
+ "notificationblock"
+ "open_in_tabs"
+ "quote_replies"
+ "trim_reblogs"
+ "tweaks"
+ "limit_checker"
+ "postblock"
+ "quick_reblog"
+ ];
+ anti_capitalism.preferences.includeBlazed = true;
+ classic_search.preferences.newTab = false,
+ collapsed_queue.preferences = {
+ runInDrafts = false;
+ runInQueue = true;
+ };
+ mutual_checker.preferences = {
+ showOnlyMutualNotifications = false;
+ showOnlyMutuals = false;
+ };
+ no_recommended.preferences = {
+ hide_answertime = true;
+ hide_blog_carousels = true;
+ hide_community_carousels = true;
+ hide_lightbox_related = true;
+ hide_radar = true;
+ hide_recommended_blogs = true;
+ hide_recommended_blogs_modal = true;
+ hide_recommended_community_posts = false;
+ hide_recommended_posts = true;
+ hide_search_communities = false;
+ hide_search_community_posts = false;
+ hide_tag_carousels = true;
+ };
+ panorama.preferences = {
+ communitiesEnable = true;
+ expandPostMedia = true;
+ mainEnable = true;
+ maxPostWidth = "1280px";
+ patioEnable = true;
+ };
+ quick_reblog.preferences = {
+ alreadyRebloggedEnabled = true;
+ alreadyRebloggedLimit = "10000";
+ popupPosition = "below";
+ queueTag = "";
+ quickTagsIntegration = true;
+ reblogTag = "";
+ rememberLastBlog = false;
+ showBlogSelector = true;
+ showCommentInput = false;
+ showTagSuggestions = false;
+ showTagsInput = true;
+ };
+ quote_replies.preferences = {
+ newTab = false;
+ tagReplyingBlog = false;
+ };
+ seen_posts.preferences = {
+ hideSeenPosts = false;
+ onlyDimAvatars = false;
+ };
+ tweaks.preferences = {
+ caught_up_line = false;
+ create_button_no_bubbles = false;
+ following_tab = false;
+ hide_activity_mutuals = false;
+ hide_activity_notification_badge = false;
+ hide_blaze_tip_labels = true;
+ hide_blocked_blogs = false;
+ hide_communities_notification_badge = false;
+ hide_filtered_posts = false;
+ hide_follower_counts = false;
+ hide_following_notification_badge = false;
+ hide_footer_tooltips = false;
+ hide_liked_posts = false;
+ hide_mini_follow = true;
+ hide_my_posts = false;
+ hide_new_posts_indicator = true;
+ highlight_contributed_content = false;
+ no_focus_shadow = false;
+ no_live = true;
+ no_where_were_we = true;
+ restore_attribution_links = false;
+ show_all_tags = true;
+ slim_filtered_screens = false;
+ subtle_activity_mutuals = false;
+ unsticky_post_avatars = false;
+ unsticky_tab_bar = false;
+ };
+ };
+ };
+ };
+
+}
diff --git a/modules/web/firefox.nix b/modules/web/firefox.nix
index ed24d03..260548a 100644
--- a/modules/web/firefox.nix
+++ b/modules/web/firefox.nix
@@ -1,46 +1,40 @@
{ lib, pkgs, ... }:
{
- programs.firefox = {
+ home-manager.users.djai.programs.firefox = {
enable = true;
- preferences = {
- "browser.resistFingerPrinting" = true;
- "browser.ipProtection.hasSeenFeature" = true;
- "browser.newtab.extensionController" = true;
- "browser.startup.homepage" = "moz-extension://cb0256df-d9d4-4624-94a2-b3e2ddc4a3e0/index.html";
- "browser.bookmarks.visibility" = "never";
- "browser.translations.popup" = false;
- "privacy.bounceTrackingProtection.mode" = "1";
- "privacy.donottrackheader.enabled" = true;
- "privacy.fingerprintingProtection" = true;
- "privacy.fingerprintingProtection.overrides" = "+AllTargets,-JSDateTimeUTC";
- "privacy.trackingprotection.enabled" = true;
- "reader.color_scheme" = "dark";
- };
-
- policies = {
- DisableTelemetry = true;
- ExtensionSettings = {
- "uBlock0@raymondhill.net" = {
- installation_mode = "force_installed";
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
- };
-
- "vimium@vimium.org" = {
- installation_mode = "force_installed";
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/vimium/latest.xpi";
- };
-
- "addon@darkreader.org" = { # FIXME: does not work
- installation_mode = "force_installed";
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/darkreader/latest.xpi";
- };
-
- "{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
- installation_mode = "force_installed";
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi";
+ policies.DisableTelemetry = true;
+ profiles = {
+ default = {
+ imports = [ ./extensions ];
+ userChrome = builtins.readFile ./userChrome.css;
+ settings = {
+ browser = {
+ resistFingerPrinting = true;
+ ipProtection.hasSeenFeature = true;
+ newtab.extensionController = true;
+ bookmarks.visibility = "never";
+ translations.popup = false;
+ };
+ privacy = {
+ bounceTrackingProtection.mode = 1;
+ donottrackheader.enabled = true;
+ baselineFingerprintingProtection = true;
+ fingerprintingProtection.overrides = "+AllTargets,-JSDateTimeUTC";
+ trackingprotection.enabled = true;
+ };
};
+ bookmarks.settings = [
+ { name = "Buienalarm Groningen"; url = "https://www.buienalarm.nl/nederland/groningen/10226"; }
+ { name = "piracy";
+ toolbar = false;
+ bookmarks = [ ]; # TODO: update these
+ }
+ ];
+ # TODO: test works
+ extensions.settings."uBlock0@raymondhill.net".settings.hostnameSwitchesString = ""; # override so we don't disable javascript
};
};
+
};
}
diff --git a/modules/web/librewolf.nix b/modules/web/librewolf.nix
new file mode 100644
index 0000000..95a0689
--- /dev/null
+++ b/modules/web/librewolf.nix
@@ -0,0 +1,60 @@
+{ pkgs, ... }:
+
+let
+ subdomains = [
+ "backrest"
+ "docs"
+ "dozzle"
+ "git"
+ "git"
+ "invidious"
+ "navidrome"
+ "opencloud"
+ "qbittorrent"
+ "radarr"
+ "riichi"
+ "sonarr"
+ "vault"
+ "wg-easy"
+ ];
+
+ generateSelfHosted = urls: [ map (url: { name = url; url ="https://{$url}.djairo.dev"; } ) urls ];
+in
+{
+ home-manager.users.djai.programs.librewolf = {
+ enable = true;
+ profiles = {
+ default = {
+ imports = [
+ ./extensions
+ ./extensions/xkit.nix
+ ./extensions/sponsorblock.nix
+ ];
+ # FIXME: palettes for tumblr does not exist in NUR
+ extensions.packages = with pkgs.nur.repos.rycee.firefox-addons [ privacy-redirect ];
+ userChrome = builtins.readFile ./userChrome.css;
+ bookmarks.settings = [
+ {
+ name = "self-hosted";
+ toolbar = false;
+ bookmarks = (generateSelfHosted subdomains);
+ }
+ { name = "links";
+ toolbar = false;
+ bookmarks = [
+ { name = "rooster"; url = "https://rooster.rug.nl"; }
+ { name = "themis"; url = "https://themis.rug.nl"; }
+ { name = "brightspace"; url = "https://brightspace.rug.nl"; }
+ { name = "overleaf"; url = "https://overleaf.com/institutional-login"; }
+ { name = "doeksen"; url = "https://rederij-doeksen.nl"; }
+ { name = "tumblr"; url = "https://tumblr.com"; }
+ { name = "Buienalarm Groningen"; url = "https://www.buienalarm.nl/nederland/groningen/10226"; }
+ { name = "xkcd"; url = "https://xkcd.com"; }
+ ];
+ }
+ ];
+ };
+ };
+
+ };
+}
diff --git a/modules/web/userChrome.css b/modules/web/userChrome.css
new file mode 100644
index 0000000..ca762ea
--- /dev/null
+++ b/modules/web/userChrome.css
@@ -0,0 +1,522 @@
+/*---+---+---+---+---+---+
+ | G | L | O | B | A | L |
+ +---+---+---+---+---+---*/
+
+:root {
+ /* Global Border Radius
+ * applied to ALL UI elements
+ */
+ --uc-border-radius: 8px;
+
+ /* The distance the Statuspanel floats
+ * away from the window border
+ * 0 places directly in the corner
+ */
+ --uc-status-panel-spacing: 12px;
+}
+
+/* remove window control buttons */
+.titlebar-buttonbox-container {
+ display: none !important;
+}
+
+#pageActionButton {
+ display: none !important;
+}
+
+#PanelUI-menu-button {
+ padding: 0px !important;
+}
+#PanelUI-menu-button .toolbarbutton-icon {
+ width: 1px !important;
+}
+#PanelUI-menu-button .toolbarbutton-badge-stack {
+ padding: 0px !important;
+}
+
+/*---+---+---+---+---+---+---+
+ | T | O | O | L | B | A | R |
+ +---+---+---+---+---+---+---*/
+
+/* Position of the Personal Toolbar
+ * possible values:
+ * 0 – toolbar on top
+ * 4 – toolbar on bottom
+ */
+:root {
+ --uc-toolbar-position: 4;
+}
+
+/* Darken the Personal Toolbar by X amount
+ * where X = 1 means pure black
+ * and X = 0 means no darkening at all
+ */
+@media (prefers-color-scheme: dark) {
+ :root {
+ --uc-darken-toolbar: 0.2;
+ }
+}
+@media (prefers-color-scheme: light) {
+ :root {
+ --uc-darken-toolbar: 0;
+ }
+}
+
+/*---+---+---+---+---+---+---+
+ | U | R | L | — | B | A | R |
+ +---+---+---+---+---+---+---*/
+
+:root {
+ /* Width of the URL Bar for the Oneline layout
+ * If enabled the max-width is applied on focus
+ * otherwise the URL Bar will always be it's min-width
+ */
+ --uc-urlbar-min-width: 100vw;
+ --uc-urlbar-max-width: 100vw;
+
+ /* Position of the URL Bar
+ * possible values:
+ * 1 – tabs on the right
+ * 3 – tabs on the left
+ */
+ --uc-urlbar-position: 1;
+
+ /* Firefox can be a little wonky with the vertical
+ * URL Bar placement. Change this variable to adapt
+ * to this when necessary.
+ */
+ --uc-urlbar-top-spacing: 1px;
+}
+
+/* Disable the Navigation Buttons */
+#back-button,
+#forward-button {
+ display: none !important;
+}
+
+/* Disables the Tracking Protection Shield */
+/* #tracking-protection-icon-container { display: none !important; } */
+
+/* Encryption and Permissions icons */
+/* Only hides permission items */
+#identity-permission-box {
+ display: none !important;
+}
+/* Hides extension page box */
+#identity-box.extensionPage {
+ display: none !important;
+}
+/* Hides encryption AND permission items */
+/* #identity-box { display: none !important } */
+
+/* Hide everything BUT the zoom indicator within the URL Bar */
+/* #page-action-buttons > :not(#urlbar-zoom-button) { display: none !important; } */
+
+/* Hide the »Go«-arrow in the URL Bar */
+#urlbar-go-button {
+ display: none !important;
+}
+
+/* Hides the Extensions Menu Icon */
+/* #unified-extensions-button { display: none !important; } */
+
+/*---+---+---+---+---+---+---+
+ | T | A | B | — | B | A | R |
+ +---+---+---+---+---+---+---*/
+
+:root {
+ /* Allow tabs to have dynamic widths based on
+ * the Tab Bars maximum width
+ */
+ --uc-active-tab-width: clamp(100px, 30vw, 300px);
+ --uc-inactive-tab-width: clamp(100px, 20vw, 200px);
+
+ /* Enable this to always show the Tab Close button
+ * possible values:
+ * show: -moz-inline-block
+ * hide: none
+ */
+ --show-tab-close-button: none;
+
+ /* Enable this to only show the Tab Close button on tab hover
+ * possible values:
+ * show: -moz-inline-block
+ * hide: none
+ */
+ --show-tab-close-button-hover: none;
+
+ /* Hide the all Tabs button from the Tab Bar
+ * possible values:
+ * show: -moz-box
+ * hide: none
+ */
+ --uc-show-all-tabs-button: none;
+
+ /* Left and Right "dip" of the container indicator
+ * 0px equals tab width
+ * higer values make the indicator smaller
+ */
+ --container-tabs-indicator-margin: 10px;
+
+ /* Amount of Glow to add to the container indicator
+ * Setting it to 0 disables the Glow
+ */
+ --uc-identity-glow: 0 1px 10px 1px;
+}
+
+/* Hide the secondary Tab Label
+ * e.g. playing indicator (the text, not the icon) */
+.tab-secondary-label {
+ display: none !important;
+}
+
+
+
+/*---+---+---+---+---+---+---+
+ | C | O | L | O | U | R | S |
+ +---+---+---+---+---+---+---*/
+
+
+@media (prefers-color-scheme: dark) { :root {
+
+ /* These colours are (mainly) used by the
+ Container Tabs Plugin */
+ --uc-identity-colour-blue: #7ED6DF;
+ --uc-identity-colour-turquoise: #55E6C1;
+ --uc-identity-colour-green: #B8E994;
+ --uc-identity-colour-yellow: #F7D794;
+ --uc-identity-colour-orange: #F19066;
+ --uc-identity-colour-red: #FC5C65;
+ --uc-identity-colour-pink: #F78FB3;
+ --uc-identity-colour-purple: #786FA6;
+
+ /* Cascades main Colour Scheme */
+ --uc-base-colour: #1E2021;
+ --uc-highlight-colour: #191B1C;
+ --uc-inverted-colour: #FAFAFC;
+ --uc-muted-colour: #AAAAAC;
+ --uc-accent-colour: var(--uc-identity-colour-purple);
+
+}}
+
+
+@media (prefers-color-scheme: light) { :root {
+
+ /* These colours are (mainly) used by the
+ Container Tabs Plugin */
+ --uc-identity-colour-blue: #1D65F5;
+ --uc-identity-colour-turquoise: #209FB5;
+ --uc-identity-colour-green: #40A02B;
+ --uc-identity-colour-yellow: #E49320;
+ --uc-identity-colour-orange: #FE640B;
+ --uc-identity-colour-red: #FC5C65;
+ --uc-identity-colour-pink: #EC83D0;
+ --uc-identity-colour-purple: #822FEE;
+
+ /* Cascades main Colour Scheme */
+ --uc-base-colour: #FAFAFC;
+ --uc-highlight-colour: #DADADC;
+ --uc-inverted-colour: #1E2021;
+ --uc-muted-colour: #191B1C;
+ --uc-accent-colour: var(--uc-identity-colour-purple);
+
+}}
+
+
+
+
+
+
+/* Down here I'm just reassigning variables based on the colours set above.
+ Feel free to play around with these but there is no editing necessary below this line. c:
+ */
+
+:root {
+
+ --lwt-frame: var(--uc-base-colour) !important;
+ --lwt-accent-color: var(--lwt-frame) !important;
+ --lwt-text-color: var(--uc-inverted-colour) !important;
+
+ --toolbar-field-color: var(--uc-inverted-colour) !important;
+
+ --toolbar-field-focus-color: var(--uc-inverted-colour) !important;
+ --toolbar-field-focus-background-color: var(--uc-highlight-colour) !important;
+ --toolbar-field-focus-border-color: transparent !important;
+
+ --toolbar-field-background-color: var(--lwt-frame) !important;
+ --lwt-toolbar-field-highlight: var(--uc-inverted-colour) !important;
+ --lwt-toolbar-field-highlight-text: var(--uc-highlight-colour) !important;
+ --urlbar-popup-url-color: var(--uc-accent-colour) !important;
+
+ --lwt-tab-text: var(--lwt-text-colour) !important;
+
+ --lwt-selected-tab-background-color: var(--uc-highlight-colour) !important;
+
+ --toolbar-bgcolor: var(--lwt-frame) !important;
+ --toolbar-color: var(--lwt-text-color) !important;
+ --toolbarseparator-color: var(--uc-accent-colour) !important;
+ --toolbarbutton-hover-background: var(--uc-highlight-colour) !important;
+ --toolbarbutton-active-background: var(--toolbarbutton-hover-background) !important;
+
+ --lwt-sidebar-background-color: var(--lwt-frame) !important;
+ --sidebar-background-color: var(--lwt-sidebar-background-color) !important;
+
+ --urlbar-box-bgcolor: var(--uc-highlight-colour) !important;
+ --urlbar-box-text-color: var(--uc-muted-colour) !important;
+ --urlbar-box-hover-bgcolor: var(--uc-highlight-colour) !important;
+ --urlbar-box-hover-text-color: var(--uc-inverted-colour) !important;
+ --urlbar-box-focus-bgcolor: var(--uc-highlight-colour) !important;
+
+}
+
+
+
+.identity-color-blue { --identity-tab-color: var(--uc-identity-colour-blue) !important; --identity-icon-color: var(--uc-identity-colour-blue) !important; }
+.identity-color-turquoise { --identity-tab-color: var(--uc-identity-colour-turquoise) !important; --identity-icon-color: var(--uc-identity-colour-turquoise) !important; }
+.identity-color-green { --identity-tab-color: var(--uc-identity-colour-green) !important; --identity-icon-color: var(--uc-identity-colour-green) !important; }
+.identity-color-yellow { --identity-tab-color: var(--uc-identity-colour-yellow) !important; --identity-icon-color: var(--uc-identity-colour-yellow) !important; }
+.identity-color-orange { --identity-tab-color: var(--uc-identity-colour-orange) !important; --identity-icon-color: var(--uc-identity-colour-orange) !important; }
+.identity-color-red { --identity-tab-color: var(--uc-identity-colour-red) !important; --identity-icon-color: var(--uc-identity-colour-red) !important; }
+.identity-color-pink { --identity-tab-color: var(--uc-identity-colour-pink) !important; --identity-icon-color: var(--uc-identity-colour-pink) !important; }
+.identity-color-purple { --identity-tab-color: var(--uc-identity-colour-purple) !important; --identity-icon-color: var(--uc-identity-colour-purple) !important; }
+
+
+/*---+---+---+---+---+---+
+ | L | A | Y | O | U | T |
+ +---+---+---+---+---+---*/
+
+:root {
+ --toolbarbutton-border-radius: var(--uc-border-radius) !important;
+ --tab-border-radius: var(--uc-border-radius) !important;
+ --arrowpanel-border-radius: var(--uc-border-radius) !important;
+}
+
+#toolbar-menubar {
+ &[autohide="true"] {
+ &[inactive]:not([customizing]) {
+ width: 0px;
+ }
+ }
+}
+
+#main-window,
+#toolbar-menubar,
+#TabsToolbar,
+#navigator-toolbox,
+#sidebar-box,
+#nav-bar {
+ box-shadow: none !important;
+}
+
+#main-window,
+#toolbar-menubar,
+#TabsToolbar,
+#PersonalToolbar,
+#navigator-toolbox,
+#sidebar-box,
+#nav-bar {
+ border: none !important;
+}
+
+/* remove "padding" left and right from tabs */
+.titlebar-spacer {
+ display: none !important;
+}
+
+/* fix Shield Icon padding */
+#urlbar-input-container[pageproxystate="valid"]
+ > #tracking-protection-icon-container
+ > #tracking-protection-icon-box
+ > #tracking-protection-icon {
+ padding-bottom: 1px;
+}
+
+#TabsToolbar {
+ order: 2;
+}
+#nav-bar {
+ order: 3;
+}
+
+#PersonalToolbar {
+ padding: 6px !important;
+ box-shadow: inset 0 0 50vh rgba(0, 0, 0, var(--uc-darken-toolbar)) !important;
+ order: var(--uc-toolbar-position);
+ width: 100%;
+}
+
+#statuspanel #statuspanel-label {
+ border: none !important;
+ border-radius: var(--uc-border-radius) !important;
+}
+
+
+/*---+---+---+---+---+---+---+---+---+
+ | R | E | S | P | O | N | I | V | E |
+ +---+---+---+---+---+---+---+---+---*/
+
+@media (min-width: 1000px) {
+ #navigator-toolbox {
+ display: flex;
+ flex-wrap: wrap;
+ flex-direction: row;
+ }
+
+ #nav-bar {
+ order: var(--uc-urlbar-position);
+ width: var(--uc-urlbar-min-width);
+ }
+
+ #nav-bar #urlbar-container {
+ min-width: 0px !important;
+ width: auto !important;
+ }
+
+ #TabsToolbar {
+ width: calc(100vw - var(--uc-urlbar-min-width) - 1px);
+ }
+
+ #navigator-toolbox:focus-within #nav-bar {
+ width: var(--uc-urlbar-max-width);
+ }
+ #navigator-toolbox:focus-within #titlebar {
+ width: calc(100vw - var(--uc-urlbar-max-width) - 1px);
+ }
+}
+
+/*---+---+---+---+---+---+---+---+
+ | F | L | O | A | T | I | N | G |
+ +---+---+---+---+---+---+---+---*/
+
+#statuspanel #statuspanel-label {
+ margin: 0 0 var(--uc-status-panel-spacing) var(--uc-status-panel-spacing) !important;
+}
+
+
+
+/*---+---+---+---+---+---+
+ | N | A | V | B | A | R |
+ +---+---+---+---+---+---*/
+
+#navigator-toolbox:not(:-moz-lwtheme) {
+ background: var(--toolbar-field-background-color) !important;
+}
+
+#nav-bar {
+ padding-block-start: 0px !important;
+
+ border: none !important;
+ box-shadow: none !important;
+ background: transparent !important;
+}
+
+#urlbar,
+#urlbar * {
+ outline: none !important;
+ box-shadow: none !important;
+}
+
+#urlbar-background {
+ border: transparent !important;
+}
+
+#urlbar[focused="true"] > #urlbar-background,
+#urlbar:not([open]) > #urlbar-background {
+ background: var(--toolbar-field-background-color) !important;
+}
+
+#urlbar[open] > #urlbar-background {
+ background: var(--toolbar-field-background-color) !important;
+}
+
+.urlbarView-row:hover > .urlbarView-row-inner,
+.urlbarView-row[selected] > .urlbarView-row-inner {
+ background: var(--toolbar-field-focus-background-color) !important;
+}
+
+.urlbar-icon,
+#urlbar-go-button {
+ margin: auto;
+}
+.urlbar-page-action {
+ padding: 0 inherit !important;
+}
+
+/* #page-action-buttons, */
+#home-button,
+#stop-reload-button {
+ display: none !important;
+}
+
+
+/*---+---+---+---+---+---+
+ | N | O | T | A | B | S |
+ +---+---+---+---+---+---*/
+/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/hide_tabs_toolbar.css made available under Mozilla Public License v. 2.0
+See the above repository for updates as well as full license text. */
+
+/* Hides tabs toolbar */
+/* For OSX use hide_tabs_toolbar_osx.css instead */
+
+/* Note, if you have either native titlebar or menubar enabled, then you don't really need this style.
+ * In those cases you can just use: #TabsToolbar{ visibility: collapse !important }
+ */
+
+/* IMPORTANT */
+/*
+Get window_control_placeholder_support.css
+Window controls will be all wrong without it
+*/
+
+:root[tabsintitlebar]{ --uc-toolbar-height: 40px; }
+:root[tabsintitlebar][uidensity="compact"]{ --uc-toolbar-height: 32px }
+#titlebar{
+ will-change: unset !important;
+ transition: none !important;
+ opacity: 1 !important;
+}
+#TabsToolbar{ visibility: collapse !important }
+:root[sizemode="fullscreen"] #titlebar{ position: relative }
+
+:root[sizemode="fullscreen"] #TabsToolbar > .titlebar-buttonbox-container{
+ visibility: visible !important;
+ z-index: 2;
+}
+
+:root:not([inFullscreen]) #nav-bar{
+ margin-top: calc(0px - var(--uc-toolbar-height,0px));
+}
+
+:root[tabsintitlebar] #toolbar-menubar[autohide="true"]{
+ min-height: unset !important;
+ height: var(--uc-toolbar-height,0px) !important;
+ position: relative;
+}
+
+#toolbar-menubar[autohide="false"]{
+ margin-bottom: var(--uc-toolbar-height,0px)
+}
+
+:root[tabsintitlebar] #toolbar-menubar[autohide="true"] #main-menubar{
+ flex-grow: 1;
+ align-items: stretch;
+ background-attachment: scroll, fixed, fixed;
+ background-position: 0 0, var(--lwt-background-alignment), right top;
+ background-repeat: repeat-x, var(--lwt-background-tiling), no-repeat;
+ background-size: auto 100%, var(--lwt-background-size, auto auto), auto auto;
+ padding-right: 20px;
+}
+:root[tabsintitlebar] #toolbar-menubar[autohide="true"]:not([inactive]) #main-menubar{
+ background-color: var(--lwt-accent-color);
+ background-image: linear-gradient(var(--toolbar-bgcolor,--toolbar-non-lwt-bgcolor),var(--toolbar-bgcolor,--toolbar-non-lwt-bgcolor)), var(--lwt-additional-images,none), var(--lwt-header-image, none);
+ mask-image: linear-gradient(to left, transparent, black 20px);
+}
+
+#toolbar-menubar:not([inactive]){ z-index: 2 }
+#toolbar-menubar[autohide="true"][inactive] > #menubar-items {
+ opacity: 0;
+ pointer-events: none;
+ margin-left: var(--uc-window-drag-space-pre,0px)
+}
+
+