Compare commits

...

383 Commits

Author SHA1 Message Date
288be4bd96 Set external monitor to fixed position 2025-11-07 02:04:18 +01:00
afec522f39 Update fish variables 2025-11-07 01:16:22 +01:00
4d8ad1d6d3 Set default applications via MIME 2025-10-30 11:12:22 +01:00
fe51ba9a90 Disable recoloring by default in Zathura 2025-10-30 11:11:28 +01:00
291dcd3955 Add tmpdir alias 2025-10-30 11:11:14 +01:00
94c6278db4 Parse through Downloads folder with finder script 2025-10-29 17:11:45 +01:00
2b7b2a5e58 Remove unused scripts 2025-10-09 16:54:58 +02:00
412212719c Restore autotagging functionality of beets 2025-10-09 16:54:33 +02:00
3bc57b4593 Use clipboard manager with image support 2025-10-04 19:24:15 +02:00
572854dbd0 Disable org pomodoro functionality in Waybar 2025-08-29 01:46:51 +02:00
5d9699df24 Fix automatic assignment of Chromium to workspace 2025-08-29 01:41:00 +02:00
336bb2a2b8 Update known hosts 2025-08-29 01:40:37 +02:00
50f09af5e9 Add keybinding for screenshots 2025-08-29 01:39:25 +02:00
3e6baf384c Initialize Flake dev projects only with one file 2025-08-29 01:38:09 +02:00
4d5c984575 Update global gitignore 2025-08-29 01:37:32 +02:00
a83bbd299d Add yt-dlp configuration 2025-08-27 11:08:33 +02:00
1787b7da6a Adapt goimapnotify configuration to YAML 2025-05-18 17:45:52 +02:00
5c326f2e01 Add git credential mapping for new domain 2025-04-10 13:20:34 +02:00
7eb67000e4 Add new mail folder to mail configuration 2025-04-10 13:20:09 +02:00
d582f89568 Remove catt config 2025-04-10 13:19:57 +02:00
c70388ba07 Update global gitignore 2025-04-10 13:19:48 +02:00
5d80befa63 Apply color profile for laptop screen 2025-04-01 00:58:44 +02:00
fd17f874d7 Add script to convert ZFS legacy mountpoint 2025-04-01 00:49:03 +02:00
9b73bc787b Remove UGent email account configuration 2025-04-01 00:38:23 +02:00
1dd5e8f092 Update SSH hosts 2025-04-01 00:37:35 +02:00
e136885293 Set quality settings for yt-dlp 2025-04-01 00:36:03 +02:00
c7f1c7ac6b Remove kathreftis from SSH hosts 2024-11-19 13:59:22 +01:00
c2d829b34d Change IP of kathreftis 2024-09-15 23:24:07 +02:00
877bdb115f Add TinHifi C0 convolver 2024-09-15 23:23:22 +02:00
a6d65a3f7c Remove CGM value script from Waybar 2024-07-30 20:53:20 +02:00
97a5faf876 Add kathreftis to SSH hosts 2024-05-28 13:19:57 +02:00
9d44d0d25f Add Koss KPH40 convolver 2024-05-28 13:19:00 +02:00
ce95f5c5c0 Revert "Improve performance of yt-dlp with user agent"
This reverts commit 34990f45c5.
2024-03-15 00:08:04 +01:00
6cef994d2c Ignore ccls files in git 2024-03-05 23:51:26 +01:00
5e924530ba Add KZ ZVX convolver 2024-02-05 23:39:02 +01:00
34990f45c5 Improve performance of yt-dlp with user agent 2024-02-05 23:38:24 +01:00
26a36504d0 Parse year in peerflix script 2024-02-05 23:36:58 +01:00
666ba4e5d9 Simplify search pattern for file finder script 2024-01-18 22:14:46 +01:00
1129dcabb0 Remove kermit-gpu from SSH hosts 2024-01-15 14:25:17 +01:00
b3f64d4683 Update kanshi config to new device 2024-01-15 02:54:18 +01:00
6475998fc7 Remove git-ignore-line script 2024-01-08 22:35:29 +01:00
2e6c12c4f9 Adapt config to new device 2024-01-08 03:01:54 +01:00
421401c207 Revert "Use dmabuf backend in mpv"
This reverts commit 60a829f526.
2024-01-08 02:38:44 +01:00
30d8b5404c Adapt Easyeffects presets to new device 2024-01-07 08:10:20 +01:00
8b817c8e54 Use the proper terminal name in tmux 2024-01-05 18:07:39 +01:00
87e2f7f595 Adapt teams matching mechanism to fork 2024-01-05 18:06:39 +01:00
39e1dd3e1f Save position of videos in MPV 2024-01-05 18:04:55 +01:00
f3b83e85df Update SSH hosts 2024-01-05 18:04:47 +01:00
4a8e71c6d5 Add Thinkpad T14S Gen 3 convolver 2024-01-05 18:04:08 +01:00
60a829f526 Use dmabuf backend in mpv 2023-09-02 02:43:35 +02:00
43a56b7bfc Adapt emacs matching mechanism in sway to wayland 2023-09-02 02:42:21 +02:00
1bb7c44c37 Decrease cadence of custom waybar scripts 2023-09-02 02:42:00 +02:00
7541dd8954 Set default casting device for catt 2023-07-14 11:45:20 +01:00
ace73a76be Add nix-shell alias 2023-07-14 10:58:09 +01:00
cc3e6654df Set brightness to 70% in laptop mode 2023-06-13 16:27:42 +02:00
672b735752 Update known_hosts 2023-06-13 16:27:28 +02:00
10ccea25a3 Connect to SSH without compression for zion 2023-06-13 16:27:12 +02:00
474357ed98 Remove nix config files 2023-06-13 16:26:57 +02:00
bcec83476c Add CGM direction arrow to Waybar 2023-05-24 19:10:57 +02:00
87cbce4084 Add CGM value to Waybar 2023-05-24 17:19:40 +02:00
554b794ad2 Improve csv parsing and error handling in peerflix 2023-05-15 16:47:27 +02:00
2db9446294 Update nerd font icons due to upstream changes 2023-05-09 04:45:23 +02:00
3bfa8383bb Change emacs light theme to os1 2023-04-25 07:27:26 +02:00
88d7f81d1c Jump to the end of journalctl logs by default 2023-04-25 07:24:52 +02:00
6b734aabf3 Update nvim nord repo and switch-theme script 2023-04-12 15:56:28 +02:00
1d5521bca6 Update README 2023-04-11 01:21:08 +02:00
214cae809d Assign MS Teams to specific workspace 2023-03-22 23:23:42 +01:00
a1aeb66814 Save poetry venv inside the project 2023-03-21 22:19:56 +01:00
0384c78706 Update SSH hosts 2023-03-13 10:28:29 +01:00
95a5576bd6 Revert back to the wayland backend for MPV 2023-03-13 10:27:38 +01:00
3be7820be2 Copy shell.nix for remote-git projects 2023-02-25 01:16:51 +01:00
2ec144e902 Enable recolor and best-fit adjustement in zathura 2023-02-16 14:51:55 +01:00
80d0d8433f Replace spaces with underline in subject script 2023-02-14 15:46:23 +01:00
4779337530 Show the progress of the iptv script on stdout 2023-02-04 16:20:19 +01:00
9e5203a6b7 Switch to Rosé Pine as light theme 2023-02-01 08:17:17 +01:00
7fb7569e18 Switch to Gruvbox as light theme 2023-02-01 04:33:37 +01:00
b2f54d5d6e Switch to Nord colorscheme as dark theme 2023-02-01 03:38:06 +01:00
eef3078518 Move euro symbol keybinding to 4 2023-01-24 16:56:21 +01:00
24bb42fbaa Separate albums in playlist view 2023-01-23 18:43:28 +01:00
5e58673aa2 Update SSH hosts 2023-01-23 18:43:20 +01:00
b485b6649f Stop PDF recoloring by default in zathura 2023-01-13 21:37:03 +01:00
814bbbc1b5 Add Earth View wallpaper download script 2023-01-13 21:36:18 +01:00
32d869d7e0 Use the US international with AltGr dead keys 2023-01-13 21:35:16 +01:00
7c79d67381 Update location of peerflix-db 2023-01-13 21:34:40 +01:00
81edcfd66b Remove IM window from local tmux session 2023-01-10 17:49:57 +01:00
0b8bd6f674 Use the US international layout 2023-01-10 17:47:25 +01:00
d5c755be58 Add CLI argument check in shebang-patcher 2022-12-27 11:02:25 +01:00
d927b1d645 Rename Easy Effects sink in waybar 2022-12-19 18:26:09 +01:00
419e823d97 Revert "Add PCS lab to SSH hosts"
This reverts commit 2bafe12889.
2022-12-19 18:25:53 +01:00
179ff2c636 Use VLC for iptv 2022-12-05 12:12:11 +01:00
0e9d6ac325 Use constants in the iptv scripts 2022-12-05 11:52:50 +01:00
0d0b51fb09 Add script to stream World Cup 2022-12-05 11:08:50 +01:00
21daa33a81 Change emacs light theme to solarized light 2022-12-01 11:06:13 +01:00
3a16db8de9 Decrease screen backlight to 60% 2022-12-01 11:06:09 +01:00
c6c73741f2 Open URL by clicking on it in kitty 2022-12-01 11:06:09 +01:00
7669aabdeb Copy nix files on init action in project-init 2022-12-01 11:06:09 +01:00
36cffdcd00 Improve parsing of peerflix 2022-11-26 23:47:55 +01:00
2bafe12889 Add PCS lab to SSH hosts 2022-11-18 13:59:45 +01:00
fe83c4be25 Use pipewire and dmabuf as backends in MPV 2022-11-18 13:58:19 +01:00
91c92e08d2 Remove line number neovim hack in switch-theme 2022-11-18 13:57:49 +01:00
f6ace04d40 Add existing project init to project-init 2022-11-16 09:40:25 +01:00
3df053ff6d Add LFS config to git 2022-11-16 09:39:53 +01:00
977cd4a99f Remove redundant shell alias 2022-11-04 14:35:50 +01:00
8e79ec4823 Removed commented code from waybar config 2022-11-02 22:23:53 +01:00
df8305f1e9 Don't disable external monitor when lid is closed 2022-11-01 20:02:22 +01:00
fdd5a029bf Kill firefox sharing indicator automatically 2022-11-01 20:02:21 +01:00
0e4424e1e4 Remove redundant git config 2022-11-01 20:02:21 +01:00
afb3633767 Update SSH hosts 2022-11-01 20:02:21 +01:00
73e9ab7c13 Fix font color problem in waybar 2022-11-01 20:02:20 +01:00
7bcd9aff7c Improve torrent name parsing of peerflix 2022-10-30 23:11:15 +01:00
5c8729b209 Add org-protocol desktop file 2022-10-28 09:46:07 +02:00
7d99784249 Change location of nix files in project-init 2022-10-20 10:35:44 +02:00
e66228c107 Add python data science type in project-init 2022-10-20 09:00:14 +02:00
1d2e5d0571 Refactor directory creation in project-init 2022-10-20 09:00:05 +02:00
403272e426 Force external display resolution in kanshi 2022-10-19 13:48:51 +02:00
4d7320418f Revert "Use delta as git diff pager"
This reverts commit b37187f79e.
2022-10-19 13:48:34 +02:00
1a508bd19e Remove redundant resolution value from kanshi 2022-10-18 14:57:03 +02:00
dbf7828baa Add jupyter checkpoints to global gitignore 2022-10-18 14:57:03 +02:00
9653b8c936 Remove neovim config for neomutt and markdown 2022-10-18 14:57:02 +02:00
d6943d6162 Remove fff config 2022-10-18 14:57:02 +02:00
d5325c5e72 Create kermit-gpu tmuxp session 2022-10-18 14:57:02 +02:00
bd12619ee6 Stop resizing zathura to 70% on workspace 4 2022-10-18 14:57:02 +02:00
34558df58c Replace neomutt with mu4e 2022-10-18 14:57:02 +02:00
4c3a9c65ee Add alias for systemctl --user 2022-09-17 12:14:34 +02:00
252568eb6b Monitor all mailboxes with goimapnotify 2022-09-17 12:14:14 +02:00
88aa7ddc6d Change emacs and delta themes in switch-theme 2022-09-12 01:07:03 +02:00
df08d3b604 Remove idlab files 2022-09-10 13:23:14 +02:00
2023c27d06 Add alias for journalctl --user 2022-09-10 06:17:27 +02:00
d0d686b472 Add shebang-patcher script 2022-09-09 19:18:56 +02:00
cfafac3cae Add IM window to local tmux session 2022-09-09 17:48:49 +02:00
3e7e9342b9 Increase MPD timeout 2022-09-06 22:27:18 +02:00
c398b49653 Update SSH hosts 2022-09-06 22:26:46 +02:00
ef7d21638d Add nix-ld option to project-init 2022-09-04 08:45:22 +02:00
39ee7e9042 Update SSH hosts 2022-09-04 08:44:19 +02:00
bfcf8a38ae Set correct path for git-ignore-line 2022-09-04 08:15:04 +02:00
fa1dae003f squash! Use delta as git diff pager 2022-09-04 07:25:14 +02:00
36a17aacab Add kobo to SSH hosts 2022-09-04 07:22:25 +02:00
b37187f79e Use delta as git diff pager 2022-09-04 07:16:17 +02:00
bff17eb884 Fix journalctl alias 2022-09-02 22:21:34 +02:00
06dd7772ea Update SSH hosts 2022-09-02 22:21:28 +02:00
3b0fa215de Add episode database to peerflix script 2022-08-31 02:08:18 +02:00
ceadea0989 Show the real volume in Waybar 2022-08-13 00:07:51 +02:00
9c205e5e5b Modify zion IP and clean up SSH hosts 2022-07-22 16:53:13 +02:00
908b3c8886 Use compression for SSH 2022-07-22 16:51:45 +02:00
bde8bbb550 Stop MS Teams from autostarting 2022-07-04 15:24:59 +02:00
35d15a5737 Replace Dolby ATMOS with AutoEQ 2022-07-04 15:19:16 +02:00
1fc8c1cdb5 Replace Perfect EQ with Dolby ATMOS 2022-06-22 17:45:46 +02:00
c6dfe5b8dc Add Dolby ATMOS convolver for headphones 2022-06-22 00:03:00 +02:00
f1f8c1bb05 Set up easyeffects 2022-06-21 23:34:40 +02:00
037a1d6c76 Update email aliases 2022-06-19 06:27:15 +02:00
4c7fa0311d Only fetch jpeg images in beets 2022-06-17 02:14:00 +02:00
fe1f689c18 Add keybinding to change subtitle size in MPV 2022-06-16 00:07:41 +02:00
b35d5d87fc Add Restart Waybar to recurrent-actions 2022-06-13 10:27:13 +02:00
0905401dac Add webtorrent alias to fish 2022-06-13 10:27:02 +02:00
bb89177ff9 Revert "Replace peerflix script with a shell alias"
This reverts commit ac6a2451db.
2022-06-10 01:10:06 +02:00
330180f5b1 Disable window closing confirmation in kitty 2022-06-10 01:02:53 +02:00
d5610a5dc7 Cycle through sound normalization in MPV 2022-06-09 20:48:04 +02:00
ac6a2451db Replace peerflix script with a shell alias 2022-06-09 18:17:42 +02:00
0e5c236508 Autoload subtitles from subfolder in MPV 2022-06-09 00:23:03 +02:00
41b1dcb08e Remove .dir_locals.el from global gitignore 2022-06-08 18:46:51 +02:00
1dc3ec3aaf HACK: run doom sync before launching emacs 2022-06-08 16:56:11 +02:00
80077c8ef7 Use gitea token for git authentification 2022-06-08 13:58:05 +02:00
cf961161dc Add Disroot folder 2022-06-08 13:57:51 +02:00
f5e863fd49 Add script to update github forks 2022-06-04 23:00:34 +02:00
c3c7560cce Remove redundant else clause from subject script 2022-06-02 23:05:53 +02:00
8ce73375bc Update eisvogel template 2022-05-25 20:47:42 +02:00
5f78d73099 Remove waybar reloading hack from kanshi 2022-05-25 20:46:09 +02:00
28236662b0 Fix HDMI profile in kanshi 2022-05-24 00:05:43 +02:00
6477fe5b12 Remove black bars from PiP window 2022-05-21 12:02:45 +02:00
72153fd971 Assign powerpoint to a specific workspace 2022-05-21 11:54:39 +02:00
f889076a8b Add HDMI profile to kanshi 2022-05-21 11:53:41 +02:00
24ce922304 Update README 2022-05-19 19:15:19 +02:00
016aa93c21 Use sponsorblock API instead of local db for MPV 2022-05-17 01:08:58 +02:00
6f35721d0b Replace Disroot folders 2022-05-12 14:08:29 +02:00
9a82d6ec83 Rename files during the import in beets 2022-05-12 14:05:33 +02:00
0e839d4da2 Show length when hovering over the current song 2022-05-11 11:48:09 +02:00
eaa014154c Rename options in the recurrent-actions script 2022-05-11 11:23:45 +02:00
f51da4431d Remove videocall script 2022-05-11 11:22:05 +02:00
867b817501 Move args check below functions in switch-theme 2022-05-10 23:41:35 +02:00
7e53079246 Remove multiple invocations of nvr in switch-theme 2022-05-10 03:27:25 +02:00
2aaf0d58c1 Enlarge Firefox PiP window 2022-05-08 21:04:42 +02:00
37a26b83d3 Reload nvim in switch-theme 2022-05-08 21:04:31 +02:00
857e154ece Using relative line numbers 2022-05-08 17:44:30 +02:00
4bafd8d586 Add vim-nix plugin 2022-05-03 20:00:43 +02:00
8cef7527fc Remove redundant option from zathura 2022-05-02 14:38:36 +02:00
c4156d2080 Recolor zathura in switch-theme 2022-05-02 14:03:22 +02:00
5232b8a3e9 Set Firefox PiP as pinned floating window 2022-05-02 13:23:33 +02:00
6127f66f1a Ignore theme specific lines in git using a filter 2022-05-02 13:17:33 +02:00
27c2b8f983 Update gitignore 2022-05-02 13:09:03 +02:00
cb6d36b983 Refactor switch-theme using kitty theme-switcher 2022-05-02 12:44:06 +02:00
80e5f3e090 Revert "Replace tmuxp with smug"
This reverts commit 1032a7fb6a.
2022-05-02 12:22:30 +02:00
3cbbb097be Revert "Add shell.nix"
This reverts commit 219932b3a2.
2022-05-02 05:51:10 +02:00
e87475c9cb Update MPD playlists 2022-05-02 05:50:15 +02:00
30d3148e7b Move port to default in msmtp 2022-05-02 05:49:59 +02:00
058a8be80b Remove kill emacs from recurrent-actions 2022-05-02 04:30:55 +02:00
8c3cf4b4c9 Update HPC ssh key 2022-05-01 18:58:57 +02:00
db367b140b Use nix shell to run oauth2 and MIMEmbellish 2022-05-01 18:57:42 +02:00
1032a7fb6a Replace tmuxp with smug 2022-04-25 12:22:30 +02:00
712f6865da Increase subtitle size in MPV 2022-04-25 06:41:32 +02:00
e8b9d88fd7 Limit length of the current track in Waybar 2022-04-25 06:40:54 +02:00
5a92d299f7 Replace Emacs PGTK with Emacs 28 2022-04-25 06:40:14 +02:00
c3f88d0656 Improve MPV HW decoding settings 2022-04-18 17:54:32 +02:00
636f95874b Notify of low battery in Waybar 2022-04-16 01:35:45 +02:00
13ba2c19ea Add new Disroot folders 2022-04-15 20:11:34 +02:00
5fb7c8bda5 Move pomodoro timer to the center 2022-04-13 18:13:05 +02:00
cf5575b311 Add new Disroot folder and change password 2022-04-13 14:56:03 +02:00
6e030a60ec Update fish variables 2022-04-13 11:01:17 +02:00
db1fd548cb Remove unused modules from Waybar 2022-04-13 11:00:59 +02:00
0b2c759a89 Add pomodoro status to Waybar 2022-04-13 11:00:19 +02:00
5688f06062 Revert "Change date format in waybar"
This reverts commit 71b445e8b8.
2022-04-11 13:31:00 +02:00
cefbaf9867 Assign certain programs to workspaces 2022-04-08 00:02:50 +02:00
bdcd623970 fixup! Move workspace between monitors 2022-04-07 07:30:35 +02:00
3b47be316f Stop killing Xwayland on monitor change 2022-04-07 07:26:55 +02:00
9b67d80aed Move workspace between monitors 2022-04-07 07:24:58 +02:00
16284fdfe5 Add excel files to neomutt mailcap 2022-04-07 07:14:20 +02:00
6000eaa15c Increase the number of workspaces 2022-04-07 07:13:58 +02:00
71b445e8b8 Change date format in waybar 2022-04-06 12:00:28 +02:00
a886e56dcb Add disroot email account 2022-04-06 11:56:56 +02:00
696e41cb08 Search for documents even if present in gitignore 2022-03-30 10:36:20 +02:00
27e4c3af31 Hide album dates in ncmpcpp 2022-03-30 10:36:09 +02:00
54b0d6456c Clean up MPD playlists 2022-03-30 10:35:55 +02:00
3abd16348f Change monitor to DP-1 in sway config 2022-03-29 11:04:41 +02:00
3bac1dc0fe Add mail sync script 2022-03-23 13:05:32 +01:00
dfa2219ce3 Remove album playlists 2022-03-23 00:42:58 +01:00
c94b2970ee Show album artist instead of artist in ncmpcpp 2022-03-22 23:47:19 +01:00
8dc2444057 Add Helios to SSH hosts 2022-03-21 00:47:58 +01:00
8173e3394b Use a more formal email signature 2022-03-07 01:11:02 +01:00
0524fa8b54 Launch MS teams on startup 2022-03-07 01:10:47 +01:00
262e95de05 Update zion SSH address 2022-03-02 10:07:09 +01:00
cfc5a43419 Remove limit in tmux copy mode 2022-03-02 10:06:43 +01:00
7c33fd1c77 Add gitlab username to git config 2022-02-21 19:15:59 +01:00
66983b06a3 Remove kill MS Teams from recurrent-actions script 2022-02-21 19:15:39 +01:00
49e3f368eb Use OAUTH2 for UGent mail account 2022-02-03 14:45:59 +01:00
a21ae8963b Remove old SSH hosts and keys 2022-01-29 13:44:06 +01:00
0df4099eb8 Add beets configuration 2022-01-09 18:42:58 +01:00
3a84773a9e Revert "Remove peerflix script"
This reverts commit e15b4d74ac.
2021-12-30 00:09:47 +01:00
709dedd7b8 Revert "Add kill zoom option to recurrent-actions"
This reverts commit c08017fa97.
2021-11-29 11:44:51 +01:00
d87153bd00 Add script to change to the UGent git identity 2021-11-22 16:28:41 +01:00
eeedf54a97 Add powerpoint files to finder script 2021-11-14 18:24:40 +01:00
20ca9f947c Configure UGent email account with XOAUTH2 2021-11-14 17:47:56 +01:00
7becec8017 Use flakes only in VCS projects in project-init 2021-11-13 12:48:05 +01:00
ce5b9bb5b3 Add local to the tmuxp-session script 2021-11-11 15:55:54 +01:00
77fd043e7b Remove weechat and clean up gitignore 2021-11-10 18:25:30 +01:00
221a56593e Remove Muis Lata from bookmarks 2021-11-08 20:44:10 +01:00
71668bacb9 Rename Github and Gitlab API keys 2021-11-08 18:14:28 +01:00
699b8f6cf2 Use Github access token instead of password 2021-11-05 16:25:03 +01:00
d8e11efb93 Assign MS Teams to workspace 6 2021-11-05 16:24:13 +01:00
5e089351de Remove old SSH hosts 2021-11-04 16:37:52 +01:00
d0f2ad7cd2 Remove COACE SSH hosts 2021-11-03 18:32:01 +01:00
767307c383 Add idlab to SSH hosts 2021-11-03 18:22:14 +01:00
ba00ebdace Fix Gmail goimapnotify sync 2021-11-02 23:46:32 +01:00
a29ea3e8a7 Map audio play/pause key to mpc toggle 2021-10-30 16:13:52 +02:00
c08017fa97 Add kill zoom option to recurrent-actions 2021-10-29 17:02:20 +02:00
bb50ffa1c0 hack: kill Xwayland when switching to nomad mode 2021-10-28 14:52:52 +02:00
82437c662d Add kill MS teams option to recurrent-actions 2021-10-26 17:35:44 +02:00
a3d56cd2b9 Resize R plots to 40% 2021-10-25 11:43:50 +02:00
e5654d094e Add .cache to global gitignore 2021-10-25 01:29:38 +02:00
c51c7a757c Refactor project-init script 2021-10-19 10:18:31 +02:00
f22358d0b5 Change monitor identifier in kanshi 2021-10-19 10:16:47 +02:00
570fc79fa9 Create hpc tmuxp session 2021-10-11 18:44:50 +02:00
6a58336fbe Add section notes markdown snippets 2021-10-11 18:42:55 +02:00
0ebcc28ec2 Fix flake.nix creation in project-init 2021-10-09 22:57:45 +02:00
1b545c45da Add mapping to github.ugent.be password 2021-10-09 22:57:08 +02:00
008290931e Create .project file in project-init 2021-10-06 15:01:11 +02:00
ba20fdd8ee Add flake template to project-init 2021-10-06 10:25:04 +02:00
9ffb3d2d10 Add first slide markdown snippet 2021-10-05 15:28:07 +02:00
169c3cb42a Add HPC to SSH hosts 2021-10-05 14:41:46 +02:00
e15b4d74ac Remove peerflix script 2021-10-03 17:41:50 +02:00
035ad35ac7 Replace lorri with nix-direnv 2021-09-29 12:47:10 +02:00
a0d41c649d Adapt subject and markdown snippets to EN 2021-09-27 16:29:53 +02:00
afc9449156 Replace UGR email with UGent 2021-09-22 00:12:17 +02:00
fff1a5ac2f Execute htop after loading tmux session 2021-09-10 11:47:09 +02:00
bf53841b6c Adapt rofi configuration to new format 2021-09-07 11:06:46 +02:00
b849a7148a Change keybinding for recurrent-actions script 2021-09-07 10:02:49 +02:00
70a0416597 Update gitignore 2021-08-13 08:57:50 +01:00
9e7574fa52 Add 1 git-crypt collaborator
New collaborators:

	6405AF57 coolneng <akasroua@gmail.com>
