Compare commits
1 Commits
master
...
199e17853f
| Author | SHA1 | Date | |
|---|---|---|---|
|
199e17853f
|
4
.git-crypt/.gitattributes
vendored
4
.git-crypt/.gitattributes
vendored
@@ -1,4 +0,0 @@
|
||||
# Do not edit this file. To specify the files to encrypt, create your own
|
||||
# .gitattributes file in the directory where your files are.
|
||||
* !filter !diff
|
||||
*.gpg binary
|
||||
Binary file not shown.
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -1,2 +0,0 @@
|
||||
ssh/.ssh/** filter=git-crypt diff=git-crypt
|
||||
ssh/.ssh/config !filter !diff
|
||||
13
.gitignore
vendored
13
.gitignore
vendored
@@ -1,8 +1,9 @@
|
||||
weechat/.weechat/*.log
|
||||
weechat/.weechat/logs
|
||||
weechat/.weechat/script/
|
||||
weechat/.weechat/sec.conf
|
||||
neovim/.config/nvim/.netrwhist
|
||||
neovim/.config/nvim/plugged
|
||||
gpg/.gnupg/**
|
||||
!gpg/.gnupg/gpg-agent.conf
|
||||
beets/.config/beets/**
|
||||
!beets/.config/beets/config.yaml
|
||||
kitty/.config/kitty/current-theme.conf
|
||||
kitty/.config/kitty/kitty.conf.bak
|
||||
deluge/.config/deluge/state/
|
||||
deluge/.config/deluge/*.state
|
||||
deluge/.config/deluge/icons/
|
||||
|
||||
@@ -19,8 +19,8 @@ git clone https://git.coolneng.duckdns.org/coolneng/dotfiles ~/.dotfiles
|
||||
cd ~/.dotfiles
|
||||
#+END_SRC
|
||||
|
||||
3. Run stow
|
||||
3. Execute stow on all the folders
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
stow */
|
||||
stow *
|
||||
#+END_SRC
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
directory: ~/Music
|
||||
library: ~/.config/beets/musiclibrary.db
|
||||
import:
|
||||
write: yes
|
||||
copy: no
|
||||
move: yes
|
||||
resume: ask
|
||||
incremental: yes
|
||||
quiet_fallback: skip
|
||||
timid: no
|
||||
plugins: fetchart embedart musicbrainz
|
||||
art_filename: folder
|
||||
fetchart:
|
||||
cover_format: jpeg
|
||||
Binary file not shown.
@@ -1,2 +0,0 @@
|
||||
[MIME Cache]
|
||||
x-scheme-handler/org-protocol=org-protocol.desktop;
|
||||
@@ -1,7 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=org-protocol
|
||||
Exec=emacsclient %u
|
||||
Type=Application
|
||||
Terminal=false
|
||||
Categories=System;
|
||||
MimeType=x-scheme-handler/org-protocol;
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"device": "alsa_input.pci-0000_00_1f.3.analog-stereo",
|
||||
"device-description": "Built-in Audio Analog Stereo",
|
||||
"device-profile": "analog-input-internal-mic",
|
||||
"preset-name": "Improved Microphone"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"device": "alsa_output.pci-0000_04_00.6.analog-stereo",
|
||||
"device-description": "Family 17h/19h HD Audio Controller Analog Stereo",
|
||||
"device-profile": "analog-output-headphones",
|
||||
"preset-name": "AKG K361"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"device": "alsa_output.pci-0000_04_00.6.analog-stereo",
|
||||
"device-description": "Family 17h/19h HD Audio Controller Analog Stereo",
|
||||
"device-profile": "analog-output-speaker",
|
||||
"preset-name": "Laptop speakers"
|
||||
}
|
||||
@@ -1,100 +0,0 @@
|
||||
{
|
||||
"input": {
|
||||
"blocklist": [],
|
||||
"compressor": {
|
||||
"attack": 20.0,
|
||||
"boost-amount": 6.0,
|
||||
"boost-threshold": -72.0,
|
||||
"hpf-frequency": 10.0,
|
||||
"hpf-mode": "off",
|
||||
"input-gain": 0.0,
|
||||
"knee": -6.0,
|
||||
"lpf-frequency": 20000.0,
|
||||
"lpf-mode": "off",
|
||||
"makeup": 0.0,
|
||||
"mode": "Downward",
|
||||
"output-gain": 0.0,
|
||||
"ratio": 4.0,
|
||||
"release": 100.0,
|
||||
"release-threshold": -120.0,
|
||||
"sidechain": {
|
||||
"lookahead": 0.0,
|
||||
"mode": "RMS",
|
||||
"preamp": 0.0,
|
||||
"reactivity": 10.0,
|
||||
"source": "Middle",
|
||||
"type": "Feed-forward"
|
||||
},
|
||||
"threshold": -12.0
|
||||
},
|
||||
"deesser": {
|
||||
"detection": "RMS",
|
||||
"f1-freq": 6000.0,
|
||||
"f1-level": 0.0,
|
||||
"f2-freq": 4500.0,
|
||||
"f2-level": 12.0,
|
||||
"f2-q": 1.0,
|
||||
"input-gain": 0.0,
|
||||
"laxity": 15,
|
||||
"makeup": 0.0,
|
||||
"mode": "Wide",
|
||||
"output-gain": 0.0,
|
||||
"ratio": 3.0,
|
||||
"sc-listen": false,
|
||||
"threshold": -18.0
|
||||
},
|
||||
"filter": {
|
||||
"frequency": 80.0,
|
||||
"inertia": 20.0,
|
||||
"input-gain": 0.0,
|
||||
"mode": "12dB/oct Highpass",
|
||||
"output-gain": 0.0,
|
||||
"resonance": -3.0
|
||||
},
|
||||
"gate": {
|
||||
"attack": 5.0,
|
||||
"detection": "RMS",
|
||||
"input-gain": 0.0,
|
||||
"knee": 9.0,
|
||||
"makeup": 0.0,
|
||||
"output-gain": 0.0,
|
||||
"range": -12.0,
|
||||
"ratio": 2.0,
|
||||
"release": 100.0,
|
||||
"stereo-link": "Average",
|
||||
"threshold": -18.0
|
||||
},
|
||||
"limiter": {
|
||||
"alr": false,
|
||||
"alr-attack": 5.0,
|
||||
"alr-knee": 0.0,
|
||||
"alr-release": 50.0,
|
||||
"attack": 5.0,
|
||||
"dithering": "None",
|
||||
"external-sidechain": false,
|
||||
"gain-boost": true,
|
||||
"input-gain": 0.0,
|
||||
"lookahead": 5.0,
|
||||
"mode": "Herm Thin",
|
||||
"output-gain": 0.0,
|
||||
"oversampling": "None",
|
||||
"release": 5.0,
|
||||
"sidechain-preamp": 0.0,
|
||||
"stereo-link": 100.0,
|
||||
"threshold": -1.0
|
||||
},
|
||||
"plugins_order": [
|
||||
"gate",
|
||||
"compressor",
|
||||
"filter",
|
||||
"deesser",
|
||||
"rnnoise",
|
||||
"limiter"
|
||||
],
|
||||
"rnnoise": {
|
||||
"input-gain": 0.0,
|
||||
"model-path": "",
|
||||
"output-gain": 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"output": {
|
||||
"blocklist": [],
|
||||
"convolver": {
|
||||
"autogain": true,
|
||||
"input-gain": 0.0,
|
||||
"ir-width": 100,
|
||||
"kernel-path": "/home/coolneng/.config/easyeffects/irs/AKG K361.irs",
|
||||
"output-gain": 0.0
|
||||
},
|
||||
"plugins_order": [
|
||||
"convolver"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,653 +0,0 @@
|
||||
{
|
||||
"output": {
|
||||
"autogain": {
|
||||
"target": -12.0
|
||||
},
|
||||
"blocklist": [],
|
||||
"equalizer": {
|
||||
"input-gain": -0.3,
|
||||
"left": {
|
||||
"band0": {
|
||||
"frequency": 22.59,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band1": {
|
||||
"frequency": 28.440000000000001,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band2": {
|
||||
"frequency": 35.799999999999997,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band3": {
|
||||
"frequency": 45.07,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band4": {
|
||||
"frequency": 56.740000000000002,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band5": {
|
||||
"frequency": 71.430000000000007,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band6": {
|
||||
"frequency": 89.930000000000007,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band7": {
|
||||
"frequency": 113.20999999999999,
|
||||
"gain": 4,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band8": {
|
||||
"frequency": 142.53,
|
||||
"gain": 4,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band9": {
|
||||
"frequency": 179.43000000000001,
|
||||
"gain": 4,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band10": {
|
||||
"frequency": 225.88999999999999,
|
||||
"gain": 4,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band11": {
|
||||
"frequency": 284.38,
|
||||
"gain": 4,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band12": {
|
||||
"frequency": 358.01999999999998,
|
||||
"gain": 4,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band13": {
|
||||
"frequency": 450.72000000000003,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band14": {
|
||||
"frequency": 567.41999999999996,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band15": {
|
||||
"frequency": 714.34000000000003,
|
||||
"gain": -1,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band16": {
|
||||
"frequency": 899.28999999999996,
|
||||
"gain": -2,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band17": {
|
||||
"frequency": 1132.1500000000001,
|
||||
"gain": -3.6000000000000001,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band18": {
|
||||
"frequency": 1425.29,
|
||||
"gain": -2.5,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band19": {
|
||||
"frequency": 1794.3299999999999,
|
||||
"gain": -1.5,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band20": {
|
||||
"frequency": 2258.9299999999998,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band21": {
|
||||
"frequency": 2843.8200000000002,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band22": {
|
||||
"frequency": 3580.1599999999999,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band23": {
|
||||
"frequency": 4507.1499999999996,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band24": {
|
||||
"frequency": 5674.1599999999999,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band25": {
|
||||
"frequency": 7143.3500000000004,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band26": {
|
||||
"frequency": 8992.9400000000005,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band27": {
|
||||
"frequency": 11321.450000000001,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band28": {
|
||||
"frequency": 14252.860000000001,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band29": {
|
||||
"frequency": 17943.279999999999,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
}
|
||||
},
|
||||
"mode": "IIR",
|
||||
"num-bands": 30,
|
||||
"output-gain": -6.5,
|
||||
"right": {
|
||||
"band0": {
|
||||
"frequency": 22.59,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band1": {
|
||||
"frequency": 28.440000000000001,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band2": {
|
||||
"frequency": 35.799999999999997,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band3": {
|
||||
"frequency": 45.07,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band4": {
|
||||
"frequency": 56.740000000000002,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band5": {
|
||||
"frequency": 71.430000000000007,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band6": {
|
||||
"frequency": 89.930000000000007,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band7": {
|
||||
"frequency": 113.20999999999999,
|
||||
"gain": 4,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band8": {
|
||||
"frequency": 142.53,
|
||||
"gain": 4,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band9": {
|
||||
"frequency": 179.43000000000001,
|
||||
"gain": 4,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band10": {
|
||||
"frequency": 225.88999999999999,
|
||||
"gain": 4,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band11": {
|
||||
"frequency": 284.38,
|
||||
"gain": 4,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band12": {
|
||||
"frequency": 358.01999999999998,
|
||||
"gain": 4,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band13": {
|
||||
"frequency": 450.72000000000003,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band14": {
|
||||
"frequency": 567.41999999999996,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band15": {
|
||||
"frequency": 714.34000000000003,
|
||||
"gain": -1,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band16": {
|
||||
"frequency": 899.28999999999996,
|
||||
"gain": -2,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band17": {
|
||||
"frequency": 1132.1500000000001,
|
||||
"gain": -3.6000000000000001,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band18": {
|
||||
"frequency": 1425.29,
|
||||
"gain": -2.5,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band19": {
|
||||
"frequency": 1794.3299999999999,
|
||||
"gain": -1.5,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band20": {
|
||||
"frequency": 2258.9299999999998,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band21": {
|
||||
"frequency": 2843.8200000000002,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band22": {
|
||||
"frequency": 3580.1599999999999,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band23": {
|
||||
"frequency": 4507.1499999999996,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band24": {
|
||||
"frequency": 5674.1599999999999,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band25": {
|
||||
"frequency": 7143.3500000000004,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band26": {
|
||||
"frequency": 8992.9400000000005,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band27": {
|
||||
"frequency": 11321.450000000001,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band28": {
|
||||
"frequency": 14252.860000000001,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
},
|
||||
"band29": {
|
||||
"frequency": 17943.279999999999,
|
||||
"gain": 0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 4.3600000000000003,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell"
|
||||
}
|
||||
},
|
||||
"split-channels": false
|
||||
},
|
||||
"exciter": {
|
||||
"amount": 6.0,
|
||||
"blend": 0.0,
|
||||
"ceil": 16000.0,
|
||||
"ceil-active": false,
|
||||
"harmonics": 8.000000000000002,
|
||||
"input-gain": -2.0,
|
||||
"output-gain": 0.0,
|
||||
"scope": 5500.0
|
||||
},
|
||||
"limiter": {
|
||||
"alr": false,
|
||||
"alr-attack": 5.0,
|
||||
"alr-knee": 0.0,
|
||||
"alr-release": 50.0,
|
||||
"attack": 5.0,
|
||||
"dithering": "None",
|
||||
"gain-boost": true,
|
||||
"input-gain": 0.0,
|
||||
"lookahead": 10.0,
|
||||
"mode": "Herm Thin",
|
||||
"output-gain": 0.0,
|
||||
"oversampling": "Half x4(3L)",
|
||||
"release": 5.0,
|
||||
"sidechain-preamp": 0.0,
|
||||
"stereo-link": 100.0,
|
||||
"threshold": 0.0
|
||||
},
|
||||
"plugins_order": [
|
||||
"equalizer",
|
||||
"exciter",
|
||||
"autogain",
|
||||
"limiter"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"output": {
|
||||
"blocklist": [],
|
||||
"convolver#0": {
|
||||
"autogain": true,
|
||||
"bypass": false,
|
||||
"input-gain": 0.0,
|
||||
"ir-width": 100,
|
||||
"kernel-path": "/home/coolneng/.config/easyeffects/irs/AKG K361.irs",
|
||||
"output-gain": 0.0
|
||||
},
|
||||
"plugins_order": [
|
||||
"convolver#0"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"output": {
|
||||
"blocklist": [],
|
||||
"convolver#0": {
|
||||
"autogain": true,
|
||||
"bypass": false,
|
||||
"input-gain": 0.0,
|
||||
"ir-width": 100,
|
||||
"kernel-path": "/home/coolneng/.config/easyeffects/irs/AKG K361.irs",
|
||||
"output-gain": 0.0
|
||||
},
|
||||
"plugins_order": [
|
||||
"convolver#0"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"output": {
|
||||
"blocklist": [],
|
||||
"convolver#0": {
|
||||
"autogain": true,
|
||||
"bypass": false,
|
||||
"input-gain": 0.0,
|
||||
"ir-width": 100,
|
||||
"kernel-name": "AKG K361",
|
||||
"output-gain": 0.0
|
||||
},
|
||||
"plugins_order": [
|
||||
"convolver#0"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -6,20 +6,27 @@ set -g man_standout -o blue
|
||||
set -g man_bold -o magenta
|
||||
|
||||
# Aliases
|
||||
alias f "fff"
|
||||
alias bc "bc -l"
|
||||
alias vim "nvim"
|
||||
alias docker-compose "podman-compose"
|
||||
alias hdmi-audio "pactl set-card-profile 0 output:hdmi-stereo-extra1"
|
||||
alias laptop-audio "pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo"
|
||||
alias sc "systemctl"
|
||||
alias scu "systemctl --user"
|
||||
alias jc "journalctl -eu"
|
||||
alias jcu "journalctl --user -eu"
|
||||
alias webtorrent "webtorrent -i -o /tmp/webtorrent --mpv --player-args='--sub-auto=all --sub-file-paths=Subs:subs'"
|
||||
alias ns "nix-shell -p"
|
||||
alias tmpdir "cd $(mktemp -d)"
|
||||
alias jc "journalctl -fu"
|
||||
|
||||
# Additional paths
|
||||
set PATH $PATH $HOME/.emacs.d/bin
|
||||
set PATH $PATH $HOME/.local/share/scripts
|
||||
|
||||
# fff colors [0-9]
|
||||
set -x FFF_COL1 4
|
||||
set -x FFF_COL2 8
|
||||
# fff favourites
|
||||
set -x FFF_FAV1 $HOME/Documents/Uni
|
||||
set -x FFF_FAV2 $HOME/Documents/Papers
|
||||
set -x FFF_FAV3 $HOME/Documents/Books/Academic
|
||||
set -x FFF_FAV4 $HOME/Documents/Education
|
||||
|
||||
# Set up direnv
|
||||
eval (direnv hook fish)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
SETUVAR __fish_init_2_39_8:\x1d
|
||||
SETUVAR __fish_init_2_3_0:\x1d
|
||||
SETUVAR __fish_init_3_x:\x1d
|
||||
SETUVAR __fish_initialized:3800
|
||||
SETUVAR __fish_initialized:3100
|
||||
SETUVAR fish_color_autosuggestion:555\x1ebrblack
|
||||
SETUVAR fish_color_cancel:\x2dr
|
||||
SETUVAR fish_color_command:white\x1e\x2d\x2dbold
|
||||
@@ -22,7 +22,7 @@ SETUVAR fish_color_operator:red
|
||||
SETUVAR fish_color_param:cyan
|
||||
SETUVAR fish_color_quote:green
|
||||
SETUVAR fish_color_redirection:red
|
||||
SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack
|
||||
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
|
||||
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
|
||||
SETUVAR fish_color_status:red
|
||||
SETUVAR fish_color_user:brgreen
|
||||
@@ -33,4 +33,3 @@ SETUVAR fish_pager_color_completion:\x1d
|
||||
SETUVAR fish_pager_color_description:B3A06D\x1eyellow
|
||||
SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
|
||||
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
|
||||
SETUVAR fish_pager_color_selected_background:\x2dr
|
||||
|
||||
@@ -12,13 +12,3 @@
|
||||
program = gpg2
|
||||
[tag]
|
||||
gpgsign = true
|
||||
[gitlab]
|
||||
user = akasroua
|
||||
[lfs]
|
||||
activitytimeout = 60
|
||||
[filter "lfs"]
|
||||
clean = git-lfs clean -- %f
|
||||
smudge = git-lfs smudge -- %f
|
||||
process = git-lfs filter-process
|
||||
required = true
|
||||
|
||||
|
||||
@@ -4,37 +4,22 @@ CMakeFiles/
|
||||
cmake_install.cmake
|
||||
compile_commands.json
|
||||
Debug/
|
||||
.ccls
|
||||
.ccls-cache
|
||||
.cache
|
||||
.clang_complete
|
||||
*.o
|
||||
/**/*.o
|
||||
bin
|
||||
obj/
|
||||
# LaTeX
|
||||
auto
|
||||
.auctex-auto
|
||||
/**/auto/
|
||||
# Misc
|
||||
.*.swp
|
||||
.#*
|
||||
*.log
|
||||
.DS_Store
|
||||
# Python
|
||||
.mypy_cache
|
||||
__pycache__
|
||||
.ipynb_checkpoints
|
||||
.venv
|
||||
**/__pycache__
|
||||
# Emacs
|
||||
.dir-locals.el
|
||||
# Dev environment with Nix
|
||||
.envrc
|
||||
.direnv
|
||||
.mysql
|
||||
.pgdata
|
||||
# Lock files
|
||||
# Java
|
||||
*.class
|
||||
*.jar
|
||||
.classpath
|
||||
.project
|
||||
.settings
|
||||
# Emacs
|
||||
.projectile-cache.eld
|
||||
# Platformio
|
||||
.pio
|
||||
.direnv
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
configurations:
|
||||
-
|
||||
host: disroot.org
|
||||
port: 993
|
||||
tls: true
|
||||
tlsOptions:
|
||||
rejectUnauthorized: true
|
||||
username: akasroua@disroot.org
|
||||
passwordCmd: 'pass mail/disroot'
|
||||
onNewMail: '~/.local/share/scripts/mail-sync disroot'
|
||||
-
|
||||
host: imap.gmail.com
|
||||
port: 993
|
||||
tls: true
|
||||
tlsOptions:
|
||||
rejectUnauthorized: true
|
||||
username: akasroua@gmail.com
|
||||
passwordCmd: 'pass mail/gmail'
|
||||
onNewMail: '~/.local/share/scripts/mail-sync gmail'
|
||||
boxes:
|
||||
-
|
||||
mailbox: INBOX
|
||||
@@ -1,12 +1,10 @@
|
||||
file:///home/coolneng/Downloads
|
||||
file:///home/coolneng/Documents
|
||||
file:///home/coolneng/Documents/Uni
|
||||
file:///home/coolneng/Documents/Work
|
||||
file:///home/coolneng/Documents/Paperwork
|
||||
file:///home/coolneng/Photos/Random%20dump
|
||||
file:///home/coolneng/Photos/Memri
|
||||
file:///home/coolneng/Photos/NPC
|
||||
file:///home/coolneng/Photos/GIFs
|
||||
file:///home/coolneng/Photos/Screenshots
|
||||
file:///home/coolneng/Photos/MuisLata
|
||||
file:///home/coolneng/Photos/Rehiwi
|
||||
file:///home/coolneng/Photos/Personal
|
||||
file:///home/coolneng/Photos/NPC
|
||||
file:///home/coolneng/Photos/Memri
|
||||
file:///home/coolneng/Photos/Random%20dump
|
||||
|
||||
15
imapnotify/.config/imapnotify/gmail.js
Normal file
15
imapnotify/.config/imapnotify/gmail.js
Normal file
@@ -0,0 +1,15 @@
|
||||
var child_process = require('child_process');
|
||||
|
||||
function getStdout(cmd) {
|
||||
var stdout = child_process.execSync(cmd);
|
||||
return stdout.toString().trim();
|
||||
}
|
||||
|
||||
exports.host = "imap.gmail.com"
|
||||
exports.port = 993;
|
||||
exports.tls = true;
|
||||
exports.username = "akasroua@gmail.com";
|
||||
exports.password = getStdout("pass mail/gmail");
|
||||
exports.onNewMail = "mbsync gmail"
|
||||
exports.onNewMailPost = "notmuch new"
|
||||
exports.boxes = [ "INBOX"];
|
||||
15
imapnotify/.config/imapnotify/uni.js
Normal file
15
imapnotify/.config/imapnotify/uni.js
Normal file
@@ -0,0 +1,15 @@
|
||||
var child_process = require('child_process');
|
||||
|
||||
function getStdout(cmd) {
|
||||
var stdout = child_process.execSync(cmd);
|
||||
return stdout.toString().trim();
|
||||
}
|
||||
|
||||
exports.host = "correo.ugr.es"
|
||||
exports.port = 993;
|
||||
exports.tls = true;
|
||||
exports.username = "akasroua@correo.ugr.es";
|
||||
exports.password = getStdout("pass mail/uni");
|
||||
exports.onNewMail = "mbsync uni"
|
||||
exports.onNewMailPost = "notmuch new"
|
||||
exports.boxes = [ "INBOX"];
|
||||
@@ -1,26 +1,17 @@
|
||||
profile multihead-dock {
|
||||
output eDP-1 enable position 1920,0
|
||||
output DP-1 enable mode 1920x1080 position 0,0
|
||||
exec swaymsg workspace "1: ", move workspace to eDP-1
|
||||
exec swaymsg workspace "3: ", move workspace to eDP-1
|
||||
exec swaymsg workspace "2: ", move workspace to DP-1
|
||||
exec swaymsg workspace "4: ", move workspace to DP-1
|
||||
exec light -S 100
|
||||
exec light -s sysfs/leds/tpacpi::kbd_backlight -S 0
|
||||
}
|
||||
|
||||
profile multihead-HDMI {
|
||||
output eDP-1 enable position 0,0
|
||||
output HDMI-A-1 enable mode 1920x1080 position 1920,0
|
||||
profile multihead {
|
||||
output eDP-1 enable
|
||||
output HDMI-A-2 enable
|
||||
exec swaymsg workspace "1: ", move workspace to eDP-1
|
||||
exec swaymsg workspace "3: ", move workspace to eDP-1
|
||||
exec swaymsg workspace "2: ", move workspace to HDMI-A-2
|
||||
exec swaymsg workspace "4: ", move workspace to HDMI-A-2
|
||||
exec swaymsg workspace "4: ", move workspace to HDMI-A-2
|
||||
exec light -S 100
|
||||
exec light -s sysfs/leds/tpacpi::kbd_backlight -S 0
|
||||
exec pkill waybar; waybar
|
||||
}
|
||||
|
||||
profile nomad {
|
||||
output eDP-1 enable
|
||||
exec light -S 50
|
||||
output eDP-1 enable mode 1920x1080
|
||||
exec light -S 70
|
||||
exec pkill waybar; waybar
|
||||
}
|
||||
|
||||
35
khal/.config/khal/config
Normal file
35
khal/.config/khal/config
Normal file
@@ -0,0 +1,35 @@
|
||||
[calendars]
|
||||
|
||||
[[bob_calendar_local]]
|
||||
path = ~/.calendars/radicale/
|
||||
type = discover
|
||||
|
||||
[[bob_contacts_local]]
|
||||
path = ~/.contacts/*
|
||||
type = discover
|
||||
|
||||
[[google_calendar_local]]
|
||||
path = ~/.calendars/google/amin.kasrou@jitkey.com/
|
||||
type = discover
|
||||
color = dark green
|
||||
|
||||
[locale]
|
||||
timeformat = %H:%M
|
||||
dateformat = %d/%m/
|
||||
longdateformat = %d/%m/%Y
|
||||
datetimeformat = %d/%m/%Y %H:%M
|
||||
longdatetimeformat = %d/%m/%Y %H:%M
|
||||
local_timezone= Europe/Brussels
|
||||
default_timezone= Europe/Brussels
|
||||
|
||||
[default]
|
||||
default_calendar = amin.kasrou@jitkey.com
|
||||
timedelta = 7d
|
||||
highlight_event_days = true
|
||||
print_new = event
|
||||
|
||||
[view]
|
||||
agenda_event_format = {calendar-color}{cancelled}{start-end-time-style} {title}{repeat-symbol}{reset}
|
||||
|
||||
[highlight_days]
|
||||
method = fg
|
||||
49
khard/.config/khard/khard.conf
Normal file
49
khard/.config/khard/khard.conf
Normal file
@@ -0,0 +1,49 @@
|
||||
# example configuration file for khard version >= 0.13.0
|
||||
# place it under $HOME/.config/khard/khard.conf
|
||||
|
||||
[addressbooks]
|
||||
[[contacts]]
|
||||
path = ~/.contacts/Contacts/
|
||||
|
||||
[general]
|
||||
debug = no
|
||||
default_action = list
|
||||
editor = vim
|
||||
merge_editor = vimdiff
|
||||
|
||||
[contact table]
|
||||
# display names by first or last name: first_name / last_name
|
||||
display = first_name
|
||||
# group by address book: yes / no
|
||||
group_by_addressbook = no
|
||||
# reverse table ordering: yes / no
|
||||
reverse = no
|
||||
# append nicknames to name column: yes / no
|
||||
show_nicknames = no
|
||||
# show uid table column: yes / no
|
||||
show_uids = yes
|
||||
# sort by first or last name: first_name / last_name
|
||||
sort = last_name
|
||||
# localize dates: yes / no
|
||||
localize_dates = yes
|
||||
# set a comma separated list of preferred phone number types in descending priority
|
||||
# or nothing for non-filtered alphabetical order
|
||||
preferred_phone_number_type = pref, cell, home
|
||||
# set a comma separated list of preferred email address types in descending priority
|
||||
# or nothing for non-filtered alphabetical order
|
||||
preferred_email_address_type = pref, work, home
|
||||
|
||||
[vcard]
|
||||
# extend contacts with your own private objects
|
||||
# these objects are stored with a leading "X-" before the object name in the vcard files
|
||||
# every object label may only contain letters, digits and the - character
|
||||
# example:
|
||||
# private_objects = Jabber, Skype, Twitter
|
||||
private_objects = Jabber, Skype, Twitter
|
||||
# preferred vcard version: 3.0 / 4.0
|
||||
preferred_version = 3.0
|
||||
# Look into source vcf files to speed up search queries: yes / no
|
||||
search_in_source_files = no
|
||||
# skip unparsable vcard files: yes / no
|
||||
skip_unparsable = no
|
||||
|
||||
51
khard/.config/khard/khard.conf~
Normal file
51
khard/.config/khard/khard.conf~
Normal file
@@ -0,0 +1,51 @@
|
||||
# example configuration file for khard version >= 0.13.0
|
||||
# place it under $HOME/.config/khard/khard.conf
|
||||
|
||||
[addressbooks]
|
||||
[[family]]
|
||||
path = ~/.contacts/family/
|
||||
[[friends]]
|
||||
path = ~/.contacts/friends/
|
||||
|
||||
[general]
|
||||
debug = no
|
||||
default_action = list
|
||||
editor = vim
|
||||
merge_editor = vimdiff
|
||||
|
||||
[contact table]
|
||||
# display names by first or last name: first_name / last_name
|
||||
display = first_name
|
||||
# group by address book: yes / no
|
||||
group_by_addressbook = no
|
||||
# reverse table ordering: yes / no
|
||||
reverse = no
|
||||
# append nicknames to name column: yes / no
|
||||
show_nicknames = no
|
||||
# show uid table column: yes / no
|
||||
show_uids = yes
|
||||
# sort by first or last name: first_name / last_name
|
||||
sort = last_name
|
||||
# localize dates: yes / no
|
||||
localize_dates = yes
|
||||
# set a comma separated list of preferred phone number types in descending priority
|
||||
# or nothing for non-filtered alphabetical order
|
||||
preferred_phone_number_type = pref, cell, home
|
||||
# set a comma separated list of preferred email address types in descending priority
|
||||
# or nothing for non-filtered alphabetical order
|
||||
preferred_email_address_type = pref, work, home
|
||||
|
||||
[vcard]
|
||||
# extend contacts with your own private objects
|
||||
# these objects are stored with a leading "X-" before the object name in the vcard files
|
||||
# every object label may only contain letters, digits and the - character
|
||||
# example:
|
||||
# private_objects = Jabber, Skype, Twitter
|
||||
private_objects = Jabber, Skype, Twitter
|
||||
# preferred vcard version: 3.0 / 4.0
|
||||
preferred_version = 3.0
|
||||
# Look into source vcf files to speed up search queries: yes / no
|
||||
search_in_source_files = no
|
||||
# skip unparsable vcard files: yes / no
|
||||
skip_unparsable = no
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
#: individual font faces and even specify special fonts for particular
|
||||
#: characters.
|
||||
|
||||
font_family Terminus (TTF)
|
||||
bold_font Terminus (TTF) Bold
|
||||
italic_font Terminus (TTF) Italic
|
||||
bold_italic_font Terminus (TTF) Bold Italic
|
||||
font_family Go Mono
|
||||
bold_font Go Mono Bold
|
||||
italic_font Go Mono Italic
|
||||
bold_italic_font Go Mono Bold Italic
|
||||
|
||||
#: You can specify different fonts for the bold/italic/bold-italic
|
||||
#: variants. To get a full list of supported fonts use the `kitty
|
||||
@@ -23,7 +23,7 @@ bold_italic_font Terminus (TTF) Bold Italic
|
||||
#: italic_font Operator Mono Book Italic
|
||||
#: bold_italic_font Operator Mono Medium Italic
|
||||
|
||||
font_size 16.5
|
||||
font_size 14.0
|
||||
|
||||
#: Font size (in pts)
|
||||
|
||||
@@ -73,10 +73,12 @@ box_drawing_scale 0.001, 1, 1.5, 2
|
||||
#: }}}
|
||||
|
||||
#: Cursor customization {{{
|
||||
# cursor #cccccc
|
||||
|
||||
cursor #cccccc
|
||||
|
||||
#: Default cursor color
|
||||
# cursor_text_color #111111
|
||||
|
||||
cursor_text_color #111111
|
||||
|
||||
#: Choose the color of text under the cursor. If you want it rendered
|
||||
#: with the background color of the cell underneath instead, use the
|
||||
@@ -152,7 +154,8 @@ mouse_hide_wait 3.0
|
||||
#: mouse not being used. Set to zero to disable mouse cursor hiding.
|
||||
#: Set to a negative value to hide the mouse cursor immediately when
|
||||
#: typing text.
|
||||
# url_color #0087bd
|
||||
|
||||
url_color #0087bd
|
||||
url_style curly
|
||||
|
||||
#: The color and style for highlighting URLs on mouse-over. url_style
|
||||
@@ -351,14 +354,17 @@ placement_strategy center
|
||||
#: this option. Using a value of center means the cell area will be
|
||||
#: placed centrally. A value of top-left means the padding will be on
|
||||
#: only the bottom and right edges.
|
||||
# active_border_color #00ff00
|
||||
|
||||
active_border_color #00ff00
|
||||
|
||||
#: The color for the border of the active window. Set this to none to
|
||||
#: not draw borders around the active window.
|
||||
# inactive_border_color #cccccc
|
||||
|
||||
inactive_border_color #cccccc
|
||||
|
||||
#: The color for the border of inactive windows
|
||||
# bell_border_color #ff5a00
|
||||
|
||||
bell_border_color #ff5a00
|
||||
|
||||
#: The color for the border of inactive windows in which a bell has
|
||||
#: occurred
|
||||
@@ -439,11 +445,12 @@ tab_title_template {title}
|
||||
#: title. If you wish to include the tab-index as well, use something
|
||||
#: like: {index}: {title}. Useful if you have shortcuts mapped for
|
||||
#: goto_tab N.
|
||||
# active_tab_foreground #000
|
||||
# active_tab_background #eee
|
||||
|
||||
active_tab_foreground #000
|
||||
active_tab_background #eee
|
||||
active_tab_font_style bold-italic
|
||||
# inactive_tab_foreground #444
|
||||
# inactive_tab_background #999
|
||||
inactive_tab_foreground #444
|
||||
inactive_tab_background #999
|
||||
inactive_tab_font_style normal
|
||||
|
||||
#: Tab bar colors and styles
|
||||
@@ -452,6 +459,9 @@ inactive_tab_font_style normal
|
||||
|
||||
#: Color scheme {{{
|
||||
|
||||
foreground #c6c8d1
|
||||
background #161821
|
||||
|
||||
#: The foreground and background colors
|
||||
|
||||
background_opacity 1.0
|
||||
@@ -480,6 +490,62 @@ dynamic_background_opacity no
|
||||
|
||||
dim_opacity 0.75
|
||||
|
||||
#: How much to dim text that has the DIM/FAINT attribute set. One
|
||||
#: means no dimming and zero means fully dimmed (i.e. invisible).
|
||||
|
||||
selection_foreground #000000
|
||||
|
||||
#: The foreground for text selected with the mouse. A value of none
|
||||
#: means to leave the color unchanged.
|
||||
|
||||
selection_background #fffacd
|
||||
|
||||
#: The background for text selected with the mouse.
|
||||
|
||||
|
||||
#: The 16 terminal colors. There are 8 basic colors, each color has a
|
||||
#: dull and bright version. You can also set the remaining colors from
|
||||
#: the 256 color table as color16 to color255.
|
||||
|
||||
color0 #161821
|
||||
color8 #6b7089
|
||||
|
||||
#: black
|
||||
|
||||
color1 #e27878
|
||||
color9 #e98989
|
||||
|
||||
#: red
|
||||
|
||||
color2 #b4be82
|
||||
color10 #c0ca8e
|
||||
|
||||
#: green
|
||||
|
||||
color3 #e2a478
|
||||
color11 #e9b189
|
||||
|
||||
#: yellow
|
||||
|
||||
color4 #84a0c6
|
||||
color12 #91acd1
|
||||
|
||||
#: blue
|
||||
|
||||
color5 #a093c7
|
||||
color13 #ada0d3
|
||||
|
||||
#: magenta
|
||||
|
||||
color6 #89b8c2
|
||||
color14 #95c4ce
|
||||
|
||||
#: cyan
|
||||
|
||||
color7 #c6c8d1
|
||||
color15 #d2d4de
|
||||
|
||||
#: white
|
||||
|
||||
#: }}}
|
||||
|
||||
@@ -574,7 +640,8 @@ term xterm-kitty
|
||||
#: }}}
|
||||
|
||||
#: OS specific tweaks {{{
|
||||
# macos_titlebar_color system
|
||||
|
||||
macos_titlebar_color system
|
||||
|
||||
#: Change the color of the kitty window's titlebar on macOS. A value
|
||||
#: of system means to use the default system color, a value of
|
||||
@@ -989,17 +1056,3 @@ map kitty_mod+delete clear_terminal reset active
|
||||
#: }}}
|
||||
|
||||
# }}}
|
||||
#
|
||||
# Open URL by clicking on it
|
||||
mouse_map left press ungrabbed,grabbed mouse_click_url
|
||||
|
||||
confirm_os_window_close 0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# BEGIN_KITTY_THEME
|
||||
# Nord
|
||||
include current-theme.conf
|
||||
# END_KITTY_THEME
|
||||
|
||||
185
mbsync/.mbsyncrc
185
mbsync/.mbsyncrc
@@ -2,9 +2,8 @@
|
||||
IMAPAccount gmail
|
||||
Host imap.gmail.com
|
||||
User akasroua@gmail.com
|
||||
AuthMechs LOGIN
|
||||
PassCmd "pass mail/gmail"
|
||||
TLSType IMAPS
|
||||
SSLType IMAPS
|
||||
CertificateFile /etc/ssl/certs/ca-certificates.crt
|
||||
|
||||
IMAPStore gmail-remote
|
||||
@@ -14,162 +13,74 @@ MaildirStore gmail-local
|
||||
Subfolders Verbatim
|
||||
# The trailing "/" is important
|
||||
Path ~/.mail/gmail/
|
||||
Inbox ~/.mail/gmail/inbox/
|
||||
Inbox ~/.mail/gmail/Inbox/
|
||||
|
||||
Channel sync-gmail-default
|
||||
Far :gmail-remote:
|
||||
Near :gmail-local:
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
Master :gmail-remote:
|
||||
Slave :gmail-local:
|
||||
|
||||
Channel sync-gmail-sent
|
||||
Far :gmail-remote:"[Gmail]/Sent Mail"
|
||||
Near :gmail-local:sent
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
Master :gmail-remote:"[Gmail]/Sent Mail"
|
||||
Slave :gmail-local:sent
|
||||
|
||||
Channel sync-gmail-trash
|
||||
Far :gmail-remote:"[Gmail]/Bin"
|
||||
Near :gmail-local:trash
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
Master :gmail-remote:"[Gmail]/Bin"
|
||||
Slave :gmail-local:trash
|
||||
|
||||
Channel sync-gmail-junk
|
||||
Far :gmail-remote:"[Gmail]/Spam"
|
||||
Near :gmail-local:junk
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
Channel sync-gmail-archive
|
||||
Far :gmail-remote:"[Gmail]/All Mail"
|
||||
Near :gmail-local:archive
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
Master :gmail-remote:"[Gmail]/Spam"
|
||||
Slave :gmail-local:junk
|
||||
|
||||
# Get all the channels together into a group.
|
||||
Group gmail
|
||||
Channel sync-gmail-default
|
||||
Channel sync-gmail-sent
|
||||
Channel sync-gmail-trash
|
||||
Channel sync-gmail-junk
|
||||
Channel sync-gmail-archive
|
||||
|
||||
IMAPAccount disroot
|
||||
Host disroot.org
|
||||
User akasroua@disroot.org
|
||||
AuthMechs LOGIN
|
||||
PassCmd "pass mail/disroot"
|
||||
TLSType IMAPS
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
IMAPAccount uni
|
||||
Host correo.ugr.es
|
||||
User akasroua@correo.ugr.es
|
||||
PassCmd "pass mail/uni"
|
||||
SSLType IMAPS
|
||||
CertificateFile /etc/ssl/certs/ca-certificates.crt
|
||||
|
||||
IMAPStore disroot-remote
|
||||
Account disroot
|
||||
IMAPStore uni-remote
|
||||
Account uni
|
||||
|
||||
MaildirStore disroot-local
|
||||
MaildirStore uni-local
|
||||
Subfolders Verbatim
|
||||
# The trailing "/" is important
|
||||
Path ~/.mail/disroot/
|
||||
Inbox ~/.mail/disroot/inbox/
|
||||
Path ~/.mail/uni/
|
||||
Inbox ~/.mail/uni/INBOX/
|
||||
|
||||
Channel uni-default
|
||||
Master :uni-remote:
|
||||
Slave :uni-local:
|
||||
|
||||
Channel uni-sent
|
||||
Master :uni-remote:"Sent"
|
||||
Slave :uni-local:sent
|
||||
|
||||
Channel uni-trash
|
||||
Master :uni-remote:"Trash"
|
||||
Slave :uni-local:trash
|
||||
|
||||
Channel uni-archive
|
||||
Master :uni-remote:"BUZONdeEntradaUGR"
|
||||
Slave :uni-local:archive
|
||||
|
||||
# Get all the channels together into a group.
|
||||
Group uni
|
||||
Channel uni-default
|
||||
Channel uni-sent
|
||||
Channel uni-trash
|
||||
Channel uni-archive
|
||||
|
||||
Channel sync-disroot-default
|
||||
Far :disroot-remote:
|
||||
Near :disroot-local:
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
|
||||
Channel sync-disroot-sent
|
||||
Far :disroot-remote:"Sent"
|
||||
Near :disroot-local:sent
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
|
||||
Channel sync-disroot-trash
|
||||
Far :disroot-remote:"Trash"
|
||||
Near :disroot-local:trash
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
|
||||
Channel sync-disroot-junk
|
||||
Far :disroot-remote:"Junk"
|
||||
Near :disroot-local:junk
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
Channel sync-disroot-archive
|
||||
Far :disroot-remote:"Archive"
|
||||
Near :disroot-local:archive
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
Channel sync-disroot-bookings
|
||||
Far :disroot-remote:"Bookings"
|
||||
Near :disroot-local:bookings
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
Channel sync-disroot-buying
|
||||
Far :disroot-remote:"Buying"
|
||||
Near :disroot-local:buying
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
|
||||
Channel sync-disroot-services
|
||||
Far :disroot-remote:"Services"
|
||||
Near :disroot-local:services
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
Channel sync-disroot-smart
|
||||
Far :disroot-remote:"SMART"
|
||||
Near :disroot-local:smart
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
Channel sync-disroot-travel
|
||||
Far :disroot-remote:"Travel"
|
||||
Near :disroot-local:travel
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
|
||||
Channel sync-disroot-jobs
|
||||
Far :disroot-remote:"Jobs"
|
||||
Near :disroot-local:jobs
|
||||
Create Both
|
||||
Expunge Both
|
||||
SyncState *
|
||||
|
||||
Group disroot
|
||||
Channel sync-disroot-default
|
||||
Channel sync-disroot-sent
|
||||
Channel sync-disroot-trash
|
||||
Channel sync-disroot-archive
|
||||
Channel sync-disroot-junk
|
||||
Channel sync-disroot-bookings
|
||||
Channel sync-disroot-buying
|
||||
Channel sync-disroot-services
|
||||
Channel sync-disroot-smart
|
||||
Channel sync-disroot-travel
|
||||
Channel sync-disroot-archive
|
||||
Channel sync-disroot-jobs
|
||||
|
||||
@@ -1,72 +1,8 @@
|
||||
|
||||
[Default Applications]
|
||||
application/pdf=org.pwmt.zathura.desktop
|
||||
text/html=firefox.desktop
|
||||
x-scheme-handler/http=firefox.desktop
|
||||
x-scheme-handler/https=firefox.desktop
|
||||
x-scheme-handler/about=firefox.desktop
|
||||
x-scheme-handler/unknown=firefox.desktop
|
||||
x-scheme-handler/msteams=teams-for-linux.desktop
|
||||
application/vnd.ms-asf=mpv.desktop
|
||||
application/vnd.rn-realmedia=mpv.desktop
|
||||
application/smil+xml=mpv.desktop
|
||||
application/x-matroska=mpv.desktop
|
||||
application/mxf=mpv.desktop
|
||||
application/ogg=mpv.desktop
|
||||
application/x-shorten=mpv.desktop
|
||||
application/x-mobipocket-ebook=calibre-gui.desktop
|
||||
application/x-sony-bbeb=calibre-gui.desktop
|
||||
application/pdf=org.pwmt.zathura.desktop
|
||||
application/vnd.oasis.opendocument.spreadsheet-flat-xml=calc.desktop
|
||||
application/vnd.ms-works=calc.desktop
|
||||
application/vnd.ms-excel=calc.desktop
|
||||
application/x-quattropro=calc.desktop
|
||||
application/vnd.dbf=calc.desktop
|
||||
application/vnd.stardivision.calc=calc.desktop
|
||||
application/vnd.oasis.opendocument.spreadsheet-template=calc.desktop
|
||||
application/vnd.oasis.opendocument.chart=calc.desktop
|
||||
application/vnd.oasis.opendocument.chart-template=calc.desktop
|
||||
application/vnd.sun.xml.calc.template=calc.desktop
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=calc.desktop
|
||||
application/x-gnumeric=calc.desktop
|
||||
application/vnd.apple.numbers=calc.desktop
|
||||
application/vnd.lotus-1-2-3=calc.desktop
|
||||
application/vnd.oasis.opendocument.spreadsheet=calc.desktop
|
||||
application/vnd.sun.xml.calc=calc.desktop
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.template=calc.desktop
|
||||
application/vnd.stardivision.chart=calc.desktop
|
||||
image/jpeg=swayimg.desktop
|
||||
image/tiff=swayimg.desktop
|
||||
image/x-tga=swayimg.desktop
|
||||
image/png=swayimg.desktop
|
||||
image/x-exr=swayimg.desktop
|
||||
image/gif=swayimg.desktop
|
||||
image/x-portable-anymap=swayimg.desktop
|
||||
image/webp=swayimg.desktop
|
||||
image/heif=swayimg.desktop
|
||||
image/avif=swayimg.desktop
|
||||
image/bmp=swayimg.desktop
|
||||
image/svg+xml=swayimg.desktop
|
||||
text/x-tex=emacsclient.desktop
|
||||
text/x-c++src=emacsclient.desktop
|
||||
text/x-java=emacsclient.desktop
|
||||
text/x-chdr=emacsclient.desktop
|
||||
text/tcl=emacsclient.desktop
|
||||
text/markdown=emacsclient.desktop
|
||||
text/x-pascal=emacsclient.desktop
|
||||
text/x-makefile=emacsclient.desktop
|
||||
text/x-moc=emacsclient.desktop
|
||||
text/plain=emacsclient.desktop
|
||||
text/x-csrc=emacsclient.desktop
|
||||
text/x-c++hdr=emacsclient.desktop
|
||||
text/html=firefox.desktop
|
||||
application/bitwig-device=com.bitwig.BitwigStudio.desktop
|
||||
application/bitwig-remote-controls=com.bitwig.BitwigStudio.desktop
|
||||
application/bitwig-package=com.bitwig.BitwigStudio.desktop
|
||||
application/bitwig-preset=com.bitwig.BitwigStudio.desktop
|
||||
application/bitwig-module=com.bitwig.BitwigStudio.desktop
|
||||
application/bitwig-scene=com.bitwig.BitwigStudio.desktop
|
||||
application/vnd.bitwig.dawproject=com.bitwig.BitwigStudio.desktop
|
||||
application/bitwig-project=com.bitwig.BitwigStudio.desktop
|
||||
application/bitwig-template=com.bitwig.BitwigStudio.desktop
|
||||
application/bitwig-modulator=com.bitwig.BitwigStudio.desktop
|
||||
application/bitwig-extension=com.bitwig.BitwigStudio.desktop
|
||||
application/bitwig-clip=com.bitwig.BitwigStudio.desktop
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
https://icecast.radiofrance.fr/fip-hifi.aac
|
||||
@@ -0,0 +1,14 @@
|
||||
Nujabes/Hydeout Productions (First Collection)/01 Moon Strut (intro).flac
|
||||
Nujabes/Hydeout Productions (First Collection)/02 Don't Even try it (feat Funky DL).flac
|
||||
Nujabes/Hydeout Productions (First Collection)/03 Strive (feat Apani B Fly Emcee).flac
|
||||
Nujabes/Hydeout Productions (First Collection)/04 Home Sweet Home (feat Substantial).flac
|
||||
Nujabes/Hydeout Productions (First Collection)/05 Still talking to you.flac
|
||||
Nujabes/Hydeout Productions (First Collection)/06 Luv (Sic) (feat Shing02).flac
|
||||
Nujabes/Hydeout Productions (First Collection)/07 Steadfast.flac
|
||||
Nujabes/Hydeout Productions (First Collection)/08 Lyrical Terrorists (feat Substantial, L-Universe).flac
|
||||
Nujabes/Hydeout Productions (First Collection)/09 Lose My Religion (remix) (feat L-Universe).flac
|
||||
Nujabes/Hydeout Productions (First Collection)/10 It's About Time (Fat Jon Remix) (feat Pase Rock).flac
|
||||
Nujabes/Hydeout Productions (First Collection)/11 Plazma Avenue (remix) (feat Five Deez).flac
|
||||
Nujabes/Hydeout Productions (First Collection)/12 Peoples don't stray (feat Funky DL).flac
|
||||
Nujabes/Hydeout Productions (First Collection)/13 D.T.F.N (feat Cise Starr).flac
|
||||
Nujabes/Hydeout Productions (First Collection)/14 Luv (Sic) Part 2 (feat Shing02).flac
|
||||
@@ -0,0 +1,14 @@
|
||||
Nujabes/Hydeout Productions (Second Collection)/01 Voice of Autumn.flac
|
||||
Nujabes/Hydeout Productions (Second Collection)/02 Sky is falling (feat C.L Smooth).flac
|
||||
Nujabes/Hydeout Productions (Second Collection)/03 Waltz for Life will born (feat Uyama Hiroto).flac
|
||||
Nujabes/Hydeout Productions (Second Collection)/04 Imaginary Folklore (feat Clammbon).flac
|
||||
Nujabes/Hydeout Productions (Second Collection)/05 Hikari (feat Substantial).flac
|
||||
Nujabes/Hydeout Productions (Second Collection)/06 Counting Stars.flac
|
||||
Nujabes/Hydeout Productions (Second Collection)/07 Another Reflection.flac
|
||||
Nujabes/Hydeout Productions (Second Collection)/08 Fly by Night (feat Five Deez).flac
|
||||
Nujabes/Hydeout Productions (Second Collection)/09 Old Light (Voices from 93 Million Miles Away remix) (feat Pase Rock).flac
|
||||
Nujabes/Hydeout Productions (Second Collection)/10 With Rainy Eyes (feat Emancipator).flac
|
||||
Nujabes/Hydeout Productions (Second Collection)/11 Luv (Sic) (Modal Soul remix) (feat Shing02).flac
|
||||
Nujabes/Hydeout Productions (Second Collection)/12 Windspeaks (feat Uyama Hiroto).flac
|
||||
Nujabes/Hydeout Productions (Second Collection)/13 Winter Lane (Nujabes remix) (feat DSK).flac
|
||||
Nujabes/Hydeout Productions (Second Collection)/14 After Hanabi (Listen to my Beats).flac
|
||||
@@ -1 +1,2 @@
|
||||
http://ice5.securenetsystems.net/KCSM
|
||||
http://ice7.securenetsystems.net/KCSM2
|
||||
|
||||
15
mpd/.config/mpd/playlists/Metaphorical Music.m3u
Normal file
15
mpd/.config/mpd/playlists/Metaphorical Music.m3u
Normal file
@@ -0,0 +1,15 @@
|
||||
Nujabes/Metaphorical Music/01 Blessing It -remix (feat. Substantial & Pase Rock from Five Deez).flac
|
||||
Nujabes/Metaphorical Music/02 Horn In The Middle.flac
|
||||
Nujabes/Metaphorical Music/03 Lady Brown (feat. Cise Starr from CYNE).flac
|
||||
Nujabes/Metaphorical Music/04 Kumomi.flac
|
||||
Nujabes/Metaphorical Music/05 Highs 2 Lows (feat. Cise Starr from CYNE).flac
|
||||
Nujabes/Metaphorical Music/06 Beat Laments The World.flac
|
||||
Nujabes/Metaphorical Music/07 Letter From Yokosuka.flac
|
||||
Nujabes/Metaphorical Music/08 Think Different (feat. Substantial).flac
|
||||
Nujabes/Metaphorical Music/09 A Day By Atmosphere Supreme.flac
|
||||
Nujabes/Metaphorical Music/10 Next View (feat. Uyama Hiroto).flac
|
||||
Nujabes/Metaphorical Music/11 Latitude -remix (feat. Five Deez).flac
|
||||
Nujabes/Metaphorical Music/12 F.I.L.O. (feat. Shing02).flac
|
||||
Nujabes/Metaphorical Music/13 Summer Gypsy.flac
|
||||
Nujabes/Metaphorical Music/14 The Final View.flac
|
||||
Nujabes/Metaphorical Music/15 Peaceland.flac
|
||||
14
mpd/.config/mpd/playlists/Modal Soul.m3u
Normal file
14
mpd/.config/mpd/playlists/Modal Soul.m3u
Normal file
@@ -0,0 +1,14 @@
|
||||
Nujabes/Modal Soul/01 Feather (featuring Cise Starr&Akin from CYNE).flac
|
||||
Nujabes/Modal Soul/02 ordinary joe (featuring Terry Callier).flac
|
||||
Nujabes/Modal Soul/03 reflection eternal.flac
|
||||
Nujabes/Modal Soul/04 Luv(sic.)pt3 (Featuring Shing02).flac
|
||||
Nujabes/Modal Soul/05 Music is mine.flac
|
||||
Nujabes/Modal Soul/06 Eclipse (feat. Substantial).flac
|
||||
Nujabes/Modal Soul/07 The Sign (feat. Pase Rock).flac
|
||||
Nujabes/Modal Soul/08 Thank you (featuring Apani B).flac
|
||||
Nujabes/Modal Soul/09 World's end Rhapsody.flac
|
||||
Nujabes/Modal Soul/10 Modal Soul (featuring Uyama Hiroto).flac
|
||||
Nujabes/Modal Soul/11 flowers.flac
|
||||
Nujabes/Modal Soul/12 sea of cloud.flac
|
||||
Nujabes/Modal Soul/13 Light on the land.flac
|
||||
Nujabes/Modal Soul/14 Horizon.flac
|
||||
1
mpd/.config/mpd/playlists/Nightwave Plaza.m3u
Normal file
1
mpd/.config/mpd/playlists/Nightwave Plaza.m3u
Normal file
@@ -0,0 +1 @@
|
||||
http://radio.plaza.one/mp3
|
||||
2
mpd/.config/mpd/playlists/Radio Nova.m3u
Normal file
2
mpd/.config/mpd/playlists/Radio Nova.m3u
Normal file
@@ -0,0 +1,2 @@
|
||||
http://novazz.ice.infomaniak.ch/novazz-128.mp3
|
||||
http://novazz.ice.infomaniak.net/novazz-128.mp3
|
||||
1
mpd/.config/mpd/playlists/Radio Nova: La Nuit.m3u
Normal file
1
mpd/.config/mpd/playlists/Radio Nova: La Nuit.m3u
Normal file
@@ -0,0 +1 @@
|
||||
http://nova-ln.ice.infomaniak.ch/nova-ln-128.mp3
|
||||
@@ -1 +0,0 @@
|
||||
https://stream.radioparadise.com/flac
|
||||
14
mpd/.config/mpd/playlists/Spiritual State.m3u
Normal file
14
mpd/.config/mpd/playlists/Spiritual State.m3u
Normal file
@@ -0,0 +1,14 @@
|
||||
Nujabes/Spiritual State/01 - Spiritual State (featuring Uyama Hiroto).flac
|
||||
Nujabes/Spiritual State/02 - Sky is Tumbling (featuring Cise Star).flac
|
||||
Nujabes/Spiritual State/03 - Gone Are The Days (featuring Uyama Hiroto).flac
|
||||
Nujabes/Spiritual State/04 - Spiral.flac
|
||||
Nujabes/Spiritual State/05 - City Lights (featuring Pase Rock & Substantial).flac
|
||||
Nujabes/Spiritual State/06 - Color of Autumn.flac
|
||||
Nujabes/Spiritual State/07 - Dawn on the Side.flac
|
||||
Nujabes/Spiritual State/08 - Yes (featuring Pase Rock).flac
|
||||
Nujabes/Spiritual State/09 - Rainyway Back Home.flac
|
||||
Nujabes/Spiritual State/10 - Far Fowls.flac
|
||||
Nujabes/Spiritual State/11 - Fellows.flac
|
||||
Nujabes/Spiritual State/12 - Waiting For The Clouds (featuring Substantial).flac
|
||||
Nujabes/Spiritual State/13 - Prayer.flac
|
||||
Nujabes/Spiritual State/14 - Island (featuring Uyama Hiroto & haruka nakamura).flac
|
||||
@@ -1,43 +0,0 @@
|
||||
# Vim-like Keybindings
|
||||
def_key "/"
|
||||
find
|
||||
def_key "/"
|
||||
find_item_forward
|
||||
|
||||
def_key "+"
|
||||
show_clock
|
||||
def_key "="
|
||||
volume_up
|
||||
|
||||
def_key "j"
|
||||
scroll_down
|
||||
|
||||
def_key "k"
|
||||
scroll_up
|
||||
|
||||
def_key "ctrl-u"
|
||||
page_up
|
||||
|
||||
def_key "ctrl-d"
|
||||
page_down
|
||||
|
||||
def_key "h"
|
||||
previous_column
|
||||
|
||||
def_key "l"
|
||||
next_column
|
||||
|
||||
def_key "."
|
||||
show_lyrics
|
||||
|
||||
def_key "n"
|
||||
next_found_item
|
||||
|
||||
def_key "N"
|
||||
previous_found_item
|
||||
|
||||
def_key "g"
|
||||
move_home
|
||||
|
||||
def_key "G"
|
||||
move_end
|
||||
@@ -1,6 +1,5 @@
|
||||
# mpd
|
||||
mpd_music_dir = "~/Music"
|
||||
mpd_connection_timeout = 60
|
||||
|
||||
## Selected tracks ##
|
||||
selected_item_prefix = "* "
|
||||
@@ -25,10 +24,8 @@ statusbar_visibility = "yes"
|
||||
cyclic_scrolling = "yes"
|
||||
titles_visibility = "no"
|
||||
display_bitrate = "yes"
|
||||
playlist_separate_albums = "yes"
|
||||
playlist_separate_albums = "no"
|
||||
ask_before_clearing_playlists = "no"
|
||||
media_library_primary_tag = "album_artist"
|
||||
media_library_hide_album_dates = "yes"
|
||||
|
||||
# Playlist
|
||||
user_interface = "alternative"
|
||||
@@ -41,4 +38,3 @@ alternative_header_second_line_format = "$6{%a} $b$8-$9 $4{%b}$9"
|
||||
now_playing_prefix = "$b$4>$5> "
|
||||
now_playing_suffix = "$2$/b$2"
|
||||
progressbar_look = "─┅─"
|
||||
search_engine_display_mode = "columns"
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
## Bind volume control to +/-
|
||||
+ add volume 5
|
||||
- add volume -5
|
||||
## Cycle through dynamic normalization, loud normalization or none
|
||||
F1 cycle-values af "lavfi=[dynaudnorm=s=30]" "lavfi=[loudnorm]" ""
|
||||
## Change subtitle size
|
||||
ALT+k add sub-scale +0.1
|
||||
ALT+j add sub-scale -0.1
|
||||
@@ -1,25 +1,16 @@
|
||||
## Subtitle settings
|
||||
sub-font-size=30
|
||||
sub-font-size=38
|
||||
embeddedfonts=no
|
||||
sub-font='Roboto Condensed'
|
||||
sub-auto=all
|
||||
sub-file-paths=Subs:subs
|
||||
## HW Decoding
|
||||
hwdec=vaapi
|
||||
vo=gpu
|
||||
profile=gpu-hq
|
||||
## Volume settings
|
||||
volume-max=200
|
||||
af=acompressor
|
||||
## Youtube-dl settings
|
||||
ytdl-format=bestvideo[height<=1080][vcodec!=av1]+bestaudio/best
|
||||
ytdl-format=bestvideo[height<=?1080][vcodec!=vp9]+bestaudio/best
|
||||
## Wayland
|
||||
gpu-context=wayland
|
||||
## Default window size
|
||||
geometry=70%x70%
|
||||
## HACK use API instead of lcoal database for sponsorblock
|
||||
script-opts-append=sponsorblock-local_database=no
|
||||
## Use pipewire for audio
|
||||
ao=pipewire
|
||||
## Save position of the video
|
||||
save-position-on-quit
|
||||
|
||||
@@ -3,18 +3,18 @@ defaults
|
||||
auth on
|
||||
tls on
|
||||
tls_trust_file /etc/ssl/certs/ca-certificates.crt
|
||||
port 587
|
||||
logfile /tmp/msmtp.log
|
||||
|
||||
# Accounts
|
||||
account gmail
|
||||
host smtp.gmail.com
|
||||
port 587
|
||||
from akasroua@gmail.com
|
||||
user akasroua@gmail.com
|
||||
passwordeval "pass mail/gmail"
|
||||
|
||||
account disroot
|
||||
host disroot.org
|
||||
from akasroua@disroot.org
|
||||
user akasroua@disroot.org
|
||||
passwordeval "pass mail/disroot"
|
||||
account uni
|
||||
host correo.ugr.es
|
||||
port 587
|
||||
from akasroua@correo.ugr.es
|
||||
user akasroua@correo.ugr.es
|
||||
passwordeval "pass mail/uni"
|
||||
|
||||
29
neomutt/.config/neomutt/accounts/gmail.muttrc
Normal file
29
neomutt/.config/neomutt/accounts/gmail.muttrc
Normal file
@@ -0,0 +1,29 @@
|
||||
# vim: filetype=neomuttrc
|
||||
# muttrc file for account gmail
|
||||
set realname = "Amin Kasrou Aouam"
|
||||
set from = "akasroua@gmail.com"
|
||||
set sendmail = "./.config/neomutt/etc/sendmail gmail"
|
||||
set folder = "~/.mail/gmail"
|
||||
#set header_cache = ~/.config/mutt/accounts/gmail/cache/headers
|
||||
#set message_cachedir = ~/.config/mutt/accounts/gmail/cache/bodies
|
||||
#set certificate_file = ~/.config/mutt/accounts/gmail/certificates
|
||||
#source "~/.config/mutt/credentials/getmuttpass gmail |"
|
||||
|
||||
set mbox_type = Maildir
|
||||
set ssl_starttls = yes
|
||||
set ssl_force_tls = yes
|
||||
|
||||
set record = "+sent"
|
||||
bind index,pager gg noop
|
||||
bind index,pager g noop
|
||||
bind index gg first-entry
|
||||
unmailboxes *
|
||||
mailboxes =junk =Inbox =trash =sent
|
||||
macro index,pager gi "<change-folder>=Inbox<enter>" "Go to inbox."
|
||||
macro index,pager gs "<change-folder>=sent<enter>" "Go to sent."
|
||||
macro index,pager gt "<change-folder>=trash<enter>" "Go to trash."
|
||||
macro index,pager gj "<change-folder>=junk<enter>" "Go to spam."
|
||||
set spoolfile = "+Inbox"
|
||||
set record = "+sent"
|
||||
set postponed = ""
|
||||
set trash = "+trash"
|
||||
29
neomutt/.config/neomutt/accounts/uni.muttrc
Normal file
29
neomutt/.config/neomutt/accounts/uni.muttrc
Normal file
@@ -0,0 +1,29 @@
|
||||
# vim: filetype=neomuttrc
|
||||
# muttrc file for account coolneng
|
||||
set realname = "Amin Kasrou Aouam"
|
||||
set from = "akasroua@correo.ugr.es"
|
||||
set sendmail = "./.config/neomutt/etc/sendmail uni"
|
||||
set folder = "~/.mail/uni"
|
||||
#set header_cache = ~/.config/mutt/accounts/coolneng/cache/headers
|
||||
#set message_cachedir = ~/.config/mutt/accounts/coolneng/cache/bodies
|
||||
#set certificate_file = ~/.config/mutt/accounts/coolneng/certificates
|
||||
#source "~/.config/mutt/credentials/getmuttpass coolneng |"
|
||||
|
||||
set mbox_type = Maildir
|
||||
set ssl_starttls = yes
|
||||
set ssl_force_tls = yes
|
||||
|
||||
set record = "+sent"
|
||||
bind index,pager gg noop
|
||||
bind index,pager g noop
|
||||
bind index gg first-entry
|
||||
unmailboxes *
|
||||
mailboxes =INBOX =trash =sent =archive
|
||||
macro index,pager gi "<change-folder>=INBOX<enter>" "Go to inbox."
|
||||
macro index,pager gs "<change-folder>=sent<enter>" "Go to sent."
|
||||
macro index,pager gt "<change-folder>=trash<enter>" "Go to trash."
|
||||
macro index,pager ga "<change-folder>=archive<enter>" "Go to archive."
|
||||
set spoolfile = "+INBOX"
|
||||
set record = "+sent"
|
||||
set postponed = ""
|
||||
set trash = "+trash"
|
||||
28
neomutt/.config/neomutt/etc/aliases
Normal file
28
neomutt/.config/neomutt/etc/aliases
Normal file
@@ -0,0 +1,28 @@
|
||||
## A file for aliases
|
||||
|
||||
# Uni staff
|
||||
alias dani dmolina@decsai.ugr.es
|
||||
alias cano carloscano@ugr.es
|
||||
alias paco carranzafr@ugr.es
|
||||
alias desigual cdemesa@decsai.ugr.es
|
||||
alias merino cmerino@ugr.es
|
||||
alias carlos carlosrodriguez@ugr.es
|
||||
alias mari mjesusrodriguez@ugr.es
|
||||
alias bea beap@ugr.es
|
||||
alias jorge jsguerrero@ugr.es
|
||||
alias boras rafagrosso@ugr.es
|
||||
alias fran fjrodriguez@decsai.ugr.es
|
||||
|
||||
# Uni students
|
||||
alias elenche elenche@correo.ugr.es
|
||||
alias bezout jesusmartinz@correo.ugr.es
|
||||
alias lesca lesca98@correo.ugr.es
|
||||
alias oumnia oumnia487@correo.ugr.es
|
||||
alias juanca jclm@correo.ugr.es
|
||||
|
||||
# Personal
|
||||
alias barbas arodasaparicio@gmail.com
|
||||
alias rafika rafibel63@gmail.com
|
||||
alias oekk luismata06@gmail.com
|
||||
alias walid mkasrou@gmail.com
|
||||
alias walida naouam61@gmail.com
|
||||
131
neomutt/.config/neomutt/etc/gpg.rc
Normal file
131
neomutt/.config/neomutt/etc/gpg.rc
Normal file
@@ -0,0 +1,131 @@
|
||||
# -*-muttrc-*-
|
||||
#
|
||||
# Command formats for gpg.
|
||||
#
|
||||
# Version notes:
|
||||
#
|
||||
# GPG 2.1 introduces the option "--pinentry-mode", which requires
|
||||
# the "loopback" argument in instances where "--passphrase-fd" is
|
||||
# used.
|
||||
#
|
||||
# Some of the older commented-out versions of the commands use gpg-2comp from:
|
||||
# http://70t.de/download/gpg-2comp.tar.gz
|
||||
#
|
||||
# %p The empty string when no passphrase is needed,
|
||||
# the string "PGPPASSFD=0" if one is needed.
|
||||
#
|
||||
# This is mostly used in conditional % sequences.
|
||||
#
|
||||
# %f Most PGP commands operate on a single file or a file
|
||||
# containing a message. %f expands to this file's name.
|
||||
#
|
||||
# %s When verifying signatures, there is another temporary file
|
||||
# containing the detached signature. %s expands to this
|
||||
# file's name.
|
||||
#
|
||||
# %a In "signing" contexts, this expands to the value of the
|
||||
# configuration variable $pgp_sign_as, if set, otherwise
|
||||
# $pgp_default_key. You probably need to
|
||||
# use this within a conditional % sequence.
|
||||
#
|
||||
# %r In many contexts, neomutt passes key IDs to pgp. %r expands to
|
||||
# a list of key IDs.
|
||||
|
||||
# Section A: Key Management
|
||||
|
||||
# The default key for encryption (used by $pgp_self_encrypt and
|
||||
# $postpone_encrypt).
|
||||
#
|
||||
# It will also be used for signing unless $pgp_sign_as is set to a
|
||||
# key.
|
||||
#
|
||||
# Unless your key does not have encryption capability, uncomment this
|
||||
# line and replace the keyid with your own.
|
||||
#
|
||||
# set pgp_default_key="0x12345678"
|
||||
|
||||
# If you have a separate signing key, or your key _only_ has signing
|
||||
# capability, uncomment this line and replace the keyid with your
|
||||
# signing keyid.
|
||||
#
|
||||
# set pgp_sign_as="0x87654321"
|
||||
|
||||
|
||||
# Section B: Commands
|
||||
|
||||
# Note that we explicitly set the comment armor header since GnuPG, when used
|
||||
# in some localiaztion environments, generates 8bit data in that header, thereby
|
||||
# breaking PGP/MIME.
|
||||
|
||||
# decode application/pgp
|
||||
#
|
||||
set pgp_decode_command="gpg --status-fd=2 %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --quiet --batch --output - %f"
|
||||
|
||||
# Verify a signature
|
||||
#
|
||||
set pgp_verify_command="gpg --status-fd=2 --no-verbose --quiet --batch --output - --verify %s %f"
|
||||
|
||||
# Decrypt an attachment
|
||||
#
|
||||
set pgp_decrypt_command="gpg --status-fd=2 %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --quiet --batch --output - --decrypt %f"
|
||||
|
||||
# Create a PGP/MIME signed attachment
|
||||
#
|
||||
# set pgp_sign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f"
|
||||
#
|
||||
set pgp_sign_command="gpg %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --batch --quiet --output - --armor --textmode %?a?--local-user %a? --detach-sign %f"
|
||||
|
||||
# Create a application/pgp inline signed message. This style is obsolete but still needed for Hushmail recipients and some MUAs.
|
||||
#
|
||||
# set pgp_clearsign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f"
|
||||
#
|
||||
set pgp_clearsign_command="gpg %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --batch --quiet --output - --armor --textmode %?a?--local-user %a? --clearsign %f"
|
||||
|
||||
# Create an encrypted attachment (note that some users include the --always-trust option here)
|
||||
#
|
||||
# set pgp_encrypt_only_command="/usr/libexec/neomutt/pgpewrap gpg-2comp -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
|
||||
#
|
||||
set pgp_encrypt_only_command="/usr/libexec/neomutt/pgpewrap gpg --batch --quiet --no-verbose --output - --textmode --armor --encrypt -- --recipient %r -- %f"
|
||||
|
||||
# Create an encrypted and signed attachment (note that some users include the --always-trust option here)
|
||||
#
|
||||
# set pgp_encrypt_sign_command="/usr/libexec/neomutt/pgpewrap gpg-2comp %?p?--passphrase-fd 0? -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
|
||||
#
|
||||
set pgp_encrypt_sign_command="/usr/libexec/neomutt/pgpewrap gpg %?p?--pinentry-mode loopback --passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - %?a?--local-user %a? --armor --sign --encrypt -- --recipient %r -- %f"
|
||||
|
||||
# Import a key into the public key ring
|
||||
#
|
||||
set pgp_import_command="gpg --no-verbose --import %f"
|
||||
|
||||
# Export a key from the public key ring
|
||||
#
|
||||
set pgp_export_command="gpg --no-verbose --armor --export %r"
|
||||
|
||||
# Verify a key
|
||||
#
|
||||
set pgp_verify_key_command="gpg --verbose --batch --fingerprint --check-sigs %r"
|
||||
|
||||
# Read in the public key ring
|
||||
#
|
||||
set pgp_list_pubring_command="gpg --no-verbose --batch --quiet --with-colons --with-fingerprint --with-fingerprint --list-keys %r"
|
||||
|
||||
# Read in the secret key ring
|
||||
#
|
||||
set pgp_list_secring_command="gpg --no-verbose --batch --quiet --with-colons --with-fingerprint --with-fingerprint --list-secret-keys %r"
|
||||
|
||||
# Fetch keys
|
||||
# set pgp_getkeys_command="pkspxycwrap %r"
|
||||
|
||||
# pattern for good signature - may need to be adapted to locale!
|
||||
# OK, here's a version which uses gnupg's message catalog:
|
||||
# set pgp_good_sign="^gpgv?: Good signature from"
|
||||
# set pgp_good_sign="`gettext -d gnupg -s 'Good signature from "' | tr -d '"'`"
|
||||
#
|
||||
# Output pattern to indicate a valid signature using --status-fd messages
|
||||
set pgp_good_sign="^\\[GNUPG:\\] GOODSIG"
|
||||
|
||||
# Output pattern to verify a decryption occurred
|
||||
# This is now deprecated by pgp_check_gpg_decrypt_status_fd:
|
||||
# set pgp_decryption_okay="^\\[GNUPG:\\] DECRYPTION_OKAY"
|
||||
set pgp_check_gpg_decrypt_status_fd
|
||||
|
||||
6
neomutt/.config/neomutt/etc/mailcap
Normal file
6
neomutt/.config/neomutt/etc/mailcap
Normal file
@@ -0,0 +1,6 @@
|
||||
text/html; w3m -I %{charset} -T text/html %s; copiousoutput;
|
||||
text/* ; nvim %s ; edit=nvim %s ; compose=nvim %s ; needsterminal
|
||||
image/*; imv %s ; copiousoutput
|
||||
application/pdf; zathura %s ;
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document; libreoffice %s ;
|
||||
application/pgp-encrypted; gpg -d '%s'; copiousoutput;
|
||||
71
neomutt/.config/neomutt/etc/muttcol
Normal file
71
neomutt/.config/neomutt/etc/muttcol
Normal file
@@ -0,0 +1,71 @@
|
||||
# vim: filetype=neomuttrc
|
||||
|
||||
# Default index colors:
|
||||
color index yellow default '.*'
|
||||
color index_author red default '.*'
|
||||
color index_number blue default
|
||||
color index_subject cyan default '.*'
|
||||
|
||||
# For new mail:
|
||||
color index brightyellow black "~N"
|
||||
color index_author brightred black "~N"
|
||||
color index_subject brightcyan black "~N"
|
||||
|
||||
# Header colors:
|
||||
color header blue default ".*"
|
||||
color header brightmagenta default "^(From)"
|
||||
color header brightcyan default "^(Subject)"
|
||||
color header brightwhite default "^(CC|BCC)"
|
||||
|
||||
mono bold bold
|
||||
mono underline underline
|
||||
mono indicator reverse
|
||||
mono error bold
|
||||
color normal default default
|
||||
color indicator brightblack white
|
||||
color sidebar_highlight red default
|
||||
color sidebar_divider brightblack black
|
||||
color sidebar_flagged red black
|
||||
color sidebar_new green black
|
||||
color normal brightyellow default
|
||||
color error red default
|
||||
color tilde black default
|
||||
color message cyan default
|
||||
color markers red white
|
||||
color attachment white default
|
||||
color search brightmagenta default
|
||||
color status brightyellow black
|
||||
color hdrdefault brightgreen default
|
||||
color quoted green default
|
||||
color quoted1 blue default
|
||||
color quoted2 cyan default
|
||||
color quoted3 yellow default
|
||||
color quoted4 red default
|
||||
color quoted5 brightred default
|
||||
color signature brightgreen default
|
||||
color bold black default
|
||||
color underline black default
|
||||
color normal default default
|
||||
|
||||
color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
|
||||
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
|
||||
color body green default "\`[^\`]*\`" # Green text between ` and `
|
||||
color body brightblue default "^# \.*" # Headings as bold blue
|
||||
color body brightcyan default "^## \.*" # Subheadings as bold cyan
|
||||
color body brightgreen default "^### \.*" # Subsubheadings as bold green
|
||||
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
|
||||
color body brightcyan default "[;:][-o][)/(|]" # emoticons
|
||||
color body brightcyan default "[;:][)(|]" # emoticons
|
||||
color body brightcyan default "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\
|
||||
|FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\
|
||||
|IRL|RTFM|ROTFL|ROFL|YMMV)[*]?"
|
||||
color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
|
||||
color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
|
||||
color body red default "(BAD signature)"
|
||||
color body cyan default "(Good signature)"
|
||||
color body brightblack default "^gpg: Good signature .*"
|
||||
color body brightyellow default "^gpg: "
|
||||
color body brightyellow red "^gpg: BAD signature from.*"
|
||||
mono body bold "^gpg: Good signature"
|
||||
mono body bold "^gpg: BAD signature from.*"
|
||||
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]""']))']))']))']))']))']))']))']))']))']))']))']))'])']))))))])]"
|
||||
4
neomutt/.config/neomutt/etc/sendmail
Executable file
4
neomutt/.config/neomutt/etc/sendmail
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
nix-shell -p python38
|
||||
python ~/.local/bin/MIMEmbellish | msmtp -a $1 -t
|
||||
1
neomutt/.config/neomutt/keys/gmail.gpg
Normal file
1
neomutt/.config/neomutt/keys/gmail.gpg
Normal file
@@ -0,0 +1 @@
|
||||
<EFBFBD>
|
||||
1
neomutt/.config/neomutt/keys/uni.gpg
Normal file
1
neomutt/.config/neomutt/keys/uni.gpg
Normal file
@@ -0,0 +1 @@
|
||||
<EFBFBD>
|
||||
89
neomutt/.config/neomutt/neomuttrc
Normal file
89
neomutt/.config/neomutt/neomuttrc
Normal file
@@ -0,0 +1,89 @@
|
||||
#vim: filetype=neomuttrc
|
||||
# This is the general mutt config which has the settings that all accounts use.
|
||||
bind index,pager i noop
|
||||
bind index,pager g noop
|
||||
bind index \Cf noop
|
||||
source etc/muttcol
|
||||
source etc/aliases
|
||||
source personal.muttrc
|
||||
set sleep_time = 0
|
||||
set sort = 'reverse-date'
|
||||
set editor = $EDITOR
|
||||
set copy = no
|
||||
set timeout = "15"
|
||||
set mail_check = "30"
|
||||
set imap_idle = yes
|
||||
set beep_new = yes
|
||||
set mailcap_path = ~/.config/neomutt/etc/mailcap
|
||||
set date_format="%d/%m/%y %H:%M"
|
||||
set index_format="%2C %zs %?X?A& ? %D %-15.15F %s (%-4.4c)"
|
||||
set markers = no
|
||||
set mark_old = no
|
||||
set mime_forward = yes
|
||||
set smtp_authenticators = 'gssapi:login'
|
||||
set wait_key = no
|
||||
auto_view text/html
|
||||
auto_view application/pgp-encrypted
|
||||
alternative_order text/plain text/enriched text/html
|
||||
set rfc2047_parameters = yes
|
||||
set send_charset = 'us-ascii:utf-8'
|
||||
set ssl_use_tlsv1_2=yes
|
||||
|
||||
# General remappings
|
||||
bind editor <space> noop
|
||||
bind index G last-entry
|
||||
bind index gg first-entry
|
||||
bind pager j next-line
|
||||
bind pager k previous-line
|
||||
bind pager gg top
|
||||
bind pager G bottom
|
||||
bind index d half-down
|
||||
bind index u half-up
|
||||
bind index D delete-message
|
||||
bind index U undelete-message
|
||||
bind index F search
|
||||
bind index,pager R group-reply
|
||||
bind index,pager \031 previous-undeleted # Mouse wheel
|
||||
bind index,pager \005 next-undeleted # Mouse wheel
|
||||
macro index,pager S <sync-mailbox>
|
||||
macro index,pager \Cu |urlscan\n
|
||||
macro index,pager ,, |urlscan\n
|
||||
|
||||
# View attachments properly.
|
||||
bind attach <return> view-mailcap
|
||||
set fast_reply # skip to compose when replying
|
||||
set fcc_attach # save attachments with the body
|
||||
unset mime_forward # forward attachments as part of body
|
||||
set forward_format = "Fwd: %s" # format of subject when forwarding
|
||||
set forward_decode # decode when forwarding
|
||||
set forward_quote # include message in forwards
|
||||
set reverse_name # reply as whomever it was to
|
||||
set include # include message in replies
|
||||
|
||||
#Ctrl-R to mark all as read
|
||||
macro index \Cr "T~U<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" "mark all messages as read"
|
||||
#
|
||||
# #sync email
|
||||
macro index o "<shell-escape>mbsync -a 2>/dev/null 1>&2 &<enter>" "run mbsync to sync all mail"
|
||||
|
||||
# #copy/move dialogs
|
||||
macro index C "<copy-message>?<toggle-mailboxes>" "copy a message to a mailbox"
|
||||
macro index M "<save-message>?<toggle-mailboxes>" "move a message to a mailbox"
|
||||
|
||||
# Notmuch searching
|
||||
macro index \Cf "<enter-command>unset wait_key<enter><shell-escape>read -p 'notmuch query: ' x; echo \$x >~/.cache/mutt_terms<enter><limit>~i \"\`notmuch search --output=messages \$(cat ~/.cache/mutt_terms) | head -n 600 | perl -le '@a=<>;chomp@a;s/\^id:// for@a;$,=\"|\";print@a'\`\"<enter>" "show only messages matching a notmuch pattern"
|
||||
macro index A "<limit>all\n" "show all messages (undo limit)"
|
||||
|
||||
# # Sidebar mappings
|
||||
set sidebar_visible = yes
|
||||
set sidebar_width = 20
|
||||
set sidebar_short_path = yes
|
||||
set sidebar_next_new_wrap = yes
|
||||
set mail_check_stats
|
||||
set sidebar_format = '%B%?F? [%F]?%* %?N?%N/? %?S?%S?'
|
||||
bind index,pager \Ck sidebar-prev
|
||||
bind index,pager \Cj sidebar-next
|
||||
bind index,pager \Co sidebar-open
|
||||
bind index,pager \Cp sidebar-prev-new
|
||||
bind index,pager \Cn sidebar-next-new
|
||||
bind index,pager B sidebar-toggle-visible
|
||||
4
neomutt/.config/neomutt/personal.muttrc
Normal file
4
neomutt/.config/neomutt/personal.muttrc
Normal file
@@ -0,0 +1,4 @@
|
||||
macro index,pager i2 '<sync-mailbox><enter-command>source "/home/coolneng/.config/neomutt"/accounts/gmail.muttrc<enter><change-folder>!<enter>'
|
||||
source /home/coolneng/.config/neomutt/accounts/gmail.muttrc
|
||||
macro index,pager i1 '<sync-mailbox><enter-command>source "/home/coolneng/.config/neomutt"/accounts/uni.muttrc<enter><change-folder>!<enter>'
|
||||
source /home/coolneng/.config/neomutt/accounts/uni.muttrc
|
||||
238
neomutt/.local/bin/MIMEmbellish
Executable file
238
neomutt/.local/bin/MIMEmbellish
Executable file
@@ -0,0 +1,238 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import re
|
||||
import sys
|
||||
import email
|
||||
import shlex
|
||||
import mimetypes
|
||||
import subprocess
|
||||
from copy import copy
|
||||
from hashlib import md5
|
||||
from email import charset
|
||||
from email import encoders
|
||||
from email.mime.text import MIMEText
|
||||
from email.mime.multipart import MIMEMultipart
|
||||
from email.mime.nonmultipart import MIMENonMultipart
|
||||
from os.path import basename, splitext, expanduser
|
||||
|
||||
|
||||
charset.add_charset('utf-8', charset.SHORTEST, '8bit')
|
||||
|
||||
|
||||
def pandoc(from_format, to_format='markdown', plain='markdown', title=None):
|
||||
markdown = ('markdown'
|
||||
'-blank_before_blockquote')
|
||||
|
||||
if from_format == 'plain':
|
||||
from_format = plain
|
||||
if from_format == 'markdown':
|
||||
from_format = markdown
|
||||
if to_format == 'markdown':
|
||||
to_format = markdown
|
||||
|
||||
command = 'pandoc -f {} -t {} --standalone --highlight-style=tango'
|
||||
if to_format in ('html', 'html5'):
|
||||
if title is not None:
|
||||
command += ' --variable=pagetitle:{}'.format(shlex.quote(title))
|
||||
command += ' --webtex --template={}'.format(
|
||||
expanduser('~/.pandoc/templates/email.html'))
|
||||
return command.format(from_format, to_format)
|
||||
|
||||
|
||||
def gmailfy(payload):
|
||||
return payload.replace('<blockquote>',
|
||||
'<blockquote class="gmail_quote" style="'
|
||||
'padding: 0 7px 0 7px;'
|
||||
'border-left: 2px solid #cccccc;'
|
||||
'font-style: italic;'
|
||||
'margin: 0 0 7px 3px;'
|
||||
'">')
|
||||
|
||||
|
||||
def make_alternative(message, part):
|
||||
alternative = convert(part, 'html',
|
||||
pandoc(part.get_content_subtype(),
|
||||
to_format='html',
|
||||
title=message.get('Subject')))
|
||||
alternative.set_payload(gmailfy(alternative.get_payload()))
|
||||
return alternative
|
||||
|
||||
|
||||
def make_replacement(message, part):
|
||||
return convert(part, 'plain', pandoc(part.get_content_subtype()))
|
||||
|
||||
|
||||
def convert(part, to_subtype, command):
|
||||
payload = part.get_payload()
|
||||
if isinstance(payload, str):
|
||||
payload = payload.encode('utf-8')
|
||||
else:
|
||||
payload = part.get_payload(None, True)
|
||||
if not isinstance(payload, bytes):
|
||||
payload = payload.encode('utf-8')
|
||||
process = subprocess.run(
|
||||
shlex.split(command),
|
||||
input=payload, stdout=subprocess.PIPE, check=True)
|
||||
return MIMEText(process.stdout, to_subtype, 'utf-8')
|
||||
|
||||
|
||||
def with_alternative(parent, part, from_signed,
|
||||
make_alternative=make_alternative,
|
||||
make_replacement=None):
|
||||
try:
|
||||
alternative = make_alternative(parent or part, from_signed or part)
|
||||
replacement = (make_replacement(parent or part, part)
|
||||
if from_signed is None and make_replacement is not None
|
||||
else part)
|
||||
except:
|
||||
return parent or part
|
||||
envelope = MIMEMultipart('alternative')
|
||||
if parent is None:
|
||||
for k, v in part.items():
|
||||
if (k.lower() != 'mime-version'
|
||||
and not k.lower().startswith('content-')):
|
||||
envelope.add_header(k, v)
|
||||
del part[k]
|
||||
envelope.attach(replacement)
|
||||
envelope.attach(alternative)
|
||||
if parent is None:
|
||||
return envelope
|
||||
payload = parent.get_payload()
|
||||
payload[payload.index(part)] = envelope
|
||||
return parent
|
||||
|
||||
|
||||
def tag_attachments(message):
|
||||
if message.get_content_type() == 'multipart/mixed':
|
||||
for part in message.get_payload():
|
||||
if (part.get_content_maintype() in ['image']
|
||||
and 'Content-ID' not in part):
|
||||
filename = part.get_param('filename',
|
||||
header='Content-Disposition')
|
||||
if isinstance(filename, tuple):
|
||||
filename = str(filename[2], filename[0] or 'us-ascii')
|
||||
if filename:
|
||||
filename = splitext(basename(filename))[0]
|
||||
if filename:
|
||||
part.add_header('Content-ID', '<{}>'.format(filename))
|
||||
return message
|
||||
|
||||
|
||||
def attachment_from_file_path(attachment_path):
|
||||
try:
|
||||
mime, encoding = mimetypes.guess_type(attachment_path, strict=False)
|
||||
maintype, subtype = mime.split('/')
|
||||
with open(attachment_path, 'rb') as payload:
|
||||
attachment = MIMENonMultipart(maintype, subtype)
|
||||
attachment.set_payload(payload.read())
|
||||
encoders.encode_base64(attachment)
|
||||
if encoding:
|
||||
attachment.add_header('Content-Encoding', encoding)
|
||||
return attachment
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
attachment_path_pattern = re.compile(r'\]\s*\(\s*file://(/[^)]*\S)\s*\)|'
|
||||
r'\]\s*:\s*file://(/.*\S)\s*$',
|
||||
re.MULTILINE)
|
||||
|
||||
|
||||
def link_attachments(payload):
|
||||
attached = []
|
||||
attachments = []
|
||||
|
||||
def on_match(match):
|
||||
if match.group(1):
|
||||
attachment_path = match.group(1)
|
||||
cid_fmt = '](cid:{})'
|
||||
else:
|
||||
attachment_path = match.group(2)
|
||||
cid_fmt = ']: cid:{}'
|
||||
attachment_id = md5(attachment_path.encode()).hexdigest()
|
||||
if attachment_id in attached:
|
||||
return cid_fmt.format(attachment_id)
|
||||
attachment = attachment_from_file_path(attachment_path)
|
||||
if attachment:
|
||||
attachment.add_header('Content-ID', '<{}>'.format(attachment_id))
|
||||
attachments.append(attachment)
|
||||
attached.append(attachment_id)
|
||||
return cid_fmt.format(attachment_id)
|
||||
return match.group()
|
||||
|
||||
return attachments, attachment_path_pattern.sub(on_match, payload)
|
||||
|
||||
|
||||
def with_local_attachments(parent, part, from_signed,
|
||||
link_attachments=link_attachments):
|
||||
if from_signed is None:
|
||||
attachments, payload = link_attachments(part.get_payload())
|
||||
part.set_payload(payload)
|
||||
else:
|
||||
attachments, payload = link_attachments(from_signed.get_payload())
|
||||
from_signed = copy(from_signed)
|
||||
from_signed.set_payload(payload)
|
||||
if not attachments:
|
||||
return parent, part, from_signed
|
||||
if parent is None:
|
||||
parent = MIMEMultipart('mixed')
|
||||
for k, v in part.items():
|
||||
if (k.lower() != 'mime-version'
|
||||
and not k.lower().startswith('content-')):
|
||||
parent.add_header(k, v)
|
||||
del part[k]
|
||||
parent.attach(part)
|
||||
for attachment in attachments:
|
||||
parent.attach(attachment)
|
||||
return parent, part, from_signed
|
||||
|
||||
|
||||
def is_target(part, target_subtypes):
|
||||
return (part.get('Content-Disposition', 'inline') == 'inline'
|
||||
and part.get_content_maintype() == 'text'
|
||||
and part.get_content_subtype() in target_subtypes)
|
||||
|
||||
|
||||
def pick_from_signed(part, target_subtypes):
|
||||
for from_signed in part.get_payload():
|
||||
if is_target(from_signed, target_subtypes):
|
||||
return from_signed
|
||||
|
||||
|
||||
def seek_target(message, target_subtypes=['plain', 'markdown']):
|
||||
if message.is_multipart():
|
||||
if message.get_content_type() == 'multipart/signed':
|
||||
part = pick_from_signed(message, target_subtypes)
|
||||
if part is not None:
|
||||
return None, message, part
|
||||
elif message.get_content_type() == 'multipart/mixed':
|
||||
for part in message.get_payload():
|
||||
if part.is_multipart():
|
||||
if part.get_content_type() == 'multipart/signed':
|
||||
from_signed = pick_from_signed(part, target_subtypes)
|
||||
if from_signed is not None:
|
||||
return message, part, from_signed
|
||||
elif is_target(part, target_subtypes):
|
||||
return message, part, None
|
||||
else:
|
||||
if is_target(message, target_subtypes):
|
||||
return None, message, None
|
||||
return None, None, None
|
||||
|
||||
|
||||
def main():
|
||||
try:
|
||||
message = email.message_from_file(sys.stdin)
|
||||
parent, part, from_signed = seek_target(message)
|
||||
if (parent, part, from_signed) == (None, None, None):
|
||||
print(message)
|
||||
return
|
||||
tag_attachments(message)
|
||||
print(with_alternative(
|
||||
*with_local_attachments(parent, part, from_signed)))
|
||||
except (BrokenPipeError, KeyboardInterrupt):
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
88
neovim/.config/nvim/UltiSnips/markdown.snippets
Normal file
88
neovim/.config/nvim/UltiSnips/markdown.snippets
Normal file
@@ -0,0 +1,88 @@
|
||||
snippet sign "Signature"
|
||||
Regards,
|
||||
|
||||
Amin Kasrou Aouam
|
||||
endsnippet
|
||||
|
||||
snippet firma "Spanish Signature"
|
||||
Un saludo,
|
||||
|
||||
Amin Kasrou Aouam
|
||||
endsnippet
|
||||
|
||||
snippet meta "YAML metadata for eisvogel"
|
||||
---
|
||||
title: "$1"
|
||||
author: [Amin Kasrou Aouam]
|
||||
date: "`date +%F`"
|
||||
titlepage: true
|
||||
logo: /home/coolneng/Pictures/Logos/UGR.png
|
||||
listings-no-page-break: true
|
||||
toc-own-page: true
|
||||
...
|
||||
|
||||
endsnippet
|
||||
|
||||
snippet hand "YAML metadata for tufte-handout"
|
||||
---
|
||||
documentclass: tufte-handout
|
||||
title: $1
|
||||
author: Amin Kasrou Aouam
|
||||
date: `date +%F`
|
||||
fontsize: 12pt
|
||||
...
|
||||
|
||||
endsnippet
|
||||
|
||||
snippet ass "YAML metadata for assignment"
|
||||
---
|
||||
title: $1
|
||||
author: Amin Kasrou Aouam
|
||||
date: `date +%F`
|
||||
---
|
||||
|
||||
endsnippet
|
||||
|
||||
snippet slides "YAML metadata for the Metropolis template"
|
||||
---
|
||||
title: "$1"
|
||||
author: [Amin Kasrou Aouam]
|
||||
date: "`date +%F`"
|
||||
header-includes:
|
||||
|
||||
- \definecolor{dkgreen}{rgb}{0,0.52,0}
|
||||
- \definecolor{gray}{rgb}{0.5,0.5,0.5}
|
||||
- \definecolor{mauve}{rgb}{0.4,0,0.7}
|
||||
- \definecolor{customBlue}{rgb}{0.1,0.1,0.65}
|
||||
- \definecolor{customOrange}{rgb}{0.88,0.53,0.13}
|
||||
- \lstset{frame=tb}
|
||||
- \lstset{language=c}
|
||||
- \lstset{aboveskip=5mm}
|
||||
- \lstset{belowskip=5mm}
|
||||
- \lstset{showstringspaces=false}
|
||||
- \lstset{columns=flexible}
|
||||
- \lstset{basicstyle={\scriptsize\ttfamily}}
|
||||
- \lstset{numbers=left}
|
||||
- \lstset{numberstyle=\tiny}
|
||||
- \lstset{stepnumber=1}
|
||||
- \lstset{numbersep=8pt}
|
||||
- \lstset{numberstyle=\tiny\color{gray}}
|
||||
- \lstset{keywordstyle=\color{customBlue}}
|
||||
- \lstset{commentstyle=\color{dkgreen}}
|
||||
- \lstset{stringstyle=\color{mauve}}
|
||||
- \lstset{breaklines=true}
|
||||
- \lstset{breakatwhitespace=true}
|
||||
- \lstset{tabsize=4}
|
||||
...
|
||||
|
||||
endsnippet
|
||||
|
||||
snippet b "Bullet point"
|
||||
|
||||
* $1
|
||||
endsnippet
|
||||
|
||||
snippet dp "Slide notes"
|
||||
|
||||
# Diapo $1
|
||||
endsnippet
|
||||
@@ -1,6 +1,5 @@
|
||||
""Basic stuff
|
||||
set number
|
||||
set relativenumber
|
||||
set encoding=utf8
|
||||
set clipboard+=unnamedplus
|
||||
set nofoldenable
|
||||
@@ -14,8 +13,6 @@ set directory=~/.cache
|
||||
""Ignore case and highlight matches when searching
|
||||
set ignorecase
|
||||
set hlsearch
|
||||
""Persistent undo
|
||||
set undofile
|
||||
""Resize line number colum
|
||||
set numberwidth=2
|
||||
""Keybindings
|
||||
@@ -25,20 +22,53 @@ nnoremap <leader>n :noh<cr>
|
||||
"Move the current line up or down
|
||||
nnoremap <leader>k :m-2<cr>==
|
||||
nnoremap <leader>j :m+<cr>==
|
||||
""Markdown
|
||||
au FileType markdown Goyo
|
||||
let g:markdown_fenced_languages = ['cpp', 'python', 'java', 'sql']
|
||||
let g:vim_markdown_math=1
|
||||
""Snippets
|
||||
let g:UltiSnipsExpandTrigger = '<tab>'
|
||||
let g:UltiSnipsJumpForwardTrigger = '<tab>'
|
||||
let g:UltiSnipsJumpBackwardTrigger = '<s-tab>'
|
||||
""Vim-plug
|
||||
call plug#begin('~/.config/nvim/plugged')
|
||||
Plug 'plasticboy/vim-markdown', { 'for': 'markdown' }
|
||||
Plug 'junegunn/goyo.vim', { 'on': 'Goyo' }
|
||||
Plug 'SirVer/ultisnips', { 'for': 'markdown' }
|
||||
Plug 'Raimondi/delimitMate'
|
||||
Plug 'nordtheme/vim'
|
||||
Plug 'rose-pine/neovim'
|
||||
Plug 'LnL7/vim-nix'
|
||||
Plug 'cocopon/iceberg.vim'
|
||||
call plug#end()
|
||||
""Colors
|
||||
colorscheme iceberg
|
||||
set termguicolors
|
||||
colorscheme nord
|
||||
set background=light
|
||||
""Sets the colorscheme in tmux
|
||||
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
|
||||
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
|
||||
""Disabe status line
|
||||
set laststatus=0
|
||||
""Set Markdown filetype for neomutt
|
||||
autocmd BufNewFile,BufRead /tmp/neomutt* set filetype=markdown
|
||||
""Quit whether Goyo is active or not
|
||||
function! s:goyo_enter()
|
||||
set noshowmode
|
||||
set noshowcmd
|
||||
set scrolloff=999
|
||||
let b:quitting = 0
|
||||
let b:quitting_bang = 0
|
||||
autocmd QuitPre <buffer> let b:quitting = 1
|
||||
cabbrev <buffer> q! let b:quitting_bang = 1 <bar> q!
|
||||
endfunction
|
||||
|
||||
function! s:goyo_leave()
|
||||
set showmode
|
||||
set showcmd
|
||||
set scrolloff=5
|
||||
if b:quitting_bang
|
||||
qa!
|
||||
else
|
||||
qa
|
||||
endif
|
||||
endfunction
|
||||
|
||||
autocmd! User GoyoEnter nested call <SID>goyo_enter()
|
||||
autocmd! User GoyoLeave nested call <SID>goyo_leave()
|
||||
|
||||
1
nix/.config/nixpkgs/config.nix
Normal file
1
nix/.config/nixpkgs/config.nix
Normal file
@@ -0,0 +1 @@
|
||||
{ allowUnfree = true; }
|
||||
88
notmuch/.notmuch-config
Normal file
88
notmuch/.notmuch-config
Normal file
@@ -0,0 +1,88 @@
|
||||
# .notmuch-config - Configuration file for the notmuch mail system
|
||||
#
|
||||
# For more information about notmuch, see https://notmuchmail.org
|
||||
|
||||
# Database configuration
|
||||
#
|
||||
# The only value supported here is 'path' which should be the top-level
|
||||
# directory where your mail currently exists and to where mail will be
|
||||
# delivered in the future. Files should be individual email messages.
|
||||
# Notmuch will store its database within a sub-directory of the path
|
||||
# configured here named ".notmuch".
|
||||
#
|
||||
[database]
|
||||
path=/home/coolneng/.mail
|
||||
|
||||
# User configuration
|
||||
#
|
||||
# Here is where you can let notmuch know how you would like to be
|
||||
# addressed. Valid settings are
|
||||
#
|
||||
# name Your full name.
|
||||
# primary_email Your primary email address.
|
||||
# other_email A list (separated by ';') of other email addresses
|
||||
# at which you receive email.
|
||||
#
|
||||
# Notmuch will use the various email addresses configured here when
|
||||
# formatting replies. It will avoid including your own addresses in the
|
||||
# recipient list of replies, and will set the From address based on the
|
||||
# address to which the original email was addressed.
|
||||
#
|
||||
[user]
|
||||
name=Amin Kasrou Aouam
|
||||
primary_email=akasroua@gmail.com
|
||||
other_email=akasroua@correo.ugr.es;
|
||||
|
||||
# Configuration for "notmuch new"
|
||||
#
|
||||
# The following options are supported here:
|
||||
#
|
||||
# tags A list (separated by ';') of the tags that will be
|
||||
# added to all messages incorporated by "notmuch new".
|
||||
#
|
||||
# ignore A list (separated by ';') of file and directory names
|
||||
# that will not be searched for messages by "notmuch new".
|
||||
#
|
||||
# NOTE: *Every* file/directory that goes by one of those
|
||||
# names will be ignored, independent of its depth/location
|
||||
# in the mail store.
|
||||
#
|
||||
[new]
|
||||
tags=unread;inbox;
|
||||
ignore=
|
||||
|
||||
# Search configuration
|
||||
#
|
||||
# The following option is supported here:
|
||||
#
|
||||
# exclude_tags
|
||||
# A ;-separated list of tags that will be excluded from
|
||||
# search results by default. Using an excluded tag in a
|
||||
# query will override that exclusion.
|
||||
#
|
||||
[search]
|
||||
exclude_tags=deleted;spam;
|
||||
|
||||
# Maildir compatibility configuration
|
||||
#
|
||||
# The following option is supported here:
|
||||
#
|
||||
# synchronize_flags Valid values are true and false.
|
||||
#
|
||||
# If true, then the following maildir flags (in message filenames)
|
||||
# will be synchronized with the corresponding notmuch tags:
|
||||
#
|
||||
# Flag Tag
|
||||
# ---- -------
|
||||
# D draft
|
||||
# F flagged
|
||||
# P passed
|
||||
# R replied
|
||||
# S unread (added when 'S' flag is not present)
|
||||
#
|
||||
# The "notmuch new" command will notice flag changes in filenames
|
||||
# and update tags, while the "notmuch tag" and "notmuch restore"
|
||||
# commands will notice tag changes and update flags in filenames
|
||||
#
|
||||
[maildir]
|
||||
synchronize_flags=true
|
||||
@@ -1,6 +1,6 @@
|
||||
%%
|
||||
% Copyright (c) 2017 - 2021, Pascal Wagler;
|
||||
% Copyright (c) 2014 - 2021, John MacFarlane
|
||||
% Copyright (c) 2017 - 2019, Pascal Wagler;
|
||||
% Copyright (c) 2014 - 2019, John MacFarlane
|
||||
%
|
||||
% All rights reserved.
|
||||
%
|
||||
@@ -49,9 +49,6 @@ $if(latex-dir-rtl)$
|
||||
\PassOptionsToPackage{RTLdocument}{bidi}
|
||||
$endif$
|
||||
$endif$
|
||||
$if(CJKmainfont)$
|
||||
\PassOptionsToPackage{space}{xeCJK}
|
||||
$endif$
|
||||
%
|
||||
\documentclass[
|
||||
$if(fontsize)$
|
||||
@@ -63,7 +60,7 @@ $endif$
|
||||
$if(papersize)$
|
||||
$papersize$paper,
|
||||
$else$
|
||||
paper=a4,
|
||||
a4paper,
|
||||
$endif$
|
||||
$if(beamer)$
|
||||
ignorenonframetext,
|
||||
@@ -77,7 +74,7 @@ $endif$
|
||||
$for(classoption)$
|
||||
$classoption$$sep$,
|
||||
$endfor$
|
||||
,captions=tableheading
|
||||
,tablecaptionabove
|
||||
]{$if(beamer)$$documentclass$$else$$if(book)$scrbook$else$scrartcl$endif$$endif$}
|
||||
$if(beamer)$
|
||||
$if(background-image)$
|
||||
@@ -132,7 +129,6 @@ $endif$
|
||||
$if(beamerarticle)$
|
||||
\usepackage{beamerarticle} % needs to be loaded first
|
||||
$endif$
|
||||
\usepackage{amsmath,amssymb}
|
||||
$if(fontfamily)$
|
||||
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
|
||||
$else$
|
||||
@@ -140,10 +136,12 @@ $else$
|
||||
$endif$
|
||||
$if(linestretch)$
|
||||
\usepackage{setspace}
|
||||
\setstretch{$linestretch$}
|
||||
$else$
|
||||
\usepackage{setspace}
|
||||
\setstretch{1.2}
|
||||
$endif$
|
||||
\usepackage{amssymb,amsmath}
|
||||
\usepackage{ifxetex,ifluatex}
|
||||
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
|
||||
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
|
||||
@@ -338,11 +336,7 @@ $highlighting-macros$
|
||||
|
||||
$endif$
|
||||
$if(tables)$
|
||||
\usepackage{longtable,booktabs,array}
|
||||
$if(multirow)$
|
||||
\usepackage{multirow}
|
||||
$endif$
|
||||
\usepackage{calc} % for calculating minipage widths
|
||||
\usepackage{longtable,booktabs}
|
||||
$if(beamer)$
|
||||
\usepackage{caption}
|
||||
% Make caption package work with longtable
|
||||
@@ -366,7 +360,7 @@ $else$
|
||||
\usepackage{footnotebackref}
|
||||
$endif$
|
||||
$if(graphics)$
|
||||
\usepackage{graphicx}
|
||||
\usepackage{graphicx,grffile}
|
||||
\makeatletter
|
||||
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
|
||||
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
|
||||
@@ -375,10 +369,6 @@ $if(graphics)$
|
||||
% margins by default, and it is still possible to overwrite the defaults
|
||||
% using explicit options in \includegraphics[width, height, ...]{}
|
||||
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
|
||||
% Set default figure placement to htbp
|
||||
\makeatletter
|
||||
\def\fps@figure{htbp}
|
||||
\makeatother
|
||||
$endif$
|
||||
$if(links-as-notes)$
|
||||
% Make links footnotes instead of hotlinks:
|
||||
@@ -393,7 +383,7 @@ $endif$
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
$if(numbersections)$
|
||||
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
|
||||
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$3$endif$}
|
||||
$else$
|
||||
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
|
||||
$endif$
|
||||
@@ -432,23 +422,17 @@ $if(lang)$
|
||||
$endif$
|
||||
% Load polyglossia as late as possible: uses bidi with RTL langages (e.g. Hebrew, Arabic)
|
||||
\usepackage{polyglossia}
|
||||
\setmainlanguage[$for(polyglossia-lang.options)$$polyglossia-lang.options$$sep$,$endfor$]{$polyglossia-lang.name$}
|
||||
\setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$}
|
||||
$for(polyglossia-otherlangs)$
|
||||
\setotherlanguage[$for(polyglossia-otherlangs.options)$$polyglossia-otherlangs.options$$sep$,$endfor$]{$polyglossia-otherlangs.name$}
|
||||
\setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$}
|
||||
$endfor$
|
||||
\else
|
||||
\usepackage[$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}
|
||||
% get rid of language-specific shorthands (see #6817):
|
||||
\let\LanguageShortHands\languageshorthands
|
||||
\def\languageshorthands#1{}
|
||||
\usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}
|
||||
$if(babel-newcommands)$
|
||||
$babel-newcommands$
|
||||
$endif$
|
||||
\fi
|
||||
$endif$
|
||||
\ifluatex
|
||||
\usepackage{selnolig} % disable illegal ligatures
|
||||
\fi
|
||||
$if(dir)$
|
||||
\ifxetex
|
||||
% Load bidi as late as possible as it modifies e.g. graphicx
|
||||
@@ -475,27 +459,10 @@ $endif$
|
||||
$if(csl-refs)$
|
||||
\newlength{\cslhangindent}
|
||||
\setlength{\cslhangindent}{1.5em}
|
||||
\newlength{\csllabelwidth}
|
||||
\setlength{\csllabelwidth}{3em}
|
||||
\newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing
|
||||
{% don't indent paragraphs
|
||||
\setlength{\parindent}{0pt}
|
||||
% turn on hanging indent if param 1 is 1
|
||||
\ifodd #1 \everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces\fi
|
||||
% set entry spacing
|
||||
\ifnum #2 > 0
|
||||
\setlength{\parskip}{#2\baselineskip}
|
||||
\fi
|
||||
}%
|
||||
{}
|
||||
\usepackage{calc}
|
||||
\newcommand{\CSLBlock}[1]{#1\hfill\break}
|
||||
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}}
|
||||
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break}
|
||||
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
|
||||
$endif$
|
||||
$if(csquotes)$
|
||||
\usepackage{csquotes}
|
||||
\newenvironment{cslreferences}%
|
||||
{$if(csl-hanging-indent)$\setlength{\parindent}{0pt}%
|
||||
\everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces$endif$}%
|
||||
{\par}
|
||||
$endif$
|
||||
|
||||
$if(title)$
|
||||
@@ -513,7 +480,9 @@ $else$
|
||||
$endif$
|
||||
\subtitle{$subtitle$}
|
||||
$endif$
|
||||
$if(author)$
|
||||
\author{$for(author)$$author$$sep$ \and $endfor$}
|
||||
$endif$
|
||||
\date{$date$}
|
||||
$if(beamer)$
|
||||
$if(institute)$
|
||||
@@ -562,10 +531,6 @@ $endfor$
|
||||
\fi
|
||||
$endif$
|
||||
|
||||
$if(page-background)$
|
||||
\usepackage[pages=all]{background}
|
||||
$endif$
|
||||
|
||||
%
|
||||
% for the background color of the title page
|
||||
%
|
||||
@@ -665,14 +630,13 @@ $endif$
|
||||
%\addtokomafont{chapter}{\color{heading-color}}
|
||||
|
||||
%
|
||||
% variables for title, author and date
|
||||
% variables for title and author
|
||||
%
|
||||
$if(beamer)$
|
||||
$else$
|
||||
\usepackage{titling}
|
||||
\title{$title$}
|
||||
\author{$for(author)$$author$$sep$, $endfor$}
|
||||
\date{$date$}
|
||||
$endif$
|
||||
|
||||
%
|
||||
@@ -864,17 +828,6 @@ $else$
|
||||
\renewcommand{\footrulewidth}{0.4pt}
|
||||
}
|
||||
\pagestyle{eisvogel-header-footer}
|
||||
$if(page-background)$
|
||||
\backgroundsetup{
|
||||
scale=1,
|
||||
color=black,
|
||||
opacity=$if(page-background-opacity)$$page-background-opacity$$else$0.2$endif$,
|
||||
angle=0,
|
||||
contents={%
|
||||
\includegraphics[width=\paperwidth,height=\paperheight]{$page-background$}
|
||||
}%
|
||||
}
|
||||
$endif$
|
||||
$endif$
|
||||
$endif$
|
||||
|
||||
@@ -944,7 +897,7 @@ $endif$
|
||||
|
||||
$if(logo)$
|
||||
\noindent
|
||||
\includegraphics[width=$if(logo-width)$$logo-width$$else$35mm$endif$, left]{$logo$}
|
||||
\includegraphics[width=$if(logo-width)$$logo-width$$else$100$endif$pt, left]{$logo$}
|
||||
$endif$
|
||||
|
||||
$if(titlepage-background)$
|
||||
@@ -989,7 +942,7 @@ $if(toc-title)$
|
||||
\renewcommand*\contentsname{$toc-title$}
|
||||
$endif$
|
||||
$if(beamer)$
|
||||
\begin{frame}[allowframebreaks]
|
||||
\begin{frame}
|
||||
$if(toc-title)$
|
||||
\frametitle{$toc-title$}
|
||||
$endif$
|
||||
@@ -1003,7 +956,7 @@ $else$
|
||||
$if(colorlinks)$
|
||||
\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$}
|
||||
$endif$
|
||||
\setcounter{tocdepth}{$toc-depth$}
|
||||
\setcounter{tocdepth}{$if(toc-depth)$$toc-depth$$else$3$endif$}
|
||||
\tableofcontents
|
||||
$if(toc-own-page)$
|
||||
\newpage
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
#+LaTeX_CLASS: org-plain-latex
|
||||
#+LaTeX_CLASS_OPTIONS: [letterpaper, 11pt]
|
||||
#+LATEX_HEADER: \usepackage{lmodern} % Ensures we have the right font
|
||||
|
||||
#+LATEX_HEADER: \usepackage[T1]{fontenc}
|
||||
#+LATEX_HEADER: \usepackage[AUTO]{inputenc}
|
||||
#+LATEX_HEADER: \usepackage{graphicx}
|
||||
#+LATEX_HEADER: \usepackage{amsmath, amsthm, amssymb}
|
||||
#+LATEX_HEADER: \usepackage[table, xcdraw]{xcolor}
|
||||
|
||||
% Colorizing links in a nicer way.
|
||||
#+LATEX_HEADER: \definecolor{bblue}{HTML}{0645AD}
|
||||
#+LATEX_HEADER: \usepackage[colorlinks]{hyperref}
|
||||
#+LATEX_HEADER: \hypersetup{colorlinks, linkcolor=blue, urlcolor=bblue}
|
||||
|
||||
% Moving up the title.
|
||||
#+LATEX_HEADER: \usepackage{titling}
|
||||
#+LATEX_HEADER: \setlength{\droptitle}{-6em}
|
||||
|
||||
#+LATEX_HEADER: \setlength{\parindent}{0pt}
|
||||
#+LATEX_HEADER: \setlength{\parskip}{1em}
|
||||
#+LATEX_HEADER: \usepackage[stretch=10]{microtype}
|
||||
#+LATEX_HEADER: \usepackage{hyphenat}
|
||||
#+LATEX_HEADER: \usepackage{ragged2e}
|
||||
#+LATEX_HEADER: \usepackage{subfig} % Subfigures (not needed in Org I think)
|
||||
#+LATEX_HEADER: \usepackage{hyperref} % Links
|
||||
#+LATEX_HEADER: \usepackage{listings} % Code highlighting
|
||||
% Disables flush alighment on the right side. Personal preference.
|
||||
# #+LATEX_HEADER: \RaggedRight
|
||||
|
||||
% Page geometry
|
||||
#+LATEX_HEADER: \usepackage[top=1in, bottom=1.25in, left=1.55in, right=1.55in]{geometry}
|
||||
|
||||
% Line spacing
|
||||
#+LATEX_HEADER: \renewcommand{\baselinestretch}{1.15}
|
||||
|
||||
% Page numbering - this disables it
|
||||
# #+LATEX_HEADER: \pagenumbering{gobble}
|
||||
|
||||
% Spacing, titling, text setting.
|
||||
#+LATEX_HEADER: \usepackage[explicit]{titlesec}
|
||||
|
||||
% Title customization
|
||||
#+LATEX_HEADER: \pretitle{\begin{center}\fontsize{20pt}{20pt}\selectfont}
|
||||
#+LATEX_HEADER: \posttitle{\par\end{center}}
|
||||
#+LATEX_HEADER: \preauthor{\begin{center}\vspace{-6bp}\fontsize{14pt}{14pt}\selectfont}
|
||||
#+LATEX_HEADER: \postauthor{\par\end{center}\vspace{-25bp}}
|
||||
|
||||
#+LATEX_HEADER: \predate{\begin{center}\fontsize{12pt}{12pt}\selectfont}
|
||||
#+LATEX_HEADER: \postdate{\par\end{center}\vspace{0em}}
|
||||
|
||||
|
||||
% Section/subsection headings:
|
||||
|
||||
%Section
|
||||
#+LATEX_HEADER: \titlespacing\section{0pt}{5pt}{5pt} % left margin, space before section header, space after section header
|
||||
|
||||
%Subsection
|
||||
#+LATEX_HEADER: \titlespacing\subsection{0pt}{5pt}{-2pt} % left margin, space before subsection header, space after subsection header
|
||||
|
||||
%Subsubsection
|
||||
#+LATEX_HEADER: \titlespacing\subsubsection{0pt}{5pt}{-2pt} % left margin, space before subsection header, space after subsection header
|
||||
|
||||
% List spacing
|
||||
#+LATEX_HEADER: \usepackage{enumitem}
|
||||
#+LATEX_HEADER: \setlist{itemsep=-2pt} % or \setlist{noitemsep} to leave space around whole list
|
||||
|
||||
|
||||
# %Section
|
||||
# #+LATEX_HEADER: \titleformat{\section} {\Large}{\thesection}{1em}{\textbf{#1}} % Section header formatting
|
||||
# #+LATEX_HEADER: \titlespacing\section{0pt}{5pt}{-5pt} % left margin, space before section header, space after section header
|
||||
|
||||
# %Subsection
|
||||
# #+LATEX_HEADER: \titleformat{\subsection} {\large}{\thesubsection}{1em}{\textbf{#1}}
|
||||
\titlespacing\subsection{0pt}{5pt}{-5pt} % left margin, space before subsection header, space after subsection header
|
||||
|
||||
# %Subsubsection
|
||||
# #+LATEX_HEADER: \titleformat{\subsubsection} {\large}{\thesubsubsection}{1em}{#1}
|
||||
\titlespacing\subsubsection{0pt}{5pt}{-5pt} % left margin, space before subsection header, space after subsection header
|
||||
598
pandoc/.pandoc/templates/email.html
Normal file
598
pandoc/.pandoc/templates/email.html
Normal file
@@ -0,0 +1,598 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="ProgId" content="Word.Document">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
$for(author-meta)$
|
||||
<meta name="author" content="$author-meta$" />
|
||||
$endfor$
|
||||
$if(date-meta)$
|
||||
<meta name="date" content="$date-meta$" />
|
||||
$endif$
|
||||
$if(keywords)$
|
||||
<meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$" />
|
||||
$endif$
|
||||
<title>$if(title-prefix)$$title-prefix$ – $endif$$pagetitle$</title>
|
||||
<style type="text/css">
|
||||
body, table, td, a {
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
table, td {
|
||||
mso-table-lspace: 0pt;
|
||||
mso-table-rspace: 0pt;
|
||||
}
|
||||
|
||||
img {
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
height: auto;
|
||||
line-height: 100%;
|
||||
outline: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
body {
|
||||
height: 100% !important;
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
article, aside, details, figcaption, figure,footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
a[x-apple-data-detectors] {
|
||||
color: inherit !important;
|
||||
text-decoration: none !important;
|
||||
font-size: inherit !important;
|
||||
font-family: inherit !important;
|
||||
font-weight: inherit !important;
|
||||
line-height: inherit !important;
|
||||
}
|
||||
|
||||
div[style*="margin: 16px 0;"] {
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
table,td,div,a {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
img {
|
||||
-ms-interpolation-mode: bicubic;
|
||||
max-width: 100%;
|
||||
display: inline-block;
|
||||
padding-top: 7px;
|
||||
}
|
||||
|
||||
body, .body {
|
||||
font-family: Georgia, "Times New Roman", Times, serif;
|
||||
font-size: 14px;
|
||||
line-height: 1.2;
|
||||
height: 100% !important;
|
||||
width: 100% !important;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-ms-text-size-adjust: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: separate !important;
|
||||
mso-table-lspace: 0pt;
|
||||
mso-table-rspace: 0pt;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table td {
|
||||
font-family: Georgia, "Times New Roman", Times, serif;
|
||||
font-size: 14px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.ExternalClass {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ExternalClass,.ExternalClass p,.ExternalClass span,.ExternalClass font,.ExternalClass td,.ExternalClass div {
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
strong, b {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.ajT {
|
||||
height: none;
|
||||
padding-top: none;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.body {
|
||||
background-color: #ffffff;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.container {
|
||||
display: block;
|
||||
Margin: 0 auto !important;
|
||||
max-width: 800px;
|
||||
padding: 10px;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.content {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
max-width: 800px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.main {
|
||||
background: #ffffff;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
padding: 0 0 10px;
|
||||
}
|
||||
|
||||
.header {
|
||||
margin-bottom: 10px;
|
||||
margin-top: 0px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.footer {
|
||||
clear: both;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.footer * {
|
||||
color: #7F7F7F;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.footer td {
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
h1,h2,h3,h4,h5,h6 {
|
||||
color: #222222 !important;
|
||||
font-family: "Roboto", "Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif;
|
||||
font-weight: bold;
|
||||
line-height: 1.2;
|
||||
margin: 0;
|
||||
margin-bottom: 7px;
|
||||
margin-top: 10.5px;
|
||||
}
|
||||
|
||||
h1, h2 {
|
||||
margin-bottom: 10.5px;
|
||||
margin-top: 14px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 22.4px;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 19.6px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 16.8px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 15.4px;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 12.6px;
|
||||
}
|
||||
|
||||
p,ul,ol {
|
||||
font-family: Georgia, "Times New Roman", Times, serif;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
margin: 0;
|
||||
padding-top: 7px;
|
||||
color: #111111;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
margin: 0;
|
||||
margin-bottom: 7.5px;
|
||||
padding-left: 25px;
|
||||
}
|
||||
|
||||
ul li, ol li {
|
||||
list-style-position: outside;
|
||||
margin-left: 5px;
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
|
||||
li > ul, li > ol {
|
||||
margin-top: 7.5px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #348eda;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
pre > a, code > a {
|
||||
color: none;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
code,pre,.word-wrap {
|
||||
word-break: break-word;
|
||||
word-wrap: break-word;
|
||||
-webkit-hyphens: auto;
|
||||
-moz-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
pre, code {
|
||||
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
|
||||
font-size: 11.9px;
|
||||
}
|
||||
|
||||
pre {
|
||||
display: block;
|
||||
width: 96%;
|
||||
margin: 1em 0;
|
||||
margin-bottom: 9px;
|
||||
background: #f8f8f8;
|
||||
padding: 1%;
|
||||
white-space: pre-wrap;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
p > code {
|
||||
color: #111111;
|
||||
background: none;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
padding: 0 7px 0 7px;
|
||||
border-left: 2px solid #cccccc;
|
||||
border-top: 4.2px solid transparent;
|
||||
font-style: italic;
|
||||
margin: 0 0 7px 3px;
|
||||
}
|
||||
|
||||
blockquote p {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
}
|
||||
|
||||
dl dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dl dd {
|
||||
margin-left: 28px;
|
||||
}
|
||||
|
||||
.et-btn {
|
||||
width: 100%;
|
||||
font-family: "Roboto", "Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.et-btn table {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.et-btn table td {
|
||||
background-color: #ffffff;
|
||||
border-radius: 4px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.et-btn a {
|
||||
background-color: #ffffff;
|
||||
border: solid 1px #348eda;
|
||||
border-radius: 4px;
|
||||
color: #348eda;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
margin: 0;
|
||||
padding: 8px 18px;
|
||||
text-decoration: none;
|
||||
text-transform: capitalize;
|
||||
font-family: "Roboto", "Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
.et-btn-primary table td {
|
||||
background-color: #348eda;
|
||||
}
|
||||
|
||||
.et-btn-primary a {
|
||||
background-color: #348eda;
|
||||
border-color: #348eda;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.et-btn-secondary table td {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.et-btn-secondary a {
|
||||
background-color: transparent;
|
||||
border-color: #348eda;
|
||||
color: #348eda;
|
||||
}
|
||||
|
||||
.et-notice {
|
||||
border-collapse: separate;
|
||||
}
|
||||
|
||||
.et-notice-spacer {
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
.et-notice td {
|
||||
line-height: 1.2;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
font-family: "Roboto", "Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
.et-notice td p {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.et-notice-info td {
|
||||
background: #f0f6fb;
|
||||
border: 1px solid #b7d3ed;
|
||||
border-radius: 4px;
|
||||
color: #2c6eac;
|
||||
padding: 6px 10px;
|
||||
}
|
||||
|
||||
.et-notice-success td {
|
||||
background: #e1f2bd;
|
||||
border: 1px solid #c6e682;
|
||||
border-radius: 4px;
|
||||
color: #61821a;
|
||||
padding: 6px 10px;
|
||||
}
|
||||
|
||||
.et-notice-warning td {
|
||||
background: #f7eed0;
|
||||
border: 1px solid #edd993;
|
||||
border-radius: 4px;
|
||||
color: #9a7d1a;
|
||||
padding: 6px 10px;
|
||||
}
|
||||
|
||||
.et-notice-danger td {
|
||||
background: #f5d5d5;
|
||||
border: 1px solid #e89b9b;
|
||||
border-radius: 4px;
|
||||
color: #952222;
|
||||
padding: 6px 10px;
|
||||
}
|
||||
|
||||
.et-notice-lg td {
|
||||
font-size: 16.8px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.divider {
|
||||
border-collapse: separate;
|
||||
}
|
||||
|
||||
.divider-spacer {
|
||||
padding: 14px 0;
|
||||
}
|
||||
|
||||
.divider td {
|
||||
border-top: 1px solid #ccc;
|
||||
line-height: 0;
|
||||
font-size: 0;
|
||||
height: 1px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 28px 0;
|
||||
border: none;
|
||||
border-top: 1px solid #cccccc;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.last {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.first {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.align-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.clear {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.mt0 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.mb0 {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.preheader {
|
||||
color: transparent;
|
||||
display: none;
|
||||
height: 0;
|
||||
max-height: 0;
|
||||
max-width: 0;
|
||||
opacity: 0;
|
||||
overflow: hidden;
|
||||
mso-hide: all;
|
||||
visibility: hidden;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 840px) {
|
||||
table[class=body] {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
table[class=body] p,table[class=body] ul,table[class=body] ol {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
table[class=body] .et-btn {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
table[class=body] h1 {
|
||||
font-size: 18.2px !important;
|
||||
}
|
||||
|
||||
table[class=body] h2 {
|
||||
font-size: 16.8px !important;
|
||||
}
|
||||
|
||||
table[class=body] h3 {
|
||||
font-size: 15.4px !important;
|
||||
}
|
||||
|
||||
table[class=body] h4 {
|
||||
font-size: 14.7px !important;
|
||||
}
|
||||
|
||||
table[class=body] h5 {
|
||||
font-size: 12.6px !important;
|
||||
}
|
||||
|
||||
table[class=body] h6 {
|
||||
font-size: 11.9px !important;
|
||||
}
|
||||
|
||||
table[class=body] h1, table[class=body] h2 {
|
||||
margin-bottom: 14px !important;
|
||||
margin-top: 14px !important;
|
||||
}
|
||||
|
||||
table[class=body] .container, table[class=body] .content {
|
||||
width: 100% !important;
|
||||
max-width: 100% !important;
|
||||
}
|
||||
|
||||
table[class=body] .content,table[class=body] .wrapper {
|
||||
padding: 10px !important;
|
||||
}
|
||||
|
||||
table[class=body] .container {
|
||||
padding: 0 !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
table[class=body] .btn table,table[class=body] .btn a {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
$if(quotes)$
|
||||
<style type="text/css">q { quotes: "“" "”" "‘" "’"; }</style>
|
||||
$endif$
|
||||
$if(highlighting-css)$
|
||||
<style type="text/css">
|
||||
$highlighting-css$
|
||||
</style>
|
||||
$endif$
|
||||
$for(css)$
|
||||
<link rel="stylesheet" href="$css$" type="text/css" />
|
||||
$endfor$
|
||||
$if(math)$
|
||||
$math$
|
||||
$endif$
|
||||
$for(header-includes)$
|
||||
$header-includes$
|
||||
$endfor$
|
||||
</head>
|
||||
<body>
|
||||
$for(include-before)$
|
||||
$include-before$
|
||||
$endfor$
|
||||
$if(title)$
|
||||
<div id="$idprefix$header">
|
||||
<h1 class="title">$title$</h1>
|
||||
$if(subtitle)$
|
||||
<h1 class="subtitle">$subtitle$</h1>
|
||||
$endif$
|
||||
$for(author)$
|
||||
<h2 class="author">$author$</h2>
|
||||
$endfor$
|
||||
$if(date)$
|
||||
<h3 class="date">$date$</h3>
|
||||
$endif$
|
||||
</div>
|
||||
$endif$
|
||||
$if(toc)$
|
||||
<div id="$idprefix$TOC">
|
||||
$toc$
|
||||
</div>
|
||||
$endif$
|
||||
$body$
|
||||
$for(include-after)$
|
||||
$include-after$
|
||||
$endfor$
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,25 +1,8 @@
|
||||
[git.coolneng.duckdns.org*]
|
||||
target=api/gitea
|
||||
target=dev/gitea
|
||||
username_extractor=specific_line
|
||||
line_username=1
|
||||
skip_username=7
|
||||
[git.psydnd.org*]
|
||||
target=api/gitea
|
||||
username_extractor=specific_line
|
||||
line_username=1
|
||||
skip_username=7
|
||||
[github.com*]
|
||||
target=api/github
|
||||
target=dev/github
|
||||
username_extractor=specific_line
|
||||
line_username=1
|
||||
skip_username=7
|
||||
[gitlab.com*]
|
||||
target=api/gitlab
|
||||
username_extractor=specific_line
|
||||
line_username=1
|
||||
skip_username=7
|
||||
[github.ugent.be*]
|
||||
target=web/ugent.be
|
||||
username_extractor=specific_line
|
||||
line_username=1
|
||||
skip_username=7
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
[virtualenvs]
|
||||
in-project = true
|
||||
@@ -1,62 +0,0 @@
|
||||
;; Goes into ~/.config/pulsemixer.cfg, $XDG_CONFIG_HOME respected
|
||||
;; Everything that starts with "#" or ";" is a comment
|
||||
;; For the option to take effect simply uncomment it
|
||||
|
||||
[general]
|
||||
step = 1
|
||||
step-big = 10
|
||||
; server =
|
||||
|
||||
[keys]
|
||||
;; To bind "special keys" such as arrows see "Key constant" table in
|
||||
;; https://docs.python.org/3/library/curses.html#constants
|
||||
; up = k, KEY_UP, KEY_PPAGE
|
||||
; down = j, KEY_DOWN, KEY_NPAGE
|
||||
; left = h, KEY_LEFT
|
||||
; right = l, KEY_RIGHT
|
||||
; left-big = H, KEY_SLEFT
|
||||
; right-big = L, KEY_SRIGHT
|
||||
; top = g, KEY_HOME
|
||||
; bottom = G, KEY_END
|
||||
; mode1 = KEY_F1
|
||||
; mode2 = KEY_F2
|
||||
; mode3 = KEY_F3
|
||||
; next-mode = KEY_TAB
|
||||
; prev-mode = KEY_BTAB
|
||||
; mute = m
|
||||
; lock = ' ' ; 'space', quotes are stripped
|
||||
; quit = q, KEY_ESC
|
||||
|
||||
[ui]
|
||||
hide-unavailable-profiles = yes
|
||||
; hide-unavailable-ports = no
|
||||
; color = 2 ; same as --color, 0 no color, 1 color currently selected, 2 full-color
|
||||
; mouse = yes
|
||||
|
||||
[style]
|
||||
;; Pulsemixer will use these characters to draw interface
|
||||
;; Single characters only
|
||||
; bar-top-left = ┌
|
||||
; bar-left-mono = ╶
|
||||
; bar-top-right = ┐
|
||||
; bar-right-mono = ╴
|
||||
; bar-bottom-left = └
|
||||
; bar-bottom-right = ┘
|
||||
; bar-on = ▮
|
||||
; bar-on-muted = ▯
|
||||
; bar-off = -
|
||||
; arrow = ' '
|
||||
; arrow-focused = ─
|
||||
; arrow-locked = ─
|
||||
; default-stream = *
|
||||
; info-locked = L
|
||||
; info-unlocked = U
|
||||
; info-muted = M ; 🔇
|
||||
; info-unmuted = M ; 🔉
|
||||
|
||||
[renames]
|
||||
;; Changes stream names in interactive mode, regular expression are supported
|
||||
;; https://docs.python.org/3/library/re.html#regular-expression-syntax
|
||||
; 'default name example' = 'new name'
|
||||
; '(?i)built-in .* audio' = 'Audio Controller'
|
||||
; 'AudioIPC Server' = 'Firefox'
|
||||
@@ -1,323 +1,14 @@
|
||||
configuration {
|
||||
/* modi: "window,run,ssh";*/
|
||||
/* width: 50;*/
|
||||
lines: 5;
|
||||
/* columns: 1;*/
|
||||
font: "Roboto Condensed 19";
|
||||
bw: 0;
|
||||
/* location: 0;*/
|
||||
padding: 200;
|
||||
/* yoffset: 0;*/
|
||||
/* xoffset: 0;*/
|
||||
/* fixed-num-lines: true;*/
|
||||
/* show-icons: false;*/
|
||||
/* terminal: "rofi-sensible-terminal";*/
|
||||
/* ssh-client: "ssh";*/
|
||||
/* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/
|
||||
/* run-command: "{cmd}";*/
|
||||
/* run-list-command: "";*/
|
||||
/* run-shell-command: "{terminal} -e {cmd}";*/
|
||||
/* window-command: "wmctrl -i -R {window}";*/
|
||||
/* window-match-fields: "all";*/
|
||||
/* icon-theme: ;*/
|
||||
/* drun-match-fields: "name,generic,exec,categories,keywords";*/
|
||||
/* drun-categories: ;*/
|
||||
/* drun-show-actions: false;*/
|
||||
/* drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";*/
|
||||
/* drun-url-launcher: "xdg-open";*/
|
||||
/* disable-history: false;*/
|
||||
/* ignored-prefixes: "";*/
|
||||
/* sort: false;*/
|
||||
/* sorting-method: "normal";*/
|
||||
/* case-sensitive: false;*/
|
||||
/* cycle: true;*/
|
||||
/* sidebar-mode: false;*/
|
||||
eh: 2;
|
||||
/* auto-select: false;*/
|
||||
/* parse-hosts: false;*/
|
||||
/* parse-known-hosts: true;*/
|
||||
/* combi-modi: "window,run";*/
|
||||
/* matching: "normal";*/
|
||||
/* tokenize: true;*/
|
||||
/* m: "-5";*/
|
||||
/* line-margin: 2;*/
|
||||
/* line-padding: 1;*/
|
||||
/* filter: ;*/
|
||||
separator-style: "none";
|
||||
hide-scrollbar: true;
|
||||
/* fake-transparency: false;*/
|
||||
/* dpi: -1;*/
|
||||
/* threads: 0;*/
|
||||
/* scrollbar-width: 8;*/
|
||||
/* scroll-method: 0;*/
|
||||
/* fake-background: "screenshot";*/
|
||||
/* window-format: "{w} {c} {t}";*/
|
||||
/* click-to-exit: true;*/
|
||||
/* show-match: true;*/
|
||||
/* theme: ;*/
|
||||
fullscreen: true;
|
||||
color-normal: "argb:031d1f21, #f3f4f5, argb:031d1f21, argb:031d1f21, #9575cd";
|
||||
color-urgent: "argb:031d1f21, #f3f4f5, argb:bc303541, argb:031d1f21, #9575cd";
|
||||
color-active: "argb:031d1f21, #f3f4f5, argb:031d1f21, argb:031d1f21, #9575cd";
|
||||
color-window: "argb:c82d303b, #7c8389, #1d1f21";
|
||||
/* max-history-size: 25;*/
|
||||
/* combi-hide-mode-prefix: false;*/
|
||||
/* matching-negate-char: '-' /* unsupported */;*/
|
||||
/* cache-dir: ;*/
|
||||
/* window-thumbnail: false;*/
|
||||
/* drun-use-desktop-cache: false;*/
|
||||
/* drun-reload-desktop-cache: false;*/
|
||||
/* normalize-match: false;*/
|
||||
/* pid: "/run/user/1000/rofi.pid";*/
|
||||
/* display-window: ;*/
|
||||
/* display-windowcd: ;*/
|
||||
/* display-run: ;*/
|
||||
/* display-ssh: ;*/
|
||||
/* display-drun: ;*/
|
||||
/* display-combi: ;*/
|
||||
/* display-keys: ;*/
|
||||
/* display-file-browser: ;*/
|
||||
/* kb-primary-paste: "Control+V,Shift+Insert";*/
|
||||
/* kb-secondary-paste: "Control+v,Insert";*/
|
||||
/* kb-clear-line: "Control+w";*/
|
||||
/* kb-move-front: "Control+a";*/
|
||||
/* kb-move-end: "Control+e";*/
|
||||
/* kb-move-word-back: "Alt+b,Control+Left";*/
|
||||
/* kb-move-word-forward: "Alt+f,Control+Right";*/
|
||||
/* kb-move-char-back: "Left,Control+b";*/
|
||||
/* kb-move-char-forward: "Right,Control+f";*/
|
||||
/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/
|
||||
/* kb-remove-word-forward: "Control+Alt+d";*/
|
||||
/* kb-remove-char-forward: "Delete,Control+d";*/
|
||||
/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/
|
||||
/* kb-remove-to-eol: "Control+k";*/
|
||||
/* kb-remove-to-sol: "Control+u";*/
|
||||
/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/
|
||||
/* kb-accept-custom: "Control+Return";*/
|
||||
/* kb-accept-alt: "Shift+Return";*/
|
||||
/* kb-delete-entry: "Shift+Delete";*/
|
||||
/* kb-mode-next: "Shift+Right,Control+Tab";*/
|
||||
/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/
|
||||
/* kb-row-left: "Control+Page_Up";*/
|
||||
/* kb-row-right: "Control+Page_Down";*/
|
||||
/* kb-row-up: "Up,Control+p,ISO_Left_Tab";*/
|
||||
/* kb-row-down: "Down,Control+n";*/
|
||||
/* kb-row-tab: "Tab";*/
|
||||
/* kb-page-prev: "Page_Up";*/
|
||||
/* kb-page-next: "Page_Down";*/
|
||||
/* kb-row-first: "Home,KP_Home";*/
|
||||
/* kb-row-last: "End,KP_End";*/
|
||||
/* kb-row-select: "Control+space";*/
|
||||
/* kb-screenshot: "Alt+S";*/
|
||||
/* kb-ellipsize: "Alt+period";*/
|
||||
/* kb-toggle-case-sensitivity: "grave,dead_grave";*/
|
||||
/* kb-toggle-sort: "Alt+grave";*/
|
||||
/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/
|
||||
/* kb-custom-1: "Alt+1";*/
|
||||
/* kb-custom-2: "Alt+2";*/
|
||||
/* kb-custom-3: "Alt+3";*/
|
||||
/* kb-custom-4: "Alt+4";*/
|
||||
/* kb-custom-5: "Alt+5";*/
|
||||
/* kb-custom-6: "Alt+6";*/
|
||||
/* kb-custom-7: "Alt+7";*/
|
||||
/* kb-custom-8: "Alt+8";*/
|
||||
/* kb-custom-9: "Alt+9";*/
|
||||
/* kb-custom-10: "Alt+0";*/
|
||||
/* kb-custom-11: "Alt+exclam";*/
|
||||
/* kb-custom-12: "Alt+at";*/
|
||||
/* kb-custom-13: "Alt+numbersign";*/
|
||||
/* kb-custom-14: "Alt+dollar";*/
|
||||
/* kb-custom-15: "Alt+percent";*/
|
||||
/* kb-custom-16: "Alt+dead_circumflex";*/
|
||||
/* kb-custom-17: "Alt+ampersand";*/
|
||||
/* kb-custom-18: "Alt+asterisk";*/
|
||||
/* kb-custom-19: "Alt+parenleft";*/
|
||||
/* kb-select-1: "Super+1";*/
|
||||
/* kb-select-2: "Super+2";*/
|
||||
/* kb-select-3: "Super+3";*/
|
||||
/* kb-select-4: "Super+4";*/
|
||||
/* kb-select-5: "Super+5";*/
|
||||
/* kb-select-6: "Super+6";*/
|
||||
/* kb-select-7: "Super+7";*/
|
||||
/* kb-select-8: "Super+8";*/
|
||||
/* kb-select-9: "Super+9";*/
|
||||
/* kb-select-10: "Super+0";*/
|
||||
/* ml-row-left: "ScrollLeft";*/
|
||||
/* ml-row-right: "ScrollRight";*/
|
||||
/* ml-row-up: "ScrollUp";*/
|
||||
/* ml-row-down: "ScrollDown";*/
|
||||
/* me-select-entry: "MousePrimary";*/
|
||||
/* me-accept-entry: "MouseDPrimary";*/
|
||||
/* me-accept-custom: "Control+MouseDPrimary";*/
|
||||
}
|
||||
/**
|
||||
* rofi -dump-theme output.
|
||||
* Rofi version: 1.6.1
|
||||
**/
|
||||
* {
|
||||
red: rgba ( 220, 50, 47, 100 % );
|
||||
selected-active-foreground: rgba ( 149, 117, 205, 100 % );
|
||||
lightfg: rgba ( 88, 104, 117, 100 % );
|
||||
separatorcolor: rgba ( 29, 31, 33, 100 % );
|
||||
urgent-foreground: rgba ( 243, 244, 245, 100 % );
|
||||
alternate-urgent-background: rgba ( 48, 53, 65, 74 % );
|
||||
lightbg: rgba ( 238, 232, 213, 100 % );
|
||||
background-color: rgba ( 0, 0, 0, 0 % );
|
||||
border-color: rgba ( 124, 131, 137, 100 % );
|
||||
normal-background: rgba ( 29, 31, 33, 1 % );
|
||||
selected-urgent-background: rgba ( 29, 31, 33, 1 % );
|
||||
alternate-active-background: rgba ( 29, 31, 33, 1 % );
|
||||
spacing: 2;
|
||||
blue: rgba ( 38, 139, 210, 100 % );
|
||||
alternate-normal-foreground: var(foreground);
|
||||
urgent-background: rgba ( 29, 31, 33, 1 % );
|
||||
selected-normal-foreground: rgba ( 149, 117, 205, 100 % );
|
||||
active-foreground: rgba ( 243, 244, 245, 100 % );
|
||||
background: rgba ( 45, 48, 59, 78 % );
|
||||
selected-active-background: rgba ( 29, 31, 33, 1 % );
|
||||
active-background: rgba ( 29, 31, 33, 1 % );
|
||||
selected-normal-background: rgba ( 29, 31, 33, 1 % );
|
||||
alternate-normal-background: rgba ( 29, 31, 33, 1 % );
|
||||
foreground: rgba ( 243, 244, 245, 100 % );
|
||||
selected-urgent-foreground: rgba ( 149, 117, 205, 100 % );
|
||||
normal-foreground: var(foreground);
|
||||
alternate-urgent-foreground: var(urgent-foreground);
|
||||
alternate-active-foreground: var(active-foreground);
|
||||
}
|
||||
element {
|
||||
padding: 1px ;
|
||||
spacing: 5px ;
|
||||
border: 0;
|
||||
}
|
||||
element normal.normal {
|
||||
background-color: var(normal-background);
|
||||
text-color: var(normal-foreground);
|
||||
}
|
||||
element normal.urgent {
|
||||
background-color: var(urgent-background);
|
||||
text-color: var(urgent-foreground);
|
||||
}
|
||||
element normal.active {
|
||||
background-color: var(active-background);
|
||||
text-color: var(active-foreground);
|
||||
}
|
||||
element selected.normal {
|
||||
background-color: var(selected-normal-background);
|
||||
text-color: var(selected-normal-foreground);
|
||||
}
|
||||
element selected.urgent {
|
||||
background-color: var(selected-urgent-background);
|
||||
text-color: var(selected-urgent-foreground);
|
||||
}
|
||||
element selected.active {
|
||||
background-color: var(selected-active-background);
|
||||
text-color: var(selected-active-foreground);
|
||||
}
|
||||
element alternate.normal {
|
||||
background-color: var(alternate-normal-background);
|
||||
text-color: var(alternate-normal-foreground);
|
||||
}
|
||||
element alternate.urgent {
|
||||
background-color: var(alternate-urgent-background);
|
||||
text-color: var(alternate-urgent-foreground);
|
||||
}
|
||||
element alternate.active {
|
||||
background-color: var(alternate-active-background);
|
||||
text-color: var(alternate-active-foreground);
|
||||
}
|
||||
element-text {
|
||||
background-color: rgba ( 0, 0, 0, 0 % );
|
||||
highlight: inherit;
|
||||
text-color: inherit;
|
||||
}
|
||||
element-icon {
|
||||
background-color: rgba ( 0, 0, 0, 0 % );
|
||||
size: 1.0000em ;
|
||||
text-color: inherit;
|
||||
}
|
||||
window {
|
||||
padding: 200;
|
||||
background-color: var(background);
|
||||
border: 0;
|
||||
fullscreen: true;
|
||||
}
|
||||
mainbox {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
message {
|
||||
padding: 1px ;
|
||||
border-color: var(separatorcolor);
|
||||
border: 0px ;
|
||||
}
|
||||
textbox {
|
||||
text-color: var(foreground);
|
||||
}
|
||||
listview {
|
||||
padding: 2px 0px 0px ;
|
||||
scrollbar: false;
|
||||
border-color: var(separatorcolor);
|
||||
spacing: 2px ;
|
||||
fixed-height: 0;
|
||||
border: 0px ;
|
||||
}
|
||||
scrollbar {
|
||||
width: 4px ;
|
||||
padding: 0;
|
||||
handle-width: 8px ;
|
||||
border: 0;
|
||||
handle-color: var(normal-foreground);
|
||||
}
|
||||
sidebar {
|
||||
border-color: var(separatorcolor);
|
||||
border: 2px dash 0px 0px ;
|
||||
}
|
||||
button {
|
||||
spacing: 0;
|
||||
text-color: var(normal-foreground);
|
||||
}
|
||||
button selected {
|
||||
background-color: var(selected-normal-background);
|
||||
text-color: var(selected-normal-foreground);
|
||||
}
|
||||
num-filtered-rows {
|
||||
expand: false;
|
||||
text-color: rgba ( 128, 128, 128, 100 % );
|
||||
}
|
||||
num-rows {
|
||||
expand: false;
|
||||
text-color: rgba ( 128, 128, 128, 100 % );
|
||||
}
|
||||
textbox-num-sep {
|
||||
expand: false;
|
||||
str: "/";
|
||||
text-color: rgba ( 128, 128, 128, 100 % );
|
||||
}
|
||||
inputbar {
|
||||
padding: 1px ;
|
||||
spacing: 0px ;
|
||||
text-color: var(normal-foreground);
|
||||
children: [ prompt,textbox-prompt-colon,entry,num-filtered-rows,textbox-num-sep,num-rows,case-indicator ];
|
||||
}
|
||||
case-indicator {
|
||||
spacing: 0;
|
||||
text-color: var(normal-foreground);
|
||||
}
|
||||
entry {
|
||||
text-color: var(normal-foreground);
|
||||
spacing: 0;
|
||||
placeholder-color: rgba ( 128, 128, 128, 100 % );
|
||||
placeholder: "Type to filter";
|
||||
}
|
||||
prompt {
|
||||
spacing: 0;
|
||||
text-color: var(normal-foreground);
|
||||
}
|
||||
textbox-prompt-colon {
|
||||
margin: 0px 0.3000em 0.0000em 0.0000em ;
|
||||
expand: false;
|
||||
str: ":";
|
||||
text-color: inherit;
|
||||
}
|
||||
mode-switcher {
|
||||
border: 0px ;
|
||||
}
|
||||
|
||||
34
rofi/.local/share/rofi/finder.sh
Executable file
34
rofi/.local/share/rofi/finder.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#PUT THIS FILE IN ~/.local/share/rofi/finder.sh
|
||||
#USE: rofi -show find -modi find:~/.local/share/rofi/finder.sh
|
||||
if [ ! -z "$@" ]; then
|
||||
QUERY=$@
|
||||
if [[ "$@" == /* ]]; then
|
||||
if [[ "$@" == *\?\? ]]; then
|
||||
coproc (xdg-open "${QUERY%\/* \?\?}" >/dev/null 2>&1)
|
||||
exec 1>&-
|
||||
exit
|
||||
else
|
||||
coproc (xdg-open "$@" >/dev/null 2>&1)
|
||||
exec 1>&-
|
||||
exit
|
||||
fi
|
||||
elif [[ "$@" == \!\!* ]]; then
|
||||
echo "!!-- Type your search query to find files"
|
||||
echo "!!-- To search again type !<search_query>"
|
||||
echo "!!-- To search parent directories type ?<search_query>"
|
||||
echo "!!-- You can print this help by typing !!"
|
||||
elif [[ "$@" == \?* ]]; then
|
||||
while read -r line; do
|
||||
echo "$line" \?\?
|
||||
done <<<$(fd -t file "${QUERY#\?}" $HOME/Documents 2>&1 | grep -v 'Permission denied\|Input/output error')
|
||||
else
|
||||
fd -t file "${QUERY#!}" $HOME/Documents 2>&1 | grep -v 'Permission denied\|Input/output error'
|
||||
fi
|
||||
else
|
||||
echo "!!-- Type your search query to find files"
|
||||
echo "!!-- To seach again type !<search_query>"
|
||||
echo "!!-- To seach parent directories type ?<search_query>"
|
||||
echo "!!-- You can print this help by typing !!"
|
||||
fi
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
tmp_dir="/tmp/cliphist"
|
||||
rm -rf "$tmp_dir"
|
||||
|
||||
if [[ -n "$1" ]]; then
|
||||
cliphist decode <<<"$1" | wl-copy
|
||||
exit
|
||||
fi
|
||||
|
||||
mkdir -p "$tmp_dir"
|
||||
|
||||
read -r -d '' prog <<EOF
|
||||
/^[0-9]+\s<meta http-equiv=/ { next }
|
||||
match(\$0, /^([0-9]+)\s(\[\[\s)?binary.*(jpg|jpeg|png|bmp)/, grp) {
|
||||
system("echo " grp[1] "\\\\\t | cliphist decode >$tmp_dir/"grp[1]"."grp[3])
|
||||
print \$0"\0icon\x1f$tmp_dir/"grp[1]"."grp[3]
|
||||
next
|
||||
}
|
||||
1
|
||||
EOF
|
||||
cliphist list | gawk "$prog"
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo "use flake" >.envrc
|
||||
echo "use nix" >.envrc
|
||||
direnv allow
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
IMAGE_URL="https://earthview.withgoogle.com/download"
|
||||
ID_FILE="${HOME}/Documents/Misc/earthview-ids"
|
||||
MAX_ID="$(wc -l <"${ID_FILE}")"
|
||||
OUTPUT_FILE=/tmp/earthview-wallpaper.jpg
|
||||
|
||||
get_random_id() {
|
||||
RANDOM_ID="$(shuf -n 1 -i 1-"${MAX_ID}")"
|
||||
ID="$(sed -n "${RANDOM_ID}p" "$ID_FILE")"
|
||||
}
|
||||
|
||||
set -e
|
||||
get_random_id
|
||||
curl -fLs "${IMAGE_URL}/${ID}.jpg" -o "${OUTPUT_FILE}"
|
||||
swaymsg "output * bg $OUTPUT_FILE fill"
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
search_directory=~/Documents
|
||||
downloads=~/Downloads
|
||||
|
||||
xdg-open "$(rg --no-messages --no-ignore --files $search_directory $downloads -g "*.{pdf,docx,doc,xlsx,xls,pptx,ppt}" |
|
||||
rofi -threads 0 -dmenu -sort -sorting-method fzf -i -p "find")"
|
||||
@@ -1,14 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
ACCOUNT="$1"
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
ACCOUNT="-a"
|
||||
fi
|
||||
|
||||
mbsync "$ACCOUNT"
|
||||
if pgrep -f 'mu server'; then
|
||||
emacsclient -e '(mu4e-update-index)'
|
||||
else
|
||||
mu index --lazy-check
|
||||
fi
|
||||
@@ -1,419 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Mutt OAuth2 token management script, version 2020-08-07
|
||||
# Written against python 3.7.3, not tried with earlier python versions.
|
||||
#
|
||||
# Copyright (C) 2020 Alexander Perlis
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301, USA.
|
||||
'''Mutt OAuth2 token management'''
|
||||
|
||||
import sys
|
||||
import json
|
||||
import argparse
|
||||
import urllib.parse
|
||||
import urllib.request
|
||||
import imaplib
|
||||
import poplib
|
||||
import smtplib
|
||||
import base64
|
||||
import secrets
|
||||
import hashlib
|
||||
import time
|
||||
from datetime import timedelta, datetime
|
||||
from pathlib import Path
|
||||
import socket
|
||||
import http.server
|
||||
import subprocess
|
||||
|
||||
# The token file must be encrypted because it contains multi-use bearer tokens
|
||||
# whose usage does not require additional verification. Specify whichever
|
||||
# encryption and decryption pipes you prefer. They should read from standard
|
||||
# input and write to standard output. The example values here invoke GPG,
|
||||
# although won't work until an appropriate identity appears in the first line.
|
||||
ENCRYPTION_PIPE = ['gpg', '--encrypt', '--recipient', '9893DA236405AF57']
|
||||
DECRYPTION_PIPE = ['gpg', '--decrypt']
|
||||
|
||||
registrations = {
|
||||
'google': {
|
||||
'authorize_endpoint': 'https://accounts.google.com/o/oauth2/auth',
|
||||
'devicecode_endpoint': 'https://oauth2.googleapis.com/device/code',
|
||||
'token_endpoint': 'https://accounts.google.com/o/oauth2/token',
|
||||
'redirect_uri': 'urn:ietf:wg:oauth:2.0:oob',
|
||||
'imap_endpoint': 'imap.gmail.com',
|
||||
'pop_endpoint': 'pop.gmail.com',
|
||||
'smtp_endpoint': 'smtp.gmail.com',
|
||||
'sasl_method': 'OAUTHBEARER',
|
||||
'scope': 'https://mail.google.com/',
|
||||
'client_id': '',
|
||||
'client_secret': '',
|
||||
},
|
||||
'microsoft': {
|
||||
'authorize_endpoint': 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
|
||||
'devicecode_endpoint': 'https://login.microsoftonline.com/common/oauth2/v2.0/devicecode',
|
||||
'token_endpoint': 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
|
||||
'redirect_uri': 'https://login.microsoftonline.com/common/oauth2/nativeclient',
|
||||
'tenant': 'common',
|
||||
'imap_endpoint': 'outlook.office365.com',
|
||||
'pop_endpoint': 'outlook.office365.com',
|
||||
'smtp_endpoint': 'smtp.office365.com',
|
||||
'sasl_method': 'XOAUTH2',
|
||||
'scope': ('offline_access https://outlook.office.com/IMAP.AccessAsUser.All '
|
||||
'https://outlook.office.com/POP.AccessAsUser.All '
|
||||
'https://outlook.office.com/SMTP.Send'),
|
||||
'client_id': '08162f7c-0fd2-4200-a84a-f25a4db0b584',
|
||||
'client_secret': 'TxRBilcHdC6WGBee]fs?QR:SJ8nI[g82',
|
||||
},
|
||||
}
|
||||
|
||||
ap = argparse.ArgumentParser(epilog='''
|
||||
This script obtains and prints a valid OAuth2 access token. State is maintained in an
|
||||
encrypted TOKENFILE. Run with "--verbose --authorize" to get started or whenever all
|
||||
tokens have expired, optionally with "--authflow" to override the default authorization
|
||||
flow. To truly start over from scratch, first delete TOKENFILE. Use "--verbose --test"
|
||||
to test the IMAP/POP/SMTP endpoints.
|
||||
''')
|
||||
ap.add_argument('-v', '--verbose', action='store_true', help='increase verbosity')
|
||||
ap.add_argument('-d', '--debug', action='store_true', help='enable debug output')
|
||||
ap.add_argument('tokenfile', help='persistent token storage')
|
||||
ap.add_argument('-a', '--authorize', action='store_true', help='manually authorize new tokens')
|
||||
ap.add_argument('--authflow', help='authcode | localhostauthcode | devicecode')
|
||||
ap.add_argument('-t', '--test', action='store_true', help='test IMAP/POP/SMTP endpoints')
|
||||
args = ap.parse_args()
|
||||
|
||||
token = {}
|
||||
path = Path(args.tokenfile)
|
||||
if path.exists():
|
||||
if 0o777 & path.stat().st_mode != 0o600:
|
||||
sys.exit('Token file has unsafe mode. Suggest deleting and starting over.')
|
||||
try:
|
||||
sub = subprocess.run(DECRYPTION_PIPE, check=True, input=path.read_bytes(),
|
||||
capture_output=True)
|
||||
token = json.loads(sub.stdout)
|
||||
except subprocess.CalledProcessError:
|
||||
sys.exit('Difficulty decrypting token file. Is your decryption agent primed for '
|
||||
'non-interactive usage, or an appropriate environment variable such as '
|
||||
'GPG_TTY set to allow interactive agent usage from inside a pipe?')
|
||||
|
||||
|
||||
def writetokenfile():
|
||||
'''Writes global token dictionary into token file.'''
|
||||
if not path.exists():
|
||||
path.touch(mode=0o600)
|
||||
if 0o777 & path.stat().st_mode != 0o600:
|
||||
sys.exit('Token file has unsafe mode. Suggest deleting and starting over.')
|
||||
sub2 = subprocess.run(ENCRYPTION_PIPE, check=True, input=json.dumps(token).encode(),
|
||||
capture_output=True)
|
||||
path.write_bytes(sub2.stdout)
|
||||
|
||||
|
||||
if args.debug:
|
||||
print('Obtained from token file:', json.dumps(token))
|
||||
if not token:
|
||||
if not args.authorize:
|
||||
sys.exit('You must run script with "--authorize" at least once.')
|
||||
print('Available app and endpoint registrations:', *registrations)
|
||||
token['registration'] = input('OAuth2 registration: ')
|
||||
token['authflow'] = input('Preferred OAuth2 flow ("authcode" or "localhostauthcode" '
|
||||
'or "devicecode"): ')
|
||||
token['email'] = input('Account e-mail address: ')
|
||||
token['access_token'] = ''
|
||||
token['access_token_expiration'] = ''
|
||||
token['refresh_token'] = ''
|
||||
writetokenfile()
|
||||
|
||||
if token['registration'] not in registrations:
|
||||
sys.exit(f'ERROR: Unknown registration "{token["registration"]}". Delete token file '
|
||||
f'and start over.')
|
||||
registration = registrations[token['registration']]
|
||||
|
||||
authflow = token['authflow']
|
||||
if args.authflow:
|
||||
authflow = args.authflow
|
||||
|
||||
baseparams = {'client_id': registration['client_id']}
|
||||
# Microsoft uses 'tenant' but Google does not
|
||||
if 'tenant' in registration:
|
||||
baseparams['tenant'] = registration['tenant']
|
||||
|
||||
|
||||
def access_token_valid():
|
||||
'''Returns True when stored access token exists and is still valid at this time.'''
|
||||
token_exp = token['access_token_expiration']
|
||||
return token_exp and datetime.now() < datetime.fromisoformat(token_exp)
|
||||
|
||||
|
||||
def update_tokens(r):
|
||||
'''Takes a response dictionary, extracts tokens out of it, and updates token file.'''
|
||||
token['access_token'] = r['access_token']
|
||||
token['access_token_expiration'] = (datetime.now() +
|
||||
timedelta(seconds=int(r['expires_in']))).isoformat()
|
||||
if 'refresh_token' in r:
|
||||
token['refresh_token'] = r['refresh_token']
|
||||
writetokenfile()
|
||||
if args.verbose:
|
||||
print(f'NOTICE: Obtained new access token, expires {token["access_token_expiration"]}.')
|
||||
|
||||
|
||||
if args.authorize:
|
||||
p = baseparams.copy()
|
||||
p['scope'] = registration['scope']
|
||||
|
||||
if authflow in ('authcode', 'localhostauthcode'):
|
||||
verifier = secrets.token_urlsafe(90)
|
||||
challenge = base64.urlsafe_b64encode(hashlib.sha256(verifier.encode()).digest())[:-1]
|
||||
redirect_uri = registration['redirect_uri']
|
||||
listen_port = 0
|
||||
if authflow == 'localhostauthcode':
|
||||
# Find an available port to listen on
|
||||
s = socket.socket()
|
||||
s.bind(('127.0.0.1', 0))
|
||||
listen_port = s.getsockname()[1]
|
||||
s.close()
|
||||
redirect_uri = 'http://localhost:'+str(listen_port)+'/'
|
||||
# Probably should edit the port number into the actual redirect URL.
|
||||
|
||||
p.update({'login_hint': token['email'],
|
||||
'response_type': 'code',
|
||||
'redirect_uri': redirect_uri,
|
||||
'code_challenge': challenge,
|
||||
'code_challenge_method': 'S256'})
|
||||
print(registration["authorize_endpoint"] + '?' +
|
||||
urllib.parse.urlencode(p, quote_via=urllib.parse.quote))
|
||||
|
||||
authcode = ''
|
||||
if authflow == 'authcode':
|
||||
authcode = input('Visit displayed URL to retrieve authorization code. Enter '
|
||||
'code from server (might be in browser address bar): ')
|
||||
else:
|
||||
print('Visit displayed URL to authorize this application. Waiting...',
|
||||
end='', flush=True)
|
||||
|
||||
class MyHandler(http.server.BaseHTTPRequestHandler):
|
||||
'''Handles the browser query resulting from redirect to redirect_uri.'''
|
||||
|
||||
# pylint: disable=C0103
|
||||
def do_HEAD(self):
|
||||
'''Response to a HEAD requests.'''
|
||||
self.send_response(200)
|
||||
self.send_header('Content-type', 'text/html')
|
||||
self.end_headers()
|
||||
|
||||
def do_GET(self):
|
||||
'''For GET request, extract code parameter from URL.'''
|
||||
# pylint: disable=W0603
|
||||
global authcode
|
||||
querystring = urllib.parse.urlparse(self.path).query
|
||||
querydict = urllib.parse.parse_qs(querystring)
|
||||
if 'code' in querydict:
|
||||
authcode = querydict['code'][0]
|
||||
self.do_HEAD()
|
||||
self.wfile.write(b'<html><head><title>Authorizaton result</title></head>')
|
||||
self.wfile.write(b'<body><p>Authorization redirect completed. You may '
|
||||
b'close this window.</p></body></html>')
|
||||
with http.server.HTTPServer(('127.0.0.1', listen_port), MyHandler) as httpd:
|
||||
try:
|
||||
httpd.handle_request()
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
if not authcode:
|
||||
sys.exit('Did not obtain an authcode.')
|
||||
|
||||
for k in 'response_type', 'login_hint', 'code_challenge', 'code_challenge_method':
|
||||
del p[k]
|
||||
p.update({'grant_type': 'authorization_code',
|
||||
'code': authcode,
|
||||
'client_secret': registration['client_secret'],
|
||||
'code_verifier': verifier})
|
||||
try:
|
||||
response = urllib.request.urlopen(registration['token_endpoint'],
|
||||
urllib.parse.urlencode(p).encode())
|
||||
except urllib.error.HTTPError as err:
|
||||
print(err.code, err.reason)
|
||||
response = err
|
||||
response = response.read()
|
||||
if args.debug:
|
||||
print(response)
|
||||
response = json.loads(response)
|
||||
if 'error' in response:
|
||||
print(response['error'])
|
||||
if 'error_description' in response:
|
||||
print(response['error_description'])
|
||||
sys.exit(1)
|
||||
|
||||
elif authflow == 'devicecode':
|
||||
try:
|
||||
response = urllib.request.urlopen(registration['devicecode_endpoint'],
|
||||
urllib.parse.urlencode(p).encode())
|
||||
except urllib.error.HTTPError as err:
|
||||
print(err.code, err.reason)
|
||||
response = err
|
||||
response = response.read()
|
||||
if args.debug:
|
||||
print(response)
|
||||
response = json.loads(response)
|
||||
if 'error' in response:
|
||||
print(response['error'])
|
||||
if 'error_description' in response:
|
||||
print(response['error_description'])
|
||||
sys.exit(1)
|
||||
print(response['message'])
|
||||
del p['scope']
|
||||
p.update({'grant_type': 'urn:ietf:params:oauth:grant-type:device_code',
|
||||
'client_secret': registration['client_secret'],
|
||||
'device_code': response['device_code']})
|
||||
interval = int(response['interval'])
|
||||
print('Polling...', end='', flush=True)
|
||||
while True:
|
||||
time.sleep(interval)
|
||||
print('.', end='', flush=True)
|
||||
try:
|
||||
response = urllib.request.urlopen(registration['token_endpoint'],
|
||||
urllib.parse.urlencode(p).encode())
|
||||
except urllib.error.HTTPError as err:
|
||||
# Not actually always an error, might just mean "keep trying..."
|
||||
response = err
|
||||
response = response.read()
|
||||
if args.debug:
|
||||
print(response)
|
||||
response = json.loads(response)
|
||||
if 'error' not in response:
|
||||
break
|
||||
if response['error'] == 'authorization_declined':
|
||||
print(' user declined authorization.')
|
||||
sys.exit(1)
|
||||
if response['error'] == 'expired_token':
|
||||
print(' too much time has elapsed.')
|
||||
sys.exit(1)
|
||||
if response['error'] != 'authorization_pending':
|
||||
print(response['error'])
|
||||
if 'error_description' in response:
|
||||
print(response['error_description'])
|
||||
sys.exit(1)
|
||||
print()
|
||||
|
||||
else:
|
||||
sys.exit(f'ERROR: Unknown OAuth2 flow "{token["authflow"]}. Delete token file and '
|
||||
f'start over.')
|
||||
|
||||
update_tokens(response)
|
||||
|
||||
|
||||
if not access_token_valid():
|
||||
if args.verbose:
|
||||
print('NOTICE: Invalid or expired access token; using refresh token '
|
||||
'to obtain new access token.')
|
||||
if not token['refresh_token']:
|
||||
sys.exit('ERROR: No refresh token. Run script with "--authorize".')
|
||||
p = baseparams.copy()
|
||||
p.update({'client_secret': registration['client_secret'],
|
||||
'refresh_token': token['refresh_token'],
|
||||
'grant_type': 'refresh_token'})
|
||||
try:
|
||||
response = urllib.request.urlopen(registration['token_endpoint'],
|
||||
urllib.parse.urlencode(p).encode())
|
||||
except urllib.error.HTTPError as err:
|
||||
print(err.code, err.reason)
|
||||
response = err
|
||||
response = response.read()
|
||||
if args.debug:
|
||||
print(response)
|
||||
response = json.loads(response)
|
||||
if 'error' in response:
|
||||
print(response['error'])
|
||||
if 'error_description' in response:
|
||||
print(response['error_description'])
|
||||
print('Perhaps refresh token invalid. Try running once with "--authorize"')
|
||||
sys.exit(1)
|
||||
update_tokens(response)
|
||||
|
||||
|
||||
if not access_token_valid():
|
||||
sys.exit('ERROR: No valid access token. This should not be able to happen.')
|
||||
|
||||
|
||||
if args.verbose:
|
||||
print('Access Token: ', end='')
|
||||
print(token['access_token'])
|
||||
|
||||
|
||||
def build_sasl_string(user, host, port, bearer_token):
|
||||
'''Build appropriate SASL string, which depends on cloud server's supported SASL method.'''
|
||||
if registration['sasl_method'] == 'OAUTHBEARER':
|
||||
return f'n,a={user},\1host={host}\1port={port}\1auth=Bearer {bearer_token}\1\1'
|
||||
if registration['sasl_method'] == 'XOAUTH2':
|
||||
return f'user={user}\1auth=Bearer {bearer_token}\1\1'
|
||||
sys.exit(f'Unknown SASL method {registration["sasl_method"]}.')
|
||||
|
||||
|
||||
if args.test:
|
||||
errors = False
|
||||
|
||||
imap_conn = imaplib.IMAP4_SSL(registration['imap_endpoint'])
|
||||
sasl_string = build_sasl_string(token['email'], registration['imap_endpoint'], 993,
|
||||
token['access_token'])
|
||||
if args.debug:
|
||||
imap_conn.debug = 4
|
||||
try:
|
||||
imap_conn.authenticate(registration['sasl_method'], lambda _: sasl_string.encode())
|
||||
# Microsoft has a bug wherein a mismatch between username and token can still report a
|
||||
# successful login... (Try a consumer login with the token from a work/school account.)
|
||||
# Fortunately subsequent commands fail with an error. Thus we follow AUTH with another
|
||||
# IMAP command before reporting success.
|
||||
imap_conn.list()
|
||||
if args.verbose:
|
||||
print('IMAP authentication succeeded')
|
||||
except imaplib.IMAP4.error as e:
|
||||
print('IMAP authentication FAILED (does your account allow IMAP?):', e)
|
||||
errors = True
|
||||
|
||||
pop_conn = poplib.POP3_SSL(registration['pop_endpoint'])
|
||||
sasl_string = build_sasl_string(token['email'], registration['pop_endpoint'], 995,
|
||||
token['access_token'])
|
||||
if args.debug:
|
||||
pop_conn.set_debuglevel(2)
|
||||
try:
|
||||
# poplib doesn't have an auth command taking an authenticator object
|
||||
# Microsoft requires a two-line SASL for POP
|
||||
# pylint: disable=W0212
|
||||
pop_conn._shortcmd('AUTH ' + registration['sasl_method'])
|
||||
pop_conn._shortcmd(base64.standard_b64encode(sasl_string.encode()).decode())
|
||||
if args.verbose:
|
||||
print('POP authentication succeeded')
|
||||
except poplib.error_proto as e:
|
||||
print('POP authentication FAILED (does your account allow POP?):', e.args[0].decode())
|
||||
errors = True
|
||||
|
||||
# SMTP_SSL would be simpler but Microsoft does not answer on port 465.
|
||||
smtp_conn = smtplib.SMTP(registration['smtp_endpoint'], 587)
|
||||
sasl_string = build_sasl_string(token['email'], registration['smtp_endpoint'], 587,
|
||||
token['access_token'])
|
||||
smtp_conn.ehlo('test')
|
||||
smtp_conn.starttls()
|
||||
smtp_conn.ehlo('test')
|
||||
if args.debug:
|
||||
smtp_conn.set_debuglevel(2)
|
||||
try:
|
||||
smtp_conn.auth(registration['sasl_method'], lambda _=None: sasl_string)
|
||||
if args.verbose:
|
||||
print('SMTP authentication succeeded')
|
||||
except smtplib.SMTPAuthenticationError as e:
|
||||
print('SMTP authentication FAILED:', e)
|
||||
errors = True
|
||||
|
||||
if errors:
|
||||
sys.exit(1)
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
emacs_pid=$(pidof emacs)
|
||||
|
||||
if [ -z "$emacs_pid" ]; then
|
||||
echo ""
|
||||
exit 0
|
||||
fi
|
||||
|
||||
CLOCK_STATUS=$(emacsclient --eval "(bergheim/org-clock-status)" 2>/dev/null)
|
||||
|
||||
echo "${CLOCK_STATUS:1:-1}"
|
||||
@@ -2,35 +2,7 @@
|
||||
|
||||
directory=/tmp/webtorrent
|
||||
player=mpv
|
||||
data_file=$HOME/Documents/Misc/peerflix-db.csv
|
||||
|
||||
parse_csv() {
|
||||
show_name=$(echo "$1" | cut -d "=" -f 3 | awk -F "S[0-9]|[S|s]eason|[C|c]omplete|([0-9]+)" '{print $1}' |
|
||||
tr -d "[:digit:]" | tr "[:punct:]" " " | sed -e 's/[[:space:]]*$//')
|
||||
episode=$(awk -F ',' -v var="$show_name" '$1 ~ var {print $2}' "$data_file")
|
||||
line_number=$(awk -F ',' -v var="$show_name" '$1 ~ var {print NR}' "$data_file")
|
||||
}
|
||||
|
||||
increment_episode() {
|
||||
next_episode=$((episode + 1))
|
||||
sed -e "$line_number s/$episode/$next_episode/" -i "$data_file"
|
||||
}
|
||||
|
||||
usage() {
|
||||
echo "Usage: peerflix <magnet link>"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ $# -ne 1 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
parse_csv "$1"
|
||||
if [ -z "$episode" ]; then
|
||||
webtorrent download "$1" -s -o "$directory" --"$player"
|
||||
read -rp "File number: " nr
|
||||
webtorrent download "$@" -s "$nr" -o "$directory" --"$player"
|
||||
else
|
||||
increment_episode
|
||||
webtorrent download "$@" -s "$episode" -o "$directory" --"$player"
|
||||
fi
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
usage() {
|
||||
echo "Usage: power-manager <operation>"
|
||||
echo "operation: poweroff|reboot"
|
||||
}
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
operation=$1
|
||||
|
||||
emacsclient --eval '(doom/save-session "~/.emacs.d/.local/etc/workspaces/autosave")'
|
||||
systemctl "$operation"
|
||||
@@ -1,21 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
select_action() {
|
||||
action_content=(
|
||||
"Shutdown"
|
||||
"Reboot"
|
||||
"Suspend"
|
||||
)
|
||||
action=$(printf '%s\n' "${action_content[@]}" | rofi -no-auto-select -i "$@" -dmenu -p "Choose an action")
|
||||
execute_action "$action"
|
||||
}
|
||||
|
||||
execute_action() {
|
||||
case "$1" in
|
||||
"Shutdown") ~/.local/share/scripts/power-manager "poweroff" ;;
|
||||
"Reboot") ~/.local/share/scripts/power-manager "reboot" ;;
|
||||
"Suspend") systemctl suspend -i ;;
|
||||
esac
|
||||
}
|
||||
|
||||
select_action "$@"
|
||||
@@ -1,94 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
usage() {
|
||||
echo "Usage: project-init <type>"
|
||||
echo "type git: VCS project"
|
||||
echo "type remote-git: VCS project with README, LICENSE and tests"
|
||||
echo "type src: Simple coding project"
|
||||
echo "type init: Initialize populated project"
|
||||
echo "type doc: Assignment"
|
||||
echo "type nix-ld: Run unpatched programs with Nix"
|
||||
echo "type datasci: Python data science project"
|
||||
exit 1
|
||||
}
|
||||
|
||||
copy_nix_files() {
|
||||
if [ "$1" = "flake" ]; then
|
||||
cp ~/Projects/devenv/flake-template.nix flake.nix
|
||||
elif [ "$1" = "nix-ld" ]; then
|
||||
cp ~/Projects/devenv/nix-ld.nix shell.nix
|
||||
elif [ "$1" = "datasci" ]; then
|
||||
cp ~/Projects/devenv/python-data-science.nix shell.nix
|
||||
else
|
||||
cp ~/Projects/devenv/shell.nix .
|
||||
fi
|
||||
}
|
||||
|
||||
git_initialization() {
|
||||
git init
|
||||
git add ./*
|
||||
git commit -m "Initial commit"
|
||||
}
|
||||
|
||||
direnv_integration() {
|
||||
if [ "$1" = "flake" ]; then
|
||||
echo "use flake" >.envrc
|
||||
else
|
||||
echo "use nix" >.envrc
|
||||
fi
|
||||
direnv allow
|
||||
}
|
||||
|
||||
create_dir() {
|
||||
if [ ! -d "$1" ]; then
|
||||
mkdir "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
if [ $# != 1 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
type=$1
|
||||
|
||||
if [ "$type" = "git" ]; then
|
||||
copy_nix_files "nix"
|
||||
create_dir data
|
||||
create_dir src
|
||||
git_initialization
|
||||
direnv_integration "nix"
|
||||
elif [ "$type" = "remote-git" ]; then
|
||||
touch README.org
|
||||
cp ~/Projects/devenv/LICENSE.md LICENSE.md
|
||||
copy_nix_files "flake"
|
||||
create_dir data
|
||||
create_dir src
|
||||
git_initialization
|
||||
direnv_integration "flake"
|
||||
elif [ "$type" = "doc" ]; then
|
||||
create_dir assets
|
||||
touch Report.org
|
||||
touch .project
|
||||
elif [ "$type" = "src" ]; then
|
||||
copy_nix_files "nix"
|
||||
create_dir data
|
||||
create_dir src
|
||||
touch .project
|
||||
direnv_integration "nix"
|
||||
elif [ "$type" = "init" ]; then
|
||||
touch .project
|
||||
if [ ! -f shell.nix ]; then
|
||||
copy_nix_files "nix"
|
||||
fi
|
||||
direnv_integration "nix"
|
||||
elif [ "$type" = "nix-ld" ]; then
|
||||
copy_nix_files "nix-ld"
|
||||
direnv_integration "nix"
|
||||
elif [ "$type" = "datasci" ]; then
|
||||
copy_nix_files "datasci"
|
||||
create_dir data
|
||||
touch .project
|
||||
direnv_integration "nix"
|
||||
else
|
||||
usage
|
||||
fi
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
pulsemixer $(\
|
||||
pulsemixer --list-sources |\
|
||||
grep Default |\
|
||||
awk -v args="$args" '{
|
||||
gsub(/,$/,"",$3);
|
||||
cmdargs = cmdargs"--id "$3" "args" "
|
||||
} END {
|
||||
print cmdargs
|
||||
}'
|
||||
) --toggle-mute
|
||||
@@ -1,33 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
select_action() {
|
||||
action_content=(
|
||||
"System resources usage"
|
||||
"Connectivity test"
|
||||
"Reload doom emacs"
|
||||
"Sync mail"
|
||||
"Restart Waybar"
|
||||
)
|
||||
action=$(printf '%s\n' "${action_content[@]}" | rofi -no-auto-select -i "$@" -dmenu -p "Choose an action")
|
||||
execute_action "$action"
|
||||
}
|
||||
|
||||
launch_kitty() {
|
||||
bash -c "kitty --class popup -- $1"
|
||||
}
|
||||
|
||||
execute_command() {
|
||||
bash -c "$1"
|
||||
}
|
||||
|
||||
execute_action() {
|
||||
case "$1" in
|
||||
"System resources usage") launch_kitty "htop" ;;
|
||||
"Connectivity test") launch_kitty "ping -c 2 freebsd.org" ;;
|
||||
"Reload doom emacs") execute_command "$HOME/.emacs.d/bin/doom sync" ;;
|
||||
"Sync mail") execute_command "/home/coolneng/.local/share/scripts/mail-sync -a" ;;
|
||||
"Restart Waybar") execute_command "pkill waybar; waybar &" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
select_action "$@"
|
||||
@@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Convert ZFS legacy mountpoints to ZFS mounts
|
||||
zfs list -Ho name | while read -r dataset; do
|
||||
zfs set mountpoint="/$dataset" "$dataset"
|
||||
done
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
usage() {
|
||||
echo "Usage: shebang-patcher <script>"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ $# != 1 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
sed "s/#!\/bin\/bash/#!\/usr\/bin\/env bash/" -i "$1"
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ $# -lt 2 ]; then
|
||||
echo "Usage: subject <subject name> <subject type>"
|
||||
echo "Usage: subject.sh <subject name> <subject type>"
|
||||
echo "subject type 0: programming"
|
||||
echo "subject type 1: no programming"
|
||||
exit 1
|
||||
@@ -10,11 +10,11 @@ fi
|
||||
name=$1
|
||||
type=$2
|
||||
|
||||
formatted_name=$(echo "$name" | tr -s ' ' '_')
|
||||
mkdir -p "$formatted_name"/Labs
|
||||
mkdir -p "$formatted_name"/Exercises
|
||||
touch "$formatted_name"/.project
|
||||
|
||||
if [ "$type" -eq 0 ]; then
|
||||
mkdir -p "$formatted_name"/Code
|
||||
mkdir -p "$name"/Code
|
||||
mkdir -p "$name"/TP
|
||||
mkdir -p "$name"/Exos
|
||||
else
|
||||
mkdir -p "$name"/TP
|
||||
mkdir -p "$name"/Exos
|
||||
fi
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
LIGHT_THEME="rose-pine"
|
||||
DARK_THEME="nord"
|
||||
KITTY_LIGHT_THEME="Rosé Pine Dawn"
|
||||
NVIM_COLORSCHEME_LINE=41
|
||||
|
||||
capitalize() {
|
||||
printf '%s' "$1" | head -c 1 | tr "[:lower:]" "[:upper:]"
|
||||
printf '%s' "$1" | tail -c '+2' | tr "-" " " | tr "e" "é"
|
||||
}
|
||||
|
||||
change_theme() {
|
||||
sed -e "$NVIM_COLORSCHEME_LINE s/$1/$2/" -i ~/.config/nvim/init.vim
|
||||
sed -i "s/$1/$2/" ~/.config/zathura/zathurarc
|
||||
if [ "$2" = "$LIGHT_THEME" ]; then
|
||||
kitty +kitten themes --reload-in=all "$KITTY_LIGHT_THEME"
|
||||
else
|
||||
kitty +kitten themes --reload-in=all "$(capitalize "$2")"
|
||||
fi
|
||||
nvr --remote-send ":source ~/.config/nvim/init.vim <CR>"
|
||||
}
|
||||
|
||||
recolor_zathura() {
|
||||
instances=$(pgrep -f zathura)
|
||||
temp_file=/tmp/zathura-instances
|
||||
echo "$instances" >"$temp_file"
|
||||
while IFS= read -r line; do
|
||||
dbus-send --type="method_call" --dest=org.pwmt.zathura.PID-"$line" \
|
||||
/org/pwmt/zathura org.pwmt.zathura.ExecuteCommand string:"source"
|
||||
done <"$temp_file"
|
||||
}
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "Usage: switch_theme <mode>"
|
||||
echo "mode: dark|light"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mode=$1
|
||||
|
||||
if [ "$mode" = "light" ]; then
|
||||
emacsclient --eval "(load-theme 'os1 'no-confirm)"
|
||||
change_theme "$DARK_THEME" "$LIGHT_THEME"
|
||||
recolor_zathura
|
||||
else
|
||||
emacsclient --eval "(load-theme 'doom-one 'no-confirm)"
|
||||
change_theme "$LIGHT_THEME" "$DARK_THEME"
|
||||
recolor_zathura
|
||||
fi
|
||||
@@ -1,27 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
select_action() {
|
||||
action_content=(
|
||||
"local"
|
||||
"zion"
|
||||
"hpc"
|
||||
"kermit-gpu"
|
||||
)
|
||||
action=$(printf '%s\n' "${action_content[@]}" | rofi -no-auto-select -i "$@" -dmenu -p "Choose a session")
|
||||
execute_action "$action"
|
||||
}
|
||||
|
||||
launch_session() {
|
||||
bash -c "tmuxp load ~/.tmuxp/$1.yaml"
|
||||
}
|
||||
|
||||
execute_action() {
|
||||
case "$1" in
|
||||
"local") launch_session "local" ;;
|
||||
"zion") launch_session "zion" ;;
|
||||
"hpc") launch_session "hpc" ;;
|
||||
"kermit-gpu") launch_session "kermit-gpu" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
select_action "$@"
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
git config user.name "akasroua"
|
||||
git config user.email "amin.kasrouaouam@ugent.be"
|
||||
@@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
git fetch upstream
|
||||
git checkout master
|
||||
git rebase upstream/master
|
||||
git push -f origin master
|
||||
@@ -1,27 +1,23 @@
|
||||
host zion
|
||||
user coolneng
|
||||
hostname 192.168.128.2
|
||||
hostname 10.8.0.1
|
||||
port 22
|
||||
identityfile ~/.ssh/zion
|
||||
|
||||
host eu.nixbuild.net
|
||||
pubkeyacceptedkeytypes ssh-ed25519
|
||||
identityfile ~/.ssh/nixbuild
|
||||
|
||||
host hpc
|
||||
user vsc44348
|
||||
hostname login.hpc.ugent.be
|
||||
port 22
|
||||
identityfile ~/.ssh/id_ed25519
|
||||
|
||||
host kobo
|
||||
host localhost
|
||||
user root
|
||||
hostname 192.168.13.20
|
||||
hostname localhost
|
||||
port 22
|
||||
identityfile ~/.ssh/kobo
|
||||
identityfile ~/.ssh/localhost
|
||||
|
||||
host kathreftis
|
||||
user root
|
||||
hostname 192.168.13.131
|
||||
host prodyfo
|
||||
user ec2-user
|
||||
hostname ec2-52-47-172-241.eu-west-3.compute.amazonaws.com
|
||||
port 22
|
||||
identityfile ~/.ssh/kathreftis
|
||||
identityfile ~/.ssh/odyfo
|
||||
|
||||
host devyfo
|
||||
user ec2-user
|
||||
hostname ec2-35-181-115-141.eu-west-3.compute.amazonaws.com
|
||||
port 22
|
||||
identityfile ~/.ssh/odyfo
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user