Compare commits
No commits in common. "6e27e32a7a496dd1a3ea311b886edcf623287e00" and "1e204760c4d73b6d153942eba5553e08d705bfdf" have entirely different histories.
6e27e32a7a
...
1e204760c4
10282
patches/qutebrowser/tree-style-tabs.patch
Normal file
10282
patches/qutebrowser/tree-style-tabs.patch
Normal file
File diff suppressed because it is too large
Load diff
|
@ -50,6 +50,10 @@ main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
autotype(){
|
autotype(){
|
||||||
|
if pgrep qutebrowser >/dev/null; then
|
||||||
|
qutebrowser ":mode-enter insert"
|
||||||
|
fi
|
||||||
|
|
||||||
env wtype -s 100 "$username"
|
env wtype -s 100 "$username"
|
||||||
env wtype -s 100 -k tab
|
env wtype -s 100 -k tab
|
||||||
env wtype -s 100 "$password"
|
env wtype -s 100 "$password"
|
||||||
|
|
|
@ -1,18 +1,13 @@
|
||||||
{ pkgs, lib, ... }:
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
{ config, pkgs, ... }:
|
||||||
{
|
{
|
||||||
services.xserver = {
|
# Enable the X11 windowing system.
|
||||||
enable = true;
|
services.xserver.enable = true;
|
||||||
desktopManager.gnome = {
|
# Enable the GNOME Desktop Environment.
|
||||||
enable = true;
|
services.xserver.displayManager.gdm.enable = true;
|
||||||
# Enable VRR (Variable Refresh Rate)
|
services.xserver.desktopManager.gnome.enable = true;
|
||||||
extraGSettingsOverridePackages = with pkgs; [ gnome.mutter ];
|
|
||||||
extraGSettingsOverrides = ''
|
|
||||||
[org.gnome.mutter]
|
|
||||||
experimental-features=['variable-refresh-rate', 'scale-monitor-framebuffer']
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
displayManager.gdm.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Workaround for https://github.com/NixOS/nixpkgs/issues/103746
|
# Workaround for https://github.com/NixOS/nixpkgs/issues/103746
|
||||||
systemd.services."getty@tty1".enable = false;
|
systemd.services."getty@tty1".enable = false;
|
||||||
|
@ -28,8 +23,6 @@
|
||||||
package = pkgs.gnomeExtensions.gsconnect;
|
package = pkgs.gnomeExtensions.gsconnect;
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.opentabletdriver.enable = lib.mkForce false;
|
|
||||||
|
|
||||||
# services.xserver.displayManager.autologin.user = "lelgenio";
|
# services.xserver.displayManager.autologin.user = "lelgenio";
|
||||||
environment.systemPackages =
|
environment.systemPackages =
|
||||||
with pkgs;
|
with pkgs;
|
||||||
|
|
|
@ -49,6 +49,15 @@ lib.mkIf (pkgs.uservars.desktop == "gnome") {
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.defaultApplications = {
|
xdg.defaultApplications = {
|
||||||
enable = lib.mkForce false;
|
enable = true;
|
||||||
|
text-editor = "codium.desktop";
|
||||||
|
image-viewer = "org.gnome.eog.desktop";
|
||||||
|
video-player = "org.gnome.Totem.desktop";
|
||||||
|
web-browser = "firefox.desktop";
|
||||||
|
document-viewer = "org.gnome.Evince.desktop";
|
||||||
|
file-manager = "org.gnome.Nautilus.desktop";
|
||||||
|
archive-manager = "org.gnome.FileRoller.desktop;";
|
||||||
|
email-client = "thunderbird.desktop";
|
||||||
|
torrent-client = "torrent.desktop";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
./alacritty.nix
|
./alacritty.nix
|
||||||
./git.nix
|
./git.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
|
./qutebrowser
|
||||||
./gpg.nix
|
./gpg.nix
|
||||||
./rofi.nix
|
./rofi.nix
|
||||||
./mpv.nix
|
./mpv.nix
|
||||||
|
@ -156,7 +157,13 @@
|
||||||
text-editor = lib.mkDefault "kak.desktop";
|
text-editor = lib.mkDefault "kak.desktop";
|
||||||
image-viewer = lib.mkDefault "pqiv.desktop";
|
image-viewer = lib.mkDefault "pqiv.desktop";
|
||||||
video-player = lib.mkDefault "mpv.desktop";
|
video-player = lib.mkDefault "mpv.desktop";
|
||||||
web-browser = lib.mkDefault "firefox.desktop";
|
web-browser = lib.mkDefault (
|
||||||
|
{
|
||||||
|
firefox = lib.mkDefault "firefox.desktop";
|
||||||
|
qutebrowser = lib.mkDefault "org.qutebrowser.qutebrowser.desktop";
|
||||||
|
}
|
||||||
|
.${pkgs.uservars.browser}
|
||||||
|
);
|
||||||
document-viewer = lib.mkDefault "org.pwmt.zathura.desktop";
|
document-viewer = lib.mkDefault "org.pwmt.zathura.desktop";
|
||||||
file-manager = lib.mkDefault "thunar.desktop";
|
file-manager = lib.mkDefault "thunar.desktop";
|
||||||
archive-manager = "engrampa.desktop";
|
archive-manager = "engrampa.desktop";
|
||||||
|
|
261
user/qutebrowser/colors.nix
Normal file
261
user/qutebrowser/colors.nix
Normal file
|
@ -0,0 +1,261 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
font,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (pkgs.uservars)
|
||||||
|
key
|
||||||
|
theme
|
||||||
|
accent
|
||||||
|
font
|
||||||
|
browser
|
||||||
|
;
|
||||||
|
inherit (theme) color;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.qutebrowser.settings = {
|
||||||
|
hints.border = "2px solid ${accent.color}";
|
||||||
|
|
||||||
|
content.user_stylesheets = "style.css";
|
||||||
|
colors = {
|
||||||
|
|
||||||
|
########################################################
|
||||||
|
# Tabs
|
||||||
|
########################################################
|
||||||
|
|
||||||
|
tabs =
|
||||||
|
let
|
||||||
|
tabs_defaults = {
|
||||||
|
odd = {
|
||||||
|
fg = color.txt;
|
||||||
|
bg = color.bg;
|
||||||
|
};
|
||||||
|
even = {
|
||||||
|
fg = color.txt;
|
||||||
|
bg = color.bg_dark;
|
||||||
|
};
|
||||||
|
selected = {
|
||||||
|
odd = {
|
||||||
|
fg = accent.fg;
|
||||||
|
bg = accent.color;
|
||||||
|
};
|
||||||
|
even = {
|
||||||
|
fg = accent.fg;
|
||||||
|
bg = accent.color;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
bar = {
|
||||||
|
bg = color.bg;
|
||||||
|
};
|
||||||
|
pinned = tabs_defaults;
|
||||||
|
}
|
||||||
|
// tabs_defaults;
|
||||||
|
|
||||||
|
########################################################
|
||||||
|
# Completion for urls and commands
|
||||||
|
########################################################
|
||||||
|
|
||||||
|
completion = {
|
||||||
|
fg = color.txt;
|
||||||
|
even = {
|
||||||
|
bg = color.bg;
|
||||||
|
};
|
||||||
|
odd = {
|
||||||
|
bg = color.bg;
|
||||||
|
};
|
||||||
|
scrollbar = {
|
||||||
|
bg = color.bg_dark;
|
||||||
|
};
|
||||||
|
match = {
|
||||||
|
fg = accent.color;
|
||||||
|
};
|
||||||
|
category = {
|
||||||
|
fg = color.txt;
|
||||||
|
bg = color.bg_dark;
|
||||||
|
border = {
|
||||||
|
top = color.bg_dark;
|
||||||
|
bottom = color.bg_dark;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
item = {
|
||||||
|
selected = {
|
||||||
|
fg = accent.fg;
|
||||||
|
bg = accent.color;
|
||||||
|
border = {
|
||||||
|
top = color.bg_dark;
|
||||||
|
bottom = color.bg_dark;
|
||||||
|
};
|
||||||
|
match = {
|
||||||
|
fg = color.txt;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
########################################################
|
||||||
|
# Statusbar
|
||||||
|
########################################################
|
||||||
|
|
||||||
|
statusbar = {
|
||||||
|
normal = {
|
||||||
|
fg = color.txt;
|
||||||
|
bg = color.bg;
|
||||||
|
};
|
||||||
|
insert = {
|
||||||
|
fg = color.normal.green;
|
||||||
|
bg = color.bg;
|
||||||
|
};
|
||||||
|
passthrough = {
|
||||||
|
fg = color.normal.blue;
|
||||||
|
bg = color.bg;
|
||||||
|
};
|
||||||
|
command = {
|
||||||
|
fg = color.txt;
|
||||||
|
bg = color.bg;
|
||||||
|
};
|
||||||
|
caret = {
|
||||||
|
selection = {
|
||||||
|
fg = accent.fg;
|
||||||
|
bg = accent.color;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
url = {
|
||||||
|
success = {
|
||||||
|
https = {
|
||||||
|
fg = color.txt;
|
||||||
|
};
|
||||||
|
http = {
|
||||||
|
fg = color.normal.red;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hover = {
|
||||||
|
fg = color.normal.cyan;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
########################################################
|
||||||
|
# Downloads
|
||||||
|
########################################################
|
||||||
|
|
||||||
|
downloads = {
|
||||||
|
start = {
|
||||||
|
bg = color.normal.blue;
|
||||||
|
};
|
||||||
|
stop = {
|
||||||
|
bg = color.normal.green;
|
||||||
|
};
|
||||||
|
bar = {
|
||||||
|
bg = color.bg;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
########################################################
|
||||||
|
# Choice of what element should be clicked
|
||||||
|
########################################################
|
||||||
|
|
||||||
|
hints = {
|
||||||
|
fg = color.txt;
|
||||||
|
bg = color.bg;
|
||||||
|
match = {
|
||||||
|
fg = accent.color;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
########################################################
|
||||||
|
# List of what each keybinding does
|
||||||
|
########################################################
|
||||||
|
|
||||||
|
keyhint = {
|
||||||
|
fg = color.txt;
|
||||||
|
bg = color.bg;
|
||||||
|
suffix = {
|
||||||
|
fg = accent.color;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
########################################################
|
||||||
|
# Right click menu
|
||||||
|
########################################################
|
||||||
|
|
||||||
|
contextmenu = {
|
||||||
|
menu = {
|
||||||
|
fg = color.txt;
|
||||||
|
bg = color.bg;
|
||||||
|
};
|
||||||
|
selected = {
|
||||||
|
fg = accent.fg;
|
||||||
|
bg = accent.color;
|
||||||
|
};
|
||||||
|
disabled = {
|
||||||
|
fg = color.bg_light;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
########################################################
|
||||||
|
# Dark theme
|
||||||
|
########################################################
|
||||||
|
|
||||||
|
# webpage = lib.mkIf (color.type == "dark") {
|
||||||
|
# bg = color.bg;
|
||||||
|
# preferred_color_scheme = "dark";
|
||||||
|
# darkmode = {
|
||||||
|
# enabled = false;
|
||||||
|
# threshold = {
|
||||||
|
# text = 150;
|
||||||
|
# background = 205;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home.file = {
|
||||||
|
".config/qutebrowser/style.css".text = ''
|
||||||
|
${lib.optionalString (color.type == "dark") ''
|
||||||
|
button,
|
||||||
|
input[type="button"] {
|
||||||
|
color: unset;
|
||||||
|
background-color: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-gradient-to-b,
|
||||||
|
body {
|
||||||
|
background-image: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************************
|
||||||
|
* Remove borked ellements *
|
||||||
|
***************************/
|
||||||
|
|
||||||
|
.search-filters-wrap:before, .search-filters-wrap:after {
|
||||||
|
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
''}
|
||||||
|
|
||||||
|
/*****************
|
||||||
|
* Hide some ads *
|
||||||
|
*****************/
|
||||||
|
|
||||||
|
/*Reddit*/
|
||||||
|
#sr-header-area .redesign-beta-optin,
|
||||||
|
.link.promotedlink.promoted,
|
||||||
|
.spacer:empty,
|
||||||
|
.spacer .premium-banner-outer,
|
||||||
|
.ad-container,
|
||||||
|
|
||||||
|
/*Youtube*/
|
||||||
|
div#masthead-ad ,
|
||||||
|
.video-ads,
|
||||||
|
#player-ads,
|
||||||
|
ytd-popup-container {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
97
user/qutebrowser/dark-theme.nix
Normal file
97
user/qutebrowser/dark-theme.nix
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
font,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (pkgs.uservars) theme;
|
||||||
|
inherit (theme) color;
|
||||||
|
|
||||||
|
# ".config/qutebrowser/greasemonkey/darkreader.js".text =
|
||||||
|
darkThemeUserscript =
|
||||||
|
enabled:
|
||||||
|
pkgs.writeText "darkreader.js" ''
|
||||||
|
// ==UserScript==
|
||||||
|
// @name Dark Reader (Unofficial)
|
||||||
|
// @icon https://darkreader.org/images/darkreader-icon-256x256.png
|
||||||
|
// @namespace DarkReader
|
||||||
|
// @description Inverts the brightness of pages to reduce eye strain
|
||||||
|
// @version 4.7.15
|
||||||
|
// @author https://github.com/darkreader/darkreader#contributors
|
||||||
|
// @homepageURL https://darkreader.org/ | https://github.com/darkreader/darkreader
|
||||||
|
// @run-at document-end
|
||||||
|
// @grant none
|
||||||
|
// @include http*
|
||||||
|
// @require https://cdn.jsdelivr.net/npm/darkreader/darkreader.min.js
|
||||||
|
// @noframes
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
DarkReader.setFetchMethod(window.fetch)
|
||||||
|
|
||||||
|
if (${if enabled then "false" else "true"}) {
|
||||||
|
DarkReader.disable();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const ignore_list = [
|
||||||
|
"askubuntu.com",
|
||||||
|
"mathoverflow.com",
|
||||||
|
"mathoverflow.net",
|
||||||
|
"serverfault.com",
|
||||||
|
"stackapps.com",
|
||||||
|
"stackexchange.com",
|
||||||
|
"stackoverflow.com",
|
||||||
|
"superuser.com",
|
||||||
|
"hub.docker.com",
|
||||||
|
];
|
||||||
|
|
||||||
|
for (let item of ignore_list) {
|
||||||
|
if (window.location.origin.indexOf(item) >= 0) {
|
||||||
|
console.log("URL matched dark-mode ignore list");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DarkReader.enable({
|
||||||
|
brightness: 100,
|
||||||
|
contrast: 100,
|
||||||
|
sepia: 0,
|
||||||
|
|
||||||
|
darkSchemeBackgroundColor: "${color.bg}",
|
||||||
|
darkSchemeTextColor: "${color.txt}",
|
||||||
|
|
||||||
|
lightSchemeBackgroundColor: "${color.bg}",
|
||||||
|
lightSchemeTextColor: "${color.txt}",
|
||||||
|
});
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.qutebrowser.keyBindings = {
|
||||||
|
normal = {
|
||||||
|
"K" = "spawn --userscript toggle-dark-theme";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home.file = {
|
||||||
|
".local/share/qutebrowser/userscripts/toggle-dark-theme".executable = true;
|
||||||
|
".local/share/qutebrowser/userscripts/toggle-dark-theme".text = ''
|
||||||
|
#!/bin/sh
|
||||||
|
DARK_READER_SCRIPT="$HOME/.config/qutebrowser/greasemonkey/darkreader.js"
|
||||||
|
MARKER="$HOME/.config/qutebrowser/is-dark-mode"
|
||||||
|
if test -f "$MARKER"
|
||||||
|
then
|
||||||
|
rm -f "$MARKER"
|
||||||
|
cp -f ${darkThemeUserscript false} "$DARK_READER_SCRIPT"
|
||||||
|
echo "jseval --world main DarkReader.disable()" >> "$QUTE_FIFO"
|
||||||
|
else
|
||||||
|
touch "$MARKER"
|
||||||
|
cp -f ${darkThemeUserscript true} "$DARK_READER_SCRIPT"
|
||||||
|
echo "jseval --world main DarkReader.enable()" >> "$QUTE_FIFO"
|
||||||
|
fi
|
||||||
|
if test -n "$QUTE_FIFO"; then
|
||||||
|
echo "greasemonkey-reload --quiet" >> "$QUTE_FIFO"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
159
user/qutebrowser/default.nix
Normal file
159
user/qutebrowser/default.nix
Normal file
|
@ -0,0 +1,159 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
font,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (pkgs.uservars) key browser editor;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./colors.nix
|
||||||
|
./dark-theme.nix
|
||||||
|
./fonts.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
programs.qutebrowser = lib.mkIf (browser == "qutebrowser") {
|
||||||
|
enable = true;
|
||||||
|
# enableDefaultBindings = false;
|
||||||
|
keyBindings = {
|
||||||
|
normal = {
|
||||||
|
# basic movent
|
||||||
|
"${key.left}" = "scroll left";
|
||||||
|
"${key.down}" = "scroll down";
|
||||||
|
"${key.up}" = "scroll up";
|
||||||
|
"${key.right}" = "scroll right";
|
||||||
|
|
||||||
|
"${lib.toUpper key.up}" = "scroll-px 0 -100";
|
||||||
|
"${lib.toUpper key.down}" = "scroll-px 0 100";
|
||||||
|
"${lib.toUpper key.left}" = "back";
|
||||||
|
"${lib.toUpper key.right}" = "forward";
|
||||||
|
"${lib.toUpper key.tabL}" = "tab-prev";
|
||||||
|
"${lib.toUpper key.tabR}" = "tab-next";
|
||||||
|
|
||||||
|
"${key.next}" = "search-next";
|
||||||
|
"${lib.toUpper key.next}" = "search-prev";
|
||||||
|
|
||||||
|
"${key.insertMode}" = "mode-enter insert";
|
||||||
|
# ":" = "mode-enter command";
|
||||||
|
|
||||||
|
"t" = "hint all";
|
||||||
|
"h" = "set-cmd-text -s :open";
|
||||||
|
"T" = "hint all tab";
|
||||||
|
"H" = "set-cmd-text -s :open -t";
|
||||||
|
|
||||||
|
"<Ctrl-${lib.toLower key.tabL}>" = "tree-tab-promote";
|
||||||
|
"<Ctrl-${lib.toLower key.tabR}>" = "tree-tab-demote";
|
||||||
|
|
||||||
|
"co" = "tab-only --pinned keep";
|
||||||
|
|
||||||
|
# "K" = "jseval --world main if (DarkReader.isEnabled()) {DarkReader.disable()} else {DarkReader.enable()}";
|
||||||
|
};
|
||||||
|
insert = {
|
||||||
|
# quit insert mode
|
||||||
|
"<Alt-k>" = "mode-enter normal";
|
||||||
|
};
|
||||||
|
caret = {
|
||||||
|
# basic movent
|
||||||
|
"${key.left}" = "move-to-prev-char";
|
||||||
|
"${key.down}" = "move-to-next-line";
|
||||||
|
"${key.up}" = "move-to-prev-line";
|
||||||
|
"${key.right}" = "move-to-next-char";
|
||||||
|
|
||||||
|
"${key.insertMode}" = "mode-enter insert";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
tabs.tree_tabs = true;
|
||||||
|
tabs.position = "right";
|
||||||
|
tabs.pinned.shrink = false;
|
||||||
|
tabs.title.format = "{tree}{collapsed}{audio}{index}: {current_title}";
|
||||||
|
tabs.title.format_pinned = "{tree}{collapsed}{audio}{index} 🔒: {current_title}";
|
||||||
|
|
||||||
|
session.lazy_restore = true;
|
||||||
|
auto_save.session = true;
|
||||||
|
|
||||||
|
hints.chars = key.hints;
|
||||||
|
editor.command = [
|
||||||
|
"terminal"
|
||||||
|
"-e"
|
||||||
|
{
|
||||||
|
kakoune = "kak";
|
||||||
|
helix = "hx";
|
||||||
|
}
|
||||||
|
.${editor}
|
||||||
|
"{file}"
|
||||||
|
"+{line}"
|
||||||
|
];
|
||||||
|
|
||||||
|
input.insert_mode.auto_leave = false;
|
||||||
|
|
||||||
|
content.autoplay = false;
|
||||||
|
content.blocking.adblock.lists = [
|
||||||
|
"https://easylist.to/easylist/easylist.txt"
|
||||||
|
"https://easylist.to/easylist/easyprivacy.txt"
|
||||||
|
"https://easylist-downloads.adblockplus.org/easylistdutch.txt"
|
||||||
|
"https://easylist-downloads.adblockplus.org/abp-filters-anti-cv.txt"
|
||||||
|
"https://www.i-dont-care-about-cookies.eu/abp/"
|
||||||
|
"https://secure.fanboy.co.nz/fanboy-cookiemonster.txt"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
config.load_autoconfig()
|
||||||
|
config.set("content.notifications.enabled", True, "https://web.whatsapp.com")
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
systemd.user.services = lib.mkIf (browser == "qutebrowser") {
|
||||||
|
qutebrowser = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Qutebrowser Web client";
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
After = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
ExecStartPre = "/usr/bin/env sleep 10s";
|
||||||
|
ExecStart = "${pkgs.qutebrowser}/bin/qutebrowser";
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "sway-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home.file = {
|
||||||
|
# For some stupid reason qutebrowser crashes if this dir does not exist
|
||||||
|
".local/share/qutebrowser/greasemonkey/.keep".text = "";
|
||||||
|
".config/qutebrowser/greasemonkey/youtube.js".text = ''
|
||||||
|
// ==UserScript==
|
||||||
|
// @name Auto Skip YouTube Ads
|
||||||
|
// @version 1.0.2
|
||||||
|
// @description Speed up and skip YouTube ads automatically
|
||||||
|
// @author codiac-killer
|
||||||
|
// @match *://*.youtube.com/*
|
||||||
|
// @exclude *://*.youtube.com/subscribe_embed?*
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
let main = new MutationObserver(() => {
|
||||||
|
// Get skip button and click it
|
||||||
|
let btn = document.getElementsByClassName("ytp-ad-skip-button ytp-button").item(0)
|
||||||
|
if (btn) {
|
||||||
|
btn.click()
|
||||||
|
}
|
||||||
|
|
||||||
|
// (unskipable ads) If skip button didn't exist / was not clicked speed up video
|
||||||
|
const ad = [...document.querySelectorAll('.ad-showing')][0];
|
||||||
|
if (ad) {
|
||||||
|
// Speed up and mute
|
||||||
|
document.querySelector('video').playbackRate = 16;
|
||||||
|
document.querySelector('video').muted = true;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
main.observe(document.getElementsByClassName("video-ads ytp-ad-module").item(0), {attributes: true, characterData: true, childList: true})
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
35
user/qutebrowser/fonts.nix
Normal file
35
user/qutebrowser/fonts.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
inherit (pkgs.uservars) font;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.qutebrowser.settings.fonts =
|
||||||
|
let
|
||||||
|
mkFont = name: size: "${toString size}px ${name}";
|
||||||
|
DEF_MONO = mkFont font.mono font.size.medium;
|
||||||
|
BIG_MONO = mkFont font.mono font.size.big;
|
||||||
|
DEF_INTER = mkFont font.interface font.size.medium;
|
||||||
|
BIG_INTER = mkFont font.interface font.size.big;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
debug_console = BIG_INTER;
|
||||||
|
downloads = BIG_INTER;
|
||||||
|
hints = "bold " + BIG_MONO;
|
||||||
|
keyhint = BIG_INTER;
|
||||||
|
prompts = BIG_INTER;
|
||||||
|
statusbar = DEF_MONO;
|
||||||
|
completion = {
|
||||||
|
entry = BIG_INTER;
|
||||||
|
category = BIG_INTER;
|
||||||
|
};
|
||||||
|
messages = {
|
||||||
|
error = DEF_INTER;
|
||||||
|
info = DEF_INTER;
|
||||||
|
warning = DEF_INTER;
|
||||||
|
};
|
||||||
|
tabs = {
|
||||||
|
selected = BIG_INTER;
|
||||||
|
unselected = BIG_INTER;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -17,6 +17,8 @@ in
|
||||||
wayland.windowManager.sway.config = {
|
wayland.windowManager.sway.config = {
|
||||||
assigns = {
|
assigns = {
|
||||||
"2" = [
|
"2" = [
|
||||||
|
{ class = "qutebrowser"; }
|
||||||
|
{ app_id = "qutebrowser"; }
|
||||||
{ class = "firefox"; }
|
{ class = "firefox"; }
|
||||||
{ app_id = "firefox"; }
|
{ app_id = "firefox"; }
|
||||||
{ class = "Chromium"; }
|
{ class = "Chromium"; }
|
||||||
|
|
Loading…
Reference in a new issue