2021-08-12 14:48:31 +01:00
07b2774253 Add encrypted SSH keys 2021-08-12 14:17:23 +01:00
f8565007e8 Update README 2021-08-11 20:45:06 +01:00
219932b3a2 Add shell.nix 2021-08-11 20:43:30 +01:00
7fee6644f7 Add Gitlab API key to pass 2021-08-09 22:21:01 +01:00
2b126f3c04 Remove localhost SSH config 2021-08-09 22:20:46 +01:00
c4836f6284 Remove lock files from global_gitignore 2021-07-06 20:16:23 +02:00
a7d9da8dda Convert power menu into a rofi selection screen 2021-07-03 23:35:11 +02:00
9ddf5bc34e Add emacs org-plain-latex template 2021-06-24 15:25:47 +02:00
6dbed67716 Remove IM window from local tmux session 2021-06-23 17:52:54 +02:00
f6feea4695 Increase clipman elements to 50 2021-06-22 00:04:31 +02:00
cf183235bf Delegate mailbox sync on send to goimapnotify 2021-06-18 16:29:19 +02:00
a9be2c1cc7 Replace imapnotify with goimapnotify 2021-06-18 16:10:51 +02:00
6adc63bf71 Only synchronize the affected mailbox on send 2021-06-16 14:46:09 +02:00
d8b3acb07b Synchronize mailboxes when sending mail 2021-06-15 14:03:39 +02:00
d8e75cdfe3 Add sync email option to popup-window selection 2021-06-13 22:53:20 +02:00
0f6750c47f Add videocall options to popup-window selection 2021-06-02 11:52:11 +02:00
f2122ddb41 Refactor videocall script 2021-05-31 13:26:58 +02:00
9504037034 Add videocall workspace screen switch script 2021-05-31 13:23:35 +02:00
c5c3bf3ac1 Change S keybinding to next session in tmux 2021-05-29 18:22:52 +02:00
e2920f3bcd Revert "Update UGR mail server host"
This reverts commit a082554fe4.
2021-05-29 11:53:00 +02:00
bdaa3ebba8 Change zion IP address in ssh config 2021-05-28 10:51:21 +02:00
75d2d7e9e7 Switch session on session kill in tmux 2021-05-28 04:01:22 +02:00
1357d20275 Replace tmuxp session mode with rofi selection 2021-05-28 03:50:30 +02:00
a558a6584a Add doom sync action to popup-window script 2021-05-27 17:42:26 +02:00
1ec54bccfc Implement a temporary popup window selection menu 2021-05-27 17:06:11 +02:00
7e9301983d Create a temporary htop floating window on demand 2021-05-27 14:21:25 +02:00
31898b4392 Add aegis to tmuxp session loader 2021-05-26 11:52:43 +02:00
23c85ccb2b Add niv init script 2021-05-24 18:40:21 +02:00
afaf220e98 Add Paperwork folder to GTK bookmarks 2021-05-17 21:54:23 +02:00
f4b04b09e0 Add word and excel file search to finder script 2021-05-17 17:56:18 +02:00
a11c487a1c Add tmuxp session loader with key bind 2021-05-17 00:47:51 +02:00
e95ab81ad9 Change tmuxp zion session layout 2021-05-17 00:47:08 +02:00
a3823e33b9 Revert "Set environment variables in sway"
This reverts commit 25c56a6117.
2021-05-16 22:13:37 +02:00
370fb098d0 Remove obsolete CalDAV/CardDAV files 2021-05-11 20:45:38 +02:00
a082554fe4 Update UGR mail server host 2021-05-11 15:31:47 +02:00
be88ce64fa Save emacs session before shutdown with a script 2021-05-02 17:13:00 +02:00
883903f636 Set right margin in emails 2021-04-27 11:03:26 +02:00
2658ad245f Customize neomutt colorscheme 2021-04-23 11:45:21 +02:00
eb68cc2353 Work around mic pulseaudio ID value with a script 2021-04-19 14:08:46 +02:00
25c56a6117 Set environment variables in sway 2021-04-16 13:59:24 +02:00
1c8ce8ec6c Change sica SSH host user 2021-04-15 13:14:07 +02:00
c1e855c22a Revert "Revert "hack: kill Xwayland when switching to nomad mode""
This reverts commit 366161284f.
2021-04-13 17:47:13 +02:00
992d4154a0 Refactor switch-theme script 2021-04-06 18:37:10 +02:00
e5595ff2ae Add aegis tmuxp session 2021-04-06 18:36:36 +02:00
19dd0f1f68 Adapt microphone mute keybinding to new Pipewire 2021-03-31 14:38:55 +02:00
3da6b2df9d Add nixbuild to SSH config 2021-03-31 00:52:24 +02:00
0e9a10b015 Use imapnotify only for uni account 2021-03-31 00:39:35 +02:00
c681e8d538 Add work VM to SSH config 2021-03-30 18:06:52 +02:00
43cad053a6 Add missing src option to project-init script 2021-03-25 01:16:47 +01:00
2074e1d657 Adapt microphone mute keybinding to Pipewire 2021-03-22 16:27:39 +01:00
8c00c04b57 Add unit tmuxp session 2021-03-17 13:03:38 +01:00
aa4a1b8172 Add work server to SSH config 2021-03-17 12:57:35 +01:00
858ecae4e6 Change Emacs light theme to nord-light 2021-03-15 10:01:54 +01:00
f0fd0c7a56 Switch teachers mail address to their department's 2021-03-11 23:49:05 +01:00
9cb9b4c524 Fix microphone mute keybinding 2021-03-10 12:57:24 +01:00
ff2df6e4b0 hack: add a workaround for Goyo in small windows 2021-03-10 12:56:40 +01:00
8c2bbf0a99 Add COACE mail aliases and uni cleanup 2021-03-10 12:55:48 +01:00
919940140b Bind rotate-window to J/K on tmux 2021-02-22 02:35:07 +01:00
8050930df6 Remove redundant lines from Goyo functions 2021-02-22 01:56:26 +01:00
fe6ce8c033 Lazy load goyo vim for markdown only 2021-02-22 01:56:08 +01:00
366161284f Revert "hack: kill Xwayland when switching to nomad mode"
This reverts commit 90d4662c45.
2021-02-20 01:33:45 +01:00
f9947a0f42 Replace Pulseaudio with PipeWire 2021-02-20 01:32:03 +01:00
e4e37361bc Fix uni's mail account user 2021-02-17 13:53:23 +01:00
817e5c06e5 Replace blurry terminus with inconsolota in waybar 2021-02-17 04:26:01 +01:00
02405aa4aa Add Work documents to GTK bookmarks 2021-02-12 13:33:49 +01:00
655dfcfb94 Add tooltip to network module of waybar 2021-02-11 00:37:09 +01:00
cef8f5df6d Change terminal font to Terminus 2021-02-10 17:17:42 +01:00
0c8a3c8509 Unset signature variable in neomutt 2021-02-08 15:30:10 +01:00
84c3512f80 Fix breaking changes in mbsync config 2021-02-08 15:29:54 +01:00
1e370c0072 Add pgdata to global gitignore 2021-02-05 18:38:17 +01:00
e9fdd16727 Store undo events persistently in Vim 2021-02-05 02:23:10 +01:00
11764c370f Ignore auctex folder 2021-02-01 01:09:14 +01:00
f6a81d185c Change search engine view to columns in ncmpcpp 2021-01-17 20:45:23 +01:00
c777e43361 Configure vim-like keybindings for ncmpcpp 2021-01-14 00:14:57 +01:00
511779c7f5 Update eisvogel template to latest version 2021-01-14 00:14:46 +01:00
6287a7235e Map volume control keys to +/- in MPV 2021-01-10 04:15:06 +01:00
482c920665 Add msword to neomutt mailcap 2021-01-03 20:12:54 +01:00
1a4e72a3a7 Enable WebRTC screensharing 2020-12-28 15:55:05 +01:00
a6196c344e Add remote-git option in project-init 2020-12-16 17:54:33 +01:00
f05cde75a3 Add Java files to gitignore 2020-12-16 00:20:52 +01:00
ba525dc4f4 Disable annoying keybindings on fff 2020-12-11 12:36:14 +01:00
2515f79b8f Ignore lock files globally 2020-12-11 12:35:48 +01:00
b2915bd55c Update stow command instructions on README 2020-12-05 19:15:37 +01:00
6ae1e27c0e Broaden the scope of vcs-init and rename it 2020-12-01 01:13:40 +01:00
8cd381e119 Maintain original hue when recoloring in zathura 2020-11-29 19:34:24 +01:00
c7616c3ee4 Rewrite rofi finder script using ripgrep 2020-11-25 23:42:48 +01:00
a343121a34 Fix neomutt mailcap for HTML rendering 2020-11-19 16:10:31 +01:00
862cd4486e Resize zathura to 70% only on workspace 4 2020-11-09 12:11:46 +01:00
f204c7c53d fixup! Revert "Migrate from neovim to vim" 2020-11-09 12:11:24 +01:00
b8a1eec4df Add vcs-init script 2020-10-27 13:16:05 +01:00
f39e3e50de Change emacs light theme to doom-flatwhite 2020-10-27 13:12:17 +01:00
f1c108d991 Add gitlab to pass-git-helper 2020-10-27 13:02:34 +01:00
3c840416f6 Change journalctl options in alias 2020-10-22 21:45:42 +02:00
9fe21f7f29 Revert "Migrate from neovim to vim"
This reverts commit d86f8477fc.
2020-10-22 14:37:39 +02:00
d86f8477fc Migrate from neovim to vim 2020-10-22 14:24:36 +02:00
98bd78c823 Remove neomutt keys folder 2020-10-22 01:27:09 +02:00
c1d1aee7f1 Accept android sdk license in nix-shell 2020-10-21 23:13:08 +02:00
e2c20e36ea Clean up neomutt files 2020-10-21 23:09:37 +02:00
46ded55674 Change emacs theme without user confirmation 2020-10-13 03:23:04 +02:00
654e3474ba Ensure tmux right side is empty 2020-10-13 01:44:43 +02:00
b7846cd08e Stop waybar execution when sway is reloaded 2020-10-13 01:41:53 +02:00
13b9873118 Remove separators between window number and name 2020-10-12 19:52:28 +02:00
fd49427d84 Remove old hacks and fix typos 2020-10-12 19:48:18 +02:00
a7764f6878 Add global dark/light theme switch with key bind 2020-10-12 19:45:16 +02:00
ac74cedb5f Adapt nix-direnv script to lorri 2020-10-07 17:46:27 +02:00
b8b99eae51 Update neomutt aliases 2020-10-06 15:32:43 +02:00
90d4662c45 hack: kill Xwayland when switching to nomad mode 2020-10-06 15:32:05 +02:00
205 changed files with 2886 additions and 14511 deletions

