Compare commits
5 commits
Author | SHA1 | Date | |
---|---|---|---|
|
c01055c142 | ||
|
a817833f66 | ||
|
aee439343e | ||
|
c6ae684aa7 | ||
|
5255212796 |
60 changed files with 1504 additions and 560 deletions
8
.asoundrc
Normal file
8
.asoundrc
Normal file
|
@ -0,0 +1,8 @@
|
|||
pcm.!default {
|
||||
type pulse
|
||||
fallback "sysdefault"
|
||||
hint.description "PulseAudio Sound Server"
|
||||
}
|
||||
ctl.!default {
|
||||
type pulse
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<preferences xmlns='http://josm.openstreetmap.de/preferences-1.0' version='18463'>
|
||||
<tag key='cache.capabilities1637351842' value='1660595298'/>
|
||||
<tag key='cache.motd.html' value='1660595299'/>
|
||||
<tag key='cache.motd.html.java' value='11.0.16'/>
|
||||
<preferences xmlns='http://josm.openstreetmap.de/preferences-1.0' version='18822'>
|
||||
<tag key='cache.capabilities1637351842' value='1704276020'/>
|
||||
<tag key='cache.motd.html' value='1703185778'/>
|
||||
<tag key='cache.motd.html.java' value='1.8.0_392'/>
|
||||
<tag key='cache.motd.html.lang' value='En:'/>
|
||||
<tag key='cache.motd.html.version' value='18463'/>
|
||||
<tag key='cache.motd.html.version' value='18822'/>
|
||||
<tag key='changeset.lastHeight' value='0'/>
|
||||
<tag key='changesetdialog.lastHeight' value='0'/>
|
||||
<tag key='commandstack.lastHeight' value='0'/>
|
||||
|
@ -12,8 +12,22 @@
|
|||
<tag key='conflict.minimized' value='true'/>
|
||||
<tag key='conflict.visible' value='true'/>
|
||||
<tag key='download.osm.notes' value='true'/>
|
||||
<list key='download.places.history'>
|
||||
<entry value='mombasa'/>
|
||||
<entry value='kerugoya'/>
|
||||
<entry value='longonot'/>
|
||||
<entry value='Ponta do Sol'/>
|
||||
<entry value='Ponte do Sol'/>
|
||||
<entry value='Funchal'/>
|
||||
<entry value='Madeira'/>
|
||||
<entry value='Nablus'/>
|
||||
</list>
|
||||
<tag key='expert' value='true'/>
|
||||
<list key='file-open.history'>
|
||||
<entry value='/home/janek/data/4-media/osm/KENYA.osm'/>
|
||||
<entry value='/home/janek/data/4-media/osm/PT-madeira.osm'/>
|
||||
<entry value='/home/janek/data/4-media/osm/BAV-bayreuth.osm'/>
|
||||
<entry value='/home/janek/data/4-media/osm/IS.osm'/>
|
||||
<entry value='/home/janek/data/4-media/osm/MV-Ruegen.osm'/>
|
||||
<entry value='/home/janek/data/4-media/osm/BY-bayreuth.osm'/>
|
||||
<entry value='/home/janek/data/2-standards/osm/BY-bayreuth.osm'/>
|
||||
|
@ -25,16 +39,12 @@
|
|||
<entry value='/home/janek/data/2-standards/osm/SN-saxony.jos'/>
|
||||
<entry value='/home/janek/data/2-standards/osm/SN-vogtland.osm'/>
|
||||
<entry value='/home/janek/data/2-standards/osm/tracks/rec/2021-07-31_06-40_Sat_Hof-Auerbach.gpx'/>
|
||||
<entry value='/home/janek/data/2-standards/osm/BY-forchheim.osm'/>
|
||||
<entry value='/home/janek/data/2-standards/osm/BY-siegritz.osm'/>
|
||||
<entry value='/home/janek/data/2-standards/osm/BY-siegritz.osn'/>
|
||||
<entry value='/home/janek/data/2-standards/osm/haeusling.osm'/>
|
||||
</list>
|
||||
<tag key='filter.lastHeight' value='0'/>
|
||||
<tag key='geoimage.docked' value='false'/>
|
||||
<tag key='geoimage.geometry' value='x=690,y=413,width=540,height=249'/>
|
||||
<tag key='geoimage.lastHeight' value='200'/>
|
||||
<tag key='gui.geometry' value='x=0,y=-5,width=960,height=1085'/>
|
||||
<tag key='gui.geometry' value='x=0,y=30,width=2256,height=1474'/>
|
||||
<tag key='gui.maximized' value='true'/>
|
||||
<maps key='imagery.entries'>
|
||||
<map>
|
||||
|
@ -107,28 +117,9 @@
|
|||
<tag key='customHttpHeaders' value='{}'/>
|
||||
<tag key='category' value='photo'/>
|
||||
</map>
|
||||
<map>
|
||||
<tag key='max-zoom' value='22'/>
|
||||
<tag key='noTileChecksums' value='{"MD5":["08d6916814b216570e5241732c41d5e5"]}'/>
|
||||
<tag key='valid-georeference' value='true'/>
|
||||
<tag key='transparent' value='true'/>
|
||||
<tag key='minimumTileExpire' value='3600'/>
|
||||
<tag key='name' value='Maxar Premium Imagery'/>
|
||||
<tag key='id' value='Maxar-Premium'/>
|
||||
<tag key='type' value='tms'/>
|
||||
<tag key='url' value='https://services.digitalglobe.com/earthservice/tmsaccess/tms/1.0.0/DigitalGlobe:ImageryTileService@EPSG:3857@jpg/{zoom}/{x}/{-y}.jpg?connectId={apikey}'/>
|
||||
<tag key='attribution-text' value='Terms & Feedback'/>
|
||||
<tag key='attribution-url' value='https://wiki.openstreetmap.org/wiki/DigitalGlobe'/>
|
||||
<tag key='cookies' value=''/>
|
||||
<tag key='icon' value='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEX9sBz3qx3GjiO6hyWZcyo+PDY6OjcXiwAvAAAA50lEQVR42s2TwQ3CMAxFv5kgBwZAFRuUBYrUCUiyQbv/CMT0W64bOHBrTlGeXvxtJVh/LJwXLKVUOyi6N/AchjtJHtrewHIDZN7AC8Cl7gCu9Sug0oNEpQGJhlDpr6ISwDoJEqtEkPV4U/I4jg/vfAJApbRlQBVhsDArKhbMABUGO4LFgkVAhVUcxCo9SKzSXyVUDHiLQiXG1VhUYoO6kivwsAIP5kMUPUxUCHwgPmQCPUgic06fC6/+rjgOZji8EpkZIgDW1CEjgqQCG41XqaDK0VCByg7YN7A94/Kz2Gr7eorv/Bd4A5pJU8mYQ1uTAAAAAElFTkSuQmCC'/>
|
||||
<tag key='description' value='Maxar Premium is a mosaic composed of Maxar basemap with select regions filled with +Vivid or custom area of interest imagery, 50cm resolution or better, and refreshed more frequently with ongoing updates.'/>
|
||||
<tag key='customHttpHeaders' value='{}'/>
|
||||
<tag key='category' value='photo'/>
|
||||
</map>
|
||||
<map>
|
||||
<tag key='max-zoom' value='19'/>
|
||||
<tag key='valid-georeference' value='true'/>
|
||||
<tag key='modTileFeatures' value='true'/>
|
||||
<tag key='transparent' value='true'/>
|
||||
<tag key='minimumTileExpire' value='3600'/>
|
||||
<tag key='name' value='OpenStreetMap Carto (Standard)'/>
|
||||
|
@ -149,15 +140,14 @@
|
|||
<entry value='EsriWorldImagery'/>
|
||||
<entry value='EsriWorldImageryClarity'/>
|
||||
<entry value='Mapbox'/>
|
||||
<entry value='Maxar-Premium'/>
|
||||
<entry value='standard'/>
|
||||
</list>
|
||||
<maps key='imagery.offsetbookmarks'>
|
||||
</maps>
|
||||
<tag key='iodb.modify.toolbar' value='false'/>
|
||||
<tag key='josm.version' value='18463'/>
|
||||
<tag key='josm.version' value='18822'/>
|
||||
<tag key='lastDirectory' value='/home/janek/data/4-media/osm'/>
|
||||
<tag key='layerlist.lastHeight' value='138'/>
|
||||
<tag key='layerlist.lastHeight' value='226'/>
|
||||
<tag key='mappaint.renderer-class-name' value='org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer'/>
|
||||
<list key='mappaint.style.known-defaults'>
|
||||
<entry value='resource://styles/standard/elemstyles.mapcss'/>
|
||||
|
@ -166,6 +156,8 @@
|
|||
<tag key='mapstyle.lastHeight' value='0'/>
|
||||
<tag key='message.delete_relations' value='false'/>
|
||||
<tag key='message.delete_relations.value' value='0'/>
|
||||
<tag key='message.overwriteAddKey' value='false'/>
|
||||
<tag key='message.overwriteAddKey.value' value='1'/>
|
||||
<tag key='minimap.lastHeight' value='0'/>
|
||||
<list key='mirror./home/janek/.cache/JOSM/images.https://josm.openstreetmap.de/browser/trunk/resources/images/cancel.svg?format_raw'>
|
||||
<entry value='1623789870975'/>
|
||||
|
@ -179,13 +171,21 @@
|
|||
<entry value='1623789870903'/>
|
||||
<entry value='/home/janek/.cache/JOSM/images/mirror_https___josm.openstreetmap.de_browser_trunk_resources_images_ok.svg_format_raw'/>
|
||||
</list>
|
||||
<list key='mirror./home/janek/.cache/JOSM/images.https://map.valentim.org/favicon.png'>
|
||||
<entry value='1699812707933'/>
|
||||
<entry value='/home/janek/.cache/JOSM/images/mirror_https___map.valentim.org_favicon.png'/>
|
||||
</list>
|
||||
<list key='mirror./home/janek/.local/cache/JOSM/images.https://geoportal.bayern.de/bayernatlas/favicon/favicon-32x32.png'>
|
||||
<entry value='1633952469206'/>
|
||||
<entry value='/home/janek/.local/cache/JOSM/images/mirror_https___geoportal.bayern.de_bayernatlas_favicon_favicon-32x32.png'/>
|
||||
</list>
|
||||
<list key='mirror./home/janek/.local/cache/JOSM/images.https://israelhiking.osm.org.il/content/favicons/favicon.ico'>
|
||||
<entry value='1674922283434'/>
|
||||
<entry value='/home/janek/.local/cache/JOSM/images/mirror_https___israelhiking.osm.org.il_content_favicons_favicon.ico'/>
|
||||
</list>
|
||||
<list key='mirror.https://josm.openstreetmap.de/maps'>
|
||||
<entry value='1660595302989'/>
|
||||
<entry value='/home/janek/.local/cache/JOSM/mirror_https___josm.openstreetmap.de_maps'/>
|
||||
<entry value='1703185930408'/>
|
||||
<entry value='/home/janek/.cache/JOSM/mirror_https___josm.openstreetmap.de_maps'/>
|
||||
</list>
|
||||
<list key='mirror.https://josm.openstreetmap.de/presets'>
|
||||
<entry value='1635460787084'/>
|
||||
|
@ -196,76 +196,56 @@
|
|||
<entry value='/home/janek/.local/cache/JOSM/mirror_https___josm.openstreetmap.de_proj_BETA2007.gsb'/>
|
||||
</list>
|
||||
<list key='mirror.https://josm.openstreetmap.de/remote/geofabrik-index-v1-nogeom.json'>
|
||||
<entry value='1660595299798'/>
|
||||
<entry value='/home/janek/.local/cache/JOSM/mirror_https___josm.openstreetmap.de_remote_geofabrik-index-v1-nogeom.json'/>
|
||||
<entry value='1703185778624'/>
|
||||
<entry value='/home/janek/.cache/JOSM/mirror_https___josm.openstreetmap.de_remote_geofabrik-index-v1-nogeom.json'/>
|
||||
</list>
|
||||
<list key='mirror.https://josm.openstreetmap.de/tested'>
|
||||
<entry value='1633952185297'/>
|
||||
<entry value='/home/janek/.local/cache/JOSM/mirror_https___josm.openstreetmap.de_tested'/>
|
||||
</list>
|
||||
<tag key='notes/note_open.lastHeight' value='187'/>
|
||||
<tag key='notes/note_open.lastHeight' value='275'/>
|
||||
<tag key='notes/note_open.visible' value='true'/>
|
||||
<tag key='oauth.access-token.key' value='YGtDqRUspIjinRFJwYJhzSDbOWSHeCfJRYsstgtu'/>
|
||||
<tag key='oauth.access-token.secret' value='DqACmTu5PcW1k94TrGZIF4XaPqbUy2SMxPTyjcEa'/>
|
||||
<tag key='org.openstreetmap.josm.actions.OpenLocationAction.geometry' value='x=778,y=425,width=363,height=225'/>
|
||||
<tag key='oauth.use-for-all-requests' value='false'/>
|
||||
<tag key='org.openstreetmap.josm.actions.OpenLocationAction.geometry' value='x=382,y=278,width=363,height=225'/>
|
||||
<tag key='org.openstreetmap.josm.gui.NoteInputDialog.geometry' value='x=760,y=387,width=400,height=300'/>
|
||||
<tag key='org.openstreetmap.josm.gui.dialogs.properties.TagEditHelper$AddTagsDialog.geometry' value='x=746,y=441,width=918,height=470'/>
|
||||
<tag key='org.openstreetmap.josm.gui.dialogs.properties.TagEditHelper$EditTagDialog.geometry' value='x=814,y=428,width=801,height=212'/>
|
||||
<tag key='org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor.geometry' value='x=610,y=212,width=700,height=650'/>
|
||||
<tag key='org.openstreetmap.josm.gui.download.DownloadDialog.geometry' value='x=460,y=233,width=1000,height=600'/>
|
||||
<tag key='org.openstreetmap.josm.gui.dialogs.properties.TagEditHelper$AddTagsDialog.geometry' value='x=669,y=556,width=918,height=421'/>
|
||||
<tag key='org.openstreetmap.josm.gui.dialogs.properties.TagEditHelper$EditTagDialog.geometry' value='x=727,y=685,width=801,height=163'/>
|
||||
<tag key='org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor.geometry' value='x=778,y=442,width=700,height=650'/>
|
||||
<tag key='org.openstreetmap.josm.gui.download.DownloadDialog.geometry' value='x=623,y=467,width=1010,height=600'/>
|
||||
<tag key='org.openstreetmap.josm.gui.help.HelpBrowser.geometry' value='x=0,y=-13,width=960,height=1093'/>
|
||||
<tag key='org.openstreetmap.josm.gui.io.UploadDialog.geometry' value='x=386,y=330,width=800,height=600'/>
|
||||
<tag key='org.openstreetmap.josm.gui.io.UploadDialog.geometry' value='x=728,y=467,width=800,height=600'/>
|
||||
<tag key='org.openstreetmap.josm.gui.oauth.OAuthAuthorizationWizard.geometry' value='x=590,y=314,width=739,height=438'/>
|
||||
<tag key='org.openstreetmap.josm.gui.preferences.PreferenceDialog.geometry' value='x=357,y=99,width=1001,height=811'/>
|
||||
<tag key='osm-download.bounds' value='54.5625077;13.1588745;54.6770072;13.3950806'/>
|
||||
<tag key='org.openstreetmap.josm.gui.preferences.PreferenceDialog.geometry' value='x=627,y=391,width=1001,height=752'/>
|
||||
<tag key='osm-download.bounds' value='-4.0256428;39.7270551;-3.9959636;39.7456188'/>
|
||||
<tag key='osm-server.auth-method' value='oauth'/>
|
||||
<tag key='osm-server.upload-strategy' value='singlerequest'/>
|
||||
<tag key='plugin.continuos_download.max_area' value='0.004'/>
|
||||
<tag key='plugin.continuos_download.max_areas' value='2'/>
|
||||
<tag key='pluginmanager.lastupdate' value='1658813943390'/>
|
||||
<tag key='pluginmanager.version' value='18463'/>
|
||||
<tag key='pluginmanager.lastupdate' value='1703185770809'/>
|
||||
<tag key='pluginmanager.time-based-update.policy' value='always'/>
|
||||
<tag key='pluginmanager.version' value='18822'/>
|
||||
<tag key='pluginmanager.version-based-update.policy' value='always'/>
|
||||
<list key='plugins'>
|
||||
<entry value='FastDraw'/>
|
||||
<entry value='auto_tools'/>
|
||||
<entry value='buildings_tools'/>
|
||||
<entry value='changeset-viewer'/>
|
||||
<entry value='continuosDownload'/>
|
||||
<entry value='imagery_offset_db'/>
|
||||
<entry value='jts'/>
|
||||
<entry value='changeset-viewer'/>
|
||||
<entry value='turnlanes'/>
|
||||
<entry value='FastDraw'/>
|
||||
<entry value='continuosDownload'/>
|
||||
<entry value='utilsplugin2'/>
|
||||
<entry value='libphonenumber'/>
|
||||
<entry value='openvisible'/>
|
||||
<entry value='phonenumber'/>
|
||||
<entry value='turnlanes'/>
|
||||
<entry value='undelete'/>
|
||||
<entry value='buildings_tools'/>
|
||||
<entry value='utilsplugin2'/>
|
||||
<entry value='wikipedia'/>
|
||||
</list>
|
||||
<tag key='preferences.reset.draw.rawgps.lines' value='true'/>
|
||||
<tag key='progressdialog.size' value='229'/>
|
||||
<tag key='progressdialog.size' value='385'/>
|
||||
<list key='properties.recent-tags'>
|
||||
<entry value='man_made'/>
|
||||
<entry value='watermill'/>
|
||||
<entry value='disused'/>
|
||||
<entry value='yes'/>
|
||||
<entry value='watermill:disused'/>
|
||||
<entry value='yes'/>
|
||||
<entry value='description'/>
|
||||
<entry value='einstige Wasserversorgung Siegritz'/>
|
||||
<entry value='year_of_construction'/>
|
||||
<entry value='1871'/>
|
||||
<entry value='start_date'/>
|
||||
<entry value='1871'/>
|
||||
<entry value='note'/>
|
||||
<entry value='naturbelassen, ggf. Bäume im Weg'/>
|
||||
<entry value='height'/>
|
||||
<entry value='8'/>
|
||||
<entry value='source:height'/>
|
||||
<entry value='survey'/>
|
||||
<entry value='height'/>
|
||||
<entry value='5'/>
|
||||
<entry value='fixme'/>
|
||||
<entry value='5'/>
|
||||
<entry value='fixme'/>
|
||||
<entry value='continue'/>
|
||||
<entry value='incline'/>
|
||||
<entry value='up'/>
|
||||
<entry value='steepness'/>
|
||||
<entry value='steep'/>
|
||||
<entry value='barrier'/>
|
||||
|
@ -278,8 +258,6 @@
|
|||
<entry value='lounger'/>
|
||||
<entry value='drinking_water'/>
|
||||
<entry value='yes'/>
|
||||
<entry value='highway'/>
|
||||
<entry value='track'/>
|
||||
<entry value='bicycle'/>
|
||||
<entry value='no'/>
|
||||
<entry value='url'/>
|
||||
|
@ -300,14 +278,43 @@
|
|||
<entry value='footway'/>
|
||||
<entry value='access'/>
|
||||
<entry value='yes'/>
|
||||
<entry value='facebook'/>
|
||||
<entry value='https://www.facebook.com/wardnablusrestaurant/'/>
|
||||
<entry value='facebook'/>
|
||||
<entry value='https://www.facebook.com/wardelshamcafe/'/>
|
||||
<entry value='sac_scale'/>
|
||||
<entry value='demanding_alpine_hiking'/>
|
||||
<entry value='trail_visibility'/>
|
||||
<entry value='bad'/>
|
||||
<entry value='note'/>
|
||||
<entry value='There was supposedly a staircase downwards here, but everything is overgrown, no way'/>
|
||||
<entry value='note'/>
|
||||
<entry value='Roughly drawn from memory'/>
|
||||
<entry value='sac_scale'/>
|
||||
<entry value='demanding_mountain_hiking'/>
|
||||
<entry value='note'/>
|
||||
<entry value='Roughly drawn from memory. There is a refreshing natural waterfall along the way'/>
|
||||
<entry value='surface'/>
|
||||
<entry value='grass'/>
|
||||
<entry value='highway'/>
|
||||
<entry value='track'/>
|
||||
<entry value='highway'/>
|
||||
<entry value='tertiary'/>
|
||||
<entry value='smoothness'/>
|
||||
<entry value='bad'/>
|
||||
<entry value='smoothness'/>
|
||||
<entry value='intermediate'/>
|
||||
<entry value='surface'/>
|
||||
<entry value='asphalt'/>
|
||||
</list>
|
||||
<tag key='propertiesdialog.lastHeight' value='188'/>
|
||||
<tag key='propertiesdialog.lastHeight' value='276'/>
|
||||
<tag key='relationlist.lastHeight' value='0'/>
|
||||
<tag key='relationlist.visible' value='false'/>
|
||||
<list key='search.history'>
|
||||
<entry value='R Hinter der Kirche 13a'/>
|
||||
<entry value='R modified'/>
|
||||
</list>
|
||||
<tag key='selectionlist.lastHeight' value='188'/>
|
||||
<tag key='selectionlist.lastHeight' value='276'/>
|
||||
<list key='shortcut.entry.core:movedown'>
|
||||
<entry value='Move objects down'/>
|
||||
<entry value='40'/>
|
||||
|
@ -389,9 +396,9 @@
|
|||
<entry value='false'/>
|
||||
<entry value='true'/>
|
||||
</list>
|
||||
<tag key='simplify-way.max-error' value='2.0'/>
|
||||
<tag key='sourcetag.value' value='local_knowledge'/>
|
||||
<tag key='toggleDialogs.width' value='712'/>
|
||||
<tag key='simplify-way.max-error' value='1.0'/>
|
||||
<tag key='sourcetag.value' value='maxar'/>
|
||||
<tag key='toggleDialogs.width' value='379'/>
|
||||
<list key='toolbar'>
|
||||
<entry value='open'/>
|
||||
<entry value='save'/>
|
||||
|
@ -428,11 +435,20 @@
|
|||
</list>
|
||||
<tag key='turnlanes.png.lastHeight' value='0'/>
|
||||
<list key='upload.comment.history'>
|
||||
<entry value='Mombasa Roads simplification'/>
|
||||
<entry value='Mombasa Road qualities'/>
|
||||
<entry value=''/>
|
||||
<entry value='Kerugoyah street checks'/>
|
||||
<entry value='Gase Förster'/>
|
||||
<entry value='nablus: cafe alsham'/>
|
||||
<entry value='Edit Kreptitzer paths'/>
|
||||
</list>
|
||||
<tag key='upload.comment.last-used' value='1660600244'/>
|
||||
<tag key='upload.comment.last-used' value='1704732893'/>
|
||||
<list key='upload.source.history'>
|
||||
<entry value='survey'/>
|
||||
<entry value='Notes'/>
|
||||
<entry value=''/>
|
||||
<entry value='https://www.11880.com/branchenbuch/bayreuth/252211874B26425827/foerster-werner.html'/>
|
||||
</list>
|
||||
<tag key='upload.source.obtainautomatically' value='true'/>
|
||||
<tag key='userlist.lastHeight' value='0'/>
|
||||
|
@ -451,7 +467,7 @@
|
|||
<entry value='Browse element [demo, =Ctrl-Shift-I]'/>
|
||||
<entry value='https://www.openstreetmap.org/{#type}/{#id}'/>
|
||||
</list>
|
||||
<tag key='validator.lastHeight' value='188'/>
|
||||
<tag key='validator.lastHeight' value='276'/>
|
||||
<list key='validator.skip'>
|
||||
</list>
|
||||
<list key='validator.skipBeforeUpload'>
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
"mainColor": "#633738",
|
||||
"miniBreakColor": "#478484",
|
||||
"transparentMode": false,
|
||||
"blurredBackground": false,
|
||||
"opacity": 0.8,
|
||||
"audio": "crystal-glass",
|
||||
"miniBreakAudio": "crystal-glass",
|
||||
|
@ -467,6 +468,11 @@
|
|||
"appExclusionsCheckInterval": 1000,
|
||||
"pauseForSuspendOrLock": true,
|
||||
"pauseBreaksToggleShortcut": "",
|
||||
"pauseBreaksFor30MinutesShortcut": "",
|
||||
"pauseBreaksFor1HourShortcut": "",
|
||||
"pauseBreaksFor2HoursShortcut": "",
|
||||
"pauseBreaksFor5HoursShortcut": "",
|
||||
"pauseBreaksUntilMorningShortcut": "",
|
||||
"screen": "primary",
|
||||
"timeToBreakInTray": false,
|
||||
"currentTimeInBreaks": false,
|
||||
|
@ -475,11 +481,12 @@
|
|||
"skipToNextMiniBreakShortcut": "",
|
||||
"skipToNextLongBreakShortcut": "",
|
||||
"resetBreaksShortcut": "",
|
||||
"showTrayMenuInStrictMode": false,
|
||||
"pauseBreaksShortcut": "",
|
||||
"resumeBreaksShortcut": "",
|
||||
"__internal__": {
|
||||
"migrations": {
|
||||
"version": "1.15.1"
|
||||
"version": "1.17.2"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,12 @@
|
|||
Convert the following contact details into carddav format importable by nextcloud.
|
||||
A blank line separates another contact.
|
||||
Output one long file.
|
||||
Ensure that TYPE= is used for TEL.
|
||||
Convert the following contact details into a carddav format compatible with nextcloud.
|
||||
Output only the raw vcard without markup without backticks.
|
||||
|
||||
Always include TYPE= for TEL.
|
||||
Convert phone numbers into E.123 international notation defaulting to Germany +49 as national prefix.
|
||||
|
||||
Ignore fax numbers and post boxes.
|
||||
Put extra information such as opening hours into notes.
|
||||
|
||||
Use LANG field if appropriate.
|
||||
Assign a "Services" category for organizations and healthcare providers.
|
||||
Create a unique UID.
|
||||
|
|
|
@ -2,39 +2,88 @@ PrefsVersion=1.1.1r1
|
|||
TEST=1
|
||||
MenuBar=File,Edit,Select,View,Transport,Tracks,Generate,Effect,Analyze,Tools,Optional,Help
|
||||
AudioTimeFormat=hh:mm:ss
|
||||
Importers=PCM,OGG,FLAC,MP3,LOF,FFmpeg
|
||||
Importers=PCM,OGG,FLAC,MP3,LOF,FFmpeg,AUP,WavPack,Opus,portsmf
|
||||
Preferences=Device,Playback,Recording,MidiIO,Quality,GUI,Tracks,ImportExport,Library,Directories,Warnings,Effects,KeyConfig,Mouse,Module
|
||||
Exporters=PCM,MP3,OGG,FLAC,MP2,CommandLine,FFmpeg,WavPack,Opus
|
||||
NumericConverterRegistry=parsed
|
||||
SnapFunctions=beats,time,frames
|
||||
SelectionFormat=hh:mm:ss + milliseconds
|
||||
FrequencySelectionFormatName=Hz
|
||||
BandwidthSelectionFormatName=octaves
|
||||
LibraryPreferences=MP3,FFmpeg
|
||||
SelectionToolbarMode=1
|
||||
DefaultOpenType=All files
|
||||
LastOpenType=
|
||||
StatusBarFieldRegistry=state,main,rate
|
||||
[Version]
|
||||
Major=2
|
||||
Minor=4
|
||||
Micro=1
|
||||
Major=3
|
||||
Minor=7
|
||||
Micro=3
|
||||
[Directories]
|
||||
TempDir=/var/tmp/audacity-janek
|
||||
[Directories/Export]
|
||||
LastUsed=/home/janek/data/2-box/uni/sts-bodywork
|
||||
Default=
|
||||
[Directories/Save]
|
||||
LastUsed=/home/janek/data/4-media/record
|
||||
Default=
|
||||
[Directories/Open]
|
||||
Default=
|
||||
LastUsed=/home/janek/data/4-media/record
|
||||
[Directories/Import]
|
||||
Default=
|
||||
[Directories/MacrosOut]
|
||||
Default=
|
||||
[AudioIO]
|
||||
RecordingDevice=default
|
||||
RecordingDevice=pulse
|
||||
Host=ALSA
|
||||
PlaybackDevice=default
|
||||
RecordingSourceIndex=0
|
||||
PlaybackDevice=pipewire
|
||||
RecordingSourceIndex=-1
|
||||
RecordingSource=
|
||||
RecordChannels=2
|
||||
PlaybackSource=
|
||||
PlaybackVolume=0.890351
|
||||
Duplex=1
|
||||
SWPlaythrough=0
|
||||
SoundActivatedRecord=0
|
||||
SilenceLevel=-50
|
||||
PreRoll=5
|
||||
Crossfade=10
|
||||
EffectsPreviewLen=6
|
||||
CutPreviewBeforeLen=2
|
||||
CutPreviewAfterLen=1
|
||||
SeekShortPeriod=1
|
||||
SeekLongPeriod=15
|
||||
Microfades=0
|
||||
UnpinnedScrubbing=1
|
||||
LatencyDuration=100
|
||||
LatencyCorrection=-170
|
||||
[SamplingRate]
|
||||
DefaultProjectSampleRate=44100
|
||||
DefaultProjectSampleFormatChoice=Format32BitFloat
|
||||
[MenuBar]
|
||||
File=Basic,Save,Import-Export,Print,Exit
|
||||
[MenuBar/Optional]
|
||||
[MenuBar/Optional/Extra]
|
||||
Part1=Transport,Tools,Mixer,Edit,PlayAtSpeed,Seek,Device,Select
|
||||
Part1=Transport,Tools,Mixer,Edit,PlayAtSpeed,Seek,Device,Select,Import-Export
|
||||
Part2=Navigation,Focus,Cursor,Track,Scriptables1,Scriptables2,Misc
|
||||
[MenuBar/Optional/Extra/Part1]
|
||||
Transport=Play,Stop,PlayOneSec,PlayToSelection,PlayBeforeSelectionStart,PlayAfterSelectionStart,PlayBeforeSelectionEnd,PlayAfterSelectionEnd,PlayBeforeAndAfterSelectionStart,PlayBeforeAndAfterSelectionEnd,PlayCutPreview,KeyboardScrubbing
|
||||
Edit=DeleteKey,DeleteKey2,TimeShift
|
||||
Select=SnapToOff,SnapToNearest,SnapToPrior,SelStart,SelEnd,SelExtLeft,SelExtRight,SelSetExtLeft,SelSetExtRight,SelCntrLeft,SelCntrRight,MoveToLabel
|
||||
PlayAtSpeed=PlayAtSpeed,PlayAtSpeedCutPreview,PlayAtSpeedLooped,PlaySpeedDec,PlaySpeedInc,SetPlaySpeed
|
||||
[MenuBar/Optional/Extra/Part2]
|
||||
Cursor=CursorLeft,CursorRight,CursorShortJumpLeft,CursorShortJumpRight,CursorLongJumpLeft,CursorLongJumpRight,Clip
|
||||
Scriptables1=SelectTime,SelectFrequencies,SelectTracks,SetTrackStatus,SetTrackAudio,SetTrackVisuals,GetPreference,SetPreference,SetClip,SetEnvelope,SetLabel,SetProject
|
||||
Scriptables2=Select,SetTrack,GetInfo,Message,Help,Import2,Export2,OpenProject2,SaveProject2,Drag,CompareAudio
|
||||
[MenuBar/View]
|
||||
Windows=UndoHistory,Karaoke,MixerBoard
|
||||
Other=Toolbars,ShowExtraMenus,ShowClipping
|
||||
Windows=UndoHistory,MixerBoard
|
||||
Other=Toolbars,ShowExtraMenus,ShowClipping,ShowRMS
|
||||
[MenuBar/View/Other]
|
||||
Toolbars=Toolbars,Timeline
|
||||
[MenuBar/View/Other/Toolbars]
|
||||
[MenuBar/View/Other/Toolbars/Toolbars]
|
||||
Other=ShowTransportTB,ShowToolsTB,ShowRecordMeterTB,ShowPlayMeterTB,ShowMixerTB,ShowEditTB,ShowTranscriptionTB,ShowScrubbingTB,ShowDeviceTB,ShowSelectionTB,ShowTimeTB,ShowSpectralSelectionTB
|
||||
Other=ShowTransportTB,ShowToolsTB,ShowRecordMeterTB,ShowPlayMeterTB,ShowEditTB,ShowCutCopyPasteTB,ShowTranscriptionTB,ShowDeviceTB,ShowSelectionTB,ShowTimeTB,ShowSpectralSelectionTB,ShowAudioSetupTB,ShowSnappingTB,ShowTimeSignatureTB
|
||||
[MenuBar/Analyze]
|
||||
[MenuBar/Analyze/Analyzers]
|
||||
Windows=ContrastAnalyser,PlotSpectrum
|
||||
|
@ -42,33 +91,143 @@ Windows=ContrastAnalyser,PlotSpectrum
|
|||
Basic=Play,Record,Scrubbing,Cursor
|
||||
[MenuBar/Transport/Basic]
|
||||
Cursor=CursSelStart,CursSelEnd,CursTrackStart,CursTrackEnd,Clip,CursProjectStart,CursProjectEnd
|
||||
Record=Record1stChoice,Record2ndChoice,TimerRecord,PunchAndRoll,Pause
|
||||
[MenuBar/Transport/Other]
|
||||
[MenuBar/Transport/Other/Options]
|
||||
Part2=PinnedHead,Overdub,SWPlaythrough
|
||||
[MenuBar/Edit]
|
||||
Other=Clip,LabelEditMenus,EditMetaData
|
||||
[MenuBar/Edit/Other]
|
||||
Clip=RenameClip,ChangePitchAndSpeed,PitchDown,PitchUp,RenderPitchAndSpeed
|
||||
[MenuBar/Select]
|
||||
Basic=SelectAll,SelectNone,Tracks,Region,Spectral,Clip
|
||||
[MenuBar/Tracks]
|
||||
[MenuBar/Tracks/Add]
|
||||
Add=NewMonoTrack,NewStereoTrack,NewLabelTrack,NewTimeTrack
|
||||
[MenuBar/Help]
|
||||
[MenuBar/Help/Other]
|
||||
Diagnostics=DeviceInfo,MidiDeviceInfo,Log,CrashReport
|
||||
[MenuBar/File]
|
||||
[MenuBar/File/Import-Export]
|
||||
Export=ExportMp3,ExportWav,ExportOgg,Export,ExportSel,ExportLabels,ExportMultiple,ExportMIDI
|
||||
Import=ImportAudio,ImportMIDI,ImportLabels,ImportRaw
|
||||
ExportOther=ExportLabels,ExportMIDI
|
||||
[MenuBar/Tools]
|
||||
Manage=ManageTools,Macros
|
||||
Other=ConfigReset,FancyScreenshot,Benchmark
|
||||
[FFmpeg]
|
||||
Enabled=1
|
||||
[Preferences]
|
||||
Tracks=TracksBehaviors,Spectrum
|
||||
ImportExport=ExtImport
|
||||
[Prefs]
|
||||
Width=1092
|
||||
Height=697
|
||||
PrefsCategory=0
|
||||
[Prefs/KeyConfig]
|
||||
ViewBy=tree
|
||||
[Module]
|
||||
mod-script-pipe=4
|
||||
mod-aup=1
|
||||
mod-cl=1
|
||||
mod-ffmpeg=1
|
||||
mod-flac=1
|
||||
mod-lof=1
|
||||
mod-mp2=1
|
||||
mod-mp3=1
|
||||
mod-mpg123=1
|
||||
mod-ogg=1
|
||||
mod-opus=1
|
||||
mod-pcm=1
|
||||
mod-wavpack=1
|
||||
mod-midi-import-export=1
|
||||
[ModulePath]
|
||||
mod-script-pipe=/usr/lib/audacity/modules/mod-script-pipe.so
|
||||
mod-aup=/usr/lib/audacity/modules/mod-aup.so
|
||||
mod-cl=/usr/lib/audacity/modules/mod-cl.so
|
||||
mod-ffmpeg=/usr/lib/audacity/modules/mod-ffmpeg.so
|
||||
mod-flac=/usr/lib/audacity/modules/mod-flac.so
|
||||
mod-lof=/usr/lib/audacity/modules/mod-lof.so
|
||||
mod-mp2=/usr/lib/audacity/modules/mod-mp2.so
|
||||
mod-mp3=/usr/lib/audacity/modules/mod-mp3.so
|
||||
mod-mpg123=/usr/lib/audacity/modules/mod-mpg123.so
|
||||
mod-ogg=/usr/lib/audacity/modules/mod-ogg.so
|
||||
mod-opus=/usr/lib/audacity/modules/mod-opus.so
|
||||
mod-pcm=/usr/lib/audacity/modules/mod-pcm.so
|
||||
mod-wavpack=/usr/lib/audacity/modules/mod-wavpack.so
|
||||
mod-midi-import-export=/usr/lib/audacity/modules/mod-midi-import-export.so
|
||||
[ModuleDateTime]
|
||||
mod-script-pipe=2025-04-03T13:00:43
|
||||
mod-aup=2025-04-03T13:00:43
|
||||
mod-cl=2025-04-03T13:00:43
|
||||
mod-ffmpeg=2025-04-03T13:00:43
|
||||
mod-flac=2025-04-03T13:00:43
|
||||
mod-lof=2025-04-03T13:00:43
|
||||
mod-mp2=2025-04-03T13:00:43
|
||||
mod-mp3=2025-04-03T13:00:43
|
||||
mod-mpg123=2025-04-03T13:00:43
|
||||
mod-ogg=2025-04-03T13:00:43
|
||||
mod-opus=2025-04-03T13:00:43
|
||||
mod-pcm=2025-04-03T13:00:43
|
||||
mod-wavpack=2025-04-03T13:00:43
|
||||
mod-midi-import-export=2025-04-03T13:00:43
|
||||
[GUI]
|
||||
EmptyCanBeDirty=1
|
||||
SelectAllOnNone=0
|
||||
EnableCutLines=0
|
||||
AdjustSelectionEdges=1
|
||||
EditClipCanMove=0
|
||||
CircularTrackNavigation=0
|
||||
TypeToCreateLabel=0
|
||||
DialogForNameNewLabel=0
|
||||
ScrollBeyondZero=0
|
||||
VerticalZooming=0
|
||||
Solo=Simple
|
||||
AudioTrackPastePolicy=Ask
|
||||
TracksFitVerticallyZoomed=0
|
||||
ShowTrackNameInWaveform=0
|
||||
CollapseToHalfWave=0
|
||||
AutoScroll=1
|
||||
DefaultViewModeChoiceNew=Waveform
|
||||
DefaultWaveformScaleChoice=Linear
|
||||
SampleViewChoice=StemPlot
|
||||
ZoomPreset1Choice=ZoomDefault
|
||||
ZoomPreset2Choice=FourPixelsPerSample
|
||||
Theme=light
|
||||
EnvdBRange=60
|
||||
ShowExtraMenus=0
|
||||
BeepOnCompletion=0
|
||||
RetainLabels=0
|
||||
BlendThemes=1
|
||||
RtlWorkaround=1
|
||||
PreferNewTrackRecord=0
|
||||
ShowSplashScreen=0
|
||||
[GUI/TrackNames]
|
||||
RecordingNameCustom=0
|
||||
RecodingTrackName=Recorded_Audio
|
||||
TrackNumber=0
|
||||
DateStamp=0
|
||||
TimeStamp=0
|
||||
[GUI/ToolBars]
|
||||
[GUI/ToolBars/Control]
|
||||
DockV2=1
|
||||
Dock=1
|
||||
Path=0
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=327
|
||||
H=55
|
||||
[GUI/ToolBars/Tools]
|
||||
MultiToolActive=0
|
||||
DockV2=1
|
||||
Dock=1
|
||||
Path=0,0
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=94
|
||||
H=55
|
||||
W=67
|
||||
H=63
|
||||
[GUI/ToolBars/Audio\ Setup]
|
||||
DockV2=1
|
||||
Dock=1
|
||||
Path=0,0,0,0
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=104
|
||||
H=63
|
||||
[GUI/ToolBars/CombinedMeter]
|
||||
DockV2=1
|
||||
Dock=0
|
||||
|
@ -76,111 +235,256 @@ Show=0
|
|||
X=-1
|
||||
Y=-1
|
||||
W=338
|
||||
H=27
|
||||
[GUI/ToolBars/RecordMeter]
|
||||
H=31
|
||||
[GUI/ToolBars/Control]
|
||||
DockV2=1
|
||||
Dock=1
|
||||
Path=0
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=417
|
||||
H=63
|
||||
[GUI/ToolBars/CutCopyPaste]
|
||||
DockV2=1
|
||||
Dock=0
|
||||
Show=0
|
||||
X=-1
|
||||
Y=-1
|
||||
W=67
|
||||
H=63
|
||||
[GUI/ToolBars/Device]
|
||||
DockV2=1
|
||||
Dock=0
|
||||
Show=0
|
||||
X=-1
|
||||
Y=-1
|
||||
W=883
|
||||
H=31
|
||||
[GUI/ToolBars/Edit]
|
||||
DockV2=1
|
||||
Dock=1
|
||||
Path=0,0,0
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=460
|
||||
H=27
|
||||
W=148
|
||||
H=63
|
||||
[GUI/ToolBars/PlayMeter]
|
||||
DockV2=1
|
||||
Dock=1
|
||||
Path=0,0,0,0
|
||||
Path=0,0,0,0,1
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=460
|
||||
H=27
|
||||
[GUI/ToolBars/Mixer]
|
||||
W=290
|
||||
H=31
|
||||
[GUI/ToolBars/RecordMeter]
|
||||
DockV2=1
|
||||
Dock=1
|
||||
Path=0,0,0,0,0
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=327
|
||||
H=27
|
||||
[GUI/ToolBars/Edit]
|
||||
DockV2=1
|
||||
Dock=1
|
||||
Path=0,0,0,0,0,0
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=363
|
||||
H=27
|
||||
[GUI/ToolBars/Transcription]
|
||||
DockV2=1
|
||||
Dock=1
|
||||
Path=0,0,0,0,0,0,0
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=191
|
||||
H=27
|
||||
[GUI/ToolBars/Scrub]
|
||||
DockV2=1
|
||||
Dock=0
|
||||
Show=0
|
||||
X=-1
|
||||
Y=-1
|
||||
W=92
|
||||
H=27
|
||||
[GUI/ToolBars/Device]
|
||||
DockV2=1
|
||||
Dock=1
|
||||
Path=1
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=883
|
||||
H=27
|
||||
W=290
|
||||
H=31
|
||||
[GUI/ToolBars/Selection]
|
||||
DockV2=2
|
||||
Dock=2
|
||||
Path=0
|
||||
Path=0,0,0,0
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=660
|
||||
H=83
|
||||
[GUI/ToolBars/SpectralSelection]
|
||||
DockV2=2
|
||||
Dock=0
|
||||
Show=0
|
||||
X=-1
|
||||
Y=-1
|
||||
W=312
|
||||
H=83
|
||||
[GUI/ToolBars/Time]
|
||||
W=240
|
||||
H=63
|
||||
[GUI/ToolBars/Snapping]
|
||||
DockV2=2
|
||||
Dock=2
|
||||
Path=0,0
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=171
|
||||
H=63
|
||||
[GUI/ToolBars/SpectralSelection]
|
||||
DockV2=2
|
||||
Dock=0
|
||||
Show=0
|
||||
X=-1
|
||||
Y=-1
|
||||
W=244
|
||||
H=63
|
||||
[GUI/ToolBars/Time]
|
||||
DockV2=2
|
||||
Dock=2
|
||||
Path=0,0,0
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=250
|
||||
H=55
|
||||
H=63
|
||||
[GUI/ToolBars/TimeSignature]
|
||||
DockV2=2
|
||||
Dock=2
|
||||
Path=0
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=230
|
||||
H=63
|
||||
[GUI/ToolBars/Transcription]
|
||||
DockV2=2
|
||||
Dock=2
|
||||
Path=0,0,0,0,0
|
||||
Show=1
|
||||
X=-1
|
||||
Y=-1
|
||||
W=191
|
||||
H=31
|
||||
[Window]
|
||||
X=0
|
||||
Y=-5
|
||||
Width=1920
|
||||
Height=1036
|
||||
Maximized=0
|
||||
Normal_X=0
|
||||
Normal_Y=-5
|
||||
Normal_Width=1920
|
||||
Normal_Height=1036
|
||||
Y=30
|
||||
Width=2560
|
||||
Height=1410
|
||||
Maximized=1
|
||||
Normal_X=500
|
||||
Normal_Y=1440
|
||||
Normal_Width=1120
|
||||
Normal_Height=160
|
||||
Iconized=0
|
||||
[Preferences]
|
||||
Tracks=TracksBehaviors,Spectrum
|
||||
ImportExport=ExtImport
|
||||
[Prefs]
|
||||
Width=1092
|
||||
Height=697
|
||||
[FileFormats]
|
||||
ExportFormat_SF1=131072
|
||||
MP3RateModeChoice=SET
|
||||
MP3Bitrate=3
|
||||
MP3ChannelModeChoice=JOINT
|
||||
MP3SetRate=2
|
||||
MP3VbrRate=2
|
||||
MP3AbrRate=192
|
||||
MP3CbrRate=192
|
||||
OggExportQuality=50
|
||||
FLACLevel=5
|
||||
FLACBitDepth=16
|
||||
MP2Bitrate=160
|
||||
ExternalProgramShowOutput=0
|
||||
ExternalProgramExportCommand=lame - "%f"
|
||||
AACQuality=160
|
||||
AC3BitRate=160000
|
||||
AMRNBBitRate=12200
|
||||
OPUSBitrate=192000
|
||||
OPUSCompression=10
|
||||
OPUSFrameDuration=20
|
||||
OPUSVbrMode=on
|
||||
OPUSApplication=audio
|
||||
OPUSCutoff=0
|
||||
WMABitRate=128000
|
||||
WavPackEncodeQuality=1
|
||||
WavPackBitDepth=16
|
||||
WavPackHybridMode=0
|
||||
WavPackCreateCorrectionFile=0
|
||||
WavPackBitrate=40
|
||||
ExportDownMixChoice=MixDown
|
||||
LabelStyleChoice=Standard
|
||||
AllegroStyleChoice=Seconds
|
||||
[FileFormats/ExportFormat_SF1_Type]
|
||||
WAV_10000=2
|
||||
AIFF_20000=2
|
||||
[FileFormats/ExternalProgramHistory]
|
||||
file01=ffmpeg -i - "%f.opus"
|
||||
file02=ffmpeg -i - "%f.wav"
|
||||
file03=ffmpeg -i - "%f"
|
||||
file04=lame - "%f"
|
||||
[FileFormats/OPUS]
|
||||
Bitrate=-1000
|
||||
Quality=8
|
||||
FrameDuration=200
|
||||
VbrMode=1
|
||||
Application=2049
|
||||
Cutoff=-1000
|
||||
[TagsEditorDialog]
|
||||
x=0
|
||||
y=0
|
||||
width=510
|
||||
height=477
|
||||
[Export]
|
||||
Format=OPUS
|
||||
[Snap]
|
||||
To=seconds
|
||||
[AudioFiles]
|
||||
ShowId3Dialog=0
|
||||
SkipSilenceAtBeginning=0
|
||||
[Warnings]
|
||||
FirstProjectSave=0
|
||||
MixMono=1
|
||||
MixStereo=0
|
||||
MixUnknownChannels=1
|
||||
MissingExtension=1
|
||||
DropoutDetected=1
|
||||
[Effects]
|
||||
GroupBy=default
|
||||
RealtimeGroupBy=groupby:type:publisher
|
||||
[Effects/NoiseReduction]
|
||||
Sensitivity=6
|
||||
Gain=20
|
||||
AttackTime=0.02
|
||||
ReleaseTime=0.1
|
||||
FreqSmoothing=6
|
||||
OldSensitivity=0
|
||||
ReductionChoice=0
|
||||
WindowTypes=2
|
||||
WindowSize=8
|
||||
StepsPerWindow=1
|
||||
Method=1
|
||||
[ExtendedImport]
|
||||
OverrideExtendedImportByOpenFileDialogChoice=1
|
||||
[Spectrum]
|
||||
ColorScheme=SpecColorNew
|
||||
MaxFreq=20000
|
||||
Algorithm=0
|
||||
EnableSpectralSelection=1
|
||||
ScaleType=2
|
||||
WindowType=3
|
||||
ZeroPaddingFactor=2
|
||||
FFTSize=2048
|
||||
FrequencyGain=0
|
||||
Gain=20
|
||||
Range=80
|
||||
MinFreq=0
|
||||
[Locale]
|
||||
Language=System
|
||||
[QuickPlay]
|
||||
ToolTips=1
|
||||
ScrubbingEnabled=0
|
||||
[Quality]
|
||||
DitherAlgorithmChoice=None
|
||||
LibsoxrHQSampleRateConverterChoice=BestQuality
|
||||
HQDitherAlgorithmChoice=Shaped
|
||||
[MidiIO]
|
||||
Host=ALSA
|
||||
SynthLatency=5
|
||||
PlaybackDevice=ALSA: Midi Through Port-0
|
||||
[WaveTrackMenu]
|
||||
[WaveTrackMenu/SubViews]
|
||||
Extra=WaveColor,SpectrogramSettings
|
||||
[RecentFiles]
|
||||
file01=/home/janek/.local/cache/yay/stretchly-xeruf-git/src/stretchly/app/audio/crystal-glass.wav
|
||||
file01=/home/janek/data/4-media/record/audacity/231013_psalm23.aup3
|
||||
file02=/home/janek/data/2-box/uni/sts-bodywork/231013_psalm23.m4a
|
||||
file03=231014_iridion_einfuehrung.mp4
|
||||
file04=/home/janek/data/4-media/record/2022-07-10 21.54.08 Sing Bathtub.wav
|
||||
file05=/home/janek/data/4-media/record/audacity/231211_taliyah-[ractice.aup3
|
||||
file06=/home/janek/data/2-box/uni/2402_polygon-pitch.aup3
|
||||
file07=/home/janek/data/4-media/record/240220_cloud-server.aup3
|
||||
file08=/home/janek/data/4-media/video/course/voice/240227_oliver-wrapup.opus
|
||||
file09=/home/janek/data/4-media/record/worship/practice/240405_oceans-practice.aup3
|
||||
file10=/home/janek/data/4-media/record/240407_oceans-morning.aup3
|
||||
file11=/home/janek/data/4-media/record/2024-04-25_10-50-37_atieno-therapy.aup3
|
||||
file12=01 Vibration (One More Time).flac
|
||||
[ActiveProjects]
|
||||
[ExportAudioDialog]
|
||||
Format=WAV
|
||||
DefaultPath=/home/janek/data/4-media/record
|
||||
ExportRange=project
|
||||
SkipSilenceAtBeginning=0
|
||||
SplitMode=tracks
|
||||
IncludeAudioBeforeFirstLabel=0
|
||||
SplitNamePolicy=name
|
||||
OverwriteExisting=0
|
||||
|
|
|
@ -2,15 +2,17 @@ test -n "$PS1" || return 0
|
|||
|
||||
which pfetch >/dev/null 2>&1 && pfetch
|
||||
|
||||
alias myip='curl -4 ifconfig.me && printf "\n" && curl -6 ifconfig.me'
|
||||
alias myip='curl -4 ifconfig.me && printf "\n" && curl -6 ifconfig.me && printf "\n"'
|
||||
|
||||
ds() {
|
||||
df -B1M -x tmpfs -x devtmpfs -x squashfs -x overlay |
|
||||
grep -v '\b/[^/ ]*/[^/]*/[^/]*$' |
|
||||
awk -v a="\033[31m" -v b="\033[33m" -v c="\033[35m" -v n="\033[0m" 'NR==1 {printf "%-20s %6s %7s %9s %s\n",$1,$5,$3,$4,$6} NR>1 {u=$5; printf (u > 98) ? a : (u > 96) ? b : (u > 90) ? c : ""; printf "%-20s %6s %6.1fG %8.1fG %s\n",$1,$5,$3/1024,$4/1024,$6; printf n}';
|
||||
df -B1M -x tmpfs -x devtmpfs -x squashfs -x overlay "$@" |
|
||||
grep -v '\b/[^/ ]*/[^/]*/[^/]*$' | # needed for NAS to hide overly long submounts
|
||||
awk -v a="\033[31m" -v b="\033[33m" -v c="\033[35m" -v n="\033[0m" 'NR==1 {printf "%-20s %6s %7s %9s %s\n",$1,$5,$3,$4,$6} NR>1 {u=$5; printf (u > 98) ? a : (u > 96) ? b : (u > 90) ? c : ""; printf "%-20s %6s %6.1fG %8.1fG %s\n",$1,$5,$3/1024,$4/1024,$6; printf n}' |
|
||||
column -t
|
||||
}
|
||||
export -f ds
|
||||
timeout 1s bash -c ds
|
||||
which timeout 2>/dev/null &&
|
||||
export -f ds &&
|
||||
timeout 1s bash -c ds
|
||||
|
||||
test $(id -u) -eq 0 || sudo=sudo
|
||||
|
||||
|
@ -44,10 +46,12 @@ xtrace () {
|
|||
highlight() { echo; echo "[4m$1[0m"; }
|
||||
status() {
|
||||
highlight 'System'
|
||||
df -h -T --exclude-type=tmpfs --exclude-type=devtmpfs --exclude-type=squashfs --exclude-type=overlay
|
||||
ds -T
|
||||
#df -h -T --exclude-type=tmpfs --exclude-type=devtmpfs --exclude-type=squashfs --exclude-type=overlay
|
||||
zfs list -d 0 2>/dev/null
|
||||
free -h
|
||||
sudo certbot certificates 2>/dev/null
|
||||
$sudo certbot certificates 2>/dev/null
|
||||
test $? -eq 1 && local sudo=""
|
||||
|
||||
highlight 'Internet'
|
||||
#--color=always
|
||||
|
@ -61,15 +65,22 @@ status() {
|
|||
$sudo systemctl --no-pager list-units --failed --no-legend || service --status-all
|
||||
echo '== WEBSERVER'
|
||||
{ sudo lsof -i :443 || sudo lsof -i :80; } | head -4
|
||||
sudo lsof -i :22
|
||||
echo
|
||||
if type docker &>/dev/null
|
||||
then
|
||||
echo '== DOCKER'
|
||||
$sudo docker ps || $sudo systemctl status docker
|
||||
$sudo docker ps -n 6 || $sudo systemctl status docker
|
||||
fi
|
||||
if type kubectl &>/dev/null
|
||||
then
|
||||
echo '== KUBERNETES NODE'
|
||||
sudo -E kubectl get nodes -o wide
|
||||
fi
|
||||
}
|
||||
|
||||
disks() {
|
||||
# Find and list disks
|
||||
alldisks() {
|
||||
{
|
||||
sudo df -h -T --exclude-type=tmpfs --exclude-type=devtmpfs --exclude-type=squashfs --exclude-type=overlay
|
||||
sudo blkid
|
||||
|
@ -90,12 +101,12 @@ difr() { diff --color=always --unified=1 --recursive "$@" | less --RAW-CONTROL-C
|
|||
# Copy recursively with rsync
|
||||
alias rc='rsync --recursive --info=progress2,remove,symsafe,flist,del --human-readable --links --hard-links --times'
|
||||
|
||||
export LESS="--RAW-CONTROL-CHARS --ignore-case --LONG-PROMPT --jump-target=5 $(test $(less --version | head -1 | cut -f2 -d' ') -ge 590 && echo --incsearch)"
|
||||
export LESS="--raw-control-chars --ignore-case --LONG-PROMPT --jump-target=5 $(test $(less --version | grep -o '\d\+' | head -1) -ge 590 && echo --incsearch)"
|
||||
|
||||
# ls aliases
|
||||
|
||||
export LS_OPTIONS='--human-readable --si --group-directories-first --dereference-command-line'
|
||||
eval "$(dircolors)"
|
||||
which dircolors 2>/dev/null && eval "$(dircolors)"
|
||||
alias ls='ls --color=auto'
|
||||
alias ll='ls $LS_OPTIONS --file-type -l'
|
||||
alias la='ll --all'
|
||||
|
@ -126,7 +137,7 @@ alias mv='mv -i'
|
|||
|
||||
src() { test -f "$1" && source "$1"; }
|
||||
|
||||
case $(readlink /proc/$$/exe) in (*bash)
|
||||
case $(readlink /proc/$$/exe) in (*bash|"")
|
||||
bind '"\ek":history-search-backward'
|
||||
bind '"\ej":history-search-forward'
|
||||
|
||||
|
@ -134,8 +145,8 @@ shopt -oq posix || src /etc/bash_completion
|
|||
|
||||
# Fancy prompt
|
||||
PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]"
|
||||
PS1="$PS1 \`exitcode=\${?}; if test \$exitcode = 0; then printf '\[\033[01;32m\] :)';"
|
||||
PS1="$PS1 else printf '\[\033[01;31m\]%3d' \$exitcode; fi\`\[\033[00m\]"
|
||||
PS1="${PS1} \`exitcode=\${?}; if test \$exitcode = 0; then printf '\[\033[01;32m\] :)';"
|
||||
PS1="${PS1} else printf '\[\033[01;31m\]%3d' \$exitcode; fi\`\[\033[00m\]"
|
||||
;;
|
||||
(*zsh) setopt sh_word_split;;
|
||||
esac
|
||||
|
@ -143,4 +154,4 @@ esac
|
|||
src /usr/share/git/completion/git-prompt.sh && PS1="$PS1\$(__git_ps1 \" (%s)\")"
|
||||
src $HOME/.config/shell/functions
|
||||
|
||||
PS1="$PS1 \`test \$UID = 0 && printf '#' || printf '$'\` "
|
||||
PS1="${PS1} \`test \$UID = 0 && printf '#' || printf '$'\` "
|
||||
|
|
|
@ -1,7 +1,12 @@
|
|||
set -o pipefail
|
||||
|
||||
alias localip="ip addr show | grep -E '(ens|eth)' | grep -oP '"'(?<=inet\s)\d+(\.\d+){3}'"' | head -1"
|
||||
IP=$(localip)
|
||||
test "$PS1" && IP=$(localip)
|
||||
|
||||
goto() {
|
||||
local dir=$(sudo find /home -maxdepth 3 -name "$1*" | fzf -0 -1)
|
||||
cd "$dir"
|
||||
}
|
||||
|
||||
logs() {
|
||||
if test $# -eq 0
|
||||
|
@ -23,10 +28,12 @@ hestia() {
|
|||
echo '>' sudo "$(which $command)" "$@" >&2
|
||||
export SHELLOPTS
|
||||
sudo --preserve-env=SHELLOPTS timeout 30s $(which $command) "$@"
|
||||
res=$?
|
||||
set +x
|
||||
return $res
|
||||
}
|
||||
|
||||
accessible() {
|
||||
make_accessible() {
|
||||
dir=/home/*/web/$1/public_html
|
||||
sudo chmod -v 755 $dir
|
||||
sudo chown -v :sudo $dir
|
||||
|
@ -112,6 +119,58 @@ list() {
|
|||
fi
|
||||
}
|
||||
|
||||
|
||||
## BILLING scripts for InvoiceNinja
|
||||
|
||||
invoice() {
|
||||
local prefixes='^(d|dp|xe)'
|
||||
if test $# -eq 0
|
||||
then
|
||||
for user in $(list users | grep -E "${prefixes}[0-9]")
|
||||
do userdomains "$user"
|
||||
invoice "$user"
|
||||
echo
|
||||
done
|
||||
return $?
|
||||
fi
|
||||
|
||||
local userid="$1"
|
||||
shift
|
||||
|
||||
local userinfo
|
||||
for username in "$userid" "dp$userid" "xe$userid"
|
||||
do userinfo="$(hestia v-list-user "$username")" && break
|
||||
done
|
||||
local package=$(echo "$userinfo" | grep PACKAGE | cut -d: -f2)
|
||||
local name=$(echo "$userinfo" | grep FULL | cut -d: -f2)
|
||||
|
||||
echo "Client Name,Invoice Number,Item Quantity,Item Cost,Item Notes,Item Product,Item Discount"
|
||||
local prefix="$name,DR$(date +%y%m)-$userid,"
|
||||
for domain
|
||||
do invoiceline "$domain" "$prefix"
|
||||
done
|
||||
for domain in $(list dns-domains "$username")
|
||||
do invoiceline "$domain" "$prefix"
|
||||
done
|
||||
echo "${prefix}12,9,Januar 2025 - Dezember 2025,Webpaket $package,20"
|
||||
# TODO recurring, batch
|
||||
}
|
||||
|
||||
increment_day() {
|
||||
awk -F. '{print $3"-"$2"-"$1}' | xargs -I{} date -d "{} +1 day" "+%d.%m.%Y"
|
||||
}
|
||||
|
||||
invoiceline() {
|
||||
local domain=$1
|
||||
local prefix=$2
|
||||
|
||||
date=$(grep "$domain (" cu_invoicelineitems.csv | grep -v SSL | tail -1 | cut -d\" -f8 | sed -sE 's/.* - (.*)\).*/\1/' | increment_day)
|
||||
datec=$(grep ",$domain," portfolio_domains_2025-01-13.csv | cut -d, -f3 | cut -dT -f1)
|
||||
renew=$(grep ",$domain," domains.csv | cut -d, -f10 || grep ",$domain," portfolio_domains_2025-01-13.csv | cut -d, -f6 | cut -dT -f1)
|
||||
|
||||
echo "${prefix}2,7,$domain (${date:-${datec:-$(date '+%d.%m.%Y')}} - $(date -d "${renew:-+1 year} -1 day" '+%d.%m.%Y')),.de-Domain,0"
|
||||
}
|
||||
|
||||
domain() {
|
||||
if test $# -eq 0
|
||||
then while read -r domain
|
||||
|
@ -120,7 +179,10 @@ domain() {
|
|||
done
|
||||
return $?
|
||||
fi
|
||||
echo
|
||||
|
||||
local color
|
||||
case "$1" in (--color) color=true; shift;; esac
|
||||
|
||||
for domain; do
|
||||
domain=$(echo "$domain" | rev | cut -d. -f-2 | rev)
|
||||
|
||||
|
@ -129,28 +191,79 @@ domain() {
|
|||
contact=$(grep ",$domain," domains.csv | cut -d, -f3 || grep ",$domain," portfolio_domains_2025-01-13.csv | cut -d, -f25)
|
||||
renew=$(grep ",$domain," domains.csv | cut -d, -f10 || grep ",$domain," portfolio_domains_2025-01-13.csv | cut -d, -f6 | cut -dT -f1)
|
||||
iddomain="$(idn2 "$domain")"
|
||||
echo "$(timeout .3s dig +short NS "$iddomain" | sort | head -1 | grep . || echo " ") $(timeout .3s dig +short A "$iddomain" | head -1 | grep . || echo " ") ${date:-C$datec} ${renew:- } $domain $contact"
|
||||
dns="$(timeout .3s dig +short NS "$iddomain" | sort | cut -c-15 | head -1)"
|
||||
dnsa="$(timeout .3s dig +short A "$iddomain" | head -1)"
|
||||
case "$dns" in
|
||||
("") style=3;;
|
||||
("ns1.iridion.it.") style=0;;
|
||||
(*) style=2;;
|
||||
esac
|
||||
if test "$color" || test -t 1
|
||||
then styling="[${style}m [0m"
|
||||
fi
|
||||
printf "%s${dns:- } ${dnsa:- } ${date:-C$datec} ${renew:- } $domain $contact%s\n" $styling
|
||||
#echo "[${style}m${dns:- } $(timeout .3s dig +short A "$iddomain" | head -1 | grep . || echo " ") ${date:-C$datec} ${renew:- } $domain $contact[0m"
|
||||
done
|
||||
}
|
||||
|
||||
domains() {
|
||||
set -o pipefail
|
||||
sudo $HESTIA/bin/v-list-users | tail +3 | grep -v ssh- | while read user
|
||||
do
|
||||
name="$($HESTIA/bin/v-list-user $(echo "$user" | cut -d\ -f1) | grep 'FULL NAME:' | cut -d: -f2)"
|
||||
if test -t 1
|
||||
then echo "$user" | awk '{print "[4m"$3" "$1" '"$(echo $name)"'[0m"}'
|
||||
else echo "$user" | awk '{print "\n"$3" "$1" '"$(echo $name)"'"}' | tr '[a-z]' '[A-Z]'
|
||||
fi
|
||||
sudo $HESTIA/bin/v-list-dns-domains $(echo "$user" | cut -d\ -f1) | tail +3 | while read domain
|
||||
do domain="${domain%% *}"
|
||||
if test $(echo "$domain" | tr -cd '.' | wc -c) -ne 1
|
||||
then #echo "Ignoring invalid DNS-Domain $domain" >&2
|
||||
continue
|
||||
fi
|
||||
domain "$domain"
|
||||
done
|
||||
userdomains() {
|
||||
user="$1"
|
||||
shift
|
||||
#CONTACT: local -A contacts=()
|
||||
name="$("$HESTIA/bin/v-list-user" $(echo "$user" | cut -d\ -f1) | grep 'FULL NAME:' | cut -d: -f2)"
|
||||
if test -t 1 # Avoid special symbols if not a terminal
|
||||
then echo "$user" | awk '{print "[4m"$3" "$1" '"$(echo $name)"'[0m"}'
|
||||
else echo "$user" | awk '{print "\n"$3" "$1" '"$(echo $name)"'"}' | tr '[a-z]' '[A-Z]'
|
||||
fi
|
||||
|
||||
local color=""
|
||||
if test $# -gt 0
|
||||
then
|
||||
for domain
|
||||
do test "$domain" && domain "$domain"
|
||||
done
|
||||
color="--color"
|
||||
fi
|
||||
|
||||
outfile="/tmp/${user}-domains.csv"
|
||||
sudo "$HESTIA/bin/v-list-dns-domains" $(echo "$user" | cut -d\ -f1) | tail +3 | sort | while read domain
|
||||
do domain="${domain%% *}"
|
||||
if test $(echo "$domain" | tr -cd '.' | wc -c) -ne 1
|
||||
then #echo "Ignoring invalid DNS-Domain $domain" >&2
|
||||
continue
|
||||
fi
|
||||
domain $color "$domain"
|
||||
#CONTACT: contact=$(grep ",$domain," domains.csv | cut -d, -f3 || grep ",$domain," portfolio_domains_2025-01-13.csv | cut -d, -f25)
|
||||
#CONTACT: if test -n "$contact" && [[ -z "${contacts["$contact"]}" ]]
|
||||
#CONTACT: then contacts["$contact"]="$contact"
|
||||
#CONTACT: fi
|
||||
done | tee "$outfile"
|
||||
#CONTACT: for contact in "${!contacts[@]}"; do echo "C $contact"; done
|
||||
|
||||
if test $# -eq 0
|
||||
then
|
||||
contacts="$outfile-contacts"
|
||||
cat "$outfile" | rev | cut -d\ -f1 | rev | sort | uniq | grep . > "$contacts"
|
||||
test -s "$contacts" || return
|
||||
echo
|
||||
echo Domains for $(cat "$contacts")
|
||||
domains --file "$contacts"
|
||||
fi
|
||||
}
|
||||
|
||||
# Domains of all users plus list from all providers as of last export
|
||||
# If arg is provided, only from that domain contact
|
||||
domains() {
|
||||
if test $# -gt 0
|
||||
then grep --no-filename "$@" ./portfolio_domains_2025-01-13.csv ./domains.csv |
|
||||
cut -d, -f$(case "$1" in (-*) echo '2-3';; (*) echo '1-3,25';; esac) |
|
||||
sort | column -s, -t
|
||||
return $?
|
||||
fi
|
||||
|
||||
set -o pipefail
|
||||
sudo "$HESTIA/bin/v-list-users" | tail +3 | grep -v ssh- |
|
||||
while read user; do userdomains "$user"; done
|
||||
|
||||
echo
|
||||
if test -t 1
|
||||
|
|
|
@ -17,3 +17,12 @@ lyrics:
|
|||
auto: true
|
||||
sources: genius lrclib
|
||||
synced: yes
|
||||
playlist:
|
||||
relative_to: library
|
||||
playlist_dir: "/home/janek/data/4-media/music/Playlists"
|
||||
smartplaylist:
|
||||
relative_to: "/home/janek/data/4-media/music"
|
||||
playlist_dir: "/home/janek/data/4-media/music/Playlists"
|
||||
playlists:
|
||||
- name: besomorph.m3u
|
||||
query: 'besomorph'
|
||||
|
|
|
@ -1247,6 +1247,18 @@ This is 0.3 red + 0.59 green + 0.11 blue and always between 0 and 255."
|
|||
(ispell-hunspell-add-multi-dic ispell-dictionary)
|
||||
)
|
||||
|
||||
(defun ediff-compare-region-clipboard (begin end)
|
||||
(interactive "r")
|
||||
(save-excursion
|
||||
(let ((selected-region (buffer-substring begin end))
|
||||
(clipboard-buffer (get-buffer-create "*ediff-clipboard*"))
|
||||
(region-buffer (get-buffer-create "*ediff-region*")))
|
||||
(with-current-buffer clipboard-buffer
|
||||
(insert (car kill-ring)))
|
||||
(with-current-buffer region-buffer
|
||||
(insert selected-region))
|
||||
(ediff-buffers clipboard-buffer region-buffer))))
|
||||
|
||||
; uncomment this to exit loading the config prematurely
|
||||
;(with-current-buffer " *load*"
|
||||
; (goto-char (point-max)))
|
||||
|
|
|
@ -21,9 +21,11 @@
|
|||
|
||||
:completion
|
||||
company ; the ultimate code completion backend
|
||||
;;corfu
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
ivy ; a search engine for love and life
|
||||
;;ivy ; a search engine for love and life
|
||||
vertico
|
||||
|
||||
:ui
|
||||
;;deft ; notational velocity for Emacs
|
||||
|
@ -32,9 +34,8 @@
|
|||
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||
;;fill-column ; a `fill-column' indicator
|
||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||
;;hydra
|
||||
indent-guides ; highlighted indent columns
|
||||
;;ligatures ; ligatures and symbols to make your code pretty again
|
||||
ligatures ; ligatures and symbols to make your code pretty again
|
||||
minimap ; show a map of the code on the side
|
||||
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||
nav-flash ; blink cursor line after big motions
|
||||
|
@ -84,7 +85,7 @@
|
|||
|
||||
:tools
|
||||
;;ansible
|
||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||
debugger
|
||||
direnv
|
||||
docker
|
||||
editorconfig ; let someone else argue about tabs vs spaces
|
||||
|
@ -97,8 +98,6 @@
|
|||
make ; run make tasks from Emacs
|
||||
pass ; password manager for nerds
|
||||
pdf ; pdf enhancements
|
||||
;;prodigy ; FIXME managing external services & code builders
|
||||
;;rgb ; creating color strings
|
||||
;;taskrunner ; taskrunner for all your projects
|
||||
;;terraform ; infrastructure as code
|
||||
;;tmux ; an API for interacting with tmux
|
||||
|
|
|
@ -41,4 +41,5 @@
|
|||
(add-to-list 'recentf-list (expand-file-name "5-incubator/download/" user-data-dir))
|
||||
(setq recentf-list (append (list-non-hidden-directories user-data-dir) recentf-list))
|
||||
(setq recentf-keep '(recentf-keep-default-predicate file-remote-p "/ssh:.*"))
|
||||
(recentf-cleanup)
|
||||
)
|
||||
|
|
|
@ -9,6 +9,7 @@ matches:
|
|||
cmd: env
|
||||
shell: bash
|
||||
debug: true
|
||||
|
||||
# {{{1 EMAILS
|
||||
- trigger: ";ep"
|
||||
replace: "{{output}}"
|
||||
|
@ -148,8 +149,16 @@ matches:
|
|||
type: shell
|
||||
params:
|
||||
cmd: pass info/banking/dkb | head -1
|
||||
|
||||
# {{{1 EXTRAS
|
||||
# TODO turn into emacs template
|
||||
- trigger: ";gref"
|
||||
replace: "{{output}}"
|
||||
vars:
|
||||
- name: output
|
||||
type: shell
|
||||
params:
|
||||
cmd: pass business/ftt/signature
|
||||
- trigger: ";sigo"
|
||||
replace: |-
|
||||
#+ATTR_ORG: :width 200
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
[General]
|
||||
DiskFolders=@Variant(\0\0\0\t\0\0\0\x1\0\0\0\n\0\0\0\x16\0/\0h\0o\0m\0\x65\0/\0j\0\x61\0n\0\x65\0k)
|
||||
Geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\b\xcf\0\0\x5\xc1\0\0\0\0\0\0\0\0\0\0\x4\x14\0\0\x2\xe4\0\0\0\0\x2\0\0\0\b\xd0\0\0\0\0\0\0\0\0\0\0\b\xcf\0\0\x5\xc1)
|
||||
HorizontalScrollBarValue=1206
|
||||
Geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x4g\0\0\x2\xd1\0\0\0\0\0\0\0\0\0\0\x4\x14\0\0\x2\xe4\0\0\0\0\x2\0\0\0\x4h\0\0\0\0\0\0\0\0\0\0\x4g\0\0\x2\xd1)
|
||||
HorizontalScrollBarValue=1454
|
||||
LastBPM=0
|
||||
ShowKeyboard=true
|
||||
ShowMeters=true
|
||||
ShowSidePanel=true
|
||||
ShowToolbar=true
|
||||
VerticalScrollBarValue=936
|
||||
VerticalScrollBarValue=1129
|
||||
|
||||
[Canvas]
|
||||
Antialiasing=1
|
||||
AutoHideGroups=true
|
||||
AutoSelectItems=false
|
||||
EyeCandy2=true
|
||||
FancyEyeCandy=false
|
||||
FancyEyeCandy=true
|
||||
FullRepaints=false
|
||||
HQAntialiasing=false
|
||||
InlineDisplays=false
|
||||
Size=3100x2400
|
||||
Theme=Modern Dark
|
||||
UseBezierLines=true
|
||||
UseOpenGL=false
|
||||
UseOpenGL=true
|
||||
|
||||
[Engine]
|
||||
AudioDriver=JACK
|
||||
|
@ -30,10 +30,10 @@ ManageUIs=true
|
|||
MaxParameters=200
|
||||
PreferPluginBridges=false
|
||||
PreferUiBridges=true
|
||||
ProcessMode=1
|
||||
ProcessMode=2
|
||||
ResetXruns=false
|
||||
TransportExtra=
|
||||
TransportMode=2
|
||||
TransportMode=1
|
||||
UIsAlwaysOnTop=false
|
||||
UiBridgesTimeout=4000
|
||||
|
||||
|
@ -49,7 +49,7 @@ WineBridges=true
|
|||
ClassicSkin=false
|
||||
ConfirmExit=true
|
||||
Experimental=true
|
||||
ProThemeColor=System
|
||||
ProThemeColor=Black
|
||||
ProjectFolder=/home/janek/data/4-media/sound/carla
|
||||
RefreshInterval=20
|
||||
ShowLogs=true
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[PluginDatabase]
|
||||
Geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\x4\0\0\0\0\0\0\x4O\0\0\x2\xaa\0\0\0\x4\0\0\0\0\0\0\x4O\0\0\x2\xaa\0\0\0\0\0\0\0\0\x4h\0\0\0\x4\0\0\0\0\0\0\x4O\0\0\x2\xaa)
|
||||
SearchText=
|
||||
Geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x4K\0\0\x2\xaa\0\0\0\0\0\0\0\0\0\0\x4K\0\0\x2\xaa\0\0\0\0\0\0\0\0\x4h\0\0\0\0\0\0\0\0\0\0\x4K\0\0\x2\xaa)
|
||||
SearchText=delay
|
||||
ShowAU=false
|
||||
ShowBridged=true
|
||||
ShowBridgedWine=true
|
||||
|
|
File diff suppressed because one or more lines are too long
3
.config/fwledmatrix/combos
Normal file
3
.config/fwledmatrix/combos
Normal file
|
@ -0,0 +1,3 @@
|
|||
AAAAB
|
||||
AAAAF
|
||||
AAABB
|
|
@ -148,7 +148,7 @@
|
|||
cme = commit -v --edit --message # Commit with message from CLI but edit it
|
||||
cad = !git diff-tree --no-commit-id --name-only -r HEAD | git commit -v --amend --pathspec-from-file=- # Amend commit with all already changed files
|
||||
cap = !git commit --amend --no-edit && git push --force-with-lease
|
||||
journal = !command git -C $DATA commit -v $DATA/2-box/journal*
|
||||
journal = !command git -C $DATA commit -v -m "box/journal: " --edit $DATA/2-box/journal* $DATA/2-box/messages*
|
||||
|
||||
cp = cherry-pick
|
||||
cpc = cherry-pick --continue
|
||||
|
|
|
@ -10,9 +10,8 @@ encrypt: false
|
|||
highlight: true
|
||||
indent_character: '|'
|
||||
journals:
|
||||
default: ~/data/2-box/journal/jrnl.txt
|
||||
tug: ~/data/2-box/journal/tug.txt
|
||||
intentions: ~/data/2-box/journal/intentions.txt
|
||||
default: ~/data/2-box/journal/jrnl.jrnl
|
||||
nug: ~/data/2-box/journal/nug.jrnl
|
||||
linewrap: 99
|
||||
tagsymbols: '@'
|
||||
template: false
|
||||
|
|
9
.config/k9s/aliases.yaml
Normal file
9
.config/k9s/aliases.yaml
Normal file
|
@ -0,0 +1,9 @@
|
|||
aliases:
|
||||
dp: deployments
|
||||
sec: v1/secrets
|
||||
jo: jobs
|
||||
cr: clusterroles
|
||||
crb: clusterrolebindings
|
||||
ro: roles
|
||||
rb: rolebindings
|
||||
np: networkpolicies
|
41
.config/k9s/config.yaml
Normal file
41
.config/k9s/config.yaml
Normal file
|
@ -0,0 +1,41 @@
|
|||
k9s:
|
||||
liveViewAutoRefresh: false
|
||||
screenDumpDir: /home/janek/.local/state/k9s/screen-dumps
|
||||
refreshRate: 2
|
||||
maxConnRetry: 5
|
||||
readOnly: false
|
||||
noExitOnCtrlC: false
|
||||
ui:
|
||||
enableMouse: false
|
||||
headless: false
|
||||
logoless: false
|
||||
crumbsless: false
|
||||
reactive: false
|
||||
noIcons: false
|
||||
skipLatestRevCheck: false
|
||||
disablePodCounting: false
|
||||
shellPod:
|
||||
image: busybox:1.35.0
|
||||
namespace: default
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
imageScans:
|
||||
enable: false
|
||||
exclusions:
|
||||
namespaces: []
|
||||
labels: {}
|
||||
logger:
|
||||
tail: 100
|
||||
buffer: 5000
|
||||
sinceSeconds: -1
|
||||
fullScreen: false
|
||||
textWrap: false
|
||||
showTime: false
|
||||
thresholds:
|
||||
cpu:
|
||||
critical: 90
|
||||
warn: 70
|
||||
memory:
|
||||
critical: 90
|
||||
warn: 70
|
56
.config/k9s/config.yml
Normal file
56
.config/k9s/config.yml
Normal file
|
@ -0,0 +1,56 @@
|
|||
k9s:
|
||||
liveViewAutoRefresh: false
|
||||
refreshRate: 2
|
||||
maxConnRetry: 5
|
||||
enableMouse: false
|
||||
enableImageScan: false
|
||||
headless: false
|
||||
logoless: false
|
||||
crumbsless: false
|
||||
readOnly: false
|
||||
noExitOnCtrlC: false
|
||||
noIcons: false
|
||||
shellPod:
|
||||
image: busybox:1.35.0
|
||||
namespace: default
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
skipLatestRevCheck: false
|
||||
logger:
|
||||
tail: 100
|
||||
buffer: 5000
|
||||
sinceSeconds: 300
|
||||
fullScreenLogs: false
|
||||
textWrap: false
|
||||
showTime: false
|
||||
currentContext: ftt.gmbh
|
||||
currentCluster: ftt.gmbh
|
||||
keepMissingClusters: false
|
||||
clusters:
|
||||
ftt.gmbh:
|
||||
namespace:
|
||||
active: all
|
||||
lockFavorites: false
|
||||
favorites:
|
||||
- stackspin
|
||||
- stackspin-apps
|
||||
- flux-system
|
||||
- velero
|
||||
- stackspout
|
||||
- all
|
||||
- default
|
||||
view:
|
||||
active: pod
|
||||
featureGates:
|
||||
nodeShell: false
|
||||
portForwardAddress: localhost
|
||||
thresholds:
|
||||
cpu:
|
||||
critical: 90
|
||||
warn: 70
|
||||
memory:
|
||||
critical: 90
|
||||
warn: 70
|
||||
screenDumpDir: /tmp/k9s-screens-janek
|
||||
disablePodCounting: false
|
99
.config/k9s/plugin.yml
Executable file
99
.config/k9s/plugin.yml
Executable file
|
@ -0,0 +1,99 @@
|
|||
# https://github.com/derailed/k9s/blob/master/plugins/flux.yaml
|
||||
# move selected line to chosen resource in K9s, then:
|
||||
# Shift-T (with confirmation) to toggle helm releases or kustomizations suspend and resume
|
||||
# Shift-R (no confirmation) to reconcile a git source or a helm release or a kustomization
|
||||
plugin:
|
||||
|
||||
toggle-helmrelease:
|
||||
shortCut: Shift-T
|
||||
confirm: true
|
||||
scopes:
|
||||
- helmreleases
|
||||
description: Toggle to suspend or resume a HelmRelease
|
||||
command: sh
|
||||
background: true
|
||||
args:
|
||||
- -c
|
||||
- "flux $([ $(kubectl get helmreleases -n $NAMESPACE $NAME -o=custom-columns=TYPE:.spec.suspend | tail -1) = \"true\" ] && echo \"resume\" || echo \"suspend\") helmrelease -n $NAMESPACE $NAME | less"
|
||||
|
||||
toggle-kustomization:
|
||||
shortCut: Shift-T
|
||||
confirm: true
|
||||
scopes:
|
||||
- kustomizations
|
||||
description: Toggle to suspend or resume a Kustomization
|
||||
command: sh
|
||||
background: true
|
||||
args:
|
||||
- -c
|
||||
- "flux $([ $(kubectl get kustomizations -n $NAMESPACE $NAME -o=custom-columns=TYPE:.spec.suspend | tail -1) = \"true\" ] && echo \"resume\" || echo \"suspend\") kustomization -n $NAMESPACE $NAME | less"
|
||||
|
||||
reconcile-git:
|
||||
shortCut: Shift-R
|
||||
confirm: false
|
||||
description: Flux reconcile
|
||||
scopes:
|
||||
- gitrepositories
|
||||
command: sh
|
||||
# background: false
|
||||
background: true
|
||||
args:
|
||||
- -c
|
||||
- "flux reconcile source git -n $NAMESPACE $NAME | less"
|
||||
|
||||
reconcile-hr:
|
||||
shortCut: Shift-R
|
||||
confirm: false
|
||||
description: Flux reconcile
|
||||
scopes:
|
||||
- helmreleases
|
||||
command: sh
|
||||
# background: false
|
||||
background: true
|
||||
args:
|
||||
- -c
|
||||
- "flux reconcile helmrelease -n $NAMESPACE $NAME | less"
|
||||
|
||||
reconcile-ks:
|
||||
shortCut: Shift-R
|
||||
confirm: false
|
||||
description: Flux reconcile
|
||||
scopes:
|
||||
- kustomizations
|
||||
command: sh
|
||||
# background: false
|
||||
background: true
|
||||
args:
|
||||
- -c
|
||||
- "flux reconcile kustomization -n $NAMESPACE $NAME | less"
|
||||
|
||||
getall-ns:
|
||||
shortCut: Shift-G
|
||||
confirm: false
|
||||
description: Get All Resources in NS
|
||||
scopes:
|
||||
- namespaces
|
||||
command: sh
|
||||
background: false
|
||||
args:
|
||||
- -c
|
||||
- "kubectl get all -n $NAME | less"
|
||||
|
||||
# https://github.com/derailed/k9s/issues/1017#issuecomment-769005253
|
||||
# requires https://github.com/rajatjindal/kubectl-modify-secret installed
|
||||
# i.e. by krew install modify-secret
|
||||
edit-secret:
|
||||
shortCut: Ctrl-X
|
||||
confirm: false
|
||||
description: "Edit Decoded Secret"
|
||||
scopes:
|
||||
- secrets
|
||||
command: kubectl
|
||||
background: false
|
||||
args:
|
||||
- modify-secret
|
||||
- --namespace
|
||||
- $NAMESPACE
|
||||
- --context
|
||||
- $CONTEXT
|
||||
- $NAME
|
|
@ -10,5 +10,8 @@ visual_bell_duration 0.2
|
|||
visual_bell_color #222
|
||||
window_alert_on_bell yes
|
||||
|
||||
font_size 20
|
||||
|
||||
include pager.conf
|
||||
include local.conf
|
||||
include theme.conf
|
||||
|
|
44
.config/mako/config
Normal file
44
.config/mako/config
Normal file
|
@ -0,0 +1,44 @@
|
|||
default-timeout=8000
|
||||
sort=-time
|
||||
history=1
|
||||
max-history=20
|
||||
|
||||
width=400
|
||||
height=200
|
||||
padding=10
|
||||
margin=10
|
||||
|
||||
anchor=bottom-right
|
||||
layer=overlay
|
||||
background-color=#141a1b88
|
||||
text-color=#ffffffcc
|
||||
|
||||
border-size=3
|
||||
border-color=#88c0d0
|
||||
border-radius=15
|
||||
|
||||
#font=monospace 14
|
||||
font=16
|
||||
icons=1
|
||||
icon-location=right
|
||||
max-icon-size=64
|
||||
|
||||
[urgency=low]
|
||||
border-color=#cccccc
|
||||
|
||||
[urgency=normal]
|
||||
border-color=#d08770
|
||||
|
||||
[urgency=high]
|
||||
border-color=#bf616a
|
||||
text-color=#ffffffff
|
||||
default-timeout=0
|
||||
|
||||
[category=mpd]
|
||||
default-timeout=2000
|
||||
group-by=category
|
||||
|
||||
[mode=do-not-disturb urgency=low]
|
||||
invisible=1
|
||||
[mode=do-not-disturb urgency=normal]
|
||||
invisible=1
|
|
@ -22,13 +22,13 @@ application/x-java-archive=java-2.desktop;
|
|||
application/x-ms-shortcut=firefox.desktop;
|
||||
application/x-mswinurl=firefox.desktop;
|
||||
application/xhtml+xml=firefox.desktop;
|
||||
application/zip=org.kde.ark.desktop;
|
||||
application/zip=java-java17-openjdk.desktop
|
||||
audio/flac=mpc.desktop;
|
||||
audio/mp4=mpc.desktop;
|
||||
audio/mpeg=mpc.desktop;
|
||||
audio/x-wav=mpc.desktop;
|
||||
image/jpeg=org.kde.showfoto.desktop;
|
||||
image/png=org.kde.showfoto.desktop;
|
||||
image/jpeg=com.interversehq.qView.desktop
|
||||
image/png=vimiv.desktop
|
||||
inode/directory=pcmanfm.desktop;
|
||||
text/html=firefox.desktop;
|
||||
x-scheme-handler/discord-757737740241731714=discord-757737740241731714.desktop;
|
||||
|
@ -36,6 +36,7 @@ x-scheme-handler/etcher=balena-etcher.desktop
|
|||
x-scheme-handler/ferdi=ferdi.desktop
|
||||
x-scheme-handler/http=firefox.desktop;
|
||||
x-scheme-handler/https=firefox.desktop;
|
||||
x-scheme-handler/mailto=mailto-handler.desktop;
|
||||
x-scheme-handler/jitsi-meet=Jitsi Meet.desktop;
|
||||
x-scheme-handler/org-protocol=org-protocol.desktop;
|
||||
x-scheme-handler/sgnl=signal-desktop.desktop;
|
||||
|
@ -47,3 +48,8 @@ video/x-m4v=vlc.desktop
|
|||
text/vcard=emacs.desktop
|
||||
text/plain=emacs.desktop
|
||||
image/webp=com.interversehq.qView.desktop
|
||||
audio/ogg=mpc.desktop
|
||||
application/vnd.microsoft.portable-executable=wine.desktop
|
||||
image/x-xcf=gimp.desktop
|
||||
video/webm=vlc.desktop
|
||||
text/csv=emacsclient.desktop
|
||||
|
|
|
@ -21,6 +21,7 @@ let g:firenvim_config = {
|
|||
\ '://wiki\..*': { 'priority': 9, 'takeover': 'never', },
|
||||
\ '.*openstreetmap\.org.*': { 'priority': 9, 'takeover': 'once', },
|
||||
\ '.*openstreetmap\.de.*': { 'priority': 9, 'takeover': 'once', },
|
||||
\ '.*leonardo\.ai.*': { 'priority': 9, 'takeover': 'never', },
|
||||
\
|
||||
\ '.*mail.*': { 'priority': 9, 'takeover': 'once', },
|
||||
\ '.*church\.tools.*': { 'priority': 9, 'takeover': 'empty', },
|
||||
|
@ -39,6 +40,7 @@ let g:firenvim_config = {
|
|||
\ '.*contacts\.google\.com.*': { 'priority': 9, 'takeover': 'never', },
|
||||
\ '.*cloud\.atomtoast\.xyz.*': { 'priority': 9, 'takeover': 'never', },
|
||||
\ '://notion\.so.*': { 'priority': 9, 'takeover': 'never', },
|
||||
\ '://www.notion\.so.*': { 'priority': 9, 'takeover': 'never', },
|
||||
\ '://bbb\..*': { 'priority': 9, 'takeover': 'never', },
|
||||
\ '://bigbluebutton.*': { 'priority': 9, 'takeover': 'never', },
|
||||
\ '://dhall-lang.org.*': { 'priority': 9, 'takeover': 'never', },
|
||||
|
|
|
@ -55,7 +55,9 @@ Plug 'mhinz/vim-signify' " VCS info on the left
|
|||
Plug 'tpope/vim-fugitive' " Difftool usage
|
||||
Plug 'xeruf/vim-fossil'
|
||||
Plug 'austintraver/vim-jrnl'
|
||||
Plug 'weinshec/vim-dictcc' " TODO do not hang without internet
|
||||
if has('python3')
|
||||
Plug 'weinshec/vim-dictcc' " TODO do not hang without internet
|
||||
endif
|
||||
Plug 'glacambre/firenvim', { 'do': { _ -> firenvim#install(0) } }
|
||||
Plug 'mipmip/vim-scimark' " Edit markdown tables with sc-im
|
||||
Plug 'alx741/vinfo'
|
||||
|
|
|
@ -52,4 +52,5 @@ Theme; Ambiente
|
|||
Minecraft; Theme; Liquid
|
||||
Classique
|
||||
Film
|
||||
Indie; Canto
|
||||
Indie; Canto
|
||||
Jazz, Gospel
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"info": {
|
||||
"version": "30"
|
||||
"version": "33"
|
||||
},
|
||||
"shortcuts": {
|
||||
"__dirpath/album/track": "Alt+Meta+1"
|
||||
|
@ -17,7 +17,6 @@
|
|||
"&Play",
|
||||
"separator",
|
||||
"&Delete",
|
||||
"Delete &Without Confirmation",
|
||||
"separator",
|
||||
"&Refresh",
|
||||
"Refresh &Selected",
|
||||
|
@ -175,4 +174,4 @@
|
|||
"Field &Sort"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
},
|
||||
"main": {
|
||||
"lang": "auto",
|
||||
"lastfolder": "/home/janek/data/4-media/music",
|
||||
"lastfolder": "/home/janek/data/4-media/music/Electronic/Defqwop",
|
||||
"maximized": true
|
||||
},
|
||||
"playlist": {
|
||||
|
@ -45,9 +45,9 @@
|
|||
"fontsize": 10,
|
||||
"rowsize": 43,
|
||||
"sort_fields": [
|
||||
"__path"
|
||||
"album"
|
||||
],
|
||||
"sort_reverse": false
|
||||
"sort_reverse": true
|
||||
},
|
||||
"extendedtags": {
|
||||
"add": [
|
||||
|
@ -92,7 +92,8 @@
|
|||
"BPM",
|
||||
"Comment",
|
||||
"Tags",
|
||||
"Dirpath"
|
||||
"Dirpath",
|
||||
"Label"
|
||||
],
|
||||
"tags": [
|
||||
"__path",
|
||||
|
@ -109,7 +110,8 @@
|
|||
"bpm",
|
||||
"comment",
|
||||
"version",
|
||||
"__dirpath"
|
||||
"__dirpath",
|
||||
"label"
|
||||
]
|
||||
},
|
||||
"editor": {
|
||||
|
@ -124,7 +126,7 @@
|
|||
"%artist% - %track% - %title%",
|
||||
"%artist% - %album% - %track% - %title%"
|
||||
],
|
||||
"index": 0
|
||||
"index": 4
|
||||
},
|
||||
"functions": {
|
||||
"last_used": "remove_dupes"
|
||||
|
@ -132,8 +134,7 @@
|
|||
"actions": {
|
||||
"checked": [
|
||||
"Standard",
|
||||
"Genre Splitting",
|
||||
"Genre: Christian"
|
||||
"Genre Splitting"
|
||||
]
|
||||
},
|
||||
"quick_actions": {
|
||||
|
@ -141,4 +142,4 @@
|
|||
"Genre: Christian"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,16 +1,20 @@
|
|||
{
|
||||
"info": {
|
||||
"version": "33"
|
||||
},
|
||||
"shortcut13": {
|
||||
"name": "&Text File->Tag",
|
||||
"command": "text_file_to_tag",
|
||||
"control": "mainwin",
|
||||
"enabled": "filesselected",
|
||||
"icon": ":/text-tag.png"
|
||||
"icon_name": "puddletag.textfiletotag"
|
||||
},
|
||||
"shortcut12": {
|
||||
"name": "&Format",
|
||||
"command": "format",
|
||||
"control": "mainwin",
|
||||
"enabled": "filesselected",
|
||||
"tooltip": "Format the selected field(s) using the pattern.",
|
||||
"status": "formatstatus"
|
||||
},
|
||||
"shortcut52": {
|
||||
|
@ -53,7 +57,7 @@
|
|||
},
|
||||
"shortcut10": {
|
||||
"name": "Autonumbering &Wizard...",
|
||||
"icon": ":/track.png",
|
||||
"icon_name": "puddletag.autonumber",
|
||||
"command": "auto_numbering",
|
||||
"control": "mainwin",
|
||||
"enabled": "filesselected",
|
||||
|
@ -70,16 +74,14 @@
|
|||
"command": "openPrefs",
|
||||
"control": "mainwin",
|
||||
"enabled": "always",
|
||||
"icon": ":/preferences.png",
|
||||
"icon_name": "configure"
|
||||
},
|
||||
"shortcut15": {
|
||||
"name": "&Actions",
|
||||
"command": "run_action",
|
||||
"icon": ":/action.png",
|
||||
"control": "mainwin",
|
||||
"enabled": "filesselected",
|
||||
"icon_name": "keith"
|
||||
"icon_name": "quickopen"
|
||||
},
|
||||
"shortcut14": {
|
||||
"name": "&Import Music Library...",
|
||||
|
@ -96,7 +98,6 @@
|
|||
"Shift+Ins"
|
||||
],
|
||||
"enabled": "filesselected",
|
||||
"icon": ":/paste.png",
|
||||
"icon_name": "edit-paste"
|
||||
},
|
||||
"shortcut30": {
|
||||
|
@ -105,14 +106,14 @@
|
|||
"control": "mainwin",
|
||||
"shortcut": "Ctrl+C",
|
||||
"enabled": "filesselected",
|
||||
"icon": ":/copy.png"
|
||||
"icon_name": "edit-copy"
|
||||
},
|
||||
"shortcut19": {
|
||||
"name": "&Rename Directories",
|
||||
"command": "rename_dirs",
|
||||
"control": "mainwin",
|
||||
"enabled": "filesselected",
|
||||
"icon": ":/renamedirs.png",
|
||||
"icon_name": "puddletag.renamedirs",
|
||||
"status": "renamedirstatus"
|
||||
},
|
||||
"shortcut18": {
|
||||
|
@ -120,7 +121,7 @@
|
|||
"command": "run_quick_action",
|
||||
"control": "mainwin",
|
||||
"enabled": "filesselected",
|
||||
"icon": ":/quickaction.png"
|
||||
"icon_name": "quickopen-function"
|
||||
},
|
||||
"shortcut35": {
|
||||
"name": "&Properties",
|
||||
|
@ -133,7 +134,6 @@
|
|||
"command": "deleteSelected",
|
||||
"control": "table",
|
||||
"shortcut": "Del",
|
||||
"icon": ":/remove.png",
|
||||
"enabled": "filesselected",
|
||||
"icon_name": "edit-delete"
|
||||
},
|
||||
|
@ -143,16 +143,12 @@
|
|||
"control": "mainwin",
|
||||
"enabled": "filesselected"
|
||||
},
|
||||
"info": {
|
||||
"version": "29"
|
||||
},
|
||||
"shortcut9": {
|
||||
"name": "&Undo",
|
||||
"shortcut": "Ctrl+Z",
|
||||
"command": "undo",
|
||||
"control": "table",
|
||||
"enabled": "enableUndo",
|
||||
"icon": ":/undo.png",
|
||||
"icon_name": "edit-undo"
|
||||
},
|
||||
"shortcut8": {
|
||||
|
@ -160,14 +156,13 @@
|
|||
"shortcut": "Ctrl+T",
|
||||
"command": "filename_to_tag",
|
||||
"control": "mainwin",
|
||||
"icon": ":/filetotag.png",
|
||||
"icon_name": "puddletag.filetotag",
|
||||
"enabled": "filesselected",
|
||||
"tooltip": "Convert filename to tag using the pattern.",
|
||||
"tooltip": "Update the selected files from their filename using the pattern.",
|
||||
"status": "ftstatus"
|
||||
},
|
||||
"shortcut3": {
|
||||
"name": "Load &playlist",
|
||||
"icon": ":/playlist.png",
|
||||
"control": "mainwin",
|
||||
"command": "loadPlayList",
|
||||
"enabled": "always",
|
||||
|
@ -176,7 +171,6 @@
|
|||
},
|
||||
"shortcut2": {
|
||||
"name": "&Add Folder",
|
||||
"icon": ":/addfolder.png",
|
||||
"control": "mainwin",
|
||||
"command": "appendDir",
|
||||
"enabled": "filesloaded",
|
||||
|
@ -185,7 +179,6 @@
|
|||
},
|
||||
"shortcut1": {
|
||||
"name": "&Open Folder",
|
||||
"icon": ":/open.png",
|
||||
"control": "mainwin",
|
||||
"command": "openDir",
|
||||
"enabled": "always",
|
||||
|
@ -207,7 +200,6 @@
|
|||
"control": "Tag Panel",
|
||||
"command": "save",
|
||||
"shortcut": "Ctrl+S",
|
||||
"icon": ":/save.png",
|
||||
"enabled": "filesselected",
|
||||
"icon_name": "document-save"
|
||||
},
|
||||
|
@ -217,7 +209,6 @@
|
|||
"command": "reloadFiles",
|
||||
"shortcut": "F5",
|
||||
"tooltip": "Refresh current file-view.",
|
||||
"icon": ":/reload.png",
|
||||
"enabled": "filesloaded",
|
||||
"icon_name": "view-refresh"
|
||||
},
|
||||
|
@ -255,7 +246,6 @@
|
|||
"command": "removeTags",
|
||||
"control": "table",
|
||||
"shortcut": "Ctrl+R",
|
||||
"icon": ":/remove.png",
|
||||
"enabled": "filesselected",
|
||||
"icon_name": "edit-delete"
|
||||
},
|
||||
|
@ -266,14 +256,6 @@
|
|||
"enabled": "filesselected",
|
||||
"shortcut": "Ctrl+Shift+C"
|
||||
},
|
||||
"shortcut41": {
|
||||
"name": "Delete &Without Confirmation",
|
||||
"command": "deleteSelectedWithoutMessage",
|
||||
"control": "table",
|
||||
"enabled": "filesselected",
|
||||
"shortcut": "Shift+Delete",
|
||||
"icon_name": "edit-delete"
|
||||
},
|
||||
"shortcut42": {
|
||||
"name": "In &Library",
|
||||
"command": "in_lib",
|
||||
|
@ -322,7 +304,6 @@
|
|||
"control": "mainwin",
|
||||
"shortcut": "Ctrl+X",
|
||||
"enabled": "filesselected",
|
||||
"icon": ":/cut.png",
|
||||
"icon_name": "edit-cut"
|
||||
},
|
||||
"shortcut23": {
|
||||
|
@ -334,7 +315,6 @@
|
|||
},
|
||||
"shortcut20": {
|
||||
"name": "&Exit",
|
||||
"icon": ":/remove.png",
|
||||
"control": "mainwin",
|
||||
"enabled": "always",
|
||||
"command": "close",
|
||||
|
@ -347,7 +327,8 @@
|
|||
"enabled": "filesselected",
|
||||
"command": "tag_to_file",
|
||||
"shortcut": "Ctrl+F",
|
||||
"icon": ":/tagtofile.png",
|
||||
"icon_name": "puddletag.tagtofile",
|
||||
"tooltip": "Rename the selected files using the pattern.",
|
||||
"status": "tfstatus"
|
||||
},
|
||||
"shortcut26": {
|
||||
|
@ -384,6 +365,6 @@
|
|||
"control": "Filesystem",
|
||||
"enabled": "filesselected",
|
||||
"tooltip": "Focuses the current file's parent folder in the Filesystem view",
|
||||
"icon": ":/target.png"
|
||||
"icon_name": "view-sidetree"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
],
|
||||
"useragent": "puddletag/1.0.5",
|
||||
"track_bound": 80,
|
||||
"lastsource": "AcoustID"
|
||||
"lastsource": "Amazon"
|
||||
},
|
||||
"tagsourcetags": {
|
||||
"MusicBrainz": [],
|
||||
|
|
|
@ -8,10 +8,10 @@ alias yau='sudo systemctl start --show-transaction reflector && noglob yay'
|
|||
alias yays='noglob yay -Sy --needed --noprovides'
|
||||
alias yayr='noglob yay -R --cascade --recursive'
|
||||
|
||||
_yayre_params="-S --rebuild --noprovides --nodiffmenu --noconfirm"
|
||||
_yayre_params="-S --rebuild --answerdiff NotInstalled --noconfirm"
|
||||
# Reinstall given packages with all dependencies - https://www.reddit.com/r/archlinux/comments/33cety
|
||||
yayre() {
|
||||
yay $(echo $_yayre_params) --asdeps $(yay -Si "$@" | grep Depends | cut -d':' -f2) &&
|
||||
yay $(echo $_yayre_params) --asdeps $(COLUMNS=1 yay -Si "$@" | grep Depends | cut -d':' -f2) &&
|
||||
yay $(echo $_yayre_params) "$@"
|
||||
}
|
||||
|
||||
|
@ -21,7 +21,7 @@ yzf() {
|
|||
shift
|
||||
sed "s/ /\t/g" |
|
||||
fzf --nth=$pos --multi --history="${FZF_HISTDIR:-$XDG_STATE_HOME/fzf}/history-yzf$pos" \
|
||||
--preview-window=60%,border-left \
|
||||
--preview-window=60%,border-left,wrap \
|
||||
--bind="alt-bspace:clear-query,double-click:execute(xdg-open 'https://archlinux.org/packages/{$pos}'),alt-enter:execute(xdg-open 'https://aur.archlinux.org/packages?K={$pos}&SB=p&SO=d&PP=100')" \
|
||||
"$@" | cut -f$pos | xargs
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ yas() {
|
|||
)
|
||||
if test -n "$pkg"
|
||||
then echo "Installing $pkg..."
|
||||
cmd="yay -S --batchinstall --rebuildall $pkg"
|
||||
cmd="yay -S --batchinstall --rebuildall --rebuildtree --rebuild $pkg"
|
||||
print -s $cmd
|
||||
eval "$cmd"
|
||||
rehash
|
||||
|
|
|
@ -40,6 +40,7 @@ cd() {
|
|||
dir=$(fd --no-ignore --glob "$1*" "$DATA" "$MNT" --maxdepth 2 --type d --max-results 1 2>/dev/null)
|
||||
test -n "$dir" && cd "$dir"
|
||||
else
|
||||
local LS=$(which gls 2>/dev/null || ls)
|
||||
builtin cd "$@" &&
|
||||
# we have to use two ls commands here, since:
|
||||
# - a single ls command hangs on multi-column formats when combined with color
|
||||
|
@ -47,9 +48,9 @@ cd() {
|
|||
# column --fillrows --output-width $(expr $COLUMNS + 20)
|
||||
# pr -4 -l1 -W $COLUMNS -S" "
|
||||
# TODO test whether still needed with exa
|
||||
command ls --sort=none --quote-name |
|
||||
command $LS --sort=none --quote-name |
|
||||
head -12 |
|
||||
COLUMNS=$(tput cols) xargs $(which exa >/dev/null 2>&1 && echo "exa --list-dirs --icons --reverse" || echo 'ls --format=vertical --literal --classify --directory') --sort=time --color=always -- |
|
||||
COLUMNS=$(tput cols) xargs $(which exa >/dev/null 2>&1 && echo "exa --list-dirs --icons --reverse" || echo "$LS --format=vertical --literal --classify --directory") --sort=time --color=always -- |
|
||||
head -3
|
||||
code=$? && test $code -eq 141 || return $code
|
||||
fi
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
if test "$ZSH_NAME" = "zsh"
|
||||
then
|
||||
alias -g ___='"$(eval "$(fc -ln -1)" | tail -n 1)"'
|
||||
alias -g B="| xargs bat"
|
||||
alias -g XB="| xargs bat"
|
||||
alias -g G="| grp"
|
||||
alias -g X="| xargs -d '\n' -L 1"
|
||||
alias -g X1="| xargs -d '\n' -n 1"
|
||||
|
@ -53,6 +53,12 @@ unalias diff 2>/dev/null
|
|||
# Alias on some systems?
|
||||
unalias rd 2>/dev/null
|
||||
|
||||
alias ai='aichat --session'
|
||||
alias ky='aichat --role swahili'
|
||||
alias en='aichat --role en'
|
||||
alias aish='aichat --role shell --session'
|
||||
alias write='aichat --role write --save-session --session'
|
||||
|
||||
# System help {{{1
|
||||
|
||||
compdef tldr=man
|
||||
|
@ -86,7 +92,9 @@ xtrace() {
|
|||
}
|
||||
|
||||
retry() {
|
||||
while ! "$@"; do sleep 2; done
|
||||
duration=2
|
||||
case "$1" in ([0-9]|[0-9][0-9]) duration=$1; shift;; esac
|
||||
while ! "$@"; do sleep $duration; done
|
||||
}
|
||||
|
||||
# Shows source for given command, resolving nested aliases
|
||||
|
@ -290,7 +298,7 @@ u() {
|
|||
fi
|
||||
if command -v topgrade >/dev/null
|
||||
then
|
||||
nice -10 topgrade --disable node emacs remotes rustup nix
|
||||
nice -15 topgrade --disable node emacs remotes rustup nix
|
||||
if test -d "$XDG_CONFIG_HOME/emacs"
|
||||
then
|
||||
builtin cd $XDG_CONFIG_HOME/emacs
|
||||
|
@ -312,12 +320,13 @@ u() {
|
|||
# Networking
|
||||
alias rdns='drill -x'
|
||||
dns() {
|
||||
local dig="drill -Q"
|
||||
which drill >/dev/null || dig="dig +short"
|
||||
local dig='drill -Q'
|
||||
which drill >/dev/null || dig='dig +short'
|
||||
local server=1.1.1.1
|
||||
# TODO allow changing DNS server with @
|
||||
case "$*" in (*@*) server="${*##*@}";; esac
|
||||
# TODO implement rdns via -x
|
||||
for arg; do
|
||||
case "$arg" in (@*) return;; esac
|
||||
local trimmed="${arg##*//}"
|
||||
local cut="${trimmed%%/*}"
|
||||
if which host >/dev/null 2>&1
|
||||
|
@ -328,6 +337,7 @@ dns() {
|
|||
fi
|
||||
done
|
||||
}
|
||||
|
||||
alias sshk="$(case $TERM in (*-kitty) echo 'TERM=xterm-256color kitty +kitten';; esac) ssh"
|
||||
sshl() {
|
||||
test "$1" = "-a" && shift && local all=true
|
||||
|
@ -383,9 +393,9 @@ alias pmd='pandoc -t markdown_strict-raw_html'
|
|||
alias clr='diffr --colors refine-added:none:background:0x33,0x66,0x33:bold --colors added:none:background:0x33,0x44,0x33 --colors refine-removed:none:background:0x66,0x33,0x33:bold --colors removed:none:background:0x44,0x33,0x33 | less -F'
|
||||
|
||||
# Fossil
|
||||
alias f='fossil'
|
||||
alias fs='fossil'
|
||||
alias fl='fossil timeline --format "[%d] %h %c <%a>"'
|
||||
alias fs='fossil status'
|
||||
alias ft='fossil status'
|
||||
alias fc='fossil commit -v'
|
||||
fdf() {
|
||||
fossil diff "$@" | clr
|
||||
|
@ -519,17 +529,21 @@ killm() {
|
|||
|
||||
# Files {{{1
|
||||
|
||||
which exa >/dev/null &&
|
||||
alias l='exa --icons --group-directories-first' &&
|
||||
alias ll='l --long --git --all'
|
||||
if which eza >/dev/null
|
||||
then alias l='eza --group-directories-first --icons'
|
||||
alias ll='l --long --git --all'
|
||||
else alias l='ls -F'
|
||||
alias ll='l -lAh'
|
||||
fi
|
||||
|
||||
if which fd >/dev/null 2>&1
|
||||
then
|
||||
# [F]ind [n]o ignore
|
||||
fn() { $(command -v fd || echo fdfind) --hidden --no-ignore-vcs --one-file-system "$@" | less -F; }
|
||||
fn() { $(command -v fd || echo fdfind) -E env --hidden --no-ignore-vcs --one-file-system "$@" | less -F; }
|
||||
# [F]ind [F]ile
|
||||
alias ff="noglob fn --color=always "
|
||||
compdef ff=fd
|
||||
alias f="noglob fn --color=always "
|
||||
alias ff=f
|
||||
compdef f=fd
|
||||
compdef fn=fd
|
||||
else
|
||||
alias ff='find -not -path "*.sync*" -and -not \( -name daten -prune \) -iname'
|
||||
|
@ -542,13 +556,15 @@ alias rcn='rsync -v --recursive --human-readable --links --dry-run'
|
|||
rcd() { rcn --size-only "$@" | tail +2 | tree --fromfile . | less -F; }
|
||||
compdef rcd=rsync
|
||||
# TODO do not sync times to FAT
|
||||
alias rc='rcs --links --hard-links --times'
|
||||
alias rc='rcs --safe-links --hard-links --times'
|
||||
alias rcu='rc --existing --size-only'
|
||||
alias rcr='rcs --compress --size-only --times'
|
||||
alias rcs='rsync --recursive --info=progress2,remove,symsafe,flist,del --human-readable'
|
||||
alias dsync='rc --delete --specials'
|
||||
alias move='rc --remove-source-files'
|
||||
alias rdiff='rsync --recursive --checksum --delete --links --dry-run'
|
||||
# https://unix.stackexchange.com/questions/57305/rsync-compare-directories/177946
|
||||
# You need to add a / at the end of source but NOT target: rsync -avnc $SOURCE/ $TARGET
|
||||
alias rdiff='rsync --info=name --recursive --checksum --delete --links --dry-run'
|
||||
alias rdiffe='rdiff --existing --size-only'
|
||||
|
||||
# Swap the names of two files
|
||||
|
@ -633,7 +649,7 @@ umoul() {
|
|||
for mountpoint in $mountpoints; do
|
||||
while true; do
|
||||
case "$PWD" in
|
||||
("$mountpoint"*) popd || builtin cd "$(dirname "$mountpoint")";;
|
||||
("$mountpoint"*) popd 2>/dev/null || builtin cd "$(dirname "$mountpoint")";;
|
||||
(*) break;;
|
||||
esac
|
||||
done
|
||||
|
@ -656,6 +672,7 @@ function zipdiff() {
|
|||
# SWAP
|
||||
alias memstat='free -h | awk '"'"'NR==2 {printf "Free memory:\t %s/%s\t(%d%)\n",$7,$2,$7*100/$2} NR==3 {if($2 != "0B") printf "Used swap:\t%s/%s\t(%d%)\n",$3,$2,$2*100/$3}'"'"
|
||||
|
||||
# Force all swapped memory to live memory by deallocating it
|
||||
stopswap() {
|
||||
memstat
|
||||
swap_used=$(cat /proc/meminfo | grep SwapFree | awk '{print $2}')
|
||||
|
@ -672,6 +689,7 @@ stopswap() {
|
|||
fi
|
||||
}
|
||||
|
||||
# Extrace proxmox vma archive
|
||||
extrac() {
|
||||
test "$#" -lt 1 && echo "$0 <archive.vma[.lzo]>..." && return 2
|
||||
for var; do
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Pop up a message, for long running commands
|
||||
command -v notify-send >/dev/null &&
|
||||
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(echo "$history[$HISTCMD]" | sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
||||
alias alert='notify-send --urgency=normal -i "$([ $? = 0 ] && echo terminal || echo error)" "$(echo "$history[$HISTCMD]" | sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
||||
|
||||
if which jrnl >/dev/null; then
|
||||
j(){ jrnl "$@" && jrnl-tag; }
|
||||
|
@ -56,7 +56,7 @@ themeswitch() {
|
|||
kitty="$XDG_CONFIG_HOME/kitty/theme.conf"
|
||||
case "$theme" in
|
||||
(light)
|
||||
alias ai='aichat --light-theme'
|
||||
alias aichat='aichat --light-theme'
|
||||
# LESS_TERMCAP_DEBUG=true man man
|
||||
export LESS_TERMCAP_md=$'\e[1;34m' # bold blue
|
||||
export BAT_THEME="OneHalfLight"
|
||||
|
@ -66,7 +66,7 @@ themeswitch() {
|
|||
#mozedit $mozfile '/light@mozilla/,/"enabled"/ s/\("enabled":.*\)false/\1true/; /dark@mozilla/,/"enabled"/ s/\("enabled":.*\)true/\1false/'
|
||||
;;
|
||||
(dark)
|
||||
alias ai=aichat
|
||||
alias aichat='aichat'
|
||||
export BAT_THEME="OneHalfDark"
|
||||
#konsoleprofile colors="Breeze"
|
||||
rm -f "$kitty"
|
||||
|
@ -81,9 +81,6 @@ export THEME=${THEME:-$theme_default}
|
|||
themeswitch $THEME
|
||||
alias ts='themeswitch'
|
||||
|
||||
alias ky='ai --role swahili'
|
||||
alias en='ai --role en'
|
||||
|
||||
test "$XDG_CURRENT_DESKTOP" = "KDE" || return 0
|
||||
|
||||
# Fix errors regarding broken mim database
|
||||
|
|
|
@ -46,11 +46,12 @@ stack() {
|
|||
;;
|
||||
(activate)
|
||||
test -d "$STACKSPIN" && . "$STACKSPIN/env/bin/activate"
|
||||
test $# -gt 0 && "$cmdname" select "$@"
|
||||
;;
|
||||
(setup) # https://docs.stackspin.net/en/latest/installation/install_cli.html
|
||||
cd "$STACKSPIN" &&
|
||||
python3 -m venv env &&
|
||||
"$0" activate
|
||||
"$cmdname" activate
|
||||
;;
|
||||
(override)
|
||||
cd "$STACKSPIN/../stackspout/overrides"
|
||||
|
@ -80,7 +81,7 @@ data:
|
|||
fi;;
|
||||
(user|app)
|
||||
if test "$1" = "init"
|
||||
then test $# -gt 2 || { echo "$0 $command $1 MAIL NAME"; return 2; }
|
||||
then test $# -gt 2 || { echo "Usage: $cmdname $command $1 MAIL NAME"; return 2; }
|
||||
mail="$2"
|
||||
shift 2
|
||||
"$cmdname" user create "$mail" &&
|
||||
|
@ -90,7 +91,7 @@ data:
|
|||
fi;;
|
||||
(invite) (
|
||||
# Mail invitation to new users
|
||||
test $# -gt 0 || { printf "$0 $command MAIL [NAME] [TEMPLATE]\nName can be omitted if mail is firstname.lastname@domain\n"; return 2; };
|
||||
test $# -gt 0 || { printf "Usage: $cmdname $command MAIL [NAME] [TEMPLATE]\nName can be omitted if mail is firstname.lastname@domain\n"; return 2; };
|
||||
export mail=$1
|
||||
export name=${2:-$(echo $mail | sed -E 's/(.*)\.(.*)@.*/\u\1 \u\2/' )}
|
||||
#echo "$mail,$name"
|
||||
|
@ -117,21 +118,22 @@ data:
|
|||
esac
|
||||
;;
|
||||
(reconcile)
|
||||
app=$1
|
||||
namespace=${2:-stackspout}
|
||||
if flux suspend helmrelease -n $namespace $app
|
||||
then flux resume helmrelease -n $namespace $app
|
||||
else flux suspend helmrelease -n stackspin-apps $app
|
||||
flux resume helmrelease -n stackspin-apps $app
|
||||
local app=$1
|
||||
local namespace=${2:-stackspout}
|
||||
shift $(expr $# \& $# \< 2 \| 2)
|
||||
if flux suspend helmrelease -n $namespace $app "$@"
|
||||
then flux resume helmrelease -n $namespace $app "$@"
|
||||
else flux suspend helmrelease -n stackspin-apps $app "$@"
|
||||
flux resume helmrelease -n stackspin-apps $app "$@"
|
||||
fi
|
||||
flux suspend kustomization $app
|
||||
flux resume kustomization $app
|
||||
flux suspend kustomization $app "$@"
|
||||
flux resume kustomization $app "$@"
|
||||
;;
|
||||
(edit)
|
||||
# Edit the URL for an application
|
||||
app=$1
|
||||
local app=$1
|
||||
kubectl edit configmap -n flux-system stackspin-$app-kustomization-variables
|
||||
"$0" reconcile $app
|
||||
"$cmdname" reconcile $app
|
||||
;;
|
||||
# Velero
|
||||
(restic)
|
||||
|
@ -150,20 +152,20 @@ data:
|
|||
if test $# -gt 0
|
||||
then velero "$@"
|
||||
else
|
||||
backupname=$(date +%y%m%d.%H%m)
|
||||
local backupname=$(date +%y%m%d.%H%m)
|
||||
velero create backup $backupname --exclude-namespaces velero --wait
|
||||
velero backup logs $backupname
|
||||
fi;;
|
||||
(restore)
|
||||
if test $# -lt 2
|
||||
then echo "$0 $command <backup> <app> [namespace]"
|
||||
echo "Recent Backups:"
|
||||
then echo "Usage: $cmdname $command <backup> <app> [namespace]"
|
||||
echo "Recent Completed Backups:"
|
||||
velero backup get | grep Completed | awk '{print $5 "\t" $1}' | sort -r | head -9
|
||||
return 1
|
||||
fi
|
||||
backup=$1; app=$2
|
||||
namespace=${3:-stackspin-apps} # TODO automatically handle stackspout apps
|
||||
restore="${backup}-$app-$(date +%s)"
|
||||
local backup=$1; app=$2
|
||||
local namespace=${3:-stackspin-apps} # TODO automatically handle stackspout apps
|
||||
local restore="${backup}-$app-$(date +%s)"
|
||||
if test "$app" = dashboard
|
||||
then kust=single-sign-on
|
||||
hr="$kust-database"
|
||||
|
@ -173,12 +175,17 @@ data:
|
|||
fi
|
||||
flux suspend kustomization $kust
|
||||
flux suspend helmrelease -n $namespace $hr
|
||||
(
|
||||
test $# -gt 3 && shift 3 || shift $#
|
||||
set -e
|
||||
kubectl delete all -n $namespace -l stackspin.net/backupSet=$app
|
||||
kubectl delete secret -n $namespace -l stackspin.net/backupSet=$app
|
||||
kubectl delete configmap -n $namespace -l stackspin.net/backupSet=$app
|
||||
kubectl delete pvc -n $namespace -l stackspin.net/backupSet=$app
|
||||
velero restore create $restore --from-backup=$backup -l stackspin.net/backupSet=$app
|
||||
echo "Waiting a few seconds for $app backup to restore..."
|
||||
echo "Creating $app velero restore..."
|
||||
velero restore create "$restore" --from-backup=$backup --selector stackspin.net/backupSet=$app --existing-resource-policy update "$@"
|
||||
velero restore create "$restore-secrets" --from-backup=$backup --include-resources Secret --selector kustomize.toolkit.fluxcd.io/name=$app-secrets --existing-resource-policy update
|
||||
echo "Waiting a few seconds for $app backup restore to start..."
|
||||
sleep 10
|
||||
local readresult
|
||||
while test -z "$readresult"
|
||||
|
@ -187,13 +194,16 @@ data:
|
|||
read readresult
|
||||
done
|
||||
test $app = dashboard &&
|
||||
"$cmdname" mariar stackspin-database hydra -e 'DELETE FROM hydra_client;' &&
|
||||
kubectl delete secret -n stackspin hydra &&
|
||||
flux reconcile helmrelease -n stackspin hydra
|
||||
)
|
||||
flux resume helmrelease -n $namespace $hr # TODO timeout
|
||||
flux resume kustomization $kust
|
||||
;;
|
||||
(restore-pvc)
|
||||
test $# -lt 1 && echo "$0 $command <app> [dir]" >&2 && return 1
|
||||
# Restore PVC for app from local directory
|
||||
test $# -lt 1 && echo "Usage: $cmdname $command <app> [dir]" >&2 && return 1
|
||||
local app=$1
|
||||
if test -d "$2"
|
||||
then dir="$2"
|
||||
|
@ -209,23 +219,38 @@ data:
|
|||
;;
|
||||
# KUBE
|
||||
# app clis
|
||||
(nc-apps)
|
||||
"$cmdname" reconcile nextcloud stackspin-apps --timeout 2m
|
||||
kubectl get -n stackspin-apps configmap nc-setup-apps -o jsonpath='{.data.setup-apps\.sh}' | kubectl exec -i -n $(kubectl get pods --all-namespaces --field-selector="status.phase=Running" -o=custom-columns=S:.metadata.namespace,N:.metadata.name --no-headers "$@" | grep nextcloud) -- /bin/bash
|
||||
;;
|
||||
(occ) "$cmdname" exec nc-nextcloud -c nextcloud -it -- su www-data -s /bin/bash -c "php $command $*";;
|
||||
(zulip) "$cmdname" exec zulip -- su zulip -c "/home/zulip/deployments/current/scripts/$* || /home/zulip/deployments/current/manage.py $*";;
|
||||
(vikunja*)
|
||||
local pod=$command
|
||||
poddir="$(basename "$CLUSTER_DIR"):$(kubectl describe pv -n stackspout | grep _$pod-files | awk '{print $2}')"
|
||||
case "$1" in
|
||||
(dump|export) cd "$PROJECTS/vikunja"
|
||||
"$cmdname" exec "$pod-api" -- \
|
||||
sh -c 'rm -f *.zip && ./vikunja dump >/dev/null && ls --color -lAhF >&2 && cat *.zip' >"$pod-dump_$(date +%F).zip"
|
||||
filename="$pod-dump_$(date +%F).zip"
|
||||
if ! "$cmdname" exec "$pod-api" -- sh -c 'rm -f *.zip && ./vikunja dump >/dev/null && ls --color -lAhF >&2 && cat *.zip' >"$filename"
|
||||
then "$cmdname" exec "$pod" -- ./vikunja dump -p /app/vikunja/files &&
|
||||
scp "$poddir/*.zip" "$filename"
|
||||
fi &&
|
||||
(
|
||||
cur="$PWD/${filename}"
|
||||
cd "$(mktemp -d --suffix=_$filename)"
|
||||
unzip "$cur"
|
||||
zip "${cur}_noconfig.zip" VERSION .env database/*
|
||||
)
|
||||
;;
|
||||
(restore)
|
||||
if ! test -f "$2"
|
||||
then echo "Usage: $0 vikunja[suffix] restore <file>" >&2
|
||||
return 2
|
||||
fi
|
||||
file=$2
|
||||
"$cmdname" upload "$pod-api" "$file"
|
||||
"$cmdname" exec "$pod-api" -it -- ./vikunja restore "$file"
|
||||
if ! test -f "$file"
|
||||
then echo "Usage: $cmdname vikunja[suffix] restore <file>" >&2
|
||||
else
|
||||
scp "$file" "$poddir/"
|
||||
#"$cmdname" upload "$pod" "$file"
|
||||
fi
|
||||
"$cmdname" exec "$pod" -it -- ./vikunja restore "/app/vikunja/files/$(basename $file)"
|
||||
;;
|
||||
(psql)
|
||||
kubectl exec -it -n $("$cmdname" pod "$pod-postgresql") -- \
|
||||
|
@ -248,7 +273,8 @@ data:
|
|||
;;
|
||||
(exec) command="$2"
|
||||
shift 2
|
||||
kubectl exec -it -n $("$cmdname" pod "$app-postgresql") -- sh -c "PGPASSWORD=$(kubectl get secret --namespace stackspout $app-postgresql -o jsonpath='{.data.password}' | base64 --decode) $command -h localhost -U $app -p 5432 $*"
|
||||
echo '\\du+ (users) \\l (databases, then \\c DATABASE) \\dt (tables, then \\d+ TABLE)'
|
||||
kubectl exec -it -n $("$cmdname" pod "$app-postgresql") -- sh -c "PGPASSWORD=$(kubectl get secret --namespace stackspout $app-postgresql -o jsonpath='{.data.password}' | base64 --decode) $command -h localhost -U $(echo $app | cut -d- -f1) -p 5432 $*"
|
||||
;;
|
||||
(*)
|
||||
"$cmdname" psql "$app" exec psql "$@"
|
||||
|
@ -263,23 +289,42 @@ data:
|
|||
(wordpress) n=wordpress-database;;
|
||||
(*) n=$app-mariadb;;
|
||||
esac
|
||||
"$cmdname" exec $n -it -- env "MYSQL_PWD=$pw" mysql -u $app "$@"
|
||||
"$cmdname" exec $n -it -- env "MYSQL_PWD=$pw" mysql -u "$app" "$@"
|
||||
;;
|
||||
(mariar)
|
||||
name="$1-mariadb"
|
||||
local app="$1"
|
||||
shift
|
||||
pod="$(kubectl get secret --all-namespaces -o=custom-columns=S:.metadata.namespace,N:.metadata.name --no-headers | grep --color=never -- "$name")" &&
|
||||
"$cmdname" exec "$name" -it -- env "MYSQL_PWD=$(kubectl get secret -n $pod -o jsonpath='{.data.mariadb-root-password}' | base64 -d)" mysql -u root "$@"
|
||||
kubesecret="$(kubectl get secret --all-namespaces -o=custom-columns=S:.metadata.namespace,N:.metadata.name --no-headers | command grep -- " $app")" ||
|
||||
{ echo "Cannot find database pod"; return 2; }
|
||||
local db=${kubesecret##*-}
|
||||
local databasepod="$app-$db"
|
||||
local mysql_pwd="$(kubectl get secret -n $kubesecret -o "jsonpath={.data.${db}-root-password}" | base64 -d)"
|
||||
local execline="$cmdname exec $databasepod -it -- env MYSQL_PWD=$mysql_pwd"
|
||||
if test "$1" = dump
|
||||
then
|
||||
dumpfile="$(date +%y%m%d)_${databasepod}"
|
||||
echo "Dumping into $dumpfile..."
|
||||
$execline mysqldump --extended-insert=FALSE -u root --all-databases >"${dumpfile}.sql"
|
||||
$execline mysqldump --no-data -u root --all-databases >"${dumpfile}_schema.sql"
|
||||
else echo "MySQL Reference --- SHOW databases; USE <db>; SHOW tables; DESC <table>;"
|
||||
$execline mysql --silent -u root "${@:-${app%-database}}"
|
||||
fi
|
||||
;;
|
||||
# high-level
|
||||
(all)
|
||||
case $1 in (-*);; (*) args="-A -l stackspin.net/backupSet=$1";; esac
|
||||
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -o custom-columns=KIND:.kind,NS:.metadata.namespace,NAME:.metadata.name,AGE:.metadata.creationTimestamp --no-headers ${args:-$@}
|
||||
;;
|
||||
(list)
|
||||
flux get all | grep "$1"
|
||||
kubectl get all -A | grep "$1";;
|
||||
flux get all | grep --color=never "$1"
|
||||
kubectl get all -A --no-headers | grep --color=never "$1"
|
||||
;;
|
||||
(shell)
|
||||
local container=$1
|
||||
shift
|
||||
test "$1" = "-c" && pod=$2 && shift 2
|
||||
"$cmdname" exec "$container" -c "$pod" -it -- /bin/sh "$@";;
|
||||
"$cmdname" exec "$container" -c "$pod" -it -- /bin/sh "$@"
|
||||
;;
|
||||
(ls)
|
||||
if test $# -gt 1 && ! [[ "$2" =~ ".*/.*" ]]
|
||||
then "$cmdname" exec "$1" "$2" "$3" -it -- ls -lAhF --group-directories-first "${@:4}"
|
||||
|
@ -292,33 +337,44 @@ data:
|
|||
kubectl cp "$2" -n $("$cmdname" pod "$1$pod_suffix"):$2 "${@:3}"
|
||||
"$cmdname" ls "$1" "${@:3}";;
|
||||
(exec) "$cmdname" kube exec "$@";;
|
||||
(logs) test $# -gt 0 || { echo "$0 $command <pod> [lnav-args...]"; return; }
|
||||
podname="$1"
|
||||
(logs) test $# -gt 0 || { echo "$cmdname $command <pod> [lnav-args...]"; return; }
|
||||
podname="$1" || return $?
|
||||
shift
|
||||
"$cmdname" kube logs "$podname" -f | $(command which ${LOGPAGER:-lnav} || { which bat >/dev/null && echo "bat --number -l toml" } || echo 'less -RF') "$@";;
|
||||
"$cmdname" kube logs "$podname" -f | $(command which ${LOGPAGER:-lnav} || { which bat >/dev/null && echo "bat --number -l toml" } || echo 'less -RF') "$@" ||
|
||||
kubectl describe pod -n $("$cmdname" pod "$podname" --field-selector='')
|
||||
;;
|
||||
# low-level
|
||||
(kube)
|
||||
test $# -gt 1 || { echo "Please provide a command and pod name" >&2 && return 1; }
|
||||
local pods=$("$cmdname" pod "$2$pod_suffix") || { echo "No pod found for $2" >&2 && return 1; }
|
||||
test $# -gt 1 || { echo "Please provide a command and pod name" >&2; return 1; }
|
||||
local pods="$("$cmdname" pod "$2$pod_suffix")"
|
||||
test -n "$pods" || return $?
|
||||
local subcommand=$1
|
||||
shift 2
|
||||
local commands=()
|
||||
for arg
|
||||
do case "$arg" in (-*) break;; (*) commands+="$arg"; shift;; esac
|
||||
done
|
||||
namespacedpod="$pods"
|
||||
#while IFS= read -r namespacedpod; do
|
||||
if test $(echo "$pods" | wc -l) -gt 1
|
||||
then
|
||||
for namespacedpod in "${(f)pods}"
|
||||
do test "$subcommand" = get ||
|
||||
highlight "Running $subcommand on $namespacedpod" >&2
|
||||
kubectl "$subcommand" "${commands[@]}" -n $namespacedpod "$@"
|
||||
done
|
||||
else
|
||||
namespacedpod="$pods"
|
||||
test "$subcommand" = get ||
|
||||
highlight "Running $subcommand on $namespacedpod" >&2
|
||||
kubectl "$subcommand" "${commands[@]}" -n $namespacedpod "$@"
|
||||
#done <<< "$pods"
|
||||
fi
|
||||
;;
|
||||
(pod)
|
||||
test $# -gt 0 && local podname=$1 && shift
|
||||
if ! kubectl get pods --all-namespaces --field-selector="status.phase=Running" -o=custom-columns=S:.metadata.namespace,N:.metadata.name --no-headers "$@" | grep --color=never -- "$podname"
|
||||
then code=$?
|
||||
echo "No pod found for $podname" >&2
|
||||
return $code
|
||||
then
|
||||
code=$?
|
||||
echo "No running pod found for $podname" >&2
|
||||
return $(expr $code \| 1)
|
||||
fi
|
||||
;;
|
||||
(clean-pods)
|
||||
|
@ -327,6 +383,13 @@ data:
|
|||
awk '{print "--namespace=" $1 " " $2}' |
|
||||
xargs -L 1 kubectl delete pod;;
|
||||
# stackspin bare
|
||||
(upgrade)
|
||||
"$cmdname" backup
|
||||
git switch v2
|
||||
git pull upstream v2
|
||||
git push
|
||||
flux resume source git stackspin
|
||||
;;
|
||||
(*) if which "$cmdname-$command" >/dev/null 2>&1
|
||||
then "$cmdname-$command" "$@"
|
||||
return $?
|
||||
|
@ -338,12 +401,12 @@ data:
|
|||
case "$1" in
|
||||
([a-z]*)
|
||||
for arg
|
||||
do kubectl exec -n stackspin deploy/dashboard -c backend -- flask cli app install "$arg"
|
||||
do kubectl exec -n stackspin deploy/dashboard-backend -- flask cli app install "$arg"
|
||||
done;;
|
||||
(""|-*)
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install -r requirements.txt
|
||||
python3 -m stackspin "$@" "$_cluster_name" "$command"
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install -r requirements.txt
|
||||
python -m stackspin "$@" "${_cluster_name}" "$command"
|
||||
cp -nv "install/.flux.env.example" "clusters/$_cluster_name/.flux.env" &&
|
||||
$EDITOR "clusters/$_cluster_name/.flux.env"
|
||||
cp -nv install/kustomization.yaml $CLUSTER_DIR/
|
||||
|
@ -351,7 +414,8 @@ data:
|
|||
kubectl apply -k $CLUSTER_DIR
|
||||
|
||||
ssh "root@${_cluster_name}" mkdir /etc/nftables.d
|
||||
ssh "root@${_cluster_name}" echo 'tcp dport { 2222 } counter accept' | tee /etc/nftables.d/ssh.nft
|
||||
ssh "root@${_cluster_name}" "echo 'tcp dport { 2222 } counter accept' | tee /etc/nftables.d/ssh.nft"
|
||||
ssh "root@${_cluster_name}" "echo 'udp dport { 22222 } counter accept' | tee /etc/nftables.d/mosh.nft"
|
||||
|
||||
./install/install-stackspin.sh
|
||||
;;
|
||||
|
@ -364,16 +428,15 @@ data:
|
|||
cat "$_stackspin_cluster_cache" 2>/dev/null |
|
||||
while read cluster; do stack select "$cluster"; done
|
||||
|
||||
test -z "$DISPLAY" && test "$XDG_VTNR" != 1 || return 0
|
||||
# The following runs only on headless machines
|
||||
|
||||
# Run following code only on headless machines
|
||||
test -z "$DISPLAY" && test "$XDG_VTNR" != 1 && ! pgrep -qx "SystemUIServer" || return 0
|
||||
|
||||
which kubectl >/dev/null ||
|
||||
{ kubectl() { sudo k3s kubectl "$@"; } && export -f kubectl; }
|
||||
|
||||
export PATH="$PATH:$HOME/.local/bin/server"
|
||||
|
||||
test -d "$MUSIC" || export MUSIC="/srv/funkwhale/data/music/janek"
|
||||
|
||||
test -f "$HOME/.rvm/scripts/rvm" &&
|
||||
source "$HOME/.rvm/scripts/rvm" && # Load RVM into a shell session *as a function*
|
||||
rvm use 3.0
|
||||
|
|
|
@ -2,5 +2,10 @@ input * {
|
|||
xkb_layout eu,de,us
|
||||
xkb_variant basic,nodeadkeys,euro
|
||||
xkb_numlock enabled
|
||||
xkb_options caps:escape_shifted_capslock
|
||||
#xkb_options caps:escape_shifted_capslock
|
||||
|
||||
repeat_delay 300
|
||||
repeat_rate 50
|
||||
repeat_rate 0
|
||||
repeat_rate 30
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ pre_sudo = true
|
|||
#assume_yes = ["emacs"]
|
||||
|
||||
# Disable specific steps - same options as the command line flag
|
||||
disable = ["containers", "config_update", "node", "firmware"]
|
||||
disable = ["containers", "config_update", "poetry", "auto_cpufreq"]
|
||||
|
||||
# Ignore failures for these steps
|
||||
#ignore_failures = ["powershell"]
|
||||
|
@ -58,7 +58,8 @@ repos = [
|
|||
|
||||
[linux]
|
||||
# Arguments to pass yay when updating packages
|
||||
yay_arguments = "--diffmenu=false --overwrite /usr/lib/node_modules/node-gyp/**,/usr/lib/node_modules/npm/**,/usr/lib/** --ignore linux,zoom,qt*,zulip*,webcord*,brave*,*openjfx,android-studio*,clion*,intellij-idea-*,webstorm*,texlive-full"
|
||||
#qt*,
|
||||
yay_arguments = "--diffmenu=false --overwrite /usr/lib/node_modules/node-gyp/**,/usr/lib/node_modules/npm/**,/usr/lib/**,/usr/include/** --ignore ggml-git,bitmask-vpn,linux,zoom,zulip*,webcord*,brave*,android-studio*,clion*,intellij-idea-*,webstorm*,rubymine*,rustrover*,slack*,texlive-full,jdk,*openjfx,invoiceninja*"
|
||||
#trizen_arguments = "--devel"
|
||||
#enable_tlmgr = true
|
||||
#emerge_sync_flags = "-q"
|
||||
|
@ -82,4 +83,4 @@ use_sudo = true
|
|||
|
||||
[firmware]
|
||||
# Offer to update firmware; if false just check for and display available updates
|
||||
#upgrade = true
|
||||
upgrade = true
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
|
||||
|
||||
# Arrange displays in a ROW (default, left to right) or a COLUMN (top to bottom)
|
||||
#ARRANGE: COLUMN
|
||||
ARRANGE: ROW
|
||||
ARRANGE: COLUMN
|
||||
|
||||
# Align ROWs at the TOP (default), MIDDLE or BOTTOM
|
||||
# Align COLUMNs at the LEFT (default), MIDDLE or RIGHT
|
||||
ALIGN: MIDDLE
|
||||
#ALIGN: MIDDLE
|
||||
#ALIGN: BOTTOM
|
||||
|
||||
|
||||
# The default ORDER is simply the order in which the displays are discovered.
|
||||
|
@ -20,8 +20,9 @@ ORDER:
|
|||
- 'LOEWE'
|
||||
- 'DP-4' # left port
|
||||
- 'VFV'
|
||||
- 'BOE' #internal
|
||||
- 'DP-3'
|
||||
- 'DP-2' # right port adapter
|
||||
- 'BOE' #internal
|
||||
- 'DP-1' # right port
|
||||
|
||||
# The default is to scale each display by DPI.
|
||||
|
@ -38,6 +39,8 @@ SCALE:
|
|||
SCALE: 1
|
||||
- NAME_DESC: 'LOEWE' # CODE Big
|
||||
SCALE: 2
|
||||
- NAME_DESC: 'LG Ultra' # Home 4k
|
||||
SCALE: 2
|
||||
#- NAME_DESC: 'BOE' # Framework internal
|
||||
# SCALE: 2
|
||||
|
||||
|
@ -46,15 +49,15 @@ SCALE:
|
|||
# for a possible workaround.
|
||||
MODE:
|
||||
# Resolution and refresh
|
||||
#- NAME_DESC: HDMI-A-1
|
||||
# WIDTH: 1920
|
||||
# HEIGHT: 1080
|
||||
# HZ: 60
|
||||
- NAME_DESC: BOE
|
||||
WIDTH: 2560
|
||||
HEIGHT: 1600
|
||||
HZ: 60.002
|
||||
|
||||
# Resolution with highest refresh
|
||||
#- NAME_DESC: 'monitor description'
|
||||
# WIDTH: 2560
|
||||
# HEIGHT: 1440
|
||||
- NAME_DESC: '5K'
|
||||
WIDTH: 3440
|
||||
HEIGHT: 1440
|
||||
HZ: 30
|
||||
|
||||
# Highest available
|
||||
#- NAME_DESC: DP-2
|
||||
|
@ -66,10 +69,11 @@ MODE:
|
|||
|
||||
|
||||
# One of: ERROR, WARNING, INFO (default), DEBUG
|
||||
LOG_THRESHOLD: INFO
|
||||
|
||||
LOG_THRESHOLD: DEBUG
|
||||
|
||||
# Disable the specified displays.
|
||||
DISABLED:
|
||||
#- "eDP-1"
|
||||
#DISABLED:
|
||||
# - "eDP-1"
|
||||
|
||||
#VRR_OFF:
|
||||
# - DP-4
|
||||
|
|
|
@ -2,102 +2,55 @@ SECTION() { printf "\n[1m[4m$1[0m\n"; }
|
|||
highlight() { printf "[1m[3m$1[0m\n"; }
|
||||
subhighlight() { printf "[3m$1[0m\n"; }
|
||||
|
||||
source "$HOME/.zshenv"
|
||||
|
||||
SECTION "System"
|
||||
|
||||
highlight "Sudoers defaults"
|
||||
echo 'Defaults editor=/usr/bin/nvim
|
||||
Defaults env_keep="EDITOR"' |
|
||||
sudo tee /etc/sudoers.d/editor
|
||||
echo 'Defaults timestamp_timeout=120
|
||||
Defaults passwd_timeout=30' |
|
||||
sudo tee /etc/sudoers.d/timeout
|
||||
subhighlight "password-free reboot"
|
||||
echo "$USER ALL = NOPASSWD: /usr/bin/halt, /usr/bin/shutdown, /usr/bin/reboot, /usr/bin/poweroff, /bin/reboot, /bin/shutdown. /usr/bin/umount" |
|
||||
sudo tee /etc/sudoers.d/shutdown
|
||||
|
||||
highlight "Set default user in tty1,2,3"
|
||||
agetty="$(sudo which agetty)" &&
|
||||
sudo mkdir -p /etc/systemd/system/getty@tty{1,2,3}.service.d &&
|
||||
echo "[Service]
|
||||
Restart=Never
|
||||
ExecStart=
|
||||
ExecStart=-$agetty --skip-login --login-options $USER %I" |
|
||||
sudo tee /etc/systemd/system/getty@tty1.service.d/override.conf /etc/systemd/system/getty@tty2.service.d/override.conf /etc/systemd/system/getty@tty3.service.d/override.conf
|
||||
|
||||
highlight "Sysyadm setup"
|
||||
if test -d "/etc/yadm/repo.git/"
|
||||
then sy l
|
||||
else echo "" | sy clone
|
||||
fi
|
||||
|
||||
SECTION "Software"
|
||||
|
||||
highlight "Cleanup Manjaro Sway Dotfiles"
|
||||
rmexist() {
|
||||
for arg
|
||||
do test -e "$arg" && echo -n "$arg: " && rm -rI "$arg"
|
||||
done
|
||||
}
|
||||
rmexist "$XDG_CONFIG_HOME/nvim/init.lua" "$HOME/.emacs.d/"
|
||||
|
||||
highlight "MPD"
|
||||
mkdir "${XDG_STATE_HOME}/mpd"
|
||||
sudo systemctl enable --now mpd
|
||||
mpc update
|
||||
|
||||
template() {
|
||||
local dir=$(dirname "$1")
|
||||
local file=${1/.template}
|
||||
test -d "$dir" && ! test -f "$file" &&
|
||||
cp -iv "$1" "$file"
|
||||
}
|
||||
template "$XDG_CONFIG_HOME/doom/user.template.el"
|
||||
template "$XDG_CONFIG_HOME/MuseScore/MuseScore3.template.ini"
|
||||
# TODO JOSM
|
||||
# TODO audacity
|
||||
# TODO puddletag
|
||||
|
||||
if command -v nvim >/dev/null 2>&1; then
|
||||
echo "Updating NeoVim Plugins"
|
||||
nvim '+PlugClean!' '+PlugUpgrade' '+PlugUpdate' '+qall'
|
||||
fi
|
||||
|
||||
link() {
|
||||
test -e "$2" -o -h "$2" || $($HOME/.local/bin/scripts/checkaccess -w "$2" || echo sudo) ln -sv "$@"
|
||||
}
|
||||
|
||||
# So that bootstrapping works right after cloning with the correct env variables
|
||||
source "$HOME/.zshenv"
|
||||
|
||||
SECTION "Dotfiles Preparation"
|
||||
|
||||
highlight "Remove conflicting Manjaro Sway Dotfiles"
|
||||
rmexist() {
|
||||
for arg
|
||||
do test -e "$arg" && echo -n "$arg: " && rm -vrI "$arg"
|
||||
done
|
||||
}
|
||||
rmexist "$XDG_CONFIG_HOME/nvim/init.lua" "$HOME/.emacs.d/"
|
||||
|
||||
highlight 'Resolve Home Symlinks'
|
||||
touch $HOME/.local/state/wget-hsts
|
||||
mkdir -p "$XDG_CONFIG_HOME/audacity"
|
||||
find $HOME -maxdepth 1 -type l -exec file {} + |
|
||||
grep '.local/share' | grep broken |
|
||||
sed 's/.* //' | xargs -r mkdir -p
|
||||
|
||||
link python /usr/bin/python3
|
||||
# TODO don't link these prematurely, might lead to installation conflicts
|
||||
link fdfind /usr/bin/fd
|
||||
link batcat /usr/bin/bat
|
||||
highlight 'Other Application Symlinks'
|
||||
link "$XDG_CONFIG_HOME/bash/aliases.bash" "$HOME/.bashrc"
|
||||
link "$HOME/.ssh/config" "$XDG_CONFIG_HOME/ssh"
|
||||
link "$XDG_DATA_HOME/.cpan/CPAN/MyConfig.pm" "$XDG_CONFIG_HOME/cpan/MyConfig.pm"
|
||||
link "$XDG_STATE_HOME/gradle/gradle.properties" "$XDG_CONFIG_HOME/gradle.properties"
|
||||
|
||||
highlight "SSH Permissions"
|
||||
chmod og= $HOME/.ssh -R
|
||||
test -d "$HOME/.ssh/keys" && chmod a+r $HOME/.ssh/keys/*.pub
|
||||
_ovpn="$XDG_DATA_HOME/openvpn"
|
||||
test -d "$_ovpn" &&
|
||||
sudo rm -vdf /etc/openvpn/client &&
|
||||
sudo ln -vsf "$_ovpn" /etc/openvpn/client &&
|
||||
sudo chmod -vR ugo-rwx,ug+rX,u+w "$_ovpn" &&
|
||||
sudo chown -vR janek:openvpn "$_ovpn"
|
||||
#template() {
|
||||
# local dir=$(dirname "$1")
|
||||
# local file=${1/.template}
|
||||
# test -d "$dir" && ! test -f "$file" &&
|
||||
# cp -iv "$1" "$file"
|
||||
#}
|
||||
#template "$XDG_CONFIG_HOME/doom/user.template.el"
|
||||
#template "$XDG_CONFIG_HOME/MuseScore/MuseScore3.template.ini"
|
||||
# TODO JOSM
|
||||
# TODO audacity
|
||||
# TODO puddletag
|
||||
|
||||
highlight "Cron"
|
||||
sudo systemctl enable --now cronie
|
||||
if test -d "/etc/rsyslog.d"; then
|
||||
echo 'cron.* /var/log/cron.log' | sudo tee /etc/rsyslog.d/60-cron.conf
|
||||
hasService=$(which service 2>/dev/null)
|
||||
test "$hasService" && sudo service rsyslog restart || sudo systemctl restart rsyslog
|
||||
test "$hasService" && sudo service cron reload || sudo systemctl reload cronie
|
||||
fi
|
||||
SECTION 'Application Setup'
|
||||
|
||||
highlight "Zsh"
|
||||
highlight "CLI Applications"
|
||||
|
||||
# TODO update repo users, replace slow omz
|
||||
# checkout https://starship.rs/ over p10k
|
||||
subhighlight "Zsh"
|
||||
test -n "$ZSH" || export ZSH="${XDG_DATA_HOME:-$HOME/.local/share}/zsh/oh-my-zsh"
|
||||
mkdir -p "$(dirname $ZSH)"
|
||||
oldzsh="$XDG_STATE_HOME/zsh/oh-my-zsh" && test ! -d "$ZSH" -a -d "$oldzsh" && mv -vn $oldzsh $ZSH
|
||||
|
@ -115,11 +68,62 @@ cloneshallow powerlevel10k romkatv "$ZSH/themes/powerlev
|
|||
cloneshallow fast-syntax-highlighting zdharma-continuum
|
||||
cloneshallow zsh-autosuggestions zsh-users
|
||||
cloneshallow zsh-vim-mode softmoth
|
||||
case "$(grep "^$USER" /etc/passwd | sed 's/.*://')" in (*zsh);; (*) chsh -s $(which zsh);; esac
|
||||
case "$(grep "^$USER" /etc/passwd | sed 's/.*://')" in (*zsh|'');; (*) chsh -s $(which zsh);; esac
|
||||
|
||||
highlight "Arch"
|
||||
if command -v nvim >/dev/null 2>&1; then
|
||||
subhighlight "Updating NeoVim Plugins"
|
||||
# TODO pynvim?
|
||||
nvim '+PlugClean!' '+PlugUpgrade' '+PlugUpdate' '+qall'
|
||||
fi
|
||||
|
||||
subhighlight "Setup kakoune plugin loader"
|
||||
cloneshallow plug.kak robertmeta "$XDG_CONFIG_HOME/kak/plugins/plug.kak"
|
||||
# TODO kakoune research: quit doc buffer, multi cursor, work on line
|
||||
|
||||
subhighlight 'Doom Emacs'
|
||||
doom sync
|
||||
|
||||
case $(uname) in (Darwin) exit 0;; esac
|
||||
# LINUX SPECIFIC
|
||||
|
||||
link python /usr/bin/python3
|
||||
# TODO don't link these prematurely, can lead to installation conflicts
|
||||
# may try /usr/local/bin
|
||||
# Don't think this is needed anymore though
|
||||
link fdfind /usr/bin/fd
|
||||
link batcat /usr/bin/bat
|
||||
|
||||
SECTION "Linux System (/etc)"
|
||||
|
||||
highlight "Sudoers defaults"
|
||||
echo 'Defaults editor=/usr/bin/nvim
|
||||
Defaults env_keep="EDITOR"' |
|
||||
sudo tee /etc/sudoers.d/editor
|
||||
echo 'Defaults timestamp_timeout=120
|
||||
Defaults passwd_timeout=30' |
|
||||
sudo tee /etc/sudoers.d/timeout
|
||||
subhighlight "password-free reboot"
|
||||
echo "$USER ALL = NOPASSWD: /usr/bin/halt, /usr/bin/shutdown, /usr/bin/reboot, /usr/bin/poweroff, /bin/reboot, /bin/shutdown. /usr/bin/umount" |
|
||||
sudo tee /etc/sudoers.d/shutdown
|
||||
|
||||
highlight "Set default user in tty1-4"
|
||||
agetty="$(sudo which agetty)" &&
|
||||
sudo mkdir -p /etc/systemd/system/getty@tty{1,2,3,4}.service.d &&
|
||||
echo "[Service]
|
||||
Restart=Never
|
||||
ExecStart=
|
||||
ExecStart=-$agetty --skip-login --login-options $USER %I" |
|
||||
sudo tee /etc/systemd/system/getty@tty1.service.d/override.conf /etc/systemd/system/getty@tty2.service.d/override.conf /etc/systemd/system/getty@tty3.service.d/override.conf
|
||||
|
||||
highlight "Sysyadm Setup"
|
||||
if test -d "/etc/yadm/repo.git/"
|
||||
then sy l
|
||||
else echo "" | sy clone
|
||||
fi
|
||||
|
||||
highlight "Arch Pacman"
|
||||
if test -f /etc/pacman.conf; then
|
||||
# TODO adjust makepkg.conf to at least half of processor count
|
||||
# TODO adjust makepkg.conf to at least half of processor count - see SPARE_CORES
|
||||
subhighlight "Pacman"
|
||||
sudo sed -i 's/#Parallel/Parallel/;s/#Color/Color/;s/#UseSyslog/UseSyslog/' /etc/pacman.conf
|
||||
sudo sed -i "$(grep -n "\[multilib\]" /etc/pacman.conf | cut -d':' -f1),+1 s/# *//" /etc/pacman.conf
|
||||
|
@ -136,15 +140,41 @@ if test -f /etc/pacman.conf; then
|
|||
fi
|
||||
fi
|
||||
|
||||
SECTION 'Linux Services'
|
||||
|
||||
highlight "Cron"
|
||||
sudo systemctl enable --now cronie
|
||||
if test -d "/etc/rsyslog.d"; then
|
||||
echo 'cron.* /var/log/cron.log' | sudo tee /etc/rsyslog.d/60-cron.conf
|
||||
hasService=$(which service 2>/dev/null)
|
||||
test "$hasService" && sudo service rsyslog restart || sudo systemctl restart rsyslog
|
||||
test "$hasService" && sudo service cron reload || sudo systemctl reload cronie
|
||||
fi
|
||||
|
||||
highlight "SSH Permissions"
|
||||
chmod og= $HOME/.ssh -R
|
||||
test -d "$HOME/.ssh/keys" && chmod a+r $HOME/.ssh/keys/*.pub
|
||||
|
||||
_ovpn="$XDG_DATA_HOME/openvpn"
|
||||
test -d "$_ovpn" &&
|
||||
highlight 'OpenVPN Permissions'
|
||||
sudo rm -vdf /etc/openvpn/client &&
|
||||
sudo ln -vsf "$_ovpn" /etc/openvpn/client &&
|
||||
sudo chmod -vR ugo-rwx,ug+rX,u+w "$_ovpn" &&
|
||||
sudo chown -vR janek:openvpn "$_ovpn"
|
||||
|
||||
test "$DISPLAY" || exit 0
|
||||
|
||||
SECTION "Linux App Setup"
|
||||
|
||||
#dasht-docsets-install haskell rails_4 >/dev/null
|
||||
|
||||
subhighlight "Enable MPD"
|
||||
mkdir "${XDG_STATE_HOME}/mpd"
|
||||
sudo systemctl enable --now mpd
|
||||
mpc update
|
||||
|
||||
highlight "Desktop Applications"
|
||||
|
||||
subhighlight "Application symlinks"
|
||||
link "$XDG_CONFIG_HOME/bash/aliases.bash" "$HOME/.bashrc"
|
||||
link "$HOME/.ssh/config" "$XDG_CONFIG_HOME/ssh"
|
||||
link "$XDG_DATA_HOME/.cpan/CPAN/MyConfig.pm" "$XDG_CONFIG_HOME/cpan/MyConfig.pm"
|
||||
|
||||
link "$XDG_STATE_HOME/gradle/gradle.properties" "$XDG_CONFIG_HOME/gradle.properties"
|
||||
link "$XDG_DATA_HOME/applications/signal-tray.desktop" "$XDG_CONFIG_HOME/autostart/"
|
||||
link "/usr/share/applications/stretchly.desktop" "$XDG_CONFIG_HOME/autostart/"
|
||||
mx="$HOME/.mixxx"
|
||||
|
@ -152,9 +182,3 @@ if ! test -d "$mx"
|
|||
then mkdir "$mx" && ln -sv -t "$mx" ${XDG_DATA_HOME:-$HOME/.local/share}/mixxx/* $XDG_CONFIG_HOME/mixxx/*
|
||||
fi
|
||||
|
||||
subhighlight "Setup kakoune plugin loader"
|
||||
cloneshallow plug.kak robertmeta "$XDG_CONFIG_HOME/kak/plugins/plug.kak"
|
||||
|
||||
touch $HOME/.local/state/wget-hsts
|
||||
|
||||
dasht-docsets-install haskell rails_4 >/dev/null
|
||||
|
|
|
@ -21,8 +21,9 @@
|
|||
() {
|
||||
emulate -L zsh -o extended_glob
|
||||
|
||||
# Unset all configuration options. This allows you to apply configuration changes without
|
||||
# restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
|
||||
# Unset all configuration options.
|
||||
# This allows you to apply configuration changes without restarting zsh.
|
||||
# Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
|
||||
unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
|
||||
|
||||
# Zsh >= 5.1 is required.
|
||||
|
|
|
@ -5,12 +5,14 @@ if test "$PWD" = "$HOME" && test "$0" != "$SHELL"; then
|
|||
timew | head -3
|
||||
fi 2>/dev/null || return 0
|
||||
|
||||
ls -F --color=always
|
||||
|
||||
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.config/zsh/.zshrc.
|
||||
# Initialization code that may require console input (password prompts, [y/n]
|
||||
# confirmations, etc.) must go above this block; everything else may go below.
|
||||
#if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
||||
# source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
||||
#fi
|
||||
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
||||
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
||||
fi
|
||||
|
||||
DEFAULT_USER=$USER
|
||||
|
||||
|
@ -26,7 +28,6 @@ HYPHEN_INSENSITIVE="true" # - and _ interchangeable
|
|||
COMPLETION_WAITING_DOTS="true" # Dots while waiting for completion
|
||||
DISABLE_UNTRACKED_FILES_DIRTY="true" # DOn't mark untracked files as dirty - speeds up status check
|
||||
|
||||
|
||||
# Plugins can be found in $ZSH/plugins/
|
||||
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
|
||||
plugins=(
|
||||
|
@ -45,9 +46,11 @@ ZSH_COMPDUMP="$XDG_CACHE_HOME/zsh/zcompdump-$ZSH_VERSION" # Cache completions
|
|||
DISABLE_UPDATE_PROMPT=true
|
||||
ZSH_DISABLE_COMPFIX=true
|
||||
|
||||
# For fresh systems
|
||||
test -d "$ZSH" || source $HOME/.zshenv
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
# Fallback for fresh systems
|
||||
if test -d "$ZSH"
|
||||
then source $ZSH/oh-my-zsh.sh
|
||||
else source $HOME/.zshenv
|
||||
fi
|
||||
|
||||
## Functions
|
||||
|
||||
|
@ -177,6 +180,12 @@ alias zcp='noglob zmv -C'
|
|||
alias zln='noglob zmv -L'
|
||||
alias zsy='noglob zmv -Ls'
|
||||
|
||||
|
||||
test -d /opt/homebrew && eval "$(/opt/homebrew/bin/brew shellenv)"
|
||||
|
||||
autoload -Uz compinit
|
||||
compinit
|
||||
|
||||
for file in $CONFIG_SHELLS/*
|
||||
do source $file
|
||||
done
|
||||
|
@ -201,6 +210,7 @@ source_existing /usr/share/fzf/key-bindings.zsh /usr/share/fzf/completion.zsh
|
|||
source_existing "$NVM_DIR/nvm.sh"
|
||||
source_existing "$NVM_DIR/bash_completion"
|
||||
|
||||
source_existing /opt/asdf-vm/asdf.sh
|
||||
source_existing $XDG_CONFIG_HOME/broot/launcher/bash/br
|
||||
|
||||
which zoxide >/dev/null &&
|
||||
|
@ -208,6 +218,3 @@ which zoxide >/dev/null &&
|
|||
|
||||
source_existing $HOME/.nix-profile/etc/profile.d/nix.sh
|
||||
which direnv >/dev/null && eval "$(direnv hook zsh)"
|
||||
|
||||
true
|
||||
l
|
||||
|
|
17
.jq
Normal file
17
.jq
Normal file
|
@ -0,0 +1,17 @@
|
|||
# generic
|
||||
def partition_by(sel):
|
||||
reduce .[] as $item
|
||||
( {}
|
||||
; ($item | sel | tostring) as $res | .[$res] = (.[$res] // []) + [$item]
|
||||
)
|
||||
;
|
||||
def partition: partition_by(.);
|
||||
def count_by(sel): partition_by(sel) | to_entries | map(.value = (.value | length)) | from_entries;
|
||||
|
||||
# nostr-related functions
|
||||
def tags(tagName): .tags | map(select(.[0] == tagName));
|
||||
def tag(tagName): tags(tagName) | .[0];
|
||||
def tag_value(tagName): tag(tagName)[1];
|
||||
def has_tag(tagName): (tags(tagName) | length) > 0;
|
||||
def hasnt_tag(tagName): (tags(tagName) | length) == 0;
|
||||
|
|
@ -99,7 +99,7 @@ for arg; do
|
|||
timg+=("${tmpfile%.*}.png");;
|
||||
(*/x-xcf*)
|
||||
echo Converting "$arg"
|
||||
convert -flatten "$arg" png:"$tmpfile"
|
||||
magick -flatten "$arg" png:"$tmpfile"
|
||||
timg+=("$tmpfile");;
|
||||
# TODO .raw .img
|
||||
(*/x-iso*|*/x-qemu-disk*) fdisk -l "$arg";;
|
||||
|
@ -197,7 +197,7 @@ if test "$timg"; then
|
|||
fi
|
||||
fi
|
||||
|
||||
pager="${PAGER:-'less -rF'}"
|
||||
pager="${PAGER:-less -rF}"
|
||||
# bat: unknown files
|
||||
# batplain: files to print without header
|
||||
if test "$bat" -o "$batplain"; then
|
||||
|
@ -260,7 +260,8 @@ if test "$ls" -o $# -le $(echo "$flags" | wc -w); then
|
|||
then $elevate tree -a --dirsfirst --du -h -C -L 3 $flags -- "${ls[@]:-.}"
|
||||
elif which exa 2>/dev/null >&2
|
||||
then $elevate exa --icons --color=always --long --group --classify --all --all --sort=modified --reverse $flags -- "${ls[@]:-.}"
|
||||
else $elevate ls -l $(test $# -gt ${#ls[@]} && echo '-d') --color=always --human-readable --si --group-directories-first --file-type --dereference-command-line-symlink-to-dir --all $flags -- "${ls[@]:-.}"
|
||||
else ls --color=always -lhFa $flags -- "${ls[@]:-.}"
|
||||
# replaced for wider compatibility: else $elevate ls -l $(test $# -gt ${#ls[@]} && echo '-d') --color=always --human-readable --si --group-directories-first --file-type --dereference-command-line-symlink-to-dir --all $flags -- "${ls[@]:-.}"
|
||||
fi
|
||||
#" || $elevate ls $(test $# -gt ${#ls[@]} && echo "-d") --color=always --human-readable --si --dereference-command-line --all --sort=none $flags -- "${ls[@]:-.}"
|
||||
} | $pager --quit-if-one-screen
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
#!/bin/sh -e
|
||||
#!/bin/sh -ex
|
||||
# Backup linux system and user files with borg
|
||||
# Usage: bag [-n] [--dry-run] [--home] [--root MOUNTED_ROOT]
|
||||
root="/"
|
||||
args="--progress --stats"
|
||||
# TODO proper ssh handling with local root access
|
||||
case $BORG_REPO in (*:*) run=borg;; esac
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
|
@ -20,7 +21,7 @@ name="::$(test -n "$name" && echo "$name" || cat /etc/hostname)_${1:-system}_$(d
|
|||
echo "Backing up as $name"
|
||||
# TODO ignore electron caches
|
||||
${run:-sudo --preserve-env=BORG_REPO BORG_PASSPHRASE="$($BORG_PASSCOMMAND)" borg} create --exclude-caches $args \
|
||||
$(echo $DIRS_IGNORE_SAFE -x .snapshots -x 'software-challenge/**/build' -x state/emacs -x state/go -x .local/lib -x .cpan -x *cache -x $HOME/.gem |
|
||||
$(echo $DIRS_IGNORE_SAFE -x .snapshot-2411 -x .snapshot -x .snapshots -x 'software-challenge/**/build' -x state/emacs -x state/go -x .local/lib -x .cpan -x *cache -x $HOME/.gem |
|
||||
sed 's|-x \([^ ]\+\)|-e sh:**/\1|g') \
|
||||
"$name" $(test $# -eq 0 && echo etc $HOME root || test $# -eq 1 && echo $1) "${@:2}" 2>&1
|
||||
test -n "$run" || sudo chown -R $USER:$USER "$BORG_REPO"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh -e
|
||||
# Suspend screen until enter is pressed or interrupted
|
||||
test "$1" && sleep $1
|
||||
$(which timer || sleep) "${1:-3}"
|
||||
dpms() {
|
||||
if test $XDG_SESSION_TYPE = wayland
|
||||
then swaymsg "output * dpms $*"
|
||||
|
@ -9,6 +9,7 @@ dpms() {
|
|||
}
|
||||
dpms off
|
||||
trap 'dpms on' INT
|
||||
test $# -gt 1 && shift && save "$@"
|
||||
sleep 3
|
||||
read _
|
||||
dpms on
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
typeset -A _clean_map
|
||||
_clean_map=([h]=$XDG_CACHE_HOME [t]=/var/tmp [l]=/var/log [v]=/var/cache)
|
||||
# TODO .mix - outdated version in socha
|
||||
_clean_home=(.ant .autopsy .bundle .cargo .cpanm .docker .stack .hex .nix-defexpr .parallel .surf .pub-cache
|
||||
#.cache
|
||||
_clean_home=(.ant .autopsy .bundle .cpanm .docker .stack .hex .nix-defexpr .parallel .surf .pub-cache
|
||||
#.cache .cargo
|
||||
.yarn .node_modules .npm .pnpm-store .node-gyp .nv .electron .electron-gyp
|
||||
.gradle .gradle-kotlin-dsl .java .kscript .konan .m2 .openjfx
|
||||
.log luametatex-cache luatex-cache .texlive
|
||||
|
@ -78,7 +78,7 @@ highlight "c :: clean electron caches"
|
|||
|
||||
highlight "o :: optimize space extensively"
|
||||
if [[ $1 =~ "o" ]]; then
|
||||
sudo find /root/.cache $XDG_CACHE_HOME /var/cache /var/log /var/tmp -not -name CACHEDIR.TAG -mindepth 1 -maxdepth 2 -atime +2 -exec rm -r {} + -prune
|
||||
sudo find /root/.cache $XDG_CACHE_HOME /var/cache /var/log /var/tmp -mindepth 1 -maxdepth 2 -not -name CACHEDIR.TAG -atime +9 -exec rm -r {} + -prune
|
||||
|
||||
if test -f "/var/log/apt/history.log"; then
|
||||
aptclean_cur=$(cat "/var/log/apt/history.log" | wc -l)
|
||||
|
@ -90,8 +90,9 @@ if [[ $1 =~ "o" ]]; then
|
|||
|
||||
sudo rm -rf "$XDG_DATA_HOME/baloo"
|
||||
# https://www.cyberciti.biz/faq/delete-remove-orphaned-unused-packages-arch-linux-pacman-command/
|
||||
which pacman &>/dev/null &&
|
||||
pacman -Qqdt | sudo pacman -Rsu -
|
||||
# Does not work anymore
|
||||
#which pacman &>/dev/null &&
|
||||
# pacman -Qqdt | sudo pacman -Rsu -
|
||||
which yay &>/dev/null &&
|
||||
yay -Sc --noconfirm
|
||||
nix-collect-garbage -d 2>/dev/null &&
|
||||
|
|
|
@ -1,20 +1,24 @@
|
|||
#!/bin/sh -e
|
||||
# Process raw contact data into a vcard and save it to nextcloud
|
||||
echo "Finish input with Ctrl-D" >&2
|
||||
inputfile=/tmp/aichat-contact
|
||||
inputfile=/tmp/aichat-contact-$(date +%s)
|
||||
cat >"$inputfile"
|
||||
|
||||
while test "$accept" != "y"
|
||||
do printf "\nProcessing...\n" >&2
|
||||
vcard="$(aichat --role carddav <"$inputfile")"
|
||||
echo "$vcard"
|
||||
printf "Accept? ([y]es/[n]o/[c]ancel) " >&2
|
||||
printf 'Accept? ([y]es/[n]o/[a]mend/[c]ancel) ' >&2
|
||||
read -r accept
|
||||
test "$accept" != "c" || exit $?
|
||||
test "$accept" != 'c' || exit $?
|
||||
test "$accept" = 'a' && cat >>"$inputfile"
|
||||
done
|
||||
uid=$(echo "$vcard" | grep UID | grep --only-matching '[-0-9a-fx]\{36\}')
|
||||
echo
|
||||
|
||||
uid=$(echo "$vcard" | grep UID | grep --only-matching '[-0-9a-fx]\{36\}')
|
||||
dir="$XDG_DATA_HOME/contacts"
|
||||
test -d "$dir" && echo "$vcard">"$dir/$uid.vcf"
|
||||
|
||||
ncfields=$(pass show service/nextcloud)
|
||||
ncfield() {
|
||||
echo "$ncfields" | head -$1 | tail -1
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
tmux new-session -d -s ledmatrix \; \
|
||||
send-keys 'retry inputmodule-control led-matrix --clock' C-m \; \
|
||||
split-window -v \; \
|
||||
send-keys "while test $(expr 12 - $(date +%H) | tr -d -) -lt 4; do inputmodule-control led-matrix --breathing; done
|
||||
autolight" C-m
|
||||
send-keys 'while test $(expr 12 - $(date +%H) | tr -d -) -lt 4; do inputmodule-control led-matrix --breathing; done
|
||||
autolight' C-m
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# TODO fix broken alt-enter not opening editor --bind='alt-enter:change-prompt(hi>)'
|
||||
|
||||
# using bash because of pipefail
|
||||
set -eo pipefail
|
||||
set -exo pipefail
|
||||
|
||||
fzfpipe() {
|
||||
# Take nul-separated input from git-status short/porcelain
|
||||
|
@ -27,6 +27,7 @@ case "$1" in
|
|||
grep -zv '^\\w ' | fzfpipe |
|
||||
xargs -rd '\n' -L 1 git -c advice.addEmptyPathspec=false add --verbose "$@";;
|
||||
(*) git status -z --porcelain --no-renames $wd |
|
||||
grep -vzE '\.config/(audacity|puddletag|Stretchly|falkTX|JOSM)/' | # this is specific for my yadm
|
||||
sed -z 's/^\\(\\w\\) / \\1/' | fzfpipe >"$prefix/files"
|
||||
cat "$prefix/files" | xargs -rd '\n' ls -fd 2>/dev/null >"$prefix/files-existing" || true
|
||||
git -c advice.addEmptyPathspec=false add --intent-to-add --pathspec-from-file="$prefix/files-existing"
|
||||
|
|
|
@ -1,8 +1,16 @@
|
|||
#!/bin/sh -e
|
||||
# Lists the latest modified files in the given directory or pwd
|
||||
test "$1" = "-a" && all=true && shift
|
||||
# up to a depth of 4
|
||||
count=5
|
||||
case "$1" in
|
||||
(-a) all=true; shift;;
|
||||
(--) shift;;
|
||||
(-*) args="$1 $2"; shift 2;;
|
||||
([0-9]) count=$(expr $1 \* 10); shift;;
|
||||
esac
|
||||
|
||||
for f in "${@:-$PWD}"
|
||||
do test $# -gt 1 && highlight "$f"
|
||||
find "$f" -maxdepth 4 -type f -printf '%.16T+ %P\n' |
|
||||
sort -r | $(test "$all" && echo "less" || echo "head")
|
||||
do test $# -gt 1 && { highlight "$f" || echo "$f"; }
|
||||
find "$f" -maxdepth 4 $args -printf '%.16T+ %P\n' |
|
||||
sort -r | $(test "$all" && echo "less" || echo "head -$count")
|
||||
done
|
||||
|
|
|
@ -76,8 +76,8 @@ shift $(expr 2 \& $# \> 2 \| $#)
|
|||
if ! mountpoint "$mountpoint" 2>/dev/null
|
||||
then mp="/run/media/$USER/$arg" && test -e "$mp" && mountpoint="$mp"
|
||||
sudo mount -vo users,X-mount.mkdir,noatime,umask=003,gid=users,uid=$USER $params "$partition" "$mountpoint" "$@" ||
|
||||
sudo mount -vo users,X-mount.mkdir,noatime $params "$partition" "$mountpoint" "$@"
|
||||
sudo mount -vo users,X-mount.mkdir,noatime,exec $params "$partition" "$mountpoint" "$@"
|
||||
fi
|
||||
cd $mountpoint
|
||||
cd "$mountpoint"
|
||||
df -x tmpfs -x devtmpfs -x squashfs --human-readable
|
||||
exec $SHELL
|
||||
|
|
4
.local/bin/scripts/relock
Executable file
4
.local/bin/scripts/relock
Executable file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh -e
|
||||
# Restart Swaylock from TTY
|
||||
pkill swaylock
|
||||
WAYLAND_DISPLAY=wayland-1 swaylock
|
|
@ -4,7 +4,7 @@
|
|||
export chars=$(expr $(tput cols) - 60)
|
||||
case "$1" in (+*) size=${1#+}G; depth=2; shift;; esac
|
||||
case "$1" in ([0-9]) depth=$1; shift;; esac
|
||||
du="du --max-depth '${depth:-1}' -xha"
|
||||
du="du --max-depth ${depth:-1} -xha"
|
||||
($du -t ${size:-50M} "$@" | sort -h | grep -v "^0") |
|
||||
while read line; do echo "$(tput smso)$line$(tput rmso) $(pacman -Qqo $(echo $line | awk '{print $2}') 2>/dev/null | paste -s -d',' | sed "s/\(.\{${chars}\}\).*/\1.../")"; done || #| column -t ||
|
||||
($du "$@" | sort -h | tail)
|
||||
|
|
|
@ -8,6 +8,7 @@ while true
|
|||
(-q) quality="$2"; shift;;
|
||||
(x*) resolution="$1"; resize="-resize $resolution";;
|
||||
(-v) set -x;;
|
||||
(-png) format=png;;
|
||||
(*) break;;
|
||||
esac
|
||||
shift
|
||||
|
@ -24,7 +25,7 @@ if test -n "$out"
|
|||
then process "$out" "$@"
|
||||
else
|
||||
for arg
|
||||
do process "${arg}${resolution:--shrinked}.jpeg" "$arg"
|
||||
do process "${arg}${resolution:--shrinked}.${format:-jpeg}" "$arg"
|
||||
done
|
||||
fi
|
||||
printf "Shrinked $1(%s) to $out(%s) - reduced to %s%%\n" \
|
||||
|
|
|
@ -165,6 +165,25 @@ data:
|
|||
hostname: "\${${app}_domain}"
|
||||
tls: true
|
||||
certManager: true
|
||||
|
||||
# TODO if using postgresql
|
||||
#postgresql:
|
||||
# enabled: true
|
||||
# commonLabels:
|
||||
# stackspin.net/backupSet: "${app}"
|
||||
# global:
|
||||
# postgresql:
|
||||
# auth:
|
||||
# database: ${app}
|
||||
# username: ${app}
|
||||
# password: "${postgresql_password}"
|
||||
# postgresPassword: "${postgresql_admin_password}"
|
||||
# primary:
|
||||
# persistence:
|
||||
# existingClaim: vikunja-postgres
|
||||
# podAnnotations:
|
||||
# backup.velero.io/backup-volumes: "data"
|
||||
|
||||
# TODO Adjust $app Mailing config
|
||||
# mailer:
|
||||
# enabled: "\${outgoing_mail_enabled}"
|
||||
|
@ -173,6 +192,7 @@ data:
|
|||
# username: "\${outgoing_mail_smtp_user}"
|
||||
# password: "\${outgoing_mail_smtp_password}"
|
||||
# fromemail: "\${outgoing_mail_from_address}"
|
||||
|
||||
# TODO Adjust $app OpenID Connect Single Sign-On Configuration
|
||||
# - name: Stackspin
|
||||
# key: "\${client_id}"
|
||||
|
@ -245,7 +265,9 @@ metadata:
|
|||
namespace: flux-system
|
||||
spec:
|
||||
fields:
|
||||
- fieldName: password
|
||||
# TODO if using postgresql
|
||||
- fieldName: postgresql_password
|
||||
- fieldName: postgresql_postgres_password
|
||||
EOF
|
||||
cat <<EOF >"$app-secrets/$app-oauth-secret.yaml"
|
||||
---
|
||||
|
|
|
@ -7,6 +7,7 @@ case "$1" in
|
|||
then printf "Device ppp0 already in use - press Enter to kill"
|
||||
read -r _
|
||||
sudo killall openfortivpn
|
||||
sleep 3
|
||||
fi
|
||||
sudo tmux new-session -s "$1" '
|
||||
set -x
|
||||
|
|
30
.zshenv
30
.zshenv
|
@ -8,7 +8,7 @@ export_existing() {
|
|||
export_existing DATA $HOME/daten $HOME/data
|
||||
export MUSIC="$DATA/4-media/music"
|
||||
|
||||
export BORG_REPO='admin@172.16.0.2:/mnt/b/user/janek/backup/janek-borg'
|
||||
export BORG_REPO='janek@172.16.0.2:/mnt/b/user/janek/backup/janek-borg'
|
||||
export BORG_PASSCOMMAND='pass service/device/borg/backup'
|
||||
|
||||
# xdg
|
||||
|
@ -40,6 +40,7 @@ export WINEPREFIX="$XDG_DATA_HOME"/wine
|
|||
|
||||
## Development tools
|
||||
export GOPATH="$XDG_STATE_HOME"/go
|
||||
export GOMODCACHE="$XDG_CACHE_HOME"/go/mod
|
||||
export KREW_ROOT="$XDG_DATA_HOME"/krew
|
||||
|
||||
export CARGO_HOME="$XDG_STATE_HOME"/cargo
|
||||
|
@ -63,6 +64,8 @@ export RBENV_ROOT="$XDG_STATE_HOME"/rbenv
|
|||
|
||||
export R_LIBS="$XDG_STATE_HOME"/R/lib
|
||||
|
||||
export FVM_CACHE_PATH="$XDG_DATA_HOME"/fvm
|
||||
|
||||
# Java & Android
|
||||
export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME/java"
|
||||
export GRADLE_USER_HOME="$XDG_STATE_HOME"/gradle
|
||||
|
@ -83,14 +86,16 @@ mkdir -p "$XDG_STATE_HOME/zsh"
|
|||
|
||||
# environment
|
||||
BIN="$HOME/.local/bin"
|
||||
export PATH="$BIN/scripts:$BIN:$RBENV_ROOT/shims:$PATH:$XDG_CONFIG_HOME/emacs/bin:$N_PREFIX:$GOPATH/bin:$ANDROID_SDK_ROOT/platform-tools:$CARGO_HOME/bin:$KREW_ROOT/bin:$XDG_DATA_HOME/gem/ruby/3.0.0/bin:$HOME/.rvm/bin"
|
||||
test -d "$XDG_DATA_HOME/gem/ruby" &&
|
||||
ruby_bins="$(ls -d $XDG_DATA_HOME/gem/ruby/*/bin 2>/dev/null | head -1)"
|
||||
export PATH="$BIN/scripts:$BIN:$RBENV_ROOT/shims:$PATH:$XDG_CONFIG_HOME/emacs/bin:$N_PREFIX:$GOPATH/bin:$ANDROID_SDK_ROOT/platform-tools:$CARGO_HOME/bin:$KREW_ROOT/bin:$ruby_bins:$HOME/.rvm/bin"
|
||||
export ALTERNATE_EDITOR="$(
|
||||
if which nvim >/dev/null
|
||||
if command -v nvim >/dev/null
|
||||
then echo nvim
|
||||
else echo vi
|
||||
fi)"
|
||||
export EDITOR="$(
|
||||
if which emacs >/dev/null
|
||||
if command -v emacs >/dev/null
|
||||
then echo $BIN/scripts/emacstty
|
||||
else echo $ALTERNATE_EDITOR
|
||||
fi
|
||||
|
@ -98,12 +103,12 @@ export EDITOR="$(
|
|||
export IHP_EDITOR="$BIN/scripts/emacs-line"
|
||||
|
||||
export LS_OPTIONS='--color=auto --human-readable --si --group-directories-first --file-type --dereference-command-line'
|
||||
export LESS="--raw-control-chars --ignore-case --LONG-PROMPT --jump-target=5 $(test $(less --version | head -1 | cut -f2 -d' ') -ge 590 && echo --incsearch)"
|
||||
export LESS="--raw-control-chars --ignore-case --LONG-PROMPT --jump-target=5 $(test $(less --version | grep -o '\d\+' | head -1) -ge 590 && echo --incsearch)"
|
||||
# TODO put into config file and use --exclude-from
|
||||
# -x 'System Volume Information'
|
||||
export DIRS_GENERATED="-x generated -x .gradle -x cmake_build -x dist-newstyle -x node_modules -x __pycache__ -x .pytest_cache"
|
||||
export DIRS_IGNORE_SAFE="-x .cache -x .cpan -x *Cache -x .dtrash -x .pyenv -x .local/cache -x .config/DeltaChat -x .config/discord -x .config/Slack -x .config/syncthing -x share/baloo -x share/cabal -x share/cargo -x share/digikam -x share/gem -x share/JetBrains -x share/tldr -x share/syncthing -x share/Steam/ubuntu* -x share/Steam/package -x share/virtualenv -x share/Zeal -x state/gradle -x state/android -x Ferdi/Partitions -x oh-my-zsh -x wine/drive_c/windows -x vendor/cache $DIRS_GENERATED"
|
||||
export DIRS_IGNORE="-x .archive -x .sync -x .stfolder -x *build -x .git -x .idea -x env -x out -x cache -x Partitions -x vendor/bundle -x log $DIRS_IGNORE_SAFE"
|
||||
export DIRS_IGNORE="-x .archive -x .sync -x .stfolder -x *build -x .git -x .idea* -x env -x out -x cache -x Partitions -x vendor/bundle -x log $DIRS_IGNORE_SAFE"
|
||||
# red stderr
|
||||
test -f "/usr/lib/libstderred.so" && export LD_PRELOAD="/usr/lib/libstderred.so${LD_PRELOAD:+:$LD_PRELOAD}"
|
||||
# software config
|
||||
|
@ -138,7 +143,7 @@ ctrl-alt-h:backward-kill-word
|
|||
$($_fzf_latest && echo "shift-down:preview-half-page-down,shift-up:preview-half-page-up
|
||||
alt-j:preview-half-page-down,alt-k:preview-half-page-up
|
||||
alt-shift-down:preview-down,alt-shift-up:preview-up,esc:close")
|
||||
" | xargs -I% echo -n "%," | head -c-1)
|
||||
" | sed '/./!d' | paste -s -d, -)
|
||||
#alt-r:preview(bat {}),
|
||||
export FZF_HISTDIR="$XDG_STATE_HOME/fzf"
|
||||
mkdir -p "$XDG_STATE_HOME/fzf"
|
||||
|
@ -148,8 +153,15 @@ $($_fzf_latest && echo '--preview-window=60%,border-left --marker=o')"
|
|||
FD_BASE="fd --hidden --color=always --no-ignore-vcs"
|
||||
export FZF_DEFAULT_COMMAND="$FD_BASE --type file"
|
||||
export FZF_CTRL_T_COMMAND="$FD_BASE -d 7"
|
||||
|
||||
# Calculate spare cores as two thirds of the efficiency cores
|
||||
case "$(uname)" in
|
||||
(Darwin) efficiency_cores=$(sysctl -n hw.perflevel1.physicalcpu);;
|
||||
(*) efficiency_cores=$(lscpu --extended | awk '{print $7}' | sort | uniq -c | head -1 | awk '{print $1}');;
|
||||
esac
|
||||
export SPARE_CORES=$(expr $efficiency_cores \* 2 / 3)
|
||||
|
||||
## cplusplus - ctest, cmake, ninja
|
||||
export SPARE_CORES=$(expr $(lscpu --extended | awk '{print $7}' | sort | uniq -c | head -1 | awk '{print $1}') \* 2 / 3)
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL=${SPARE_CORES}
|
||||
export CTEST_PARALLEL_LEVEL=${SPARE_CORES}
|
||||
export CTEST_PROGRESS_OUTPUT=1
|
||||
|
@ -159,6 +171,6 @@ export CARGO_BUILD_JOBS=${SPARE_CORES}
|
|||
# TODO move to proper place - is also called when firenvim starts
|
||||
#autolight
|
||||
#export TZ='Europe/Dublin'
|
||||
export TZ='Africa/Nairobi'
|
||||
#export TZ='Africa/Nairobi'
|
||||
|
||||
export CONTEST_NETWORK=lan-restricted-dev
|
||||
|
|
10
README.org
10
README.org
|
@ -65,7 +65,7 @@ and configuration for ~less~ and ~fzf~.
|
|||
- [[.local/bin/server][bin/server]]-scripts :: a few scripts for use on servers
|
||||
|
||||
* Package Setup (moving to [[https://github.com/xeruf/instalee][Instalee]])
|
||||
By Size:
|
||||
List installed arch packages sorted by size:
|
||||
: LC_ALL=C pacman -Qi | awk '/^Name/{name=$3} /^Installed Size/{print $4$5, name}' | sort -h
|
||||
Copy list of installed packages:
|
||||
: pacman -Qe | cut -d\ -f1 | xclip -selection clipboard
|
||||
|
@ -75,6 +75,14 @@ Copy list of installed packages:
|
|||
Run ~yadm bootstrap~ again after starting ZSH to finish initialization.
|
||||
|
||||
Basic required packages for scripts: diffr fzf
|
||||
|
||||
Bootstrapping Steps (tbd):
|
||||
- Linking of some bins (debian?)
|
||||
- Desktop Applications
|
||||
- Linux system config
|
||||
|
||||
TODO: Mac EDITOR env is overridden
|
||||
|
||||
** Full Personal Setup
|
||||
Manjaro:
|
||||
#+begin_src sh
|
||||
|
|
Loading…
Add table
Reference in a new issue