rc

Add some pending changes

Author
Maarten Vangeneugden
Date
Oct. 16, 2020, 12:42 p.m.
Hash
a864cd3b9c5df386ff63c38ed26ef8d01f616dc0
Parent
344479ab9946a4698073ff3332af1c1e1c4229dd
Modified files
.ycm_extra_conf.py
i3/config
install.sh

.ycm_extra_conf.py

6 additions and 0 deletions.

View changes Hide changes
1
1
2
2
import os
+
3
# version of Python's been installed (for example: 3.7 -> 3.8), but the YCMD
+
4
# server is not updated then, so it expects 3.7, and can't find it. Check the
+
5
# logs, and if it complains about that, go to the ycmd folder, and run
+
6
# "python build.py --all".
+
7
+
8
import os
3
9
import ycm_core
4
10
5
11
# These are the compilation flags that will be used in case there's no
6
12
# compilation database set (by default, one is not set).
7
13
flags = [
8
14
'-Wall',
9
15
'-Wextra',
10
16
'-Werror',
11
17
'-Wc++98-compat',
12
18
'-Wno-long-long',
13
19
'-Wno-variadic-macros',
14
20
'-fexceptions',
15
21
'-DNDEBUG',
16
22
# I try to refrain from having to write C++, so c99 is good for me.
17
23
'-std=c',
18
24
'-x',
19
25
'c',
20
26
'-isystem',
21
27
'../BoostParts',
22
28
'-isystem',
23
29
# This path will only work on OS X, but extra paths that don't exist are not
24
30
# harmful
25
31
'/System/Library/Frameworks/Python.framework/Headers',
26
32
'-isystem',
27
33
'../llvm/include',
28
34
'-isystem',
29
35
'../llvm/tools/clang/include',
30
36
'-I',
31
37
'.',
32
38
'-I',
33
39
'./ClangCompleter',
34
40
'-isystem',
35
41
'./tests/gmock/gtest',
36
42
'-isystem',
37
43
'./tests/gmock/gtest/include',
38
44
'-isystem',
39
45
'./tests/gmock',
40
46
'-isystem',
41
47
'./tests/gmock/include',
42
48
]
43
49
44
50
compilation_database_folder = ''
45
51
46
52
if os.path.exists( compilation_database_folder ):
47
53
  database = ycm_core.CompilationDatabase( compilation_database_folder )
48
54
else:
49
55
  database = None
50
56
51
57
SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ]
52
58
53
59
def DirectoryOfThisScript():
54
60
  return os.path.dirname( os.path.abspath( __file__ ) )
55
61
56
62
57
63
def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):
58
64
  if not working_directory:
59
65
    return list( flags )
60
66
  new_flags = []
61
67
  make_next_absolute = False
62
68
  path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
63
69
  for flag in flags:
64
70
    new_flag = flag
65
71
66
72
    if make_next_absolute:
67
73
      make_next_absolute = False
68
74
      if not flag.startswith( '/' ):
69
75
        new_flag = os.path.join( working_directory, flag )
70
76
71
77
    for path_flag in path_flags:
72
78
      if flag == path_flag:
73
79
        make_next_absolute = True
74
80
        break
75
81
76
82
      if flag.startswith( path_flag ):
77
83
        path = flag[ len( path_flag ): ]
78
84
        new_flag = path_flag + os.path.join( working_directory, path )
79
85
        break
80
86
81
87
    if new_flag:
82
88
      new_flags.append( new_flag )
83
89
  return new_flags
84
90
85
91
86
92
def IsHeaderFile( filename ):
87
93
  extension = os.path.splitext( filename )[ 1 ]
88
94
  return extension in [ '.h', '.hxx', '.hpp', '.hh' ]
89
95
90
96
91
97
def GetCompilationInfoForFile( filename ):
92
98
  # The compilation_commands.json file generated by CMake does not have entries
93
99
  # for header files. So we do our best by asking the db for flags for a
94
100
  # corresponding source file, if any. If one exists, the flags for that file
95
101
  # should be good enough.
96
102
  if IsHeaderFile( filename ):
97
103
    basename = os.path.splitext( filename )[ 0 ]
98
104
    for extension in SOURCE_EXTENSIONS:
99
105
      replacement_file = basename + extension
100
106
      if os.path.exists( replacement_file ):
101
107
        compilation_info = database.GetCompilationInfoForFile(
102
108
          replacement_file )
103
109
        if compilation_info.compiler_flags_:
104
110
          return compilation_info
105
111
    return None
106
112
  return database.GetCompilationInfoForFile( filename )
