diff options
Diffstat (limited to 'artix')
34 files changed, 1645 insertions, 0 deletions
diff --git a/artix/Makefile b/artix/Makefile new file mode 100644 index 0000000..a3bdf57 --- /dev/null +++ b/artix/Makefile @@ -0,0 +1,21 @@ +all: stow + +stow: + mkdir -p $$HOME/.local/bin/ $$HOME/.local/share/ $$HOME/.config/ + stow -v -t $$HOME -R home + +unstow: + stow -v -t $$HOME -D home + +artix: + pacman -S --needed hyprland hyprpicker alacritty waybar dunst grim wl-clipboard slurp xdg-desktop-portal-hyprland xdg-user-dirs ttf-0xproto-nerd zsh zsh-autosuggestions zsh-syntax-highlighting brightnessctl firefox zathura-pdf-poppler thunderbird keepassxc mpv yt-dlp nsxiv pavucontrol time tree openssh man-db man-pages pacman-contrib stow fzf syncthing ufw-openrc chrony-openrc rofi hyprpolkitagent + @echo " Change your shell to zsh (chsh -s /bin/zsh)" + @echo " Enable ufw" + @echo " Enable chrony" + +lsp: + paru -S --needed lua-language-server jdtls vscode-langservers-extracted clang tinymist marksman lemminx pyright rustup typescript typescript-language-server + +pac: + paccache -r + pacman -Qdtq | pacman -Rns - 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" |
