From 198910439a79ed7fbf2347d144204179beccb500 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Wed, 16 Dec 2020 16:30:46 +0100 Subject: [PATCH 01/79] Added first gitignore file --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..72e8ffc --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +* From 9a3c3c2de32209c8b52166874ca70df7f19090db Mon Sep 17 00:00:00 2001 From: Felipe M Date: Wed, 16 Dec 2020 16:31:16 +0100 Subject: [PATCH 02/79] Added base sway config --- .config/sway/config | 230 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 .config/sway/config diff --git a/.config/sway/config b/.config/sway/config new file mode 100644 index 0000000..cb49076 --- /dev/null +++ b/.config/sway/config @@ -0,0 +1,230 @@ +# Default config for sway +# +# Copy this to ~/.config/sway/config and edit it to your liking. +# +# Read `man 5 sway` for a complete reference. + +### Variables +# +# Logo key. Use Mod1 for Alt. +set $mod Mod4 +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l +# Your preferred terminal emulator +set $term alacritty +# Your preferred application launcher +# Note: pass the final command to swaymsg so that the resulting window can be opened +# on the original workspace that the command was run on. +set $menu dmenu_path | dmenu | xargs swaymsg exec -- +# set $menu rofi -modi run + +# Fonts +set $font Terminus + +font $font + +### Output configuration +# +# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) +output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill +# +# Example configuration: +# +# output HDMI-A-1 resolution 1920x1080 position 1920,0 +# +# You can get the names of your outputs by running: swaymsg -t get_outputs + +### Idle configuration +# +# Example configuration: +# +# exec swayidle -w \ +# timeout 300 'swaylock -f -c 000000' \ +# timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ +# before-sleep 'swaylock -f -c 000000' +# +# This will lock your screen after 300 seconds of inactivity, then turn off +# your displays after another 300 seconds, and turn your screens back on when +# resumed. It will also lock your screen before your computer goes to sleep. + +### Input configuration +# +# Example configuration: +# +# input "2:14:SynPS/2_Synaptics_TouchPad" { +# dwt enabled +# tap enabled +# natural_scroll enabled +# middle_emulation enabled +# } +# +# You can get the names of your inputs by running: swaymsg -t get_inputs +# Read `man 5 sway-input` for more information about this section. + +### Key bindings +# +# Basics: +# + # Start a terminal + bindsym $mod+Return exec $term + + # Kill focused window + bindsym $mod+Shift+q kill + + # Start your launcher + bindsym $mod+d exec $menu + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # Reload the configuration file + bindsym $mod+Shift+c reload + + # Exit sway (logs you out of your Wayland session) + bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' +# +# Moving around: +# + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # Or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # Move the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # Ditto, with arrow keys + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right +# +# Workspaces: +# + # Switch to workspace + bindsym $mod+1 workspace number 1 + bindsym $mod+2 workspace number 2 + bindsym $mod+3 workspace number 3 + bindsym $mod+4 workspace number 4 + bindsym $mod+5 workspace number 5 + bindsym $mod+6 workspace number 6 + bindsym $mod+7 workspace number 7 + bindsym $mod+8 workspace number 8 + bindsym $mod+9 workspace number 9 + bindsym $mod+0 workspace number 10 + # Move focused container to workspace + bindsym $mod+Shift+1 move container to workspace number 1 + bindsym $mod+Shift+2 move container to workspace number 2 + bindsym $mod+Shift+3 move container to workspace number 3 + bindsym $mod+Shift+4 move container to workspace number 4 + bindsym $mod+Shift+5 move container to workspace number 5 + bindsym $mod+Shift+6 move container to workspace number 6 + bindsym $mod+Shift+7 move container to workspace number 7 + bindsym $mod+Shift+8 move container to workspace number 8 + bindsym $mod+Shift+9 move container to workspace number 9 + bindsym $mod+Shift+0 move container to workspace number 10 + # Note: workspaces can have any name you want, not just numbers. + # We just use 1-10 as the default. +# +# Layout stuff: +# + # You can "split" the current object of your focus with + # $mod+b or $mod+v, for horizontal and vertical splits + # respectively. + bindsym $mod+b splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # Move focus to the parent container + bindsym $mod+a focus parent +# +# Gaps: +# +gaps inner 8 +smart_gaps on +# +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" + +# +# Status Bar: +# +# Read `man 5 sway-bar` for more information about this section. +bar { + position top + + font $font + + # When the status_command prints a new line to stdout, swaybar updates. + # The default just shows the current date and time. + status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done + + colors { + statusline #ffffff + background #323232 + inactive_workspace #32323200 #32323200 #5c5c5c + } +} + +include /etc/sway/config.d/* From 91b00b403b3a080ce9129e14c1f57752769fecdd Mon Sep 17 00:00:00 2001 From: Felipe M Date: Wed, 16 Dec 2020 16:31:40 +0100 Subject: [PATCH 03/79] Added basic NeoVim config --- .config/nvim/init.vim | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .config/nvim/init.vim diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim new file mode 100644 index 0000000..cddae75 --- /dev/null +++ b/.config/nvim/init.vim @@ -0,0 +1,19 @@ +" vim-plug +call plug#begin(stdpath('data') . '/plugged') + +Plug 'ctrlpvim/ctrlp.vim' + +call plug#end() + +" General configuration +set title " Shows file name in title +set number " Shows line numbers +set nowrap " Do not wrap lines + +set hidden " Allow buffer switch without saving +set ignorecase " Allows case insensitive searches +"set smartcase " Case sensitive searches if uppercase is used + +set spelllang=en + +colorscheme zellner From 455013d5c13846bf21eda03c7fc7222b52f10216 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Sat, 19 Dec 2020 19:44:57 +0100 Subject: [PATCH 04/79] Swaybar bash script --- .config/sway/config | 5 +++-- .config/sway/swaybar.sh | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100755 .config/sway/swaybar.sh diff --git a/.config/sway/config b/.config/sway/config index cb49076..818aacd 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -218,8 +218,9 @@ bar { # When the status_command prints a new line to stdout, swaybar updates. # The default just shows the current date and time. - status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done - + # + #status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done + status_command ~/.config/sway/swaybar.sh colors { statusline #ffffff background #323232 diff --git a/.config/sway/swaybar.sh b/.config/sway/swaybar.sh new file mode 100755 index 0000000..9b408d2 --- /dev/null +++ b/.config/sway/swaybar.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +function getPowerValue() { + POWER=$(cat /sys/class/power_supply/BAT0/capacity)% + echo $POWER +} + +function getDate() { + echo $(date +'%Y-%m-%d %H:%M') +} + + +while [ True ]; do + echo "$(getPowerValue) | $(getDate)" + sleep 30 +done + From 1e621e230f5bf28694b5c98ee70922d6a5cd505f Mon Sep 17 00:00:00 2001 From: fmartingr Date: Mon, 21 Dec 2020 12:52:13 +0100 Subject: [PATCH 05/79] Added weechat documentation --- docs/weechat.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 docs/weechat.md diff --git a/docs/weechat.md b/docs/weechat.md new file mode 100644 index 0000000..9b414de --- /dev/null +++ b/docs/weechat.md @@ -0,0 +1,18 @@ +# Weechat + +- Website: https://weechat.org/ + +## Enable mouse support + +``` +/set weechat.look.mouse on +/mouse enable +``` + +## Hide join/part/quit messages + +``` +/set irc.look.smart_filter on +/filter add irc_smart * irc_smart_filter * +/set irc.look.smart_filter_delay 5 +``` \ No newline at end of file From 2d7fc029c34c4d19892530fecc26b8cc8dbabee4 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 24 Dec 2020 12:43:46 +0100 Subject: [PATCH 06/79] Moved docs to .dotfiles --- {docs => .dotfiles/docs}/weechat.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {docs => .dotfiles/docs}/weechat.md (100%) diff --git a/docs/weechat.md b/.dotfiles/docs/weechat.md similarity index 100% rename from docs/weechat.md rename to .dotfiles/docs/weechat.md From 02910676a0660ec7bdd6e1a9fc877e2913e06e65 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 24 Dec 2020 12:43:54 +0100 Subject: [PATCH 07/79] docs: qutebrowser --- .dotfiles/docs/qutebrowser.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .dotfiles/docs/qutebrowser.md diff --git a/.dotfiles/docs/qutebrowser.md b/.dotfiles/docs/qutebrowser.md new file mode 100644 index 0000000..2227b88 --- /dev/null +++ b/.dotfiles/docs/qutebrowser.md @@ -0,0 +1,27 @@ +# Qutebrowser + +## Change default search engine + +``` python +# ~/.config/qutebrowser/config.py + +c.url.searchengines = { + "DEFAULT": "https://google.com/search?q={} +} +``` +## Change default start page + +``` python +# ~/.config/qutebrowser/config.py + +c.url.start_page = ["https://google.es"/ +c.url.start_urls = ["https://google.es"] +``` + +## Auto load last session + +``` python +# ~/.config/qutebrowser/config.py +c.auto_save.session true +c.auto_save.interval 15000 +``` From 6d5003711144957ae8c4aa0d6dcb29fcfddaa98d Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 24 Dec 2020 12:46:33 +0100 Subject: [PATCH 08/79] dmenu -> rofi --- .config/sway/config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.config/sway/config b/.config/sway/config index 818aacd..6bf6262 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -18,8 +18,8 @@ set $term alacritty # Your preferred application launcher # Note: pass the final command to swaymsg so that the resulting window can be opened # on the original workspace that the command was run on. -set $menu dmenu_path | dmenu | xargs swaymsg exec -- -# set $menu rofi -modi run +#set $menu dmenu_path | dmenu | xargs swaymsg exec -- +set $menu rofi -show run # Fonts set $font Terminus From 25c51046fa76f722b1b94424e9ae36ee61b39dcc Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 24 Dec 2020 12:51:15 +0100 Subject: [PATCH 09/79] swaybar: +power status, +volume --- .config/sway/swaybar.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.config/sway/swaybar.sh b/.config/sway/swaybar.sh index 9b408d2..e185e5c 100755 --- a/.config/sway/swaybar.sh +++ b/.config/sway/swaybar.sh @@ -5,13 +5,25 @@ function getPowerValue() { echo $POWER } +function getPowerStatus() { + POWERSTATUS=$(cat /sys/class/power_supply/BAT0/status) + if [ "$POWERSTATUS" == "Charging" ]; then + echo "+" + else + echo "-" + fi +} + function getDate() { echo $(date +'%Y-%m-%d %H:%M') } +function getVolume() { + echo $(amixer get Master | grep 'Left:' | awk -F"[][]" '{ print $2 }') +} while [ True ]; do - echo "$(getPowerValue) | $(getDate)" + echo "$(getVolume) | $(getPowerValue)$(getPowerStatus) | $(getDate)" sleep 30 done From f831b81380d92b51214048bba6ee3305e1c03a60 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 24 Dec 2020 16:41:08 +0100 Subject: [PATCH 10/79] swaybar: Only charging and discharging symbols --- .config/sway/swaybar.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.config/sway/swaybar.sh b/.config/sway/swaybar.sh index e185e5c..7b636e5 100755 --- a/.config/sway/swaybar.sh +++ b/.config/sway/swaybar.sh @@ -1,4 +1,5 @@ #!/bin/bash +# vim: ts=4 function getPowerValue() { POWER=$(cat /sys/class/power_supply/BAT0/capacity)% @@ -9,7 +10,7 @@ function getPowerStatus() { POWERSTATUS=$(cat /sys/class/power_supply/BAT0/status) if [ "$POWERSTATUS" == "Charging" ]; then echo "+" - else + elif [ "$POWERSTATUS" == "Discharging" ]; then echo "-" fi } From 790b16ef6fd11317703f7aca9bac428a5ab2fac3 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 24 Dec 2020 16:41:39 +0100 Subject: [PATCH 11/79] Added mako keybinds --- .config/sway/config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.config/sway/config b/.config/sway/config index 6bf6262..e631210 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -170,6 +170,13 @@ output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill # gaps inner 8 smart_gaps on + +# +# Notifications: +# +bindsym ctrl+space exec makoctl dismiss +bindsym ctrl+shift+space exec makoctl dismiss --all + # # Scratchpad: # From 3aabd84a49ca9cfd817ee2f4345e90888e8d3637 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Sun, 27 Dec 2020 16:54:57 +0100 Subject: [PATCH 12/79] Remove window titles --- .config/sway/config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.config/sway/config b/.config/sway/config index e631210..ce5d460 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -177,6 +177,11 @@ smart_gaps on bindsym ctrl+space exec makoctl dismiss bindsym ctrl+shift+space exec makoctl dismiss --all +# +# Window decorations: +# +default_border pixel 2 + # # Scratchpad: # From 72dbe8ae20229acef445e4d11de1224e3b4f3225 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Mon, 28 Dec 2020 16:50:37 +0100 Subject: [PATCH 13/79] Added screenshot shortcut and script --- .config/sway/config | 7 +++++++ .dotfiles/bin/screenshot.sh | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100755 .dotfiles/bin/screenshot.sh diff --git a/.config/sway/config b/.config/sway/config index ce5d460..bd36903 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -165,6 +165,13 @@ output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill # Move focus to the parent container bindsym $mod+a focus parent + +# +# Keybinds: +# +bindsym alt+shift+4 exec ~/.dotfiles/bin/screenshot.sh + + # # Gaps: # diff --git a/.dotfiles/bin/screenshot.sh b/.dotfiles/bin/screenshot.sh new file mode 100755 index 0000000..7642a3c --- /dev/null +++ b/.dotfiles/bin/screenshot.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +FILE_PATH=$HOME/Pictures/Screenshots/$(date -u +"%Y-%m-%d_%H-%M-%S").png + +grim -g "$(slurp)" $FILE_PATH + +cat $FILE_PATH | wl-copy From 83268798a6473bed620b0514dc093dd240552043 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Mon, 28 Dec 2020 18:28:46 +0100 Subject: [PATCH 14/79] Qutebrowser config --- .config/qutebrowser/config.py | 34 ++++++++++++++++++++++++++++++++++ .config/qutebrowser/quickmarks | 4 ++++ 2 files changed, 38 insertions(+) create mode 100644 .config/qutebrowser/config.py create mode 100644 .config/qutebrowser/quickmarks diff --git a/.config/qutebrowser/config.py b/.config/qutebrowser/config.py new file mode 100644 index 0000000..11f6211 --- /dev/null +++ b/.config/qutebrowser/config.py @@ -0,0 +1,34 @@ +from qutebrowser.api import interceptor + + +# Youtube Ad Blocker +# From: https://gist.github.com/Gavinok/f9c310a66576dc00329dd7bef2b122a1 + +def filter_youtube_ads(info: interceptor.Request): + """Block the given request if necessary.""" + url = info.request_url + # Video ads + if ( + url.host() == "www.youtube.com" + and url.path() == "/get_video_info" + and "&adformat=" in url.query() + ): + info.block() + + +interceptor.register(filter_youtube_ads) + +# Session save/restore +c.auto_save.session = True +c.auto_save.interval = 15000 + +# Search engines +c.url.searchengines = { + 'DEFAULT': 'https://google.com/search?hl=en&q={}', + '!a': 'https://www.amazon.es/s?k={}', + '!gh': 'https://github.com/search?o=desc&q={}&s=stars', +} + +# Default page and new tab +c.url.default_page = "https://miniflux.fmartingr.dev" +c.url.start_pages = ["https://miniflux.fmartingr.dev"] diff --git a/.config/qutebrowser/quickmarks b/.config/qutebrowser/quickmarks new file mode 100644 index 0000000..e1aa07d --- /dev/null +++ b/.config/qutebrowser/quickmarks @@ -0,0 +1,4 @@ +disc https://discord.com/channels/@me +gh https://github.com/ +yt https://www.youtube.com/ +tw https://twitter.com/ From a2fb76a35147eb0890c74b59a5d3863c66c02c63 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Mon, 28 Dec 2020 21:04:16 +0100 Subject: [PATCH 15/79] neovim config --- .config/nvim/init.vim | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index cddae75..e24b5ed 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -1,11 +1,22 @@ +" " vim-plug +" call plug#begin(stdpath('data') . '/plugged') Plug 'ctrlpvim/ctrlp.vim' +" Code analysis and autocompletion +Plug 'dense-analysis/ale' +Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } + +" Git +Plug 'airblade/vim-gitgutter' + call plug#end() +" " General configuration +" set title " Shows file name in title set number " Shows line numbers set nowrap " Do not wrap lines @@ -14,6 +25,17 @@ set hidden " Allow buffer switch without saving set ignorecase " Allows case insensitive searches "set smartcase " Case sensitive searches if uppercase is used -set spelllang=en +set spelllang=en " Check language spelling in english +" +" Theming +" colorscheme zellner + +" +" Deoplete +" +let g:deoplete#enable_at_startup = 1 + +" - Autocomplete with +inoremap pumvisible() ? "\" : "\" From 10bf61912701c1ac291ca4b2a37d90cae5034e3a Mon Sep 17 00:00:00 2001 From: Felipe M Date: Mon, 28 Dec 2020 22:41:13 +0100 Subject: [PATCH 16/79] nvim: Added UndoTree --- .config/nvim/init.vim | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index e24b5ed..b75e516 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -12,6 +12,9 @@ Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } " Git Plug 'airblade/vim-gitgutter' +" Undo tree +Plug 'mbbill/undotree' + call plug#end() " @@ -32,6 +35,11 @@ set spelllang=en " Check language spelling in english " colorscheme zellner +" +" CtrlP +" +map :CtrlPBuffer + " " Deoplete " @@ -39,3 +47,8 @@ let g:deoplete#enable_at_startup = 1 " - Autocomplete with inoremap pumvisible() ? "\" : "\" + +" +" UndoTree +" +map :UndotreeToggle From b946e41d891d4b35e0b42dd2beaecf302c2d8564 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Tue, 29 Dec 2020 09:27:24 +0100 Subject: [PATCH 17/79] docs: qutebrowser --- .dotfiles/docs/qutebrowser.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.dotfiles/docs/qutebrowser.md b/.dotfiles/docs/qutebrowser.md index 2227b88..09fff0a 100644 --- a/.dotfiles/docs/qutebrowser.md +++ b/.dotfiles/docs/qutebrowser.md @@ -1,5 +1,11 @@ # Qutebrowser +## Set as default browser + +``` bash +$ xdg-settings set default-web-browser org.qutebrowser.qutebrowser.desktop +``` + ## Change default search engine ``` python @@ -14,7 +20,7 @@ c.url.searchengines = { ``` python # ~/.config/qutebrowser/config.py -c.url.start_page = ["https://google.es"/ +c.url.start_page = "https://google.es" c.url.start_urls = ["https://google.es"] ``` From 90bafced8a83c0c0bee3f27db0f6b0e34d985a49 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Tue, 29 Dec 2020 09:27:40 +0100 Subject: [PATCH 18/79] config: alacritty --- .config/alacritty/alacritty.yml | 766 ++++++++++++++++++++++++++++++++ 1 file changed, 766 insertions(+) create mode 100644 .config/alacritty/alacritty.yml diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml new file mode 100644 index 0000000..537f2bf --- /dev/null +++ b/.config/alacritty/alacritty.yml @@ -0,0 +1,766 @@ +# Configuration for Alacritty, the GPU enhanced terminal emulator. + +# Import additional configuration files +# +# These configuration files will be loaded in order, replacing values in files +# loaded earlier with those loaded later in the chain. The file itself will +# always be loaded last. +#import: +# - /path/to/alacritty.yml + +# Any items in the `env` entry below will be added as +# environment variables. Some entries may override variables +# set by alacritty itself. +#env: + # TERM variable + # + # This value is used to set the `$TERM` environment variable for + # each instance of Alacritty. If it is not present, alacritty will + # check the local terminfo database and use `alacritty` if it is + # available, otherwise `xterm-256color` is used. + #TERM: alacritty + +#window: + # Window dimensions (changes require restart) + # + # Number of lines/columns (not pixels) in the terminal. The number of columns + # must be at least `2`, while using a value of `0` for columns and lines will + # fall back to the window manager's recommended size. + #dimensions: + # columns: 0 + # lines: 0 + + # Window position (changes require restart) + # + # Specified in number of pixels. + # If the position is not set, the window manager will handle the placement. + #position: + # x: 0 + # y: 0 + + # Window padding (changes require restart) + # + # Blank space added around the window in pixels. This padding is scaled + # by DPI and the specified value is always added at both opposing sides. + #padding: + # x: 0 + # y: 0 + + # Spread additional padding evenly around the terminal content. + #dynamic_padding: false + + # Window decorations + # + # Values for `decorations`: + # - full: Borders and title bar + # - none: Neither borders nor title bar + # + # Values for `decorations` (macOS only): + # - transparent: Title bar, transparent background and title bar buttons + # - buttonless: Title bar, transparent background and no title bar buttons + #decorations: full + + # Startup Mode (changes require restart) + # + # Values for `startup_mode`: + # - Windowed + # - Maximized + # - Fullscreen + # + # Values for `startup_mode` (macOS only): + # - SimpleFullscreen + #startup_mode: Windowed + + # Window title + #title: Alacritty + + # Allow terminal applications to change Alacritty's window title. + #dynamic_title: true + + # Window class (Linux/BSD only): + #class: + # Application instance name + #instance: Alacritty + # General application class + #general: Alacritty + + # GTK theme variant (Linux/BSD only) + # + # Override the variant of the GTK theme. Commonly supported values are `dark` + # and `light`. Set this to `None` to use the default theme variant. + #gtk_theme_variant: None + +#scrolling: + # Maximum number of lines in the scrollback buffer. + # Specifying '0' will disable scrolling. + #history: 10000 + + # Scrolling distance multiplier. + #multiplier: 3 + +# Font configuration +font: + size: 12 + # Normal (roman) font face + normal: + # Font family + # + # Default: + # - (macOS) Menlo + # - (Linux/BSD) monospace + # - (Windows) Consolas + family: xos4 Terminus + + # The `style` can be specified to pick a specific face. + #style: Regular + + # Bold font face + #bold: + # Font family + # + # If the bold family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Bold + + # Italic font face + #italic: + # Font family + # + # If the italic family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Italic + + # Bold italic font face + #bold_italic: + # Font family + # + # If the bold italic family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Bold Italic + + # Point size + #size: 11.0 + + # Offset is the extra space around each character. `offset.y` can be thought + # of as modifying the line spacing, and `offset.x` as modifying the letter + # spacing. + #offset: + # x: 0 + # y: 0 + + # Glyph offset determines the locations of the glyphs within their cells with + # the default being at the bottom. Increasing `x` moves the glyph to the + # right, increasing `y` moves the glyph upward. + #glyph_offset: + # x: 0 + # y: 0 + + # Thin stroke font rendering (macOS only) + # + # Thin strokes are suitable for retina displays, but for non-retina screens + # it is recommended to set `use_thin_strokes` to `false`. + #use_thin_strokes: true + +# If `true`, bold text is drawn using the bright color variants. +#draw_bold_text_with_bright_colors: false + +# Colors (Tomorrow Night) +#colors: + # Default colors + #primary: + # background: '#1d1f21' + # foreground: '#c5c8c6' + + # Bright and dim foreground colors + # + # The dimmed foreground color is calculated automatically if it is not + # present. If the bright foreground color is not set, or + # `draw_bold_text_with_bright_colors` is `false`, the normal foreground + # color will be used. + #dim_foreground: '#828482' + #bright_foreground: '#eaeaea' + + # Cursor colors + # + # Colors which should be used to draw the terminal cursor. + # + # Allowed values are CellForeground and CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #cursor: + # text: CellBackground + # cursor: CellForeground + + # Vi mode cursor colors + # + # Colors for the cursor when the vi mode is active. + # + # Allowed values are CellForeground and CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #vi_mode_cursor: + # text: CellBackground + # cursor: CellForeground + + # Selection colors + # + # Colors which should be used to draw the selection area. + # + # Allowed values are CellForeground and CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #selection: + # text: CellBackground + # background: CellForeground + + # Search colors + # + # Colors used for the search bar and match highlighting. + #search: + # Allowed values are CellForeground and CellBackground, which reference the + # affected cell, or hexadecimal colors like #ff00ff. + #matches: + # foreground: '#000000' + # background: '#ffffff' + #focused_match: + # foreground: CellBackground + # background: CellForeground + + #bar: + # background: '#c5c8c6' + # foreground: '#1d1f21' + + # Normal colors + #normal: + # black: '#1d1f21' + # red: '#cc6666' + # green: '#b5bd68' + # yellow: '#f0c674' + # blue: '#81a2be' + # magenta: '#b294bb' + # cyan: '#8abeb7' + # white: '#c5c8c6' + + # Bright colors + #bright: + # black: '#666666' + # red: '#d54e53' + # green: '#b9ca4a' + # yellow: '#e7c547' + # blue: '#7aa6da' + # magenta: '#c397d8' + # cyan: '#70c0b1' + # white: '#eaeaea' + + # Dim colors + # + # If the dim colors are not set, they will be calculated automatically based + # on the `normal` colors. + #dim: + # black: '#131415' + # red: '#864343' + # green: '#777c44' + # yellow: '#9e824c' + # blue: '#556a7d' + # magenta: '#75617b' + # cyan: '#5b7d78' + # white: '#828482' + + # Indexed Colors + # + # The indexed colors include all colors from 16 to 256. + # When these are not set, they're filled with sensible defaults. + # + # Example: + # `- { index: 16, color: '#ff00ff' }` + # + #indexed_colors: [] + +# Bell +# +# The bell is rung every time the BEL control character is received. +#bell: + # Visual Bell Animation + # + # Animation effect for flashing the screen when the visual bell is rung. + # + # Values for `animation`: + # - Ease + # - EaseOut + # - EaseOutSine + # - EaseOutQuad + # - EaseOutCubic + # - EaseOutQuart + # - EaseOutQuint + # - EaseOutExpo + # - EaseOutCirc + # - Linear + #animation: EaseOutExpo + + # Duration of the visual bell flash in milliseconds. A `duration` of `0` will + # disable the visual bell animation. + #duration: 0 + + # Visual bell animation color. + #color: '#ffffff' + + # Bell Command + # + # This program is executed whenever the bell is rung. + # + # When set to `command: None`, no command will be executed. + # + # Example: + # command: + # program: notify-send + # args: ["Hello, World!"] + # + #command: None + +# Background opacity +# +# Window opacity as a floating point number from `0.0` to `1.0`. +# The value `0.0` is completely transparent and `1.0` is opaque. +#background_opacity: 1.0 + +#selection: + # This string contains all characters that are used as separators for + # "semantic words" in Alacritty. + #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" + + # When set to `true`, selected text will be copied to the primary clipboard. + #save_to_clipboard: false + +#cursor: + # Cursor style + # + # Values for `style`: + # - ▇ Block + # - _ Underline + # - | Beam + #style: Block + + # Vi mode cursor style + # + # If the vi mode cursor style is `None` or not specified, it will fall back to + # the style of the active value of the normal cursor. + # + # See `cursor.style` for available options. + #vi_mode_style: None + + # If this is `true`, the cursor will be rendered as a hollow box when the + # window is not focused. + #unfocused_hollow: true + + # Thickness of the cursor relative to the cell width as floating point number + # from `0.0` to `1.0`. + #thickness: 0.15 + +# Live config reload (changes require restart) +live_config_reload: true + +# Shell +# +# You can set `shell.program` to the path of your favorite shell, e.g. +# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the +# shell. +# +# Default: +# - (macOS) /bin/bash --login +# - (Linux/BSD) user login shell +# - (Windows) powershell +#shell: +# program: /bin/bash +# args: +# - --login + +# Startup directory +# +# Directory the shell is started in. If this is unset, or `None`, the working +# directory of the parent process will be used. +#working_directory: None + +# WinPTY backend (Windows only) +# +# Alacritty defaults to using the newer ConPTY backend if it is available, +# since it resolves a lot of bugs and is quite a bit faster. If it is not +# available, the WinPTY backend will be used instead. +# +# Setting this option to `true` makes Alacritty use the legacy WinPTY backend, +# even if the ConPTY backend is available. +#winpty_backend: false + +# Send ESC (\x1b) before characters when alt is pressed. +#alt_send_esc: true + +#mouse: + # Click settings + # + # The `double_click` and `triple_click` settings control the time + # alacritty should wait for accepting multiple clicks as one double + # or triple click. + #double_click: { threshold: 300 } + #triple_click: { threshold: 300 } + + # If this is `true`, the cursor is temporarily hidden when typing. + #hide_when_typing: false + + #url: + # URL launcher + # + # This program is executed when clicking on a text which is recognized as a + # URL. The URL is always added to the command as the last parameter. + # + # When set to `launcher: None`, URL launching will be disabled completely. + # + # Default: + # - (macOS) open + # - (Linux/BSD) xdg-open + # - (Windows) explorer + #launcher: + # program: xdg-open + # args: [] + + # URL modifiers + # + # These are the modifiers that need to be held down for opening URLs when + # clicking on them. The available modifiers are documented in the key + # binding section. + #modifiers: None + +# Mouse bindings +# +# Mouse bindings are specified as a list of objects, much like the key +# bindings further below. +# +# To trigger mouse bindings when an application running within Alacritty +# captures the mouse, the `Shift` modifier is automatically added as a +# requirement. +# +# Each mouse binding will specify a: +# +# - `mouse`: +# +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# - `action` (see key bindings) +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Middle, action: PasteSelection } + +# Key bindings +# +# Key bindings are specified as a list of objects. For example, this is the +# default paste binding: +# +# `- { key: V, mods: Control|Shift, action: Paste }` +# +# Each key binding will specify a: +# +# - `key`: Identifier of the key pressed +# +# - A-Z +# - F1-F24 +# - Key0-Key9 +# +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants +# +# Instead of using the name of the keys, the `key` field also supports using +# the scancode of the desired key. Scancodes have to be specified as a +# decimal number. This command will allow you to display the hex scancodes +# for certain keys: +# +# `showkey --scancodes`. +# +# Then exactly one of: +# +# - `chars`: Send a byte sequence to the running application +# +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. To find escape codes for bindings +# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside +# of tmux. Note that applications use terminfo to map escape sequences back +# to keys. It is therefore required to update the terminfo when changing an +# escape sequence. +# +# - `action`: Execute a predefined action +# +# - ToggleViMode +# - SearchForward +# Start searching toward the right of the search origin. +# - SearchBackward +# Start searching toward the left of the search origin. +# - Copy +# - Paste +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollHalfPageUp +# - ScrollHalfPageDown +# - ScrollLineUp +# - ScrollLineDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# Remove the terminal's scrollback history. +# - Hide +# Hide the Alacritty window. +# - Minimize +# Minimize the Alacritty window. +# - Quit +# Quit Alacritty. +# - ToggleFullscreen +# - SpawnNewInstance +# Spawn a new instance of Alacritty. +# - ClearLogNotice +# Clear Alacritty's UI warning and error notice. +# - ClearSelection +# Remove the active selection. +# - ReceiveChar +# - None +# +# - Vi mode exclusive actions: +# +# - Open +# Open URLs at the cursor location with the launcher configured in +# `url.launcher`. +# - ToggleNormalSelection +# - ToggleLineSelection +# - ToggleBlockSelection +# - ToggleSemanticSelection +# Toggle semantic selection based on `selection.semantic_escape_chars`. +# +# - Vi mode exclusive cursor motion actions: +# +# - Up +# One line up. +# - Down +# One line down. +# - Left +# One character left. +# - Right +# One character right. +# - First +# First column, or beginning of the line when already at the first column. +# - Last +# Last column, or beginning of the line when already at the last column. +# - FirstOccupied +# First non-empty cell in this terminal row, or first non-empty cell of +# the line when already at the first cell of the row. +# - High +# Top of the screen. +# - Middle +# Center of the screen. +# - Low +# Bottom of the screen. +# - SemanticLeft +# Start of the previous semantically separated word. +# - SemanticRight +# Start of the next semantically separated word. +# - SemanticLeftEnd +# End of the previous semantically separated word. +# - SemanticRightEnd +# End of the next semantically separated word. +# - WordLeft +# Start of the previous whitespace separated word. +# - WordRight +# Start of the next whitespace separated word. +# - WordLeftEnd +# End of the previous whitespace separated word. +# - WordRightEnd +# End of the next whitespace separated word. +# - Bracket +# Character matching the bracket at the cursor's location. +# - SearchNext +# Beginning of the next match. +# - SearchPrevious +# Beginning of the previous match. +# - SearchStart +# Start of the match to the left of the vi mode cursor. +# - SearchEnd +# End of the match to the right of the vi mode cursor. +# +# - macOS exclusive actions: +# - ToggleSimpleFullscreen +# Enter fullscreen without occupying another space. +# +# - Linux/BSD exclusive actions: +# +# - CopySelection +# Copy from the selection buffer. +# - PasteSelection +# Paste from the selection buffer. +# +# - `command`: Fork and execute a specified command plus arguments +# +# The `command` field must be a map containing a `program` string and an +# `args` array of command line parameter strings. For example: +# `{ program: "alacritty", args: ["-e", "vttest"] }` +# +# And optionally: +# +# - `mods`: Key modifiers to filter binding actions +# +# - Command +# - Control +# - Option +# - Super +# - Shift +# - Alt +# +# Multiple `mods` can be combined using `|` like this: +# `mods: Control|Shift`. +# Whitespace and capitalization are relevant and must match the example. +# +# - `mode`: Indicate a binding for only specific terminal reported modes +# +# This is mainly used to send applications the correct escape sequences +# when in different modes. +# +# - AppCursor +# - AppKeypad +# - Alt +# - Vi +# +# A `~` operator can be used before a mode to apply the binding whenever +# the mode is *not* active, e.g. `~Alt`. +# +# Bindings are always filled by default, but will be replaced when a new +# binding with the same triggers is defined. To unset a default binding, it can +# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for +# a no-op if you do not wish to receive input characters for that binding. +# +# If the same trigger is assigned to multiple actions, all of them are executed +# in the order they were defined in. +#key_bindings: + #- { key: Paste, action: Paste } + #- { key: Copy, action: Copy } + #- { key: L, mods: Control, action: ClearLogNotice } + #- { key: L, mods: Control, mode: ~Vi, chars: "\x0c" } + #- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, } + #- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown } + #- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, } + #- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom } + + # Vi Mode + #- { key: Space, mods: Shift|Control, mode: Vi, action: ScrollToBottom } + #- { key: Space, mods: Shift|Control, action: ToggleViMode } + #- { key: Escape, mode: Vi, action: ClearSelection } + #- { key: I, mode: Vi, action: ScrollToBottom } + #- { key: I, mode: Vi, action: ToggleViMode } + #- { key: C, mods: Control, mode: Vi, action: ToggleViMode } + #- { key: Y, mods: Control, mode: Vi, action: ScrollLineUp } + #- { key: E, mods: Control, mode: Vi, action: ScrollLineDown } + #- { key: G, mode: Vi, action: ScrollToTop } + #- { key: G, mods: Shift, mode: Vi, action: ScrollToBottom } + #- { key: B, mods: Control, mode: Vi, action: ScrollPageUp } + #- { key: F, mods: Control, mode: Vi, action: ScrollPageDown } + #- { key: U, mods: Control, mode: Vi, action: ScrollHalfPageUp } + #- { key: D, mods: Control, mode: Vi, action: ScrollHalfPageDown } + #- { key: Y, mode: Vi, action: Copy } + #- { key: Y, mode: Vi, action: ClearSelection } + #- { key: Copy, mode: Vi, action: ClearSelection } + #- { key: V, mode: Vi, action: ToggleNormalSelection } + #- { key: V, mods: Shift, mode: Vi, action: ToggleLineSelection } + #- { key: V, mods: Control, mode: Vi, action: ToggleBlockSelection } + #- { key: V, mods: Alt, mode: Vi, action: ToggleSemanticSelection } + #- { key: Return, mode: Vi, action: Open } + #- { key: K, mode: Vi, action: Up } + #- { key: J, mode: Vi, action: Down } + #- { key: H, mode: Vi, action: Left } + #- { key: L, mode: Vi, action: Right } + #- { key: Up, mode: Vi, action: Up } + #- { key: Down, mode: Vi, action: Down } + #- { key: Left, mode: Vi, action: Left } + #- { key: Right, mode: Vi, action: Right } + #- { key: Key0, mode: Vi, action: First } + #- { key: Key4, mods: Shift, mode: Vi, action: Last } + #- { key: Key6, mods: Shift, mode: Vi, action: FirstOccupied } + #- { key: H, mods: Shift, mode: Vi, action: High } + #- { key: M, mods: Shift, mode: Vi, action: Middle } + #- { key: L, mods: Shift, mode: Vi, action: Low } + #- { key: B, mode: Vi, action: SemanticLeft } + #- { key: W, mode: Vi, action: SemanticRight } + #- { key: E, mode: Vi, action: SemanticRightEnd } + #- { key: B, mods: Shift, mode: Vi, action: WordLeft } + #- { key: W, mods: Shift, mode: Vi, action: WordRight } + #- { key: E, mods: Shift, mode: Vi, action: WordRightEnd } + #- { key: Key5, mods: Shift, mode: Vi, action: Bracket } + #- { key: Slash, mode: Vi, action: SearchForward } + #- { key: Slash, mods: Shift, mode: Vi, action: SearchBackward } + #- { key: N, mode: Vi, action: SearchNext } + #- { key: N, mods: Shift, mode: Vi, action: SearchPrevious } + + # (Windows, Linux, and BSD only) + #- { key: V, mods: Control|Shift, action: Paste } + #- { key: C, mods: Control|Shift, action: Copy } + #- { key: F, mods: Control|Shift, action: SearchForward } + #- { key: B, mods: Control|Shift, action: SearchBackward } + #- { key: C, mods: Control|Shift, mode: Vi, action: ClearSelection } + #- { key: Insert, mods: Shift, action: PasteSelection } + #- { key: Key0, mods: Control, action: ResetFontSize } + #- { key: Equals, mods: Control, action: IncreaseFontSize } + #- { key: Plus, mods: Control, action: IncreaseFontSize } + #- { key: NumpadAdd, mods: Control, action: IncreaseFontSize } + #- { key: Minus, mods: Control, action: DecreaseFontSize } + #- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize } + + # (Windows only) + #- { key: Return, mods: Alt, action: ToggleFullscreen } + + # (macOS only) + #- { key: K, mods: Command, mode: ~Vi, chars: "\x0c" } + #- { key: Key0, mods: Command, action: ResetFontSize } + #- { key: Equals, mods: Command, action: IncreaseFontSize } + #- { key: Plus, mods: Command, action: IncreaseFontSize } + #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize } + #- { key: Minus, mods: Command, action: DecreaseFontSize } + #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize } + #- { key: K, mods: Command, action: ClearHistory } + #- { key: V, mods: Command, action: Paste } + #- { key: C, mods: Command, action: Copy } + #- { key: C, mods: Command, mode: Vi, action: ClearSelection } + #- { key: H, mods: Command, action: Hide } + #- { key: M, mods: Command, action: Minimize } + #- { key: Q, mods: Command, action: Quit } + #- { key: W, mods: Command, action: Quit } + #- { key: N, mods: Command, action: SpawnNewInstance } + #- { key: F, mods: Command|Control, action: ToggleFullscreen } + #- { key: F, mods: Command, action: SearchForward } + #- { key: B, mods: Command, action: SearchBackward } + +#debug: + # Display the time it takes to redraw each frame. + #render_timer: false + + # Keep the log file after quitting Alacritty. + #persistent_logging: false + + # Log level + # + # Values for `log_level`: + # - None + # - Error + # - Warn + # - Info + # - Debug + # - Trace + #log_level: Warn + + # Print all received window events. + #print_events: false From 7818a89560632f1bbaf0451c66fae8eb2f38864e Mon Sep 17 00:00:00 2001 From: Felipe M Date: Tue, 29 Dec 2020 10:10:21 +0100 Subject: [PATCH 19/79] config: mako --- .config/mako/config | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .config/mako/config diff --git a/.config/mako/config b/.config/mako/config new file mode 100644 index 0000000..582f84d --- /dev/null +++ b/.config/mako/config @@ -0,0 +1,20 @@ +font=Terminus 10 +icons=1 +max-icon-size=16 +default-timeout=5000 + +[urgency=low] +text-color=#888888ff +background-color=#222222ff + +[urgency=normal] +text-color=#ffffffff +background-color=#285577ff + +[urgency=high] +ignore-timeout=1 +default-timeout=0 +text-color=#ffffffff +background-color=#900000ff +border-color=#ff0000ff + From 214b74dbde3a11978925209a435ab716f2c073a8 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Tue, 29 Dec 2020 12:09:35 +0100 Subject: [PATCH 20/79] config: sway QoL --- .config/sway/config | 23 ---------- .config/sway/config.d/10-style.config | 12 ++++++ .config/sway/config.d/20-keybinds.config | 41 ++++++++++++++++++ .dotfiles/bin/lock.sh | 54 ++++++++++++++++++++++++ 4 files changed, 107 insertions(+), 23 deletions(-) create mode 100644 .config/sway/config.d/10-style.config create mode 100644 .config/sway/config.d/20-keybinds.config create mode 100755 .dotfiles/bin/lock.sh diff --git a/.config/sway/config b/.config/sway/config index bd36903..965941a 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -166,29 +166,6 @@ output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill # Move focus to the parent container bindsym $mod+a focus parent -# -# Keybinds: -# -bindsym alt+shift+4 exec ~/.dotfiles/bin/screenshot.sh - - -# -# Gaps: -# -gaps inner 8 -smart_gaps on - -# -# Notifications: -# -bindsym ctrl+space exec makoctl dismiss -bindsym ctrl+shift+space exec makoctl dismiss --all - -# -# Window decorations: -# -default_border pixel 2 - # # Scratchpad: # diff --git a/.config/sway/config.d/10-style.config b/.config/sway/config.d/10-style.config new file mode 100644 index 0000000..848974f --- /dev/null +++ b/.config/sway/config.d/10-style.config @@ -0,0 +1,12 @@ +# +# Gaps: +# +gaps inner 8 +smart_gaps on + +# +# Window decorations: +# +default_border pixel 2 +hide_edge_borders smart + diff --git a/.config/sway/config.d/20-keybinds.config b/.config/sway/config.d/20-keybinds.config new file mode 100644 index 0000000..9a9f393 --- /dev/null +++ b/.config/sway/config.d/20-keybinds.config @@ -0,0 +1,41 @@ +set $locker ~/.dotfiles/bin/lock.sh + +# Notifications: +bindsym ctrl+space exec makoctl dismiss +bindsym ctrl+shift+space exec makoctl dismiss --all + +# Screenshot +bindsym alt+shift+4 exec ~/.dotfiles/bin/screenshot.sh + +# Multimedia Keys +# Requires: playerctl +bindsym XF86AudioRaiseVolume exec amixer -D pulse sset Master 5%+ +bindsym XF86AudioLowerVolume exec amixer -D pulse sset Master 5%- +bindsym XF86AudioMute exec amixer sset Master toggle +bindsym XF86AudioPlay exec playerctl play-pause +bindsym XF86AudioNext exec playerctl next +bindsym XF86AudioPrev exec playerctl previous + +# Screen brightness +bindsym XF86MonBrightnessUp exec brightnessctl set +5% +bindsym XF86MonBrightnessDown exec brightnessctl set 5%- + +# Lock +bindsym $mod+l exec $locker + +# Sticky windows +bindsym $mod+j sticky toggle + +# System menu +set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown +mode "$mode_system" { + bindsym l exec --no-startup-id $locker, mode "default" + bindsym e exec --no-startup-id swaymsg exit, mode "default" + bindsym s exec --no-startup-id $locker && systemctl suspend, mode "default" + bindsym h exec --no-startup-id $locker && systemctl hibernate, mode "default" + bindsym r exec --no-startup-id systemctl reboot, mode "default" + bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default" + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+F12 mode "$mode_system" diff --git a/.dotfiles/bin/lock.sh b/.dotfiles/bin/lock.sh new file mode 100755 index 0000000..611abcd --- /dev/null +++ b/.dotfiles/bin/lock.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# vi: ts=4 + +# Lockscreen script that will capture a screenshot, pixelate and add an overlay (all optional). +# If no toggle is enabled, the overlay image for the final image is used instead. $overlayPath with +# a black backgrond color. +# Optional features require the `imagemagick` package. + +# Constants +lockscreenDir=$(mktemp -d) +lockscreenPath=$lockscreenDir/lock.png + +# Config +screenshotBin=grim +lockscreenBin=swaylock +overlayPath=~/.dotfiles/lock_overlay.png +font=Terminus +extraArguments= + +# Toggles +screenshot=false +pixelate=false +overlay=false + +cd $lockscreenDir + +# Take screenshot +if $screenshot; then + $screenshotBin $lockscreenPath +else + cp $HOME/.wallpaper $lockscreenPath +fi + +# Pixelate +if $pixelate; then + convert $lockscreenPath -scale 10% -scale 1000% $lockscreenPath +fi + +# Overlay +if $overlay; then + convert "$lockscreenPath" "$overlayPath" -gravity center -composite "$lockscreenPath" +fi + +if ! $screenshot && ! $pixelate && ! $overlay; then + lockscreenPath=$overlayPath + extraArguments="$extraArguments --scaling=center --color=#000001ff" +fi + +# Lock screen +$lockscreenBin \ + -n \ + --image $lockscreenPath \ + --font=$font \ + $extraArguments From aa4dde02be0558054b27173f04014e65eed8ca67 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Tue, 29 Dec 2020 12:10:06 +0100 Subject: [PATCH 21/79] config: rofi --- .config/rofi/config.rasi | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .config/rofi/config.rasi diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi new file mode 100644 index 0000000..201c6fa --- /dev/null +++ b/.config/rofi/config.rasi @@ -0,0 +1,4 @@ +configuration { + font: "Terminus 14"; + theme: "/usr/share/rofi/themes/Paper.rasi"; +} From 4818bbd4b1805511a30fbf094f467794744241c9 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 31 Dec 2020 12:53:04 +0100 Subject: [PATCH 22/79] sway: Added keybind for file manager --- .config/sway/config.d/20-keybinds.config | 1 + 1 file changed, 1 insertion(+) diff --git a/.config/sway/config.d/20-keybinds.config b/.config/sway/config.d/20-keybinds.config index 9a9f393..d3ed8c0 100644 --- a/.config/sway/config.d/20-keybinds.config +++ b/.config/sway/config.d/20-keybinds.config @@ -1,4 +1,5 @@ set $locker ~/.dotfiles/bin/lock.sh +set $fileManager caja # Notifications: bindsym ctrl+space exec makoctl dismiss From 587857621c273b292a80850030a5d6a5d362e857 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 31 Dec 2020 12:53:29 +0100 Subject: [PATCH 23/79] sway: Wallpaper --- .config/sway/config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/sway/config b/.config/sway/config index 965941a..2e00002 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -29,7 +29,7 @@ font $font ### Output configuration # # Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) -output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill +output * bg ~/.wallpaper fill # # Example configuration: # From e248daa1de1dd3f8a1ab32d250b347c091b417be Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 31 Dec 2020 12:54:06 +0100 Subject: [PATCH 24/79] sway: Load correct config files --- .config/sway/config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/sway/config b/.config/sway/config index 2e00002..5bff986 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -224,4 +224,4 @@ bar { } } -include /etc/sway/config.d/* +include ~/.config/sway/config.d/*.config From 846fb6e1bdee43dc320a6c998940db6e69247416 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 31 Dec 2020 12:54:19 +0100 Subject: [PATCH 25/79] sway: Keybinds --- .config/sway/config | 16 ++++++++-------- .config/sway/config.d/20-keybinds.config | 3 +++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.config/sway/config b/.config/sway/config index 5bff986..8700b47 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -88,15 +88,15 @@ output * bg ~/.wallpaper fill bindsym $mod+Shift+c reload # Exit sway (logs you out of your Wayland session) - bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' + # bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' # # Moving around: # # Move your focus around - bindsym $mod+$left focus left - bindsym $mod+$down focus down - bindsym $mod+$up focus up - bindsym $mod+$right focus right + #bindsym $mod+$left focus left + #bindsym $mod+$down focus down + #bindsym $mod+$up focus up + #bindsym $mod+$right focus right # Or use $mod+[up|down|left|right] bindsym $mod+Left focus left bindsym $mod+Down focus down @@ -150,9 +150,9 @@ output * bg ~/.wallpaper fill bindsym $mod+v splitv # Switch the current container between different layout styles - bindsym $mod+s layout stacking - bindsym $mod+w layout tabbed - bindsym $mod+e layout toggle split + bindsym $mod+shift+s layout stacking + bindsym $mod+shift+w layout tabbed + bindsym $mod+shift+e layout toggle split # Make the current focus fullscreen bindsym $mod+f fullscreen diff --git a/.config/sway/config.d/20-keybinds.config b/.config/sway/config.d/20-keybinds.config index d3ed8c0..2d65c51 100644 --- a/.config/sway/config.d/20-keybinds.config +++ b/.config/sway/config.d/20-keybinds.config @@ -8,6 +8,9 @@ bindsym ctrl+shift+space exec makoctl dismiss --all # Screenshot bindsym alt+shift+4 exec ~/.dotfiles/bin/screenshot.sh +# File manager +bindsym $mod+e exec $fileManager + # Multimedia Keys # Requires: playerctl bindsym XF86AudioRaiseVolume exec amixer -D pulse sset Master 5%+ From 337f15d5b8aa293b8de79c6546ffa0775fe9677b Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 31 Dec 2020 12:54:29 +0100 Subject: [PATCH 26/79] docs: qutebrowser: update adblock lists --- .dotfiles/docs/qutebrowser.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.dotfiles/docs/qutebrowser.md b/.dotfiles/docs/qutebrowser.md index 09fff0a..0ab05ac 100644 --- a/.dotfiles/docs/qutebrowser.md +++ b/.dotfiles/docs/qutebrowser.md @@ -1,5 +1,11 @@ # Qutebrowser +## Update adblock lists + +``` +:adblock-update +``` + ## Set as default browser ``` bash From 4067c6972d60c2db1349e89805a3faa6900c7327 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 31 Dec 2020 12:55:20 +0100 Subject: [PATCH 27/79] emacs: magit init.el --- .emacs.d/init.el | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .emacs.d/init.el diff --git a/.emacs.d/init.el b/.emacs.d/init.el new file mode 100644 index 0000000..551eaae --- /dev/null +++ b/.emacs.d/init.el @@ -0,0 +1,28 @@ +(require 'package) +(setq package-enable-at-startup nil) +(setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") + ("melpa" . "https://melpa.org/packages/") + ("melpa-stable" . "https://stable.melpa.org/packages/"))) +(package-initialize) +(unless (package-installed-p 'use-package) + (package-refresh-contents) + (package-install 'use-package)) + +(eval-when-compile + (require 'use-package)) + +(use-package magit + :ensure t + :bind ("C-x g" . magit-status)) +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(package-selected-packages '(magit use-package))) +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + ) From 1dd279bf541151697496ecf6c1ac513528b492ae Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 31 Dec 2020 12:55:44 +0100 Subject: [PATCH 28/79] zsh: Added .zshrc --- .zshrc | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .zshrc diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..2dd586c --- /dev/null +++ b/.zshrc @@ -0,0 +1,9 @@ +alias magit="emacs -nw --eval '(progn (magit-status) (delete-other-windows))'" + +source ~/.antigen.zsh + +antigen bundle git + +antigen theme steeef + +antigen apply From 67bc0e1560722eee87e26c9ae8d75b96efa24e0f Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 31 Dec 2020 19:14:05 +0100 Subject: [PATCH 29/79] nvim: replaced ale/deoplete with coc --- .config/nvim/init.vim | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index b75e516..169a5ed 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -6,8 +6,7 @@ call plug#begin(stdpath('data') . '/plugged') Plug 'ctrlpvim/ctrlp.vim' " Code analysis and autocompletion -Plug 'dense-analysis/ale' -Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } +Plug 'neoclide/coc.nvim', {'branch': 'release'} " Git Plug 'airblade/vim-gitgutter' @@ -51,4 +50,11 @@ inoremap pumvisible() ? "\" : "\" " " UndoTree " -map :UndotreeToggle +map :UndotreeToggle + +" +" Golang +" +" Auto imports on save/format +autocmd BufWritePre *.go :silent call CocAction('runCommand', 'editor.action.organizeImport') + From a94475d54e77487a1c00d4507ac4d961908ea05c Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 31 Dec 2020 19:16:28 +0100 Subject: [PATCH 30/79] zsh: Added golang variable --- .zshrc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.zshrc b/.zshrc index 2dd586c..1ef436f 100644 --- a/.zshrc +++ b/.zshrc @@ -1,5 +1,11 @@ alias magit="emacs -nw --eval '(progn (magit-status) (delete-other-windows))'" +# Golang +export GOPATH=~/.gocode + +# Path +export PATH=$PATH:$(go env GOPATH)/bin + source ~/.antigen.zsh antigen bundle git From cfd32ec25beecb986644511eefbf0263187363c0 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 31 Dec 2020 19:24:34 +0100 Subject: [PATCH 31/79] nvim: Added coc-settings.json --- .config/nvim/coc-settings.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .config/nvim/coc-settings.json diff --git a/.config/nvim/coc-settings.json b/.config/nvim/coc-settings.json new file mode 100644 index 0000000..73cf10b --- /dev/null +++ b/.config/nvim/coc-settings.json @@ -0,0 +1,6 @@ +{ + "python.linting.enabled": true, + "python.linting.flake8Enabled": true, + "python.linting.pylintEnabled": false, + "python.formatting.provider": "black" +} From 61f811d2bf56047ada6aefca7ade3d3fc0bfbf11 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 31 Dec 2020 19:24:48 +0100 Subject: [PATCH 32/79] qutebrowser: load autoconfig --- .config/qutebrowser/config.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.config/qutebrowser/config.py b/.config/qutebrowser/config.py index 11f6211..b2ff52a 100644 --- a/.config/qutebrowser/config.py +++ b/.config/qutebrowser/config.py @@ -32,3 +32,6 @@ c.url.searchengines = { # Default page and new tab c.url.default_page = "https://miniflux.fmartingr.dev" c.url.start_pages = ["https://miniflux.fmartingr.dev"] + +# Load autoconfig +config.load_autoconfig() From 54842fab3ba1294fc2d6dad2af8828ff5ca12554 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Sun, 3 Jan 2021 19:12:53 +0100 Subject: [PATCH 33/79] config: enabled oh-my-zsh --- .zshrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.zshrc b/.zshrc index 1ef436f..14fb029 100644 --- a/.zshrc +++ b/.zshrc @@ -8,6 +8,8 @@ export PATH=$PATH:$(go env GOPATH)/bin source ~/.antigen.zsh +antigen bundle oh-my-zsh + antigen bundle git antigen theme steeef From e47e6e29b96747bc7235e180141c7e4b05db9804 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Sun, 3 Jan 2021 19:54:10 +0100 Subject: [PATCH 34/79] docs: chromium --- .dotfiles/docs/chromium.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .dotfiles/docs/chromium.md diff --git a/.dotfiles/docs/chromium.md b/.dotfiles/docs/chromium.md new file mode 100644 index 0000000..77255b0 --- /dev/null +++ b/.dotfiles/docs/chromium.md @@ -0,0 +1,9 @@ +# Chromium + +## Enable media casting + +Just enable this flag and restart the browser: + +``` +chrome://flags/#load-media-router-component-extension +``` From be8bff639564d4db0d0c54faf07353544e5741a0 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Mon, 11 Jan 2021 17:02:00 +0100 Subject: [PATCH 35/79] mpv: Added mpris support for playerctl --- .config/mpv/scripts/mpris-0.5.so | Bin 0 -> 37664 bytes .dotfiles/docs/mpv.md | 7 +++++++ 2 files changed, 7 insertions(+) create mode 100644 .config/mpv/scripts/mpris-0.5.so create mode 100644 .dotfiles/docs/mpv.md diff --git a/.config/mpv/scripts/mpris-0.5.so b/.config/mpv/scripts/mpris-0.5.so new file mode 100644 index 0000000000000000000000000000000000000000..baacf870875b98d158def30bcdeb4ddff7a3d16a GIT binary patch literal 37664 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 literal 0 HcmV?d00001 diff --git a/.dotfiles/docs/mpv.md b/.dotfiles/docs/mpv.md new file mode 100644 index 0000000..a51e8bc --- /dev/null +++ b/.dotfiles/docs/mpv.md @@ -0,0 +1,7 @@ +# MPV + +## Playerctl support + +Project: [https://github.com/hoyon/mpv-mpris](https://github.com/hoyon/mpv-mpris) + +Added `mpris.so` manually to `~/.config/mpv/scripts` and it'll auto load. From bccffd981539ff5dbaf91553be16f52c21b93fc7 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Tue, 12 Jan 2021 10:49:47 +0100 Subject: [PATCH 36/79] git: config --- .gitconfig | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .gitconfig diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 0000000..47877f4 --- /dev/null +++ b/.gitconfig @@ -0,0 +1,29 @@ +[user] + name = Felipe M. + email = me@fmartingr.com + +[commit] + gpgsign = true + +[filter "lfs"] + clean = git-lfs clean -- %f + smudge = git-lfs smudge -- %f + process = git-lfs filter-process + required = true + +[core] + editor = nvim + askpass = /usr/bin/pinentry + +[alias] + s = status + d = diff + co = checkout + br = branch + last = log -1 HEAD + cane = commit --amend --no-edit + lo = log --oneline -n 10 + pr = pull --rebase + +[diff] + noprefix = true From 0aa8938b5bfb9431b5527c7fdc0b4b587cb1fff2 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Tue, 12 Jan 2021 10:50:43 +0100 Subject: [PATCH 37/79] zsh: Added .local/bin path and gpg tty --- .zshrc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.zshrc b/.zshrc index 14fb029..b0ae1e3 100644 --- a/.zshrc +++ b/.zshrc @@ -1,10 +1,14 @@ alias magit="emacs -nw --eval '(progn (magit-status) (delete-other-windows))'" +# GPG tty +export GPG_TTY=$(tty) + # Golang export GOPATH=~/.gocode # Path export PATH=$PATH:$(go env GOPATH)/bin +export PATH=$PATH:$HOME/.local/bin source ~/.antigen.zsh From 94635063c1eedefb2fdf77eb6ada82ba7ea36359 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Tue, 12 Jan 2021 10:52:17 +0100 Subject: [PATCH 38/79] docs: git --- .dotfiles/docs/git.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .dotfiles/docs/git.md diff --git a/.dotfiles/docs/git.md b/.dotfiles/docs/git.md new file mode 100644 index 0000000..742f13d --- /dev/null +++ b/.dotfiles/docs/git.md @@ -0,0 +1,11 @@ +# Git + +## Setup GPG signing key + +``` +$ gpg --list-secret-keys --keyid-format LONG +... +$ git config --global user.signingkey + +$ export GPG_TTY=$(tty) +``` From aa82ad2c6443f840c2a90316f4cfe6c25c71aa94 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Tue, 12 Jan 2021 19:15:29 +0100 Subject: [PATCH 39/79] docs: retroarch --- .dotfiles/docs/retroarch.md | 82 +++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .dotfiles/docs/retroarch.md diff --git a/.dotfiles/docs/retroarch.md b/.dotfiles/docs/retroarch.md new file mode 100644 index 0000000..7740245 --- /dev/null +++ b/.dotfiles/docs/retroarch.md @@ -0,0 +1,82 @@ +# RetroArch + +## Enable core downloading + +``` +# retroarch.cfg +menu_show_core_updater = "true" +``` + +## Setup core/info directories into user folder + + +``` +# retroarch.cfg +libretro_directory = "~/.config/retroarch/cores" +libretro_info_path = "~/.config/retroarch/cores/info" +``` + +## Setup screenshots on content folder by system + +Given a content (games) folder where games are sorted in folders by system, this will make the screenshots be sorted as well, instead of everything on the same folder. + +``` +# retroarch.cfg +# Automatic screenshot filename in content (games) directory +screenshots_in_content_dir = "true" +auto_screenshot_filename = "true" + +# Notifications +notification_show_screenshot = "true" +notification_show_screenshot_duration = "1" +``` +## Saves + +Store saves alongide games. Same _trick_ we use with screenshots. + +``` +savefiles_in_content_dir = "true" +``` + +## States + +This will make retroarch auto save/load states on launching/closing a game. + +``` +savestate_auto_load = "true" +savestate_auto_save = "true" +``` + +Store states alongside games. Same _trick_ we use with screenshots. + +``` +savestates_in_content_dir = "true" +``` + +Create a screenshot for a savestate, just for eye-candy. + +``` +savestate_thumbnail_enable = "true" +``` + +## Achievements + +Enables achievements through the menu and sets up the configuration: + +``` +settings_show_achievements = "true" + +cheevos_enable = "true" +cheevos_username = "" +cheevos_password = "" +cheevos_auto_screenshot = "true" +cheevos_badges_enable = "true" +cheevos_hardcore_mode_enable = "true" +cheevos_leaderboards_enable = "true" +cheevos_richpresence_enable = "true" +cheevos_start_active = "false" +cheevos_test_unofficial = "false" +cheevos_token = "" +cheevos_unlock_sound_enable = "true" +cheevos_verbose_enable = "false" +``` From b74d15bbe314dc2cadbebcd8a9591166fcf555b7 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Fri, 15 Jan 2021 10:04:06 +0100 Subject: [PATCH 40/79] docs: Chromium hardware acceleration --- .dotfiles/docs/chromium.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.dotfiles/docs/chromium.md b/.dotfiles/docs/chromium.md index 77255b0..f560597 100644 --- a/.dotfiles/docs/chromium.md +++ b/.dotfiles/docs/chromium.md @@ -7,3 +7,14 @@ Just enable this flag and restart the browser: ``` chrome://flags/#load-media-router-component-extension ``` + +## Enable hardware acceleration + +Enable this flag. + +If not available, the VA-API packages must be required though I didn't have to +install anything to enable it. + +``` +chrome://flags/#enable-accelerated-video-decode +``` From e623982c5a5af14f81fc443350b4e2456cc1e9b7 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Fri, 15 Jan 2021 10:04:24 +0100 Subject: [PATCH 41/79] config: git signing key --- .gitconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitconfig b/.gitconfig index 47877f4..15d904a 100644 --- a/.gitconfig +++ b/.gitconfig @@ -1,6 +1,7 @@ [user] name = Felipe M. email = me@fmartingr.com + signingkey = 716BC147715E716F [commit] gpgsign = true From 9fbb5d49e96a62707bc121414d751d57614f908a Mon Sep 17 00:00:00 2001 From: Felipe M Date: Fri, 15 Jan 2021 10:04:37 +0100 Subject: [PATCH 42/79] qutebrowser: quickmarks --- .config/qutebrowser/quickmarks | 1 + 1 file changed, 1 insertion(+) diff --git a/.config/qutebrowser/quickmarks b/.config/qutebrowser/quickmarks index e1aa07d..28d61fc 100644 --- a/.config/qutebrowser/quickmarks +++ b/.config/qutebrowser/quickmarks @@ -2,3 +2,4 @@ disc https://discord.com/channels/@me gh https://github.com/ yt https://www.youtube.com/ tw https://twitter.com/ +1p https://my.1password.com/signin From 246a6d42c6b93efa84eb10e15c69d83d97787c09 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Tue, 19 Jan 2021 16:45:41 +0100 Subject: [PATCH 43/79] config: zsh add EDITOR variable --- .zshrc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.zshrc b/.zshrc index b0ae1e3..74d8bcf 100644 --- a/.zshrc +++ b/.zshrc @@ -10,6 +10,9 @@ export GOPATH=~/.gocode export PATH=$PATH:$(go env GOPATH)/bin export PATH=$PATH:$HOME/.local/bin +# Editor +export EDITOR=nvim + source ~/.antigen.zsh antigen bundle oh-my-zsh From 3a22e178231db1e745e3a1fa2435ee0d9628c62c Mon Sep 17 00:00:00 2001 From: Felipe M Date: Tue, 19 Jan 2021 16:46:01 +0100 Subject: [PATCH 44/79] qutebrowser: enabled hardware acceleration --- .config/qutebrowser/config.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.config/qutebrowser/config.py b/.config/qutebrowser/config.py index b2ff52a..e6772b4 100644 --- a/.config/qutebrowser/config.py +++ b/.config/qutebrowser/config.py @@ -33,5 +33,11 @@ c.url.searchengines = { c.url.default_page = "https://miniflux.fmartingr.dev" c.url.start_pages = ["https://miniflux.fmartingr.dev"] +# QT Configuration +# Enables Hardware Acceleration. +# ignore-gpu-blacklist should not be needed on all computers though, we may need to +# update this configuration once more computers use it. +c.qt.args = ["enable-gpu-rasterization", "ignore-gpu-blacklist", "enable-native-gpu-memory-buffers", "num-raster-threads=4"] + # Load autoconfig config.load_autoconfig() From 1017dd1881a5b3f41dd361b7171d0357b11b8cd7 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Wed, 20 Jan 2021 10:38:34 +0100 Subject: [PATCH 45/79] zsh: Added oh-my-zsh and ytdlf alias --- .zshrc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.zshrc b/.zshrc index 74d8bcf..a891e83 100644 --- a/.zshrc +++ b/.zshrc @@ -1,4 +1,11 @@ +bindkey -e + +export ZSH="$HOME/.oh-my-zsh" + +source $ZSH/oh-my-zsh.sh + alias magit="emacs -nw --eval '(progn (magit-status) (delete-other-windows))'" +alias ytdlf="youtube-dl -a ./youtube-dl.txt -f best -o \"./%(playlist_title)s/%(playlist_index)s_%(title)s.%(ext)s\"" # GPG tty export GPG_TTY=$(tty) @@ -15,7 +22,7 @@ export EDITOR=nvim source ~/.antigen.zsh -antigen bundle oh-my-zsh +antigen use oh-my-zsh antigen bundle git From 8098ad257e4404eec31ebae0203ab46d40784090 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Wed, 20 Jan 2021 13:57:35 +0100 Subject: [PATCH 46/79] docs: zsh --- .dotfiles/docs/zsh.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .dotfiles/docs/zsh.md diff --git a/.dotfiles/docs/zsh.md b/.dotfiles/docs/zsh.md new file mode 100644 index 0000000..c0f2bec --- /dev/null +++ b/.dotfiles/docs/zsh.md @@ -0,0 +1,17 @@ +# ZSH + +## Use emacs style keybindings + +``` zsh +bindkey -e +``` + +## Use selective up/down command history + +In order to traverse the command history with up/down arrows but filtering by the command that is already written in the terminal, we need to use oh-my-zsh + +Get installation instructions from [the oh-my-zsh github repository](https://github.com/ohmyzsh/ohmyzsh). + +``` +source $HOME/.oh-my-zsh/oh-my-zsh.sh +``` From 882a86e27b2c850327650996ee650f77090d90d2 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Wed, 20 Jan 2021 13:57:57 +0100 Subject: [PATCH 47/79] config: rofi use `drun` instead of `run` --- .config/sway/config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/sway/config b/.config/sway/config index 8700b47..df1eeb9 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -19,7 +19,7 @@ set $term alacritty # Note: pass the final command to swaymsg so that the resulting window can be opened # on the original workspace that the command was run on. #set $menu dmenu_path | dmenu | xargs swaymsg exec -- -set $menu rofi -show run +set $menu rofi -show drun # Fonts set $font Terminus From 9df1d477da287b9c1dd5636a771efe4500ebf0f1 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Wed, 27 Jan 2021 11:08:13 +0100 Subject: [PATCH 48/79] config: qutebrowser font --- .config/qutebrowser/config.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.config/qutebrowser/config.py b/.config/qutebrowser/config.py index e6772b4..895dff6 100644 --- a/.config/qutebrowser/config.py +++ b/.config/qutebrowser/config.py @@ -18,6 +18,9 @@ def filter_youtube_ads(info: interceptor.Request): interceptor.register(filter_youtube_ads) +# Fonts +c.fonts.default_family = "Terminus" + # Session save/restore c.auto_save.session = True c.auto_save.interval = 15000 From 3572cee7ea188a784496ad5491c35ce0d7d14f41 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Wed, 27 Jan 2021 11:08:50 +0100 Subject: [PATCH 49/79] config: Replaced caja with nemo --- .config/sway/config.d/20-keybinds.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/sway/config.d/20-keybinds.config b/.config/sway/config.d/20-keybinds.config index 2d65c51..ce67c5b 100644 --- a/.config/sway/config.d/20-keybinds.config +++ b/.config/sway/config.d/20-keybinds.config @@ -1,5 +1,5 @@ set $locker ~/.dotfiles/bin/lock.sh -set $fileManager caja +set $fileManager nemo # Notifications: bindsym ctrl+space exec makoctl dismiss From c22fd22249ac6843fef54a8ce041e2cca8b16c12 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Wed, 27 Jan 2021 11:09:20 +0100 Subject: [PATCH 50/79] zsh: Added helper function to convert webp to jpg --- .zshrc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.zshrc b/.zshrc index a891e83..911ce5a 100644 --- a/.zshrc +++ b/.zshrc @@ -7,6 +7,14 @@ source $ZSH/oh-my-zsh.sh alias magit="emacs -nw --eval '(progn (magit-status) (delete-other-windows))'" alias ytdlf="youtube-dl -a ./youtube-dl.txt -f best -o \"./%(playlist_title)s/%(playlist_index)s_%(title)s.%(ext)s\"" +function webp2jpg { + for x in ls *.webp; do + ffmpeg -i "$x" "${x%.webp}.jpg"; + done + + rm *.webp +} + # GPG tty export GPG_TTY=$(tty) From 775eb636d4d92b3c11909a2b24363c3f737ac308 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Wed, 27 Jan 2021 11:09:53 +0100 Subject: [PATCH 51/79] qutebrowser quickmarks --- .config/qutebrowser/quickmarks | 1 + 1 file changed, 1 insertion(+) diff --git a/.config/qutebrowser/quickmarks b/.config/qutebrowser/quickmarks index 28d61fc..cd986f5 100644 --- a/.config/qutebrowser/quickmarks +++ b/.config/qutebrowser/quickmarks @@ -3,3 +3,4 @@ gh https://github.com/ yt https://www.youtube.com/ tw https://twitter.com/ 1p https://my.1password.com/signin +code https://code.fmartingr.dev/ From 9fe1899825391ab4d028573b046ac0186bf24e61 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Sun, 31 Jan 2021 16:55:26 +0100 Subject: [PATCH 52/79] nemo -> caja Nemo is *very* slow when working with folders full of images. I was moving around some of my stuff to the NAS and it was imbearably slow (about 10+ seconds stuck every time I moved something...) --- .config/sway/config.d/20-keybinds.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/sway/config.d/20-keybinds.config b/.config/sway/config.d/20-keybinds.config index ce67c5b..2d65c51 100644 --- a/.config/sway/config.d/20-keybinds.config +++ b/.config/sway/config.d/20-keybinds.config @@ -1,5 +1,5 @@ set $locker ~/.dotfiles/bin/lock.sh -set $fileManager nemo +set $fileManager caja # Notifications: bindsym ctrl+space exec makoctl dismiss From 172ac7c5da2e75fcf6508e36c8b1cef901087bf1 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Sun, 31 Jan 2021 23:05:22 +0100 Subject: [PATCH 53/79] docs: beets, khal, nemo, wf-recorder --- .dotfiles/docs/beets.md | 54 +++++++++++++++++++++++++++++++++++ .dotfiles/docs/khal.md | 10 +++++++ .dotfiles/docs/nemo.md | 7 +++++ .dotfiles/docs/wf-recorder.md | 9 ++++++ 4 files changed, 80 insertions(+) create mode 100644 .dotfiles/docs/beets.md create mode 100644 .dotfiles/docs/khal.md create mode 100644 .dotfiles/docs/nemo.md create mode 100644 .dotfiles/docs/wf-recorder.md diff --git a/.dotfiles/docs/beets.md b/.dotfiles/docs/beets.md new file mode 100644 index 0000000..cca9d6d --- /dev/null +++ b/.dotfiles/docs/beets.md @@ -0,0 +1,54 @@ +# Beets + +## Setup configuration file: + +``` yaml +# ~/.config/beets/config.yaml +directory: ~/music +library: ~/music/library.db +import: + copy: no # Do not copy files into directory + move: no # Do not delete original files + write: yes # Write tags to file +plugins: duplicates fetchart embedart +``` + +## Import music + +Using `--incremental` to avoid scanning the already imported albums. + +``` +beet import ~/music --incremental +``` + +To re-scan the music library: + +``` +beet update +``` + +## Download art files into a `cover.jpg` file + +Requires plugin: `fetchart`. + +``` +beet fetchart +``` + +## Embed art into files + +Requires plugin: `embedart` & `fetchart`. + +``` +beet embedart +``` + +## Scan for duplicates + +Requires plugin `duplicates`. + +Use `-p` to show the path to the duplicates instead of the name. + +``` +beet duplicates -p +``` diff --git a/.dotfiles/docs/khal.md b/.dotfiles/docs/khal.md new file mode 100644 index 0000000..4988c39 --- /dev/null +++ b/.dotfiles/docs/khal.md @@ -0,0 +1,10 @@ +# Khal + +## Get only next event + +``` +# -df "": Show empty day headers +# grep -v "^ ": remove all-day events +# head -n 1: Get only the first item +khal list now -df "" | grep -v "^ " | head -n 1 +``` diff --git a/.dotfiles/docs/nemo.md b/.dotfiles/docs/nemo.md new file mode 100644 index 0000000..9ad8310 --- /dev/null +++ b/.dotfiles/docs/nemo.md @@ -0,0 +1,7 @@ +# Nemo + +## Samba support + +``` +# pacman -S nemo-share gvfs-smb +``` diff --git a/.dotfiles/docs/wf-recorder.md b/.dotfiles/docs/wf-recorder.md new file mode 100644 index 0000000..57b0465 --- /dev/null +++ b/.dotfiles/docs/wf-recorder.md @@ -0,0 +1,9 @@ +# wf-recorder + +## Record screen geometry + +Requires [slurp](https://github.com/emersion/slurp) + +``` +wf-recorder -g "$(slurp)" +``` From eba8d60086db0851fa544ffb75d54853f7d9d526 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Mon, 1 Feb 2021 22:58:46 +0100 Subject: [PATCH 54/79] swaylock: overlay image --- .dotfiles/lock_overlay.png | Bin 0 -> 113100 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .dotfiles/lock_overlay.png diff --git a/.dotfiles/lock_overlay.png b/.dotfiles/lock_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..4037c3222e09a32e2518f80c4961d6560652a0f7 GIT binary patch literal 113100 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

