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 17dbe51..0000000 --- a/config/i3/config +++ /dev/null @@ -1,576 +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 - -# exit-menu -bindsym $mod+Shift+e exec ~/.config/i3/scripts/powermenu - -# 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+t exec rofi -show window \ - -config ~/.config/rofi/rofidmenu.rasi - -#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 && polybar main -exec_always --no-startup-id sleep 1 && polybar external - -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 3cd80d8..0000000 --- a/config/picom/picom.conf +++ /dev/null @@ -1,49 +0,0 @@ -# Opacity -inactive-opacity = 0.4; -active-opacity = 0.8; - -opacity-rule = [ - "100:name*='Minecraft'" -] - -# Border -corner-radius = 6 -round-borders = 6 - -# Blur -blur: -{ - method = "dual_kawase"; - strength = 12; -} - -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/config.ini b/config/polybar/config.ini deleted file mode 100644 index 6bfd5f2..0000000 --- a/config/polybar/config.ini +++ /dev/null @@ -1,178 +0,0 @@ -;========================================================== -; -; -; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗ -; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗ -; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝ -; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗ -; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║ -; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ -; -; -; To learn more about how to configure Polybar -; go to https://github.com/polybar/polybar -; -; The README contains a lot of information -; -;========================================================== - -[colors] -background = #282A2E -background-alt = #373B41 -foreground = #C5C8C6 -primary = #F0C674 -secondary = #8ABEB7 -alert = #A54242 -disabled = #707880 - -[bar/main] -width = 100% -height = 24pt -radius = 6 - -; dpi = 96 - -background = ${colors.background} -foreground = ${colors.foreground} - -line-size = 3pt - -border-size = 6pt -border-color = #00000000 - -padding-left = 0 -padding-right = 1 - -module-margin = 1 - -separator = | -separator-foreground = ${colors.disabled} - -font-0 = monospace;2 - -modules-left = xworkspaces xwindow -modules-right = filesystem xkeyboard memory cpu eth date - -cursor-click = pointer -cursor-scroll = ns-resize - -enable-ipc = true - -; tray-position = right - -; wm-restack = generic -; wm-restack = bspwm -; wm-restack = i3 - -; override-redirect = true - -[bar/external] -monitor = DP-5 -modules-right = filesystem memory cpu date -inherit = bar/main - -[module/xworkspaces] -type = internal/xworkspaces - -label-active = %name% -label-active-background = ${colors.background-alt} -label-active-underline= ${colors.primary} -label-active-padding = 1 - -label-occupied = %name% -label-occupied-padding = 1 - -label-urgent = %name% -label-urgent-background = ${colors.alert} -label-urgent-padding = 1 - -label-empty = %name% -label-empty-foreground = ${colors.disabled} -label-empty-padding = 1 - -[module/xwindow] -type = internal/xwindow -label = %title:0:60:...% - -[module/filesystem] -type = internal/fs -interval = 25 - -mount-0 = / - -label-mounted = %{F#F0C674}%mountpoint%%{F-} %percentage_used%% - -label-unmounted = %mountpoint% not mounted -label-unmounted-foreground = ${colors.disabled} - -[module/pulseaudio] -type = internal/pulseaudio - -format-volume-prefix = "VOL " -format-volume-prefix-foreground = ${colors.primary} -format-volume = - -label-volume = %percentage%% - -label-muted = muted -label-muted-foreground = ${colors.disabled} - -[module/xkeyboard] -type = internal/xkeyboard -blacklist-0 = num lock - -label-layout = %layout% -label-layout-foreground = ${colors.primary} - -label-indicator-padding = 2 -label-indicator-margin = 1 -label-indicator-foreground = ${colors.background} -label-indicator-background = ${colors.secondary} - -[module/memory] -type = internal/memory -interval = 2 -format-prefix = "RAM " -format-prefix-foreground = ${colors.primary} -label = %percentage_used:2%% - -[module/cpu] -type = internal/cpu -interval = 2 -format-prefix = "CPU " -format-prefix-foreground = ${colors.primary} -label = %percentage:2%% - -[network-base] -type = internal/network -interval = 5 -format-connected = -format-disconnected = -label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected - -[module/wlan] -inherit = network-base -interface-type = wireless -label-connected = %{F#F0C674}%ifname%%{F-} %essid% %local_ip% - -[module/eth] -inherit = network-base -interface-type = wired -label-connected = %local_ip% - %downspeed% / %upspeed% -interval = 1 - -[module/date] -type = internal/date -interval = 1 - -date = %H:%M:%S -date-alt = %Y-%m-%d %H:%M:%S - -label = %date% -label-foreground = ${colors.primary} - -[settings] -screenchange-reload = true -pseudo-transparency = true - -; vim:ft=dosini diff --git a/config/rofi/config.rasi b/config/rofi/config.rasi new file mode 100644 index 0000000..26aa0c8 --- /dev/null +++ b/config/rofi/config.rasi @@ -0,0 +1,155 @@ +// Config // +configuration { + modi: "drun,filebrowser,window"; + show-icons: true; + display-drun: " "; + display-run: " "; + display-filebrowser: " "; + display-window: " "; + drun-display-format: "{name}"; + window-format: "{w}{t}"; + font: "JetBrainsMono 10"; + icon-theme: "custom"; +} + +@theme "~/.config/rofi/theme.rasi" + +// Main // +window { + height: 12em; + width: 38em; + transparency: "screenshot"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0em; + orientation: vertical; + children: [ "listbox" , "inputmode" ]; + background-color: transparent; +} + +// Lists // +listbox { + padding: 0em; + spacing: 0em; + orientation: horizontal; + children: [ "listview" ]; + background-color: transparent; +} +listview { + padding: 0.5em; + spacing: 0.2em; + enabled: true; + columns: 5; + cycle: true; + dynamic: true; + scrollbar: false; + reverse: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: @main-bg; + text-color: @main-fg; +} + + +// Inputs // +inputmode { + padding: 0em; + spacing: 0em; + orientation: horizontal; + children: [ "inputbar" , "mode-switcher" ]; + background-color: transparent; +} +inputbar { + enabled: true; + width: 24em; + padding: 0em; + spacing: 0em; + padding: 1.5em 1em 1.5em 2.5em; + children: [ "entry" ]; + background-color: transparent; +} +entry { + vertical-align: 0.5; + border-radius: 3em; + enabled: true; + spacing: 0em; + padding: 1em; + text-color: @main-fg; + background-color: @main-bg; +} + + +// Modes // +mode-switcher { + width: 13em; + orientation: horizontal; + enabled: true; + padding: 1.5em 2.5em 1.5em 0em; + spacing: 1em; + background-color: transparent; +} +button { + cursor: pointer; + padding: 0em; + border-radius: 3em; + background-color: @main-bg; + text-color: @main-fg; +} +button selected { + background-color: @main-fg; + text-color: @main-bg; +} + + +// Elements // +element { + orientation: vertical; + enabled: true; + spacing: 0.2em; + padding: 0.5em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 2.5em; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.5; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + +// Error message // +error-message { + text-color: @main-fg; + background-color: @main-bg; + text-transform: capitalize; + children: [ "textbox" ]; +} + +textbox { + text-color: inherit; + background-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} diff --git a/config/rofi/theme.rasi b/config/rofi/theme.rasi new file mode 100644 index 0000000..7cec0c0 --- /dev/null +++ b/config/rofi/theme.rasi @@ -0,0 +1,10 @@ +* { + main-bg: #2F3E46; + main-fg: #CAD2C5; + main-br: #cba6f7ff; + main-ex: #f5e0dcff; + select-bg: #84A98C; + select-fg: #11111bff; + separatorcolor: transparent; + border-color: transparent; +} diff --git a/config/sway/config b/config/sway/config new file mode 100644 index 0000000..59c85a6 --- /dev/null +++ b/config/sway/config @@ -0,0 +1,260 @@ +### Variables +# +# Logo key. Use Mod1 for Alt. +set $mod Mod4 +# Your preferred terminal emulator +set $term foot +# Your preferred application launcher +set $menu rofi -show drun -m HDMI-A-1 + +exec dbus-update-activation-environment DISPLAY I3SOCK SWAYSOCK WAYLAND_DISPLAY + +### Output configuration +# +# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) +output * bg /home/anhgelus/Images/li-moly-731.jpg fill +# +# Example configuration: +# +# output HDMI-A-1 resolution 1920x1080 position 1920,0 +# +# You can get the names of your outputs by running: swaymsg -t get_outputs +output HDMI-A-1 resolution 1920x1080@144Hz position 0 0 +output DP-1 resolution 1920x1080@75Hz position 1920 0 + +### Idle configuration +# +# Example configuration: +# +# exec swayidle -w \ +# timeout 300 'swaylock -f -c 000000' \ +# timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \ + # before-sleep 'swaylock -f -c 000000' +# +# This will lock your screen after 300 seconds of inactivity, then turn off +# your displays after another 300 seconds, and turn your screens back on when +# resumed. It will also lock your screen before your computer goes to sleep. + +### Input configuration + +input "type:keyboard" { + xkb_layout "fr" + xkb_variant "oss" + xkb_numlock enabled +} + +gaps inner 5 +gaps outer 10 + +#smart_borders on +default_border none +default_border pixel 4 + +client.focused #84A98C #84A98C #2F3E46 #52796F +client.focused_inactive #2F3E46 #2F3E46 #CAD2C5 #52796F +client.unfocused #2F3E46 #354F52 #CAD2C5 #52796F +client.urgent #84A98C #84A98C #2F3E46 #52796F + +# +# Example configuration: +# +# input "2:14:SynPS/2_Synaptics_TouchPad" { +# dwt enabled +# tap enabled +# natural_scroll enabled +# middle_emulation enabled +# } +# +# You can get the names of your inputs by running: swaymsg -t get_inputs +# Read `man 5 sway-input` for more information about this section. + +### Key bindings +# +# Basics: +# + # Start a terminal + bindsym $mod+Return exec $term + + # Kill focused window + bindsym $mod+q kill + + # Start your launcher + bindsym $mod+d exec $menu + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + bindsym $mod+Shift+c reload + + # Exit sway (logs you out of your Wayland session) + bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' +# +# Moving around: +# + # Move your focus around + # Or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # Move the focused window with the same, but add Shift + # Ditto, with arrow 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 +# +# Workspaces: +# + +workspace 1 output HDMI-A-1 +workspace 2 output HDMI-A-1 +workspace 3 output HDMI-A-1 +workspace 4 output DP-1 +workspace 10 output DP-1 + # Switch to workspace + bindsym $mod+ampersand workspace number 1 + bindsym $mod+eacute workspace number 2 + bindsym $mod+quotedbl workspace number 3 + bindsym $mod+apostrophe workspace number 4 + bindsym $mod+parenleft workspace number 5 + bindsym $mod+minus workspace number 6 + bindsym $mod+egrave workspace number 7 + bindsym $mod+underscore workspace number 8 + bindsym $mod+ccedilla workspace number 9 + bindsym $mod+agrave workspace number 10 + # Move focused container to workspace + bindsym $mod+1 move container to workspace number 1 + bindsym $mod+2 move container to workspace number 2 + bindsym $mod+3 move container to workspace number 3 + bindsym $mod+4 move container to workspace number 4 + bindsym $mod+5 move container to workspace number 5 + bindsym $mod+6 move container to workspace number 6 + bindsym $mod+7 move container to workspace number 7 + bindsym $mod+8 move container to workspace number 8 + bindsym $mod+9 move container to workspace number 9 + bindsym $mod+0 move container to workspace number 10 + # Note: workspaces can have any name you want, not just numbers. + # We just use 1-10 as the default. +# +# Layout stuff: +# + # You can "split" the current object of your focus with + # $mod+b or $mod+v, for horizontal and vertical splits + # respectively. + bindsym $mod+h splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+t layout tabbed + bindsym $mod+e layout toggle split + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # Move focus to the parent container + bindsym $mod+a focus parent +# +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + #bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + #bindsym $mod+minus scratchpad show +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" +# +# Utilities: +# + # Special keys to adjust volume via PulseAudio + bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle + bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5% + bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5% + bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle + # Special keys to adjust brightness via brightnessctl + bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- + bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+ + # Special key to take a screenshot with grim + bindsym Print exec grim -g "$(slurp -d)" - > ~/Images/Screenshots/$(date).png + bindsym Shift+Print exec grim - > ~/Images/Screenshots/$(date).png + bindsym $mod+Print exec grim -g "0,0 1920x1080" - > ~/Images/Screenshots/$(date).png +# +# Window rules +# +assign [class="jetbrains.*"] workspace 1 +assign [class="discord"] workspace 4 +for_window { + [app_id="thunar"] focus, floating enable, resize set 1000 600 + [class="Thunar"] focus, floating enable, resize set 1000 600 + [title=".*Bitwarden.*" app_id="Firefox"] floating enable + [app_id="xdg-desktop-portal-gtk"] floating enable + [app_id="org.gnome.Loupe"] floating enable + [app_id="mpv"] floating enable, resize set 1280 720 + [app_id="org.gnome.FileRoller"] floating enable + + [app_id="."] opacity 0.98 + [app_id="mpv"] opacity 1 + [class="discord"] opacity 1 + [class="Minecraft.*"] opacity 1 + + [floating] opacity 1 +} + +# +# Status Bar: +# +# Read `man 5 sway-bar` for more information about this section. +#bar { +# position top +# + # When the status_command prints a new line to stdout, swaybar updates. + # The default just shows the current date and time. +# status_command while date +'%Y-%m-%d %X'; do sleep 1; done + +# colors { +# statusline #ffffff +# background #323232 +# inactive_workspace #32323200 #32323200 #5c5c5c +# } +#} + +exec --no-startup-id waybar + +exec pipewire + +include /etc/sway/config.d/* diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc new file mode 100644 index 0000000..db44090 --- /dev/null +++ b/config/waybar/config.jsonc @@ -0,0 +1,210 @@ +// -*- mode: jsonc -*- +{ + // "layer": "top", // Waybar at top layer + // "position": "bottom", // Waybar position (top|bottom|left|right) + "height": 35, // Waybar height (to be removed for auto height) + // "width": 1280, // Waybar width + "spacing": 0, // Gaps between modules (4px) + // Choose the order of the modules + "modules-left": [ + "sway/workspaces", + "sway/mode" + ], + "modules-center": [ + "mpd" + ], + "modules-right": [ + "tray", + "cpu", + "memory", + "temperature", + "clock" + ], + // Modules configuration + "sway/workspaces": { + "disable-scroll": false, + "all-outputs": false, + "warp-on-scroll": false, + "format": "{name} {icon}", + "format-icons": { + "1": "", + "2": "", + "4": "", + "10": "", + "urgent": "", + "default": "" + }, + "persistent-workspaces": { + "1": ["HDMI-A-1"], + "2": ["HDMI-A-1"], + "4": ["DP-1"], + "10": ["DP-1"] + } + }, + "keyboard-state": { + "numlock": true, + "capslock": true, + "format": "{name} {icon}", + "format-icons": { + "locked": "", + "unlocked": "" + } + }, + "sway/mode": { + "format": "{}" + }, + "sway/scratchpad": { + "format": "{icon} {count}", + "show-empty": false, + "format-icons": ["", ""], + "tooltip": true, + "tooltip-format": "{app}: {title}" + }, + "mpd": { + "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", + "format-disconnected": "Disconnected ", + "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", + "unknown-tag": "N/A", + "interval": 5, + "consume-icons": { + "on": " " + }, + "random-icons": { + "off": " ", + "on": " " + }, + "repeat-icons": { + "on": " " + }, + "single-icons": { + "on": "1 " + }, + "state-icons": { + "paused": "", + "playing": "" + }, + "tooltip-format": "MPD (connected)", + "tooltip-format-disconnected": "MPD (disconnected)" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "tray": { + // "icon-size": 21, + "spacing": 10, + // "icons": { + // "blueman": "bluetooth", + // "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png" + // } + }, + "clock": { + // "timezone": "America/New_York", + "tooltip-format": "{:%Y %B}\n{calendar}", + "format-alt": "{:%Y-%m-%d}" + }, + "cpu": { + "format": "{usage}% ", + "tooltip": false + }, + "memory": { + "format": "{}% " + }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 80, + // "format-critical": "{temperatureC}°C {icon}", + "format": "{temperatureC}°C {icon}", + "format-icons": ["", "", ""] + }, + "backlight": { + // "device": "acpi_video1", + "format": "{percent}% {icon}", + "format-icons": ["", "", "", "", "", "", "", "", ""] + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-full": "{capacity}% {icon}", + "format-charging": "{capacity}% ", + "format-plugged": "{capacity}% ", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "power-profiles-daemon": { + "format": "{icon}", + "tooltip-format": "Power profile: {profile}\nDriver: {driver}", + "tooltip": true, + "format-icons": { + "default": "", + "performance": "", + "balanced": "", + "power-saver": "" + } + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": "{essid} ({signalStrength}%) ", + "format-ethernet": "{ipaddr}/{cidr} ", + "tooltip-format": "{ifname} via {gwaddr} ", + "format-linked": "{ifname} (No IP) ", + "format-disconnected": "Disconnected ⚠", + "format-alt": "{ifname}: {ipaddr}/{cidr}" + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{volume}% {icon} {format_source}", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": " {format_source}", + "format-source": "{volume}% ", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + "custom/media": { + "format": "{icon} {text}", + "return-type": "json", + "max-length": 40, + "format-icons": { + "spotify": "", + "default": "🎜" + }, + "escape": true, + "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder + // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name + }, + "custom/power": { + "format" : "⏻", + "tooltip": false, + "menu": "on-click", + "menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder + "menu-actions": { + "shutdown": "shutdown", + "reboot": "reboot", + "suspend": "systemctl suspend", + "hibernate": "systemctl hibernate" + } + } +} diff --git a/config/waybar/style.css b/config/waybar/style.css new file mode 100644 index 0000000..f11b862 --- /dev/null +++ b/config/waybar/style.css @@ -0,0 +1,232 @@ +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; + font-size: 16px; +} + +window#waybar { + background-color: rgba(43, 48, 59, 0); + color: #000; + transition-property: background-color; + /*transition-duration: .5s;*/ +} + +window#waybar.hidden { + opacity: 0.2; +} + +/* +window#waybar.empty { + background-color: transparent; +} +window#waybar.solo { + background-color: #FFFFFF; +} +*/ + +window#waybar.termite { + background-color: #3F3F3F; +} + +window#waybar.chromium { + background-color: #000000; + border: none; +} + +button { + /* Use box-shadow instead of border so the text isn't offset */ + /*box-shadow: inset 0 -3px transparent;*/ + /* Avoid rounded borders under each button name */ + border: none; + border-radius: 0; +} + +/* you can set a style on hover for any module like this */ +#pulseaudio:hover { + background-color: #a37800; +} + +#workspaces button { + background-color: #2F3E46; + padding: 0 10px; + color: #fff; +} + +#workspaces button:hover { + background-color: #52796F; +} + +#workspaces button.focused { + background-color: #354F52; + box-shadow: inset 0 -3px #84A98C; +} + +#workspaces button.urgent { + background-color: #84A98C; +} + +#mode { + background-color: #52796F; + box-shadow: inset 0 -3px #84A98C; +} + +#clock, +#battery, +#cpu, +#memory, +#disk, +#temperature, +#backlight, +#network, +#pulseaudio, +#wireplumber, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#scratchpad, +#power-profiles-daemon, +#mpd { + padding: 0 10px; + color: #ffffff; +} + +#window, +#workspaces { + /*margin: 0 4px;*/ +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +#clock { + background-color: #2F3E46; +} + +#battery { + background-color: #ffffff; + color: #000000; +} + +#battery.charging, #battery.plugged { + color: #ffffff; + background-color: #26A65B; +} + +@keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } +} + +label:focus { + background-color: #000000; +} + +#cpu { + background-color: #2F3E46; + color: #fff; +} + +#memory { + background-color: #2F3E46; +} + +#disk { + background-color: #964B00; +} + +#backlight { + background-color: #90b1b1; +} + +#network { + background-color: #2980b9; +} + +#network.disconnected { + background-color: #f53c3c; +} + +#pulseaudio { + background-color: #f1c40f; + color: #000000; +} + +#pulseaudio.muted { + background-color: #90b1b1; + color: #2a5c45; +} + +#wireplumber { + background-color: #fff0f5; + color: #000000; +} + +#wireplumber.muted { + background-color: #f53c3c; +} + +#custom-media { + background-color: #66cc99; + color: #2a5c45; + min-width: 100px; +} + +#custom-media.custom-spotify { + background-color: #66cc99; +} + +#custom-media.custom-vlc { + background-color: #ffa000; +} + +#temperature { + background-color: #f0932b; +} + +#temperature.critical { + background-color: #eb4d4b; +} + +#tray { + background-color: #354F52; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #52796F; +} + +#privacy { + padding: 0; +} + +#privacy-item { + padding: 0 5px; + color: white; +} + +#privacy-item.screenshare { + background-color: #cf5700; +} + +#privacy-item.audio-in { + background-color: #1ca000; +} + +#privacy-item.audio-out { + background-color: #0069d4; +} diff --git a/etc/lightdm/slick-greeter.conf b/etc/lightdm/slick-greeter.conf deleted file mode 100644 index f95ded1..0000000 --- a/etc/lightdm/slick-greeter.conf +++ /dev/null @@ -1,11 +0,0 @@ -[Greeter] -background=/usr/share/anhgelus/oppressive-city.jpg -draw-user-backgrounds=false -draw-grid=true -theme-name=Arc-Dark -icon-theme-name=Qogir -cursor-theme-name=Qogir -cursor-theme-size=16 -show-a11y=false -show-power=false -background-color=#000000 diff --git a/install.sh b/install.sh deleted file mode 100644 index a01e1a3..0000000 --- a/install.sh +++ /dev/null @@ -1,37 +0,0 @@ -dotfiles=$HOMES/dotfiles - -cp $dotfiles/config/polybar/config.ini $HOME/.config/polybar/config.ini -cp $dotfiles/config/i3/config $HOME/.config/i3/config -cp $dotfiles/config/picom/picom.conf $HOME/.config/picom/picom.conf -cp $dotfiles/config/nvim/init.vim $HOME/.config/nvim/init.vim -sudo cp $dotfiles/etc/lightdm/slick-greeter.conf /etc/lightdm/slick-greeter.conf - -# Install yay -git clone https://aur.archlinux.org/yay.git -cd yay -makepkg -si -cd .. -rm -fr yay/ - -# Install basic apps -yay -Sy snap flatpak picom-jonaburg-git polybar rofi feh xbindkeys alacritty fish xclip -flatpak install io.bassi.Amberol - -# Install oh my fish and setup the fish's theme -curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install | fish - -omf install slacker && omf theme slacker - -# Install vim config -cp $dotfiles/.vimrc $HOME/.vimrc -mkdir -p $HOME/.vim/colors $HOME/.vim/autoload -# Install vundle -git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim -# Install all vim plugins -vim +PluginInstall +qall -nvim +PluginInstall +qall - -# Install vim theme -curl https://raw.githubusercontent.com/joshdick/onedark.vim/main/colors/onedark.vim > $HOME/.vim/colors/onedark.vim -curl https://raw.githubusercontent.com/joshdick/onedark.vim/main/autoload/onedark.vim > $HOME/.vim/autoload/onedark.vim - diff --git a/update.sh b/update.sh deleted file mode 100644 index 49e5cdd..0000000 --- a/update.sh +++ /dev/null @@ -1,12 +0,0 @@ -dotfiles=$HOME/dotfiles - -# Config -cp $HOME/.config/polybar/config.ini $dotfiles/config/polybar/config.ini -cp $HOME/.config/i3/config $dotfiles/config/i3/config -cp $HOME/.config/picom/picom.conf $dotfiles/config/picom/picom.conf -cp $HOME/.config/nvim/init.vim $dotfiles/config/nvim/init.vim -cp /etc/lightdm/slick-greeter.conf $dotfiles/etc/lightdm/slick-greeter.conf - -# Vim -cp $HOME/.vimrc $dotfiles/.vimrc -