137 Commits
master ... main

Author SHA1 Message Date
9181dc630d Add plot script for easily plotting curves 2025-12-16 14:18:20 +01:00
f75b2469c4 gcub to build 2025-10-27 21:45:05 +01:00
016655e347 Remove hypr 2025-09-15 10:54:17 +02:00
b9f1cc0e52 Start hyprlock in background 2025-07-15 18:01:25 +02:00
75d932d03f Remove trailing spaces 2025-07-12 17:58:09 +02:00
681758e424 Remove init.vim, moved to init.lua 2025-07-12 17:53:03 +02:00
c905f725df Few fixes 2025-07-09 14:20:40 +02:00
c901996ca0 Lock 2025-07-09 14:20:11 +02:00
a0ade97e52 Better hypridle conf 2025-06-20 21:15:08 +02:00
ea0d486f98 Disable popups 2025-05-19 08:37:18 +02:00
60d15e5c3d Always show sign column 2025-05-14 17:16:30 +02:00
72dfccac98 Cooler signs, java 2025-05-14 16:56:29 +02:00
8c34c648b1 Add nbsp 2025-05-14 10:00:30 +02:00
0699d03c40 Private window shortcut 2025-05-13 15:10:38 +02:00
4b91e6511a Add social shortcut, always useful 2025-05-13 09:53:32 +02:00
d8f415b1f3 Fix listchars for tab 2025-05-13 09:37:57 +02:00
6cad3a7e47 Add F12 for mars 2025-05-12 14:40:13 +02:00
897c3a7057 Easier controls with nvim 2025-05-08 17:20:06 +02:00
f5c758741e Social before mail 2025-05-08 16:03:24 +02:00
7299d9086f Better special workspaces 2025-05-08 15:40:58 +02:00
d01e20a89a Move nvim.lua 2025-05-06 17:23:16 +02:00
8255f372b0 Fix vim-airline 2025-05-06 16:01:44 +02:00
3d39274138 Clearer waybar 2025-05-06 15:37:59 +02:00
1d654ef9fc Lua config for nvim 2025-05-05 15:05:59 +02:00
fedcf15010 Better 2025-05-05 13:11:36 +02:00
61558ca515 No longer rely on cargo-update 2025-05-03 16:17:11 +02:00
6c9f0b1d0a Add example monitors file 2025-05-03 14:31:28 +02:00
c1ce77ed6c Thunderbird and alacritty on Q and S 2025-05-02 21:37:44 +02:00
8a1f96748b Adds pycodestyle 2025-05-02 16:24:32 +02:00
8968a136d3 Cleaning 2025-05-02 16:24:18 +02:00
755a5ac611 Clean, thunderbird in magic workspace 2025-05-02 16:17:48 +02:00
513521c2fd Thunderbird 2025-05-02 15:21:58 +02:00
7c7ee116a2 Smoother brightness 2025-05-01 23:54:09 +02:00
10f444b088 Better hyprland 2025-04-30 10:12:21 +02:00
d2383ed1b9 Support for desktop 2025-04-16 09:52:35 +02:00
75eea377c6 Fix bug in battery script 2025-04-15 23:06:41 +02:00
3f8d4a32f9 Adds battery 2025-04-15 22:50:20 +02:00
3456c5ec2f Fix stat script 2025-04-15 13:11:49 +02:00
4b76454bcd Add support for clone terminal in hyprland 2025-04-14 22:52:17 +02:00
807fe1d479 psutil 2025-04-14 22:51:33 +02:00
f058d240bd Hyprscript in python 2025-04-14 22:37:43 +02:00
44b91c735b Better exec-once 2025-04-13 21:24:13 +02:00
1573c46c6b Laptop 2025-04-13 21:19:31 +02:00
1348a068f8 Waybar 2025-04-13 21:07:23 +02:00
7041c2abd8 Update 2025-04-13 21:05:41 +02:00
85b5e29021 Update hypr 2025-04-09 21:11:14 +02:00
125d671421 Cooler waybar 2025-04-07 14:13:09 +02:00
098905fbd8 Even better 2025-04-06 00:10:35 +02:00
72b6a76d9a Working on hypr 2025-04-06 00:01:51 +02:00
6304e6ff95 Hyprland 2025-04-05 19:24:35 +02:00
f52ce270cd html tera 2025-03-02 11:20:46 +01:00
facaccc381 preserve-cwd 2024-12-17 16:41:46 +01:00
d03b5e7e25 Skip git prompt 2024-11-22 22:27:06 +01:00
27753a09a8 Update alacritty config 2024-10-28 21:22:16 +01:00
f3ef0eb885 Clean theme 2024-10-19 02:51:02 +02:00
025c1b5101 Clean 2024-10-19 02:47:04 +02:00
110164b71e Adds postscan 2024-09-27 15:32:59 +02:00
9de770c4bc Support j 2024-09-07 21:06:30 +02:00
f7b4e36cc3 Flask default port 2024-08-23 09:14:20 +02:00
8800125c06 Opacity 2024-08-12 12:32:34 +02:00
8af310d0a2 Fix bug on cd "" 2024-07-31 10:01:49 +02:00
6ba78c412b No crash on space 2024-07-24 11:32:23 +02:00
c3a3d16b9f quote 2024-07-12 09:58:27 +02:00
bd0cb3c6c2 Remove echo 2024-07-03 16:47:51 +02:00
1facb0079a Prevent bug when PARENT_TERMINAL is empty 2024-06-24 14:09:50 +02:00
feebba4e12 Working 2024-06-23 16:31:17 +02:00
9241ff0c0d Opacity 2024-06-22 17:43:45 +02:00
a02648109d Adds typescript 2024-06-22 13:24:50 +02:00
9e8c7bed3d Numbat alias 2024-06-22 00:28:02 +02:00
8ba58d1475 No need for notify send 2024-06-21 22:23:53 +02:00
6e63a19f04 Fix bugs 2024-06-21 18:40:01 +02:00
90b5a8ad61 IT FUCKING WORKS 2024-06-21 18:16:54 +02:00
62212e6b83 Better 2024-06-21 18:06:29 +02:00
b45049ac27 Clean 2024-06-21 17:52:13 +02:00
3ff0c82b3f Fix bug 2024-06-21 17:32:39 +02:00
e2559a9f85 Preserve ssh 2024-06-21 17:28:36 +02:00
74152e04fc No textwidth 2024-06-04 23:12:01 +02:00
8b504986b1 Fix 2024-05-31 15:56:54 +02:00
261d833823 vdc 2024-05-31 15:55:58 +02:00
405838d4f8 Auto python env 2024-05-28 14:30:34 +02:00
30cf64adc7 Adds pylsp 2024-05-28 13:40:25 +02:00
8373caab15 Disable async prompt which breaks git 2024-05-21 10:33:41 +02:00
44fe03b9de Struggling 2024-05-20 10:36:29 +02:00
f861be910a Add nushell update 2024-03-14 19:04:36 +01:00
c6bfe3da4e Update alacritty 2024-02-27 15:20:50 +01:00
8c400657a5 Better copy 2024-02-07 15:42:32 +01:00
44007e11d1 Colored ip 2024-01-09 11:04:55 +01:00
e87307f2be Adds polymny config to path 2023-11-13 11:50:23 +01:00
7b5b9be2f6 Adds dcr 2023-10-27 14:25:34 +02:00
a98d1a57e2 Allow custom text width 2023-10-11 10:20:08 +02:00
e9efb02aa0 Update with paru 2023-09-26 10:13:40 +02:00
bec76bff3b Laptop hostname for root 2023-08-29 09:21:24 +02:00
886d381269 Fix typo 2023-08-23 16:25:48 +02:00
4a337d1e9b Update now updates snap packages 2023-08-23 16:25:03 +02:00
3663b570ce Adds plugin for easy sudo write 2023-05-24 13:10:33 +02:00
fe37aaac19 Allow for no kubeconfig 2023-04-22 11:08:04 +02:00
969f042778 Typst color 2023-04-04 16:14:19 +02:00
a6da6880ba Better aliases 2023-03-13 10:50:09 +01:00
1e22523291 docker compose build && push 2023-03-08 15:12:21 +01:00
3c065b7f61 Fix issue with new make 2023-03-06 09:40:52 +01:00
82d919d9d6 Show hostname and user when updating 2023-02-24 12:05:10 +01:00
fe5ad9f4af Better output 2023-02-24 11:29:17 +01:00
f2c4618f5b Missing pipe 2023-02-24 11:27:13 +01:00
b74fdc59fd Prompt for password 2023-02-24 11:23:32 +01:00
43f32ee7ff Cleaner sudo 2023-02-24 11:20:40 +01:00
f8352b9f02 Fix bug 2023-02-24 11:00:48 +01:00
75bd35b942 Update sudo 2023-02-24 11:00:06 +01:00
61317b5483 Removed temp 2023-02-20 15:11:19 +01:00
008fec04a7 Kctl 2023-02-17 15:37:29 +01:00
c8f0d4d729 Better k9s alias 2023-02-17 15:34:43 +01:00
a860c85827 Bold kube config 2023-02-17 11:10:15 +01:00
bcc4ffa91a Show kubeconfig in prompt 2023-02-17 09:50:47 +01:00
a9c33ba704 Adds support for extra plugins 2023-02-16 14:28:41 +01:00
aa899f592e dcd 2023-02-03 14:15:03 +01:00
fd6138e96f docker k8s 2023-02-02 18:11:52 +01:00
44f739e9db Adds alacritty config 2023-01-01 15:58:29 +01:00
af3b58f9d9 Update colors 2022-12-07 14:31:02 +01:00
9755ce389a Fix bashrc 2022-12-06 15:23:29 +01:00
8d13ca672e Adds hostname in bashrc 2022-12-06 15:22:57 +01:00
db37bf1d54 u=update 2022-07-02 14:32:37 +02:00
f2ddfa9590 Adds path 2022-07-02 14:32:05 +02:00
e767ecead0 Arrows 2022-07-02 13:38:53 +02:00
9a6bc3197e Update bashrc 2022-07-02 13:37:27 +02:00
b982ecb5a5 Merge branch 'master' into dev 2022-05-17 16:25:42 +02:00
7f937a2902 Merge branch 'master' into dev 2022-05-08 19:21:05 +02:00
45210b6c8f Adds cdw alias 2022-04-19 11:25:37 +02:00
b35bc69b88 tw=120 2022-02-17 16:18:13 +01:00
ec14c1c073 Easy mount/umount luks encrypted partitions 2022-02-16 16:09:13 +01:00
611ab5791f Adds support for pass 2021-10-18 16:07:44 +02:00
2e567f0a65 Adds reporttime 2021-10-18 15:04:03 +02:00
409fb9bb4b Show online hours and minutes, refresh every 30 s 2021-10-18 14:55:35 +02:00
509ed9956f Adds time to prompt 2021-10-18 14:49:37 +02:00
ee50dfd355 Merge branch 'dev' of gitea.tforgione.fr:tforgione/dotfiles into dev 2021-10-11 14:10:59 +02:00
ef3986e99f Adds :Format 2021-10-11 14:10:52 +02:00
30396f438a Adds :Format 2021-10-11 14:07:45 +02:00
Nicolas Bertrand
b665d16bc5 Merge branch 'master' into dev 2021-07-02 15:38:56 +02:00
e2773fcf6c Migrate to coc 2021-06-26 22:16:10 +02:00
24 changed files with 1580 additions and 329 deletions

