diff --git a/.vimrc b/.vimrc deleted file mode 100644 index 8793f13..0000000 --- a/.vimrc +++ /dev/null @@ -1,35 +0,0 @@ -set nocompatible " be iMproved, required -filetype off " required - -syntax on -colorscheme onedark - -" set the runtime path to include Vundle and initialize -set rtp+=~/.vim/bundle/Vundle.vim -call vundle#begin() - -" let Vundle manage Vundle, required -Plugin 'VundleVim/Vundle.vim' - -" Plugins -Plugin 'godlygeek/tabular' -" Plugin 'preservim/vim-markdown' -Plugin 'vim-pandoc/vim-pandoc' -Plugin 'vim-pandoc/vim-pandoc-syntax' -Plugin 'WolfgangMehner/latex-support' - - -call vundle#end() " required -filetype plugin indent on " required - -set number relativenumber - -nnoremap :tabprevious -nnoremap :tabnext -nnoremap :tabprevious -nnoremap :tabnext -nnoremap :tabclose - -:command Ttp !pdflatex %:t - -set shell=/bin/bash diff --git a/LICENSE b/LICENSE index 1b9dc39..7cacbe2 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 William H. +Copyright (c) 2025 William Hergès. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 15652cd..5884ea3 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,4 @@ # dotfiles -This is my personnal dotfiles. +My personnal dotfiles of my workstation powered by The Void, Sway and fish. -## Installation - -To install the dotfiles, follow this steps: - -1. Clone the repo -```bash -git clone https://github.com/anhgelus/dotfiles.git -``` -2. Go inside the new dotfiles folder -3. Run the install.sh -```bash -sh install.sh -``` -4. Put your desktop wallpaper inside `~/Images/wallpapers/wallpaper.jpg` and your LightDM wallpaper inside `/usr/share/anhgelus/lightdm-wallpaper.jpg` -5. Restart and it works! - - -## Versioning - -The versioning of this repository do not follow the semver because the semver is just useless for this usage. - -Every tag of this repository must follow these guidelines: -1. DD[.patch]-month-YYYY -2. "[\*]" is not a required part -3. "DD" is for the day (number) -4. "path" is for the path number -5. "month" is for the month (full letters) -6. "YYYY" is for the year (number" - -`15.1-march-2023` is for the second version of the 03/15/2023 (MM-DD-YYYY) or 15/03/2023 (DD-MM-YYYY) - -## Technologies - -> WM: `i3` -> -> Lockscreen: `LightDM` -> -> OS: `EndeavourOs` -> -> Packet Manager: `yay`, `flatpak` and `snap` -> -> Other: `picom jonaburg_fix` ([here](https://github.com/Arian8j2/picom-jonaburg-fix)), `polybar` and `rofi` diff --git a/config/fish/completions/bun.fish b/config/fish/completions/bun.fish new file mode 100644 index 0000000..e262bb6 --- /dev/null +++ b/config/fish/completions/bun.fish @@ -0,0 +1,186 @@ +# This is terribly complicated +# It's because: +# 1. bun run has to have dynamic completions +# 2. there are global options +# 3. bun {install add remove} gets special options +# 4. I don't know how to write fish completions well +# Contributions very welcome!! + +function __fish__get_bun_bins + string split ' ' (bun getcompletes b) +end + +function __fish__get_bun_scripts + set -lx SHELL bash + set -lx MAX_DESCRIPTION_LEN 40 + string trim (string split '\n' (string split '\t' (bun getcompletes z))) +end + +function __fish__get_bun_packages + if test (commandline -ct) != "" + set -lx SHELL fish + string split ' ' (bun getcompletes a (commandline -ct)) + end +end + +function __history_completions + set -l tokens (commandline --current-process --tokenize) + history --prefix (commandline) | string replace -r \^$tokens[1]\\s\* "" | string replace -r \^$tokens[2]\\s\* "" | string split ' ' +end + +function __fish__get_bun_bun_js_files + string split ' ' (bun getcompletes j) +end + +set -l bun_install_boolean_flags yarn production optional development no-save dry-run force no-cache silent verbose global +set -l bun_install_boolean_flags_descriptions "Write a yarn.lock file (yarn v1)" "Don't install devDependencies" "Add dependency to optionalDependencies" "Add dependency to devDependencies" "Don't update package.json or save a lockfile" "Don't install anything" "Always request the latest versions from the registry & reinstall all dependencies" "Ignore manifest cache entirely" "Don't output anything" "Excessively verbose logging" "Use global folder" + +set -l bun_builtin_cmds_without_run dev create help bun upgrade discord install remove add init pm x +set -l bun_builtin_cmds_accepting_flags create help bun upgrade discord run init link unlink pm x + +function __bun_complete_bins_scripts --inherit-variable bun_builtin_cmds_without_run -d "Emit bun completions for bins and scripts" + # Do nothing if we already have a builtin subcommand, + # or any subcommand other than "run". + if __fish_seen_subcommand_from $bun_builtin_cmds_without_run + or not __fish_use_subcommand && not __fish_seen_subcommand_from run + return + end + # Do we already have a bin or script subcommand? + set -l bins (__fish__get_bun_bins) + if __fish_seen_subcommand_from $bins + return + end + # Scripts have descriptions appended with a tab separator. + # Strip off descriptions for the purposes of subcommand testing. + set -l scripts (__fish__get_bun_scripts) + if __fish_seen_subcommand_from (string split \t -f 1 -- $scripts) + return + end + # Emit scripts. + for script in $scripts + echo $script + end + # Emit binaries and JS files (but only if we're doing `bun run`). + if __fish_seen_subcommand_from run + for bin in $bins + echo "$bin"\t"package bin" + end + for file in (__fish__get_bun_bun_js_files) + echo "$file"\t"Bun.js" + end + end +end + + +# Clear existing completions +complete -e -c bun + +# Dynamically emit scripts and binaries +complete -c bun -f -a "(__bun_complete_bins_scripts)" + +# Complete flags if we have no subcommand or a flag-friendly one. +set -l flag_applies "__fish_use_subcommand; or __fish_seen_subcommand_from $bun_builtin_cmds_accepting_flags" +complete -c bun \ + -n $flag_applies --no-files -s 'u' -l 'origin' -r -d 'Server URL. Rewrites import paths' +complete -c bun \ + -n $flag_applies --no-files -s 'p' -l 'port' -r -d 'Port number to start server from' +complete -c bun \ + -n $flag_applies --no-files -s 'd' -l 'define' -r -d 'Substitute K:V while parsing, e.g. --define process.env.NODE_ENV:\"development\"' +complete -c bun \ + -n $flag_applies --no-files -s 'e' -l 'external' -r -d 'Exclude module from transpilation (can use * wildcards). ex: -e react' +complete -c bun \ + -n $flag_applies --no-files -l 'use' -r -d 'Use a framework (ex: next)' +complete -c bun \ + -n $flag_applies --no-files -l 'hot' -r -d 'Enable hot reloading in Bun\'s JavaScript runtime' + +# Complete dev and create as first subcommand. +complete -c bun \ + -n "__fish_use_subcommand" -a 'dev' -d 'Start dev server' +complete -c bun \ + -n "__fish_use_subcommand" -a 'create' -f -d 'Create a new project from a template' + +# Complete "next" and "react" if we've seen "create". +complete -c bun \ + -n "__fish_seen_subcommand_from create" -a 'next' -d 'new Next.js project' + +complete -c bun \ + -n "__fish_seen_subcommand_from create" -a 'react' -d 'new React project' + +# Complete "upgrade" as first subcommand. +complete -c bun \ + -n "__fish_use_subcommand" -a 'upgrade' -d 'Upgrade bun to the latest version' -x +# Complete "-h/--help" unconditionally. +complete -c bun \ + -s "h" -l "help" -d 'See all commands and flags' -x + +# Complete "-v/--version" if we have no subcommand. +complete -c bun \ + -n "not __fish_use_subcommand" -l "version" -s "v" -d 'Bun\'s version' -x + +# Complete additional subcommands. +complete -c bun \ + -n "__fish_use_subcommand" -a 'discord' -d 'Open bun\'s Discord server' -x + + +complete -c bun \ + -n "__fish_use_subcommand" -a 'bun' -d 'Generate a new bundle' + + +complete -c bun \ + -n "__fish_seen_subcommand_from bun" -F -d 'Bundle this' + +complete -c bun \ + -n "__fish_seen_subcommand_from create; and __fish_seen_subcommand_from react next" -F -d "Create in directory" + + +complete -c bun \ + -n "__fish_use_subcommand" -a 'init' -F -d 'Start an empty Bun project' + +complete -c bun \ + -n "__fish_use_subcommand" -a 'install' -f -d 'Install packages from package.json' + +complete -c bun \ + -n "__fish_use_subcommand" -a 'add' -F -d 'Add a package to package.json' + +complete -c bun \ + -n "__fish_use_subcommand" -a 'remove' -F -d 'Remove a package from package.json' + + +for i in (seq (count $bun_install_boolean_flags)) + complete -c bun \ + -n "__fish_seen_subcommand_from install add remove" -l "$bun_install_boolean_flags[$i]" -d "$bun_install_boolean_flags_descriptions[$i]" +end + +complete -c bun \ + -n "__fish_seen_subcommand_from install add remove" -l 'cwd' -d 'Change working directory' + +complete -c bun \ + -n "__fish_seen_subcommand_from install add remove" -l 'cache-dir' -d 'Choose a cache directory (default: $HOME/.bun/install/cache)' + +complete -c bun \ + -n "__fish_seen_subcommand_from add" -d 'Popular' -a '(__fish__get_bun_packages)' + +complete -c bun \ + -n "__fish_seen_subcommand_from add" -d 'History' -a '(__history_completions)' + +complete -c bun \ + -n "__fish_seen_subcommand_from pm; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts) cache;" -a 'bin ls cache hash hash-print hash-string' -f + +complete -c bun \ + -n "__fish_seen_subcommand_from pm; and __fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from (__fish__get_bun_bins) (__fish__get_bun_scripts);" -a 'rm' -f + +# Add built-in subcommands with descriptions. +complete -c bun -n "__fish_use_subcommand" -a "create" -f -d "Create a new project from a template" +complete -c bun -n "__fish_use_subcommand" -a "build bun" --require-parameter -F -d "Transpile and bundle one or more files" +complete -c bun -n "__fish_use_subcommand" -a "upgrade" -d "Upgrade Bun" +complete -c bun -n "__fish_use_subcommand" -a "run" -d "Run a script or package binary" +complete -c bun -n "__fish_use_subcommand" -a "install" -d "Install dependencies from package.json" -f +complete -c bun -n "__fish_use_subcommand" -a "remove" -d "Remove a dependency from package.json" -f +complete -c bun -n "__fish_use_subcommand" -a "add" -d "Add a dependency to package.json" -f +complete -c bun -n "__fish_use_subcommand" -a "init" -d "Initialize a Bun project in this directory" -f +complete -c bun -n "__fish_use_subcommand" -a "link" -d "Register or link a local npm package" -f +complete -c bun -n "__fish_use_subcommand" -a "unlink" -d "Unregister a local npm package" -f +complete -c bun -n "__fish_use_subcommand" -a "pm" -d "Additional package management utilities" -f +complete -c bun -n "__fish_use_subcommand" -a "x" -d "Execute a package binary, installing if needed" -f +complete -c bun -n "__fish_use_subcommand" -a "outdated" -d "Display the latest versions of outdated dependencies" -f +complete -c bun -n "__fish_use_subcommand" -a "publish" -d "Publish your package from local to npm" -f diff --git a/config/fish/completions/packwiz.fish b/config/fish/completions/packwiz.fish new file mode 100644 index 0000000..b4fdb11 --- /dev/null +++ b/config/fish/completions/packwiz.fish @@ -0,0 +1,177 @@ +# fish completion for packwiz -*- shell-script -*- + +function __packwiz_debug + set -l file "$BASH_COMP_DEBUG_FILE" + if test -n "$file" + echo "$argv" >> $file + end +end + +function __packwiz_perform_completion + __packwiz_debug "Starting __packwiz_perform_completion" + + # Extract all args except the last one + set -l args (commandline -opc) + # Extract the last arg and escape it in case it is a space + set -l lastArg (string escape -- (commandline -ct)) + + __packwiz_debug "args: $args" + __packwiz_debug "last arg: $lastArg" + + # Disable ActiveHelp which is not supported for fish shell + set -l requestComp "PACKWIZ_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg" + + __packwiz_debug "Calling $requestComp" + set -l results (eval $requestComp 2> /dev/null) + + # Some programs may output extra empty lines after the directive. + # Let's ignore them or else it will break completion. + # Ref: https://github.com/spf13/cobra/issues/1279 + for line in $results[-1..1] + if test (string trim -- $line) = "" + # Found an empty line, remove it + set results $results[1..-2] + else + # Found non-empty line, we have our proper output + break + end + end + + set -l comps $results[1..-2] + set -l directiveLine $results[-1] + + # For Fish, when completing a flag with an = (e.g., -n=) + # completions must be prefixed with the flag + set -l flagPrefix (string match -r -- '-.*=' "$lastArg") + + __packwiz_debug "Comps: $comps" + __packwiz_debug "DirectiveLine: $directiveLine" + __packwiz_debug "flagPrefix: $flagPrefix" + + for comp in $comps + printf "%s%s\n" "$flagPrefix" "$comp" + end + + printf "%s\n" "$directiveLine" +end + +# This function does two things: +# - Obtain the completions and store them in the global __packwiz_comp_results +# - Return false if file completion should be performed +function __packwiz_prepare_completions + __packwiz_debug "" + __packwiz_debug "========= starting completion logic ==========" + + # Start fresh + set --erase __packwiz_comp_results + + set -l results (__packwiz_perform_completion) + __packwiz_debug "Completion results: $results" + + if test -z "$results" + __packwiz_debug "No completion, probably due to a failure" + # Might as well do file completion, in case it helps + return 1 + end + + set -l directive (string sub --start 2 $results[-1]) + set --global __packwiz_comp_results $results[1..-2] + + __packwiz_debug "Completions are: $__packwiz_comp_results" + __packwiz_debug "Directive is: $directive" + + set -l shellCompDirectiveError 1 + set -l shellCompDirectiveNoSpace 2 + set -l shellCompDirectiveNoFileComp 4 + set -l shellCompDirectiveFilterFileExt 8 + set -l shellCompDirectiveFilterDirs 16 + + if test -z "$directive" + set directive 0 + end + + set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2) + if test $compErr -eq 1 + __packwiz_debug "Received error directive: aborting." + # Might as well do file completion, in case it helps + return 1 + end + + set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2) + set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2) + if test $filefilter -eq 1; or test $dirfilter -eq 1 + __packwiz_debug "File extension filtering or directory filtering not supported" + # Do full file completion instead + return 1 + end + + set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2) + set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2) + + __packwiz_debug "nospace: $nospace, nofiles: $nofiles" + + # If we want to prevent a space, or if file completion is NOT disabled, + # we need to count the number of valid completions. + # To do so, we will filter on prefix as the completions we have received + # may not already be filtered so as to allow fish to match on different + # criteria than the prefix. + if test $nospace -ne 0; or test $nofiles -eq 0 + set -l prefix (commandline -t | string escape --style=regex) + __packwiz_debug "prefix: $prefix" + + set -l completions (string match -r -- "^$prefix.*" $__packwiz_comp_results) + set --global __packwiz_comp_results $completions + __packwiz_debug "Filtered completions are: $__packwiz_comp_results" + + # Important not to quote the variable for count to work + set -l numComps (count $__packwiz_comp_results) + __packwiz_debug "numComps: $numComps" + + if test $numComps -eq 1; and test $nospace -ne 0 + # We must first split on \t to get rid of the descriptions to be + # able to check what the actual completion will be. + # We don't need descriptions anyway since there is only a single + # real completion which the shell will expand immediately. + set -l split (string split --max 1 \t $__packwiz_comp_results[1]) + + # Fish won't add a space if the completion ends with any + # of the following characters: @=/:., + set -l lastChar (string sub -s -1 -- $split) + if not string match -r -q "[@=/:.,]" -- "$lastChar" + # In other cases, to support the "nospace" directive we trick the shell + # by outputting an extra, longer completion. + __packwiz_debug "Adding second completion to perform nospace directive" + set --global __packwiz_comp_results $split[1] $split[1]. + __packwiz_debug "Completions are now: $__packwiz_comp_results" + end + end + + if test $numComps -eq 0; and test $nofiles -eq 0 + # To be consistent with bash and zsh, we only trigger file + # completion when there are no other completions + __packwiz_debug "Requesting file completion" + return 1 + end + end + + return 0 +end + +# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves +# so we can properly delete any completions provided by another script. +# Only do this if the program can be found, or else fish may print some errors; besides, +# the existing completions will only be loaded if the program can be found. +if type -q "packwiz" + # The space after the program name is essential to trigger completion for the program + # and not completion of the program name itself. + # Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish. + complete --do-complete "packwiz " > /dev/null 2>&1 +end + +# Remove any pre-existing completions for the program since we will be handling all of them. +complete -c packwiz -e + +# The call to __packwiz_prepare_completions will setup __packwiz_comp_results +# which provides the program's completion choices. +complete -c packwiz -n '__packwiz_prepare_completions' -f -a '$__packwiz_comp_results' + diff --git a/config/fish/config.fish b/config/fish/config.fish new file mode 100644 index 0000000..f335a9e --- /dev/null +++ b/config/fish/config.fish @@ -0,0 +1,14 @@ +if status is-interactive + # Commands to run in interactive sessions can go here + if tty | string match "/dev/tty1" + $HOME/start + end +end + +# bun +set --export BUN_INSTALL "$HOME/.bun" +set --export GOPATH "$HOME/go" +set --export PATH $BUN_INSTALL/bin $GOPATH/bin $HOME/.local/bin $PATH + +# gpg +export GPG_TTY=$(tty) diff --git a/config/fish/fish_variables b/config/fish/fish_variables new file mode 100644 index 0000000..74b1ee1 --- /dev/null +++ b/config/fish/fish_variables @@ -0,0 +1,31 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:3800 +SETUVAR fish_color_autosuggestion:brblack +SETUVAR fish_color_cancel:\x2dr +SETUVAR fish_color_command:normal +SETUVAR fish_color_comment:red +SETUVAR fish_color_cwd:green +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:green +SETUVAR fish_color_error:brred +SETUVAR fish_color_escape:brcyan +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:normal +SETUVAR fish_color_host_remote:yellow +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:brcyan +SETUVAR fish_color_param:cyan +SETUVAR fish_color_quote:yellow +SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold +SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_status:red +SETUVAR fish_color_user:brgreen +SETUVAR fish_color_valid_path:\x2d\x2dunderline +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_completion:normal +SETUVAR fish_pager_color_description:yellow\x1e\x2di +SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan +SETUVAR fish_pager_color_selected_background:\x2dr diff --git a/config/fish/functions/fish_greeting.fish b/config/fish/functions/fish_greeting.fish new file mode 100644 index 0000000..8e20ca8 --- /dev/null +++ b/config/fish/functions/fish_greeting.fish @@ -0,0 +1,21 @@ +function fish_greeting + if not set -q fish_greeting + set -l line1 (printf (_ 'Welcome to %sanhgelus-void%s.') (set_color "#95d5b2" green) (set_color normal)) + set -l line2 \n(printf (_ 'Workstation powered by the %svoid%s.') (set_color green) (set_color normal)) + set -g fish_greeting "$line1$line2" + end + + if set -q fish_private_mode + set -l line (_ "fish is running in private mode, history will not be persisted.") + if set -q fish_greeting[1] + set -g fish_greeting $fish_greeting\n$line + else + set -g fish_greeting $line + end + end + + # The greeting used to be skipped when fish_greeting was empty (not just undefined) + # Keep it that way to not print superfluous newlines on old configuration + test -n "$fish_greeting" + and echo $fish_greeting +end diff --git a/config/fish/functions/fish_prompt.fish b/config/fish/functions/fish_prompt.fish new file mode 100644 index 0000000..65b9830 --- /dev/null +++ b/config/fish/functions/fish_prompt.fish @@ -0,0 +1,34 @@ +# name: Default +# author: Lily Ballard + +function fish_prompt --description 'Write out the prompt' + set -l last_pipestatus $pipestatus + set -lx __fish_last_status $status # Export for __fish_print_pipestatus. + set -l normal (set_color normal) + set -q fish_color_status + or set -g fish_color_status red + + # Color the prompt differently when we're root + set -l color_cwd "#ffd6ff" + set -l suffix '>' + if functions -q fish_is_root_user; and fish_is_root_user + if set -q fish_color_cwd_root + set color_cwd $fish_color_cwd_root + end + set suffix '#' + end + + # Write pipestatus + # If the status was carried over (if no command is issued or if `set` leaves the status untouched), don't bold it. + set -l bold_flag --bold + set -q __fish_prompt_status_generation; or set -g __fish_prompt_status_generation $status_generation + if test $__fish_prompt_status_generation = $status_generation + set bold_flag + end + set __fish_prompt_status_generation $status_generation + set -l status_color (set_color $fish_color_status) + set -l statusb_color (set_color $bold_flag $fish_color_status) + set -l prompt_status (__fish_print_pipestatus "[" "]" "|" "$status_color" "$statusb_color" $last_pipestatus) + + echo -n -s (prompt_login)' ' (set_color $color_cwd) (prompt_pwd) $normal (fish_vcs_prompt) $normal " "$prompt_status $suffix " " +end diff --git a/config/fish/functions/prompt_login.fish b/config/fish/functions/prompt_login.fish new file mode 100644 index 0000000..e80b8e1 --- /dev/null +++ b/config/fish/functions/prompt_login.fish @@ -0,0 +1,28 @@ +function prompt_login --description "display user name for the prompt" + if not set -q __fish_machine + set -g __fish_machine + set -l debian_chroot $debian_chroot + + if test -r /etc/debian_chroot + set debian_chroot (cat /etc/debian_chroot) + end + + if set -q debian_chroot[1] + and test -n "$debian_chroot" + set -g __fish_machine "(chroot:$debian_chroot)" + end + end + + # Prepend the chroot environment if present + if set -q __fish_machine[1] + echo -n -s (set_color yellow) "$__fish_machine" (set_color normal) ' ' + end + + # If we're running via SSH, change the host color. + set -l color_host "#95d5b2" + if set -q SSH_TTY; and set -q fish_color_host_remote + set color_host $fish_color_host_remote + end + + echo -n -s (set_color "#ffd6ff" green) "$USER" (set_color normal) @ (set_color $color_host) (prompt_hostname) (set_color normal) +end diff --git a/config/i3/config b/config/i3/config deleted file mode 100644 index c2b31bb..0000000 --- a/config/i3/config +++ /dev/null @@ -1,573 +0,0 @@ -font pango: Noto Sans Regular 10 - -# set the mod key to the winkey: -set $mod Mod4 - -##################### -# workspace layout: # -##################### - -# default i3 tiling mode: -workspace_layout default - -# i3 stacking layout: -# Each window will be fullscreen and tabbed top to bottom. -#workspace_layout stacking - -# i3 tabbed layout: -# Each new window will open fullscreen as a tab (left to right) -#workspace_layout tabbed - -############################## -# extra options for windows: # -############################## - -#border indicator on windows: -new_window pixel 1 - -# thin borders -# hide_edge_borders both - -# Set inner/outer gaps -gaps inner 20 -gaps outer -12 - -# show window title bars (not officially supported with i3gaps) -#default_border normal -default_border pixel 0 - -# window title alignment -#title_align center - -# Use Mouse+$mod to drag floating windows to their wanted position -floating_modifier $mod - -# switch/iterate between workspaces -bindsym $mod+Tab workspace next -bindsym $mod+Shift+Tab workspace prev - -# switch to workspace -bindsym $mod+1 workspace $ws1 -bindsym $mod+2 workspace $ws2 -bindsym $mod+3 workspace $ws3 -bindsym $mod+4 workspace $ws4 -bindsym $mod+5 workspace $ws5 -bindsym $mod+6 workspace $ws6 -bindsym $mod+7 workspace $ws7 -bindsym $mod+8 workspace $ws8 -bindsym $mod+9 workspace $ws9 -bindsym $mod+0 workspace $ws10 - -# switch to workspace with numpad keys -bindcode $mod+87 workspace 1 -bindcode $mod+88 workspace 2 -bindcode $mod+89 workspace 3 -bindcode $mod+83 workspace 4 -bindcode $mod+84 workspace 5 -bindcode $mod+85 workspace 6 -bindcode $mod+79 workspace 7 -bindcode $mod+80 workspace 8 -bindcode $mod+81 workspace 9 -bindcode $mod+90 workspace 10 - -# switch to workspace with numlock numpad keys -bindcode $mod+Mod2+87 workspace $ws1 -bindcode $mod+Mod2+88 workspace $ws2 -bindcode $mod+Mod2+89 workspace $ws3 -bindcode $mod+Mod2+83 workspace $ws4 -bindcode $mod+Mod2+84 workspace $ws5 -bindcode $mod+Mod2+85 workspace $ws6 -bindcode $mod+Mod2+79 workspace $ws7 -bindcode $mod+Mod2+80 workspace $ws8 -bindcode $mod+Mod2+81 workspace $ws9 -bindcode $mod+Mod2+90 workspace $ws10 - -# move focused container to workspace -bindsym $mod+Shift+1 move container to workspace $ws1 -bindsym $mod+Shift+2 move container to workspace $ws2 -bindsym $mod+Shift+3 move container to workspace $ws3 -bindsym $mod+Shift+4 move container to workspace $ws4 -bindsym $mod+Shift+5 move container to workspace $ws5 -bindsym $mod+Shift+6 move container to workspace $ws6 -bindsym $mod+Shift+7 move container to workspace $ws7 -bindsym $mod+Shift+8 move container to workspace $ws8 -bindsym $mod+Shift+9 move container to workspace $ws9 -bindsym $mod+Shift+0 move container to workspace $ws10 - -# move focused container to workspace with numpad keys -bindcode $mod+Shift+Mod2+87 move container to workspace $ws1 -bindcode $mod+Shift+Mod2+88 move container to workspace $ws2 -bindcode $mod+Shift+Mod2+89 move container to workspace $ws3 -bindcode $mod+Shift+Mod2+83 move container to workspace $ws4 -bindcode $mod+Shift+Mod2+84 move container to workspace $ws5 -bindcode $mod+Shift+Mod2+85 move container to workspace $ws6 -bindcode $mod+Shift+Mod2+79 move container to workspace $ws7 -bindcode $mod+Shift+Mod2+80 move container to workspace $ws8 -bindcode $mod+Shift+Mod2+81 move container to workspace $ws9 -bindcode $mod+Shift+Mod2+90 move container to workspace $ws10 - -# move focused container to workspace with numpad keys -bindcode $mod+Shift+87 move container to workspace $ws1 -bindcode $mod+Shift+88 move container to workspace $ws2 -bindcode $mod+Shift+89 move container to workspace $ws3 -bindcode $mod+Shift+83 move container to workspace $ws4 -bindcode $mod+Shift+84 move container to workspace $ws5 -bindcode $mod+Shift+85 move container to workspace $ws6 -bindcode $mod+Shift+79 move container to workspace $ws7 -bindcode $mod+Shift+80 move container to workspace $ws8 -bindcode $mod+Shift+81 move container to workspace $ws9 -bindcode $mod+Shift+90 move container to workspace $ws10 - -# 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 ntilde 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 - bindsym Return mode "default" - bindsym Escape mode "default" - bindsym $mod+r mode "default" -} - -bindsym $mod+r mode "resize" - -###################################### -# keybindings for different actions: # -###################################### - -# start a terminal -bindsym $mod+Return exec alacritty - -# kill focused window -bindsym $mod+q kill - -# Lock the system -# lock with a picture: -#bindsym $mod+l exec i3lock -i ~/.config/i3/i3-lock-screen.png -p default|win -t -# lock by blurring the screen: -bindsym $mod+l exec ~/.config/i3/scripts/blur-lock - -# reload the configuration file -bindsym $mod+Shift+c reload - -# restart i3 inplace (preserves your layout/session, can be used to update i3) -bindsym $mod+Shift+r restart - -# keybinding in fancy rofi (automated): -bindsym $mod+F1 exec ~/.config/i3/scripts/keyhint-2 -# alternative -# keybinding list in editor: -# bindsym $mod+F1 exec xed ~/.config/i3/keybindings - -bindsym $mod+j focus left -bindsym $mod+k focus down -bindsym $mod+b focus up -bindsym $mod+o 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+b move up -bindsym $mod+Shift+o 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+g 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 - -# open new empty workspace -bindsym $mod+Shift+n exec ~/.config/i3/scripts/empty_workspace - -# Multimedia Keys - -# volume -bindsym XF86AudioRaiseVolume exec amixer -D pulse sset Master 5%+ && pkill -RTMIN+1 i3blocks -bindsym XF86AudioLowerVolume exec amixer -D pulse sset Master 5%- && pkill -RTMIN+1 i3blocks - -# gradular volume control -bindsym $mod+XF86AudioRaiseVolume exec amixer -D pulse sset Master 1%+ && pkill -RTMIN+1 i3blocks -bindsym $mod+XF86AudioLowerVolume exec amixer -D pulse sset Master 1%- && pkill -RTMIN+1 i3blocks - -# mute -bindsym XF86AudioMute exec amixer sset Master toggle && killall -USR1 i3blocks - -# audio control -bindsym XF86AudioPlay exec playerctl play -bindsym XF86AudioPause exec playerctl pause -bindsym XF86AudioNext exec playerctl next -bindsym XF86AudioPrev exec playerctl previous - -# Redirect sound to headphones -bindsym $mod+p exec /usr/local/bin/switch-audio-port - -## App shortcuts -bindsym $mod+w exec /usr/bin/vivaldi-stable -bindsym $mod+n exec /usr/bin/thunar - -# Power Profiles menu switcher (rofi) -bindsym $mod+Shift+p exec ~/.config/i3/scripts/power-profiles - -########################################## -# configuration for workspace behaviour: # -########################################## - -# 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 $ws2 "2" -set $ws1 "1" -set $ws3 "3" -set $ws4 "4" -set $ws5 "5" -set $ws6 "6" -set $ws7 "7" -set $ws8 "8" -set $ws9 "9" -set $ws10 "10" - -# use workspaces on different displays: -# where you have to replace VGA-0/HDMI-0 with the names for your displays -# you can get from xrandr command -workspace $ws1 output HDMI-0 -workspace $ws4 output DP-5 -workspace $ws3 output DP-5 -workspace $ws10 output DP-5 -#workspace $ws3 output HDMI-0 -#workspace $ws4 output HDMI-0 -#workspace $ws5 output HDMI-0 - -# bind program to workspace and focus to them on startup: -assign [class="alacritty"] $ws1 -assign [class="(?i)firefox"] $ws3 -assign [class="Vivaldi-stable"] $ws3 -assign [class="discord"] $ws4 -assign [class="Spotify"] $ws10 -assign [class="spotify"] $ws10 -assign [class="jetbrains-phpstorm"] $ws1 -assign [class="jetbrains-goland"] $ws1 -assign [class="jetbrains-idea"] $ws1 -assign [class="jetbrains-clion"] $ws1 - -# automatic set focus new window if it opens on another workspace then the current: -for_window [class=Xfce4-terminal] focus -for_window [class=(?i)firefox] focus -for_window [class=Thunar] focus -for_window [class=Thunderbird] focus -for_window [class=TelegramDesktop] focus - -############## -# compositor # -############## - -# transparency -# uncomment one of them to be used (picom package is installed per default) -# options could need changes, related to used GPU and drivers. -# to find the right setting consult the archwiki or ask at the forum. -# -# xcompmgr: https://wiki.archlinux.org/title/Xcompmgr -# manpage: https://man.archlinux.org/man/xcompmgr.1.en -#exec --no-startup-id xcompmgr -C -n & -# or an more specialized config like this: -#exec --no-startup-id xcompmgr -c -C -t-5 -l-5 -r4.2 -o.55 & -# -# or: -# -# picom: https://wiki.archlinux.org/title/Picom -# manpage: https://man.archlinux.org/man/picom.1.en -# The default configuration is available in /etc/xdg/picom.conf -# For modifications, it can be copied to ~/.config/picom/picom.conf or ~/.config/picom.conf -# -# using default config -#exec_always --no-startup-id picom -b -# -# for custom config: -#exec_always --no-startup-id picom --config ~/.config/picom.conf - -############################################# -# autostart applications/services on login: # -############################################# - -#get auth work with polkit-gnome -exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 - -# dex execute .desktop files + apps using /etc/xdg/autostart. -# when second to i3 a DE is installed or mixed usage of i3 + xfce4 or GNOME -# in this cases better disable dex and use manual starting apps using xdg/autostart -# if enabled you should comment welcome app. -# https://github.com/jceb/dex -#exec --no-startup-id dex -a -s /etc/xdg/autostart/:~/.config/autostart/ -exec --no-startup-id dex --autostart --environment i3 - -# start welcome app -#exec --no-startup-id sh /usr/share/endeavouros/scripts/welcome --startdelay=3 - -# num lock activated -#exec --no-startup-id numlockx on - -# configure multiple keyboard layouts and hotkey to switch (Alt+CAPSLOCK in this example) -#exec --no-startup-id setxkbmap -layout 'us,sk' -variant altgr-intl,qwerty -option 'grp:alt_caps_toggle' - -# start conky: -#exec_always --no-startup-id conky - -# start a script to setup displays -# uncomment the next line, use arandr to setup displays and save the file as monitor: -#exec --no-startup-id ~/.screenlayout/monitor.sh - -# set wallpaper -#exec --no-startup-id sleep 2 && nitrogen --restore -exec_always --no-startup-id feh --bg-fill ~/Images/wallpapers/tlou2-ellie-guitar-tree.jpg - -# set powersavings for display: -exec --no-startup-id xset s 480 dpms 600 600 600 - -# disable power saving (for example if using xscreensaver) -#exec --no-startup-id xset -dpms - -# use xautolock to use autosuspend rules for mobile devices -# https://wiki.archlinux.org/title/Session_lock#xautolock -#exec --no-startup-id xautolock -time 60 -locker "systemctl suspend" - - -# xscreensaver -# https://www.jwz.org/xscreensaver -#exec --no-startup-id xscreensaver --no-splash - -# Desktop notifications -exec --no-startup-id dbus-launch dunst --config ~/.config/dunst/dunstrc -# alternative if you installed aside with XFCE4: -# exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd & - -# autotiling script -# https://github.com/nwg-piotr/autotiling -# `yay -S autotiling ;) (it is in AUR) -#exec_always --no-startup-id autotiling - -# Autostart apps as you like -#exec --no-startup-id sleep 2 && xfce4-terminal -#exec --no-startup-id sleep 3 && thunar - -############### -# system tray # -############### -# if you do not use dex: exec --no-startup-id dex --autostart --environment i3 -# you need to have tray apps started manually one by one: - -# start blueberry app for managing bluetooth devices from tray: -#exec --no-startup-id blueberry-tray - -# networkmanager-applet -#exec --no-startup-id nm-applet - -# clipman-applet -#exec --no-startup-id xfce4-clipman - -################## -# floating rules # -################## - -# set floating (nontiling) for apps needing it -for_window [class="Yad" instance="yad"] floating enable -for_window [class="Galculator" instance="galculator"] floating enable -for_window [class="Blueberry.py" instance="blueberry.py"] floating enable - -# set floating (nontiling) for special apps -for_window [class="Xsane" instance="xsane"] floating enable -for_window [class="Pavucontrol" instance="pavucontrol"] floating enable -for_window [class="qt5ct" instance="qt5ct"] floating enable -for_window [class="Blueberry.py" instance="blueberry.py"] floating enable -for_window [class="Bluetooth-sendto" instance="bluetooth-sendto"] floating enable -for_window [class="Pamac-manager"] floating enable -for_window [window_role="About"] floating enable - -# set border of floating window -for_window [class="urxvt"] border pixel 1 - -# set size of floating window -#for_window [window_role="(?i)GtkFileChooserDialog"] resize set 640 480 #to set size of file choose dialog -#for_window [class=".*"] resize set 640 480 #to change size of all floating windows - -# set position of floating window -#for_window [class=".*"] move position center - -###################################### -# color settings for bar and windows # -###################################### - -# Define colors variables: -set $darkbluetrans #08052be6 -set $darkblue #08052b -set $lightblue #5294e2 -set $urgentred #e53935 -set $white #ffffff -set $black #000000 -set $purple #e345ff -set $darkgrey #383c4a -set $grey #b0b5bd -set $mediumgrey #8b8b8b -set $yellowbrown #e1b700 - -# define colors for windows: -#class border bground text indicator child_border -client.focused $lightblue $darkblue $white $mediumgrey $mediumgrey -client.unfocused $darkblue $darkblue $grey $darkgrey $darkgrey -client.focused_inactive $darkblue $darkblue $grey $black $black -client.urgent $urgentred $urgentred $white $yellowbrown $yellowbrown - -############################################ -# bar settings (input comes from i3blocks) # -############################################ - -# Start i3bar to display a workspace bar -# (plus the system information i3status finds out, if available) -#bar { -# font pango: Noto Sans Regular 10 - #status_command $HOME/.config/polybar/launch.sh -# position top -# i3bar_command $HOME/.config/polybar/launch.sh -# it could be that you have no primary display set: set one (xrandr --output --primary) -# reference: https://i3wm.org/docs/userguide.html#_tray_output -# tray_output primary -# tray_padding 0 - -# When strip_workspace_numbers is set to yes, -# any workspace that has a name of the form -# “[n][:][NAME]” will display only the name. -#strip_workspace_numbers yes -##strip_workspace_name no - -# colors { -# separator $purple -# background $darkgrey -# statusline $white -# border bg txt indicator -# focused_workspace $mediumgrey $grey $darkgrey $purple -# active_workspace $lightblue $mediumgrey $darkgrey $purple -# inactive_workspace $darkgrey $darkgrey $grey $purple -# urgent_workspace $urgentred $urgentred $white $purple -# } -#} - -# you can add different bars for multidisplay setups on each display: -# set output HDMI-0 to the display you want the bar, --transparency can be set. -# Transparency needs rgba color codes to be used where the last two letters are the transparency factor see here: -# https://gist.github.com/lopspower/03fb1cc0ac9f32ef38f4 -# #08052be6 --> e6=90% - -# bar { -# font pango: Noto Sans Regular 10 -# status_command i3blocks -c ~/.config/i3/i3blocks-2.conf -# i3bar_command i3bar --transparency -# output HDMI-0 -# position bottom -# -# When strip_workspace_numbers is set to yes, -# any workspace that has a name of the form -# “[n][:][NAME]” will display only the name. -#strip_workspace_numbers yes -##strip_workspace_name no -# -# colors { -# separator $purple -# background $darkbluetrans -# statusline $white -# border bg txt indicator -# focused_workspace $lighterblue $lighterblue $darkblue $purple -# active_workspace $lightdblue $lightdblue $darkblue $purple -# inactive_workspace $darkblue $darkblue $lightdblue $purple -# urgent_workspace $urgentred $urgentred $white $purple -# } -#} - -##################################### -# Application menu handled by rofi: # -##################################### - -## rofi bindings fancy application menu ($mod+d /F9 optional disabled) - -# bindsym $mod+d exec rofi -modi drun -show drun \ -# -config ~/.config/rofi/rofidmenu.rasi - -# bindsym F9 exec rofi -modi drun -show drun \ -# -config ~/.config/rofi/rofidmenu.rasi - -## rofi bindings for window menu ($mod+t /F10 optional disabled) - -bindsym $mod+d exec --no-startup-id ~/.config/rofi/launchers/type-1/launcher.sh -bindsym $mod+Shift+e exec --no-startup-id ~/.config/rofi/powermenu/type-1/powermenu.sh - -# bindsym F10 exec rofi -show window \ -# -config ~/.config/rofi/rofidmenu.rasi - -## rofi bindings to manage clipboard (install rofi-greenclip from the AUR) - -#exec --no-startup-id greenclip daemon>/dev/null -# bindsym $mod+c exec --no-startup-id rofi -modi "clipboard:greenclip print" -show clipboard \ -# -config ~/.config/rofi/rofidmenu.rasi -exec_always --no-startup-id xrandr --output DP-0 --off --output DP-1 --off --output DP-2 --off --output DP-3 --off --output HDMI-0 -r 144.00 --primary --mode 1920x1080 --pos 0x0 --rotate normal --output DP-4 --off --output DP-5 -r 74.97 --mode 1920x1080 --pos 1920x0 --rotate normal - -# Polybar -exec_always --no-startup-id killall -q polybar -exec_always --no-startup-id sleep 1 && sh $HOME/.config/polybar/colorblocks/launch-main.sh -exec_always --no-startup-id sleep 1 && sh $HOME/.config/polybar/colorblocks/launch-external.sh - -exec_always --no-startup-id killall -q picom -exec_always --no-startup-id sleep 3 && picom --config ~/.config/picom/picom.conf - -# run applications -exec spotify -exec vivaldi-stable -exec flatpak run com.discordapp.Discord - -# Commands for screenshot -# Screenshot -bindsym Print exec --no-startup-id maim "/home/$USER/Images/$(date).png" -bindsym $mod+Print exec --no-startup-id maim --window $(xdotool getactivewindow) "/home/$USER/Images/$(date).png" -bindsym Shift+Print exec --no-startup-id maim --select "/home/$USER/Images/$(date).png" - -## Clipboard Screenshots -bindsym Ctrl+Print exec --no-startup-id maim | xclip -selection clipboard -t image/png -bindsym Ctrl+$mod+Print exec --no-startup-id maim --window $(xdotool getactivewindow) | xclip -selection clipboard -t image/png -bindsym Ctrl+Shift+Print exec --no-startup-id maim --select | xclip -selection clipboard -t image/png diff --git a/config/nvim/init.lua b/config/nvim/init.lua new file mode 100644 index 0000000..1b37a46 --- /dev/null +++ b/config/nvim/init.lua @@ -0,0 +1,4 @@ +require('options') +require('plugin') +require('colorscheme') +require('keybindings') diff --git a/config/nvim/init.vim b/config/nvim/init.vim.bp similarity index 79% rename from config/nvim/init.vim rename to config/nvim/init.vim.bp index 00ce052..1861949 100644 --- a/config/nvim/init.vim +++ b/config/nvim/init.vim.bp @@ -28,11 +28,27 @@ Plugin 'https://github.com/preservim/tagbar' " Tagbar for code navigation Plugin 'https://github.com/neoclide/coc.nvim' " Autocompletions " Plugin 'https://github.com/terryma/vim-multiple-cursors' " CTRL + N for multiple cursors Plugin 'https://github.com/mattn/emmet-vim' " Emmet support +Plugin 'rubixninja314/vim-mcfunction' " mcfunction +" Plugin 'sirver/ultisnips' +" let g:UltiSnipsExpandTrigger = '' +" let g:UltiSnipsJumpForwardTrigger = '' +" let g:UltiSnipsJumpBackwardTrigger = '' +"Plugin 'lervag/vimtex' +" let g:tex_flavor='latex' +" let g:vimtex_view_method='zathura' +" let g:vimtex_quickfix_mode=0 +" set conceallevel=1 +" let g:tex_conceal='abdmg' +Plugin 'catppuccin/vim' " theme +Plugin 'vimpostor/vim-prism' " theme +Plugin 'elixir-editors/vim-elixir' " elixir +Plugin 'mhinz/vim-mix-format' " elixir format +Plugin 'neovim/nvim-lspconfig' " elixir language server call vundle#end() " required filetype plugin indent on " required -:colorscheme onedark +:colorscheme prism :set number relativenumber :set autoindent @@ -94,3 +110,9 @@ let g:airline_symbols.linenr = '' inoremap pumvisible() ? coc#_select_confirm() : "" set shell=/bin/bash + +" Highlight +augroup twig_ft + au! + autocmd BufNewFile,BufRead *.mcfunction set syntax=mcfunction +augroup END diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json new file mode 100644 index 0000000..f7cb91a --- /dev/null +++ b/config/nvim/lazy-lock.json @@ -0,0 +1,15 @@ +{ + "blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" }, + "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "7f0bf635082bb9b7d2b37766054526a6ccafdb85" }, + "mason.nvim": { "branch": "main", "commit": "7dc4facca9702f95353d5a1f87daf23d78e31c2a" }, + "monokai.nvim": { "branch": "master", "commit": "b8bd44d5796503173627d7a1fc51f77ec3a08a63" }, + "neo-tree.nvim": { "branch": "v3.x", "commit": "cea666ef965884414b1b71f6b39a537f9238bdb2" }, + "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, + "nvim-lspconfig": { "branch": "master", "commit": "f0c6ccf43997a1c7e9ec4aea36ffbf2ddd9f15ef" }, + "nvim-web-devicons": { "branch": "master", "commit": "c2599a81ecabaae07c49ff9b45dcd032a8d90f1a" }, + "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "vim-elixir": { "branch": "master", "commit": "6dff29176eb35e025bc94b262bf6d4e517e11f7d" }, + "vim-mix-format": { "branch": "master", "commit": "01a31ef82aa52697d589574da50723980eeae456" } +} diff --git a/config/nvim/lua/colorscheme.lua b/config/nvim/lua/colorscheme.lua new file mode 100644 index 0000000..f9f6ce6 --- /dev/null +++ b/config/nvim/lua/colorscheme.lua @@ -0,0 +1,7 @@ +local colorscheme = 'monokai_pro' + +local is_ok, _ = pcall(vim.cmd, "colorscheme " .. colorscheme) +if not is_ok then + vim.notify('colorscheme ' .. colorscheme .. ' not found!') + return +end diff --git a/config/nvim/lua/options.lua b/config/nvim/lua/options.lua new file mode 100644 index 0000000..a937c38 --- /dev/null +++ b/config/nvim/lua/options.lua @@ -0,0 +1,22 @@ +vim.opt.completeopt = {'menu', 'menuone', 'noselect'} + +vim.opt.tabstop = 4 -- number of visual spaces per TAB +vim.opt.softtabstop = 4 -- number of spacesin tab when editing +vim.opt.shiftwidth = 4 -- insert 4 spaces on a tab +vim.opt.expandtab = true -- tabs are spaces, mainly because of python + +vim.opt.number = true -- show absolute number +vim.opt.relativenumber = true -- add numbers to each line on the left side +vim.opt.cursorline = true -- highlight cursor line underneath the cursor horizontally +vim.opt.splitbelow = true -- open new vertical split bottom +vim.opt.splitright = true -- open new horizontal splits right + +vim.opt.incsearch = true -- search as characters are entered +vim.opt.ignorecase = true -- ignore case in searches by default +vim.opt.smartcase = true -- but make it case sensitive if an uppercase is entered + +vim.filetype.add({ + extension = { + heex = 'eelixir' + } +}) diff --git a/config/nvim/lua/plugin.lua b/config/nvim/lua/plugin.lua new file mode 100644 index 0000000..d88d9ac --- /dev/null +++ b/config/nvim/lua/plugin.lua @@ -0,0 +1,18 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +-- This is also a good place to setup other settings (vim.opt) +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +require("lazy").setup("plugins") diff --git a/config/nvim/lua/plugins/blink.lua b/config/nvim/lua/plugins/blink.lua new file mode 100644 index 0000000..b69b537 --- /dev/null +++ b/config/nvim/lua/plugins/blink.lua @@ -0,0 +1,84 @@ +return { + { + "saghen/blink.cmp", + -- optional: provides snippets for the snippet source + dependencies = { "rafamadriz/friendly-snippets" }, + + -- Use a release tag to download pre-built binaries + version = "*", + -- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust + -- build = 'cargo build --release', + -- If you use nix, you can build from source using the latest nightly rust with: + -- build = 'nix run .#build-plugin', + + opts = { + -- 'default' (recommended) for mappings similar to built-in completions (C-y to accept) + -- 'super-tab' for mappings similar to VSCode (tab to accept) + -- 'enter' for enter to accept + -- 'none' for no mappings + -- + -- All presets have the following mappings: + -- C-space: Open menu or open docs if already open + -- C-n/C-p or Up/Down: Select next/previous item + -- C-e: Hide menu + -- C-k: Toggle signature help (if signature.enabled = true) + -- + -- See :h blink-cmp-config-keymap for defining your own keymap + keymap = { + -- Each keymap may be a list of commands and/or functions + preset = "enter", + -- Select completions + [""] = { "select_prev", "fallback" }, + [""] = { "select_next", "fallback" }, + [""] = { "select_next", "fallback" }, + [""] = { "select_prev", "fallback" }, + -- Scroll documentation + [""] = { "scroll_documentation_up", "fallback" }, + [""] = { "scroll_documentation_down", "fallback" }, + -- Show/hide signature + [""] = { "show_signature", "hide_signature", "fallback" }, + }, + + appearance = { + -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font' + -- Adjusts spacing to ensure icons are aligned + nerd_font_variant = "mono", + }, + + sources = { + -- `lsp`, `buffer`, `snippets`, `path`, and `omni` are built-in + -- so you don't need to define them in `sources.providers` + default = { "lsp", "path", "snippets", "buffer" }, + + -- Sources are configured via the sources.providers table + }, + + -- (Default) Rust fuzzy matcher for typo resistance and significantly better performance + -- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation, + -- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"` + -- + -- See the fuzzy documentation for more information + fuzzy = { implementation = "prefer_rust_with_warning" }, + completion = { + -- The keyword should only match against the text before + keyword = { range = "prefix" }, + menu = { + -- Use treesitter to highlight the label text for the given list of sources + draw = { + treesitter = { "lsp" }, + }, + }, + -- Show completions after typing a trigger character, defined by the source + trigger = { show_on_trigger_character = true }, + documentation = { + -- Show documentation automatically + auto_show = true, + }, + }, + + -- Signature help when tying + signature = { enabled = true }, + }, + opts_extend = { "sources.default" }, + } +} diff --git a/config/nvim/lua/plugins/colorscheme.lua b/config/nvim/lua/plugins/colorscheme.lua new file mode 100644 index 0000000..457a3ec --- /dev/null +++ b/config/nvim/lua/plugins/colorscheme.lua @@ -0,0 +1,3 @@ +return { + "tanvirtin/monokai.nvim" +} diff --git a/config/nvim/lua/plugins/elixir.lua b/config/nvim/lua/plugins/elixir.lua new file mode 100644 index 0000000..5ab5662 --- /dev/null +++ b/config/nvim/lua/plugins/elixir.lua @@ -0,0 +1,4 @@ +return { + "elixir-editors/vim-elixir", + "mhinz/vim-mix-format" +} diff --git a/config/nvim/lua/plugins/lsp.lua b/config/nvim/lua/plugins/lsp.lua new file mode 100644 index 0000000..1a3a64a --- /dev/null +++ b/config/nvim/lua/plugins/lsp.lua @@ -0,0 +1,21 @@ +return { + { + "neovim/nvim-lspconfig", + config = function() + local lspconfig = require("lspconfig") + + lspconfig.pylsp.setup({}) + end, + }, + { "mason-org/mason.nvim", opts = {} }, + { + "mason-org/mason-lspconfig.nvim", + dependencies = { + "mason-org/mason.nvim", + "neovim/nvim-lspconfig", + }, + opts = { + ensure_installed = { "pylsp", "elixirls" }, + }, + }, +} diff --git a/config/picom/picom.conf b/config/picom/picom.conf deleted file mode 100644 index e77b363..0000000 --- a/config/picom/picom.conf +++ /dev/null @@ -1,54 +0,0 @@ -# Opacity -inactive-opacity = 0.4; -active-opacity = 0.8; - -opacity-rule = [ - "100:name*='Minecraft'", - "100:class_g='maim'" -] - -# Border -corner-radius = 6 -round-borders = 6 - -# Blur -blur: -{ - method = "dual_kawase"; - strength = 12; - background-exclude = [ - "name*='rect-overlay'" - "name*='xclip'" - ]; -} - -wintypes: -{ - normal = { blur-background = true; }; - splash = { blur-background = false; }; -} - -# Fading -fading = false; -fade-in-step = 0.07; -fade-out-step = 0.07; -fade-exclude = [ ]; - -# Other -mark-wmwin-focused = true; -mark-ovredir-focused = true; -detect-rounded-corners = true; -detect-client-opacity = true; -vsync = true; -dbe = false; -unredir-if-possible = true; -detect-transient = true; -detect-client-leader = true; - -# GLX Backend -backend = "glx"; -glx-no-stencil = true -glx-copy-from-front = false; -use-damage = true; -glx-no-rebind-pixmap = true; - diff --git a/config/polybar/blocks/bars.ini b/config/polybar/blocks/bars.ini deleted file mode 100644 index c245f34..0000000 --- a/config/polybar/blocks/bars.ini +++ /dev/null @@ -1,600 +0,0 @@ -;; ┌────────────────────────────────────────────────────┐ -;; │░█▀█░█▀█░█░░░█░█░█▀▄░█▀█░█▀▄░░░░░░░░░█▀▄░█▀█░█▀▄░█▀▀│ -;; │░█▀▀░█░█░█░░░░█░░█▀▄░█▀█░█▀▄░░░░▀░░░░█▀▄░█▀█░█▀▄░▀▀█│ -;; │░▀░░░▀▀▀░▀▀▀░░▀░░▀▀░░▀░▀░▀░▀░░░░▀░░░░▀▀░░▀░▀░▀░▀░▀▀▀│ -;; │░Created░By░Aditya░Shakya░@adi1090x░░░░░░░░░░░░░░░░░│ -;; └────────────────────────────────────────────────────┘ - -;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ - -[bar] -fill = ⏽ -empty = ⏽ -indicator = ⏽ -; Nerd font :   ,  ⏽,  樂 籠 錄 , 雷 絛 - -[module/volume] -type = internal/alsa - -; Soundcard to be used -; Usually in the format hw:# where # is the card number -; You can find the different card numbers in `/proc/asound/cards` -master-soundcard = default -speaker-soundcard = default -headphone-soundcard = default - -; Name of the master, speaker and headphone mixers -; Use the following command to list available mixer controls: -; $ amixer scontrols | sed -nr "s/.*'([[:alnum:]]+)'.*/\1/p" -; If master, speaker or headphone-soundcard isn't the default, -; use `amixer -c # scontrols` instead where # is the number -; of the master, speaker or headphone soundcard respectively -; -; Default: Master -master-mixer = Master - -; Optionally define speaker and headphone mixers -; Default: none -;;speaker-mixer = Speaker -; Default: none -;;headphone-mixer = Headphone - -; NOTE: This is required if headphone_mixer is defined -; Use the following command to list available device controls -; $ amixer controls | sed -r "/CARD/\!d; s/.*=([0-9]+).*name='([^']+)'.*/printf '%3.0f: %s\n' '\1' '\2'/e" | sort -; You may also need to use `amixer -c # controls` as above for the mixer names -; Default: none -;;headphone-id = 9 - -; Use volume mapping (similar to amixer -M and alsamixer), where the increase in volume is linear to the ear -; Default: false -;;mapped = true - -; Interval for volume increase/decrease (in percent points) -; Default: 5 -interval = 5 - -; Available tags: -; (default) -; -; -format-volume = -format-volume-prefix =  -format-volume-prefix-padding = 1 -format-volume-prefix-background = ${color.blue} -format-volume-prefix-foreground = ${color.foreground} -format-volume-background = ${color.background-alt} -format-volume-foreground = ${color.foreground} -format-volume-overline = ${color.background} -format-volume-underline = ${color.background} - -; Available tags: -; (default) -; -; -format-muted = -format-muted-prefix =  -format-muted-prefix-padding = 1 -format-muted-prefix-background = ${color.red} -format-muted-overline = ${color.background} -format-muted-underline = ${color.background} - -; Available tokens: -; %percentage% (default) -label-volume = %percentage%% -label-volume-background = ${color.background-alt} -label-volume-padding = 1 - -; Available tokens: -; %percentage% (default -label-muted = "Muted" -label-muted-foreground = ${color.foreground} -label-muted-background = ${color.background-alt} -label-muted-padding = 1 - -; Only applies if is used -ramp-volume-0 =  -ramp-volume-1 =  -ramp-volume-2 =  -ramp-volume-background = ${color.blue} -ramp-volume-padding = 1 - -; Only applies if is used -bar-volume-format = " %fill%%indicator%%empty% " -bar-volume-width = 10 -bar-volume-gradient = false - -bar-volume-indicator = ${bar.indicator} -bar-volume-indicator-foreground = ${color.foreground} - -bar-volume-fill = ${bar.fill} -bar-volume-foreground-0 = ${color.foreground} -bar-volume-foreground-1 = ${color.foreground} -bar-volume-foreground-2 = ${color.foreground} - -bar-volume-empty = ${bar.empty} -bar-volume-empty-foreground = ${color.gray} - -; If defined, it will replace when -; headphones are plugged in to `headphone_control_numid` -; If undefined, will be used for both -; Only applies if is used -ramp-headphones-0 =  -ramp-headphones-background = ${color.blue} -ramp-headphones-padding = 1 - -;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ - -[module/brightness] -;type = internal/xbacklight -type = internal/backlight - -; Use the following command to list available cards: -; $ ls -1 /sys/class/backlight/ -;card = intel_backlight -card = amdgpu_bl0 - -; Available tags: -;