107
113
108
114
109
115
def FlagsForFile( filename, **kwargs ):
110
116
  if database:
111
117
    # Bear in mind that compilation_info.compiler_flags_ does NOT return a
112
118
    # python list, but a "list-like" StringVec object
113
119
    compilation_info = GetCompilationInfoForFile( filename )
114
120
    if not compilation_info:
115
121
      return None
116
122
117
123
    final_flags = MakeRelativePathsInFlagsAbsolute(
118
124
      compilation_info.compiler_flags_,
119
125
      compilation_info.compiler_working_dir_ )
120
126
  else:
121
127
    relative_to = DirectoryOfThisScript()
122
128
    final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to )
123
129
124
130
  return {
125
131
    'flags': final_flags,
126
132
    'do_cache': True
127
133
  }
128
134

i3/config

8 additions and 5 deletions.

View changes Hide changes
1
1
set $mod Mod4
2
2
# Home row direction keys, like vim
3
3
set $left h
4
4
set $down j
5
5
set $up k
6
6
set $right l
7
7
# Your preferred terminal emulator
8
8
set $term urxvt
9
9
# Your preferred application launcher
10
10
set $menu rofi -show run 
11
11
12
12
13
13
# start a terminal
14
14
bindsym $mod+Return exec $term
15
15
16
16
# kill focused window
17
17
bindsym $mod+Shift+q kill
18
18
19
19
# start your launcher
20
20
bindsym $mod+d exec $menu
21
21
22
22
# Start GNU Emacs
23
23
bindsym $mod+m exec emacsclient -nc -s gnuemacs
24
24
25
25
# Mouse+$mod to drag floating windows
26
26
floating_modifier $mod
27
27
28
28
# Lock screen
29
29
bindsym $mod+i exec i3lock-wrapper
30
30
31
31
# reload the configuration file
32
32
bindsym $mod+Shift+c reload
33
33
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
34
34
bindsym $mod+Shift+r restart
35
35
# exit i3 (logs you out of your X session)
36
36
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'"
37
37
38
38
# Managing outputs
39
39
output eDP-1 {
40
40
    # My current system doesn't support HiDPI. If I get such a system in the
41
41
    # future, the following lines can "activate" that.
42
42
    #scale 2
43
43
    #pos 0 0 res 3840x2160
44
44
    pos 0 0 res 1920x1080
45
45
    # Only thing that this lacks compared to Feh is that this can't deal with
46
46
    # directories, oh well.
47
47
    #bg ~/.wallpapers/* stretch
48
48
    bg ~/.wallpapers/generalp.png stretch
49
49
}
50
50
51
-
input 1:1:AT_Translated_Set_2_keyboard {
+
51
# xkb_model: Fallback model for now, I don't know mine for sure
+
52
# Makes every button exponentially more useful
+
53
# Because who really uses capslock
+
54
input 1:1:AT_Translated_Set_2_keyboard {
52
55
    xkb_layout us  # Sets keyboard to qwerty, just to be sure
53
-
    xkb_model pc105  # Fallback model for now, I don't know mine for sure
54
-
    xkb_variant altgr-intl  # Makes every button exponentially more useful
55
-
    xkb_options caps:swapescape  # Because who really uses capslock
56
-
    }
+
56
    xkb_model pc105
+
57
    xkb_variant altgr-intl
+
58
    xkb_options caps:swapescape
+
59
    }
57
60
#
58
61
# Moving around:
59
62
#
60
63
    # Move your focus around
61
64
    bindsym $mod+$left focus left
62
65
    bindsym $mod+$down focus down
63
66
    bindsym $mod+$up focus up
64
67
    bindsym $mod+$right focus right
65
68
    # or use $mod+[up|down|left|right]
66
69
    bindsym $mod+Left focus left
67
70
    bindsym $mod+Down focus down
68
71
    bindsym $mod+Up focus up
69
72
    bindsym $mod+Right focus right
70
73
71
74
    # _move_ the focused window with the same, but add Shift
72
75
    bindsym $mod+Shift+$left move left
73
76
    bindsym $mod+Shift+$down move down
74
77
    bindsym $mod+Shift+$up move up
75
78
    bindsym $mod+Shift+$right move right
76
79
    # ditto, with arrow keys
77
80
    bindsym $mod+Shift+Left move left
78
81
    bindsym $mod+Shift+Down move down
79
82
    bindsym $mod+Shift+Up move up
80
83
    bindsym $mod+Shift+Right move right
81
84
#
82
85
# Workspaces:
83
86
#
84
87
    # switch to workspace
