Compare commits

...

491 commits
crash2 ... main

Author SHA1 Message Date
Geoffrey Frogeye a95ae5f568
curacao: Reduce beesd load targets 2024-05-13 09:19:55 +02:00
Geoffrey Frogeye de187c6044 Revert "curacao: Relieve razmo of stress"
This reverts commit 2a3624af09.

With new razmo this should be fine.
2024-05-13 09:16:02 +02:00
Geoffrey Frogeye 2804086233
curacao: New razmo! 2024-05-12 20:34:22 +02:00
Geoffrey Frogeye 88e0a1eb09
Revert kernel upgrade
I need 6.2+ for DS4,
evdi doesn't work with kernel 6.6+,
all versions matching are EOL.

Probably won't game much before 24.05 release which hopefully helps
things?
2024-05-11 00:09:53 +02:00
Geoffrey Frogeye 995c115c90
🎮 DualShock 4 (or is it?) love
ddcci removed again because it still doesn't do anything and also doesn't compile
with latest kernel.
2024-05-10 23:27:45 +02:00
Geoffrey Frogeye 7c6e8adbed
Re-add itch 2024-05-10 17:31:33 +02:00
Geoffrey Frogeye 536eee36ad
remote-builds: Disable by default
It makes things slower and my server unresponsive sometimes.
Probably more work to be done but I don't feel like doing that now.
2024-05-10 14:50:02 +02:00
Geoffrey Frogeye 2a3624af09
curacao: Relieve razmo of stress
Maybe I'm pushing its limits too hard... it doesn't seem to be doing
great. Maybe because it knows I'll replace it soon.
2024-05-10 14:44:37 +02:00
Geoffrey Frogeye 4ff4e0cc99
curacao: No more archlinux ~~dataset~~ subvolume 2024-05-10 13:28:25 +02:00
Geoffrey Frogeye 6e8d8b43c2
Replace rnix with nixd 2024-05-10 11:05:48 +02:00
Geoffrey Frogeye 7c74c5e1d9
Lix: Remove substituters
Those are mostly misses, even for Lix.
2024-05-10 01:51:23 +02:00
Geoffrey Frogeye 552e1c1cf2
Upgrade 2024-05-10 01:51:16 +02:00
Geoffrey Frogeye 056e3447e4
remote-builds: Specify max jobs
Should make better use of the hardware. Otherwise it's roundtrip frenzy.
2024-05-09 23:13:08 +02:00
Geoffrey Frogeye bd84dd7fd7
remote-builds: Reduce amount of SSH connections
It seems to be doing a SSH connection for each path it has to check...
wow.
2024-05-09 23:07:51 +02:00
Geoffrey Frogeye cc46352873
Misc fixes 2024-05-08 13:24:03 +02:00
Geoffrey Frogeye c770380328
Lix! 😋🍦 2024-05-08 13:08:39 +02:00
Geoffrey Frogeye a2e15e8c33
Attempt at using nom 2024-05-08 12:56:05 +02:00
Geoffrey Frogeye bdabf30728
Add repl 2024-05-08 09:47:57 +02:00
Geoffrey Frogeye 176be4f218
Shorten flake a bit 2024-05-08 09:37:04 +02:00
Geoffrey Frogeye 82d5e8a466
remote-builds: Fix 🙈 2024-05-07 23:05:32 +02:00
Geoffrey Frogeye 7a612754f6
curacao: Ok nvidia modules brings problems, let's revert 2024-05-07 22:59:16 +02:00
Geoffrey Frogeye 0663e3755b
remote-builds: Fix SSH host keys
vivarium doesn't actually transfer the public keys, so the .pub files
are from somewhere during installation... oops.
2024-05-07 00:00:36 +02:00
Geoffrey Frogeye bd538785b8
remote-builds: Add aarch64 support 2024-05-06 22:50:01 +02:00
Geoffrey Frogeye c4bb02b16e
Attempt at using lix
Without remote builds and with my laptop setup it's not really viable
for now :(
2024-05-06 22:26:36 +02:00
Geoffrey Frogeye e68be9e665
curacao: nvidia drivers were not there? 2024-05-06 22:26:15 +02:00
Geoffrey Frogeye 836f8ee8b4
Further attempt at remote builds 2024-05-06 22:25:35 +02:00
Geoffrey Frogeye b0168f4354 gaming: Add dolphin 2024-05-05 13:32:36 +02:00
Geoffrey Frogeye 0e1d387069
Upgrade 2024-04-29 12:29:45 +02:00
Geoffrey Frogeye 7b8ff04f5d
gpg: Increase passphrase remembering timeout
Sweet relief.
2024-04-29 12:26:39 +02:00
Geoffrey Frogeye d276581d94
Add/refresh Nix-related search engines 2024-04-29 12:26:23 +02:00
Geoffrey Frogeye 5924bd59c6
Make Docker work
This tells you how much I use it 😅
2024-04-29 12:25:47 +02:00
Geoffrey Frogeye 173a231556
Add more network/hardware debug tools 2024-04-24 13:25:59 +02:00
Geoffrey Frogeye 98af492b75
curacao: Allow Wake On Lan 2024-04-23 17:57:20 +02:00
Geoffrey Frogeye 6e15aa2ea7
Upgrade 2024-04-20 09:42:53 +02:00
Geoffrey Frogeye 028cadb6ab
Update 2024-04-11 10:43:14 +02:00
Geoffrey Frogeye 8005cbfbc1
Attempt at controlling external screens brightness 2024-04-10 16:32:14 +02:00
Geoffrey Frogeye b7d8797a6d
remote-builds: WIP 2024-04-10 01:05:38 +02:00
Geoffrey Frogeye 96ddd61320 Merge remote-tracking branch 'origin' 2024-04-05 13:50:28 +02:00
Geoffrey Frogeye cbc9a87f09
Update 2024-04-04 21:15:23 +02:00
Geoffrey Frogeye ab30bdf6a8 Merge remote-tracking branch 'origin/main' 2024-04-04 20:14:09 +02:00
Geoffrey Frogeye 067cfc3d7a
aerc: Added
More of a test for now?
2024-04-04 20:12:24 +02:00
Geoffrey Frogeye 044318babc
Display changed derivations on activation 2024-04-01 14:59:07 +02:00
Geoffrey Frogeye c319ee1394
Revert "desktop: Wii pointer"
This reverts commit a3999cc9b1.

It's fun 5 minutes, but missing the I thing is a bit annoying :(
2024-04-01 12:26:37 +02:00
Geoffrey Frogeye a3999cc9b1
desktop: Wii pointer 2024-04-01 12:25:53 +02:00
Geoffrey Frogeye 1615abd814
mpd/curacao: Can be controlled remotely 2024-03-29 10:42:25 +01:00
Geoffrey Frogeye 0c59a713da
Update 2024-03-28 16:16:40 +01:00
Geoffrey Frogeye 4e68c3ccf7
dedup: Keep load under control 2024-03-27 13:09:33 +01:00
Geoffrey Frogeye 5148643a64
curacao: Add cameractrls (sorta) 2024-03-27 13:09:00 +01:00
Geoffrey Frogeye 4358f717d0
curacao: Scrub scrub scrub 2024-03-26 18:28:21 +01:00
Geoffrey Preud'homme 25c00be8fd
Ability to use unstable packages 2024-03-26 17:04:16 +01:00
Geoffrey Preud'homme fe468eebd7
Remove nixGL 2024-03-26 16:49:09 +01:00
Geoffrey Preud'homme 7973e2ccd7
Remove usernix and home-manager standalone 2024-03-26 16:47:59 +01:00
Geoffrey Preud'homme 76a594ca9f Import some dependencies where they are needed 2024-03-26 16:18:17 +01:00
Geoffrey Frogeye 8d1d15a08e
Update 2024-03-23 09:48:04 +01:00
Geoffrey Frogeye b02ec1c28c
curacao: Apply intel microcode 2024-03-23 09:46:59 +01:00
Geoffrey Frogeye ce5a099899
curacao: Add CO2 sensor 2024-03-22 20:22:23 +01:00
Geoffrey Frogeye 20dd333799
curacao: Try deduplication 2024-03-22 18:04:23 +01:00
Geoffrey Frogeye f04f8160db
Update 2024-03-21 23:23:22 +01:00
Geoffrey Frogeye 35783ea086
curacao: New screen disposition 2024-03-21 23:23:08 +01:00
Geoffrey Frogeye 440b1e0563
Fix locale 2024-03-10 19:13:57 +01:00
Geoffrey Frogeye a0d7e43a9d
account: Add support 2024-03-09 23:50:31 +01:00
Geoffrey Frogeye b3f1d95634
lock: More goodness 2024-03-09 19:09:30 +01:00
Geoffrey Frogeye 82bafb3428
i3: Use --release 2024-03-09 19:02:57 +01:00
Geoffrey Frogeye 2fa993ad2d
i3: Reduce invalid binding warnings 2024-03-09 19:01:27 +01:00
Geoffrey Frogeye 14f7199d65
xlock: Add option 2024-03-09 18:22:51 +01:00
Geoffrey Frogeye c7c2c89f15 Merge remote-tracking branch 'origin/main' 2024-03-04 16:53:10 +01:00
Geoffrey Frogeye 2b76db290c
Upgrade 2024-03-04 16:52:01 +01:00
Geoffrey Frogeye ac0724d97a
pindakaas: Fix video stuttering 2024-02-19 00:55:45 +01:00
Geoffrey Frogeye 5d4908d2e2
update-local-flakes: Fail early 2024-02-18 14:12:32 +01:00
Geoffrey Frogeye ee4e45905a
wifi: Make more user-friendly 2024-02-18 13:38:01 +01:00
Geoffrey Frogeye 097d53807d
install_os: Fix flake selection 2024-02-18 00:09:08 +01:00
Geoffrey Frogeye 833320e3fa
Fix OS scripts for flakes 2024-02-17 23:35:53 +01:00
Geoffrey Frogeye 448a154d74
Fix previous for pindakaas 2024-02-17 19:05:50 +01:00
Geoffrey Frogeye 8476bbde12
Re-add variants and reorganize things 2024-02-17 18:39:09 +01:00
Geoffrey Frogeye bf803d18a6
Update and restore white for music 2024-02-12 12:31:59 +01:00
Geoffrey Frogeye 6e176fe61b
frobar: Use frogarized (dark) colors
Wanted to refactor things first, but hmmm, no sweet consistency has
priority.
2024-02-10 13:30:11 +01:00
Geoffrey Frogeye f65f6853ee
firefox: Some settings 2024-02-09 19:10:23 +01:00
Geoffrey Frogeye 972dcaae1f
Oupdate 2024-02-07 22:12:24 +01:00
Geoffrey Frogeye 659f6ae806 Merge remote-tracking branch 'origin/main' 2024-02-04 15:01:27 +01:00
Geoffrey Frogeye e5b034781d
Add evince
For forms. Crap, I should have put that as a file comment.
2024-02-04 14:54:35 +01:00
Geoffrey Frogeye 11c1c8d9f1 Merge remote-tracking branch 'office/main' 2024-02-03 19:40:42 +01:00
Geoffrey Frogeye 21aed8114f
btdu 2024-02-03 19:40:06 +01:00
Geoffrey Preud'homme 8e6203ce7d
scripts/lip: Fix 2024-02-01 16:24:19 +01:00
Geoffrey Frogeye 16f5a0a9a5
Merge remote-tracking branch 'origin/main' 2024-01-28 12:13:58 +01:00
Geoffrey Frogeye f30abd991c
Printing support 2024-01-28 12:13:27 +01:00
Geoffrey Frogeye c936d859c7
Frogarized! 2024-01-27 14:23:26 +01:00
Geoffrey Frogeye 5bba711d3c
Plymouth!
Yeah yeah I know...
2024-01-27 00:23:38 +01:00
Geoffrey Frogeye 9c6a2f69f0
vim/git: Use gitlinker 2024-01-26 22:02:25 +01:00
Geoffrey Frogeye 85cd61d206
thefuck: Added
Mostly as an experiment for now.
2024-01-26 18:38:28 +01:00
Geoffrey Frogeye ffd871299b
Update nixpkgs 2024-01-26 18:37:56 +01:00
Geoffrey Frogeye ca2dc262b7
gpg: Fancy pinentry 2024-01-26 00:23:52 +01:00
Geoffrey Frogeye 59db464987 Merge remote-tracking branch 'office/main' 2024-01-25 23:55:55 +01:00
Geoffrey Frogeye 0bb5981f3a
vim: Fix tabline bindings 2024-01-25 23:53:59 +01:00
Geoffrey Preud'homme 5b3c887b41
git-sync: Only push when there's something to push 2024-01-25 13:03:30 +01:00
Geoffrey Frogeye dfc8d68495
vim/decoration: Small adjustments 2024-01-23 23:38:48 +01:00
Geoffrey Frogeye 09b201ca24
Change status line
Time spent on writing Nix config:
5%: Testing new shiny things
7%: Debugging issues
88%: Gettings the colors and theming juuuuuust right
Help, my sleep schedule is dying
2024-01-22 00:02:13 +01:00
Geoffrey Frogeye 7cd77af9bf
vim: Move more things to prose 2024-01-20 19:36:49 +01:00
Geoffrey Frogeye a57c6527ce
vim: Fix lsp todos 2024-01-20 19:36:47 +01:00
Geoffrey Frogeye 97a3e5f6e4
vim: Fix Reload command 2024-01-20 19:36:45 +01:00
Geoffrey Frogeye 55756e4ae7
English is a programming language, fight me 2024-01-19 22:50:01 +01:00
Geoffrey Frogeye eac22be095
No Ansible by default 2024-01-19 00:50:45 +01:00
Geoffrey Frogeye fdf6725dc9
vim: Configure fugitive-gitlab 2024-01-18 22:49:46 +01:00
Geoffrey Frogeye 46db2dd34f
stylix: Workaround for non-DE environments 2024-01-17 00:08:07 +01:00
Geoffrey Frogeye bac1813c77
nod: Fifth attempt at flakes
Also simplified a few things, nice
2024-01-16 23:48:41 +01:00
Geoffrey Frogeye e56514890d
nod: 4th attempt at flakes
Is it the time I do the joke "Xth time the charm"?
2024-01-16 23:31:54 +01:00
Geoffrey Frogeye 30f1880f29
nod: 3rd attempt at flakes 2024-01-16 23:27:15 +01:00
Geoffrey Frogeye 770697f9f3
nod: Second attempt at flakes 2024-01-16 23:07:33 +01:00
Geoffrey Frogeye 65205a2fb8
nod: Flake test 2024-01-16 22:39:29 +01:00
Geoffrey Frogeye 55641fe958
passwordFiles: Added 2024-01-16 17:04:30 +01:00
Geoffrey Frogeye 6cee16924c
firefox: Rudimentary config, tridactyl support 2024-01-15 23:12:02 +01:00
Geoffrey Frogeye 1dbfd6cf88
terminal: Split out 2024-01-15 21:36:20 +01:00
Geoffrey Frogeye fbde2f5028
i3: Compress repetitions
For workspaces it makes sense, for cardinals maybe it was a tad
overkill. Oh well, at least it's ready for 3D 🙃
2024-01-15 20:11:54 +01:00
Geoffrey Frogeye 43e7a5af46
style: Split out and fixes 2024-01-15 19:26:44 +01:00
Geoffrey Frogeye 1b008c1ae8
presentation: Split out 2024-01-15 18:54:19 +01:00
Geoffrey Frogeye c1d8bc65af
Update and more backups 2024-01-15 18:36:51 +01:00
Geoffrey Frogeye 26e70acb2f
autorandr: Split out 2024-01-15 14:50:02 +01:00
Geoffrey Frogeye e9a8d16ece
i3: Add config to easily create modes
With their associated "switch-to" keybinding.
2024-01-13 22:58:45 +01:00
Geoffrey Frogeye e4c407fb28
Move some things where they belong 2024-01-13 01:51:42 +01:00
Geoffrey Frogeye d994dfb9fb
i3/desktop: Split out 2024-01-12 23:52:53 +01:00
Geoffrey Frogeye 2ad4bee0f9
vim: Split out 2024-01-12 18:08:11 +01:00
Geoffrey Frogeye 4412180b3a
Split out hm/common
I went nuclear...
2024-01-11 23:54:03 +01:00
Geoffrey Frogeye 033f411060
git-sync: Replace with git-sync 2024-01-11 22:25:52 +01:00
Geoffrey Frogeye f83806a307
go: Separate file 2024-01-10 14:01:39 +01:00
Geoffrey Frogeye bf796d9587
script: Various fixes 2024-01-10 13:55:15 +01:00
Geoffrey Frogeye 6e4130fd26
vim: Better snippets (and split completion file) 2024-01-09 21:53:00 +01:00
Geoffrey Frogeye d325eb2d27
vim: Replace nvim-compe with nvim-cmp 2024-01-09 20:00:12 +01:00
Geoffrey Frogeye aeccc22857
vim: Replace old plugin with rainbow-delimiter
In case you're wondering
3c8a185da4?tab=readme-ov-file#rainbow-delimitersnvim-integration
is not worth the trouble...
2024-01-09 00:13:20 +01:00
Geoffrey Frogeye 8f370c5040
python: Move to separate file 2024-01-08 23:24:17 +01:00
Geoffrey Frogeye 83b38ddf61
vim: Put in correct folder 2024-01-08 23:10:50 +01:00
Geoffrey Frogeye 42bc007ed4
c: Move into own file 2024-01-08 22:59:06 +01:00
Geoffrey Frogeye 881b22c9b2
Move gpg, git, tmux/screen to separate file 2024-01-08 21:48:31 +01:00
Geoffrey Frogeye 124df42fd8
hm: Reorganize installed programs 2024-01-07 23:41:35 +01:00
Geoffrey Frogeye 5360f8ff10
i3: Separate file 2024-01-07 23:29:16 +01:00
Geoffrey Frogeye 4190299030
qutebrowser: Add nix search engines 2024-01-07 22:51:09 +01:00
Geoffrey Frogeye 66f3179d41 Merge remote-tracking branch 'origin/main' 2024-01-07 22:39:54 +01:00
Geoffrey Frogeye ecc6cb983d
qutebrowser: Own file 2024-01-07 22:38:42 +01:00
Geoffrey Frogeye e0fb3fcb22
Flake fixes for new systems 2024-01-07 19:37:06 +01:00
Geoffrey Frogeye 597b50ebef
More flake fixes 2024-01-07 18:33:00 +01:00
Geoffrey Frogeye 6d98d85642
Fix Wi-Fi flakes 2024-01-06 19:10:47 +01:00
Geoffrey Frogeye e013bcfdba
Almost working flakes 2024-01-06 18:40:20 +01:00
Geoffrey Frogeye 25130195ec
Remove currently unused configs
Just to make transition to flakes easier.
We'll restore them later, maybe.
2024-01-06 17:20:37 +01:00
Geoffrey Frogeye 7506f55468
Merge branch 'main' into flakes 2024-01-06 12:39:01 +01:00
Geoffrey Frogeye 1abf3d503d
Add sha256 to go closer to purity 2024-01-05 19:04:44 +01:00
Geoffrey Frogeye c954f0df5f Quick commit 2024-01-05T18:42:21+01:00 2024-01-05 18:42:21 +01:00
Geoffrey Frogeye 3477528dd5
Add sha256 to go closer to purity 2024-01-05 18:41:10 +01:00
Geoffrey Frogeye e2bb686d12
Allow experimental nix features 2024-01-05 18:37:39 +01:00
Geoffrey Frogeye 74585ec4a7
lsd: Improve colors 2024-01-05 17:04:37 +01:00
Geoffrey Frogeye 5b70c2f448
Smol improvements 2024-01-04 23:18:06 +01:00
Geoffrey Frogeye 241ec71350
Remove already processed things 2024-01-04 22:14:31 +01:00
Geoffrey Frogeye 3755ab251d
Make fpga installable on aarch64
... when was the last time I had to do FPGA stuff though?
2024-01-04 22:11:11 +01:00
Geoffrey Frogeye 0bc0aaa9bf
Add git-sync-pull 2024-01-04 22:10:44 +01:00
Geoffrey Frogeye c7d69cd100
Start using lsd
Amazing project and commit name
2024-01-04 21:35:29 +01:00
Geoffrey Preud'homme e1c041368b
usernix: Fixes following testing 2024-01-04 19:45:07 +01:00
Geoffrey Frogeye 8b78cad60c
nod: Fourth attempt 2023-12-25 12:11:23 +01:00
Geoffrey Frogeye becf0c961f
nod: Third attempt 2023-12-25 12:07:17 +01:00
Geoffrey Frogeye 9362e78f87
nod: Second attempt 2023-12-25 12:02:24 +01:00
Geoffrey Frogeye f94e741948
nod: First attempt 2023-12-25 11:04:01 +01:00
Geoffrey Frogeye ec1d120f12
Add Wi-Fi for 37C3
Yes that was the laziest option to do that.
2023-12-24 22:24:12 +01:00
Geoffrey Frogeye 9ac84e8470
neofetch: Add 2023-12-23 00:15:56 +01:00
Geoffrey Frogeye 5b85606831
usernix: Added 2023-12-22 23:29:14 +01:00
Geoffrey Frogeye 82caafaceb
pindakaas: Fix zram swap size 2023-12-22 20:49:09 +01:00
Geoffrey Frogeye 73bdb5e567
pindakaas: Fix Alacritty black font 2023-12-22 20:20:36 +01:00
Geoffrey Frogeye 53304b4abd
pindakaas: Bump zram 2023-12-22 19:57:09 +01:00
Geoffrey Frogeye 9f488511bf Merge remote-tracking branch 'origin/main' 2023-12-22 19:48:02 +01:00
Geoffrey Frogeye 690cc19871
Allow control with wpa_cli 2023-12-22 19:47:23 +01:00
Geoffrey Frogeye 600254a2d2 pindakaas: Add swap 2023-12-22 19:28:28 +01:00
Geoffrey Frogeye 0592c01a21 Add pindakaas 2023-12-22 15:38:49 +01:00
Geoffrey Frogeye 7e261e5cf0 Merge remote-tracking branch 'origin/main' 2023-12-22 15:31:36 +01:00
Geoffrey Frogeye 31c602fa94
Keep VirtualBox out of my home dir 2023-12-22 14:57:44 +01:00
Geoffrey Frogeye bc0945228d Merge remote-tracking branch 'origin/main' 2023-12-20 14:09:57 +01:00
Geoffrey Frogeye 7138140537
Some note 2023-12-20 14:08:43 +01:00
Geoffrey Frogeye 06f219f0c8
mpv: Disable thumbnails auto-generation 2023-12-19 23:09:25 +01:00
Geoffrey Frogeye b81f20c944 Add ensure_nix script 2023-12-19 18:03:29 +01:00
Geoffrey Frogeye 1a351ea5cb
bsh: Re-pro-du-ci-ble 2023-12-18 21:17:23 +01:00
Geoffrey Frogeye c145803881
bsh: Hide base64 string from process list 2023-12-18 20:59:05 +01:00
Geoffrey Frogeye 6b07cc0cbe
Clean some OS stuff 2023-12-18 19:50:13 +01:00
Geoffrey Frogeye 9b3564f20e
Hardware accelerate mpv 2023-12-18 19:32:16 +01:00
Geoffrey Frogeye a250cd0f42
Add file 2023-12-18 15:21:38 +01:00
Geoffrey Frogeye ab7a8f73e6
Merge remote-tracking branch 'origin/main' 2023-12-18 14:40:41 +01:00
Geoffrey Frogeye abd9447172 Use PATH-using names for common variables
Otherwise it uses the unwrapped package, which doesn't have the plugins
and stuff. Also if upgrade, environment variables don't get updated, so
it would use old stuff.
2023-12-17 22:53:54 +01:00
Geoffrey Frogeye 6ba936fb61 changes from curacao on Sun Dec 17 10:40:01 PM CET 2023 2023-12-17 22:40:01 +01:00
Geoffrey Frogeye b7cea97b71 changes from curacao on Sun Dec 17 10:39:56 PM CET 2023 2023-12-17 22:39:56 +01:00
Geoffrey Frogeye 99e141d863 changes from curacao on Sun Dec 17 10:38:44 PM CET 2023 2023-12-17 22:38:44 +01:00
Geoffrey Frogeye cb22f38d1d changes from curacao on Sun Dec 17 03:10:13 PM CET 2023 2023-12-17 15:10:13 +01:00
Geoffrey Frogeye 6b00a19d0c
Use specialisation to switch themes on NixOS 2023-12-17 12:37:41 +01:00
Geoffrey Frogeye b94e030619
Fix default browser 2023-12-16 23:55:14 +01:00
Geoffrey Frogeye 4a1d065554
Misc notes 2023-12-16 23:43:01 +01:00
Geoffrey Frogeye a46e7d7bca
Fix backlight 2023-12-16 22:39:11 +01:00
Geoffrey Frogeye a3552634b6
Add curacao backup stuff 2023-12-16 22:22:14 +01:00
Geoffrey Frogeye 740e103730
Review system packages 2023-12-16 19:06:10 +01:00
Geoffrey Frogeye 8dfaa80f96
Use gitFull
I want gitk
2023-12-16 19:02:59 +01:00
Geoffrey Frogeye 6f1121d731
Properly add syncthing 2023-12-16 19:00:33 +01:00
Geoffrey Frogeye 2515d3e8ea
Don't use lessopen/lesspipe
Broken, will ask for strings.
2023-12-16 18:58:13 +01:00
Geoffrey Frogeye 16ca8b3b18
Fix bsh 2023-12-16 17:37:04 +01:00
Geoffrey Frogeye 926e620b5e
Fix shell title 2023-12-16 17:29:34 +01:00
Geoffrey Frogeye 417ef5a746
Fix Wi-Fi config generation
Actually the first thing I did, but last commit because...
why do I bother again?
2023-12-16 17:08:29 +01:00
Geoffrey Frogeye a6f706d088
Add Signal 2023-12-16 17:08:18 +01:00
Geoffrey Frogeye c59ee11696
Re-add bluetooth
I forgot
2023-12-16 17:07:44 +01:00
Geoffrey Frogeye 88ef6925a4
Fix i3 fonts 2023-12-16 17:06:36 +01:00
Geoffrey Frogeye 064ff2e9ab
Actually, shell history is state 2023-12-16 17:05:36 +01:00
Geoffrey Frogeye 1840ed67c9
Different screen names under NixOS
Breaks curacao_test though
2023-12-16 17:04:59 +01:00
Geoffrey Frogeye 405a25e2ab
Fix boot 2023-12-16 17:04:29 +01:00
Geoffrey Frogeye 8596d5809f
Fix less colors 2023-12-16 17:03:59 +01:00
Geoffrey Frogeye 42ab4908df
Fourth attempt at booting NixOS on curacao directly 2023-12-16 14:37:23 +01:00
Geoffrey Frogeye c25996ed8f
Third attempt at booting NixOS on curacao directly 2023-12-16 14:04:24 +01:00
Geoffrey Frogeye 5ec571ecbd
Second attempt at booting NixOS on curacao directly 2023-12-16 13:51:53 +01:00
Geoffrey Frogeye 6f9de6cc4c
First attempt at booting NixOS on curacao directly 2023-12-12 22:03:36 +01:00
Geoffrey Frogeye d98be4eea5
Fix to curacao partition scheme 2023-12-12 20:59:31 +01:00
Geoffrey Frogeye 2cea446f49
Describe current partition config for curacao
Hopefully I didn't make any mistake 🤞
2023-12-11 22:37:58 +01:00
Geoffrey Frogeye a3436268c8
Meta-installer 2023-12-09 23:58:19 +01:00
Geoffrey Frogeye 1876ddeb71 Merge branch 'nix' 2023-12-09 21:42:45 +01:00
Geoffrey Frogeye de7b7880a6
No docker on pindakaas 2023-12-09 17:34:35 +01:00
Geoffrey Frogeye 2ae8bf4fd0
Remove texlive 2023-12-09 00:45:33 +01:00
Geoffrey Frogeye f20678d134
Use actual encryption passwords 2023-12-09 00:09:36 +01:00
Geoffrey Frogeye 54ec1fc9ba
Fix adb 2023-12-09 00:08:01 +01:00
Geoffrey Frogeye 8a4875cf5b
Rework how X session is started 2023-12-08 22:44:21 +01:00
Geoffrey Frogeye 41c3266ee2
Process nvim FIXMEs 2023-12-08 19:02:29 +01:00
Geoffrey Frogeye 85ac632025
Fix Perl Language server 2023-12-07 23:10:48 +01:00
Geoffrey Frogeye 94d9bae95b
Dynamic theme setting 2023-12-05 23:11:54 +01:00
Geoffrey Frogeye 56544fe947
Fix nvim color scheme being different from system 2023-12-05 20:57:05 +01:00
Geoffrey Frogeye f12ff6a989
Fix a lot of FIXMEs 2023-12-04 22:47:02 +01:00
Geoffrey Frogeye 6569596b8a
Things already fixed 2023-12-02 22:47:30 +01:00
Geoffrey Frogeye 5169cbc82c
Less things that shouldn't be here :) 2023-12-02 22:45:12 +01:00
Geoffrey Frogeye 4a5c6d9ad3
Extra should work on aarch64 now 2023-12-02 22:12:20 +01:00
Geoffrey Frogeye a137506a13
Separate option for gaming 2023-12-02 21:50:59 +01:00
Geoffrey Frogeye c9156044f8
Add documentation 🤯
Say whaaaaat?
2023-12-02 18:50:31 +01:00
Geoffrey Frogeye 25011a3353
Add options for aliases
So they can be added from extensions
2023-12-02 18:05:33 +01:00
Geoffrey Frogeye e01c454d68
Port common SSH config from extension 2023-12-02 17:37:34 +01:00
Geoffrey Frogeye cc13cabad5
Misc things proted from extension, and fixes
Back to the non-descriptive commit names again lol
2023-12-01 22:19:52 +01:00
Geoffrey Frogeye edeef96133
Move scripts dir inside hm
And remove weird path contraptions
2023-11-30 22:09:44 +01:00
Geoffrey Frogeye 050901da2f
Move yt-dlp configuration from g extension 2023-11-30 21:51:11 +01:00
Geoffrey Frogeye 88d087c3ce
Move some PGP-related things to extension 2023-11-30 21:49:37 +01:00
Geoffrey Frogeye 05b1f2d88a
Process 23.11 deprecations and new things 2023-11-30 20:37:25 +01:00
Geoffrey Frogeye 02e03857c2
Update stateVersions to 23.11
No change needed!
2023-11-30 19:07:03 +01:00
Geoffrey Frogeye 5ee5e5fc52
Upgrade to NixOS 23.11 2023-11-30 19:02:32 +01:00
Geoffrey Frogeye bc4676dec0
Fix/reorganize profile variants 2023-11-30 19:01:55 +01:00
Geoffrey Frogeye 224f769324
Do not restrict VMs to a single config
Also "allows" full-system build without install.
2023-11-30 18:59:50 +01:00
Geoffrey Frogeye 3806e023f6
disko: Reorganize a bit 2023-11-30 18:57:58 +01:00
Geoffrey Frogeye 36608fa9e4
Fix LUKS on pindakaas
It took 3 days to investigate by myself and only get a partial idea of
the issue, but 5 minutes to ask for support and another 5 to get a
working solution.
Hopefully lesson learned.
2023-11-29 23:00:46 +01:00
Geoffrey Frogeye 29504dab6c
Add curacao_usb for further debugging 2023-11-29 14:27:29 +01:00
Geoffrey Frogeye 5e456c54a7
Add results from LUKS debugging session 2023-11-29 11:39:58 +01:00
Geoffrey Frogeye 6444f8f517
Reorganize configuration root
While I might still bikeshed how the rest of the configuration is
sourced, at least the import points should be stable.
2023-11-28 20:53:18 +01:00
Geoffrey Frogeye dd6f579f74
Booting pindakaas on SD card 2023-11-28 00:34:30 +01:00
Geoffrey Frogeye 7e49ed2e19
Reduce number of channels used
This was a fix attempt before I discovered that the issue was that
nixos-install uses the root user's channels. Doesn't hurt anyways.
2023-11-28 00:33:03 +01:00
Geoffrey Frogeye bae9c4c524
hm: Fix fix 2023-11-28 00:30:52 +01:00
Geoffrey Frogeye b626cb89f4
hm: Various fixes 2023-11-27 18:01:20 +01:00
Geoffrey Frogeye 76003a686c
frobar: Remove outdated comment 2023-11-27 00:13:11 +01:00
Geoffrey Frogeye 8cd906e6a2
Remove .gitmodules 2023-11-27 00:02:12 +01:00
Geoffrey Frogeye ee178b7d57
nix: Make nix the root
Which means now I'll have to think about real prefixes in commit names.
2023-11-26 23:58:22 +01:00
Geoffrey Frogeye 550eed06e0
nix: Various fixes frobar, autorandr and automatrop 2023-11-26 23:47:15 +01:00
Geoffrey Frogeye 24dd21368f
nix: Integrate root-level files 2023-11-26 22:45:07 +01:00
Geoffrey Frogeye 1f61ceb395
nix: Migrate scripts
They're a bit slower to start :(.
Hopefully this is something that flakes will help with,
otherwise I'll find another way.
2023-11-26 21:04:58 +01:00
Geoffrey Frogeye 33945f865f Merge remote-tracking branch 'origin/master' into nix 2023-11-23 22:59:32 +01:00
Geoffrey Frogeye ca4c74e236
python scripts: isort & black pass 2023-11-23 22:59:09 +01:00
Geoffrey Frogeye 5c274bbfe9
nix: Fix typos 2023-11-23 22:54:20 +01:00
Geoffrey Frogeye 80b92cfab3
Merge remote-tracking branch 'origin/master' into nix 2023-11-23 22:54:11 +01:00
Geoffrey Frogeye 58b4fbcdf0 Merge remote-tracking branch 'origin/master' 2023-11-23 22:41:45 +01:00
Geoffrey Frogeye 65d1594ec9
bsh: Duplicate source files and optimize
A step back... but hopefully so we can take a step forward?
2023-11-23 22:39:33 +01:00
Geoffrey Frogeye dcb8e62df2
Suspend even though other "people" are connected
Other "people" being me in disguise, sooo
2023-11-23 20:38:17 +01:00
Geoffrey Frogeye 86f225ea67
nix: Remove ability to build pindakaas SD image
The idea to create an image burnable on a SD card that is already
configured is a nice one, however I encountered many issues:

- Used something that was designed to be an installer:
    - Cannot change from unencrypted ext4 partition (AFAICS)
    - Comes with installer tools (i.e. tools for various filesystems),
      which creates conflicts
- Takes a lot of space and time to build, had to put /tmp on a non-tmpfs
- Has to extend the filesystem manually afterwards
- I think it rebuilt the full system on nixos-rebuilt anyways. Maybe
  because I used binfmt compilation? Could also be because installer has
  some overlays.

Since I had nix on Manjaro already, I surely could have built the
system directly on the SD card from there. Maybe that's what I will do
to test the partitionning/boot scheme setup actually.
2023-11-23 13:42:52 +01:00
Geoffrey Frogeye 55f2304223
nix: Various fixes
So that explains why quick-scope didn't work so far... but not why it
built without it.
2023-11-23 13:36:03 +01:00
Geoffrey Frogeye 42954e7214
nix: Move unfree allowing into os config
Might need the same for HM config?
2023-11-23 13:21:29 +01:00
Geoffrey Frogeye 63b5e9c252
nix: Fix wireless config 2023-11-23 13:20:44 +01:00
Geoffrey Frogeye 37a8134c23
nix: Dev stuff & misc behind options 2023-11-22 16:32:20 +01:00
Geoffrey Frogeye eb2f12b6c5
nix: Put desktop behind option 2023-11-22 14:09:38 +01:00
Geoffrey Frogeye 9a18827cbc
nix: Make nixos-hardware work for pindakaas 2023-11-22 13:38:25 +01:00
Geoffrey Frogeye c7e2263d64
nix: nom nom 😋 2023-11-22 01:51:48 +01:00
Geoffrey Frogeye 5125e05266
nix: Build on aarch64 2023-11-22 00:52:31 +01:00
Geoffrey Frogeye 471966197a
nix: Reduce default size with options 2023-11-21 21:01:56 +01:00
Geoffrey Frogeye c7d5a229d7
nix: Finishing misc in config 2023-11-20 22:42:51 +01:00
Geoffrey Frogeye 5d5750b2db
nix: Add tmux 2023-11-20 22:09:28 +01:00
Geoffrey Frogeye d0c743ec30
nix: Even more misc config 2023-11-19 23:20:20 +01:00
Geoffrey Frogeye dfb47f17f5
nix: Add qutebrowser 2023-11-19 23:09:10 +01:00
Geoffrey Frogeye fe1303ccc9
nix: More misc config 2023-11-19 22:41:09 +01:00
Geoffrey Frogeye c9e0c79ab2
nix: Add mpv 2023-11-19 21:48:35 +01:00
Geoffrey Frogeye 2d89e1b224
nix: add mpd conf 2023-11-19 21:28:42 +01:00
Geoffrey Frogeye 47a19d7f82
nix: frobar
Semi-proper Python packaging, and non-conflicting names, yahoo!
2023-11-19 20:51:05 +01:00
Geoffrey Frogeye dc6af1cb63 Merge remote-tracking branch 'origin' 2023-11-17 19:58:09 +01:00
Geoffrey Frogeye 6046cb2df7
Add git difftool: meld 2023-11-17 19:56:56 +01:00
Geoffrey Frogeye 0316638e21
nix: Process some more dotfiles 2023-11-12 22:44:20 +01:00
Geoffrey Frogeye 3995e664d0
nix: Various fixes 2023-11-12 21:53:52 +01:00
Geoffrey Frogeye b9974a790a
nix: Finish shell 2023-11-10 23:31:11 +01:00
Geoffrey Frogeye 87f5b30995
nix: Add GPG and SSH agent 2023-11-08 12:23:30 +01:00
Geoffrey Frogeye 77eef949b6
nix: Add most of shenv 2023-11-07 23:17:40 +01:00
Geoffrey Frogeye ab4e33a825
nix: Integrate more shell files
Also I was thinking of getting rid of bash but... I spent so much time
differentiating which options are for sh/bash/zsh that I don't feel like
losing this data for now.
2023-11-07 21:49:36 +01:00
Geoffrey Frogeye b5c39614c9
nix: Added remaining of zshrc
Basically added the whole file with little edits... sad :(
2023-11-06 23:12:47 +01:00
Geoffrey Frogeye beca99a134
nix: zsh more config 2023-11-05 23:19:04 +01:00
Geoffrey Frogeye dcb03fa895
nix: Make alacritty and other GL apps runnable
Not everyone works, but already something.
2023-11-05 22:28:38 +01:00
Geoffrey Frogeye 8820d5edc4
nix: Add powerline-go for zsh 2023-11-05 21:37:36 +01:00
Geoffrey Frogeye 6d9d2078a6
nix: Make it work with standalone hm on Arch 2023-11-05 21:36:11 +01:00
Geoffrey Frogeye dff024a291
nix: Reformat 2023-11-05 21:32:31 +01:00
Geoffrey Frogeye 832ce41b8e
nix: Finish desktop environment 2023-11-05 16:43:01 +01:00
Geoffrey Frogeye c696da568d
nix: Add dunst 2023-11-05 15:52:09 +01:00
Geoffrey Frogeye 5f1915c4d0
nix: i3: Finish 2023-11-05 15:50:47 +01:00
Geoffrey Frogeye ab85586a5d
nix: i3: add sct mode 2023-11-04 11:59:36 +01:00
Geoffrey Frogeye c51aeacd03
nix: i3: add autorandr 2023-11-03 21:28:29 +01:00
Geoffrey Frogeye ae9893fc08
Merge remote-tracking branch 'origin/master' into nix 2023-11-03 20:51:53 +01:00
Geoffrey Frogeye 626f274d46
i3: Remove unused stuff 2023-11-03 20:47:43 +01:00
Geoffrey Frogeye 9686bee77e
nix: i3: few modes 2023-11-03 19:00:44 +01:00
Geoffrey Frogeye 4b8c4f29ce
nix: Start i3 config
And wow, we're starting to get crazy here!
2023-11-03 01:37:37 +01:00
Geoffrey Frogeye a33238c454
Fix ansible-lint --fix mistakes 2023-11-03 00:37:39 +01:00
Geoffrey Frogeye 624f046d7f
nix: Add alacritty 2023-11-02 22:55:51 +01:00
Geoffrey Frogeye 634a0b7784
Merge remote-tracking branch 'origin/master' into nix 2023-11-02 19:55:47 +01:00
Geoffrey Frogeye 9c3dcba2e5
automatrop: Run ansible-lint --fix 2023-11-02 19:51:54 +01:00
Geoffrey Frogeye d60f5aaa9d
automatrop: Fixes 2023-11-02 19:50:00 +01:00
Geoffrey Frogeye 942dff9d8c
nix: Vim: done 2023-11-02 17:06:46 +01:00
Geoffrey Frogeye 7f71eec03c
nix: Editor config
Should have started there I guess.
2023-11-02 17:04:53 +01:00
Geoffrey Frogeye 3d9dc4a4bf
nix: vim: plugins cleanup 2023-11-02 15:46:23 +01:00
Geoffrey Frogeye d811d025e6
nix: Finish adding vim plugins 2023-11-02 15:42:17 +01:00
Geoffrey Frogeye 9b450cc22f
nix: vim: Snippets and auto-completion 2023-11-01 18:03:14 +01:00
Geoffrey Frogeye b42cc85dec
nix: Add language server missing from Ansible 2023-11-01 09:46:49 +01:00
Geoffrey Frogeye 068a8c9965
nix: Add vim treesitter plugins 2023-11-01 09:17:01 +01:00
Geoffrey Frogeye 39294e4b90
nix: Vim LSP plugins 2023-10-31 23:48:01 +01:00
Geoffrey Frogeye e6f25d9fac
nix: Even more vim plugins! 2023-10-31 22:26:01 +01:00
Geoffrey Frogeye f16367105d
nix: More vim plugins
With broken things.
But debugging this with a half system, and not a very quick way of
rebuilding is not neat.
So let's postpone the fixes to after everything I could import easily is
imported, and maybe once I have a home-manager test env.
2023-10-29 19:37:02 +01:00
Geoffrey Frogeye 1139bd6524
nix: Various tests and cleaning 2023-10-29 17:20:35 +01:00
Geoffrey Frogeye a521dd4221
nix: Start on vim plugins 2023-10-29 12:15:56 +01:00
Geoffrey Frogeye e45d3df5cd
Merge remote-tracking branch 'origin/master' into nix 2023-10-29 01:05:47 +02:00
Geoffrey Frogeye 9243536c5f
nix: Fixes & add Stylix 2023-10-29 00:49:22 +02:00
Geoffrey Frogeye 0ffe92164d
nix: Fixes and gnupg 2023-10-28 23:03:27 +02:00
Geoffrey Frogeye 98efabc904
nix: Revise structure for home-manager 2023-10-28 22:09:36 +02:00
Geoffrey Frogeye ef9a1ceb26
nix: Remove already considered things in automatrop 2023-10-28 20:53:22 +02:00
Geoffrey Frogeye 5cb4e9f3f6
vdirsyncer: Remove boilerplate code 2023-10-28 20:50:34 +02:00
Geoffrey Frogeye 59ef201eab
wpa_supplicant: compatibility with nix branch
Well, partial.
Let's see when I need EAP again...
2023-10-28 20:49:14 +02:00
Geoffrey Frogeye 4a560cf5d4
nix: Finish system config 2023-10-28 20:45:56 +02:00
Geoffrey Frogeye e1788dbd24
nix: chrony 2023-10-28 19:33:40 +02:00
Geoffrey Frogeye c37a709b01
nix: Wi-Fi configuration
It's, uh, a bit ugly.
But let's try to make it work for now, improve later.
Apparently my wpa_supplicant config file was visible for everyone
already, so that's not a regression :D
2023-10-28 18:53:17 +02:00
Geoffrey Frogeye 81e5e70d27
nix: Misc removals
The options I use already seems to be default in NixOS.
I'm not sure about the backlight and the joystick,
keeping this around until I can confirm this is not needed.
2023-10-25 00:27:06 +02:00
Geoffrey Frogeye 6ad06cb349
nix: Some system options, like keyboard 2023-10-24 23:52:45 +02:00
Geoffrey Frogeye e0b9bbcfba
nix: Add last packages (dev ones) 2023-10-24 21:44:40 +02:00
Geoffrey Frogeye 73cbf01b63
nix: Extra packages 2023-10-23 22:05:56 +02:00
Geoffrey Frogeye 8ae219fb83
nix: Remove unecessary module handling
Who would have thought, someone thought about this before me :shockedpikachu:
2023-10-22 22:52:45 +02:00
Geoffrey Frogeye 3af998440f
nix: Add more packages 2023-10-22 22:34:04 +02:00
Geoffrey Frogeye 96a11d9975
nix: Modules system 2023-10-22 19:54:59 +02:00
Geoffrey Frogeye 0aed911875
nix: Common bases 2023-10-22 19:17:23 +02:00
Geoffrey Frogeye 5123cb93a9 Quick commit 2023-10-22T17:09:13+02:00 2023-10-22 17:09:13 +02:00
Geoffrey Frogeye a8133a9dba
Add nix
C'est le début de la fin...
2023-10-21 22:02:18 +02:00
Geoffrey Frogeye 314ca93dbf
Regular updates 2023-10-21 21:56:38 +02:00
Geoffrey Frogeye 7d011694d8
Yet another feature for smtpdummy 2023-08-12 22:02:59 +02:00
Geoffrey Frogeye 910e7fae63
More fixes on lip 2023-07-25 13:33:22 +02:00
Geoffrey “Frogeye” Preud'homme d1ae06e7ef Misc fixes 2023-07-25 13:23:56 +02:00
Geoffrey Frogeye dc63263d85
Add locate IP script 2023-07-23 13:28:39 +02:00
Geoffrey Frogeye 6a2afb3280
Various smtpdummy fixes 2023-07-23 13:23:28 +02:00
Geoffrey Frogeye eba894d9f4
rssVideos: Ensure duration is an int 2023-06-24 13:36:50 +02:00
Geoffrey Frogeye 6c249a452f
Add missing / update Python requirements 2023-06-24 13:36:27 +02:00
Geoffrey Frogeye 75d8c15def
smtpdummy: allow to do unorthodox things 2023-06-24 13:35:37 +02:00
Geoffrey Frogeye 5ab08a4f77
Change SQL language server 2023-04-14 14:43:38 +02:00
Geoffrey Frogeye aa0bdca44d
Update mpv config 2023-04-14 14:41:24 +02:00
Geoffrey Frogeye 1fd1a0df7b
videoQuota: Remove extra log stuff 2023-03-18 14:58:00 +01:00
Geoffrey Frogeye dc6399dc36
videoQuota: Add usage 2023-03-18 14:55:54 +01:00
Geoffrey Frogeye 59181b2772 Merge remote-tracking branch 'origin/master' 2022-12-24 15:37:37 +01:00
Geoffrey Frogeye 7f48a577a9 jour/nuit/crepuscule for pindakaas 2022-12-24 15:34:35 +01:00
Geoffrey Frogeye ae140f1966 Add support for WPA EAP 2022-12-24 15:34:17 +01:00
Geoffrey Frogeye 87f7a7a768 Don't install Zeal on exotic architectures 2022-12-24 15:33:11 +01:00
Geoffrey Frogeye 28e120146b Ansible language server 2022-12-16 16:14:19 +01:00
Geoffrey Frogeye 8e0d49307a Add perl dev stuff 😓 2022-12-08 10:58:06 +01:00
Geoffrey Frogeye 814f6cb71b i3 automatic screen workspace spread 2022-12-08 10:57:28 +01:00
Geoffrey Frogeye 383336a074 Default color for gho 2022-12-08 10:56:47 +01:00
Geoffrey Frogeye 154615ff02
telescope stuff 2022-11-20 14:01:21 +01:00
Geoffrey Frogeye dfee5340c4
Make use of i3 new "daemon" mode 2022-11-20 14:00:57 +01:00
Geoffrey Frogeye 2c1fbf3f4a
nvim: Modernize lspconfig... config 2022-11-04 20:21:49 +01:00
Geoffrey Frogeye f86c4d1882
Fix nvim plugins 2022-11-04 17:46:44 +01:00
Geoffrey Frogeye 0d86e537d1
Apparently it's Intel Graphics? 2022-11-04 14:19:38 +01:00
Geoffrey Frogeye eddb48e461
Disable power button
Oh I didn't commit this, probably why I still have the problem on the
Pinebook x)
2022-11-04 14:15:01 +01:00
Geoffrey Frogeye 9fac2c3701
cached_pass: Re-ask password if previously failed 2022-11-04 14:14:13 +01:00
Geoffrey Frogeye d5e9cc2273
camera_name_date: formatting pass 2022-11-04 14:13:55 +01:00
Geoffrey Frogeye 4030606ec8
Add screen brightness in jour/nuit/crepuscule
Wanted to do that in Ansible but those things have been living in the
script themselves forever and making this repo never fully commited,
got fed up of that and made a loosy "if $HOSTNAME" so I can move on wit
it.
Still need to do the same on the other devices though.
2022-11-04 14:12:16 +01:00
Geoffrey Frogeye 060e9db995
picture_name_date: Remove progress bar supportsuffixes 2022-11-04 14:09:01 +01:00
Geoffrey Frogeye ceaa2d1671
Make rssVideos use release date 2022-11-04 14:07:37 +01:00
Geoffrey Frogeye 95faa0c0ff yrasdasda 2022-06-09 18:42:02 +02:00
Geoffrey Frogeye 1a8d1db86c aayyy 2022-05-02 21:05:51 +02:00
Geoffrey Frogeye 369890e348
rssVideos: Fix the options issue 2022-04-10 09:58:06 +02:00
Geoffrey Frogeye a862f5c5e3 Merge remote-tracking branch 'origin/master' 2022-04-02 20:54:25 +02:00
Geoffrey Frogeye 79e5be6643
mpv osc script fix for updates
Really, why...
2022-04-02 20:53:34 +02:00
Geoffrey Frogeye 0bb54e2455
rssVideos: Smol fixes 2022-04-02 20:53:06 +02:00
Geoffrey Frogeye 6b8ba34610
Reduce loop conflict chances 2022-03-27 15:29:26 +02:00
Geoffrey Frogeye 224345c04d
rssVideos: Use yt_dlp config when possible 2022-03-27 15:18:41 +02:00
Geoffrey Frogeye df6ab139af
Smol fixes rssVideos 2022-03-27 13:02:55 +02:00
Geoffrey Frogeye d88520552b
rssVideos: Now thread-safe (kinda) 2022-03-23 18:54:05 +01:00
Geoffrey Frogeye 2e759f9fc6
Support SQL dev 2022-03-20 18:09:21 +01:00
Geoffrey Frogeye 4b9d696aee
smtpdummy: Support SMTPUTF8 2022-03-20 18:09:04 +01:00
Geoffrey Frogeye 984d62e7ff
noise 2022-02-20 20:51:41 +01:00
Geoffrey Frogeye e2cddff4c4 Adaptation to using PRIME
For reasons nvidia-xrun doesn't work anymore.
There was an update breaking a lot of things apparently,
but downgrading didn't help so 🤷‍♂️.
Didn't add all the X11 config because might be temporary though.
2022-01-09 19:36:33 +01:00
Geoffrey Frogeye 1ba2a75749 Merge remote-tracking branch 'origin/master' 2022-01-08 16:35:21 +01:00
Geoffrey Frogeye a4215e7810 full cached pass 2022-01-08 16:34:55 +01:00
Geoffrey Frogeye 34346743e3 heeee 2022-01-08 16:34:39 +01:00
Geoffrey Frogeye 75d7b9fc6d
rssVideos: Fix binge mode 2022-01-08 12:36:04 +01:00
Geoffrey Frogeye 8ae5c00f53 rssVideos: Replace guid by date and id 2021-12-29 14:43:13 +01:00
Geoffrey Frogeye c36534f696 rssVideos: Sync read state
Deleted but previously downloaded = read
2021-12-29 12:56:07 +01:00
Geoffrey Frogeye b0f14812d5 rssVideos: config
Moved to gdotfiles
2021-12-28 21:39:27 +01:00
Geoffrey Frogeye 21fd49f096 rssVideos: Clean up 2021-12-28 21:39:10 +01:00
Geoffrey Frogeye 95f568ebb9 Merge remote-tracking branch 'origin/master' 2021-12-28 19:03:58 +01:00
Geoffrey Frogeye 67571d645a
Fix stuff 2021-12-28 19:03:00 +01:00
Geoffrey Frogeye 404c7f3510 Merge remote-tracking branch 'origin/master' 2021-12-28 12:35:44 +01:00
Geoffrey Frogeye 406263b560
rssVideos: Use GReader API 2021-12-28 12:35:08 +01:00
Geoffrey Frogeye c0dfca5831 Merge remote-tracking branch 'origin/master' 2021-12-27 16:46:08 +01:00
Geoffrey Frogeye b1abd45053
smtpdummy: Multiple receivers 2021-12-27 16:45:49 +01:00
Geoffrey Frogeye 7292e8ea88
rssVideos: Make --research about downloading videos 2021-12-26 15:06:40 +01:00
Geoffrey Frogeye 84a2906be9 rofi: Fix theme definition for newer version
I was right the first time?
2021-12-21 17:25:47 +01:00
Geoffrey Frogeye 105bd9461c
rssVideos: Better sanitization of ytdl info 2021-12-20 18:57:13 +01:00
Geoffrey Frogeye 5b7926df8f
rssVideos: --total-duration
Controleld binging
2021-12-19 23:13:41 +01:00
Geoffrey Frogeye 00a9da6afc
rssVideos: Allow skipping feed fetching
For dev speed
2021-12-19 22:29:16 +01:00
Geoffrey Frogeye daff602a31
rssVideos: Work correctly with merged files 2021-12-19 15:10:16 +01:00
Geoffrey Frogeye 9684586eec
rssVideos: More sort orders and duration command 2021-12-19 11:45:41 +01:00
Geoffrey Frogeye 4890555668
rssVideos: Can toggle seen/unseen video state 2021-12-19 10:59:02 +01:00
Geoffrey Frogeye f4c81e346a
rssVideos: Add --seen flag 2021-12-18 22:23:48 +01:00
Geoffrey Frogeye 1948fc0af2
rssVideos: Cleverer cleaning 2021-12-18 12:44:43 +01:00
Geoffrey Frogeye 2dce725ee5
rssVideos: Abstract with download process as well 2021-12-18 11:56:28 +01:00
Geoffrey Frogeye 07af9360fa
rssVideos: Abstract a bit, add binge 2021-12-18 11:27:24 +01:00
Geoffrey Frogeye 5b195bd141
rssVideos: Add watch 2021-12-17 23:16:32 +01:00
Geoffrey Frogeye 7423a93203
rssVideos: Filter by duration 2021-12-17 22:42:35 +01:00
Geoffrey Frogeye 7aeecb1bff
videoQuota: 2021-12-17 22:41:47 +01:00
Geoffrey Frogeye f11338a04a
rssVideos: Support list filters 2021-12-17 22:13:46 +01:00
Geoffrey Frogeye 9100edac1e
videoQuota: Support filters 2021-12-17 22:13:27 +01:00
Geoffrey Frogeye 76df5d4d80
Upgrade rofi config 2021-12-15 21:59:45 +01:00
Geoffrey Frogeye 7f0e24a29d
rssVideos: Slightly better error handling
Makes it actually quit on Ctrl+C
2021-12-12 14:52:21 +01:00
Geoffrey Frogeye 6a6f5401e6
rssVideos: Show creator
Even if it's not always  present for all RSS feeds
2021-12-12 14:27:08 +01:00
Geoffrey Frogeye 9493edc1fd
rssVideos: Don't download already downloaded videos
Because the good extension is not the one expected :/
2021-12-12 13:40:24 +01:00
Geoffrey Frogeye 8e74f06164
Gentle arguments for scrot
For some reason -se didn't work anymore...
2021-12-10 23:14:25 +01:00
Geoffrey Frogeye 7d9fa984a6
rssVideos: Add list command
Then you know which video you should watch next :)
2021-12-10 23:13:29 +01:00
Geoffrey Frogeye 814b316584
Refactored rssVideos
- Has a cache for yt-dlp research (save time on reruns)
- Simplified logic for cleanup / continue downloading
- Using OOP / functional programming (?)
- Removed tracking logic (unused)
2021-12-10 22:59:39 +01:00
Geoffrey Frogeye a01b369bc8 I thought it was ignored 2021-12-03 08:14:01 +01:00
Geoffrey Frogeye 1b6cc39dad Make alacritty run zsh regardless of default shell 2021-12-02 16:56:27 +01:00
Geoffrey Frogeye 2250f520fe Make ghautomatrop work with Junest 2021-12-02 16:55:55 +01:00
Geoffrey Frogeye 3ff188c80b Merge remote-tracking branch 'office/master' 2021-12-02 10:58:11 +01:00
Geoffrey Frogeye c4a0a4daef Few changes junest 2021-12-02 10:57:09 +01:00
Geoffrey Frogeye 9c82a364ed Improvements to smtpdummy 2021-12-02 10:53:32 +01:00
Geoffrey Frogeye d065fa6207 Add office computer 2021-12-02 10:44:49 +01:00
Geoffrey Frogeye c8397580ec More dev here please 2021-11-11 21:54:17 +01:00
Geoffrey Frogeye 02441867aa Trust mah kayh 2021-11-11 21:53:40 +01:00
Geoffrey Frogeye 57f428f4ad Fix to accomodate Feline API change 2021-11-11 21:52:05 +01:00
Geoffrey Frogeye e4502a30c5 automatrop: Various fixes 2021-11-09 13:59:25 +01:00
Geoffrey Frogeye a801c86563 Misc changes
Fuck it
2021-10-17 14:39:05 +02:00
Geoffrey Frogeye 0b72ee071e automatrop: Accomodate forks 2021-10-17 14:39:05 +02:00
Geoffrey Frogeye ecdbca37ba automatrop: Add joystick config and fix other stuff 2021-10-17 14:39:05 +02:00
Geoffrey Frogeye e586eda6d9 automatrop: Add php debugging
Help me
2021-10-17 14:38:54 +02:00
Geoffrey Frogeye 6fc75d040e automatrop: Small changes in vim plugins 2021-10-17 14:36:00 +02:00
Geoffrey Frogeye 3cd3f0eb1f inputrc: Allow back-forward history search 2021-10-17 14:34:39 +02:00
Geoffrey Frogeye d689529aae smtpdummy: Add (incorrect) message ids 2021-10-17 14:33:53 +02:00
Geoffrey Frogeye 72e37e0921 smtpdummy: Better error handling 2021-10-17 14:33:33 +02:00
Geoffrey Frogeye fd4722f989 Poamcfnrree irvmmpneotes to ltrsete and adedd letetrs 2021-10-17 14:31:09 +02:00
Geoffrey Frogeye 97b6cec7d1 arch-kexec: Works for other kernels 2021-10-17 14:30:38 +02:00
Geoffrey Frogeye 8743082b21 rssVideos: Use yt-dlp and download oldest first 2021-10-17 14:29:25 +02:00
Geoffrey Frogeye cc79262336
Bars! Well, good enough. 2021-07-04 22:47:10 +02:00
Geoffrey Frogeye 51fa9fa0b0
Removed reload plugin since it's broken 2021-07-04 15:52:50 +02:00
Geoffrey Frogeye 9bfe9d25e4
Use RGB colors for nvim
So we can use some nice plugins.
2021-07-04 13:05:30 +02:00
Geoffrey Frogeye c2d3ccb779
Better RGB support 2021-07-04 11:48:00 +02:00
Geoffrey Frogeye 97d8d3d0b4
nvim 0.5 plugins 2021-07-04 09:54:33 +02:00
Geoffrey Frogeye 0170055efb
Prefer reduced motions
Would be cool to be able to disable gifs but hey
2021-07-04 09:53:24 +02:00
Geoffrey Frogeye 68298bf3f1
Nerd fonts 2021-07-04 09:52:16 +02:00
Geoffrey Frogeye 72e54fd8f7
Configure (n)vim with Ansible. Fully 2021-07-03 14:13:25 +02:00
Geoffrey Frogeye dd0e5a2189
Basis for vim configuration
Hyped for neovim 0.5!
2021-07-02 22:57:07 +02:00
Geoffrey Frogeye 256a08f1a7
GnuPG: install my key
Tried something fancy with ansible-galaxy but meh
2021-06-29 21:40:11 +02:00
Geoffrey Frogeye 48031d8df7
GnuPG configuration start 2021-06-29 20:54:25 +02:00
Geoffrey Frogeye 121f629bdb
Misc TODOs and fixes 2021-06-27 21:10:04 +02:00
Geoffrey Frogeye 647fd78ae2
VPN support 2021-06-26 14:13:05 +02:00
Geoffrey Frogeye d9acf4ff93
Extensions load rcfiles 2021-06-23 22:18:13 +02:00
Geoffrey Frogeye 8c289fea17
Extensions system!
Because you know. There's stuff that is sensitive, some that is not
really sensitive but I can't be bothered separating the credentials from
the config, and some stuff that I just don't like to be public.
2021-06-23 21:47:42 +02:00
Geoffrey Frogeye ff4c77407b
encrypt_home_stacked_fs 2021-06-21 23:19:46 +02:00
Geoffrey Frogeye 34f8692dc2
Some pinebook love 2021-06-21 22:01:48 +02:00
Geoffrey Frogeye 16bb2362ad
Move install-prefs to Ansible
I never ended up moving to this installation system, did I?
2021-06-20 10:08:29 +02:00
Geoffrey Frogeye fb5a885e3c
Add Termux to Ansible (untested) 2021-06-19 12:37:46 +02:00
Geoffrey Frogeye 4e8681fad0
Moved some desktop environment stuff to Ansible 2021-06-19 12:25:38 +02:00
Geoffrey Frogeye fda5b38ddb
color role → desktop_environment role
Is this commit without too many change so that Git catches on the
rename?
Yes, yes it is.
2021-06-18 21:55:41 +02:00
Geoffrey Frogeye fd580acf2c
It's a display **server**, you dummy 2021-06-18 21:53:42 +02:00
Geoffrey Frogeye c9657f69d4
Fix automatrop system/access roles 2021-06-17 21:21:34 +02:00
Geoffrey Frogeye 729de4013e
Manjaro, aargh 2021-06-16 23:17:13 +02:00
Geoffrey Frogeye 45160c4f37
Made i3 config a bit more flexible I guess
Also I swapped screens.
2021-06-16 23:00:03 +02:00
Geoffrey Frogeye a96b3e80e8
And wouldn't I remove scripts that are DEPRECATED
Hein?
2021-06-16 22:58:12 +02:00
Geoffrey Frogeye 1a8502002a
Replaced install-arch with something Ansible! 2021-06-16 22:57:18 +02:00
Geoffrey Frogeye a883596cf0
Removed key thingy in bar
It became useless with SSH/GPG and I swapped my screens so now I need
more space :/
2021-06-16 22:55:53 +02:00
Geoffrey Frogeye 779ba859eb
Script for running automatrop locally 2021-06-16 22:54:51 +02:00
Geoffrey Frogeye 942089d6c5
Upgraded alacritty config 2021-06-16 22:54:27 +02:00
Geoffrey Frogeye 2cbf555a9d
Reorganized automatrop hosts 2021-06-13 14:46:01 +02:00
Geoffrey Frogeye 4919fbea0e
Moved software list to automatrop
What an organization. Hoping to be flexible enough.
2021-06-13 14:45:20 +02:00
Geoffrey Frogeye cd9cbcaa28
Run black on all Python scripts! 2021-06-13 11:49:21 +02:00
Geoffrey Frogeye fb6cfce656
Where did I get this magic module from initially? 2021-06-13 11:42:37 +02:00
Geoffrey Frogeye 59aaf63d4a
New way to install packages!
Probably the fourth I ever created?
Will this one last? I don't know!