1
.gitignore vendored
View File

@@ -1,5 +1,6 @@
zsh/extraconfig.zsh zsh/extraconfig.zsh
zsh/env.zsh zsh/env.zsh
bash/extraconfig.bash bash/extraconfig.bash
nvim/lua/extraconfig.lua
.data .data
bin-extra bin-extra

649
alacritty.toml Normal file
View File

@@ -0,0 +1,649 @@
[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 = 11.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

10
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[34m\w\033[0m\n${color}╰▶ \033[0m" PS1="${color}── \u\033[33m@\033[32m\H\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
@@ -88,6 +88,12 @@ alias ll='ls -alF'
alias la='ls -A' alias la='ls -A'
alias l='ls -CF' alias l='ls -CF'
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
export PATH=~/.config/dotfiles/bin/:$PATH
alias u=update
# Add an "alert" alias for long running commands. Use like so: # Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert # sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

19
bin/clone-terminal Executable file
View File

@@ -0,0 +1,19 @@
#!/usr/bin/env bash
# Extract parent window uuid
# On hyprland
hyprctl monitors > /dev/null 2>&1
if [ $? -eq 0 ]; then
WM_NAME=$(hyprctl activewindow | grep title | cut -d ':' -f 2 | tr -d ' ')
else
WINDOW_ID=$(xdotool getactivewindow)
WM_NAME=$(xprop -id $WINDOW_ID WM_NAME | cut -d '"' -f 2)
fi
# Generate new uuid for new terminal
uuid=$(uuidgen)
alacritty --title $uuid -e sh -c "TERMINAL_UUID=$uuid PARENT_TERMINAL=$WM_NAME exec $SHELL"

0
bin/compress-pdf Normal file → Executable file
View File

View File

@@ -4,5 +4,10 @@ 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

19
bin/lmount Executable file
View File

@@ -0,0 +1,19 @@
#!/usr/bin/env bash
if [ "$#" -ne 2 ]; then
echo -e >&2 "\x1B[1;31merror:\x1B[0;1m this program expects two arguments\x1B[0m"
echo -e >&2 "\x1B[1;33musage:\x1B[0;1m sudo lmount <drive> <mount point>"
exit 1
fi
if [ "$USER" != "root" ]; then
echo -e >&2 "\x1B[1;31merror:\x1B[0;1m this program must be run as root\x1B[0m"
echo -e >&2 "\x1B[1;33musage:\x1B[0;1m sudo lmount <drive> <mount point>"
exit 1
fi
# Mounts an encrypt external drive to a specified mount point
cryptsetup luksOpen $1 external
mount /dev/mapper/external $2

19
bin/lumount Executable file
View File

@@ -0,0 +1,19 @@
#!/usr/bin/env bash
if [ "$#" -ne 1 ]; then
echo -e >&2 "\x1B[1;31merror:\x1B[0;1m this program expects one argument\x1B[0m"
echo -e >&2 "\x1B[1;33musage:\x1B[0;1m sudo lumount <mount point>"
exit 1
fi
if [ "$USER" != "root" ]; then
echo -e >&2 "\x1B[1;31merror:\x1B[0;1m this program must be run as root\x1B[0m"
echo -e >&2 "\x1B[1;33musage:\x1B[0;1m sudo lumount <mount point>"
exit 1
fi
# Mounts an encrypt external drive to a specified mount point
umount $1
cryptsetup luksClose external

4
bin/new-terminal Executable file
View File

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

50
bin/plot Executable file
View File

@@ -0,0 +1,50 @@
#!/usr/bin/env python
import sys
import matplotlib.pyplot as plt
def parse_input(lines):
x_vals = []
y_vals = []
for line in lines:
line = line.strip()
if not line:
continue
parts = line.replace(',', ' ').split()
if len(parts) == 1:
y_vals.append(float(parts[0]))
x_vals.append(len(x_vals))
elif len(parts) >= 2:
x_vals.append(float(parts[0]))
y_vals.append(float(parts[1]))
else:
continue
return x_vals, y_vals
def parse_file(file):
with open(file, "r") as f:
lines = f.readlines()
return parse_input(lines)
def parse_stdin():
lines = sys.stdin.readlines()
return parse_input(lines)
def plot(x_vals, y_vals):
plt.plot(x_vals, y_vals)
plt.grid(True)
plt.show()
if __name__ == "__main__":
if len(sys.argv) == 2:
x_vals, y_vals = parse_file(sys.argv[1])
else:
x_vals, y_vals = parse_stdin()
plot(x_vals, y_vals)

9
bin/post-scan Executable file
View File

@@ -0,0 +1,9 @@
#!/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"

3
bin/quote Executable file
View File

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

262
bin/server Executable file
View File

@@ -0,0 +1,262 @@
#! /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,8 +162,13 @@ 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"
sudo true read -sep "Password: " password
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
@@ -175,33 +180,48 @@ 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
sudo apt update -y echo $password | sudo -Sp "" apt update -y
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
sudo apt upgrade -y echo $password | sudo -Sp "" apt upgrade -y
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
sudo apt autoremove -y echo $password | sudo -Sp "" 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
sudo pacman -Syu --noconfirm echo $password | sudo -Sp "" 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
sudo dnf upgrade echo $password | sudo -Sp "" dnf upgrade
fi fi
local seconds=$((`date +%s` - $start)) local seconds=$((`date +%s` - $start))
@@ -224,21 +244,31 @@ update-rust() {
echo -e "\033[32;1m=== Updating rust ===\033[0m" echo -e "\033[32;1m=== Updating rust ===\033[0m"
rustup update rustup update
cargo install-update --help > /dev/null 2>&1
# Program to update cargo programs is not installed
if [ $? -ne 0 ]; then
echo -e "\033[33;1m=== To allow updating rust packages, run \`cargo install cargo-update\`===\033[0m"
fi
# If the user has no root, and if he doesn't have openssl, we won't install cargo update.
# Before running cargo update, we check again that it is installed.
cargo install-update --help > /dev/null 2>&1
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo -e "\033[32;1m=== Updating rust packages ===\033[0m" echo -e "\033[32;1m=== Updating rust packages ===\033[0m"
cargo install-update -ag
IFS=$'\n'
for line in $(cargo install --list); do
if [[ $line == " "* ]] || [[ $line == "\t"* ]]; then
continue
fi
if [[ $line == *"("* ]]; then
crate=$(echo $line | cut -d ' ' -f 1)
full_repo=$(echo $line | cut -d '(' -f 2 | cut -d ')' -f 1)
repo=$(echo $full_repo | cut -d '#' -f 1)
current_commit=$(echo $full_repo | cut -d '#' -f 2)
latest_commit=$(git ls-remote $repo | head -n 1 | cut -d $'\t' -f 1)
if [[ $latest_commit == ${current_commit}* ]]; then
echo -e " \x1b[32;1mIgnored\x1b[0m package \`$crate\` is already installed"
else
cargo install --git $repo
fi
else
cargo install $(echo $line | cut -d ' ' -f 1)
fi
done
fi fi
local seconds=$((`date +%s` - $start)) local seconds=$((`date +%s` - $start))
@@ -348,6 +378,11 @@ 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))
@@ -463,6 +498,12 @@ 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=$?
@@ -471,7 +512,7 @@ main() {
fi fi
local start=`date +%s` local start=`date +%s`
echo -e "\033[32;1m=== Starting full update ===\033[0m" echo -e "\033[32;1m=== Starting full update of $(whoami)@$(hostname) ===\033[0m"
# Update the system # Update the system
_check_running _check_running

187
init.vim
View File

@@ -1,187 +0,0 @@
" Pas de compatibilité a VI !
set nocompatible
" PLUGNIS ###########################################################{{{
call plug#begin()
if has('nvim')
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
else
Plug 'Shougo/deoplete.nvim'
Plug 'roxma/nvim-yarp'
Plug 'roxma/vim-hug-neovim-rpc'
endif
" General plugins
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'https://gitea.tforgione.fr/tforgione/peach.git'
Plug 'scrooloose/nerdtree'
Plug 'w0rp/ale'
Plug 'tpope/vim-abolish'
" Language specific plugins
" C++
Plug 'Shougo/deoplete-clangx'
" Rust
Plug 'rust-lang/rust.vim'
Plug 'racer-rust/vim-racer'
Plug 'sebastianmarkow/deoplete-rust'
" Elm
Plug 'ElmCast/elm-vim'
Plug 'antew/vim-elm-language-server'
" Toml
Plug 'cespare/vim-toml'
" Pug
Plug 'digitaltoad/vim-pug'
" Spandex
Plug 'rust-spandex/spandex.vim'
call plug#end()
" Line numbers and syntaxic coloration
" set nu
" syntax on
" Highlight bad spaces (not working...)
" }}}
" INDENTATION #######################################################{{{
set expandtab
set tabstop=4
set shiftwidth=4
set autoindent
" }}}
" UI CONFIG #########################################################{{{
set number
if $NVIM_LINE_NUMBER == 'rnu'
set rnu
endif
set showcmd
set wildmenu
set lazyredraw
set encoding=utf8
set clipboard=unnamedplus
set updatecount=50
set mouse=a
set guicursor=
" set ttymouse=sgr
" Espaces insécables grrrr
set list
set listchars=tab:,trail,extends:>,precedes:<,nbsp
" Remove trailing spaces
autocmd BufWritePre * :%s/\s\+$//e
" Compile on F12
if executable('mars')
nnoremap <silent><F12> :wa \| !mars -p %:p<CR>
inoremap <silent><F12> <C-O>:wa \|!mars -p %:p<CR>
vnoremap <silent><F12> :wa \|!mars -p %:p<CR>
elseif executable('make')
nnoremap <silent><F12> :wa \| !make -p %:p<CR>
inoremap <silent><F12> <C-O>:wa \|!make -p %:p<CR>
vnoremap <silent><F12> :wa \|!make -p %:p<CR>
endif
" Escape on F1
map <F1> <Esc>
imap <F1> <Esc>
" vim airline config
set laststatus=2
let g:airline_powerline_fonts = 1
let g:airline#extensions#branch#format = 1
let g:airline_theme='dark'
set t_Co=256
" Set textwidth for latex
" autocmd FileType tex set textwidth=79
" }}}
" COLOR #############################################################{{{
set background=dark
syntax enable
try
colorscheme peach
catch
endtry
highlight BadWhitespace ctermbg=red guibg=red
match BadWhitespace / \| \+\t/
" }}}
" SEARCHING #########################################################{{{
set title
set showmatch
set hlsearch
set noincsearch
" }}}
" NERDTREE ##########################################################{{{
let NERDTreeIgnore = ['\.pyc$','__pycache__']
set shell=zsh
let g:NERDTreeIndicatorMapCustom = {
\ "Modified" : "✹",
\ "Staged" : "✚",
\ "Untracked" : "✭",
\ "Renamed" : "➜",
\ "Unmerged" : "═",
\ "Deleted" : "✖",
\ "Dirty" : "✗",
\ "Clean" : "✔︎",
\ "Unknown" : "?"
\ }
let g:WebDevIconsNerdTreeGitPluginForceVAlign = 1
" }}}
" BACKUPS ###########################################################{{{
set dir=$HOME/.nvim/swp//
autocmd BufWritePost * :silent execute ':w! ' ."$HOME/.nvim/backups/" . substitute(escape(substitute(expand('%:p'), "/", "%", "g"), "%"), ' ', '\\ ', 'g')
if exists('+undofile')
set undofile
set undolevels=1000
set undoreload=10000
if exists('+undodir')
set undodir=$HOME/.nvim/undo
endif
endif
" }}}
" MARKDOWN PREVIEW ##################################################{{{
let g:markdown_composer_browser = 'firefox'
let g:instant_markdown_autostart = 0
" }}}
" CODE COMPLETION ###################################################{{{
" Use deoplete
let g:deoplete#enable_at_startup = 1
autocmd FileType elm call deoplete#custom#buffer_option('auto_complete', v:false)
" 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>"
" }}}
" CUSTOM THINGS DEPENDING ON ENV ####################################{{{
let g:rustfmt_autosave = 1
let g:ale_linters = {}
let g:ale_c_parse_compile_commands=1
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

234
nvim/init.lua Normal file
View File

@@ -0,0 +1,234 @@
local Plug = vim.fn['plug#']
-- PLUGINS
vim.call('plug#begin')
-- General plugins
Plug('vim-airline/vim-airline')
Plug('vim-airline/vim-airline-themes')
Plug('tpope/vim-abolish')
Plug('lambdalisue/suda.vim')
Plug('https://gitea.tforgione.fr/tforgione/peach.git')
-- Language specific plugins
Plug('rust-lang/rust.vim')
Plug('ElmCast/elm-vim')
Plug('cespare/vim-toml')
Plug('kaarmu/typst.vim')
vim.call('plug#end')
-- INDENTATION
vim.opt.expandtab = true
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.autoindent = true
vim.opt.textwidth = 120
-- UI
vim.opt.number = true
vim.opt.showcmd = true
vim.opt.wildmenu = true
vim.opt.lazyredraw = true
vim.opt.encoding = 'utf8'
vim.opt.clipboard = 'unnamedplus'
vim.opt.updatecount = 50
vim.opt.mouse = 'a'
vim.opt.guicursor = nil
vim.opt.updatetime = 300
vim.opt.list = true
vim.opt.listchars = { trail = '·', tab = ' ', nbsp = '¬' }
-- Auto remove trailing spaces
vim.api.nvim_create_autocmd({'BufWritePre'}, {
pattern = {'*'},
callback = function(ev)
vim.cmd('%s/\\s\\+$//e')
end
})
-- COLOR --
pcall(vim.cmd.colorscheme, 'peach')
vim.cmd.highlight({'BadWhitespace', 'ctermbg=red', 'guibg=red'})
vim.g.airline_powerline_fonts = 1
vim.g.airline_theme = 'dark'
-- SEARCHING
vim.opt.title = true
vim.opt.showmatch = true
vim.opt.hlsearch = true
vim.opt.incsearch = true
-- BACKUPS
vim.opt.undofile = true
vim.opt.undolevels = 1000
vim.opt.undoreload = 10000
vim.opt.undodir = os.getenv('HOME') .. '/.nvim/undo'
vim.g.backup_dir = os.getenv('HOME') .. '/.nvim/backups'
vim.api.nvim_create_autocmd({'BufWritePost'}, {
pattern = {'*'},
callback = function(ev)
local backup_path = vim.g.backup_dir .. '/' .. vim.api.nvim_buf_get_name(0):gsub('/', '\\%%')
vim.cmd('silent w! ' .. backup_path)
end
})
-- LSPs
-- Config
vim.opt.completeopt = { 'menuone', 'noselect' }
vim.opt.signcolumn = 'yes'
vim.diagnostic.config {
signs = {
text = {
[vim.diagnostic.severity.ERROR] = '',
[vim.diagnostic.severity.WARN] = '',
[vim.diagnostic.severity.HINT] = '',
[vim.diagnostic.severity.INFO] = '',
},
color = {},
},
float = {
header = false,
border = 'rounded',
}
}
-- Show diagnostics on hover
vim.api.nvim_create_autocmd({'CursorHold'}, {
pattern = {'*'},
callback = function(ev)
vim.diagnostic.open_float()
end
})
-- Shortcuts for mapping shortcuts
local map = function(type, key, value)
vim.api.nvim_buf_set_keymap(0, type, key, value, { noremap = true, silent = true });
end
-- Compile on F12
vim.keymap.set('n', '<F12>', function(e)
vim.cmd('wa')
vim.cmd('!mars -p %:p')
end, { silent = true, expr = true })
vim.keymap.set('i', '<F12>', function(e)
vim.cmd('wa')
vim.cmd('!mars -p %:p')
end, { silent = true, expr = true })
vim.keymap.set('i', '<F12>', function(e)
vim.cmd('wa')
vim.cmd('!mars -p %:p')
end, { silent = true, expr = true })
-- Autocomplete with tab
vim.keymap.set('v', '<Tab>', function()
if vim.fn.pumvisible() == 1 then
return '<C-n>'
else
return '<Tab>'
end
end, { silent = true, expr = true })
-- Disable focus on infos
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(
vim.lsp.handlers.hover, { focusable = false }
)
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
-- Enable auto-completion. Note: Use CTRL-Y to select an item.
if client:supports_method('textDocument/completion') then
-- Trigger autocompletion on EVERY keypress. May be slow!
local chars = {}; for i = 32, 126 do table.insert(chars, string.char(i)) end
client.server_capabilities.completionProvider.triggerCharacters = chars
vim.lsp.completion.enable(true, client.id, args.buf, {
autotrigger = true,
convert = function(item)
return { abbr = item.label:gsub('%b()', '') }
end,
})
end
-- Auto-format on save.
if not client:supports_method('textDocument/willSaveWaitUntil') and client:supports_method('textDocument/formatting') then
vim.api.nvim_create_autocmd('BufWritePre', {
group = vim.api.nvim_create_augroup('my.lsp', {clear=false}),
buffer = args.buf,
callback = function()
vim.lsp.buf.format({ bufnr = args.buf, id = client.id, timeout_ms = 1000 })
end,
})
end
-- Don't use lsp to manage colorscheme
client.server_capabilities.semanticTokensProvider = nil
-- Some nice shortcuts
map('n','gD','<cmd>lua vim.lsp.buf.declaration()<CR>')
map('n','gd','<cmd>lua vim.lsp.buf.definition()<CR>')
map('n','K','<cmd>lua vim.lsp.buf.hover()<CR>')
map('n','gr','<cmd>lua vim.lsp.buf.references()<CR>')
map('n','gs','<cmd>lua vim.lsp.buf.signature_help()<CR>')
map('n','gi','<cmd>lua vim.lsp.buf.implementation()<CR>')
map('n','gt','<cmd>lua vim.lsp.buf.type_definition()<CR>')
map('n','<leader>gw','<cmd>lua vim.lsp.buf.document_symbol()<CR>')
map('n','<leader>gW','<cmd>lua vim.lsp.buf.workspace_symbol()<CR>')
map('n','<leader>ah','<cmd>lua vim.lsp.buf.hover()<CR>')
map('n','<leader>af','<cmd>lua vim.lsp.buf.code_action()<CR>')
map('n','<leader>ee','<cmd>lua vim.lsp.util.show_line_diagnostics()<CR>')
map('n','<leader>rn','<cmd>lua vim.lsp.buf.rename()<CR>')
map('n','<leader>=', '<cmd>lua vim.lsp.buf.formatting()<CR>')
map('n','<leader>ai','<cmd>lua vim.lsp.buf.incoming_calls()<CR>')
map('n','<leader>ao','<cmd>lua vim.lsp.buf.outgoing_calls()<CR>')
end,
});
-- Rust
vim.lsp.config['rust'] = {
cmd = { 'rustup', 'run', 'stable', 'rust-analyzer' },
filetypes = { 'rust' },
root_markers = { 'Cargo.toml' },
}
vim.lsp.enable('rust')
-- Elm
vim.lsp.config['elm'] = {
cmd = { 'elm-language-server' },
filetypes = { 'elm' },
root_markers = { 'elm.json' },
}
vim.lsp.enable('elm')
-- Python
vim.lsp.config['python'] = {
cmd = { 'pylsp' },
filetypes = { 'python' },
}
vim.lsp.enable('python')
-- Java
vim.lsp.config['java'] = {
cmd = { 'jdtls', '--jvm-arg=-javaagent:/usr/share/java/lombok/lombok.jar' },
filetypes = { 'java' },
root_markers = { 'Makefile' },
}
vim.lsp.enable('java')
-- Import custom config
require("extraconfig")

2
pycodestyle Normal file
View File

@@ -0,0 +1,2 @@
[pycodestyle]
max-line-length = 160

View File

@@ -2,6 +2,7 @@
# 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"
@@ -26,6 +27,9 @@ 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
@@ -51,11 +55,26 @@ alias bat="bat --paging=never"
alias rg="rg -uu" alias rg="rg -uu"
# Aliases for pass
alias p="pass"
alias pc="pass --clip"
# mkdir && cd # mkdir && cd
mkcd() { mkcd() {
mkdir $1 && cd $1 mkdir $1 && cd $1
} }
# which && cd
cdw() {
f=`which $1`
if [ $? -eq 0 ]; then
cd `dirname $f`
fi
}
# Numbat shortcut
alias nb=numbat
# Initialize thefuck # Initialize thefuck
command -v thefuck > /dev/null 2>&1 command -v thefuck > /dev/null 2>&1
@@ -64,6 +83,86 @@ 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 --remove-orphans"
alias dcub="docker-compose up -d --build --remove-orphans"
alias dcd="docker-compose down"
alias dcr="docker-compose down && docker-compose up -d --remove-orphans"
alias dcrb="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) plugins=(git myjump pass $ZSH_EXTRA_PLUGINS)
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,4 +26,14 @@ 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

View File

@@ -1,100 +0,0 @@
# 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}'
#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${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%}"

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@%M${PR_NO_COLOR}' eval PR_USER='${PR_GREEN}%n${PR_YELLOW}@${PR_GREEN}%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@%M${PR_NO_COLOR}' eval PR_USER='${PR_MAGENTA}%n${PR_YELLOW}@${PR_GREEN}%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_NO_COLOR}' eval PR_USER='${PR_RED}%n${PR_YELLOW}@${PR_GREEN}%M${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,20 +76,41 @@ else
fi fi
fi fi
git_prompt_info_no_space() {
current="$PWD"
while [ "$PWD" != "/" ] && [ ! -d "$PWD/.git" ]; do
builtin cd ..
done
if [ -f "$PWD/.gitskipprompt" ]; then
return
fi
builtin cd "$current"
local info=$(git_prompt_info)
if [ ! -z $info ]; then
echo " $info"
fi
}
local return_code="" local return_code=""
local git_branch='$(git_prompt_info)' local git_branch='$(git_prompt_info_no_space)'
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}${PR_TEMP} PROMPT="$PR_ARROW_UP${PR_DATE} ${user_host}${separator}${PR_NO_COLOR}${current_dir}${rvm_ruby}${git_branch}${kube}
$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

84
zsh/preserve-cwd-ssh.zsh Normal file
View File

@@ -0,0 +1,84 @@
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="laptop" ZSH_THEME="tforgione"
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,6 +31,7 @@ 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