├── .Xresources ├── .gitignore ├── .stalonetrayrc ├── .zshrc ├── .zshrc-alias ├── .zshrc-opts ├── .zshrc-theme ├── LICENSE ├── README.md ├── alacritty ├── alacritty.yml ├── onedark.yml └── palenight.yml ├── awesome ├── LICENSE ├── rc.lua └── themes │ └── notheme │ ├── assets │ ├── close-button.svg │ ├── maximized-button.svg │ ├── min_unfocused.png │ ├── minimize-button.svg │ ├── radio-selected-insensitive@2.png │ ├── radio-selected@2.png │ ├── radio-unselected-hover@2.png │ └── scale-slider-hover.svg │ ├── custom.png │ ├── layouts │ ├── cornerne.png │ ├── cornernew.png │ ├── cornernw.png │ ├── cornernww.png │ ├── cornerse.png │ ├── cornersew.png │ ├── cornersw.png │ ├── cornersww.png │ ├── dwindle.png │ ├── dwindlew.png │ ├── fairh.png │ ├── fairhw.png │ ├── fairv.png │ ├── fairvw.png │ ├── floating.png │ ├── floatingw.png │ ├── fullscreen.png │ ├── fullscreenw.png │ ├── magnifier.png │ ├── magnifierw.png │ ├── max.png │ ├── maxw.png │ ├── spiral.png │ ├── spiralw.png │ ├── tile.png │ ├── tilebottom.png │ ├── tilebottomw.png │ ├── tileleft.png │ ├── tileleftw.png │ ├── tiletop.png │ ├── tiletopw.png │ └── tilew.png │ ├── theme.lua │ └── tile.jpeg ├── bspwm ├── bspwmrc ├── polybar.sh ├── wallpaper └── wallpaper.jpg ├── eww ├── eww.scss ├── eww.yuck └── scripts │ ├── volume-level.sh │ ├── volume-stats.sh │ └── workspace-watch.sh ├── kitty └── kitty.conf ├── nvim ├── ftdetect │ ├── haskell.vim │ ├── nolang.vim │ └── yex.vim ├── init.lua ├── lua │ ├── colors.lua │ ├── functions │ │ └── highlight.lua │ └── telescope-config.lua ├── plugin │ ├── auto-pairs.lua │ ├── cmp-completion.lua │ ├── custom.lua │ ├── dashboard.lua │ ├── indentation.lua │ ├── lsp.lua │ ├── maps.lua │ ├── notify.lua │ ├── nvimtree.lua │ ├── rich-presence.lua │ ├── statusline.lua │ ├── tabline.lua │ └── treesitter.lua └── syntax │ ├── nolang.vim │ └── yex.vim ├── picom.conf ├── polybar └── config ├── rofi └── config.rasi ├── screenshot.png ├── setup-ln.sh ├── st ├── FAQ ├── LEGACY ├── LICENSE ├── Makefile ├── README ├── TODO ├── arg.h ├── config.def.h ├── config.mk ├── hb.c ├── hb.h ├── st.1 ├── st.c ├── st.h ├── st.info ├── win.h └── x.c ├── sxhkd └── sxhkdrc └── update-repo.sh /.Xresources: -------------------------------------------------------------------------------- 1 | xterm*Background:#282838 2 | xterm*Foreground:#b6bcdd 3 | xterm*cursorColor:#969cbd 4 | xterm*faceName:JetBrainsMono Nerd Font Mono:style=Medium 5 | xterm*faceSize:12 6 | xterm*selectToClipboard:true 7 | xterm*eightBitInput:false 8 | xterm*eightBitOutput:true 9 | 10 | xterm*VT100.Translations: #override \ 11 | Ctrl Shift V: insert-selection(CLIPBOARD) \n\ 12 | Ctrl Shift C: copy-selection(CLIPBOARD) \n\ 13 | Ctrl Shift Up: scroll-back(1, halfpage) \n\ 14 | Ctrl Shift Down: scroll-forw(1, halfpage) \n\ 15 | Ctrl Shift +: larger-vt-font() \n\ 16 | Ctrl Shift -: smaller-vt-font() 17 | 18 | xterm*color0: #3b3b4b 19 | xterm*color1: #f07178 20 | xterm*color2: #7cd380 21 | xterm*color3: #ffcb6b 22 | xterm*color4: #729aef 23 | xterm*color5: #b782da 24 | xterm*color6: #529dbc 25 | xterm*color7: #bbc2cf 26 | xterm*color8: #97a6c0 27 | xterm*color9: #ff5370 28 | xterm*color10: #8ce390 29 | xterm*color11: #ffdb7b 30 | xterm*color12: #82aaff 31 | xterm*color13: #c792ea 32 | xterm*color14: #62adcc 33 | xterm*color15: #ffffff 34 | XTerm*visualBell:False 35 | 36 | color0: #3b3b4b 37 | color1: #f07178 38 | color2: #6cc370 39 | color3: #ffcb6b 40 | color4: #729aef 41 | color5: #b782da 42 | color6: #529dbc 43 | color7: #bbc2cf 44 | color8: #97a6c0 45 | color9: #ff5370 46 | color10: #9cf3a0 47 | color11: #ffdb7b 48 | color12: #82aaff 49 | color13: #c792ea 50 | color14: #62adcc 51 | color15: #ffffff 52 | 53 | background:#282838 54 | foreground:#b6bcdd 55 | 56 | background-alt:#1e1e2e 57 | foreground-alt:#bbc2cf 58 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /nvim/plugin/packer_compiled.vim 2 | /st/config.h 3 | /st/*.o 4 | /st/st 5 | -------------------------------------------------------------------------------- /.stalonetrayrc: -------------------------------------------------------------------------------- 1 | decorations none 2 | transparent false 3 | dockapp_mode none 4 | geometry 1x5+10-170 5 | kludges force_icons_size 6 | grow_gravity NE 7 | icon_gravity NE 8 | background "#282838" 9 | icon_size 20 10 | sticky true 11 | window_type dock 12 | window_layer top 13 | skip_taskbar true 14 | window_layer top 15 | -------------------------------------------------------------------------------- /.zshrc: -------------------------------------------------------------------------------- 1 | source ~/.zshrc-opts 2 | source ~/.zshrc-theme 3 | source ~/.zshrc-alias 4 | [ -f "/home/noname/.ghcup/env" ] && source "/home/noname/.ghcup/env" # ghcup-env 5 | 6 | alias luamake=/tmp/lua-language-server/3rd/luamake/luamake 7 | -------------------------------------------------------------------------------- /.zshrc-alias: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | alias sudo="doas " 3 | alias doas="doas " 4 | alias vim="nvim" 5 | alias vi="nvim" 6 | alias cl="clear" 7 | alias ls="ls --color=always" 8 | alias l="ls -lAh" 9 | alias la="ls -lah" 10 | alias ll="ls -lh" 11 | alias rm="rm -i" 12 | alias mv="mv -i" 13 | alias cp="cp -i" 14 | alias :q="exit" 15 | alias ygo="cd ~/.ygo && ./YGO\ Omega.x86_64 & disown" 16 | 17 | run() { 18 | if test -f Cargo.toml; then 19 | command cargo run $@ 20 | elif test -f package.json; then 21 | command yarn run $@ 22 | elif test -f obj; then 23 | command dotnet run $@ 24 | else 25 | echo "no target found" 26 | return 1 27 | fi 28 | } 29 | 30 | export EDITOR=nvim 31 | 32 | emacs() { 33 | local is_no_window=false 34 | 35 | for arg in $@; do 36 | if [[ "${arg}" = "-nw" ]] || [[ "${arg}" = "--no-window-system" ]]; then 37 | is_no_window=true 38 | fi 39 | done 40 | 41 | $is_no_window && TERM=xterm-24bit command emacs $@ || command emacs $@ 42 | } 43 | -------------------------------------------------------------------------------- /.zshrc-opts: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | autoload -Uz colors && colors 3 | autoload -Uz promptinit && promptinit 4 | autoload -Uz compinit && compinit 5 | autoload -U history-search-end 6 | fpath+=~/.zfunc 7 | 8 | setopt autocd histignorealldups sharehistory no_nomatch prompt_subst interactivecomments 9 | 10 | # Use emacs keybindings even if our EDITOR is set to vi 11 | bindkey -e 12 | 13 | # Keep 1000 lines of history within the shell and save it to ~/.zsh_history: 14 | HISTSIZE=10000 15 | SAVEHIST=10000 16 | HISTFILE=~/.zsh_history 17 | 18 | # auto filter history 19 | zle -N history-beginning-search-backward-end history-search-end 20 | zle -N history-beginning-search-forward-end history-search-end 21 | bindkey "^[[A" history-beginning-search-backward-end 22 | bindkey "^[[B" history-beginning-search-forward-end 23 | 24 | -------------------------------------------------------------------------------- /.zshrc-theme: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | 3 | # zstyle {{{ 4 | zstyle ':completion:*' auto-description 'specify: %d' 5 | zstyle ':completion:*' completer _expand _complete _correct _approximate 6 | zstyle ':completion:*' format 'Completing %d' 7 | zstyle ':completion:*' group-name '' 8 | zstyle ':completion:*' menu select=2 9 | zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} 10 | zstyle ':completion:*' list-colors '' 11 | zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s 12 | zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*' 13 | zstyle ':completion:*' menu select=long 14 | zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s 15 | zstyle ':completion:*' use-compctl false 16 | zstyle ':completion:*' verbose true 17 | zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' 18 | zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd' 19 | # }}} 20 | 21 | __GIT_BRANCH="$(git branch --show-current 2>/dev/null)" 22 | __GIT_PROMPT= 23 | 24 | # functions {{{ 25 | __get_files_to_add(){ 26 | echo "$(git status --porcelain=v1|grep -E "^\?\?|^ M|^ D"|wc -l)" 27 | } 28 | 29 | __get_files_to_commit(){ 30 | echo "$(git status --porcelain=v1|grep -E "^A|^M|^D"|wc -l)" 31 | } 32 | 33 | __initialize_git_prompt(){ 34 | if git rev-parse --git-dir > /dev/null 2>&1; then 35 | __GIT_BRANCH="$(git branch --show-current)" 36 | local files_to_add="$(__get_files_to_add)" 37 | local files_to_commit="$(__get_files_to_commit)" 38 | 39 | local git_final_string=" %F{red}git:%f(%F{blue}$__GIT_BRANCH%f" 40 | 41 | if [[ $files_to_add > 0 ]]; then 42 | git_final_string+=" %F{green}*$files_to_add%f" 43 | fi 44 | 45 | if [[ $files_to_commit > 0 ]]; then 46 | git_final_string+=" %F{yellow}+$files_to_commit%f" 47 | fi 48 | 49 | git_final_string+=")" 50 | __GIT_PROMPT="$git_final_string" 51 | else 52 | __GIT_PROMPT= 53 | fi 54 | } 55 | 56 | precmd(){ 57 | local LAST_STAT=$? 58 | __initialize_git_prompt 59 | 60 | if [[ "$LAST_STAT" == "0" ]]; then 61 | STATUS="%F{green}" 62 | else 63 | STATUS="%F{red}" 64 | fi 65 | 66 | 67 | printf "\033[6 q" 68 | } 69 | 70 | chpwd(){ 71 | __initialize_git_prompt 72 | } 73 | ### }}} 74 | 75 | PROMPT='$STATUS%c%f${__GIT_PROMPT} ' 76 | 77 | precmd 78 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hello 2 | 3 | ## Welcome to the worst dotfiles repostory you'll ever see. 4 | 5 | these dotfiles are probably unusable outside of my machine, use them at your own risk 6 | 7 | ## But, since you're here 8 | 9 | ### Some information about my setup 10 | 11 | Currently I'm using void linux as my main distro. 12 | other infos: 13 | 14 | * Editor: neovim 15 | * WM: awesome 16 | * launcher: rofi 17 | * terminal: xterm 18 | * browser: firefox 19 | * shell: zshell 20 | * colorscheme: custom made, you can look at it on the Xresources file, it's highly inspired by onedark and palenight 21 | 22 | ### Screenshot 23 | 24 | ![Screenshot](/screenshot.png) 25 | 26 | ## Credits 27 | the assests on awesome/themes/notheme/assets are from [EliverLara/Sweet](https://github.com/EliverLara/Sweet) 28 | -------------------------------------------------------------------------------- /alacritty/alacritty.yml: -------------------------------------------------------------------------------- 1 | import: 2 | - ~/.config/alacritty/palenight.yml 3 | 4 | cursor: 5 | style: 6 | shape: Beam 7 | 8 | font: 9 | normal: 10 | family: Iosevka SS14 11 | style: Bold 12 | bold: 13 | family: Iosevka SS14 14 | style: Bold 15 | italic: 16 | family: Iosevka SS14 17 | style: Bold Italic 18 | offset: 19 | x: 0 20 | y: 1 21 | size: 11 22 | 23 | window: 24 | padding: 25 | x: 10 26 | y: 10 27 | opacity: 0.93 28 | 29 | env: 30 | TERM: xterm-256color 31 | -------------------------------------------------------------------------------- /alacritty/onedark.yml: -------------------------------------------------------------------------------- 1 | colors: 2 | # Default colors 3 | primary: 4 | background: '0x282c34' 5 | # background: '0x282c34' 6 | foreground: '0xabb2bf' 7 | 8 | # Bright and dim foreground colors 9 | # 10 | # The dimmed foreground color is calculated automatically if it is not present. 11 | # If the bright foreground color is not set, or `draw_bold_text_with_bright_colors` 12 | # is `false`, the normal foreground color will be used. 13 | #dim_foreground: '0x9a9a9a' 14 | bright_foreground: '0xe6efff' 15 | 16 | # Cursor colors 17 | # 18 | # Colors which should be used to draw the terminal cursor. If these are unset, 19 | # the cursor color will be the inverse of the cell color. 20 | cursor: 21 | text: '0x000000' 22 | cursor: '#abb2bf' 23 | 24 | # Normal colors 25 | normal: 26 | black: '0x1e2127' 27 | red: '0xe06c75' 28 | green: '0x98c379' 29 | yellow: '0xd19a66' 30 | blue: '0x61afef' 31 | magenta: '0xc678dd' 32 | cyan: '0x56b6c2' 33 | white: '0x828791' 34 | 35 | # Bright colors 36 | bright: 37 | black: '0x5c6370' 38 | red: '0xe06c75' 39 | green: '0x98c379' 40 | yellow: '0xd19a66' 41 | blue: '0x61afef' 42 | magenta: '0xc678dd' 43 | cyan: '0x56b6c2' 44 | white: '0xe6efff' 45 | 46 | # Dim colors 47 | # 48 | # If the dim colors are not set, they will be calculated automatically based 49 | # on the `normal` colors. 50 | dim: 51 | black: '0x1e2127' 52 | red: '0xe06c75' 53 | green: '0x98c379' 54 | yellow: '0xd19a66' 55 | blue: '0x61afef' 56 | magenta: '0xc678dd' 57 | cyan: '0x56b6c2' 58 | white: '0x828791' 59 | 60 | # Indexed Colors 61 | # 62 | # The indexed colors include all colors from 16 to 256. 63 | # When these are not set, they're filled with sensible defaults. 64 | #indexed_colors: 65 | # - { index: 16, color: '0x000000' } 66 | 67 | -------------------------------------------------------------------------------- /alacritty/palenight.yml: -------------------------------------------------------------------------------- 1 | colors: 2 | # Default colors 3 | primary: 4 | background: '#282838' 5 | foreground: '#b6bcdd' 6 | 7 | # Normal colors 8 | normal: 9 | black: '#3b3b4b' 10 | red: '#f07178' 11 | green: '#7cd380' 12 | yellow: '#ffcb6b' 13 | blue: '#729aef' 14 | magenta: '#b782da' 15 | cyan: '#529dbc' 16 | white: '#bbc2cf' 17 | 18 | # Bright colors 19 | bright: 20 | black: '#97a6c0' 21 | red: '#ff5370' 22 | green: '#8ce390' 23 | yellow: '#ffdb7b' 24 | blue: '#82aaff' 25 | magenta: '#c792ea' 26 | cyan: '#62adcc' 27 | white: '#ffffff' 28 | 29 | -------------------------------------------------------------------------------- /awesome/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | GNU GENERAL PUBLIC LICENSE 3 | Version 2, June 1991 4 | 5 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 6 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 7 | Everyone is permitted to copy and distribute verbatim copies 8 | of this license document, but changing it is not allowed. 9 | 10 | Preamble 11 | 12 | The licenses for most software are designed to take away your 13 | freedom to share and change it. By contrast, the GNU General Public 14 | License is intended to guarantee your freedom to share and change free 15 | software--to make sure the software is free for all its users. This 16 | General Public License applies to most of the Free Software 17 | Foundation's software and to any other program whose authors commit to 18 | using it. (Some other Free Software Foundation software is covered by 19 | the GNU Lesser General Public License instead.) You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | this service if you wish), that you receive source code or can get it 26 | if you want it, that you can change the software or use pieces of it 27 | in new free programs; and that you know you can do these things. 28 | 29 | To protect your rights, we need to make restrictions that forbid 30 | anyone to deny you these rights or to ask you to surrender the rights. 31 | These restrictions translate to certain responsibilities for you if you 32 | distribute copies of the software, or if you modify it. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must give the recipients all the rights that 36 | you have. You must make sure that they, too, receive or can get the 37 | source code. And you must show them these terms so they know their 38 | rights. 39 | 40 | We protect your rights with two steps: (1) copyright the software, and 41 | (2) offer you this license which gives you legal permission to copy, 42 | distribute and/or modify the software. 43 | 44 | Also, for each author's protection and ours, we want to make certain 45 | that everyone understands that there is no warranty for this free 46 | software. If the software is modified by someone else and passed on, we 47 | want its recipients to know that what they have is not the original, so 48 | that any problems introduced by others will not reflect on the original 49 | authors' reputations. 50 | 51 | Finally, any free program is threatened constantly by software 52 | patents. We wish to avoid the danger that redistributors of a free 53 | program will individually obtain patent licenses, in effect making the 54 | program proprietary. To prevent this, we have made it clear that any 55 | patent must be licensed for everyone's free use or not licensed at all. 56 | 57 | The precise terms and conditions for copying, distribution and 58 | modification follow. 59 | 60 | GNU GENERAL PUBLIC LICENSE 61 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 62 | 63 | 0. This License applies to any program or other work which contains 64 | a notice placed by the copyright holder saying it may be distributed 65 | under the terms of this General Public License. The "Program", below, 66 | refers to any such program or work, and a "work based on the Program" 67 | means either the Program or any derivative work under copyright law: 68 | that is to say, a work containing the Program or a portion of it, 69 | either verbatim or with modifications and/or translated into another 70 | language. (Hereinafter, translation is included without limitation in 71 | the term "modification".) Each licensee is addressed as "you". 72 | 73 | Activities other than copying, distribution and modification are not 74 | covered by this License; they are outside its scope. The act of 75 | running the Program is not restricted, and the output from the Program 76 | is covered only if its contents constitute a work based on the 77 | Program (independent of having been made by running the Program). 78 | Whether that is true depends on what the Program does. 79 | 80 | 1. You may copy and distribute verbatim copies of the Program's 81 | source code as you receive it, in any medium, provided that you 82 | conspicuously and appropriately publish on each copy an appropriate 83 | copyright notice and disclaimer of warranty; keep intact all the 84 | notices that refer to this License and to the absence of any warranty; 85 | and give any other recipients of the Program a copy of this License 86 | along with the Program. 87 | 88 | You may charge a fee for the physical act of transferring a copy, and 89 | you may at your option offer warranty protection in exchange for a fee. 90 | 91 | 2. You may modify your copy or copies of the Program or any portion 92 | of it, thus forming a work based on the Program, and copy and 93 | distribute such modifications or work under the terms of Section 1 94 | above, provided that you also meet all of these conditions: 95 | 96 | a) You must cause the modified files to carry prominent notices 97 | stating that you changed the files and the date of any change. 98 | 99 | b) You must cause any work that you distribute or publish, that in 100 | whole or in part contains or is derived from the Program or any 101 | part thereof, to be licensed as a whole at no charge to all third 102 | parties under the terms of this License. 103 | 104 | c) If the modified program normally reads commands interactively 105 | when run, you must cause it, when started running for such 106 | interactive use in the most ordinary way, to print or display an 107 | announcement including an appropriate copyright notice and a 108 | notice that there is no warranty (or else, saying that you provide 109 | a warranty) and that users may redistribute the program under 110 | these conditions, and telling the user how to view a copy of this 111 | License. (Exception: if the Program itself is interactive but 112 | does not normally print such an announcement, your work based on 113 | the Program is not required to print an announcement.) 114 | 115 | These requirements apply to the modified work as a whole. If 116 | identifiable sections of that work are not derived from the Program, 117 | and can be reasonably considered independent and separate works in 118 | themselves, then this License, and its terms, do not apply to those 119 | sections when you distribute them as separate works. But when you 120 | distribute the same sections as part of a whole which is a work based 121 | on the Program, the distribution of the whole must be on the terms of 122 | this License, whose permissions for other licensees extend to the 123 | entire whole, and thus to each and every part regardless of who wrote it. 124 | 125 | Thus, it is not the intent of this section to claim rights or contest 126 | your rights to work written entirely by you; rather, the intent is to 127 | exercise the right to control the distribution of derivative or 128 | collective works based on the Program. 129 | 130 | In addition, mere aggregation of another work not based on the Program 131 | with the Program (or with a work based on the Program) on a volume of 132 | a storage or distribution medium does not bring the other work under 133 | the scope of this License. 134 | 135 | 3. You may copy and distribute the Program (or a work based on it, 136 | under Section 2) in object code or executable form under the terms of 137 | Sections 1 and 2 above provided that you also do one of the following: 138 | 139 | a) Accompany it with the complete corresponding machine-readable 140 | source code, which must be distributed under the terms of Sections 141 | 1 and 2 above on a medium customarily used for software interchange; or, 142 | 143 | b) Accompany it with a written offer, valid for at least three 144 | years, to give any third party, for a charge no more than your 145 | cost of physically performing source distribution, a complete 146 | machine-readable copy of the corresponding source code, to be 147 | distributed under the terms of Sections 1 and 2 above on a medium 148 | customarily used for software interchange; or, 149 | 150 | c) Accompany it with the information you received as to the offer 151 | to distribute corresponding source code. (This alternative is 152 | allowed only for noncommercial distribution and only if you 153 | received the program in object code or executable form with such 154 | an offer, in accord with Subsection b above.) 155 | 156 | The source code for a work means the preferred form of the work for 157 | making modifications to it. For an executable work, complete source 158 | code means all the source code for all modules it contains, plus any 159 | associated interface definition files, plus the scripts used to 160 | control compilation and installation of the executable. However, as a 161 | special exception, the source code distributed need not include 162 | anything that is normally distributed (in either source or binary 163 | form) with the major components (compiler, kernel, and so on) of the 164 | operating system on which the executable runs, unless that component 165 | itself accompanies the executable. 166 | 167 | If distribution of executable or object code is made by offering 168 | access to copy from a designated place, then offering equivalent 169 | access to copy the source code from the same place counts as 170 | distribution of the source code, even though third parties are not 171 | compelled to copy the source along with the object code. 172 | 173 | 4. You may not copy, modify, sublicense, or distribute the Program 174 | except as expressly provided under this License. Any attempt 175 | otherwise to copy, modify, sublicense or distribute the Program is 176 | void, and will automatically terminate your rights under this License. 177 | However, parties who have received copies, or rights, from you under 178 | this License will not have their licenses terminated so long as such 179 | parties remain in full compliance. 180 | 181 | 5. You are not required to accept this License, since you have not 182 | signed it. However, nothing else grants you permission to modify or 183 | distribute the Program or its derivative works. These actions are 184 | prohibited by law if you do not accept this License. Therefore, by 185 | modifying or distributing the Program (or any work based on the 186 | Program), you indicate your acceptance of this License to do so, and 187 | all its terms and conditions for copying, distributing or modifying 188 | the Program or works based on it. 189 | 190 | 6. Each time you redistribute the Program (or any work based on the 191 | Program), the recipient automatically receives a license from the 192 | original licensor to copy, distribute or modify the Program subject to 193 | these terms and conditions. You may not impose any further 194 | restrictions on the recipients' exercise of the rights granted herein. 195 | You are not responsible for enforcing compliance by third parties to 196 | this License. 197 | 198 | 7. If, as a consequence of a court judgment or allegation of patent 199 | infringement or for any other reason (not limited to patent issues), 200 | conditions are imposed on you (whether by court order, agreement or 201 | otherwise) that contradict the conditions of this License, they do not 202 | excuse you from the conditions of this License. If you cannot 203 | distribute so as to satisfy simultaneously your obligations under this 204 | License and any other pertinent obligations, then as a consequence you 205 | may not distribute the Program at all. For example, if a patent 206 | license would not permit royalty-free redistribution of the Program by 207 | all those who receive copies directly or indirectly through you, then 208 | the only way you could satisfy both it and this License would be to 209 | refrain entirely from distribution of the Program. 210 | 211 | If any portion of this section is held invalid or unenforceable under 212 | any particular circumstance, the balance of the section is intended to 213 | apply and the section as a whole is intended to apply in other 214 | circumstances. 215 | 216 | It is not the purpose of this section to induce you to infringe any 217 | patents or other property right claims or to contest validity of any 218 | such claims; this section has the sole purpose of protecting the 219 | integrity of the free software distribution system, which is 220 | implemented by public license practices. Many people have made 221 | generous contributions to the wide range of software distributed 222 | through that system in reliance on consistent application of that 223 | system; it is up to the author/donor to decide if he or she is willing 224 | to distribute software through any other system and a licensee cannot 225 | impose that choice. 226 | 227 | This section is intended to make thoroughly clear what is believed to 228 | be a consequence of the rest of this License. 229 | 230 | 8. If the distribution and/or use of the Program is restricted in 231 | certain countries either by patents or by copyrighted interfaces, the 232 | original copyright holder who places the Program under this License 233 | may add an explicit geographical distribution limitation excluding 234 | those countries, so that distribution is permitted only in or among 235 | countries not thus excluded. In such case, this License incorporates 236 | the limitation as if written in the body of this License. 237 | 238 | 9. The Free Software Foundation may publish revised and/or new versions 239 | of the General Public License from time to time. Such new versions will 240 | be similar in spirit to the present version, but may differ in detail to 241 | address new problems or concerns. 242 | 243 | Each version is given a distinguishing version number. If the Program 244 | specifies a version number of this License which applies to it and "any 245 | later version", you have the option of following the terms and conditions 246 | either of that version or of any later version published by the Free 247 | Software Foundation. If the Program does not specify a version number of 248 | this License, you may choose any version ever published by the Free Software 249 | Foundation. 250 | 251 | 10. If you wish to incorporate parts of the Program into other free 252 | programs whose distribution conditions are different, write to the author 253 | to ask for permission. For software which is copyrighted by the Free 254 | Software Foundation, write to the Free Software Foundation; we sometimes 255 | make exceptions for this. Our decision will be guided by the two goals 256 | of preserving the free status of all derivatives of our free software and 257 | of promoting the sharing and reuse of software generally. 258 | 259 | NO WARRANTY 260 | 261 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 262 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 263 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 264 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 265 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 266 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 267 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 268 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 269 | REPAIR OR CORRECTION. 270 | 271 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 272 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 273 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 274 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 275 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 276 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 277 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 278 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 279 | POSSIBILITY OF SUCH DAMAGES. 280 | 281 | END OF TERMS AND CONDITIONS 282 | 283 | How to Apply These Terms to Your New Programs 284 | 285 | If you develop a new program, and you want it to be of the greatest 286 | possible use to the public, the best way to achieve this is to make it 287 | free software which everyone can redistribute and change under these terms. 288 | 289 | To do so, attach the following notices to the program. It is safest 290 | to attach them to the start of each source file to most effectively 291 | convey the exclusion of warranty; and each file should have at least 292 | the "copyright" line and a pointer to where the full notice is found. 293 | 294 | {description} 295 | Copyright (C) {year} {fullname} 296 | 297 | This program is free software; you can redistribute it and/or modify 298 | it under the terms of the GNU General Public License as published by 299 | the Free Software Foundation; either version 2 of the License, or 300 | (at your option) any later version. 301 | 302 | This program is distributed in the hope that it will be useful, 303 | but WITHOUT ANY WARRANTY; without even the implied warranty of 304 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 305 | GNU General Public License for more details. 306 | 307 | You should have received a copy of the GNU General Public License along 308 | with this program; if not, write to the Free Software Foundation, Inc., 309 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 310 | 311 | Also add information on how to contact you by electronic and paper mail. 312 | 313 | If the program is interactive, make it output a short notice like this 314 | when it starts in an interactive mode: 315 | 316 | Gnomovision version 69, Copyright (C) year name of author 317 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 318 | This is free software, and you are welcome to redistribute it 319 | under certain conditions; type `show c' for details. 320 | 321 | The hypothetical commands `show w' and `show c' should show the appropriate 322 | parts of the General Public License. Of course, the commands you use may 323 | be called something other than `show w' and `show c'; they could even be 324 | mouse-clicks or menu items--whatever suits your program. 325 | 326 | You should also get your employer (if you work as a programmer) or your 327 | school, if any, to sign a "copyright disclaimer" for the program, if 328 | necessary. Here is a sample; alter the names: 329 | 330 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 331 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 332 | 333 | {signature of Ty Coon}, 1 April 1989 334 | Ty Coon, President of Vice 335 | 336 | This General Public License does not permit incorporating your program into 337 | proprietary programs. If your program is a subroutine library, you may 338 | consider it more useful to permit linking proprietary applications with the 339 | library. If this is what you want to do, use the GNU Lesser General 340 | Public License instead of this License. 341 | -------------------------------------------------------------------------------- /awesome/rc.lua: -------------------------------------------------------------------------------- 1 | -- vim:fdm=marker 2 | local awesome, client, root, screen = awesome, client, root, screen 3 | local wibox = require('wibox') 4 | local gears = require("gears") 5 | local awful = require("awful") 6 | require("awful.autofocus") 7 | 8 | local beautiful = require("beautiful") 9 | local naughty = require("naughty") 10 | local my_table = awful.util.table or gears.table 11 | local dpi = require('beautiful.xresources').apply_dpi 12 | 13 | -- startup and general utilities {{{ 14 | local function move_tag(pos) 15 | local tag = awful.screen.focused().selected_tag 16 | if tonumber(pos) <= -1 then 17 | awful.tag.move(tag.index - 1, tag) 18 | else 19 | awful.tag.move(tag.index + 1, tag) 20 | end 21 | end 22 | 23 | -- Check if awesome encountered an error during startup and fell back to 24 | -- another config (This code will only ever execute for the fallback config) 25 | if awesome.startup_errors then 26 | naughty.notify({ 27 | preset = naughty.config.presets.critical, 28 | title = "Oops, there were errors during startup!", 29 | text = awesome.startup_errors 30 | }) 31 | end 32 | 33 | -- Handle runtime errors after startup 34 | do 35 | local in_error = false 36 | awesome.connect_signal("debug::error", function(err) 37 | if in_error then 38 | return 39 | end 40 | in_error = true 41 | naughty.notify({ 42 | preset = naughty.config.presets.critical, 43 | title = "Oops, an error happened!", 44 | text = tostring(err) 45 | }) 46 | in_error = false 47 | end) 48 | end 49 | -- }}} 50 | 51 | -- Choose theme {{{ 52 | local themes = { 53 | "notheme" 54 | } 55 | 56 | local chosen_theme = themes[1] 57 | local modkey = "Mod4" 58 | local altkey = "Mod1" 59 | 60 | awful.util.tagnames = {'', '', '', '', ''} 61 | awful.layout.layouts = { 62 | awful.layout.suit.corner.nw, 63 | awful.layout.suit.tile.top, 64 | awful.layout.suit.tile.right, 65 | } 66 | -- }}} 67 | 68 | -- Buttons {{{ 69 | -- tags keybinds {{{ 70 | awful.util.taglist_buttons = my_table.join(awful.button({}, 1, function(t) 71 | t:view_only() 72 | end), awful.button({modkey}, 1, function(t) 73 | if client.focus then 74 | client.focus:move_to_tag(t) 75 | end 76 | end), awful.button({}, 3, awful.tag.viewtoggle), awful.button({modkey}, 3, function(t) 77 | if client.focus then 78 | client.focus:toggle_tag(t) 79 | end 80 | end), awful.button({}, 5, function(t) 81 | awful.tag.viewnext(t.screen) 82 | end), awful.button({}, 4, function(t) 83 | awful.tag.viewprev(t.screen) 84 | end)) 85 | -- }}} 86 | 87 | -- tasks keybinds {{{ 88 | awful.util.tasklist_buttons = my_table.join(awful.button({}, 1, function(c) 89 | if c == client.focus then 90 | c.minimized = true 91 | else 92 | -- Without this, the following 93 | -- :isvisible() makes no sense 94 | c.minimized = false 95 | if not c:isvisible() and c.first_tag then 96 | c.first_tag:view_only() 97 | end 98 | -- This will also un-minimize 99 | -- the client, if needed 100 | client.focus = c 101 | c:raise() 102 | end 103 | end), awful.button({}, 2, function(c) 104 | c:kill() 105 | end), awful.button({}, 4, function() 106 | awful.client.focus.byidx(1) 107 | end), awful.button({}, 5, function() 108 | awful.client.focus.byidx(-1) 109 | end)) 110 | -- }}} 111 | 112 | -- global keybinds {{{ 113 | local globalkeys = my_table.join( 114 | awful.key( 115 | {altkey}, 116 | "Tab", 117 | function() 118 | awful.client.focus.byidx(1) 119 | if _G.client.focus then 120 | _G.client.focus:raise() 121 | end 122 | end, 123 | { description = 'Switch to next window', group = 'client' 124 | }), awful.key({modkey}, "Left", awful.tag.viewprev, { 125 | description = "view previous", 126 | group = "tag" 127 | }), awful.key({modkey}, "Right", awful.tag.viewnext, { 128 | description = "view next", 129 | group = "tag" 130 | }), awful.key({modkey}, "d", function() 131 | local bar = awful.screen.focused().mywibox 132 | bar.visible = not bar.visible 133 | end, { 134 | description = "toggle wibox", 135 | group = "awesome" 136 | }), awful.key({modkey}, "t", function() 137 | awful.prompt.run { 138 | prompt = "New tag name: ", 139 | textbox = awful.screen.focused().mypromptbox.widget, 140 | exe_callback = function(new_name) 141 | if not new_name or #new_name == 0 then return end 142 | local t = awful.screen.focused().selected_tag 143 | if t then 144 | t.name = new_name 145 | end 146 | end 147 | } 148 | end, { 149 | description = "rename tag", 150 | group = "tag" 151 | }), awful.key({altkey, "Control"}, "Left", function() 152 | move_tag(-1) 153 | end, { 154 | description = "move tag to the left", 155 | group = "tag" 156 | }), awful.key({altkey, "Control"}, "Right", function() 157 | move_tag(1) 158 | end, { 159 | description = "move tag to the right", 160 | group = "tag" 161 | }), awful.key({modkey}, "Return", function() 162 | awful.util.spawn("x-terminal-emulator") 163 | end, { 164 | description = "open a terminal", 165 | group = "launcher" 166 | }), awful.key({modkey, "Control"}, "r", awesome.restart, { 167 | description = "reload awesome", 168 | group = "awesome" 169 | }), awful.key({modkey, "Shift"}, "q", awesome.quit, { 170 | description = "quit awesome", 171 | group = "awesome" 172 | }), awful.key({}, "XF86MonBrightnessUp", function() 173 | os.execute("xbacklight -inc 5") 174 | end, { 175 | description = "+5", 176 | group = "hotkeys" 177 | }), awful.key({}, "XF86MonBrightnessDown", function() 178 | os.execute("xbacklight -dec 5") 179 | end, { 180 | description = "-5%", 181 | group = "hotkeys" 182 | }), awful.key({}, "XF86AudioRaiseVolume", function() 183 | os.execute("amixer -q sset 'Master' 1%+") 184 | beautiful.update_volume() 185 | end, { 186 | description = "volume up", 187 | group = "hotkeys" 188 | }), awful.key({}, "XF86AudioLowerVolume", function() 189 | os.execute("amixer -q sset 'Master' 1%-") 190 | beautiful.update_volume() 191 | end, { 192 | description = "volume down", 193 | group = "hotkeys" 194 | }), awful.key({}, "XF86AudioMute", function() 195 | os.execute("amixer -q sset 'Master' toggle") 196 | beautiful.update_volume() 197 | end, { 198 | description = "toggle mute", 199 | group = "hotkeys" 200 | }), awful.key({altkey}, "space", function() 201 | awful.spawn("rofi -show drun") 202 | end, { 203 | description = "app launcher", 204 | group = "launcher" 205 | }), awful.key({modkey}, "r", function() 206 | awful.screen.focused().mypromptbox:run() 207 | end, { 208 | description = "execute command", 209 | group = "awesome" 210 | })) 211 | -- }}} 212 | 213 | -- client keybinds {{{ 214 | local clientkeys = my_table.join( 215 | awful.key({ modkey }, "space", function(_) 216 | awful.layout.inc(1) 217 | end, { 218 | description = "select previous", 219 | group = "layout" 220 | }), awful.key({ modkey }, "m", function(c) 221 | c.floating = not c.floating 222 | end, { 223 | description = "magnify client", 224 | group = "client" 225 | }), awful.key({modkey}, "f", function(c) 226 | c.fullscreen = not c.fullscreen 227 | c:raise() 228 | end, { 229 | description = "toggle fullscreen", 230 | group = "client" 231 | }), awful.key({modkey}, "q", function(c) 232 | c:kill() 233 | end, { 234 | description = "close", 235 | group = "client" 236 | }), awful.key({modkey, "Control"}, "Return", function(c) 237 | c:swap(awful.client.getmaster()) 238 | end, { 239 | description = "move to master", 240 | group = "client" 241 | }), awful.key({modkey}, "o", function(c) 242 | c:move_to_screen() 243 | end, { 244 | description = "move to screen", 245 | group = "client" 246 | }), awful.key({modkey, "Control"}, "Up", function(c) 247 | if c.floating then 248 | c:relative_move(0, 0, 0, -20) 249 | else 250 | awful.client.incwfact(0.025) 251 | end 252 | end, { 253 | description = "Floating Resize Vertical -", 254 | group = "client" 255 | }), awful.key({modkey, "Control"}, "Down", function(c) 256 | if c.floating then 257 | c:relative_move(0, 0, 0, 20) 258 | else 259 | awful.client.incwfact(-0.025) 260 | end 261 | end, { 262 | description = "Floating Resize Vertical +", 263 | group = "client" 264 | }), awful.key({modkey, "Control"}, "Left", function(c) 265 | if c.floating then 266 | c:relative_move(0, 0, -20, 0) 267 | else 268 | awful.tag.incmwfact(-0.025) 269 | end 270 | end, { 271 | description = "Floating Resize Horizontal -", 272 | group = "client" 273 | }), awful.key({modkey, "Control"}, "Right", function(c) 274 | if c.floating then 275 | c:relative_move(0, 0, 20, 0) 276 | else 277 | awful.tag.incmwfact(0.025) 278 | end 279 | end, { 280 | description = "Floating Resize Horizontal +", 281 | group = "client" 282 | }), awful.key({modkey, "Shift"}, "Down", function(c) 283 | c:relative_move(0, 20, 0, 0) 284 | end, { 285 | description = "Floating Move Down", 286 | group = "client" 287 | }), awful.key({modkey, "Shift"}, "Up", function(c) 288 | c:relative_move(0, -20, 0, 0) 289 | end, { 290 | description = "Floating Move Up", 291 | group = "client" 292 | }), awful.key({modkey, "Shift"}, "Left", function(c) 293 | c:relative_move(-20, 0, 0, 0) 294 | end, { 295 | description = "Floating Move Left", 296 | group = "client" 297 | 298 | }), awful.key({modkey, "Shift"}, "Right", function(c) 299 | c:relative_move(20, 0, 0, 0) 300 | end, { 301 | description = "Floating Move Right", 302 | group = "client" 303 | })) 304 | -- }}} 305 | 306 | -- Set keys 307 | root.keys(globalkeys) 308 | -- }}} 309 | 310 | -- Rules to apply to new clients. {{{ 311 | awful.rules.rules = {{ 312 | rule = {}, 313 | properties = { 314 | titlebars_enabled = true, 315 | maximized = false, 316 | border_width = dpi(2.4), 317 | border_color = beautiful.border_focus, 318 | focus = awful.client.focus.filter, 319 | raise = true, 320 | keys = clientkeys, 321 | buttons = nil, 322 | screen = awful.screen.preferred, 323 | placement = awful.placement.no_overlap + awful.placement.no_offscreen, 324 | size_hints_honor = false, 325 | } 326 | }} 327 | -- }}} 328 | 329 | -- Signals handlers {{{ 330 | client.connect_signal("mouse::enter", function(c) 331 | c:emit_signal("request::activate", "mouse_enter", { 332 | raise = vi_focus 333 | }) 334 | end) 335 | 336 | client.connect_signal("focus", function(c) 337 | c.border_color = beautiful.border_focus 338 | beautiful.update_battery() -- update battery status when focus change 339 | end) 340 | client.connect_signal("unfocus", function(c) 341 | c.border_color = beautiful.border_normal 342 | beautiful.update_battery() -- update battery status when focus change 343 | end) 344 | 345 | client.connect_signal('request::display', function(n) 346 | naughty.layout.box {notification = n} 347 | end) 348 | 349 | -- add gaps to new clients 350 | client.connect_signal('request::titlebars', function(c) 351 | -- buttons for the titlebar 352 | local buttons = gears.table.join( 353 | awful.button({ }, 1, function() 354 | awful.mouse.client.move(c) 355 | end), 356 | awful.button({ }, 3, function() 357 | awful.mouse.client.resize(c) 358 | end) 359 | ) 360 | 361 | for _, side in ipairs {'top', 'right', 'left', 'bottom'} do 362 | awful.titlebar(c, { 363 | size = dpi(12), 364 | position = side, 365 | bg = beautiful.bg_light, 366 | }):setup { 367 | layout = wibox.layout.fixed.horizontal, 368 | buttons = buttons, 369 | } 370 | end 371 | end) 372 | 373 | -- Re-set wallpaper when a screen's geometry changes (e.g. different resolution) 374 | screen.connect_signal("property::geometry", function(s) 375 | -- Wallpaper 376 | if beautiful.wallpaper then 377 | local wallpaper = beautiful.wallpaper 378 | -- If wallpaper is a function, call it with the screen 379 | if type(wallpaper) == "function" then 380 | wallpaper = wallpaper(s) 381 | end 382 | gears.wallpaper.maximized(wallpaper, s, true) 383 | end 384 | end) 385 | 386 | client.connect_signal("manage", function(c) 387 | c.maximized = false 388 | c.border_color = beautiful.border_focus 389 | c.shape = function(cr,w,h) 390 | gears.shape.rounded_rect(cr,w,h,1) 391 | end 392 | end) 393 | -- }}} 394 | 395 | -- init theme {{{ 396 | beautiful.init(string.format("%s/.config/awesome/themes/%s/theme.lua", os.getenv("HOME"), chosen_theme)) 397 | 398 | -- Create a wibox for each screen and add it 399 | awful.screen.connect_for_each_screen(function(s) 400 | beautiful.at_screen_connect(s) 401 | end) 402 | -- }}} 403 | -------------------------------------------------------------------------------- /awesome/themes/notheme/assets/close-button.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /awesome/themes/notheme/assets/maximized-button.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /awesome/themes/notheme/assets/min_unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/assets/min_unfocused.png -------------------------------------------------------------------------------- /awesome/themes/notheme/assets/minimize-button.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /awesome/themes/notheme/assets/radio-selected-insensitive@2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/assets/radio-selected-insensitive@2.png -------------------------------------------------------------------------------- /awesome/themes/notheme/assets/radio-selected@2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/assets/radio-selected@2.png -------------------------------------------------------------------------------- /awesome/themes/notheme/assets/radio-unselected-hover@2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/assets/radio-unselected-hover@2.png -------------------------------------------------------------------------------- /awesome/themes/notheme/assets/scale-slider-hover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 20 | 22 | 25 | 29 | 33 | 34 | 45 | 46 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | 77 | 82 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /awesome/themes/notheme/custom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/custom.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/cornerne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/cornerne.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/cornernew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/cornernew.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/cornernw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/cornernw.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/cornernww.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/cornernww.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/cornerse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/cornerse.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/cornersew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/cornersew.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/cornersw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/cornersw.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/cornersww.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/cornersww.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/dwindle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/dwindle.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/dwindlew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/dwindlew.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/fairh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/fairh.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/fairhw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/fairhw.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/fairv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/fairv.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/fairvw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/fairvw.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/floating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/floating.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/floatingw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/floatingw.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/fullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/fullscreen.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/fullscreenw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/fullscreenw.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/magnifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/magnifier.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/magnifierw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/magnifierw.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/max.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/max.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/maxw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/maxw.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/spiral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/spiral.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/spiralw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/spiralw.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/tile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/tile.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/tilebottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/tilebottom.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/tilebottomw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/tilebottomw.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/tileleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/tileleft.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/tileleftw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/tileleftw.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/tiletop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/tiletop.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/tiletopw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/tiletopw.png -------------------------------------------------------------------------------- /awesome/themes/notheme/layouts/tilew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/layouts/tilew.png -------------------------------------------------------------------------------- /awesome/themes/notheme/theme.lua: -------------------------------------------------------------------------------- 1 | local gears = require("gears") 2 | local awful = require("awful") 3 | local wibox = require("wibox") 4 | local naughty = require("naughty") 5 | local dpi = require("beautiful.xresources").apply_dpi 6 | local my_table = awful.util.table 7 | 8 | -- Theme Definition {{{ 9 | local theme = {} 10 | theme.dir = os.getenv("HOME").."/.config/awesome/themes/notheme/" 11 | 12 | -- Fonts 13 | theme.font_name = "Iosevka Nerd Font" 14 | 15 | theme.font = "Iosevka Nerd Font 9" 16 | theme.taglist_font = "FiraMono Nerd Font Mono 15" 17 | theme.icon_font = "Iosevka Nerd Font 12" 18 | theme.exit_screen_font = "FiraMono Nerd Font Mono 120" 19 | theme.widget_font = 'Iosevka Nerd Font 8' 20 | theme.notification_font = "Iosevka Nerd Font 12" 21 | theme.tasklist_font = "Iosevka Nerd Font 7" 22 | 23 | -- colors 24 | theme.clr = { 25 | purple = "#b782da", 26 | blue = "#729aef", 27 | green = "#7cd380", 28 | red = '#ff5370', 29 | gray = '#97a6c0', 30 | yellow = '#ffcb6b' 31 | } 32 | theme.fg_normal = '#525770' 33 | theme.fg_dark = '#424750' 34 | theme.fg_focus = '#b6bcdd' 35 | theme.fg_urgent = '#525770' 36 | 37 | theme.bg_normal = '#222632' 38 | theme.bg_focus = '#222632' 39 | theme.bg_urgent = "#182228" 40 | theme.bg_light = '#2f2f3f' 41 | theme.bg_systray = theme.bg_normal 42 | theme.systray_icon_spacing = dpi(10) 43 | 44 | theme.tasklist_bg_normal = '#282838' 45 | theme.tasklist_bg_focus = '#2f2f3f' 46 | theme.tasklist_bg_urgent = '#2b2b3b' 47 | 48 | theme.prompt_fg = '#868cad' 49 | 50 | theme.taglist_bg_focus = theme.bg_light 51 | theme.taglist_fg_occupied = theme.clr.blue 52 | theme.taglist_fg_urgent = theme.clr.red 53 | theme.taglist_fg_empty = theme.clr.gray 54 | theme.taglist_fg_focus = theme.clr.green 55 | 56 | theme.notification_fg = '#a6accd' 57 | theme.notification_bg = '#222632' 58 | theme.notification_opacity = 1 59 | 60 | theme.border_normal = '#20253e' 61 | theme.border_focus = '#545277' 62 | theme.border_marked = '#424760' 63 | 64 | theme.tasklist_plain_task_name = true 65 | theme.tasklist_disable_icon = true 66 | theme.useless_gap = dpi(2) 67 | theme.gap_single_client = true 68 | 69 | -- assests 70 | theme.titlebar_close_button_normal = theme.dir.."./assets/close-button.svg" 71 | theme.titlebar_close_button_focus = theme.dir.."./assets/close-button.svg" 72 | 73 | theme.titlebar_minimize_button_normal = theme.dir.."./assets/minimize-button.svg" 74 | theme.titlebar_minimize_button_focus = theme.dir.."./assets/minimize-button.svg" 75 | 76 | theme.titlebar_maximized_button_normal = theme.dir.."./assets/maximized-button.svg" 77 | theme.titlebar_maximized_button_focus = theme.dir.."./assets/maximized-button.svg" 78 | 79 | theme.layout_fairh = theme.dir.."layouts/fairhw.png" 80 | theme.layout_fairv = theme.dir.."layouts/fairvw.png" 81 | theme.layout_floating = theme.dir.."layouts/floatingw.png" 82 | theme.layout_magnifier = theme.dir.."layouts/magnifierw.png" 83 | theme.layout_max = theme.dir.."layouts/maxw.png" 84 | theme.layout_fullscreen = theme.dir.."layouts/fullscreenw.png" 85 | theme.layout_tilebottom = theme.dir.."layouts/tilebottomw.png" 86 | theme.layout_tileleft = theme.dir.."layouts/tileleftw.png" 87 | theme.layout_tile = theme.dir.."layouts/tilew.png" 88 | theme.layout_tiletop = theme.dir.."layouts/tiletopw.png" 89 | theme.layout_spiral = theme.dir.."layouts/spiralw.png" 90 | theme.layout_dwindle = theme.dir.."layouts/dwindlew.png" 91 | theme.layout_cornernw = theme.dir.."layouts/cornernww.png" 92 | theme.layout_cornerne = theme.dir.."layouts/cornernew.png" 93 | theme.layout_cornersw = theme.dir.."layouts/cornersww.png" 94 | theme.layout_cornerse = theme.dir.."layouts/cornersew.png" 95 | 96 | -- naughty configuration 97 | theme.notification_border_color = theme.bg_light 98 | theme.notification_border_width = dpi(5) 99 | 100 | naughty.config.padding = dpi(8) 101 | naughty.config.defaults = { 102 | timeout = 5, 103 | text = "", 104 | ontop = true, 105 | position = "top_right", 106 | margin = dpi(10), 107 | } 108 | 109 | -- }}} 110 | 111 | 112 | -- Separators 113 | local spr = wibox.widget.textbox(' ') 114 | local half_spr = wibox.widget.textbox(' ') 115 | 116 | -- widgets {{{ 117 | local function line(color) 118 | return ( 119 | wibox.container.background( 120 | wibox.widget.textbox( 121 | '@' 122 | ), 123 | color 124 | ) 125 | ) 126 | end 127 | 128 | -- Clock 129 | local clockicon = wibox.widget.textbox( 130 | string.format('', theme.clr.purple) 131 | ) 132 | local clock = wibox.widget.textclock( 133 | ' %R' 134 | ) 135 | 136 | local clock = 137 | { 138 | layout = wibox.layout.fixed.horizontal, 139 | half_spr, 140 | clockicon, 141 | clock, 142 | half_spr 143 | } 144 | 145 | -- Calendar 146 | local calendaricon = wibox.widget.textbox( 147 | string.format('', theme.clr.yellow) 148 | ) 149 | local calendar = wibox.widget.textclock( 150 | ' %x' 151 | ) 152 | 153 | local calendar = 154 | { 155 | layout = wibox.layout.fixed.horizontal, 156 | half_spr, 157 | calendaricon, 158 | calendar, 159 | half_spr 160 | } 161 | 162 | -- Battery 163 | local baticon = wibox.widget.textbox('') 164 | function theme.update_baticon(icon) 165 | baticon:set_markup( 166 | string.format('%s', theme.clr.blue, icon) 167 | ) 168 | end 169 | 170 | local bat = wibox.widget.textbox('') 171 | function theme.update_battery() 172 | awful.spawn.easy_async_with_shell( 173 | [[bash -c "echo $(acpi|awk '{split($0,a,", "); print a[2]}')"]], 174 | function(stdout) 175 | if stdout == '' then 176 | bat:set_markup(' N/A') 177 | return 178 | end 179 | stdout = stdout:gsub("%%", ""):match("^%s*(.-)%s*$") 180 | percent = tonumber(stdout) 181 | if percent <= 5 then 182 | theme.update_baticon('') 183 | elseif percent <= 25 then 184 | theme.update_baticon('') 185 | elseif percent >= 25 and percent <= 75 then 186 | theme.update_baticon('') 187 | elseif percent < 100 then 188 | theme.update_baticon('') 189 | else 190 | theme.update_baticon('') 191 | end 192 | 193 | bat:set_markup(' ' ..stdout.."% ") 194 | end) 195 | end 196 | theme.update_battery() 197 | 198 | local battery = 199 | { 200 | layout = wibox.layout.fixed.horizontal, 201 | half_spr, 202 | baticon, 203 | bat, 204 | half_spr, 205 | } 206 | 207 | -- ALSA volume 208 | local volicon = wibox.widget.textbox('') 209 | local vol = wibox.widget.textbox('') 210 | theme.update_volume = function() 211 | awful.spawn.easy_async_with_shell([[ 212 | if amixer get Master | grep -q '\[on\]'; then 213 | grep 'Left:' <(amixer sget Master)|awk -F"[][]" '{ print $2 }' 214 | else 215 | echo 'muted' 216 | fi 217 | ]], function(stdout) 218 | stdout = tostring(stdout):gsub("\n", ''):gsub("%%", ""):match("^%s*(.-)%s*$") 219 | percent = tonumber(stdout) 220 | if stdout == "muted" then 221 | volicon:set_markup('') 222 | elseif percent == 0 then 223 | volicon:set_markup('') 224 | elseif percent <= 50 then 225 | volicon:set_markup('奔') 226 | else 227 | volicon:set_markup('') 228 | end 229 | vol:set_markup(' '..stdout.."% ") 230 | end) 231 | end 232 | theme.update_volume() 233 | 234 | local volume = 235 | { 236 | layout = wibox.layout.fixed.horizontal, 237 | half_spr, 238 | volicon, 239 | vol, 240 | half_spr, 241 | } 242 | 243 | -- power 244 | local power_menu = { } 245 | local power = wibox.widget.textbox('') 246 | 247 | power:connect_signal("mouse::enter", function() 248 | power:set_markup('') 249 | end) 250 | 251 | power:connect_signal("mouse::leave", function() 252 | power:set_markup('') 253 | end) 254 | 255 | power:connect_signal("button::press", function() 256 | if power_menu.visible == nil then 257 | local logout = wibox.widget.textbox( 258 | '' 259 | ) 260 | 261 | local poweroff = wibox.widget.textbox( 262 | '' 263 | ) 264 | 265 | local reboot = wibox.widget.textbox( 266 | '' 267 | ) 268 | 269 | local close = wibox.widget.textbox( 270 | '' 271 | ) 272 | power_menu = awful.popup { 273 | ontop = true, 274 | visible = true, 275 | bg = theme.bg_light.."cc", 276 | fg = theme.fg_focus, 277 | placement = awful.placement.maximize, 278 | widget = { 279 | { 280 | { 281 | { 282 | { 283 | spr, 284 | layout = wibox.layout.fixed.horizontal, 285 | }, 286 | widget = wibox.container.place, 287 | }, 288 | { 289 | { 290 | spr, spr, spr, 291 | spr, spr, 292 | logout, 293 | spr, spr, spr, 294 | spr, spr, 295 | poweroff, 296 | spr, spr, spr, 297 | spr, spr, 298 | reboot, 299 | spr, spr, spr, 300 | spr, spr, 301 | layout = wibox.layout.fixed.horizontal, 302 | }, 303 | widget = wibox.container.place, 304 | }, 305 | { 306 | { 307 | close, 308 | layout = wibox.layout.align.horizontal, 309 | }, 310 | widget = wibox.container.place, 311 | }, 312 | layout = wibox.layout.fixed.vertical, 313 | }, 314 | margins = dpi(20), 315 | widget = wibox.container.margin 316 | }, 317 | widget = wibox.container.background, 318 | }, 319 | } 320 | 321 | logout:connect_signal("button::press", function() 322 | awful.util.spawn("pkill X") 323 | end) 324 | 325 | poweroff:connect_signal("button::press", function() 326 | awful.util.spawn("doas poweroff") 327 | end) 328 | 329 | reboot:connect_signal("button::press", function() 330 | awful.util.spawn("doas reboot") 331 | end) 332 | close:connect_signal("button::press", function() 333 | power_menu.visible = false 334 | end) 335 | else power_menu.visible = not power_menu.visible end 336 | end) 337 | -- }}} 338 | 339 | -- load theme options {{{ 340 | function theme.at_screen_connect(s) 341 | gears.wallpaper.maximized(theme.dir.."/tile.jpeg", s) 342 | 343 | -- Tags 344 | awful.tag(awful.util.tagnames, s, awful.layout.layouts) 345 | 346 | -- Create a promptbox for each screen 347 | s.mypromptbox = awful.widget.prompt() 348 | -- Create an imagebox widget which will contains an icon indicating which layout we're using. 349 | -- We need one layoutbox per screen. 350 | s.mylayoutbox = awful.widget.layoutbox(s) 351 | s.mylayoutbox:buttons(my_table.join(awful.button({}, 1, function() 352 | awful.layout.inc(1) 353 | end), awful.button({}, 2, function() 354 | awful.layout.set(awful.layout.layouts[1]) 355 | end), awful.button({}, 3, function() 356 | awful.layout.inc(-1) 357 | end), awful.button({}, 4, function() 358 | awful.layout.inc(1) 359 | end), awful.button({}, 5, function() 360 | awful.layout.inc(-1) 361 | end))) 362 | -- Create a taglist widget 363 | s.mytaglist = awful.widget.taglist { 364 | screen = s, 365 | filter = awful.widget.taglist.filter.all, 366 | widget_template = { 367 | { 368 | { 369 | id = 'text_role', 370 | widget = wibox.widget.textbox, 371 | }, 372 | layout = wibox.layout.align.horizontal, 373 | }, 374 | left = 10, 375 | right = 10, 376 | widget = wibox.container.margin, 377 | }, 378 | buttons = awful.util.taglist_buttons 379 | } 380 | -- Create a tasklist widget 381 | s.mytasklist = awful.widget.tasklist { 382 | screen = s, 383 | filter = awful.widget.tasklist.filter.currenttags, 384 | buttons = awful.util.tasklist_buttons, 385 | widget_template = { 386 | { 387 | wibox.widget.base.make_widget(), 388 | forced_height = 5, 389 | id = 'background_role', 390 | widget = wibox.container.background, 391 | }, 392 | { 393 | { 394 | id = 'clienticon', 395 | widget = awful.widget.clienticon, 396 | }, 397 | margins = 5, 398 | widget = wibox.container.margin 399 | }, 400 | nil, 401 | create_callback = function(self, c, index, objects) --luacheck: no unused args 402 | self:get_children_by_id('clienticon')[1].client = c 403 | end, 404 | layout = wibox.layout.align.vertical, 405 | }, 406 | } 407 | 408 | s.mywibox = awful.wibar { 409 | width = dpi(1360), 410 | height = dpi(30), 411 | ontop = false, 412 | screen = s, 413 | expand = true, 414 | visible = true, 415 | bg = theme.bg_normal, 416 | border_width = dpi(2), 417 | border_color = theme.bg_light, 418 | position = "bottom", 419 | } 420 | 421 | s.mywibox:setup { 422 | layout = wibox.layout.align.horizontal, 423 | { -- Left widgets 424 | { 425 | layout = wibox.layout.fixed.horizontal, 426 | { 427 | { 428 | layout = wibox.layout.align.horizontal, 429 | s.mypromptbox, 430 | half_spr, 431 | s.mylayoutbox, 432 | half_spr 433 | }, 434 | widget = wibox.container.background, 435 | }, 436 | half_spr, 437 | { 438 | layout = wibox.layout.align.horizontal, 439 | s.mytaglist, 440 | }, 441 | { 442 | layout = wibox.layout.fixed.horizontal, 443 | half_spr, 444 | wibox.container.margin( 445 | wibox.widget.systray(), 446 | dpi(3), dpi(3), dpi(3), dpi(3) 447 | ), 448 | half_spr, 449 | }, 450 | half_spr, 451 | }, 452 | widget = wibox.container.margin, 453 | top = dpi(5), 454 | bottom = dpi(5), 455 | right = dpi(5), 456 | left = dpi(5) 457 | }, 458 | { -- Center widgets 459 | layout = wibox.container.place, 460 | s.mytasklist, 461 | }, 462 | { -- Right widgets 463 | { 464 | layout = wibox.layout.fixed.horizontal, 465 | spr, 466 | spr, 467 | half_spr, 468 | clock, 469 | half_spr, 470 | calendar, 471 | half_spr, 472 | volume, 473 | half_spr, 474 | battery, 475 | }, 476 | widget = wibox.container.margin, 477 | top = dpi(5), 478 | bottom = dpi(5), 479 | right = dpi(5), 480 | left = dpi(5) 481 | }, 482 | } 483 | 484 | s.mywibox:struts { 485 | bottom = dpi(35), 486 | } 487 | end 488 | -- }}} 489 | 490 | return theme 491 | -------------------------------------------------------------------------------- /awesome/themes/notheme/tile.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/awesome/themes/notheme/tile.jpeg -------------------------------------------------------------------------------- /bspwm/bspwmrc: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | xsetroot -cursor_name left_ptr 3 | ! pgrep -X picom && picom & 4 | 5 | pkill sxhkd 6 | sxhkd & 7 | feh --bg-scale ~/.config/bspwm/wallpaper & 8 | 9 | bspc monitor -d I II III IV 10 | 11 | # window borders 12 | bspc config window_gap 12 13 | bspc config border_width 2 14 | bspc config focused_border_color '#545277' 15 | bspc config normal_border_color '#282838' 16 | 17 | # windo gaps 18 | bspc config split_ratio 0.52 19 | bspc config borderless_monocle true 20 | bspc config gapless_monocle true 21 | bspc rule -a Emacs state=tiled 22 | 23 | # eww 24 | bspc rule -a Eww manage=off state=floating 25 | bspc config left_padding 45 26 | 27 | eww open bar_1 28 | sleep 1 29 | stalonetray & 30 | -------------------------------------------------------------------------------- /bspwm/polybar.sh: -------------------------------------------------------------------------------- 1 | pkill polybar 2 | polybar -c ~/.config/polybar/config bar & 3 | -------------------------------------------------------------------------------- /bspwm/wallpaper: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/bspwm/wallpaper -------------------------------------------------------------------------------- /bspwm/wallpaper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nonamescm/dotfiles/6657551c0618891726b9ffa3efbd56120c3ccfd3/bspwm/wallpaper.jpg -------------------------------------------------------------------------------- /eww/eww.scss: -------------------------------------------------------------------------------- 1 | * { 2 | all: unset; 3 | } 4 | 5 | window { 6 | background: #282838; 7 | color: #b6bcdd; 8 | border-radius: 0 0.4em 0.4em 0; 9 | 10 | & > * { 11 | margin: 6px; 12 | font-family: "Iosevka SS14 SemiBold"; 13 | } 14 | } 15 | .workspace { 16 | font-size: 1.8em; 17 | margin: 0.1em 0px; 18 | 19 | &.first { color: #f89e72; } 20 | 21 | &.second { color: #7cd380; } 22 | 23 | &.third { color: #729aef; } 24 | 25 | &.fourth { color: #b782da; } 26 | 27 | &.unfocused { color: #b6bcdd; } 28 | } 29 | 30 | .workspaces { 31 | background-color: #1f1f2f; 32 | border-bottom: 0.3em solid #1f1f2f; 33 | border-radius: 7px; 34 | } 35 | 36 | .metric scale { 37 | margin-top: 1em; 38 | margin-bottom: 1em; 39 | } 40 | 41 | .metric scale trough highlight { 42 | all: unset; 43 | background-image: linear-gradient(#62adcc, #b782da); 44 | color: #000000; 45 | border-radius: 10px; 46 | } 47 | .metric scale trough { 48 | all: unset; 49 | background-color: #3b3b4b; 50 | border-radius: 50px; 51 | min-height: 15em; 52 | min-width: 3px; 53 | } 54 | .metric scale trough highlight { 55 | all: unset; 56 | background-image: linear-gradient(#62adcc, #b782da); 57 | color: #000000; 58 | border-radius: 10px; 59 | } 60 | .metric scale trough { 61 | all: unset; 62 | background-color: #3b3b4b; 63 | border-radius: 50px; 64 | min-height: 15em; 65 | min-width: 3px; 66 | } 67 | 68 | .label { 69 | font-size: 1.3em; 70 | color: #b782da; 71 | } 72 | 73 | .time { 74 | color: #729aef; 75 | font-size: 1.2em; 76 | } 77 | 78 | .brightness { 79 | color: #ffcb6b; 80 | font-size: 1.2em; 81 | } 82 | 83 | .bat { 84 | color: #7cd380; 85 | font-size: 1.2em; 86 | } 87 | 88 | .stuff { 89 | border-radius: 7px; 90 | } 91 | 92 | .stuff > * { 93 | background-color: #1f1f2f; 94 | border-radius: 0.4em; 95 | 96 | border-top: 4px solid #1f1f2f; 97 | border-bottom: 4px solid #1f1f2f; 98 | 99 | border-left: 3px solid #1f1f2f; 100 | border-right: 3px solid #1f1f2f; 101 | 102 | margin-top: 0.4em; 103 | 104 | & > * { 105 | font-size: 1em; 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /eww/eww.yuck: -------------------------------------------------------------------------------- 1 | ;; vi:ft=clojure 2 | 3 | ;; Main bar widget 4 | (defwidget bar [screen] 5 | (centerbox :orientation "v" 6 | (box :class "segment-top" 7 | :valign "start" 8 | (top)) 9 | (box :valign "center" 10 | :class "middle" 11 | (middle)) 12 | (box :valign "end" 13 | :class "segment-bottom" 14 | (bottom)))) 15 | 16 | ;; begin Top bar widget 17 | (defwidget top [] 18 | (box :class "workspaces" 19 | :orientation "v" 20 | (box :valign "start" (w1)) 21 | (box :valign "start" (w2)) 22 | (box :valign "start" (w3)) 23 | (box :valign "start" (w4)))) 24 | 25 | ;;; begin Workspaces 26 | (defwidget w1 [] 27 | (box :class "first workspace ${crw != "I" ? "unfocused" : ""}" 28 | :valign "start" 29 | "")) 30 | 31 | (defwidget w2 [] 32 | (box :class "workspace second ${crw != "II" ? "unfocused" : ""}" 33 | :valign "start" 34 | "")) 35 | 36 | (defwidget w3 [] 37 | (box :class "workspace third ${crw != "III" ? "unfocused" : ""}" 38 | :valign "start" 39 | "")) 40 | 41 | (defwidget w4 [] 42 | (box :class "workspace fourth ${crw != "IV" ? "unfocused" : ""}" 43 | :valign "start" 44 | "")) 45 | 46 | ; `crw` = current workspace 47 | (deflisten crw :initial "I" 48 | "scripts/workspace-watch.sh") 49 | ;;; end Workspaces 50 | ;; end Top bar widget 51 | 52 | ;; begin Middle bar widget 53 | (defwidget middle [] 54 | (box :class "middle" 55 | :orientation "v" 56 | :space-evenly false 57 | (music) 58 | (screenshot))) 59 | 60 | ;;; begin Screenshot 61 | (defwidget screenshot [] 62 | (button :class "label" 63 | :onclick "flameshot gui &" 64 | "")) 65 | ;;; end Screenshot 66 | 67 | 68 | ;;; begin Music 69 | (defpoll music-icon 70 | :interval "1s" 71 | "scripts/volume-stats.sh") 72 | 73 | (defpoll volume 74 | :interval "0s" 75 | "scripts/volume-level.sh") 76 | 77 | (defwidget music [] 78 | (metric :label {music-icon} 79 | :value volume 80 | :onchange "amixer sset Master {}%")) 81 | ;;; end Music 82 | ;; end Middle bar widget 83 | 84 | ;; begin Bottom bar widget 85 | (defwidget bottom [] (stuff)) 86 | 87 | ;;; begin Time 88 | (defwidget time [] 89 | (box :orientation "v" 90 | :class "time" 91 | (box :class "time hour" hour) 92 | (box :class "time min" min))) 93 | 94 | (defpoll hour :interval "60s" "date '+%H'") 95 | (defpoll min :interval "10s" "date '+%M'") 96 | ;;; end Time 97 | 98 | ;;; begin Bat 99 | (defwidget bat [] 100 | (box :class "bat" 101 | :valign "start" 102 | :orientation "v" 103 | (box :class "bat icon" 104 | "") 105 | (box :class "bat percent" 106 | bat-percent))) 107 | 108 | (defpoll bat-percent :interval "10s" `acpi|awk -F',|%' '{ print $2 }'|sed 's/^ *//g'`) 109 | ;;; end Bat 110 | 111 | ;;; Begin Bright 112 | (defwidget bright [] 113 | (box :class "brightness" 114 | :orientation "v" 115 | :space-evenly false 116 | (box :class "brightness icon" "") 117 | (box :class "brightness value" brightness))) 118 | 119 | (defpoll brightness :interval "1s" 120 | "xbacklight -get|awk -F'.' '{ print $1 }'") 121 | ;;; end Bright 122 | 123 | ;;; begin Stuff 124 | (defwidget stuff [] 125 | (centerbox :orientation "v" 126 | :class "stuff" 127 | (bat) 128 | (bright) 129 | (time))) 130 | ;;; end Stuff 131 | ;; end Bottom bar widget 132 | 133 | ;; begin Utils 134 | ; taken from https://github.com/elkowar/eww/blob/master/examples/eww-bar/ 135 | (defwidget metric [label value onchange] 136 | (box :orientation "v" 137 | :class "metric" 138 | :space-evenly false 139 | (box :orientation "v" :class "label" label) 140 | (scale :orientation "v" 141 | :flipped true 142 | :min 0 143 | :max 100 144 | :active {onchange != ""} 145 | :value value 146 | :onchange onchange))) 147 | ;; end Utils 148 | 149 | (defwindow bar_1 150 | :stacking "bg" 151 | :geometry (geometry :x 0 :y 0 :width "40px" :height "100%" :anchor "center left") 152 | :reserve (struts :distance "45px" :side "left") 153 | :windowtype "dock" 154 | :focusable false 155 | (bar :screen 1)) 156 | -------------------------------------------------------------------------------- /eww/scripts/volume-level.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | X=$(awk -F"[][]" '{ print $2 }' <(amixer sget Master) | grep % | head -n 1) 3 | echo "${X%?}" 4 | -------------------------------------------------------------------------------- /eww/scripts/volume-stats.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | [ "$(amixer sget 'Master' | grep '\[off\]')" ] && echo "ﱙ" || echo "ﱘ" 3 | -------------------------------------------------------------------------------- /eww/scripts/workspace-watch.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | bspc subscribe desktop_focus | while read out; do 3 | id=$(awk -F' ' '{ print $3 }' <<< $out) 4 | echo $(bspc query -T -d $id|jq '.name' --raw-output) 5 | done 6 | -------------------------------------------------------------------------------- /kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | # Colors 2 | enable_audio_bell no 3 | 4 | background #282838 5 | foreground #b6bcdd 6 | 7 | cursor #b6bcdd 8 | cursor_blink_interval 0 9 | cursor_text_color background 10 | cursor_shape beam 11 | cursor_beam_thickness 0 12 | 13 | color0 #3b3b4b 14 | color1 #f07178 15 | color2 #7cd380 16 | color3 #ffcb6b 17 | color4 #729aef 18 | color5 #b782da 19 | color6 #529dbc 20 | color7 #bbc2cf 21 | color8 #97a6c0 22 | color9 #ff5370 23 | color10 #8ce390 24 | color11 #ffdb7b 25 | color12 #82aaff 26 | color13 #c792ea 27 | color14 #62adcc 28 | color15 #ffffff 29 | 30 | background_opacity 1 31 | 32 | disable_ligatures never 33 | font_family Iosevka SS14 Bold 34 | bold_font Iosevka SS14 Bold 35 | italic_font Iosevka SS14 Bold Italic 36 | bold_italic_font Iosevka SS14 Bold Italic 37 | font_size 11 38 | close_on_child_death yes 39 | -------------------------------------------------------------------------------- /nvim/ftdetect/haskell.vim: -------------------------------------------------------------------------------- 1 | autocmd BufNewFile,BufRead *.hs set filetype=haskell ts=2 sw=2 expandtab 2 | -------------------------------------------------------------------------------- /nvim/ftdetect/nolang.vim: -------------------------------------------------------------------------------- 1 | augroup nolang 2 | autocmd! 3 | autocmd BufRead,BufNewFile *.no set filetype=nolang 4 | augroup END 5 | -------------------------------------------------------------------------------- /nvim/ftdetect/yex.vim: -------------------------------------------------------------------------------- 1 | autocmd BufNewFile,BufRead *.yex set filetype=yex ts=3 sw=3 noexpandtab 2 | -------------------------------------------------------------------------------- /nvim/init.lua: -------------------------------------------------------------------------------- 1 | local vim = vim 2 | 3 | -- plugins 4 | require("packer").startup(function(use) 5 | -- packer 6 | use "wbthomason/packer.nvim" 7 | 8 | -- colors 9 | use "norcalli/nvim-colorizer.lua" 10 | use "nonamescm/notheme.nvim" 11 | 12 | -- syntax 13 | use "nonamescm/neofsharp.vim" 14 | 15 | -- git integration 16 | use { 17 | "lewis6991/gitsigns.nvim", 18 | requires = "nvim-lua/plenary.nvim" 19 | } 20 | 21 | -- lsp 22 | use "neovim/nvim-lspconfig" 23 | use "p00f/nvim-ts-rainbow" 24 | use "nvim-treesitter/nvim-treesitter" 25 | use "nvim-treesitter/playground" 26 | use { 27 | "hrsh7th/nvim-cmp", 28 | requires = { 29 | "hrsh7th/cmp-nvim-lsp", 30 | "hrsh7th/cmp-buffer", 31 | "onsails/lspkind-nvim", 32 | "L3MON4D3/LuaSnip" 33 | } 34 | } 35 | 36 | -- tabline/statusline 37 | use "akinsho/nvim-bufferline.lua" 38 | use "kyazdani42/nvim-web-devicons" 39 | use "nonamescm/galaxyline.nvim" 40 | 41 | -- others 42 | use "windwp/nvim-autopairs" -- auto open and close pairs 43 | use "kyazdani42/nvim-tree.lua" -- file manager 44 | use "lukas-reineke/indent-blankline.nvim" -- ident guides 45 | use "andweeb/presence.nvim" -- Rich presence 46 | use "glepnir/dashboard-nvim" -- dashboard screen 47 | use "rcarriga/nvim-notify" -- better notifications 48 | end) 49 | 50 | -- Disable Default Vim Plugins 51 | vim.g.loaded_gzip = 0 52 | vim.g.loaded_tar = 0 53 | vim.g.loaded_tarPlugin = 0 54 | vim.g.loaded_zipPlugin = 0 55 | vim.g.loaded_2html_plugin = 0 56 | vim.g.loaded_netrw = 0 57 | vim.g.loaded_netrwPlugin = 0 58 | vim.g.loaded_spec = 0 59 | vim.g.loaded_syncolor = 0 60 | vim.g.asmsyntax = "nasm" 61 | 62 | -- options 63 | vim.g.markdown_fenced_languages = { 64 | "fs=fsharp", 65 | "js=javascript", 66 | "py=python", 67 | "rs=rust", 68 | "rb=ruby", 69 | "yex=yex", 70 | "scala=scala", 71 | } 72 | 73 | local opt, bopt, wopt = vim.o, vim.bo, vim.wo 74 | opt.background = "light" 75 | opt.splitbelow = true 76 | opt.wrap, wopt.wrap = false, false 77 | opt.number, wopt.number = true, true 78 | opt.cursorline, wopt.cursorline = true, true 79 | opt.relativenumber, wopt.relativenumber = true, true 80 | opt.foldenable = false 81 | opt.mouse = "a" 82 | opt.tabstop, bopt.tabstop = 4, 4 83 | opt.shiftwidth, bopt.shiftwidth = 4, 4 84 | opt.expandtab = false 85 | opt.showtabline = 2 86 | opt.termguicolors = true 87 | opt.guicursor = "v-c-sm:block,c-i-ci-ve:ver25,r-cr-o:hor20" 88 | 89 | -- plugins that doesn"t need configuration requires 90 | require("colorizer").setup() 91 | vim.cmd("colorscheme notheme") 92 | require("gitsigns").setup() 93 | 94 | vim.cmd("command! Term split|term") 95 | vim.cmd("command! VTerm belowright vsplit|term") 96 | -------------------------------------------------------------------------------- /nvim/lua/colors.lua: -------------------------------------------------------------------------------- 1 | return { 2 | black2 = "#2b2b3b", 3 | grey_fg = "#545277", 4 | light_grey = "#6d749c", 5 | black = "#212131", 6 | white = "#b6bcdd", 7 | blue = "#729aef", 8 | red = "#ff5370", 9 | bg = "#242434", 10 | yellow = "#ffcb6b", 11 | green = "#7cd380", 12 | fg = "#bbc2cf", 13 | orange = "#e37858", 14 | purple = "#b782da", 15 | lightbg = "#333748", 16 | cyan = "#529dbc", 17 | } 18 | -------------------------------------------------------------------------------- /nvim/lua/functions/highlight.lua: -------------------------------------------------------------------------------- 1 | return function(hi_name, hi_table, force) 2 | local cmd_str 3 | 4 | if force == true then 5 | cmd_str = "hi! " .. hi_name 6 | else 7 | cmd_str = "hi " .. hi_name 8 | end 9 | 10 | for key, value in pairs(hi_table) do 11 | cmd_str = cmd_str .. " " .. key .. "=" .. value 12 | end 13 | 14 | vim.cmd(cmd_str) 15 | end 16 | -------------------------------------------------------------------------------- /nvim/lua/telescope-config.lua: -------------------------------------------------------------------------------- 1 | local opt = {silent = true} 2 | local map = function(mode, keys, command) 3 | return vim.api.nvim_set_keymap(mode, keys, command, opt) 4 | end 5 | 6 | map("n", "tf", "Telescope find_files") 7 | map("n", "tg", "Telescope live_grep") 8 | map("n", "tb", "Telescope buffers") 9 | map("n", "th", "Telescope help_tags") 10 | 11 | require"plenary.filetype".add_file("override") 12 | -------------------------------------------------------------------------------- /nvim/plugin/auto-pairs.lua: -------------------------------------------------------------------------------- 1 | require("nvim-autopairs").setup({}) 2 | -------------------------------------------------------------------------------- /nvim/plugin/cmp-completion.lua: -------------------------------------------------------------------------------- 1 | vim.o.completeopt = "menuone,noselect,noinsert" 2 | vim.o.updatetime = 300 3 | local cmp = require("cmp") 4 | local lspkind = require("lspkind") 5 | 6 | cmp.setup { 7 | snippet = { 8 | expand = function(args) 9 | require("luasnip").lsp_expand(args.body) 10 | end, 11 | }, 12 | formatting = { 13 | format = lspkind.cmp_format({}), 14 | }, 15 | completion = { 16 | completeopt = "menuone,noinsert,noselect", 17 | }, 18 | window = { 19 | documentation = { 20 | border = { "🭽", "▔", "🭾", "▕", "🭿", "▁", "🭼", "▏" }, 21 | winhighlight = "FloatBorder:NormalFloat", 22 | maxheigth = math.floor(vim.fn.winheight(0) / 2), 23 | maxwidth = math.floor(vim.fn.winwidth(0) / 2), 24 | }, 25 | }, 26 | sources = { 27 | { name = "nvim_lsp" }, 28 | { name = "path" }, 29 | { name = "buffer" }, 30 | { name = "luasnip" } 31 | }, 32 | mapping = cmp.mapping.preset.insert({ 33 | [""] = cmp.mapping.scroll_docs(-4), 34 | [""] = cmp.mapping.scroll_docs(4), 35 | [""] = cmp.mapping.complete(), 36 | [""] = cmp.mapping.close(), 37 | [""] = cmp.mapping.confirm({ 38 | behavior = cmp.ConfirmBehavior.Replace, 39 | select = true, 40 | }) 41 | }), 42 | } 43 | -------------------------------------------------------------------------------- /nvim/plugin/custom.lua: -------------------------------------------------------------------------------- 1 | --local hi = require("functions.highlight") 2 | --hi("EndOfBuffer", { guibg = "NONE" }) 3 | --hi("Normal", { guibg = "NONE" }) 4 | -------------------------------------------------------------------------------- /nvim/plugin/dashboard.lua: -------------------------------------------------------------------------------- 1 | local hi = require("functions.highlight") 2 | local colors = require("colors") 3 | local dashboard = require("dashboard") 4 | 5 | hi("DashboardHeader", { guifg = colors.red }) 6 | hi("DashboardFooter", { guifg = colors.light_grey }) 7 | hi("DashboardCenter", { guifg = colors.blue }) 8 | hi("DashboardShortCut", { guifg = colors.blue }) 9 | 10 | dashboard.custom_header = { 11 | "⠀⠀⠀⣶⣶⣶⣶⡆⠀⠀⠀⠀⠀⠀ ", 12 | "⠀⠀⠀⠛⠛⢻⣿⣿⡀⠀⠀⠀⠀⠀⠀", 13 | "⠀⠀⠀⠀⠀⢀⣿⣿⣷⠀⠀⠀⠀⠀⠀", 14 | "⠀⠀⠀⠀⢀⣾⣿⣿⣿⣇⠀⠀⠀⠀⠀", 15 | "⠀⠀⠀⢠⣿⣿⡟⢹⣿⣿⡆⠀⠀⠀⠀", 16 | "⠀⠀⣰⣿⣿⠏⠀⠀⢻⣿⣿⡄⠀⠀⠀", 17 | "⠀⣴⣿⡿⠃⠀⠀⠀⠈⢿⣿⣷⣤⣤⡆", 18 | "⠾⠿⠿⠁⠀⠀⠀⠀⠀⠘⣿⣿⡿⠿⠛", 19 | -- extra spacing 20 | "", "" 21 | } 22 | 23 | dashboard.custom_footer = { 24 | -- extra spacing 25 | "", "", 26 | 27 | "Fuck you ~ Linus Torvalds, probably.", 28 | } 29 | 30 | dashboard.custom_center = { 31 | { icon = " ", desc = "New File ", action = "DashboardNewFile" }, 32 | { icon = " ", desc = "Open File Manager", action = "NvimTreeOpen" }, 33 | { icon = " ", desc = "Close Neovim ", action = "qa" }, 34 | } 35 | 36 | dashboard.hide_statusline = false 37 | dashboard.hide_tabline = false 38 | -------------------------------------------------------------------------------- /nvim/plugin/indentation.lua: -------------------------------------------------------------------------------- 1 | local vim = vim 2 | 3 | vim.o.fillchars = table.concat( 4 | { 5 | [[fold: ]] 6 | }, 7 | "," 8 | ) 9 | vim.o.foldmethod = "indent" 10 | vim.wo.listchars = table.concat( 11 | { 12 | "tab:│ ", 13 | "extends:❯", 14 | "precedes:❮", 15 | "nbsp:_", 16 | }, 17 | "," 18 | ) 19 | -- indent-blankline 20 | vim.g.indent_blankline_char = "│" 21 | vim.g.indent_blankline_buftype_exclude = { "terminal", "NvimTree", "help" } 22 | vim.g.indentLine_fileTypeExclude = { "dashboard" } 23 | vim.g.indent_blankline_space_char_blankline = " " 24 | vim.g.indent_blankline_strict_tabs = true 25 | vim.g.indent_blankline_debug = true 26 | vim.g.indent_blankline_show_current_context = true 27 | vim.g.indent_blankline_show_foldtext = false 28 | 29 | require[[indent_blankline]].setup() 30 | -------------------------------------------------------------------------------- /nvim/plugin/lsp.lua: -------------------------------------------------------------------------------- 1 | local vim = vim 2 | 3 | vim.o.completeopt = [[menuone,noinsert,noselect]] 4 | 5 | local function on_attach(client) 6 | local function buf_set_keymap(...) 7 | vim.api.nvim_buf_set_keymap(0, ...) 8 | end 9 | 10 | local function buf_set_option(...) 11 | vim.api.nvim_buf_set_option(0, ...) 12 | end 13 | 14 | buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc") 15 | 16 | vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { 17 | virtual_text = false, 18 | signs = true, 19 | update_in_insert = true, 20 | }) 21 | 22 | -- Mappings. 23 | local opts = { noremap = true, silent = true } 24 | 25 | buf_set_keymap("n", "gd", "lua vim.lsp.buf.declaration()", opts) 26 | buf_set_keymap("n", "gd", "lua vim.lsp.buf.definition()", opts) 27 | buf_set_keymap("n", "K", "lua vim.lsp.buf.hover()", opts) 28 | buf_set_keymap("n", "gi", "lua vim.lsp.buf.implementation()", opts) 29 | buf_set_keymap("n", "", "lua vim.lsp.buf.signature_help()", opts) 30 | buf_set_keymap("n", "wa", "lua vim.lsp.buf.add_workspace_folder()", opts) 31 | buf_set_keymap("n", "wr", "lua vim.lsp.buf.remove_workspace_folder()", opts) 32 | buf_set_keymap("n", "wl", "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", opts) 33 | buf_set_keymap("n", "D", "lua vim.lsp.buf.type_definition()", opts) 34 | buf_set_keymap("n", "rn", "lua vim.lsp.buf.rename()", opts) 35 | buf_set_keymap("n", "gr", "lua vim.lsp.buf.references()", opts) 36 | buf_set_keymap("n", "e", "lua vim.lsp.diagnostic.show_line_diagnostics()", opts) 37 | buf_set_keymap("n", "[d", "lua vim.diagnostic.goto_next()", opts) 38 | buf_set_keymap("n", "]d", "lua vim.diagnostic.goto_prev()", opts) 39 | buf_set_keymap("n", "q", "lua vim.lsp.diagnostic.set_loclist()", opts) 40 | buf_set_keymap("n", "ca", "lua vim.lsp.buf.code_action()", opts) 41 | buf_set_keymap("n", "f", "lua vim.lsp.buf.format { async = true }", opts) 42 | end 43 | 44 | local lspconf = require("lspconfig") 45 | 46 | local servers = { 47 | "rust_analyzer", 48 | "fsautocomplete", 49 | "clangd", 50 | "pyright", 51 | "sumneko_lua", 52 | "hls", 53 | } 54 | 55 | local capabilities = vim.lsp.protocol.make_client_capabilities() 56 | 57 | for _, server in ipairs(servers) do 58 | lspconf[server].setup { 59 | capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities), 60 | on_attach = on_attach, 61 | root_dir = vim.loop.cwd, 62 | handlers = handlers, 63 | } 64 | end 65 | 66 | lspconf["tsserver"].setup { 67 | init_options = { 68 | preferences = { 69 | disableSuggestions = true, 70 | }, 71 | }, 72 | } 73 | 74 | capabilities.textDocument.completion.completionItem.snippetSupport = true 75 | 76 | lspconf["html"].setup { 77 | on_attach = on_attach, 78 | root_dir = vim.loop.cwd, 79 | capabilities = capabilities 80 | } 81 | 82 | lspconf["cssls"].setup { 83 | on_attach = on_attach, 84 | root_dir = vim.loop.cwd, 85 | capabilities = capabilities 86 | } 87 | 88 | -- replace the default lsp diagnostic letters with prettier symbols 89 | local symbols = { 90 | Error = "", 91 | Warn = "", 92 | Info = "", 93 | Hint = "", 94 | } 95 | 96 | for name, symbol in pairs(symbols) do 97 | local group = "DiagnosticSign" .. name 98 | vim.fn.sign_define(group, { text = symbol, texthl = group, numhl = group }) 99 | end 100 | 101 | -- taken from https://github.com/neovim/nvim-lspconfig/wiki/UI-customization#borders 102 | -- add borders to the default diagnostic floating windows 103 | local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview 104 | function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...) 105 | opts = opts or {} 106 | opts.border = opts.border or { 107 | { "🭽", "FloatBorder" }, 108 | 109 | { "▔", "FloatBorder" }, 110 | 111 | { "🭾", "FloatBorder" }, 112 | 113 | { "▕", "FloatBorder" }, 114 | 115 | { "🭿", "FloatBorder" }, 116 | 117 | { "▁", "FloatBorder" }, 118 | 119 | { "🭼", "FloatBorder" }, 120 | 121 | { "▏", "FloatBorder" }, 122 | } 123 | return orig_util_open_floating_preview(contents, syntax, opts, ...) 124 | end 125 | -------------------------------------------------------------------------------- /nvim/plugin/maps.lua: -------------------------------------------------------------------------------- 1 | local vim = vim 2 | 3 | local opt = {silent = true} 4 | local map = vim.api.nvim_set_keymap 5 | vim.g.mapleader = "," 6 | 7 | -- MAPPINGS 8 | map("n", "", [[tabnew]], opt) -- new tab 9 | map("n", "", [[bdelete]], opt) -- close tab 10 | 11 | -- move between tabs 12 | map("n", "", [[BufferLineCycleNext]], opt) 13 | map("n", "", [[BufferLineCyclePrev]], opt) 14 | vim.cmd[[tnoremap ]] 15 | -------------------------------------------------------------------------------- /nvim/plugin/notify.lua: -------------------------------------------------------------------------------- 1 | require("notify").setup { 2 | stages = "fade", 3 | timeout = 1000, 4 | } 5 | 6 | vim.notify = require("notify") 7 | 8 | local colors = require("colors") 9 | local hi = require("functions.highlight") 10 | 11 | hi("NotifyERRORBody", { guifg = colors.red }) 12 | hi("NotifyERRORBorder", { guifg = colors.red }) 13 | hi("NotifyERRORIcon", { guifg = colors.red }) 14 | 15 | hi("NotifyWARNBody", { guifg = colors.yellow }) 16 | hi("NotifyWARNBorder", { guifg = colors.yellow }) 17 | hi("NotifyWARNIcon", { guifg = colors.yellow }) 18 | 19 | hi("NotifyINFOBody", { guifg = colors.blue }) 20 | hi("NotifyINFOBorder", { guifg = colors.blue }) 21 | hi("NotifyINFOIcon", { guifg = colors.blue }) 22 | -------------------------------------------------------------------------------- /nvim/plugin/nvimtree.lua: -------------------------------------------------------------------------------- 1 | local g = vim.g 2 | 3 | g.nvim_tree_side = "left" 4 | g.nvim_tree_width = 30 5 | g.nvim_tree_allow_resize = 1 6 | 7 | -- Mappings for nvimtree 8 | 9 | vim.api.nvim_set_keymap( 10 | "n", 11 | "", 12 | ":NvimTreeToggle", 13 | { 14 | noremap = true, 15 | silent = true 16 | } 17 | ) 18 | 19 | local hi = require("functions.highlight") 20 | local colors = require("colors") 21 | require("nvim-tree").setup({ 22 | renderer = { 23 | icons = { 24 | show = { 25 | file = true, 26 | folder = true, 27 | folder_arrow = false, 28 | git = false, 29 | }, 30 | glyphs = { 31 | default = " ", 32 | symlink = " ", 33 | git = { 34 | unstaged = "✗", 35 | staged = "✓", 36 | unmerged = "", 37 | renamed = "➜", 38 | untracked = "★" 39 | } 40 | }, 41 | }, 42 | root_folder_modifier = ":~", 43 | highlight_git = false, 44 | }, 45 | }) 46 | 47 | hi("NvimTreeFolderIcon", { guifg = colors.blue }) 48 | hi("NvimTreeEndOfBuffer", { guibg = colors.bg, guifg = colors.bg }) 49 | hi("NvimTreeNormal", { guibg = colors.bg }) 50 | -------------------------------------------------------------------------------- /nvim/plugin/rich-presence.lua: -------------------------------------------------------------------------------- 1 | -- Copied from the README 2 | 3 | require("presence"):setup { 4 | -- General options 5 | auto_update = true, 6 | main_image = "file", 7 | log_level = nil, 8 | debounce_timeout = 10, 9 | enable_line_number = false, 10 | blacklist = {}, 11 | buttons = true, 12 | 13 | -- Rich Presence text options 14 | editing_text = "Editing %s", 15 | file_explorer_text = "Browsing %s", 16 | git_commit_text = "Committing changes", 17 | plugin_manager_text = "Managing plugins", 18 | reading_text = "Reading %s", 19 | workspace_text = "Working on %s", 20 | line_number_text = "Line %s out of %s", 21 | } 22 | -------------------------------------------------------------------------------- /nvim/plugin/statusline.lua: -------------------------------------------------------------------------------- 1 | local vim = vim 2 | 3 | local gl = require("galaxyline") 4 | local gls = gl.section 5 | local glc = require("galaxyline.condition") 6 | local vcs = require("galaxyline.provider_vcs") 7 | local glf = require("galaxyline.provider_fileinfo") 8 | local lsp = require("galaxyline.provider_lsp") 9 | 10 | gl.short_line_list = { "NvimTree", "packer" } -- keeping this table { } as empty will show inactive statuslines 11 | 12 | local colors = require("colors") 13 | 14 | -- galaxyline {{{ 15 | gls.left[1] = { 16 | StartLeft = { 17 | provider = function() 18 | return "  " 19 | end, 20 | highlight = { colors.bg, colors.green }, 21 | 22 | separator = "", 23 | separator_highlight = { colors.green, colors.bg }, 24 | } 25 | } 26 | 27 | gls.left[2] = { 28 | StatusLeft = { 29 | condition = function() 30 | return glc.check_git_workspace() and (vcs.get_git_branch() ~= nil) 31 | end, 32 | provider = function() 33 | return "  " .. vcs.get_git_branch() 34 | end, 35 | highlight = { colors.green, colors.bg }, 36 | 37 | separator = "@", 38 | separator_highlight = { colors.bg, colors.bg }, 39 | } 40 | } 41 | 42 | gls.left[3] = { 43 | GitDiffAdd = { 44 | condition = glc.check_git_workspace, 45 | provider = "DiffAdd", 46 | icon = "  ", 47 | highlight = { colors.purple, colors.bg }, 48 | 49 | separator = "@", 50 | separator_highlight = { colors.bg, colors.bg }, 51 | } 52 | } 53 | 54 | gls.left[4] = { 55 | GitDiffModified = { 56 | condition = glc.check_git_workspace, 57 | provider = "DiffModified", 58 | icon = " 柳", 59 | highlight = { colors.blue, colors.bg }, 60 | 61 | separator = "@", 62 | separator_highlight = { colors.bg, colors.bg }, 63 | } 64 | } 65 | 66 | gls.left[5] = { 67 | GitDiffRemove = { 68 | condition = glc.check_git_workspace, 69 | provider = "DiffRemove", 70 | icon = "  ", 71 | highlight = { colors.red, colors.bg }, 72 | 73 | separator = "@", 74 | separator_highlight = { colors.bg, colors.bg }, 75 | } 76 | } 77 | 78 | gls.left[6] = { 79 | LeftSepOne = { 80 | provider = function() 81 | return "" 82 | end, 83 | highlight = { colors.bg, colors.black }, 84 | 85 | separator = "@@", 86 | separator_highlight = { colors.black, colors.black }, 87 | } 88 | } 89 | 90 | gls.left[7] = { 91 | FileIcon = { 92 | provider = function() 93 | local icon = glf.get_file_icon():gsub("^%s*(.-)%s*$", "%1") 94 | if icon == "" then 95 | return "" 96 | else 97 | return icon .. " " 98 | end 99 | end, 100 | highlight = { colors.fg, colors.black } 101 | } 102 | } 103 | 104 | gls.left[8] = { 105 | FileName = { 106 | provider = function() 107 | local name = glf.get_current_file_name():gsub("^%s*(.-)%s*$", "%1") 108 | 109 | if name == "" then 110 | return "Empty buffer" 111 | else 112 | return name 113 | end 114 | end, 115 | highlight = { colors.fg, colors.black }, 116 | 117 | separator = "@@", 118 | separator_highlight = { colors.black, colors.black }, 119 | } 120 | } 121 | 122 | gls.left[9] = { 123 | LeftSepTwo = { 124 | provider = function() 125 | return "" 126 | end, 127 | highlight = { colors.black, colors.bg }, 128 | 129 | separator = "@@", 130 | separator_highlight = { colors.bg, colors.bg }, 131 | } 132 | } 133 | -- }}} 134 | 135 | -- Right {{{ 136 | gls.right[0] = { 137 | LspErrorInfo = { 138 | provider = "DiagnosticError", 139 | highlight = { colors.red, colors.bg }, 140 | icon = " ", 141 | 142 | separator = "@", 143 | separator_highlight = { colors.bg, colors.bg }, 144 | } 145 | } 146 | 147 | gls.right[1] = { 148 | LspWarnInfo = { 149 | provider = "DiagnosticWarn", 150 | highlight = { colors.yellow, colors.bg }, 151 | icon = " ", 152 | 153 | separator = "@", 154 | separator_highlight = { colors.bg, colors.bg }, 155 | } 156 | } 157 | 158 | gls.right[2] = { 159 | LspHintInfo = { 160 | provider = "DiagnosticHint", 161 | highlight = { colors.green, colors.bg }, 162 | icon = " ", 163 | 164 | separator = "@", 165 | separator_highlight = { colors.bg, colors.bg }, 166 | } 167 | } 168 | 169 | gls.right[3] = { 170 | LspInfoInfo = { 171 | provider = "DiagnosticInfo", 172 | highlight = { colors.blue, colors.bg }, 173 | icon = " ", 174 | 175 | separator = "@", 176 | separator_highlight = { colors.bg, colors.bg }, 177 | } 178 | } 179 | 180 | gls.right[4] = { 181 | RightSepOne = { 182 | provider = function() 183 | return "" 184 | end, 185 | highlight = { colors.black, colors.bg }, 186 | } 187 | } 188 | 189 | gls.right[5] = { 190 | LspProviderInfo = { 191 | provider = function() 192 | return " " .. lsp.get_lsp_client() 193 | end, 194 | highlight = { colors.blue, colors.black }, 195 | 196 | separator = "@", 197 | separator_highlight = { colors.black, colors.black }, 198 | } 199 | } 200 | 201 | gls.right[6] = { 202 | LspLoadStatus = { 203 | provider = function() 204 | local status = vim.lsp.util.get_progress_messages()[1] 205 | if status and (status.percentage ~= nil or status.progress) then 206 | local percentage = status.percentage or 100 207 | local title = status.title or "" 208 | return title .. "(" .. tostring(percentage) .. "%)" 209 | end 210 | end, 211 | highlight = { colors.lightbg, colors.black }, 212 | 213 | separator = "@", 214 | separator_highlight = { colors.black, colors.black }, 215 | } 216 | } 217 | 218 | gls.right[7] = { 219 | RightSepTwo = { 220 | provider = function() 221 | return "" 222 | end, 223 | highlight = { colors.black, colors.bg }, 224 | 225 | separator = "@", 226 | separator_highlight = { colors.black, colors.black }, 227 | } 228 | } 229 | 230 | gls.right[8] = { 231 | EndRight = { 232 | provider = function() 233 | return "@" 234 | end, 235 | highlight = { colors.bg, colors.bg } 236 | } 237 | } 238 | -- }}} 239 | -------------------------------------------------------------------------------- /nvim/plugin/tabline.lua: -------------------------------------------------------------------------------- 1 | local colors = require("colors") 2 | local bufferline = require("bufferline") 3 | 4 | bufferline.setup { 5 | options = { 6 | offsets = { { filetype = "NvimTree", text = "", padding = 1 } }, 7 | buffer_close_icon = "", 8 | modified_icon = "", 9 | close_icon = "", 10 | left_trunc_marker = "", 11 | right_trunc_marker = "", 12 | max_name_length = 14, 13 | max_prefix_length = 13, 14 | tab_size = 20, 15 | show_tab_indicators = true, 16 | enforce_regular_tabs = false, 17 | view = "multiwindow", 18 | show_buffer_close_icons = true, 19 | separator_style = "thin", 20 | always_show_bufferline = true, 21 | custom_filter = function(buf_number) 22 | -- Func to filter out our managed/persistent split terms 23 | local present_type, type = pcall(function() 24 | return vim.api.nvim_buf_get_var(buf_number, "term_type") 25 | end) 26 | 27 | if present_type then 28 | if type == "vert" then 29 | return false 30 | elseif type == "hori" then 31 | return false 32 | else 33 | return true 34 | end 35 | else 36 | return true 37 | end 38 | end, 39 | }, 40 | highlights = { 41 | fill = { 42 | fg = colors.grey_fg, 43 | bg = colors.black, 44 | }, 45 | background = { 46 | fg = colors.grey_fg, 47 | bg = colors.black, 48 | }, 49 | }, 50 | } 51 | -------------------------------------------------------------------------------- /nvim/plugin/treesitter.lua: -------------------------------------------------------------------------------- 1 | local ts_config = require("nvim-treesitter.configs") 2 | local colors = require("colors") 3 | 4 | ts_config.setup { 5 | ensure_installed = { 6 | "javascript", 7 | "html", 8 | "css", 9 | "bash", 10 | "lua", 11 | "json", 12 | "python" 13 | }, 14 | highlight = { 15 | enable = true, 16 | use_languagetree = true 17 | }, 18 | rainbow = { 19 | enable = false, 20 | colors = { 21 | colors.red, 22 | colors.orange, 23 | colors.yellow, 24 | colors.green, 25 | colors.cyan, 26 | colors.blue, 27 | colors.purple, 28 | }, 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /nvim/syntax/nolang.vim: -------------------------------------------------------------------------------- 1 | if exists("b:current_syntax") 2 | finish 3 | endif 4 | 5 | let b:current_syntax = "nolang" 6 | 7 | sy match nolangNumber "[0-9-\.]" 8 | sy match nolangParen "(" contains=cParen 9 | sy match nolangCall "\w\+\s*(" contains=nolangParen 10 | sy match nolangString '\v"([^"]*)"' 11 | sy match nolangString '\v\'([^\']*)\'' 12 | sy match nolangComment "\v\@.*" 13 | sy match nolangOperator "\v\%|\.\.|\+|\=|\-|\*|\/|\<|\>" 14 | sy match nolangBoolean "\v<(true|false|none)>" 15 | sy match nolangWrite "\v" 16 | sy match nolangLet "\v<(let|defn)>" 17 | sy match nolangCondition "\v" 18 | sy match nolangKeyword "\v<(do|done|end|not|return)>" 19 | sy match nolangSpecial "\v\.|\(|\{|\}|\)" 20 | sy match nolangToDo "\v<(TODO|FIXME|XXX)>" 21 | 22 | hi def link nolangRepeat Repeat 23 | hi def link nolangCall Function 24 | hi def link nolangNumber Number 25 | hi def link nolangBoolean Boolean 26 | hi def link nolangKeyword Keyword 27 | hi def link nolangWrite Function 28 | hi def link nolangOperator Operator 29 | hi def link nolangLet Keyword 30 | hi def link nolangCondition Conditional 31 | hi def link nolangComment Comment 32 | hi def link nolangSpecial Special 33 | hi def link nolangToDo Todo 34 | hi def link nolangLocal Identifier 35 | hi def link nolangString String 36 | -------------------------------------------------------------------------------- /nvim/syntax/yex.vim: -------------------------------------------------------------------------------- 1 | syntax match Operator /+/ 2 | syntax match Operator /-/ 3 | syntax match Operator /*/ 4 | syntax match Operator /\// 5 | syntax match Operator /&&&\?/ 6 | syntax match Operator /\^\^\^/ 7 | syntax match Operator /||\?|\?/ 8 | syntax match Operator />>>/ 9 | syntax match Operator /<</ 11 | syntax match Operator />>/ 12 | syntax match Operator /<=\?/ 13 | syntax match Operator />=\?/ 14 | syntax match Operator /\(=\|!\)=\?/ 15 | syntax match Operator /::/ 16 | syntax match Operator /#/ 17 | syntax keyword Operator is 18 | syntax keyword Operator and or not 19 | 20 | syntax match Function /\v(def(\s|\n)+)@<=\i+('|\?|\!)*/ 21 | syntax match Function /\v\.@<=\i+('|\?|\!)*/ 22 | syntax match Identifier /\v(def(\s|\n)+\i+('|\?|\!)*(\s|\n)+)@<=(\i+('|\?|\!)*(\s|\n)*)+/ 23 | syntax match Identifier /\v(fn(\s|\n)+)@<=(\i+('|\?|\!)*(\s|\n)*)+/ 24 | syntax match Type /\v<[A-Z]\i*('|\?|\!)*>/ 25 | syntax region String start=+"+ skip=+\\\\\|\\"+ end=+"+ 26 | syntax match Comment /\/\/.*$/ 27 | syntax match Constant /:\i\+/ 28 | 29 | syntax keyword TSConstBuiltin nil 30 | syntax keyword Keyword let def member fn in try rescue where match with end 31 | syntax keyword Typedef type with 32 | syntax keyword Include open 33 | syntax keyword Conditional if then else 34 | syntax keyword Boolean true false 35 | syntax match Number /\v<\d+(\.(<\d+)?)?/ 36 | 37 | -------------------------------------------------------------------------------- /picom.conf: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # SHADOWS # 3 | ############################################################################## 4 | 5 | # Enabled client-side shadows on windows. Note desktop windows 6 | # (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow, 7 | # unless explicitly requested using the wintypes option. 8 | # 9 | shadow = true 10 | 11 | # The blur radius for shadows, in pixels. (defaults to 12) 12 | shadow-radius = 15 13 | 14 | # The opacity of shadows. (0.0 - 1.0, defaults to 0.75) 15 | #shadow-opacity = .7 16 | 17 | # The left offset for shadows, in pixels. (defaults to -15) 18 | shadow-offset-x = -15 19 | 20 | # The top offset for shadows, in pixels. (defaults to -15) 21 | shadow-offset-y = -15 22 | 23 | # Avoid drawing shadows on dock/panel windows. This option is deprecated, 24 | # you should use the *wintypes* option in your config file instead. 25 | # 26 | # no-dock-shadow = false 27 | 28 | # Don't draw shadows on drag-and-drop windows. This option is deprecated, 29 | # you should use the *wintypes* option in your config file instead. 30 | # 31 | # no-dnd-shadow = false 32 | 33 | # Red color value of shadow (0.0 - 1.0, defaults to 0). 34 | # shadow-red = .18 35 | 36 | # Green color value of shadow (0.0 - 1.0, defaults to 0). 37 | # shadow-green = .19 38 | 39 | # Blue color value of shadow (0.0 - 1.0, defaults to 0). 40 | # shadow-blue = .20 41 | 42 | # Do not paint shadows on shaped windows. Note shaped windows 43 | # here means windows setting its shape through X Shape extension. 44 | # Those using ARGB background is beyond our control. 45 | # Deprecated, use 46 | # shadow-exclude = 'bounding_shaped' 47 | # or 48 | # shadow-exclude = 'bounding_shaped && !rounded_corners' 49 | # instead. 50 | # 51 | # shadow-ignore-shaped = '' 52 | 53 | # Specify a list of conditions of windows that should have no shadow. 54 | # 55 | # examples: 56 | # shadow-exclude = "n:e:Notification"; 57 | # 58 | # shadow-exclude = [] 59 | shadow-exclude = [ 60 | "class_g = 'firefox' && argb" 61 | ]; 62 | 63 | # Specify a X geometry that describes the region in which shadow should not 64 | # be painted in, such as a dock window region. Use 65 | # shadow-exclude-reg = "x10+0+0" 66 | # for example, if the 10 pixels on the bottom of the screen should not have shadows painted on. 67 | # 68 | # shadow-exclude-reg = "" 69 | 70 | # Crop shadow of a window fully on a particular Xinerama screen to the screen. 71 | # xinerama-shadow-crop = false 72 | 73 | ############################################################################## 74 | # FADING # 75 | ############################################################################## 76 | 77 | # Fade windows in/out when opening/closing and when opacity changes, 78 | # unless no-fading-openclose is used. 79 | fading = true; 80 | 81 | # Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028) 82 | # fade-in-step = 0.028 83 | fade-in-step = 0.03; 84 | 85 | # Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03) 86 | # fade-out-step = 0.03 87 | fade-out-step = 0.03; 88 | 89 | # The time between steps in fade step, in milliseconds. (> 0, defaults to 10) 90 | fade-delta = 5; 91 | 92 | # Specify a list of conditions of windows that should not be faded. 93 | # fade-exclude = [] 94 | 95 | # Do not fade on window open/close. 96 | # no-fading-openclose = false 97 | 98 | # Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc. 99 | # no-fading-destroyed-argb = false 100 | 101 | ############################################################################## 102 | # OPACITY # 103 | ############################################################################## 104 | 105 | # Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0) 106 | inactive-opacity = 1.0 107 | 108 | # Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default) 109 | frame-opacity = 1.0 110 | 111 | # Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0) 112 | menu-opacity = 1.0 113 | 114 | # Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows. 115 | # inactive-opacity-override = true 116 | inactive-opacity-override = false; 117 | 118 | # Default opacity for active windows. (0.0 - 1.0, defaults to 1.0) 119 | active-opacity = 1.0 120 | 121 | # Dim inactive windows. (0.0 - 1.0, defaults to 0.0) 122 | # inactive-dim = 0.0 123 | 124 | # Specify a list of conditions of windows that should always be considered focused. 125 | # focus-exclude = [] 126 | focus-exclude = [ "class_g = 'Cairo-clock'" ]; 127 | 128 | # Use fixed inactive dim value, instead of adjusting according to window opacity. 129 | # inactive-dim-fixed = 1.0 130 | 131 | # Specify a list of opacity rules, in the format `PERCENT:PATTERN`, 132 | # like `50:name *= "Firefox"`. picom-trans is recommended over this. 133 | # Note we don't make any guarantee about possible conflicts with other 134 | # programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows. 135 | # example: 136 | # opacity-rule = [ "80:class_g = 'URxvt'" ]; 137 | # 138 | # opacity-rule = [] 139 | 140 | ############################################################################## 141 | # GENERAL # 142 | ############################################################################## 143 | 144 | # Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers. 145 | # daemon = false 146 | 147 | # Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`. 148 | # `xrender` is the default one. 149 | # 150 | # backend = 'glx' 151 | backend = "glx"; 152 | 153 | # Enable/disable VSync. 154 | # vsync = false 155 | vsync = true 156 | 157 | # Enable remote control via D-Bus. See the *D-BUS API* section below for more details. 158 | # dbus = false 159 | 160 | # Try to detect WM windows (a non-override-redirect window with no 161 | # child that has 'WM_STATE') and mark them as active. 162 | # 163 | # mark-wmwin-focused = false 164 | mark-wmwin-focused = true; 165 | 166 | # Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused. 167 | # mark-ovredir-focused = false 168 | mark-ovredir-focused = true; 169 | 170 | # Try to detect windows with rounded corners and don't consider them 171 | # shaped windows. The accuracy is not very high, unfortunately. 172 | # 173 | # detect-rounded-corners = false 174 | detect-rounded-corners = true; 175 | 176 | # Detect '_NET_WM_OPACITY' on client windows, useful for window managers 177 | # not passing '_NET_WM_OPACITY' of client windows to frame windows. 178 | # 179 | # detect-client-opacity = false 180 | detect-client-opacity = true; 181 | 182 | # Specify refresh rate of the screen. If not specified or 0, picom will 183 | # try detecting this with X RandR extension. 184 | # 185 | # refresh-rate = 60 186 | refresh-rate = 0 187 | 188 | # Limit picom to repaint at most once every 1 / 'refresh_rate' second to 189 | # boost performance. This should not be used with 190 | # vsync drm/opengl/opengl-oml 191 | # as they essentially does sw-opti's job already, 192 | # unless you wish to specify a lower refresh rate than the actual value. 193 | # 194 | # sw-opti = 195 | 196 | # Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, 197 | # rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, 198 | # provided that the WM supports it. 199 | # 200 | # use-ewmh-active-win = false 201 | 202 | # Unredirect all windows if a full-screen opaque window is detected, 203 | # to maximize performance for full-screen windows. Known to cause flickering 204 | # when redirecting/unredirecting windows. 205 | # 206 | # unredir-if-possible = false 207 | 208 | # Delay before unredirecting the window, in milliseconds. Defaults to 0. 209 | # unredir-if-possible-delay = 0 210 | 211 | # Conditions of windows that shouldn't be considered full-screen for unredirecting screen. 212 | # unredir-if-possible-exclude = [] 213 | 214 | # Use 'WM_TRANSIENT_FOR' to group windows, and consider windows 215 | # in the same group focused at the same time. 216 | # 217 | # detect-transient = false 218 | detect-transient = true 219 | 220 | # Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same 221 | # group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if 222 | # detect-transient is enabled, too. 223 | # 224 | # detect-client-leader = false 225 | detect-client-leader = true 226 | 227 | # Resize damaged region by a specific number of pixels. 228 | # A positive value enlarges it while a negative one shrinks it. 229 | # If the value is positive, those additional pixels will not be actually painted 230 | # to screen, only used in blur calculation, and such. (Due to technical limitations, 231 | # with use-damage, those pixels will still be incorrectly painted to screen.) 232 | # Primarily used to fix the line corruption issues of blur, 233 | # in which case you should use the blur radius value here 234 | # (e.g. with a 3x3 kernel, you should use `--resize-damage 1`, 235 | # with a 5x5 one you use `--resize-damage 2`, and so on). 236 | # May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly. 237 | # 238 | # resize-damage = 1 239 | 240 | # Specify a list of conditions of windows that should be painted with inverted color. 241 | # Resource-hogging, and is not well tested. 242 | # 243 | # invert-color-include = [] 244 | 245 | # GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer. 246 | # Might cause incorrect opacity when rendering transparent content (but never 247 | # practically happened) and may not work with blur-background. 248 | # My tests show a 15% performance boost. Recommended. 249 | # 250 | # glx-no-stencil = false 251 | 252 | # GLX backend: Avoid rebinding pixmap on window damage. 253 | # Probably could improve performance on rapid window content changes, 254 | # but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.). 255 | # Recommended if it works. 256 | # 257 | # glx-no-rebind-pixmap = false 258 | 259 | # Disable the use of damage information. 260 | # This cause the whole screen to be redrawn everytime, instead of the part of the screen 261 | # has actually changed. Potentially degrades the performance, but might fix some artifacts. 262 | # The opposing option is use-damage 263 | # 264 | # no-use-damage = false 265 | use-damage = true 266 | 267 | # Use X Sync fence to sync clients' draw calls, to make sure all draw 268 | # calls are finished before picom starts drawing. Needed on nvidia-drivers 269 | # with GLX backend for some users. 270 | # 271 | # xrender-sync-fence = false 272 | 273 | # GLX backend: Use specified GLSL fragment shader for rendering window contents. 274 | # See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` 275 | # in the source tree for examples. 276 | # 277 | # glx-fshader-win = '' 278 | 279 | # Force all windows to be painted with blending. Useful if you 280 | # have a glx-fshader-win that could turn opaque pixels transparent. 281 | # 282 | # force-win-blend = false 283 | 284 | # Do not use EWMH to detect fullscreen windows. 285 | # Reverts to checking if a window is fullscreen based only on its size and coordinates. 286 | # 287 | # no-ewmh-fullscreen = false 288 | 289 | # Dimming bright windows so their brightness doesn't exceed this set value. 290 | # Brightness of a window is estimated by averaging all pixels in the window, 291 | # so this could comes with a performance hit. 292 | # Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0) 293 | # 294 | # max-brightness = 1.0 295 | 296 | # Make transparent windows clip other windows like non-transparent windows do, 297 | # instead of blending on top of them. 298 | # 299 | # transparent-clipping = false 300 | 301 | # Set the log level. Possible values are: 302 | # "trace", "debug", "info", "warn", "error" 303 | # in increasing level of importance. Case doesn't matter. 304 | # If using the "TRACE" log level, it's better to log into a file 305 | # using *--log-file*, since it can generate a huge stream of logs. 306 | # 307 | # log-level = "debug" 308 | log-level = "warn"; 309 | 310 | # Set the log file. 311 | # If *--log-file* is never specified, logs will be written to stderr. 312 | # Otherwise, logs will to written to the given file, though some of the early 313 | # logs might still be written to the stderr. 314 | # When setting this option from the config file, it is recommended to use an absolute path. 315 | # 316 | # log-file = '/path/to/your/log/file' 317 | 318 | # Show all X errors (for debugging) 319 | # show-all-xerrors = false 320 | 321 | # Write process ID to a file. 322 | # write-pid-path = '/path/to/your/log/file' 323 | 324 | # Window type settings 325 | # 326 | # 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: 327 | # "unknown", "desktop", "dock", "toolbar", "menu", "utility", 328 | # "splash", "dialog", "normal", "dropdown_menu", "popup_menu", 329 | # "tooltip", "notification", "combo", and "dnd". 330 | # 331 | # Following per window-type options are available: :: 332 | # 333 | # fade, shadow::: 334 | # Controls window-type-specific shadow and fade settings. 335 | # 336 | # opacity::: 337 | # Controls default opacity of the window type. 338 | # 339 | # focus::: 340 | # Controls whether the window of this type is to be always considered focused. 341 | # (By default, all window types except "normal" and "dialog" has this on.) 342 | # 343 | # full-shadow::: 344 | # Controls whether shadow is drawn under the parts of the window that you 345 | # normally won't be able to see. Useful when the window has parts of it 346 | # transparent, and you want shadows in those areas. 347 | # 348 | # redir-ignore::: 349 | # Controls whether this type of windows should cause screen to become 350 | # redirected again after been unredirected. If you have unredir-if-possible 351 | # set, and doesn't want certain window to cause unnecessary screen redirection, 352 | # you can set this to `true`. 353 | # 354 | wintypes: 355 | { 356 | tooltip = { fade = true; shadow = true; shadow-radius = 0; shadow-opacity = 1.0; shadow-offset-x = -20; shadow-offset-y = -20; opacity = 0.8; full-shadow = true; }; 357 | dnd = { shadow = false; } 358 | dropdown_menu = { shadow = false; }; 359 | popup_menu = { shadow = false; }; 360 | utility = { shadow = false; }; 361 | } 362 | -------------------------------------------------------------------------------- /polybar/config: -------------------------------------------------------------------------------- 1 | # vim:filetype=dosini: 2 | 3 | [colors] 4 | background = ${xrdb:background} 5 | background-alt = ${xrdb:background-alt} 6 | foreground = ${xrdb:foreground} 7 | foreground-alt = ${xrdb:foreground-alt} 8 | 9 | # .Xresources format 10 | color0 = ${xrdb:color0} 11 | color1 = ${xrdb:color1} 12 | color2 = ${xrdb:color2} 13 | color3 = ${xrdb:color3} 14 | color4 = ${xrdb:color4} 15 | color5 = ${xrdb:color5} 16 | color6 = ${xrdb:color6} 17 | color7 = ${xrdb:color7} 18 | color8 = ${xrdb:color8} 19 | color9 = ${xrdb:color9} 20 | color10 = ${xrdb:color10} 21 | color11 = ${xrdb:color11} 22 | color12 = ${xrdb:color12} 23 | color13 = ${xrdb:color13} 24 | color14 = ${xrdb:color14} 25 | color15 = ${xrdb:color15} 26 | 27 | # Normal colors 28 | gray = ${colors.color0} 29 | red = ${colors.color1} 30 | green = ${colors.color2} 31 | yellow = ${colors.color3} 32 | blue = ${colors.color4} 33 | magenta = ${colors.color5} 34 | cyan = ${colors.color6} 35 | white = ${colors.color7} 36 | 37 | # Light colors 38 | lgray = ${colors.color8} 39 | lred = ${colors.color9} 40 | lgreen = ${colors.color10} 41 | lyellow = ${colors.color11} 42 | lblue = ${colors.color12} 43 | lmagenta = ${colors.color13} 44 | lcyan = ${colors.color14} 45 | lwhite = ${colors.color15} 46 | 47 | [icons] 48 | tag = "  " 49 | 50 | [bar/bar] 51 | modules-left = sep debian sep bspwm 52 | modules-center = sep audio sep 53 | modules-right = time sep date sep battery sep backlight sep 54 | 55 | tray-position = left 56 | tray-detached = true 57 | tray-maxsize = 15 58 | tray-offset-x = 200 59 | tray-offset-y = 0 60 | tray-padding = 0 61 | tray-scale = 1.0 62 | 63 | background = "#222632" 64 | 65 | width = 100% 66 | height = 4% 67 | 68 | # text font 69 | font-0 = "Iosevka SS14:style=Medium:pixelsize=12;3" 70 | font-2 = "Iosevka SS14:style=Medium:pixelsize=9;3" 71 | 72 | # icon font 73 | font-1 = "Iosevka Nerd Font:style=Bold:pixelsize=12;3" 74 | font-3 = "NotoEmoji Nerd Font:style=Book:pixelsize=10;3" 75 | 76 | border-size = 2 77 | border-color = "#2f2f3f" 78 | bottom = true 79 | 80 | line-size = 4 81 | 82 | [module/bspwm] 83 | type = internal/bspwm 84 | 85 | label-focused = ${icons.tag} 86 | label-focused-foreground = ${colors.blue} 87 | label-focused-underline = #313141 88 | label-focused-padding = 1 89 | label-focused-font = 3 90 | 91 | label-occupied = ${icons.tag} 92 | label-occupied-foreground = ${colors.green} 93 | label-occupied-padding = 1 94 | label-occupied-font = 3 95 | 96 | label-urgent = ${icons.tag} 97 | label-urgent-foreground = ${colors.red} 98 | label-urgent-padding = 1 99 | label-urgent-font = 3 100 | 101 | label-empty = ${icons.tag} 102 | label-empty-foreground = ${colors.foreground} 103 | label-empty-padding = 1 104 | label-empty-font = 3 105 | 106 | [module/debian] 107 | type = custom/text 108 | content = %{T2}%{F#7cd380}%{F-}%{T-} 109 | bold = true 110 | 111 | click-left = rofi -show drun 112 | 113 | [module/sep] 114 | type = custom/text 115 | content = " " 116 | 117 | [module/time] 118 | type = internal/date 119 | date = %{F#b782da}%{T2}%{T-} %{T3}%H:%M%{T-}%{F-} 120 | 121 | [module/date] 122 | type = internal/date 123 | date = %{F#ffcb6b}%{T2}%{T-} %{T3}%y/%m/%d%{T-}%{F-} 124 | 125 | [module/audio] 126 | type = internal/alsa 127 | format-volume = 128 | 129 | label-volume = %{T3}%{F#7cd380}%percentage%%%{F-}%{T-} 130 | label-muted = %{T2}%{F#7cd380}婢%{F-}%{T-} 131 | 132 | ramp-volume-0 = %{T2}%{F#7cd380}%{F-}%{T-} 133 | ramp-volume-1 = %{T2}%{F#7cd380}奔%{F-}%{T-} 134 | ramp-volume-2 = %{T2}%{F#7cd380}墳%{F-}%{T-} 135 | 136 | interval = 2 137 | 138 | 139 | bar-volume-width = 14 140 | bar-volume-gradient = true 141 | 142 | bar-volume-indicator = 雷 143 | bar-volume-indicator-foreground = ${colors.green} 144 | 145 | bar-volume-fill = 絛 146 | bar-volume-foreground-0 = ${colors.lgreen} 147 | 148 | bar-volume-empty = 絛 149 | bar-volume-empty-font = 1 150 | bar-volume-empty-foreground = ${colors.background} 151 | 152 | [module/battery] 153 | type = internal/battery 154 | 155 | format-charging = %{T2}%{F#729aef}%{F-}%{T-} 156 | format-discharging = %{T2}%{F#729aef}%{F-}%{T-} 157 | format-full = %{T2}%{F#729aef}%{F-}%{T-} 158 | 159 | label-charging = %{T3}%{F#729aef}%percentage%%%{F-}%{T-} 160 | label-discharging = %{T3}%{F#729aef}%percentage%%%{F-}%{T-} 161 | label-full = %{T3}%{F#729aef}%percentage%%%{F-}%{T-} 162 | 163 | ; Only applies if is used 164 | ramp-capacity-0 =  165 | ramp-capacity-1 =  166 | ramp-capacity-2 =  167 | ramp-capacity-3 =  168 | ramp-capacity-4 =  169 | 170 | ; Only applies if is used 171 | bar-capacity-width = 10 172 | 173 | ; Only applies if is used 174 | animation-charging-0 =  175 | animation-charging-1 =  176 | animation-charging-2 =  177 | animation-charging-3 =  178 | animation-charging-4 =  179 | ; Framerate in milliseconds 180 | animation-charging-framerate = 75 181 | 182 | ; Only applies if is used 183 | animation-discharging-0 =  184 | animation-discharging-1 =  185 | animation-discharging-2 =  186 | animation-discharging-3 =  187 | animation-discharging-4 =  188 | ; Framerate in milliseconds 189 | animation-discharging-framerate = 500 190 | 191 | [module/backlight] 192 | type = internal/backlight 193 | card = intel_backlight 194 | format = %{T4}%{F#ff5370}%{F-}%{T-}