85
88
    bindsym $mod+1 workspace 1
86
89
    bindsym $mod+2 workspace 2
87
90
    bindsym $mod+3 workspace 3
88
91
    bindsym $mod+4 workspace 4
89
92
    bindsym $mod+5 workspace 5
90
93
    bindsym $mod+6 workspace 6
91
94
    bindsym $mod+7 workspace 7
92
95
    bindsym $mod+8 workspace 8
93
96
    bindsym $mod+9 workspace 9
94
97
    bindsym $mod+0 workspace 10
95
98
    # move focused container to workspace
96
99
    bindsym $mod+Shift+1 move container to workspace 1
97
100
    bindsym $mod+Shift+2 move container to workspace 2
98
101
    bindsym $mod+Shift+3 move container to workspace 3
99
102
    bindsym $mod+Shift+4 move container to workspace 4
100
103
    bindsym $mod+Shift+5 move container to workspace 5
101
104
    bindsym $mod+Shift+6 move container to workspace 6
102
105
    bindsym $mod+Shift+7 move container to workspace 7
103
106
    bindsym $mod+Shift+8 move container to workspace 8
104
107
    bindsym $mod+Shift+9 move container to workspace 9
105
108
    bindsym $mod+Shift+0 move container to workspace 10
106
109
    # Note: workspaces can have any name you want, not just numbers.
107
110
    # We just use 1-10 as the default.
108
111
#
109
112
# Layout stuff:
110
113
#
111
114
    # You can "split" the current object of your focus with
112
115
    # $mod+b or $mod+v, for horizontal and vertical splits
113
116
    # respectively.
114
117
    bindsym $mod+b split h
115
118
    bindsym $mod+v split v
116
119
117
120
    # Switch the current container between different layout styles
118
121
    bindsym $mod+s layout stacking
119
122
    bindsym $mod+w layout tabbed
120
123
    bindsym $mod+e layout toggle split
121
124
122
125
    # Make the current focus fullscreen
123
126
    bindsym $mod+f fullscreen toggle
124
127
125
128
    # Toggle the current focus between tiling and floating mode
126
129
    bindsym $mod+Shift+space floating toggle
127
130
128
131
    # Swap focus between the tiling area and the floating area
129
132
    bindsym $mod+space focus mode_toggle
130
133
131
134
    # move focus to the parent container
132
135
    bindsym $mod+a focus parent
