commit 1263f28d031af512529525dc7277d514b5b28a70 Author: seajee Date: Sat Dec 21 12:59:01 2024 +0100 Initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..7407e60 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# dotfiles + +My personal configuration files. + +# Installation + +To simplify the installation of the configuration files, GNU Stow is required. + +Configuration files are divided by category and they can be installed like this: + +```bash +$ stow neovim +``` diff --git a/alacritty/.config/alacritty/alacritty.toml b/alacritty/.config/alacritty/alacritty.toml new file mode 100644 index 0000000..83b94c4 --- /dev/null +++ b/alacritty/.config/alacritty/alacritty.toml @@ -0,0 +1,42 @@ +[window] +startup_mode = "Maximized" +opacity = 0.8 +padding = { x = 10, y = 10 } + +[font] +normal.family = "Iosevka" +bold.family = "Iosevka" +italic.family = "Iosevka" +bold_italic.family = "Iosevka" +size = 14.0 + +[mouse] +hide_when_typing = true + +[colors.primary] +background = "#0E1415" +foreground = "#CECECE" + +[colors.cursor] +text = "#0E1415" +cursor = "#CECECE" + +[colors.normal] +black = "#0E1415" +red = "#e25d56" +green = "#73ca50" +yellow = "#e9bf57" +blue = "#4a88e4" +magenta = "#915caf" +cyan = "#23acdd" +white = "#f0f0f0" + +[colors.bright] +black = "#777777" +red = "#f36868" +green = "#88db3f" +yellow = "#f0bf7a" +blue = "#6f8fdb" +magenta = "#e987e9" +cyan = "#4ac9e2" +white = "#FFFFFF" diff --git a/bash/.bashrc b/bash/.bashrc new file mode 100644 index 0000000..0ae978e --- /dev/null +++ b/bash/.bashrc @@ -0,0 +1,30 @@ +# +# ~/.bashrc +# + +# If not running interactively, don't do anything +[[ $- != *i* ]] && return + +# Aliases +alias ls='ls --color=auto' +alias ll='ls -alhF' +alias grep='grep --color=auto' +alias sl='sl -e' +alias fetch='fastfetch' +alias vim='nvim' +alias vff='vim $(fzf --preview="bat {}")' +alias plasma='/usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland' +alias yt-mp3='yt-dlp --output "%(artist)s - %(title)s.%(ext)s" --extract-audio --embed-metadata --embed-thumbnail --audio-format mp3 --audio-quality 0' +alias yt-mp4='yt-dlp --format "bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4]"' + +# Environment variables +export PATH="$PATH:$HOME/.local/bin" + +BLUE="\[\e[0;34m\]" +RESET="\[\e[0m\]" + +PS1="$BLUEλ \W $ $RESET" + +# Setup zoxide +eval "$(zoxide init --cmd cd bash)" + diff --git a/containers/.config/containers/registries.conf b/containers/.config/containers/registries.conf new file mode 100644 index 0000000..d44d892 --- /dev/null +++ b/containers/.config/containers/registries.conf @@ -0,0 +1 @@ +unqualified-search-registries = ["docker.io"] diff --git a/emacs/.emacs b/emacs/.emacs new file mode 100644 index 0000000..8654b1d --- /dev/null +++ b/emacs/.emacs @@ -0,0 +1,47 @@ +(setq inhibit-startup-message t) + +(tool-bar-mode -1) +(scroll-bar-mode -1) +(menu-bar-mode -1) + +(global-display-line-numbers-mode 1) +(setq display-line-numbers-type 'relative) + +(load-theme 'gruber-darker t) +(set-frame-font "Iosevka 13" nil t) + +(push '(fullscreen . maximized) default-frame-alist) + +(savehist-mode 1) +(save-place-mode 1) + +(setq custom-file "~/.emacs-custom") +(load custom-file 'noerror 'nomessage) + +(setq make-backup-files nil) + +(require 'package) +(add-to-list 'package-archives + '("melpa" . "https://melpa.org/packages/")) +(package-initialize) + +(unless (package-installed-p 'evil) + (package-refresh-contents) + (package-install 'evil)) + +(require 'evil) +(evil-mode 1) + +(unless (package-installed-p 'gruber-darker-theme) + (package-refresh-contents) + (package-install 'gruber-darker-theme)) + +(defun my-c-mode-common-hook () + (c-set-offset 'substatement-open 0) + (setq indent-tabs-mode nil) + (setq tab-width 4) + (setq c-basic-offset 4) + (setq c-indent-level 4) + ) + +(add-hook 'c-mode-common-hook 'my-c-mode-common-hook) diff --git a/git/.gitconfig b/git/.gitconfig new file mode 100644 index 0000000..fa4c8e7 --- /dev/null +++ b/git/.gitconfig @@ -0,0 +1,15 @@ +[user] + name = seajee + email = teapods@proton.me + +[core] + editor = nvim + +[alias] + lg = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(auto)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' + +[init] + defaultBranch = main + +[credential] + helper = store diff --git a/hyprland/.config/hypr/hypridle.conf b/hyprland/.config/hypr/hypridle.conf new file mode 100644 index 0000000..a26c0b6 --- /dev/null +++ b/hyprland/.config/hypr/hypridle.conf @@ -0,0 +1,21 @@ +general { + lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. + before_sleep_cmd = loginctl lock-session # lock before suspend. + after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. +} + +listener { + timeout = 300 # 5min + on-timeout = loginctl lock-session # lock screen when timeout has passed +} + +listener { + timeout = 330 # 5.5min + on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed + on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired. +} + +# listener { +# timeout = 1800 # 30min +# on-timeout = systemctl suspend # suspend pc +# } diff --git a/hyprland/.config/hypr/hyprland.conf b/hyprland/.config/hypr/hyprland.conf new file mode 100644 index 0000000..4f8946a --- /dev/null +++ b/hyprland/.config/hypr/hyprland.conf @@ -0,0 +1,256 @@ +#################### +### DEPENDENCIES ### +#################### + +# sddm hyprland hyprpaper hypridle hyprlock waybar wofi +# hyprshot(AUR) hyprpicker(AUR) +# +# alacritty network-manager-applet blueman +# +# xdg-desktop-portal-hyprland xdg-desktop-portal-gtk archlinux-xdg-menu +# qt5-wayland qt6-wayland qt5ct qt6ct +# breeze kvantum kvantum-qt5 +# +# pipewire pipewire-pulse pipewire-jack wireplumber +# +# polkit-kde-agent swaync + + +################ +### MONITORS ### +################ + +monitor = , preferred, auto, auto + + +################### +### MY PROGRAMS ### +################### + +$terminal = alacritty +$fileManager = dolphin +$menuProgram = wofi +$menu = $menuProgram --show drun + + +################# +### AUTOSTART ### +################# + +exec-once = nm-applet & +exec-once = waybar & hyprpaper +exec-once = hypridle +exec-once = swaync +exec-once = systemctl --user start plasma-polkit-agent + + +############################# +### ENVIRONMENT VARIABLES ### +############################# + +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 +env = QT_QPA_PLATFORM,wayland +env = QT_QPA_PLATFORMTHEME,qt5ct +env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 +env = QT_AUTO_SCREEN_SCALE_FACTOR,1 +# env = QT_SCALE_FACTOR,0.9 +env = QT_STYLE_OVERRIDE,kvantum +env = XDG_MENU_PREFIX,arch- + +##################### +### LOOK AND FEEL ### +##################### + +general { + gaps_in = 5 + gaps_out = 10 + + border_size = 1 + + col.active_border = rgba(383838ee) rgba(484848ee) 45deg + col.inactive_border = rgba(595959aa) + + resize_on_border = false + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false + + layout = dwindle +} + +decoration { + rounding = 8 + + # Change transparency of focused and unfocused windows + active_opacity = 1.0 + inactive_opacity = 1.0 + + drop_shadow = true + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) + + blur { + enabled = true + size = 3 + passes = 1 + + vibrancy = 0.1696 + } +} + +animations { + enabled = true + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 4, myBezier + animation = windowsOut, 1, 4, default, popin 80% + animation = border, 1, 6, default + animation = borderangle, 1, 5, default + animation = fade, 1, 4, default + animation = workspaces, 1, 4, default +} + +dwindle { + pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # You probably want this +} + +master { + new_status = master +} + +misc { + force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( +} + + +############# +### INPUT ### +############# + +input { + kb_layout = it + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + sensitivity = -0.5 # -1.0 - 1.0, 0 means no modification. + accel_profile = flat + + touchpad { + natural_scroll = false + } +} + +gestures { + workspace_swipe = false +} + + +#################### +### KEYBINDINGSS ### +#################### + +$mainMod = SUPER # Sets "Windows" key as main modifier + +bind = $mainMod, Q, exec, $terminal +bind = $mainMod, C, killactive, +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, V, togglefloating, +bind = $mainMod, R, exec, pkill $menuProgram || $menu +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1 +bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2 +bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3 +bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4 +bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5 +bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6 +bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7 +bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8 +bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 +bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 + +# Example special workspace (scratchpad) +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Resize windows with mainMod + CTRL + arrow keys +bind = $mainMod CTRL, left, resizeactive, -60 0 +bind = $mainMod CTRL, right, resizeactive, 60 0 +bind = $mainMod CTRL, up, resizeactive, 0 -60 +bind = $mainMod CTRL, down, resizeactive, 0 60 + +# Swap windows with mainMod + SHIFT + arrow keys +bind = $mainMod SHIFT, left, swapwindow, l +bind = $mainMod SHIFT, right, swapwindow, r +bind = $mainMod SHIFT, up, swapwindow, u +bind = $mainMod SHIFT, down, swapwindow, d + +# Media +bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous +bindl = , XF86AudioNext, exec, playerctl next + +# Screenshots +bind = $mainMod, PRINT, exec, hyprshot -m window -o ~/Pictures/Screenshots --freeze +bind = , PRINT, exec, hyprshot -m output -o ~/Pictures/Screenshots --freeze +bind = $shiftMod, PRINT, exec, hyprshot -m region -o ~/Pictures/Screenshots --freeze + +# Locking +bind = $mainMod, L, exec, pidof hyprlock || hyprlock + +# Waybar +bind = $mainMod, B, exec, pkill -SIGUSR1 waybar +bind = $mainMod, W, exec, pkill waybar || waybar + +############################## +### WINDOWS AND WORKSPACES ### +############################## + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ + +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ + +windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. diff --git a/hyprland/.config/hypr/hyprlock.conf b/hyprland/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..43d415c --- /dev/null +++ b/hyprland/.config/hypr/hyprlock.conf @@ -0,0 +1,60 @@ +background { + monitor = + path = $HOME/Pictures/wallpaper.png +} + +input-field { + monitor = + size = 200, 50 + outline_thickness = 3 + dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8 + dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0 + dots_center = true + dots_rounding = -1 # -1 default circle, -2 follow input-field rounding + outer_color = rgb(151515) + inner_color = rgb(FFFFFF) + font_color = rgb(10, 10, 10) + fade_on_empty = true + fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered. + placeholder_text = Input Password... # Text rendered in the input box when it's empty. + hide_input = false + rounding = -1 # -1 means complete rounding (circle/oval) + check_color = rgb(204, 136, 34) + fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color + fail_text = $FAIL ($ATTEMPTS) # can be set to empty + fail_transition = 300 # transition time in ms between normal outer_color and fail_color + capslock_color = -1 + numlock_color = -1 + bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above) + invert_numlock = false # change color if numlock is off + swap_font_color = false # see below + position = 0, -20 + halign = center + valign = center +} + +label { + monitor = + text = cmd[update:1000] echo "$TIME" + color = rgba(200, 200, 200, 1.0) + font_size = 55 + font_family = Fira Semibold + position = -100, 70 + halign = right + valign = bottom + shadow_passes = 5 + shadow_size = 10 +} + +label { + monitor = + text = $USER + color = rgba(200, 200, 200, 1.0) + font_size = 20 + font_family = Fira Semibold + position = -100, 160 + halign = right + valign = bottom + shadow_passes = 5 + shadow_size = 10 +} diff --git a/hyprland/.config/hypr/hyprpaper.conf b/hyprland/.config/hypr/hyprpaper.conf new file mode 100644 index 0000000..266074a --- /dev/null +++ b/hyprland/.config/hypr/hyprpaper.conf @@ -0,0 +1,2 @@ +preload = ~/Pictures/wallpaper.png +wallpaper = , ~/Pictures/wallpaper.png diff --git a/hyprland/.config/waybar/config.jsonc b/hyprland/.config/waybar/config.jsonc new file mode 100644 index 0000000..0e8c063 --- /dev/null +++ b/hyprland/.config/waybar/config.jsonc @@ -0,0 +1,117 @@ +{ + // "reload_style_on_change": true, + "layer": "top", + "position": "top", + "height": 10, + "margin": 5, + "spacing": 10, + + "modules-left": ["hyprland/workspaces"], + "modules-center": ["hyprland/window"], + "modules-right": [ + "tray", + "idle_inhibitor", + "backlight", + "pulseaudio", + "battery", + "disk", + "memory", + "cpu", + "temperature", + "custom/notification", + "clock" + ], + + "hyprland/workspaces": { + "show-special": true, + "persistent-workspaces": { + "*": [1,2,3,4] + }, + "format": "{icon}", + "format-icons": { + "active": "", + "empty": "", + "default": "", + "urgent": "", + "special": "󰠱" + } + }, + "hyprland/window": { + "icon": true, + "icon-size": 22, + "max-length": 35, + "separate-outputs": true + }, + "tray": { + "spacing": 10 + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "󰛊 ", + "deactivated": "󰾫 " + } + }, + "backlight": { + "interval": 2, + "format": "󰖨 {percent}%", + "on-scroll-up": "brightnessctl set +4", + "on-scroll-down": "brightnessctl set 4-" + }, + "pulseaudio": { + "format": "{icon} {volume}%", + "format-icons": [" ", " ", " ", " ", " "], + "format-muted": "󰝟 ", + "on-click": "qpwgraph" + }, + "battery": { + "interval": 10, + "format": "{icon}{capacity}%", + "format-icons": [ "󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹" ], + "tooltip": true, + "tooltip-format": "{timeTo}" + }, + "disk": { + "intervel": 30, + "format": "󰋊 {percentage_used}%", + "tooltip-format": "{used} used out of {total} on \"{path}\" ({percentage_used}%)" + }, + "memory": { + "interval": 10, + "format": " {used}", + "tooltip-format": "{used}GiB used of {total}GiB ({percentage}%)" + }, + "cpu": { + "interval": 10, + "format": " {usage}%" + }, + "temperature": { + "interval": 10 + }, + "custom/notification": { + "tooltip": false, + "format": "{icon}", + "format-icons": { + "notification": "", + "none": " ", + "dnd-notification": "", + "dnd-none": " ", + "inhibited-notification": "", + "inhibited-none": " ", + "dnd-inhibited-notification": "", + "dnd-inhibited-none": " " + }, + "return-type": "json", + "exec-if": "which swaync-client", + "exec": "swaync-client -swb", + "on-click": "swaync-client -t -sw", + "on-click-right": "swaync-client -d -sw", + "escape": true + }, + "clock": { + "interval":1, + "format": "{:%H:%M:%S}", + "format-alt": "{:%F}", + "tooltip-format": "{calendar}" + } +} diff --git a/hyprland/.config/waybar/style.css b/hyprland/.config/waybar/style.css new file mode 100644 index 0000000..45a1943 --- /dev/null +++ b/hyprland/.config/waybar/style.css @@ -0,0 +1,72 @@ +window#waybar { + font-family: "JetBrains Mono NerdFont"; + background-color: rgba(0,0,0,0); + font-size: 1rem; + border-radius: 0.5rem; +} + +.modules-left, .modules-center { + opacity: 1; + /*background: linear-gradient(45deg, rgb(214, 39, 200), rgb(5, 83, 252));*/ + border-radius: 0.5rem; + padding: 2px; +} + +.modules-right { + opacity: 1; + background-color: rgba(0,0,0,0.5); + border-radius: 0.5rem; + padding: 2px 2px 2px 10px +} + +#workspaces { + background-color: rgba(0,0,0,0.5); + border-radius: 0.5rem; + padding: 0 5px; +} + +#workspaces button { + font-size: 0.8rem; + padding: 0 0.5rem 0 0; +} + +#window { + background-color: rgba(0,0,0,0.5); + border-radius: 0.5rem; + padding: 2px 5px; +} + +window#waybar.empty #window { + background-color: transparent; +} + +#battery { + color: lightgreen; +} + +#memory { + color: lightpink; +} + +#disk { + color: lightskyblue; +} + +#cpu { + color: lightgoldenrodyellow; +} + +#temperature { + color: lightslategray; +} + +#custom-notification { + font-family: "NotoSansMono Nerd Font"; + padding: 0 4px 0 0; +} + +#clock { + font-weight: bolder; + border-radius: 0.5rem; + padding: 0 3px 0 0; +} diff --git a/i3/.config/i3/config b/i3/.config/i3/config new file mode 100644 index 0000000..baab204 --- /dev/null +++ b/i3/.config/i3/config @@ -0,0 +1,195 @@ +set $mod Mod4 + +# Display Wallpaper +exec_always --no-startup-id feh --bg-fill /home/seajee/Pictures/wallpaper.png + +# Polkit +exec --no-startup-id /usr/lib/polkit-kde-authentication-agent-1 + +# Set default layout to tabbed +workspace_layout tabbed + +# Hide window borders when fullscreen +hide_edge_borders smart + +# Disable mouse acceleration +exec_always for id in $(xinput list | grep "pointer" | cut -d '=' -f 2 | cut -f 1); do xinput --set-prop $id 'libinput Accel Profile Enabled' 0, 1; done + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font pango:Iosevka, Regular 10 + +# This font is widely installed, provides lots of unicode glyphs, right-to-left +# text rendering and scalability on retina/hidpi displays (thanks to pango). +#font pango:DejaVu Sans Mono 8 + +# Start XDG autostart .desktop files using dex. See also +# https://wiki.archlinux.org/index.php/XDG_Autostart +exec --no-startup-id dex --autostart --environment i3 + +# The combination of xss-lock, nm-applet and pactl is a popular choice, so +# they are included here as an example. Modify as you see fit. + +# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the +# screen before suspend. Use loginctl lock-session to lock your screen. +exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork + +# NetworkManager is the most popular way to manage wireless networks on Linux, +# and nm-applet is a desktop environment-independent system tray GUI for it. +exec --no-startup-id nm-applet + +# Use pactl to adjust volume in PulseAudio. +set $refresh_i3status killall -SIGUSR1 i3status +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status +bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# move tiling windows via drag & drop by left-clicking into the title bar, +# or left-clicking anywhere into the window while holding the floating modifier. +tiling_drag modifier titlebar + +# start a terminal +#bindsym $mod+Return exec i3-sensible-terminal +bindsym $mod+Return exec alacritty + +# kill focused window +bindsym $mod+Shift+q kill + +# start dmenu (a program launcher) +bindsym $mod+d exec --no-startup-id dmenu_run +# A more modern dmenu replacement is rofi: +# bindcode $mod+40 exec "rofi -modi drun,run -show drun" +# There also is i3-dmenu-desktop which only displays applications shipping a +# .desktop file. It is a wrapper around dmenu, so you need that installed. +# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+ograve focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+ograve move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +#bindsym $mod+d focus child + +# Define names for default workspaces for which we configure key bindings later on. +# We use variables to avoid repeating the names in multiple places. +set $ws1 "1" +set $ws2 "2" +set $ws3 "3" +set $ws4 "4" +set $ws5 "5" +set $ws6 "6" +set $ws7 "7" +set $ws8 "8" +set $ws9 "9" +set $ws10 "10" + +# switch to workspace +bindsym $mod+1 workspace number $ws1 +bindsym $mod+2 workspace number $ws2 +bindsym $mod+3 workspace number $ws3 +bindsym $mod+4 workspace number $ws4 +bindsym $mod+5 workspace number $ws5 +bindsym $mod+6 workspace number $ws6 +bindsym $mod+7 workspace number $ws7 +bindsym $mod+8 workspace number $ws8 +bindsym $mod+9 workspace number $ws9 +bindsym $mod+0 workspace number $ws10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number $ws1 +bindsym $mod+Shift+2 move container to workspace number $ws2 +bindsym $mod+Shift+3 move container to workspace number $ws3 +bindsym $mod+Shift+4 move container to workspace number $ws4 +bindsym $mod+Shift+5 move container to workspace number $ws5 +bindsym $mod+Shift+6 move container to workspace number $ws6 +bindsym $mod+Shift+7 move container to workspace number $ws7 +bindsym $mod+Shift+8 move container to workspace number $ws8 +bindsym $mod+Shift+9 move container to workspace number $ws9 +bindsym $mod+Shift+0 move container to workspace number $ws10 + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'" + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym ograve resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape or $mod+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +bindsym $mod+r mode "resize" + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + status_command i3status +} diff --git a/i3/.config/i3status/config b/i3/.config/i3status/config new file mode 100644 index 0000000..0641b37 --- /dev/null +++ b/i3/.config/i3status/config @@ -0,0 +1,46 @@ +general { + colors = true + interval = 1 + separator = "|" +} + +order += "wireless _first_" +order += "ethernet _first_" +order += "disk /" +order += "memory" +order += "cpu_temperature 0" +order += "cpu_usage" +order += "time" + +ethernet _first_ { + format_up = "E: %ip (%speed)" + format_down = "E: down" +} + +wireless _first_ { + format_up = "W: (%quality at %essid) %ip" + format_down = "W: down" +} + +disk "/" { + format = "/: %percentage_used" +} + +memory { + memory_used_method = classical + format="R: %used/%total" +} + +cpu_temperature 0 { + format = "T: %degrees °C" +} + +cpu_usage { + format = "CPU: %usage" + degraded_threshold = 90 + max_threshold = 95 +} + +time { + format = "%d-%m-%Y %H:%M:%S" +} diff --git a/kitty/.config/kitty/kitty.conf b/kitty/.config/kitty/kitty.conf new file mode 100644 index 0000000..616d7dc --- /dev/null +++ b/kitty/.config/kitty/kitty.conf @@ -0,0 +1,25 @@ +font_family family="UbuntuMono Nerd Font Mono" +bold_font auto +italic_font auto +bold_italic_font auto + +font_size 14.0 + +background_opacity 0.9 +confirm_os_window_close 0 + +linux_display_server auto + +scrollback_lines 2000 +wheel_scroll_min_lines 1 + +enable_audio_bell no + +window_padding_width 4 + +selection_foreground none +selection_background none + +foreground #dddddd +background #181818 +cursor #dddddd diff --git a/neovim/.config/nvim/.luarc.json b/neovim/.config/nvim/.luarc.json new file mode 100644 index 0000000..3ccbb87 --- /dev/null +++ b/neovim/.config/nvim/.luarc.json @@ -0,0 +1,13 @@ +{ + "runtime.version": "LuaJIT", + "runtime.path": [ + "lua/?.lua", + "lua/?/init.lua" + ], + "diagnostics.globals": ["vim"], + "workspace.checkThirdParty": false, + "workspace.library": [ + "$VIMRUNTIME", + "${3rd}/luv/library" + ] +} diff --git a/neovim/.config/nvim/init.lua b/neovim/.config/nvim/init.lua new file mode 100644 index 0000000..6c45259 --- /dev/null +++ b/neovim/.config/nvim/init.lua @@ -0,0 +1,315 @@ +-- Set as the leader key +vim.g.mapleader = " " +vim.g.maplocalleader = " " + +-- [[ Setting options ]] + +-- Fat cursor +vim.opt.guicursor = "" + +-- Make relative line numbers default +vim.opt.number = true +vim.opt.relativenumber = true + +-- Use 4 spaces as tab +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 +vim.opt.shiftwidth = 4 +vim.opt.expandtab = true + +-- Smart indentantion +vim.opt.smartindent = true + +-- Enable mouse mode +vim.opt.mouse = "a" + +-- Don't show the mode, since it's already in the status line +vim.opt.showmode = true -- false + +-- Enable break indent +vim.opt.breakindent = true + +-- Save undo history +vim.opt.undofile = true +vim.opt.undodir = os.getenv("HOME") .. "/.vim/nvim_undodir" +vim.opt.swapfile = false +vim.opt.backup = false + +-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term +vim.opt.ignorecase = true +vim.opt.smartcase = true + +-- Incremental search +vim.opt.incsearch = true + +-- Keep signcolumn on by default +vim.opt.signcolumn = "yes" +vim.opt.colorcolumn = "79" -- RFC 5322 + +-- Decrease update time +vim.opt.updatetime = 250 + +-- Decrease mapped sequence wait time +-- Displays which-key popup sooner +vim.opt.timeoutlen = 300 + +-- Configure how new splits should be opened +vim.opt.splitright = true +vim.opt.splitbelow = false + +-- Sets how neovim will display certain whitespace characters in the editor +vim.opt.list = false +vim.opt.listchars = { tab = "» ", space = "·", trail = "·", nbsp = "␣" } + +-- Preview substitutions live, as you type! +vim.opt.inccommand = "nosplit" + +-- Show which line your cursor is on +vim.opt.cursorline = false + +-- Minimal number of screen lines to keep above and below the cursor. +vim.opt.scrolloff = 0 + +-- [[ Keymaps ]] + +-- Set highlight on search, but clear on pressing in normal mode +vim.opt.hlsearch = true +vim.keymap.set("n", "", "nohlsearch") + +-- Netrw +vim.keymap.set("n", "pv", vim.cmd.Ex) + +-- Move through quick fixes +vim.keymap.set("n", "", "cnext") +vim.keymap.set("n", "", "cprev") + +-- Move text in visual mode +vim.keymap.set("v", "J", "m '>+1gv=gv") +vim.keymap.set("v", "K", "m '<-2gv=gv") + +-- Query replace selected text in visual mode +vim.keymap.set("v", "", "y:%s/0//gc") + +-- Center screen with vim motions +vim.keymap.set("n", "", "zz") +vim.keymap.set("n", "", "zz") +vim.keymap.set("n", "n", "nzzzv") +vim.keymap.set("n", "N", "Nzzzv") + +-- System clipboard +vim.keymap.set("n", "y", "\"+y") +vim.keymap.set("v", "y", "\"+y") +vim.keymap.set("n", "Y", "\"+Y") + +-- Delete without copying +vim.keymap.set("n", "d", "\"_d") +vim.keymap.set("v", "d", "\"_d") + +-- Delete all marks +vim.keymap.set("n", "dm", "delmarks!") + +-- Toggle listchars +vim.keymap.set("n", "lc", "set list") +vim.keymap.set("n", "ln", "set nolist") + +-- Make executable +vim.keymap.set("n", "x", "!chmod +x %", { silent = true }) + +-- Change CWD for current tab +vim.keymap.set("n", "cd", "cd %:h | pwd", { silent = true }) + +-- Tabs +vim.keymap.set("n", "tt", "tabnew") +vim.keymap.set("n", "tw", "tabc") +vim.keymap.set("n", "tn", "tabn") +vim.keymap.set("n", "tp", "tabp") +vim.keymap.set("n", "tr", "tabr") +vim.keymap.set("n", "tl", "tabl") + +-- Buffers +vim.keymap.set("n", "bc", "enew") +vim.keymap.set("n", "bn", "bn") +vim.keymap.set("n", "bp", "bp") +vim.keymap.set("n", "\\", "b term") + +-- Diagnostic keymaps +vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, { desc = "Go to previous [D]iagnostic message" }) +vim.keymap.set("n", "]d", vim.diagnostic.goto_next, { desc = "Go to next [D]iagnostic message" }) +vim.keymap.set("n", "e", vim.diagnostic.open_float, { desc = "Show diagnostic [E]rror messages" }) +vim.keymap.set("n", "q", vim.diagnostic.setloclist, { desc = "Open diagnostic [Q]uickfix list" }) + +-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier +vim.keymap.set("t", "", "", { desc = "Exit terminal mode" }) + +-- [[ Install `lazy.nvim` plugin manager ]] + +local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim" +if not vim.loop.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) + +-- [[ Configure and install plugins ]] + +require("lazy").setup({ + -- "gc" to comment visual regions/lines + { "numToStr/Comment.nvim", opts = {} }, + + -- Adds git related signs to the gutter, as well as utilities for managing changes + { + "lewis6991/gitsigns.nvim", + config = function() + require("gitsigns").setup() + vim.keymap.set("n", "gp", "Gitsigns preview_hunk") + vim.keymap.set("n", "gb", "Gitsigns toggle_current_line_blame") + end + }, + + -- Fuzzy Finder (files, lsp, etc) + { + "nvim-telescope/telescope.nvim", + branch = "0.1.x", + dependencies = { "nvim-lua/plenary.nvim" }, + config = function() + local builtin = require('telescope.builtin') + vim.keymap.set('n', 'ff', builtin.find_files, {}) + vim.keymap.set('n', 'fg', builtin.live_grep, {}) + vim.keymap.set('n', 'fb', builtin.buffers, {}) + vim.keymap.set('n', 'fh', builtin.help_tags, {}) + end + }, + + -- Advanced Undo tree + { + "mbbill/undotree", + config = function() + vim.keymap.set("n", "u", vim.cmd.UndotreeToggle) + end + }, + + -- Custom Neovim status line + { + "nvim-lualine/lualine.nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, + config = function() + require("lualine").setup({ + options = { + theme = "auto", + globalstatus = false, + component_separators = { left = "", right = "" }, + section_separators = { left = "", right = "" } + } + }) + end + }, + + -- Colorscheme + { + -- "blazkowolf/gruber-darker.nvim", + -- "ellisonleao/gruvbox.nvim", + -- "rebelot/kanagawa.nvim", + -- "vague2k/vague.nvim", + -- "savq/melange-nvim", + "bartekjaszczak/gruv-vsassist.nvim", + config = function() + local theme = "gruv-vsassist" + vim.cmd.colorscheme(theme) + end + }, + + -- Transparency + { "xiyaowong/transparent.nvim" }, + + -- Multi cursor editing + { "mg979/vim-visual-multi" }, + + -- Git integration + { + "tpope/vim-fugitive", + config = function() + vim.keymap.set("n", "gs", "G") + end + }, + + -- Place, toggle and display marks + { "kshenoy/vim-signature" }, + + -- Center text in the middle of the screen + { "smithbm2316/centerpad.nvim" }, + + -- Treesitter + { + "nvim-treesitter/nvim-treesitter", + build = ":TSUpdate", + config = function() + local configs = require("nvim-treesitter.configs") + + configs.setup({ + sync_install = false, + highlight = { enable = true }, + indent = { enable = true }, + }) + end + }, + + -- LSP + --[[ + { + "VonHeikemen/lsp-zero.nvim", + dependencies = { + "williamboman/mason.nvim", + "williamboman/mason-lspconfig.nvim", + "neovim/nvim-lspconfig", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/nvim-cmp", + "hrsh7th/cmp-buffer", + "L3MON4D3/LuaSnip", + }, + branch = "v3.x", + config = function() + local lsp_zero = require("lsp-zero") + lsp_zero.on_attach(function(client, bufnr) + -- LSP keymaps + lsp_zero.default_keymaps({ buffer = bufnr }) + + local toggle_diagnostics = function() + vim.diagnostic.enable(not vim.diagnostic.is_enabled()) + end + -- vim.diagnostic.enable(false) + + vim.keymap.set("n", "gr", "Telescope lsp_references", { buffer = bufnr }) + vim.keymap.set("n", "td", toggle_diagnostics) + end) + lsp_zero.set_server_config({ + on_init = function(client) + client.server_capabilities.semanticTokensProvider = nil + end, + }) + + require("mason").setup({}) + require("mason-lspconfig").setup({ + handlers = { + function(server_name) + require("lspconfig")[server_name].setup({}) + end + } + }) + + local cmp = require("cmp") + local cmp_format = require("lsp-zero").cmp_format({ details = true }) + + cmp.setup({ + completion = { + autocomplete = false + }, + sources = { + { name = "nvim_lsp" }, + { name = "buffer" }, + }, + formatting = cmp_format, + }) + end + } + ]] +}) diff --git a/paru/.config/paru/paru.conf b/paru/.config/paru/paru.conf new file mode 100644 index 0000000..6f2efb0 --- /dev/null +++ b/paru/.config/paru/paru.conf @@ -0,0 +1,39 @@ +# +# $PARU_CONF +# /etc/paru.conf +# ~/.config/paru/paru.conf +# +# See the paru.conf(5) manpage for options + +# +# GENERAL OPTIONS +# +[options] +PgpFetch +Devel +Provides +DevelSuffixes = -git -cvs -svn -bzr -darcs -always -hg -fossil +#AurOnly +#BottomUp +RemoveMake = ask +#SudoLoop +#UseAsk +#SaveChanges +#CombinedUpgrade +#CleanAfter +#UpgradeMenu +#NewsOnUpgrade + +#LocalRepo +#Chroot +#Sign +#SignDb +#KeepRepoCache + +# +# Binary OPTIONS +# +#[bin] +#FileManager = vifm +#MFlags = --skippgpcheck +#Sudo = doas diff --git a/theme/.config/Kvantum/kvantum.kvconfig b/theme/.config/Kvantum/kvantum.kvconfig new file mode 100644 index 0000000..402e301 --- /dev/null +++ b/theme/.config/Kvantum/kvantum.kvconfig @@ -0,0 +1,2 @@ +[General] +theme=KvArcDark diff --git a/theme/.config/qt5ct/qt5ct.conf b/theme/.config/qt5ct/qt5ct.conf new file mode 100644 index 0000000..b11fc3a --- /dev/null +++ b/theme/.config/qt5ct/qt5ct.conf @@ -0,0 +1,32 @@ +[Appearance] +color_scheme_path=/usr/share/qt5ct/colors/airy.conf +custom_palette=false +icon_theme=breeze-dark +standard_dialogs=default +style=kvantum-dark + +[Fonts] +fixed="Hack,10,-1,5,50,0,0,0,0,0,Regular" +general="Noto Sans,10,-1,5,50,0,0,0,0,0,Regular" + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=0 +cursor_flash_time=1000 +dialog_buttons_have_icons=1 +double_click_interval=400 +gui_effects=@Invalid() +keyboard_scheme=2 +menus_have_icons=true +show_shortcuts_in_context_menus=true +stylesheets=@Invalid() +toolbutton_style=4 +underline_shortcut=1 +wheel_scroll_lines=3 + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\x99\0\0\x2\xcd\0\0\0\0\0\0\0\0\0\0\x5U\0\0\x2\xff\0\0\0\0\x2\0\0\0\x5V\0\0\0\0\0\0\0\0\0\0\x2\x99\0\0\x2\xcd) + +[Troubleshooting] +force_raster_widgets=1 +ignored_applications=@Invalid() diff --git a/theme/.config/qt6ct/qt6ct.conf b/theme/.config/qt6ct/qt6ct.conf new file mode 100644 index 0000000..ee22f57 --- /dev/null +++ b/theme/.config/qt6ct/qt6ct.conf @@ -0,0 +1,32 @@ +[Appearance] +color_scheme_path=/usr/share/qt6ct/colors/airy.conf +custom_palette=false +icon_theme=breeze-dark +standard_dialogs=default +style=kvantum-dark + +[Fonts] +fixed="Hack,10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular" +general="Noto Sans,10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular" + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=0 +cursor_flash_time=1000 +dialog_buttons_have_icons=1 +double_click_interval=400 +gui_effects=@Invalid() +keyboard_scheme=2 +menus_have_icons=true +show_shortcuts_in_context_menus=true +stylesheets=@Invalid() +toolbutton_style=4 +underline_shortcut=1 +wheel_scroll_lines=3 + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x5?\0\0\x2\xc1\0\0\0\0\0\0\0\0\0\0\x2\xaa\0\0\x2\xd7\0\0\0\0\x2\0\0\0\x5V\0\0\0\0\0\0\0\0\0\0\x5?\0\0\x2\xc1) + +[Troubleshooting] +force_raster_widgets=1 +ignored_applications=@Invalid() diff --git a/tmux/.tmux.conf b/tmux/.tmux.conf new file mode 100644 index 0000000..1a8595f --- /dev/null +++ b/tmux/.tmux.conf @@ -0,0 +1,8 @@ +set -s escape-time 0 + +set -g status-bg black +set -g status-fg yellow + +set-window-option -g mode-keys vi + +bind-key -n C-t set-option -g status diff --git a/vim/.vim/colors/GruberDarker.vim b/vim/.vim/colors/GruberDarker.vim new file mode 100644 index 0000000..1bd9d87 --- /dev/null +++ b/vim/.vim/colors/GruberDarker.vim @@ -0,0 +1,228 @@ +" GruberDarker Theme for Vim +" +" Adapted from an Emacs theme: +" https://github.com/rexim/gruber-darker-theme +" +" Colorscheme template: https://github.com/mhartington/oceanic-next/blob/master/colors/OceanicNext.vim +" -------------------------------------------- + +" {{{ Setup + set background=dark + hi clear + if exists("syntax_on") + syntax reset + endif + let g:colors_name="GruberDarker" +" }}} +" {{{ Italics + let g:gruber_terminal_italic = get(g:, 'gruber_terminal_italic', 0) + let s:italic = "" + if g:gruber_terminal_italic == 1 + let s:italic = "italic" + endif +"}}} +" {{{ Bold + let g:gruber_terminal_bold = get(g:, 'gruber_terminal_bold', 0) + let s:bold = "" + if g:gruber_terminal_bold == 1 + let s:bold = "bold" + endif +"}}} +" {{{ Colors + let s:gruberFG=['#e4e4ef', '253'] + let s:gruberFG1=['#f4f4ff', '254'] + let s:gruberFG2=['#f5f5ff', '240'] + let s:gruberFG3=['#65737e', '243'] + let s:gruberWhite=['#ffffff', '15'] + let s:gruberBlack=['#000000', '0'] + let s:gruberBG=['#181818', '233'] + let s:gruberBG1=['#282828', '235'] + let s:gruberBG2=['#453d41', '238'] + let s:gruberLightRed=['#c73c3f', '203'] + let s:gruberRed=['#f43841', '160'] + let s:gruberNiagara=['#96a6c8', '147'] + let s:gruberQuartz=['#95a99f', '108'] + let s:gruberGreen=['#73c936', '70'] + let s:gruberMain=['#ffdd33', '220'] + let s:gruberBrown=['#cc8c3c', '172'] + let s:gruberPurple=['#9e95c7', '98'] + let s:gruberLightBlue=['#0087d7', '32'] + let s:gruberBlue=['#0000d7', '20'] + let s:gruberGold=['#d7af00', '178'] + let s:none=['NONE', 'NONE'] + +" {{{ Highlight function +function! hi(group, fg, bg, attr, attrsp) + " fg, bg, attr, attrsp + if !empty(a:fg) + exec "hi " . a:group . " guifg=" . a:fg[0] + exec "hi " . a:group . " ctermfg=" . a:fg[1] + endif + if !empty(a:bg) + exec "hi " . a:group . " guibg=" . a:bg[0] + exec "hi " . a:group . " ctermbg=" . a:bg[1] + endif + if a:attr != "" + exec "hi " . a:group . " gui=" . a:attr + exec "hi " . a:group . " cterm=" . a:attr + endif + if !empty(a:attrsp) + exec "hi " . a:group . " guisp=" . a:attrsp[0] + endif +endfunction +" }}} +" {{{ call :hi(group, fg, bg, gui, guisp) +call hi('Bold', '', '', 'bold', '') +call hi('Debug', s:gruberFG2, '', '', '') +call hi('Directory', s:gruberLightBlue, '', '', '') +call hi('ErrorMsg', s:gruberWhite, s:gruberRed, '', '') +call hi('Exception', s:gruberBrown, '', '', '') +call hi('FoldColumn', s:gruberBrown, s:gruberFG2, '', '') +call hi('Folded', s:gruberBrown, s:gruberFG2, s:italic, '') +call hi('IncSearch', s:gruberBlack, s:gruberFG2, 'NONE', '') +call hi('Italic', '', '', s:italic, '') + +call hi('Macro', s:gruberFG, '', '', '') +call hi('MatchParen', s:gruberBG2, s:gruberMain, '', '') +call hi('ModeMsg', s:gruberFG2, '', '', '') +call hi('MoreMsg', s:gruberFG2, '', '', '') +call hi('Question', s:gruberNiagara, '', '', '') +call hi('Search', s:gruberBlack, s:gruberMain, '', '') +call hi('SpecialKey', s:gruberFG2, '', '', '') +call hi('TooLong', s:gruberFG2, '', '', '') +call hi('Underlined', s:gruberPurple, '', '', '') +call hi('Visual', '', s:gruberBG2, '', '') +call hi('VisualNOS', s:gruberRed, '', '', '') +call hi('WarningMsg', s:gruberRed, '', '', '') +call hi('WildMenu', s:gruberBlack, s:gruberMain, '', '') +call hi('Title', s:gruberQuartz, '', '', '') +call hi('Conceal', s:gruberFG, s:gruberBG, '', '') +call hi('Cursor', s:gruberBG, s:gruberFG, '', '') +call hi('NonText', s:gruberFG2, '', '', '') +call hi('Normal', s:gruberFG, s:gruberBG, '', '') +call hi('EndOfBuffer', s:gruberFG, s:gruberBG, '', '') +call hi('LineNr', s:gruberFG, s:gruberBG, '', '') +call hi('SignColumn', s:none, s:none, '', '') +call hi('VertSplit', s:gruberFG2, s:gruberBG1, '', '') +call hi('ColorColumn', '', s:gruberBG2, '', '') +call hi('CursorColumn', '', s:gruberBG2, '', '') +call hi('CursorLine', '', s:gruberBG2, 'NONE', '') +call hi('CursorLineNr', s:gruberMain, s:gruberBG, '', '') +call hi('PMenu', s:gruberFG, s:gruberBG1, '', '') +call hi('PMenuSel', s:gruberFG, s:gruberBG2, '', '') +call hi('PmenuSbar', '', s:gruberBG, '', '') +call hi('PmenuThumb', '', s:gruberBG, '', '') +call hi('helpExample', s:gruberMain, '', '', '') +call hi('helpCommand', s:gruberMain, '', '', '') + +" Standard syntax highlighting +call hi('Boolean', s:gruberQuartz, '', '', '') +call hi('Character', s:gruberGreen, '', '', '') +call hi('Comment', s:gruberBrown, '', s:italic, '') +call hi('Conditional', s:gruberMain, '', '', '') +call hi('Constant', s:gruberQuartz, '', '', '') +call hi('Define', s:gruberMain, '', '', '') +call hi('Delimiter', s:gruberFG, '', '', '') +call hi('Float', s:gruberQuartz, '', '', '') +call hi('Function', s:gruberNiagara, '', '', '') +call hi('Identifier', s:gruberNiagara, '', '', '') +call hi('Include', s:gruberMain, '', '', '') +call hi('Keyword', s:gruberMain, '', '', '') +call hi('Label', s:gruberFG, '', '', '') +call hi('Number', s:gruberQuartz, '', '', '') +call hi('Operator', s:gruberFG, '', '', '') +call hi('PreProc', s:gruberFG1, '', '', '') +call hi('Repeat', s:gruberMain, '', '', '') +call hi('Special', s:gruberMain, '', '', '') +call hi('SpecialChar', s:gruberMain, '', '', '') +call hi('Statement', s:gruberMain, '', '', '') +call hi('StorageClass', s:gruberMain, '', '', '') +call hi('String', s:gruberGreen, '', '', '') +call hi('Structure', s:gruberMain, '', '', '') +call hi('Todo', s:gruberBG, s:gruberMain, '', '') +call hi('Type', s:gruberQuartz, '', '', '') +call hi('Typedef', s:gruberQuartz, '', '', '') + +call hi('SpellBad', '', '', 'undercurl', '') +call hi('SpellLocal', '', '', 'undercurl', '') +call hi('SpellCap', '', '', 'undercurl', '') +call hi('SpellRare', '', '', 'undercurl', '') + +" Haskell Highlighting +call hi('hsTypeDef', s:gruberMain, '', '', '') +call hi('hsStructure', s:gruberMain, '', '', '') +call hi('hsStatement', s:gruberMain, '', '', '') +call hi('hsconditional', s:gruberMain, '', '', '') +call hi('hsconditional', s:gruberMain, '', '', '') +call hi('hsconditional', s:gruberMain, '', '', '') + +" Java Highlighting +" TODO Fix function definitions +call hi('javaConstant', s:gruberQuartz, '', '', '') +call hi('javaConditional', s:gruberMain, '', '', '') +call hi('javaOperator', s:gruberMain, '', '', '') +call hi('javaExceptions', s:gruberMain, '', '', '') +call hi('javaAssert', s:gruberMain, '', '', '') +call hi('javaClassDecl', s:gruberMain, '', '', '') +call hi('javaBraces', s:gruberFG, '', '', '') +call hi('javaLangObject', s:gruberFG, '', '', '') +call hi('javaType', s:gruberQuartz, '', '', '') + +" Python Highlighting +call hi('pythonRepeat', s:gruberMain, '', '', '') +call hi('pythonOperator', s:gruberMain, '', '', '') +call hi('pythonException', s:gruberMain, '', '', '') + + +call hi('markdownCode', s:gruberGreen, '', '', '') +call hi('markdownCodeBlock', s:gruberGreen, '', '', '') +call hi('markdownHeadingDelimiter', s:gruberNiagara, '', '', '') +call hi('markdownItalic', s:gruberPurple, '', s:italic, '') +call hi('markdownBold', s:gruberMain, '', s:bold, '') +call hi('markdownCodeDelimiter', s:gruberBrown, '', s:italic, '') +call hi('markdownError', s:gruberFG, s:gruberBG1, '', '') + +call hi('ALEErrorSign', s:gruberRed, s:gruberBG2, s:bold, '') +call hi('ALEWarningSign', s:gruberMain, s:gruberBG2, s:bold, '') +call hi('ALEInfoSign', s:gruberGreen, s:gruberBG2, s:bold, '') + +call hi('NERDTreeExecFile', s:gruberFG, '', '', '') +call hi('NERDTreeDirSlash', s:gruberNiagara, '', '', '') +call hi('NERDTreeOpenable', s:gruberNiagara, '', '', '') +call hi('NERDTreeFile', '', s:none, '', '') +call hi('NERDTreeFlags', s:gruberNiagara, '', '', '') + +call hi('vimfilerLeaf', s:gruberFG, '', '', '') +call hi('vimfilerNormalFile', s:gruberFG, s:gruberBG1, '', '') +call hi('vimfilerOpenedFile', s:gruberNiagara, '', '', '') +call hi('vimfilerClosedFile', s:gruberNiagara, '', '', '') + +" }}} + +let g:terminal_color_0=s:gruberBG1[0] +let g:terminal_color_8=s:gruberBG1[0] + +let g:terminal_color_1=s:gruberLightRed[0] +let g:terminal_color_9=s:gruberLightRed[0] + +let g:terminal_color_2=s:gruberGreen[0] +let g:terminal_color_10=s:gruberGreen[0] + +let g:terminal_color_3=s:gruberMain[0] +let g:terminal_color_11=s:gruberMain[0] + +let g:terminal_color_4=s:gruberNiagara[0] +let g:terminal_color_12=s:gruberNiagara[0] + +let g:terminal_color_5=s:gruberPurple[0] +let g:terminal_color_13=s:gruberPurple[0] + +let g:terminal_color_6=s:gruberNiagara[0] +let g:terminal_color_14=s:gruberNiagara[0] + +let g:terminal_color_7=s:gruberFG[0] +let g:terminal_color_15=s:gruberFG[0] + +let g:terminal_color_background=s:gruberBG1[0] +let g:terminal_color_foreground=s:gruberWhite[0] + diff --git a/vim/.vimrc b/vim/.vimrc new file mode 100644 index 0000000..4250a66 --- /dev/null +++ b/vim/.vimrc @@ -0,0 +1,142 @@ +" Set as the leader key +let mapleader = " " +let maplocalleader = " " + +" [[ Setting options ]] + +" Fat cursor +set guicursor= + +" Make relative line numbers default +set number +set relativenumber + +" Use 4 spaces as tab +set tabstop=4 +set softtabstop=4 +set shiftwidth=4 +set expandtab + +" Smart indentation +set smartindent + +" Enable mouse mode +set mouse=a + +" Don't show the mode, since it's already in the status line +" set noshowmode + +" Enable break indent +set breakindent + +" Save undo history +set undofile +let &undodir = $HOME . "/.vim/undodir" +set noswapfile +set nobackup + +" Case-insensitive searching UNLESS \C or one or more capital letters in the search term +set ignorecase +set smartcase + +" Incremental search +set incsearch + +" Keep signcolumn on by default +set signcolumn=yes +set colorcolumn=79 + +" Decrease update time +set updatetime=250 + +" Decrease mapped sequence wait time +" Displays which-key popup sooner +set timeoutlen=300 + +" Configure how new splits should be opened +set splitright +set splitbelow + +" Sets how Vim will display certain whitespace characters in the editor +set nolist +set listchars=tab:»\ ,space:·,trail:·,nbsp:␣ + +" Preview substitutions live, as you type! +" set inccommand=nosplit + +" Show which line your cursor is on +set nocursorline + +" Minimal number of screen lines to keep above and below the cursor. +set scrolloff=0 + +" [[ Keymaps ]] + +" Set highlight on search, but clear on pressing in normal mode +set hlsearch +nnoremap :nohlsearch + +" Netrw +nnoremap pv :Ex + +" Move through quick fixes +nnoremap :cnext +nnoremap :cprev + +" Move text in visual mode +vnoremap J :m '>+1gv=gv +vnoremap K :m '<-2gv=gv + +" Center screen with Vim motions +nnoremap zz +nnoremap zz +nnoremap n nzzzv +nnoremap N Nzzzv + +" System clipboard +nnoremap y "+y +vnoremap y "+y +nnoremap Y "+Y + +" Delete without copying +nnoremap d "_d +vnoremap d "_d + +" Delete all marks +nnoremap dm :delmarks! + +" Toggle listchars +nnoremap lc :set list +nnoremap ln :set nolist + +" Make executable +nnoremap x :!chmod +x % + +" Change CWD for current tab +nnoremap cd :cd %:h \| pwd + +" Tabs +nnoremap tt :tabnew +nnoremap tw :tabc +nnoremap tn :tabn +nnoremap tp :tabp +nnoremap tr :tabr +nnoremap tl :tabl + +" Buffers +nnoremap bc :enew +nnoremap bn :bn +nnoremap bp :bp + +" Exit terminal mode in the builtin terminal with a shortcut that is a bit easier +tnoremap + +" [[ Colorscheme ]] +syntax on +colorscheme GruberDarker + +" [[ GVim options ]] + +" Gui options +set guioptions-=T +set guifont=Iosevka\ 14 diff --git a/xorg/00-keyboard.conf b/xorg/00-keyboard.conf new file mode 100644 index 0000000..30303de --- /dev/null +++ b/xorg/00-keyboard.conf @@ -0,0 +1,5 @@ +Section "InputClass" + Identifier "system-keyboard" + MatchIsKeyboard "on" + Option "XkbLayout" "it" +EndSection diff --git a/xorg/00-mouse.conf b/xorg/00-mouse.conf new file mode 100644 index 0000000..5a0ed7c --- /dev/null +++ b/xorg/00-mouse.conf @@ -0,0 +1,7 @@ +Section "InputClass" + Identifier "my_mouse" + MatchIsPointer "yes" + Option "AccelerationProfile" "-1" + Option "AccelerationScheme" "none" + Option "AccelSpeed" "-1" +EndSection diff --git a/xorg/20-nvidia.conf b/xorg/20-nvidia.conf new file mode 100644 index 0000000..e919ea9 --- /dev/null +++ b/xorg/20-nvidia.conf @@ -0,0 +1,6 @@ +Section "Device" + Identifier "NVIDIA Card" + Driver "nvidia" + VendorName "NVIDIA Corporation" + BoardName "GeForce GTX 1050" +EndSection