Doesn't have pip support for now,
but probably something requirements.txt based
will be a bit more proper
2021-06-12 17:15:21 +02:00
Geoffrey Frogeye ccc330d795
Backport 2021-06-11 23:40:15 +02:00
Geoffrey Frogeye 2289712638
Better usage of .xsession / .xinitrc I guess 2021-06-11 23:32:56 +02:00
Geoffrey Frogeye 06e24eac37 I tried using polybar again 2021-06-11 21:48:16 +02:00
Geoffrey Frogeye 6b13214c4d Script changes! 2021-06-11 21:48:16 +02:00
Geoffrey Frogeye 45e32adc61 Revamped xsession
Now supports Junest and should be better integrated with DM
2021-06-11 21:48:11 +02:00
Geoffrey Frogeye 46abb5f07a
Add plasma as a tryable DM
Should probably use something else than a hardcoded list though :|
2021-06-11 19:10:31 +02:00
Geoffrey Frogeye b006590c4d
mpv thumbnails script 2021-06-08 22:29:06 +02:00
Geoffrey Frogeye 60fb7953ba
Hoi 2021-03-21 19:49:01 +01:00
Geoffrey Frogeye ad8aebdc47 Merge remote-tracking branch 'origin/crash2' 2021-02-15 08:32:24 +01:00
Geoffrey Frogeye 1a4b2479f8
Move Vdirsyncer to .cache
One less thing in the home.
2021-01-23 22:32:45 +01:00
Geoffrey Frogeye 50315ed3aa
Add mpv config 2021-01-17 23:50:11 +01:00
Geoffrey Frogeye e1cec48278
Additional fixes jour/nuit script 2021-01-17 23:49:48 +01:00
Geoffrey Frogeye ad66e05701
Bye Taskwarrior 2021-01-17 23:49:28 +01:00
367 changed files with 8929 additions and 6371 deletions

