Compare commits
23 Commits
95de82c2a0
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
6b8f7c297d
|
|||
|
0370ee7308
|
|||
|
fda5997f50
|
|||
|
c748863d30
|
|||
|
f7088631b2
|
|||
|
e8247ba2ab
|
|||
|
18e03a83b5
|
|||
|
c99b5a2117
|
|||
|
939289f172
|
|||
|
35cdffa984
|
|||
|
f7b59f9d81
|
|||
|
b9635a5697
|
|||
|
153776c54e
|
|||
|
f4c500d6cd
|
|||
|
2a177b5413
|
|||
|
e2a3cf8aac
|
|||
|
d8859cf833
|
|||
|
2ce978585b
|
|||
|
906a2cdb93
|
|||
|
f7fc877126
|
|||
|
5b410bf9e7
|
|||
|
c531f9f88b
|
|||
|
214300e21e
|
@@ -1,15 +1,12 @@
|
|||||||
{
|
{
|
||||||
"output": {
|
"output": {
|
||||||
"bass_enhancer#0": {
|
"bass_loudness#0": {
|
||||||
"amount": 3.000000000000008,
|
|
||||||
"blend": 0.0,
|
|
||||||
"bypass": false,
|
"bypass": false,
|
||||||
"floor": 10.0,
|
|
||||||
"floor-active": false,
|
|
||||||
"harmonics": 2.000000000000001,
|
|
||||||
"input-gain": 0.0,
|
"input-gain": 0.0,
|
||||||
"output-gain": 0.0,
|
"link": -9.1,
|
||||||
"scope": 30.0
|
"loudness": -3.0000000000000013,
|
||||||
|
"output": -6.499999999999998,
|
||||||
|
"output-gain": 0.0
|
||||||
},
|
},
|
||||||
"blocklist": [],
|
"blocklist": [],
|
||||||
"equalizer#0": {
|
"equalizer#0": {
|
||||||
@@ -19,7 +16,7 @@
|
|||||||
"left": {
|
"left": {
|
||||||
"band0": {
|
"band0": {
|
||||||
"frequency": 28.738174228603842,
|
"frequency": 28.738174228603842,
|
||||||
"gain": -2.0,
|
"gain": -6.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.644403823771979,
|
"q": 1.644403823771979,
|
||||||
@@ -30,18 +27,18 @@
|
|||||||
},
|
},
|
||||||
"band1": {
|
"band1": {
|
||||||
"frequency": 53.850091570755154,
|
"frequency": 53.850091570755154,
|
||||||
"gain": 3.0,
|
"gain": -3.75,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
"slope": "x1",
|
"slope": "x4",
|
||||||
"solo": false,
|
"solo": false,
|
||||||
"type": "Bell",
|
"type": "Bell",
|
||||||
"width": 4.0
|
"width": 4.0
|
||||||
},
|
},
|
||||||
"band10": {
|
"band10": {
|
||||||
"frequency": 15336.699231206312,
|
"frequency": 15336.699231206312,
|
||||||
"gain": -3.0,
|
"gain": -8.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -52,7 +49,7 @@
|
|||||||
},
|
},
|
||||||
"band2": {
|
"band2": {
|
||||||
"frequency": 100.90523980790812,
|
"frequency": 100.90523980790812,
|
||||||
"gain": 3.0,
|
"gain": -4.12,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -62,11 +59,11 @@
|
|||||||
"width": 4.0
|
"width": 4.0
|
||||||
},
|
},
|
||||||
"band3": {
|
"band3": {
|
||||||
"frequency": 189.07799640996342,
|
"frequency": 260.0,
|
||||||
"gain": 0.0,
|
"gain": -6.8,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.98,
|
||||||
"slope": "x1",
|
"slope": "x1",
|
||||||
"solo": false,
|
"solo": false,
|
||||||
"type": "Bell",
|
"type": "Bell",
|
||||||
@@ -74,7 +71,7 @@
|
|||||||
},
|
},
|
||||||
"band4": {
|
"band4": {
|
||||||
"frequency": 354.2976439525226,
|
"frequency": 354.2976439525226,
|
||||||
"gain": -5.0,
|
"gain": -13.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -85,7 +82,7 @@
|
|||||||
},
|
},
|
||||||
"band5": {
|
"band5": {
|
||||||
"frequency": 663.8890981166219,
|
"frequency": 663.8890981166219,
|
||||||
"gain": -11.0,
|
"gain": -19.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -96,7 +93,7 @@
|
|||||||
},
|
},
|
||||||
"band6": {
|
"band6": {
|
||||||
"frequency": 1244.006958897993,
|
"frequency": 1244.006958897993,
|
||||||
"gain": -6.0,
|
"gain": -11.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -107,7 +104,7 @@
|
|||||||
},
|
},
|
||||||
"band7": {
|
"band7": {
|
||||||
"frequency": 2331.041913742621,
|
"frequency": 2331.041913742621,
|
||||||
"gain": -1.0,
|
"gain": -5.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -118,7 +115,7 @@
|
|||||||
},
|
},
|
||||||
"band8": {
|
"band8": {
|
||||||
"frequency": 4367.946951388736,
|
"frequency": 4367.946951388736,
|
||||||
"gain": 2.0,
|
"gain": -3.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -129,7 +126,7 @@
|
|||||||
},
|
},
|
||||||
"band9": {
|
"band9": {
|
||||||
"frequency": 8184.735099642112,
|
"frequency": 8184.735099642112,
|
||||||
"gain": 2.0,
|
"gain": -4.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -141,13 +138,13 @@
|
|||||||
},
|
},
|
||||||
"mode": "IIR",
|
"mode": "IIR",
|
||||||
"num-bands": 11,
|
"num-bands": 11,
|
||||||
"output-gain": 0.0,
|
"output-gain": 2.0,
|
||||||
"pitch-left": 0.0,
|
"pitch-left": 0.0,
|
||||||
"pitch-right": 0.0,
|
"pitch-right": 0.0,
|
||||||
"right": {
|
"right": {
|
||||||
"band0": {
|
"band0": {
|
||||||
"frequency": 28.738174228603842,
|
"frequency": 28.738174228603842,
|
||||||
"gain": -2.0,
|
"gain": -6.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.644403823771979,
|
"q": 1.644403823771979,
|
||||||
@@ -158,18 +155,18 @@
|
|||||||
},
|
},
|
||||||
"band1": {
|
"band1": {
|
||||||
"frequency": 53.850091570755154,
|
"frequency": 53.850091570755154,
|
||||||
"gain": 3.0,
|
"gain": -3.75,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
"slope": "x1",
|
"slope": "x4",
|
||||||
"solo": false,
|
"solo": false,
|
||||||
"type": "Bell",
|
"type": "Bell",
|
||||||
"width": 4.0
|
"width": 4.0
|
||||||
},
|
},
|
||||||
"band10": {
|
"band10": {
|
||||||
"frequency": 15336.699231206312,
|
"frequency": 15336.699231206312,
|
||||||
"gain": -3.0,
|
"gain": -8.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -180,7 +177,7 @@
|
|||||||
},
|
},
|
||||||
"band2": {
|
"band2": {
|
||||||
"frequency": 100.90523980790812,
|
"frequency": 100.90523980790812,
|
||||||
"gain": 3.0,
|
"gain": -4.12,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -190,11 +187,11 @@
|
|||||||
"width": 4.0
|
"width": 4.0
|
||||||
},
|
},
|
||||||
"band3": {
|
"band3": {
|
||||||
"frequency": 189.07799640996342,
|
"frequency": 260.0,
|
||||||
"gain": 0.0,
|
"gain": -6.8,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.98,
|
||||||
"slope": "x1",
|
"slope": "x1",
|
||||||
"solo": false,
|
"solo": false,
|
||||||
"type": "Bell",
|
"type": "Bell",
|
||||||
@@ -202,7 +199,7 @@
|
|||||||
},
|
},
|
||||||
"band4": {
|
"band4": {
|
||||||
"frequency": 354.2976439525226,
|
"frequency": 354.2976439525226,
|
||||||
"gain": -5.0,
|
"gain": -13.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -213,7 +210,7 @@
|
|||||||
},
|
},
|
||||||
"band5": {
|
"band5": {
|
||||||
"frequency": 663.8890981166219,
|
"frequency": 663.8890981166219,
|
||||||
"gain": -11.0,
|
"gain": -19.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -224,7 +221,7 @@
|
|||||||
},
|
},
|
||||||
"band6": {
|
"band6": {
|
||||||
"frequency": 1244.006958897993,
|
"frequency": 1244.006958897993,
|
||||||
"gain": -6.0,
|
"gain": -11.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -235,7 +232,7 @@
|
|||||||
},
|
},
|
||||||
"band7": {
|
"band7": {
|
||||||
"frequency": 2331.041913742621,
|
"frequency": 2331.041913742621,
|
||||||
"gain": -1.0,
|
"gain": -5.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -246,7 +243,7 @@
|
|||||||
},
|
},
|
||||||
"band8": {
|
"band8": {
|
||||||
"frequency": 4367.946951388736,
|
"frequency": 4367.946951388736,
|
||||||
"gain": 2.0,
|
"gain": -3.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -257,7 +254,7 @@
|
|||||||
},
|
},
|
||||||
"band9": {
|
"band9": {
|
||||||
"frequency": 8184.735099642112,
|
"frequency": 8184.735099642112,
|
||||||
"gain": 2.0,
|
"gain": -4.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -271,7 +268,7 @@
|
|||||||
},
|
},
|
||||||
"plugins_order": [
|
"plugins_order": [
|
||||||
"equalizer#0",
|
"equalizer#0",
|
||||||
"bass_enhancer#0"
|
"bass_loudness#0"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"output": {
|
"output": {
|
||||||
"bass_enhancer#0": {
|
"bass_enhancer#0": {
|
||||||
"amount": 3.000000000000006,
|
"amount": 4.000000000000007,
|
||||||
"blend": 0.0,
|
"blend": 0.0,
|
||||||
"bypass": false,
|
"bypass": false,
|
||||||
"floor": 20.0,
|
"floor": 20.0,
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
"left": {
|
"left": {
|
||||||
"band0": {
|
"band0": {
|
||||||
"frequency": 28.738174228603842,
|
"frequency": 28.738174228603842,
|
||||||
"gain": -1.22,
|
"gain": -2.22,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.644403823771979,
|
"q": 1.644403823771979,
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
},
|
},
|
||||||
"band1": {
|
"band1": {
|
||||||
"frequency": 53.850091570755154,
|
"frequency": 53.850091570755154,
|
||||||
"gain": 0.92,
|
"gain": -0.08,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
},
|
},
|
||||||
"band10": {
|
"band10": {
|
||||||
"frequency": 15336.699231206312,
|
"frequency": 15336.699231206312,
|
||||||
"gain": -11.65,
|
"gain": -7.65,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
},
|
},
|
||||||
"band2": {
|
"band2": {
|
||||||
"frequency": 100.90523980790812,
|
"frequency": 100.90523980790812,
|
||||||
"gain": -1.58,
|
"gain": -3.58,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
},
|
},
|
||||||
"band4": {
|
"band4": {
|
||||||
"frequency": 354.2976439525226,
|
"frequency": 354.2976439525226,
|
||||||
"gain": -22.9,
|
"gain": -23.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
},
|
},
|
||||||
"band5": {
|
"band5": {
|
||||||
"frequency": 663.8890981166219,
|
"frequency": 663.8890981166219,
|
||||||
"gain": -18.08,
|
"gain": -15.08,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
},
|
},
|
||||||
"band6": {
|
"band6": {
|
||||||
"frequency": 1244.006958897993,
|
"frequency": 1244.006958897993,
|
||||||
"gain": -12.57,
|
"gain": -10.57,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
},
|
},
|
||||||
"band7": {
|
"band7": {
|
||||||
"frequency": 2331.041913742621,
|
"frequency": 2331.041913742621,
|
||||||
"gain": -6.2,
|
"gain": -5.2,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -129,7 +129,7 @@
|
|||||||
},
|
},
|
||||||
"band9": {
|
"band9": {
|
||||||
"frequency": 8184.735099642112,
|
"frequency": 8184.735099642112,
|
||||||
"gain": -1.81,
|
"gain": 0.19,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -147,7 +147,7 @@
|
|||||||
"right": {
|
"right": {
|
||||||
"band0": {
|
"band0": {
|
||||||
"frequency": 28.738174228603842,
|
"frequency": 28.738174228603842,
|
||||||
"gain": -1.22,
|
"gain": -2.22,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.644403823771979,
|
"q": 1.644403823771979,
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
},
|
},
|
||||||
"band1": {
|
"band1": {
|
||||||
"frequency": 53.850091570755154,
|
"frequency": 53.850091570755154,
|
||||||
"gain": 0.92,
|
"gain": -0.08,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -169,7 +169,7 @@
|
|||||||
},
|
},
|
||||||
"band10": {
|
"band10": {
|
||||||
"frequency": 15336.699231206312,
|
"frequency": 15336.699231206312,
|
||||||
"gain": -11.65,
|
"gain": -7.65,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -180,7 +180,7 @@
|
|||||||
},
|
},
|
||||||
"band2": {
|
"band2": {
|
||||||
"frequency": 100.90523980790812,
|
"frequency": 100.90523980790812,
|
||||||
"gain": -1.58,
|
"gain": -3.58,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -202,7 +202,7 @@
|
|||||||
},
|
},
|
||||||
"band4": {
|
"band4": {
|
||||||
"frequency": 354.2976439525226,
|
"frequency": 354.2976439525226,
|
||||||
"gain": -22.9,
|
"gain": -23.0,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -213,7 +213,7 @@
|
|||||||
},
|
},
|
||||||
"band5": {
|
"band5": {
|
||||||
"frequency": 663.8890981166219,
|
"frequency": 663.8890981166219,
|
||||||
"gain": -18.08,
|
"gain": -15.08,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -224,7 +224,7 @@
|
|||||||
},
|
},
|
||||||
"band6": {
|
"band6": {
|
||||||
"frequency": 1244.006958897993,
|
"frequency": 1244.006958897993,
|
||||||
"gain": -12.57,
|
"gain": -10.57,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -235,7 +235,7 @@
|
|||||||
},
|
},
|
||||||
"band7": {
|
"band7": {
|
||||||
"frequency": 2331.041913742621,
|
"frequency": 2331.041913742621,
|
||||||
"gain": -6.2,
|
"gain": -5.2,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -257,7 +257,7 @@
|
|||||||
},
|
},
|
||||||
"band9": {
|
"band9": {
|
||||||
"frequency": 8184.735099642112,
|
"frequency": 8184.735099642112,
|
||||||
"gain": -1.81,
|
"gain": 0.19,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
|
|||||||
@@ -11,6 +11,14 @@
|
|||||||
"output-gain": 0.0,
|
"output-gain": 0.0,
|
||||||
"scope": 30.0
|
"scope": 30.0
|
||||||
},
|
},
|
||||||
|
"bass_loudness#0": {
|
||||||
|
"bypass": false,
|
||||||
|
"input-gain": 0.0,
|
||||||
|
"link": -9.1,
|
||||||
|
"loudness": -3.499999999999999,
|
||||||
|
"output": -6.0,
|
||||||
|
"output-gain": 0.0
|
||||||
|
},
|
||||||
"blocklist": [],
|
"blocklist": [],
|
||||||
"equalizer#0": {
|
"equalizer#0": {
|
||||||
"balance": 0.0,
|
"balance": 0.0,
|
||||||
@@ -19,7 +27,7 @@
|
|||||||
"left": {
|
"left": {
|
||||||
"band0": {
|
"band0": {
|
||||||
"frequency": 28.738174228603842,
|
"frequency": 28.738174228603842,
|
||||||
"gain": -5.22,
|
"gain": -3.22,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.644403823771979,
|
"q": 1.644403823771979,
|
||||||
@@ -30,7 +38,7 @@
|
|||||||
},
|
},
|
||||||
"band1": {
|
"band1": {
|
||||||
"frequency": 53.850091570755154,
|
"frequency": 53.850091570755154,
|
||||||
"gain": -2.08,
|
"gain": -0.08,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -52,7 +60,7 @@
|
|||||||
},
|
},
|
||||||
"band2": {
|
"band2": {
|
||||||
"frequency": 100.90523980790812,
|
"frequency": 100.90523980790812,
|
||||||
"gain": -5.58,
|
"gain": -4.58,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -147,7 +155,7 @@
|
|||||||
"right": {
|
"right": {
|
||||||
"band0": {
|
"band0": {
|
||||||
"frequency": 28.738174228603842,
|
"frequency": 28.738174228603842,
|
||||||
"gain": -5.22,
|
"gain": -3.22,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.644403823771979,
|
"q": 1.644403823771979,
|
||||||
@@ -158,7 +166,7 @@
|
|||||||
},
|
},
|
||||||
"band1": {
|
"band1": {
|
||||||
"frequency": 53.850091570755154,
|
"frequency": 53.850091570755154,
|
||||||
"gain": -2.08,
|
"gain": -0.08,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719791,
|
"q": 1.6444038237719791,
|
||||||
@@ -180,7 +188,7 @@
|
|||||||
},
|
},
|
||||||
"band2": {
|
"band2": {
|
||||||
"frequency": 100.90523980790812,
|
"frequency": 100.90523980790812,
|
||||||
"gain": -5.58,
|
"gain": -4.58,
|
||||||
"mode": "RLC (BT)",
|
"mode": "RLC (BT)",
|
||||||
"mute": false,
|
"mute": false,
|
||||||
"q": 1.6444038237719794,
|
"q": 1.6444038237719794,
|
||||||
@@ -271,7 +279,8 @@
|
|||||||
},
|
},
|
||||||
"plugins_order": [
|
"plugins_order": [
|
||||||
"equalizer#0",
|
"equalizer#0",
|
||||||
"bass_enhancer#0"
|
"bass_enhancer#0",
|
||||||
|
"bass_loudness#0"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -249,7 +249,7 @@
|
|||||||
tags = "tag -n1 --list" ; shot tag names and commit message
|
tags = "tag -n1 --list" ; shot tag names and commit message
|
||||||
stashes = "stash list" ; show stashed changes
|
stashes = "stash list" ; show stashed changes
|
||||||
init = "init -q" ; blm is racism, 'master' branch must be 'master' branch
|
init = "init -q" ; blm is racism, 'master' branch must be 'master' branch
|
||||||
start = "!git init --quiet --initial-branch maste; git commit --no-verify --allow-empty --message 'Initial commit'" ; quick start empty repo
|
start = "!git init --quiet --initial-branch master; git commit --no-verify --allow-empty --message 'Initial commit'" ; quick start empty repo
|
||||||
cloner = "clone --recursive" ; clone with submodules
|
cloner = "clone --recursive" ; clone with submodules
|
||||||
fuck = "!git checkout $(git config init.defaultBranch); git fetch origin --prune; git reset --hard origin/$(git config init.defaultBranch); git clean -dff"
|
fuck = "!git checkout $(git config init.defaultBranch); git fetch origin --prune; git reset --hard origin/$(git config init.defaultBranch); git clean -dff"
|
||||||
|
|
||||||
|
|||||||
6
git/.gitignore
vendored
6
git/.gitignore
vendored
@@ -7,4 +7,10 @@ nbproject/
|
|||||||
*.log
|
*.log
|
||||||
*.bak
|
*.bak
|
||||||
*.rdb
|
*.rdb
|
||||||
|
.env
|
||||||
|
*.env
|
||||||
|
.env.*
|
||||||
|
|
||||||
|
!.env.example
|
||||||
|
!.env.default
|
||||||
|
!/**/*.gitkeep
|
||||||
|
|||||||
@@ -67,12 +67,6 @@ cy=580
|
|||||||
geometry=AdnQywADAAAAAAAAAAAAFAAAAlcAAAGjAAAAAAAAABQAAAJXAAABowAAAAAAAAAAB4AAAAAAAAAAFAAAAlcAAAGj
|
geometry=AdnQywADAAAAAAAAAAAAFAAAAlcAAAGjAAAAAAAAABQAAAJXAAABowAAAAAAAAAAB4AAAAAAAAAAFAAAAlcAAAGj
|
||||||
|
|
||||||
[OBSWebSocket]
|
[OBSWebSocket]
|
||||||
FirstLoad=false
|
|
||||||
ServerEnabled=false
|
|
||||||
ServerPort=4455
|
|
||||||
AlertsEnabled=false
|
|
||||||
AuthRequired=true
|
|
||||||
ServerPassword=4blHHSDyZzxK6HRO
|
|
||||||
|
|
||||||
[Video]
|
[Video]
|
||||||
Renderer=OpenGL
|
Renderer=OpenGL
|
||||||
@@ -87,3 +81,6 @@ MixerRed=2500223
|
|||||||
MixerGreenActive=5046092
|
MixerGreenActive=5046092
|
||||||
MixerYellowActive=5046271
|
MixerYellowActive=5046271
|
||||||
MixerRedActive=5000447
|
MixerRedActive=5000447
|
||||||
|
|
||||||
|
[Appearance]
|
||||||
|
Theme=com.obsproject.Yami.Classic
|
||||||
|
|||||||
@@ -17,7 +17,9 @@ fi
|
|||||||
### AAA ##########################################
|
### AAA ##########################################
|
||||||
|
|
||||||
export EDITOR="nano"
|
export EDITOR="nano"
|
||||||
export JAVA_HOME="/usr/bin/"
|
# export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64"
|
||||||
|
export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"
|
||||||
|
export PATH="$JAVA_HOME/bin/:$PATH"
|
||||||
export PATH="$PATH:/opt/nvim/bin/"
|
export PATH="$PATH:/opt/nvim/bin/"
|
||||||
export PATH="$PATH:$HOME/.local/bin/"
|
export PATH="$PATH:$HOME/.local/bin/"
|
||||||
export PATH="$PATH:$HOME/.local/share/JetBrains/Toolbox/scripts/"
|
export PATH="$PATH:$HOME/.local/share/JetBrains/Toolbox/scripts/"
|
||||||
@@ -51,4 +53,4 @@ export NVM_DIR="$HOME/.nvm"
|
|||||||
[ -f "$HOME/yandex-cloud/completion.zsh.inc" ] && source "$HOME/yandex-cloud/completion.zsh.inc"
|
[ -f "$HOME/yandex-cloud/completion.zsh.inc" ] && source "$HOME/yandex-cloud/completion.zsh.inc"
|
||||||
|
|
||||||
# misc
|
# misc
|
||||||
[[ -f $HOME/.profile.local ]] && source $HOME/.profile.local
|
[[ -f "$HOME/.profile.local" ]] && source "$HOME/.profile.local"
|
||||||
|
|||||||
75
utils/.local/bin/audio
Executable file
75
utils/.local/bin/audio
Executable file
@@ -0,0 +1,75 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# available sinks listed here: pactl list sinks
|
||||||
|
|
||||||
|
CURRENT_SINK="$(pactl get-default-sink)"
|
||||||
|
CURRENT_PRESET="$(easyeffects --active-preset output)"
|
||||||
|
LOUD_SINK="alsa_output.pci-0000_00_1f.3.analog-stereo"
|
||||||
|
LOUD_PRESET="Defender"
|
||||||
|
HEAD_SINK="alsa_output.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.analog-stereo"
|
||||||
|
HEAD_PRESET="Techno"
|
||||||
|
|
||||||
|
set_head() {
|
||||||
|
if [ "$CURRENT_SINK" != "$HEAD_SINK" ]; then
|
||||||
|
pactl set-default-sink "$HEAD_SINK" || exit 1
|
||||||
|
easyeffects --load-preset "$HEAD_PRESET" || exit 2
|
||||||
|
echo -e "Current sink\t: $HEAD_SINK"
|
||||||
|
echo -e "Current preset\t: $HEAD_PRESET"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
set_loud() {
|
||||||
|
if [ "$CURRENT_SINK" != "$LOUD_SINK" ]; then
|
||||||
|
pactl set-default-sink "$LOUD_SINK" || exit 1
|
||||||
|
easyeffects --load-preset "$LOUD_PRESET" || exit 2
|
||||||
|
echo -e "Current sink\t: $LOUD_SINK"
|
||||||
|
echo -e "Current preset\t: $LOUD_PRESET"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
show_help() {
|
||||||
|
echo "Usage: $(basename "$0") [-h|--help|--loud|--head|--switch]"
|
||||||
|
echo
|
||||||
|
echo "Switch audio output and apply appropriate easyffects preset."
|
||||||
|
echo
|
||||||
|
echo "Options:"
|
||||||
|
echo " -h, --help Show this help message"
|
||||||
|
echo " --loud Enable loud speakers"
|
||||||
|
echo " --head Enable headphones"
|
||||||
|
echo " --switch Switch between loud and headphones"
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo -e "Loud sink\t: $LOUD_SINK"
|
||||||
|
echo -e "Loud preset\t: $LOUD_PRESET"
|
||||||
|
echo -e "Head sink\t: $HEAD_SINK"
|
||||||
|
echo -e "Head preset\t: $HEAD_PRESET"
|
||||||
|
echo
|
||||||
|
echo -e "Current sink\t: $CURRENT_SINK"
|
||||||
|
echo -e "Current preset\t: $CURRENT_PRESET"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
|
||||||
|
show_help
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "--loud" ]; then
|
||||||
|
set_loud
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "--head" ]; then
|
||||||
|
set_head
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "--switch" ]; then
|
||||||
|
case "$CURRENT_SINK" in
|
||||||
|
*$LOUD_SINK*) set_head ;;
|
||||||
|
*$HEAD_SINK*) set_loud ;;
|
||||||
|
*) show_help ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
136
utils/.local/bin/clean
Executable file
136
utils/.local/bin/clean
Executable file
@@ -0,0 +1,136 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Скрипт для очистки системных логов
|
||||||
|
# Требует права root
|
||||||
|
#
|
||||||
|
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] [1|2|3]
|
||||||
|
|
||||||
|
Clean system logs and data to free some space on system disk.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
1|2|3 Safe, normal or aggressive clean level
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
log_info() { echo -e "${GREEN}[INFO]${NC} $*"; }
|
||||||
|
log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
|
||||||
|
log_error() { echo -e "${RED}[ERROR]${NC} $*"; }
|
||||||
|
|
||||||
|
show_size() {
|
||||||
|
local path="$1"
|
||||||
|
sudo du -sh "$path" 2>/dev/null | awk '{print $1}'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Показываем текущее использование
|
||||||
|
log_info "Текущее использование:"
|
||||||
|
df -hx tmpfs
|
||||||
|
echo
|
||||||
|
|
||||||
|
log_info "По директориям:"
|
||||||
|
sudo du -h --max-depth=0 \
|
||||||
|
/var/log/ \
|
||||||
|
/var/cache/apt/ \
|
||||||
|
/var/lib/docker/ \
|
||||||
|
"$HOME"/.local/share/Trash/files/ \
|
||||||
|
"$HOME"/.cache/thumbnails/ \
|
||||||
|
2>/dev/null \
|
||||||
|
| sort -rh
|
||||||
|
echo
|
||||||
|
|
||||||
|
choice="$1"
|
||||||
|
if [ -z "$choice" ]; then
|
||||||
|
echo "Выберите режим очистки:"
|
||||||
|
echo " 1) Безопасный"
|
||||||
|
echo " 2) Средний"
|
||||||
|
echo " 3) Агрессивный"
|
||||||
|
echo
|
||||||
|
read -rp "Выбор [1-3]: " choice
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$choice" in
|
||||||
|
1)
|
||||||
|
log_info "Выбран безопасный (1) режим..."
|
||||||
|
set -x
|
||||||
|
sudo journalctl --vacuum-size=100M
|
||||||
|
sudo find /var/log -name "*.gz" -mtime +7 -delete 2>/dev/null || true
|
||||||
|
sudo find /var/log -name "*.log.*" -mtime +7 -delete 2>/dev/null || true
|
||||||
|
[ -d "$HOME"/.local/share/Trash/files/ ] && sudo rm -rfv "$HOME"/.local/share/Trash/files/*
|
||||||
|
[ -d "$HOME"/.cache/thumbnails/ ] && sudo rm -rfv "$HOME"/.cache/thumbnails/*
|
||||||
|
set +x
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
log_info "Выбран средний (2) режим..."
|
||||||
|
set -x
|
||||||
|
sudo journalctl --vacuum-size=50M
|
||||||
|
sudo find /var/log -name "*.gz" -mtime +3 -delete 2>/dev/null || true
|
||||||
|
sudo find /var/log -name "*.log.*" -mtime +3 -delete 2>/dev/null || true
|
||||||
|
sudo find /var/log -name "dpkg.log.*" -mtime +3 -delete 2>/dev/null || true
|
||||||
|
[ -d "$HOME"/.local/share/Trash/files/ ] && sudo rm -rfv "$HOME"/.local/share/Trash/files/* 2>/dev/null || true
|
||||||
|
[ -d "$HOME"/.cache/thumbnails/ ] && sudo rm -rfv "$HOME"/.cache/thumbnails/* 2>/dev/null || true
|
||||||
|
sudo rm -rfv /var/cache/apt/archives/*.deb 2>/dev/null || true
|
||||||
|
sudo apt clean 2>/dev/null || true
|
||||||
|
set +x
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
log_info "Выбран агрессивный (3) режим!"
|
||||||
|
read -rp "Продолжить? (y|yes|n|no): " confirm
|
||||||
|
if [[ "$confirm" != "yes" ]] && [[ "$confirm" != "y" ]]; then
|
||||||
|
log_info "Отменено"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
set -x
|
||||||
|
sudo journalctl --vacuum-time=1d
|
||||||
|
sudo find /var/log -name "*.gz" -delete 2>/dev/null || true
|
||||||
|
sudo find /var/log -name "*.log.*" -delete 2>/dev/null || true
|
||||||
|
sudo rm -rfv /var/log/journal/user-*@* 2>/dev/null || true
|
||||||
|
sudo rm -rfv /var/log/journal/system*@* 2>/dev/null || true
|
||||||
|
sudo rm -fv /var/log/{syslog,dmesg,btmp}.* 2>/dev/null || true
|
||||||
|
sudo apt autoremove --purge
|
||||||
|
sudo apt autoclean
|
||||||
|
sudo apt clean
|
||||||
|
sudo rm -rfv /var/cache/apt/archives/* 2>/dev/null || true
|
||||||
|
hash docker && docker system prune -f
|
||||||
|
snap list 2>/dev/null && snap refresh --list 2>/dev/null || true
|
||||||
|
sudo snap list --all \
|
||||||
|
| awk '/disabled/{print $1, $3}' \
|
||||||
|
| while read snapname revision; do
|
||||||
|
sudo snap remove "$snapname" --revision="$revision"
|
||||||
|
done
|
||||||
|
set +x
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
log_error "Неверный выбор"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo
|
||||||
|
log_info "Очистка завершена!"
|
||||||
|
log_info "Текущее использование:"
|
||||||
|
df -hx tmpfs
|
||||||
|
echo
|
||||||
|
|
||||||
|
log_info "По директориям:"
|
||||||
|
sudo du -h --max-depth=0 \
|
||||||
|
/var/log/ \
|
||||||
|
/var/cache/apt/ \
|
||||||
|
/var/lib/docker/ \
|
||||||
|
"$HOME"/.local/share/Trash/files/ \
|
||||||
|
"$HOME"/.cache/thumbnails/ \
|
||||||
|
2>/dev/null \
|
||||||
|
| sort -rh
|
||||||
@@ -1,3 +1,17 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
watch -tn 1 date '+%l:%M:%S%p'
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h]
|
||||||
|
|
||||||
|
Display current time and unix timestamp (updates every second).
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
watch -tn 1 date '+%H:%M:%S%n%s'
|
||||||
|
|||||||
@@ -1,17 +1,33 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
if hash pbcopy 2>/dev/null; then
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
exec pbcopy
|
cat <<EOF
|
||||||
elif hash xclip 2>/dev/null; then
|
Usage: $(basename "$0") [-h] [file]
|
||||||
exec xclip -selection clipboard
|
|
||||||
elif hash putclip 2>/dev/null; then
|
Copy content to system clipboard.
|
||||||
exec putclip
|
|
||||||
else
|
Options:
|
||||||
rm -f /tmp/clipboard 2> /dev/null
|
-h, --help Show this help message
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
cat > /tmp/clipboard
|
Arguments:
|
||||||
else
|
file File to copy (reads from stdin if not specified)
|
||||||
cat "$1" > /tmp/clipboard
|
|
||||||
fi
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if hash pbcopy 2>/dev/null; then
|
||||||
|
exec pbcopy
|
||||||
|
elif hash xclip 2>/dev/null; then
|
||||||
|
exec xclip -selection clipboard
|
||||||
|
elif hash putclip 2>/dev/null; then
|
||||||
|
exec putclip
|
||||||
|
else
|
||||||
|
rm -f /tmp/clipboard 2> /dev/null
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
cat > /tmp/clipboard
|
||||||
|
else
|
||||||
|
cat "$1" > /tmp/clipboard
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,6 +1,22 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] <url>
|
||||||
|
|
||||||
|
Display detailed curl statistics for a URL.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
url URL to fetch statistics for
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
curl -sLw @- -o /dev/null "$@" <<'EOF'
|
curl -sLw @- -o /dev/null "$@" <<'EOF'
|
||||||
URL:\t\t\t%{url}\n
|
URL:\t\t\t%{url}\n
|
||||||
Address:\t\t%{remote_ip}:%{remote_port}\n
|
Address:\t\t%{remote_ip}:%{remote_port}\n
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
CONTAINER="my-container" # the name of the container in which to 'exec' something
|
|
||||||
CONFIG="$(dirname $([ -L $0 ] && readlink -f $0 || echo $0))/docker-compose.yml" # path to compose yml file
|
|
||||||
CMD="docker-compose -f $CONFIG" # docker-compose command
|
|
||||||
APP_URL='http://localhost:8000/'
|
|
||||||
|
|
||||||
open_browser() {
|
|
||||||
if which xdg-open > /dev/null; then
|
|
||||||
xdg-open "$1" </dev/null >/dev/null 2>&1 & disown
|
|
||||||
elif which gnome-open > /dev/null; then
|
|
||||||
gnome-open "$1" </dev/null >/dev/null 2>&1 & disown
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
'' | 'help' ) echo -e "Provide one of operations: \t start, stop, up, down, restart, rebuild, open";
|
|
||||||
echo "Otherwise all args will be passed to 'docker exec -ti $CONTAINER ...'" ;;
|
|
||||||
'open' ) open_browser $APP_URL ;;
|
|
||||||
'up' ) $CMD up -d --build ;; # build and start containers
|
|
||||||
'down' ) $CMD down --remove-orphans ;; # stop and remove containers
|
|
||||||
'start' ) $CMD start ;; # start containers
|
|
||||||
'stop' ) $CMD stop ;; # stop containers
|
|
||||||
'restart' ) $CMD stop && $CMD start ;; # restart containers
|
|
||||||
'rebuild' ) $CMD down --remove-orphans && $CMD up -d --build ;; # rebuild containers
|
|
||||||
* ) docker exec -ti $CONTAINER $@ # exec anything in container
|
|
||||||
esac
|
|
||||||
28
utils/.local/bin/drotate
Executable file
28
utils/.local/bin/drotate
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# X11:
|
||||||
|
# xrandr --listactivemonitors
|
||||||
|
# xrandr --output $OUTPUT --rotate (normal|left|right|...)
|
||||||
|
|
||||||
|
# Wayland KDE: https://www.reddit.com/r/kde/comments/11vrbwc/how_do_i_rotate_the_screen_on_kde_with_wayland/
|
||||||
|
# kscreen-doctor --outputs
|
||||||
|
OUTPUT='HDMI-A-1'
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] [normal|left|right|inverted]
|
||||||
|
|
||||||
|
Rotate a display.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
normal|left|right|inverted Direction
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ "$1" ] && DIRECTION="$1" || DIRECTION="normal"
|
||||||
|
kscreen-doctor "output.$OUTPUT.rotation.$DIRECTION"
|
||||||
@@ -1,10 +1,13 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
||||||
echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
|
echo "Usage: $(basename "$0") <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
|
||||||
echo " extract <path/file_name_1.ext> [path/file_name_2.ext] [path/file_name_3.ext]"
|
echo " $(basename "$0") <path/file_name_1.ext> [path/file_name_2.ext] [path/file_name_3.ext]"
|
||||||
exit 1
|
echo
|
||||||
|
echo "Options:"
|
||||||
|
echo " -h, --help Show this help message"
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for n in "$@"; do
|
for n in "$@"; do
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h]
|
||||||
|
|
||||||
|
Flush DNS cache using resolvectl.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
sudo resolvectl flush-caches
|
sudo resolvectl flush-caches
|
||||||
|
|||||||
@@ -1,5 +1,25 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
|
show_usage() {
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] [search]
|
||||||
|
|
||||||
|
List or search HTTP status codes.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
search Search term to filter status codes
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
show_usage
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
statuses="100 Continue
|
statuses="100 Continue
|
||||||
101 Switching Protocols
|
101 Switching Protocols
|
||||||
@@ -62,7 +82,7 @@ statuses="100 Continue
|
|||||||
511 Network Authentication Required"
|
511 Network Authentication Required"
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
echo "$statuses"
|
echo "$statuses"
|
||||||
else
|
else
|
||||||
echo "$statuses" | grep -i --color=never "$@"
|
echo "$statuses" | grep -i --color=never "$@"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,4 +1,22 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] <command>
|
||||||
|
|
||||||
|
Check if a command is available.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
command Command to check
|
||||||
|
|
||||||
|
Returns 0 if command exists, 1 otherwise.
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
[ -n "$1" ] && command -v "$1" || exit 1
|
[ -n "$1" ] && command -v "$1" || exit 1
|
||||||
|
|||||||
@@ -1,4 +1,24 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
echo -n "$@" | wc -c | awk '{print $1}'
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] <string>
|
||||||
|
|
||||||
|
Display length of a string.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
string String to measure
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -t 0 ]]; then # Read from stdin (pipe)
|
||||||
|
wc -c | awk '{print $1}'
|
||||||
|
else # Read from arguments
|
||||||
|
echo -n "$@" | wc -c | awk '{print $1}'
|
||||||
|
fi
|
||||||
|
|||||||
@@ -1,5 +1,27 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] <lineno> <file>
|
||||||
|
|
||||||
|
Display a specific line from a file.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
lineno Line number to display (1-based)
|
||||||
|
file File to read from
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
lineno="$1"; shift
|
lineno="$1"; shift
|
||||||
sed -n "${lineno}p" -- "$@"
|
|
||||||
|
if [[ ! -t 0 ]]; then # Read from stdin (pipe)
|
||||||
|
sed -n "${lineno}p"
|
||||||
|
else # Read from file
|
||||||
|
sed -n "${lineno}p" -- "$@"
|
||||||
|
fi
|
||||||
|
|||||||
@@ -1,4 +1,21 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] <directory>
|
||||||
|
|
||||||
|
Create directory and change to it.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
directory Directory to create and enter
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
mkdir -p "$1"
|
mkdir -p "$1"
|
||||||
cd "$1" || exit
|
cd "$1" || false
|
||||||
|
|||||||
@@ -1,21 +1,35 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
if [ ! $# -eq 1 ]; then
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
echo 'mksh takes one argument' 1>&2
|
cat <<EOF
|
||||||
exit 1
|
Usage: $(basename "$0") [-h] <script>
|
||||||
elif [ -e "$1" ]; then
|
|
||||||
echo "$1 already exists" 1>&2
|
Create a new bash script with boilerplate.
|
||||||
exit 1
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
script Script filename to create
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo '#!/usr/bin/env bash
|
if [ ! $# -eq 1 ]; then
|
||||||
set -e
|
echo 'mksh takes one argument' 1>&2
|
||||||
set -u
|
exit 1
|
||||||
set -o pipefail
|
elif [ -e "$1" ]; then
|
||||||
|
echo "$1 already exists" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
' > "$1"
|
{
|
||||||
|
echo '#!/usr/bin/env bash'
|
||||||
|
echo 'set -eo pipefail'
|
||||||
|
echo
|
||||||
|
} > "$1"
|
||||||
|
|
||||||
chmod u+x "$1"
|
chmod u+x "$1"
|
||||||
|
exec "$EDITOR" "$1"
|
||||||
nano "$1"
|
|
||||||
|
|||||||
@@ -1,4 +1,22 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
curl http://ipecho.net/plain
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
echo
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h]
|
||||||
|
|
||||||
|
Display external IP address.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$1" == "-2" ]]; then
|
||||||
|
curl -fsSL https://api.myip.com | jq -r .ip
|
||||||
|
else
|
||||||
|
curl -fsSL http://ipecho.net/plain
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
|||||||
171
utils/.local/bin/notes
Executable file
171
utils/.local/bin/notes
Executable file
@@ -0,0 +1,171 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#shellcheck disable=SC2155,SC2207
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
NOTES_DIR="$HOME/notes"
|
||||||
|
EDITOR="${EDITOR:-nano}"
|
||||||
|
mkdir -p "$NOTES_DIR"
|
||||||
|
|
||||||
|
show_usage() {
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") <command> [options]
|
||||||
|
|
||||||
|
Commands:
|
||||||
|
add Create a new note
|
||||||
|
edit Open a note in editor
|
||||||
|
rm Remove a note
|
||||||
|
list List all notes
|
||||||
|
|
||||||
|
Options for 'add':
|
||||||
|
-n, --name <name> Custom note name (default: <unixtime>-untitled-note.md)
|
||||||
|
-t, --title <title> Custom note title (default: "Untitled note")
|
||||||
|
--no-time Don't add creation timestamp
|
||||||
|
--no-edit Don't open editor
|
||||||
|
|
||||||
|
Options for 'edit':
|
||||||
|
<name> Note filename to edit
|
||||||
|
|
||||||
|
Options for 'rm':
|
||||||
|
<name> Note filename to remove
|
||||||
|
|
||||||
|
Options for 'list':
|
||||||
|
(none)
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd_add() {
|
||||||
|
local name="untitled-note"
|
||||||
|
local title="Untitled note"
|
||||||
|
local add_time=true
|
||||||
|
local new_edit=true
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
-n|--name) name="$2"; shift 2 ;;
|
||||||
|
-t|--title) title="$2"; shift 2 ;;
|
||||||
|
--no-time) add_time=false; shift ;;
|
||||||
|
--no-edit) new_edit=false; shift ;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $1"
|
||||||
|
show_usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
local filename="$(date +%s)-${name}.md"
|
||||||
|
local filepath="$NOTES_DIR/$filename"
|
||||||
|
|
||||||
|
{
|
||||||
|
echo "# $title"
|
||||||
|
echo
|
||||||
|
if [[ "$add_time" == true ]]; then
|
||||||
|
echo
|
||||||
|
echo "Created at $(date '+%Y-%m-%d %H:%M:%S')"
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
echo "---"
|
||||||
|
echo
|
||||||
|
} > "$filepath"
|
||||||
|
|
||||||
|
echo "Created note: $filepath"
|
||||||
|
|
||||||
|
if [[ "$new_edit" == true ]]; then
|
||||||
|
$EDITOR "$filepath"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd_edit() {
|
||||||
|
if [[ $# -lt 1 ]]; then
|
||||||
|
echo "Error: Note name required"
|
||||||
|
show_usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local filename="$1"
|
||||||
|
local filepath="$NOTES_DIR/$filename"
|
||||||
|
|
||||||
|
if [[ ! -f "$filepath" ]]; then
|
||||||
|
echo "Error: Note not found: $filename"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
$EDITOR "$filepath"
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd_rm() {
|
||||||
|
if [[ $# -lt 1 ]]; then
|
||||||
|
echo "Error: Note name required"
|
||||||
|
show_usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local filename="$1"
|
||||||
|
local filepath="$NOTES_DIR/$filename"
|
||||||
|
|
||||||
|
if [[ ! -f "$filepath" ]]; then
|
||||||
|
echo "Error: Note not found: $filename"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -v "$filepath"
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd_list() {
|
||||||
|
local count=0
|
||||||
|
printf "%-40s %s\n" "Filename" "Title"
|
||||||
|
printf "%-40s %s\n" "--------" "-----"
|
||||||
|
|
||||||
|
# Use nullglob to handle empty directory case
|
||||||
|
local shopt_save
|
||||||
|
shopt_save=$(shopt -p nullglob)
|
||||||
|
shopt -s nullglob
|
||||||
|
|
||||||
|
local files=("$NOTES_DIR"/*.md)
|
||||||
|
|
||||||
|
# Restore original nullglob setting
|
||||||
|
eval "$shopt_save"
|
||||||
|
|
||||||
|
for file in "${files[@]}"; do
|
||||||
|
if [[ -f "$file" ]]; then
|
||||||
|
local filename=$(basename "$file")
|
||||||
|
local title=$(sed -n 's/^# \([^#].*\)/\1/p' "$file" | head -n1)
|
||||||
|
|
||||||
|
if [[ -z "$title" ]]; then
|
||||||
|
title="Untitled note"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "%-40s # %s\n" "$filename" "$title"
|
||||||
|
((count++))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ $count -eq 0 ]]; then
|
||||||
|
echo "No notes found"
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
echo "Total: $count note(s)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ $# -lt 1 ]]; then
|
||||||
|
cmd_list "$@"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
command="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
case "$command" in
|
||||||
|
add) cmd_add "$@" ;;
|
||||||
|
edit) cmd_edit "$@" ;;
|
||||||
|
rm) cmd_rm "$@" ;;
|
||||||
|
list) cmd_list "$@" ;;
|
||||||
|
-h|--help|help) show_usage ;;
|
||||||
|
*)
|
||||||
|
echo "Unknown command: $command"
|
||||||
|
show_usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
62
utils/.local/bin/notes-completion
Normal file
62
utils/.local/bin/notes-completion
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#shellcheck disable=SC2155,SC2207,SC2309,SC2034,SC2154,SC1087
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
_notes_completion() {
|
||||||
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
local command="${COMP_WORDS[1]}"
|
||||||
|
|
||||||
|
if [[ COMP_CWORD -eq 1 ]]; then
|
||||||
|
COMPREPLY=($(compgen -W "add edit rm list" -- "$cur"))
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$command" == "edit" || "$command" == "rm" ]]; then
|
||||||
|
local notes_dir="$HOME/notes"
|
||||||
|
local notes=()
|
||||||
|
if [[ -d "$notes_dir" ]]; then
|
||||||
|
for file in "$notes_dir"/*.md; do
|
||||||
|
if [[ -f "$file" ]]; then
|
||||||
|
notes+=("$(basename "$file")")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
local IFS=$'\n'
|
||||||
|
COMPREPLY=($(compgen -W "$(printf '%s\n' "${notes[@]}")" -- "$cur"))
|
||||||
|
compopt -o filenames
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_notes() {
|
||||||
|
local -a commands=(
|
||||||
|
'add:Create a new note'
|
||||||
|
'edit:Open a note in editor'
|
||||||
|
'rm:Remove a note'
|
||||||
|
'list:List all notes'
|
||||||
|
)
|
||||||
|
|
||||||
|
if (( CURRENT == 2 )); then
|
||||||
|
_describe 'command' commands
|
||||||
|
elif (( CURRENT >= 3 )); then
|
||||||
|
case $words[2] in
|
||||||
|
edit|rm)
|
||||||
|
local notes_dir="$HOME/notes"
|
||||||
|
if [[ -d "$notes_dir" ]]; then
|
||||||
|
_files -W "$notes_dir" -g '*.md'
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
_message 'no more arguments'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ -n "$BASH_VERSION" ]]; then
|
||||||
|
complete -F _notes_completion notes ./notes
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$ZSH_VERSION" ]]; then
|
||||||
|
compdef _notes notes ./notes
|
||||||
|
fi
|
||||||
@@ -1,3 +1,17 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
date '+%d.%m.%Y %H:%M:%S'
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h]
|
||||||
|
|
||||||
|
Display current time and unix timestamp.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
date '+%H:%M:%S%n%s'
|
||||||
|
|||||||
@@ -1,4 +1,20 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] <files...>
|
||||||
|
|
||||||
|
Change ownership of files to current user.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
files Files or directories to change ownership
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
sudo chown "$(whoami)". -R --changes --preserve-root "$@"
|
sudo chown "$(whoami)". -R --changes --preserve-root "$@"
|
||||||
|
|||||||
@@ -1,12 +1,25 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
if hash pbpaste 2>/dev/null; then
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
exec pbpaste
|
cat <<EOF
|
||||||
elif hash xclip 2>/dev/null; then
|
Usage: $(basename "$0") [-h]
|
||||||
exec xclip -selection clipboard -o
|
|
||||||
elif [[ -e /tmp/clipboard ]]; then
|
Paste content from system clipboard.
|
||||||
exec cat /tmp/clipboard
|
|
||||||
else
|
Options:
|
||||||
echo ''
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if hash pbpaste 2>/dev/null; then
|
||||||
|
exec pbpaste
|
||||||
|
elif hash xclip 2>/dev/null; then
|
||||||
|
exec xclip -selection clipboard -o
|
||||||
|
elif [[ -e /tmp/clipboard ]]; then
|
||||||
|
exec cat /tmp/clipboard
|
||||||
|
else
|
||||||
|
echo ''
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,4 +1,22 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h]
|
||||||
|
|
||||||
|
Set default permissions for files and directories in current directory.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Sets:
|
||||||
|
- Files: 0664 (rw-rw-r--)
|
||||||
|
- Directories: 0775 (rwxrwxr-x)
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
# TODO permissions via arguments
|
# TODO permissions via arguments
|
||||||
|
|
||||||
|
|||||||
20
utils/.local/bin/qwerty
Executable file
20
utils/.local/bin/qwerty
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import sys
|
||||||
|
|
||||||
|
en = "qwertyuiop[]asdfghjkl;'zxcvbnm,./QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<>?"
|
||||||
|
ru = "йцукенгшщзхъфывапролджэячсмитьбю.ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,"
|
||||||
|
|
||||||
|
def toggle(text):
|
||||||
|
if any('а' <= c <= 'я' or 'А' <= c <= 'Я' for c in text):
|
||||||
|
trans = str.maketrans(ru, en)
|
||||||
|
else:
|
||||||
|
trans = str.maketrans(en, ru)
|
||||||
|
return text.translate(trans)
|
||||||
|
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
input_text = " ".join(sys.argv[1:])
|
||||||
|
else:
|
||||||
|
input_text = sys.stdin.read().strip()
|
||||||
|
|
||||||
|
if input_text:
|
||||||
|
print(toggle(input_text))
|
||||||
@@ -1,12 +1,29 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
process_list="$(ps -eo 'pid command')"
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
if [[ $# != 0 ]]; then
|
cat <<EOF
|
||||||
process_list="$(echo "$process_list" | grep -Fiw "$@")"
|
Usage: $(basename "$0") [-h] [filter]
|
||||||
|
|
||||||
|
Display running processes.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
filter Optional filter string to match processes
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "$process_list" |
|
if [[ $# == 0 ]]; then
|
||||||
grep -Fv "${BASH_SOURCE[0]}" |
|
process_list="$(ps -eo 'pid command')"
|
||||||
grep -Fv grep |
|
else
|
||||||
GREP_COLORS='mt=00;35' grep -E --colour=auto '^\s*[[:digit:]]+'
|
process_list="$(echo "$process_list" | grep -Fiw "$@")"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$process_list" \
|
||||||
|
| grep -Fv "${BASH_SOURCE[0]}" \
|
||||||
|
| grep -Fv grep \
|
||||||
|
| GREP_COLORS='mt=00;35' grep -E --colour=auto '^\s*[[:digit:]]+'
|
||||||
|
|||||||
@@ -1,6 +1,19 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h]
|
||||||
|
|
||||||
|
Open a temporary scratchpad file in \$EDITOR.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
file="$(mktemp)"
|
file="$(mktemp)"
|
||||||
echo "Editing $file"
|
echo "Editing $file"
|
||||||
exec "$EDITOR" "$file"
|
exec "$EDITOR" "$file"
|
||||||
|
|||||||
@@ -1,23 +1,36 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
port='8888'
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
if [ $# -eq 1 ]; then
|
cat <<EOF
|
||||||
port="$1"
|
Usage: $(basename "$0") [-h] [port]
|
||||||
|
|
||||||
|
Start a simple HTTP server in current directory.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
port Port number (default: 8888)
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
port="${1:-8888}"
|
||||||
|
|
||||||
if hash php 2>/dev/null; then
|
if hash php 2>/dev/null; then
|
||||||
exec php -S "localhost:$port"
|
exec php -S "localhost:$port"
|
||||||
elif hash python3 2>/dev/null; then
|
elif hash python3 2>/dev/null; then
|
||||||
exec python3 -m http.server "$port"
|
exec python3 -m http.server "$port"
|
||||||
elif hash python 2>/dev/null; then
|
elif hash python 2>/dev/null; then
|
||||||
major_version="$(python -c 'import platform as p;print(p.python_version_tuple()[0])')"
|
major_version="$(python -c 'import platform as p;print(p.python_version_tuple()[0])')"
|
||||||
if [[ "$major_version" == '3' ]]; then
|
if [[ "$major_version" == '3' ]]; then
|
||||||
exec python -m http.server "$port"
|
exec python -m http.server "$port"
|
||||||
else
|
else
|
||||||
exec python -m SimpleHTTPServer "$port"
|
exec python -m SimpleHTTPServer "$port"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo 'unable to start HTTP server' 1>&2
|
echo 'unable to start HTTP server' 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|||||||
24
utils/.local/bin/space
Executable file
24
utils/.local/bin/space
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] PATH [-N]
|
||||||
|
|
||||||
|
Display used space on disk by PATH or show top N most heavy paths inside a PATH
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$2" ]; then
|
||||||
|
du -ah "$1" 2>/dev/null \
|
||||||
|
| sort -rh 2>/dev/null \
|
||||||
|
| head -"$2" 2>/dev/null
|
||||||
|
else
|
||||||
|
du -ah --max-depth=1 "$1" 2>/dev/null \
|
||||||
|
| sort -rh 2>/dev/null
|
||||||
|
fi
|
||||||
@@ -1,6 +1,22 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] <seconds>
|
||||||
|
|
||||||
|
Set a timer with desktop notification.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
seconds Timer duration in seconds
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
sleep "$1"
|
sleep "$1"
|
||||||
notify-send 'Timer complete!' \
|
notify-send 'Timer complete!' \
|
||||||
-u normal \
|
-u normal \
|
||||||
|
|||||||
17
utils/.local/bin/today
Executable file
17
utils/.local/bin/today
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h]
|
||||||
|
|
||||||
|
Display current date.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
date '+%d.%m.%Y'
|
||||||
@@ -1,3 +1,20 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] <files...>
|
||||||
|
|
||||||
|
Move files to trash using gio.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
files Files or directories to move to trash
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
gio trash "$@"
|
gio trash "$@"
|
||||||
|
|||||||
@@ -1,8 +1,24 @@
|
|||||||
#!/usr/bin/env bash
|
#!/husr/bin/env bash
|
||||||
set -u
|
set -uo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] <command>
|
||||||
|
|
||||||
|
Retry a command until it fails.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
command Command to repeatedly execute
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
"$@"
|
"$@"
|
||||||
while [[ "$?" -eq 0 ]]; do
|
while [[ "$?" -eq 0 ]]; do
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
"$@"
|
"$@"
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -1,8 +1,24 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -u
|
set -uo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] <command>
|
||||||
|
|
||||||
|
Retry a command until it succeeds.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
command Command to repeatedly execute
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
"$@"
|
"$@"
|
||||||
while [[ "$?" -ne 0 ]]; do
|
while [[ "$?" -ne 0 ]]; do
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
"$@"
|
"$@"
|
||||||
done
|
done
|
||||||
|
|||||||
16
utils/.local/bin/unixtime
Executable file
16
utils/.local/bin/unixtime
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h]
|
||||||
|
|
||||||
|
Display current unix timestamp.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
date '%s'
|
||||||
@@ -1,10 +1,23 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h]
|
||||||
|
|
||||||
|
Upgrade system packages (apt, snap, flatpak).
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
is apt >/dev/null && {
|
is apt >/dev/null && {
|
||||||
echo
|
echo
|
||||||
echo "==========================="
|
echo "==========================="
|
||||||
echo "Upgarding apt packages..."
|
echo "Upgrading apt packages..."
|
||||||
echo "==========================="
|
echo "==========================="
|
||||||
echo
|
echo
|
||||||
sudo apt update
|
sudo apt update
|
||||||
@@ -14,7 +27,7 @@ is apt >/dev/null && {
|
|||||||
is snap >/dev/null && {
|
is snap >/dev/null && {
|
||||||
echo
|
echo
|
||||||
echo "==========================="
|
echo "==========================="
|
||||||
echo "Upgarding snap packages..."
|
echo "Upgrading snap packages..."
|
||||||
echo "==========================="
|
echo "==========================="
|
||||||
echo
|
echo
|
||||||
sudo snap refresh
|
sudo snap refresh
|
||||||
@@ -23,7 +36,7 @@ is snap >/dev/null && {
|
|||||||
is flatpak >/dev/null && {
|
is flatpak >/dev/null && {
|
||||||
echo
|
echo
|
||||||
echo "==========================="
|
echo "==========================="
|
||||||
echo "Upgarding flatpak packages..."
|
echo "Upgrading flatpak packages..."
|
||||||
echo "==========================="
|
echo "==========================="
|
||||||
echo
|
echo
|
||||||
sudo flatpak update -y
|
sudo flatpak update -y
|
||||||
|
|||||||
@@ -1,12 +1,38 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
curl "https://r.jina.ai/$1" \
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
-sS \
|
cat <<EOF
|
||||||
-H "DNT: 1" \
|
Usage: $(basename "$0") [-h] <url>
|
||||||
-H "X-Base: final" \
|
|
||||||
-H "X-Engine: direct" \
|
Convert webpage URL to markdown using jina.ai.
|
||||||
-H "X-Md-Em-Delimiter: *" \
|
|
||||||
-H "X-Md-Heading-Style: setext" \
|
Options:
|
||||||
-H "X-Md-Link-Reference-Style: collapsed" \
|
-h, --help Show this help message
|
||||||
-H "X-Md-Link-Style: referenced"
|
|
||||||
|
Arguments:
|
||||||
|
url URL of webpage to convert
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# More details: https://jina.ai/reader/
|
||||||
|
|
||||||
|
url="$1"; shift
|
||||||
|
curl "https://r.jina.ai/$url" \
|
||||||
|
-sS \
|
||||||
|
-H "DNT: 1" \
|
||||||
|
-H "X-Md-Hr: ---" \
|
||||||
|
-H "X-Base: final" \
|
||||||
|
-H "X-Timeout: 10" \
|
||||||
|
-H "X-Locale: ru-RU" \
|
||||||
|
-H "X-No-Cache: true" \
|
||||||
|
-H "X-Engine: browser" \
|
||||||
|
-H "X-User-Agent: url2md" \
|
||||||
|
-H "X-Md-Em-Delimiter: *" \
|
||||||
|
-H "X-Md-Link-Style: inlined" \
|
||||||
|
-H "X-Return-Format: markdown" \
|
||||||
|
-H "X-Keep-Img-Data-Url: true" \
|
||||||
|
-H "X-Md-Link-Reference-Style: collapsed" \
|
||||||
|
"$@"
|
||||||
|
|||||||
30
utils/.local/bin/vcompress
Executable file
30
utils/.local/bin/vcompress
Executable file
@@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] <input.mp4>
|
||||||
|
|
||||||
|
Compress MP4 video using ffmpeg.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
input.mp4 Input video file (must be .mp4)
|
||||||
|
|
||||||
|
Output:
|
||||||
|
<input>_compressed.mp4
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
filename="${1%.mp4}"
|
||||||
|
ffmpeg \
|
||||||
|
-i "$filename".mp4 \
|
||||||
|
-c:v libx264 \
|
||||||
|
-crf 28 \
|
||||||
|
-preset veryslow \
|
||||||
|
-c:a aac \
|
||||||
|
-b:a 128k \
|
||||||
|
"$filename"_compressed.mp4
|
||||||
@@ -1,11 +1,27 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
if hash systemd-inhibit 2>/dev/null; then
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
systemd-inhibit \
|
cat <<EOF
|
||||||
--who=waitfor \
|
Usage: $(basename "$0") [-h] <pid>
|
||||||
--why="Awaiting PID $1" \
|
|
||||||
tail --pid="$1" -f /dev/null
|
Wait for a process to complete.
|
||||||
else
|
|
||||||
tail --pid="$1" -f /dev/null
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
pid Process ID to wait for
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if hash systemd-inhibit 2>/dev/null; then
|
||||||
|
systemd-inhibit \
|
||||||
|
--who=waitfor \
|
||||||
|
--why="Awaiting PID $1" \
|
||||||
|
tail --pid="$1" -f /dev/null
|
||||||
|
else
|
||||||
|
tail --pid="$1" -f /dev/null
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,4 +1,22 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
#set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] <command>
|
||||||
|
|
||||||
|
Show detailed information about a command.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
command Command to investigate
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
type "$1" 2>/dev/null
|
type "$1" 2>/dev/null
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
# Download music from Youtube or Youtube Music
|
# Download music from Youtube or Youtube Music
|
||||||
# and save as top quality flac file without video
|
# and save as top quality flac file without video
|
||||||
@@ -6,6 +7,25 @@
|
|||||||
# Usage: $ ytmusic https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
# Usage: $ ytmusic https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
||||||
# More info: https://github.com/ytdl-org/youtube-dl
|
# More info: https://github.com/ytdl-org/youtube-dl
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] <url>
|
||||||
|
|
||||||
|
Download music from YouTube or YouTube Music as FLAC.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
url YouTube or YouTube Music URL (playlist or video)
|
||||||
|
|
||||||
|
Output:
|
||||||
|
$HOME/ytmusic/<playlist>/<channel> - <title>.flac
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
DEST_PATH="${HOME}/ytmusic"
|
DEST_PATH="${HOME}/ytmusic"
|
||||||
mkdir -p "${DEST_PATH}"
|
mkdir -p "${DEST_PATH}"
|
||||||
|
|
||||||
|
|||||||
@@ -32,10 +32,10 @@
|
|||||||
"chat.commandCenter.enabled": false,
|
"chat.commandCenter.enabled": false,
|
||||||
"window.enableMenuBarMnemonics": false,
|
"window.enableMenuBarMnemonics": false,
|
||||||
"window.restoreFullscreen": true,
|
"window.restoreFullscreen": true,
|
||||||
"window.newWindowProfile": "По умолчанию",
|
|
||||||
"window.customTitleBarVisibility": "auto",
|
"window.customTitleBarVisibility": "auto",
|
||||||
"window.commandCenter": false,
|
"window.commandCenter": false,
|
||||||
"window.menuBarVisibility": "compact",
|
"window.menuStyle": "custom",
|
||||||
|
"window.menuBarVisibility": "toggle",
|
||||||
|
|
||||||
"debug.toolBarLocation": "docked",
|
"debug.toolBarLocation": "docked",
|
||||||
"testing.coverageToolbarEnabled": true,
|
"testing.coverageToolbarEnabled": true,
|
||||||
@@ -44,7 +44,34 @@
|
|||||||
|
|
||||||
"statusbar_command.applicationCommands": [
|
"statusbar_command.applicationCommands": [
|
||||||
{
|
{
|
||||||
"text": "$(arrow-left)",
|
"text": "$(debug-restart)",
|
||||||
|
"tooltip": "Перезагрузить расширения",
|
||||||
|
"id": "reload-ext",
|
||||||
|
"name": "Перезагрузить расширения",
|
||||||
|
"priority": 1,
|
||||||
|
"alignment": "left",
|
||||||
|
"command": "workbench.action.restartExtensionHost"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "$(console) Терминал",
|
||||||
|
"tooltip": "Терминал",
|
||||||
|
"id": "terminal",
|
||||||
|
"name": "Терминал",
|
||||||
|
"priority": 1,
|
||||||
|
"alignment": "left",
|
||||||
|
"command": "workbench.action.terminal.toggleTerminal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "$(credit-card) DevTools",
|
||||||
|
"tooltip": "VSCode Dev Tools",
|
||||||
|
"id": "dev-tools",
|
||||||
|
"name": "VSCode Dev Tools",
|
||||||
|
"priority": 1,
|
||||||
|
"alignment": "left",
|
||||||
|
"command": "workbench.action.toggleDevTools"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "$(arrow-left) Назад",
|
||||||
"tooltip": "Назад",
|
"tooltip": "Назад",
|
||||||
"id": "nav-back",
|
"id": "nav-back",
|
||||||
"name": "Назад",
|
"name": "Назад",
|
||||||
@@ -53,13 +80,22 @@
|
|||||||
"command": "workbench.action.navigateBack"
|
"command": "workbench.action.navigateBack"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "$(arrow-right)",
|
"text": "$(arrow-right) Вперёд",
|
||||||
"tooltip": "Вперёд",
|
"tooltip": "Вперёд",
|
||||||
"id": "nav-forw",
|
"id": "nav-forw",
|
||||||
"name": "Вперёд",
|
"name": "Вперёд",
|
||||||
"priority": 1,
|
"priority": 1,
|
||||||
"alignment": "left",
|
"alignment": "left",
|
||||||
"command": "workbench.action.navigateForward"
|
"command": "workbench.action.navigateForward"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "$(squirrel) Decode JWT",
|
||||||
|
"tooltip": "Decode JWT",
|
||||||
|
"id": "decode_jwt",
|
||||||
|
"name": "decode_jwt",
|
||||||
|
"priority": 1,
|
||||||
|
"alignment": "left",
|
||||||
|
"command": "extension.jwt-decoder"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
@@ -285,5 +321,6 @@
|
|||||||
"git diff",
|
"git diff",
|
||||||
"git show"
|
"git show"
|
||||||
],
|
],
|
||||||
"kilo-code.deniedCommands": []
|
"kilo-code.deniedCommands": [],
|
||||||
|
"chat.disableAIFeatures": true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,6 +35,20 @@ include "%L"
|
|||||||
<Multi_key> <P> <minus> : "₽" # рубли
|
<Multi_key> <P> <minus> : "₽" # рубли
|
||||||
<Multi_key> <p> <minus> : "₽" # рубли
|
<Multi_key> <p> <minus> : "₽" # рубли
|
||||||
|
|
||||||
|
<Multi_key> <plus> <minus> : "±"
|
||||||
|
|
||||||
|
<Multi_key> <^> <|> : "↑"
|
||||||
|
<Multi_key> <^> <equal> : "⇑"
|
||||||
|
|
||||||
|
<Multi_key> <|> <v> : "↓"
|
||||||
|
<Multi_key> <v> <equal> : "⇓"
|
||||||
|
|
||||||
|
<Multi_key> <less> <minus> : "←"
|
||||||
|
<Multi_key> <less> <equal> : "⇐"
|
||||||
|
|
||||||
|
<Multi_key> <minus> <greater> : "→"
|
||||||
|
<Multi_key> <equal> <greater> : "⇒"
|
||||||
|
|
||||||
# ################################################################################
|
# ################################################################################
|
||||||
# # Compose Table for Cyrillic Alphabets / Compose-таблица для кириллических алфавитов
|
# # Compose Table for Cyrillic Alphabets / Compose-таблица для кириллических алфавитов
|
||||||
# ################################################################################
|
# ################################################################################
|
||||||
|
|||||||
Reference in New Issue
Block a user