4
.git-crypt/.gitattributes vendored Normal file
View File

@@ -0,0 +1,4 @@
# 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

2
.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
ssh/.ssh/** filter=git-crypt diff=git-crypt
ssh/.ssh/config !filter !diff

13
.gitignore vendored
View File

@@ -1,9 +1,8 @@
weechat/.weechat/*.log
weechat/.weechat/logs
weechat/.weechat/script/
weechat/.weechat/sec.conf
neovim/.config/nvim/.netrwhist
neovim/.config/nvim/plugged
deluge/.config/deluge/state/
deluge/.config/deluge/*.state
deluge/.config/deluge/icons/
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

View File

@@ -19,8 +19,8 @@ git clone https://git.coolneng.duckdns.org/coolneng/dotfiles ~/.dotfiles
cd ~/.dotfiles
#+END_SRC
3. Execute stow on all the folders
3. Run stow
#+BEGIN_SRC sh
stow *
stow */
#+END_SRC

View File

@@ -0,0 +1,14 @@
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.

View File

@@ -0,0 +1,2 @@
[MIME Cache]
x-scheme-handler/org-protocol=org-protocol.desktop;

View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Name=org-protocol
Exec=emacsclient %u
Type=Application
Terminal=false
Categories=System;
MimeType=x-scheme-handler/org-protocol;