z 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
tGybZ8j?j$4u~pr$2X{9`#iyvcxa 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 Date: Tue, 2 Feb 2021 15:47:47 +0100 Subject: [PATCH 55/79] Updated swaybar script --- .config/sway/swaybar.sh | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.config/sway/swaybar.sh b/.config/sway/swaybar.sh index 7b636e5..c64fe0d 100755 --- a/.config/sway/swaybar.sh +++ b/.config/sway/swaybar.sh @@ -1,6 +1,8 @@ #!/bin/bash # vim: ts=4 +source $HOME/.secrets/finnhub + function getPowerValue() { POWER=$(cat /sys/class/power_supply/BAT0/capacity)% echo $POWER @@ -23,8 +25,16 @@ function getVolume() { echo $(amixer get Master | grep 'Left:' | awk -F"[][]" '{ print $2 }') } +function getStock() { + curl -s "https://finnhub.io/api/v1/quote?symbol=$1&token=$SECRET_FINNHUB_TOKEN" | jq ".c" +} + +function getNextEvent() { + khal list now -df "" | grep -v "^ " | head -n 1 +} + while [ True ]; do - echo "$(getVolume) | $(getPowerValue)$(getPowerStatus) | $(getDate)" + echo "$(getNextEvent) | $(getStock AMC) . $(getStock GME) | $(getVolume) | $(getPowerValue)$(getPowerStatus) | $(getDate)" sleep 30 done From 9f2dd51264a009d89c0d70620c283e5f656ee7c6 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Tue, 2 Feb 2021 15:47:56 +0100 Subject: [PATCH 56/79] Updated antigen to use system one --- .zshrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.zshrc b/.zshrc index 911ce5a..59f9504 100644 --- a/.zshrc +++ b/.zshrc @@ -28,7 +28,7 @@ export PATH=$PATH:$HOME/.local/bin # Editor export EDITOR=nvim -source ~/.antigen.zsh +source /usr/share/zsh/share/antigen.zsh antigen use oh-my-zsh From 79b53718f22692744c689e6469e26a414b48ce64 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 4 Feb 2021 07:54:04 +0000 Subject: [PATCH 57/79] docs: nmcli --- .dotfiles/docs/nmcli.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .dotfiles/docs/nmcli.md diff --git a/.dotfiles/docs/nmcli.md b/.dotfiles/docs/nmcli.md new file mode 100644 index 0000000..0122570 --- /dev/null +++ b/.dotfiles/docs/nmcli.md @@ -0,0 +1,9 @@ +# nmcli + +## Import OpenVPN configuration + +> Make sure the file is an openvpn configuration and not a network manager connection + +``` +# nmcli connection import type openvpn file file.ovpn +``` From 3c0a7a7d56f0b6779b55227a44168269ac591f91 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 4 Feb 2021 09:12:38 +0100 Subject: [PATCH 58/79] vscode: extensions list --- .vscode-oss/extensions.txt | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .vscode-oss/extensions.txt diff --git a/.vscode-oss/extensions.txt b/.vscode-oss/extensions.txt new file mode 100644 index 0000000..64e6e24 --- /dev/null +++ b/.vscode-oss/extensions.txt @@ -0,0 +1,4 @@ +alexcvzz.vscode-sqlite +golang.go +ms-python.python +vscodevim.vim From de9501cee515e6c75e38c56c6ab507a09179b7a3 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 4 Feb 2021 09:17:43 +0100 Subject: [PATCH 59/79] code: settings.json --- .config/Code - OSS/User/settings.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .config/Code - OSS/User/settings.json diff --git a/.config/Code - OSS/User/settings.json b/.config/Code - OSS/User/settings.json new file mode 100644 index 0000000..bb810bc --- /dev/null +++ b/.config/Code - OSS/User/settings.json @@ -0,0 +1,13 @@ +{ + "workbench.colorTheme": "Solarized Dark", + "editor.fontSize": 16, + "files.insertFinalNewline": true, + "files.trimFinalNewlines": true, + "window.menuBarVisibility": "hidden", + "git.confirmSync": false, + "editor.fontFamily": "Terminus (TTF)", + "go.useLanguageServer": true, + "debug.console.fontFamily": "monospace", + "terminal.integrated.fontFamily": "monospace", + "git.autofetch": true +} \ No newline at end of file From 2e9812fdc9c6bac621d2f05af8596c2777605795 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 4 Feb 2021 13:28:56 +0100 Subject: [PATCH 60/79] config: qutebrowser 1password keybinds --- .config/qutebrowser/config.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.config/qutebrowser/config.py b/.config/qutebrowser/config.py index 895dff6..21d40a2 100644 --- a/.config/qutebrowser/config.py +++ b/.config/qutebrowser/config.py @@ -36,6 +36,12 @@ c.url.searchengines = { c.url.default_page = "https://miniflux.fmartingr.dev" c.url.start_pages = ["https://miniflux.fmartingr.dev"] +# Keybindings +config.bind("1pc", ":spawn --userscript ~/Code/qute-1password/qute_1pass.py --cache-session --auto-submit fill_credentials") +config.bind("1pu", ":spawn --userscript ~/Code/qute-1password/qute_1pass.py --cache-session --auto-submit fill_username") +config.bind("1pp", ":spawn --userscript ~/Code/qute-1password/qute_1pass.py --cache-session --auto-submit fill_password") +config.bind("1po", ":spawn --userscript ~/Code/qute-1password/qute_1pass.py --cache-session --auto-submit fill_totp") + # QT Configuration # Enables Hardware Acceleration. # ignore-gpu-blacklist should not be needed on all computers though, we may need to From ee355d06cf912f97356e9b86c02261eb957fe72c Mon Sep 17 00:00:00 2001 From: Felipe M Date: Sun, 21 Feb 2021 11:18:02 +0100 Subject: [PATCH 61/79] Added oh-my-zsh fzf plugin --- .zshrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.zshrc b/.zshrc index 59f9504..990cb0d 100644 --- a/.zshrc +++ b/.zshrc @@ -2,6 +2,8 @@ bindkey -e export ZSH="$HOME/.oh-my-zsh" +plugins=(fzf) + source $ZSH/oh-my-zsh.sh alias magit="emacs -nw --eval '(progn (magit-status) (delete-other-windows))'" From 9844716f44a7c31faf60be899225a6d51f35398e Mon Sep 17 00:00:00 2001 From: Felipe M Date: Sun, 21 Feb 2021 11:20:45 +0100 Subject: [PATCH 62/79] swaybar: Removed stock prices --- .config/sway/swaybar.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/sway/swaybar.sh b/.config/sway/swaybar.sh index c64fe0d..718a85f 100755 --- a/.config/sway/swaybar.sh +++ b/.config/sway/swaybar.sh @@ -34,7 +34,7 @@ function getNextEvent() { } while [ True ]; do - echo "$(getNextEvent) | $(getStock AMC) . $(getStock GME) | $(getVolume) | $(getPowerValue)$(getPowerStatus) | $(getDate)" + echo "$(getNextEvent) | $(getVolume) | $(getPowerValue)$(getPowerStatus) | $(getDate)" sleep 30 done From feb07c81f46c2f2c7c76255002f5b7b5ccb02afe Mon Sep 17 00:00:00 2001 From: Felipe M Date: Sun, 7 Mar 2021 23:03:36 +0100 Subject: [PATCH 63/79] Updated VSCode config --- .config/Code - OSS/User/settings.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.config/Code - OSS/User/settings.json b/.config/Code - OSS/User/settings.json index bb810bc..d3e3658 100644 --- a/.config/Code - OSS/User/settings.json +++ b/.config/Code - OSS/User/settings.json @@ -1,6 +1,4 @@ { - "workbench.colorTheme": "Solarized Dark", - "editor.fontSize": 16, "files.insertFinalNewline": true, "files.trimFinalNewlines": true, "window.menuBarVisibility": "hidden", @@ -9,5 +7,10 @@ "go.useLanguageServer": true, "debug.console.fontFamily": "monospace", "terminal.integrated.fontFamily": "monospace", - "git.autofetch": true + "git.autofetch": true, + "explorer.confirmDragAndDrop": false, + "explorer.compactFolders": false, + "files.trimTrailingWhitespace": true, + "editor.fontSize": 16, + "workbench.colorTheme": "Quiet Light" } \ No newline at end of file From 6169845e258820a5d83d73231d1ba9b545bc71e9 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Wed, 10 Mar 2021 07:54:21 +0100 Subject: [PATCH 64/79] docs: archlinux --- .dotfiles/docs/arch.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .dotfiles/docs/arch.md diff --git a/.dotfiles/docs/arch.md b/.dotfiles/docs/arch.md new file mode 100644 index 0000000..a14958a --- /dev/null +++ b/.dotfiles/docs/arch.md @@ -0,0 +1,7 @@ +# ArchLinux + +## Update mirrorlist + +``` +# systemctl start reflector +``` From a8bfc00799df803e10b1e897435a25409c03db2d Mon Sep 17 00:00:00 2001 From: Felipe M Date: Wed, 10 Mar 2021 07:55:36 +0100 Subject: [PATCH 65/79] config: Code OSS font settings --- .config/Code - OSS/User/settings.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.config/Code - OSS/User/settings.json b/.config/Code - OSS/User/settings.json index d3e3658..a0ba744 100644 --- a/.config/Code - OSS/User/settings.json +++ b/.config/Code - OSS/User/settings.json @@ -5,12 +5,11 @@ "git.confirmSync": false, "editor.fontFamily": "Terminus (TTF)", "go.useLanguageServer": true, - "debug.console.fontFamily": "monospace", - "terminal.integrated.fontFamily": "monospace", + "debug.console.fontFamily": "Source Code Pro", + "terminal.integrated.fontFamily": "Source Code Pro", "git.autofetch": true, "explorer.confirmDragAndDrop": false, "explorer.compactFolders": false, "files.trimTrailingWhitespace": true, - "editor.fontSize": 16, - "workbench.colorTheme": "Quiet Light" -} \ No newline at end of file + "editor.fontSize": 16 +} From c057b4547ae9690854b34b2083362ece1d971539 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Fri, 12 Mar 2021 11:12:49 +0100 Subject: [PATCH 66/79] config: swaybar --- .config/sway/swaybar.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.config/sway/swaybar.sh b/.config/sway/swaybar.sh index 718a85f..626d556 100755 --- a/.config/sway/swaybar.sh +++ b/.config/sway/swaybar.sh @@ -33,8 +33,11 @@ function getNextEvent() { khal list now -df "" | grep -v "^ " | head -n 1 } +function getCurrentSong() { + echo $(playerctl metadata artist) - $(playerctl metadata title) +} + while [ True ]; do - echo "$(getNextEvent) | $(getVolume) | $(getPowerValue)$(getPowerStatus) | $(getDate)" + echo "$(getCurrentSong) | $(getNextEvent) | $(getVolume) | $(getPowerValue)$(getPowerStatus) | $(getDate)" sleep 30 done - From 3e008f310b68451fe37cbd55d7f1953619a71640 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 10 Feb 2022 19:28:04 +0100 Subject: [PATCH 67/79] Enabled chrome HiDPi scaling --- .config/chromium-flags.conf | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .config/chromium-flags.conf diff --git a/.config/chromium-flags.conf b/.config/chromium-flags.conf new file mode 100644 index 0000000..ba951f1 --- /dev/null +++ b/.config/chromium-flags.conf @@ -0,0 +1,2 @@ +--force-device-scale-factor=2 +--ozone-platform-hint=auto From 6aa0a2f18585cae408f9d0d861dc7d1b05622ef1 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 10 Feb 2022 19:28:55 +0100 Subject: [PATCH 68/79] Updated some configurations after upgrading --- .config/Code - OSS/User/settings.json | 10 ++++++++-- .config/alacritty/alacritty.yml | 4 ++-- .config/rofi/config.rasi | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.config/Code - OSS/User/settings.json b/.config/Code - OSS/User/settings.json index a0ba744..a556ea4 100644 --- a/.config/Code - OSS/User/settings.json +++ b/.config/Code - OSS/User/settings.json @@ -3,7 +3,6 @@ "files.trimFinalNewlines": true, "window.menuBarVisibility": "hidden", "git.confirmSync": false, - "editor.fontFamily": "Terminus (TTF)", "go.useLanguageServer": true, "debug.console.fontFamily": "Source Code Pro", "terminal.integrated.fontFamily": "Source Code Pro", @@ -11,5 +10,12 @@ "explorer.confirmDragAndDrop": false, "explorer.compactFolders": false, "files.trimTrailingWhitespace": true, - "editor.fontSize": 16 + "workbench.colorTheme": "Bluloco Light", + "workbench.preferredDarkColorTheme": "Bluloco Dark", + "workbench.preferredLightColorTheme": "Bluloco Light", + "editor.renderWhitespace": "all", + "workbench.editor.showTabs": false, + "go.toolsManagement.autoUpdate": true, + "editor.fontFamily": "JetBrains Mono", + "window.zoomLevel": -1 } diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml index 537f2bf..1e96769 100644 --- a/.config/alacritty/alacritty.yml +++ b/.config/alacritty/alacritty.yml @@ -100,7 +100,7 @@ # Font configuration font: - size: 12 + size: 10 # Normal (roman) font face normal: # Font family @@ -109,7 +109,7 @@ font: # - (macOS) Menlo # - (Linux/BSD) monospace # - (Windows) Consolas - family: xos4 Terminus + family: JetBrains Mono # The `style` can be specified to pick a specific face. #style: Regular diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi index 201c6fa..a193770 100644 --- a/.config/rofi/config.rasi +++ b/.config/rofi/config.rasi @@ -1,4 +1,4 @@ configuration { font: "Terminus 14"; - theme: "/usr/share/rofi/themes/Paper.rasi"; } +@theme "/usr/share/rofi/themes/Paper.rasi" From 6bb4093111ad0a0747748bcb08bcb8019bc91730 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Fri, 11 Feb 2022 21:39:39 +0100 Subject: [PATCH 69/79] config: qutebrowser - Switched to an appropriate font for HiDPI displays - Updated deprecated flag --- .config/qutebrowser/config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.config/qutebrowser/config.py b/.config/qutebrowser/config.py index 21d40a2..a0b1878 100644 --- a/.config/qutebrowser/config.py +++ b/.config/qutebrowser/config.py @@ -19,7 +19,7 @@ def filter_youtube_ads(info: interceptor.Request): interceptor.register(filter_youtube_ads) # Fonts -c.fonts.default_family = "Terminus" +c.fonts.default_family = "JetBrains Mono" # Session save/restore c.auto_save.session = True @@ -46,7 +46,7 @@ config.bind("1po", ":spawn --userscript ~/Code/qute-1password/qute_1pass.py --ca # Enables Hardware Acceleration. # ignore-gpu-blacklist should not be needed on all computers though, we may need to # update this configuration once more computers use it. -c.qt.args = ["enable-gpu-rasterization", "ignore-gpu-blacklist", "enable-native-gpu-memory-buffers", "num-raster-threads=4"] +c.qt.args = ["enable-gpu-rasterization", "ignore-gpu-blocklist", "enable-native-gpu-memory-buffers", "num-raster-threads=4"] # Load autoconfig config.load_autoconfig() From 7e204a3d9f47fb32b5e7c2ee926a6ff9e2496e29 Mon Sep 17 00:00:00 2001 From: Felipe Martin Date: Mon, 26 Jun 2023 20:01:15 +0200 Subject: [PATCH 70/79] Initial --- .config/yadm/bootstrap | 5 ++ .dotfiles/Brewfile | 7 ++ .dotfiles/bootstrap/00_brew.sh | 17 +++++ .dotfiles/bootstrap/01_iterm.sh | 11 +++ .dotfiles/bootstrap/10_system_settings.sh | 81 +++++++++++++++++++++++ .dotfiles/bootstrap/99_brew_install.sh | 3 + 6 files changed, 124 insertions(+) create mode 100755 .config/yadm/bootstrap create mode 100644 .dotfiles/Brewfile create mode 100644 .dotfiles/bootstrap/00_brew.sh create mode 100644 .dotfiles/bootstrap/01_iterm.sh create mode 100644 .dotfiles/bootstrap/10_system_settings.sh create mode 100644 .dotfiles/bootstrap/99_brew_install.sh diff --git a/.config/yadm/bootstrap b/.config/yadm/bootstrap new file mode 100755 index 0000000..2d1bbac --- /dev/null +++ b/.config/yadm/bootstrap @@ -0,0 +1,5 @@ +#!/bin/sh + +for f in `ls $HOME/.dotfiles/bootstrap/*.sh`; do + bash $f +done \ No newline at end of file diff --git a/.dotfiles/Brewfile b/.dotfiles/Brewfile new file mode 100644 index 0000000..e45696c --- /dev/null +++ b/.dotfiles/Brewfile @@ -0,0 +1,7 @@ +# CLI +brew "go" +brew "yadm" + +# Cask +brew "raycast" +brew "visual-studio-code" \ No newline at end of file diff --git a/.dotfiles/bootstrap/00_brew.sh b/.dotfiles/bootstrap/00_brew.sh new file mode 100644 index 0000000..3db2431 --- /dev/null +++ b/.dotfiles/bootstrap/00_brew.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +sudo xcode-select --install + +echo "Press [ENTER] when install has finished" +read + +# install homebrew if it's missing +if ! command -v brew >/dev/null 2>&1; then +echo "Installing homebrew" +/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" +fi + +if [ -f "$HOME/.Brewfile" ]; then +echo "Updating homebrew bundle" +brew bundle --global +fi diff --git a/.dotfiles/bootstrap/01_iterm.sh b/.dotfiles/bootstrap/01_iterm.sh new file mode 100644 index 0000000..c9a5623 --- /dev/null +++ b/.dotfiles/bootstrap/01_iterm.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +system_type=$(uname -s) +iterm_config_path=$HOME/.dotfiles/config/iterm2 + +if [ "$system_type" = "Darwin" ]; then + if [ -d "$iterm_config_path" ]; then + echo "Setting iTerm preference folder" + defaults write com.googlecode.iterm2 PrefsCustomFolder "$iterm_config_path" + fi +fi \ No newline at end of file diff --git a/.dotfiles/bootstrap/10_system_settings.sh b/.dotfiles/bootstrap/10_system_settings.sh new file mode 100644 index 0000000..5284f04 --- /dev/null +++ b/.dotfiles/bootstrap/10_system_settings.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +# +# Autohide enabled +defaults write com.apple.dock "autohide" -bool "true" #&& killall Dock + +# hide/show faster +defaults write com.apple.dock "autohide-delay" -float "0" #&& killall Dock + +# Show only active applications +defaults write com.apple.dock "static-only" -bool "true" #&& killall Dock + +# +# Disable auto-switch +defaults write com.apple.dock workspaces-auto-swoosh -bool NO #&& killall Dock + +# Save in JPEG +defaults write com.apple.screencapture "type" -string "jpg" + +# +# Set default location +defaults write com.apple.screencapture "location" -string "$HOME/Desktop/Screenshots" && killall SystemUIServer + +# +# Show path bar +defaults write com.apple.finder "ShowPathbar" -bool "true" #&& killall Finder + +# Show status bar +defaults write com.apple.finder ShowStatusBar -bool true #&& killall Finder + +# Default view to columns +defaults write com.apple.finder "FXPreferredViewStyle" -string "clmv" #&& killall Finder + +# Default search the current folder +defaults write com.apple.finder "FXDefaultSearchScope" -string "SCcf" #&& killall Finder + +# Automatically delete old trash items +defaults write com.apple.finder "FXRemoveOldTrashItems" -bool "true" #&& killall Finder + +# Disable file extension rename warning +defaults write com.apple.finder "FXEnableExtensionChangeWarning" -bool "true" #&& killall Finder + +# Default save location to $HOME dir +defaults write NSGlobalDomain "NSDocumentSaveNewDocumentsToCloud" -bool "false" + +# Show icons in the title bar +defaults write com.apple.universalaccess "showWindowTitlebarIcons" -bool "true" #&& killall Finder + +# Hide internal disks on desktop +defaults write com.apple.finder "ShowHardDrivesOnDesktop" -bool "false" #&& killall Finder + +# Show external disks on desktop +defaults write com.apple.finder "ShowExternalHardDrivesOnDesktop" -bool "true" #&& killall Finder + +# Show removable media on desktop +defaults write com.apple.finder "ShowRemovableMediaOnDesktop" -bool "false" #&& killall Finder + +# Show connected servers on desktop +defaults write com.apple.finder "ShowMountedServersOnDesktop" -bool "true" #&& killall Finder + +# +# Disable natural scrolling +defaults write -g com.apple.swipescrolldirection -bool NO #&& killall SystemUIServer + +# +# Repeat characters on key hold +defaults write NSGlobalDomain "ApplePressAndHoldEnabled" -bool "false" + +#