3
.gitignore vendored
View file

@ -1 +1,2 @@
__pycache__
result
*.qcow2

6
.gitmodules vendored
View file

@ -1,6 +0,0 @@
[submodule "config/automatrop/roles/mnussbaum.base16-builder-ansible"]
path = config/automatrop/roles/mnussbaum.base16-builder-ansible
url = https://github.com/GeoffreyFrogeye/base16-builder-ansible.git
[submodule "config/automatrop/plugins/modules/aur"]
path = config/automatrop/plugins/modules/aur
url = https://github.com/kewlfft/ansible-aur.git

36
README.md Normal file
View file

@ -0,0 +1,36 @@
# Geoffrey Frogeye's dotfiles
This repo holds most of my systems configuration.
It is built on top of the Nix ecosystem
## Directory structure
- `os`, `hm`, `nod`: Re-usable configuration for [NixOS](https://nixos.org/), [home-manager](https://github.com/nix-community/home-manager/#home-manager-using-nix), [Nix-on-Droid](https://github.com/nix-community/nix-on-droid#nix-on-droid) respectively
- `<module-name>`: Module. Used to separate configuration in separate logical units.
- `default.nix`: Entrypoint for that module. Contains Nix configuration for the module.
- `<other file>`: Extra files: scripts to be installed, or ... whatever.
- `default.nix`: Entrypoint for that system. Import all the modules.
- `<other file>`: Files non-conforming to the structure above because I'm hurrying to have everything working before cleaning.
- `dk`: Re-usable configuration for [disko](https://github.com/nix-community/disko#disko---declarative-disk-partitioning)
- `<name>.nix`: Partitionning scheme configuration. Don't assume a specific context, it will be imported as Disko and NixOS config.
- `options.nix`: Definition of options exposed to all systems (even though if not relevant for all, it's for simplicity sake).
- `<profile-name>` (e.g. `curacao`): Configurations for my different devices
- `options.nix`: Common options configuration. Don't assume a specific context (for reasons unclear, I'm sure I can do something with that).
- `hardware.nix`: NixOS configuration for that specific device.
- `dk.nix`: Partitionning configuration. Import a top-level `dk` scheme, adding disks ids and other configuration required.
- `os.nix`, `hm.nix`, `nod.nix`: Entrypoint for the device/system configuration. Imports the above files (last two only for NixOS) and contains configuration specific to this combination.
- `<profile-name>_<media>` (e.g. `pindakaas_sd`): Alternate configuration for a device. Used to test a configuration without altering the "main" one.
- `options.nix`: Same as above. Can be a symlink.
- `hardware.nix`: Same as above. Should be a symlink.
- `dk.nix`: Same as above. Should not be a symlink.
- `os.nix`, `hm.nix`, `nod.nix`: Same as above. Should not be a symlink.
## Scripts
They all have a `-h` flag.
## Extensions
There's some things I'm not putting in this public repo: work-related things, and other sensitive things that probably shouldn't be public.
Those are stored in extensions, i.e. repos with a similar structure to this one, and ultimately importing things from it.
This is why you might see options not being seemingly used.

View file

@ -1,2 +0,0 @@
clear
reset

View file

@ -1,7 +0,0 @@
#!/usr/bin/env bash
source ~/.config/shell/shenv
source ~/.config/shell/commonenv
source ~/.config/shell/shrc
source ~/.config/shell/commonrc
source ~/.config/shell/bashrc

5
bashrc
View file

@ -1,5 +0,0 @@
#!/usr/bin/env bash
source ~/.config/shell/shrc
source ~/.config/shell/commonrc
source ~/.config/shell/bashrc

73
build_os.sh Executable file
View file

@ -0,0 +1,73 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash
#! nix-shell -p nix
set -euo pipefail
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
# Parse arguments
function help {
echo "Usage: $0 [-h|-e|-b] [flake-uri#]name"
echo "Build a NixOS configuration on the local machine."
echo
echo "Arguments:"
echo " profile: OS/disk profile to use"
echo
echo "Options:"
echo " -h: Display this help message."
echo " -v: Build a virtual machine."
echo " -b: Build a virtual machine with boot loader."
}
arg=build
while getopts "hvb" OPTION
do
case "$OPTION" in
h)
help
exit 0
;;
v)
arg=build-vm
;;
b)
arg=build-vm-with-bootloader
;;
?)
help
exit 2
;;
esac
done
shift "$((OPTIND -1))"
if [ "$#" -ne 1 ]
then
help
exit 2
fi
if [[ "$1" == *"#"* ]]
then
flake_uri="$(echo "$1" | cut -d'#' -f1)"
flake_uri=$( cd -- "$flake_uri" &> /dev/null && pwd )
name="$(echo "$1" | cut -d'#' -f2)"
else
flake_uri="$SCRIPT_DIR"
name="$1"
fi
if [ ! -f "$flake_uri/flake.nix" ]
then
echo "Flake not found."
fi
flake="${flake_uri}#${name}"
set -x
nix --extra-experimental-features "nix-command flakes" run "${SCRIPT_DIR}#nixos-rebuild" -- "$arg" --flake "$flake"
echo 
# TODO Use update-local-flakes?

View file

@ -0,0 +1,68 @@
{ pkgs, lib, config, ... }:
let
passwordFile = "/tmp/dotfiles_${config.networking.hostName}_password";
in
{
disko.devices = {
disk = {
"${config.networking.hostName}" = {
type = "disk";
content = {
type = "gpt";
partitions = {
ESP = {
# Needs enough to store multiple kernel generations
size = "512M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [
"defaults"
];
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "${config.networking.hostName}";
passwordFile = passwordFile;
settings = {
# Not having SSDs die fast is more important than crypto
# nerds that could potentially discover which filesystem I
# use from TRIM patterns
allowDiscards = true;
};
content = {
type = "btrfs";
extraArgs = [ "-f" ];
subvolumes = {
"/nixos" = {
mountpoint = "/";
mountOptions = [ "compress=zstd" "noatime" ];
};
"/home" = {
mountpoint = "/home";
mountOptions = [ "compress=zstd" "relatime" ];
};
"/nix" = {
mountpoint = "/nix";
mountOptions = [ "compress=zstd" "noatime" ];
};
# Maybe later
# "/swap" = {
# mountpoint = "/.swapvol";
# swap.swapfile.size = "20M";
# };
};
};
};
};
};
};
};
};
};
}

View file

@ -0,0 +1,22 @@
{ pkgs, lib, config, ... }:
let
generator = pkgs.writers.writePython3 "frogarized"
{
libraries = [ pkgs.python3Packages.colorspacious ];
}
(builtins.readFile ./frogarized.py);
frogarized_json = polarity: pkgs.runCommand "frogarized-${polarity}.json" { } "${generator} --polarity ${polarity} --output json > $out";
frogarized_nix = polarity: builtins.fromJSON (builtins.readFile (frogarized_json polarity));
in
{
config = {
stylix = {
base16Scheme = frogarized_nix config.stylix.polarity;
# On purpose also enable without a DE because stylix complains otherwise
image = builtins.fetchurl {
url = "https://get.wallhere.com/photo/sunlight-abstract-minimalism-green-simple-circle-light-leaf-wave-material-line-wing-computer-wallpaper-font-close-up-macro-photography-124350.png";
sha256 = "sha256:1zfq3f3v34i45mi72pkfqphm8kbhczsg260xjfl6dbydy91d7y93";
};
};
};
}

112
common/frogarized/frogarized.py Executable file
View file

@ -0,0 +1,112 @@
import argparse
import json
import colorspacious
import numpy as np
# Original values for the Solarized color scheme,
# created by Ethan Schoonover (https://ethanschoonover.com/solarized/)
SOLARIZED_LAB = np.array(
[
[15, -12, -12],
[20, -12, -12],
[45, -7, -7],
[50, -7, -7],
[60, -6, -3],
[65, -5, -2],
[92, -0, 10],
[97, 0, 10],
[50, 65, 45],
[50, 50, 55],
[60, 10, 65],
[60, -20, 65],
[60, -35, -5],
[55, -10, -45],
[50, 15, -45],
[50, 65, -5],
]
)
# I couldn't get a perfect translation of Solarized L*a*b values into sRGB,
# so here is upstream's translation for reference
SOLARIZED_RGB = np.array(
[
[0, 43, 54],
[7, 54, 66],
[88, 110, 117],
[101, 123, 131],
[131, 148, 150],
[147, 161, 161],
[238, 232, 213],
[253, 246, 227],
[220, 50, 47],
[203, 75, 22],
[181, 137, 0],
[133, 153, 0],
[42, 161, 152],
[38, 139, 210],
[108, 113, 196],
[211, 54, 130],
]
)
# Parse arguments
parser = argparse.ArgumentParser(
description="Generate a base16-theme based derived from Solarized"
)
parser.add_argument("--source", choices=["lab", "rgb"], default="lab")
parser.add_argument("--lightness_factor", type=float, default=1.0)
parser.add_argument("--chroma-factor", type=float, default=1.0)
parser.add_argument("--hue_shift", type=float, default=-75.0)
parser.add_argument("--polarity", choices=["dark", "light"], default="dark")
parser.add_argument(
"--output", choices=["json", "truecolor"], default="truecolor"
)
args = parser.parse_args()
# Convert source to JCh color space
if args.source == "lab":
solarized_jch = colorspacious.cspace_convert(
SOLARIZED_LAB, "CIELab", "JCh"
)
elif args.source == "rgb":
solarized_jch = colorspacious.cspace_convert(
SOLARIZED_RGB, "sRGB255", "JCh"
)
# Build frogarized theme
jch_factor = [args.lightness_factor, args.chroma_factor, 1]
jch_shift = [0, 0, args.hue_shift]
frogarzied_jch = np.vstack(
[solarized_jch[:8] * jch_factor + jch_shift, solarized_jch[8:]]
)
# Convert frogarized to RGB
frogarized_srgb = colorspacious.cspace_convert(
frogarzied_jch, "JCh", "sRGB255"
)
frogarized_rgb = np.uint8(np.rint(np.clip(frogarized_srgb, 0, 255)))
if args.polarity == "light":
frogarized_rgb = np.vstack([frogarized_rgb[7::-1], frogarized_rgb[8:]])
# Output
palette = dict()
for i in range(16):
rgb = frogarized_rgb[i]
r, g, b = rgb
hex = f"#{r:02x}{g:02x}{b:02x}"
palette[f"base{i:02X}"] = hex
if args.output == "truecolor":
print(f"\033[48;2;{r};{g};{b}m{hex}\033[0m") # ]]
# treesitter is silly and will consider brackets in strings
# as indentation, hence the comment above
if args.output == "json":
scheme = palette.copy()
scheme.update(
{
"slug": f"frogarized-{args.polarity}",
"scheme": f"Frogarized {args.polarity.title()}",
"author": "Geoffrey Frogeye (with work from Ethan Schoonover)",
}
)
print(json.dumps(scheme, indent=4))

View file

@ -1 +0,0 @@
theme

View file

@ -1,8 +0,0 @@
#!/usr/bin/env bash
mkdir -p $HOME/.local/share/fonts
echo $(for i in "" "%20Bold" "%20Oblique" "%20Bold%20Oblique"; do
cd $HOME/.local/share/fonts
wget -c http://raw.githubusercontent.com/powerline/fonts/master/DejaVuSansMono/DejaVu%20Sans%20Mono$i%20for%20Powerline.ttf
done)
wget -c "https://raw.githubusercontent.com/FortAwesome/Font-Awesome/a8386aae19e200ddb0f6845b5feeee5eb7013687/fonts/fontawesome-webfont.ttf" -O $HOME/.local/share/fonts/fontawesome-webfont.ttf