View File

@@ -0,0 +1,6 @@
{
"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"
}

View File

@@ -0,0 +1,6 @@
{
"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"
}

View File

@@ -0,0 +1,6 @@
{
"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"
}

View File

@@ -0,0 +1,100 @@
{
"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.

View File

@@ -0,0 +1,15 @@
{
"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"
]
}
}

View File

@@ -0,0 +1,653 @@
{
"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"
]
}
}

View File

@@ -0,0 +1,16 @@
{
"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"
]
}
}

View File

@@ -0,0 +1,16 @@
{
"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"
]
}
}

View File

@@ -0,0 +1,16 @@
{
"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"
]
}
}

View File

@@ -6,27 +6,20 @@ 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 jc "journalctl -fu"
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)"
# 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)

View File

@@ -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:3100
SETUVAR __fish_initialized:3800
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:bryellow\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_search_match:white\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,3 +33,4 @@ 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

View File

@@ -12,3 +12,13 @@
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

View File

@@ -4,22 +4,37 @@ CMakeFiles/
cmake_install.cmake
compile_commands.json
Debug/
.ccls
.ccls-cache
/**/*.o
bin
obj/
.cache
.clang_complete
*.o
# LaTeX
/**/auto/
auto
.auctex-auto
# Misc
.*.swp
.#*
*.log
.DS_Store
# Python
.mypy_cache
**/__pycache__
# Emacs
.dir-locals.el
__pycache__
.ipynb_checkpoints
.venv
# Dev environment with Nix
.envrc
.mysql
.direnv
.mysql
.pgdata
# Lock files
# Java
*.class
*.jar
.classpath
.project
.settings
# Emacs
.projectile-cache.eld
# Platformio
.pio

