Compare commits

..

2 Commits
main ... terry

Author SHA1 Message Date
tforgione 7bbf9b8c9b Update init.vim 2023-10-11 10:01:55 +02:00
Thomas Forgione f1ee5b1aff Restore old init.vim 2022-12-07 12:45:51 +01:00
19 changed files with 313 additions and 1446 deletions

View File

@ -1,649 +0,0 @@
[general]
live_config_reload = true
[bell]
animation = "EaseOutExpo"
duration = 0
[colors]
draw_bold_text_with_bright_colors = true
[colors.bright]
black = "0x666666"
blue = "0x5c5cff"
cyan = "0x00ffff"
green = "0x00ff00"
magenta = "0xff00ff"
red = "0xff0000"
white = "0xffffff"
yellow = "0xffff00"
[colors.dim]
black = "0x333333"
blue = "0x6699cc"
cyan = "0x66cccc"
green = "0x99cc99"
magenta = "0xcc99cc"
red = "0xf2777a"
white = "0xdddddd"
yellow = "0xffcc66"
[colors.normal]
black = "0x000000"
blue = "0x7aa6da"
cyan = "0x3465a4"
green = "0x00cd00"
magenta = "0xcd00cd"
red = "0xcd0000"
white = "0xe5e5e5"
yellow = "0xcdcd00"
[colors.primary]
background = "0x000000"
foreground = "0xeaeaea"
[cursor]
style = "Block"
unfocused_hollow = true
[font]
size = 10.0
[font.glyph_offset]
x = 0
y = 0
[font.normal]
family = "Ubuntu Mono Nerd Font"
[font.offset]
x = 0
y = 0
[[keyboard.bindings]]
command = "clone-terminal"
key = "E"
mods = "Control|Shift"
[[keyboard.bindings]]
action = "Paste"
key = "V"
mods = "Control|Shift"
[[keyboard.bindings]]
action = "Copy"
key = "C"
mods = "Control|Shift"
[[keyboard.bindings]]
action = "Paste"
key = "Paste"
[[keyboard.bindings]]
action = "Copy"
key = "Copy"
[[keyboard.bindings]]
action = "PasteSelection"
key = "Insert"
mods = "Shift"
[[keyboard.bindings]]
action = "ResetFontSize"
key = "Key0"
mods = "Control"
[[keyboard.bindings]]
action = "IncreaseFontSize"
key = "Equals"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001BOH"
key = "Home"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[H"
key = "Home"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOF"
key = "End"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[F"
key = "End"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001B[5;2~"
key = "PageUp"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[5;5~"
key = "PageUp"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[5~"
key = "PageUp"
[[keyboard.bindings]]
chars = "\u001B[6;2~"
key = "PageDown"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[6;5~"
key = "PageDown"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[6~"
key = "PageDown"
[[keyboard.bindings]]
chars = "\u001B[Z"
key = "Tab"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u007F"
key = "Back"
[[keyboard.bindings]]
chars = "\u001B\u007F"
key = "Back"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[2~"
key = "Insert"
[[keyboard.bindings]]
chars = "\u001B[3~"
key = "Delete"
[[keyboard.bindings]]
chars = "\u001B[1;2D"
key = "Left"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5D"
key = "Left"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3D"
key = "Left"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[D"
key = "Left"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOD"
key = "Left"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[1;2C"
key = "Right"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5C"
key = "Right"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3C"
key = "Right"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[C"
key = "Right"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOC"
key = "Right"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[1;2A"
key = "Up"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5A"
key = "Up"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3A"
key = "Up"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[A"
key = "Up"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOA"
key = "Up"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001B[1;2B"
key = "Down"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5B"
key = "Down"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;3B"
key = "Down"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[B"
key = "Down"
mode = "~AppCursor"
[[keyboard.bindings]]
chars = "\u001BOB"
key = "Down"
mode = "AppCursor"
[[keyboard.bindings]]
chars = "\u001BOP"
key = "F1"
[[keyboard.bindings]]
chars = "\u001BOQ"
key = "F2"
[[keyboard.bindings]]
chars = "\u001BOR"
key = "F3"
[[keyboard.bindings]]
chars = "\u001BOS"
key = "F4"
[[keyboard.bindings]]
chars = "\u001B[15~"
key = "F5"
[[keyboard.bindings]]
chars = "\u001B[17~"
key = "F6"
[[keyboard.bindings]]
chars = "\u001B[18~"
key = "F7"
[[keyboard.bindings]]
chars = "\u001B[19~"
key = "F8"
[[keyboard.bindings]]
chars = "\u001B[20~"
key = "F9"
[[keyboard.bindings]]
chars = "\u001B[21~"
key = "F10"
[[keyboard.bindings]]
chars = "\u001B[23~"
key = "F11"
[[keyboard.bindings]]
chars = "\u001B[24~"
key = "F12"
[[keyboard.bindings]]
chars = "\u001B[1;2P"
key = "F1"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;2Q"
key = "F2"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;2R"
key = "F3"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;2S"
key = "F4"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[15;2~"
key = "F5"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[17;2~"
key = "F6"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[18;2~"
key = "F7"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[19;2~"
key = "F8"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[20;2~"
key = "F9"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[21;2~"
key = "F10"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[23;2~"
key = "F11"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[24;2~"
key = "F12"
mods = "Shift"
[[keyboard.bindings]]
chars = "\u001B[1;5P"
key = "F1"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;5Q"
key = "F2"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;5R"
key = "F3"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;5S"
key = "F4"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[15;5~"
key = "F5"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[17;5~"
key = "F6"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[18;5~"
key = "F7"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[19;5~"
key = "F8"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[20;5~"
key = "F9"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[21;5~"
key = "F10"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[23;5~"
key = "F11"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[24;5~"
key = "F12"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001B[1;6P"
key = "F1"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[1;6Q"
key = "F2"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[1;6R"
key = "F3"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[1;6S"
key = "F4"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[15;6~"
key = "F5"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[17;6~"
key = "F6"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[18;6~"
key = "F7"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[19;6~"
key = "F8"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[20;6~"
key = "F9"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[21;6~"
key = "F10"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[23;6~"
key = "F11"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[24;6~"
key = "F12"
mods = "Alt"
[[keyboard.bindings]]
chars = "\u001B[1;3P"
key = "F1"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[1;3Q"
key = "F2"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[1;3R"
key = "F3"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[1;3S"
key = "F4"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[15;3~"
key = "F5"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[17;3~"
key = "F6"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[18;3~"
key = "F7"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[19;3~"
key = "F8"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[20;3~"
key = "F9"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[21;3~"
key = "F10"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[23;3~"
key = "F11"
mods = "Super"
[[keyboard.bindings]]
chars = "\u001B[24;3~"
key = "F12"
mods = "Super"
[[keyboard.bindings]]
chars = "\u000A"
key = "NumpadEnter"
[[keyboard.bindings]]
chars = "\u002E"
key = "NumpadDecimal"
[[keyboard.bindings]]
chars = "\u002B"
key = "NumpadAdd"
[[keyboard.bindings]]
chars = "\u002D"
key = "NumpadSubtract"
[[keyboard.bindings]]
chars = "\u002A"
key = "NumpadMultiply"
[[keyboard.bindings]]
chars = "\u002F"
key = "NumpadDivide"
[[keyboard.bindings]]
chars = "\u0030"
key = "Numpad0"
[[keyboard.bindings]]
chars = "\u0031"
key = "Numpad1"
[[keyboard.bindings]]
chars = "\u0032"
key = "Numpad2"
[[keyboard.bindings]]
chars = "\u0033"
key = "Numpad3"
[[keyboard.bindings]]
chars = "\u0034"
key = "Numpad4"
[[keyboard.bindings]]
chars = "\u0035"
key = "Numpad5"
[[keyboard.bindings]]
chars = "\u0036"
key = "Numpad6"
[[keyboard.bindings]]
chars = "\u0037"
key = "Numpad7"
[[keyboard.bindings]]
chars = "\u0038"
key = "Numpad8"
[[keyboard.bindings]]
chars = "\u0039"
key = "Numpad9"
[mouse]
hide_when_typing = false
[[mouse.bindings]]
action = "PasteSelection"
mouse = "Middle"
[scrolling]
history = 10000
multiplier = 3
[selection]
save_to_clipboard = false
semantic_escape_chars = ",│`|:\"' ()[]{}<>"
[window]
decorations = "none"
dynamic_title = false
opacity = 0.6
[window.dimensions]
columns = 0
lines = 0
[window.padding]
x = 0
y = 0

4
bashrc
View File

@ -62,9 +62,9 @@ if [ "$color_prompt" = yes ]; then
else else
color="\033[1;35m" color="\033[1;35m"
fi fi
PS1="${color}┌── \u\033[33m@\033[32m\H\033[33m::\033[34m\w\033[0m\n${color}└▷ \033[0m" PS1="${color}┌── \u\033[33m::\033[34m\w\033[0m\n${color}└▷ \033[0m"
else else
PS1='${debian_chroot:+($debian_chroot)}\u@\H:\w\$ ' PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi fi
unset color_prompt force_color_prompt color unset color_prompt force_color_prompt color

View File

@ -1,11 +0,0 @@
#!/usr/bin/env bash
# Extract parent window uuid
WINDOW_ID=$(xdotool getactivewindow)
WM_NAME=$(xprop -id $WINDOW_ID WM_NAME | cut -d '"' -f 2)
# Generate new uuid for new terminal
uuid=$(uuidgen)
alacritty --title $uuid -e sh -c "TERMINAL_UUID=$uuid PARENT_TERMINAL=$WM_NAME exec $SHELL"

View File

@ -4,10 +4,5 @@ if [ $# -eq 0 ]; then
xclip -selection c xclip -selection c
else else
file_type=$(file -b --mime-type "$1") file_type=$(file -b --mime-type "$1")
if [ "$file_type" = "image/jpg" ] || [ "$file_type" = "image/jpeg" ]; then
convert $1 png:- | xclip -selection c -t image/png
else
xclip -selection c -t $file_type < $1 xclip -selection c -t $file_type < $1
fi fi
fi

View File

@ -1,4 +0,0 @@
#!/usr/bin/env bash
UUID=$(uuidgen)
alacritty --title $UUID -e sh -c "TERMINAL_UUID=$UUID exec $SHELL"

View File

@ -1,9 +0,0 @@
#!/usr/bin/env bash
# auto fix issues with my scanner
input="$3"
color=$(magick "$input" -format "%[hex:u.p{100,-1}]" info:)
tmp=$(mktemp --suffix=.png)
magick "$input" -page +0-100 -background \#$color -flatten -auto-level $tmp
magick $tmp -quality 100 "${input%.*}.pdf"
rm -rf $tmp "$input"

View File

@ -1,3 +0,0 @@
#!/usr/bin/env bash
xclip -sel clip -o | sed -e 's/^/> /' | xclip -sel clip

View File

@ -1,262 +0,0 @@
#! /usr/bin/env python
# Shamefully copied from this gist :
# https://gist.github.com/pankajp/280596a5dabaeeceaaaa/
# Standard library imports.
import sys
if sys.version_info[0] < 3:
from SocketServer import ThreadingMixIn
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
from urllib import quote, unquote
from cStringIO import StringIO
else:
import http.server as BaseHTTPServer
from http.server import SimpleHTTPRequestHandler
from socketserver import ThreadingMixIn
from urllib.parse import quote, unquote
from io import BytesIO as cStringIO
import os
from os.path import (join, exists, abspath, split, splitdrive, isdir)
from os import makedirs, unlink, getcwd, chdir, curdir, pardir, rename, fstat
from shutil import copyfileobj, copytree
import glob
from zipfile import ZipFile
from posixpath import normpath
import re
import cgi
import threading
import socket
import errno
DATA_DIR = getcwd()
class ThreadingHTTPServer(ThreadingMixIn, BaseHTTPServer.HTTPServer):
pass
class RequestHandler(SimpleHTTPRequestHandler):
""" Handler to handle POST requests for actions.
"""
serve_path = DATA_DIR
def do_GET(self):
""" Overridden to handle HTTP Range requests. """
self.range_from, self.range_to = self._get_range_header()
if self.range_from is None:
# nothing to do here
return SimpleHTTPRequestHandler.do_GET(self)
f = self.send_range_head()
if f:
self.copy_file_range(f, self.wfile)
f.close()
def copy_file_range(self, in_file, out_file):
""" Copy only the range in self.range_from/to. """
in_file.seek(self.range_from)
# Add 1 because the range is inclusive
left_to_copy = 1 + self.range_to - self.range_from
buf_length = 64 * 1024
bytes_copied = 0
while bytes_copied < left_to_copy:
read_buf = in_file.read(min(buf_length, left_to_copy - bytes_copied))
if len(read_buf) == 0:
break
out_file.write(read_buf)
bytes_copied += len(read_buf)
return bytes_copied
def send_range_head(self):
"""Common code for GET and HEAD commands.
This sends the response code and MIME headers.
Return value is either a file object (which has to be copied
to the outputfile by the caller unless the command was HEAD,
and must be closed by the caller under all circumstances), or
None, in which case the caller has nothing further to do.
"""
path = self.translate_path(self.path)
f = None
if isdir(path):
if not self.path.endswith('/'):
# redirect browser - doing basically what apache does
self.send_response(301)
self.send_header("Location", self.path + "/")
self.end_headers()
return None
for index in "index.html", "index.htm":
index = join(path, index)
if exists(index):
path = index
break
else:
return self.list_directory(path)
if not exists(path) and path.endswith('/data'):
# FIXME: Handle grits-like query with /data appended to path
# stupid grits
if exists(path[:-5]):
path = path[:-5]
ctype = self.guess_type(path)
try:
# Always read in binary mode. Opening files in text mode may cause
# newline translations, making the actual size of the content
# transmitted *less* than the content-length!
f = open(path, 'rb')
except IOError:
self.send_error(404, "File not found")
return None
if self.range_from is None:
self.send_response(200)
else:
self.send_response(206)
self.send_header("Content-type", ctype)
fs = fstat(f.fileno())
file_size = fs.st_size
if self.range_from is not None:
if self.range_to is None or self.range_to >= file_size:
self.range_to = file_size - 1
self.send_header("Content-Range",
"bytes %d-%d/%d" % (self.range_from,
self.range_to,
file_size))
# Add 1 because ranges are inclusive
self.send_header("Content-Length",
(1 + self.range_to - self.range_from))
else:
self.send_header("Content-Length", str(file_size))
self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
self.end_headers()
return f
def list_directory(self, path):
"""Helper to produce a directory listing (absent index.html).
Return value is either a file object, or None (indicating an
error). In either case, the headers are sent, making the
interface the same as for send_head().
"""
try:
list = os.listdir(path)
except os.error:
self.send_error(404, "No permission to list directory")
return None
list.sort(key=lambda a: a.lower())
f = StringIO()
displaypath = cgi.escape(unquote(self.path))
f.write('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">')
f.write("<html>\n<title>Directory listing for %s</title>\n" % displaypath)
f.write("<body>\n<h2>Directory listing for %s</h2>\n" % displaypath)
f.write("<hr>\n<ul>\n")
for name in list:
fullname = os.path.join(path, name)
displayname = linkname = name
# Append / for directories or @ for symbolic links
if os.path.isdir(fullname):
displayname = name + "/"
linkname = name + "/"
if os.path.islink(fullname):
displayname = name + "@"
# Note: a link to a directory displays with @ and links with /
f.write('<li><a href="%s">%s</a>\n'
% (quote(linkname), cgi.escape(displayname)))
f.write("</ul>\n<hr>\n</body>\n</html>\n")
length = f.tell()
f.seek(0)
self.send_response(200)
encoding = sys.getfilesystemencoding()
self.send_header("Content-type", "text/html; charset=%s" % encoding)
self.send_header("Content-Length", str(length))
self.end_headers()
return f
def translate_path(self, path):
""" Override to handle redirects.
"""
path = path.split('?', 1)[0]
path = path.split('#', 1)[0]
path = normpath(unquote(path))
words = path.split('/')
words = filter(None, words)
path = self.serve_path
for word in words:
drive, word = splitdrive(word)
head, word = split(word)
if word in (curdir, pardir): continue
path = join(path, word)
return path
# Private interface ######################################################
def _get_range_header(self):
""" Returns request Range start and end if specified.
If Range header is not specified returns (None, None)
"""
if sys.version_info[0] < 3:
range_header = self.headers.getheader("Range")
else:
range_header = self.headers.get("Range")
if range_header is None:
return (None, None)
if not range_header.startswith("bytes="):
return (None, None)
regex = re.compile(r"^bytes=(\d+)\-(\d+)?")
rangething = regex.search(range_header)
if rangething:
from_val = int(rangething.group(1))
if rangething.group(2) is not None:
return (from_val, int(rangething.group(2)))
else:
return (from_val, None)
else:
return (None, None)
def get_server(port=8000, next_attempts=0, serve_path=None):
Handler = RequestHandler
if serve_path:
Handler.serve_path = serve_path
while next_attempts >= 0:
try:
httpd = ThreadingHTTPServer(("", port), Handler)
return httpd
except socket.error as e:
if e.errno == errno.EADDRINUSE:
next_attempts -= 1
port += 1
else:
raise
def main(args=None):
if args is None:
args = sys.argv[1:]
PORT = 8000
if len(args) > 0:
PORT = int(args[-1])
serve_path = DATA_DIR
if len(args) > 1:
serve_path = abspath(args[-2])
httpd = get_server(port=PORT, serve_path=serve_path)
print("serving at port " + str(PORT))
httpd.serve_forever()
if __name__ == "__main__":
main()

View File

@ -162,13 +162,8 @@ update-system() {
return return
fi fi
if [ -z "$password" ]; then
echo -e "\033[32;1m=== Starting system update, please enter your password ===\033[0m" echo -e "\033[32;1m=== Starting system update, please enter your password ===\033[0m"
read -sep "Password: " password sudo true
fi
echo $password | sudo -Sp "" true > /dev/null 2>&1
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "Could not get sudo..." echo "Could not get sudo..."
return 1 return 1
@ -180,48 +175,33 @@ update-system() {
# Debian based systems # Debian based systems
command -v apt > /dev/null 2>&1 command -v apt > /dev/null 2>&1
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo $password | sudo -Sp "" apt update -y sudo apt update -y
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo $password | sudo -Sp "" apt upgrade -y sudo apt upgrade -y
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo $password | sudo -Sp "" apt autoremove -y sudo apt autoremove -y
fi fi
fi fi
fi fi
command -v snap > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo $password | sudo -Sp "" snap refresh
fi
# Archlinux based systems # Archlinux based systems
command -v paru > /dev/null 2>&1
if [ $? -eq 0 ]; then
paru -Syu --noconfirm
else
command -v yay > /dev/null 2>&1 command -v yay > /dev/null 2>&1
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
yay -Syu --noconfirm yay -Syu --noconfirm
yay -Syua --noconfirm yay -Syua --noconfirm
else else
command -v pacman > /dev/null 2>&1 command -v pacman > /dev/null 2>&1
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo $password | sudo -Sp "" pacman -Syu --noconfirm sudo pacman -Syu --noconfirm
fi fi
fi
fi fi
# Fedora based systems # Fedora based systems
command -v dnf > /dev/null 2>&1 command -v dnf > /dev/null 2>&1
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo $password | sudo -Sp "" dnf upgrade sudo dnf upgrade
fi fi
local seconds=$((`date +%s` - $start)) local seconds=$((`date +%s` - $start))
@ -368,11 +348,6 @@ update-dotfiles() {
cd ~/.config/awesome/ && git pull cd ~/.config/awesome/ && git pull
fi fi
if [ -d ~/.config/nushell/.git ]; then
echo -e "\033[32;1m=== Updating nushell config ===\033[0m"
cd ~/.config/nushell/ && git pull
fi
cd $current_dir cd $current_dir
local seconds=$((`date +%s` - $start)) local seconds=$((`date +%s` - $start))
@ -488,12 +463,6 @@ partial-update() {
main() { main() {
if [ "$1" == "--pass" ]; then
shift
password=$1
shift
fi
if [ $# -eq 0 ]; then if [ $# -eq 0 ]; then
_lock_or_error_message _lock_or_error_message
local error_code=$? local error_code=$?
@ -502,7 +471,7 @@ main() {
fi fi
local start=`date +%s` local start=`date +%s`
echo -e "\033[32;1m=== Starting full update of $(whoami)@$(hostname) ===\033[0m" echo -e "\033[32;1m=== Starting full update ===\033[0m"
# Update the system # Update the system
_check_running _check_running

15
coc-settings.json Normal file
View File

@ -0,0 +1,15 @@
{
"languageserver": {
"rust": {
"command": "rustup",
"args": ["run", "nightly", "rust-analyzer"],
"filetypes": ["rust"],
"rootPatterns": ["Cargo.toml"]
},
"elm": {
"command": "elm-language-server",
"filetypes": ["elm"],
"rootPatterns": ["elm.json"]
}
}
}

View File

@ -1,23 +1,19 @@
" Pas de compatibilité a VI ! " Pas de compatibilité a VI !
set nocompatible set nocompatible
set notermguicolors
" PLUGNIS ###########################################################{{{ " PLUGNIS ###########################################################{{{
call plug#begin() call plug#begin()
" Conquer of Completion
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" General plugins " General plugins
Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes' Plug 'vim-airline/vim-airline-themes'
Plug 'https://gitea.tforgione.fr/tforgione/peach.git' Plug 'https://gitea.tforgione.fr/tforgione/peach.git'
Plug 'scrooloose/nerdtree' Plug 'scrooloose/nerdtree'
Plug 'tpope/vim-abolish' Plug 'tpope/vim-abolish'
Plug 'lambdalisue/suda.vim'
" Language specific plugins " Language specific plugins
" Rust " Rust
Plug 'rust-lang/rust.vim' Plug 'rust-lang/rust.vim'
@ -30,9 +26,6 @@ Plug 'cespare/vim-toml'
" Pug " Pug
Plug 'digitaltoad/vim-pug' Plug 'digitaltoad/vim-pug'
" Typst
Plug 'kaarmu/typst.vim'
call plug#end() call plug#end()
" Line numbers and syntaxic coloration " Line numbers and syntaxic coloration
@ -47,10 +40,6 @@ set expandtab
set tabstop=4 set tabstop=4
set shiftwidth=4 set shiftwidth=4
set autoindent set autoindent
set tw=120
if !empty($NVIM_TEXT_WIDTH)
execute 'set tw=' . $NVIM_TEXT_WIDTH
endif
" }}} " }}}
" UI CONFIG #########################################################{{{ " UI CONFIG #########################################################{{{
@ -84,9 +73,6 @@ elseif executable('make')
vnoremap <silent><F12> :wa \|!make -p %:p<CR> vnoremap <silent><F12> :wa \|!make -p %:p<CR>
endif endif
" SudaWrite with W
command W SudaWrite
" Escape on F1 " Escape on F1
map <F1> <Esc> map <F1> <Esc>
imap <F1> <Esc> imap <F1> <Esc>
@ -96,7 +82,6 @@ let g:airline_powerline_fonts = 1
let g:airline#extensions#branch#format = 1 let g:airline#extensions#branch#format = 1
let g:airline_theme='dark' let g:airline_theme='dark'
set t_Co=256 set t_Co=256
set textwidth=0
" Set textwidth for latex " Set textwidth for latex
" autocmd FileType tex set textwidth=79 " autocmd FileType tex set textwidth=79
" }}} " }}}
@ -156,71 +141,22 @@ let g:markdown_composer_browser = 'firefox'
let g:instant_markdown_autostart = 0 let g:instant_markdown_autostart = 0
" }}} " }}}
" COC CONFIG ########################################################{{{
" Use `[g` and `]g` to navigate diagnostics
" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list.
nmap <silent> gp <Plug>(coc-diagnostic-prev)
nmap <silent> gn <Plug>(coc-diagnostic-next)
" GoTo code navigation.
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
" Add `:Format` command to format current buffer.
command! -nargs=0 Format :call CocAction('format')
" Use K to show documentation in preview window.
nnoremap <silent> K :call <SID>show_documentation()<CR>
function! s:show_documentation()
if (index(['vim','help'], &filetype) >= 0)
execute 'h '.expand('<cword>')
elseif (coc#rpc#ready())
call CocActionAsync('doHover')
else
execute '!' . &keywordprg . " " . expand('<cword>')
endif
endfunction
" Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable
" delays and poor user experience.
set updatetime=300
" Highlight the symbol and its references when holding the cursor.
autocmd CursorHold * silent call CocActionAsync('highlight')
" Symbol renaming.
nmap <leader>rn <Plug>(coc-rename)
" Formatting selected code.
xmap <leader>f <Plug>(coc-format-selected)
nmap <leader>f <Plug>(coc-format-selected)
" Autoclose preview
autocmd CursorMovedI * if pumvisible() == 0|pclose|endif
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
" Complete on tab
" inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
function! s:check_back_space() abort function! s:check_back_space() abort
let col = col('.') - 1 let col = col('.') - 1
return !col || getline('.')[col - 1] =~ '\s' return !col || getline('.')[col - 1] =~ '\s'
endfunction endfunction
" Insert <tab> when previous text is space, refresh completion if not.
inoremap <silent><expr> <TAB>
\ coc#pum#visible() ? coc#pum#next(1):
\ <SID>check_back_space() ? "\<Tab>" :
\ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
" }}}
" CUSTOM THINGS DEPENDING ON ENV ####################################{{{ " CUSTOM THINGS DEPENDING ON ENV ####################################{{{
let g:rustfmt_autosave = 1 let g:rustfmt_autosave = 1
let g:ale_linters = {}
" Apprently some people don't use vim let g:ale_c_parse_compile_commands=1
" set autoread | au CursorHold * checktime | call feedkeys("lh") let g:ale_elm_ls_use_global = 1
let g:ale_linters_ignore = { 'elm': ['make'] }
let g:ale_lint_on_text_changed = 0
if $NVIM_DISABLE_PYTHON_LINTER == '1'
let g:ale_linters.python = []
endif
if $NVIM_DISABLE_JAVA_LINTER == '1'
let g:ale_linters.java = []
endif

View File

@ -1,27 +0,0 @@
{
"inlayHint": {
"enable": false
},
"languageserver": {
"rust": {
"command": "rustup",
"args": ["run", "stable", "rust-analyzer"],
"filetypes": ["rust"],
"rootPatterns": ["Cargo.toml"]
},
"elmLS": {
"command": "elm-language-server",
"filetypes": ["elm"],
"rootPatterns": ["elm.json"]
},
"python": {
"command": "pylsp",
"filetypes": ["python"]
},
"typscript": {
"command": "typescript-language-server",
"args": ["--stdio"],
"filetypes": ["typescript"]
}
}
}

View File

@ -2,7 +2,6 @@
# v is shorter # v is shorter
alias v="$EDITOR" alias v="$EDITOR"
alias vdc="$EDITOR docker-compose.yml"
# htop is better # htop is better
alias top="htop" alias top="htop"
@ -27,9 +26,6 @@ alias cd..="cd .."
alias cd...="cd ../.." alias cd...="cd ../.."
alias cd....="cd ../../.." alias cd....="cd ../../.."
# Colored ip
alias ip="ip -c"
# Alias for ls # Alias for ls
command -v exa > /dev/null 2>&1 command -v exa > /dev/null 2>&1
@ -72,9 +68,6 @@ cdw() {
fi fi
} }
# Numbat shortcut
alias nb=numbat
# Initialize thefuck # Initialize thefuck
command -v thefuck > /dev/null 2>&1 command -v thefuck > /dev/null 2>&1
@ -83,84 +76,6 @@ if [ $? -eq 0 ]; then
eval $(thefuck --alias) eval $(thefuck --alias)
fi fi
# Docker and kubernetes aliases
command -v k9s > /dev/null 2>&1
if [ $? -eq 0 ]; then
kns() {
local kube_config
if [ -z $KUBECONFIG ]; then
kube_config=$HOME/.kube/config
else
kube_config=$KUBECONFIG
fi
if [ -f $kube_config ]; then
k9s
else
echo >&2 error: $kube_config does not exist
return 1
fi
}
fi
command -v lazydocker > /dev/null 2>&1
if [ $? -eq 0 ]; then
alias ld="lazydocker"
fi
command -v docker-compose > /dev/null 2>&1
if [ $? -eq 0 ]; then
alias dc="docker-compose"
alias dcb="docker-compose build"
alias dcp="docker-compose build && docker-compose push"
alias dcu="docker-compose up -d --build --remove-orphans"
alias dcd="docker-compose down"
alias dcr="docker-compose down && docker-compose up -d --build --remove-orphans"
fi
command -v kubectl > /dev/null 2>&1
if [ $? -eq 0 ]; then
if [ -d $HOME/.config/polymny ]; then
export PATH=$HOME/.config/polymny/bin:$PATH
fi
if [ -f $HOME/.kubes/current-cube ]; then
export KUBECONFIG=$(cat $HOME/.kubes/current-cube)
fi
# Sets the kube config
kube() {
local kube_config=$HOME/.kubes/$1/config
if [ $# -ne 1 ]; then
rm ~/.kubes/current-cube
export KUBECONFIG=""
elif [ ! -f $kube_config ]; then
echo >&2 error: no such kube config: $kube_config
return 1
else
echo $kube_config > ~/.kubes/current-cube
export KUBECONFIG=$kube_config
fi
}
# Shortcut for kubectl
kctl() {
local kube_config
if [ -z $KUBECONFIG ]; then
kube_config=$HOME/.kube/config
else
kube_config=$KUBECONFIG
fi
if [ -f $kube_config ]; then
kubectl $@
else
echo >&2 error: $kube_config does not exist
return 1
fi
}
fi
# change to git directory # change to git directory
cdg() { cdg() {
local newdir local newdir

View File

@ -20,8 +20,8 @@ DISABLE_AUTO_TITLE="true"
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/me # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/me
# Example format: plugins=(rails git textmate ruby lighthouse) # Example format: plugins=(rails git textmate ruby lighthouse)
plugins=(git myjump pass $ZSH_EXTRA_PLUGINS) plugins=(git myjump pass)
zstyle ':omz:alpha:lib:git' async-prompt no
source $ZSH/oh-my-zsh.sh source $ZSH/oh-my-zsh.sh
# Source gulp completion # Source gulp completion

View File

@ -7,7 +7,7 @@ else
fi fi
# Parallel conpilation with make # Parallel conpilation with make
export MAKEFLAGS="-j`nproc`" export MAKEFLAGS="+j`nproc`"
# I want clang as default compiler if it exists # I want clang as default compiler if it exists
command -v clang > /dev/null 2>&1 command -v clang > /dev/null 2>&1
@ -26,14 +26,5 @@ export WINEDEBUG=-all
# for rust # for rust
export RUST_BACKTRACE=full export RUST_BACKTRACE=full
# for python
if [ -d $HOME/.venv ]; then
export PATH=$HOME/.venv/bin:$PATH
export VIRTUAL_ENV=$HOME/.venv
fi
# Use port 8000 by default for flask, cause why would we use anything different?
export FLASK_RUN_PORT=8000
export TERM=xterm-256color export TERM=xterm-256color
export REPORTTIME=5 export REPORTTIME=5

View File

@ -17,20 +17,20 @@ eval PR_BOLD="%{$terminfo[bold]%}"
if [[ $UID -ge 1000 ]]; then # normal user if [[ $UID -ge 1000 ]]; then # normal user
# If ssh # If ssh
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then
eval PR_USER='${PR_GREEN}%n${PR_YELLOW}@${PR_GREEN}%M${PR_NO_COLOR}' eval PR_USER='${PR_GREEN}%n@%M${PR_NO_COLOR}'
eval PR_USER_OP='${PR_GREEN}%#${PR_NO_COLOR}' eval PR_USER_OP='${PR_GREEN}%#${PR_NO_COLOR}'
local PR_ARROW_UP='${PR_GREEN}┌── ${PR_NO_COLOR}' local PR_ARROW_UP='${PR_GREEN}┌── ${PR_NO_COLOR}'
local PR_ARROW_DOWN='${PR_GREEN}└${PR_NO_COLOR}' local PR_ARROW_DOWN='${PR_GREEN}└${PR_NO_COLOR}'
local PR_PROMPT='$PR_GREEN▷$PR_NO_COLOR' local PR_PROMPT='$PR_GREEN▷$PR_NO_COLOR'
else else
eval PR_USER='${PR_MAGENTA}%n${PR_YELLOW}@${PR_GREEN}%M${PR_NO_COLOR}' eval PR_USER='${PR_MAGENTA}%n@%M${PR_NO_COLOR}'
eval PR_USER_OP='${PR_BLUE}%#${PR_NO_COLOR}' eval PR_USER_OP='${PR_BLUE}%#${PR_NO_COLOR}'
local PR_PROMPT='$PR_MAGENTA▷$PR_NO_COLOR' local PR_PROMPT='$PR_MAGENTA▷$PR_NO_COLOR'
local PR_ARROW_UP='$PR_MAGENTA┌── ${PR_NO_COLOR}' local PR_ARROW_UP='$PR_MAGENTA┌── ${PR_NO_COLOR}'
local PR_ARROW_DOWN='$PR_MAGENTA└${PR_NO_COLOR}' local PR_ARROW_DOWN='$PR_MAGENTA└${PR_NO_COLOR}'
fi fi
elif [[ $UID -eq 0 ]]; then # root elif [[ $UID -eq 0 ]]; then # root
eval PR_USER='${PR_RED}%n${PR_YELLOW}@${PR_GREEN}%M${PR_NO_COLOR}' eval PR_USER='${PR_RED}%n${PR_NO_COLOR}'
eval PR_USER_OP='${PR_RED}%#${PR_NO_COLOR}' eval PR_USER_OP='${PR_RED}%#${PR_NO_COLOR}'
local PR_ARROW_UP='${PR_RED}┌── ${PR_NO_COLOR}' local PR_ARROW_UP='${PR_RED}┌── ${PR_NO_COLOR}'
local PR_ARROW_DOWN='${PR_RED}└${PR_NO_COLOR}' local PR_ARROW_DOWN='${PR_RED}└${PR_NO_COLOR}'
@ -76,31 +76,20 @@ else
fi fi
fi fi
git_prompt_info_no_space() {
local info=$(git_prompt_info)
if [ ! -z $info ]; then
echo " $info"
fi
}
local return_code="" local return_code=""
local git_branch='$(git_prompt_info_no_space)' local git_branch='$(git_prompt_info)'
local PR_TEMP=""
command -v vcgencmd > /dev/null && PR_TEMP=' ${PR_GREEN}$(vcgencmd measure_temp | cut -d = -f 2)${PR_NO_COLOR}'
local PR_DATE='${PR_BOLD}${PR_MAGENTA}[%D{%H:%M}]${PR_NO_COLOR}' local PR_DATE='${PR_BOLD}${PR_MAGENTA}[%D{%H:%M}]${PR_NO_COLOR}'
extract_kube() {
if [ ! -z $KUBECONFIG ]; then
echo " ${PR_BOLD}${PR_CYAN}$(echo $KUBECONFIG | rev | cut -d '/' -f 2 | rev)${PR_NO_COLOR}"
fi
}
local kube='$(extract_kube)'
#PROMPT="${user_host} ${current_dir} ${rvm_ruby}${git_branch}$PR_PROMPT " #PROMPT="${user_host} ${current_dir} ${rvm_ruby}${git_branch}$PR_PROMPT "
separator='${PR_YELLOW}::${PR_NO_COLOR}' separator='${PR_YELLOW}::${PR_NO_COLOR}'
tty | read tty_value tty | read tty_value
if [[ $tty_value == *pts* ]]; then # if in a tty if [[ $tty_value == *pts* ]]; then # if in a tty
PROMPT="$PR_ARROW_UP${PR_DATE} ${user_host}${separator}${PR_NO_COLOR}${current_dir}${rvm_ruby}${git_branch}${kube} PROMPT="$PR_ARROW_UP${PR_DATE} ${user_host}${separator}${PR_NO_COLOR}${current_dir} ${rvm_ruby}${git_branch}${PR_TEMP}
$PR_ARROW_DOWN$PR_PROMPT ${PR_NO_COLOR}" $PR_ARROW_DOWN$PR_PROMPT ${PR_NO_COLOR}"
return_code="%(?.%{$PR_GREEN%}%? ↵%{$PR_NO_COLOR%}.%{$PR_RED%}%? ↵%{$PR_NO_COLOR%})" return_code="%(?.%{$PR_GREEN%}%? ↵%{$PR_NO_COLOR%}.%{$PR_RED%}%? ↵%{$PR_NO_COLOR%})"
else else

View File

@ -0,0 +1,107 @@
# ZSH Theme - Preview: http://dl.dropbox.com/u/4109351/pics/gnzh-zsh-theme.png
# Based on bira theme
# load some modules
autoload -U colors zsh/terminfo # Used in the colour alias below
colors
setopt prompt_subst
# make some aliases for the colours: (coud use normal escap.seq's too)
for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
eval PR_$color='%{$fg[${(L)color}]%}'
done
eval PR_NO_COLOR="%{$terminfo[sgr0]%}"
eval PR_BOLD="%{$terminfo[bold]%}"
# Check the UID
if [[ $UID -ge 1000 ]]; then # normal user
# If ssh
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then
eval PR_USER='${PR_GREEN}%n${PR_NO_COLOR}'
eval PR_USER_OP='${PR_GREEN}%#${PR_NO_COLOR}'
local PR_ARROW_UP='${PR_GREEN}┌── ${PR_NO_COLOR}'
local PR_ARROW_DOWN='${PR_GREEN}└${PR_NO_COLOR}'
local PR_PROMPT='$PR_GREEN▷$PR_NO_COLOR'
else
eval PR_USER='${PR_MAGENTA}%n${PR_NO_COLOR}'
eval PR_USER_OP='${PR_BLUE}%#${PR_NO_COLOR}'
local PR_PROMPT='$PR_MAGENTA▷$PR_NO_COLOR'
local PR_ARROW_UP='$PR_MAGENTA┌── ${PR_NO_COLOR}'
local PR_ARROW_DOWN='$PR_MAGENTA└${PR_NO_COLOR}'
fi
elif [[ $UID -eq 0 ]]; then # root
eval PR_USER='${PR_RED}%n${PR_NO_COLOR}'
eval PR_USER_OP='${PR_RED}%#${PR_NO_COLOR}'
local PR_ARROW_UP='${PR_RED}┌── ${PR_NO_COLOR}'
local PR_ARROW_DOWN='${PR_RED}└${PR_NO_COLOR}'
local PR_PROMPT='$PR_RED▷$PR_NO_COLOR'
fi
# Check if we are on SSH or not
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then
eval PR_HOST='${PR_GREEN}%M${PR_NO_COLOR}' #SSH
else
eval PR_HOST='${PR_BLUE}%M${PR_NO_COLOR}' # no SSH
fi
# local return_code="%(?..%{$PR_RED%}%? ↵%{$PR_NO_COLOR%})"
truncated_pwd() {
local max_allowed_size=$(( `tput cols` - 30 ))
local path_name=$(print -rD $PWD)
local new_path_name=""
local truncated=0
while [ ${#path_name} -gt $max_allowed_size ]; do
truncated=1
new_path_name=`echo $path_name | cut -d '/' -f 2-`
if [[ "$new_path_name" == "$path_name" ]]; then
break
fi
path_name=$new_path_name
done
if [ $truncated -eq 1 ]; then
echo "~/.../"$path_name
else
echo $path_name
fi
}
local user_host='$PR_BOLD${PR_USER}$PR_BOLD'
local current_dir='$PR_BOLD%{$PR_BLUE%}$(truncated_pwd)$PR_NO_COLOR%}'
local rvm_ruby=''
if which rvm-prompt &> /dev/null; then
rvm_ruby='%{$PR_RED%}$(rvm-prompt i v g s)%{$PR_NO_COLOR%}'
else
if which rbenv &> /dev/null; then
rvm_ruby='%{$PR_RED%}$(rbenv version | sed -e "s/ (set.*$//")%{$PR_NO_COLOR%}'
fi
fi
local return_code=""
local git_branch='$(git_prompt_info)'
local PR_TEMP=""
command -v vcgencmd > /dev/null && PR_TEMP=' ${PR_GREEN}$(vcgencmd measure_temp | cut -d = -f 2)${PR_NO_COLOR}'
local PR_DATE='${PR_BOLD}${PR_MAGENTA}[%D{%H:%M}]${PR_NO_COLOR}'
#PROMPT="${user_host} ${current_dir} ${rvm_ruby}${git_branch}$PR_PROMPT "
separator='${PR_YELLOW}::${PR_NO_COLOR}'
tty | read tty_value
if [[ $tty_value == *pts* ]]; then # if in a tty
PROMPT="$PR_ARROW_UP${PR_DATE} ${user_host}${separator}${PR_NO_COLOR}${current_dir} ${rvm_ruby}${git_branch}${PR_TEMP}
$PR_ARROW_DOWN$PR_PROMPT ${PR_NO_COLOR}"
return_code="%(?.%{$PR_GREEN%}%? ↵%{$PR_NO_COLOR%}.%{$PR_RED%}%? ↵%{$PR_NO_COLOR%})"
else
eval PR_NO_COLOR="$PR_WHITE"
PROMPT="${user_host} ${current_dir} ${rvm_ruby} ${git_branch}> ${PR_NO_COLOR}"
return_code="%(?.%{$PR_GREEN%}%? <%{$PR_NO_COLOR%}.%{$PR_RED%}%? <%{$PR_NO_COLOR%})"
fi
RPS1=" ${return_code}"
ZSH_THEME_GIT_PROMPT_PREFIX="%{$PR_YELLOW%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$PR_NO_COLOR%}"
TMOUT=30
TRAPALRM() {
zle reset-prompt
}

View File

@ -1,84 +0,0 @@
if [ "$PRESERVE_SSH_CWD" = "true" ]; then
# Ensure the directory where we store terminal cwds and ssh exists
mkdir -p $HOME/.config/terminalscwd/
# Alias for cd: when we change directory, we write the new cwd in the file corresponding to the terminal uuid
cd() {
if [ -z "$1" ]; then
directory=$HOME
elif [[ "$1" == "-P" ]] && [ -z $2 ]; then
directory="$HOME"
option="$1"
elif [[ "$1" == "-P" ]]; then
directory="$2"
option="$1"
else
directory="$1"
fi
if [ -z "$option" ]; then
builtin cd "$directory"
else
builtin cd "$option" "$directory"
fi
pwd > $HOME/.config/terminalscwd/$TERMINAL_UUID.cwd
}
# Alias for ssh: when we ssh somewhere, we write it so that we know we should ssh when cloning terminal
ssh() {
echo $1 > $HOME/.config/terminalscwd/$TERMINAL_UUID.ssh
/usr/bin/ssh $@
rm $HOME/.config/terminalscwd/$TERMINAL_UUID.ssh
pwd > $HOME/.config/terminalscwd/$TERMINAL_UUID.cwd
}
# If terminal uuid does not exit
if [ -z $TERMINAL_UUID ]; then
# Generate one
export TERMINAL_UUID=$(uuidgen)
fi
# Copy state for new terminal
if [ ! -z $PARENT_TERMINAL ]; then
if [ -f $HOME/.config/terminalscwd/$PARENT_TERMINAL.cwd ]; then
cp $HOME/.config/terminalscwd/$PARENT_TERMINAL.cwd $HOME/.config/terminalscwd/$TERMINAL_UUID.cwd
fi
if [ -f $HOME/.config/terminalscwd/$PARENT_TERMINAL.ssh ]; then
cp $HOME/.config/terminalscwd/$PARENT_TERMINAL.ssh $HOME/.config/terminalscwd/$TERMINAL_UUID.ssh
fi
fi
# When we're done, delete the uuid files
preserve_ssh_cleanup() {
rm -rf $HOME/.config/terminalscwd/$TERMINAL_UUID.cwd
rm -rf $HOME/.config/terminalscwd/$TERMINAL_UUID.ssh
}
trap preserve_ssh_cleanup EXIT
# If there already is a file corresponding to the current uuid
if [ -f $HOME/.config/terminalscwd/$TERMINAL_UUID.cwd ]; then
# Go the the right directory
cd "$(cat $HOME/.config/terminalscwd/$TERMINAL_UUID.cwd)"
else
# Use our custom alias to go to home, and set the file cwd
cd
fi
# If we're running in an ssh session
if [ -f $HOME/.config/terminalscwd/$TERMINAL_UUID.ssh ]; then
# Run the ssh command, and exec shell in the end so the terminal doesn't exit at end of ssh
ssh $(cat $HOME/.config/terminalscwd/$TERMINAL_UUID.ssh)
fi
fi

3
zshrc
View File

@ -21,7 +21,7 @@ DISABLE_AUTO_UPDATE="true"
ZSH=$HOME/.config/ohmyzsh ZSH=$HOME/.config/ohmyzsh
ZSH_CUSTOM=$HOME/.config/dotfiles/zsh/ohmyzsh ZSH_CUSTOM=$HOME/.config/dotfiles/zsh/ohmyzsh
ZSH_THEME="tforgione" ZSH_THEME="laptop"
if [ -f $DOTFILES/zsh/env.zsh ]; then if [ -f $DOTFILES/zsh/env.zsh ]; then
source $DOTFILES/zsh/env.zsh source $DOTFILES/zsh/env.zsh
@ -31,7 +31,6 @@ source $DOTFILES/zsh/config.zsh
source $DOTFILES/zsh/path.zsh source $DOTFILES/zsh/path.zsh
source $DOTFILES/zsh/exports.zsh source $DOTFILES/zsh/exports.zsh
source $DOTFILES/zsh/aliases.zsh source $DOTFILES/zsh/aliases.zsh
source $DOTFILES/zsh/preserve-cwd-ssh.zsh
if [ -f $DOTFILES/zsh/extraconfig.zsh ]; then if [ -f $DOTFILES/zsh/extraconfig.zsh ]; then
source $DOTFILES/zsh/extraconfig.zsh source $DOTFILES/zsh/extraconfig.zsh