View file

@ -1,4 +0,0 @@
#include ".config/Xresources/xft"
#include ".config/Xresources/theme"
#include ".config/Xresources/xterm"
#include ".config/Xresources/urxvt"

View file

@ -1,61 +0,0 @@
! Scrollback position
! TODO Does not work
! do not scroll with output
URxvt*scrollTtyOutput: false
! scroll in relation to buffer (with mouse scroll or Shift+Page Up)
URxvt*scrollWithBuffer: true
! scroll back to the bottom on keypress
URxvt*scrollTtyKeypress: true
! Scrollback buffer in secondary screen
! TODO Does not work
URxvt.secondaryScreen: 1
URxvt.secondaryScroll: 0
! No scroll bar
URxvt*scrollBar: false
! Font declaration
URxvt.font: xft:DejaVu Sans Mono for Powerline:size=12:antialias=true,xft:Twemoji:size=12:antialias=true,xft:symbola:size=12:minspace=False
! Font spacing
URxvt.letterSpace: 0
! Disable Ctrl+Shift default bindings
URxvt.iso14755: false
URxvt.iso14755_52: false
! Copy/Paste CLIPBOARD selection with Ctrl+Shift+C/V
URxvt.keysym.C-S-C: eval:selection_to_clipboard
URxvt.keysym.C-S-V: eval:paste_clipboard
! Extensions
URxvt.perl-ext-common: resize-font,bell-command,readline,selection
! Changing font size on the fly (extension: resize-font, package: urxvt-resize-font-git)
URxvt.keysym.C-KP_Subtract: resize-font:smaller
URxvt.keysym.C-KP_Add: resize-font:bigger
! Fake transparency (without compositing manager)
urxvt*transparent: true
urxvt*shading: 30
! True transparency (with compositing manager)
!urxvt*depth: 32
!urxvt*background: rgba:2700/2800/2200/c800
! Bell command (extension: bell-command)
URxvt.bell-command: play -n synth sine C5 sine E4 remix 1-2 fade 0.1 0.2 0.1 &> /dev/null
! Open URL in browser (extension: matcher)
! URxvt.url-launcher: o
! URxvt.matcher.button: 1
! URxvt.matcher.rend.0: Uline Bold fg5

View file

@ -1,9 +0,0 @@
Xft.dpi: 96
Xft.antialias: true
Xft.hinting: true
Xft.rgba: rgb
Xft.autohint: false
Xft.hintstyle: hintslight
Xft.lcdfilter: lcddefault
Xcursor.theme: Menda-Cursor
Xcursor.size: 0

View file

@ -1,15 +0,0 @@
xterm*faceName : DejaVu Sans Mono for Powerline:size=12:antialias=true
xterm*dynamicColors: true
xterm*utf8: 2
xterm*eightBitInput: true
xterm*saveLines: 512
xterm*scrollKey: true
xterm*scrollTtyOutput: false
xterm*scrollBar: false
xterm*rightScrollBar: false
xterm*jumpScroll: true
xterm*multiScroll: true
xterm*toolBar: false
XTerm.vt100.translations: #override \n\
Ctrl Shift <Key>C: copy-selection(CLIPBOARD) \n\
Ctrl Shift <Key>V: insert-selection(CLIPBOARD)

View file

@ -1,2 +0,0 @@
theme.yml
alacritty.yml

View file

@ -1,599 +0,0 @@
# vi:syntax=yaml
# Configuration for Alacritty, the GPU enhanced terminal emulator.
# Any items in the `env` entry below will be added as
# environment variables. Some entries may override variables
# set by alacritty itself.
env:
# TERM variable
#
# This value is used to set the `$TERM` environment variable for
# each instance of Alacritty. If it is not present, alacritty will
# check the local terminfo database and use `alacritty` if it is
# available, otherwise `xterm-256color` is used.
TERM: xterm-256color
window:
# Window dimensions (changes require restart)
#
# Specified in number of columns/lines, not pixels.
# If both are `0`, this setting is ignored.
#dimensions:
# columns: 0
# lines: 0
# Window position (changes require restart)
#
# Specified in number of pixels.
# If the position is not set, the window manager will handle the placement.
#position:
# x: 0
# y: 0
# Window padding (changes require restart)
#
# Blank space added around the window in pixels. This padding is scaled
# by DPI and the specified value is always added at both opposing sides.
#padding:
# x: 0
# y: 0
# Spread additional padding evenly around the terminal content.
dynamic_padding: false
# Window decorations
#
# Values for `decorations`:
# - full: Borders and title bar
# - none: Neither borders nor title bar
#
# Values for `decorations` (macOS only):
# - transparent: Title bar, transparent background and title bar buttons
# - buttonless: Title bar, transparent background, but no title bar buttons
#decorations: full
# Startup Mode (changes require restart)
#
# Values for `startup_mode`:
# - Windowed
# - Maximized
# - Fullscreen
#
# Values for `startup_mode` (macOS only):
# - SimpleFullscreen
#startup_mode: Windowed
# Window title
#title: Alacritty
# Allow terminal applications to change Alacritty's window title.
dynamic_title: true
# Window class (Linux/BSD only):
#class:
# Application instance name
#instance: Alacritty
# General application class
#general: Alacritty
# GTK theme variant (Linux/BSD only)
#
# Override the variant of the GTK theme. Commonly supported values are `dark` and `light`.
# Set this to `None` to use the default theme variant.
#gtk_theme_variant: None
#scrolling:
# Maximum number of lines in the scrollback buffer.
# Specifying '0' will disable scrolling.
#history: 10000
# Scrolling distance multiplier.
#multiplier: 3
# Font configuration
font:
# Normal (roman) font face
#normal:
# Font family
#
# Default:
# - (macOS) Menlo
# - (Linux/BSD) monospace
# - (Windows) Consolas
#family: monospace
# The `style` can be specified to pick a specific face.
#style: Regular
# Bold font face
#bold:
# Font family
#
# If the bold family is not specified, it will fall back to the
# value specified for the normal font.
#family: monospace
# The `style` can be specified to pick a specific face.
#style: Bold
# Italic font face
#italic:
# Font family
#
# If the italic family is not specified, it will fall back to the
# value specified for the normal font.
#family: monospace
# The `style` can be specified to pick a specific face.
#style: Italic
# Bold italic font face
#bold_italic:
# Font family
#
# If the bold italic family is not specified, it will fall back to the
# value specified for the normal font.
#family: monospace
# The `style` can be specified to pick a specific face.
#style: Bold Italic
# Point size
size: 12.0
# Offset is the extra space around each character. `offset.y` can be thought of
# as modifying the line spacing, and `offset.x` as modifying the letter spacing.
#offset:
# x: 0
# y: 0
# Glyph offset determines the locations of the glyphs within their cells with
# the default being at the bottom. Increasing `x` moves the glyph to the right,
# increasing `y` moves the glyph upward.
#glyph_offset:
# x: 0
# y: 0
# Thin stroke font rendering (macOS only)
#
# Thin strokes are suitable for retina displays, but for non-retina screens
# it is recommended to set `use_thin_strokes` to `false`.
#use_thin_strokes: true
{{ base16_schemes['schemes'][base16_scheme]['alacritty']['colors']['base16-' + base16_scheme + '.yml'] }}
# Bell
#
# The bell is rung every time the BEL control character is received.
bell:
# Visual Bell Animation
#
# Animation effect for flashing the screen when the visual bell is rung.
#
# Values for `animation`:
# - Ease
# - EaseOut
# - EaseOutSine
# - EaseOutQuad
# - EaseOutCubic
# - EaseOutQuart
# - EaseOutQuint
# - EaseOutExpo
# - EaseOutCirc
# - Linear
animation: EaseOutExpo
# Duration of the visual bell flash. A `duration` of `0` will disable the
# visual bell animation.
duration: 100
# Visual bell animation color.
color: '#000000'
# Bell Command
#
# This program is executed whenever the bell is rung.
#
# When set to `command: None`, no command will be executed.
#
# Example:
# command:
# program: notify-send
# args: ["Hello, World!"]
#
command:
program: play
args: ['-n', 'synth', 'sine', 'C5', 'sine', 'E4', 'remix', '1-2', 'fade', '0.1', '0.2', '0.1']
# program: notify-send
# args: ["Hello, World!"]
# Background opacity
#
# Window opacity as a floating point number from `0.0` to `1.0`.
# The value `0.0` is completely transparent and `1.0` is opaque.
#background_opacity: 1.0
#selection:
#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
# When set to `true`, selected text will be copied to the primary clipboard.
#save_to_clipboard: false
cursor:
# Cursor style
#
# Values for `style`:
# - ▇ Block
# - _ Underline
# - | Beam
#style: Block
# Vi mode cursor style
#
# If the vi mode cursor style is `None` or not specified, it will fall back to
# the style of the active value of the normal cursor.
#
# See `cursor.style` for available options.
vi_mode_style: Underline
# If this is `true`, the cursor will be rendered as a hollow box when the
# window is not focused.
#unfocused_hollow: true
# Thickness of the cursor relative to the cell width as floating point number
# from `0.0` to `1.0`.
#thickness: 0.15
# Live config reload (changes require restart)
#live_config_reload: true
# Shell
#
# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`.
# Entries in `shell.args` are passed unmodified as arguments to the shell.
#
# Default:
# - (macOS) /bin/bash --login
# - (Linux/BSD) user login shell
# - (Windows) powershell
#shell:
# program: /bin/bash
# args:
# - --login
# Startup directory
#
# Directory the shell is started in. If this is unset, or `None`, the working
# directory of the parent process will be used.
#working_directory: None
# WinPTY backend (Windows only)
#
# Alacritty defaults to using the newer ConPTY backend if it is available,
# since it resolves a lot of bugs and is quite a bit faster. If it is not
# available, the WinPTY backend will be used instead.
#
# Setting this option to `true` makes Alacritty use the legacy WinPTY backend,
# even if the ConPTY backend is available.
#winpty_backend: false
# Send ESC (\x1b) before characters when alt is pressed.
#alt_send_esc: true
mouse:
# Click settings
#
# The `double_click` and `triple_click` settings control the time
# alacritty should wait for accepting multiple clicks as one double
# or triple click.
#double_click: { threshold: 300 }
#triple_click: { threshold: 300 }
# If this is `true`, the cursor is temporarily hidden when typing.
#hide_when_typing: false
#url:
# URL launcher
#
# This program is executed when clicking on a text which is recognized as a URL.
# The URL is always added to the command as the last parameter.
#
# When set to `launcher: None`, URL launching will be disabled completely.
#
# Default:
# - (macOS) open
# - (Linux/BSD) xdg-open
# - (Windows) explorer
#launcher:
# program: xdg-open
# args: []
# URL modifiers
#
# These are the modifiers that need to be held down for opening URLs when clicking
# on them. The available modifiers are documented in the key binding section.
modifiers: Control
# Mouse bindings
#
# Mouse bindings are specified as a list of objects, much like the key
# bindings further below.
#
# To trigger mouse bindings when an application running within Alacritty captures the mouse, the
# `Shift` modifier is automatically added as a requirement.
#
# Each mouse binding will specify a:
#
# - `mouse`:
#
# - Middle
# - Left
# - Right
# - Numeric identifier such as `5`
#
# - `action` (see key bindings)
#
# And optionally:
#
# - `mods` (see key bindings)
#mouse_bindings:
# - { mouse: Middle, action: PasteSelection }
# Key bindings
#
# Key bindings are specified as a list of objects. For example, this is the
# default paste binding:
#
# `- { key: V, mods: Control|Shift, action: Paste }`
#
# Each key binding will specify a:
#
# - `key`: Identifier of the key pressed
#
# - A-Z
# - F1-F24
# - Key0-Key9
#
# A full list with available key codes can be found here:
# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants
#
# Instead of using the name of the keys, the `key` field also supports using
# the scancode of the desired key. Scancodes have to be specified as a
# decimal number. This command will allow you to display the hex scancodes
# for certain keys:
#
# `showkey --scancodes`.
#
# Then exactly one of:
#
# - `chars`: Send a byte sequence to the running application
#
# The `chars` field writes the specified string to the terminal. This makes
# it possible to pass escape sequences. To find escape codes for bindings
# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
# of tmux. Note that applications use terminfo to map escape sequences back
# to keys. It is therefore required to update the terminfo when changing an
# escape sequence.
#
# - `action`: Execute a predefined action
#
# - ToggleViMode
# - SearchForward
# - SearchBackward
# - Copy
# - Paste
# - PasteSelection
# - IncreaseFontSize
# - DecreaseFontSize
# - ResetFontSize
# - ScrollPageUp
# - ScrollPageDown
# - ScrollHalfPageUp
# - ScrollHalfPageDown
# - ScrollLineUp
# - ScrollLineDown
# - ScrollToTop
# - ScrollToBottom
# - ClearHistory
# - Hide
# - Minimize
# - Quit
# - ToggleFullscreen
# - SpawnNewInstance
# - ClearLogNotice
# - ClearSelection
# - ReceiveChar
# - None
#
# (`mode: Vi` only):
# - Open
# - Up
# - Down
# - Left
# - Right
# - First
# - Last
# - FirstOccupied
# - High
# - Middle
# - Low
# - SemanticLeft
# - SemanticRight
# - SemanticLeftEnd
# - SemanticRightEnd
# - WordRight
# - WordLeft
# - WordRightEnd
# - WordLeftEnd
# - Bracket
# - ToggleNormalSelection
# - ToggleLineSelection
# - ToggleBlockSelection
# - ToggleSemanticSelection
# - SearchNext
# - SearchPrevious
# - SearchStart
# - SearchEnd
#
# (macOS only):
# - ToggleSimpleFullscreen: Enters fullscreen without occupying another space
#
# (Linux/BSD only):
# - CopySelection: Copies into selection buffer
#
# - `command`: Fork and execute a specified command plus arguments
#
# The `command` field must be a map containing a `program` string and an
# `args` array of command line parameter strings. For example:
# `{ program: "alacritty", args: ["-e", "vttest"] }`
#
# And optionally:
#
# - `mods`: Key modifiers to filter binding actions
#
# - Command
# - Control
# - Option
# - Super
# - Shift
# - Alt
#
# Multiple `mods` can be combined using `|` like this:
# `mods: Control|Shift`.
# Whitespace and capitalization are relevant and must match the example.
#
# - `mode`: Indicate a binding for only specific terminal reported modes
#
# This is mainly used to send applications the correct escape sequences
# when in different modes.
#
# - AppCursor
# - AppKeypad
# - Alt
#
# A `~` operator can be used before a mode to apply the binding whenever
# the mode is *not* active, e.g. `~Alt`.
#
# Bindings are always filled by default, but will be replaced when a new
# binding with the same triggers is defined. To unset a default binding, it can
# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
# a no-op if you do not wish to receive input characters for that binding.
#
# If the same trigger is assigned to multiple actions, all of them are executed
# in the order they were defined in.
key_bindings:
#- { key: Paste, action: Paste }
#- { key: Copy, action: Copy }
#- { key: L, mods: Control, action: ClearLogNotice }
#- { key: L, mods: Control, mode: ~Vi, chars: "\x0c" }
#- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, }
#- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown }
#- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, }
#- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom }
# Vi Mode
#- { key: Space, mods: Shift|Control, mode: Vi, action: ScrollToBottom }
- { key: Space, mods: Alt|Control, action: ToggleViMode }
#- { key: Escape, mode: Vi, action: ClearSelection }
#- { key: I, mode: Vi, action: ScrollToBottom }
#- { key: I, mode: Vi, action: ToggleViMode }
#- { key: Y, mods: Control, mode: Vi, action: ScrollLineUp }
#- { key: E, mods: Control, mode: Vi, action: ScrollLineDown }
#- { key: G, mode: Vi, action: ScrollToTop }
#- { key: G, mods: Shift, mode: Vi, action: ScrollToBottom }
#- { key: B, mods: Control, mode: Vi, action: ScrollPageUp }
#- { key: F, mods: Control, mode: Vi, action: ScrollPageDown }
#- { key: U, mods: Control, mode: Vi, action: ScrollHalfPageUp }
#- { key: D, mods: Control, mode: Vi, action: ScrollHalfPageDown }
- { key: K, mods: Control, mode: Vi, action: ScrollHalfPageUp }
- { key: J, mods: Control, mode: Vi, action: ScrollHalfPageDown }
#- { key: Y, mode: Vi, action: Copy }
#- { key: Y, mode: Vi, action: ClearSelection }
#- { key: Copy, mode: Vi, action: ClearSelection }
#- { key: V, mode: Vi, action: ToggleNormalSelection }
#- { key: V, mods: Shift, mode: Vi, action: ToggleLineSelection }
#- { key: V, mods: Control, mode: Vi, action: ToggleBlockSelection }
#- { key: V, mods: Alt, mode: Vi, action: ToggleSemanticSelection }
#- { key: Return, mode: Vi, action: Open }
#- { key: K, mode: Vi, action: Up }
#- { key: J, mode: Vi, action: Down }
#- { key: H, mode: Vi, action: Left }
#- { key: L, mode: Vi, action: Right }
#- { key: Up, mode: Vi, action: Up }
#- { key: Down, mode: Vi, action: Down }
#- { key: Left, mode: Vi, action: Left }
#- { key: Right, mode: Vi, action: Right }
#- { key: Key0, mode: Vi, action: First }
#- { key: Key4, mods: Shift, mode: Vi, action: Last }
#- { key: Key6, mods: Shift, mode: Vi, action: FirstOccupied }
#- { key: H, mods: Shift, mode: Vi, action: High }
#- { key: M, mods: Shift, mode: Vi, action: Middle }
#- { key: L, mods: Shift, mode: Vi, action: Low }
#- { key: B, mode: Vi, action: SemanticLeft }
#- { key: W, mode: Vi, action: SemanticRight }
#- { key: E, mode: Vi, action: SemanticRightEnd }
#- { key: B, mods: Shift, mode: Vi, action: WordLeft }
#- { key: W, mods: Shift, mode: Vi, action: WordRight }
#- { key: E, mods: Shift, mode: Vi, action: WordRightEnd }
#- { key: Key5, mods: Shift, mode: Vi, action: Bracket }
#- { key: Slash, mode: Vi, action: SearchForward }
#- { key: Slash, mods: Shift, mode: Vi, action: SearchBackward }
#- { key: N, mode: Vi, action: SearchNext }
#- { key: N, mods: Shift, mode: Vi, action: SearchPrevious }
# (Windows, Linux, and BSD only)
- { key: V, mods: Control|Alt, action: Paste }
- { key: C, mods: Control|Alt, action: Copy }
- { key: F, mods: Control|Alt, action: SearchForward }
- { key: B, mods: Control|Alt, action: SearchBackward }
- { key: C, mods: Control|Alt, mode: Vi, action: ClearSelection }
#- { key: Insert, mods: Shift, action: PasteSelection }
#- { key: Key0, mods: Control, action: ResetFontSize }
#- { key: Key0, mods: Control, action: ResetFontSize }
#- { key: Equals, mods: Control, action: IncreaseFontSize }
#- { key: Add, mods: Control, action: IncreaseFontSize }
#- { key: Subtract, mods: Control, action: DecreaseFontSize }
#- { key: Minus, mods: Control, action: DecreaseFontSize }
# (Windows only)
#- { key: Return, mods: Alt, action: ToggleFullscreen }
# (macOS only)
#- { key: K, mods: Command, mode: ~Vi, chars: "\x0c" }
#- { key: Key0, mods: Command, action: ResetFontSize }
#- { key: Equals, mods: Command, action: IncreaseFontSize }
#- { key: Add, mods: Command, action: IncreaseFontSize }
#- { key: Minus, mods: Command, action: DecreaseFontSize }
#- { key: K, mods: Command, action: ClearHistory }
#- { key: V, mods: Command, action: Paste }
#- { key: C, mods: Command, action: Copy }
#- { key: C, mods: Command, mode: Vi, action: ClearSelection }
#- { key: H, mods: Command, action: Hide }
#- { key: M, mods: Command, action: Minimize }
#- { key: Q, mods: Command, action: Quit }
#- { key: W, mods: Command, action: Quit }
#- { key: N, mods: Command, action: SpawnNewInstance }
#- { key: F, mods: Command|Control, action: ToggleFullscreen }
#- { key: F, mods: Command, action: SearchForward }
#- { key: B, mods: Command, action: SearchBackward }
#debug:
# Display the time it takes to redraw each frame.
#render_timer: false
# Keep the log file after quitting Alacritty.
#persistent_logging: false
# Log level
#
# Values for `log_level`:
# - None
# - Error
# - Warn
# - Info
# - Debug
# - Trace
#log_level: Warn
# Print all received window events.
#print_events: false

View file

@ -1,3 +0,0 @@
curacao.geoffrey.frogeye.fr
triffle.geoffrey.frogeye.fr
bufobufo.frogeye.nl

View file

@ -1,10 +0,0 @@
- name: Default
hosts: all
roles:
- role: software
tags: software
- role: mnussbaum.base16-builder-ansible # Required for color
tags: color
- role: color
tags: color

@ -1 +0,0 @@
Subproject commit 592c6d9841674211f904cf9ea2a951fca3fd5a80

View file

@ -1,14 +0,0 @@
- name: xrdb-reload
command: "xrdb -I{{ ansible_env.HOME }} {{ ansible_env.HOME }}/.config/Xresources/main"
- name: i3-reload
command: i3-msg reload
- name: shell-reload
command: "{{ ansible_env.HOME }}/.local/bin/colorSchemeApply"
- name: fzf-reload
shell: "source {{ ansible_env.HOME }}/.local/bin/colorSchemeApplyFzf"
- name: qutebrowser-reload
shell: "! pgrep qutebrowser || qutebrowser :config-source"

View file

@ -1,117 +0,0 @@
- name: Ensure directories for theme are present
file:
state: directory
path: "{{ ansible_env.HOME }}/{{ item }}"
with_items:
- ".config/Xresources"
- ".config/rofi"
- ".local/bin"
- ".config/qutebrowser"
- ".config/tridactyl/themes"
# Build a single color scheme and template and assign it to a variable
- base16_builder:
scheme: "{{ base16_scheme }}"
template: # This requires https://github.com/mnussbaum/base16-builder-ansible/pull/6
- i3
- xresources
- rofi
- termux
- alacritty
- shell
- fzf
- vim
- qutebrowser
- tridactyl
- dunst
register: base16_schemes
- name: Configure Alacritty
template:
src: "{{ ansible_env.HOME }}/.config/alacritty/alacritty.yml.j2"
dest: "{{ ansible_env.HOME }}/.config/alacritty/alacritty.yml"
mode: "u+rw,g=r,o=r"
# Alacritty has live config reload, so no command to execute
# However, it doesn't work with yaml includes, hence the template
- name: Set base16 theme for Xresources
copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['xresources']['xresources']['base16-' + base16_scheme + '-256.Xresources'] }}"
dest: "{{ ansible_env.HOME }}/.config/Xresources/theme"
mode: "u+rw,g=r,o=r"
notify:
- xrdb-reload
- name: Download base16 theme for qutebrowser
copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['qutebrowser']['themes/minimal']['base16-' + base16_scheme + '.config.py'] }}"
dest: "{{ ansible_env.HOME }}/.config/qutebrowser/theme.py"
mode: "u+rw,g=r,o=r"
notify:
- qutebrowser-reload
- name: Download base16 theme for Tridactyl
copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['tridactyl']['base16-' + base16_scheme + '.config.py'] }}"
# url: "https://raw.githubusercontent.com/bezmi/base16-tridactyl/master/base16-{{ base16_scheme }}.css"
dest: "{{ ansible_env.HOME }}/.config/tridactyl/themes/theme.css"
mode: "u+rw,g=r,o=r"
when: False # Not currently used
- name: Configure i3
template:
src: "{{ ansible_env.HOME }}/.config/i3/config.j2"
dest: "{{ ansible_env.HOME }}/.config/i3/config"
mode: "u+rw,g=r,o=r"
notify:
- i3-reload
- name: Set base16 theme for rofi
copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['rofi']['themes']['base16-' + base16_scheme + '.' + item] }}"
dest: "{{ ansible_env.HOME }}/.config/rofi/theme.{{ item }}"
mode: "u+rw,g=r,o=r"
with_items:
- rasi
- config
- name: Configure Dunst
template:
src: "{{ ansible_env.HOME }}/.config/dunst/dunstrc.j2"
dest: "{{ ansible_env.HOME }}/.config/dunst/dunstrc"
mode: "u+rw,g=r,o=r"
- name: Download base16 theme for fzf
copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['fzf']['bash']['base16-' + base16_scheme + '.config'] }}"
dest: "{{ ansible_env.HOME }}/.local/bin/colorSchemeApplyFzf"
mode: "u+rw,g=r,o=r"
notify:
- fzf-reload
- name: Download base16 theme for Termux
copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['termux']['colors']['base16-' + base16_scheme + '.properties'] }}"
dest: "{{ ansible_env.HOME }}/.termux/colors.properties"
mode: "u+rw,g=r,o=r"
# TODO Only on Termux
- name: Download base16 theme for shell
copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['shell']['script']['base16-' + base16_scheme + '.sh'] }}"
dest: "{{ ansible_env.HOME }}/.local/bin/colorSchemeApply"
mode: "u+rwx,g=rx,o=rx"
notify:
- shell-reload
when: False # Not currently used
- name: Set used base16 theme for vim
copy:
path: "{{ ansible_env.HOME }}/.config/vim/colorscheme.vim"
mode: "u+rw,g=r,o=r"
content: "colorscheme base16-{{ base16_scheme }}"
when: False # Not currently used
# TODO bar (might change bar in the future, so...)
# TODO highlight (there IS a template but the colors look different from vim and mostly the same from when there's no config)
# TODO https://github.com/makuto/auto-base16-theme ? :P

View file

@ -1 +0,0 @@
base16_scheme: solarized-dark