View File

@@ -0,0 +1,22 @@
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

View File

@@ -1,10 +1,12 @@
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/NPC
file:///home/coolneng/Photos/Memri
file:///home/coolneng/Photos/Random%20dump
file:///home/coolneng/Photos/Personal

View File

@@ -1,15 +0,0 @@
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"];

View File

@@ -1,15 +0,0 @@
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"];

View File

@@ -1,17 +1,26 @@
profile multihead {
output eDP-1 enable
output HDMI-A-2 enable
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
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 mode 1920x1080
exec light -S 70
exec pkill waybar; waybar
output eDP-1 enable
exec light -S 50
}

View File

@@ -1,35 +0,0 @@
[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

View File

@@ -1,49 +0,0 @@
# 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

View File

@@ -1,51 +0,0 @@
# 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

View File

@@ -6,10 +6,10 @@
#: individual font faces and even specify special fonts for particular
#: characters.
font_family Go Mono
bold_font Go Mono Bold
italic_font Go Mono Italic
bold_italic_font Go Mono Bold Italic
font_family Terminus (TTF)
bold_font Terminus (TTF) Bold
italic_font Terminus (TTF) Italic
bold_italic_font Terminus (TTF) 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 Go Mono Bold Italic
#: italic_font Operator Mono Book Italic
#: bold_italic_font Operator Mono Medium Italic
font_size 14.0
font_size 16.5
#: Font size (in pts)
@@ -73,12 +73,10 @@ 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
@@ -154,8 +152,7 @@ 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
@@ -354,17 +351,14 @@ 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
@@ -445,12 +439,11 @@ 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
@@ -459,9 +452,6 @@ inactive_tab_font_style normal
#: Color scheme {{{
foreground #c6c8d1
background #161821
#: The foreground and background colors
background_opacity 1.0
@@ -490,62 +480,6 @@ 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
#: }}}
@@ -640,8 +574,7 @@ 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
@@ -1056,3 +989,17 @@ 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

View File

@@ -2,8 +2,9 @@
IMAPAccount gmail
Host imap.gmail.com
User akasroua@gmail.com
AuthMechs LOGIN
PassCmd "pass mail/gmail"
SSLType IMAPS
TLSType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
IMAPStore gmail-remote
@@ -13,74 +14,162 @@ MaildirStore gmail-local
Subfolders Verbatim
# The trailing "/" is important
Path ~/.mail/gmail/
Inbox ~/.mail/gmail/Inbox/
Inbox ~/.mail/gmail/inbox/
Channel sync-gmail-default
Master :gmail-remote:
Slave :gmail-local:
Far :gmail-remote:
Near :gmail-local:
Create Both
Expunge Both
SyncState *
Channel sync-gmail-sent
Master :gmail-remote:"[Gmail]/Sent Mail"
Slave :gmail-local:sent
Far :gmail-remote:"[Gmail]/Sent Mail"
Near :gmail-local:sent
Create Both
Expunge Both
SyncState *
Channel sync-gmail-trash
Master :gmail-remote:"[Gmail]/Bin"
Slave :gmail-local:trash
Far :gmail-remote:"[Gmail]/Bin"
Near :gmail-local:trash
Create Both
Expunge Both
SyncState *
Channel sync-gmail-junk
Master :gmail-remote:"[Gmail]/Spam"
Slave :gmail-local: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 *
# 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
Create Both
Expunge Both
SyncState *
IMAPAccount uni
Host correo.ugr.es
User akasroua@correo.ugr.es
PassCmd "pass mail/uni"
SSLType IMAPS
IMAPAccount disroot
Host disroot.org
User akasroua@disroot.org
AuthMechs LOGIN
PassCmd "pass mail/disroot"
TLSType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
IMAPStore uni-remote
Account uni
IMAPStore disroot-remote
Account disroot
MaildirStore uni-local
MaildirStore disroot-local
Subfolders Verbatim
# The trailing "/" is important
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
Path ~/.mail/disroot/
Inbox ~/.mail/disroot/inbox/
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

View File

@@ -1,8 +1,72 @@
[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

View File

@@ -0,0 +1 @@
https://icecast.radiofrance.fr/fip-hifi.aac

View File

@@ -1,14 +0,0 @@
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

View File

@@ -1,14 +0,0 @@
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

View File

@@ -1,2 +1 @@
http://ice5.securenetsystems.net/KCSM
http://ice7.securenetsystems.net/KCSM2

View File

@@ -1,15 +0,0 @@
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

View File

@@ -1,14 +0,0 @@
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

View File

@@ -1 +0,0 @@
http://radio.plaza.one/mp3

View File

@@ -1,2 +0,0 @@
http://novazz.ice.infomaniak.ch/novazz-128.mp3
http://novazz.ice.infomaniak.net/novazz-128.mp3

View File

@@ -1 +0,0 @@
http://nova-ln.ice.infomaniak.ch/nova-ln-128.mp3

View File

@@ -0,0 +1 @@
https://stream.radioparadise.com/flac

View File

@@ -1,14 +0,0 @@
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

View File

@@ -0,0 +1,43 @@
# 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

View File

@@ -1,5 +1,6 @@
# mpd
mpd_music_dir = "~/Music"
mpd_connection_timeout = 60
## Selected tracks ##
selected_item_prefix = "* "
@@ -24,8 +25,10 @@ statusbar_visibility = "yes"
cyclic_scrolling = "yes"
titles_visibility = "no"
display_bitrate = "yes"
playlist_separate_albums = "no"
playlist_separate_albums = "yes"
ask_before_clearing_playlists = "no"
media_library_primary_tag = "album_artist"
media_library_hide_album_dates = "yes"
# Playlist
user_interface = "alternative"
@@ -38,3 +41,4 @@ 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"

View File

@@ -0,0 +1,8 @@
## 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

View File

@@ -1,16 +1,25 @@
## Subtitle settings
sub-font-size=38
sub-font-size=30
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!=vp9]+bestaudio/best
ytdl-format=bestvideo[height<=1080][vcodec!=av1]+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

View File

@@ -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 uni
host correo.ugr.es
port 587
from akasroua@correo.ugr.es
user akasroua@correo.ugr.es
passwordeval "pass mail/uni"
account disroot
host disroot.org
from akasroua@disroot.org
user akasroua@disroot.org
passwordeval "pass mail/disroot"

View File

@@ -1,29 +0,0 @@
# 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"

View File

@@ -1,29 +0,0 @@
# 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"

View File

@@ -1,28 +0,0 @@
## 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

View File

@@ -1,131 +0,0 @@
# -*-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

View File

@@ -1,6 +0,0 @@
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;

View File

@@ -1,71 +0,0 @@
# 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<>\"]""']))']))']))']))']))']))']))']))']))']))']))']))'])']))))))])]"

View File

@@ -1,4 +0,0 @@
#!/bin/sh
nix-shell -p python38
python ~/.local/bin/MIMEmbellish | msmtp -a $1 -t

View File

@@ -1 +0,0 @@
<EFBFBD>

View File

@@ -1 +0,0 @@
<EFBFBD>

View File

@@ -1,89 +0,0 @@
#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

View File

@@ -1,4 +0,0 @@
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

View File

@@ -1,238 +0,0 @@
#!/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()

View File

@@ -1,88 +0,0 @@
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

View File

@@ -1,5 +1,6 @@
""Basic stuff
set number
set relativenumber
set encoding=utf8
set clipboard+=unnamedplus
set nofoldenable
@@ -13,6 +14,8 @@ 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
@@ -22,53 +25,20 @@ 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 'cocopon/iceberg.vim'
Plug 'nordtheme/vim'
Plug 'rose-pine/neovim'
Plug 'LnL7/vim-nix'
call plug#end()
""Colors
colorscheme iceberg
set termguicolors
""Sets the colorscheme in tmux
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
colorscheme nord
set background=light
""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()

View File

@@ -1 +0,0 @@
{ allowUnfree = true; }

View File

@@ -1,88 +0,0 @@
# .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

View File

@@ -1,6 +1,6 @@
%%
% Copyright (c) 2017 - 2019, Pascal Wagler;
% Copyright (c) 2014 - 2019, John MacFarlane
% Copyright (c) 2017 - 2021, Pascal Wagler;
% Copyright (c) 2014 - 2021, John MacFarlane
%
% All rights reserved.
%
@@ -49,6 +49,9 @@ $if(latex-dir-rtl)$
\PassOptionsToPackage{RTLdocument}{bidi}
$endif$
$endif$
$if(CJKmainfont)$
\PassOptionsToPackage{space}{xeCJK}
$endif$
%
\documentclass[
$if(fontsize)$
@@ -60,7 +63,7 @@ $endif$
$if(papersize)$
$papersize$paper,
$else$
a4paper,
paper=a4,
$endif$
$if(beamer)$
ignorenonframetext,
@@ -74,7 +77,7 @@ $endif$
$for(classoption)$
$classoption$$sep$,
$endfor$
,tablecaptionabove
,captions=tableheading
]{$if(beamer)$$documentclass$$else$$if(book)$scrbook$else$scrartcl$endif$$endif$}
$if(beamer)$
$if(background-image)$
@@ -129,6 +132,7 @@ $endif$
$if(beamerarticle)$
\usepackage{beamerarticle} % needs to be loaded first
$endif$
\usepackage{amsmath,amssymb}
$if(fontfamily)$
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
$else$
@@ -136,12 +140,10 @@ $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}
@@ -336,7 +338,11 @@ $highlighting-macros$
$endif$
$if(tables)$
\usepackage{longtable,booktabs}
\usepackage{longtable,booktabs,array}
$if(multirow)$
\usepackage{multirow}
$endif$
\usepackage{calc} % for calculating minipage widths
$if(beamer)$
\usepackage{caption}
% Make caption package work with longtable
@@ -360,7 +366,7 @@ $else$
\usepackage{footnotebackref}
$endif$
$if(graphics)$
\usepackage{graphicx,grffile}
\usepackage{graphicx}
\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}
@@ -369,6 +375,10 @@ $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:
@@ -379,11 +389,11 @@ $if(strikeout)$
% Avoid problems with \sout in headers with hyperref
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
$endif$
\setlength{\emergencystretch}{3em} % prevent overfull lines
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
$if(numbersections)$
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$3$endif$}
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
$else$
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
$endif$
@@ -422,17 +432,23 @@ $if(lang)$
$endif$
% Load polyglossia as late as possible: uses bidi with RTL langages (e.g. Hebrew, Arabic)
\usepackage{polyglossia}
\setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$}
\setmainlanguage[$for(polyglossia-lang.options)$$polyglossia-lang.options$$sep$,$endfor$]{$polyglossia-lang.name$}
$for(polyglossia-otherlangs)$
\setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$}
\setotherlanguage[$for(polyglossia-otherlangs.options)$$polyglossia-otherlangs.options$$sep$,$endfor$]{$polyglossia-otherlangs.name$}
$endfor$
\else
\usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}
\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{}
$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
@@ -459,10 +475,27 @@ $endif$
$if(csl-refs)$
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newenvironment{cslreferences}%
{$if(csl-hanging-indent)$\setlength{\parindent}{0pt}%
\everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces$endif$}%
{\par}
\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}
$endif$
$if(title)$
@@ -480,9 +513,7 @@ $else$
$endif$
\subtitle{$subtitle$}
$endif$
$if(author)$
\author{$for(author)$$author$$sep$ \and $endfor$}
$endif$
\date{$date$}
$if(beamer)$
$if(institute)$
@@ -531,6 +562,10 @@ $endfor$
\fi
$endif$
$if(page-background)$
\usepackage[pages=all]{background}
$endif$
%
% for the background color of the title page
%
@@ -630,13 +665,14 @@ $endif$
%\addtokomafont{chapter}{\color{heading-color}}
%
% variables for title and author
% variables for title, author and date
%
$if(beamer)$
$else$
\usepackage{titling}
\title{$title$}
\author{$for(author)$$author$$sep$, $endfor$}
\date{$date$}
$endif$
%
@@ -828,6 +864,17 @@ $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$
@@ -897,7 +944,7 @@ $endif$
$if(logo)$
\noindent
\includegraphics[width=$if(logo-width)$$logo-width$$else$100$endif$pt, left]{$logo$}
\includegraphics[width=$if(logo-width)$$logo-width$$else$35mm$endif$, left]{$logo$}
$endif$
$if(titlepage-background)$
@@ -942,7 +989,7 @@ $if(toc-title)$
\renewcommand*\contentsname{$toc-title$}
$endif$
$if(beamer)$
\begin{frame}
\begin{frame}[allowframebreaks]
$if(toc-title)$
\frametitle{$toc-title$}
$endif$
@@ -956,7 +1003,7 @@ $else$
$if(colorlinks)$
\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$}
$endif$
\setcounter{tocdepth}{$if(toc-depth)$$toc-depth$$else$3$endif$}
\setcounter{tocdepth}{$toc-depth$}
\tableofcontents
$if(toc-own-page)$
\newpage

