├── LICENSE
├── README.md
├── backup.sh
├── dunst
└── .config
│ └── dunst
│ ├── dunst_test.sh
│ └── dunstrc
├── eww
└── .config
│ └── eww
│ ├── eww.scss
│ ├── eww.yuck
│ ├── eww.yuck.save
│ ├── images
│ └── icons
│ │ ├── battery.svg
│ │ ├── battery_charging.svg
│ │ ├── camera.svg
│ │ ├── chrome.svg
│ │ ├── clock.svg
│ │ ├── code.svg
│ │ ├── command.svg
│ │ ├── cpu.svg
│ │ ├── disc.svg
│ │ ├── loop.svg
│ │ ├── next_song.svg
│ │ ├── pause.svg
│ │ ├── play.svg
│ │ ├── previous_song.svg
│ │ ├── settings.svg
│ │ ├── shuffle.svg
│ │ ├── terminal.svg
│ │ ├── video.svg
│ │ ├── volume-x.svg
│ │ ├── volume.svg
│ │ ├── wifi.svg
│ │ └── wifi_off.svg
│ └── scripts
│ ├── check_net
│ ├── getvol
│ ├── music
│ ├── popout
│ ├── screenshot
│ └── select_layout
├── extra
├── wallpaper.png
└── wallpaper.svg
├── fish
└── .config
│ └── fish
│ └── config.fish
├── git
└── .config
│ └── git
│ ├── config
│ └── template
│ └── hooks
│ └── commit-msg
├── i3
├── .config
│ └── i3
│ │ └── config
└── .i3
│ └── code.json
├── install.sh
├── kitty
└── .config
│ └── kitty
│ └── kitty.conf
├── neofetch
└── .config
│ └── neofetch
│ └── config.conf
├── nvim
└── .config
│ └── nvim
│ ├── init.vim
│ └── lua
│ └── plugins.lua
├── picom
└── .config
│ └── picom.conf
└── screenshots
├── 01.png
├── 02.png
├── 03.png
├── 04.png
└── 05.png
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Elizabeth Hazel Ainslie
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # My Dotfiles
2 |
3 | Collection of my linux system configs.
4 |
5 | > Use at your own risk, I am not responsible if you fuck up.
6 |
7 | ## Screnshots
8 |
9 | 
10 | 
11 | 
12 | 
13 |
14 | ## To be Paired With...
15 |
16 | - [My Startpage](https://github.com/LizAinslie/startpage)
17 | - [My Firefox Theme](https://github.com/LizAinslie/rice-firefox-theme)
18 | - [My Discord Theme](https://github.com/LizAinslie/rice-discord-theme)
19 | - [My Website Styles](https://github.com/LizAinslie/rice-browser-userstyles)
20 |
21 | ## Installation & Software used
22 |
23 | Below is the software I use and how to get it. Run the included [install script
24 | ](install.sh) to copy the required
25 | config files to their respective locations.
26 |
27 | **Packages:**
28 | | Package | Description |
29 | | --: | --- |
30 | | `fish` | Shell |
31 | | `kitty` | Terminal |
32 | | `i3-gaps-rounded-git` | WM. On the AUR |
33 | | `picom-ibhagwan-git` | Compositor. On the AUR |
34 | | `neofetch` | System stats in terminal |
35 | | `spectacle` | Screenshot tool. I wrote a custom wrapper |
36 | | `firefox` | Browser |
37 | | `feh` | Used to set wallpaper |
38 | | `dmenu` | Launcher |
39 | | `xclip` | For manipulating the clipboard |
40 | | `dunst` | Notification daemon |
41 | | `neovim` | Vim, a text editor |
42 | | `cava` | Terminal oscilloscope graph. On the AUR |
43 | | `eww` | The "bar" |
44 | | `ttf-firacode-nerd` | Patched Fira Code for nvim-tree |
45 |
46 | **Recommended Fonts:**
47 | - Fira Sans
48 | - Fira Mono
49 | - Fira Code
50 |
51 | ## License
52 |
53 | This code is licensed under the [MIT License](LICENSE), Copyright 2023 Elizabeth Hazel Ainslie.
54 |
--------------------------------------------------------------------------------
/backup.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # backup wallpaper
4 | cp ~/wallpaper.png ./extra/wallpaper.png
5 |
6 | # backup git configs
7 | cp -r ~/.config/git/* ./git/.config/git/
8 | # remove sensitive values from git config
9 | sed -i '/signingkey/d' ./git/.config/git/config
10 |
11 | # backup fish configs
12 | cp ~/.config/fish/config.fish ./fish/.config/fish/config.fish
13 |
14 | # backup neofetch configs
15 | cp -r ~/.config/neofetch/* ./neofetch/.config/neofetch
16 |
17 | # backup picom config
18 | cp ~/.config/picom.conf ./picom/.config/picom.conf
19 |
20 | # backup i3 config
21 | cp ~/.config/i3/config ./i3/.config/i3/config
22 | cp ~/.i3/* ./i3/.i3/
23 |
24 | # backup eww configs
25 | cp -r ~/.config/eww/* ./eww/.config/eww/
26 |
27 | # backup kitty config
28 | cp ~/.config/kitty/kitty.conf ./kitty/.config/kitty/kitty.conf
29 |
30 | # backup neovim configs
31 | cp -r ~/.config/nvim/* ./nvim/.config/nvim/
32 |
33 | # backup dunst configs
34 | cp -r ~/.config/dunst/* ./dunst/.config/dunst/
35 |
--------------------------------------------------------------------------------
/dunst/.config/dunst/dunst_test.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | notify-send "$@"
4 |
5 |
--------------------------------------------------------------------------------
/dunst/.config/dunst/dunstrc:
--------------------------------------------------------------------------------
1 | [global]
2 | ### Display ###
3 | monitor = 0
4 | follow = none
5 |
6 | ### Geometry ###
7 | width = (0, 600)
8 | height = 300
9 | origin = bottom-right
10 | offset = 10x50
11 | scale = 0
12 | notification_limit = 0
13 |
14 | ### Progress bar ###
15 | progress_bar = true
16 | progress_bar_height = 5
17 | progress_bar_frame_width = 1
18 | progress_bar_min_width = 150
19 | progress_bar_max_width = 300
20 | indicate_hidden = yes
21 | transparency = 0
22 | separator_height = 2
23 | padding = 8
24 | horizontal_padding = 8
25 | text_icon_padding = 0
26 | frame_width = 1
27 | frame_color = "#22272e"
28 | gap_size = 0
29 | separator_color = "#2d333b"
30 | sort = yes
31 |
32 | ### Text ###
33 | font = "Fira Sans 12"
34 | line_height = 12
35 | markup = full
36 |
37 | # The format of the message. Possible variables are:
38 | # %a appname
39 | # %s summary
40 | # %b body
41 | # %i iconname (including its path)
42 | # %I iconname (without its path)
43 | # %p progress value if set ([ 0%] to [100%]) or nothing
44 | # %n progress value if set without any extra characters
45 | # %% Literal %
46 |
47 | format = "%s: %b"
48 | alignment = left
49 | vertical_alignment = center
50 | show_age_threshold = 60
51 | ellipsize = middle
52 | ignore_newline = no
53 | stack_duplicates = true
54 | hide_duplicate_count = false
55 | show_indicators = yes
56 |
57 | ### Icons ###
58 | enable_recursive_icon_lookup = true
59 | icon_theme = Adwaita
60 | icon_position = left
61 | min_icon_size = 24
62 | max_icon_size = 24
63 | icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
64 |
65 | ### History ###
66 | sticky_history = yes
67 | history_length = 20
68 |
69 | ### Misc/Advanced ###
70 | dmenu = /usr/bin/dmenu -p dunst:
71 | browser = /usr/bin/xdg-open
72 | always_run_script = true
73 | title = Dunst
74 | class = Dunst
75 | corner_radius = 5
76 | ignore_dbusclose = false
77 | force_xinerama = false
78 |
79 | ### mouse
80 | mouse_right_click = close_current
81 | mouse_left_click = open_url, do_action, close_current
82 | mouse_middle_click = close_all
83 |
84 | [experimental]
85 | per_monitor_dpi = false
86 |
87 | [urgency_low]
88 | background = "#22272e"
89 | foreground = "#ffffff"
90 | timeout = 10
91 | # Icon for notifications with low urgency, uncomment to enable
92 | #default_icon = /path/to/icon
93 |
94 | [urgency_normal]
95 | background = "#22272e"
96 | foreground = "#ffffff"
97 | timeout = 10
98 | # Icon for notifications with normal urgency, uncomment to enable
99 | #default_icon = /path/to/icon
100 |
101 | [urgency_critical]
102 | background = "#22272e"
103 | foreground = "#ffffff"
104 | # frame_color = "#ff0000"
105 | timeout = 0
106 | # Icon for notifications with critical urgency, uncomment to enable
107 | #default_icon = /path/to/icon
108 |
109 | # Messages can be matched by
110 | # appname (discouraged, see desktop_entry)
111 | # body
112 | # category
113 | # desktop_entry
114 | # icon
115 | # match_transient
116 | # msg_urgency
117 | # stack_tag
118 | # summary
119 | #
120 | # and you can override the
121 | # background
122 | # foreground
123 | # format
124 | # frame_color
125 | # fullscreen
126 | # new_icon
127 | # set_stack_tag
128 | # set_transient
129 | # set_category
130 | # timeout
131 | # urgency
132 | # icon_position
133 | # skip_display
134 | # history_ignore
135 | # action_name
136 | # word_wrap
137 | # ellipsize
138 | # alignment
139 | # hide_text
140 | #
141 | # Shell-like globbing will get expanded.
142 | #
143 | # Instead of the appname filter, it's recommended to use the desktop_entry filter.
144 | # GLib based applications export their desktop-entry name. In comparison to the appname,
145 | # the desktop-entry won't get localized.
146 | #
147 | # SCRIPTING
148 | # You can specify a script that gets run when the rule matches by
149 | # setting the "script" option.
150 | # The script will be called as follows:
151 | # script appname summary body icon urgency
152 | # where urgency can be "LOW", "NORMAL" or "CRITICAL".
153 | #
154 | # NOTE: It might be helpful to run dunst -print in a terminal in order
155 | # to find fitting options for rules.
156 |
157 | # Disable the transient hint so that idle_threshold cannot be bypassed from the
158 | # client
159 | #[transient_disable]
160 | # match_transient = yes
161 | # set_transient = no
162 | #
163 | # Make the handling of transient notifications more strict by making them not
164 | # be placed in history.
165 | #[transient_history_ignore]
166 | # match_transient = yes
167 | # history_ignore = yes
168 |
169 | # fullscreen values
170 | # show: show the notifications, regardless if there is a fullscreen window opened
171 | # delay: displays the new notification, if there is no fullscreen window active
172 | # If the notification is already drawn, it won't get undrawn.
173 | # pushback: same as delay, but when switching into fullscreen, the notification will get
174 | # withdrawn from screen again and will get delayed like a new notification
175 | #[fullscreen_delay_everything]
176 | # fullscreen = delay
177 |
178 | #[script-test]
179 | # summary = "*script*"
180 | # script = dunst_test.sh
181 |
182 | #[ignore]
183 | # # This notification will not be displayed
184 | # summary = "foobar"
185 | # skip_display = true
186 |
187 | #[history-ignore]
188 | # # This notification will not be saved in history
189 | # summary = "foobar"
190 | # history_ignore = yes
191 |
192 | #[skip-display]
193 | # # This notification will not be displayed, but will be included in the history
194 | # summary = "foobar"
195 | # skip_display = yes
196 |
197 | #[signed_on]
198 | # appname = Pidgin
199 | # summary = "*signed on*"
200 | # urgency = low
201 |
202 | #[signed_off]
203 | # appname = Pidgin
204 | # summary = *signed off*
205 | # urgency = low
206 |
207 | #[says]
208 | # appname = Pidgin
209 | # summary = *says*
210 | # urgency = critical
211 |
212 | #[twitter]
213 | # appname = Pidgin
214 | # summary = *twitter.com*
215 | # urgency = normal
216 |
217 | #[stack-volumes]
218 | # appname = "some_volume_notifiers"
219 | # set_stack_tag = "volume"
220 |
221 | [spotify]
222 | appname = "Spotify"
223 |
224 | [image_uploader]
225 | summary = Image Uploader
226 | body = Uploaded: *
227 |
228 |
229 | # vim: ft=cfg
230 |
231 |
--------------------------------------------------------------------------------
/eww/.config/eww/eww.scss:
--------------------------------------------------------------------------------
1 | $background_base: #22272e;
2 | $background_accent: #2d333b;
3 |
4 | $theme: #a97594;
5 | $theme_text: saturate(lighten($theme, 10%), 40%);
6 |
7 | $muted: #373e47;
8 |
9 | .battery {
10 | &.charging {
11 | color: $theme_text;
12 | }
13 |
14 | .label {
15 | padding-left: 10px;
16 | }
17 | }
18 |
19 | .clock {
20 | all: unset;
21 | min-width: 100px;
22 | font-family: monospace;
23 |
24 | image {
25 | margin-right: 5px;
26 | }
27 |
28 | .separator {
29 | color: $theme_text;
30 | font-weight: 900;
31 | }
32 | }
33 |
34 | .network {
35 | font-weight: bold;
36 |
37 | .label {
38 | padding-right: 10px;
39 | }
40 | }
41 |
42 | .music_status {
43 | all: unset;
44 | font-weight: bold;
45 | font-family: cursive;
46 |
47 | .separator {
48 | font-weight: 900;
49 | color: $theme_text;
50 | }
51 |
52 | &:hover {
53 | background-color: $background_accent;
54 | }
55 | }
56 |
57 | .background {
58 | background-color: transparent;
59 | }
60 |
61 | .main {
62 | padding: 10px 10px 0 10px;
63 | }
64 |
65 | .panel {
66 | all: unset;
67 | background-color: $background_base;
68 | border-radius: 5px;
69 | color: #fff;
70 | padding: 5px 10px;
71 | }
72 |
73 | .button_panel {
74 | all: unset;
75 | font-weight: bold;
76 | background-color: $background_base;
77 | border-radius: 5px;
78 | color: #fff;
79 | }
80 |
81 | .btn {
82 | all: unset;
83 | padding: 5px 10px;
84 | background-color: transparent;
85 |
86 | &.active {
87 | background-color: $theme;
88 | }
89 |
90 | &:not(.active):hover {
91 | background-color: $background_accent;
92 | }
93 |
94 | &:first-child {
95 | border-top-left-radius: 5px;
96 | border-bottom-left-radius: 5px;
97 | }
98 |
99 | &:last-child {
100 | border-top-right-radius: 5px;
101 | border-bottom-right-radius: 5px;
102 | }
103 | }
104 |
105 | .metric {
106 | all: unset;
107 | font-weight: bold;
108 | background-color: $background_base;
109 | border-radius: 5px;
110 | color: #fff;
111 |
112 | .label {
113 | padding: 5px 10px;
114 | border-top-left-radius: 5px;
115 | border-bottom-left-radius: 5px;
116 | }
117 |
118 | .value {
119 | margin-right: -50px;
120 | }
121 |
122 |
123 | &.left {
124 | scale {
125 | margin-right: 0;
126 | margin-left: 3px;
127 | }
128 |
129 | .value {
130 | margin-right: 0;
131 | margin-left: -100px;
132 | }
133 | }
134 |
135 | scale {
136 | all: unset;
137 | margin-right: 3px;
138 |
139 | trough {
140 | all: unset;
141 | background-color: $background_accent;
142 | border-radius: 2px;
143 | min-height: 24px;
144 | min-width: 100px;
145 |
146 | slider {
147 | all: unset;
148 | }
149 |
150 | highlight {
151 | all: unset;
152 | background-color: $theme;
153 | color: #000000;
154 | border-radius: 2px;
155 | }
156 | }
157 | }
158 | }
159 |
160 | * {
161 | font-family: "Fira Sans", sans-serif;
162 | }
163 |
164 | .actions {
165 | background-color: $background_accent;
166 | border: 3px solid $background_base;
167 | border-radius: 5px;
168 | color: #ffffff;
169 | padding: 5px;
170 |
171 | .heading {
172 | font-size: 17px;
173 | font-weight: normal;
174 | padding-left: 5px;
175 | padding-right: 5px;
176 |
177 | &:not(:first-child) {
178 | margin-top: 10px;
179 | }
180 | }
181 |
182 | .action {
183 | all: unset;
184 | padding: 5px 10px;
185 | background-color: $background_base;
186 | border-radius: 5px;
187 | border: 2px solid transparent;
188 |
189 | &:hover {
190 | background-color: transparent;
191 | border: 2px solid $background_base;
192 | }
193 | }
194 | }
195 |
--------------------------------------------------------------------------------
/eww/.config/eww/eww.yuck:
--------------------------------------------------------------------------------
1 | ;;;;;;
2 | ; Battery Meter
3 | ;;;;;;
4 |
5 | (defvar battery_reveal false)
6 | (defwidget battery_meter []
7 | (eventbox
8 | :onhover "eww update battery_reveal=true"
9 | :onhoverlost "eww update battery_reveal=false"
10 | (box
11 | :class "metric left"
12 | :space-evenly false
13 | (revealer
14 | :transition "slideleft"
15 | :reveal {battery_reveal}
16 | :duration "350ms"
17 | (box :space-evenly false
18 | (scale
19 | :min 0
20 | :max 100
21 | :active false
22 | :flipped true
23 | :value {EWW_BATTERY.BAT0.capacity}
24 | )
25 | (label :class "value" :text "${EWW_BATTERY.BAT0.capacity}%")
26 | )
27 | )
28 | (box
29 | :class "label"
30 | (image
31 | :path "${"${EWW_BATTERY.BAT0.status}" == "Charging"
32 | ? "images/icons/battery_charging.svg"
33 | : "images/icons/battery.svg"}"
34 | :image-height 20 :image-width 20
35 | )
36 | )
37 | )
38 | )
39 | )
40 |
41 | (defwidget oldbatteryicon []
42 | (box :class "icon" :width 50
43 | (box :class "icon_inner" :width (EWW_BATTERY.BAT0.capacity / 2))
44 | )
45 | )
46 |
47 | ;;;;;;
48 | ; CPU Metric
49 | ;;;;;;
50 |
51 | (defvar cpu_reveal false)
52 | (defwidget cpu_meter []
53 | (eventbox
54 | :onhover "eww update cpu_reveal=true"
55 | :onhoverlost "eww update cpu_reveal=false"
56 | (box
57 | :class "metric left"
58 | :space-evenly false
59 | (revealer
60 | :transition "slideleft"
61 | :reveal {cpu_reveal}
62 | :duration "350ms"
63 | (box :space-evenly false
64 | (scale
65 | :min 0
66 | :max 100
67 | :active false
68 | :flipped true
69 | :value {EWW_CPU.avg}
70 | )
71 | (label :class "value" :text "${round(EWW_CPU.avg, 1)}%")
72 | )
73 | )
74 | (box
75 | :class "label"
76 | (image
77 | :path "images/icons/cpu.svg"
78 | :image-height 20 :image-width 20
79 | )
80 | )
81 | )
82 | )
83 | )
84 |
85 |
86 | ;;;;;;
87 | ; Workspace Switcher
88 | ;;;;;;
89 |
90 | (defvar workspaces "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]")
91 | (defpoll current_ws
92 | :interval "250ms"
93 | `i3-msg -t get_workspaces | jq -r '.[] | select(.focused).name'`)
94 | (defwidget workspace_switcher []
95 | (box :class "button_panel" :orientation "h"
96 | (for ws in workspaces
97 | (button
98 | :class "btn ${ws == current_ws ? "active" : ""}"
99 | :onclick "i3-msg workspace ${ws}"
100 | ws
101 | )
102 | )
103 | )
104 | )
105 |
106 | ;;;;;;
107 | ; Clock
108 | ;;;;;;
109 |
110 | (defpoll seconds :interval "1s" `date '+%S'`)
111 | (defpoll minutes :interval "1s" `date '+%M'`)
112 | (defpoll hours :interval "1m" `date '+%H'`)
113 |
114 | (defwidget clock []
115 | (box :class "panel clock"
116 | (image
117 | :path "images/icons/clock.svg"
118 | :image-width 20 :image-height 20
119 | )
120 | hours
121 | (label :text ":" :class "separator")
122 | minutes
123 | (label :text ":" :class "separator")
124 | seconds
125 | )
126 | )
127 |
128 | ;;;;;;
129 | ; Network Metric
130 | ;;;;;;
131 |
132 | (defpoll ssid
133 | :initial "Offline"
134 | :interval "5s" `scripts/check_net --stat`)
135 | (defpoll net_icon
136 | :initial "images/icons/wifi_off.svg"
137 | :interval "5s" `scripts/check_net --icon`)
138 | (defvar net_reveal false)
139 | (defwidget network []
140 | (eventbox
141 | :onhover "eww update net_reveal=true"
142 | :onhoverlost "eww update net_reveal=false"
143 | (box :class "panel network" :space-evenly false
144 | (revealer
145 | :transition "slideleft"
146 | :reveal {net_reveal}
147 | :duration "350ms"
148 | (label :text {ssid} :class "label")
149 | )
150 | (image :path net_icon :image-width 20 :image-height 20)
151 | )
152 | )
153 | )
154 |
155 | ;;;;;;
156 | ; Music
157 | ;;;;;;
158 |
159 | (defpoll song :interval "1s" `scripts/music --song`)
160 | (defpoll artist :interval "1s" `scripts/music --artist`)
161 | (defpoll shuffle_status :interval "250ms" `scripts/music --get-shuffle`)
162 | (defpoll play_status :interval "250ms" `scripts/music --status`)
163 | (defpoll loop_status :interval "250ms" `scripts/music --loop-get`)
164 | (defwidget music []
165 | (button :class "music_status panel" :onclick "scripts/popout music"
166 | (box :space-evenly false :spacing 5
167 | (image
168 | :path "images/icons/disc.svg"
169 | :image-width 20 :image-height 20
170 | )
171 | song
172 | (label :text "-" :class "separator")
173 | artist
174 | )
175 | )
176 | )
177 | (defwidget music_controls []
178 | (box :class "button_panel"
179 | (button
180 | :class "btn ${shuffle_status == "On" ? "active" : ""}"
181 | :onclick "scripts/music --shuffle"
182 | (image
183 | :path "images/icons/shuffle.svg"
184 | :image-width 20 :image-height 20
185 | )
186 | )
187 |
188 | (button :class "btn" :onclick "scripts/music --previous"
189 | (image
190 | :path "images/icons/previous_song.svg"
191 | :image-width 20 :image-height 20
192 | )
193 | )
194 |
195 | (button :class "btn" :onclick "scripts/music --toggle"
196 | (image
197 | :path "${play_status == "Playing"
198 | ? "images/icons/pause.svg"
199 | : "images/icons/play.svg"}"
200 | :image-width 20 :image-height 20
201 | )
202 | )
203 |
204 | (button :class "btn" :onclick "scripts/music --next"
205 | (image
206 | :path "images/icons/next_song.svg"
207 | :image-width 20 :image-height 20
208 | )
209 | )
210 |
211 | (button
212 | :class "btn ${loop_status == "Track" ? "active" : ""}"
213 | :onclick {loop_status == "Track"
214 | ? "scripts/music --loop-off"
215 | : "scripts/music --loop-on"}
216 | (image
217 | :path "images/icons/loop.svg"
218 | :image-width 20 :image-height 20
219 | )
220 | )
221 | )
222 | )
223 |
224 | ;;;;;;
225 | ; Static Metric (Deprecated)
226 | ;;;;;;
227 |
228 | (defwidget static_metric [value onchange]
229 | (box :orientation "h" :class "metric" :space-evenly false
230 | (box :class "label" (children))
231 | (scale
232 | :min 0
233 | :max 101
234 | :active {onchange != ""}
235 | :value value
236 | :onchange onchange
237 | )
238 | )
239 | )
240 |
241 | ;;;;;;
242 | ; Volume Control
243 | ;;;;;;
244 |
245 | ; A dynamic volume control that opens & closes with hover
246 | (defvar volume_reveal false)
247 | (defpoll volume :interval "50ms" `scripts/getvol`)
248 | (defwidget volume []
249 | (eventbox
250 | :onhover "eww update volume_reveal=true"
251 | :onhoverlost "eww update volume_reveal=false"
252 | (box
253 | :orientation "h"
254 | :class "metric left"
255 | :space-evenly false
256 | (revealer
257 | :transition "slideleft"
258 | :reveal {volume_reveal}
259 | :duration "350ms"
260 | (box :space-evenly false
261 | (scale
262 | :min 0
263 | :max 101
264 | :active true
265 | :flipped true
266 | :value {volume + 0}
267 | :onchange "wpctl set-volume @DEFAULT_SINK@ {}%"
268 | )
269 | (label :class "value" :text "${volume + 0}%")
270 | )
271 | )
272 | (box
273 | :class "label"
274 |
275 | (image
276 | :path {volume == 0
277 | ? "images/icons/volume-x.svg"
278 | : "images/icons/volume.svg"}
279 | :image-width 20
280 | :image-height 20
281 | )
282 | )
283 | )
284 | )
285 | )
286 |
287 | (defvar music_controls_reveal false)
288 | (defvar actions_open false)
289 | (defvar settings_open false)
290 | (defwindow bar :monitor 0 :windowtype "dock" :wm-ignore false :stacking "fg"
291 | :geometry (geometry
292 | :x "0%"
293 | :y "0%"
294 | :width "100%"
295 | :height "30px"
296 | :anchor "top center"
297 | )
298 | :reserve (struts
299 | :distance "30px"
300 | :side "top"
301 | )
302 | (centerbox :orientation "h"
303 | (box
304 | :class "main"
305 | :spacing "10"
306 | :space-evenly false
307 | :halign "start"
308 | (box
309 | :class "button_panel"
310 | (button
311 | :class "btn ${actions_open ? "active" : ""}"
312 | :onclick "scripts/popout actions"
313 | (image
314 | :path "images/icons/command.svg"
315 | :image-width 20 :image-height 20
316 | )
317 | )
318 | )
319 | (workspace_switcher)
320 | )
321 | (box :class "main" :spacing "10" :space-evenly false :hexpand true
322 | (music)
323 | (revealer
324 | :transition "slideright"
325 | :reveal {music_controls_reveal}
326 | :duration "350ms"
327 | (music_controls)
328 | )
329 | )
330 | (box :class "main" :spacing "10" :space-evenly false :halign "end"
331 | (volume)
332 | (network)
333 | (cpu_meter)
334 | (battery_meter)
335 | (clock)
336 | (box
337 | :class "button_panel"
338 | (button :class "btn"
339 | (image
340 | :path "images/icons/settings.svg"
341 | :image-width 20 :image-height 20
342 | )
343 | )
344 | )
345 | )
346 | )
347 | )
348 |
349 | (defwindow about :monitor 0
350 | :geometry (geometry
351 | :x "0%"
352 | :y "30px"
353 | :width "600px"
354 | :height "400px"
355 | :anchor "center"
356 | )
357 | (box :class "about" :space-evenly false
358 | (label :text "About this machine" :class "aboutHeading")
359 | )
360 | )
361 |
362 | (defwindow actions :monitor 0 :wm-ignore true :stacking "fg"
363 | :geometry (geometry
364 | :x "10px"
365 | :y "50px"
366 | :width "150px"
367 | :height "300px"
368 | :anchor "top left"
369 | )
370 |
371 | (box :class "actions" :orientation "v" :space-evenly false :spacing 5
372 | (label :text "Actions" :halign "start" :class "heading")
373 | (button :class "action" :hexpand true :onclick "google-chrome-stable &"
374 | (box :space-evenly false :spacing 5
375 | (image
376 | :path "images/icons/chrome.svg"
377 | :image-width 20 :image-height 20
378 | )
379 | "Open Chrome"
380 | )
381 | )
382 |
383 | (button :class "action" :hexpand true :onclick "kitty &"
384 | (box :space-evenly false :spacing 5
385 | (image
386 | :path "images/icons/terminal.svg"
387 | :image-width 20 :image-height 20
388 | )
389 | "New Terminal"
390 | )
391 | )
392 |
393 | (button :class "action" :hexpand true :onclick "scripts/screenshot &"
394 | (box :space-evenly false :spacing 5
395 | (image
396 | :path "images/icons/camera.svg"
397 | :image-width 20 :image-height 20
398 | )
399 | "Take Screenshot"
400 | )
401 | )
402 |
403 | (button :class "action" :hexpand true :onclick "peek &"
404 | (box :space-evenly false :spacing 5
405 | (image
406 | :path "images/icons/video.svg"
407 | :image-width 20 :image-height 20
408 | )
409 | "Record GIF"
410 | )
411 | )
412 |
413 |
414 | (label :text "Layouts" :halign "start" :class "heading")
415 |
416 | (button
417 | :class "action"
418 | :hexpand true
419 | :onclick "scripts/select_layout code"
420 | (box :space-evenly false :spacing 5
421 | (image
422 | :path "images/icons/code.svg"
423 | :image-width 20 :image-height 20
424 | )
425 | "Code"
426 | )
427 | )
428 |
429 | )
430 | )
431 |
432 |
433 |
--------------------------------------------------------------------------------
/eww/.config/eww/eww.yuck.save:
--------------------------------------------------------------------------------
1 | (defwidget battery_meter []
2 | (box :class "battery panel" :space-evenly false :spacing 10
3 | (image
4 | :path "${"${EWW_BATTERY.BAT0.status}" == "Charging"
5 | ? "images/icons/battery_charging.svg"
6 | : "images/icons/battery.svg"}"
7 | :image-height 20 :image-width 20)
8 | "${EWW_BATTERY.BAT0.capacity}%"
9 | )
10 | )
11 |
12 | (defwidget oldbatteryicon []
13 | (box :class "icon" :width 50
14 | (box :class "icon_inner" :width (EWW_BATTERY.BAT0.capacity / 2))
15 | )
16 | )
17 |
18 | (defvar workspaces "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]")
19 | (defpoll current_ws :interval "250ms" `i3-msg -t get_workspaces | jq -r '.[] | select(.focused).name'`)
20 |
21 | (defwidget workspace_switcher []
22 | (box :class "button_panel" :orientation "h"
23 | (for ws in workspaces
24 | (button :class "btn ${ws == current_ws ? "active" : ""}" :onclick "i3-msg workspace ${ws}"
25 | ws
26 | )
27 | )
28 | )
29 | )
30 |
31 | (defpoll minutes :interval "10s" `date '+%M'`)
32 | (defpoll hours :interval "10s" `date '+%H'`)
33 |
34 | (defwidget clock []
35 | (box :class "clock panel"
36 | hours
37 | (label :text ":" :class "separator")
38 | minutes
39 | )
40 | )
41 |
42 | (defpoll ssid :initial "Offline" :interval "5s" `scripts/check_net --stat`)
43 | (defpoll net_icon :initial "images/icons/wifi_off.svg" :interval "5s" `scripts/check_net --icon`)
44 |
45 | (defwidget network []
46 | (button :class "network panel" :onclick "nmcli networking ${ssid == "Offline" ? "on" : "off"}"
47 | (box :class "network_inner" :space-evenly false :spacing 5
48 | (image :path net_icon :image-width 20 :image-height 20)
49 | ssid
50 | )
51 | )
52 | )
53 |
54 | (defpoll song :interval "1s" `scripts/music --song`)
55 | (defpoll artist :interval "1s" `scripts/music --artist`)
56 | (defpoll shuffle_status :interval "250ms" `scripts/music --get-shuffle`)
57 | (defpoll play_status :interval "250ms" `scripts/music --status`)
58 | (defpoll loop_status :interval "250ms" `scripts/music --loop-get`)
59 |
60 | (defwidget music []
61 | (box :space-evenly false :spacing 10
62 | (box :class "button_panel"
63 | (button :class "btn ${shuffle_status == "On" ? "active" : ""}" :onclick "scripts/music --shuffle"
64 | (image :path "images/icons/shuffle.svg" :image-width 20 :image-height 20)
65 | )
66 |
67 | (button :class "btn" :onclick "scripts/music --previous"
68 | (image :path "images/icons/previous_song.svg" :image-width 20 :image-height 20)
69 | )
70 |
71 | (button :class "btn" :onclick "scripts/music --toggle"
72 | (image
73 | :path "${play_status == "Playing"
74 | ? "images/icons/pause.svg"
75 | : "images/icons/play.svg"}"
76 | :image-width 20 :image-height 20)
77 | )
78 |
79 | (button :class "btn" :onclick "scripts/music --next"
80 | (image :path "images/icons/next_song.svg" :image-width 20 :image-height 20)
81 | )
82 |
83 | (button
84 | :class "btn ${loop_status == "Track" ? "active" : ""}"
85 | :onclick "scripts/music ${loop_status == "Track" ? "--loop-off" : "--loop-on"}"
86 | (image :path "images/icons/loop.svg" :image-width 20 :image-height 20)
87 | )
88 | )
89 | (box :class "music_status panel" :space-evenly false :spacing 5
90 | (image :path "images/icons/disc.svg" :image-width 20 :image-height 20)
91 | song
92 | (label :text "-" :class "separator")
93 | artist
94 | )
95 | )
96 | )
97 |
98 | (defwidget metric [value onchange]
99 | (box :orientation "h" :class "metric" :space-evenly false
100 | (box :class "label" (children))
101 | (scale :min 0 :max 101 :active {onchange != ""} :value value :onchange onchange)
102 | )
103 | )
104 |
105 |
106 |
107 | (defpoll volume :interval "250ms" `scripts/getvol`)
108 |
109 | (defwindow bar :monitor 0 :windowtype "dock" :wm-ignore false :stacking "fg"
110 | :geometry (geometry :x "0%" :y "0%" :width "100%" :height "30px" :anchor "top center")
111 | :reserve (struts :distance "30px" :side "top")
112 | (box :class "main" :spacing "10" :space-evenly false
113 | (clock)
114 | (workspace_switcher)
115 | (battery_meter)
116 | (network)
117 | (metric :value {volume + 0} :onchange "wpctl set-volume @DEFAULT_SINK@ {}%"
118 | (image :path "images/icons/volume.svg" :image-width 20 :image-height 20)
119 | )
120 | (music)
121 | )
122 | )
123 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/battery.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/battery_charging.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/camera.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/chrome.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/clock.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/code.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/command.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/cpu.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/disc.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/loop.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/next_song.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/pause.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/play.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/previous_song.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/settings.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/shuffle.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/terminal.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/video.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/volume-x.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/volume.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/wifi.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/images/icons/wifi_off.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eww/.config/eww/scripts/check_net:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | count=0
4 |
5 | ID="$(ip link | awk '/state UP/ {print $2}')"
6 | SSID="$(iwgetid -r)"
7 |
8 | net_stat () {
9 | if (ping -c 1 archlinux.org || ping -c 1 google.com || ping -c 1 bitbucket.org || ping -c 1 github.com || ping -c 1 sourceforge.net) &>/dev/null; then
10 | if [[ $ID == e* ]]; then
11 | echo "Online"
12 | echo "images/icons/wifi.svg"
13 | else
14 | echo "$SSID"
15 | echo "images/icons/wifi.svg"
16 | fi
17 | else
18 | echo "Offline"
19 | echo "images/icons/wifi_off.svg"
20 | fi
21 | }
22 |
23 | if [[ $1 == '--stat' ]]; then
24 | net_stat | head -n1
25 | elif [[ $1 == '--icon' ]]; then
26 | net_stat | tail -n1
27 | fi
28 |
--------------------------------------------------------------------------------
/eww/.config/eww/scripts/getvol:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | machine_num="$(wpctl get-volume @DEFAULT_SINK@ | tr -d -c 0-9)"
4 | echo $((10#$machine_num))
5 |
6 |
--------------------------------------------------------------------------------
/eww/.config/eww/scripts/music:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | if [[ "$1" == "--song" ]]; then
4 | playerctl --player=spotify metadata title | cut -c -80
5 | elif [[ "$1" == "--artist" ]]; then
6 | playerctl --player=spotify metadata artist | cut -c -80
7 | elif [[ "$1" == "--status" ]]; then
8 | playerctl --player=spotify status
9 | elif [[ "$1" == "--get-shuffle" ]]; then
10 | playerctl --player=spotify shuffle
11 | elif [[ "$1" == "--shuffle" ]]; then
12 | playerctl --player=spotify shuffle Toggle
13 | elif [[ "$1" == "--toggle" ]]; then
14 | playerctl --player=spotify play-pause
15 | elif [[ "$1" == "--next" ]]; then
16 | playerctl --player=spotify next
17 | elif [[ "$1" == "--previous" ]]; then
18 | playerctl --player=spotify previous
19 | elif [[ "$1" == "--loop-get" ]]; then
20 | playerctl --player=spotify loop
21 | elif [[ "$1" == "--loop-off" ]]; then
22 | playerctl --player=spotify loop Playlist
23 | elif [[ "$1" == "--loop-on" ]]; then
24 | playerctl --player=spotify loop Track
25 | fi
26 |
--------------------------------------------------------------------------------
/eww/.config/eww/scripts/popout:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | actions() {
4 | LOCK_FILE="$HOME/.cache/eww-actions.lock"
5 |
6 | run() {
7 | eww open actions
8 | }
9 |
10 | if [[ ! -f "$LOCK_FILE" ]]; then
11 | touch "$LOCK_FILE"
12 | eww update actions_open=true
13 | run && echo "opened actions"
14 | else
15 | eww close actions
16 | eww update actions_open=false
17 | rm "$LOCK_FILE" && echo "closed actions"
18 | fi
19 | }
20 |
21 | music() {
22 | LOCK_FILE="$HOME/.cache/eww-music.lock"
23 |
24 | run() {
25 | eww update music_controls_reveal=true
26 | }
27 |
28 | if [[ ! -f "$LOCK_FILE" ]]; then
29 | touch "$LOCK_FILE"
30 | run && echo "opened music"
31 | else
32 | eww update music_controls_reveal=false
33 | rm "$LOCK_FILE" && echo "closed music"
34 | fi
35 | }
36 |
37 |
38 | if [ "$1" = "actions" ]; then
39 | actions
40 | elif [ "$1" = "music" ]; then
41 | music
42 | #elif [ "$1" = "audio" ]; then
43 | #audio
44 | fi
45 |
46 |
47 |
--------------------------------------------------------------------------------
/eww/.config/eww/scripts/screenshot:
--------------------------------------------------------------------------------
1 | /home/lizzy/screenshot.sh
--------------------------------------------------------------------------------
/eww/.config/eww/scripts/select_layout:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | if [[ "$1" == "code" ]]; then
4 | i3-msg "append_layout /home/lizzy/.i3/code.json"
5 | kitty ~/code -e /usr/bin/fish &
6 | kitty -e /usr/bin/fish -c 'cava' &
7 | kitty ~/code -e /usr/bin/fish &
8 | kitty ~/code -e /usr/bin/fish &
9 | # elif [[ "$1" == "" ]]; then
10 | #
11 | fi
12 |
--------------------------------------------------------------------------------
/extra/wallpaper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LizAinslie/dotfiles/35aad8ccfc2007f9400048cabbc78e791cfad5a4/extra/wallpaper.png
--------------------------------------------------------------------------------
/extra/wallpaper.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/fish/.config/fish/config.fish:
--------------------------------------------------------------------------------
1 | if status is-interactive
2 | # Commands to run in interactive sessions can go here
3 | end
4 |
5 | set -x GPG_TTY (tty)
6 | gpg-connect-agent updatestartuptty /bye >/dev/null
7 |
8 |
9 | function fish_prompt
10 | printf '[%s%s%s@%s %s%s%s]%s%s%s %% ' (set_color yellow) $USER (set_color green) $hostname (set_color blue) (prompt_pwd) (set_color normal) (set_color brblue) (fish_git_prompt) (set_color normal)
11 | end
12 |
13 | # yarn
14 | set -gx PATH "$(yarn global bin)" $PATH
15 | # end yarn
16 |
17 | # pnpm
18 | set -gx PNPM_HOME "/home/lizzy/.local/share/pnpm"
19 | set -gx PATH "$PNPM_HOME" $PATH
20 | # pnpm end
21 |
--------------------------------------------------------------------------------
/git/.config/git/config:
--------------------------------------------------------------------------------
1 | [commit]
2 | gpgsign = true
3 |
4 | [user]
5 | name = Liz Ainslie
6 | email = lizainslie16@gmail.com
7 |
8 | [core]
9 | editor = nvim
10 | autocrlf = input
11 |
12 | [init]
13 | defaultBranch = main
14 | templatedir = /home/lizzy/.config/git/template
15 |
16 | [alias]
17 | # Nice and compact log
18 | l = log --graph --decorate --pretty=format:'%C(auto)%h %Cblue%ad %Cred%aN %C(auto)%d %n %s' --date=human
19 |
--------------------------------------------------------------------------------
/git/.config/git/template/hooks/commit-msg:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | """
4 | Git commit hook
5 | Check commit message according to BEURK commit guidelines
6 | """
7 |
8 | import sys, os, re
9 | from subprocess import call
10 |
11 | sys.stdin = open("/dev/tty", "r")
12 | valid_commit_types = ['feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'chore']
13 |
14 | is_piped = True if len(sys.argv) == 1 else False
15 | editor = os.environ.get('VISUAL', 'nvim')
16 |
17 | def bad_commit(errmsg, line=""):
18 | sys.stderr.write("\nThe following line does not follow our "
19 | "guidelines:\n%s\n" % line)
20 | sys.stderr.write("\n%s\n" % errmsg)
21 | if is_piped:
22 | sys.exit(1)
23 | raise SyntaxError(errmsg)
24 |
25 | while True:
26 | commit = sys.stdin if is_piped else open(sys.argv[1], 'r')
27 | try:
28 | lines = commit.read().splitlines()
29 | # abracadabra: remove all comments from the list of lines ;)
30 | lines = [l for l in lines if not l.startswith("#")]
31 |
32 | if len(lines) == 0:
33 | bad_commit(commit, "Empty commit message")
34 |
35 | # first line
36 | line = lines[0]
37 |
38 | # ignore any Merge
39 | if line.startswith("Merge"):
40 | sys.exit(0)
41 |
42 | if len(line) > 50:
43 | bad_commit("First commit message line (header) "
44 | "is exceeding the 50 chars limit", line)
45 |
46 | m = re.search('^(.*)\((.*)\): (.*)$', line)
47 |
48 | if not m or len(m.groups()) != 3:
49 | bad_commit("First commit message line (header) does not "
50 | "follow format: type(scope): description", line)
51 |
52 | commit_type, commit_scope, commit_message = m.groups()
53 |
54 | if commit_type not in valid_commit_types:
55 | bad_commit("Commit type not in valid ones: %s"
56 | % ", ".join(valid_commit_types), line)
57 |
58 | if not commit_scope.strip():
59 | bad_commit("Commit scope is empty", line)
60 |
61 | if not commit_message.strip():
62 | bad_commit("Commit description is empty", line)
63 |
64 | if commit_message[0].isupper():
65 | bad_commit("Commit subject first char not lowercase", line)
66 |
67 | if commit_message.endswith('.'):
68 | bad_commit("Commit subject last char (a dot) "
69 | "is not allowed", line)
70 |
71 | verb = commit_message.split()[0]
72 | if verb.endswith("ing") or verb.endswith("ed"):
73 | bad_commit("Commit subject must use imperative, present tense:\n"
74 | "# \"change\", not \"changed\" nor \"changing\"", line)
75 |
76 | if line != line.strip():
77 | bad_commit("First commit message line (header) "
78 | "contains leading or ending spaces", line)
79 |
80 | if len(lines) > 1 and lines[1]:
81 | bad_commit("Second commit message line must be empty")
82 |
83 | if len(lines) > 2 and not lines[2].strip():
84 | bad_commit("Third commit message line (body) "
85 | "can't be empty", lines[2])
86 |
87 | for l in lines:
88 | if len(l) > 72:
89 | bad_commit("This line is exceeding the 72 chars limit", l)
90 |
91 | # We catch that an error has happened and react accordingly
92 | except SyntaxError as err:
93 | if input("Do you want to edit it? (Your commit will "
94 | "be rejected otherwise) [y/N] ").lower() == 'y':
95 | if not is_piped:
96 | commit.close()
97 | commit = open(sys.argv[1], 'a')
98 | commit.write("#\n# %s\n#\n" % err)
99 | sys.stderr.write('\n')
100 | commit.close()
101 | call('%s %s' % (editor, sys.argv[1]), shell=True)
102 | continue
103 | else:
104 | sys.stderr.write("Exiting without commiting\n")
105 | sys.exit(1)
106 | break
107 | sys.exit(0)
108 |
109 |
--------------------------------------------------------------------------------
/i3/.config/i3/config:
--------------------------------------------------------------------------------
1 | # This file has been auto-generated by i3-config-wizard(1).
2 | # It will not be overwritten, so edit it as you like.
3 | #
4 | # Should you change your keyboard layout some time, delete
5 | # this file and re-run i3-config-wizard(1).
6 | #
7 |
8 | # i3 config file (v4)
9 | #
10 | # Please see https://i3wm.org/docs/userguide.html for a complete reference!
11 |
12 | set $mod Mod4
13 |
14 | # Font for window titles. Will also be used by the bar unless a different font
15 | # is used in the bar {} block below.
16 | #font pango:monospace 8
17 |
18 | # This font is widely installed, provides lots of unicode glyphs, right-to-left
19 | # text rendering and scalability on retina/hidpi displays (thanks to pango).
20 | font pango:Fira Sans 8
21 | exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
22 |
23 | # NetworkManager is the most popular way to manage wireless networks on Linux,
24 | # and nm-applet is a desktop environment-independent system tray GUI for it.
25 | exec --no-startup-id nm-applet
26 |
27 | # Use pactl to adjust volume in PulseAudio.
28 | set $refresh_i3status killall -SIGUSR1 i3status
29 | bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
30 | bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
31 | bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
32 | bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
33 |
34 | # Use Mouse+$mod to drag floating windows to their wanted position
35 | floating_modifier $mod
36 |
37 | # start a terminal
38 | bindsym $mod+Return exec kitty -e /usr/bin/fish
39 |
40 | # kill focused window
41 | bindsym $mod+Shift+q kill
42 |
43 | # start dmenu (a program launcher)
44 | bindsym $mod+d exec --no-startup-id dmenu_run
45 | # A more modern dmenu replacement is rofi:
46 | # bindcode $mod+40 exec "rofi -modi drun,run -show drun"
47 | # There also is i3-dmenu-desktop which only displays applications shipping a
48 | # .desktop file. It is a wrapper around dmenu, so you need that installed.
49 | # bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
50 |
51 | # change focus
52 | bindsym $mod+j focus left
53 | bindsym $mod+k focus down
54 | bindsym $mod+l focus up
55 | bindsym $mod+semicolon focus right
56 |
57 | # alternatively, you can use the cursor keys:
58 | bindsym $mod+Left focus left
59 | bindsym $mod+Down focus down
60 | bindsym $mod+Up focus up
61 | bindsym $mod+Right focus right
62 |
63 | # move focused window
64 | bindsym $mod+Shift+j move left
65 | bindsym $mod+Shift+k move down
66 | bindsym $mod+Shift+l move up
67 | bindsym $mod+Shift+semicolon move right
68 |
69 | # alternatively, you can use the cursor keys:
70 | bindsym $mod+Shift+Left move left
71 | bindsym $mod+Shift+Down move down
72 | bindsym $mod+Shift+Up move up
73 | bindsym $mod+Shift+Right move right
74 |
75 | # split in horizontal orientation
76 | bindsym $mod+h split h
77 |
78 | # split in vertical orientation
79 | bindsym $mod+v split v
80 |
81 | # enter fullscreen mode for the focused container
82 | bindsym $mod+f fullscreen toggle
83 |
84 | # change container layout (stacked, tabbed, toggle split)
85 | bindsym $mod+s layout stacking
86 | bindsym $mod+w layout tabbed
87 | bindsym $mod+e layout toggle split
88 |
89 | # toggle tiling / floating
90 | bindsym $mod+Shift+space floating toggle
91 |
92 | # change focus between tiling / floating windows
93 | bindsym $mod+space focus mode_toggle
94 |
95 | # focus the parent container
96 | bindsym $mod+a focus parent
97 |
98 | # focus the child container
99 | #bindsym $mod+d focus child
100 |
101 | # Define names for default workspaces for which we configure key bindings later on.
102 | # We use variables to avoid repeating the names in multiple places.
103 | set $ws1 "1"
104 | set $ws2 "2"
105 | set $ws3 "3"
106 | set $ws4 "4"
107 | set $ws5 "5"
108 | set $ws6 "6"
109 | set $ws7 "7"
110 | set $ws8 "8"
111 | set $ws9 "9"
112 | set $ws10 "10"
113 |
114 | # switch to workspace
115 | bindsym $mod+1 workspace number $ws1
116 | bindsym $mod+2 workspace number $ws2
117 | bindsym $mod+3 workspace number $ws3
118 | bindsym $mod+4 workspace number $ws4
119 | bindsym $mod+5 workspace number $ws5
120 | bindsym $mod+6 workspace number $ws6
121 | bindsym $mod+7 workspace number $ws7
122 | bindsym $mod+8 workspace number $ws8
123 | bindsym $mod+9 workspace number $ws9
124 | bindsym $mod+0 workspace number $ws10
125 |
126 | # move focused container to workspace
127 | bindsym $mod+Shift+1 move container to workspace number $ws1
128 | bindsym $mod+Shift+2 move container to workspace number $ws2
129 | bindsym $mod+Shift+3 move container to workspace number $ws3
130 | bindsym $mod+Shift+4 move container to workspace number $ws4
131 | bindsym $mod+Shift+5 move container to workspace number $ws5
132 | bindsym $mod+Shift+6 move container to workspace number $ws6
133 | bindsym $mod+Shift+7 move container to workspace number $ws7
134 | bindsym $mod+Shift+8 move container to workspace number $ws8
135 | bindsym $mod+Shift+9 move container to workspace number $ws9
136 | bindsym $mod+Shift+0 move container to workspace number $ws10
137 |
138 | # reload the configuration file
139 | bindsym $mod+Shift+c reload
140 | # restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
141 | bindsym $mod+Shift+r restart
142 | # exit i3 (logs you out of your X session)
143 | 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'"
144 |
145 | # resize window (you can also use the mouse for that)
146 | mode "resize" {
147 | # These bindings trigger as soon as you enter the resize mode
148 |
149 | # Pressing left will shrink the window’s width.
150 | # Pressing right will grow the window’s width.
151 | # Pressing up will shrink the window’s height.
152 | # Pressing down will grow the window’s height.
153 | bindsym j resize shrink width 10 px or 10 ppt
154 | bindsym k resize grow height 10 px or 10 ppt
155 | bindsym l resize shrink height 10 px or 10 ppt
156 | bindsym semicolon resize grow width 10 px or 10 ppt
157 |
158 | # same bindings, but for the arrow keys
159 | bindsym Left resize shrink width 10 px or 10 ppt
160 | bindsym Down resize grow height 10 px or 10 ppt
161 | bindsym Up resize shrink height 10 px or 10 ppt
162 | bindsym Right resize grow width 10 px or 10 ppt
163 |
164 | # back to normal: Enter or Escape or $mod+r
165 | bindsym Return mode "default"
166 | bindsym Escape mode "default"
167 | bindsym $mod+r mode "default"
168 | }
169 |
170 | bindsym $mod+r mode "resize"
171 |
172 |
173 | bindsym $mod+Print exec ~/screenshot.sh
174 | bindsym $mod+Shift+G exec colorgrab
175 |
176 | gaps inner 10
177 | gaps outer 0
178 | # border_radius 3
179 |
180 | for_window [class="^.*"] border pixel 0
181 |
182 | exec_always --no-startup-id dunst
183 | exec_always --no-startup-id feh --bg-fill ~/wallpaper.png
184 | exec_always --no-startup-id eww daemon
185 | exec_always --no-startup-id eww open bar
186 | exec_always --no-startup-id picom -cb
187 |
188 | exec_always --no-startup-id xrdb ~/.Xresources
189 |
190 | set $unfocused_border #24292f
191 | set $focused_border #ffffff
192 |
193 | # class border backgr. text indicator child_border
194 | #client.focused #ffffff #ffffff #ffffff #ffffff $focused_border
195 | #client.focused_inactive #ffffff #ffffff #ffffff #ffffff $focused_border
196 | #client.unfocused #ffffff #ffffff #ffffff #ffffff $unfocused_border
197 | #client.urgent #ffffff #ffffff #ffffff #ffffff $focused_border
198 | #client.placeholder #ffffff #ffffff #ffffff #ffffff #ffffff
199 |
200 | client.background #ffffff
201 |
--------------------------------------------------------------------------------
/i3/.i3/code.json:
--------------------------------------------------------------------------------
1 | {
2 | "border": "normal",
3 | "floating": "auto_off",
4 | "layout": "splitv",
5 | "marks": [],
6 | "percent": 0.8,
7 | "type": "con",
8 | "nodes": [
9 | {
10 | "border": "pixel",
11 | "current_border_width": 0,
12 | "floating": "auto_off",
13 | "geometry": {
14 | "height": 713,
15 | "width": 1713,
16 | "x": 0,
17 | "y": 0
18 | },
19 | "marks": [],
20 | "name": "nvim",
21 | "percent": 0.7,
22 | "swallows": [
23 | {
24 | "class": "^kitty$"
25 | }
26 | ],
27 | "type": "con"
28 | },
29 | {
30 | "border": "normal",
31 | "floating": "auto_off",
32 | "layout": "splith",
33 | "marks": [],
34 | "percent": 0.3,
35 | "type": "con",
36 | "nodes": [
37 | {
38 | "border": "pixel",
39 | "current_border_width": 0,
40 | "floating": "auto_off",
41 | "geometry": {
42 | "height": 1020,
43 | "width": 1900,
44 | "x": 0,
45 | "y": 0
46 | },
47 | "marks": [],
48 | "name": "cava",
49 | "percent": 0.183333333333333,
50 | "swallows": [
51 | {
52 | "class": "^kitty$"
53 | }
54 | ],
55 | "type": "con"
56 | },
57 | {
58 | "border": "normal",
59 | "floating": "auto_off",
60 | "layout": "splitv",
61 | "marks": [],
62 | "percent": 0.483333333333333,
63 | "type": "con",
64 | "nodes": [
65 | {
66 | "border": "pixel",
67 | "current_border_width": 0,
68 | "floating": "auto_off",
69 | "geometry": {
70 | "height": 245,
71 | "width": 753,
72 | "x": 0,
73 | "y": 0
74 | },
75 | "marks": [],
76 | "name": "terminal",
77 | "percent": 1,
78 | "swallows": [
79 | {
80 | "class": "^kitty$"
81 | }
82 | ],
83 | "type": "con"
84 | }
85 | ]
86 | },
87 | {
88 | "border": "pixel",
89 | "current_border_width": 0,
90 | "floating": "auto_off",
91 | "geometry": {
92 | "height": 245,
93 | "width": 753,
94 | "x": 0,
95 | "y": 0
96 | },
97 | "marks": [],
98 | "name": "runterm",
99 | "percent": 0.333333333333333,
100 | "swallows": [
101 | {
102 | "class": "^kitty$"
103 | }
104 | ],
105 | "type": "con"
106 | }
107 | ]
108 | }
109 | ]
110 | }
111 |
112 |
--------------------------------------------------------------------------------
/install.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # restore wallpaper
4 | cp ./extra/wallpaper.png ~/wallpaper.png
5 |
6 | # restore git configs
7 | mkdir -p ~/.config/git
8 | cp -r ./git/.config/git/* ~/.config/git/
9 |
10 | # restore fish configs
11 | mkdir -p ~/.config/fish
12 | cp ./fish/.config/fish/config.fish ~/.config/fish/config.fish
13 |
14 | # restore neofetch configs
15 | mkdir -p ~/.config/neofetch
16 | cp -r ./neofetch/.config/neofetch/* ~/.config/neofetch/
17 |
18 | # restore picom config
19 | cp ./picom/.config/picom.conf ~/.config/picom.conf
20 |
21 | # restore i3 config
22 | mkdir -p ~/.config/i3
23 | cp ./i3/.config/i3/config ~/.config/i3/config
24 |
25 | # restore i3 layputs
26 | mkdir -p ~/.i3
27 | cp ./i3/.i3/* ~/.i3/
28 |
29 | # restore eww configs
30 | mkdir -p ~/.config/eww
31 | cp -r ./eww/.config/eww/* ~/.config/eww/
32 |
33 | # restore kitty config
34 | mkdir -p ~/.config/kitty
35 | cp ./kitty/.config/kitty/kitty.conf ~/.config/kitty/kitty.conf
36 |
37 | # restore neovim configs
38 | mkdir -p ~/.config/nvim
39 | cp -r ./nvim/.config/nvim/* ~/.config/nvim/
40 |
41 | # restore dunst configs
42 | mkdir -p ~/.config/dunst
43 | cp -r ./dunst/.config/dunst/* ~/.config/dunst/
44 |
--------------------------------------------------------------------------------
/kitty/.config/kitty/kitty.conf:
--------------------------------------------------------------------------------
1 | background #22272e
2 |
3 | # black
4 | color0 #24292f
5 | color8 #ffffff
6 |
7 | # red
8 | color1 #dc6f7a
9 | color9 #e38588
10 |
11 | # green
12 | color2 #618774
13 | color10 #7eab7b
14 |
15 | # yellow
16 | color3 #e3786c
17 | color11 #ee896e
18 |
19 | # blue
20 | color4 #4f6286
21 | color12 #5c6b92
22 |
23 | # magenta
24 | color5 #a97594
25 | color13 #b589a4
26 |
27 | # cyan
28 | color6 #4f8896
29 | color14 #6ba5ab
30 |
31 | # white
32 | color7 #ffffff
33 | color15 #ffffff
34 |
35 | tab_bar_edge top
36 | cursor_shape beam
37 | font_family Fira Code
38 | disable_ligatures never
39 |
--------------------------------------------------------------------------------
/neofetch/.config/neofetch/config.conf:
--------------------------------------------------------------------------------
1 | # See this wiki page for more info:
2 | # https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
3 | print_info() {
4 | info title
5 | info underline
6 |
7 | info "OS" distro
8 | info "Host" model
9 | info "Kernel" kernel
10 | info "Uptime" uptime
11 | info "Packages" packages
12 | info "Shell" shell
13 | info "Resolution" resolution
14 | info "DE" de
15 | info "WM" wm
16 | info "WM Theme" wm_theme
17 | info "Theme" theme
18 | info "Icons" icons
19 | info "Terminal" term
20 | info "Terminal Font" term_font
21 | info "CPU" cpu
22 | info "GPU" gpu
23 | info "Memory" memory
24 |
25 | # info "GPU Driver" gpu_driver # Linux/macOS only
26 | # info "CPU Usage" cpu_usage
27 | # info "Disk" disk
28 | # info "Battery" battery
29 | # info "Font" font
30 | # info "Song" song
31 | # [[ "$player" ]] && prin "Music Player" "$player"
32 | # info "Local IP" local_ip
33 | # info "Public IP" public_ip
34 | # info "Users" users
35 | # info "Locale" locale # This only works on glibc systems.
36 |
37 | info cols
38 | }
39 |
40 | # Title
41 |
42 |
43 | # Hide/Show Fully qualified domain name.
44 | #
45 | # Default: 'off'
46 | # Values: 'on', 'off'
47 | # Flag: --title_fqdn
48 | title_fqdn="off"
49 |
50 |
51 | # Kernel
52 |
53 |
54 | # Shorten the output of the kernel function.
55 | #
56 | # Default: 'on'
57 | # Values: 'on', 'off'
58 | # Flag: --kernel_shorthand
59 | # Supports: Everything except *BSDs (except PacBSD and PC-BSD)
60 | #
61 | # Example:
62 | # on: '4.8.9-1-ARCH'
63 | # off: 'Linux 4.8.9-1-ARCH'
64 | kernel_shorthand="on"
65 |
66 |
67 | # Distro
68 |
69 |
70 | # Shorten the output of the distro function
71 | #
72 | # Default: 'off'
73 | # Values: 'on', 'tiny', 'off'
74 | # Flag: --distro_shorthand
75 | # Supports: Everything except Windows and Haiku
76 | distro_shorthand="off"
77 |
78 | # Show/Hide OS Architecture.
79 | # Show 'x86_64', 'x86' and etc in 'Distro:' output.
80 | #
81 | # Default: 'on'
82 | # Values: 'on', 'off'
83 | # Flag: --os_arch
84 | #
85 | # Example:
86 | # on: 'Arch Linux x86_64'
87 | # off: 'Arch Linux'
88 | os_arch="on"
89 |
90 |
91 | # Uptime
92 |
93 |
94 | # Shorten the output of the uptime function
95 | #
96 | # Default: 'on'
97 | # Values: 'on', 'tiny', 'off'
98 | # Flag: --uptime_shorthand
99 | #
100 | # Example:
101 | # on: '2 days, 10 hours, 3 mins'
102 | # tiny: '2d 10h 3m'
103 | # off: '2 days, 10 hours, 3 minutes'
104 | uptime_shorthand="on"
105 |
106 |
107 | # Memory
108 |
109 |
110 | # Show memory pecentage in output.
111 | #
112 | # Default: 'off'
113 | # Values: 'on', 'off'
114 | # Flag: --memory_percent
115 | #
116 | # Example:
117 | # on: '1801MiB / 7881MiB (22%)'
118 | # off: '1801MiB / 7881MiB'
119 | memory_percent="off"
120 |
121 | # Change memory output unit.
122 | #
123 | # Default: 'mib'
124 | # Values: 'kib', 'mib', 'gib'
125 | # Flag: --memory_unit
126 | #
127 | # Example:
128 | # kib '1020928KiB / 7117824KiB'
129 | # mib '1042MiB / 6951MiB'
130 | # gib: ' 0.98GiB / 6.79GiB'
131 | memory_unit="mib"
132 |
133 |
134 | # Packages
135 |
136 |
137 | # Show/Hide Package Manager names.
138 | #
139 | # Default: 'tiny'
140 | # Values: 'on', 'tiny' 'off'
141 | # Flag: --package_managers
142 | #
143 | # Example:
144 | # on: '998 (pacman), 8 (flatpak), 4 (snap)'
145 | # tiny: '908 (pacman, flatpak, snap)'
146 | # off: '908'
147 | package_managers="on"
148 |
149 |
150 | # Shell
151 |
152 |
153 | # Show the path to $SHELL
154 | #
155 | # Default: 'off'
156 | # Values: 'on', 'off'
157 | # Flag: --shell_path
158 | #
159 | # Example:
160 | # on: '/bin/bash'
161 | # off: 'bash'
162 | shell_path="off"
163 |
164 | # Show $SHELL version
165 | #
166 | # Default: 'on'
167 | # Values: 'on', 'off'
168 | # Flag: --shell_version
169 | #
170 | # Example:
171 | # on: 'bash 4.4.5'
172 | # off: 'bash'
173 | shell_version="on"
174 |
175 |
176 | # CPU
177 |
178 |
179 | # CPU speed type
180 | #
181 | # Default: 'bios_limit'
182 | # Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
183 | # Flag: --speed_type
184 | # Supports: Linux with 'cpufreq'
185 | # NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
186 | speed_type="bios_limit"
187 |
188 | # CPU speed shorthand
189 | #
190 | # Default: 'off'
191 | # Values: 'on', 'off'.
192 | # Flag: --speed_shorthand
193 | # NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
194 | #
195 | # Example:
196 | # on: 'i7-6500U (4) @ 3.1GHz'
197 | # off: 'i7-6500U (4) @ 3.100GHz'
198 | speed_shorthand="off"
199 |
200 | # Enable/Disable CPU brand in output.
201 | #
202 | # Default: 'on'
203 | # Values: 'on', 'off'
204 | # Flag: --cpu_brand
205 | #
206 | # Example:
207 | # on: 'Intel i7-6500U'
208 | # off: 'i7-6500U (4)'
209 | cpu_brand="on"
210 |
211 | # CPU Speed
212 | # Hide/Show CPU speed.
213 | #
214 | # Default: 'on'
215 | # Values: 'on', 'off'
216 | # Flag: --cpu_speed
217 | #
218 | # Example:
219 | # on: 'Intel i7-6500U (4) @ 3.1GHz'
220 | # off: 'Intel i7-6500U (4)'
221 | cpu_speed="on"
222 |
223 | # CPU Cores
224 | # Display CPU cores in output
225 | #
226 | # Default: 'logical'
227 | # Values: 'logical', 'physical', 'off'
228 | # Flag: --cpu_cores
229 | # Support: 'physical' doesn't work on BSD.
230 | #
231 | # Example:
232 | # logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
233 | # physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
234 | # off: 'Intel i7-6500U @ 3.1GHz'
235 | cpu_cores="logical"
236 |
237 | # CPU Temperature
238 | # Hide/Show CPU temperature.
239 | # Note the temperature is added to the regular CPU function.
240 | #
241 | # Default: 'off'
242 | # Values: 'C', 'F', 'off'
243 | # Flag: --cpu_temp
244 | # Supports: Linux, BSD
245 | # NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
246 | # coretemp kernel module. This only supports newer Intel processors.
247 | #
248 | # Example:
249 | # C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
250 | # F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
251 | # off: 'Intel i7-6500U (4) @ 3.1GHz'
252 | cpu_temp="off"
253 |
254 |
255 | # GPU
256 |
257 |
258 | # Enable/Disable GPU Brand
259 | #
260 | # Default: 'on'
261 | # Values: 'on', 'off'
262 | # Flag: --gpu_brand
263 | #
264 | # Example:
265 | # on: 'AMD HD 7950'
266 | # off: 'HD 7950'
267 | gpu_brand="on"
268 |
269 | # Which GPU to display
270 | #
271 | # Default: 'all'
272 | # Values: 'all', 'dedicated', 'integrated'
273 | # Flag: --gpu_type
274 | # Supports: Linux
275 | #
276 | # Example:
277 | # all:
278 | # GPU1: AMD HD 7950
279 | # GPU2: Intel Integrated Graphics
280 | #
281 | # dedicated:
282 | # GPU1: AMD HD 7950
283 | #
284 | # integrated:
285 | # GPU1: Intel Integrated Graphics
286 | gpu_type="all"
287 |
288 |
289 | # Resolution
290 |
291 |
292 | # Display refresh rate next to each monitor
293 | # Default: 'off'
294 | # Values: 'on', 'off'
295 | # Flag: --refresh_rate
296 | # Supports: Doesn't work on Windows.
297 | #
298 | # Example:
299 | # on: '1920x1080 @ 60Hz'
300 | # off: '1920x1080'
301 | refresh_rate="on"
302 |
303 |
304 | # Gtk Theme / Icons / Font
305 |
306 |
307 | # Shorten output of GTK Theme / Icons / Font
308 | #
309 | # Default: 'off'
310 | # Values: 'on', 'off'
311 | # Flag: --gtk_shorthand
312 | #
313 | # Example:
314 | # on: 'Numix, Adwaita'
315 | # off: 'Numix [GTK2], Adwaita [GTK3]'
316 | gtk_shorthand="off"
317 |
318 |
319 | # Enable/Disable gtk2 Theme / Icons / Font
320 | #
321 | # Default: 'on'
322 | # Values: 'on', 'off'
323 | # Flag: --gtk2
324 | #
325 | # Example:
326 | # on: 'Numix [GTK2], Adwaita [GTK3]'
327 | # off: 'Adwaita [GTK3]'
328 | gtk2="off"
329 |
330 | # Enable/Disable gtk3 Theme / Icons / Font
331 | #
332 | # Default: 'on'
333 | # Values: 'on', 'off'
334 | # Flag: --gtk3
335 | #
336 | # Example:
337 | # on: 'Numix [GTK2], Adwaita [GTK3]'
338 | # off: 'Numix [GTK2]'
339 | gtk3="off"
340 |
341 |
342 | # IP Address
343 |
344 |
345 | # Website to ping for the public IP
346 | #
347 | # Default: 'http://ident.me'
348 | # Values: 'url'
349 | # Flag: --ip_host
350 | public_ip_host="http://ident.me"
351 |
352 | # Public IP timeout.
353 | #
354 | # Default: '2'
355 | # Values: 'int'
356 | # Flag: --ip_timeout
357 | public_ip_timeout=2
358 |
359 |
360 | # Desktop Environment
361 |
362 |
363 | # Show Desktop Environment version
364 | #
365 | # Default: 'on'
366 | # Values: 'on', 'off'
367 | # Flag: --de_version
368 | de_version="off"
369 |
370 |
371 | # Disk
372 |
373 |
374 | # Which disks to display.
375 | # The values can be any /dev/sdXX, mount point or directory.
376 | # NOTE: By default we only show the disk info for '/'.
377 | #
378 | # Default: '/'
379 | # Values: '/', '/dev/sdXX', '/path/to/drive'.
380 | # Flag: --disk_show
381 | #
382 | # Example:
383 | # disk_show=('/' '/dev/sdb1'):
384 | # 'Disk (/): 74G / 118G (66%)'
385 | # 'Disk (/mnt/Videos): 823G / 893G (93%)'
386 | #
387 | # disk_show=('/'):
388 | # 'Disk (/): 74G / 118G (66%)'
389 | #
390 | disk_show=('/')
391 |
392 | # Disk subtitle.
393 | # What to append to the Disk subtitle.
394 | #
395 | # Default: 'mount'
396 | # Values: 'mount', 'name', 'dir', 'none'
397 | # Flag: --disk_subtitle
398 | #
399 | # Example:
400 | # name: 'Disk (/dev/sda1): 74G / 118G (66%)'
401 | # 'Disk (/dev/sdb2): 74G / 118G (66%)'
402 | #
403 | # mount: 'Disk (/): 74G / 118G (66%)'
404 | # 'Disk (/mnt/Local Disk): 74G / 118G (66%)'
405 | # 'Disk (/mnt/Videos): 74G / 118G (66%)'
406 | #
407 | # dir: 'Disk (/): 74G / 118G (66%)'
408 | # 'Disk (Local Disk): 74G / 118G (66%)'
409 | # 'Disk (Videos): 74G / 118G (66%)'
410 | #
411 | # none: 'Disk: 74G / 118G (66%)'
412 | # 'Disk: 74G / 118G (66%)'
413 | # 'Disk: 74G / 118G (66%)'
414 | disk_subtitle="mount"
415 |
416 | # Disk percent.
417 | # Show/Hide disk percent.
418 | #
419 | # Default: 'on'
420 | # Values: 'on', 'off'
421 | # Flag: --disk_percent
422 | #
423 | # Example:
424 | # on: 'Disk (/): 74G / 118G (66%)'
425 | # off: 'Disk (/): 74G / 118G'
426 | disk_percent="on"
427 |
428 |
429 | # Song
430 |
431 |
432 | # Manually specify a music player.
433 | #
434 | # Default: 'auto'
435 | # Values: 'auto', 'player-name'
436 | # Flag: --music_player
437 | #
438 | # Available values for 'player-name':
439 | #
440 | # amarok
441 | # audacious
442 | # banshee
443 | # bluemindo
444 | # clementine
445 | # cmus
446 | # deadbeef
447 | # deepin-music
448 | # dragon
449 | # elisa
450 | # exaile
451 | # gnome-music
452 | # gmusicbrowser
453 | # gogglesmm
454 | # guayadeque
455 | # io.elementary.music
456 | # iTunes
457 | # juk
458 | # lollypop
459 | # mocp
460 | # mopidy
461 | # mpd
462 | # muine
463 | # netease-cloud-music
464 | # olivia
465 | # playerctl
466 | # pogo
467 | # pragha
468 | # qmmp
469 | # quodlibet
470 | # rhythmbox
471 | # sayonara
472 | # smplayer
473 | # spotify
474 | # strawberry
475 | # tauonmb
476 | # tomahawk
477 | # vlc
478 | # xmms2d
479 | # xnoise
480 | # yarock
481 | music_player="auto"
482 |
483 | # Format to display song information.
484 | #
485 | # Default: '%artist% - %album% - %title%'
486 | # Values: '%artist%', '%album%', '%title%'
487 | # Flag: --song_format
488 | #
489 | # Example:
490 | # default: 'Song: Jet - Get Born - Sgt Major'
491 | song_format="%artist% - %album% - %title%"
492 |
493 | # Print the Artist, Album and Title on separate lines
494 | #
495 | # Default: 'off'
496 | # Values: 'on', 'off'
497 | # Flag: --song_shorthand
498 | #
499 | # Example:
500 | # on: 'Artist: The Fratellis'
501 | # 'Album: Costello Music'
502 | # 'Song: Chelsea Dagger'
503 | #
504 | # off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
505 | song_shorthand="off"
506 |
507 | # 'mpc' arguments (specify a host, password etc).
508 | #
509 | # Default: ''
510 | # Example: mpc_args=(-h HOST -P PASSWORD)
511 | mpc_args=()
512 |
513 |
514 | # Text Colors
515 |
516 |
517 | # Text Colors
518 | #
519 | # Default: 'distro'
520 | # Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
521 | # Flag: --colors
522 | #
523 | # Each number represents a different part of the text in
524 | # this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
525 | #
526 | # Example:
527 | # colors=(distro) - Text is colored based on Distro colors.
528 | # colors=(4 6 1 8 8 6) - Text is colored in the order above.
529 | colors=(distro)
530 |
531 |
532 | # Text Options
533 |
534 |
535 | # Toggle bold text
536 | #
537 | # Default: 'on'
538 | # Values: 'on', 'off'
539 | # Flag: --bold
540 | bold="on"
541 |
542 | # Enable/Disable Underline
543 | #
544 | # Default: 'on'
545 | # Values: 'on', 'off'
546 | # Flag: --underline
547 | underline_enabled="on"
548 |
549 | # Underline character
550 | #
551 | # Default: '-'
552 | # Values: 'string'
553 | # Flag: --underline_char
554 | underline_char="-"
555 |
556 |
557 | # Info Separator
558 | # Replace the default separator with the specified string.
559 | #
560 | # Default: ':'
561 | # Flag: --separator
562 | #
563 | # Example:
564 | # separator="->": 'Shell-> bash'
565 | # separator=" =": 'WM = dwm'
566 | separator=":"
567 |
568 |
569 | # Color Blocks
570 |
571 |
572 | # Color block range
573 | # The range of colors to print.
574 | #
575 | # Default: '0', '15'
576 | # Values: 'num'
577 | # Flag: --block_range
578 | #
579 | # Example:
580 | #
581 | # Display colors 0-7 in the blocks. (8 colors)
582 | # neofetch --block_range 0 7
583 | #
584 | # Display colors 0-15 in the blocks. (16 colors)
585 | # neofetch --block_range 0 15
586 | block_range=(0 15)
587 |
588 | # Toggle color blocks
589 | #
590 | # Default: 'on'
591 | # Values: 'on', 'off'
592 | # Flag: --color_blocks
593 | color_blocks="on"
594 |
595 | # Color block width in spaces
596 | #
597 | # Default: '3'
598 | # Values: 'num'
599 | # Flag: --block_width
600 | block_width=3
601 |
602 | # Color block height in lines
603 | #
604 | # Default: '1'
605 | # Values: 'num'
606 | # Flag: --block_height
607 | block_height=1
608 |
609 | # Color Alignment
610 | #
611 | # Default: 'auto'
612 | # Values: 'auto', 'num'
613 | # Flag: --col_offset
614 | #
615 | # Number specifies how far from the left side of the terminal (in spaces) to
616 | # begin printing the columns, in case you want to e.g. center them under your
617 | # text.
618 | # Example:
619 | # col_offset="auto" - Default behavior of neofetch
620 | # col_offset=7 - Leave 7 spaces then print the colors
621 | col_offset="auto"
622 |
623 | # Progress Bars
624 |
625 |
626 | # Bar characters
627 | #
628 | # Default: '-', '='
629 | # Values: 'string', 'string'
630 | # Flag: --bar_char
631 | #
632 | # Example:
633 | # neofetch --bar_char 'elapsed' 'total'
634 | # neofetch --bar_char '-' '='
635 | bar_char_elapsed="-"
636 | bar_char_total="="
637 |
638 | # Toggle Bar border
639 | #
640 | # Default: 'on'
641 | # Values: 'on', 'off'
642 | # Flag: --bar_border
643 | bar_border="on"
644 |
645 | # Progress bar length in spaces
646 | # Number of chars long to make the progress bars.
647 | #
648 | # Default: '15'
649 | # Values: 'num'
650 | # Flag: --bar_length
651 | bar_length=15
652 |
653 | # Progress bar colors
654 | # When set to distro, uses your distro's logo colors.
655 | #
656 | # Default: 'distro', 'distro'
657 | # Values: 'distro', 'num'
658 | # Flag: --bar_colors
659 | #
660 | # Example:
661 | # neofetch --bar_colors 3 4
662 | # neofetch --bar_colors distro 5
663 | bar_color_elapsed="distro"
664 | bar_color_total="distro"
665 |
666 |
667 | # Info display
668 | # Display a bar with the info.
669 | #
670 | # Default: 'off'
671 | # Values: 'bar', 'infobar', 'barinfo', 'off'
672 | # Flags: --cpu_display
673 | # --memory_display
674 | # --battery_display
675 | # --disk_display
676 | #
677 | # Example:
678 | # bar: '[---=======]'
679 | # infobar: 'info [---=======]'
680 | # barinfo: '[---=======] info'
681 | # off: 'info'
682 | cpu_display="off"
683 | memory_display="off"
684 | battery_display="off"
685 | disk_display="off"
686 |
687 |
688 | # Backend Settings
689 |
690 |
691 | # Image backend.
692 | #
693 | # Default: 'ascii'
694 | # Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
695 | # 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
696 | # Flag: --backend
697 | image_backend="kitty"
698 |
699 | # Image Source
700 | #
701 | # Which image or ascii file to display.
702 | #
703 | # Default: 'auto'
704 | # Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
705 | # 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
706 | # Flag: --source
707 | #
708 | # NOTE: 'auto' will pick the best image source for whatever image backend is used.
709 | # In ascii mode, distro ascii art will be used and in an image mode, your
710 | # wallpaper will be used.
711 | image_source="auto"
712 |
713 |
714 | # Ascii Options
715 |
716 |
717 | # Ascii distro
718 | # Which distro's ascii art to display.
719 | #
720 | # Default: 'auto'
721 | # Values: 'auto', 'distro_name'
722 | # Flag: --ascii_distro
723 | # NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS",
724 | # "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs,
725 | # ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock,
726 | # Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD,
727 | # BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
728 | # Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover,
729 | # Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin,
730 | # DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary,
731 | # EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
732 | # FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
733 | # gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra,
734 | # Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion,
735 | # Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite,
736 | # LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva,
737 | # Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib,
738 | # Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner,
739 | # NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba,
740 | # OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD,
741 | # Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint,
742 | # popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix,
743 | # Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan,
744 | # Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific,
745 | # Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz,
746 | # SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS,
747 | # openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails,
748 | # Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio,
749 | # Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin,
750 | # and IRIX have ascii logos
751 | # NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
752 | # Use '{distro name}_old' to use the old logos.
753 | # NOTE: Ubuntu has flavor variants.
754 | # Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
755 | # Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors.
756 | # NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
757 | # CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
758 | # Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
759 | # Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
760 | # Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
761 | # postmarketOS, and Void have a smaller logo variant.
762 | # Use '{distro name}_small' to use the small variants.
763 | ascii_distro="auto"
764 |
765 | # Ascii Colors
766 | #
767 | # Default: 'distro'
768 | # Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
769 | # Flag: --ascii_colors
770 | #
771 | # Example:
772 | # ascii_colors=(distro) - Ascii is colored based on Distro colors.
773 | # ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
774 | ascii_colors=(distro)
775 |
776 | # Bold ascii logo
777 | # Whether or not to bold the ascii logo.
778 | #
779 | # Default: 'on'
780 | # Values: 'on', 'off'
781 | # Flag: --ascii_bold
782 | ascii_bold="off"
783 |
784 |
785 | # Image Options
786 |
787 |
788 | # Image loop
789 | # Setting this to on will make neofetch redraw the image constantly until
790 | # Ctrl+C is pressed. This fixes display issues in some terminal emulators.
791 | #
792 | # Default: 'off'
793 | # Values: 'on', 'off'
794 | # Flag: --loop
795 | image_loop="off"
796 |
797 | # Thumbnail directory
798 | #
799 | # Default: '~/.cache/thumbnails/neofetch'
800 | # Values: 'dir'
801 | thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
802 |
803 | # Crop mode
804 | #
805 | # Default: 'normal'
806 | # Values: 'normal', 'fit', 'fill'
807 | # Flag: --crop_mode
808 | #
809 | # See this wiki page to learn about the fit and fill options.
810 | # https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
811 | crop_mode="normal"
812 |
813 | # Crop offset
814 | # Note: Only affects 'normal' crop mode.
815 | #
816 | # Default: 'center'
817 | # Values: 'northwest', 'north', 'northeast', 'west', 'center'
818 | # 'east', 'southwest', 'south', 'southeast'
819 | # Flag: --crop_offset
820 | crop_offset="center"
821 |
822 | # Image size
823 | # The image is half the terminal width by default.
824 | #
825 | # Default: 'auto'
826 | # Values: 'auto', '00px', '00%', 'none'
827 | # Flags: --image_size
828 | # --size
829 | image_size="auto"
830 |
831 | # Gap between image and text
832 | #
833 | # Default: '3'
834 | # Values: 'num', '-num'
835 | # Flag: --gap
836 | gap=3
837 |
838 | # Image offsets
839 | # Only works with the w3m backend.
840 | #
841 | # Default: '0'
842 | # Values: 'px'
843 | # Flags: --xoffset
844 | # --yoffset
845 | yoffset=0
846 | xoffset=0
847 |
848 | # Image background color
849 | # Only works with the w3m backend.
850 | #
851 | # Default: ''
852 | # Values: 'color', 'blue'
853 | # Flag: --bg_color
854 | background_color=
855 |
856 |
857 | # Misc Options
858 |
859 | # Stdout mode
860 | # Turn off all colors and disables image backend (ASCII/Image).
861 | # Useful for piping into another command.
862 | # Default: 'off'
863 | # Values: 'on', 'off'
864 | stdout="off"
865 |
--------------------------------------------------------------------------------
/nvim/.config/nvim/init.vim:
--------------------------------------------------------------------------------
1 | lua require('plugins')
2 |
--------------------------------------------------------------------------------
/nvim/.config/nvim/lua/plugins.lua:
--------------------------------------------------------------------------------
1 | local install_path =
2 | vim.fn.stdpath 'data' .. '/site/pack/packer/start/packer.nvim'
3 | local is_bootstrap = false
4 |
5 | if vim.fn.empty(vim.fn.glob(install_path)) > 0 then
6 | is_bootstrap = true
7 | vim.fn.system {
8 | 'git', 'clone', '--depth', '1',
9 | 'https://github.com/wbthomason/packer.nvim', install_path }
10 | vim.cmd [[packadd packer.nvim]]
11 | end
12 |
13 | require('packer').startup(function(use)
14 | -- Let Packer manage itself
15 | use 'wbthomason/packer.nvim'
16 |
17 | -- Code folding
18 | use {'kevinhwang91/nvim-ufo', requires = 'kevinhwang91/promise-async'}
19 |
20 | -- Add indentation guides even on blank lines
21 | use 'lukas-reineke/indent-blankline.nvim'
22 |
23 | use 'tpope/vim-sleuth' -- Detect tabstop and shiftwidth automatically
24 | use 'numToStr/Comment.nvim' -- "gc" to comment visual regions/lines
25 | use { 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' }
26 | use 'nvim-lualine/lualine.nvim' -- Fancier statusline
27 | use 'andweeb/presence.nvim' -- Discord RPC
28 | use 'romgrk/barbar.nvim'
29 |
30 | -- Colorcolumn appears when text is over a certain line
31 | use 'm4xshen/smartcolumn.nvim'
32 |
33 | use {
34 | 'nvim-tree/nvim-tree.lua',
35 | requires = {
36 | 'nvim-tree/nvim-web-devicons', -- optional, for file icons
37 | },
38 | tag = 'nightly' -- optional, updated every week. (see issue #1193)
39 | }
40 |
41 | -- Autocompletion
42 | use {
43 | 'hrsh7th/nvim-cmp',
44 | requires = {
45 | 'hrsh7th/cmp-nvim-lsp',
46 | 'L3MON4D3/LuaSnip',
47 | 'saadparwaiz1/cmp_luasnip'
48 | },
49 | }
50 |
51 | -- PETS!!
52 | use({
53 | "giusgad/pets.nvim",
54 | requires = {
55 | "edluffy/hologram.nvim",
56 | "MunifTanjim/nui.nvim",
57 | }
58 | })
59 |
60 | -- =======
61 | -- LSP
62 | -- =======
63 | use { -- LSP Configuration & Plugins
64 | 'neovim/nvim-lspconfig',
65 | requires = {
66 | -- Automatically install LSPs to stdpath for neovim
67 | 'williamboman/mason.nvim',
68 | 'williamboman/mason-lspconfig.nvim',
69 |
70 | -- Useful status updates for LSP
71 | 'j-hui/fidget.nvim',
72 |
73 | -- Additional lua configuration, makes nvim stuff amazing
74 | 'folke/neodev.nvim',
75 | },
76 | }
77 |
78 | -- ===============
79 | -- Git Plugins
80 | -- ===============
81 | use 'lewis6991/gitsigns.nvim'
82 | use 'tpope/vim-fugitive'
83 | use 'tpope/vim-rhubarb'
84 |
85 | -- Fuzzy Finder (files, lsp, etc)
86 | use {
87 | 'nvim-telescope/telescope.nvim',
88 | branch = '0.1.x',
89 | requires = {
90 | 'nvim-lua/plenary.nvim'
91 | }
92 | }
93 |
94 | -- Fuzzy Finder Algorithm which requires local dependencies to be built. Only
95 | -- load if `make` is available
96 | use {
97 | 'nvim-telescope/telescope-fzf-native.nvim',
98 | run = 'make',
99 | cond = vim.fn.executable 'make' == 1
100 | }
101 |
102 | -- ====================
103 | -- Language Support
104 | -- ====================
105 | use 'dag/vim-fish' -- fish
106 | use 'elkowar/yuck.vim' -- yuck
107 | use 'Civitasv/cmake-tools.nvim' -- goddamn cmake
108 | use 'ranjithshegde/ccls.nvim' -- ccls
109 |
110 | -- Add custom plugins to packer from ~/.config/nvim/lua/custom/plugins.lua
111 | local has_plugins, plugins = pcall(require, 'custom.plugins')
112 | if has_plugins then
113 | plugins(use)
114 | end
115 |
116 | if is_bootstrap then
117 | require('packer').sync()
118 | end
119 | end)
120 |
121 | if is_bootstrap then
122 | print '=================================='
123 | print ' Plugins are being installed'
124 | print ' Wait until Packer completes,'
125 | print ' then restart nvim'
126 | print '=================================='
127 | return
128 | end
129 |
130 | -- Make line numbers default
131 | vim.wo.number = true
132 |
133 | -- Enable mouse mode
134 | vim.o.mouse = 'a'
135 |
136 | -- Enable break indent
137 | vim.o.breakindent = true
138 |
139 | -- Save undo history
140 | vim.o.undofile = true
141 |
142 | -- Case insensitive searching UNLESS /C or capital in search
143 | vim.o.ignorecase = true
144 | vim.o.smartcase = true
145 |
146 | -- Fold options
147 | vim.o.foldcolumn = '1'
148 | vim.o.foldlevel = 99
149 | vim.o.foldlevelstart = 99
150 | vim.o.foldenable = true
151 |
152 | -- 2 space tabs
153 | vim.opt.tabstop = 2
154 | vim.opt.shiftwidth = 2
155 | vim.opt.expandtab = true
156 | vim.bo.softtabstop = 2
157 |
158 | -- Set lualine as statusline
159 | -- See `:help lualine.txt`
160 | require('lualine').setup {
161 | options = {
162 | icons_enabled = true,
163 | -- theme = 'onedark',
164 | component_separators = '|',
165 | section_separators = '',
166 | },
167 | }
168 |
169 | require('indent_blankline').setup {
170 | char = '┊',
171 | show_trailing_blankline_indent = false,
172 | }
173 |
174 | require('gitsigns').setup {
175 | signs = {
176 | add = { text = '+' },
177 | change = { text = '~' },
178 | delete = { text = '_' },
179 | topdelete = { text = '‾' },
180 | changedelete = { text = '~' },
181 | },
182 | }
183 |
184 | require'nvim-treesitter.configs'.setup {
185 | ensure_installed = {
186 | 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'typescript', 'help', 'vim',
187 | 'kotlin', 'tsx', 'java', 'javascript', 'ruby', 'gitignore', 'fish', 'scss',
188 | 'css', 'json', 'jsdoc', 'html', 'make', 'markdown', 'prisma', 'regex',
189 | 'pug', 'vue', 'yaml', 'toml', 'sql', 'dart', 'cmake', 'diff', 'bash',
190 | },
191 |
192 | highlight = {
193 | enable = true,
194 | },
195 |
196 | indent = {
197 | enable = true,
198 | disable = { 'python' },
199 | },
200 | }
201 |
202 | require('ufo').setup({
203 | provider_selector = function(bufnr, filetype, buftype)
204 | return {'treesitter', 'indent'}
205 | end
206 | })
207 |
208 | -- LSP settings.
209 | -- This function gets run when an LSP connects to a particular buffer.
210 | local on_attach = function(_, bufnr)
211 | -- NOTE: Remember that lua is a real programming language, and as such it is
212 | -- possible to define small helper and utility functions so you don't have to
213 | -- repeat yourself many times.
214 | --
215 | -- In this case, we create a function that lets us more easily define
216 | -- mappings specific for LSP related items. It sets the mode, buffer and
217 | -- description for us each time.
218 | local nmap = function(keys, func, desc)
219 | if desc then
220 | desc = 'LSP: ' .. desc
221 | end
222 |
223 | vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc })
224 | end
225 |
226 | nmap('rn', vim.lsp.buf.rename, '[R]e[n]ame')
227 | nmap('ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
228 |
229 | nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition')
230 | nmap(
231 | 'gr',
232 | require('telescope.builtin').lsp_references,
233 | '[G]oto [R]eferences'
234 | )
235 | nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation')
236 | nmap('D', vim.lsp.buf.type_definition, 'Type [D]efinition')
237 | nmap(
238 | 'ds',
239 | require('telescope.builtin').lsp_document_symbols,
240 | '[D]ocument [S]ymbols'
241 | )
242 | nmap(
243 | 'ws',
244 | require('telescope.builtin').lsp_dynamic_workspace_symbols,
245 | '[W]orkspace [S]ymbols'
246 | )
247 |
248 | -- See `:help K` for why this keymap
249 | nmap('K', vim.lsp.buf.hover, 'Hover Documentation')
250 | nmap('', vim.lsp.buf.signature_help, 'Signature Documentation')
251 |
252 | -- Lesser used LSP functionality
253 | nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
254 | nmap(
255 | 'wa',
256 | vim.lsp.buf.add_workspace_folder,
257 | '[W]orkspace [A]dd Folder'
258 | )
259 | nmap(
260 | 'wr',
261 | vim.lsp.buf.remove_workspace_folder,
262 | '[W]orkspace [R]emove Folder'
263 | )
264 | nmap('wl', function()
265 | print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
266 | end, '[W]orkspace [L]ist Folders')
267 |
268 | -- Create a command `:Format` local to the LSP buffer
269 | vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
270 | vim.lsp.buf.format()
271 | end, { desc = 'Format current buffer with LSP' })
272 | end
273 |
274 | -- Enable the following language servers
275 | -- Feel free to add/remove any LSPs that you want here. They will automatically
276 | -- be installed.
277 | --
278 | -- Add any additional override configuration in the following tables. They will
279 | -- be passed to the `settings` field of the server config. You must look up
280 | -- that documentation yourself.
281 | local servers = {
282 | clangd = {},
283 | gopls = {},
284 | pyright = {},
285 | rust_analyzer = {},
286 | tsserver = {},
287 | kotlin_language_server = {},
288 |
289 | sumneko_lua = {
290 | Lua = {
291 | workspace = { checkThirdParty = false },
292 | telemetry = { enable = false },
293 | },
294 | },
295 | }
296 |
297 | -- Setup neovim lua configuration
298 | require('neodev').setup()
299 |
300 | -- nvim-cmp supports additional completion capabilities, so broadcast that to
301 | -- servers
302 | local capabilities = vim.lsp.protocol.make_client_capabilities()
303 | capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
304 |
305 | -- Setup mason so it can manage external tooling
306 | require('mason').setup()
307 |
308 | -- Ensure the servers above are installed
309 | local mason_lspconfig = require 'mason-lspconfig'
310 |
311 | mason_lspconfig.setup {
312 | ensure_installed = vim.tbl_keys(servers),
313 | }
314 |
315 | mason_lspconfig.setup_handlers {
316 | function(server_name)
317 | require('lspconfig')[server_name].setup {
318 | capabilities = capabilities,
319 | on_attach = on_attach,
320 | settings = servers[server_name],
321 | }
322 | end,
323 | }
324 |
325 | -- Turn on lsp status information
326 | require('fidget').setup()
327 |
328 | require("ccls").setup({lsp = {use_defaults = true}})
329 |
330 | -- nvim-cmp setup
331 | local cmp = require 'cmp'
332 | local luasnip = require 'luasnip'
333 |
334 | cmp.setup {
335 | snippet = {
336 | expand = function(args)
337 | luasnip.lsp_expand(args.body)
338 | end,
339 | },
340 | mapping = cmp.mapping.preset.insert {
341 | [''] = cmp.mapping.scroll_docs(-4),
342 | [''] = cmp.mapping.scroll_docs(4),
343 | [''] = cmp.mapping.complete(),
344 | [''] = cmp.mapping.confirm {
345 | behavior = cmp.ConfirmBehavior.Replace,
346 | select = true,
347 | },
348 | [''] = cmp.mapping(function(fallback)
349 | if cmp.visible() then
350 | cmp.select_next_item()
351 | elseif luasnip.expand_or_jumpable() then
352 | luasnip.expand_or_jump()
353 | else
354 | fallback()
355 | end
356 | end, { 'i', 's' }),
357 | [''] = cmp.mapping(function(fallback)
358 | if cmp.visible() then
359 | cmp.select_prev_item()
360 | elseif luasnip.jumpable(-1) then
361 | luasnip.jump(-1)
362 | else
363 | fallback()
364 | end
365 | end, { 'i', 's' }),
366 | },
367 | sources = {
368 | { name = 'nvim_lsp' },
369 | { name = 'luasnip' },
370 | },
371 | }
372 |
373 | require("nvim-tree").setup()
374 |
375 | require("presence").setup({
376 | auto_update = true,
377 | neovim_image_text = "Nya~",
378 | main_image = "neovim", -- Main image display (either "neovim" or "file")
379 | client_id = "793271441293967371",
380 | log_level = nil,
381 | debounce_timeout = 10,
382 | enable_line_number = true,
383 | blacklist = {},
384 | buttons = true,
385 | file_assets = {},
386 | show_time = true,
387 |
388 | -- Rich Presence text options
389 | editing_text = "Editing %s",
390 | file_explorer_text = "Browsing %s",
391 | git_commit_text = "Committing changes",
392 | plugin_manager_text = "Managing plugins",
393 | reading_text = "Reading %s",
394 | workspace_text = "Working on %s",
395 | line_number_text = "Line %s out of %s",
396 | })
397 |
398 | vim.api.nvim_set_hl(0, "pets_popup", { bg = "#22272e" })
399 | require("pets").setup({
400 | speed_multiplier = 1,
401 | random = true,
402 | death_animation = false,
403 | popup = {
404 | hl = { Normal = "pets_popup" },
405 | avoid_statusline = true,
406 | }
407 | })
408 |
409 | require("smartcolumn").setup()
410 |
411 | require("cmake-tools").setup {
412 | cmake_build_directory = "build"
413 | }
414 |
415 | require('barbar').setup {
416 | sidebar_filetypes = {
417 | NvimTree = true
418 | }
419 | }
420 |
421 | -- barbar mappings
422 |
423 | local map = vim.api.nvim_set_keymap
424 | local opts = { noremap = true, silent = true }
425 |
426 | -- Move to previous/next
427 | map('n', '', 'BufferPrevious', opts)
428 | map('n', '', 'BufferNext', opts)
429 | -- Re-order to previous/next
430 | map('n', '', 'BufferMovePrevious', opts)
431 | map('n', '>', 'BufferMoveNext', opts)
432 | -- Goto buffer in position...
433 | map('n', '', 'BufferGoto 1', opts)
434 | map('n', '', 'BufferGoto 2', opts)
435 | map('n', '', 'BufferGoto 3', opts)
436 | map('n', '', 'BufferGoto 4', opts)
437 | map('n', '', 'BufferGoto 5', opts)
438 | map('n', '', 'BufferGoto 6', opts)
439 | map('n', '', 'BufferGoto 7', opts)
440 | map('n', '', 'BufferGoto 8', opts)
441 | map('n', '', 'BufferGoto 9', opts)
442 | map('n', '', 'BufferLast', opts)
443 | -- Pin/unpin buffer
444 | map('n', '', 'BufferPin', opts)
445 | -- Close buffer
446 | map('n', '', 'BufferClose', opts)
447 |
448 |
--------------------------------------------------------------------------------
/picom/.config/picom.conf:
--------------------------------------------------------------------------------
1 | #################################
2 | # Corners #
3 | #################################
4 | # requires: https://github.com/sdhand/compton
5 | corner-radius = 5.0;
6 | rounded-corners-exclude = [
7 | #"window_type = 'normal'",
8 | #"class_g = 'kitty'",
9 | "class_g = 'Alacritty'",
10 | "class_g = 'Polybar'",
11 | "class_g = 'dev-lizainslie-saku-examples-editor-MainKt'",
12 | #"class_g = 'code-oss'",
13 | #"class_g = 'firefox'",
14 | #"class_g = 'Thunderbird'",
15 | "class_g ?= 'eww-bar'"
16 | ];
17 | round-borders = 0;
18 | round-borders-exclude = [
19 | #"class_g = 'TelegramDesktop'",
20 | ];
21 |
22 | # Specify a list of border width rules, in the format `PIXELS:PATTERN`,
23 | # Note we don't make any guarantee about possible conflicts with the
24 | # border_width set by the window manager.
25 | #
26 | # example:
27 | # round-borders-rule = [ "2:class_g = 'URxvt'" ];
28 | #
29 | round-borders-rule = [
30 | "3:class_g = 'XTerm'",
31 | "3:class_g = 'URxvt'",
32 | "10:class_g = 'Alacritty'",
33 | "15:class_g = 'Signal'"
34 | ];
35 |
36 | #################################
37 | # Shadows #
38 | #################################
39 |
40 | shadow-radius = 10;
41 |
42 | # The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
43 | # shadow-opacity = .75
44 |
45 | # The left offset for shadows, in pixels. (defaults to -15)
46 | # shadow-offset-x = -15
47 | shadow-offset-x = -10;
48 |
49 | # The top offset for shadows, in pixels. (defaults to -15)
50 | # shadow-offset-y = -15
51 | shadow-offset-y = -10;
52 |
53 |
54 |
55 | # Specify a list of conditions of windows that should have no shadow.
56 | #
57 | # examples:
58 | # shadow-exclude = "n:e:Notification";
59 | #
60 | # shadow-exclude = []
61 | shadow-exclude = [
62 | "name = 'Notification'",
63 | "class_g = 'Conky'",
64 | "class_g ?= 'Notify-osd'",
65 | "class_g = 'Cairo-clock'",
66 | "class_g = 'slop'",
67 | "class_g = 'Polybar'",
68 | "class_g ?= 'activate-linux'",
69 | "_GTK_FRAME_EXTENTS@:c"
70 | ];
71 |
72 | # Specify a X geometry that describes the region in which shadow should not
73 | # be painted in, such as a dock window region. Use
74 | # shadow-exclude-reg = "x10+0+0"
75 | # for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
76 | #
77 | # shadow-exclude-reg = ""
78 |
79 | # Crop shadow of a window fully on a particular Xinerama screen to the screen.
80 | # xinerama-shadow-crop = false
81 |
82 |
83 | #################################
84 | # Fading #
85 | #################################
86 |
87 |
88 | # Fade windows in/out when opening/closing and when opacity changes,
89 | # unless no-fading-openclose is used.
90 | # fading = false
91 | fading = true;
92 |
93 | # Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
94 | # fade-in-step = 0.028
95 | fade-in-step = 0.03;
96 |
97 | # Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
98 | # fade-out-step = 0.03
99 | fade-out-step = 0.03;
100 |
101 | # The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
102 | # fade-delta = 10
103 |
104 | # Specify a list of conditions of windows that should not be faded.
105 | # don't need this, we disable fading for all normal windows with wintypes: {}
106 | fade-exclude = [
107 | "class_g = 'slop'" # maim
108 | ]
109 |
110 | # Do not fade on window open/close.
111 | # no-fading-openclose = false
112 |
113 | # Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
114 | # no-fading-destroyed-argb = false
115 |
116 |
117 | #################################
118 | # Transparency / Opacity #
119 | #################################
120 |
121 |
122 | # Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
123 | # inactive-opacity = 1
124 | inactive-opacity = 0.8;
125 |
126 | # Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
127 | # frame-opacity = 1.0
128 | frame-opacity = 1.0;
129 |
130 | # Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
131 | # inactive-opacity-override = true
132 | inactive-opacity-override = false;
133 |
134 | # Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
135 | active-opacity = 1.0;
136 |
137 | # Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
138 | # inactive-dim = 0.0
139 |
140 | # Specify a list of conditions of windows that should always be considered focused.
141 | # focus-exclude = []
142 | focus-exclude = [
143 | "class_g = 'Cairo-clock'",
144 | "class_g = 'Bar'", # lemonbar
145 | "class_g = 'slop'" # maim
146 | ];
147 |
148 | # Use fixed inactive dim value, instead of adjusting according to window opacity.
149 | # inactive-dim-fixed = 1.0
150 |
151 | # Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
152 | # like `50:name *= "Firefox"`. picom-trans is recommended over this.
153 | # Note we don't make any guarantee about possible conflicts with other
154 | # programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
155 | # example:
156 | # opacity-rule = [ "80:class_g = 'URxvt'" ];
157 | #
158 | # opacity-rule = []
159 | opacity-rule = [
160 | "80:class_g = 'Bar'", # lemonbar
161 | "100:class_g = 'slop'", # maim
162 | "100:class_g = 'XTerm'",
163 | "100:class_g = 'URxvt'",
164 | "100:class_g = 'kitty'",
165 | "100:class_g = 'Alacritty'",
166 | "80:class_g = 'Polybar'",
167 | "100:class_g = 'code-oss'",
168 | "100:class_g = 'Meld'",
169 | "70:class_g = 'TelegramDesktop'",
170 | "90:class_g = 'Joplin'",
171 | "100:class_g = 'firefox'",
172 | "100:class_g = 'Thunderbird'"
173 | ];
174 |
175 |
176 | #################################
177 | # Background-Blurring #
178 | #################################
179 |
180 |
181 | # Parameters for background blurring, see the *BLUR* section for more information.
182 | # blur-method =
183 | # blur-size = 12
184 | #
185 | # blur-deviation = false
186 | #
187 | # blur-strength = 5
188 |
189 | # Blur background of semi-transparent / ARGB windows.
190 | # Bad in performance, with driver-dependent behavior.
191 | # The name of the switch may change without prior notifications.
192 | #
193 | # blur-background = true;
194 |
195 | # Blur background of windows when the window frame is not opaque.
196 | # Implies:
197 | # blur-background
198 | # Bad in performance, with driver-dependent behavior. The name may change.
199 | #
200 | # blur-background-frame = false;
201 |
202 |
203 | # Use fixed blur strength rather than adjusting according to window opacity.
204 | # blur-background-fixed = false;
205 |
206 |
207 | # Specify the blur convolution kernel, with the following format:
208 | # example:
209 | # blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
210 | #
211 | # blur-kern = ""
212 | blur-kern = "3x3box";
213 |
214 |
215 | blur: {
216 | # requires: https://github.com/ibhagwan/picom
217 | method = "kawase";
218 | #method = "kernel";
219 | strength = 7;
220 | # deviation = 1.0;
221 | # kernel = "11x11gaussian";
222 | background = false;
223 | background-frame = false;
224 | background-fixed = false;
225 | kern = "3x3box";
226 | }
227 |
228 | # Exclude conditions for background blur.
229 | blur-background-exclude = [
230 | #"window_type = 'dock'",
231 | #"window_type = 'desktop'",
232 | #"class_g = 'URxvt'",
233 | #
234 | # prevents picom from blurring the background
235 | # when taking selection screenshot with `main`
236 | # https://github.com/naelstrof/maim/issues/130
237 | "class_g = 'slop'",
238 | "_GTK_FRAME_EXTENTS@:c",
239 | "class_g ?= 'activate-linux'",
240 | "class_g ?= 'peek'",
241 | ];
242 |
243 | #################################
244 | # General Settings #
245 | #################################
246 |
247 | # Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
248 | # daemon = false
249 |
250 | # Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
251 | # `xrender` is the default one.
252 | #
253 | experimental-backends = true;
254 | backend = "glx";
255 | #backend = "xrender";
256 |
257 |
258 | # Enable/disable VSync.
259 | # vsync = false
260 | vsync = true;
261 |
262 | # Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
263 | # dbus = false
264 |
265 | # Try to detect WM windows (a non-override-redirect window with no
266 | # child that has 'WM_STATE') and mark them as active.
267 | #
268 | # mark-wmwin-focused = false
269 | mark-wmwin-focused = true;
270 |
271 | # Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
272 | # mark-ovredir-focused = false
273 | mark-ovredir-focused = true;
274 |
275 | # Try to detect windows with rounded corners and don't consider them
276 | # shaped windows. The accuracy is not very high, unfortunately.
277 | #
278 | # detect-rounded-corners = false
279 | detect-rounded-corners = true;
280 |
281 | # Detect '_NET_WM_OPACITY' on client windows, useful for window managers
282 | # not passing '_NET_WM_OPACITY' of client windows to frame windows.
283 | #
284 | # detect-client-opacity = false
285 | detect-client-opacity = true;
286 |
287 | # Specify refresh rate of the screen. If not specified or 0, picom will
288 | # try detecting this with X RandR extension.
289 | #
290 | # refresh-rate = 60
291 | refresh-rate = 0;
292 |
293 | # Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
294 | # rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
295 | # provided that the WM supports it.
296 | #
297 | # use-ewmh-active-win = false
298 |
299 | # Unredirect all windows if a full-screen opaque window is detected,
300 | # to maximize performance for full-screen windows. Known to cause flickering
301 | # when redirecting/unredirecting windows.
302 | #
303 | # unredir-if-possible = false
304 |
305 | # Delay before unredirecting the window, in milliseconds. Defaults to 0.
306 | # unredir-if-possible-delay = 0
307 |
308 | # Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
309 | # unredir-if-possible-exclude = []
310 |
311 | # Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
312 | # in the same group focused at the same time.
313 | #
314 | # detect-transient = false
315 | detect-transient = true;
316 |
317 | # Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
318 | # group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
319 | # detect-transient is enabled, too.
320 | #
321 | # detect-client-leader = false
322 | detect-client-leader = true;
323 |
324 | # Resize damaged region by a specific number of pixels.
325 | # A positive value enlarges it while a negative one shrinks it.
326 | # If the value is positive, those additional pixels will not be actually painted
327 | # to screen, only used in blur calculation, and such. (Due to technical limitations,
328 | # with use-damage, those pixels will still be incorrectly painted to screen.)
329 | # Primarily used to fix the line corruption issues of blur,
330 | # in which case you should use the blur radius value here
331 | # (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
332 | # with a 5x5 one you use `--resize-damage 2`, and so on).
333 | # May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
334 | #
335 | # resize-damage = 1
336 |
337 | # Specify a list of conditions of windows that should be painted with inverted color.
338 | # Resource-hogging, and is not well tested.
339 | #
340 | # invert-color-include = []
341 |
342 | # GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
343 | # Might cause incorrect opacity when rendering transparent content (but never
344 | # practically happened) and may not work with blur-background.
345 | # My tests show a 15% performance boost. Recommended.
346 | #
347 | # glx-no-stencil = false
348 |
349 | # GLX backend: Avoid rebinding pixmap on window damage.
350 | # Probably could improve performance on rapid window content changes,
351 | # but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
352 | # Recommended if it works.
353 | #
354 | # glx-no-rebind-pixmap = false
355 |
356 | # Disable the use of damage information.
357 | # This cause the whole screen to be redrawn everytime, instead of the part of the screen
358 | # has actually changed. Potentially degrades the performance, but might fix some artifacts.
359 | # The opposing option is use-damage
360 | #
361 | # no-use-damage = false
362 | use-damage = true;
363 |
364 | # Use X Sync fence to sync clients' draw calls, to make sure all draw
365 | # calls are finished before picom starts drawing. Needed on nvidia-drivers
366 | # with GLX backend for some users.
367 | #
368 | # xrender-sync-fence = false
369 |
370 | # GLX backend: Use specified GLSL fragment shader for rendering window contents.
371 | # See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
372 | # in the source tree for examples.
373 | #
374 | # glx-fshader-win = ""
375 |
376 | # Force all windows to be painted with blending. Useful if you
377 | # have a glx-fshader-win that could turn opaque pixels transparent.
378 | #
379 | # force-win-blend = false
380 |
381 | # Do not use EWMH to detect fullscreen windows.
382 | # Reverts to checking if a window is fullscreen based only on its size and coordinates.
383 | #
384 | # no-ewmh-fullscreen = false
385 |
386 | # Dimming bright windows so their brightness doesn't exceed this set value.
387 | # Brightness of a window is estimated by averaging all pixels in the window,
388 | # so this could comes with a performance hit.
389 | # Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
390 | #
391 | # max-brightness = 1.0
392 |
393 | # Make transparent windows clip other windows like non-transparent windows do,
394 | # instead of blending on top of them.
395 | #
396 | # transparent-clipping = false
397 |
398 | # Set the log level. Possible values are:
399 | # "trace", "debug", "info", "warn", "error"
400 | # in increasing level of importance. Case doesn't matter.
401 | # If using the "TRACE" log level, it's better to log into a file
402 | # using *--log-file*, since it can generate a huge stream of logs.
403 | #
404 | # log-level = "debug"
405 | log-level = "info";
406 |
407 | # Set the log file.
408 | # If *--log-file* is never specified, logs will be written to stderr.
409 | # Otherwise, logs will to written to the given file, though some of the early
410 | # logs might still be written to the stderr.
411 | # When setting this option from the config file, it is recommended to use an absolute path.
412 | #
413 | # log-file = "/path/to/your/log/file"
414 |
415 | # Show all X errors (for debugging)
416 | # show-all-xerrors = false
417 |
418 | # Write process ID to a file.
419 | # write-pid-path = "/path/to/your/log/file"
420 |
421 | # Window type settings
422 | #
423 | # 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
424 | # "unknown", "desktop", "dock", "toolbar", "menu", "utility",
425 | # "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
426 | # "tooltip", "notification", "combo", and "dnd".
427 | #
428 | # Following per window-type options are available: ::
429 | #
430 | # fade, shadow:::
431 | # Controls window-type-specific shadow and fade settings.
432 | #
433 | # opacity:::
434 | # Controls default opacity of the window type.
435 | #
436 | # focus:::
437 | # Controls whether the window of this type is to be always considered focused.
438 | # (By default, all window types except "normal" and "dialog" has this on.)
439 | #
440 | # full-shadow:::
441 | # Controls whether shadow is drawn under the parts of the window that you
442 | # normally won't be able to see. Useful when the window has parts of it
443 | # transparent, and you want shadows in those areas.
444 | #
445 | # redir-ignore:::
446 | # Controls whether this type of windows should cause screen to become
447 | # redirected again after been unredirected. If you have unredir-if-possible
448 | # set, and doesn't want certain window to cause unnecessary screen redirection,
449 | # you can set this to `true`.
450 | #
451 | wintypes:
452 | {
453 | normal = { fade = true; shadow = false; full-shadow = true; }
454 | tooltip = { fade = true; shadow = false; opacity = 0.75; focus = true; };
455 | dock = { shadow = false; }
456 | dnd = { shadow = false; }
457 | popup_menu = { opacity = 0.8; }
458 | dropdown_menu = { opacity = 0.8; }
459 | };
460 |
--------------------------------------------------------------------------------
/screenshots/01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LizAinslie/dotfiles/35aad8ccfc2007f9400048cabbc78e791cfad5a4/screenshots/01.png
--------------------------------------------------------------------------------
/screenshots/02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LizAinslie/dotfiles/35aad8ccfc2007f9400048cabbc78e791cfad5a4/screenshots/02.png
--------------------------------------------------------------------------------
/screenshots/03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LizAinslie/dotfiles/35aad8ccfc2007f9400048cabbc78e791cfad5a4/screenshots/03.png
--------------------------------------------------------------------------------
/screenshots/04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LizAinslie/dotfiles/35aad8ccfc2007f9400048cabbc78e791cfad5a4/screenshots/04.png
--------------------------------------------------------------------------------
/screenshots/05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LizAinslie/dotfiles/35aad8ccfc2007f9400048cabbc78e791cfad5a4/screenshots/05.png
--------------------------------------------------------------------------------