@ -1 +0,0 @@
Subproject commit a977bb298fb9e1c057e0b2587dbd4d047e13f5bd

View file

@ -1,55 +0,0 @@
- name: Install base shell packages (Pacman)
pacman:
name:
- base
- coreutils
- bash
- grep
- sed
- tar
- openssl # Used for machines script
when: arch
- name: Install base shell packages (Apt)
apt:
name:
- coreutils
- bash
- grep
- sed
- tar
- openssl
when: apt
- name: Install extended shell packages (Pacman)
pacman:
name:
- moreutils
- tmux
- bash-completion
- fzf
- highlight
- powerline-go-bin
when: arch
- name: Install extended shell packages (Debian)
pacman:
name:
- moreutils
- tmux
- bash-completion
- fzf
- highlight
- powerline-go
when: debian
- name: Install extended shell packages (Termux)
pacman:
name:
- moreutils
- tmux
- bash-completion
- fzf
# - highlight
# - powerline-go
when: termux

View file

@ -1,96 +0,0 @@
- name: Set variables
set_fact:
arch: "{{ ansible_distribution == 'Archlinux' }}"
termux: "{{ ansible_distribution == 'OtherLinux' and ansible_python.executable == '/data/data/com.termux/files/usr/bin/python' }}"
debian: "{{ ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu' }}"
- name: Set secondary variables
set_fact:
pacman: "{{ arch }}"
apt: "{{ termux or debian }}"
sudo: "{{ not termux }}"
# TODO Install python if not done
- name: Install python-apt dependency for Termux
block:
# TODO Check if the correct version
- name: Check for DistUtilsExtra (Termux)
command: python -c 'import DistUtilsExtra'
changed_when: False
rescue:
- name: Create temporarty folder for DistUtilsExtra (Termux)
tempfile:
state: directory
suffix: python-distutils-extra
# path: /data/data/com.termux/files/usr/tmp/
register: pde_tempdir
- name: Download DistUtilsExtra (Termux)
get_url:
url: "https://launchpad.net/python-distutils-extra/trunk/{{ version }}/+download/python-distutils-extra-{{ version }}.tar.gz"
dest: "{{ pde_tempdir.path }}/python-distutils-extra.tar.gz"
- name: Extract DistUtilsExtra (Termux)
unarchive:
src: "{{ pde_tempdir.path }}/python-distutils-extra.tar.gz"
remote_src: yes
dest: "{{ pde_tempdir.path }}"
- name: Install DistUtilsExtra (Termux)
command:
cmd: python3 setup.py install
chdir: "{{ pde_tempdir.path }}/python-distutils-extra-{{ version }}"
when: termux
vars:
version: 2.39
- name: Install python-apt (Termux)
pip:
name: python-apt
when: termux
# Collecting python-apt
# Using cached python-apt-0.7.8.tar.bz2 (49 kB)
# ERROR: Command errored out with exit status 1:
# command: /data/data/com.termux/files/usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/data/data/com.termux/files/usr/tmp/pip-install-dsga__i7/python-apt/setup.py'"'"'; __file__='"'"'/data/data/com.termux/files/usr/tmp/pip-install-dsga__i7/python-apt/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /data/data/com.termux/files/usr/tmp/pip-pip-egg-info-ptpprl0m
# cwd: /data/data/com.termux/files/usr/tmp/pip-install-dsga__i7/python-apt/
# Complete output (5 lines):
# Traceback (most recent call last):
# File "<string>", line 1, in <module>
# File "/data/data/com.termux/files/usr/tmp/pip-install-dsga__i7/python-apt/setup.py", line 11, in <module>
# string.split(parse_makefile("python/makefile")["APT_PKG_SRC"]))
# AttributeError: module 'string' has no attribute 'split'
# ----------------------------------------
# ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
# WARNING: You are using pip version 20.2.3; however, version 20.3.3 is available.
# You should consider upgrading via the '/data/data/com.termux/files/usr/bin/python3 -m pip install --upgrade pip' command.
# Install alternative package managers
- name: Install AUR package manager
aur:
name: yay-bin
when: arch
- name: Install python pip (Pacman)
pacman:
name: python-pip
when: arch
become: "{{ sudo }}"
become_user: root
- name: Install python pip (Debian)
apt:
name: python3-pip
when: debian
become: "{{ sudo }}"
become_user: root
# Termux: pip is included with Python
- name: Install base packages
include_tasks:
file: base.yml
apply:
become: "{{ sudo }}"
become_user: root

View file

@ -1 +0,0 @@
ccache_dir = $HOME/.cache/ccache

View file

@ -1,2 +0,0 @@
dunstrc
theme

View file

@ -1,65 +0,0 @@
[global]
alignment = left
always_run_script = true
browser = /usr/bin/qutebrowser
class = Dunst
dmenu = /usr/bin/dmenu -p dunst:
ellipsize = middle
follow = none
font = DejaVu Sans 10
force_xinerama = false
format = "<b>%s %p</b>\n%b"
frame_color = "#A6E22E"
frame_width = 3
geometry = "500x5-30+20"
hide_duplicate_count = false
history_length = 20
horizontal_padding = 8
icon_path = /usr/share/icons/gnome/256x256/actions/:/usr/share/icons/gnome/256x256/status/:/usr/share/icons/gnome/256x256/devices/
icon_position = left
idle_threshold = 120
ignore_newline = no
indicate_hidden = yes
line_height = 0
markup = full
max_icon_size = 48
monitor = 0
notification_height = 0
padding = 8
separator_color = frame
separator_height = 2
show_age_threshold = 60
show_indicators = yes
shrink = no
sort = yes
stack_duplicates = true
startup_notification = false
sticky_history = yes
title = Dunst
transparency = 0
verbosity = mesg
word_wrap = yes
[experimental]
per_monitor_dpi = false
[shortcuts]
close_all = ctrl+mod4+n
close = mod4+n
context = mod1+mod4+n
history = shift+mod4+n
[urgency_low]
background = "#272822"
foreground = "#F8F8F2"
frame_color = "#A6E22E"
timeout = 10
[urgency_normal]
background = "#272822"
foreground = "#F8F8F2"
frame_color = "#F4BF75"
timeout = 10
[urgency_critical]
background = "#272822"
foreground = "#F8F8F2"
frame_color = "#F92672"
timeout = 0
{{ base16_schemes['schemes'][base16_scheme]['dunst']['themes']['base16-' + base16_scheme + '.dunstrc'] }}
# TODO Not used. Not sure how it's supposed to be used :D

View file

@ -1,3 +0,0 @@
[flake8]
# Compatibility with Black
max-line-length = 88

View file

@ -1,3 +0,0 @@
define hook-quit
set confirm off
end

View file

@ -1 +0,0 @@
gitk

View file

@ -1,16 +0,0 @@
[user]
name = Geoffrey “Frogeye” Preud'homme
email = geoffrey@frogeye.fr
signingkey = 0x8312C8CAC1BAC289
[core]
editor = nvim
excludesfile = ~/.config/git/gitignore
[push]
default = matching
[alias]
git = !exec git
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true

View file

@ -1,5 +0,0 @@
*.swp
*.swo
*.ycm_extra_conf.py
tags
.mypy_cache

View file

@ -1 +0,0 @@
bookmarks

View file

@ -1,16 +0,0 @@
[Settings]
gtk-theme-name=Greenbird
gtk-icon-theme-name=Faenza-Green
gtk-font-name=Sans 10
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=1
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb
gtk-cursor-theme-name=Menda-Cursor

View file

@ -1,2 +0,0 @@
config
theme

View file

@ -1,7 +0,0 @@
#!/usr/bin/env bash
while true
do
ashuffle
sleep 1
done

View file

@ -1,10 +0,0 @@
#!/usr/bin/env bash
shopt -s nullglob globstar
profile=$(echo -e "$(autorandr 2>&1 | cut -d' ' -f1)" | rofi -dmenu -p "Default profile" "$@")
[[ -n $profile ]] || exit
autorandr --default "$profile"

View file

@ -1,10 +0,0 @@
#!/usr/bin/env bash
shopt -s nullglob globstar
profile=$(echo -e "common\nclone-largest\nhorizontal\nvertical\n$(autorandr 2>&1 | cut -d' ' -f1)" | rofi -dmenu -p "Load profile" "$@")
[[ -n $profile ]] || exit
autorandr --load "$profile"

View file

@ -1,10 +0,0 @@
#!/usr/bin/env bash
shopt -s nullglob globstar
profile=$(echo -e "$(autorandr 2>&1 | cut -d' ' -f1)" | rofi -dmenu -p "Remove profile" "$@")
[[ -n $profile ]] || exit
autorandr --remove "$profile"

View file

@ -1,10 +0,0 @@
#!/usr/bin/env bash
shopt -s nullglob globstar
profile=$(echo -e "$(autorandr 2>&1 | cut -d' ' -f1)" | rofi -dmenu -p "Save profile" "$@")
[[ -n $profile ]] || exit
autorandr --save "$profile"

View file

@ -1,16 +0,0 @@
#!/bin/bash
# TODO Make a good service out of this
cd /opt/activitywatch # Put your ActivityWatch install folder here
killall aw-server
killall aw-watcher-afk
killall aw-watcher-window
./aw-server/aw-server &
./aw-watcher-afk/aw-watcher-afk &
./aw-watcher-window/aw-watcher-window & # you can add --exclude-title here to exclude window title tracking for this session only
notify-send "ActivityWatch started" # Optional, sends a notification when ActivityWatch is started

View file