View File

@@ -0,0 +1,79 @@
#+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

View File

@@ -1,598 +0,0 @@
<!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>

View File

@@ -1,8 +1,25 @@
[git.coolneng.duckdns.org*]
target=dev/gitea
target=api/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=dev/github
target=api/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

View File

@@ -0,0 +1,2 @@
[virtualenvs]
in-project = true

View File

@@ -0,0 +1,62 @@
;; 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'

View File

@@ -1,14 +1,323 @@
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;
fullscreen: 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: ;*/
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 ;
}

View File

@@ -1,28 +0,0 @@
#!/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"
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"
fi

View File

@@ -0,0 +1,22 @@
#!/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"

View File

@@ -1,4 +1,4 @@
#!/bin/sh
echo "use nix" >.envrc
echo "use flake" >.envrc
direnv allow

View File

@@ -0,0 +1,16 @@
#!/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"

View File

@@ -0,0 +1,7 @@
#!/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")"

View File

@@ -0,0 +1,14 @@
#!/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

View File

@@ -0,0 +1,419 @@
#!/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)

View File

@@ -0,0 +1,12 @@
#!/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}"

View File

@@ -2,7 +2,35 @@
directory=/tmp/webtorrent
player=mpv
data_file=$HOME/Documents/Misc/peerflix-db.csv
webtorrent download "$1" -s -o "$directory" --"$player"
read -rp "File number: " nr
webtorrent download "$@" -s "$nr" -o "$directory" --"$player"
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