133
136
134
137
# I don't use scratchpad, so they're commented out
135
138
#bindsym $mod+Shift+minus move scratchpad
136
139
#bindsym $mod+minus scratchpad show
137
140
138
141
# Resizing containers:
139
142
#
140
143
mode "resize" {
141
144
    # left will shrink the containers width
142
145
    # right will grow the containers width
143
146
    # up will shrink the containers height
144
147
    # down will grow the containers height
145
148
    bindsym $left resize shrink width 10 px or 10 ppt
146
149
    bindsym $down resize grow height 10 px or 10 ppt
147
150
    bindsym $up resize shrink height 10 px or 10 ppt
148
151
    bindsym $right resize grow width 10 px or 10 ppt
149
152
150
153
    # ditto, with arrow keys
151
154
    bindsym Left resize shrink width 10 px or 10 ppt
152
155
    bindsym Down resize grow height 10 px or 10 ppt
153
156
    bindsym Up resize shrink height 10 px or 10 ppt
154
157
    bindsym Right resize grow width 10 px or 10 ppt
155
158
156
159
    # return to default mode
157
160
    bindsym Return mode "default"
158
161
    bindsym Escape mode "default"
159
162
}
160
163
bindsym $mod+r mode "resize"
161
164
162
165
# --recursive allows subdirectories to contain wallpapers as well, which is nice
163
166
# if you want to organize.
164
167
# --randomize chooses a different wallpaper for each screen (and of course,
165
168
# randomizes during startup)
166
169
# --bg-scale scales the wallpaper to fit the screen, so any 16:9 wallpaper is
167
170
# scaled to fit, instead of staying oversized.
168
171
#exec_always feh --recursive --randomize --bg-scale ~/.wallpapers/* 
169
172
exec compton -b
170
173
171
174
bar {
172
175
    swaybar_command waybar
173
176
    #status_command i3status
174
177
    font pango:Ubunto 10
175
178
    tray_padding 5
176
179
    colors {
177
180
        background #444444
178
181
        focused_workspace #F98C0E #F98C0E #333333
179
182
        active_workspace #19ea12 #19ea12 #FFFFFF
180
183
        inactive_workspace #232323 #111111 #888888
181
184
        urgent_workspace #D50000 #D50000 #FFFFFF
182
185
    }
183
186
}
184
187
185
188
186
189
# Makes my FN buttons work properly.
187
190
bindsym XF86AudioRaiseVolume exec amixer -q set Master 5%+ unmute
188
191
bindsym XF86AudioLowerVolume exec amixer -q set Master 5%- unmute
189
192
#bindsym XF86AudioToggle exec pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle
190
193
bindsym XF86AudioMute exec pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle
191
194
192
195
bindsym XF86MonBrightnessDown exec light -U 1
193
196
bindsym XF86MonBrightnessUp exec light -A 1
194
197
# Printscreen button
195
198
bindsym Print exec grim /tmp/$(date +'%Y-%m-%d-%H%M%S_grim.png')
196
199
# Combines grim with slurp for region screenshots
197
200
bindsym $mod+Print exec grim -g "$(slurp)"/tmp/$(date+'%Y-%m-%d-%H%M%S_grim.png')
198
201
199
202
200
203
# Font settings
201
204
font pango:Ubuntu Regular 11
202
205
203
206
# Border settings
204
207
hide_edge_borders smart
205
208
default_border normal
206
209
207
210
# Color settings
208
211
209
212
client.focused          #F98C0E #F98C0E #ffffff #F98C0E #F98C0E
210
213
client.focused_inactive #f9be7a #f9be7a #FFFFFF #f9be7a #f9be7a
211
214
client.unfocused        #444444 #444444 #FFFFFF #444444 #444444
212
215
client.urgent           #D50000 #D50000 #ffffff #D50000 #D50000
213
216
#client.placeholder
214
217
215
218
# Stops the mouse defining what the active window is.
216
219
focus_follows_mouse no
217
220
218
221
# i3-gaps configuration
219
222
#
220
223
# i3-gaps can only work properly if title bars are completely disabled, which the
221
224
# next line is responsible for.
222
225
#for_window [class="^.*"] border pixel 5
223
226
224
227
#gaps inner 15
225
228
#gaps outer 5
226
229
# smart_gaps disables gaps if there is only 1 container on the workspace.
227
230
#smart_gaps on
228
231
# smart_borders does the same thing. If set to "on", it will always disable the
229
232
# border if it's the only container on the workspace. If set to "no-gaps", it
230
233
# only disables the border if the gap size to the edge of the screen is 0.
231
234
#smart_borders no_gaps

install.sh

39 additions and 2 deletions.