@ -1,406 +0,0 @@
# vi:syntax=conf
# i3 config file (v4)
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
# Set mod key (Mod1=<Alt>, Mod4=<Super>)
set $mod Mod4
# set default desktop layout (default is tiling)
# workspace_layout tabbed <stacking|tabbed>
# Configure border style <normal|1pixel|pixel xx|none|pixel>
new_window pixel 2
new_float normal
# Hide borders
hide_edge_borders both
# change borders
#bindsym $mod+u border none
#bindsym $mod+y border pixel 2
#bindsym $mod+n border normal
# Compatibility layer for people coming from other backgrounds
bindsym Mod1+Tab exec --no-startup-id rofi -modi window -show window
bindsym Mod1+F2 exec --no-startup-id rofi -modi drun -show drun
bindsym Mod1+F4 kill
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:DejaVu Sans 8
font pango:Sans 8
# Use Mouse+$mod to drag floating windows
floating_modifier $mod
# kill focused window
bindsym $mod+z kill
bindsym button2 kill
bindsym $mod+c exec --no-startup-id rofi-pass --last-used
bindsym $mod+i exec --no-startup-id rofimoji
bindsym $mod+plus exec --no-startup-id rofi -modi ssh -show ssh
bindsym $mod+ù exec --no-startup-id rofi -modi ssh -show ssh -ssh-command '{terminal} -e {ssh-client} {host} -t "sudo -s -E"'
bindsym $mod+Tab exec --no-startup-id rofi -modi window -show window
# start program launcher
bindsym $mod+d exec --no-startup-id rofi -modi run -show run
bindsym $mod+Shift+d exec --no-startup-id rofi -modi drun -show drun
# Start Applications
# bindsym $mod+Return exec urxvtc
bindsym $mod+Return exec alacritty
bindsym $mod+Shift+Return exec urxvt
bindsym $mod+p exec thunar
bindsym $mod+m exec qutebrowser --override-restore --backend=webengine
# bindsym $mod+m exec firefox
# Volume control
bindsym XF86AudioRaiseVolume exec pactl set-sink-mute @DEFAULT_SINK@ false; exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec pactl set-sink-mute @DEFAULT_SINK@ false; exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ true
bindsym $mod+F7 exec pactl suspend-sink @DEFAULT_SINK@ 1; exec pactl suspend-sink @DEFAULT_SINK@ 0
# Re-synchronize bluetooth headset
bindsym XF86AudioPrev exec mpc prev
bindsym XF86AudioPlay exec mpc toggle
bindsym XF86AudioNext exec mpc next
bindsym $mod+F10 exec ~/.config/scripts/showKeyboardLayout
bindsym $mod+F11 exec xterm -e 'pacmixer'
bindsym $mod+F12 exec xterm -e 'pacmixer'
#Brightness control
bindsym XF86MonBrightnessDown exec xbacklight -dec 5 -time 0
bindsym XF86MonBrightnessUp exec xbacklight -inc 5 -time 0
# Screenshots
bindsym Print exec scrot -ue 'mv $f ~/Screenshots/ && optipng ~/Screenshots/$f'
bindsym $mod+Print exec scrot -e 'mv $f ~/Screenshots/ && optipng ~/Screenshots/$f'
bindsym Ctrl+Print exec sleep 1 && scrot -se 'mv $f ~/Screenshots/ && optipng ~/Screenshots/$f'
focus_follows_mouse no
mouse_warping output
# change focus
bindsym $mod+h focus left; exec ~/.config/i3/focus_windows
bindsym $mod+j focus down; exec ~/.config/i3/focus_windows
bindsym $mod+k focus up; exec ~/.config/i3/focus_windows
bindsym $mod+l focus right; exec ~/.config/i3/focus_windows
## alternatively, you can use the cursor keys:
#bindsym $mod+Left focus left
#bindsym $mod+Down focus down
#bindsym $mod+Up focus up
#bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+h move left; exec ~/.config/i3/focus_windows
bindsym $mod+Shift+j move down; exec ~/.config/i3/focus_windows
bindsym $mod+Shift+k move up; exec ~/.config/i3/focus_windows
bindsym $mod+Shift+l move right; exec ~/.config/i3/focus_windows
## alternatively, you can use the cursor keys:
#bindsym $mod+Shift+Left move left
#bindsym $mod+Shift+Down move down
#bindsym $mod+Shift+Up move up
#bindsym $mod+Shift+Right move right
# workspace back and forth (with/without active container)
workspace_auto_back_and_forth no
bindsym $mod+b workspace back_and_forth; exec ~/.config/i3/focus_windows
bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth; exec ~/.config/i3/focus_windows
# split in horizontal orientation
bindsym $mod+g split h; exec ~/.config/i3/focus_windows
# split in vertical orientation
bindsym $mod+v split v; exec ~/.config/i3/focus_windows
# toggle fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle; exec ~/.config/i3/focus_windows
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking; exec ~/.config/i3/focus_windows
bindsym $mod+w layout tabbed; exec ~/.config/i3/focus_windows
bindsym $mod+e layout toggle split; exec ~/.config/i3/focus_windows
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle; exec ~/.config/i3/focus_windows
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle; exec ~/.config/i3/focus_windows
# focus the parent container
bindsym $mod+a focus parent; exec ~/.config/i3/focus_windows
# focus the child container
bindsym $mod+q focus child; exec ~/.config/i3/focus_windows
# Workspace names
set $WS1 1
set $WS2 2
set $WS3 3
set $WS4 4
set $WS5 5
set $WS6 6
set $WS7 7
set $WS8 8
set $WS9 9
set $WS10 10
# Workspace output
workspace "$WS1" output eDP-1-1
workspace "$WS2" output HDMI-0
workspace "$WS3" output eDP-1-1
workspace "$WS4" output HDMI-0
workspace "$WS5" output eDP-1-1
workspace "$WS6" output HDMI-0
workspace "$WS7" output eDP-1-1
workspace "$WS8" output HDMI-0
workspace "$WS9" output eDP-1-1
workspace "$WS10" output HDMI-0
# switch to workspace
bindsym $mod+1 workspace $WS1; exec ~/.config/i3/focus_windows
bindsym $mod+2 workspace $WS2; exec ~/.config/i3/focus_windows
bindsym $mod+3 workspace $WS3; exec ~/.config/i3/focus_windows
bindsym $mod+4 workspace $WS4; exec ~/.config/i3/focus_windows
bindsym $mod+5 workspace $WS5; exec ~/.config/i3/focus_windows
bindsym $mod+6 workspace $WS6; exec ~/.config/i3/focus_windows
bindsym $mod+7 workspace $WS7; exec ~/.config/i3/focus_windows
bindsym $mod+8 workspace $WS8; exec ~/.config/i3/focus_windows
bindsym $mod+9 workspace $WS9; exec ~/.config/i3/focus_windows
bindsym $mod+0 workspace $WS10; exec ~/.config/i3/focus_windows
#navigate workspaces next / previous
bindsym $mod+Ctrl+h workspace prev_on_output; exec ~/.config/i3/focus_windows
bindsym $mod+Ctrl+l workspace next_on_output; exec ~/.config/i3/focus_windows
bindsym $mod+Ctrl+j workspace prev; exec ~/.config/i3/focus_windows
bindsym $mod+Ctrl+k workspace next; exec ~/.config/i3/focus_windows
##navigate workspaces next / previous (arrow keys)
#bindsym $mod+Ctrl+Left workspace prev_on_output
#bindsym $mod+Ctrl+Right workspace next_on_output
#bindsym $mod+Ctrl+Down workspace prev
#bindsym $mod+Ctrl+Up workspace next
# Move to workspace next / previous with focused container
bindsym $mod+Ctrl+Shift+h move container to workspace prev_on_output; workspace prev_on_output; exec ~/.config/i3/focus_windows
bindsym $mod+Ctrl+Shift+l move container to workspace next_on_output; workspace next_on_output; exec ~/.config/i3/focus_windows
bindsym $mod+Ctrl+Shift+j move container to workspace prev; workspace prev; exec ~/.config/i3/focus_windows
bindsym $mod+Ctrl+Shift+k move container to workspace next; workspace next; exec ~/.config/i3/focus_windows
## Move to workspace next / previous with focused container (arrow keys)
#bindsym $mod+Ctrl+Shift+Left move container to workspace prev_on_output; workspace prev_on_output
#bindsym $mod+Ctrl+Shift+Right move container to workspace next_on_output; workspace next_on_output
#bindsym $mod+Ctrl+Shift+Down move container to workspace prev; workspace prev
#bindsym $mod+Ctrl+Shift+Up move container to workspace next; workspace next
# move focused container to workspace
bindsym $mod+ctrl+1 move container to workspace $ws1; exec ~/.config/i3/focus_windows
bindsym $mod+ctrl+2 move container to workspace $ws2; exec ~/.config/i3/focus_windows
bindsym $mod+ctrl+3 move container to workspace $ws3; exec ~/.config/i3/focus_windows
bindsym $mod+ctrl+4 move container to workspace $ws4; exec ~/.config/i3/focus_windows
bindsym $mod+ctrl+5 move container to workspace $ws5; exec ~/.config/i3/focus_windows
bindsym $mod+ctrl+6 move container to workspace $ws6; exec ~/.config/i3/focus_windows
bindsym $mod+ctrl+7 move container to workspace $ws7; exec ~/.config/i3/focus_windows
bindsym $mod+ctrl+8 move container to workspace $ws8; exec ~/.config/i3/focus_windows
bindsym $mod+ctrl+9 move container to workspace $ws9; exec ~/.config/i3/focus_windows
bindsym $mod+ctrl+0 move container to workspace $ws10; exec ~/.config/i3/focus_windows
# move to workspace with focused container
bindsym $mod+shift+1 move container to workspace $ws1; workspace $ws1; exec ~/.config/i3/focus_windows
bindsym $mod+shift+2 move container to workspace $ws2; workspace $ws2; exec ~/.config/i3/focus_windows
bindsym $mod+shift+3 move container to workspace $ws3; workspace $ws3; exec ~/.config/i3/focus_windows
bindsym $mod+shift+4 move container to workspace $ws4; workspace $ws4; exec ~/.config/i3/focus_windows
bindsym $mod+shift+5 move container to workspace $ws5; workspace $ws5; exec ~/.config/i3/focus_windows
bindsym $mod+shift+6 move container to workspace $ws6; workspace $ws6; exec ~/.config/i3/focus_windows
bindsym $mod+shift+7 move container to workspace $ws7; workspace $ws7; exec ~/.config/i3/focus_windows
bindsym $mod+shift+8 move container to workspace $ws8; workspace $ws8; exec ~/.config/i3/focus_windows
bindsym $mod+shift+9 move container to workspace $ws9; workspace $ws9; exec ~/.config/i3/focus_windows
bindsym $mod+shift+0 move container to workspace $ws10; workspace $ws10; exec ~/.config/i3/focus_windows
## move workspaces to screen
#bindsym $mod+ctrl+shift+r move workspace to output right
#bindsym $mod+ctrl+shift+l move workspace to output left
#bindsym $mod+Ctrl+Shift+u move workspace to output above
#bindsym $mod+Ctrl+Shift+d move workspace to output below
# move workspaces to screen (arrow keys)
bindsym $mod+ctrl+shift+Right move workspace to output right; exec ~/.config/i3/focus_windows
bindsym $mod+ctrl+shift+Left move workspace to output left; exec ~/.config/i3/focus_windows
bindsym $mod+Ctrl+Shift+Up move workspace to output above; exec ~/.config/i3/focus_windows
bindsym $mod+Ctrl+Shift+Down move workspace to output below; exec ~/.config/i3/focus_windows
# Default layout = tabs, since I mostly exclusively use them
workspace_layout tabbed
# Open specific applications in floating mode
for_window [title="pacmixer"] floating enable border pixel 2
for_window [class="Firefox"] layout tabbed # Doesn't seem to work anymore
for_window [class="qutebrowser"] layout tabbed
for_window [window_role="pop-up"] floating enable
for_window [window_role="task_dialog"] floating enable
for_window [ title="^pdfpc.*" window_role="presenter" ] move to output left, fullscreen
for_window [ title="^pdfpc.*" window_role="presentation" ] move to output right, fullscreen
# switch to workspace with urgent window automatically
for_window [urgent=latest] focus
# focus urgent window
#bindsym $mod+x [urgent=latest] focus
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exit
# Set shut down, restart and locking features
set $mode_kblock Keyboard lock
mode "$mode_kblock" {
bindsym $mod+Shift+Escape mode "$mode_kblock"
}
bindsym $mod+Shift+Escape mode "$mode_kblock"
# Set shut down, restart and locking features
set $locker $HOME/.config/i3/lock
set $mode_system [L] Vérouillage [E] Déconnexion [S] Veille [H] Hibernation [R] Redémarrage [P] Extinction
mode "$mode_system" {
bindsym l exec --no-startup-id $locker, mode "default"
bindsym e exit, mode "default"
bindsym s exec --no-startup-id $locker & systemctl suspend, mode "default"
bindsym h exec --no-startup-id $locker & systemctl hibernate, mode "default"
bindsym r exec --no-startup-id systemctl reboot, mode "default"
bindsym p exec --no-startup-id systemctl poweroff -i, mode "default"
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+Escape mode "$mode_system"
# resize window (you can also use the mouse for that)
mode "Resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym h resize shrink width 10 px or 10 ppt; exec ~/.config/i3/focus_windows
bindsym j resize grow height 10 px or 10 ppt; exec ~/.config/i3/focus_windows
bindsym k resize shrink height 10 px or 10 ppt; exec ~/.config/i3/focus_windows
bindsym l resize grow width 10 px or 10 ppt; exec ~/.config/i3/focus_windows
## same bindings, but for the arrow keys
#bindsym Left resize shrink width 10 px or 10 ppt
#bindsym Down resize grow height 10 px or 10 ppt
#bindsym Up resize shrink height 10 px or 10 ppt
#bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "Resize"
set $mode_pres_main "Presentation (main display)"
mode $mode_pres_main {
bindsym b workspace $WS3, workspace $WS4, mode $mode_pres_sec
# back to normal: Enter or Escape
bindsym q mode "default"
# bindsym Escape mode "default"
bindsym Return mode "default"
}
set $mode_pres_sec "Presentation (secondary display)"
mode $mode_pres_sec {
bindsym b workspace $WS2, workspace $WS1, mode $mode_pres_main
# back to normal: Enter or Escape
bindsym q mode "default"
# bindsym Escape mode "default"
bindsym Return mode "default"
}
bindsym $mod+Shift+p mode $mode_pres_main
set $mode_screen Screen setup [A] Auto [L] Load [S] Save [R] Remove [D] Default
bindsym $mod+t mode "$mode_screen"
mode "$mode_screen" {
bindsym a exec autorandr --change --force, mode "default"
bindsym l exec ~/.config/i3/autorandrloadmenu, mode "default"
bindsym s exec ~/.config/i3/autorandrsavemenu, mode "default"
bindsym r exec ~/.config/i3/autorandrremovemenu, mode "default"
bindsym d exec ~/.config/i3/autorandrdefaultmenu, mode "default"
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
# Screen temperature ("redness") setting
bindsym $mod+y mode "$mode_temp"
set $mode_temp Temperature [R] Red [D] Dust storm [C] Campfire [O] Normal [A] All nighter [B] Blue
mode "$mode_temp" {
bindsym r exec sct 1000
bindsym d exec sct 2000
bindsym c exec sct 4500
bindsym o exec sct
bindsym a exec sct 8000
bindsym b exec sct 10000
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
# Inactivity settings
exec --no-startup-id xautolock -time 10 -locker 'xset dpms force standby' -killtime 1 -killer '$locker'
bindsym $mod+F1 exec --no-startup-id sh -c "sleep .25 && xset dpms force off"
bindsym $mod+F4 exec --no-startup-id xautolock -disable
bindsym $mod+F5 exec --no-startup-id xautolock -enable
# Autostart applications
#exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 # Password remembering
#exec --no-startup-id gnome-keyring-daemon # Password remembering
# exec --no-startup-id urxvtd -q -f # urxvt daemon
exec --no-startup-id numlockx on # Activate Num lock
exec --no-startup-id unclutter -root # Hide mouse cursor after some time
#exec --no-startup-id dunst # Notifications (handled by systemd)
exec --no-startup-id keynav # Keyboard cursor controller
#exec --no-startup-id mpd # Music Player Daemon (handled by systemd)
# exec --no-startup-id ~/.config/i3/ashuffle # MPD Auto-refill
exec --no-startup-id autorandr --change --force # Screen configuration and everything that depends on it
exec --no-startup-id ~/.config/i3/batteryNotify -d # Battery state notification
# exec --no-startup-id ~/.config/i3/aw_start # Activity tracker
{{ base16_schemes['schemes'][base16_scheme]['i3']['colors']['base16-' + base16_scheme + '.config'] }}
set $ignore #ff00ff
# Basic color configuration using the Base16 variables for windows and borders.
# Property Name Border BG Text Indicator Child Border
client.focused $base0B $base0B $base00 $base00 $base0B
client.focused_inactive $base02 $base02 $base05 $base02 $base02
client.unfocused $base05 $base04 $base00 $base04 $base00
client.urgent $base0F $base08 $base00 $base08 $base0F
client.placeholder $ignore $base00 $base05 $ignore $base00
client.background $base07
# I set the color of the active tab as the the background color
# of the terminal so they merge together. This is the opposite
# of what I used before: unfocused color was the terminal
# background color. Either I get used to it, or I should revert.
# bar {
# i3bar_command ~/.config/lemonbar/bar.py
# }

View file

@ -1,2 +0,0 @@
#!/bin/sh
dmenu -fn 'DejaVu Sans Mono-10' -nb '#48483e' -nf '#f1ebeb' -sb '#8fc029' -sf '#272822' -i -l 8 -f "$@"

View file

@ -1,15 +0,0 @@
#!/bin/sh
cachedir=${XDG_CACHE_HOME:-"$HOME/.cache"}
if [ -d "$cachedir" ]; then
cache=$cachedir/dmenu_run
else
cache=$HOME/.dmenu_cache # if no xdg dir, fall back to dotfile in ~
fi
(
IFS=:
if stest -dqr -n "$cache" $PATH; then
stest -flx $PATH | sort -u | tee "$cache" | $HOME/.config/i3/dmenu_cmd -p 'Run' "$@"
else
$HOME/.config/i3/dmenu_cmd -p 'Run' "$@" < "$cache"
fi
) | ${SHELL:-"/bin/sh"} &

View file

@ -1,12 +0,0 @@
#!/bin/bash
XDT=/usr/bin/xdotool
WINDOW=`$XDT getwindowfocus`
# this brings in variables WIDTH and HEIGHT
eval `xdotool getwindowgeometry --shell $WINDOW`
TX=`expr $WIDTH / 2`
TY=`expr $HEIGHT / 2`
$XDT mousemove -window $WINDOW $TX $TY

View file

@ -1,23 +0,0 @@
#!/usr/bin/env bash
# Remove SSH and GPG keys from keystores
ssh-add -D
echo RELOADAGENT | gpg-connect-agent
dm-tool lock
if [ $? -ne 0 ]; then
if [ -d ~/.cache/lockpatterns ]
then
pattern=$(find ~/.cache/lockpatterns/ | sort -R | head -1)
else
pattern=$HOME/.config/i3/lock.png
fi
revert() {
xset dpms 0 0 0
}
trap revert SIGHUP SIGINT SIGTERM
xset dpms 5 5 5
i3lock --nofork --color 648901 --image=$pattern --tiling --ignore-empty-password
revert
fi

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" height="50" width="50"><path fill="#82a401" d="M0 50h50V0H0z"/><path d="M0 0l50 50H25L0 25zm50 0v25L25 0z" fill="#466c01"/></svg>

Before

Width:  |  Height:  |  Size: 189 B

View file

@ -1,26 +0,0 @@
#!/usr/bin/env bash
# Send a key event to the current multimedia application or to MPD
# Currently since I did not found a way to test if a keystroke
# is grabbed by a windows or not, we test if MPD is playing
echo 8 "$1" "$2" "$(xdotool getactivewindow)" >> /tmp/dbg
if [ $# != 2 ]; then
echo "Usage: $0 KEY MPC_COMMAND"
exit 1
fi
if [ $(mpc status | wc -l) -ne 1 ]; then
# If mpd is running
mpc $2
else
# If mpd is not running
# echo "$1" "$2" "$(xdotool getactivewindow)" >> /tmp/dbg
xdotool key --window $(xdotool getactivewindow) $1
echo xdotool key --window $(xdotool getactivewindow) $1 >> /tmp/dbg
fi
exit 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 B

View file

@ -1,66 +0,0 @@
#!/usr/bin/env python3
"""
Logs what window is in focus
"""
import csv
import datetime
import os
import typing
import i3ipc
class ScreenTime:
FIELDS = ["date", "type", "class", "role", "instance", "title"]
def write(self, line: typing.Dict) -> None:
now = datetime.datetime.now()
line["date"] = now.timestamp()
print("WROTE", line)
with open(self.csv_path, 'a') as typedfd:
writer = csv.DictWriter(typedfd, fieldnames=self.FIELDS)
writer.writerow(line)
def on_window_event(self, _: i3ipc.connection.Connection,
e: i3ipc.events.WindowEvent) -> None:
focused = self.i3.get_tree().find_focused()
self.write({
"type": "window_" + e.change,
"class": focused.window_class,
"role": focused.window_role,
"title": focused.window_title,
"instance": focused.window_instance,
})
def on_mode_event(self, _: i3ipc.connection.Connection,
e: i3ipc.events.ModeEvent) -> None:
self.write({
"type": "mode",
"title": e.change
})
def __init__(self) -> None:
self.i3 = i3ipc.Connection()
self.i3.on(i3ipc.Event.WINDOW, self.on_window_event)
self.i3.on(i3ipc.Event.MODE, self.on_mode_event)
self.csv_path = os.path.join(
os.path.expanduser(
os.getenv('XDG_CACHE_PATH', '~/.cache/')),
'screentime.csv')
if not os.path.isfile(self.csv_path):
with open(self.csv_path, 'w') as typedfd:
writer = csv.DictWriter(typedfd, fieldnames=self.FIELDS)
writer.writeheader()
self.write({"type": "start"})
def main(self) -> None:
self.i3.main()
if __name__ == '__main__':
ST = ScreenTime()
ST.main()

View file

@ -1,61 +0,0 @@
# interface: if
# Sets the network interface to if.
dns-resolution: yes
# Controls reverse lookup of IP addresses.
port-resolution: no
# Controls conversion of port numbers to service names.
# filter-code: bpf
# Sets the filter code to bpf.
show-bars: yes
# Controls display of bar graphs.
promiscuous: no
# Puts the interface into promiscuous mode.
port-display: on
# Controls display of port numbers.
link-local: yes
# Determines displaying of link-local IPv6 addresses.
hide-source: no
# Hides source host names.
hide-destination: no
# Hides destination host names.
use-bytes: yes
# Use bytes for bandwidth display, rather than bits.
sort: 10s
# Sets which column is used to sort the display.
line-display: two-line
# Controls the appearance of each item in the display.
show-totals: yes
# Shows cumulative total for each item.
log-scale: yes
# Use a logarithmic scale for bar graphs.
# max-bandwidth: bw
# Fixes the maximum for the bar graph scale to bw, e.g. "10M".
# Note that the value has to always be in bits, regardless if the
# option to display in bytes has been chosen.
# net-filter: net/mask
# Defines an IP network boundary for determining packet direc
# tion.
# net-filter6: net6/mask6
# Defines an IPv6 network boundary for determining packet direc
# tion.
# screen-filter: regexp
# Sets a regular expression to filter screen output.

View file

@ -1,13 +0,0 @@
#!/usr/bin/env sh
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
ex="$DIR/bar.py"
# Terminate already running bar instances
ps x | grep "python3 $ex" | grep -v grep | awk '{print $1}' | while read p; do kill $p; done
killall -q lemonbar
$ex

View file

@ -1,161 +0,0 @@
#!/usr/bin/env python3
"""
Debugging script
"""
import i3ipc
import os
import psutil
# import alsaaudio
from time import time
import subprocess
i3 = i3ipc.Connection()
lemonbar = subprocess.Popen(['lemonbar', '-b'], stdin=subprocess.PIPE)
# Utils
def upChart(p):
block = ' ▁▂▃▄▅▆▇█'
return block[round(p * (len(block)-1))]
def humanSizeOf(num, suffix='B'): # TODO Credit
for unit in ['','Ki','Mi','Gi','Ti','Pi','Ei','Zi']:
if abs(num) < 1024.0:
return "%3.0f%2s%s" % (num, unit, suffix)
num /= 1024.0
return "%.0f%2s%s" % (num, 'Yi', suffix)
# Values
mode = ''
container = i3.get_tree().find_focused()
workspaces = i3.get_workspaces()
outputs = i3.get_outputs()
username = os.environ['USER']
hostname = os.environ['HOSTNAME']
if '-' in hostname:
hostname = hostname.split('-')[-1]
oldNetIO = dict()
oldTime = time()
def update():
activeOutputs = sorted(sorted(list(filter(lambda o: o.active, outputs)), key=lambda o: o.rect.y), key=lambda o: o.rect.x)
z = ''
for aOutput in range(len(activeOutputs)):
output = activeOutputs[aOutput]
# Mode || Workspaces
t = []
if (mode != ''):
t.append(mode)
else:
t.append(' '.join([(w.name.upper() if w.focused else w.name) for w in workspaces if w.output == output.name]))
# Windows Title
#if container:
# t.append(container.name)
# CPU
t.append('C' + ''.join([upChart(p/100) for p in psutil.cpu_percent(percpu=True)]))
# Memory
t.append('M' + str(round(psutil.virtual_memory().percent)) + '% ' +
'S' + str(round(psutil.swap_memory().percent)) + '%')
# Disks
d = []
for disk in psutil.disk_partitions():
e = ''
if disk.device.startswith('/dev/sd'):
e += 'S' + disk.device[-2:].upper()
elif disk.device.startswith('/dev/mmcblk'):
e += 'M' + disk.device[-3] + disk.device[-1]
else:
e += '?'
e += ' '
e += str(round(psutil.disk_usage(disk.mountpoint).percent)) + '%'
d.append(e)
t.append(' '.join(d))
# Network
netStats = psutil.net_if_stats()
netIO = psutil.net_io_counters(pernic=True)
net = []
for iface in filter(lambda i: i != 'lo' and netStats[i].isup, netStats.keys()):
s = ''
if iface.startswith('eth'):
s += 'E'
elif iface.startswith('wlan'):
s += 'W'
else:
s += '?'
s += ' '
now = time()
global oldNetIO, oldTime
sent = ((oldNetIO[iface].bytes_sent if iface in oldNetIO else 0) - (netIO[iface].bytes_sent if iface in netIO else 0)) / (oldTime - now)
recv = ((oldNetIO[iface].bytes_recv if iface in oldNetIO else 0) - (netIO[iface].bytes_recv if iface in netIO else 0)) / (oldTime - now)
s += '' + humanSizeOf(abs(recv), 'B/s') + '' + humanSizeOf(abs(sent), 'B/s')
oldNetIO = netIO
oldTime = now
net.append(s)
t.append(' '.join(net))
# Battery
if os.path.isdir('/sys/class/power_supply/BAT0'):
with open('/sys/class/power_supply/BAT0/charge_now') as f:
charge_now = int(f.read())
with open('/sys/class/power_supply/BAT0/charge_full_design') as f:
charge_full = int(f.read())
t.append('B' + str(round(100*charge_now/charge_full)) + '%')
# Volume
# t.append('V ' + str(alsaaudio.Mixer('Master').getvolume()[0]) + '%')
t.append(username + '@' + hostname)
# print(' - '.join(t))
# t = [output.name]
z += ' - '.join(t) + '%{S' + str(aOutput + 1) + '}'
#lemonbar.stdin.write(bytes(' - '.join(t), 'utf-8'))
#lemonbar.stdin.write(bytes('%{S' + str(aOutput + 1) + '}', 'utf-8'))
lemonbar.stdin.write(bytes(z+'\n', 'utf-8'))
lemonbar.stdin.flush()
# Event listeners
def on_mode(i3, e):
global mode
if (e.change == 'default'):
mode = ''
else :
mode = e.change
update()
i3.on("mode", on_mode)
#def on_window_focus(i3, e):
# global container
# container = e.container
# update()
#
#i3.on("window::focus", on_window_focus)
def on_workspace_focus(i3, e):
global workspaces
workspaces = i3.get_workspaces()
update()
i3.on("workspace::focus", on_workspace_focus)
# Starting
update()
i3.main()

View file

@ -1,14 +0,0 @@
coloredlogs==10.0
enum-compat==0.0.2
humanfriendly==4.16.1
i3ipc==1.6.0
ifaddr==0.1.4
ipaddress==1.0.22
psutil==5.4.7
pulsectl==18.8.0
pyinotify==0.9.6
python-mpd2==1.0.0
python-uinput==0.11.2
taskw==1.2.0
yoke==0.1.1
zeroconf==0.21.3

View file

@ -1 +0,0 @@
savepath-command='echo %s'

View file

View file

@ -1,413 +0,0 @@
# An example configuration file for MPD.
# Read the user manual for documentation: http://www.musicpd.org/doc/user/
# Files and directories #######################################################
#
# This setting controls the top directory which MPD will search to discover the
# available audio files and add them to the daemon's online database. This
# setting defaults to the XDG directory, otherwise the music directory will be
# be disabled and audio files will only be accepted over ipc socket (using
# file:// protocol) or streaming files over an accepted protocol.
#
music_directory "~/Musiques"
#
# This setting sets the MPD internal playlist directory. The purpose of this
# directory is storage for playlists created by MPD. The server will use
# playlist files not created by the server but only if they are in the MPD
# format. This setting defaults to playlist saving being disabled.
#
playlist_directory "~/.config/mpd/playlists"
#
# This setting sets the location of the MPD database. This file is used to
# load the database at server start up and store the database while the
# server is not up. This setting defaults to disabled which will allow
# MPD to accept files over ipc socket (using file:// protocol) or streaming
# files over an accepted protocol.
#
db_file "~/.cache/mpd/database"
#
# These settings are the locations for the daemon log files for the daemon.
# These logs are great for troubleshooting, depending on your log_level
# settings.
#
# The special value "syslog" makes MPD use the local syslog daemon. This
# setting defaults to logging to syslog, otherwise logging is disabled.
#
log_file "~/.cache/mpd/log"
#
# This setting sets the location of the file which stores the process ID
# for use of mpd --kill and some init scripts. This setting is disabled by
# default and the pid file will not be stored.
#
pid_file "~/.cache/mpd/pid"
#
# This setting sets the location of the file which contains information about
# most variables to get MPD back into the same general shape it was in before
# it was brought down. This setting is disabled by default and the server
# state will be reset on server start up.
#
state_file "~/.cache/mpd/state"
#
# The location of the sticker database. This is a database which
# manages dynamic information attached to songs.
#
sticker_file "~/.cache/mpd/sticker.sql"
#
###############################################################################
# General music daemon options ################################################
#
# This setting specifies the user that MPD will run as. MPD should never run as
# root and you may use this setting to make MPD change its user ID after
# initialization. This setting is disabled by default and MPD is run as the
# current user.
#
#user "nobody"
#
# This setting specifies the group that MPD will run as. If not specified
# primary group of user specified with "user" setting will be used (if set).
# This is useful if MPD needs to be a member of group such as "audio" to
# have permission to use sound card.
#
#group "nogroup"
#
# This setting sets the address for the daemon to listen on. Careful attention
# should be paid if this is assigned to anything other then the default, any.
# This setting can deny access to control of the daemon.
#
# For network
#bind_to_address "any"
#
# And for Unix Socket
#bind_to_address "~/.mpd/socket"
#
# This setting is the TCP port that is desired for the daemon to get assigned
# to.
#
#port "6600"
#
# This setting controls the type of information which is logged. Available
# setting arguments are "default", "secure" or "verbose". The "verbose" setting
# argument is recommended for troubleshooting, though can quickly stretch
# available resources on limited hardware storage.
#
log_level "default"
#
# If you have a problem with your MP3s ending abruptly it is recommended that
# you set this argument to "no" to attempt to fix the problem. If this solves
# the problem, it is highly recommended to fix the MP3 files with vbrfix
# (available from <http://www.willwap.co.uk/Programs/vbrfix.php>), at which
# point gapless MP3 playback can be enabled.
#
#gapless_mp3_playback "yes"
#
# Setting "restore_paused" to "yes" puts MPD into pause mode instead
# of starting playback after startup.
#
restore_paused "yes"
#
# This setting enables MPD to create playlists in a format usable by other
# music players.
#
#save_absolute_paths_in_playlists "no"
#
# This setting defines a list of tag types that will be extracted during the
# audio file discovery process. The complete list of possible values can be
# found in the user manual.
#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
#
# This setting enables automatic update of MPD's database when files in
# music_directory are changed.
#
auto_update "yes"
#
# Limit the depth of the directories being watched, 0 means only watch
# the music directory itself. There is no limit by default.
#
#auto_update_depth "3"
#
###############################################################################
# Symbolic link behavior ######################################################
#
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links outside of the configured music_directory.
#
#follow_outside_symlinks "yes"
#
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links inside of the configured music_directory.
#
#follow_inside_symlinks "yes"
#
###############################################################################
# Zeroconf / Avahi Service Discovery ##########################################
#
# If this setting is set to "yes", service information will be published with
# Zeroconf / Avahi.
#
#zeroconf_enabled "yes"
#
# The argument to this setting will be the Zeroconf / Avahi unique name for
# this MPD server on the network.
#
#zeroconf_name "Music Player"
#
###############################################################################
# Permissions #################################################################
#
# If this setting is set, MPD will require password authorization. The password
# can setting can be specified multiple times for different password profiles.
#
#password "password@read,add,control,admin"
#
# This setting specifies the permissions a user has who has not yet logged in.
#
#default_permissions "read,add,control,admin"
#
###############################################################################
# Database #######################################################################
#
#database {
# plugin "proxy"
# host "other.mpd.host"
# port "6600"
#}
# Input #######################################################################
#
input {
plugin "curl"
# proxy "proxy.isp.com:8080"
# proxy_user "user"
# proxy_password "password"
}
#
###############################################################################
# Audio Output ################################################################
#
# MPD supports various audio output types, as well as playing through multiple
# audio outputs at the same time, through multiple audio_output settings
# blocks. Setting this block is optional, though the server will only attempt
# autodetection for one sound card.
#
# An example of an ALSA output:
#
#audio_output {
# type "alsa"
# name "My ALSA Device"
## device "hw:0,0" # optional
## mixer_type "hardware" # optional
## mixer_device "default" # optional
## mixer_control "PCM" # optional
## mixer_index "0" # optional
#}
#
# An example of an OSS output:
#
#audio_output {
# type "oss"
# name "My OSS Device"
## device "/dev/dsp" # optional
## mixer_type "hardware" # optional
## mixer_device "/dev/mixer" # optional
## mixer_control "PCM" # optional
#}
#
# An example of a shout output (for streaming to Icecast):
#
#audio_output {
# type "shout"
# encoding "ogg" # optional
# name "My Shout Stream"
# host "localhost"
# port "8000"
# mount "/mpd.ogg"
# password "hackme"
# quality "5.0"
# bitrate "128"
# format "44100:16:1"
## protocol "icecast2" # optional
## user "source" # optional
## description "My Stream Description" # optional
## url "http://example.com" # optional
## genre "jazz" # optional
## public "no" # optional
## timeout "2" # optional
## mixer_type "software" # optional
#}
#
# An example of a recorder output:
#
#audio_output {
# type "recorder"
# name "My recorder"
# encoder "vorbis" # optional, vorbis or lame
# path "/var/lib/mpd/recorder/mpd.ogg"
## quality "5.0" # do not define if bitrate is defined
# bitrate "128" # do not define if quality is defined
# format "44100:16:1"
#}
#
# An example of a httpd output (built-in HTTP streaming server):
#
audio_output {
type "httpd"
name "geoffrey-music-httpd"
encoder "vorbis" # optional, vorbis or lame
port "8600"
bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
# quality "5.0" # do not define if bitrate is defined
bitrate "128" # do not define if quality is defined
format "44100:16:1"
max_clients "0" # optional 0=no limit
}
#
# An example of a pulseaudio output (streaming to a remote pulseaudio server)
#
audio_output {
type "pulse"
name "geoffrey-music-pulse"
## server "remote_server" # optional
## sink "remote_server_sink" # optional
}
#
# An example of a winmm output (Windows multimedia API).
#
#audio_output {
# type "winmm"
# name "My WinMM output"
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
# or
## device "0" # optional
## mixer_type "hardware" # optional
#}
#
# An example of an openal output.
#
#audio_output {
# type "openal"
# name "My OpenAL output"
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
#}
#
## Example "pipe" output:
#
#audio_output {
# type "pipe"
# name "my pipe"
# command "aplay -f cd 2>/dev/null"
## Or if you're want to use AudioCompress
# command "AudioCompress -m | aplay -f cd 2>/dev/null"
## Or to send raw PCM stream through PCM:
# command "nc example.org 8765"
# format "44100:16:2"
#}
#
## An example of a null output (for no audio output):
#
#audio_output {
# type "null"
# name "My Null Output"
# mixer_type "none" # optional
#}
#
# If MPD has been compiled with libsamplerate support, this setting specifies
# the sample rate converter to use. Possible values can be found in the
# mpd.conf man page or the libsamplerate documentation. By default, this is
# setting is disabled.
#
#samplerate_converter "Fastest Sinc Interpolator"
#
###############################################################################
# Normalization automatic volume adjustments ##################################
#
# This setting specifies the type of ReplayGain to use. This setting can have
# the argument "off", "album", "track" or "auto". "auto" is a special mode that
# chooses between "track" and "album" depending on the current state of
# random playback. If random playback is enabled then "track" mode is used.
# See <http://www.replaygain.org> for more details about ReplayGain.
# This setting is off by default.
#
replaygain "auto"
#
# This setting sets the pre-amp used for files that have ReplayGain tags. By
# default this setting is disabled.
#
#replaygain_preamp "0"
#
# This setting sets the pre-amp used for files that do NOT have ReplayGain tags.
# By default this setting is disabled.
#
#replaygain_missing_preamp "0"
#
# This setting enables or disables ReplayGain limiting.
# MPD calculates actual amplification based on the ReplayGain tags
# and replaygain_preamp / replaygain_missing_preamp setting.
# If replaygain_limit is enabled MPD will never amplify audio signal
# above its original level. If replaygain_limit is disabled such amplification
# might occur. By default this setting is enabled.
#
#replaygain_limit "yes"
#
# This setting enables on-the-fly normalization volume adjustment. This will
# result in the volume of all playing audio to be adjusted so the output has
# equal "loudness". This setting is disabled by default.
#
#volume_normalization "no"
#
###############################################################################
# Character Encoding ##########################################################
#
# If file or directory names do not display correctly for your locale then you
# may need to modify this setting.
#
#filesystem_charset "UTF-8"
#
# This setting controls the encoding that ID3v1 tags should be converted from.
#
#id3v1_encoding "ISO-8859-1"
#
###############################################################################
# SIDPlay decoder #############################################################
#
# songlength_database:
# Location of your songlengths file, as distributed with the HVSC.
# The sidplay plugin checks this for matching MD5 fingerprints.
# See http://www.c64.org/HVSC/DOCUMENTS/Songlengths.faq
#
# default_songlength:
# This is the default playing time in seconds for songs not in the
# songlength database, or in case you're not using a database.
# A value of 0 means play indefinitely.
#
# filter:
# Turns the SID filter emulation on or off.
#
#decoder {
# plugin "sidplay"
# songlength_database "/media/C64Music/DOCUMENTS/Songlengths.txt"
# default_songlength "120"
# filter "true"
#}
#
###############################################################################

View file

View file

@ -1 +0,0 @@
no-audio-display

View file

@ -1,7 +0,0 @@
[mypy]
cache_dir = ~/.cache/mypy
ignore_missing_imports = True
disallow_untyped_defs = True
disallow_untyped_calls = True
disallow_incomplete_defs = True
disallow_untyped_decorators = True

View file

@ -1 +0,0 @@
.netrwhist

View file

@ -1,3 +0,0 @@
set runtimepath+=~/.config/vim,~/.cache/vim
let &packpath = &runtimepath
source ~/.config/vimrc

View file

View file

@ -1 +0,0 @@
cookie-file = .config/pulse/pulse-cookie

View file

@ -1,3 +0,0 @@
[pycodestyle]
# Compatibility with Black
max-line-length = 88

View file

@ -1,78 +0,0 @@
import os
# Public static configuration for qutebrowser
# Note that private stuff (permissions, per-site rules)
# are in autoconfig in gdotfiles
# Prompt the user for the download location. If set to false,
# `downloads.location.directory` will be used.
# Type: Bool
c.downloads.location.prompt = False
# When to show the tab bar.
# Type: String
# Valid values:
# - always: Always show the tab bar.
# - never: Always hide the tab bar.
# - multiple: Hide the tab bar if only one tab is open.
# - switching: Show the tab bar when switching tabs.
c.tabs.show = "never"
# Open a new window for every tab.
# Type: Bool
c.tabs.tabs_are_windows = True
# Open base URL of the searchengine if a searchengine shortcut is
# invoked without parameters.
# Type: Bool
c.url.open_base_url = True
# Search engines which can be used via the address bar. Maps a search
# engine name (such as `DEFAULT`, or `ddg`) to a URL with a `{}`
# placeholder. The placeholder will be replaced by the search term, use
# `{{` and `}}` for literal `{`/`}` signs. The search engine named
# `DEFAULT` is used when `url.auto_search` is turned on and something
# else than a URL was entered to be opened. Other search engines can be
# used by prepending the search engine name to the search term, e.g.
# `:open google qutebrowser`.
# Type: Dict
c.url.searchengines = {
"DEFAULT": "https://www.ecosia.org/search?q={}",
"aw": "http://www.amp-what.com/unicode/search/{}",
"ddg": "https://duckduckgo.com/?q={}&ia=web",
"duckduckgo": "https://duckduckgo.com/?q={}&ia=web",
"ecosia": "https://www.ecosia.org/search?q={}",
"github": "https://github.com/search?q={}",
"google": "https://www.google.fr/search?q={}",
"npm": "https://www.npmjs.com/search?q={}",
"q": "https://www.qwant.com/?t=web&q={}",
"qwant": "https://www.qwant.com/?t=web&q={}",
"wolfram": "https://www.wolframalpha.com/input/?i={}",
"youtube": "https://www.youtube.com/results?search_query={}",
}
# Only allow first party cookies
config.set("content.cookies.accept", "no-3rdparty", "chrome://*/*")
# Page(s) to open at the start.
# Type: List of FuzzyUrl, or FuzzyUrl
c.url.start_pages = "https://geoffrey.frogeye.fr/blank.html"
# Bindings for normal mode
config.bind("H", "tab-prev")
config.bind("J", "back")
config.bind("K", "forward")
config.bind("L", "tab-next")
config.unbind("T")
config.bind("af", "spawn --userscript freshrss")
config.bind("as", "spawn --userscript shaarli")
config.bind("u", "undo --window")
dirname = os.path.dirname(__file__)
filename = os.path.join(dirname, "theme.py")
if os.path.exists(filename):
with open(filename) as file:
exec(file.read())
# Uncomment this to still load settings configured via autoconfig.yml
config.load_autoconfig()

View file

@ -1,3 +0,0 @@
theme.config
theme.rasi

View file

@ -1,8 +0,0 @@
#include "theme.config"
rofi.theme: theme
rofi.cycle: true
rofi.case-sensitive: false
rofi.scroll-method: 0
rofi.show-match: true
rofi.lazy-grab: false
rofi.matching: regex

View file

@ -1,4 +0,0 @@
skin-tone = neutral
files = [emojis, math]
insert-with-clipboard = true

View file

@ -1,3 +0,0 @@
#!/usr/bin/env bash
sudo kexec -l /boot/vmlinuz-linux --initrd=/boot/initramfs-linux.img --reuse-cmdline
sudo systemctl kexec

View file

@ -1,21 +0,0 @@
#!/usr/bin/env bash
set -e
if [ $USER != root ]
then
echo "This script should be run as root."
exit 1
fi
if ! pacman -Qq pacman-mirrorlist &> /dev/null
then
pacman -S pacman-mirrorlist
fi
if [ ! -f /etc/pacman.d/mirrorlist.pacnew ]
then
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.pacnew
fi
egrep -o 'Server = .+' /etc/pacman.d/mirrorlist.pacnew | /usr/bin/rankmirrors -n 6 - > /etc/pacman.d/mirrorlist

View file

@ -1,3 +0,0 @@
#!/usr/bin/env sh
play -n synth sine E5 sine A4 remix 1-2 fade 0.5 1.2 0.5 2> /dev/null
# echo 

View file

@ -1,50 +0,0 @@
#!/usr/bin/env bash
# TODO Do not dupplicate trimmed.bash
CACHE_DIR="${XDG_CACHE_DIR:-$HOME/.cache}/bsh"
FOLDER_NAME="geoffrey"
mkdir -p "$CACHE_DIR"
if [ ! -f "${CACHE_DIR}/cmd" ]
then
# Preparation
WORK="${CACHE_DIR}/${FOLDER_NAME}"
DEST="/tmp/${FOLDER_NAME}"
rm -rf "$WORK" # DEBUG
mkdir "$WORK"
# Copying files
grep -o '^[^#]*' ~/.config/shell/trimmed.bash > "${WORK}/.bashrc"
grep -o '^[^#]*' ~/.config/inputrc > "${WORK}/.inputrc"
grep -o '^[^"]*' ~/.config/vim/vimconfig.vim > "${WORK}/.vimrc"
#mkdir -p "${WORK}/terminfo/${TERM:0:1}"
#if [ -f "/usr/share/terminfo/${TERM:0:1}/${TERM}" ]
#then
# cp "/usr/share/terminfo/${TERM:0:1}/${TERM}" "${WORK}/terminfo/${TERM:0:1}/${TERM}"
#elif [ -f "$HOME/.config/terminfo/${TERM:0:1}/${TERM}" ]
#then
# cp "$HOME/.config/terminfo/${TERM:0:1}/${TERM}" "${WORK}/terminfo/${TERM:0:1}/${TERM}"
#fi
# Extra configuration
echo "alias s='sudo -s -E bash --rcfile ${DEST}/.bashrc'" >> "${WORK}/.bashrc"
echo "export VIMINIT='source ${DEST}/.vimrc'" >> "${WORK}/.bashrc"
#echo "export TERMINFO=${DEST}/terminfo" >> "${WORK}/.bashrc"
echo "export INPUTRC=${DEST}/.inputrc" >> "${WORK}/.bashrc"
# TODO Maybe we should just set HOME there…
# Crafting command
b64="$(cd "$CACHE_DIR"; tar czf - "$FOLDER_NAME" | base64 -w 0)"
echo "echo '$b64' | base64 -d | tar xzf - -C /tmp" > "${CACHE_DIR}/cmd"
echo "bash --rcfile ${DEST}/.bashrc" >> "${CACHE_DIR}/cmd"
echo "rm -rf ${DEST}" >> "${CACHE_DIR}/cmd"
# TODO Do not remove unless last one connected
# Cleanup
# rm -rf "$WORK"
fi
ssh -t "$@" "$(cat "${CACHE_DIR}/cmd")"

View file

@ -1,338 +0,0 @@
#!/usr/bin/env sh
# set -x
# Allows to install software
# Find list of available installers in order of preference
# Read wanted packages and their availability
# Install packages per installer (after prompting)
# COMMON FUNCTIONS
# GLOBAL VARIABLES
# TODO Lock or temp folder
CACHE_DIR="${XDG_CACHE_DIR:-$HOME/.cache}/installSoftware"
INSTALLERS_DIR="${CACHE_DIR}/installers"
INSTALLERS_LIST="${CACHE_DIR}/installers.list"
# TODO Package groups
# INSTALLER SPECIFIC FUNCTIONS
# Test if available
available_pkgbuild() {
true
}
available_Tapt() {
[ -f /data/data/com.termux/files/usr/bin/apt ]
}
# Update the database
update_Rpacman() {
sudo pacman -Syu --noconfirm
}
update_Ryay() {
yay -Syu --noconfirm --devel
}
update_Rapt() {
# TODO non-interactive
sudo apt update -y
sudo apt upgrade -y
}
# Test if installed
installed_Rpacman() { # packageName
pacman -Qq "$1" &> /dev/null
}
installed_Ryay() { # package
installed_Rpacman "$@"
}
installed_pip() { # package
pip show "$@" > /dev/null
}
installed_makepkg() { # package
installed_Rpacman "$@"
}
installed_pkgbuild() { # package
installed_Rpacman "$@"
# TODO Might need all the systems package too
}
installed_apt() { # package
dpkg -s "$1" &> /dev/null
}
# Test if available in the repositories
installable_aur() {
curl --fail --silent --head "https://aur.archlinux.org/packages/$@" > /dev/null
}
installable_Rpacman() {
pacman -Si "$1" &> /dev/null
}
installable_Ryay() {
# yay -Ss "$1" > /dev/null
installable_aur
}
installable_pkgbuild() {
installable_aur
}
installable_makepkg() {
installable_aur
}
installable_apt() {
apt-cache show "$1" &> /dev/null
}
# Tell if it hadles mutiple argument for install
multiinstall_pacman() {
true
}
multiinstall_pip() {
true
}
multiinstall_apt() {
true
}
# Really install
install_Rpacman() {
sudo pacman -S --needed --noconfirm $@
}
install_Ryay() {
yay -S --needed --noconfirm $@
}
install_Tapt() {
apt install -y $@
}
install_Rapt() {
sudo apt install -y $@
}
install_Rpip() {
sudo pip install $@
}
install_Upip() {
pip install --user $@
}
installable_Rmakepkg() {
old_pwd="$PWD"
TMP_DIR="$(mktemp -d /tmp/pkgbuild.XXXXXXXXXX)"
cd "$TMP_DIR"
wget "https://aur.archlinux.org/cgit/aur.git/snapshot/$1.tar.gz"
tar xzvf "$1.tar.gz"
cd "$1"
makepkg -si
cd "$old_pwd"
rm -rf "$TMP_DIR"
}
# GENERIC INSTALLER FUNCTIONS
installerCanonicalName() { # installerName
echo "${1:1}"
}
notImplementedFallback() { # command installerName
echo "[NIMPL] Not implemented: command $1_$2"
false
}
# Wrapper to run a command for an installer
commandInstaller() { # command installerName fallback args...
# echo "[DEBUG] commandInstaller $*"
command="$1"
installerName="$2"
fallback="$3"
shift; shift; shift
installerCName="$(installerCanonicalName "$installerName")"
if command -v "${command}_$installerName" > /dev/null
then
"${command}_$installerName" "$@"
elif command -v "${command}_$installerCName" > /dev/null
then
"${command}_$installerCName" "$@"
else
$fallback "$command" "$installerName" "$@"
fi
}
# INSTALLER LIST FUNCTIONS
availableInstallerFallback() { # command installerName
command -v "$(installerCanonicalName "$2")" > /dev/null
}
availableInstaller() { # installerName
commandInstaller "available" "$1" availableInstallerFallback
}
# Clears the list of installers to use
resetInstallers() {
rm -f "$INSTALLERS_LIST"
touch "$INSTALLERS_LIST"
rm -rf "$INSTALLERS_DIR"
mkdir -p "$INSTALLERS_DIR"
}
addInstaller() { # installername
if availableInstaller "$1"
then
echo "$1" >> "$INSTALLERS_LIST"
rm -f "$INSTALLERS_DIR/$1"
touch "$INSTALLERS_DIR/$1"
return 0
fi
return 1
}
listInstallers() {
cat "$INSTALLERS_LIST"
}
hasInstaller() { # installerName
[ -f "${INSTALLERS_DIR}/$1" ]
}
# Installers that install in the user directory
addUserInstallers() {
addInstaller Tapt # Termux
# addInstaller Umakepkg # TODO broken
addInstaller Upip
# addInstaller Upkgbuild
}
# Installers that install with the system package manager
addSystemInstallers() {
addInstaller Rapt
addInstaller Rpacman
addInstaller Ryay || addInstaller Rmakepkg
}
# Installers that install in the system root but not tracked with system package manager
addRootInstallers() {
addInstaller Rnode
addInstaller Rpip
addInstaller Rpkgbuild
}
# UPDATING INSTALLER DATABASES
updateInstallers() {
for installerName in $(listInstallers)
do
commandInstaller "update" "$installerName" true
done
}
# MARKING PACKAGES TO INSTALL
markPackage() { # installer package
# echo "[DEBUG] Marked $*"
echo "$2" >> "$INSTALLERS_DIR/$1"
}
# Test if a package is installed
installedPackage() { # package
for installerName in $(listInstallers)
do
if commandInstaller "installed" "$installerName" notImplementedFallback "$1"
then
return 0
fi
done
return 1
}
installablePackageBy() { # installer package
commandInstaller "installable" "$1" notImplementedFallback "$2"
}
# List packages to install by given installer
listPackagesForInstaller() { # installer
cat "$INSTALLERS_DIR/$1"
}
isToInstall() { # package
for installerName in $(listInstallers)
do
listPackagesForInstaller "$installerName" | grep -q "^$1\$" && return 0
done
return 1
}
# Mark package to installer list where available
tryPackage() { # packageNames
# If package is already installed or marked to install, skip
for package in "$@"
do
installedPackage "$package" && return 0
isToInstall "$package" && return 0
done
# For each installer
for installerName in $(listInstallers)
do
# For each name given
for package in "$@"
do
# Mark if name available to installer
if installablePackageBy "$installerName" "$package"
then
markPackage "$installerName" "$package"
return 0
fi
done
done
echo "[ERR] Cannot install package with aliases: $*"
return 1
}
i() {
tryPackage "$@"
}
installPackages() {
for installerName in $(listInstallers)
do
# If we can install multiple packages in one go
if commandInstaller "multiinstall" "$installerName" false
then
packages=$(listPackagesForInstaller "$installerName")
[ -z "$packages" ] && continue
commandInstaller "install" "$installerName" notImplementedFallback $packages
else
for packageName in $(listPackagesForInstaller "$installerName")
do
commandInstaller "install" "$installerName" notImplementedFallback "$packageName"
done
fi
done
}

View file

@ -1,8 +0,0 @@
#!/usr/bin/env bash
# TODO De-hardcode
cd ~/.dotfiles/config/automatrop
echo 30000 | sudo tee /sys/class/backlight/intel_backlight/brightness
xrandr --output HDMI-0 --brightness 1
ansible-playbook playbooks/default.yml -e base16_scheme=solarized-dark --tags color --connection local

View file

@ -1,190 +0,0 @@
#!/usr/bin/env bash
# Handles dotfiles
# Yes there are tons of similar scipts yet I wanted no more nor less than what I needed
# Config
if [ -z "$DOTHOME" ]; then
DOTHOME="$HOME"
fi
if [ -z "$DOTREPO" ]; then
DOTREPO="$HOME/.dotfiles"
fi
# Common functions
# From http://stackoverflow.com/a/12498485
function relativePath {
# both $1 and $2 are absolute paths beginning with /
# returns relative path to $2/$target from $1/$source
source=$1
target=$2
common_part=$source # for now
result="" # for now
while [[ "${target#$common_part}" == "${target}" ]]; do
# no match, means that candidate common part is not correct
# go up one level (reduce common part)
common_part="$(dirname $common_part)"
# and record that we went back, with correct / handling
if [[ -z $result ]]; then
result=".."
else
result="../$result"
fi
done
if [[ $common_part == "/" ]]; then
# special case for root (no common path)
result="$result/"
fi
# since we now have identified the common part,
# compute the non-common part
forward_part="${target#$common_part}"
# and now stick all parts together
if [[ -n $result ]] && [[ -n $forward_part ]]; then
result="$result$forward_part"
elif [[ -n $forward_part ]]; then
# extra slash removal
# result="${forward_part:1}" # Removes the . in the beginning...
result="${forward_part#/}"
fi
echo "$result"
}
# Script common functions
function _dotfiles-install-dir { # dir
local dir
local absSource
local absTarget
local relTarget
dir="${1%/}"
dir="${dir#/}"
ls -A "$DOTREPO/$dir" | while read file; do
if [[ -z "$dir" && $(echo $file | grep '^\(\.\|LICENSE\|README\)') ]]; then
continue
fi
if [[ $(echo $file | grep '^.dfrecur$') ]]; then
continue
fi
if [ -z "$dir" ]; then
absSource="$DOTHOME/.$file"
absTarget="$DOTREPO/$file"
else
absSource="$DOTHOME/.$dir/$file"
absTarget="$DOTREPO/$dir/$file"
fi
relTarget="$(relativePath "$DOTHOME/$dir" "$absTarget")"
recurIndicator="$absTarget/.dfrecur"
if [[ -h "$absTarget" ]]; then
if [ -e "$absSource" ]; then
if [ -h "$absSource" ]; then
cmd="cp --no-dereference --force $absTarget $absSource"
if [ $DRY_RUN ]; then
echo $cmd
else
yes | $cmd
fi
else
echo "[ERROR] $absSource already exists, but is not a link"
fi
else
cmd="cp --no-dereference --force $absTarget $absSource"
if [ $DRY_RUN ]; then
echo $cmd
else
yes | $cmd
fi
fi
elif [[ -f "$absTarget" || ( -d $absTarget && ! -f $recurIndicator ) ]]; then
if [ -e "$absSource" ]; then
if [ -h "$absSource" ]; then
cmd="ln --symbolic --no-dereference --force $relTarget $absSource"
if [ $DRY_RUN ]; then
echo $cmd
else
$cmd
fi
else
echo "[ERROR] $absSource already exists, but is not a symbolic link"
fi
else
cmd="ln --symbolic --no-dereference $relTarget $absSource"
if [ $DRY_RUN ]; then
echo $cmd
else
$cmd
fi
fi
elif [[ -d "$absTarget" && -f $recurIndicator ]]; then
if [ -e "$absSource" ]; then
if [ -d "$absSource" ]; then
# echo "Directory $absSource already exists"
_dotfiles-install-dir $dir/$file
else
echo "[ERROR] $absSource already exists, but is not a directory"
fi
else
cmd="mkdir $absSource"
if [ $DRY_RUN ]; then
echo $cmd
else
$cmd
fi
_dotfiles-install-dir $dir/$file
fi
else
echo "[WARNING] Skipped $absTarget"
fi
done
}
# Script functions
function dotfiles_install {
_dotfiles-install-dir /
}
function dotfiles_help {
command="$1"
if [ -n "$command" ]; then
if type "dotfiles_${command}_help" &> /dev/null; then
shift
"dotfiles_${command}_help" "$@"
return $?
fi
fi
echo "Usage: $0 COMMAND"
echo
echo "Commands:"
echo " install Install dotfiles from repository"
echo " help Get help with commands"
echo
echo "Environment variables:"
echo " DOTHOME Where to install dotfiles"
echo " DOTREPO Where do the dotfiles comes from"
return 0
}
# MAIN
command="$1"
shift
if type "dotfiles_$command" &> /dev/null; then
"dotfiles_$command" "$@"
else
dotfiles_help
fi

View file

@ -1,13 +0,0 @@
#!/usr/bin/env bash
# Clears everything it can to save space
rm -rf $HOME/.cache
if which pacman &> /dev/null; then
sudo pacman -Scc
elif which apt-get &> /deb/null; then
sudo apt-get clean
fi
if which journalctl &> /dev/null; then
sudo journalctl --vacuum-size=100M
fi

View file

@ -1,10 +0,0 @@
#!/usr/bin/env bash
# Return a list of packages sorted by size
(echo PACKAGE SIZE; \
for A in /var/lib/pacman/local/*/desc; do
(sed -n 2p $A; (grep '^%SIZE%$' $A -A1 | tail -1)) | tr '\n' ' '; echo
done \
| sort -nrk2) \
| column -t

View file

@ -1,165 +0,0 @@
#!/usr/bin/env bash
# Git for /etc
sudo pacman -S etckeeper --needed
(cd /etc/; sudo git config user.name "etckeeper on $(cat /etc/hostname)"; sudo git config user.email "etckeeper@$(cat /etc/hostname)")
[ ! -d /etc/.git ] && sudo etckeeper init
sudo etckeeper commit "install-arch script: begin"
# Install yay
# TODO Use yay-bin
sudo pacman -S base-devel --needed
if ! pacman -Q yay-bin &> /dev/null
then
mkdir -p $HOME/.cache/yay
cd $HOME/.cache/yay
curl -L https://aur.archlinux.org/cgit/aur.git/snapshot/yay-bin.tar.gz | tar xzvf -
cd yay-bin
makepkg -si
fi
# Keyboard layout
echo '# File wrote by ~/.dotfiles/config/scripts/install-arch
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "us_qwerty-fr"
EndSection
' | sudo tee /etc/X11/xorg.conf.d/00-keyboard.conf
# Backlight (for Intel Devices)
if [ -d /sys/class/backlight/intel_backlight ]
then
sudo pacman -S xf86-video-intel --needed
echo '# File wrote by ~/.dotfiles/config/scripts/install-arch
Section "Device"
Identifier "Intel Graphics"
Driver "intel"
Option "Backlight" "intel_backlight"
EndSection
' | sudo tee /etc/X11/xorg.conf.d/20-intel.conf
fi
# Touchpad
echo '# File wrote by ~/.dotfiles/config/scripts/install-arch
Section "InputClass"
Identifier "touchpad"
Driver "libinput"
MatchIsTouchpad "on"
Option "Tapping" "on"
EndSection
' | sudo tee /etc/X11/xorg.conf.d/30-touchpad.conf
# Disable joystick as mouse
echo '# File wrote by ~/.dotfiles/config/scripts/install-arch
Section "InputClass"
Identifier "joystick catchall"
MatchIsJoystick "on"
MatchDevicePath "/dev/input/event*"
Driver "joystick"
Option "StartKeysEnabled" "False" #Disable mouse
Option "StartMouseEnabled" "False" #support
EndSection
' | sudo tee /etc/X11/xorg.conf.d/50-joystick.conf
# Install same rules with nvidia-xrun
if [ -d /etc/X11/nvidia-xorg.conf.d ]
then
function link { # filename
sudo ln -s ../xorg.conf.d/$1 /etc/X11/nvidia-xorg.conf.d/$1
}
link 00-keyboard.conf
link 20-intel.conf # Yep
link 30-touchpad.conf
link 50-joystick.conf
fi
exit 0
# Uninstall Manjaro's pamac
if pacman -Q pamac &> /dev/null
then
sudo pacman -Rsc pamac --noconfirm
fi
# Ccache
sudo pacman -S ccache --needed
sudo sed 's|BUILDENV=\(.\+\)!ccache\(.\+\)|BUILDENV=\1ccache\2|' /etc/makepkg.conf -i
# Makepkg config
sudo sed 's|BUILDENV=\(.\+\)!color\(.\+\)|BUILDENV=\1color\2|' /etc/makepkg.conf -i
# Pacman config
sudo sed 's|#Color|Color\nILoveCandy|' /etc/pacman.conf -i
# TLP
sudo pacman -S tlp --needed
# sudo sed 's|SATA_LINKPWR_ON_BAT=min_power|SATA_LINKPWR_ON_BAT=max_performance|' /etc/default/tlp -i
sudo systemctl enable tlp.service tlp-sleep.service --now
sudo systemctl disable systemd-rfkill.service systemd-rfkill.socket
sudo tlp start
# Numlock on boot
echo "# File wrote by ~/.dotfiles/config/scripts/install-arch
[Service]
ExecStartPre=/bin/sh -c 'setleds +num < /dev/%I'
" | sudo tee /etc/systemd/system/getty@.service.d/override.conf
# Makeflags
# I'd rather have updates not take my whole CPU
# sudo sed "s|#MAKEFLAGS=\"-j2\"|MAKEFLAGS=\"-j$(nproc)\"|" /etc/makepkg.conf -i
# DHCPCD
sudo pacman -S dhcpcd --needed
sudo systemctl enable dhcpcd --now
# Time synchronisation
sudo pacman -S chrony --needed
echo '# File wrote by ~/.dotfiles/config/scripts/install-arch
server 0.europe.pool.ntp.org offline
server 1.europe.pool.ntp.org offline
server 2.europe.pool.ntp.org offline
server 3.europe.pool.ntp.org offline
driftfile /etc/chrony.drift
rtconutc
rtcsync' | sudo tee /etc/chrony.conf
sudo systemctl enable chronyd --now
echo '# File wrote by ~/.dotfiles/config/scripts/install-arch
if $if_up; then
chronyc online
elif $if_down; then
chronyc offline
fi
' | sudo tee /etc/dhcpcd.exit-hook
# Grub other OS
sudo pacman -S os-prober --needed
sudo grub-mkconfig -o /boot/grub/grub.cfg
# Manual
echo '
# Hibernation:
sudo blkid | grep 'TYPE="swap"'
sudoedit /etc/default/grub
# Add resume=UUID=<UUID-of-swap-partition> to GRUB_CMDLINE_LINUX_DEFAULT
sudo grub-mkconfig -o /boot/grub/grub.cfg
'
echo '
# wpa_supplicant (Wi-Fi)
sudo pacman -S wpa_supplicant
ip link
[ ! -f /etc/wpa_supplicant/wpa_supplicant.conf ] && wpa_passphrase 'DUMMY' 'JustToHaveAConfigFiel' > /etc/wpa_supplicant/wpa_supplicant.conf
# Replace wlo1 with the correct interface
sudo systemctl start wpa_supplicant@wlo1.service
sudo ln -s wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-wlo1.conf
'
sudo etckeeper commit "install-arch script: end"

View file

@ -1,46 +0,0 @@
#!/usr/bin/env bash
# Installs user preferences the way I like it
# NOTE In the process of migrating to a new install workflow.
# This holds stuff that have not been migrated yet.
# TODO A lot of stuff
mkdir -p $HOME/.cache
mkdir -p $HOME/.cache/zsh
mkdir -p $HOME/.cache/mpd
mkdir -p $HOME/.ssh
mkdir -p $HOME/.local/bin
. $HOME/.config/scripts/softwareList
echo "Doing stuff cuz"
if command -v Xorg > /dev/null
then
$HOME/.config/Xresources/configure
pip install --user --requirement $HOME/.config/lemonbar/requirements.txt
fi
changeColors monokai
vim +PlugUpgrade +PlugUpdate +PlugInstall +qall
systemctl enable pulseaudio --user --now
systemctl enable mpd --user --now
echo '# Alt keys on keypad
# In /usr/share/X11/xkb/symbols/us_qwerty-fr add:
# include "keypad(oss)"
'
### RECYCLE BIN
# Help yourself
# # translate-shell
# curl -L git.io/trans > ~/.local/bin/trans
# chmod +x ~/.local/bin/trans
# # sct
# TMP=$(mktemp /tmp/XXXXXXXXXX.c)
# wget https://gist.githubusercontent.com/ajnirp/208c03d3aa7f02c743d2/raw/55bf3eed25739173d8be57b5179ed5542cf40ed6/sct.c -O $TMP
# cc $TMP --std=c99 -lX11 -lXrandr -o $HOME/.local/bin/sct
# rm $TMP

View file

@ -1,43 +0,0 @@
#!/data/data/com.termux/files/usr/bin/env bash
# Setups a Termux system the way I like it
if [ ! -d /data/data/com.termux/files ]; then
echo "This is not a Termux system (or pacman isn't installed)"
return 1
fi
# Configuration
function prompt { # text
while true; do
read -p "$1 [yn] " yn
case $yn in
[Yy]* ) return 1;;
[Nn]* ) return 0;;
* ) echo "Please answer yes or no.";;
esac
done
}
if [ -z $ROOT ]; then
prompt "Is this device rooted and BusyBox installed in /system/bin/?"
ROOT=$?
fi
# Update
apt update
apt upgrade
# (needed for install-prefs)
apt install coreutils
apt install grep
# Used by some of my termux scripts
apt install jq
# Config
touch ~/.hushlogin
if [ $ROOT == 1 ]; then
apt install tsu
echo '/system/bin/mount -o remount,rw /; ln -s /data/data/com.termux/files/usr /usr; /system/bin/mount -o remount,ro /' | tsu
fi

View file

@ -1,8 +0,0 @@
#!/usr/bin/env bash
# TODO De-hardcode
cd ~/.dotfiles/config/automatrop
echo 30000 | sudo tee /sys/class/backlight/intel_backlight/brightness
xrandr --output HDMI-0 --brightness 1
ansible-playbook playbooks/default.yml -e base16_scheme=solarized-light --tags color --connection local

View file

@ -1,2 +0,0 @@
#!/usr/bin/env bash
find -type f -printf '%T+ %p\n' | sort | tail "$@"

View file

@ -1,8 +0,0 @@
#!/usr/bin/env bash
# TODO De-hardcode
cd ~/.dotfiles/config/automatrop
echo 1 | sudo tee /sys/class/backlight/intel_backlight/brightness
xrandr --output HDMI-0 --brightness 0.5
ansible-playbook playbooks/default.yml -e base16_scheme=solarized-dark --tags color --connection local

View file

@ -1,2 +0,0 @@
#!/usr/bin/env bash
find -type f -printf '%T+ %p\n' | sort | head "$@"

View file

@ -1,59 +0,0 @@
#!/usr/bin/env python3
import os
import ovh
import xdg.BaseDirectory
import urllib.request
from pprint import pprint
import json
import logging
import coloredlogs
import argparse
coloredlogs.install(level='DEBUG', fmt='%(levelname)s %(message)s')
log = logging.getLogger()
debug = None
class OvhCli():
ROOT = "https://api.ovh.com/1.0?null"
def __init__(self):
self.cacheDir = os.path.join(xdg.BaseDirectory.xdg_cache_home, 'ovhcli')
# TODO Corner cases: links, cache dir not done, configurable cache
if not os.path.isdir(self.cacheDir):
assert not os.path.exists(self.cacheDir)
os.makedirs(self.cacheDir)
def updateCache(self):
log.info("Downloading the API description")
rootJsonPath = os.path.join(self.cacheDir, 'root.json')
log.debug(f"{self.ROOT} -> {rootJsonPath}")
urllib.request.urlretrieve(self.ROOT, rootJsonPath)
with open(rootJsonPath, 'rt') as rootJson:
root = json.load(rootJson)
basePath = root['basePath']
for apiRoot in root['apis']:
fmt = 'json'
assert fmt in apiRoot['format']
path = apiRoot['path']
schema = apiRoot['schema'].format(format=fmt, path=path)
apiJsonPath = os.path.join(self.cacheDir, schema[1:])
apiJsonUrl = basePath + schema
log.debug(f"{apiJsonUrl} -> {apiJsonPath}")
apiJsonPathDir = os.path.dirname(apiJsonPath)
if not os.path.isdir(apiJsonPathDir):
os.makedirs(apiJsonPathDir)
urllib.request.urlretrieve(apiJsonUrl, apiJsonPath)
def createParser(self):
parser = argparse.ArgumentParser(description='Access the OVH API')
return parser
if __name__ == '__main__':
cli = OvhCli()
# cli.updateCache()
parser = cli.createParser()
args = parser.parse_args()
print(args)

View file

@ -1,55 +0,0 @@
#!/usr/bin/env python
import os
import re
import typing
import datetime
import PIL.ExifTags
import PIL.Image
import progressbar
EXTENSION_PATTERN = re.compile(r'\.JPE?G', re.I)
COMMON_PATTERN = re.compile(r'(IMG|DSC[NF]?|100|P10|f|t)_?\d+', re.I)
EXIF_TAG_NAME = 'DateTimeOriginal'
EXIF_TAG_ID = list(PIL.ExifTags.TAGS.keys())[list(
PIL.ExifTags.TAGS.values()).index(EXIF_TAG_NAME)]
EXIF_DATE_FORMAT = '%Y:%m:%d %H:%M:%S'
def get_pictures(directory: str = ".", skip_renamed: bool = True) \
-> typing.Generator:
for root, _, files in os.walk(directory):
for filename in files:
filename_trunk, extension = os.path.splitext(filename)
# if extension.upper() not in ('.JPEG', '.JPG'):
if not re.match(EXTENSION_PATTERN, extension):
continue
if skip_renamed:
if not re.match(COMMON_PATTERN, filename_trunk):
continue
full_path = os.path.join(root, filename)
yield full_path
def main() -> None:
print("Counting files...")
nb_imgs = len(list(get_pictures()))
print("Processing files...")
iterator = progressbar.progressbar(get_pictures(), max_value=nb_imgs)
for full_path in iterator:
img = PIL.Image.open(full_path)
exif_data = img._getexif()
if exif_data and EXIF_TAG_ID in exif_data:
date_raw = exif_data[EXIF_TAG_ID]
date = datetime.datetime.strptime(date_raw, EXIF_DATE_FORMAT)
new_name = date.isoformat().replace(':', '-') + '.jpg' # For NTFS
print(full_path, new_name)
os.rename(full_path, new_name) # TODO FOLDER
img.close()
if __name__ == "__main__":
# TODO Arguments parsing
main()

View file

@ -1,9 +0,0 @@
#!/usr/bin/env bash
# Generate strong enough password(s)
# This generates a password with ln((26*2+10)**32)/ln(2) ≅ 190 bits of entropy,
# which is a bit above the recommended standars (128 bits) while still having
# a 0 probability that the service will break because of incompatible character
pwgen 32 -s

View file

@ -1,2 +0,0 @@
coloredlogs==10.0
progressbar2==3.47.0

View file

@ -1,2 +0,0 @@
#!/usr/bin/env bash
find . -name "*.sync-conflict-*" -delete

View file

@ -1,287 +0,0 @@
#!/usr/bin/env python3
"""
Script that download videos that are linked as an article
in a RSS feed.
The common use case would be a feed from an RSS aggregator
with the unread items (non-video links are ignored).
"""
# TODO Distribute this correclty, in the meanwhile please do
# pip install --user youtube-dl ConfigArgParse progressbar2
# TODO Better logging (youtube-dl allow to pass loggers)
import sys
from typing import Dict, Set, Tuple
import urllib.request
import urllib.parse
import os
from xml.dom import minidom
import youtube_dl
import configargparse
def get_args() -> configargparse.Namespace:
defaultConfigPath = os.path.join(
os.path.expanduser(os.getenv("XDG_CONFIG_PATH", "~/.config/")), "rssVideos"
)
parser = configargparse.ArgParser(
description="Download videos linked in "
+ "a RSS feed (e.g. an unread feed from "
+ "an RSS aggregator",
default_config_files=[defaultConfigPath],
)
parser.add(
"-c", "--config", required=False, is_config_file=True, help="Configuration file"
)
parser.add(
"--feed",
help="URL of the RSS feed (must be public for now)",
env_var="RSS_VIDEOS_FEED",
required=True,
)
parser.add(
"--videos",
help="Directory to store videos",
env_var="RSS_VIDEOS_VIDEO_DIR",
required=True,
)
parser.add(
"-n",
"--dryrun",
help="Do not download the videos",
action="store_const",
const=True,
default=False,
)
# TODO This feature might require additional documentation and an on/off switch
parser.add(
"--track",
help="Directory where download videos are marked "
+ "to not download them after deletion.",
env_var="RSS_VIDEOS_TRACK",
required=False,
default=".rssVideos",
)
parser.add(
"--max-duration",
help="Skip video longer than this amount of seconds",
env_var="RSS_VIDEOS_MAX_DURATION",
type=int,
default=0,
)
parser.add(
"--format",
help="Use this format to download videos."
+ " See FORMAT SELECTION in youtube-dl(1)",
env_var="RSS_VIDEOS_FORMAT",
default="bestvideo+bestaudio/best",
)
parser.add(
"--subtitles",
help="Download all subtitles",
env_var="RSS_VIDEOS_SUBTITLES",
action="store_true",
)
args = parser.parse_args()
args.videos = os.path.realpath(os.path.expanduser(args.videos))
args.track = os.path.expanduser(args.track)
if not os.path.isabs(args.track):
args.track = os.path.realpath(os.path.join(args.videos, args.track))
return args
def get_links(args: configargparse.Namespace) -> Set[str]:
"""
Read the feed XML, get the links
"""
links = set()
with urllib.request.urlopen(args.feed) as request:
with minidom.parse(request) as xmldoc:
for item in xmldoc.getElementsByTagName("item"):
try:
linkNode = item.getElementsByTagName("link")[0]
link: str = linkNode.childNodes[0].data
links.add(link)
except BaseException as e:
print("Error while getting link from item:", e)
continue
return links
def get_video_infos(
args: configargparse.Namespace, ydl_opts: Dict, links: Set[str]
) -> Dict[str, Dict]:
"""
Filter out non-video links and store video download info
and associated filename
"""
videosInfos = dict()
dry_ydl_opts = ydl_opts.copy()
dry_ydl_opts.update({"simulate": True, "quiet": True})
with youtube_dl.YoutubeDL(dry_ydl_opts) as ydl:
for link in links:
print(f"Researching {link}...")
try:
infos = ydl.extract_info(link)
if args.max_duration > 0 and infos["duration"] > args.max_duration:
print(
f"{infos['title']}: Skipping as longer than max duration: "
f"{infos['duration']} > {args.max_duration}"
)
continue
filepath = ydl.prepare_filename(infos)
filename, extension = os.path.splitext(filepath)
videosInfos[filename] = infos
print(f"{infos['title']}: Added")
except BaseException as e:
print(e)
continue
return videosInfos
def get_downloaded_videos(
args: configargparse.Namespace, videosInfos: Dict[str, Dict]
) -> Tuple[Set[str], Set[str]]:
videosDownloaded = set()
videosPartiallyDownloaded = set()
"""
Read the directory content, delete everything that's not a
video on the download list or already downloaded
"""
for filepath in os.listdir(args.videos):
fullpath = os.path.join(args.videos, filepath)
if not os.path.isfile(fullpath):
continue
filename, extension = os.path.splitext(filepath)
for onlineFilename in videosInfos.keys():
# Full name already there: completly downloaded
# → remove from the download list
if filename == onlineFilename:
videosDownloaded.add(onlineFilename)
break
elif filename.startswith(onlineFilename):
# Subtitle file
# → ignore
if filename.endswith(".vtt"):
break
# Partial name already there: not completly downloaded
# → keep on the download list
videosPartiallyDownloaded.add(onlineFilename)
break
# Unrelated filename: delete
else:
print(f"Deleting: {filename}")
os.unlink(fullpath)
return videosDownloaded, videosPartiallyDownloaded
def get_tracked_videos(args: configargparse.Namespace, known: Set[str]) -> Set[str]:
"""
Return videos previously downloaded (=tracked) amongst the unread videos.
This is stored in the tracking directory as empty extension-less files.
Other tracking markers (e.g. for now read videos) are deleted.
"""
videosTracked = set()
for filepath in os.listdir(args.track):
fullpath = os.path.join(args.track, filepath)
if not os.path.isfile(fullpath):
continue
# Here filename is a filepath as no extension
if filepath in known:
videosTracked.add(filepath)
else:
os.unlink(fullpath)
return videosTracked
def main() -> None:
args = get_args()
os.makedirs(args.videos, exist_ok=True)
os.makedirs(args.track, exist_ok=True)
ydl_opts = {"format": args.format, "allsubtitles": args.subtitles}
print("→ Retrieveing RSS feed")
links = get_links(args)
print(f"→ Getting infos on {len(links)} unread articles")
videosInfos = get_video_infos(args, ydl_opts, links)
print(f"→ Deciding on what to do for {len(videosInfos)} videos")
videosDownloaded, videosPartiallyDownloaded = get_downloaded_videos(
args, videosInfos
)
videosTracked = get_tracked_videos(args, set(videosInfos.keys()))
# Deciding for the rest based on the informations
def markTracked(filename: str) -> None:
markerPath = os.path.join(args.track, onlineFilename)
open(markerPath, "a").close()
videosToDownload: Set[str] = set()
videosReads: Set[str] = set()
for onlineFilename in videosInfos.keys():
# If the video was once downloaded but manually deleted,
# the marker should be left
if onlineFilename in videosTracked:
print(f"Should be marked as read: {onlineFilename}")
# TODO Automatically do that one day maybe?
# Need to login to the FreshRSS API and keep track of
# the item id along the process
videosReads.add(onlineFilename)
elif onlineFilename in videosDownloaded:
markTracked(onlineFilename)
print(f"Already downloaded: {onlineFilename}")
else:
if onlineFilename in videosPartiallyDownloaded:
print(f"Will be continued: {onlineFilename}")
else:
print(f"Will be downloaded: {onlineFilename}")
videosToDownload.add(onlineFilename)
# Download the missing videos
print(f"→ Downloading {len(videosToDownload)} videos")
os.chdir(args.videos)
exit_code = 0
if not args.dryrun:
# TODO Progressbar one day maybe?
# We have all the info we need to make a reliable one
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
for onlineFilename in videosToDownload:
infos = videosInfos[onlineFilename]
# Really download
try:
ydl.process_ie_result(infos, True, {})
markTracked(onlineFilename)
except BaseException as e:
print(e)
exit_code = 1
continue
sys.exit(exit_code)
if __name__ == "__main__":
main()

View file

@ -1,47 +0,0 @@
#!/usr/bin/env bash
# Rename a list of files with a sed pattern
usage() {
echo "Usage: $0 PATTERN [-d] < filelist"
echo
echo "Arguments:"
echo " PATTERN Sed pattern to apply"
echo
echo "Options:"
echo " -d Dry run"
exit 1
}
if [[ -z "$1" ]]; then
usage
fi
pattern="$1"
dry=1
if [[ -n "$2" ]]; then
if [[ "$2" = '-d' ]]; then
dry=0
else
usage
fi
fi
while read src
do
dst="$(echo "$src" | sed "$pattern")"
if [[ $? != 0 ]]; then
echo "ERREUR Invalid sed pattern"
exit 2
fi
if [[ $dry == 0 ]]; then
echo "$src" → "$dst"
else
mv -- "$src" "$dst"
fi
done

View file

@ -1,4 +0,0 @@
#!/usr/bin/bash
layout=`setxkbmap -query | grep layout | tr -s ' ' | cut -d ' ' -f2`
variant=`setxkbmap -query | grep variant | tr -s ' ' | cut -d ' ' -f2`
gkbd-keyboard-display -l ${layout}$'\t'${variant}

View file

@ -1,381 +0,0 @@
#!/usr/bin/env sh
# List of the software I use divided by categories.
# Oh and it asks the category you want to install on
# the running machine too.
# TODO Not tested with Debian derivate
# TODO Not tested on home folder
CONFIG_FILE="${XDG_CONFIG_DIR:=$HOME/.config}/softwareList"
mkdir -p $XDG_CONFIG_DIR
touch $CONFIG_FILE
. $CONFIG_FILE
prompt() { # text
res="none"
while [ "$res" = "none" ]
do
printf "%s [yn] " "$1"
read -r yn
case $yn in
[Yy]* ) return 0;;
[Nn]* ) return 1;;
* ) echo "Please answer y or n.";;
esac
done
}
uservar() { # var text
if [ -z "${!1}" ]
then
prompt "${2}" && res=true || res=false
export "$1"="$res"
echo "$1"="$res" >> "$CONFIG_FILE"
fi
}
echo "Please answer some questions about this machine and what you want to do on it:"
# Setting variables
[ -d /data/data/com.termux/files ] && TERMUX=true || TERMUX=false
$TERMUX && INSTALL_GUI=false
[ "$USER" = "root" ] && SUPERUSER=true
uservar SUPERUSER "Have root permissions?"
uservar INSTALL_GUI "Install a GUI environment?"
$INSTALL_GUI && INSTALL_X=true
INSTALL_WAYLAND=false
uservar INSTALL_PASSWORD "Handle password?"
uservar INSTALL_MAIL "Read/send mail?"
uservar INSTALL_ORGANISATION "Handle agenda/contacts?"
uservar INSTALL_HOUSEKEEPING "Do some housekeeping?"
uservar INSTALL_FPGA "Handle FPGAs?"
uservar INSTALL_UTILITIES "Extra utilities?"
uservar INSTALL_DOCUMENT "Create documents?"
uservar INSTALL_IMAGE "Do image editing?"
uservar INSTALL_MUSIC "Play/edit music?"
uservar INSTALL_VIDEO "Play/edit videos?"
if $INSTALL_GUI
then
uservar INSTALL_WINE "Run Windows applications?"
else
INSTALL_WINE=false
fi
echo "(you can change those answers later in $CONFIG_FILE)"
# Preparing installers
. $HOME/.config/scripts/common/installSoftware
resetInstallers
$SUPERUSER && ! $TERMUX && addSystemInstallers
addUserInstallers
echo "Installers that will be used:"
listInstallers | sed 's/^/- /'
echo "Updating databases & packages"
# updateInstallers # DEBUG put back
echo "Finding packages to install"
# Note: i A B: will try A then B for each installer
# i A || i B: will try A for each installer, then B for each installer
# Package managers (install first)
i yay-bin
i python-pip python3-pip pip3
# TODO Install first and recharge installers
# Utils used by those scripts
i base coreutils # Basic shell commands (ls, rm, cp...)
i bash # Shell
i grep # Text finder
i sed # Text replacer
i tar # Archive tool
i openssl-tool openssl-tools # machines script verification
# Various utilities
$SUPERUSER && i sudo tsu
$TERMUX && i termux-api
# Shell utilities
i moreutils # Advanced shell commands (ts, sponge...)
i tmux # Terminal multiplexer
i bash-completion # Shell completions
i fzf # Fancy file finder
i highlight # Syntax highlighter (TODO No termux)
i powerline-go-bin powerline-go # Nice prompt (potential problem: requires go-pie)
i zsh # Shell
i antigen # ZSH plugins
# TODO Arch only for the following (antigen takes over else)
i zsh-autosuggestions # Shell suggestions
i zsh-completions # Shell completions
i zsh-history-substring-search # Shell config
i zsh-syntax-highlighting # Shell highlighting
i rxvt-unicode-terminfo # So it doesn't act weird in root
# Text edition
(i neovim nvim && i python-neovim python3-neovim) || i vim || i vi # Text editor
# Monitoring utilities
i ncdu # Explore directories by weight on disk
i lsof # Find who/what uses the files (TODO No termux)
i pv # Allow to show progress in pipe
# Network utilities
i openssh # SSH connections
# i proxytunnel # Proxy connections through HTTPS (TODO No termux)
i curl # Transfer URL
i wget # Download URL
i gnu-netcat netcat # Network piping
i socat # Multi-purpose relay
i rsync # Remote file-copying tool
i speedtest-cli # Network speed benchmarker (TODO No termux)
i bind-tools dnsutils # DNS queryier
i whois # Domain name queryier
# Archives utilities
i unzip # Unarchive ZIP files
i unrar # Unarchive RAR files
i p7zip # Unarchive 7z files
# Password handling
if $INSTALL_PASSWORD
then
i pwgen # Password generator
i pass # Password manager
if $INSTALL_GUI
then
i rofi-pass # Password selector
# i autopass.cr # Password selector
fi
fi
if $INSTALL_MAIL
then
# i offlineimap # Synchronize IMAP (legacy)
i isync mbsync # Synchronize IMAP
i msmtp # Send mail via SMTP
i notmuch # Index mail
i neomutt || i mutt # CLI mail client
i lynx # CLI web browser (for HTML mail)
i tiv # CLI image viewer
if $INSTALL_GUI
then
i thunderbird # GUI mail client (just in case)
fi
fi
if $INSTALL_ORGANISATION
then
i vdirsyncer # Synchronize DAV
i khard # Contacts editor
i khal # Calendar editor
i task # Todo-list
i timew # Time-tracker
fi
if $INSTALL_HOUSEKEEPING
then
i syncthing # Synchronize files amongst devices
i borg # Backups
i jdupes # Find duplicates
i duperemove # Find and merge dupplicates on BTRFS partitions
i optipng # Optimize PNG files
i jpegtran libjpeg-turbo # Compress JPEG files
i reflac # Recompress FLAC files
i pacman-contrib # Pactree and more
i shred # Delete sensititve data
i android-tools && i android-udev # Android Debug Bridge
i tigervnc # Remote desktop
fi
# Dev utilities
i base-devel build-essential || (i make; i gcc)
i git
[ -z "$INSTALL_DEV" ] && $TERMUX && INSTALL_DEV=false
if $INSTALL_DEV
then
# Misc/Reusable
i man # Documentation
i strace # Tracer
i ctags universal-ctags exuberant-ctags # Tags generator
i perf # Allow verifying performance of software
# C/C++
i cmake # C++ Build system
i clang # C/C++ Compiler
i ccache # Build cache
i gdb # Debugger
# JS
i jq # CLI JSON file handler
# Python
i python-language-server # Python language server
i mypy && i pyls-mypy # Static typing checker for Python
i python-language-server-black # Python code formatter
# Bash
i bash-language-server # Bash / SH language server
fi
if $INSTALL_FPGA
then
i yosys # Verilog processor
i iverilog # Verilog simulator
i ghdl # VHDL simulator
i gtkwave # Simulation file viewer
fi
if $INSTALL_UTILITIES
then
i visidata # CSV file reader
i insect # Unit calculator
i zbar # Read QR codes
i htop # View process usage
$SUPERUSER && i iotop # View process I/O
i progress # Show progress of functions
fi
if $INSTALL_DOCUMENT
then
i pandoc # Document converter
i texlive-most && i texlive-lang # LaTeX renderer
i pdftk # PDF manipulator
i translate-shell # Translator
i inkscape # Vector image converter
i optipng # Optimize PNG files
i jpegtran libjpeg-turbo # Compress JPEG files
i libreoffice-fresh # Office suite
i hunspell-en_GB # Spell checker British english
i hunspell-en_US # Spell checker American english
# i libreoffice-extension-grammalecte-fr # Spell checker French
i libreoffice-extension-languagetool # Complimentary spell checker various
# TODO The last two can't cohabit
fi
if $INSTALL_IMAGE
then
i imagemagick # CLI Image manipulator
i gimp # Photo editor
i darktable # Raw photo editor
i inkscape # Vectorial image editor
i optipng # Optimize PNG files
i jpegtran libjpeg-turbo # Compress JPEG files
fi
if $INSTALL_MUSIC
then
i mpv # Audio/Video player
i puddletag-qt5-git puddletag # Musig tag editor
# (remove -qt5 once it has been merged upstream)
i mpd # Music player daemon
i mpc # CLI MPD client
i vimpc-git # CLI UI MPD client
i musescore # Music sheet editor
i ashuffle # Auto-fill MPD playlist
i audacity # Audio editor
fi
if $INSTALL_VIDEO
then
i vlc # Video player
i mpv # Audio/Video player
i ffmpeg # Video/Audio file handler
i youtube-dl # Downloader for videos
i megatools # Downloader for mega.nz
if $INSTALL_X
then
i simplescreenrecorder # Screen recorder
fi
fi
if $INSTALL_WINE
then
# TODO Add multilib repo and pacman -Sy
i wine # Wine
i wine-gecko # Wine Internet Explorer
i wine-mono # Wine .NET
i mono # Mono .NET
i lib32-libpulse # Sound for Wine with pulseaudio
fi
# Desktop environment
if $INSTALL_GUI
then
i firefox # Web browser
# Extensions: Dark reader, Decentraleyes, Tridactyl, uBlock Origin, Containers, No Tab
i xkb-qwerty-fr # French QWERTY disposition
i thunar # Directory browser (just in case)
i gedit # Visual editor (just in case)
i feh # Background / Image viewer
i zathura && i zathura-pdf-mupdf # PDF viewer
i ttf-dejavu # Font
i ttf-twemoji # Emoji fonts
i adobe-source-han-sans-otc-fonts # Chinese/Japanese/Korean fonts
i sox # For beeps and stuff
i meld # For comparison
i python-magic # Dependency of o
i yubikey-touch-detector # Show a notification when Yubikey needs pressing
if $INSTALL_X
then
i i3-wm # WM
i libgnomekbd # Show keyboard layout
i dunst # Notifications
i i3lock # Locker
i numlockx # Numlock auto-unlock
i rofi # HUD selector
i rofimoji # emoji selector
i rxvt-unicode # Terminal emulator
i urxvt-resize-font-git # Resize fonts for urxvt
i scrot # Screenshot taker
i trayer # Tray icons (just in case)
i unclutter # Auto mask mouse
i xautolock # Auto lock screen
i xclip # Copy/paste
i lemonbar-xft-git lemonbar # Bottom bar
i wireless_tools # Bottom bar WiFi Indicator (iwgetid)
i autorandr # Multiple screen configurations
i keynav-enhanced keynav # Use mouse with keyboard
i pacmixer # To change PA volumes
i sct # Red filter # TODO Autocompile
i xorg-xinit # To launch X
i xorg-xbacklight xbacklight # For laptop brightness
i pulseaudio # To get ausdio
# TODO Bluetooth headset stuff
fi
if $INSTALL_WAYLAND
then
i sway
fi
fi
echo "Listing software to install"
listInstallers | while read -r installerName
do
echo " Installer $installerName will install:"
listPackagesForInstaller "$installerName" | sed 's/^/ - /'
done
prompt "Okay with those?" || exit 0
echo "Installing packages"
installPackages

View file

@ -1,21 +0,0 @@
#!/usr/bin/env python3
import taskw
import sys
tw = taskw.TaskWarrior()
total = 0
number = 0
statuses = set()
for task in tw._get_task_objects(*sys.argv[1:], 'export'):
statuses.add(task['status'])
if task['status'] not in {'pending', 'waiting'}:
continue
urgency = task['urgency']
if urgency <= 0:
continue
total += urgency
number += 1
print(f"Σ{total:.3f} #{number}")

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