1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
|
#+TITLE: General System Configurations
#+PROPERTY: header-args :mkdirp yes
#+auto_tangle: t
#+STARTUP: overview
* Git
#+begin_src conf :tangle ~/.gitconfig
[user]
email = [email protected]
name = Thanos Apollo
signingkey = 5F6B32E27F433AA9E42A530A0A50703D1CE7AE29
[commit]
gpgsign = true
[format]
subjectPrefix = PATCH
[sendemail]
from = Thanos Apollo <[email protected]>
smtpserver = smtp.fastmail.com
smtpuser = [email protected]
smtpencryption = ssl
smtpserverport = 465
annotate = yes
[credential "smtp://smtp.fastmail.com:465"]
helper = "!f() { echo [email protected]; echo \"password=$(pass show fastmail.com/thanosapollo.com | sed -n '3p')\"; }; f"
#+end_src
* Hyprland
** Config
#+begin_src conf :tangle ~/.config/hypr/hyprland.conf
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=transform,preferred,auto,auto
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
# Some default env vars.
env = XCURSOR_SIZE,24
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = us,gr,my-cyr
kb_variant =
kb_model =
kb_options = ctrl:swapcaps, grp:alt_space_toggle
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = no
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 5
gaps_out = 10
border_size = 2
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)
layout = master
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
active_opacity = 0.98
inactive_opacity = 0.99
rounding = 10
blur = no
blur_size = 3
blur_passes = 1
blur_new_optimizations = on
drop_shadow = yes
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba(1a1a1aee)
}
animations {
enabled = yes
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = yes # you probably want this
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
new_is_master = false
mfact = 0.53
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = off
}
# Personal Configuration for Hyprland
# Thanos Apollo 2023
# See https://wiki.hyprland.org/Configuring/ for more
device:epic mouse V1 {
sensitivity = -0.5
}
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = CTRL_ALT
# Binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = , F5, exec, "/home/$USER/Developer/scripts/keyboard-light-x220.sh"
bind = , F1, exec, swaylock --screenshot --clock --effect-blur 10x9 --indicator
bind = , F8, exec, brightnessctl set +5%
bind = , F7, exec, brightnessctl set 5-%
bind = , XF86AudioLowerVolume, exec, amixer sset Master 5%-
bind = , XF86AudioRaiseVolume, exec, amixer sset Master 5%+
bind = $mainMod, Return, exec, emacsclient -c
bind = $mainMod, W, exec, kitty
bind = $mainMod, Q, killactive,
bind = $mainMod SHIFT, Q, exit,
bind = $mainMod, R, exec, rofi -show drun
bind = $mainMod, E, exec, tessen --dmenu=rofi
bind = $mainMod, V, togglefloating,
bind = $mainMod, J, togglesplit, # dwindle
bind = ALT, F12, exec, grim -g "$(slurp)"
bind = ALT, F11, fullscreen
# Move focus with mainMod + arrow keys
bind = $mainMod, B, movefocus, l
bind = $mainMod, F, movefocus, r
bind = $mainMod, N, movefocus, d
bind = $mainMod, P, movefocus, u
bind = $mainMod SHIFT, P, movewindow, u
bind = $mainMod SHIFT, N, movewindow, d
bind = $mainMod SHIFT, F, movewindow, r
bind = $mainMod SHIFT, B, movewindow, l
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Scroll through existing workspaces with mainMod + scroll
bind = ALT, mouse_down, workspace, e+1
bind = ALT, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = ALT, mouse:272, movewindow
bindm = ALT, mouse:273, resizewindow
exec-once = waybar
exec-once = hyprpaper
exec-once = emacs --daemon
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
#+end_src
** Hyprpaper
#+begin_src conf :tangle ~/.config/hypr/hyprpaper.conf
preload = ~/Wallpapers/wallpaper-cyberpunk.jpg
preload = ~/Wallpapers/wallpaper-cyberpunk2.jpg
wallpaper = DP-1, ~/Wallpapers/wallpaper-cyberpunk.jpg
wallpaper = HDMI-A-1, ~/Wallpapers/wallpaper-cyberpunk.jpg
wallpaper = LVDS-1, ~/Wallpapers/wallpaper-cyberpunk.jpg
#+end_src
* Waybar
** Configuration
#+begin_src conf :tangle ~/.config/waybar/config.jsonc
{
"layer": "top",
"position": "top",
"mod": "dock",
"exclusive": true,
"passthrough": false,
"gtk-layer-shell": true,
"height": 0,
"modules-left": [
"clock",
"custom/weather"
// "hyprland/window",
],
"modules-center": ["wlr/workspaces"],
"modules-right": [
"tray",
"custom/updates",
"custom/language",
"battery",
"backlight",
"custom/volume"
// "pulseaudio#microphone"
],
"hyprland/window": {
"format": "{}"
},
"wlr/workspaces": {
"disable-scroll": true,
"all-outputs": true,
"on-click": "activate",
//"format": "{icon}",
"persistent_workspaces": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": [],
"6": [],
"7": [],
"8": [],
"9": [],
"10": []
}
},
"custom/updates": {
"exec": "(pacman -Qu ; paru -Qua) | wc -l",
"interval": 7200,
"format": " {}"
},
"custom/weather" : {
"tooltip" : true,
"format" : "{}",
"interval" : 30,
"exec" : "~/Developer/scripts/waybar-wttr.py",
"return-type" : "json"
},
"tray": {
"icon-size": 13,
"spacing": 10
},
"clock": {
"format": "{: %R %d/%m}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"
},
"backlight": {
"device": "intel_backlight",
"format": "{icon} {percent}%",
"format-icons": ["", "", ""],
"on-scroll-up": "brightnessctl set 1%+",
"on-scroll-down": "brightnessctl set 1%-",
"min-length": 6
},
"battery": {
"states": {
"good": 95,
"warning": 30,
"critical": 20
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-alt": "{time} {icon}",
"format-icons": ["", "", "", "", "", "", "", "", "", "", ""]
},
"pulseaudio": {
"format": "{icon} {volume}%",
"tooltip": false,
"format-muted": " Muted",
"on-click": "pamixer -t",
"on-scroll-up": "pamixer -i 5",
"on-scroll-down": "pamixer -d 5",
"scroll-step": 5,
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
}
},
"custom/volume": {
"exec": "~/Developer/scripts/sound.sh",
"interval": 1,
"format": " {}",
"tooltip": true
}
// "custom/pipewire": {
// "format": {},
// "exec": "awk -F"[][]" '/Left:/ { print $2 }' <(amixer sget Master)",
// "interval": 10
// },
}
#+end_src
** Style
#+begin_src css :tangle ~/.config/waybar/style.css
,* {
border: none;
border-radius: 0;
font-family: Jetbrains Mono, Cartograph CF Nerd Font, monospace;
font-weight: bold;
font-size: 14px;
min-height: 0;
}
window#waybar {
background: rgba(21, 18, 27, 0);
color: #cdd6f4;
}
tooltip {
background: #0d1017;
border-radius: 10px;
border-width: 2px;
border-style: solid;
border-color: #11111b;
}
#workspaces button {
padding: 5px;
color: #313244;
margin-right: 5px;
}
#workspaces button.active {
color: #39bae6;
}
#workspaces button.focused {
color: #a6adc8;
background: #eba0ac;
border-radius: 10px;
}
#workspaces button.urgent {
color: #11111b;
background: #a6e3a1;
border-radius: 10px;
}
#workspaces button:hover {
background: #11111b;
color: #cdd6f4;
border-radius: 10px;
}
#custom-language,
#custom-updates,
#custom-caffeine,
#custom-weather,
#window,
#clock,
#battery,
#pulseaudio,
#custrom-volume,
#network,
#workspaces,
#tray,
#backlight {
background: #0d1017;
padding: 0px 10px;
margin: 3px 0px;
margin-top: 10px;
border: 1px solid #181825;
}
#tray {
border-radius: 10px;
margin-right: 10px;
}
#workspaces {
background: #0d1017;
border-radius: 10px;
margin-left: 10px;
padding-right: 0px;
padding-left: 5px;
}
#custom-caffeine {
color: #89dceb;
border-radius: 10px 0px 0px 10px;
border-right: 0px;
margin-left: 10px;
}
#custom-language {
color: #f38ba8;
border-left: 0px;
border-right: 0px;
}
#custom-updates {
color: #ff8f40;
border-left: 0px;
border-right: 0px;
}
#window {
border-radius: 10px;
margin-left: 20px;
margin-right: 60px;
}
#clock {
color: #39bae6;
border-radius: 10px 0px 0px 10px;
margin-left: 0px;
border-right: 0px;
}
#network {
color: #f9e2af;
border-left: 0px;
border-right: 0px;
}
#pulseaudio {
color: #59c2ff;
border-left: 5px;
border-right: 5px;
}
#custom-volume {
background: #0d1017;
color: #59c2ff;
padding: 8px;
margin-top: 11px;
margin-bottom: 3px;
border-left: 0px;
border-right: 0px;
}
#battery {
color: #a6e3a1;
border-radius: 0 10px 10px 0;
margin-right: 10px;
border-left: 0px;
}
#custom-weather {
border-radius: 0px 10px 10px 0px;
border-right: 0px;
margin-left: 0px;
}
#+end_src
* Moc
** Config
#+begin_src conf :tangle ~/.moc/config
StartInMusicDir = yes
# How to sort? FileName is the option's only value for now.
Sort = FileName
# Show errors in the streams (for example, broken frames in MP3 files)?
ShowStreamErrors = no
# Ignore CRC errors in MP3 files? Most players do that, so the default
# value is 'yes'.
#MP3IgnoreCRCErrors = yes
# Set playback toggles.
#Repeat = no
#Shuffle = no
AutoNext = yes
# Default FormatString:
#
# %n - Track number
# %a - Artist
# %A - Album
# %t - Title
# %(X:TRUE:FALSE) - Ternary expression: if X exists, do TRUE,
# otherwise FALSE. The escape character must
# be doubled (i.e., '\\'). (See zshmisc
# documentation for more information.)
#
#FormatString = "%(n:%n :)%(a:%a - :)%(t:%t:)%(A: \(%A\):)"
# Input and output buffer sizes (in kilobytes).
#InputBuffer = 512 # Minimum value is 32KB
#OutputBuffer = 512 # Minimum value is 128KB
# How much to fill the input buffer before playing (in kilobytes)?
# This can't be greater than the value of InputBuffer. While this has
# a positive effect for network streams, it also causes the broadcast
# audio to be delayed.
#Prebuffering = 64
# Use this HTTP proxy server for internet streams. If not set, the
# environment variables http_proxy and ALL_PROXY will be used if present.
#
# Format: HTTPProxy = PROXY_NAME:PORT
#
#HTTPProxy =
# Sound driver - OSS, ALSA, JACK, SNDIO (on OpenBSD) or null (only for
# debugging). You can enter more than one driver as a colon-separated
# list. The first working driver will be used.
SoundDriver = PULSEAUDIO:JACK:ALSA:OSS
# Jack output settings.
# JackClientName = "moc"
# JackStartServer = no
# JackOutLeft = "system:playback_1"
# JackOutRight = "system:playback_2"
# OSS output settings.
#OSSDevice = /dev/dsp
#OSSMixerDevice = /dev/mixer
#OSSMixerChannel1 = pcm # 'pcm', 'master' or 'speaker'
#OSSMixerChannel2 = master # 'pcm', 'master' or 'speaker'
# ALSA output settings. If you need to dump the audio produced by MOC
# to a file for diagnostic purposes, the following setting of 'ALSADevice'
# should do that:
#
#ALSADevice=tee:hw,'/tmp/out.wav',wav
#
#ALSADevice = default
#ALSAMixer1 = PCM
ALSAMixer2 = Master
# Under some circumstances on 32-bit systems, audio played continously
# for long periods of time may begin to stutter. Setting this option to
# 'yes' will force MOC to avoid ALSA's dmix resampling and prevent this
# stutter. But it also has other implications:
#
# - You may experience unacceptably high CPU load.
# - ALSA's resampler plug-ins will not be used.
# - The resampling may be of lower quality than ALSA would provide.
# - You may need to try different "ResampleMethod" option settings.
# - The "ForceSampleRate" option may be ineffective.
# - If libsamplerate is not configured, many audios may be unplayable.
#
#ALSAStutterDefeat = no
# Save software mixer state?
# If enabled, a file 'softmixer' will be created in '~/.moc/' storing the
# mixersetting set when the server is shut down.
# Note that there is a "hidden" 'Amplification' setting in that file.
# Amplification (0-200) is used to scale the mixer setting (0-100). This
# results in a higher signal amplitude but may also produce clipping.
#Softmixer_SaveState = yes
# Save equalizer state?
# If enabled, a file 'equalizer' will be created in '~/.moc/' storing the
# equalizer settings when the server is shut down.
# Note that there is a "hidden" 'Mixin' setting in that file.
# Mixin (0.0-1.0) is used to determine how much of the original signal is
# used after equalizing. 0 means to only use the equalized sound, while 1
# effectively disabled the mixer. The default is 0.25.
#Equalizer_SaveState = yes
# Show files with dot at the beginning?
#ShowHiddenFiles = no
# Hide file name extensions?
#HideFileExtension = no
# Show file format in menu?
#ShowFormat = yes
# Show file time in menu? Possible values: 'yes', 'no' and 'IfAvailable'
# (meaning show the time only when it is already known, which often works
# faster).
#ShowTime = IfAvailable
# Show time played as a percentage in the time progress bar.
#ShowTimePercent = no
# Values of the TERM environment variable which are deemed to be managed by
# screen(1). If you are setting a specific terminal using screen(1)'s
# '-T <term>' option, then you will need to add 'screen.<term>' to this list.
# Note that this is only a partial test; the value of the WINDOW environment
# variable must also be a number (which screen(1) sets).
#ScreenTerms = screen:screen-w:vt100
# Values of the TERM environment variable which are deemed to be xterms. If
# you are using MOC within screen(1) under an xterm, then add screen(1)'s
# TERM setting here as well to cause MOC to update the xterm's title.
#XTerms = xterm
#XTerms += xterm-colour:xterm-color
#XTerms += xterm-256colour:xterm-256color
#XTerms += rxvt:rxvt-unicode
#XTerms += rxvt-unicode-256colour:rxvt-unicode-256color
#XTerms += eterm
# Theme file to use. This can be absolute path or relative to
# /usr/share/moc/themes/ (depends on installation prefix) or
# ~/.moc/themes/ .
#
# Example: Theme = laras_theme
#
Theme = nightly_enhanced
# The theme used when running on an xterm.
#
# Example: XTermTheme = transparent-background
#
#XTermTheme =
# Should MOC try to autoload the default lyrics file for an audio? (The
# default lyrics file is a text file with the same file name as the audio
# file name with any trailing "extension" removed.)
#AutoLoadLyrics = yes
# MOC directory (where pid file, socket and state files are stored).
# You can use ~ at the beginning.
#MOCDir = ~/.moc
# Use mmap() to read files. mmap() is much slower on NFS.
#UseMMap = no
# Use MIME to identify audio files. This can make for slower loading
# of playlists but is more accurate than using "extensions".
#UseMimeMagic = no
# Assume this encoding for ID3 version 1/1.1 tags (MP3 files). Unlike
# ID3v2, UTF-8 is not used here and MOC can't guess how tags are encoded.
# Another solution is using librcc (see the next option). This option is
# ignored if UseRCC is set to 'yes'.
#ID3v1TagsEncoding = WINDOWS-1250
# Use librcc to fix ID3 version 1/1.1 tags encoding.
#UseRCC = yes
# Use librcc to filenames and directory names encoding.
#UseRCCForFilesystem = yes
# When this option is set the player assumes that if the encoding of
# ID3v2 is set to ISO-8859-1 then the ID3v1TagsEncoding is actually
# that and applies appropriate conversion.
#EnforceTagsEncoding = no
# Enable the conversion of filenames from the local encoding to UTF-8.
#FileNamesIconv = no
# Enable the conversion of the xterm title from UTF-8 to the local encoding.
#NonUTFXterm = no
# Should MOC precache files to assist gapless playback?
#Precache = yes
# Remember the playlist after exit?
#SavePlaylist = yes
# When using more than one client (interface) at a time, do they share
# the playlist?
#SyncPlaylist = yes
# Choose a keymap file (relative to '~/.moc/' or using an absolute path).
# An annotated example keymap file is included ('keymap.example').
#
# Example: Keymap = my_keymap
#
Keymap = keymap
# Use ASCII rather than graphic characters for drawing lines. This
# helps on some terminals.
#ASCIILines = no
# FastDirs, these allow you to jump directly to a directory, the key
# bindings are in the keymap file.
#
# Examples: Fastdir1 = /mp3/rock
# Fastdir2 = /mp3/electronic
# Fastdir3 = /mp3/rap
# Fastdir4 = /mp3/etc
#
#Fastdir1 =
#Fastdir2 =
#Fastdir3 =
#Fastdir4 =
#Fastdir5 =
#Fastdir6 =
#Fastdir7 =
#Fastdir8 =
#Fastdir9 =
#Fastdir10 =
# How fast to seek (in number of seconds per keystroke). The first
# option is for normal seek and the second for silent seek.
#SeekTime = 1
#SilentSeekTime = 5
# PreferredDecoders allows you to specify which decoder should be used
# for any given audio format. It is a colon-separated list in which
# each entry is of the general form 'code(decoders)', where 'code'
# identifies the audio format and 'decoders' is a comma-separated list
# of decoders in order of preference.
#
# The audio format identifier may be either a filename extension or a
# MIME media type. If the latter, the format is 'type/subtype' (e.g.,
# 'audio/flac'). Because different systems may give different MIME
# media types, any 'x-' prefix of the subtype is ignored both here and
# in the actual file MIME type (so all combinations of 'audio/flac' and
# 'audio/x-flac' match each other).
#
# For Internet streams the matching is done on MIME media type and on
# actual content. For files the matches are made on MIME media type
# (if the 'UseMimeMagic' option is set) and on filename extension. The
# MIME media type of a file is not determined until the first entry for
# MIME is encountered in the list.
#
# The matching is done in the order of appearance in the list with any
# entries added from the command line being matched before those listed
# here. Therefore, if you place all filename extension entries before
# all MIME entries you will speed up MOC's processing of directories
# (which could be significant for remote file systems).
#
# The decoder list may be empty, in which case no decoders will be used
# for files (and files with that audio format ignored) while Internet
# streams will be assessed on the actual content. Any decoder position
# may contain an asterisk, in which case any decoder not otherwise listed
# which can handle the audio format will be used. It is not an error to
# list the same decoder twice, but neither does it make sense to do so.
#
# If you have a mix of audio and non-audio files in your directories, you
# may wish to include entries at top of the list which ignore non-audio
# files by extension.
#
# In summary, the PreferredDecoders option provides fine control over the
# type of matching which is performed (filename extension, MIME media
# type and streamed media content) and which decoder(s) (if any) are used
# based on the option's list entries and their ordering.
#
# Examples: aac(aac,ffmpeg) first try FAAD2 for AACs then FFmpeg
# mp3() ignore MP3 files
# wav(*,sndfile) use sndfile for WAV as a last resort
# ogg(vorbis,*):flac(flac,*) try Xiph decoders first
# ogg():audio/ogg() ignore OGG files, and
# force Internet selection by content
# gz():html() ignore some non-audio files
#
# Any unspecified audio formats default to trying all decoders.
# Any unknown (or misspelt) drivers are ignored.
# All names are case insensitive.
# The default setting reflects the historical situation modified by
# the experience of users.
#
#PreferredDecoders = aac(aac,ffmpeg):m4a(ffmpeg)
#PreferredDecoders += mpc(musepack,*,ffmpeg):mpc8(musepack,*,ffmpeg)
#PreferredDecoders += sid(sidplay2):mus(sidplay2)
#PreferredDecoders += wav(sndfile,*,ffmpeg)
#PreferredDecoders += wv(wavpack,*,ffmpeg)
#PreferredDecoders += audio/aac(aac):audio/aacp(aac):audio/m4a(ffmpeg)
#PreferredDecoders += audio/wav(sndfile,*)
# The following PreferredDecoders attempt to handle the ambiguity surrounding
# container types such as OGG for files. The first two entries will force
# a local file to the correct decoder (assuming the .ogg file contains Vorbis
# audio), while the MIME media types will cause Internet audio streams to
# be assessed on content (which may be either Vorbis or Speex).
#
#PreferredDecoders += ogg(vorbis,ffmpeg):oga(vorbis,ffmpeg):ogv(ffmpeg)
#PreferredDecoders += opus(ffmpeg)
#PreferredDecoders += spx(speex)
#PreferredDecoders += application/ogg(vorbis):audio/ogg(vorbis)
# Which resampling method to use. There are a few methods of resampling
# sound supported by libresamplerate. The default is 'Linear') which is
# also the fastest. A better description can be found at:
#
# http://www.mega-nerd.com/libsamplerate/api_misc.html#Converters
#
# but briefly, the following methods are based on bandlimited interpolation
# and are higher quality, but also slower:
#
# SincBestQuality - really slow (I know you probably have an xx GHz
# processor, but it's still not enough to not see
# this in the top output :) The worst case
# Signal-to-Noise Ratio is 97dB.
# SincMediumQuality - much faster.
# SincFastest - the fastest bandlimited interpolation.
#
# And these are lower quality, but much faster methods:
#
# ZeroOrderHold - really poor quality, but it's really fast.
# Linear - a bit better and a bit slower.
#
#ResampleMethod = Linear
# Always use this sample rate (in Hz) when opening the audio device (and
# resample the sound if necessary). When set to 0 the device is opened
# with the file's rate.
#ForceSampleRate = 0
# By default, even if the sound card reports that it can output 24bit samples
# MOC converts 24bit PCM to 16bit. Setting this option to 'yes' allows MOC
# to use 24bit output. (The MP3 decoder, for example, uses this format.)
# This is disabled by default because there were reports that it prevents
# MP3 files from playing on some soundcards.
#Allow24bitOutput = no
# Use realtime priority for output buffer thread. This will prevent gaps
# while playing even with heavy load. The user who runs MOC must have
# permissions to set such a priority. This could be dangerous, because it
# is possible that a bug in MOC will freeze your computer.
#UseRealtimePriority = no
# The number of audio files for which MOC will cache tags. When this limit
# is reached, file tags are discarded on a least recently used basis (with
# one second resolution). You can disable the cache by giving it a size of
# zero. Note that if you decrease the cache size below the number of items
# currently in the cache, the number will not decrease immediately (if at
# all).
#TagsCacheSize = 256
# Number items in the playlist.
#PlaylistNumbering = yes
# Main window layouts can be configured. You can change the position and
# size of the menus (directory and playlist). You have three layouts and
# can switch between then using the 'l' key (standard mapping). By default,
# only two layouts are configured.
#
# The format is as follows:
#
# - Each layout is described as a list of menu entries.
# - Each menu entry is of the form:
#
# menu(position_x, position_y, width, height)
#
# where 'menu' is either 'directory' or 'playlist'.
# - The parameters define position and size of the menu. They can
# be absolute numbers (like 10) or a percentage of the screen size
# (like 45%).
# - 'width' and 'height' can have also value of 'FILL' which means
# fill the screen from the menu's position to the border.
# - Menus may overlap.
#
# You must describe at least one menu (default is to fill the whole window).
# There must be at least one layout (Layout1) defined; others can be empty.
#
# Example: Layout1 = playlist(50%,50%,50%,50%)
Layout1 = directory(0,0,100%,100%):playlist(0,0,100%,100%)
CanStartInPlaylist = yes
# Layout3 = ""
#
# Just one layout, the directory will occupy the whole
# screen, the playlist will have 1/4 of the screen size
# and be positioned at lower right corner. (Note that
# because the playlist will be hidden by the directory
# you will have to use the TAB key to make the playlist
# visible.)
#
# Example: Layout1 = playlist(0,0,100%,10):directory(0,10,100%,FILL)
#
# The screen is split into two parts: playlist at the top
# and the directory menu at the bottom. Playlist will
# occupy 10 lines and the directory menu the rest.
#
#Layout1 = directory(0,0,50%,100%):playlist(50%,0,FILL,100%)
#Layout2 = directory(0,0,100%,100%):playlist(0,0,100%,100%)
#Layout3 = ""
# When the song changes, should the menu be scrolled so that the currently
# played file is visible?
#FollowPlayedFile = yes
# What to do if the interface was started and the server is already playing
# something from the playlist? If CanStartInPlaylist is set to 'yes', the
# interface will switch to the playlist. When set to 'no' it will start
# from the last directory.
#CanStartInPlaylist = yes
# Executing external commands (1 - 10) invoked with key commands (F1 - F10
# by default).
#
# Some arguments are substituted before executing:
#
# %f - file path
# %i - title made from tags
# %S - start block mark (in seconds)
# %E - end block mark (in seconds)
#
# Data from tags can also be substituted:
#
# %t - title
# %a - album
# %r - artist
# %n - track
# %m - time of the file (in seconds)
#
# The parameters above apply to the currently selected file. If you change
# them to capital letters, they are taken from the file currently playing.
#
# Programs are run using execv(), not a shell, so you can't do things like
# redirecting the output to a file. The command string is split using blank
# characters as separators; the first element is the command to be executed
# and the rest are its parameters, so if you use "echo Playing: %I" we run
# program 'echo' (from $PATH) with 2 parameters: the string 'Playing:' and
# the title of the file currently playing. Even if the title contains
# spaces, it's still one parameter and it's safe if it contains `rm -rf /`.
#
# Examples: ExecCommand1 = "cp %f /mnt/usb_drive"
# ExecCommand2 = "/home/joe/now_playing %I"
#
#ExecCommand1 =
#ExecCommand2 =
#ExecCommand3 =
#ExecCommand4 =
#ExecCommand5 =
#ExecCommand6 =
#ExecCommand7 =
#ExecCommand8 =
#ExecCommand9 =
#ExecCommand10 =
# Display the cursor in the line with the selected file. Some braille
# readers (the Handy Tech modular series ZMU 737, for example) use the
# cursor to focus and can make use of it to present the file line even
# when other fields are changing.
#UseCursorSelection = no
# Set the terminal title when running under xterm.
#SetXtermTitle = yes
# Set the terminal title when running under screen(1). If MOC can detect
# that it is running under screen(1), then it will set an appropriate
# title (see description of ScreenTerms above). However, if multiple
# levels of screen management are involved, detection might fail and this
# could cause a screen upset. In that situation you can use this option
# to force screen titles off.
#SetScreenTitle = yes
# Display full paths instead of just file names in the playlist.
#PlaylistFullPaths = yes
# The following setting describes how block markers are displayed in
# the play time progress bar. Its value is a string of exactly three
# characters. The first character is displayed in a position which
# corresponds to the time marked as the start of a block and the last
# character to the time marked as the end of the block. The middle
# character is displayed instead if both the start and the end of the block
# would fall in the same position (within the resolution of the interface).
# You can turn off the displaying of these block marker positions by using
# three space characters.
#BlockDecorators = "`\"'"
# How long (in seconds) to leave a message displayed on the screen.
# Setting this to a high value allows you to scroll through the messages
# using the 'hide_message' key. Setting it to zero means you'll have to
# be quick to see any message at all. Any new messages will be queued up
# and displayed after the current message's linger time expires.
#MessageLingerTime = 3
# Does MOC display a prefix on delayed messages indicating
# the number of queued messages still to be displayed?
#PrefixQueuedMessages = yes
# String to append to the queued message count if any
# error messages are still waiting to be displayed.
#ErrorMessagesQueued = "!"
# Self-describing ModPlug options (with 'yes' or 'no' values).
#ModPlug_Oversampling = yes
#ModPlug_NoiseReduction = yes
#ModPlug_Reverb = no
#ModPlug_MegaBass = no
#ModPlug_Surround = no
# ModPlug resampling mode.
# Valid values are:
#
# FIR - 8 tap fir filter (extremely high quality)
# SPLINE - Cubic spline interpolation (high quality)
# LINEAR - Linear interpolation (fast, good quality)
# NEAREST - No interpolation (very fast, extremely bad sound quality)
#
#ModPlug_ResamplingMode = FIR
# Other self-describing ModPlug audio characteristic options.
# (Note that the 32 bit sample size seems to be buggy.)
#ModPlug_Channels = 2 # 1 or 2 channels
#ModPlug_Bits = 16 # 8, 16 or 32 bits
#ModPlug_Frequency = 44100 # 11025, 22050, 44100 or 48000 Hz
#ModPlug_ReverbDepth = 0 # 0 (quiet) to 100 (loud)
#ModPlug_ReverbDelay = 0 # Delay in ms (usually 40-200ms)
#ModPlug_BassAmount = 0 # 0 (quiet) to 100 (loud).
#ModPlug_BassRange = 10 # Cutoff in Hz (10-100).
#ModPlug_SurroundDepth = 0 # Surround level 0(quiet)-100(heavy).
#ModPlug_SurroundDelay = 0 # Surround delay in ms, usually 5-40ms.
#ModPlug_LoopCount = 0 # 0 (never), n (times) or -1 (forever)
# Self-describing TiMidity audio characteristic options.
#TiMidity_Rate = 44100 # Between 8000 and 48000
#TiMidity_Bits = 16 # 8 or 16
#TiMidity_Channels = 2 # 1 or 2
#TiMidity_Volume = 100 # 0 to 800
# You can setup a TiMidity-Config-File here.
# Leave it unset to use library defaults (/etc/timidity.cfg mostly).
# Setting it to 'yes' also uses the library defaults.
# Set it to 'no' if you don't have any configuration file.
# Otherwise set it to the name of a specific file.
#TiMidity_Config =
# Self-describing SidPlay2 audio characteristic options.
#SidPlay2_DefaultSongLength = 180 # If not in database (in seconds)
#SidPlay2_MinimumSongLength = 0 # Play at least n (in seconds)
#SidPlay2_Frequency = 44100 # 4000 to 48000
#SidPlay2_Bits = 16 # 8 or 16
#SidPlay2_Optimisation = 0 # 0 (worst quality) to 2 (best quality)
# Set path to a HVSC-compatible database (if not set, database is disabled).
#SidPlay2_Database =
# SidPlay2 playback Mode:
#
# "M": Mono (best for many SIDs)
# "S": Stereo
# "L"/"R": Left / Right
#
#SidPlay2_PlayMode = "M"
# Use start-song information from SID ('yes') or start at first song
# ('no'). Songs before the start-song won't be played. (Note that this
# option previously took the values 1 and 0; these are now deprecated
# in favour of 'yes' and 'no'.)
#SidPlay2_StartAtStart = yes
# Play sub-tunes. (Note that this option previously took the values 1
# and 0; these are now deprecated in favour of 'yes' and 'no'.)
#SidPlay2_PlaySubTunes = yes
# Run the OnSongChange command when a new song starts playing.
# Specify the full path (i.e. no leading '~') of an executable to run.
# Arguments will be passed, and you can use the following escapes:
#
# %a artist
# %r album
# %f filename
# %t title
# %n track
# %d file duration in XX:YY form
# %D file duration, number of seconds
#
# No pipes/redirects can be used directly, but writing a shell script
# can do the job.
#
# Example: OnSongChange = "/home/jack/.moc/myscript %a %r"
#
#OnSongChange =
# If RepeatSongChange is 'yes' then MOC will execute the command every time
# a song starts playing regardless of whether or not it is just repeating.
# Otherwise the command will only be executed when a different song is
# started.
#RepeatSongChange = no
# Run the OnStop command (full path, no arguments) when MOC changes state
# to stopped (i.e., when user stopped playing or changes a song).
#OnStop = "/home/jack/.moc/myscript_on_stop"
# This option determines which song to play after finishing all the songs
# in the queue. Setting this to 'yes' causes MOC to play the song which
# follows the song being played before queue playing started. If set to
# 'no', MOC will play the song following the last song in the queue if it
# is in the playlist. The default is 'yes' because this is the way other
# players usually behave. (Note that this option previously took the
# values 1 and 0; these are now deprecated in favour of 'yes' and 'no'.)
#QueueNextSongReturn = yes
#+end_src
** Keymap
#+begin_src fundamental :tangle ~/.moc/keymap
# MOC control keys:
quit_client = q
quit = Q
# Menu and interface control keys:
go = f
menu_down = n
menu_up = p
menu_page_down = PAGE_DOWN
menu_page_up = PAGE_UP
menu_first_item = HOME
menu_last_item = END
search_menu = g /
toggle_read_tags = F
toggle_show_time = ^t
toggle_show_format = ^f
toggle_menu = TAB
toggle_layout = L
#toggle_hidden_files = H
next_search = ^g ^n
#show_lyrics = L
theme_menu = T
help = H ?
refresh = ^r
reload = r
# Audio playing and positioning keys:
seek_forward = RIGHT
seek_backward = LEFT
seek_forward_fast = ]
seek_backward_fast = [
pause = SPACE
stop = s
next = N
previous = P
toggle_shuffle = S
toggle_repeat = R
toggle_auto_next = X
toggle_mixer = x
go_url = o
# Volume control keys:
volume_down_1 = <
volume_up_1 = >
volume_down_5 = ,
volume_up_5 = .
volume_10 = M-1
volume_20 = M-2
volume_30 = M-3
volume_40 = M-4
volume_50 = M-5
volume_60 = M-6
volume_70 = M-7
volume_80 = M-8
volume_90 = M-9
# Directory navigation keys: defaults are Shift-number
# (i.e., 'shift 1' -> '!' -> 'Fastdir1').
go_to_a_directory = i
go_to_music_directory = m
go_to_fast_dir1 = !
go_to_fast_dir2 = @
go_to_fast_dir3 = #
go_to_fast_dir4 = $
go_to_fast_dir5 = %
go_to_fast_dir6 = ^
go_to_fast_dir7 = &
go_to_fast_dir8 = *
go_to_fast_dir9 = (
go_to_fast_dir10 = )
go_to_playing_file = G
go_up = b
# Playlist specific keys:
add_file = a
add_directory = A
plist_add_stream = ^u
delete_from_playlist = d
#playlist_full_paths = P
plist_move_up = u
#plist_move_down = j
save_playlist = V
remove_dead_entries = Y
clear_playlist = C
# Queue manipulation keys:
enqueue_file = z
clear_queue = Z
# User interaction control:
history_up = UP
history_down = DOWN
delete_to_start = ^u
delete_to_end = ^k
cancel = ^x ESCAPE
hide_message = M
# Softmixer specific keys:
toggle_softmixer = w
toggle_make_mono = J
# Equalizer specific keys:
toggle_equalizer = E
equalizer_refresh = e
equalizer_prev = K
#equalizer_next = k
# External commands:
mark_start = '
mark_end = "
exec_command1 = F1
exec_command2 = F2
exec_command3 = F3
exec_command4 = F4
exec_command5 = F5
exec_command6 = F6
exec_command7 = F7
exec_command8 = F8
exec_command9 = F9
exec_command10 = F10
# The following commands are available but not assigned to any keys by
# default:
#
# toggle_percent Switch on/off play progress bar time percentage
#
#+end_src
** Themes
*** Nightly
#+begin_src fundamental :tangle ~/.moc/themes/nightly_enhanced
##############################################################################
#
# this is a modification of the
# nightly theme by Wim Speekenbrink <[email protected]>
#
##############################################################################
background = blue default
frame = blue default bold
window_title = blue default bold
directory = blue default bold
selected_directory = black magenta
playlist = blue default bold
selected_playlist = black magenta
file = blue default bold
selected_file = black magenta
marked_file = green default bold
marked_selected_file = magenta default bold
info = green default bold
selected_info = black magenta
marked_info = green default bold
marked_selected_info = green default bold
status = blue default bold
title = green default bold
state = blue default bold
current_time = magenta default bold
time_left = magenta default bold
total_time = magenta default bold
time_total_frames = blue default bold
sound_parameters = magenta default bold
legend = blue default bold
disabled = black default
enabled = blue default bold
empty_mixer_bar = blue default bold
filled_mixer_bar = black magenta
empty_time_bar = blue default bold
filled_time_bar = black magenta
entry = green default bold
entry_title = green default bold
error = red default bold
message = green default bold
plist_time = green default bold
#+end_src
* iSync
#+begin_src conf :tangle ~/.mbsyncrc
IMAPAccount fastmail
Host imap.fastmail.com
Port 993
User [email protected]
PassCmd "pass show fastmail.com/thanosapollo.com | sed -n '3p'"
SSLType IMAPS
SSLVersions TLSv1.2
CertificateFile /etc/ssl/certs/ca-certificates.crt
IMAPStore fastmail-remote
Account fastmail
MaildirStore fastmail-local
Path ~/Mail/Fastmail/
Inbox ~/Mail/Fastmail/Inbox
Trash ~/Mail/Fastmail/Trash/
SubFolders Verbatim
Channel fastmail
Far :fastmail-remote:
Near :fastmail-local:
Patterns *
Expunge None
CopyArrivalDate yes
Sync All
Create Both
SyncState *
#+end_src
|