summaryrefslogtreecommitdiff
path: root/artix/home
diff options
context:
space:
mode:
Diffstat (limited to 'artix/home')
-rw-r--r--artix/home/.config/alacritty/alacritty.toml31
-rw-r--r--artix/home/.config/cava/config26
-rw-r--r--artix/home/.config/dunst/dunstrc21
-rw-r--r--artix/home/.config/ghostty/config44
-rw-r--r--artix/home/.config/git/config11
-rw-r--r--artix/home/.config/helix/config.toml26
-rw-r--r--artix/home/.config/hypr/hyprland.conf182
-rwxr-xr-xartix/home/.config/hypr/xdg-portal-hyprland13
-rw-r--r--artix/home/.config/kitty/kitty.conf40
-rw-r--r--artix/home/.config/nvim/init.lua254
-rw-r--r--artix/home/.config/rofi/config.rasi27
-rw-r--r--artix/home/.config/rofi/tokyonight.rasi158
-rw-r--r--artix/home/.config/user-dirs.dirs8
-rw-r--r--artix/home/.config/waybar/config.jsonc90
-rw-r--r--artix/home/.config/waybar/style.css94
-rw-r--r--artix/home/.config/zathura/zathurarc11
-rw-r--r--artix/home/.config/zsh/.zprofile3
-rw-r--r--artix/home/.config/zsh/.zshrc41
-rw-r--r--artix/home/.editorconfig8
-rwxr-xr-xartix/home/.local/bin/camera3
-rwxr-xr-xartix/home/.local/bin/dirtymem2
-rwxr-xr-xartix/home/.local/bin/dlm3
-rwxr-xr-xartix/home/.local/bin/edit10
-rw-r--r--artix/home/.local/bin/exestub.sh19
-rwxr-xr-xartix/home/.local/bin/gitlc20
-rwxr-xr-xartix/home/.local/bin/gitzero18
-rwxr-xr-xartix/home/.local/bin/helper247
-rwxr-xr-xartix/home/.local/bin/jar2exe8
-rwxr-xr-xartix/home/.local/bin/javasrc3
-rw-r--r--artix/home/.local/bin/march.sh135
-rwxr-xr-xartix/home/.local/bin/spawn-alacritty-cwd31
-rw-r--r--artix/home/.local/share/dox/quickconfig17
-rw-r--r--artix/home/.zshenv20
33 files changed, 1624 insertions, 0 deletions
diff --git a/artix/home/.config/alacritty/alacritty.toml b/artix/home/.config/alacritty/alacritty.toml
new file mode 100644
index 0000000..bd8e7ab
--- /dev/null
+++ b/artix/home/.config/alacritty/alacritty.toml
@@ -0,0 +1,31 @@
+[window]
+padding = { x = 10, y = 10 }
+opacity = 0.73
+
+[font]
+normal = { family = "0xProto Nerd Font", style = "Regular" }
+size = 17
+
+[colors.primary]
+background = '#1a1b26'
+foreground = '#c0caf5'
+
+[colors.normal]
+black = '#15161e'
+red = '#f7768e'
+green = '#9ece6a'
+yellow = '#e0af68'
+blue = '#7aa2f7'
+magenta = '#bb9af7'
+cyan = '#7dcfff'
+white = '#a9b1d6'
+
+[colors.bright]
+black = '#414868'
+red = '#ff899d'
+green = '#9fe044'
+yellow = '#faba4a'
+blue = '#8db0ff'
+magenta = '#c7a9ff'
+cyan = '#a4daff'
+white = '#c0caf5'
diff --git a/artix/home/.config/cava/config b/artix/home/.config/cava/config
new file mode 100644
index 0000000..4716fb0
--- /dev/null
+++ b/artix/home/.config/cava/config
@@ -0,0 +1,26 @@
+[general]
+framerate = 100
+
+[output]
+
+method = noncurses
+orientation = horizontal
+
+[color]
+
+background = default
+foreground = default
+
+gradient = 1
+gradient_color_1 = '#e576fe'
+gradient_color_2 = '#ef85fd'
+gradient_color_3 = '#fa94fc'
+gradient_color_4 = '#ffa8fc'
+gradient_color_5 = '#ffbefd'
+gradient_color_6 = '#ffd4fe'
+gradient_color_7 = '#ffeafe'
+gradient_color_8 = '#ffffff'
+
+[smoothing]
+
+noise_reduction = 33
diff --git a/artix/home/.config/dunst/dunstrc b/artix/home/.config/dunst/dunstrc
new file mode 100644
index 0000000..8ab4e1e
--- /dev/null
+++ b/artix/home/.config/dunst/dunstrc
@@ -0,0 +1,21 @@
+[global]
+ background = "#1A1B26"
+ foreground = "#ffffff"
+ frame_color = "#3B4261"
+ frame_width = 5
+ timeout = 10
+ alignment = center
+ enable_recursive_icon_lookup = true
+ padding = 5
+ horizontal_padding = 5
+ font = 0xProto Nerd font 15
+ corner_radius = 0
+ separator_height = 5
+[urgency_low]
+ background = "#7aa2f7"
+ foreground = "#ffffff"
+ timeout = 10
+[urgency_critical]
+ background = "#F7768E"
+ foreground = "#1A1B26"
+ timeout = 10
diff --git a/artix/home/.config/ghostty/config b/artix/home/.config/ghostty/config
new file mode 100644
index 0000000..27da7eb
--- /dev/null
+++ b/artix/home/.config/ghostty/config
@@ -0,0 +1,44 @@
+font-family = "0xProto Nerd Font"
+font-size = 18
+
+cursor-style = block
+cursor-style-blink = true
+shell-integration-features = no-cursor
+
+background = #1a1b26
+foreground = #a9b1d6
+
+palette = 0=#32344a
+palette = 8=#787c99
+
+palette = 1=#f7768e
+palette = 9=#ff7a93
+
+palette = 2=#9ece6a
+palette = 10=#b9f27c
+
+palette = 3=#e0af68
+palette = 11=#ff9e64
+
+palette = 4=#7aa2f7
+palette = 12=#7da6ff
+
+palette = 5=#ad8ee6
+palette = 13=#bb9af7
+
+palette = 6=#449dab
+palette = 14=#0db9d7
+
+palette = 7=#a89984
+palette = 15=#acb0d0
+
+window-padding-x = 5,5
+window-decoration = false
+
+keybind = ctrl+shift+v=paste_from_clipboard
+keybind = ctrl+shift+c=copy_to_clipboard
+keybind = ctrl+equal=increase_font_size:1
+keybind = ctrl+minus=decrease_font_size:1
+
+confirm-close-surface = false
+resize-overlay = never
diff --git a/artix/home/.config/git/config b/artix/home/.config/git/config
new file mode 100644
index 0000000..8efedc4
--- /dev/null
+++ b/artix/home/.config/git/config
@@ -0,0 +1,11 @@
+[user]
+ email = nantha@mielota.com
+ name = Nantha Sorubakanthan
+ #signingkey = E6E0870909E743B5E4101068E614BDE9E305D5D7
+[init]
+ defaultBranch = main
+[core]
+ editor = nvim
+ autocrlf = input
+[color]
+ ui = true
diff --git a/artix/home/.config/helix/config.toml b/artix/home/.config/helix/config.toml
new file mode 100644
index 0000000..a13e774
--- /dev/null
+++ b/artix/home/.config/helix/config.toml
@@ -0,0 +1,26 @@
+theme = "tokyonight"
+
+[editor]
+ line-number = "relative"
+ cursorline = true
+ shell = ["zsh", "-c"]
+ end-of-line-diagnostics = "hint"
+[editor.indent-guides]
+ render = true
+ skip-levels = 1
+[editor.whitespace]
+ render = "all"
+[editor.soft-wrap]
+ enable = true
+[editor.file-picker]
+ hidden = false
+[editor.lsp]
+ display-messages = true
+[editor.statusline]
+ left = ["mode", "spinner", "version-control", "file-name"]
+[editor.inline-diagnostics]
+ cursor-line = "error"
+ other-lines = "disable"
+[keys.normal]
+ X = "select_line_above"
+ "A-s" = ":format"
diff --git a/artix/home/.config/hypr/hyprland.conf b/artix/home/.config/hypr/hyprland.conf
new file mode 100644
index 0000000..28118bd
--- /dev/null
+++ b/artix/home/.config/hypr/hyprland.conf
@@ -0,0 +1,182 @@
+env = GDK_BACKEND,wayland,x11,*
+env = XDG_CURRENT_DESKTOP,Hyprland
+env = XDG_SESSION_TYPE,wayland
+env = XDG_SESSION_DESKTOP,Hyprland
+
+exec-once = dunst
+exec-once = waybar
+exec-once = ~/.config/hypr/xdg-portal-hyprland
+exec-once = /usr/lib/hyprpolkitagent/hyprpolkitagent
+
+exec-once = gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
+exec-once = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
+env = QT_QPA_PLATFORMTHEME,gtk3
+
+$mainMod = SUPER
+
+monitor=HDMI-A-1, 2560x1440@100,0x0,1
+#monitor=eDP-1, 1920x1080@60, 0x0, 1
+#monitor=HDMI-A-1, preferred, auto, 1, mirror, eDP-1
+
+bind = $mainMod, A, fullscreen,
+bind = $mainMod, C, killactive,
+bind = $mainMod, D, exec, hyprpicker -naq
+bind = $mainMod, F, exec, firefox
+bind = $mainMod, J, togglesplit, # dwindle
+bind = $mainMod, M, exit,
+bind = $mainMod, P, pseudo, # dwindle
+bind = $mainMod, Q, exec, alacritty
+bind = $mainMod, RETURN, exec, ~/.local/bin/spawn-alacritty-cwd
+bind = $mainMod, R, exec, rofi -show drun
+bind = $mainMod, U, exec, pkill waybar ; waybar
+bind = $mainMod, V, togglefloating,
+
+bind = , Print, exec, grim -g "$(slurp)" - | wl-copy
+bind = $mainMod, Print, exec, grim - | wl-copy
+
+bind = $mainMod, h, movefocus, l
+bind = $mainMod, l, movefocus, r
+bind = $mainMod, k, movefocus, u
+bind = $mainMod, j ,movefocus, d
+
+bind = $mainMod SHIFT, H, movewindow, l
+bind = $mainMod SHIFT, L, movewindow, r
+bind = $mainMod SHIFT, K, movewindow, u
+bind = $mainMod SHIFT, J, movewindow, d
+
+bind = $mainMod, code:10, workspace, 1
+bind = $mainMod, code:11, workspace, 2
+bind = $mainMod, code:12, workspace, 3
+bind = $mainMod, code:13, workspace, 4
+bind = $mainMod, code:14, workspace, 5
+bind = $mainMod, code:15, workspace, 6
+bind = $mainMod, code:16, workspace, 7
+bind = $mainMod, code:17, workspace, 8
+bind = $mainMod, code:18, workspace, 9
+bind = $mainMod, code:19, workspace, 10
+
+bind = $mainMod SHIFT, code:10, movetoworkspace, 1
+bind = $mainMod SHIFT, code:11, movetoworkspace, 2
+bind = $mainMod SHIFT, code:12, movetoworkspace, 3
+bind = $mainMod SHIFT, code:13, movetoworkspace, 4
+bind = $mainMod SHIFT, code:14, movetoworkspace, 5
+bind = $mainMod SHIFT, code:15, movetoworkspace, 6
+bind = $mainMod SHIFT, code:16, movetoworkspace, 7
+bind = $mainMod SHIFT, code:17, movetoworkspace, 8
+bind = $mainMod SHIFT, code:18, movetoworkspace, 9
+bind = $mainMod SHIFT, code:19, movetoworkspace, 10
+
+bind = $mainMod, S, togglespecialworkspace, magic
+bind = $mainMod SHIFT, S, movetoworkspace, special:magic
+
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
+
+bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
+bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
+bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
+bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
+bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
+bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
+
+bindl = , XF86AudioNext, exec, playerctl next
+bindl = , XF86AudioPause, exec, playerctl play-pause
+bindl = , XF86AudioPlay, exec, playerctl play-pause
+bindl = , XF86AudioPrev, exec, playerctl previous
+
+misc {
+ force_default_wallpaper = 0
+ disable_hyprland_logo = true
+ disable_splash_rendering = true
+ background_color = rgb(000000)
+}
+
+general {
+ gaps_in = 10
+ gaps_out = 15
+
+ border_size = 0
+
+ col.active_border = rgba(b800e6ee) rgba(e699ffee) 45deg
+ col.inactive_border = rgba(595959aa)
+
+ resize_on_border = false
+ allow_tearing = false
+
+ layout = dwindle
+}
+
+decoration {
+ rounding = 0
+ rounding_power = 10
+
+ active_opacity = 1.0
+ inactive_opacity = 1.0
+
+ shadow {
+ enabled = true
+ range = 4
+ render_power = 3
+ color = rgba(1a1a1aee)
+ }
+
+ blur {
+ enabled = false
+ size = 10
+ passes = 3
+
+ vibrancy = 0.1696
+ }
+}
+
+animations {
+ #enabled = yes, please :)
+ enabled = no
+
+ bezier = easeOutQuint,0.23,1,0.32,1
+ bezier = easeInOutCubic,0.65,0.05,0.36,1
+ bezier = linear,0,0,1,1
+ bezier = almostLinear,0.5,0.5,0.75,1.0
+ bezier = quick,0.15,0,0.1,1
+
+ animation = global, 1, 10, default
+ animation = border, 1, 5.39, easeOutQuint
+ animation = windows, 1, 4.79, easeOutQuint
+ animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
+ animation = windowsOut, 1, 1.49, linear, popin 87%
+ animation = fadeIn, 1, 1.73, almostLinear
+ animation = fadeOut, 1, 1.46, almostLinear
+ animation = fade, 1, 3.03, quick
+ animation = layers, 1, 3.81, easeOutQuint
+ animation = layersIn, 1, 4, easeOutQuint, fade
+ animation = layersOut, 1, 1.5, linear, fade
+ animation = fadeLayersIn, 1, 1.79, almostLinear
+ animation = fadeLayersOut, 1, 1.39, almostLinear
+ animation = workspaces, 1, 1.94, almostLinear, fade
+ animation = workspacesIn, 1, 1.21, almostLinear, fade
+ animation = workspacesOut, 1, 1.94, almostLinear, fade
+}
+
+dwindle {
+ pseudotile = true
+ preserve_split = true
+}
+
+master {
+ new_status = master
+}
+
+misc {
+ force_default_wallpaper = -1
+ disable_hyprland_logo = true
+}
+env = XCURSOR_SIZE,24
+env = XCURSOR_THEME,whiteglass
+
+input {
+ kb_layout = fr
+ kb_model = pc105
+ kb_options = terminate:ctrl_amt_bksp
+
+ follow_mouse = 1
+}
diff --git a/artix/home/.config/hypr/xdg-portal-hyprland b/artix/home/.config/hypr/xdg-portal-hyprland
new file mode 100755
index 0000000..df34de5
--- /dev/null
+++ b/artix/home/.config/hypr/xdg-portal-hyprland
@@ -0,0 +1,13 @@
+#!/bin/bash
+sleep 1
+killall xdg-desktop-portal-hyprland
+killall xdg-desktop-portal-gnome
+killall xdg-desktop-portal-wlr
+killall xdg-desktop-portal
+logger 'killed all xdg-desktop'
+sleep 1
+/usr/lib/xdg-desktop-portal-hyprland
+logger 'xdg-desktop-portal-hyprland started'
+sleep 2
+/usr/lib/xdg-desktop-portal
+logger 'xdg-desktop-portal started'
diff --git a/artix/home/.config/kitty/kitty.conf b/artix/home/.config/kitty/kitty.conf
new file mode 100644
index 0000000..2cc7b2d
--- /dev/null
+++ b/artix/home/.config/kitty/kitty.conf
@@ -0,0 +1,40 @@
+window_padding_width 0
+window_padding_height 0
+font_family 0xProto Nerd font
+bold_font auto
+italic_font auto
+bold_italic_font auto
+font_size 15.0
+disable_ligatures never
+cursor_shape block
+shell_integration no-cursor
+cursor_blink_interval 0
+scrollback_lines 2000
+scrollbar never
+open_url_with firefox
+detect_ulrs yes
+hide_window_decorations yes
+background_blur 0
+background_opacity 1.0
+background_image none
+cursor #bfc9f4
+foreground #bfc9f4
+background #1a1b26
+selection_foreground #1a1b26
+selection_background #bfc9f4
+color0 #32344a
+color1 #f7768e
+color2 #9ece6a
+color3 #e0af68
+color4 #7aa2f7
+color5 #ad8ee6
+color6 #449dab
+color7 #787c99
+color8 #444b6a
+color9 #ff7a93
+color10 #b9f27c
+color11 #ff9e64
+color12 #7da6ff
+color13 #bb9af7
+color14 #0db9d7
+color15 #acb0d0
diff --git a/artix/home/.config/nvim/init.lua b/artix/home/.config/nvim/init.lua
new file mode 100644
index 0000000..71bedac
--- /dev/null
+++ b/artix/home/.config/nvim/init.lua
@@ -0,0 +1,254 @@
+vim.g.mapleader = " "
+
+vim.o.number = true
+vim.o.relativenumber = true
+
+vim.o.undofile = true
+vim.o.ignorecase = true
+
+vim.o.expandtab = false
+vim.o.shiftwidth = 8
+vim.o.tabstop = 8
+vim.o.softtabstop = 8
+vim.o.smartindent = true
+vim.o.autoindent = true
+
+vim.o.termguicolors = true
+vim.o.signcolumn = "yes"
+vim.o.winborder = 'single'
+vim.o.showmode = true
+vim.o.guicursor = ""
+
+vim.o.swapfile = false
+
+vim.o.list = true
+vim.o.cursorline = true
+
+-- •⏎.·○◦
+vim.o.listchars = "tab:🡪 ,trail:·,eol:⏎,space:·,multispace:·,lead:·,leadmultispace:·"
+
+vim.o.completeopt = "fuzzy,menuone,noselect"
+vim.diagnostic.config({ virtual_text = true })
+
+-- FRENCH SPELLS
+
+local spell_path = vim.fn.stdpath("data") .. "/site/spell"
+if not (vim.uv.fs_stat(spell_path .. "/fr.utf-8.spl") and vim.uv.fs_stat(spell_path .. "/fr.utf-8.sug")) then
+ print("Installing french spells")
+ -- Other mirrors can be found on https://www.vim.org/mirrors.php
+ local mirror = "https://vim.mirror.garr.it/pub/vim/" .. "runtime/spell/"
+ local files = { "fr.utf-8.spl", "fr.utf-8.sug" }
+ vim.fn.mkdir(spell_path, "p")
+ for _, file in ipairs(files) do
+ vim.fn.system(string.format("curl -L %s%s -o %s/%s", mirror, file, spell_path, file))
+ end
+end
+
+vim.cmd [[set spelllang=en,fr]]
+vim.cmd [[set spell]]
+
+-- PLUGINS
+
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not vim.uv.fs_stat(lazypath) then
+ local lazyrepo = "https://github.com/folke/lazy.nvim.git"
+ vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
+end
+vim.opt.rtp:prepend(lazypath)
+
+require("lazy").setup({
+ spec = {
+ "neovim/nvim-lspconfig",
+ "ibhagwan/fzf-lua",
+ "nvim-tree/nvim-web-devicons",
+ "mfussenegger/nvim-jdtls",
+ "mfussenegger/nvim-dap",
+ {
+ "folke/tokyonight.nvim",
+ lazy = false,
+ priority = 1000,
+ opts = {
+ style = "night",
+ transparent = true,
+ styles = {
+ comments = { italic = true, bold = false },
+ keywords = { italic = true, bold = false },
+ functions = { italic = true, bold = false },
+ variables = { italic = false, bold = false },
+ sidebars = "dark",
+ floats = "dark",
+ },
+ dim_inactive = false,
+
+ on_colors = function(colors) end,
+ on_highlights = function(highlights, colors) end,
+ cache = true,
+ },
+ },
+ { "lewis6991/gitsigns.nvim", opts = {} },
+ { "windwp/nvim-autopairs", opts = {} },
+ {
+ "saghen/blink.cmp",
+ opts = {
+ keymap = { preset = 'enter' },
+ fuzzy = { implementation = "rust" }
+ }
+ },
+ {
+ "stevearc/oil.nvim",
+ opts = {
+ default_file_explorer = true,
+ lsp_file_methods = {
+ enabled = true,
+ timeout_ms = 1000,
+ autosave_changes = true,
+ },
+ columns = {
+ "permissions",
+ "size",
+ "icon",
+ },
+ float = {
+ max_width = 0.7,
+ max_height = 0.6,
+ border = vim.o.winborder,
+ },
+ buf_options = {
+ buflisted = false,
+ bufhidden = "hide",
+ },
+ view_options = {
+ show_hidden = true,
+ },
+ }
+ },
+ {
+ "sphamba/smear-cursor.nvim",
+ opts = {
+ smear_insert_mode = true,
+ stiffness = 0.7,
+ trailing_stiffness = 0.3,
+ stiffness_insert_mode = 0.7,
+ trailing_stiffness_insert_mode = 0.7,
+ damping = 0.67,
+ damping_insert_mode = 0.67,
+ distance_stop_animating = 0.4,
+ },
+ },
+ {
+ "nvim-neo-tree/neo-tree.nvim",
+ opts = {},
+ dependencies = {
+ "nvim-lua/plenary.nvim",
+ "MunifTanjim/nui.nvim",
+ },
+ lazy = false
+ }
+ }
+})
+
+vim.cmd [[colorscheme tokyonight-night]]
+vim.cmd [[Gitsigns toggle_current_line_blame]]
+
+-- MAPPING
+
+local map = vim.keymap.set
+
+map("n", "<C-d>", "<C-d>zz")
+map("n", "<C-u>", "<C-u>zz")
+map("v", "J", ":m '>+1<CR>gv=gv")
+map("v", "K", ":m '<-2<CR>gv=gv")
+map("n", "n", "nzzzv")
+map("n", "N", "Nzzzv")
+map("n", "<leader>s", [[%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
+map("n", "<leader>e", [[:Oil<CR>]])
+
+local fzf = require("fzf-lua") -- blazing fast
+
+map("n", "<leader>F", ":FzfLua<CR>")
+map("n", "<leader>f", fzf.files)
+map("n", "<leader>t", fzf.treesitter)
+map("n", "<leader>/", fzf.live_grep)
+
+-- Configure lua_ls to use neovim runtime or all of lua_ls lib.
+-- We put way much load on the cpu if we open both.
+local lua_ls_lib = {}
+local neovim_config_path = vim.fn.expand("~/code/dox/artixlinux/home/.config/nvim/init.lua")
+
+if vim.api.nvim_buf_get_name(0) == neovim_config_path then
+ lua_ls_lib = vim.api.nvim_get_runtime_file("", true)
+else
+ for lib in vim.fn.expand("/usr/lib/lua-language-server/meta/3rd/*/library"):gmatch("[^\n]+") do
+ table.insert(lua_ls_lib, lib)
+ end
+end
+
+vim.lsp.config("lua_ls", {
+ settings = {
+ Lua = {
+ workspace = {
+ library = lua_ls_lib
+ }
+ }
+ }
+})
+
+-- do not enable jdtls here, we let the nvim-jdtls plugin do everything
+vim.lsp.enable({
+ "lua_ls", "cssls", "html", "jsonls", "clangd", "ts_ls",
+ "tinymist", "marksman", "lemminx", "rust_analyzer", "pyright"
+})
+
+-- AUTOCMDS
+
+vim.api.nvim_create_autocmd("TextYankPost", {
+ callback = function() vim.hl.on_yank() end
+})
+
+vim.api.nvim_create_autocmd("BufWritePre", {
+ callback = function() vim.lsp.buf.format() end
+})
+
+vim.api.nvim_create_autocmd("BufWritePost", {
+ pattern = "*.tex",
+ callback = function() vim.cmd [[! pdflatex % ]] end
+})
+
+vim.api.nvim_create_autocmd("FileType", {
+ pattern = "java",
+ callback = function(args)
+ local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t")
+ local workspace_dir = vim.fn.stdpath("data")
+ .. package.config:sub(1, 1)
+ .. "jdtls-workspace"
+ .. package.config:sub(1, 1)
+ .. project_name
+
+ local config = {
+ name = "jdtls",
+ cmd = {
+ "jdtls",
+ "-data",
+ workspace_dir,
+ },
+ root_dir = vim.fs.root(0, { ".git", "meta", "gradlew", "mvnw" }),
+ settings = { java = {} },
+ init_options = { bundles = {} },
+ }
+ require('jdtls').start_or_attach(config)
+ end
+})
+
+--[[
+function get_hl_groups()
+ for hl_name, hl in pairs(vim.api.nvim_get_hl(0, {})) do
+ print(hl_name)
+ end
+end
+
+local function update_hl(group, tbl)
+ local old_hl = vim.api.nvim_get_hl_by_name(group, true)
+ local new_hl = vim.tbl_extend('force', old_hl, tbl)
+ vim.api.nvim_set_hl(0, group, new_hl)
+end
+]]
diff --git a/artix/home/.config/rofi/config.rasi b/artix/home/.config/rofi/config.rasi
new file mode 100644
index 0000000..dab25d3
--- /dev/null
+++ b/artix/home/.config/rofi/config.rasi
@@ -0,0 +1,27 @@
+@theme "tokyonight.rasi"
+
+configuration {
+ modes: "window,drun,run,ssh";
+ font: "0xProto Nerd Font 18";
+ show-icons: true;
+ terminal: "alacritty";
+ ssh-client: "ssh";
+ disable-history: true;
+ sort: true;
+ sorting-method: "normal";
+ case-sensitive: false;
+ case-smart: false;
+ cycle: true;
+ sidebar-mode: false;
+ hover-select: true;
+
+ timeout {
+ action: "kb-cancel";
+ delay: 0;
+ }
+
+ filebrowser {
+ directories-first: true;
+ sorting-method: "name";
+ }
+}
diff --git a/artix/home/.config/rofi/tokyonight.rasi b/artix/home/.config/rofi/tokyonight.rasi
new file mode 100644
index 0000000..2f322fc
--- /dev/null
+++ b/artix/home/.config/rofi/tokyonight.rasi
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * ROFI Color theme
+ * User: Lairizzle
+ * Copyright: Lairizzle
+ * GitHub: https://github.com/Lairizzle/rofi-tokyonight
+ ********************************************************************************/
+
+* {
+ selected-normal-foreground: rgba(125, 207, 255, 1); /* blue highlight */
+ foreground: rgba(224, 234, 252, 1); /* bright */
+ normal-foreground: @foreground;
+ alternate-normal-background: rgba(36, 40, 59, 1); /* #24283b */
+ red: rgba(247, 118, 142, 1); /* #f7768e */
+ selected-urgent-foreground: rgba(125, 207, 255, 1); /* bright blue */
+ blue: rgba(125, 207, 255, 1); /* #7dcfff */
+ urgent-foreground: rgba(247, 118, 142, 1); /* #f7768e */
+ alternate-urgent-background: rgba(36, 40, 59, 1); /* #24283b */
+ active-foreground: rgba(125, 207, 255, 1); /* blue */
+ lightbg: rgba(217, 222, 239, 1);
+ selected-active-foreground: rgba(125, 207, 255, 1);
+ alternate-active-background: rgba(36, 40, 59, 1);
+ background: rgba(26, 27, 38, 0.93); /* #1a1b26 */
+ bordercolor: rgba(125, 207, 255, 1); /* #7dcfff */
+ alternate-normal-foreground: @foreground;
+ normal-background: rgba(36, 40, 59, 0.06);
+ lightfg: rgba(200, 210, 255, 1); /* bright dim text */
+ selected-normal-background: rgba(65, 72, 104, 1); /* #414868 */
+ border-color: @bordercolor;
+ spacing: 2;
+ separatorcolor: rgba(65, 72, 104, 1);
+ urgent-background: rgba(26, 27, 38, 1); /* #1a1b26 */
+ selected-urgent-background: rgba(247, 118, 142, 1);
+ alternate-urgent-foreground: @urgent-foreground;
+ background-color: rgba(0, 0, 0, 0);
+ alternate-active-foreground: @active-foreground;
+ active-background: rgba(26, 27, 38, 1);
+ selected-active-background: rgba(65, 72, 104, 1); /* #414868 */
+}
+
+window {
+ background-color: @background;
+ border: 2;
+ border-radius: 8px;
+ padding: 5;
+ width: 50%;
+ height: 50%;
+}
+mainbox {
+ border: 0;
+ padding: 0;
+}
+message {
+ border: 2px 0px 0px ;
+ border-color: @separatorcolor;
+ padding: 1px ;
+}
+textbox {
+ text-color: @foreground;
+}
+listview {
+ fixed-height: 0;
+ border: 2px 0px 0px ;
+ border-color: @separatorcolor;
+ spacing: 2px ;
+ scrollbar: true;
+ padding: 2px 0px 0px ;
+}
+element {
+ border: 0;
+ padding: 1px ;
+}
+element-text {
+ background-color: inherit;
+ text-color: inherit;
+}
+element.normal.normal {
+ background-color: @normal-background;
+ text-color: @normal-foreground;
+}
+element.normal.urgent {
+ background-color: @urgent-background;
+ text-color: @urgent-foreground;
+}
+element.normal.active {
+ background-color: @active-background;
+ text-color: @active-foreground;
+}
+element.selected.normal {
+ background-color: @selected-normal-background;
+ text-color: @selected-normal-foreground;
+}
+element.selected.urgent {
+ background-color: @selected-urgent-background;
+ text-color: @selected-urgent-foreground;
+}
+element.selected.active {
+ background-color: @selected-active-background;
+ text-color: @selected-active-foreground;
+}
+element.alternate.normal {
+ background-color: @alternate-normal-background;
+ text-color: @alternate-normal-foreground;
+}
+element.alternate.urgent {
+ background-color: @alternate-urgent-background;
+ text-color: @alternate-urgent-foreground;
+}
+element.alternate.active {
+ background-color: @alternate-active-background;
+ text-color: @alternate-active-foreground;
+}
+scrollbar {
+ width: 4px ;
+ border: 0;
+ handle-width: 8px ;
+ padding: 0;
+}
+mode-switcher {
+ border: 2px 0px 0px ;
+ border-color: @separatorcolor;
+}
+button.selected {
+ background-color: @selected-normal-background;
+ text-color: @selected-normal-foreground;
+}
+inputbar {
+ spacing: 0;
+ text-color: @normal-foreground;
+ padding: 1px ;
+}
+case-indicator {
+ spacing: 0;
+ text-color: @normal-foreground;
+}
+entry {
+ spacing: 0;
+ text-color: @normal-foreground;
+}
+prompt {
+ spacing: 0;
+ text-color: @normal-foreground;
+}
+inputbar {
+ children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
+}
+textbox-prompt-colon {
+ expand: false;
+ str: ":";
+ margin: 0px 0.3em 0em 0em ;
+ text-color: @normal-foreground;
+}
+scrollbar {
+ width: 4px;
+ border: 0;
+ handle-width: 8px;
+ padding: 0;
+ handle-color: rgba(125, 207, 255, 0.8); /* bright blue scrollbar handle */
+}
diff --git a/artix/home/.config/user-dirs.dirs b/artix/home/.config/user-dirs.dirs
new file mode 100644
index 0000000..6074b27
--- /dev/null
+++ b/artix/home/.config/user-dirs.dirs
@@ -0,0 +1,8 @@
+XDG_DESKTOP_DIR="$HOME"
+XDG_DOWNLOAD_DIR="$HOME/dl"
+XDG_TEMPLATES_DIR="$HOME/bin"
+XDG_PUBLICSHARE_DIR="$HOME/bin"
+XDG_DOCUMENTS_DIR="$HOME/code"
+XDG_MUSIC_DIR="$HOME/music"
+XDG_PICTURES_DIR="$HOME/media"
+XDG_VIDEOS_DIR="$HOME/media"
diff --git a/artix/home/.config/waybar/config.jsonc b/artix/home/.config/waybar/config.jsonc
new file mode 100644
index 0000000..c13824a
--- /dev/null
+++ b/artix/home/.config/waybar/config.jsonc
@@ -0,0 +1,90 @@
+{
+ "margin-top": 15,
+ "margin-left": 15,
+ "margin-right": 15,
+ "layer": "top",
+ "position": "top",
+ "spacing": 3,
+ // All modules : battery, pulseaudio, tray, hyprland/workspaces, clock, cpu, memory, network
+ "modules-left": [
+ "hyprland/workspaces",
+ "hyprland/window"
+ ],
+ "modules-center": [
+ "clock"
+ ],
+ "modules-right": [
+ "tray",
+ "battery",
+ "pulseaudio",
+ "temperature",
+ "cpu",
+ "memory",
+ "network"
+ ],
+ "temperature": {
+ "format": "TEMP: {temperatureC}°C",
+ "hwmon-path": [
+ "/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon2/temp1_input"
+ ],
+ "critical-threshold": 65,
+ "interval": 3
+ },
+ "hyprland/workspaces": {
+ "format": "{id}",
+ "show-special": true
+ },
+ "hyprland/window": {
+ "format": "{initialTitle}",
+ "tooltip": false,
+ "icon": true
+ },
+ "network": {
+ "format": "{ifname}",
+ "format-disconnected": "NULL",
+ "interval": 5,
+ "tooltip": true,
+ "tooltip-format": "{essid}"
+ },
+ "cpu": {
+ "format": "CPU: {usage}%",
+ "interval": 3,
+ "states": {
+ "warning": 40,
+ "urgent": 60,
+ "critical": 80
+ }
+ },
+ "memory": {
+ "format": "MEM: {percentage}%",
+ "format-alt": "MEM: {used} GiB",
+ "interval": 3,
+ "states": {
+ "warning": 40,
+ "urgent": 60,
+ "critical": 80
+ },
+ "tooltip": true,
+ "tooltip-format": "{used}/{total} GiB"
+ },
+ "pulseaudio": {
+ "format": "VOL: {volume}%",
+ "format-bluetooth": "VOL: {volume}%",
+ "format-muted": "MUTED",
+ "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
+ },
+ "battery": {
+ "format": "BAT: {capacity}%",
+ "interval": 5,
+ "states": {
+ "warning": 60,
+ "urgent": 35,
+ "critical": 20
+ }
+ },
+ "clock": {
+ "format": "{:%H:%M:%S - %a %d %B %Y}",
+ "tooltip": false,
+ "interval": 1
+ }
+}
diff --git a/artix/home/.config/waybar/style.css b/artix/home/.config/waybar/style.css
new file mode 100644
index 0000000..cc2bab3
--- /dev/null
+++ b/artix/home/.config/waybar/style.css
@@ -0,0 +1,94 @@
+* {
+ font-family: "0xProto Nerd Font";
+ font-weight: bold;
+}
+
+#waybar {
+ background: #1a1b26;
+ color: #fff;
+}
+
+#workspaces button {
+ color: #fff;
+ border-radius: 0;
+}
+
+#workspaces button.active {
+ background: #ad8ee6;
+}
+
+#workspaces button.special {
+ background: #7aa2f7;
+}
+
+#workspaces button.urgent {
+ background: #f7768e;
+}
+
+#workspaces button:hover {
+ box-shadow: none;
+ text-shadow: none;
+ background: #32344a;
+ border: none;
+ transition: none;
+ color: #7aa2f7;
+}
+
+#battery,
+#cpu,
+#memory,
+#pulseaudio,
+#network,
+#clock,
+#tray,
+#temperature,
+#workspaces button {
+ padding: 7 7;
+}
+
+#network {
+ background: #449dab;
+}
+
+#pulseaudio {
+ background: #ad8ee6;
+}
+
+#pulseaudio.bluetooth {
+ background: #7aa2f7;
+}
+
+#battery,
+#cpu,
+#memory,
+#temperature {
+ background: #9ece6a;
+}
+
+#battery.warning,
+#cpu.warning,
+#memory.warning {
+ background: #e0af68;
+}
+
+#battery.urgent,
+#cpu.urgent,
+#memory.urgent,
+#network.disabled {
+ background: #ff9e64;
+}
+
+#battery.critical,
+#cpu.critical,
+#pulseaudio.muted,
+#memory.critical,
+#network.disconnected,
+#temperature.critical {
+ background: #f7768e
+}
+
+#window {
+ margin-left: 10px;
+ background: #32344a;
+ padding: 7;
+}
diff --git a/artix/home/.config/zathura/zathurarc b/artix/home/.config/zathura/zathurarc
new file mode 100644
index 0000000..ee2e7ff
--- /dev/null
+++ b/artix/home/.config/zathura/zathurarc
@@ -0,0 +1,11 @@
+set selection-clipboard clipboard
+
+set inputbar-bg "#1a1b26"
+set statusbar-bg "#1a1b26"
+set default-bg "#1a1b26"
+set highlight-color "#4084d6"
+set recolor-lightcolor "#1a1b26"
+set recolor-darkcolor "#a9b1d6"
+
+set recolor "false"
+set recolor-keephue "true"
diff --git a/artix/home/.config/zsh/.zprofile b/artix/home/.config/zsh/.zprofile
new file mode 100644
index 0000000..f1e5551
--- /dev/null
+++ b/artix/home/.config/zsh/.zprofile
@@ -0,0 +1,3 @@
+[[ $(tty) = "/dev/tty1" ]] && start-hyprland
+[[ $(tty) = "/dev/tty2" ]] && /usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland
+[[ $(tty) = "/dev/ttyv0" ]] && startx
diff --git a/artix/home/.config/zsh/.zshrc b/artix/home/.config/zsh/.zshrc
new file mode 100644
index 0000000..bc53096
--- /dev/null
+++ b/artix/home/.config/zsh/.zshrc
@@ -0,0 +1,41 @@
+[ -d $XDG_CACHE_HOME/zsh ] || mkdir $XDG_CACHE_HOME/zsh
+[ -d $XDG_STATE_HOME/zsh ] || mkdir $XDG_STATE_HOME/zsh
+
+alias grep="grep --color=auto"
+alias ls="ls -a --color=auto --group-directories-first"
+alias mkdir="mkdir -v"
+alias ln="ln -v"
+alias rm="rm -v"
+alias rmdir="rmdir -v"
+alias chmod="chmod -v"
+alias mv="mv -v"
+alias cp="cp -v"
+
+zstyle :compinstall filename "~/.zshrc"
+autoload -Uz compinit
+compinit -d "$XDG_CACHE_HOME"/zsh/zcompdump-"$ZSH_VERSION"
+zstyle ":completion:*" list-colors ${(s.:.)LS_COLORS}
+autoload -Uz vcs_info
+precmd_functions+=( vcs_info )
+
+setopt prompt_subst
+zstyle ':vcs_info:git:*' formats '(%F{red}%b%f)'
+
+PS1="%F{magenta}%3~%f\$vcs_info_msg_0_ %F{blue}
+%% %f"
+
+bindkey "^H" backward-kill-word
+bindkey "^[[1;5C" forward-word
+bindkey "^[[1;5D" backward-word
+bindkey "^E" end-of-line
+bindkey "^A" beginning-of-line
+
+if [[ "$(uname)" == "Linux" ]]; then
+ source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh 2> /dev/null || source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh 2> /dev/null
+ source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh 2> /dev/null || source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh 2> /dev/null || source /usr/share/zsh/site-functions/zsh-syntax-highlighting.zsh
+ alias lp="loginctl poweroff"
+ alias lr="loginctl reboot"
+else if [[ "$(uname)" == "FreeBSD" ]]
+ source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
+ source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh
+fi
diff --git a/artix/home/.editorconfig b/artix/home/.editorconfig
new file mode 100644
index 0000000..c203964
--- /dev/null
+++ b/artix/home/.editorconfig
@@ -0,0 +1,8 @@
+root = true
+
+[*]
+indent_style = tab
+indent_size = 8
+end_of_line = lf
+trim_trailing_whitespace = true
+insert_final_newline = true
diff --git a/artix/home/.local/bin/camera b/artix/home/.local/bin/camera
new file mode 100755
index 0000000..2707e32
--- /dev/null
+++ b/artix/home/.local/bin/camera
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+ffplay -hide_banner -loglevel error -stats -window_title Webcam -fflags +nobuffer -fast /dev/video0
diff --git a/artix/home/.local/bin/dirtymem b/artix/home/.local/bin/dirtymem
new file mode 100755
index 0000000..aef0195
--- /dev/null
+++ b/artix/home/.local/bin/dirtymem
@@ -0,0 +1,2 @@
+#! /bin/sh
+while true; do printf "$(grep Dirty /proc/meminfo)\r"; sleep 0.1; done
diff --git a/artix/home/.local/bin/dlm b/artix/home/.local/bin/dlm
new file mode 100755
index 0000000..bb45a5d
--- /dev/null
+++ b/artix/home/.local/bin/dlm
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+yt-dlp -x -t mp3 --no-playlist $1
diff --git a/artix/home/.local/bin/edit b/artix/home/.local/bin/edit
new file mode 100755
index 0000000..c6f8288
--- /dev/null
+++ b/artix/home/.local/bin/edit
@@ -0,0 +1,10 @@
+#! /bin/sh
+
+eval TARGET_FILE=$(cat ~/.local/share/dox/quickconfig | grep "#$1\$$" | awk -F "#" '{print $1}')
+
+if [ "$TARGET_FILE" != "" ]; then
+ nvim $TARGET_FILE
+else
+ echo "Unknown config file. Use one below :"
+ grep -o "#.*\$$" ~/.local/share/dox/quickconfig | tr -d '#' | tr -d '$'
+fi
diff --git a/artix/home/.local/bin/exestub.sh b/artix/home/.local/bin/exestub.sh
new file mode 100644
index 0000000..33ac55a
--- /dev/null
+++ b/artix/home/.local/bin/exestub.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# https://stackoverflow.com/questions/4330936/how-can-i-convert-a-jar-to-an-exe
+
+MYSELF=`which "$0" 2>/dev/null`
+[ $? -gt 0 -a -f "$0" ] && MYSELF="./$0"
+JAVA_OPT=""
+PROG_OPT=""
+
+while [ $# -gt 0 ] ; do
+ case $1 in
+ -Xm*) JAVA_OPT="$JAVA_OPT $1" ;;
+ -D*) JAVA_OPT="$JAVA_OPT $1" ;;
+ *) PROG_OPT="$PROG_OPT $1" ;;
+ esac
+ shift
+done
+
+exec java $JAVA_OPT -jar $MYSELF $PROG_OPT
diff --git a/artix/home/.local/bin/gitlc b/artix/home/.local/bin/gitlc
new file mode 100755
index 0000000..8dd982f
--- /dev/null
+++ b/artix/home/.local/bin/gitlc
@@ -0,0 +1,20 @@
+#! /bin/bash
+
+git log --format="%aN" --numstat | \
+awk '
+NF==0 { next }
+
+$1 ~ /^[0-9]+$/ {
+ add[author]+=$1
+ del[author]+=$2
+ next
+}
+
+$1 == "-" { next }
+
+author=$0
+
+END {
+ for (a in add)
+ printf "%s : +%d / -%d / net %d\n", a, add[a], del[a], add[a]-del[a]
+}'
diff --git a/artix/home/.local/bin/gitzero b/artix/home/.local/bin/gitzero
new file mode 100755
index 0000000..6006f50
--- /dev/null
+++ b/artix/home/.local/bin/gitzero
@@ -0,0 +1,18 @@
+#! /bin/sh
+
+read -p "You really want to nuke your remote repo? (yes/no) $(git remote get-url origin) " confirmation
+
+if [ "$confirmation" = "yes" ]; then
+ mv .git/config .
+ rm -rf .git
+ git init
+ rm .git/config
+ mv config .git/
+ echo "I will push to :"
+ git remote get-url origin
+ git add .
+ git commit -m "Initial commit"
+ git push -u --force origin main
+else
+ echo "Abort."
+fi
diff --git a/artix/home/.local/bin/helper b/artix/home/.local/bin/helper
new file mode 100755
index 0000000..57b0b52
--- /dev/null
+++ b/artix/home/.local/bin/helper
@@ -0,0 +1,247 @@
+#! /bin/sh
+
+# Can override this ENV variables
+quiet=${quiet:-0}
+format=${format:-"pdf"}
+typst_src_dir=${typst_src_dir:-"drafts"}
+typst_output_dir=${typst_output_dir:-"content"}
+
+blue="\033[34m"
+bold_blue="\033[1;34m"
+green="\033[32m"
+bold_green="\033[1;32m"
+yellow="\033[33m"
+red="\033[31m"
+no_color="\033[0m"
+
+colored_output() {
+ color_name=$1
+ shift
+ case $color_name in
+ blue)
+ color=$blue;;
+ bold_blue)
+ color=$bold_blue;;
+ green)
+ color=$green;;
+ bold_green)
+ color=$bold_green;;
+ yellow)
+ color=$yellow;;
+ red)
+ color=$red;;
+ *)
+ color=$no_color;;
+ esac
+
+ printf "${color}$@${no_color}\n"
+}
+
+helper_log() {
+
+ if [ $quiet -gt 0 ]; then
+ return 0
+ fi
+
+ log_request=$1
+ shift
+ case $log_request in
+ info)
+ log_level=$(colored_output blue INFO);;
+ success)
+ log_level=$(colored_output green SUCCESS);;
+ warn)
+ log_level=$(colored_output yellow WARNING);;
+ testing)
+ log_level=$(colored_output yellow TEST);;
+ err)
+ log_level=$(colored_output red ERROR);;
+ fail)
+ log_level=$(colored_output red FAILED);;
+ *)
+ log_level=?
+ esac
+
+ if [ $log_level != "FAILED" ] && [ $log_level != "ERROR" ]; then
+ printf "[$log_level] $@\n"
+ else
+ printf "[$log_level] $@\n >&2"
+ fi
+}
+
+display_help() {
+ echo -e "
+$(colored_output bold_green "Usage:")
+
+ $(colored_output bold_blue "helper") COMMAND
+
+ or
+
+ $(colored_output bold_blue "helper")
+ > COMMAND
+ > COMMAND
+ > quit
+
+
+$(colored_output bold_green "Commands:")
+
+ $(colored_output bold_blue "help")
+ Prints help.
+
+ $(colored_output bold_blue "quit")
+ Quit helper.
+
+ $(colored_output bold_blue "check")
+ Checks that all dependencies are installed
+
+ $(colored_output bold_blue "sync")
+ git pull
+
+ $(colored_output bold_blue "build")
+ Compiles typst file in pdf.
+ There's other formats, see ENV vars section
+
+ $(colored_output bold_blue "clean")
+ Deletes all typst compiled files of a given format
+
+
+$(colored_output bold_green "ENV vars:")
+
+ $(colored_output bold_blue "quiet")
+ Make the helper silent :
+ quiet=1 ./helper COMMANDE
+ default value : 0
+
+ $(colored_output bold_blue "format")
+ You can change the target format of helper's commands
+ Example : format=png ./helper build will compile all typst source code into png
+ default value : pdf
+
+ $(colored_output bold_blue "typst_src_dir")
+ Directory with the typst source code
+ default value : drafts
+
+ $(colored_output bold_blue "typst_output_dir")
+ Target directory with compiled typst
+ default value : content
+"
+}
+
+greet_user() {
+ helper_log info "hi $(whoami)"
+}
+
+unknown_cmd() {
+ echo "??? get help with './helper help'"
+}
+
+eval_input() {
+ case $1 in
+ help)display_help;;
+ quit)echo "bye $(whoami) ♥" ; exit 0;;
+ check)check;;
+ sync)sync;;
+ build)build;;
+ clean)clean;;
+ *)unknown_cmd;;
+ esac
+}
+
+check() {
+ helper_log testing "Checking dependencies."
+ git -v > /dev/null 2>&1 || (helper_log fail "git isn't installed ???" && exit 1)
+ typst --version > /dev/null 2>&1 || (helper_log fail "typst isn't installed" && exit 1)
+ helper_log success "You're all good :)"
+}
+
+sync() {
+ git pull
+}
+
+build() {
+ typ_files="$(find $typst_src_dir -name "*.typ")"
+
+ compiled=0
+
+ for file in $typ_files; do
+ target_path=$(echo $file | sed "s/"$typst_src_dir"/"$typst_output_dir"/g; s/\.typ$/."$format"/g")
+ target_dir=$(dirname $target_path)
+
+ if ! [ -d $target_dir ]; then
+ mkdir -p $target_dir
+ fi
+
+ if [ -f $target_path ]; then
+ helper_log warn "File $file is already compiled here : $target_path, aborting."
+ else
+ helper_log info "Compiling $file here : $target_path"
+ typst compile $file $target_path
+ if [ -f $target_path ]; then
+ helper_log success "Successfully compiled $file here : $target_path ."
+ compiled=$(expr $compiled + 1)
+ else
+ helper_log fail "Couldn't compile $file here : $target_path"
+ fi
+ fi
+ done
+
+ helper_log info "Found : $(echo "$typ_files" | wc -l) Typst files."
+ helper_log info "Compiled : $compiled $format."
+}
+
+clean() {
+ build_files="$(find $typst_output_dir -name "*.$format")"
+
+ deleted=0
+
+ for file in $build_files; do
+ helper_log info "Deleting $file"
+ rm $file
+ if ! [ -f $file ]; then
+ helper_log success "Successfully deleted $file ."
+ deleted=$(expr $deleted + 1)
+ else
+ helper_log fail "Couldn't delete $file ."
+ fi
+ done
+
+ helper_log info "Found : $(echo "$build_files" | wc -l) Typst files."
+ helper_log info "Deleted : $deleted $format."
+
+ empty_dirs="$(find . -type d -empty -not -path "*/.git/*")"
+
+ while [ "$empty_dirs" != "" ]; do
+ if [ -n "$empty_dirs" ]; then
+ helper_log warn "$(echo "$empty_dirs" | wc -l) empty dirs found."
+ helper_log info "deleting empty dirs"
+
+ for dir in $empty_dirs; do
+ helper_log info "Deleting $dir"
+ rmdir $dir && helper_log success "Successfully deleted $dir." || helper_log fail "Couldn't delete $dir"
+ done
+ fi
+ empty_dirs="$(find . -type d -empty -not -path "*/.git/*")"
+ done
+}
+
+if ! [ -d $typst_src_dir ]; then
+ mkdir $typst_src_dir
+fi
+
+if ! [ -d $typst_output_dir ]; then
+ mkdir $typst_output_dir
+fi
+
+if [ $# -eq 0 ]; then
+ greet_user
+ while true; do
+ echo -n "> "
+ read user_input
+ eval_input $user_input
+ done
+elif [ $# -eq 1 ]; then
+ eval_input $1
+else
+ unknown_cmd
+fi
+
diff --git a/artix/home/.local/bin/jar2exe b/artix/home/.local/bin/jar2exe
new file mode 100755
index 0000000..5aa127b
--- /dev/null
+++ b/artix/home/.local/bin/jar2exe
@@ -0,0 +1,8 @@
+#! /bin/sh
+
+set -e
+
+[ -z $1 ] && echo "found 0 argument" && exit 1
+[ -z $2 ] && echo "found 1 argument" && exit 1
+
+cat ~/.local/bin/exestub.sh $1 > $2 && chmod -v +x $2
diff --git a/artix/home/.local/bin/javasrc b/artix/home/.local/bin/javasrc
new file mode 100755
index 0000000..09134ba
--- /dev/null
+++ b/artix/home/.local/bin/javasrc
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+find src/main/java -name "*.java" -not -name "package-info.java" -exec cat {} + | sed -e '/^\s*\/\//d' -e '/^\s*$/d'
diff --git a/artix/home/.local/bin/march.sh b/artix/home/.local/bin/march.sh
new file mode 100644
index 0000000..64d758a
--- /dev/null
+++ b/artix/home/.local/bin/march.sh
@@ -0,0 +1,135 @@
+#! /bin/sh
+
+# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
+# FILL THOSE VARS
+rootpasswd=""
+username=""
+userpasswd=""
+
+hostname=""
+
+# ajouter amd-ucode ou intel-ucode
+packages="linux linux-firmware sof-firmware base base-devel grub efibootmgr networkmanager terminus-font neovim pipewire pipewire-pulse wireplumber git"
+
+echo "Sécurité active, supprimez moi du script pour lancer l'installation." ; exit 1
+
+# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
+catch_failure() {
+ echo "Une erreur est survenue. Arrêt du programme"
+ sleep 3
+ exit 1
+}
+
+close() {
+ echo "Fin, redémarrage dans 10 secondes."
+ echo "TODO : se connecter à internet, décommenter wheel dans sudoers, xdg-user-dirs-update"
+ sleep 10
+ reboot
+}
+
+ch() {
+ arch-chroot /mnt /bin/sh -c "$@" || catch_failure
+}
+
+### Main
+
+echo "
+
+███╗ ███╗ █████╗ ██████╗ ██████╗██╗ ██╗
+████╗ ████║██╔══██╗██╔══██╗██╔════╝██║ ██║
+██╔████╔██║███████║██████╔╝██║ ███████║
+██║╚██╔╝██║██╔══██║██╔══██╗██║ ██╔══██║
+██║ ╚═╝ ██║██║ ██║██║ ██║╚██████╗██║ ██║
+╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝
+
+Mon script personnel pour installer Arch.
+Téléchargement : https://mielota.com/march.sh
+
+Démarrage du programme dans 5 secondes ! Toutes les données du disque seront effacées !
+"
+sleep 5
+
+echo "Configuration de timedatectl..."
+timedatectl set-timezone Europe/Paris || catch_failure
+
+echo "Partition des disques..."
+(
+echo g
+echo n
+echo 1
+echo
+echo +1G
+echo t
+echo 1
+echo 1
+echo n
+echo 2
+echo
+echo
+echo w
+) | fdisk "/dev/nvme0n1" &> /dev/null || catch_failure
+
+echo "Formattage du disque..."
+
+echo "Formattage du ESP..."
+yes | mkfs.fat -F 32 -n ESP /dev/nvme0n1p1 || catch_failure
+
+echo "Formattage du ROOT..."
+yes | mkfs.ext4 -L ROOT /dev/nvme0n1p2 || catch_failure
+
+echo "Montage des partitions..."
+
+echo "Montage de ROOT sur /mnt"
+mount /dev/disk/by-label/ROOT /mnt || catch_failure
+
+echo "Montage de ESP sur /mnt/boot/EFI"
+mount --mkdir /dev/disk/by-label/ESP /mnt/boot/EFI || catch_failure
+
+echo "Configuration des mirroirs de pacstrap... (peut prendre un moment)"
+reflector --country France --age 10 --protocol https --sort rate --save /etc/pacman.d/mirrorlist || catch_failure
+
+echo "Installation des paquets de base sur le système..."
+pacstrap -K /mnt --noconfirm $packages || catch_failure
+
+echo "Génération du fstab..."
+genfstab -U /mnt >> /mnt/etc/fstab || catch_failure
+
+echo "ARCH CHROOT"
+echo "Configurer le temps..."
+ch "ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime"
+ch "hwclock --systohc"
+
+echo "Configuration des langues..."
+ch "echo 'fr_FR.UTF-8 UTF-8' >> /etc/locale.gen"
+ch "locale-gen"
+ch "echo 'LANG=fr_FR.UTF-8' > /etc/locale.conf"
+
+echo "Configuration du KEYMAP vconsole..."
+ch "echo -e 'KEYMAP=fr-latin1\nXKBLAYOUT=fr\nXKBMODEL=pc105\nXKBOPTIONS=terminate:ctrl_alt_bksp\nFONT=ter-132b' > /etc/vconsole.conf"
+
+echo "Application du hostname $hostname..."
+ch "echo '$hostname' > /etc/hostname"
+
+echo "Activation du service NetworkManager..."
+ch "systemctl enable NetworkManager"
+
+echo "Configuration du mot de passe root"
+ch "echo 'root:$rootpasswd' | chpasswd"
+
+echo "Configuration de l'utilisateur $username"
+ch "useradd -m -G wheel $username"
+
+echo "Configuration du mot de passe de $username"
+ch "echo '$username:$userpasswd' | chpasswd"
+
+echo "Installation de GRUB"
+ch "grub-install --target=x86_64-efi --efi-directory=/boot/EFI"
+
+echo "Génération de grub.cfg..."
+ch "grub-mkconfig -o /boot/grub/grub.cfg"
+
+close
diff --git a/artix/home/.local/bin/spawn-alacritty-cwd b/artix/home/.local/bin/spawn-alacritty-cwd
new file mode 100755
index 0000000..dcadff8
--- /dev/null
+++ b/artix/home/.local/bin/spawn-alacritty-cwd
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+ACTIVE_WINDOW_INFO=$(hyprctl activewindow -j)
+
+CLASS=$(echo "$ACTIVE_WINDOW_INFO" | jq -r '.class')
+PID=$(echo "$ACTIVE_WINDOW_INFO" | jq -r '.pid')
+
+if [[ "$CLASS" == "Alacritty" ]]; then
+
+ if [[ -z "$PID" || "$PID" == "null" ]]; then
+ alacritty
+ exit 0
+ fi
+
+ CHILD_PID=$(pgrep -P "$PID" | head -n 1)
+
+ if [[ -z "$CHILD_PID" ]]; then
+ alacritty
+ exit 0
+ fi
+
+ if [[ -e "/proc/$CHILD_PID/cwd" ]]; then
+ SHELL_CWD=$(readlink -f "/proc/$CHILD_PID/cwd")
+ alacritty --working-directory "$SHELL_CWD"
+ else
+ alacritty
+ fi
+
+else
+ alacritty
+fi
diff --git a/artix/home/.local/share/dox/quickconfig b/artix/home/.local/share/dox/quickconfig
new file mode 100644
index 0000000..ca7db0d
--- /dev/null
+++ b/artix/home/.local/share/dox/quickconfig
@@ -0,0 +1,17 @@
+$HOME/.zshenv#zshenv$
+$XDG_CONFIG_HOME/zsh/.zshrc#zshrc$
+$XDG_CONFIG_HOME/zsh/.zprofile#zprofile$
+$XDG_CONFIG_HOME/git/config#git$
+$XDG_CONFIG_HOME/nvim/init.lua#nvim$
+$XDG_CONFIG_HOME/hypr/hyprland.conf#hypr$
+$XDG_CONFIG_HOME/alacritty/alacritty.toml#alacritty$
+$XDG_CONFIG_HOME/kitty/kitty.conf#kitty$
+$XDG_CONFIG_HOME/cava/config#cava$
+$XDG_CONFIG_HOME/dunst/dunstrc#dunst$
+$XDG_CONFIG_HOME/ghostty/config#ghostty$
+$XDG_CONFIG_HOME/helix/config.toml#helix$
+$XDG_CONFIG_HOME/waybar/config.jsonc#waybar$
+$XDG_CONFIG_HOME/waybar/style.css#wstyle$
+$XDG_CONFIG_HOME/zathura/zathurarc#zathura$
+$XDG_CONFIG_HOME/rofi/config.rasi#rofi$
+$XDG_DATA_HOME/dox/quickconfig#edit$
diff --git a/artix/home/.zshenv b/artix/home/.zshenv
new file mode 100644
index 0000000..e341b75
--- /dev/null
+++ b/artix/home/.zshenv
@@ -0,0 +1,20 @@
+export ZDOTDIR="$HOME"/.config/zsh
+export XDG_CONFIG_HOME=$HOME/.config
+export XDG_DATA_HOME=$HOME/.local/share
+export XDG_STATE_HOME=$HOME/.local/state
+export XDG_CACHE_HOME=$HOME/.cache
+export ANDROID_USER_HOME="$XDG_DATA_HOME"/android
+export GNUPGHOME="$XDG_DATA_HOME"/gnupg
+export HISTFILE="$XDG_STATE_HOME"/zsh/history
+export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
+export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history
+export WINEPREFIX="$XDG_DATA_HOME"/wine
+export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
+export CARGO_HOME="$XDG_DATA_HOME"/cargo
+export HISTSIZE=1000
+export SAVEHIST=1000
+export EDITOR=/usr/bin/nvim
+export BROWSER=/usr/bin/firefox
+export TERMINAL=/usr/bin/alacritty
+export PAGER=/usr/bin/less
+export PATH="$HOME/.local/bin:$PATH"