From 42fca178cc1324e8850f9e995cf95c3324998e1e Mon Sep 17 00:00:00 2001 From: tactonbishop Date: Tue, 30 Aug 2022 09:16:26 +0100 Subject: [PATCH] Changes --- kitty/kitty.conf | 17 ++- polybar/config.ini | 9 ++ polybar/launch-bak.sh | 15 -- polybar/polybar_scripts/vpn_module.sh | 203 ++++++++++++++++++++++++++ vscode/keybindings.json | 16 +- vscode/settings.json | 35 ++++- 6 files changed, 268 insertions(+), 27 deletions(-) delete mode 100755 polybar/launch-bak.sh create mode 100755 polybar/polybar_scripts/vpn_module.sh diff --git a/kitty/kitty.conf b/kitty/kitty.conf index dea2694..37e1ab7 100644 --- a/kitty/kitty.conf +++ b/kitty/kitty.conf @@ -1,6 +1,17 @@ include ./theme.conf -font_family JetbrainsMono +font_family JetBrains Mono Light font_size 10 +clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask window_padding_width 12 -wayland_titlebar_color #000e07 -enabled_layouts tall +remember_window_size no +hide_window_decorations no +wayland_titlebar_color background +enabled_layouts vertical +tab_bar_style slant +tab_bar_edge top +active_tab_foreground #2f7e25 +active_tab_background #112616 +active_tab_font_style bold +inactive_tab_foreground #637d75 +inactive_tab_background #000e07 +inactive_tab_font_style normal diff --git a/polybar/config.ini b/polybar/config.ini index a95a3b9..3408ec6 100644 --- a/polybar/config.ini +++ b/polybar/config.ini @@ -299,6 +299,15 @@ format-underline = #707f23 format-prefix-foreground = ${colors.primary} label-padding = 1 +[module/mullvad_vpn] +type = custom/script +exec = mullvad status | awk '{print "VPN: "$1}' +interval = 10 +format-prefix = " " +label-padding = 1 +format-underline = #637d75 +format-prefix-foreground = ${colors.primary} + [settings] screenchange-reload = true pseudo-transparency = false diff --git a/polybar/launch-bak.sh b/polybar/launch-bak.sh deleted file mode 100755 index a6ae23c..0000000 --- a/polybar/launch-bak.sh +++ /dev/null @@ -1,15 +0,0 @@ -# Terminate already running bar instances -killall -q polybar -# If all your bars have ipc enabled, you can also use -# polybar-msg cmd quit - -# Launch Polybar, using default config location ~/.config/polybar/config.ini -polybar example 2>&1 | tee -a /tmp/polybar.log & disown - -echo "Polybar launched..." - -# Launch Polybar on all connected monitors -#for m in $(polybar --list-monitors | cut -d":" -f1); do -# MONITOR=$m polybar --reload example & -#done - diff --git a/polybar/polybar_scripts/vpn_module.sh b/polybar/polybar_scripts/vpn_module.sh new file mode 100755 index 0000000..98f18ae --- /dev/null +++ b/polybar/polybar_scripts/vpn_module.sh @@ -0,0 +1,203 @@ +#!/bin/bash + +## @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +## vpn_module: vpn scripts for a polybar, setup stock for Mullvad VPN +## by Shervin S. (shervin@tuta.io) + +## vpn_module reports your VPN's status as [ | connecting... | No VPN ]. +## With optional dependencies, will be replaced with . +## You can also connect and disconnect via left-clicks, or with rofi, right-click to +## access a menu and select between your favorite locations, set in VPN_LOCATIONS, +## as well as 35 countries covered by Mullvad VPN. + +## dependencies (assuming use with Mullvad VPN): +## mullvad-vpn (or mullvad-vpn-cli) + +## optional dependencies: +## rofi - allows menu-based control of mullvad +## geoip, geoip-database - provide country instead of public ip address +## geoip-database-extra - also provides city info +## xclip - allows copying ip address to clipboard + +## polybar setup: +## - Append contents of vpn_user_module file to user_modules.ini +## - Add "vpn" module to your config.ini under modules + + +## @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +## User Settings + +## [Set VPN commands]. Setup for Mullvad is done below. +# The first three commands should have direct equivalents for most VPNs. +# The relay_set command assumes will follow as arguments. See below. +VPN_CONNECT="mullvad connect" +VPN_DISCONNECT="mullvad disconnect" +VPN_GET_STATUS="mullvad status" +VPN_RELAY_SET_LOCATION="mullvad relay set location" + +## [Set VPN status parsing] +# The first command cuts the status, which is compared to keywords below. +# Note from Julia: this should cover most VPNs, if it's missing something let me know +VPN_STATUS="$($VPN_GET_STATUS | grep -Eio 'connected|connecting|disconnected' \ + | tr '[:upper:]' '[:lower:]')" +CONNECTED="connected" +CONNECTING="connecting" + +## [Set colors] (set each variable to nothing for default color) +ICON_CONNECTED="" +ICON_CONNECTING="ﱱ" +ICON_DISCONNECTED="" +COLOR_CONNECTED="#73fa91" +COLOR_CONNECTING="#717f24" +COLOR_DISCONNECTED="#7f2b27" + +## [Set 8 favorite VPN locations] +# These are passed to your VPN as `$VPNCOMMAND_RELAY_SET_LOCATION `. +VPN_LOCATIONS=("us sea" "us chi" "us nyc" "us" "jp" "au" "fr" "br") + +## [Set optional rofi menu style]. `man rofi` for help on location params. +icon_connect="⇋" +icon_fav="•" +icon_country="⚑" +rofi_location="-location 3 -xoffset -530 -yoffset +30" +rofi_menu_name="ﱾ VPN" + + +## @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +## Main Script + +# Country codes, taken from `mullvad relay list`. +# They ought to connect to your VPN's choice of server in the region. +COUNTRIES=("Albania (al)" "Australia (au)" "Austria (at)" "Belgium (be)" "Brazil (br)" "Bulgaria (bg)" "Canada (ca)" "Czech Republic (cz)" "Denmark (dk)" "Finland (fi)" "France (fr)" "Germany (de)" "Greece (gr)" "Hong Kong (hk)" "Hungary (hu)" "Ireland (ie)" "Israel (il)" "Italy (it)" "Japan (jp)" "Latvia (lv)" "Luxembourg (lu)" "Moldova (md)" "Netherlands (nl)" "New Zealand (nz)" "Norway (no)" "Poland (pl)" "Romania (ro)" "Serbia (rs)" "Singapore (sg)" "Spain (es)" "Sweden (se)" "Switzerland (ch)" "UK (gb)" "United Arab Emirates (ae)" "USA (us)") +COUNTRY_CODES=("al" "au" "at" "be" "br" "bg" "ca" "cz" "dk" "fi" "fr" "de" "gr" "hk" "hu" "ie" "il" "it" "jp" "lv" "lu" "md" "nl" "nz" "no" "pl" "ro" "rs" "sg" "es" "se" "ch" "gb" "ae" "us") + +# Concatenate favorite and country arrays +VPN_CODES=("${VPN_LOCATIONS[@]}") +VPN_CODES+=("${COUNTRY_CODES[@]}") +VPN_LOCATIONS+=("${COUNTRIES[@]}") + + +ip_address_lookup() { + ip_address=$($VPN_GET_STATUS | \ + awk 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/){print substr($0,RSTART,RLENGTH)}') + if [ -z "$ip_address" ]; then + ip_address=$(curl --silent https://ipaddr.pub) + fi + echo "$ip_address" +} + + +vpn_report() { +# continually reports connection status + if [ "$VPN_STATUS" = "$CONNECTED" ]; then + if [ "$@" ] && [ "$1" == "--no-geoip" ]; then + country=$($VPN_GET_STATUS | awk 'tolower ($0) ~ /country/{print $2}') + city=$($VPN_GET_STATUS | awk 'tolower ($0) ~ /country/{print $2}') + report="$city $country" + elif hash geoiplookup 2>/dev/null; then + ip_address=$(ip_address_lookup) + country=$(geoiplookup "$ip_address" | head -n1 | cut -c24-25) + city=$(geoiplookup "$ip_address" | cut -d',' -f5 | sed -n '2{p;q}' | sed 's/^ //') + report="$city $country" + else + report=$(ip_address_lookup) + fi + echo "%{F$COLOR_CONNECTED}$ICON_CONNECTED $report%{F-}" + elif [ "$VPN_STATUS" = "$CONNECTING" ]; then + echo "%{F$COLOR_CONNECTING}$ICON_CONNECTING Connecting...%{F-}" + else + echo "%{F$COLOR_DISCONNECTED}$ICON_DISCONNECTED No VPN%{F-}" + fi +} + + +vpn_toggle_connection() { +# connects or disconnects vpn + if [ "$VPN_STATUS" = "$CONNECTED" ]; then + $VPN_DISCONNECT + else + $VPN_CONNECT + fi +} + + +vpn_location_menu() { +# Allows control of VPN via rofi menu. Selects from VPN_LOCATIONS. + if hash rofi 2>/dev/null; then + ## shellcheck throws errors here, but the globbing is intentional + # shellcheck disable=SC2086 + MENU="$(rofi $rofi_location -sep "|" -dmenu -i -p "$rofi_menu_name" <<< \ + " $icon_connect (dis)connect| $icon_fav ${VPN_LOCATIONS[0]}| $icon_fav ${VPN_LOCATIONS[1]}| $icon_fav ${VPN_LOCATIONS[2]}| $icon_fav ${VPN_LOCATIONS[3]}| $icon_fav ${VPN_LOCATIONS[4]}| $icon_fav ${VPN_LOCATIONS[5]}| $icon_fav ${VPN_LOCATIONS[6]}| $icon_fav ${VPN_LOCATIONS[7]}| $icon_country ${VPN_LOCATIONS[8]}| $icon_country ${VPN_LOCATIONS[9]}| $icon_country ${VPN_LOCATIONS[10]}| $icon_country ${VPN_LOCATIONS[11]}| $icon_country ${VPN_LOCATIONS[12]}| $icon_country ${VPN_LOCATIONS[13]}| $icon_country ${VPN_LOCATIONS[14]}| $icon_country ${VPN_LOCATIONS[15]}| $icon_country ${VPN_LOCATIONS[16]}| $icon_country ${VPN_LOCATIONS[17]}| $icon_country ${VPN_LOCATIONS[18]}| $icon_country ${VPN_LOCATIONS[19]}| $icon_country ${VPN_LOCATIONS[20]}| $icon_country ${VPN_LOCATIONS[21]}| $icon_country ${VPN_LOCATIONS[22]}| $icon_country ${VPN_LOCATIONS[23]}| $icon_country ${VPN_LOCATIONS[24]}| $icon_country ${VPN_LOCATIONS[25]}| $icon_country ${VPN_LOCATIONS[26]}| $icon_country ${VPN_LOCATIONS[27]}| $icon_country ${VPN_LOCATIONS[28]}| $icon_country ${VPN_LOCATIONS[29]}| $icon_country ${VPN_LOCATIONS[30]}| $icon_country ${VPN_LOCATIONS[31]}| $icon_country ${VPN_LOCATIONS[32]}| $icon_country ${VPN_LOCATIONS[33]}| $icon_country ${VPN_LOCATIONS[34]}| $icon_country ${VPN_LOCATIONS[35]}| $icon_country ${VPN_LOCATIONS[36]}| $icon_country ${VPN_LOCATIONS[37]}| $icon_country ${VPN_LOCATIONS[38]}| $icon_country ${VPN_LOCATIONS[39]}| $icon_country ${VPN_LOCATIONS[40]}| $icon_country ${VPN_LOCATIONS[41]}| $icon_country ${VPN_LOCATIONS[42]}| $icon_country ${VPN_LOCATIONS[43]}")" + + # shellcheck disable=SC2086 + case "$MENU" in + *connect) vpn_toggle_connection; return;; + *"${VPN_LOCATIONS[0]}") $VPN_RELAY_SET_LOCATION ${VPN_CODES[0]} ;; + *"${VPN_LOCATIONS[1]}") $VPN_RELAY_SET_LOCATION ${VPN_CODES[1]} ;; + *"${VPN_LOCATIONS[2]}") $VPN_RELAY_SET_LOCATION ${VPN_CODES[2]} ;; + *"${VPN_LOCATIONS[3]}") $VPN_RELAY_SET_LOCATION ${VPN_CODES[3]} ;; + *"${VPN_LOCATIONS[4]}") $VPN_RELAY_SET_LOCATION ${VPN_CODES[4]} ;; + *"${VPN_LOCATIONS[5]}") $VPN_RELAY_SET_LOCATION ${VPN_CODES[5]} ;; + *"${VPN_LOCATIONS[6]}") $VPN_RELAY_SET_LOCATION ${VPN_CODES[6]} ;; + *"${VPN_LOCATIONS[7]}") $VPN_RELAY_SET_LOCATION ${VPN_CODES[7]} ;; + *"${VPN_LOCATIONS[8]}") $VPN_RELAY_SET_LOCATION ${VPN_CODES[8]} ;; + *"${VPN_LOCATIONS[9]}") $VPN_RELAY_SET_LOCATION ${VPN_CODES[9]} ;; + *"${VPN_LOCATIONS[10]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[10]}" ;; + *"${VPN_LOCATIONS[11]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[11]}" ;; + *"${VPN_LOCATIONS[12]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[12]}" ;; + *"${VPN_LOCATIONS[13]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[13]}" ;; + *"${VPN_LOCATIONS[14]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[14]}" ;; + *"${VPN_LOCATIONS[15]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[15]}" ;; + *"${VPN_LOCATIONS[16]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[16]}" ;; + *"${VPN_LOCATIONS[17]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[17]}" ;; + *"${VPN_LOCATIONS[18]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[18]}" ;; + *"${VPN_LOCATIONS[19]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[19]}" ;; + *"${VPN_LOCATIONS[20]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[20]}" ;; + *"${VPN_LOCATIONS[21]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[21]}" ;; + *"${VPN_LOCATIONS[22]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[22]}" ;; + *"${VPN_LOCATIONS[23]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[23]}" ;; + *"${VPN_LOCATIONS[24]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[24]}" ;; + *"${VPN_LOCATIONS[25]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[25]}" ;; + *"${VPN_LOCATIONS[26]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[26]}" ;; + *"${VPN_LOCATIONS[27]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[27]}" ;; + *"${VPN_LOCATIONS[28]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[28]}" ;; + *"${VPN_LOCATIONS[29]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[29]}" ;; + *"${VPN_LOCATIONS[30]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[30]}" ;; + *"${VPN_LOCATIONS[31]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[31]}" ;; + *"${VPN_LOCATIONS[32]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[32]}" ;; + *"${VPN_LOCATIONS[33]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[33]}" ;; + *"${VPN_LOCATIONS[34]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[34]}" ;; + *"${VPN_LOCATIONS[35]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[35]}" ;; + *"${VPN_LOCATIONS[36]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[36]}" ;; + *"${VPN_LOCATIONS[37]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[37]}" ;; + *"${VPN_LOCATIONS[38]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[38]}" ;; + *"${VPN_LOCATIONS[39]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[39]}" ;; + *"${VPN_LOCATIONS[40]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[40]}" ;; + *"${VPN_LOCATIONS[41]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[41]}" ;; + *"${VPN_LOCATIONS[42]}") $VPN_RELAY_SET_LOCATION "${VPN_CODES[42]}" ;; + esac + + if [ "$VPN_STATUS" = "$CONNECTED" ]; then + return + else + $VPN_CONNECT + fi + fi +} + + +ip_address_to_clipboard() { +# finds your IP and copies to clipboard + ip_address=$(ip_address_lookup) + echo "$ip_address" | xclip -selection clipboard +} + + +# cases for polybar user_module.ini +case "$1" in + -t|--toggle-connection) vpn_toggle_connection ;; + -l|--location-menu) vpn_location_menu ;; + -i|--ip-address) ip_address_to_clipboard ;; + -n|--no-geoip) vpn_report --no-geoip ;; + *) vpn_report ;; +esac \ No newline at end of file diff --git a/vscode/keybindings.json b/vscode/keybindings.json index 0fa71fe..7dd7050 100644 --- a/vscode/keybindings.json +++ b/vscode/keybindings.json @@ -29,11 +29,25 @@ "command": "actions.find" }, { - "key": "ctrl+oem_8", + "key": "ctrl+left", "command": "workbench.action.toggleSidebarVisibility" }, { "key": "ctrl+b", "command": "-workbench.action.toggleSidebarVisibility" + }, + { + "key": "ctrl+shift+g", + "command": "workbench.view.scm", + "when": "workbench.scm.active" + }, + { + "key": "ctrl+shift+g", + "command": "-workbench.view.scm", + "when": "workbench.scm.active" + }, + { + "key": "ctrl+right", + "command": "workbench.action.toggleAuxiliaryBar" } ] diff --git a/vscode/settings.json b/vscode/settings.json index 059ece3..3cdfc38 100644 --- a/vscode/settings.json +++ b/vscode/settings.json @@ -1,16 +1,17 @@ { - "editor.fontFamily": "Jetbrains Mono", + "editor.fontFamily": "Liga Liberation Mono", "editor.fontLigatures": true, "editor.fontSize": 14, - "editor.fontWeight": 300, + "editor.fontWeight": 400, "editor.formatOnPaste": false, "editor.wordWrap": "on", "editor.cursorBlinking": "smooth", "editor.smoothScrolling": true, "editor.formatOnSave": true, "editor.bracketPairColorization.enabled": true, - "terminal.integrated.fontFamily": "Jetbrains Mono", - "terminal.integrated.fontSize": 11, + "editor.experimental.stickyScroll.enabled": true, + "terminal.integrated.fontFamily": "Liga Liberation Mono", + "terminal.integrated.fontSize": 14, "terminal.integrated.fontWeight": "400", "terminal.integrated.tabs.enabled": true, "debug.console.fontFamily": "Jetbrains Mono", @@ -21,6 +22,13 @@ "workbench.colorCustomizations": { "scrollbar.shadow": "#ffffff00" }, + "todo-tree.highlights.defaultHighlight": { + "icon": "alert", + "background": "#112616", + "foreground": "#bde000" + }, + "diffEditor.codeLens": true, + "git.mergeEditor": false, "workbench.iconTheme": "material-icon-theme", "npm.enableRunFromFolder": true, "security.workspace.trust.untrustedFiles": "open", @@ -30,7 +38,7 @@ "vim.useSystemClipboard": true, "vim.highlightedyank.enable": true, "vim.highlightedyank.color": "#18e00040", - "markdown.styles": ["markdown-styles.css"], + //"meridian.ignoreDirs": ["/img"], "markdown-preview-github-styles.colorTheme": "light", "liveServer.settings.donotShowInfoMsg": true, "explorer.confirmDragAndDrop": false, @@ -42,7 +50,7 @@ { "scope": "comment", "settings": { - "fontStyle": "italic" + "fontStyle": "" } } ] @@ -63,13 +71,24 @@ "[javascriptreact]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, - + "gitlens.currentLine.scrollable": false, "gitlens.advanced.messages": { "suppressGitMissingWarning": true }, "[shellscript]": { "editor.defaultFormatter": "shakram02.bash-beautify" }, + "window.titleBarStyle": "custom", + "npm.keybindingsChangedWarningShown": true, + "debug.onTaskErrors": "debugAnyway", "workbench.colorTheme": "Alien Blood ", - "window.titleBarStyle": "custom" + "[markdown]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[scss]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + } }