├── .config ├── dunst │ └── dunstrc ├── fontconfig │ └── conf.d │ │ └── 60-simonvic-prefs.conf ├── gtk-3.0 │ └── gtk.css ├── htop │ └── htoprc ├── i3 │ ├── config │ └── scripts │ │ └── bingWallpaper.sh ├── nvim │ ├── ftplugin │ │ └── java.lua │ ├── init.lua │ └── lua │ │ └── simonvic │ │ ├── colorscheme.lua │ │ ├── keybindings.lua │ │ ├── plugins │ │ ├── configs │ │ │ ├── aerial.lua │ │ │ ├── align.lua │ │ │ ├── autopairs.lua │ │ │ ├── cmp.lua │ │ │ ├── colorizer.lua │ │ │ ├── colortils.lua │ │ │ ├── comment.lua │ │ │ ├── dap_ui.lua │ │ │ ├── debugger.lua │ │ │ ├── dressing.lua │ │ │ ├── gitsigns.lua │ │ │ ├── lsp_config.lua │ │ │ ├── mason-lspconfig.lua │ │ │ ├── mason.lua │ │ │ ├── neo-tree.lua │ │ │ ├── notify.lua │ │ │ ├── nvim-telescope.lua │ │ │ ├── scrollbar.lua │ │ │ ├── snippets.lua │ │ │ ├── toggleterm.lua │ │ │ ├── treesitter.lua │ │ │ ├── vimtex.lua │ │ │ └── window-picker.lua │ │ └── init.lua │ │ └── settings.lua ├── picom │ └── picom.conf ├── polybar │ └── config.ini ├── rofi │ ├── config.rasi │ ├── fonts │ │ ├── monospace.rasi │ │ ├── sans.rasi │ │ └── serif.rasi │ ├── palettes │ │ └── dark.rasi │ ├── styles │ │ └── simonvic │ │ │ └── glass.rasi │ └── themes │ │ └── simonvic │ │ ├── base.rasi │ │ ├── glass.rasi │ │ └── glass │ │ ├── calculator.rasi │ │ ├── filebrowser.rasi │ │ ├── notification_actions.rasi │ │ ├── reversed.rasi │ │ └── windows.rasi ├── systemd │ └── user │ │ ├── sBatteryctl.service │ │ └── sBatteryctl.timer └── zsh │ └── custom │ └── themes │ └── prompt_simonvic-minimal_setup ├── .local └── bin │ ├── DrawBar.sh │ ├── sBatteryctl │ ├── sBluetoothctl │ ├── sBrightnessctl │ ├── sLockscreenctl │ ├── sMicrophonectl │ ├── sPlayerctl │ ├── sPolybarctl │ ├── sScreenshot │ ├── sTodo │ ├── sVolumectl │ └── sWifi ├── .zshrc ├── LICENSE └── README.md /.config/dunst/dunstrc: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Made by 3 | # _ _ 4 | # (_) (_) 5 | # ___ _ ____ ___ ____ _ _ _ ____ 6 | # /___)| || \ / _ \ | _ \ | | | || | / ___) 7 | #|___ || || | | || |_| || | | | \ V / | |( (___ 8 | #(___/ |_||_|_|_| \___/ |_| |_| \_/ |_| \____) 9 | # 10 | # Check updates and give a look at my dotfiles here: 11 | # https://github.com/simonvic/dotfiles 12 | # 13 | ############################################################################### 14 | 15 | [global] 16 | monitor = 0 17 | follow = none 18 | 19 | ##################################################### 20 | ## GEOMETRY 21 | width = (0, 500) 22 | height = 500 23 | origin = top-center 24 | offset = 0x65 25 | scale = 0 26 | notification_limit = 0 27 | corner_radius = 0 28 | gap_size = 0 29 | 30 | ##################################################### 31 | ## UI 32 | frame_width = 0 33 | frame_color = "#N" 34 | transparency = 0 35 | 36 | background = "#00000055" 37 | foreground = "#DADADA" 38 | 39 | separator_height = 5 40 | separator_color = auto 41 | 42 | padding = 10 43 | horizontal_padding = 10 44 | text_icon_padding = 0 45 | 46 | icon_position = left 47 | min_icon_size = 16 48 | max_icon_size = 32 49 | icon_theme = "Vimix-Ruby-dark" 50 | enable_recursive_icon_lookup = true 51 | #icon_path = /usr/share/icons/Vimix-Ruby-dark/24/actions 52 | 53 | progress_bar = true 54 | progress_bar_horizontal_alignment = center 55 | progress_bar_height = 15 56 | progress_bar_frame_width = 0 57 | progress_bar_min_width = 250 58 | progress_bar_max_width = 250 59 | progress_bar_corner_radius = 10 60 | icon_corner_radius = 0 61 | highlight = "#f0544c" 62 | 63 | ##################################################### 64 | ## TEXT 65 | font = sans 12 66 | line_height = -1 67 | markup = full 68 | 69 | format = "%a: %s\n%b" 70 | alignment = left 71 | vertical_alignment = center 72 | ellipsize = middle 73 | 74 | 75 | ##################################################### 76 | ## BEHAVIOUR 77 | indicate_hidden = true 78 | sort = true 79 | idle_threshold = 5 80 | show_age_threshold = 60 81 | 82 | ignore_newline = false 83 | stack_duplicates = true 84 | hide_duplicate_count = false 85 | show_indicators = true 86 | 87 | sticky_history = true 88 | history_length = 50 89 | 90 | mouse_left_click = context, close_current 91 | mouse_middle_click = close_all 92 | mouse_right_click = close_current 93 | 94 | 95 | 96 | ##################################################### 97 | ## ADVANCED 98 | 99 | dmenu = /usr/bin/rofi -dmenu -p "/" -theme "simonvic/glass/notification_actions" 100 | browser = /usr/bin/firefox --new-tab 101 | always_run_script = true 102 | title = Dunst 103 | class = Dunst 104 | ignore_dbusclose = false 105 | 106 | ### Wayland ### 107 | force_xwayland = false 108 | 109 | ### Legacy 110 | force_xinerama = false 111 | 112 | # [experimental] 113 | # per_monitor_dpi = false 114 | 115 | 116 | ##################################################### 117 | ## RULES 118 | 119 | [urgency_low] 120 | foreground = "#888888" 121 | timeout = 8 122 | 123 | [urgency_normal] 124 | foreground = "#DADADA" 125 | timeout = 8 126 | 127 | [urgency_critical] 128 | foreground = "#DADADA" 129 | background = "#842925aa" 130 | timeout = 16 131 | 132 | 133 | [simonvic.Volume] 134 | appname = simonvic.Volume 135 | history_ignore = true 136 | alignment = center 137 | msg_urgency = normal 138 | format = "%b" 139 | min_icon_size = 24 140 | max_icon_size = 24 141 | 142 | [simonvic.Volume-warning] 143 | appname = simonvic.Volume 144 | history_ignore = true 145 | alignment = center 146 | msg_urgency = critical 147 | format = "%b" 148 | min_icon_size = 24 149 | max_icon_size = 24 150 | 151 | [simonvic.Microphone] 152 | appname = simonvic.Microphone 153 | history_ignore = true 154 | alignment = center 155 | msg_urgency = normal 156 | format = "%b" 157 | min_icon_size = 24 158 | max_icon_size = 24 159 | 160 | [simonvic.Microphone-warning] 161 | appname = simonvic.Microphone 162 | history_ignore = true 163 | alignment = center 164 | msg_urgency = critical 165 | format = "%b" 166 | min_icon_size = 24 167 | max_icon_size = 24 168 | 169 | [simonvic.Brightness] 170 | appname = simonvic.Brightness 171 | history_ignore = true 172 | alignment = center 173 | msg_urgency = normal 174 | format = "%b" 175 | min_icon_size = 24 176 | max_icon_size = 24 177 | 178 | [simonvic.Playerctl] 179 | appname = simonvic.Playerctl 180 | format = "%b" 181 | min_icon_size = 24 182 | max_icon_size = 128 183 | 184 | [simonvic.Battery] 185 | appname = simonvic.Battery 186 | format = "%b" 187 | min_icon_size = 24 188 | max_icon_size = 24 189 | 190 | [simonvic.TODO] 191 | icon_position = top 192 | appname = simonvic.TODO 193 | format = "%b" 194 | min_icon_size = 24 195 | max_icon_size = 24 196 | 197 | [simonvic.WiFi] 198 | appname = simonvic.WiFi 199 | format = "%b" 200 | min_icon_size = 24 201 | max_icon_size = 24 202 | 203 | [simonvic.Screenshot] 204 | appname = simonvic.Screenshot 205 | icon_position = top 206 | alignment = center 207 | format = "%b" 208 | max_icon_size = 400 209 | -------------------------------------------------------------------------------- /.config/fontconfig/conf.d/60-simonvic-prefs.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://github.com/simonvic/dotfiles 6 | 7 | 8 | 9 | 10 | sans-serif 11 | 12 | Work Sans 13 | Lato 14 | 15 | 16 | 17 | 18 | 19 | 20 | serif 21 | LiberationSerif 22 | 23 | 24 | 25 | 26 | 27 | monospace 28 | Source Code Pro 29 | 30 | 31 | 32 | 33 | 34 | nerdfont 35 | SauceCodePro NFP 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /.config/gtk-3.0/gtk.css: -------------------------------------------------------------------------------- 1 | VteTerminal, vte-terminal { 2 | padding: 10px 10px 10px 10px; 3 | } 4 | -------------------------------------------------------------------------------- /.config/htop/htoprc: -------------------------------------------------------------------------------- 1 | # Beware! This file is rewritten by htop when settings are changed in the interface. 2 | # The parser is also very primitive, and not human-friendly. 3 | htop_version=3.3.0 4 | config_reader_min_version=3 5 | fields=0 48 2 46 47 111 1 6 | hide_kernel_threads=1 7 | hide_userland_threads=0 8 | hide_running_in_container=0 9 | shadow_other_users=0 10 | show_thread_names=0 11 | show_program_path=1 12 | highlight_base_name=1 13 | highlight_deleted_exe=1 14 | shadow_distribution_path_prefix=0 15 | highlight_megabytes=1 16 | highlight_threads=1 17 | highlight_changes=0 18 | highlight_changes_delay_secs=5 19 | find_comm_in_cmdline=1 20 | strip_exe_from_cmdline=1 21 | show_merged_command=1 22 | header_margin=1 23 | screen_tabs=0 24 | detailed_cpu_time=0 25 | cpu_count_from_one=1 26 | show_cpu_usage=1 27 | show_cpu_frequency=1 28 | show_cpu_temperature=1 29 | degree_fahrenheit=0 30 | update_process_names=0 31 | account_guest_in_cpu_meter=0 32 | color_scheme=0 33 | enable_mouse=1 34 | delay=10 35 | hide_function_bar=1 36 | header_layout=two_50_50 37 | column_meters_0=CPU AllCPUs4 CPU 38 | column_meter_modes_0=3 3 2 39 | column_meters_1=DateTime Uptime Systemd Blank Memory Swap NetworkIO DiskIO 40 | column_meter_modes_1=2 2 2 2 1 1 1 1 41 | tree_view=1 42 | sort_key=46 43 | tree_sort_key=1 44 | sort_direction=1 45 | tree_sort_direction=1 46 | tree_view_always_by_pid=0 47 | all_branches_collapsed=1 48 | screen:Main=PID USER STATE PERCENT_CPU PERCENT_MEM IO_RATE Command 49 | .sort_key=PERCENT_CPU 50 | .tree_sort_key=Command 51 | .tree_view_always_by_pid=0 52 | .tree_view=1 53 | .sort_direction=1 54 | .tree_sort_direction=1 55 | .all_branches_collapsed=1 56 | screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY Command 57 | .sort_key=IO_RATE 58 | .tree_sort_key=PID 59 | .tree_view_always_by_pid=0 60 | .tree_view=0 61 | .sort_direction=-1 62 | .tree_sort_direction=1 63 | .all_branches_collapsed=0 64 | -------------------------------------------------------------------------------- /.config/i3/config: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Made by 3 | # _ _ 4 | # (_) (_) 5 | # ___ _ ____ ___ ____ _ _ _ ____ 6 | # /___)| || \ / _ \ | _ \ | | | || | / ___) 7 | #|___ || || | | || |_| || | | | \ V / | |( (___ 8 | #(___/ |_||_|_|_| \___/ |_| |_| \_/ |_| \____) 9 | # 10 | # Check updates and give a look at my dotfiles here: 11 | # https://github.com/simonvic/dotfiles 12 | # 13 | ############################################################################### 14 | 15 | 16 | 17 | ############################################################################### 18 | # STARTUP 19 | 20 | # Numlock enable 21 | exec --no-startup-id numlockx 22 | 23 | # Lockscreen 24 | exec --no-startup-id xset s 300 300 25 | exec --no-startup-id xss-lock -n "sBrightnessctl screensaver" -l -- sLockscreenctl suspend 26 | # exec --no-startup-id xss-lock -n dim-screen.sh -l -- transfer-sleep-lock-i3lock.sh 27 | 28 | # Restore redshift state 29 | exec --no-startup-id sBrightnessctl redshift restore 30 | 31 | # Use feh to set wallpaper 32 | exec_always --no-startup-id feh --no-fehbg --bg-fill .config/i3/desktop_wallpaper 33 | # [WIP] Set the Bing wallpaper of the day as your background 34 | # exec_always $HOME/.config/i3/scripts/bingWallpaper.sh 35 | 36 | # Picom 37 | exec_always --no-startup-id picom 38 | 39 | # Run polybar 40 | exec_always --no-startup-id sPolybarctl launch 41 | # [WIP] Enable autohide for the selected bar 42 | # exec_always sPolybarctl autohide main 43 | 44 | 45 | # Always mute microphone at startup, you know... FBI and stuff 46 | exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ true 47 | 48 | # Use Headset Mic as default input source 49 | exec --no-startup-id pactl set-source-port @DEFAULT_SOURCE@ analog-input-headset-mic 50 | 51 | 52 | ############################################################################### 53 | # LOOK AND FEEL 54 | 55 | # FONT 56 | font pango:sans 8 57 | 58 | # APPLICATION LAUNCHER 59 | set $rofi_theme_drun "simonvic/glass/reversed" 60 | set $rofi_theme_windowSwitcher "simonvic/glass/windows" 61 | set $rofi_theme_fileBrowser "simonvic/glass/filebrowser" 62 | set $rofi_theme_calculator "simonvic/glass/calculator" 63 | 64 | # STATUS BAR 65 | set $statusbar_main_position top 66 | 67 | # statusbar gap = desired gap + gaps_inner (e.g. 55 = 35 + 20) 68 | set $statusbar_main_gap 55 69 | 70 | # WINDOWS 71 | set $gaps_inner 20 72 | set $gaps_outer 0 73 | 74 | gaps outer $gaps_outer 75 | gaps inner $gaps_inner 76 | gaps top $statusbar_main_gap 77 | 78 | # smart_gaps on 79 | # smart_gaps inverse_outer 80 | 81 | title_align center 82 | 83 | # WINDOWS BORDERS 84 | # default_border pixel 4 85 | hide_edge_borders smart 86 | for_window [class=".*"] border pixel 4 87 | # for_window [class="Xfce4-terminal"] border pixel 1 88 | 89 | 90 | # COLORS 91 | set $color_primary #F0544C 92 | set $color_background #333333 93 | set $color_backgroundAlt #222222 94 | set $color_foreground #DADADA 95 | set $color_foregroundAlt #FFFFFF 96 | set $color_indicator #666666 97 | set $color_indicatorAlt #444444 98 | set $color_urgent #8d0000 99 | 100 | 101 | # 102 | client.focused $color_primary $color_background $color_foreground $color_indicator $color_primary 103 | client.focused_inactive $color_backgroundAlt $color_background $color_foreground $color_indicatorAlt $color_background 104 | client.unfocused $color_background $color_background $color_foreground $color_indicator $color_backgroundAlt 105 | client.urgent $color_background $color_urgent $color_foregroundAlt $color_urgent $color_urgent 106 | client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c 107 | client.background $color_background 108 | 109 | 110 | 111 | ############################################################################### 112 | # KEYBINDINGS 113 | 114 | # MOD-KEY 115 | set $mod Mod4 116 | 117 | # TERMINAL 118 | # start a terminal 119 | bindsym $mod+Return exec i3-sensible-terminal 120 | 121 | # Drop down terminal 122 | bindsym $mod+Shift+Return exec xfce4-terminal --drop-down 123 | 124 | 125 | # POLYBAR 126 | bindsym $mod+p exec --no-startup-id sPolybarctl toggle main ; \ 127 | gaps $statusbar_main_position all toggle $statusbar_main_gap 128 | bindsym $mod+Shift+p exec --no-startup-id sPolybarctl toggle secondary 129 | bindsym $mod+Ctrl+p exec --no-startup-id sPolybarctl toggle tertiary 130 | # workaround to trigger bar update or the tray won't hide/show 131 | bindsym $mod+Mod1+p exec --no-startup-id sPolybarctl toggle tray; \ 132 | exec sPolybarctl message "action dummy hook 0" 133 | bindsym $mod+Ctrl+Shift+p exec --no-startup-id sPolybarctl hide ; \ 134 | gaps $statusbar_main_position all set 0 135 | 136 | # ZEN-MODE 137 | # [WIP] 138 | bindsym $mod+z gaps inner all toggle $gaps_inner ; \ 139 | gaps right all toggle $gaps_outer ; \ 140 | gaps bottom all toggle $gaps_outer ; \ 141 | gaps left all toggle $gaps_outer 142 | 143 | 144 | # WIFI 145 | bindsym $mod+y exec sWifi rescan no 146 | bindsym $mod+Shift+y exec sWifi rescan yes 147 | 148 | # LOCKSCREEN 149 | bindsym $mod+Ctrl+l exec --no-startup-id sLockscreenctl lock 150 | 151 | # SPEAKER AND MICROPHONE 152 | # -Ctrl is used to control the microphone 153 | # -Shift is used to change values at higher rate 154 | bindsym XF86AudioRaiseVolume exec --no-startup-id sVolumectl increase 1 155 | bindsym XF86AudioLowerVolume exec --no-startup-id sVolumectl decrease 1 156 | bindsym Shift+XF86AudioRaiseVolume exec --no-startup-id sVolumectl increase 10 157 | bindsym Shift+XF86AudioLowerVolume exec --no-startup-id sVolumectl decrease 10 158 | bindsym XF86AudioMute exec --no-startup-id sVolumectl mute toggle 159 | 160 | bindsym Ctrl+XF86AudioRaiseVolume exec --no-startup-id sMicrophonectl increase 1 161 | bindsym Ctrl+XF86AudioLowerVolume exec --no-startup-id sMicrophonectl decrease 1 162 | bindsym Ctrl+Shift+XF86AudioRaiseVolume exec --no-startup-id sMicrophonectl increase 10 163 | bindsym Ctrl+Shift+XF86AudioLowerVolume exec --no-startup-id sMicrophonectl decrease 10 164 | bindsym Ctrl+XF86AudioMute exec --no-startup-id sMicrophonectl mute toggle 165 | 166 | # BRIGHTNESS and REDSHIFT 167 | # -Ctrl is used to control the temperature 168 | # -Shift is used to change values at higher rate 169 | bindsym XF86MonBrightnessUp exec --no-startup-id sBrightnessctl increase 170 | bindsym XF86MonBrightnessDown exec --no-startup-id sBrightnessctl decrease 171 | bindsym Shift+XF86MonBrightnessUp exec --no-startup-id sBrightnessctl increase 10 172 | bindsym Shift+XF86MonBrightnessDown exec --no-startup-id sBrightnessctl decrease 10 173 | bindsym XF86ScreenSaver exec --no-startup-id sBrightnessctl set 5 174 | bindsym Shift+XF86ScreenSaver exec --no-startup-id sBrightnessctl set 100 175 | bindsym Mod1+XF86ScreenSaver exec --no-startup-id sBatteryctl wakelock toggle 176 | 177 | bindsym Ctrl+XF86MonBrightnessUp exec --no-startup-id sBrightnessctl redshift increase 178 | bindsym Ctrl+XF86MonBrightnessDown exec --no-startup-id sBrightnessctl redshift decrease 179 | bindsym Ctrl+Shift+XF86MonBrightnessUp exec --no-startup-id sBrightnessctl redshift increase 400 180 | bindsym Ctrl+Shift+XF86MonBrightnessDown exec --no-startup-id sBrightnessctl redshift decrease 400 181 | bindsym Ctrl+XF86ScreenSaver exec --no-startup-id sBrightnessctl redshift toggle 182 | 183 | # MEDIA PLAYER CONTROL 184 | bindsym XF86AudioPlay exec --no-startup-id sPlayerctl play-pause 185 | bindsym XF86AudioStop exec --no-startup-id sPlayerctl stop 186 | bindsym Shift+XF86AudioStop exec --no-startup-id sPlayerctl stop all 187 | bindsym XF86AudioNext exec --no-startup-id sPlayerctl next 188 | bindsym XF86AudioPrev exec --no-startup-id sPlayerctl previous 189 | bindsym Ctrl+XF86AudioPlay exec --no-startup-id sPlayerctl select-player 190 | bindsym Ctrl+Shift+XF86AudioPlay exec --no-startup-id sPlayerctl select-player set __auto__ 191 | 192 | # TODO MANAGER 193 | bindsym $mod+t exec --no-startup-id sTodo notification todo 194 | bindsym $mod+Ctrl+t exec --no-startup-id sTodo notification done 195 | bindsym $mod+Shift+t exec --no-startup-id sTodo notification deleted 196 | bindsym $mod+Shift+Ctrl+t exec --no-startup-id sTodo notification 197 | 198 | # CALCULATOR 199 | bindsym XF86Calculator exec rofi -show calc -modi calc -no-show-match -no-sort -calc-command "echo -n '{result}' | xclip -selection clipboard -i" -theme "$rofi_theme_calculator" 200 | 201 | # SCREENSHOTS 202 | # Select area 203 | bindsym --release $mod+Shift+s exec --no-startup-id sScreenshot area 204 | # All screen 205 | bindsym --release $mod+Ctrl+Shift+s exec --no-startup-id sScreenshot screen 206 | 207 | # APPLICATION LAUNCHER 208 | bindsym $mod+a exec rofi -show combi -modes combi -combi-modes "drun#window" -theme "$rofi_theme_drun" 209 | bindsym $mod+Ctrl+a exec rofi -show drun -theme "$rofi_theme_drun" 210 | bindsym $mod+Tab exec rofi -show window -modi "window#windowcd" -theme "$rofi_theme_windowSwitcher" 211 | bindsym $mod+Shift+Tab exec rofi -show filebrowser -theme "$rofi_theme_fileBrowser" 212 | 213 | # NOTIFICATIONS 214 | bindsym $mod+n exec --no-startup-id dunstctl context 215 | bindsym $mod+Shift+n exec --no-startup-id dunstctl history-pop 216 | bindsym $mod+Ctrl+n exec --no-startup-id dunstctl close 217 | bindsym $mod+Ctrl+Shift+n exec --no-startup-id dunstctl close-all 218 | 219 | # DESKTOP MANAGER GENERAL 220 | floating_modifier $mod 221 | bindsym $mod+Shift+q kill 222 | bindsym $mod+Shift+space floating toggle 223 | bindsym $mod+space focus mode_toggle 224 | bindsym $mod+f fullscreen toggle 225 | bindsym $mod+Shift+c reload 226 | bindsym $mod+Shift+r restart 227 | bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'" 228 | 229 | # DESKTOP MANAGER FOCUSING 230 | bindsym $mod+Left focus left 231 | bindsym $mod+Down focus down 232 | bindsym $mod+Up focus up 233 | bindsym $mod+Right focus right 234 | bindsym $mod+h focus left 235 | bindsym $mod+j focus down 236 | bindsym $mod+k focus up 237 | bindsym $mod+l focus right 238 | 239 | bindsym $mod+Shift+d focus parent 240 | bindsym $mod+d focus child 241 | 242 | # DESKTOP MANAGER MOVEMENT 243 | bindsym $mod+Shift+Left move left 244 | bindsym $mod+Shift+Down move down 245 | bindsym $mod+Shift+Up move up 246 | bindsym $mod+Shift+Right move right 247 | 248 | bindsym $mod+Shift+h move left 249 | bindsym $mod+Shift+j move down 250 | bindsym $mod+Shift+k move up 251 | bindsym $mod+Shift+l move right 252 | 253 | # DESKTOP MANAGER SPLITTING 254 | bindsym $mod+x split h 255 | bindsym $mod+v split v 256 | 257 | # DESKTOP MANAGER LAYOUT 258 | bindsym $mod+s layout stacking 259 | bindsym $mod+w layout tabbed 260 | bindsym $mod+e layout toggle split 261 | 262 | # DESKTOP MANAGER WORKSPACES 263 | set $ws1 "1" 264 | set $ws2 "2" 265 | set $ws3 "3" 266 | set $ws4 "4" 267 | set $ws5 "5" 268 | set $ws6 "6" 269 | set $ws7 "7" 270 | set $ws8 "8" 271 | set $ws9 "9" 272 | set $ws10 "10" 273 | 274 | bindsym $mod+1 workspace number $ws1 275 | bindsym $mod+2 workspace number $ws2 276 | bindsym $mod+3 workspace number $ws3 277 | bindsym $mod+4 workspace number $ws4 278 | bindsym $mod+5 workspace number $ws5 279 | bindsym $mod+6 workspace number $ws6 280 | bindsym $mod+7 workspace number $ws7 281 | bindsym $mod+8 workspace number $ws8 282 | bindsym $mod+9 workspace number $ws9 283 | bindsym $mod+0 workspace number $ws10 284 | 285 | bindsym $mod+Shift+1 move container to workspace number $ws1 286 | bindsym $mod+Shift+2 move container to workspace number $ws2 287 | bindsym $mod+Shift+3 move container to workspace number $ws3 288 | bindsym $mod+Shift+4 move container to workspace number $ws4 289 | bindsym $mod+Shift+5 move container to workspace number $ws5 290 | bindsym $mod+Shift+6 move container to workspace number $ws6 291 | bindsym $mod+Shift+7 move container to workspace number $ws7 292 | bindsym $mod+Shift+8 move container to workspace number $ws8 293 | bindsym $mod+Shift+9 move container to workspace number $ws9 294 | bindsym $mod+Shift+0 move container to workspace number $ws10 295 | 296 | # DESKTOP MANAGER RESIZE 297 | mode "resize" { 298 | bindsym Left resize shrink width 5 px or 5 ppt 299 | bindsym Down resize grow height 5 px or 5 ppt 300 | bindsym Up resize shrink height 5 px or 5 ppt 301 | bindsym Right resize grow width 5 px or 5 ppt 302 | bindsym h resize shrink width 5 px or 5 ppt 303 | bindsym j resize grow height 5 px or 5 ppt 304 | bindsym k resize shrink height 5 px or 5 ppt 305 | bindsym l resize grow width 5 px or 5 ppt 306 | 307 | bindsym Return mode "default" 308 | bindsym Escape mode "default" 309 | bindsym $mod+r mode "default" 310 | } 311 | 312 | bindsym $mod+r mode "resize" 313 | 314 | ############################################################################### 315 | # BEHAVIOUR 316 | focus_follows_mouse no 317 | 318 | ############################################################################### 319 | # SPECIFIC 320 | for_window [class="Apache NetBeans IDE "] floating enable 321 | 322 | ############################################################################### 323 | # USER-CONFIG 324 | include config.d/*.conf 325 | -------------------------------------------------------------------------------- /.config/i3/scripts/bingWallpaper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ########################################### 4 | # Made by 5 | # _ _ 6 | # (_) (_) 7 | # ___ _ ____ ___ ____ _ _ _ ____ 8 | # /___)| || \ / _ \ | _ \ | | | || | / ___) 9 | #|___ || || | | || |_| || | | | \ V / | |( (___ 10 | #(___/ |_||_|_|_| \___/ |_| |_| \_/ |_| \____) 11 | 12 | # Check updates and give a look at my dotfiles here: 13 | # https://github.com/simonvic/dotfiles 14 | 15 | ########################################### 16 | 17 | # Bing base address 18 | bing="http://www.bing.com" 19 | 20 | # Base url 21 | url=$bing"/HPImageArchive.aspx?" 22 | 23 | # Response Format (json or xml or rss) 24 | url+="&format=rss" 25 | 26 | # Day id (0=today, 1=yesterday ...) 27 | url+="&idx=0" 28 | 29 | # Region (it-IT for Italy, en-US for USA etc. ) 30 | url+="&mkt=it-IT" 31 | 32 | # How many photo to download. 33 | url+="&n=1" 34 | 35 | # Url of the image to be downloaded 36 | imageURL=$bing$(wget --quiet -O - $url | awk -F'src="' '{print $2}' | cut -d '&' -f1) 37 | 38 | wget --quiet -O - "$imageURL" | feh --bg-fill --no-fehbg - 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /.config/nvim/ftplugin/java.lua: -------------------------------------------------------------------------------- 1 | local vim = vim 2 | 3 | vim.opt.colorcolumn = "100"; 4 | 5 | local jdtls = require("jdtls") 6 | 7 | local cmd = { "/usr/bin/jdtls" } 8 | local jars_lombok = vim.fn.glob("~/.m2/repository/org/projectlombok/lombok/*/lombok-*[0-9].jar", 1) 9 | local jars_debug = vim.fn.glob("~/.m2/repository/com/microsoft/java/com.microsoft.java.debug.plugin/*/*.jar", 1) 10 | local jars_testing = vim.fn.glob("~/.vscode-oss/extensions/vscjava.vscode-java-test-*/server/*.jar", 1) 11 | 12 | if vim.fn.empty(jars_lombok) == 0 then 13 | vim.list_extend(cmd, { "--jvm-arg=-javaagent:" .. jars_lombok }) 14 | end 15 | 16 | local bundles = { jars_debug } 17 | vim.list_extend(bundles, vim.split(jars_testing, "\n")) 18 | jdtls.start_or_attach({ 19 | cmd = cmd, 20 | root_dir = require("jdtls.setup").find_root({ ".gradlew", ".git", "mvnw", "pom.xml" }), 21 | init_options = { 22 | bundles = bundles 23 | }, 24 | capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()), 25 | on_attach = function(client, bufnr) 26 | jdtls.setup_dap({ hotcode_replace = "auto" }) 27 | jdtls.setup.add_commands() 28 | local keybindings = require("simonvic.keybindings") 29 | keybindings.set(keybindings.plugins.jdtls) 30 | end, 31 | settings = { 32 | java = { 33 | configuration = { 34 | runtimes = { 35 | { 36 | name = "JavaSE-21", 37 | path = "/usr/lib/jvm/java-21-openjdk/", 38 | }, 39 | }, 40 | }, 41 | codeGeneration = { 42 | generateComments = true 43 | }, 44 | implementationCodeLens = { enabled = false }, 45 | referencesCodeLens = { enabled = false }, 46 | inlayhints = { 47 | parameterNames = { 48 | enabled = true 49 | } 50 | }, 51 | format = { 52 | settings = { 53 | url = "~/.config/jdtls/settings.xml" 54 | }, 55 | comments = { enabled = false }, 56 | }, 57 | sources = { 58 | organizeImports = { 59 | starThreshold = 5, 60 | staticStarThreshold = 3 61 | } 62 | } 63 | } 64 | } 65 | }) 66 | -------------------------------------------------------------------------------- /.config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | require("simonvic.settings") 2 | require("simonvic.plugins").with_lazy() 3 | require("simonvic.colorscheme").apply() 4 | require("simonvic.keybindings").apply() 5 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/colorscheme.lua: -------------------------------------------------------------------------------- 1 | local vim = vim 2 | local M = {} 3 | 4 | M.config = { 5 | transparent = true, 6 | italic_comments = true 7 | } 8 | 9 | M.palette = { 10 | accent_xxdark = "#4C302F", 11 | accent_xdark = "#88302B", 12 | accent_dark = "#CC443D", 13 | accent = "#F0544C", 14 | accent_light = "#F6645D", 15 | accent_xlight = "#EF9F9B", 16 | zdepth__4 = "#000000", 17 | zdepth__3 = "#111111", 18 | zdepth__2 = "#222222", 19 | zdepth__1 = "#252525", 20 | zdepth_0 = "#333333", 21 | zdepth_1 = "#3A3A3A", 22 | zdepth_2 = "#444444", 23 | zdepth_3 = "#505050", 24 | disabled = "#666666", 25 | text_xdark = "#666666", 26 | text_dark = "#808080", 27 | text = "#CACACA", 28 | text_light = "#DADADA", 29 | text_xxlight = "#FAFAFA", 30 | text_xxxlight = "#FFFFFF", 31 | added = "#2B5640", 32 | changed = "#226688", 33 | deleted = "#873E41", 34 | error = "#E8312E", 35 | warn = "#E87B2E", 36 | info = "#C9E9EF", 37 | hint = "#CFD2D3", 38 | ok = "#A9FF68", 39 | } 40 | local p = M.palette 41 | if M.config.transparent then 42 | p.zdepth__4 = "none" 43 | p.zdepth__3 = "none" 44 | p.zdepth__2 = "none" 45 | p.zdepth__1 = "none" 46 | p.zdepth_0 = "none" 47 | p.zdepth_1 = "none" 48 | p.zdepth_2 = "none" 49 | p.zdepth_3 = "none" 50 | end 51 | 52 | -- @TODO darken non-focused windows? 53 | M.groups = { 54 | NonText = { fg = p.zdepth_0, bold = true }, 55 | Visual = { bg = p.accent_xxdark }, 56 | Search = { bg = p.accent_xdark }, 57 | CursorLine = { bg = p.zdepth__1 }, 58 | ColorColumn = { bg = p.zdepth_1 }, 59 | WinBar = { bg = p.zdepth_1, fg = p.text, bold = true }, 60 | StatusLine = { bg = p.zdepth_1 }, 61 | TabLine = { bg = p.zdepth_0 }, 62 | TabLineSel = { bg = p.zdepth_1, underline = true, sp = p.accent }, 63 | TabLineFill = { bg = p.zdepth__1 }, 64 | Normal = { bg = p.zdepth_0, fg = p.text }, 65 | -- NormalNC = { bg = p.zdepth__1, fg = p.text }, 66 | MsgArea = { bg = p.zdepth_1 }, 67 | VertSplit = { bg = p.zdepth_1, fg = p.text_xdark }, 68 | Pmenu = { bg = p.zdepth_1 }, 69 | PmenuSel = { bg = p.accent_xxdark }, 70 | PmenuSbar = { bg = p.zdepth_2 }, 71 | PmenuThumb = { bg = p.accent_dark }, 72 | NormalFloat = {}, 73 | DiffAdd = { bg = p.added, }, 74 | DiffChange = { bg = p.changed, }, 75 | DiffDelete = { bg = p.deleted, }, 76 | DiagnosticError = {}, 77 | DiagnosticWarn = {}, 78 | DiagnosticInfo = {}, 79 | DiagnosticHint = {}, 80 | LineNr = { bg = p.zdepth_1, fg = p.text_dark }, 81 | CursorLineNr = { bg = p.zdepth_1, fg = p.text_xxxlight, bold = true }, 82 | SignColumn = { bg = p.zdepth_1, fg = p.text_xdark }, 83 | FoldColumn = { bg = p.zdepth_1, fg = p.text_xdark }, 84 | DiagnosticSignError = { bg = p.zdepth_1, fg = p.error }, 85 | DiagnosticSignWarn = { bg = p.zdepth_1, fg = p.warn }, 86 | DiagnosticSignInfo = { bg = p.zdepth_1, fg = p.info }, 87 | DiagnosticSignHint = { bg = p.zdepth_1, fg = p.hint }, 88 | DebugSignBreakpoint = { bg = p.zdepth_1, fg = p.error }, 89 | DebugSignStopped = { bg = p.zdepth_1, fg = p.ok }, 90 | DebugSignBreakpointCondition = { bg = p.zdepth_1, fg = p.warn }, 91 | DebugSignBreakpointRejected = { bg = p.zdepth_1, fg = p.error }, 92 | DebugSignBreakpointLog = { bg = p.zdepth_1, fg = p.info }, 93 | GitSignsAdd = { bg = p.zdepth_1, fg = p.added }, 94 | GitSignsChange = { bg = p.zdepth_1, fg = p.changed }, 95 | GitSignsDelete = { bg = p.zdepth_1, fg = p.deleted }, 96 | GitSignsAddNr = {}, 97 | GitSignsChangeNr = {}, 98 | GitSignsDeleteNr = {}, 99 | DiagnosticUnderlineError = { sp = p.error, undercurl = true }, 100 | DiagnosticUnderlineWarn = { sp = p.warn, undercurl = true }, 101 | DiagnosticUnderlineInfo = { sp = p.info, undercurl = true }, 102 | DiagnosticUnderlineHint = { sp = p.hint, undercurl = true }, 103 | -- DAP UI 104 | DapUINormal = { bg = p.zdepth_1 }, 105 | DapUINormalNC = { bg = p.zdepth_1 }, 106 | DapUIPlayPause = { bg = p.zdepth_1, fg = p.ok }, 107 | DapUIStop = { bg = p.zdepth_1, fg = p.error }, 108 | DapUIRestart = { bg = p.zdepth_1, fg = p.hint }, 109 | DapUIStepOver = { bg = p.zdepth_1, fg = p.hint }, 110 | DapUIStepInto = { bg = p.zdepth_1, fg = p.hint }, 111 | DapUIStepBack = { bg = p.zdepth_1, fg = p.hint }, 112 | DapUIStepOut = { bg = p.zdepth_1, fg = p.hint }, 113 | DapUIPlayPauseNC = { link = "DapUIPlayPause" }, 114 | DapUIStopNC = { link = "DapUIStop" }, 115 | DapUIRestartNC = { link = "DapUIRestart" }, 116 | DapUIStepOverNC = { link = "DapUIStepOver" }, 117 | DapUIStepIntoNC = { link = "DapUIStepInto" }, 118 | DapUIStepBackNC = { link = "DapUIStepBack" }, 119 | DapUIStepOutNC = { link = "DapUIStepOut" }, 120 | DapUIType = { link = "Type" }, 121 | DapUILineNumber = { link = "ColorLine" }, 122 | DapUIWatchesValue = { fg = p.text }, 123 | DapUIWatchesError = { fg = p.error }, 124 | DapUIWatchesEmpty = { fg = p.hint }, 125 | DapUIModifiedValue = { bg = p.changed, fg = p.text, bold = true }, 126 | DapUIScope = { fg = p.text, bold = true }, 127 | DapUISource = { fg = p.text }, 128 | DapUIDecoration = { fg = p.text, bold = true }, 129 | DapUIBreakpointsPath = { fg = p.text, bold = true }, 130 | DapUIBreakpointsCurrentLine = { fg = p.text, bold = true }, 131 | DapUIBreakpointsDisabledLine = { fg = p.disabled }, 132 | DapUIBreakpointsInfo = { fg = p.text, bold = true }, 133 | DapUIFloatBorder = { fg = p.text }, 134 | DapUIThread = { fg = p.text, bold = true }, 135 | DapUIStoppedThread = { fg = p.warn }, 136 | DapUIUnavailable = { bg = p.zdepth_1, fg = p.disabled }, 137 | DapUIUnavailableNC = { link = "DapUIUnavailable" }, 138 | -- Neo tree plugin 139 | NeoTreeNormal = { bg = p.zdepth_1, fg = p.text }, 140 | NeoTreeCursorLine = { bg = p.accent_xxdark }, 141 | NeoTreeTabInactive = { bg = p.zdepth_0 }, 142 | NeoTreeTabActive = { bg = p.zdepth_1, underline = true, sp = p.accent }, 143 | NeoTreeTabSeparatorInactive = { bg = p.zdepth_0, fg = p.zdepth_0 }, 144 | NeoTreeTabSeparatorActive = { bg = p.zdepth_1, fg = p.zdepth_1 }, 145 | -- These colors are read from the scrollbar plugin config 146 | ScrollbarHandle = { bg = p.accent_xxdark }, 147 | ScrollbarError = { fg = p.error }, 148 | ScrollbarWarn = { fg = p.warn }, 149 | ScrollbarInfo = { fg = p.info }, 150 | ScrollbarHint = { fg = p.hint }, 151 | ScrollbarErrorHandle = { bg = p.accent_xxdark, fg = p.error }, 152 | ScrollbarWarnHandle = { bg = p.accent_xxdark, fg = p.warn }, 153 | ScrollbarInfoHandle = { bg = p.accent_xxdark, fg = p.info }, 154 | ScrollbarHintHandle = { bg = p.accent_xxdark, fg = p.hint }, 155 | ScrollbarMiscHandle = { bg = p.accent_xxdark, fg = "#9876AA" }, 156 | ScrollbarSearchHandle = { bg = p.accent_xxdark, fg = p.ok }, 157 | -- Noice 158 | NoiceCursor = { bg = p.accent }, 159 | NoiceMini = { bg = p.zdepth_2 }, 160 | -- Aerial 161 | AerialLine = { bg = p.accent_xxdark }, 162 | -- 163 | Comment = { bg = "none", fg = "#808080", italic = M.config.italic_comments }, 164 | Type = { bg = "none", fg = "#FAFAFA", bold = false }, 165 | Todo = { bg = "none", fg = p.hint, bold = true }, 166 | Constant = { fg = "#9876AA" }, 167 | ["@parameter"] = { bg = "none", fg = "#CACACA", bold = false }, 168 | ["@variable"] = { bg = "none", fg = "#CACACA", bold = false }, 169 | ["@field"] = { bg = "none", fg = "#9876AA", bold = false }, 170 | ["@constant.comment"] = { bg = "none", fg = "#BBB529", bold = true }, 171 | ["@attribute"] = { bg = "none", fg = "#BBB529", bold = false }, 172 | ["@punctuation.bracket"] = { bg = "none", fg = "#CACACA", bold = false }, 173 | ["@punctuation.delimiter"] = { bg = "none", fg = "#CC7832", bold = false }, 174 | ["@type.qualifier"] = { bg = "none", fg = "#CC7832", bold = false }, 175 | ["@type.builtin"] = { bg = "none", fg = "#f98b31", bold = false }, 176 | ["@variable.builtin"] = { bg = "none", fg = "#f98b31", bold = false }, 177 | ["@text.todo"] = { link = "Todo" }, 178 | ["@text.danger"] = { bg = "none", fg = p.warn, bold = true }, 179 | ["@lsp.type.property.lua"] = { link = "@field" } 180 | } 181 | 182 | function M.apply() 183 | if M.config.transparent then 184 | M.groups.ColorColumn = { bg = "#202020" } 185 | M.groups.NonText = { fg = "#555555", bold = true } 186 | end 187 | vim.cmd("colorscheme darcula") 188 | for group, colors in pairs(M.groups) do 189 | vim.api.nvim_set_hl(0, group, colors) 190 | end 191 | end 192 | 193 | return M 194 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/aerial.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | local keybindings = require("simonvic.keybindings") 3 | require("aerial").setup({ 4 | layout = { 5 | max_width = { 40, 0.2 }, 6 | width = 20, 7 | min_width = 10, 8 | win_opts = { 9 | winbar = " " 10 | }, 11 | default_direction = "right", 12 | placement = "window", 13 | }, 14 | backends = { "lsp", "treesitter", "markdown" }, 15 | attach_mode = "window", 16 | close_automatic_events = {}, 17 | keymaps = keybindings.plugins.aerial, 18 | show_guides = true, 19 | guides = { 20 | mid_item = "├ ", 21 | last_item = "└ ", 22 | nested_top = "│ ", 23 | whitespace = " ", 24 | }, 25 | nav = { 26 | keymaps = keybindings.plugins.aerial_nav, 27 | } 28 | }) 29 | require("telescope").load_extension("aerial") 30 | end 31 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/align.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | local keybindings = require("simonvic.keybindings") 3 | require("mini.align").setup({ 4 | mappings = keybindings.plugins.align 5 | }); 6 | end 7 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/autopairs.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | require("nvim-autopairs").setup({ 3 | check_ts = true 4 | }) 5 | end 6 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/cmp.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | local snippet = require("luasnip") 3 | local cmp = require("cmp") 4 | cmp.setup({ 5 | snippet = { 6 | expand = function(args) 7 | snippet.lsp_expand(args.body) 8 | end, 9 | }, 10 | window = { 11 | completion = cmp.config.window.bordered(), 12 | documentation = cmp.config.window.bordered(), 13 | }, 14 | -- formatting = { 15 | -- fields = { "kind", "abbr", "menu"} 16 | -- }, 17 | sources = { 18 | { name = "nvim_lsp" }, 19 | { name = "luasnip" }, 20 | { name = "buffer" }, 21 | { name = "path" }, 22 | }, 23 | preselect = cmp.PreselectMode.None, 24 | completion = { 25 | autocomplete = false 26 | }, 27 | mapping = { 28 | [""] = cmp.mapping.select_prev_item { behavior = cmp.SelectBehavior.Select }, 29 | [""] = cmp.mapping.select_next_item { behavior = cmp.SelectBehavior.Select }, 30 | [""] = cmp.mapping.select_prev_item { behavior = cmp.SelectBehavior.Insert }, 31 | [""] = cmp.mapping.select_next_item { behavior = cmp.SelectBehavior.Insert }, 32 | [""] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }), 33 | [""] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }), 34 | [""] = cmp.mapping.abort(), 35 | [""] = cmp.mapping(function() 36 | if cmp.visible() then 37 | cmp.select_next_item() 38 | else 39 | cmp.complete() 40 | end 41 | end, { "i", "c" }), 42 | [""] = cmp.mapping.confirm({ select = false }), 43 | [""] = cmp.mapping(function(fallback) 44 | if snippet.jumpable(1) then 45 | snippet.jump(1) 46 | else 47 | fallback() 48 | end 49 | end, { "i", "s", }), 50 | [""] = cmp.mapping(function(fallback) 51 | if snippet.jumpable(-1) then 52 | snippet.jump(-1) 53 | else 54 | fallback() 55 | end 56 | end, { "i", "s" }), 57 | }, 58 | }) 59 | local cmp_autopairs = require("nvim-autopairs.completion.cmp") 60 | cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done()) 61 | end 62 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/colorizer.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | require("colorizer").setup({ 3 | filetype = { "*" }, 4 | user_default_options = { 5 | names = false, 6 | RRGGBB = true, 7 | RRGGBBAA = true, 8 | AARRGGBB = true, 9 | css = false, 10 | css_fn = true, 11 | mode = "background" 12 | } 13 | }) 14 | end 15 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/colortils.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | require("colortils").setup() 3 | end 4 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/comment.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | require("nvim_comment").setup({ 3 | marker_padding = true, 4 | comment_empty = true, 5 | comment_empty_trim_whitespace = true, 6 | create_mappings = false, 7 | hook = nil 8 | }) 9 | end 10 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/dap_ui.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | local dapui = require("dapui") 3 | dapui.setup({ 4 | mappings = require("simonvic.keybindings").plugins.dapui, 5 | icons = { 6 | expanded = "", 7 | collapsed = "", 8 | current_frame = "" 9 | }, 10 | layouts = { 11 | { 12 | position = "bottom", 13 | size = 8, 14 | elements = { 15 | { id = "breakpoints", size = 0.20 }, 16 | { id = "repl", size = 0.30 }, 17 | { id = "console", size = 0.50 } 18 | }, 19 | }, 20 | { 21 | position = "right", 22 | size = 16, 23 | elements = { 24 | { id = "stacks", size = 0.20, }, 25 | { id = "scopes", size = 0.40, }, 26 | { id = "watches", size = 0.40, }, 27 | }, 28 | }, 29 | }, 30 | }) 31 | 32 | require("dap").listeners.after.event_initialized["dapui_config"] = function() 33 | dapui.open() 34 | end 35 | end 36 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/debugger.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | local dap = require("dap") 3 | local signs = { 4 | DiagnosticSignError = { text = "", texthl = "DiagnosticSignError" }, 5 | DiagnosticSignWarn = { text = "", texthl = "DiagnosticSignWarn" }, 6 | DiagnosticSignInfo = { text = "", texthl = "DiagnosticSignInfo" }, 7 | DiagnosticSignHint = { text = "", texthl = "DiagnosticSignHint" }, 8 | DapBreakpoint = { text = "", texthl = "DebugSignBreakpoint" }, 9 | DapStopped = { text = "", texthl = "DebugSignStopped" }, 10 | DapBreakpointCondition = { text = "", texthl = "DebugSignBreakpointCondition" }, 11 | DapBreakpointRejected = { text = "", texthl = "DebugSignBreakpointRejected" }, 12 | DapLogPoint = { text = "", texthl = "DebugSignBreakpointLog" }, 13 | } 14 | for name, sign in pairs(signs) do 15 | -- sign.numhl = sign.texthl 16 | vim.fn.sign_define(name, sign) 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/dressing.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | require("dressing").setup({ 3 | input = { 4 | win_options = { 5 | winblend = 0 6 | } 7 | }, 8 | select = { 9 | win_options = { 10 | winblend = 0, 11 | }, 12 | get_config = function(opts) 13 | if opts.kind == "codeaction" then 14 | return { 15 | telescope = require("telescope.themes").get_cursor() 16 | } 17 | end 18 | end 19 | } 20 | }) 21 | end 22 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/gitsigns.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | require('gitsigns').setup({ 3 | preview_config = { 4 | border = "rounded", 5 | }, 6 | signs = { 7 | changedelete = { text = "┣"}, 8 | }, 9 | }) 10 | end 11 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/lsp_config.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | require('lspconfig.ui.windows').default_options.border = "rounded" 3 | end 4 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/mason-lspconfig.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | local mason_lspconfig = require("mason-lspconfig") 3 | mason_lspconfig.setup() 4 | 5 | local default_capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()) 6 | 7 | mason_lspconfig.setup_handlers({ 8 | function(server_name) 9 | require("lspconfig")[server_name].setup({ capabilities = default_capabilities }) 10 | end, 11 | }) 12 | end 13 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/mason.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | require("mason").setup({ 3 | ui = { 4 | border = "rounded", 5 | icons = { 6 | package_installed = "✓", 7 | package_uninstalled = "·", 8 | package_pending = "↻", 9 | }, 10 | } 11 | }) 12 | end 13 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/neo-tree.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | vim.g.neo_tree_remove_legacy_commands = true 3 | local keybindings = require("simonvic.keybindings") 4 | 5 | require("neo-tree").setup({ 6 | close_if_last_window = false, 7 | source_selector = { 8 | winbar = true, 9 | content_layout = "center", 10 | sources = { 11 | { source = "filesystem", display_name = "󰉓", }, 12 | { source = "buffers", display_name = "󰈢", }, 13 | { source = "git_status", display_name = "󰊢", }, 14 | }, 15 | separator = { left = "", right = "" }, 16 | separator_active = nil, 17 | }, 18 | enable_git_status = true, 19 | enable_diagnostics = true, 20 | default_component_configs = { 21 | container = { 22 | enable_character_fade = true 23 | }, 24 | indent = { 25 | indent_size = 2, 26 | padding = 1, 27 | with_markers = true, 28 | indent_marker = "│", 29 | last_indent_marker = "└", 30 | highlight = "NeoTreeIndentMarker", 31 | with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders 32 | expander_collapsed = "", 33 | expander_expanded = "", 34 | expander_highlight = "NeoTreeExpander", 35 | }, 36 | icon = { 37 | folder_closed = "", 38 | folder_open = "", 39 | folder_empty = "", 40 | -- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there 41 | -- then these will never be used. 42 | default = "", 43 | highlight = "NeoTreeFileIcon" 44 | }, 45 | modified = { 46 | symbol = "+", 47 | highlight = "NeoTreeModified", 48 | }, 49 | name = { 50 | trailing_slash = false, 51 | use_git_status_colors = true, 52 | highlight = "NeoTreeFileName", 53 | }, 54 | git_status = { 55 | symbols = { 56 | -- Change type 57 | added = "", 58 | modified = "", 59 | deleted = "", 60 | renamed = "", 61 | -- Status type 62 | untracked = "", 63 | ignored = "", 64 | unstaged = "", -- "", 65 | staged = "", 66 | conflict = "", 67 | } 68 | }, 69 | }, 70 | nesting_rules = {}, 71 | window = { 72 | position = "left", 73 | width = 40, 74 | mapping_options = { 75 | noremap = true, 76 | nowait = true, 77 | }, 78 | mappings = keybindings.plugins.neotree 79 | }, 80 | filesystem = { 81 | window = { 82 | mappings = keybindings.plugins.neotree_filesystem 83 | }, 84 | filtered_items = { 85 | visible = false, -- when true, they will just be displayed differently than normal items 86 | hide_dotfiles = true, 87 | hide_gitignored = false, 88 | hide_hidden = true, -- only works on Windows for hidden files/directories 89 | hide_by_name = {}, 90 | hide_by_pattern = {}, 91 | always_show = {}, 92 | never_show = {}, 93 | never_show_by_pattern = {}, 94 | }, 95 | follow_current_file = { 96 | enabled = true 97 | }, 98 | group_empty_dirs = true, 99 | hijack_netrw_behavior = "open_default", 100 | use_libuv_file_watcher = true, 101 | }, 102 | buffers = { 103 | follow_current_file = { 104 | enabled = true 105 | }, 106 | group_empty_dirs = true, 107 | show_unloaded = true, 108 | window = keybindings.plugins.neotree_buffers, 109 | }, 110 | git_status = { 111 | window = { 112 | position = "float", 113 | mappings = keybindings.plugins.neotree_gitstatus 114 | } 115 | } 116 | }) 117 | end 118 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/notify.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | local notify = require("notify") 3 | notify.setup({ 4 | stages = "slide", 5 | }) 6 | vim.notify = notify 7 | require("telescope").load_extension("notify") 8 | end 9 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/nvim-telescope.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | local actions = require("telescope.actions") 3 | require("telescope").setup({ 4 | defaults = { 5 | mappings = { 6 | i = { 7 | [""] = actions.close, 8 | [""] = actions.select_horizontal, 9 | [""] = actions.select_vertical, 10 | } 11 | } 12 | }, 13 | }) 14 | end 15 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/scrollbar.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | local c = require("simonvic.colorscheme").groups 3 | require("scrollbar").setup({ 4 | handle = { 5 | color = c.ScrollbarHandle.bg 6 | }, 7 | marks = { 8 | Search = { color = c.ScrollbarSearchHandle.fg }, 9 | Error = { color = c.ScrollbarErrorHandle.fg }, 10 | Warn = { color = c.ScrollbarWarnHandle.fg }, 11 | Info = { color = c.ScrollbarInfoHandle.fg }, 12 | Hint = { color = c.ScrollbarHintHandle.fg }, 13 | Misc = { color = c.ScrollbarMiscHandle.fg }, 14 | }, 15 | handlers = { 16 | cursor = false 17 | } 18 | }) 19 | end 20 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/snippets.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | require("luasnip").setup({ 3 | region_check_events = { "CursorMoved" } 4 | }) 5 | end 6 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/toggleterm.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | require("toggleterm").setup({ 3 | size = 10, 4 | shading_factor = 2, 5 | direction = "horizontal", 6 | highlights = { 7 | Normal = { link = "Normal" } 8 | }, 9 | float_opts = { 10 | border = "curved", 11 | highlights = { 12 | border = "Normal", 13 | background = "Normal", 14 | } 15 | }, 16 | winbar = { 17 | enabled = true, 18 | name_formatter = function(term) 19 | return term.name 20 | end 21 | }, 22 | }) 23 | end 24 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/treesitter.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | require("nvim-treesitter.configs").setup { 3 | ensure_installed = "all", 4 | highlight = { 5 | enable = true, 6 | }, 7 | indent = { 8 | enable = true, 9 | }, 10 | autotag = { 11 | enable = true, 12 | }, 13 | incremental_selection = { 14 | enable = true, 15 | keymaps = require("simonvic.keybindings").plugins.treesitter, 16 | }, 17 | } 18 | end 19 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/vimtex.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | vim.g.vimtex_view_general_viewer = "zathura" 3 | end 4 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/configs/window-picker.lua: -------------------------------------------------------------------------------- 1 | return function() 2 | require("window-picker").setup({ 3 | hint = "floating-big-letter", 4 | }) 5 | end 6 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/plugins/init.lua: -------------------------------------------------------------------------------- 1 | M = {} 2 | M.plugins = { 3 | --------------------------------------------------------------------------- 4 | -- LIBS / DEPENDENCIES 5 | { "nvim-lua/plenary.nvim" }, 6 | { "MunifTanjim/nui.nvim" }, 7 | { "kyazdani42/nvim-web-devicons" }, 8 | --------------------------------------------------------------------------- 9 | -- UI / UX 10 | { "rcarriga/nvim-notify", config = require("simonvic.plugins.configs.notify") }, 11 | { "nvim-telescope/telescope.nvim", config = require("simonvic.plugins.configs.nvim-telescope") }, 12 | { "stevearc/dressing.nvim", config = require("simonvic.plugins.configs.dressing") }, 13 | { "akinsho/toggleterm.nvim", config = require("simonvic.plugins.configs.toggleterm") }, 14 | { "nvim-neo-tree/neo-tree.nvim", config = require("simonvic.plugins.configs.neo-tree"), branch = "v3.x", }, 15 | { "petertriho/nvim-scrollbar", config = require("simonvic.plugins.configs.scrollbar") }, 16 | { "s1n7ax/nvim-window-picker", config = require("simonvic.plugins.configs.window-picker") }, 17 | --------------------------------------------------------------------------- 18 | -- CODING 19 | { "nvim-treesitter/nvim-treesitter", config = require("simonvic.plugins.configs.treesitter"), run = ":TSUpdate", }, 20 | { "windwp/nvim-ts-autotag", after = "nvim-treesitter" }, 21 | { "hrsh7th/cmp-nvim-lsp" }, 22 | { "hrsh7th/cmp-buffer" }, 23 | { "hrsh7th/cmp-path" }, 24 | { "L3MON4D3/LuaSnip", config = require("simonvic.plugins.configs.snippets") }, 25 | { "saadparwaiz1/cmp_luasnip" }, 26 | { "hrsh7th/nvim-cmp", config = require("simonvic.plugins.configs.cmp") }, 27 | { "williamboman/mason.nvim", config = require("simonvic.plugins.configs.mason") }, 28 | { "neovim/nvim-lspconfig", config = require("simonvic.plugins.configs.lsp_config") }, 29 | { "williamboman/mason-lspconfig.nvim", config = require("simonvic.plugins.configs.mason-lspconfig"), after = "nvim-lspconfig", }, 30 | { "terrortylor/nvim-comment", config = require("simonvic.plugins.configs.comment") }, 31 | { "stevearc/aerial.nvim", config = require("simonvic.plugins.configs.aerial") }, 32 | { "windwp/nvim-autopairs", config = require("simonvic.plugins.configs.autopairs") }, 33 | { "lewis6991/gitsigns.nvim", config = require("simonvic.plugins.configs.gitsigns") }, 34 | { "echasnovski/mini.align", config = require("simonvic.plugins.configs.align"), version = false }, 35 | { "NvChad/nvim-colorizer.lua", config = require("simonvic.plugins.configs.colorizer") }, 36 | { "max397574/colortils.nvim", config = require("simonvic.plugins.configs.colortils") }, 37 | --------------------------------------------------------------------------- 38 | -- ADVANCED CODING 39 | { "mfussenegger/nvim-dap", config = require("simonvic.plugins.configs.debugger") }, 40 | { "rcarriga/nvim-dap-ui", config = require("simonvic.plugins.configs.dap_ui"), after = "nvim-dap", }, 41 | { "mfussenegger/nvim-jdtls" }, 42 | { "mrcjkb/rustaceanvim" }, 43 | { "lervag/vimtex", config = require("simonvic.plugins.configs.vimtex") }, 44 | --------------------------------------------------------------------------- 45 | -- COLORSCHEMES 46 | { "doums/darcula" }, 47 | { "gruvbox-community/gruvbox" }, 48 | } 49 | 50 | M.with_vimplug = function() 51 | vim.call("plug#begin") 52 | for _, plugin in ipairs(M.plugins) do 53 | if plugin[1] then 54 | local plug_args = {} 55 | if plugin.run then plug_args["do"] = plugin.run end 56 | if plugin.branch then plug_args["branch"] = plugin.branch end 57 | if plugin.tag then plug_args["tag"] = plugin.tag end 58 | if next(plug_args) then 59 | vim.fn["plug#"](plugin[1], plug_args) 60 | else 61 | vim.fn["plug#"](plugin[1]) 62 | end 63 | end 64 | end 65 | vim.call("plug#end") 66 | for _, v in ipairs(M.plugins) do 67 | if v.config then 68 | v.config() 69 | end 70 | end 71 | end 72 | 73 | M.with_packer = function() 74 | table.insert(M.plugins, { "wbthomason/packer.nvim" }) 75 | return require("packer").startup(M.plugins) 76 | end 77 | 78 | M.with_lazy = function() 79 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 80 | if not vim.loop.fs_stat(lazypath) then 81 | vim.fn.system({ 82 | "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath, 83 | }) 84 | end 85 | vim.opt.rtp:prepend(lazypath) 86 | require("lazy").setup(M.plugins, { 87 | ui = { border = "rounded", }, 88 | checker = { 89 | enabled = true, 90 | notify = true, 91 | frequency = 3600, 92 | }, 93 | }) 94 | end 95 | 96 | return M 97 | -------------------------------------------------------------------------------- /.config/nvim/lua/simonvic/settings.lua: -------------------------------------------------------------------------------- 1 | local vim = vim 2 | vim.g.loaded_netrw = 1 3 | vim.g.loaded_netrwPlugin = 1 4 | local opt = vim.opt 5 | M = {} 6 | 7 | -------------------------------------------------------------------------------- 8 | -- BEHAVIOUR 9 | opt.wrap = false 10 | opt.mouse = "a" 11 | opt.clipboard = "unnamedplus" 12 | opt.splitright = true 13 | opt.splitbelow = true 14 | opt.splitkeep = "cursor" 15 | opt.scrolloff = 8 16 | 17 | opt.undofile = true 18 | 19 | -- CASE 20 | opt.ignorecase = true 21 | opt.smartcase = true 22 | opt.wildignorecase = true 23 | opt.infercase = true 24 | 25 | -- INDENTATION 26 | opt.tabstop = 4 27 | opt.shiftwidth = 4 28 | opt.smartindent = true 29 | opt.expandtab = false 30 | opt.copyindent = true 31 | opt.preserveindent = true 32 | 33 | opt.completeopt = "menuone,noinsert,noselect" 34 | opt.backspace = "indent,eol,start,nostop" 35 | 36 | -- fold 37 | opt.foldlevel = 69 38 | opt.foldmethod = "expr" 39 | opt.foldexpr = "nvim_treesitter#foldexpr()" 40 | 41 | -------------------------------------------------------------------------------- 42 | -- APPEARANCE 43 | opt.colorcolumn = "80" 44 | opt.shortmess:append("c") 45 | opt.cursorline = true 46 | opt.termguicolors = true 47 | 48 | opt.showcmdloc = "statusline" 49 | 50 | opt.list = false 51 | opt.listchars = { 52 | eol = "¬", 53 | tab = "> ", 54 | trail = "⋅", 55 | extends = ">", 56 | precedes = "<", 57 | space = "⋅", 58 | } 59 | 60 | opt.fillchars = { 61 | fold = " ", 62 | foldopen = "", 63 | foldclose = "", 64 | eob = " ", 65 | } 66 | 67 | -- STATUSCOLUMN (gutter) 68 | opt.statuscolumn = "" 69 | .. "%C" -- folds 70 | .. "%3l" -- numbers 71 | .. " " -- spacing 72 | .. "%-3r" -- relative numbers 73 | .. "%s" -- signs 74 | 75 | -- NUMBERS 76 | opt.number = true 77 | opt.relativenumber = true 78 | 79 | -- SIGNS 80 | opt.signcolumn = "auto:9" 81 | 82 | 83 | -- FOLDS 84 | opt.foldcolumn = "auto:9" 85 | function BuildFoldText() 86 | local fn = vim.fn 87 | local v = vim.v 88 | local onetab = fn.strpart(" ", 0, opt.tabstop:get()) 89 | local startline = fn.substitute(fn.getline(v.foldstart), "\t", onetab, "g") 90 | local endline = fn.substitute(fn.getline(v.foldend), "\t", "", "g") 91 | return startline .. "…" .. endline 92 | end 93 | 94 | opt.foldtext = "v:lua.BuildFoldText()" 95 | 96 | -- CURSOR SHAPE 97 | opt.guicursor = { 98 | "a:blinkon100", -- all 99 | "n:block", -- normal 100 | "sm:block", -- showmatch in insert mode 101 | "i:ver25", -- insert 102 | "c:ver25", -- command line normal 103 | "ci:ver25", -- command line insert 104 | "v:block", -- visual 105 | "ve:block", -- command line insert 106 | "r:hor50", -- replace 107 | "cr:hor50", -- command line replace 108 | "o:hor50-blinkon0", -- operator pending 109 | } 110 | 111 | -- RESTORE CURSOR ON EXIT 112 | vim.api.nvim_create_augroup("resetCursor", { clear = true }) 113 | vim.api.nvim_create_autocmd("VimLeave", { 114 | group = "resetCursor", 115 | command = "set guicursor=a:ver25" 116 | }) 117 | 118 | -- TABLINE 119 | opt.showtabline = 1 120 | function BuildTabLine() 121 | local s = "" 122 | for i = 1, vim.fn.tabpagenr("$"), 1 do 123 | if i == vim.fn.tabpagenr() then 124 | s = s .. "%#TabLineSel#" 125 | else 126 | s = s .. "%#TabLine#" 127 | end 128 | s = s .. "%" .. i .. "T %{" .. i .. "} %" .. i .. "X " 129 | end 130 | s = s .. "%#TabLineFill#%T" 131 | return s 132 | end 133 | 134 | opt.tabline = "%!v:lua.BuildTabLine()" 135 | 136 | -- WINDOW LINE 137 | opt.winbar = "" 138 | .. "%=" -- padding 139 | .. "%h" -- help flag 140 | .. "%m" -- modified flag 141 | .. "%r" -- readonly flag 142 | .. "%f" -- file (relative to cwd) 143 | .. "%=" -- padding 144 | 145 | -- COMMAND LINE 146 | opt.cmdheight = 1 147 | 148 | -- STATUS LINE 149 | 150 | opt.laststatus = 3 151 | 152 | local modes_aliases = { 153 | ["n"] = "NORMAL", 154 | ["no"] = "NORMAL...", 155 | ["nov"] = "NORMAL... (v)", 156 | ["noV"] = "NORMAL... (V)", 157 | ["no"] = "NORMAL... (^V)", 158 | ["niI"] = "NORMAL (INSERT)", 159 | ["niR"] = "NORMAL (REPLACE)", 160 | ["niV"] = "NORMAL (VISUAL)", 161 | ["v"] = "VISUAL", 162 | ["V"] = "VISUAL LINE", 163 | [""] = "VISUAL BLOCK", 164 | ["s"] = "SELECT", 165 | ["S"] = "SELECT LINE", 166 | [""] = "SELECT BLOCK", 167 | ["i"] = "INSERT", 168 | ["ic"] = "INSERT COMPLETITION", 169 | ["ix"] = "INSERT (x)", 170 | ["R"] = "REPLACE", 171 | ["Rc"] = "REPLACE COMPLETITION", 172 | ["Rv"] = "REPLACE VIRTUAL", 173 | ["Rx"] = "REPLACE (x)", 174 | ["c"] = "COMMAND", 175 | ["cv"] = "COMMAND (v)", 176 | ["ce"] = "COMMAND (r)", 177 | ["r"] = "PROMPT", 178 | ["rm"] = "PROMPT (m)", 179 | ["r?"] = "PROMPT (?)", 180 | ["!"] = "SHELL", 181 | ["t"] = "TERM INSERT", 182 | ["nt"] = "TERM NORMAL", 183 | } 184 | 185 | local function build_status_line_mode() 186 | local mode = vim.api.nvim_get_mode().mode 187 | return string.format("[ %s ]", modes_aliases[mode] or mode, mode) 188 | end 189 | 190 | local function get_diagnostic_sign_text(sign_name) 191 | return "%#" .. sign_name .. "#" .. vim.fn.sign_getdefined(sign_name)[1].text .. "%*" 192 | end 193 | 194 | local function build_status_line_diagnostics() 195 | local clients = vim.lsp.buf_get_clients() 196 | if #clients == 0 then 197 | return "" 198 | end 199 | local output = " |" 200 | for _, lsp in pairs(vim.lsp.buf_get_clients()) do 201 | output = output .. string.format(" %s", lsp.name) 202 | end 203 | local diag = vim.diagnostic 204 | local e = get_diagnostic_sign_text("DiagnosticSignError") .. #diag.get(0, { severity = diag.severity.ERROR }) 205 | local w = get_diagnostic_sign_text("DiagnosticSignWarn") .. #diag.get(0, { severity = diag.severity.WARN }) 206 | local i = get_diagnostic_sign_text("DiagnosticSignInfo") .. #diag.get(0, { severity = diag.severity.INFO }) 207 | local h = get_diagnostic_sign_text("DiagnosticSignHint") .. #diag.get(0, { severity = diag.severity.HINT }) 208 | output = output .. string.format(" %s %s %s %s", e, w, i, h) 209 | return output; 210 | end 211 | 212 | local function build_status_line_git_branch() 213 | local branch = vim.g.gitsigns_head 214 | if branch then 215 | return " | " .. branch 216 | end 217 | return "" 218 | end 219 | 220 | function BuildStatusLine() 221 | return "" 222 | .. " " .. build_status_line_mode() -- mode 223 | .. " [%S]" -- command 224 | .. "%w" -- preview 225 | .. "%q" -- quickfix/location list 226 | .. "%=" -- filling 227 | .. " %c:%l" -- column:line 228 | .. " | %{&ff}" -- file format 229 | .. " | %{''.(&fenc!=''?&fenc:&enc).''}" -- encoding 230 | .. " | %Y" -- file type 231 | .. build_status_line_diagnostics() -- diagnostics 232 | .. build_status_line_git_branch() -- git branch 233 | .. " " -- Some padding 234 | end 235 | 236 | opt.statusline = "%!luaeval('BuildStatusLine()')" 237 | 238 | 239 | -- DIAGNOSTICS 240 | vim.diagnostic.config({ 241 | underline = true, 242 | virtual_text = false, 243 | signs = false, 244 | float = { 245 | border = "rounded", 246 | header = "", 247 | prefix = "• " 248 | } 249 | }) 250 | local lsp = vim.lsp 251 | local handlers = lsp.handlers 252 | local winopts = { border = "rounded" } 253 | handlers["textDocument/signatureHelp"] = lsp.with(handlers.signature_help, winopts) 254 | handlers["textDocument/hover"] = lsp.with(handlers.hover, winopts) 255 | handlers["textDocument/codeAction"] = lsp.with(handlers.code_action, winopts) 256 | -- ["textDocument/rename"] 257 | -- ["workspace/applyEdit"] 258 | -- ["language/status"] 259 | -- 260 | 261 | return M 262 | -------------------------------------------------------------------------------- /.config/picom/picom.conf: -------------------------------------------------------------------------------- 1 | ################################# 2 | # Shadows # 3 | ################################# 4 | shadow = true; 5 | shadow-radius = 20; 6 | shadow-opacity = 0.8; 7 | shadow-offset-x = -15; 8 | shadow-offset-y = -15; 9 | # shadow-red = 0 10 | # shadow-green = 0 11 | # shadow-blue = 0 12 | # shadow-color = "#000000" 13 | shadow-exclude = [ 14 | # "name = 'Notification'", 15 | # "name = 'polybar_main'", 16 | # "name = 'polybar_secondary'", 17 | # "name = 'polybar_tertiary'", 18 | # "name = 'polybar_tray'", 19 | # "class_g = 'i3-frame'", 20 | "class_g = 'Conky'", 21 | "class_g ?= 'Notify-osd'", 22 | "class_g = 'Cairo-clock'", 23 | "_GTK_FRAME_EXTENTS@:c" 24 | ]; 25 | # shadow-exclude-reg = "" 26 | # xinerama-shadow-crop = false 27 | 28 | 29 | ################################# 30 | # Fading # 31 | ################################# 32 | 33 | 34 | fading = false; 35 | fade-in-step = 0.02; 36 | fade-out-step = 0.02; 37 | fade-delta = 5; 38 | # fade-exclude = [] 39 | # no-fading-openclose = false 40 | # no-fading-destroyed-argb = false 41 | 42 | 43 | ################################# 44 | # Transparency / Opacity # 45 | ################################# 46 | 47 | frame-opacity = 1.0; 48 | active-opacity = 1.0 49 | inactive-opacity = 1.0; 50 | inactive-opacity-override = false; 51 | inactive-dim = 0.0; 52 | focus-exclude = [ "class_g = 'Cairo-clock'" ]; 53 | # inactive-dim-fixed = 1.0 54 | # opacity-rule = [] 55 | 56 | 57 | ################################# 58 | # Corners # 59 | ################################# 60 | 61 | corner-radius = 10; 62 | rounded-corners-exclude = [ 63 | # "window_type = 'dock'", 64 | "window_type = 'desktop'" 65 | ]; 66 | 67 | 68 | ################################# 69 | # Background-Blurring # 70 | ################################# 71 | 72 | blur-method = "dual_kawase"; 73 | blur-size = 10; 74 | blur-deviation = false; 75 | blur-strength = 20; 76 | 77 | # blur-background = false 78 | # blur-background-frame = false 79 | # blur-background-fixed = false 80 | blur-kern = "5x5gaussian"; 81 | 82 | blur-background-exclude = [ 83 | # "name = 'polybar_main'", 84 | # "name = 'polybar_secondary'", 85 | # "name = 'polybar_tertiary'", 86 | # "name = 'polybar_tray'", 87 | "window_type = 'desktop'", 88 | "_GTK_FRAME_EXTENTS@:c" 89 | ]; 90 | 91 | ################################# 92 | # General Settings # 93 | ################################# 94 | 95 | # daemon = false; 96 | backend = "glx"; 97 | vsync = false; 98 | # dbus = false 99 | mark-wmwin-focused = true; 100 | mark-ovredir-focused = true; 101 | detect-rounded-corners = true; 102 | detect-client-opacity = true; 103 | # use-ewmh-active-win = false 104 | # unredir-if-possible = true; 105 | # unredir-if-possible-delay = 0 106 | # unredir-if-possible-exclude = [] 107 | detect-transient = true; 108 | detect-client-leader = false; 109 | # resize-damage = 1; 110 | # invert-color-include = [] 111 | glx-no-stencil = true; 112 | # glx-no-rebind-pixmap = false; 113 | use-damage = true; 114 | # xrender-sync-fence = false 115 | # glx-fshader-win = "" 116 | # force-win-blend = false 117 | # no-ewmh-fullscreen = false; 118 | # max-brightness = 1.0 119 | # transparent-clipping = false; 120 | log-level = "warn"; 121 | # log-file = "/path/to/your/log/file" 122 | # show-all-xerrors = false 123 | # write-pid-path = "/path/to/your/log/file" 124 | 125 | # Window type settings 126 | # 127 | # 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: 128 | # "unknown", "desktop", "dock", "toolbar", "menu", "utility", 129 | # "splash", "dialog", "normal", "dropdown_menu", "popup_menu", 130 | # "tooltip", "notification", "combo", and "dnd". 131 | # 132 | # Following per window-type options are available: :: 133 | # 134 | # fade, shadow::: 135 | # Controls window-type-specific shadow and fade settings. 136 | # 137 | # opacity::: 138 | # Controls default opacity of the window type. 139 | # 140 | # focus::: 141 | # Controls whether the window of this type is to be always considered focused. 142 | # (By default, all window types except "normal" and "dialog" has this on.) 143 | # 144 | # full-shadow::: 145 | # Controls whether shadow is drawn under the parts of the window that you 146 | # normally won't be able to see. Useful when the window has parts of it 147 | # transparent, and you want shadows in those areas. 148 | # 149 | # redir-ignore::: 150 | # Controls whether this type of windows should cause screen to become 151 | # redirected again after been unredirected. If you have unredir-if-possible 152 | # set, and doesn't want certain window to cause unnecessary screen redirection, 153 | # you can set this to `true`. 154 | # 155 | wintypes: { 156 | tooltip = { 157 | fade = true; 158 | shadow = true; 159 | opacity = 0.9; 160 | focus = false; 161 | }; 162 | dock = { 163 | shadow = true; 164 | } 165 | dnd = { 166 | shadow = false; 167 | } 168 | popup_menu = { 169 | opacity = 0.8; 170 | } 171 | dropdown_menu = { 172 | opacity = 0.8; 173 | } 174 | notification = { 175 | fade = true; 176 | shadow = true; 177 | opacity = 1.0; 178 | focus = false; 179 | }; 180 | }; 181 | 182 | -------------------------------------------------------------------------------- /.config/polybar/config.ini: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Made by 3 | # _ _ 4 | # (_) (_) 5 | # ___ _ ____ ___ ____ _ _ _ ____ 6 | # /___)| || \ / _ \ | _ \ | | | || | / ___) 7 | #|___ || || | | || |_| || | | | \ V / | |( (___ 8 | #(___/ |_||_|_|_| \___/ |_| |_| \_/ |_| \____) 9 | # 10 | # Check updates and give a look at my dotfiles here: 11 | # https://github.com/simonvic/dotfiles 12 | # 13 | ############################################################################### 14 | 15 | ############################################################################### 16 | # SETTINGS 17 | [settings] 18 | screenchange-reload = false 19 | compositing-background = source 20 | compositing-foreground = over 21 | compositing-overline = over 22 | compositing-underline = over 23 | compositing-border = over 24 | pseudo-transparency = false 25 | #fallbacks 26 | #format-foreground = 27 | #format-background = 28 | #format-underline = 29 | #format-overline = 30 | #format-spacing = 31 | #format-padding = 32 | #format-margin = 33 | #format-offset = 34 | 35 | [global/wm] 36 | margin-top = 0 37 | margin-bottom = 0 38 | 39 | ############################################################################### 40 | # VARIABLES 41 | [colors] 42 | #background = ${xrdb:color0:#222} 43 | background = #55000000 44 | foreground = #FFFFFF 45 | foreground-dark = #555 46 | primary = #F0544C 47 | secondary = #E60053 48 | alert = #edd311 49 | warning = #ed9111 50 | critical = #FF4543 51 | transparent = #00000000 52 | 53 | [dimensions] 54 | horizontal-gap = 20 55 | vertical-gap = 20 56 | width = 100%:-40 57 | height = 35 58 | border-radius = 0 59 | 60 | ############################################################################### 61 | # BARS 62 | 63 | # BASE 64 | [bar/base] 65 | enable-ipc = true 66 | font-0 = "Lato:size=12;4" 67 | font-1 = "nerdfont:size=12;4" 68 | cursor-click = pointer 69 | cursor-scroll = ns-resize 70 | dim-value = 1.0 71 | locale = it_IT.UTF-8 72 | dpi-x = 0 73 | dpi-y = 0 74 | click-left = 75 | click-middle = 76 | click-right = 77 | scroll-up = 78 | scroll-down = 79 | double-click-left = 80 | double-click-middle = 81 | double-click-right = 82 | override-redirect = true 83 | width = ${dimensions.width} 84 | height = ${dimensions.height} 85 | offset-x = ${dimensions.horizontal-gap} 86 | offset-y = ${dimensions.vertical-gap} 87 | background = ${colors.background} 88 | foreground = ${colors.foreground} 89 | radius-top = ${dimensions.border-radius} 90 | radius-bottom = ${dimensions.border-radius} 91 | fixed-center = true 92 | bottom = false 93 | overline-size = 0 94 | overline-color = ${colors.primary} 95 | underline-size = 2 96 | underline-color = ${colors.primary} 97 | border-size = 0 98 | border-color = ${colors.transparent} 99 | padding-left = 2 100 | padding-right = 2 101 | separator = "" 102 | module-margin-left = 1 103 | module-margin-right = 1 104 | 105 | # TRAY 106 | [bar/tray] 107 | inherit = bar/base 108 | wm-name = polybar_tray 109 | bottom = true 110 | width = 35 111 | offset-y = 10 112 | offset-x = 100%:-45 113 | modules-right = dummy 114 | background = ${colors.background} 115 | tray-position = right 116 | tray-detached = false 117 | tray-maxsize = 18 118 | tray-background = ${colors.background} 119 | tray-offset-x = 0 120 | tray-offset-y = 0 121 | tray-padding = 0 122 | tray-scale = 1.0 123 | 124 | [module/systray] 125 | type = internal/tray 126 | tray-size = 22 127 | tray-padding = 4 128 | tray-spacing = 2 129 | tray-background = ${colors.background} 130 | format-background = ${colors.background} 131 | 132 | # MAIN 133 | [bar/main] 134 | inherit = bar/base 135 | wm-name = polybar_main 136 | wm-restack = i3 137 | modules-left = i3 138 | modules-center = date 139 | modules-right = wakelock bluetooth wireless-network wired-network redshift backlight pulseaudio battery bar-switch-secondary 140 | 141 | # SECONDARY 142 | [bar/secondary] 143 | inherit = bar/base 144 | wm-name = polybar_secondary 145 | modules-left = xwindow 146 | modules-right = wakelock wireless-network-extended wired-network redshift-extended backlight-extended pulseaudio-extended battery-extended powermenu bar-switch-secondary 147 | module-margin-left = 10 148 | module-margin-right = 1 149 | 150 | # TERTIARY 151 | [bar/tertiary] 152 | inherit = bar/base 153 | wm-name = polybar_tertiary 154 | bottom = true 155 | width = 850 156 | offset-y = 10 157 | offset-x = 50%:-425 158 | separator = "|" 159 | module-margin-right = 4 160 | module-margin-left = 4 161 | modules-center = xkeyboard aur_updates filesystem memory cpu fan temperature 162 | 163 | 164 | ############################################################################### 165 | # MODULES 166 | 167 | [module/i3] 168 | type = internal/i3 169 | pin-workspaces = true 170 | strip-wsnumbers = true 171 | index-sort = true 172 | enable-click = true 173 | enable-scroll = false 174 | wrapping-scroll = false 175 | reverse-scroll = false 176 | fuzzy-match = true 177 | #ws-icon-0 = "1;A" 178 | #ws-icon-1 = "2;B" 179 | #ws-icon-2 = "3;C" 180 | #ws-icon-3 = "4;D" 181 | #ws-icon-4 = "5;E" 182 | ws-icon-default = "X" 183 | format = 184 | label-mode = %mode% 185 | label-mode-padding = 2 186 | label-mode-background = ${colors.primary} 187 | label-focused = %index% 188 | label-focused-foreground = ${colors.foreground} 189 | label-focused-background = ${colors.background} 190 | label-focused-underline = ${colors.primary} 191 | label-focused-padding = 2 192 | label-unfocused = %index% 193 | label-unfocused-padding = 2 194 | label-visible = %index% 195 | label-visible-underline = ${colors.secondary} 196 | label-visible-padding = 2 197 | label-urgent = %index% 198 | label-urgent-foreground = ${colors.foreground} 199 | label-urgent-background = ${colors.primary} 200 | label-urgent-padding = 2 201 | label-separator = 202 | label-separator-padding = 2 203 | label-separator-foreground = ${colors.primary} 204 | 205 | [module/date] 206 | type = internal/date 207 | interval = 1 208 | date = "%d/%m" 209 | date-alt = "󰸗 %A, %d %B(%m) %Y" 210 | time = "%H:%M%" 211 | time-alt = "󰅐 %H:%M:%S" 212 | format-prefix = 213 | format-prefix-foreground = ${colors.foreground} 214 | #format-underline = #0a6cf5 215 | label = %date% %time% 216 | 217 | [module/wireless-network] 218 | type = internal/network 219 | interface = wlp3s0 220 | interval = 3.0 221 | #ping-interval = 3 222 | accumulate-stats = false 223 | unknown-as-up = true 224 | format-connected = 225 | format-disconnected = 226 | format-packetloss = 227 | label-connected = %essid% 228 | label-connected-foreground = ${colors.foreground} 229 | label-disconnected = 230 | label-disconnected-foreground = ${colors.foreground} 231 | label-packetloss = %essid% 232 | label-packetloss-foreground = ${colors.foreground} 233 | ramp-signal-0 = 󰤯 234 | ramp-signal-1 = 󰤟 235 | ramp-signal-2 = 󰤢 236 | ramp-signal-3 = 󰤥 237 | ramp-signal-4 = 󰤨 238 | ramp-signal-5 = 󰤨 239 | animation-packetloss-0 = pl0 240 | animation-packetloss-0-foreground = ${colors.warning} 241 | animation-packetloss-1 = pl1 242 | animation-packetloss-1-foreground = ${colors.warning} 243 | animation-packetloss-framerate = 500 244 | 245 | [module/wireless-network-extended] 246 | inherit = module/wireless-network 247 | format-connected = 248 | label-connected = %ifname% %local_ip% | %essid% 󰇚 %downspeed% 󰕒 %upspeed% 249 | 250 | [module/wired-network] 251 | type = internal/network 252 | interface = enp2s0 253 | interval = 3.0 254 | #ping-interval = 3 255 | accumulate-stats = false 256 | unknown-as-up = true 257 | format-connected = 258 | format-disconnected = 259 | format-packetloss = 260 | label-connected = "󰈀" 261 | label-connected-foreground = ${colors.foreground} 262 | label-disconnected = 263 | label-disconnected-foreground = ${colors.foreground} 264 | label-packetloss = %essid% 265 | label-packetloss-foreground = ${colors.foreground} 266 | ramp-signal-0 =  267 | ramp-signal-1 =  268 | ramp-signal-2 =  269 | ramp-signal-3 =  270 | ramp-signal-4 =  271 | ramp-signal-5 =  272 | animation-packetloss-0 = pl0 273 | animation-packetloss-0-foreground = ${colors.warning} 274 | animation-packetloss-1 = pl1 275 | animation-packetloss-1-foreground = ${colors.warning} 276 | animation-packetloss-framerate = 500 277 | 278 | [module/xwindow] 279 | type = internal/xwindow 280 | format =