Compare commits
21 Commits
ab2a624125
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
b9635a5697
|
|||
|
153776c54e
|
|||
|
f4c500d6cd
|
|||
|
2a177b5413
|
|||
|
e2a3cf8aac
|
|||
|
d8859cf833
|
|||
|
2ce978585b
|
|||
|
906a2cdb93
|
|||
|
f7fc877126
|
|||
|
5b410bf9e7
|
|||
|
c531f9f88b
|
|||
|
214300e21e
|
|||
|
95de82c2a0
|
|||
|
0d7feada81
|
|||
|
94df267831
|
|||
|
9ca95f6353
|
|||
|
|
cf5d7a0877 | ||
|
ec03e01dbb
|
|||
|
c6ca5271e8
|
|||
|
601ccbaf14
|
|||
|
1c92add6e1
|
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
*.backup
|
||||
*.bak
|
||||
*.log
|
||||
*._
|
||||
*.tmp
|
||||
*.tmp*
|
||||
*.vscdb
|
||||
@@ -22,4 +22,4 @@ Target (`-t`) defaults to the parent of `pwd`, so if you clone this repo not in
|
||||
* <https://www.gnu.org/software/stow/manual/stow.html>
|
||||
* <https://tamerlan.dev/how-i-manage-my-dotfiles-using-gnu-stow/>
|
||||
* <https://gist.github.com/andreibosco/cb8506780d0942a712fc>
|
||||
* https://github.com/jimeh/git-aware-stow
|
||||
* <https://github.com/jimeh/git-aware-stow>
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
{
|
||||
"output": {
|
||||
"bass_enhancer#0": {
|
||||
"amount": 3.000000000000008,
|
||||
"blend": 0.0,
|
||||
"bass_loudness#0": {
|
||||
"bypass": false,
|
||||
"floor": 10.0,
|
||||
"floor-active": false,
|
||||
"harmonics": 2.000000000000001,
|
||||
"input-gain": 0.0,
|
||||
"output-gain": 0.0,
|
||||
"scope": 30.0
|
||||
"link": -9.1,
|
||||
"loudness": -3.0000000000000013,
|
||||
"output": -6.0,
|
||||
"output-gain": 0.0
|
||||
},
|
||||
"blocklist": [],
|
||||
"equalizer#0": {
|
||||
@@ -19,7 +16,7 @@
|
||||
"left": {
|
||||
"band0": {
|
||||
"frequency": 28.738174228603842,
|
||||
"gain": -2.0,
|
||||
"gain": -6.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.644403823771979,
|
||||
@@ -30,18 +27,18 @@
|
||||
},
|
||||
"band1": {
|
||||
"frequency": 53.850091570755154,
|
||||
"gain": 3.0,
|
||||
"gain": -3.75,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
"slope": "x1",
|
||||
"slope": "x4",
|
||||
"solo": false,
|
||||
"type": "Bell",
|
||||
"width": 4.0
|
||||
},
|
||||
"band10": {
|
||||
"frequency": 15336.699231206312,
|
||||
"gain": -3.0,
|
||||
"gain": -8.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -52,7 +49,7 @@
|
||||
},
|
||||
"band2": {
|
||||
"frequency": 100.90523980790812,
|
||||
"gain": 3.0,
|
||||
"gain": -4.12,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719794,
|
||||
@@ -62,11 +59,11 @@
|
||||
"width": 4.0
|
||||
},
|
||||
"band3": {
|
||||
"frequency": 189.07799640996342,
|
||||
"gain": 0.0,
|
||||
"frequency": 260.0,
|
||||
"gain": -6.8,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719794,
|
||||
"q": 1.98,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell",
|
||||
@@ -74,7 +71,7 @@
|
||||
},
|
||||
"band4": {
|
||||
"frequency": 354.2976439525226,
|
||||
"gain": -5.0,
|
||||
"gain": -13.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -85,7 +82,7 @@
|
||||
},
|
||||
"band5": {
|
||||
"frequency": 663.8890981166219,
|
||||
"gain": -11.0,
|
||||
"gain": -19.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719794,
|
||||
@@ -96,7 +93,7 @@
|
||||
},
|
||||
"band6": {
|
||||
"frequency": 1244.006958897993,
|
||||
"gain": -6.0,
|
||||
"gain": -11.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -107,7 +104,7 @@
|
||||
},
|
||||
"band7": {
|
||||
"frequency": 2331.041913742621,
|
||||
"gain": -1.0,
|
||||
"gain": -5.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719794,
|
||||
@@ -118,7 +115,7 @@
|
||||
},
|
||||
"band8": {
|
||||
"frequency": 4367.946951388736,
|
||||
"gain": 2.0,
|
||||
"gain": -3.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -129,7 +126,7 @@
|
||||
},
|
||||
"band9": {
|
||||
"frequency": 8184.735099642112,
|
||||
"gain": 2.0,
|
||||
"gain": -4.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -141,13 +138,13 @@
|
||||
},
|
||||
"mode": "IIR",
|
||||
"num-bands": 11,
|
||||
"output-gain": 0.0,
|
||||
"output-gain": 2.0,
|
||||
"pitch-left": 0.0,
|
||||
"pitch-right": 0.0,
|
||||
"right": {
|
||||
"band0": {
|
||||
"frequency": 28.738174228603842,
|
||||
"gain": -2.0,
|
||||
"gain": -6.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.644403823771979,
|
||||
@@ -158,18 +155,18 @@
|
||||
},
|
||||
"band1": {
|
||||
"frequency": 53.850091570755154,
|
||||
"gain": 3.0,
|
||||
"gain": -3.75,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
"slope": "x1",
|
||||
"slope": "x4",
|
||||
"solo": false,
|
||||
"type": "Bell",
|
||||
"width": 4.0
|
||||
},
|
||||
"band10": {
|
||||
"frequency": 15336.699231206312,
|
||||
"gain": -3.0,
|
||||
"gain": -8.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -180,7 +177,7 @@
|
||||
},
|
||||
"band2": {
|
||||
"frequency": 100.90523980790812,
|
||||
"gain": 3.0,
|
||||
"gain": -4.12,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719794,
|
||||
@@ -190,11 +187,11 @@
|
||||
"width": 4.0
|
||||
},
|
||||
"band3": {
|
||||
"frequency": 189.07799640996342,
|
||||
"gain": 0.0,
|
||||
"frequency": 260.0,
|
||||
"gain": -6.8,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719794,
|
||||
"q": 1.98,
|
||||
"slope": "x1",
|
||||
"solo": false,
|
||||
"type": "Bell",
|
||||
@@ -202,7 +199,7 @@
|
||||
},
|
||||
"band4": {
|
||||
"frequency": 354.2976439525226,
|
||||
"gain": -5.0,
|
||||
"gain": -13.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -213,7 +210,7 @@
|
||||
},
|
||||
"band5": {
|
||||
"frequency": 663.8890981166219,
|
||||
"gain": -11.0,
|
||||
"gain": -19.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719794,
|
||||
@@ -224,7 +221,7 @@
|
||||
},
|
||||
"band6": {
|
||||
"frequency": 1244.006958897993,
|
||||
"gain": -6.0,
|
||||
"gain": -11.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -235,7 +232,7 @@
|
||||
},
|
||||
"band7": {
|
||||
"frequency": 2331.041913742621,
|
||||
"gain": -1.0,
|
||||
"gain": -5.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719794,
|
||||
@@ -246,7 +243,7 @@
|
||||
},
|
||||
"band8": {
|
||||
"frequency": 4367.946951388736,
|
||||
"gain": 2.0,
|
||||
"gain": -3.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -257,7 +254,7 @@
|
||||
},
|
||||
"band9": {
|
||||
"frequency": 8184.735099642112,
|
||||
"gain": 2.0,
|
||||
"gain": -4.0,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -271,7 +268,7 @@
|
||||
},
|
||||
"plugins_order": [
|
||||
"equalizer#0",
|
||||
"bass_enhancer#0"
|
||||
"bass_loudness#0"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"output": {
|
||||
"bass_enhancer#0": {
|
||||
"amount": 3.000000000000006,
|
||||
"amount": 2.5000000000000058,
|
||||
"blend": 0.0,
|
||||
"bypass": false,
|
||||
"floor": 20.0,
|
||||
@@ -19,7 +19,7 @@
|
||||
"left": {
|
||||
"band0": {
|
||||
"frequency": 28.738174228603842,
|
||||
"gain": -1.22,
|
||||
"gain": -2.22,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.644403823771979,
|
||||
@@ -30,7 +30,7 @@
|
||||
},
|
||||
"band1": {
|
||||
"frequency": 53.850091570755154,
|
||||
"gain": 0.92,
|
||||
"gain": -0.08,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -41,7 +41,7 @@
|
||||
},
|
||||
"band10": {
|
||||
"frequency": 15336.699231206312,
|
||||
"gain": -11.65,
|
||||
"gain": -9.65,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -52,7 +52,7 @@
|
||||
},
|
||||
"band2": {
|
||||
"frequency": 100.90523980790812,
|
||||
"gain": -1.58,
|
||||
"gain": -3.58,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719794,
|
||||
@@ -118,7 +118,7 @@
|
||||
},
|
||||
"band8": {
|
||||
"frequency": 4367.946951388736,
|
||||
"gain": -0.62,
|
||||
"gain": -2.62,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -147,7 +147,7 @@
|
||||
"right": {
|
||||
"band0": {
|
||||
"frequency": 28.738174228603842,
|
||||
"gain": -1.22,
|
||||
"gain": -2.22,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.644403823771979,
|
||||
@@ -158,7 +158,7 @@
|
||||
},
|
||||
"band1": {
|
||||
"frequency": 53.850091570755154,
|
||||
"gain": 0.92,
|
||||
"gain": -0.08,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -169,7 +169,7 @@
|
||||
},
|
||||
"band10": {
|
||||
"frequency": 15336.699231206312,
|
||||
"gain": -11.65,
|
||||
"gain": -9.65,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -180,7 +180,7 @@
|
||||
},
|
||||
"band2": {
|
||||
"frequency": 100.90523980790812,
|
||||
"gain": -1.58,
|
||||
"gain": -3.58,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719794,
|
||||
@@ -246,7 +246,7 @@
|
||||
},
|
||||
"band8": {
|
||||
"frequency": 4367.946951388736,
|
||||
"gain": -0.62,
|
||||
"gain": -2.62,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
|
||||
@@ -11,6 +11,14 @@
|
||||
"output-gain": 0.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": [],
|
||||
"equalizer#0": {
|
||||
"balance": 0.0,
|
||||
@@ -19,7 +27,7 @@
|
||||
"left": {
|
||||
"band0": {
|
||||
"frequency": 28.738174228603842,
|
||||
"gain": -5.22,
|
||||
"gain": -3.22,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.644403823771979,
|
||||
@@ -30,7 +38,7 @@
|
||||
},
|
||||
"band1": {
|
||||
"frequency": 53.850091570755154,
|
||||
"gain": -2.08,
|
||||
"gain": -0.08,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -52,7 +60,7 @@
|
||||
},
|
||||
"band2": {
|
||||
"frequency": 100.90523980790812,
|
||||
"gain": -5.58,
|
||||
"gain": -4.58,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719794,
|
||||
@@ -147,7 +155,7 @@
|
||||
"right": {
|
||||
"band0": {
|
||||
"frequency": 28.738174228603842,
|
||||
"gain": -5.22,
|
||||
"gain": -3.22,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.644403823771979,
|
||||
@@ -158,7 +166,7 @@
|
||||
},
|
||||
"band1": {
|
||||
"frequency": 53.850091570755154,
|
||||
"gain": -2.08,
|
||||
"gain": -0.08,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719791,
|
||||
@@ -180,7 +188,7 @@
|
||||
},
|
||||
"band2": {
|
||||
"frequency": 100.90523980790812,
|
||||
"gain": -5.58,
|
||||
"gain": -4.58,
|
||||
"mode": "RLC (BT)",
|
||||
"mute": false,
|
||||
"q": 1.6444038237719794,
|
||||
@@ -271,7 +279,8 @@
|
||||
},
|
||||
"plugins_order": [
|
||||
"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
|
||||
stashes = "stash list" ; show stashed changes
|
||||
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
|
||||
fuck = "!git checkout $(git config init.defaultBranch); git fetch origin --prune; git reset --hard origin/$(git config init.defaultBranch); git clean -dff"
|
||||
|
||||
|
||||
@@ -22,4 +22,6 @@
|
||||
[include]
|
||||
path = ~/.git_aliases
|
||||
[include]
|
||||
path = ~/.gitconfig.extra ; use this file to store other personal settings and aliases
|
||||
path = ~/.git_aliases.local
|
||||
[include]
|
||||
path = ~/.gitconfig.local ; use this file to store other personal settings and aliases
|
||||
|
||||
6
git/.gitignore
vendored
6
git/.gitignore
vendored
@@ -7,4 +7,10 @@ nbproject/
|
||||
*.log
|
||||
*.bak
|
||||
*.rdb
|
||||
.env
|
||||
*.env
|
||||
.env.*
|
||||
|
||||
!.env.example
|
||||
!.env.default
|
||||
!/**/*.gitkeep
|
||||
|
||||
86
obs/.config/obs-studio/global.ini
Normal file
86
obs/.config/obs-studio/global.ini
Normal file
@@ -0,0 +1,86 @@
|
||||
[General]
|
||||
Pre19Defaults=false
|
||||
Pre21Defaults=false
|
||||
Pre23Defaults=false
|
||||
Pre24.1Defaults=false
|
||||
FirstRun=true
|
||||
LastVersion=503316482
|
||||
CurrentTheme3=Dark
|
||||
MaxLogs=10
|
||||
InfoIncrement=-1
|
||||
ProcessPriority=Normal
|
||||
EnableAutoUpdates=true
|
||||
ConfirmOnExit=true
|
||||
HotkeyFocusType=NeverDisableHotkeys
|
||||
|
||||
[Basic]
|
||||
Profile=Безымянный
|
||||
ProfileDir=Безымянный
|
||||
SceneCollection=Безымянный
|
||||
SceneCollectionFile=Безымянный
|
||||
ConfigOnNewProfile=true
|
||||
|
||||
[BasicWindow]
|
||||
gridMode=false
|
||||
geometry=AdnQywADAAAAAAAAAAAAAAAAB38AAAQVAAAAAAAAABwAAAd/AAAEFQAAAAACAAAAB4AAAAAAAAAAHAAAB38AAAQV
|
||||
DockState=AAAA/wAAAAD9AAAAAgAAAAAAAAFfAAADwvwCAAAABPwAAAAWAAAA3wAAAI0BAAAY+gAAAAABAAAAAvsAAAAUAHMAYwBlAG4AZQBzAEQAbwBjAGsBAAAAAAAAAKEAAACgAP////sAAAAeAHQAcgBhAG4AcwBpAHQAaQBvAG4AcwBEAG8AYwBrAQAAAAD/////AAAAugD////7AAAAFgBzAG8AdQByAGMAZQBzAEQAbwBjAGsBAAAA+QAAAQwAAAB0AP////sAAAASAG0AaQB4AGUAcgBEAG8AYwBrAQAAAgkAAAENAAAAdgD////7AAAAGABjAG8AbgB0AHIAbwBsAHMARABvAGMAawEAAAMaAAAAvgAAALsA////AAAAAwAABkAAAAEC/AEAAAAB+wAAABIAcwB0AGEAdABzAEQAbwBjAGsCAAACzQAAAPUAAAK8AAAAyAAABh0AAAPCAAAABAAAAAQAAAAIAAAACPwAAAAA
|
||||
PreviewEnabled=true
|
||||
AlwaysOnTop=false
|
||||
SceneDuplicationMode=true
|
||||
SwapScenesMode=true
|
||||
EditPropertiesMode=false
|
||||
PreviewProgramMode=false
|
||||
DocksLocked=false
|
||||
WarnBeforeStartingStream=false
|
||||
WarnBeforeStoppingStream=false
|
||||
WarnBeforeStoppingRecord=false
|
||||
SysTrayWhenStarted=false
|
||||
SysTrayMinimizeToTray=true
|
||||
RecordWhenStreaming=true
|
||||
SnappingEnabled=true
|
||||
ScreenSnapping=true
|
||||
SourceSnapping=true
|
||||
CenterSnapping=false
|
||||
SnapDistance=10
|
||||
SpacingHelpersEnabled=true
|
||||
KeepRecordingWhenStreamStops=false
|
||||
SysTrayEnabled=true
|
||||
SaveProjectors=false
|
||||
ShowTransitions=true
|
||||
ShowListboxToolbars=true
|
||||
ShowStatusBar=true
|
||||
ShowSourceIcons=true
|
||||
ShowContextToolbars=true
|
||||
StudioModeLabels=true
|
||||
VerticalVolControl=false
|
||||
MultiviewMouseSwitch=true
|
||||
MultiviewDrawNames=true
|
||||
MultiviewDrawAreas=true
|
||||
MediaControlsCountdownTimer=true
|
||||
SideDocks=false
|
||||
|
||||
[PropertiesWindow]
|
||||
cx=720
|
||||
cy=580
|
||||
|
||||
[ScriptLogWindow]
|
||||
geometry=AdnQywADAAAAAAAAAAAAFAAAAlcAAAGjAAAAAAAAABQAAAJXAAABowAAAAAAAAAAB4AAAAAAAAAAFAAAAlcAAAGj
|
||||
|
||||
[OBSWebSocket]
|
||||
|
||||
[Video]
|
||||
Renderer=OpenGL
|
||||
|
||||
[Accessibility]
|
||||
SelectRed=255
|
||||
SelectGreen=65280
|
||||
SelectBlue=16744192
|
||||
MixerGreen=2522918
|
||||
MixerYellow=2523007
|
||||
MixerRed=2500223
|
||||
MixerGreenActive=5046092
|
||||
MixerYellowActive=5046271
|
||||
MixerRedActive=5000447
|
||||
|
||||
[Appearance]
|
||||
Theme=com.obsproject.Yami.Classic
|
||||
@@ -1,18 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# alias bashrc='source ~/.bashrc'
|
||||
alias aliases='cat ~/.bash_aliases'
|
||||
alias bashrc='source ~/.bashrc'
|
||||
alias zshrc='source ~/.zshrc'
|
||||
alias realias='source ~/.bash_aliases'
|
||||
alias stow="stow -v"
|
||||
alias unstow="stow -D"
|
||||
alias restow="stow -R"
|
||||
alias reload='exec ${SHELL} -l'
|
||||
alias sudo='sudo ' # enable aliases to be sudo’ed
|
||||
alias sudo='sudo ' # enable aliases to be sudo'ed
|
||||
alias g='git'
|
||||
alias c='composer'
|
||||
alias hosts="sudo nano /etc/hosts"
|
||||
alias shrug="echo '¯\_(ツ)_/¯' | xclip -selection c"
|
||||
|
||||
alias up='cd ..'
|
||||
alias back='cd -'
|
||||
alias ..='cd ..' # zsh builtin
|
||||
alias ~='cd ~' # zsh builtin
|
||||
alias -- -='cd -' # zsh builtin
|
||||
@@ -34,131 +36,16 @@ alias where='whereis' # zsh builtin
|
||||
alias ps='ps auxf'
|
||||
alias psg='ps aux | grep -v grep | grep -i -e VSZ -e'
|
||||
|
||||
alias is='type -a'
|
||||
alias upgrade='sudo apt update && sudo apt upgrade -y && sudo snap refresh'
|
||||
alias untargz='tar -czf'
|
||||
alias mkcd="mkdir -p $1 && cd $1"
|
||||
alias cl="cd $1 && ll"
|
||||
alias myip='curl http://ipecho.net/plain; echo'
|
||||
alias wine='LANG=ru_RU.utf8 wine'
|
||||
alias wine64='LANG=ru_RU.utf8 wine64'
|
||||
|
||||
alias ports='netstat -tulpan'
|
||||
|
||||
# alias pubkey="more ~/.ssh/id_ed25519.pub | xclip -selection clipboard | echo '=> Public key copied to pasteboard.'"
|
||||
alias ssh.pub="cat ~/.ssh/*.pub"
|
||||
alias gpg.new="gpg --full-generate-key"
|
||||
alias gpg.pub="gpg --armor --export"
|
||||
alias gpg.list='gpg --list-keys --keyid-format SHORT'
|
||||
|
||||
# alias pubkey="more ~/.ssh/id_ed25519.pub | xclip -selection clipboard | echo '=> Public key copied to pasteboard.'"
|
||||
|
||||
alias lite-xl="LITE_SCALE=1 lite-xl"
|
||||
alias wine='LANG=ru_RU.utf8 wine'
|
||||
alias docker.prune='docker image prune -f; docker network prune -f; docker container prune -f'
|
||||
|
||||
# Add an "alert" alias for long running commands. Use like so:
|
||||
# sleep 10; alert
|
||||
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
||||
|
||||
# https://obsproject.com/forum/threads/how-to-start-virtual-camera-without-sudo-privileges.139783/
|
||||
alias obscam="sudo modprobe v4l2loopback video_nr=2 card_label='OBS Virtual Camera'"
|
||||
|
||||
# Download music from Youtube or Youtube Music
|
||||
# and save as top quality flac file without video
|
||||
# Playlist and video/track URLs are supported
|
||||
# Usage: $ ytm https://www.youtube.com/watch\?v=dQw4w9WgXcQ
|
||||
# More info: https://github.com/ytdl-org/youtube-dl
|
||||
ytm() {
|
||||
youtube-dl \
|
||||
--extract-audio \
|
||||
--audio-format flac \
|
||||
--audio-quality 0 \
|
||||
--format bestaudio \
|
||||
--write-info-json \
|
||||
--output "${HOME}/Музыка/ytm/%(playlist_title)s/%(channel)s - %(title)s.%(ext)s" \
|
||||
"$@"
|
||||
}
|
||||
|
||||
|
||||
docker.ip() {
|
||||
if [ "$1" ]; then
|
||||
if [ "$1" = "-a" ]; then
|
||||
docker ps -aq \
|
||||
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
|
||||
| sed -e 's#^/##' \
|
||||
| column -t
|
||||
elif [ "$1" = "-c" ]; then
|
||||
docker-compose ps -q \
|
||||
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
|
||||
| sed -e 's#^/##' \
|
||||
| column -t
|
||||
else
|
||||
docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$1"
|
||||
docker port "$1"
|
||||
fi
|
||||
else
|
||||
docker ps -q \
|
||||
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
|
||||
| sed -e 's#^/##' \
|
||||
| column -t
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#################################################################################
|
||||
|
||||
# $1 -- file/dir path
|
||||
# $2 -- permissions (0644, 0755, etc)
|
||||
# own() { #TODO refactor
|
||||
# [ "$1" ] && PATH="${1/#\~/$HOME}" || {
|
||||
# echo "Error (1): path not provided"
|
||||
# }
|
||||
# echo $PATH
|
||||
|
||||
# [ "$2" ] && PERM="$2" || {
|
||||
# if [ -d $PATH ]; then
|
||||
# PERM="0755"
|
||||
# elif [ -f $PATH ]; then
|
||||
# PERM="0644"
|
||||
# else
|
||||
# echo "Error (2): path not exists"
|
||||
# fi;
|
||||
# }
|
||||
# echo $PERM
|
||||
|
||||
# sudo chmod $PERM -R --preserve-root $PATH
|
||||
# sudo chown $USER. -R --preserve-root $PATH
|
||||
# }
|
||||
|
||||
# function extract {
|
||||
# if [ -z "$1" ]; then
|
||||
# # display usage if no parameters given
|
||||
# echo "Usage: extract <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]"
|
||||
# return 1
|
||||
# else
|
||||
# for n in $@
|
||||
# do
|
||||
# if [ -f "$n" ] ; then
|
||||
# case "${n%,}" in
|
||||
# *.tar.bz2|*.tar.gz|*.tar.xz|*.tbz2|*.tgz|*.txz|*.tar)
|
||||
# tar xvf "$n" ;;
|
||||
# *.lzma) unlzma ./"$n" ;;
|
||||
# *.bz2) bunzip2 ./"$n" ;;
|
||||
# *.rar) unrar x -ad ./"$n" ;;
|
||||
# *.gz) gunzip ./"$n" ;;
|
||||
# *.zip) unzip ./"$n" ;;
|
||||
# *.z) uncompress ./"$n" ;;
|
||||
# *.7z|*.arj|*.cab|*.chm|*.deb|*.dmg|*.iso|*.lzh|*.msi|*.rpm|*.udf|*.wim|*.xar)
|
||||
# 7z x ./"$n" ;;
|
||||
# *.xz) unxz ./"$n" ;;
|
||||
# *.exe) cabextract ./"$n" ;;
|
||||
# *)
|
||||
# echo "extract: '$n' - unknown archive method"
|
||||
# return 1
|
||||
# ;;
|
||||
# esac
|
||||
# else
|
||||
# echo "'$n' - file does not exist"
|
||||
# return 1
|
||||
# fi
|
||||
# done
|
||||
# fi
|
||||
# }
|
||||
# alias obscam="sudo modprobe v4l2loopback video_nr=2 card_label='OBS Virtual Camera'"
|
||||
|
||||
@@ -97,5 +97,5 @@ if ! shopt -oq posix; then
|
||||
fi
|
||||
|
||||
[[ -f ~/.bash_aliases ]] && source ~/.bash_aliases
|
||||
[[ -f ~/.bashrc.extra ]] && source ~/.bashrc.extra
|
||||
[[ -f ~/.bashrc.local ]] && source ~/.bashrc.local
|
||||
[[ -f ~/.profile ]] && source ~/.profile
|
||||
|
||||
@@ -16,38 +16,33 @@ fi
|
||||
|
||||
### AAA ##########################################
|
||||
|
||||
[ -f ~/.bash_aliases ] && source ~/.bash_aliases
|
||||
[ -f ~/.profile.extra ] && source ~/.profile.extra
|
||||
|
||||
export LITE_SCALE=1 # workaround https://github.com/lite-xl/lite-xl/issues/1173
|
||||
|
||||
export EDITOR="nano"
|
||||
export JAVA_HOME="/usr/bin/"
|
||||
export PATH="/opt/nvim/bin:$PATH"
|
||||
export PATH="$HOME/.local/bin/:$PATH"
|
||||
export PATH="$HOME/.local/share/JetBrains/Toolbox/scripts:$PATH"
|
||||
export PATH="$(composer config -g home)/vendor/bin:$PATH"
|
||||
export PATH="$PATH:/opt/nvim/bin/"
|
||||
export PATH="$PATH:$HOME/.local/bin/"
|
||||
export PATH="$PATH:$HOME/.local/share/JetBrains/Toolbox/scripts/"
|
||||
|
||||
if hash composer >/dev/null; then
|
||||
composer_home=$(composer config -g home 2>/dev/null)
|
||||
export PATH="$PATH:$composer_home/vendor/bin"
|
||||
fi
|
||||
|
||||
# phpbrew
|
||||
# export PHPBREW_SET_PROMPT=1
|
||||
# export PHPBREW_RC_ENABLE=1
|
||||
# [ -f ~/.phpbrew/bashrc ] && source ~/.phpbrew/bashrc
|
||||
# [ -f $HOME/.phpbrew/bashrc ] && source $HOME/.phpbrew/bashrc
|
||||
|
||||
# golang
|
||||
export PATH="/usr/local/go/bin:$PATH"
|
||||
export PATH="$PATH:/usr/local/go/bin"
|
||||
export GOPATH="$HOME/.go"
|
||||
|
||||
# rust cargo
|
||||
[ -f ~/.cargo/env ] && source ~/.cargo/env
|
||||
[ -f "$HOME/.cargo/env" ] && source "$HOME/.cargo/env"
|
||||
|
||||
# nvm
|
||||
# export NVM_DIR="$HOME/.nvm"
|
||||
# [ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
# [ -s "$NVM_DIR/bash_completion" ] && source "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||
|
||||
# neovim
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
[ -s "$NVM_DIR/bash_completion" ] && source "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||
|
||||
# The next line updates PATH for Yandex Cloud CLI.
|
||||
[ -f "$HOME/yandex-cloud/path.bash.inc" ] && source "$HOME/yandex-cloud/path.bash.inc"
|
||||
@@ -55,3 +50,5 @@ export NVM_DIR="$HOME/.nvm"
|
||||
# The next line enables shell command completion for yc.
|
||||
[ -f "$HOME/yandex-cloud/completion.zsh.inc" ] && source "$HOME/yandex-cloud/completion.zsh.inc"
|
||||
|
||||
# misc
|
||||
[[ -f $HOME/.profile.local ]] && source $HOME/.profile.local
|
||||
|
||||
@@ -77,7 +77,7 @@ ZSH_THEME="powerlevel10k/powerlevel10k"
|
||||
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
|
||||
# Example format: plugins=(rails git textmate ruby lighthouse)
|
||||
# Add wisely, as too many plugins slow down shell startup.
|
||||
plugins=(git docker docker-compose composer zsh-autosuggestions zsh-syntax-highlighting)
|
||||
plugins=(git docker docker-compose composer zsh-autosuggestions zsh-syntax-highlighting laravel)
|
||||
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
|
||||
@@ -85,5 +85,5 @@ source $ZSH/oh-my-zsh.sh
|
||||
[[ -f ~/.p10k.zsh ]] && source ~/.p10k.zsh
|
||||
|
||||
[[ -f ~/.bash_aliases ]] && source ~/.bash_aliases
|
||||
[[ -f ~/.bashrc.extra ]] && source ~/.bashrc.extra
|
||||
# [[ -f ~/.bashrc.local ]] && source ~/.bashrc.local
|
||||
[[ -f ~/.profile ]] && source ~/.profile
|
||||
|
||||
@@ -1,3 +1,17 @@
|
||||
#!/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,18 +1,33 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
set -eo pipefail
|
||||
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
cat <<EOF
|
||||
Usage: $(basename "$0") [-h] [file]
|
||||
|
||||
Copy content to system clipboard.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help message
|
||||
|
||||
Arguments:
|
||||
file File to copy (reads from stdin if not specified)
|
||||
|
||||
EOF
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if hash pbcopy 2>/dev/null; then
|
||||
exec pbcopy
|
||||
exec pbcopy
|
||||
elif hash xclip 2>/dev/null; then
|
||||
exec xclip -selection clipboard
|
||||
exec xclip -selection clipboard
|
||||
elif hash putclip 2>/dev/null; then
|
||||
exec putclip
|
||||
exec putclip
|
||||
else
|
||||
rm -f /tmp/clipboard 2> /dev/null
|
||||
if [ $# -eq 0 ]; then
|
||||
cat > /tmp/clipboard
|
||||
else
|
||||
cat "$1" > /tmp/clipboard
|
||||
fi
|
||||
rm -f /tmp/clipboard 2> /dev/null
|
||||
if [ $# -eq 0 ]; then
|
||||
cat > /tmp/clipboard
|
||||
else
|
||||
cat "$1" > /tmp/clipboard
|
||||
fi
|
||||
fi
|
||||
|
||||
38
utils/.local/bin/curlstat
Executable file
38
utils/.local/bin/curlstat
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
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'
|
||||
URL:\t\t\t%{url}\n
|
||||
Address:\t\t%{remote_ip}:%{remote_port}\n
|
||||
Response:\t\tHTTP/%{http_version} %{http_code}\n
|
||||
\n
|
||||
Speed:\n
|
||||
* speed_download:\t%{speed_download} b/s\n
|
||||
* speed_upload:\t\t%{speed_upload} b/s\n
|
||||
\n
|
||||
Timings:\n
|
||||
* time_namelookup:\t%{time_namelookup} sec\n
|
||||
* time_connect:\t\t%{time_connect} sec\n
|
||||
* time_appconnect:\t%{time_appconnect} sec\n
|
||||
* time_pretransfer:\t%{time_pretransfer} sec\n
|
||||
* time_redirect:\t%{time_redirect} sec\n
|
||||
* time_starttransfer:\t%{time_starttransfer} sec\n
|
||||
\t\t\t------------\n
|
||||
* time_total:\t\t%{time_total} sec\n
|
||||
EOF
|
||||
@@ -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
|
||||
27
utils/.local/bin/docker-ips
Executable file
27
utils/.local/bin/docker-ips
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
|
||||
# TODO not ready yet
|
||||
exit
|
||||
|
||||
if [ "$1" ]; then
|
||||
if [ "$1" = "-a" ]; then
|
||||
docker ps -aq \
|
||||
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
|
||||
| sed -e 's#^/##' \
|
||||
| column -t
|
||||
elif [ "$1" = "-c" ]; then
|
||||
docker compose ps -q \
|
||||
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
|
||||
| sed -e 's#^/##' \
|
||||
| column -t
|
||||
else
|
||||
docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$1"
|
||||
docker port "$1"
|
||||
fi
|
||||
else
|
||||
docker ps -q \
|
||||
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
|
||||
| sed -e 's#^/##' \
|
||||
| column -t
|
||||
fi
|
||||
@@ -1,22 +1,42 @@
|
||||
#!/usr/bin/env bash
|
||||
if [ -f "$1" ]; then
|
||||
case "$1" in
|
||||
*.tar.bz2) tar -jxvf "$1" ;;
|
||||
*.tar.gz) tar -zxvf "$1" ;;
|
||||
*.bz2) bunzip2 "$1" ;;
|
||||
*.dmg) hdiutil mount "$1" ;;
|
||||
*.gz) gunzip "$1" ;;
|
||||
*.tar) tar -xvf "$1" ;;
|
||||
*.tbz2) tar -jxvf "$1" ;;
|
||||
*.tgz) tar -zxvf "$1" ;;
|
||||
*.zip) unzip "$1" ;;
|
||||
*.ZIP) unzip "$1" ;;
|
||||
*.pax) cat "$1" | pax -r ;;
|
||||
*.pax.Z) uncompress "$1" --stdout | pax -r ;;
|
||||
*.rar) unrar x "$1" ;;
|
||||
*.Z) uncompress "$1" ;;
|
||||
*) echo "'$1' cannot be extracted/mounted via extract()" ;;
|
||||
esac
|
||||
else
|
||||
echo "'$1' is not a valid file"
|
||||
set -eo pipefail
|
||||
|
||||
if [ -z "$1" ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
||||
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 " $(basename "$0") <path/file_name_1.ext> [path/file_name_2.ext] [path/file_name_3.ext]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for n in "$@"; do
|
||||
if [ ! -f "$n" ] ; then
|
||||
echo "File does not exist, skipping: '$n'"
|
||||
continue
|
||||
fi
|
||||
|
||||
case "${n%,}" in
|
||||
# *.tar) tar -xvf "$1" ;;
|
||||
# *.tbz2) tar -jxvf "$1" ;;
|
||||
# *.tar.bz2) tar -jxvf "$1" ;;
|
||||
# *.tgz) tar -zxvf "$1" ;;
|
||||
# *.tar.gz) tar -zxvf "$1" ;;
|
||||
# *.tar.xz) tar -Jxvf "$1" ;;
|
||||
*.tar.bz2|*.tar.gz|*.tar.xz|*.tbz2|*.tgz|*.txz|*.tar)
|
||||
tar xvf "$n" ;;
|
||||
*.7z|*.arj|*.cab|*.chm|*.deb|*.dmg|*.iso|*.lzh|*.msi|*.rpm|*.udf|*.wim|*.xar)
|
||||
7z x ./"$n" ;;
|
||||
*.lzma) unlzma ./"$n" ;;
|
||||
*.bz2) bunzip2 ./"$n" ;;
|
||||
*.rar) unrar x -ad ./"$n" ;;
|
||||
*.gz) gunzip ./"$n" ;;
|
||||
*.zip) unzip ./"$n" ;;
|
||||
*.z) uncompress ./"$n" ;;
|
||||
*.xz) unxz ./"$n" ;;
|
||||
*.exe) cabextract ./"$n" ;;
|
||||
*.pax) cat "$1" | pax -r ;;
|
||||
*.pax.Z) uncompress "$1" --stdout | pax -r ;;
|
||||
*) echo "extract: '$n' - unknown archive method" ;;
|
||||
esac
|
||||
done
|
||||
|
||||
@@ -1,3 +1,17 @@
|
||||
#!/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
|
||||
|
||||
@@ -1,6 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
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
|
||||
101 Switching Protocols
|
||||
@@ -63,7 +82,7 @@ statuses="100 Continue
|
||||
511 Network Authentication Required"
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "$statuses"
|
||||
echo "$statuses"
|
||||
else
|
||||
echo "$statuses" | grep -i --color=never "$@"
|
||||
echo "$statuses" | grep -i --color=never "$@"
|
||||
fi
|
||||
|
||||
22
utils/.local/bin/is
Executable file
22
utils/.local/bin/is
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
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
|
||||
@@ -1,5 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
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,6 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
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
|
||||
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
|
||||
|
||||
21
utils/.local/bin/mkcd
Executable file
21
utils/.local/bin/mkcd
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/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"
|
||||
cd "$1" || false
|
||||
@@ -1,23 +1,35 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
set -eo pipefail
|
||||
|
||||
if [ ! $# -eq 1 ]; then
|
||||
echo 'mksh takes one argument' 1>&2
|
||||
exit 1
|
||||
elif [ -e "$1" ]; then
|
||||
echo "$1 already exists" 1>&2
|
||||
exit 1
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
cat <<EOF
|
||||
Usage: $(basename "$0") [-h] <script>
|
||||
|
||||
Create a new bash script with boilerplate.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help message
|
||||
|
||||
Arguments:
|
||||
script Script filename to create
|
||||
|
||||
EOF
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo '#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
if [ ! $# -eq 1 ]; then
|
||||
echo 'mksh takes one argument' 1>&2
|
||||
exit 1
|
||||
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"
|
||||
|
||||
nano "$1"
|
||||
exec "$EDITOR" "$1"
|
||||
|
||||
22
utils/.local/bin/myip
Executable file
22
utils/.local/bin/myip
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
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
|
||||
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'
|
||||
|
||||
20
utils/.local/bin/own
Executable file
20
utils/.local/bin/own
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
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 "$@"
|
||||
@@ -1,13 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
set -eo pipefail
|
||||
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
cat <<EOF
|
||||
Usage: $(basename "$0") [-h]
|
||||
|
||||
Paste content from system clipboard.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help message
|
||||
|
||||
EOF
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if hash pbpaste 2>/dev/null; then
|
||||
exec pbpaste
|
||||
exec pbpaste
|
||||
elif hash xclip 2>/dev/null; then
|
||||
exec xclip -selection clipboard -o
|
||||
exec xclip -selection clipboard -o
|
||||
elif [[ -e /tmp/clipboard ]]; then
|
||||
exec cat /tmp/clipboard
|
||||
exec cat /tmp/clipboard
|
||||
else
|
||||
echo ''
|
||||
echo ''
|
||||
fi
|
||||
|
||||
@@ -1,4 +1,22 @@
|
||||
#!/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
|
||||
|
||||
|
||||
@@ -1,13 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
set -eo pipefail
|
||||
|
||||
process_list="$(ps -eo 'pid command')"
|
||||
if [[ $# != 0 ]]; then
|
||||
process_list="$(echo "$process_list" | grep -Fiw "$@")"
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
cat <<EOF
|
||||
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
|
||||
|
||||
echo "$process_list" |
|
||||
grep -Fv "${BASH_SOURCE[0]}" |
|
||||
grep -Fv grep |
|
||||
GREP_COLORS='mt=00;35' grep -E --colour=auto '^\s*[[:digit:]]+'
|
||||
if [[ $# == 0 ]]; then
|
||||
process_list="$(ps -eo 'pid command')"
|
||||
else
|
||||
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,7 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
set -o 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)"
|
||||
echo "Editing $file"
|
||||
|
||||
@@ -1,25 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
set -eo pipefail
|
||||
|
||||
port='8888'
|
||||
if [ $# -eq 1 ]; then
|
||||
port="$1"
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
cat <<EOF
|
||||
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
|
||||
|
||||
port="${1:-8888}"
|
||||
|
||||
if hash php 2>/dev/null; then
|
||||
exec php -S "localhost:$port"
|
||||
exec php -S "localhost:$port"
|
||||
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
|
||||
major_version="$(python -c 'import platform as p;print(p.python_version_tuple()[0])')"
|
||||
if [[ "$major_version" == '3' ]]; then
|
||||
exec python -m http.server "$port"
|
||||
else
|
||||
exec python -m SimpleHTTPServer "$port"
|
||||
fi
|
||||
major_version="$(python -c 'import platform as p;print(p.python_version_tuple()[0])')"
|
||||
if [[ "$major_version" == '3' ]]; then
|
||||
exec python -m http.server "$port"
|
||||
else
|
||||
exec python -m SimpleHTTPServer "$port"
|
||||
fi
|
||||
else
|
||||
echo 'unable to start HTTP server' 1>&2
|
||||
exit 1
|
||||
echo 'unable to start HTTP server' 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -1,7 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
set -o 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"
|
||||
notify-send 'Timer complete!' \
|
||||
|
||||
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,6 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
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 "$@"
|
||||
|
||||
@@ -1,8 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
set -u
|
||||
#!/husr/bin/env bash
|
||||
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
|
||||
sleep 0.5
|
||||
"$@"
|
||||
sleep 0.5
|
||||
"$@"
|
||||
done
|
||||
|
||||
@@ -1,8 +1,24 @@
|
||||
#!/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
|
||||
sleep 0.5
|
||||
"$@"
|
||||
sleep 0.5
|
||||
"$@"
|
||||
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'
|
||||
43
utils/.local/bin/upgrade
Executable file
43
utils/.local/bin/upgrade
Executable file
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env bash
|
||||
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 && {
|
||||
echo
|
||||
echo "==========================="
|
||||
echo "Upgrading apt packages..."
|
||||
echo "==========================="
|
||||
echo
|
||||
sudo apt update
|
||||
sudo apt upgrade -y
|
||||
}
|
||||
|
||||
is snap >/dev/null && {
|
||||
echo
|
||||
echo "==========================="
|
||||
echo "Upgrading snap packages..."
|
||||
echo "==========================="
|
||||
echo
|
||||
sudo snap refresh
|
||||
}
|
||||
|
||||
is flatpak >/dev/null && {
|
||||
echo
|
||||
echo "==========================="
|
||||
echo "Upgrading flatpak packages..."
|
||||
echo "==========================="
|
||||
echo
|
||||
sudo flatpak update -y
|
||||
}
|
||||
@@ -1,14 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
set -eo pipefail
|
||||
|
||||
curl "https://r.jina.ai/$1" \
|
||||
-sS \
|
||||
-H "DNT: 1" \
|
||||
-H "X-Base: final" \
|
||||
-H "X-Engine: direct" \
|
||||
-H "X-Md-Em-Delimiter: *" \
|
||||
-H "X-Md-Heading-Style: setext" \
|
||||
-H "X-Md-Link-Reference-Style: collapsed" \
|
||||
-H "X-Md-Link-Style: referenced"
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
cat <<EOF
|
||||
Usage: $(basename "$0") [-h] <url>
|
||||
|
||||
Convert webpage URL to markdown using jina.ai.
|
||||
|
||||
Options:
|
||||
-h, --help Show this help message
|
||||
|
||||
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,13 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
set -eo pipefail
|
||||
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
cat <<EOF
|
||||
Usage: $(basename "$0") [-h] <pid>
|
||||
|
||||
Wait for a process to complete.
|
||||
|
||||
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
|
||||
systemd-inhibit \
|
||||
--who=waitfor \
|
||||
--why="Awaiting PID $1" \
|
||||
tail --pid="$1" -f /dev/null
|
||||
else
|
||||
tail --pid="$1" -f /dev/null
|
||||
tail --pid="$1" -f /dev/null
|
||||
fi
|
||||
|
||||
32
utils/.local/bin/what
Executable file
32
utils/.local/bin/what
Executable file
@@ -0,0 +1,32 @@
|
||||
#!/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
|
||||
|
||||
type "$1" 2>/dev/null
|
||||
type -t "$1" 2>/dev/null
|
||||
type -a "$1" 2>/dev/null
|
||||
type -P "$1" 2>/dev/null
|
||||
which -a "$1" 2>/dev/null
|
||||
which "$1" \
|
||||
&& file -b "$(which "$1")" \
|
||||
&& file -L "$(which "$1")"
|
||||
type -a "$1" 2>/dev/null
|
||||
command -v "$1"
|
||||
whereis "$1"
|
||||
39
utils/.local/bin/ytmusic
Executable file
39
utils/.local/bin/ytmusic
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
|
||||
# Download music from Youtube or Youtube Music
|
||||
# and save as top quality flac file without video
|
||||
# Playlist and video/track URLs are supported
|
||||
# Usage: $ ytmusic https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
||||
# 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"
|
||||
mkdir -p "${DEST_PATH}"
|
||||
|
||||
youtube-dl \
|
||||
--extract-audio \
|
||||
--audio-format flac \
|
||||
--audio-quality 0 \
|
||||
--format bestaudio \
|
||||
--write-info-json \
|
||||
--output "${DEST_PATH}/%(playlist_title)s/%(channel)s - %(title)s.%(ext)s" \
|
||||
"$@"
|
||||
260
vscode/.config/Code/User/keybindings.json
Normal file
260
vscode/.config/Code/User/keybindings.json
Normal file
@@ -0,0 +1,260 @@
|
||||
[
|
||||
{
|
||||
"key": "tab",
|
||||
"command": "editor.action.indentLines",
|
||||
"when": "editorHasSelection && editorTextFocus && !hasOtherSuggestions && !inSnippetMode && !suggestWidgetVisible"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+]",
|
||||
"command": "-editor.action.indentLines",
|
||||
"when": "editorTextFocus && !editorReadonly"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+k ctrl+shift+l",
|
||||
"command": "workbench.action.editor.changeLanguageMode"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+k m",
|
||||
"command": "-workbench.action.editor.changeLanguageMode"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+k ctrl+shift+m",
|
||||
"command": "workbench.action.editor.changeEncoding"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+d",
|
||||
"command": "editor.action.insertCursorAtEndOfEachLineSelected",
|
||||
"when": "editorTextFocus"
|
||||
},
|
||||
{
|
||||
"key": "shift+alt+i",
|
||||
"command": "-editor.action.insertCursorAtEndOfEachLineSelected",
|
||||
"when": "editorTextFocus"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+alt+s",
|
||||
"command": "workbench.action.openSettings"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+,",
|
||||
"command": "-workbench.action.openSettings"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+numpad_subtract",
|
||||
"command": "-workbench.action.zoomOut"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+numpad_add",
|
||||
"command": "-workbench.action.zoomIn"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+numpad_subtract",
|
||||
"command": "editor.fold",
|
||||
"when": "editorTextFocus && foldingEnabled"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+[",
|
||||
"command": "-editor.fold",
|
||||
"when": "editorTextFocus && foldingEnabled"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+numpad_add",
|
||||
"command": "editor.unfold",
|
||||
"when": "editorTextFocus && foldingEnabled"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+]",
|
||||
"command": "-editor.unfold",
|
||||
"when": "editorTextFocus && foldingEnabled"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+numpad_subtract",
|
||||
"command": "editor.foldRecursively",
|
||||
"when": "editorTextFocus && foldingEnabled"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+k ctrl+[",
|
||||
"command": "-editor.foldRecursively",
|
||||
"when": "editorTextFocus && foldingEnabled"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+numpad_add",
|
||||
"command": "editor.unfoldRecursively",
|
||||
"when": "editorTextFocus && foldingEnabled"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+k ctrl+]",
|
||||
"command": "-editor.unfoldRecursively",
|
||||
"when": "editorTextFocus && foldingEnabled"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+q",
|
||||
"command": "-workbench.action.quit"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+down",
|
||||
"command": "-editor.action.insertCursorBelow",
|
||||
"when": "editorTextFocus"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+up",
|
||||
"command": "-editor.action.insertCursorAbove",
|
||||
"when": "editorTextFocus"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+down",
|
||||
"command": "editor.action.moveLinesDownAction",
|
||||
"when": "editorTextFocus && !editorReadonly"
|
||||
},
|
||||
{
|
||||
"key": "alt+down",
|
||||
"command": "-editor.action.moveLinesDownAction",
|
||||
"when": "editorTextFocus && !editorReadonly"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+up",
|
||||
"command": "editor.action.moveLinesUpAction",
|
||||
"when": "editorTextFocus && !editorReadonly"
|
||||
},
|
||||
{
|
||||
"key": "alt+up",
|
||||
"command": "-editor.action.moveLinesUpAction",
|
||||
"when": "editorTextFocus && !editorReadonly"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+r",
|
||||
"command": "-workbench.action.openRecent"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+r",
|
||||
"command": "editor.action.startFindReplaceAction",
|
||||
"when": "editorFocus || editorIsOpen"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+h",
|
||||
"command": "-editor.action.startFindReplaceAction",
|
||||
"when": "editorFocus || editorIsOpen"
|
||||
},
|
||||
{
|
||||
"key": "shift+f6",
|
||||
"command": "editor.action.refactor",
|
||||
"when": "editorHasCodeActionsProvider && editorTextFocus && !editorReadonly"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+r",
|
||||
"command": "-editor.action.refactor",
|
||||
"when": "editorHasCodeActionsProvider && editorTextFocus && !editorReadonly"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+r",
|
||||
"command": "-rerunSearchEditorSearch",
|
||||
"when": "inSearchEditor"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+r",
|
||||
"command": "workbench.action.replaceInFiles"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+h",
|
||||
"command": "-workbench.action.replaceInFiles"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+l",
|
||||
"command": "-editor.action.selectHighlights",
|
||||
"when": "editorFocus"
|
||||
},
|
||||
{
|
||||
"key": "alt+d",
|
||||
"command": "editor.action.selectHighlights"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+b",
|
||||
"command": "-workbench.action.tasks.build",
|
||||
"when": "taskCommandsRegistered"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+b",
|
||||
"command": "git.checkout"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+q",
|
||||
"command": "editor.action.showDefinitionPreviewHover"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+/",
|
||||
"command": "editor.action.blockComment",
|
||||
"when": "editorTextFocus && !editorReadonly"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+a",
|
||||
"command": "-editor.action.blockComment",
|
||||
"when": "editorTextFocus && !editorReadonly"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+p",
|
||||
"command": "workbench.action.showCommands"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+p",
|
||||
"command": "-workbench.action.showCommands"
|
||||
},
|
||||
{
|
||||
"key": "alt+f12",
|
||||
"command": "workbench.action.terminal.toggleTerminal",
|
||||
"when": "terminal.active"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+`",
|
||||
"command": "-workbench.action.terminal.toggleTerminal",
|
||||
"when": "terminal.active"
|
||||
},
|
||||
{
|
||||
"key": "alt+right",
|
||||
"command": "editor.action.inlineSuggest.acceptNextWord",
|
||||
"when": "editorTextFocus && inlineSuggestionVisible"
|
||||
},
|
||||
{
|
||||
"key": "meta+right",
|
||||
"command": "-editor.action.inlineSuggest.acceptNextWord",
|
||||
"when": "editorTextFocus && inlineSuggestionVisible"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+o",
|
||||
"command": "workbench.action.files.openFile"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+o",
|
||||
"command": "-workbench.action.files.openFile",
|
||||
"when": "true"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+o",
|
||||
"command": "-workbench.action.files.openFileFolder",
|
||||
"when": "isMacNative && openFolderWorkspaceSupport"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+o",
|
||||
"command": "-workbench.action.files.openFolderViaWorkspace",
|
||||
"when": "!openFolderWorkspaceSupport && workbenchState == 'workspace'"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+p ctrl+p",
|
||||
"command": "workbench.profiles.actions.switchProfile"
|
||||
},
|
||||
{
|
||||
"key": "f4",
|
||||
"command": "git.openFile"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+e",
|
||||
"command": "workbench.action.openRecent"
|
||||
},
|
||||
{
|
||||
"key": "alt+space",
|
||||
"command": "localaipilot.codeComplete"
|
||||
},
|
||||
{
|
||||
"key": "shift+alt+w",
|
||||
"command": "-localaipilot.codeComplete"
|
||||
}
|
||||
]
|
||||
326
vscode/.config/Code/User/settings.json
Normal file
326
vscode/.config/Code/User/settings.json
Normal file
@@ -0,0 +1,326 @@
|
||||
{
|
||||
//----------------------------------------------------------------
|
||||
// appearence
|
||||
//----------------------------------------------------------------
|
||||
|
||||
"workbench.colorTheme": "Atom One Dark",
|
||||
"workbench.preferredDarkColorTheme": "Atom One Dark",
|
||||
"workbench.iconTheme": "material-icon-theme",
|
||||
// "workbench.tree.indent": 10,
|
||||
"workbench.tree.renderIndentGuides": "always",
|
||||
"workbench.view.alwaysShowHeaderActions": true,
|
||||
"workbench.editor.alwaysShowEditorActions": true,
|
||||
"workbench.colorCustomizations": {
|
||||
"editor.lineHighlightBackground": "#1073cf2d",
|
||||
// "editor.lineHighlightBorder": "#9fced11f",
|
||||
"editorGhostText.foreground": "#7A8E96"
|
||||
},
|
||||
|
||||
"editor.fontFamily": "'JetBrainsMono Nerd Font', 'DejaVu Sans Mono', 'Liberation Mono', 'Noto Mono', 'Ubuntu Mono', 'Droid Sans Mono', 'Droid Sans Fallback', monospace",
|
||||
"editor.fontSize": 13,
|
||||
"editor.fontLigatures": true,
|
||||
"editor.lineHeight": 1.75,
|
||||
"editor.cursorBlinking": "smooth",
|
||||
"editor.inlineSuggest.showToolbar": "always",
|
||||
"editor.mouseWheelZoom": true,
|
||||
"editor.minimap.maxColumn": 150,
|
||||
"editor.minimap.renderCharacters": false,
|
||||
"editor.minimap.showSlider": "always",
|
||||
|
||||
"window.title": "${dirty}${activeEditorShort}${separator}${rootName}${separator}${appName}",
|
||||
"window.titleSeparator": " | ",
|
||||
"chat.commandCenter.enabled": false,
|
||||
"window.enableMenuBarMnemonics": false,
|
||||
"window.restoreFullscreen": true,
|
||||
"window.newWindowProfile": "По умолчанию",
|
||||
"window.customTitleBarVisibility": "auto",
|
||||
"window.commandCenter": false,
|
||||
"window.menuBarVisibility": "compact",
|
||||
|
||||
"debug.toolBarLocation": "docked",
|
||||
"testing.coverageToolbarEnabled": true,
|
||||
|
||||
"material-icon-theme.opacity": 0.8,
|
||||
|
||||
"statusbar_command.applicationCommands": [
|
||||
{
|
||||
"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": "Назад",
|
||||
"id": "nav-back",
|
||||
"name": "Назад",
|
||||
"priority": 1,
|
||||
"alignment": "left",
|
||||
"command": "workbench.action.navigateBack"
|
||||
},
|
||||
{
|
||||
"text": "$(arrow-right) Вперёд",
|
||||
"tooltip": "Вперёд",
|
||||
"id": "nav-forw",
|
||||
"name": "Вперёд",
|
||||
"priority": 1,
|
||||
"alignment": "left",
|
||||
"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"
|
||||
}
|
||||
],
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// workbench
|
||||
//----------------------------------------------------------------
|
||||
|
||||
"workbench.startupEditor": "newUntitledFile",
|
||||
"workbench.editor.empty.hint": "hidden",
|
||||
"workbench.editor.pinnedTabsOnSeparateRow": true,
|
||||
"workbench.editor.revealIfOpen": true,
|
||||
"workbench.editor.enablePreview": false,
|
||||
"workbench.editor.defaultBinaryEditor": "hexEditor.hexedit",
|
||||
// "workbench.editor.historyBasedLanguageDetection": true,
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// editor
|
||||
//----------------------------------------------------------------
|
||||
|
||||
// "breadcrumbs.enabled": false,
|
||||
|
||||
"editor.showFoldingControls": "always",
|
||||
"editor.renderControlCharacters": true,
|
||||
"editor.wordWrap": "off",
|
||||
"editor.inlayHints.enabled": "off",
|
||||
"editor.selectionClipboard": false,
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"editor.scrollbar.horizontal": "hidden",
|
||||
"editor.scrollbar.vertical": "hidden",
|
||||
"editor.foldingImportsByDefault": true,
|
||||
"editor.unicodeHighlight.nonBasicASCII": false,
|
||||
"editor.inlineSuggest.syntaxHighlightingEnabled": true,
|
||||
"editor.quickSuggestions": {
|
||||
"comments": "on",
|
||||
"strings": "on",
|
||||
"other": "on"
|
||||
},
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// terminal
|
||||
//----------------------------------------------------------------
|
||||
|
||||
"terminal.integrated.fontFamily": "JetBrainsMono Nerd Font, MesloLGS NF, Ubuntu Mono",
|
||||
"terminal.integrated.fontSize": 13,
|
||||
"terminal.integrated.cursorStyle": "line",
|
||||
"terminal.integrated.defaultProfile.linux": "zsh",
|
||||
"terminal.integrated.cursorBlinking": true,
|
||||
"terminal.integrated.mouseWheelZoom": false,
|
||||
"terminal.integrated.scrollback": 1000000,
|
||||
"terminal.integrated.enableImages": true,
|
||||
"terminal.integrated.fontLigatures": true,
|
||||
"terminal.integrated.shellIntegration.enabled": false,
|
||||
"terminal.integrated.tabs.focusMode": "singleClick",
|
||||
"terminal.integrated.tabs.location": "left",
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// files
|
||||
//----------------------------------------------------------------
|
||||
|
||||
"explorer.confirmDelete": false,
|
||||
"explorer.confirmDragAndDrop": false,
|
||||
"explorer.expandSingleFolderWorkspaces": false,
|
||||
"explorer.fileNesting.enabled": true,
|
||||
|
||||
"files.autoSave": "onFocusChange",
|
||||
"files.insertFinalNewline": true,
|
||||
"files.trimTrailingWhitespace": true,
|
||||
"files.associations": {
|
||||
"*.inc": "php",
|
||||
"*.desktop": "ini",
|
||||
"*.env": "env",
|
||||
".env.*": "env",
|
||||
},
|
||||
"files.exclude": {
|
||||
"**/.git": false
|
||||
},
|
||||
"[markdown]": {
|
||||
"files.trimTrailingWhitespace": false
|
||||
},
|
||||
"[lua]": {
|
||||
"editor.defaultFormatter": "sumneko.lua"
|
||||
},
|
||||
"[xml]": {
|
||||
"editor.defaultFormatter": "DotJoshJohnson.xml"
|
||||
},
|
||||
"[json]": {
|
||||
"editor.defaultFormatter": "vscode.json-language-features"
|
||||
},
|
||||
// "[awk]": {
|
||||
// "editor.semanticHighlighting.enabled": true
|
||||
// }
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// git
|
||||
//----------------------------------------------------------------
|
||||
|
||||
"git.allowForcePush": true,
|
||||
"git.allowNoVerifyCommit": true,
|
||||
"git.autofetch": true,
|
||||
"git.autoStash": true,
|
||||
"git.enableCommitSigning": true,
|
||||
"git.inputValidationSubjectLength": null,
|
||||
"git.confirmSync": false,
|
||||
"git.branchProtection": [
|
||||
"master",
|
||||
"develop",
|
||||
"dev",
|
||||
],
|
||||
|
||||
"gitPrefix.replacement": "$1: ",
|
||||
|
||||
"gitlens.showWelcomeOnInstall": false,
|
||||
"gitlens.views.repositories.files.layout": "tree",
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// docker
|
||||
//----------------------------------------------------------------
|
||||
|
||||
"docker.volumes.groupBy": "CreatedTime",
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// diffs
|
||||
//----------------------------------------------------------------
|
||||
|
||||
"merge-conflict.autoNavigateNextConflict.enabled": true,
|
||||
|
||||
"diffEditor.experimental.showMoves": true,
|
||||
"diffEditor.ignoreTrimWhitespace": false,
|
||||
"diffEditor.renderSideBySide": true,
|
||||
"diffEditor.wordWrap": "off",
|
||||
"diffEditor.hideUnchangedRegions.enabled": true,
|
||||
|
||||
"partialDiff.commandsOnContextMenu": {
|
||||
"markSection1": true,
|
||||
"markSection2AndTakeDiff": true,
|
||||
"diffSelectionWithClipboard": false,
|
||||
"diffVisibleEditors": true,
|
||||
"togglePreComparisonTextNormalizationRules": false
|
||||
},
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// other
|
||||
//----------------------------------------------------------------
|
||||
|
||||
"telemetry.telemetryLevel": "error",
|
||||
"security.workspace.trust.untrustedFiles": "open",
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// php
|
||||
//----------------------------------------------------------------
|
||||
|
||||
"php.suggest.basic": true,
|
||||
"php.validate.enable": true,
|
||||
"php.validate.run": "onType",
|
||||
"php.completion.autoimport-docblock": "auto-import",
|
||||
"php.debug.port": [
|
||||
"9003",
|
||||
"9000"
|
||||
],
|
||||
"php.linkedEditing.variables": true,
|
||||
"php.problems.excludeGitIgnore": true,
|
||||
"php.format.rules.arrayInitializersAlignKeyValuePairs": false,
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// golang
|
||||
//----------------------------------------------------------------
|
||||
|
||||
"go.toolsManagement.autoUpdate": true,
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// shell
|
||||
//----------------------------------------------------------------
|
||||
|
||||
"bashIde.highlightParsingErrors": true,
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// ai assistance
|
||||
//----------------------------------------------------------------
|
||||
|
||||
"gigacode.common.contextManager": true,
|
||||
"gigacode.maxSuggestions": 5,
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// unsorted
|
||||
//----------------------------------------------------------------
|
||||
|
||||
"extensions.ignoreRecommendations": true,
|
||||
|
||||
"prettier.tabWidth": 4,
|
||||
"prettier.semi": false,
|
||||
"prettier.singleQuote": true,
|
||||
"prettier.printWidth": 120,
|
||||
"prettier.arrowParens": "avoid",
|
||||
|
||||
"autoscroll.autoEnableForLogs": true,
|
||||
|
||||
"nginx-conf-hint.format.align": true,
|
||||
"nginx-conf-hint.syntax": "sublime",
|
||||
|
||||
"emmet.excludeLanguages": [
|
||||
"markdown",
|
||||
"php"
|
||||
],
|
||||
"redhat.telemetry.enabled": true,
|
||||
"markdown.extension.toc.unorderedList.marker": "*",
|
||||
"markdown.extension.toc.levels": "2..4",
|
||||
"window.customMenuBarAltFocus": false,
|
||||
"githubLocalActions.workflowsDirectory": ".gitea/workflows",
|
||||
"privy.model": "custom",
|
||||
"privy.syntaxHighlighting.useVisualStudioCodeColors": true,
|
||||
"docker.extension.enableComposeLanguageServer": false,
|
||||
"[dockercompose]": {
|
||||
"editor.insertSpaces": true,
|
||||
"editor.tabSize": 2,
|
||||
"editor.autoIndent": "advanced",
|
||||
"editor.defaultFormatter": "redhat.vscode-yaml"
|
||||
},
|
||||
"[github-actions-workflow]": {
|
||||
"editor.defaultFormatter": "redhat.vscode-yaml"
|
||||
},
|
||||
"kilo-code.allowedCommands": [
|
||||
"git log",
|
||||
"git diff",
|
||||
"git show"
|
||||
],
|
||||
"kilo-code.deniedCommands": [],
|
||||
"chat.disableAIFeatures": true
|
||||
}
|
||||
15
vscode/.config/Code/User/snippets/css.json
Normal file
15
vscode/.config/Code/User/snippets/css.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
// Place your snippets for css here. Each snippet is defined under a snippet name and has a prefix, body and
|
||||
// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
|
||||
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the
|
||||
// same ids are connected.
|
||||
// Example:
|
||||
// "Print to console": {
|
||||
// "prefix": "log",
|
||||
// "body": [
|
||||
// "console.log('$1');",
|
||||
// "$2"
|
||||
// ],
|
||||
// "description": "Log output to console"
|
||||
// }
|
||||
}
|
||||
32
vscode/.config/Code/User/snippets/global.code-snippets
Normal file
32
vscode/.config/Code/User/snippets/global.code-snippets
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
// Place your GLOBAL snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
|
||||
// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
|
||||
// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
|
||||
// used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
|
||||
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
|
||||
// Placeholders with the same ids are connected.
|
||||
// Example:
|
||||
// "Print to console": {
|
||||
// "scope": "javascript,typescript",
|
||||
// "prefix": "log",
|
||||
// "body": [
|
||||
// "console.log('$1');",
|
||||
// "$2"
|
||||
// ],
|
||||
// "description": "Log output to console"
|
||||
// }
|
||||
"One line TODO": {
|
||||
"prefix": ["todo", "туду", "nele", "ещвщ"],
|
||||
"body": [
|
||||
"${LINE_COMMENT} TODO: ${0}",
|
||||
],
|
||||
},
|
||||
"Muliline TODO": {
|
||||
"prefix": ["todom", "тудум", "nelev", "ещвщм"],
|
||||
"body": [
|
||||
"${BLOCK_COMMENT_START}",
|
||||
"${LINE_COMMENT} TODO: ${0}",
|
||||
"${BLOCK_COMMENT_END}"
|
||||
],
|
||||
}
|
||||
}
|
||||
96
vscode/.config/Code/User/snippets/shellscript.json
Normal file
96
vscode/.config/Code/User/snippets/shellscript.json
Normal file
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"DocBlock": {
|
||||
"description": "Комментарий для функции",
|
||||
"prefix": ["doc", "док", "вщс", "ljr"],
|
||||
"body": [
|
||||
"",
|
||||
"${LINE_COMMENT}purpose\t${1}",
|
||||
"${LINE_COMMENT}argument\t\\$1 - ${2}",
|
||||
"${LINE_COMMENT}exitcode\t0 - ${3}",
|
||||
"${LINE_COMMENT}returns\t${4}",
|
||||
"${LINE_COMMENT}usage\t\t${0}",
|
||||
],
|
||||
},
|
||||
"Condition: if": {
|
||||
"description": "Условие (простое)",
|
||||
"prefix": ["if", "ша"],
|
||||
"body": [
|
||||
"if ${1}; then",
|
||||
" ${0}",
|
||||
"fi",
|
||||
],
|
||||
},
|
||||
"Condition: if []": {
|
||||
"description": "Условие (со скобками [])",
|
||||
"prefix": ["if2", "ша"],
|
||||
"body": [
|
||||
"if [ ${1} ]; then",
|
||||
" ${0}",
|
||||
"fi",
|
||||
],
|
||||
},
|
||||
"Condition: if [[]]": {
|
||||
"description": "Условие (со скобками [[]])",
|
||||
"prefix": ["if3", "ша"],
|
||||
"body": [
|
||||
"if [[ ${1} ]]; then",
|
||||
" ${0}",
|
||||
"fi",
|
||||
],
|
||||
},
|
||||
"Condition: if ... else ...": {
|
||||
"description": "Условие (с двумя ветками)",
|
||||
"prefix": ["ifel", "шауд"],
|
||||
"body": [
|
||||
"if [ ${1} ]; then",
|
||||
" ${2}",
|
||||
"else",
|
||||
" ${0}",
|
||||
"fi",
|
||||
],
|
||||
},
|
||||
"Loop: for": {
|
||||
"description": "Цикл по счётчику",
|
||||
"prefix": ["for", "ащк"],
|
||||
"body": [
|
||||
"for ((idx=${1:0}; idx<${2:\\$limit}; ++idx)) do",
|
||||
" ${0}",
|
||||
"done",
|
||||
],
|
||||
},
|
||||
"Loop: for in": {
|
||||
"description": "Цикл по массиву",
|
||||
"prefix": ["forin", "ащкшт"],
|
||||
"body": [
|
||||
"for var in \"${${1:array}[@]}\"; do",
|
||||
" ${0:}",
|
||||
"done",
|
||||
],
|
||||
},
|
||||
"Loop: while": {
|
||||
"description": "Цикл",
|
||||
"prefix": ["while", "цршду"],
|
||||
"body": [
|
||||
"while ${1:true}; do",
|
||||
" ${0}",
|
||||
"done"
|
||||
],
|
||||
},
|
||||
"Function": {
|
||||
"description": "Функция",
|
||||
"prefix": ["func", "агтс"],
|
||||
"body": [
|
||||
"${1:myfunc}() {",
|
||||
" ${0}",
|
||||
"}"
|
||||
],
|
||||
},
|
||||
"Hashbang": {
|
||||
"description": "Hashbang",
|
||||
"prefix": ["bb", "#!"],
|
||||
"body": [
|
||||
"#!/usr/bin/env bash"
|
||||
],
|
||||
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@ include "%L"
|
||||
<Multi_key> <Cyrillic_ha> <Cyrillic_ze> : "¯\\_(ツ)_/¯" # хз
|
||||
<Multi_key> <Cyrillic_sha> <Cyrillic_te> <Cyrillic_o> <Cyrillic_sha> : "¯\\_(ツ)_/¯" # штош
|
||||
<Multi_key> <Cyrillic_ne> <Cyrillic_u> <Cyrillic_sha> <Cyrillic_te> <Cyrillic_o> <Cyrillic_sha> : "¯\\_(ツ)_/¯" # нуштош
|
||||
<Multi_key> <Cyrillic_ne> <Cyrillic_u> <space> <Cyrillic_sha> <Cyrillic_te> <Cyrillic_o> <Cyrillic_sha> : "¯\\_(ツ)_/¯" # нуштош
|
||||
<Multi_key> <Cyrillic_ne> <Cyrillic_u> <space> <Cyrillic_sha> <Cyrillic_te> <Cyrillic_o> <Cyrillic_sha> : "¯\\_(ツ)_/¯" # ну штош
|
||||
|
||||
# ударения
|
||||
<Multi_key> <Cyrillic_A> <Cyrillic_A> : "А́" # CYRILLIC CAPITAL LETTER A plus COMBINING ACUTE --- AAA
|
||||
@@ -35,6 +35,20 @@ include "%L"
|
||||
<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-таблица для кириллических алфавитов
|
||||
# ################################################################################
|
||||
|
||||
Reference in New Issue
Block a user