View File

@@ -0,0 +1,16 @@
#!/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"

View File

@@ -0,0 +1,21 @@
#!/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 "$@"

View File

@@ -0,0 +1,94 @@
#!/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

View File

@@ -0,0 +1,12 @@
#!/bin/sh
pulsemixer $(\
pulsemixer --list-sources |\
grep Default |\
awk -v args="$args" '{
gsub(/,$/,"",$3);
cmdargs = cmdargs"--id "$3" "args" "
} END {
print cmdargs
}'
) --toggle-mute

View File

@@ -0,0 +1,33 @@
#!/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 "$@"

View File

@@ -0,0 +1,6 @@
#!/bin/sh
# Convert ZFS legacy mountpoints to ZFS mounts
zfs list -Ho name | while read -r dataset; do
zfs set mountpoint="/$dataset" "$dataset"
done

View File

@@ -0,0 +1,12 @@
#!/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"

View File

@@ -1,7 +1,7 @@
#!/bin/sh
if [ $# -lt 2 ]; then
echo "Usage: subject.sh <subject name> <subject type>"
echo "Usage: subject <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 "$name"/Code
mkdir -p "$name"/TP
mkdir -p "$name"/Exos
else
mkdir -p "$name"/TP
mkdir -p "$name"/Exos
mkdir -p "$formatted_name"/Code
fi

View File

@@ -0,0 +1,50 @@
#!/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

View File

@@ -0,0 +1,27 @@
#!/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 "$@"

View File

@@ -0,0 +1,4 @@
#!/bin/sh
git config user.name "akasroua"
git config user.email "amin.kasrouaouam@ugent.be"

View File

@@ -0,0 +1,6 @@
#!/bin/sh
git fetch upstream
git checkout master
git rebase upstream/master
git push -f origin master

View File

@@ -1,23 +1,27 @@
host zion
user coolneng
hostname 10.8.0.1
hostname 192.168.128.2
port 22
identityfile ~/.ssh/zion
host localhost
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
user root
hostname localhost
hostname 192.168.13.20
port 22
identityfile ~/.ssh/localhost
identityfile ~/.ssh/kobo
host prodyfo
user ec2-user
hostname ec2-52-47-172-241.eu-west-3.compute.amazonaws.com
host kathreftis
user root
hostname 192.168.13.131
port 22
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
identityfile ~/.ssh/kathreftis

Some files were not shown because too many files have changed in this diff Show More