View changes Hide changes
1
1
# particulary Arch, because that's the best GNU/Linux distro =P
2
2
3
3
# The next command will install the software that I'm bound to use on my PC.
4
4
sudo pacman -S --noconfirm neovim base-devel mpv openssh emacs 
5
5
echo "Don't forget to install the keys for SSH!\n"
6
6
7
7
# Installing shell data:
8
8
sudo pacman -S --noconfirm zsh zsh-completions zsh-grml-config
9
9
10
10
# Installing the Noto fonts:
11
11
sudo pacman -S --noconfirm noto-fonts noto-fonts-emoji
12
12
# Firefox:
13
-
sudo pacman -S --noconfirm firefox-developer-edition
+
13
+
14
##### SYSTEM MAITENANCE #####
+
15
# All tools that help with visualizing system parameters and associated other
+
16
# interesting stuff.
+
17
+
18
# iotop is useful for sorting programs by the amount of disk writes, so you can
+
19
# see what programs would benefit from tmpfs. Plus: It can prolong the lifespan
+
20
# of SSDs.
+
21
sudo pacman -S --noconfirm iotop
+
22
+
23
+
24
+
25
##### FIREFOX #####
+
26
# This browser is such a big chunk that it requires its own special treatment.
+
27
# Installs the browser itself:
+
28
sudo pacman -S --noconfirm firefox-developer-edition
14
29
# Uncomment next line for Dutch firefox translations.
15
-
#sudo pacman -S --noconfirm firefox-i18n-nl
+
30
# This is a script that puts the Firefox profile stuff in tmpfs, which is RAM,
+
31
# providing a significant speedup and reduces disk writes.
+
32
# Do note that this is for single profile systems only!
+
33
pacaur -S --noconfirm firefox-sync
+
34
+
35
# Uncomment next line for Dutch firefox translations, if desired.
+
36
#sudo pacman -S --noconfirm firefox-i18n-nl
16
37
17
38
# Sound handling (Don't forget to unmute using alsamixer!)
+
39
##### GPS/OPENSTREETMAP #####
+
40
echo "Installing an offline OpenStreetMap and GPS system is too complex to do
+
41
with a script. Please consult https://wiki.archlinux.org/index.php/GpsDrive for
+
42
information if you wish to do so.\n"
+
43
+
44
# Sound handling (Don't forget to unmute using alsamixer!)
18
45
sudo pacman -S --noconfirm alsa-utils pulseaudio pulseaudio-jack pulseaudio-bluetooth
19
46
echo "It's possible that the sound is muted. Unmute using Alsamixer.\n"
20
47
21
48
# To easily make use of the AUR, I'll first install Pacaur, which needs some
22
49
# special treatment up front:
23
50
cd ~/Downloads
24
51
wget https://aur.archlinux.org/cgit/aur.git/snapshot/pacaur.tar.gz
25
52
tar -x -f pacaur.tar.gz
26
53
cd pacaur
27
54
makepkg -sri --noconfirm
28
55
cd ..
29
56
rm -r pacaur
30
57
cd ~
31
58
32
59
# Making a directory in which to store all repositories. It's basically a
33
60
# repository for repositories =3
34
61
mkdir Repositories
35
62
36
63
# Making some common aliases for some pieces of software
37
64
alias vi nvim
38
65
alias vim nvim
39
66
40
67
# Some Python dependencies that need to be installed
41
68
pip install paramiko
42
69
43
70
# Collecting software from the AUR:
44
71
#pacaur -S vim-youcompleteme-git
45
72
pacaur -S --noconfirm clojure leiningen  # Clojure's 'project manager' thingy + Clojure
46
73
# Next line installs all required software for the desktop environment.
47
74
pacaur -S i3-gaps feh rofi compton i3lock-wrapper
48
75
# Installing Polybar and i3ipc-glib-git because the first one is awesome, the
49
76
# second one (allegedly) necessary for i3 interaction for Polybar:
50
77
#pacaur -S --noconfirm polybar i3ipc-glib-git # Disabled because I'm back to i3status
51
78
# i3blocks optional dependencies:
52
79
pacaur -S acpi bc lm_sensors playerctl sysstat
53
80
# A terminal emulator:
54
81
pacaur -S --noconfirm rxvt-unicode
55
82
# Also, DO NOT use Termite. It's an awful thing to work with NeoVim, and slows
56
83
# down to a fucking tortoise speed.
57
84
58
85
# Now, assuming I'm using the my standard setup for Yabar, I need the JSON
59
86
# parser to correctly output my workspace name:
60
87
pacaur -S --noconfirm jq
61
88
62
89
# Uncomment when there is a driver for the Validity VFS495 138a:003f figerprint
63
90
# reader, and still working on that gorgeous laptop:
64
91
#pacaur -S --noconfirm fprintd
65
92
66
93
pacaur -S --noconfirm rsync  # Used for backing up data that can't be done properly with Git
67
94
pacaur -S --noconfirm neomutt urlview  # Least sucky mail client
68
95
69
96
# Installing CRON job services
70
97
pacaur -S --noconfirm cronie
71
98
# TODO Add a line that makes a symbolic link to my custom Cron file
72
99
sudo systemctl enable cronie.service
73
100
74
101
pacaur -S --noconfirm irssi  # IRC client
75
102
pacaur -S --noconfirm ranger w3m  # File manager. w3m for image previews
76
103
# TODO link ranger/rc.conf and scope.sh symbolically to .config/ranger
77
104
78
105
# Fonts
79
106
# Now I don't like Ubuntu, but their fonts are amazing.
80
107
pacaur -S --noconfirm ttf-ubuntu-font-family ttf-hack ttf-fira-code
81
108
82
109
# MPV is used for playing videos, and is required when using the 'Watch with
83
110
# MPV' plugin for Firefox. It's way more lightweight, and I don't get why both
84
111
# Chrome and Firefox don't do this automatically, and default to software
85
112
# decoding instead on the hardware GPU.
86
113
pacaur -S --noconfirm mpv youtube-dl-git
87
114
+
115
##### PERFORMANCE #####
+
116
# This is mostly stuff about activating performance enhancing options.
+
117
+
118
# These lines will tell makepkg to
+
119
# 1. Use all available cores for compiling (if possible)
+
120
# 2. Move the build process to the /tmp folder, which is on tmpfs --> RAM,
+
121
#    which can speed up build times
+
122
sudo echo 'MAKEFLAGS="-j$(nproc)"' >> /etc/makepkg.conf
+
123
sudo echo 'BUILDDIR=/tmp/makepkg' >> /etc/makepkg.conf
+
124