update shell config

This commit is contained in:
Uyanide committed 2026-07-27 02:53:24 +02:00
1 parent 678cfb76ba
commit 21e902bd61
24 files changed
+300 -634

No files matched your search

@@ -0,0 +1,11 @@
_Ga=T,f=32,q=2,c=24,r=11,s=240,v=254,i=16491826,t=d,o=z,U=1,m=1;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\_Gm=1;1APgTvL3Cn4Vu1T9xksvv4xFq78TclV+xJVY5fw36HeDeiIrkpkPprqICed0wODxs7H+QAxMPFCp51FnBurNIqq1PlRp3Gi2csRLwycCGp1O6NvvJeGpp59CbW1tAc1xC86gkHPMn6vW6vpDh8MK/nbLnUjOKBFS81XILLNi1dYYLFsfhZwaHzJrAwyzkblaRGVrEU0rK3RpcCK9ERk1Lgwa8xE+W7YF1RYeZ8r1LIZWO3jsPHicf65PP7rfzabfr/BYil0qfgcOHozPl60T8tQcIs/pWA0znnREDMsyjsukfDihlGqcJpytceNQUhGe6fcmjF4OjRYeKiugtgFqO9Bs46F3CrD6Ab3dI3o5gfI7cdLUqdxf//Y3hB8Np3bYgfLb+dnFiyHXp9eAQYO5AUPeFIpqNEgrVmHq5yvRo8/rGDhkHLq/MAybwk4js86NiMwmRGc2t2C2ZWU3ISKjDmmVNkz89GuMnjQXGi+QXW3GuXoL4w+qVAb+wUe7Yue+/VQ//8PP8Zoo9vPE7xvD3sSnC74R8rQCjmSpEX3OjJhzFiQUUi2zNQ+OL6YaiYXFirHn9CjV8Rgx4ROs3rITJL5qMvPQ2AXonSJMHhEWnwibD7D7ALPbL9p8NHYC4ubvtnP/84frsfCrRQTqqR07tnC8HX9ONSOa/XUiMvrL6/90Izbv3MeX1OlwICoFT/V9FTVGK9yAsGnXQfFPtzyEKV+sQV6jDxHp9YjKakZUdhOisxoZdqOz6xGRUYMzFWZ8u/UY+g+biFoLkFtD+LWiqM4Mk0cQx34wmXt3wvsI1s5/7vmFYj+P/oURI0Zh+Line truncated
􎻮̍̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̎̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̐̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̒̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̽̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̾̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̿̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͆̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͊̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͋̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
@@ -0,0 +1,13 @@
_Ga=T,f=32,q=2,c=28,r=13,s=280,v=297,i=15999844,t=d,o=z,U=1,m=1;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\_Gm=1;Tqi1TqGgqoG/7Nr+2JuWqZPr22Uci/xy34SJWLxqHV/a5kOqxo6MGjcyq8leEbUAhdom6rsUQ62hfA0rVMYoxs+cjfW7M9Hk5FHa7JD4xQN1swPVjG+cTJPJKa2OXtznKn7EqDvRqjPsBTDov9WWiYsZ9di+Z/+Kk8+8AJ9t/IkvqDYgQ9UERbkOybTIR6qk+LRVtGEqHUgqtSOpzMy4JZFxjAH7i1pZLu8uhRo3DB6LwjotNHo/yludKGuxQueJ4t6HHxeeePbFKICn5RlJMo41frnnnvswf8lKvqTNgxS1DRkaF9NzGb/Qqj7CLZRjSrlgSn0Y36WqcOejs1BjDqGizY8qrQc1pPm2ulDV5kSt3oPadg/MngiMNic/YvS46BV9r8a+/QlUO/PkgiP1xD3+y2JGxC8jH5k+M9z/ltFCbpVWOJBThQxVC1JK2kXbpNyAlErykyxI0jiRVOlEYqlV9I0YvxjY3yWo2pGgakNOlRX9br0X21JzUW/jUdJsR1mrHe3OMHYlpnPXDRgKndmyhY7h76Jxyfhr8Mv48ePx1vtL+HJdAGlqG9I1LsYtIqeIdkwHv9R5kFXrRlaVDa0B4P6Zb+PjtVthjgIVbT5Uab2obI35Sh7UG4Koa/cK7ZaQYHVHuOdeeCXarXsPrBDniG2gPib/ZfGl7r169uyWU1i876RTz8Kcjz/jCg9bhdTiRiFd2QJFmR5pzEYxg3JgUjRWkV8qiF8sErd0XvuV7Shs8uOmcdMx97Nv0eIBSphP6oKm1Qaj0yvcOPQ2YeHS5dTb7nbZhpFxLPHL2LFj8frcj3m1PgJFFdkoPLine truncated
􎻮̍̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̎̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̐̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̒̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̽̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̾̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̿̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͆̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͊̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͋̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͌̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͐̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
@@ -0,0 +1,15 @@
_Ga=T,f=32,q=2,c=32,r=15,s=320,v=339,i=4904756,t=d,o=z,U=1,m=1;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\_Gm=1;FTnEbRn6r0DtTr43tDQeFGpcyK23IFthwq7aHmjswD/mPYuX12xCh0NAbZsNii4rul0hfLJxMz9g2Egom5q6AVyUeQwiRBxJ/Pf44mf4dnsMJcRtKf6TNnkhYddXOg/oQjHFv81ulLb5sKu2G698sgVqWwzyHg/qdW6o9W406p1o7HGAhiUUlFbwI08dlzj/osugaWwPA3g6N3etWB/+fa/zgMbW9h0DBo8UZj+4SKjvciKnpg2FamOK/5Lcl5uOfzXEe14Uajwo0LiQr7Yz7ZddZ0KOzASVFZj/0hrcs3AZWi1R1HU4oNQ6oNJZhU6rQxgyaoywYtW7pAGns8+FmKMQcQTy3/wnn+HbHXEUtXhS+i8EaYsfxc1eFDd5Wfy7T+NBCeUAm90oafNAZgjj0eUfYUuRAipzGDUddjT0uNBk9KJJ74K62waTO8K16u3C9bfczg0cNALf/vAL1Rwp5z449fyi3jhY+130zuqPcczxJ/E/5JSjXGNCkVKHIrUFecRtGbFvmv8KG73ME5OrJN1nxl65Gdm1JuTKzJDr4ljz9V5cc+v90HlikHc6Ua/zoLbDDEcCwoJnX0icd/GlQjDBr5GbTH3JE/8HfzRFiPj/lf9mzrwTDz+xhG+zxVCosaOoNYTi1hCkzd6kv5Z8tkwDkv5L+i2KmlxQmmP4bJcU8156D+1eoK6b6iEeqPVeNBs8KQ608B0mD2/2xoUXl7/NZ2X1Fl557U3EeOwCcGrqGI7onGCG9uutbulYN3TkWOGOuY8nZB12XiLvhrTeiMIGc1L/aZLxb67as18H5hMn1tsY9+UoTMiWm5BdZ8Line truncated
􎻮̍̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̎̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̐̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̒̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̽̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̾̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̿̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͆̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͊̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͋̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͌̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͐̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͑̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͒̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
@@ -0,0 +1,20 @@
_Ga=T,f=32,q=2,c=42,r=20,s=420,v=445,i=13610601,t=d,o=z,U=1,m=1;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\_Gm=1;2LwROEMx/GEVm/+ZnX/syUJZZa0MwNVD/Hd8dsVvr4fUQy+9utZOM/WOWbRMbO8LiA1dPtQZg6jWkfbk40X5RT8nf1252oky0iSNEzUaN9Okhq4Q6rVeHHLaMqyra4Y9C2hsaUlnT0juqCh8+PkP7NxZdde9yIqgPiD8WobD2U30KJVKHQygZ/FFy/DA6udE3WAYlbIBbFM7UUcxo0669aJW5UedmnJ3g6jXBFGv9qFRT/WOQTTpvejo9bPezT32CEIpEZ9/V4rhI0ZLo8dOwCuvr40CIP/dAnpN7r/776egA3SsguGw6pgTTsWIkZOEr8qaoBxMSOVyK7aqPajUBVHbFd6hSfWF2JExiKouH9OjrRoXarQe1KjdqNV6ILcmMW/hcjz5yofwCIDaloLenoTR4kOf1YkDDz1SnLXvAfAGQmQjHczPFw5nt7GPSI96Tzn9TNxy98Oi1hJEldzEakbq1R7UqbyoVfpRqwqiVl1YAdRqfKjXBdBAetQVRGtPAJ39AXR0uaHu9cAXl/DNxjKMmziVzRS48977EUukBgFcfPnll7McB+6H+e+Fjs17771H+d2LH37kESebnXft7VmNLS5WK21SSYcV5So3yjV+lKl9qCLbiOUw5G+NAVQbfdjK4kfunB5pPKhU2KGyZ3Hjfc/jomvuhTkKGNwidLYEnFEJkayAW+58gM3qe/Pdv2QAvGa328cW3tOv/b1wOJx/qx4dkkpnBo4+/iRccd0totrkQ02nBbVqN+q0fmYL1Sj8qFUGftQjTQDVGh/qDEHUG4PYTrX43UFWf9/ZF4Cq3w+9xQdPPIv6dgWOPLine truncated
􎻮̍̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̎̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̐̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̒̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̽̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̾̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮̿̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͆̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͊̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͋̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͌̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͐̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͑̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͒̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͗̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮͛̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮ͣ̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮ͤ̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
􎻮ͥ̅􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮􎻮
+13 -12
View File
@@ -42,6 +42,7 @@ fi
if type opam &>/dev/null; then
eval "$(opam env)"
fi
prepend_path "$HOME/.local/share/fnm/aliases/default/bin" # 'fnm env' is eval'ed in .bashrc
prepend_path "$HOME/.cargo/bin"
prepend_path "$HOME/go/bin"
prepend_path "$HOME/.local/bin"
@@ -54,20 +55,20 @@ if type gpgconf &>/dev/null && type gpg-connect-agent &>/dev/null &&
[ -x "$HOME/.local/scripts/gpg-init" ] &&
[ "${UY_ENABLE_GPG_AGENT_SSH:-0}" = "1" ]; then
# GPG agent for SSH
eval "$($HOME/.local/scripts/gpg-init 2>/dev/null)" &>/dev/null
eval "$("$HOME/.local/scripts/gpg-init" 2>/dev/null)" &>/dev/null
fi
if type ssh-add &>/dev/null && type ssh-agent &>/dev/null &&
{ [ -z "$SSH_AUTH_SOCK" ] ||
[ "$(
ssh-add -l &>/dev/null
echo $?
)" -eq 2 ]; } &&
[ -x "$HOME/.local/scripts/ssh-init" ]; then
unset SSH_AUTH_SOCK
# SSH with cross-session ssh-agent
eval "$($HOME/.local/scripts/ssh-init 2>/dev/null)" &>/dev/null
export UY_USING_SSH_AGENT=1
if type ssh-add &>/dev/null && type ssh-agent &>/dev/null; then
# ssh-add -l: 0 = agent with keys, 1 = agent without keys, 2 = no agent
if [ -n "$SSH_AUTH_SOCK" ] &&
{ ssh-add -l &>/dev/null; [ $? -ne 2 ]; }; then
export UY_USING_SSH_AGENT=1
elif [ -x "$HOME/.local/scripts/ssh-init" ]; then
unset SSH_AUTH_SOCK
# SSH with cross-session ssh-agent
eval "$("$HOME/.local/scripts/ssh-init" 2>/dev/null)" &>/dev/null
[ -n "$SSH_AUTH_SOCK" ] && export UY_USING_SSH_AGENT=1
fi
fi
[ -f "$HOME/.bashrc" ] && . "$HOME/.bashrc"
+7 -3
View File
@@ -53,11 +53,15 @@ if type fnm &>/dev/null; then
eval "$(fnm env --shell bash --use-on-cd)"
fi
if [[ ${UY_USING_SSH_AGENT:-0} == 1 ]]; then
# $uy_ssh_keys should be set in a device-specific file or left empty for defaults
if [[ ${UY_ENABLE_GPG_AGENT_SSH:-0} == 1 ]] &&
[ -x "$HOME/.local/scripts/gpg-init" ] && type gpgconf &>/dev/null; then
: # GPG agent handles SSH — nothing to do
elif [[ ${UY_USING_SSH_AGENT:-0} == 1 ]]; then
function sshs() {
if ! ssh-add -l &>/dev/null; then
if [ -n "$ssh_keys" ]; then
ssh-add "${ssh_keys[@]}"
if [ ${#uy_ssh_keys[@]} -gt 0 ]; then
ssh-add "${uy_ssh_keys[@]}"
else
ssh-add
fi
@@ -1,13 +1,4 @@
*
!.gitignore
!05-done.fish
!10-env.fish
!10-kitty.fish
!10-niri-env.fish
!10-sshs.fish
!50-prompt.fish
!50-theme.fish
!60-alias.fish
!60-fetch.fish
!fish_frozen_key_bindings.fish
!fish_frozen_theme.fish
@@ -1,349 +0,0 @@
# MIT License
# Copyright (c) 2016 Francisco Lourenço & Daniel Wehner
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
if not status is-interactive
exit
end
set -g __done_version 1.21.1
function __done_run_powershell_script
set -f powershell_exe (command --search "powershell.exe")
if test "$status" -ne 0
and command --search wslvar
set -f powershell_exe (wslpath (wslvar windir)/System32/WindowsPowerShell/v1.0/powershell.exe)
end
if string length --quiet "$powershell_exe"
and test -x "$powershell_exe"
set cmd (string escape $argv)
eval "$powershell_exe -Command $cmd"
end
end
function __done_windows_notification -a title -a message
if test "$__done_notify_sound" -eq 1
set soundopt "<audio silent=\"false\" src=\"ms-winsoundevent:Notification.Default\" />"
else
set soundopt "<audio silent=\"true\" />"
end
__done_run_powershell_script "
[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | Out-Null
[Windows.UI.Notifications.ToastNotification, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
\$toast_xml_source = @\"
<toast>
$soundopt
<visual>
<binding template=\"ToastText02\">
<text id=\"1\">$title</text>
<text id=\"2\">$message</text>
</binding>
</visual>
</toast>
\"@
\$toast_xml = New-Object Windows.Data.Xml.Dom.XmlDocument
\$toast_xml.loadXml(\$toast_xml_source)
\$toast = New-Object Windows.UI.Notifications.ToastNotification \$toast_xml
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier(\"fish\").Show(\$toast)
"
end
function __done_get_focused_window_id
if type -q lsappinfo
lsappinfo info -only bundleID (lsappinfo front | string replace 'ASN:0x0-' '0x') | cut -d '"' -f4
else if test -n "$SWAYSOCK"
and type -q jq
swaymsg --type get_tree | jq '.. | objects | select(.focused == true) | .id'
else if test -n "$HYPRLAND_INSTANCE_SIGNATURE"
hyprctl activewindow | awk 'NR==1 {print $2}'
else if test -n "$NIRI_SOCKET"
and type -q jq
niri msg --json focused-window | jq ".id"
else if begin
test "$XDG_SESSION_DESKTOP" = gnome; and type -q gdbus
end
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'global.display.focus_window.get_id()'
else if type -q xprop
and test -n "$DISPLAY"
# Test that the X server at $DISPLAY is running
and xprop -grammar >/dev/null 2>&1
xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2
else if uname -a | string match --quiet --ignore-case --regex microsoft
__done_run_powershell_script '
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class WindowsCompat {
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
}
"@
[WindowsCompat]::GetForegroundWindow()
'
else if set -q __done_allow_nongraphical
echo 12345 # dummy value
end
end
function __done_is_tmux_window_active
set -q fish_pid; or set -l fish_pid %self
# find the outermost process within tmux
# ppid != "tmux" -> pid = ppid
# ppid == "tmux" -> break
set tmux_fish_pid $fish_pid
while set tmux_fish_ppid (ps -o ppid= -p $tmux_fish_pid | string trim)
# remove leading hyphen so that basename does not treat it as an argument (e.g. -fish), and return only
# the actual command and not its arguments so that basename finds the correct command name.
# (e.g. '/usr/bin/tmux' from command '/usr/bin/tmux new-session -c /some/start/dir')
and ! string match -q "tmux*" (basename (ps -o command= -p $tmux_fish_ppid | string replace -r '^-' '' | string split ' ')[1])
set tmux_fish_pid $tmux_fish_ppid
end
# tmux session attached and window is active -> no notification
# all other combinations -> send notification
tmux list-panes -a -F "#{session_attached} #{window_active} #{pane_pid}" | string match -q "1 1 $tmux_fish_pid"
end
function __done_is_screen_window_active
string match --quiet --regex "$STY\s+\(Attached" (screen -ls)
end
function __done_is_process_window_focused
# Return false if the window is not focused
if set -q __done_allow_nongraphical
return 1
end
if set -q __done_kitty_remote_control
kitty @ --password="$__done_kitty_remote_control_password" ls | jq -e ".[].tabs[] | select(any(.windows[]; .is_self)) | .is_focused" >/dev/null
return $status
end
set __done_focused_window_id (__done_get_focused_window_id)
if test "$__done_sway_ignore_visible" -eq 1
and test -n "$SWAYSOCK"
string match --quiet --regex "^true" (swaymsg -t get_tree | jq ".. | objects | select(.id == "$__done_initial_window_id") | .visible" 2>/dev/null)
return $status
else if test -n "$HYPRLAND_INSTANCE_SIGNATURE"
and test "$__done_initial_window_id" = (hyprctl activewindow | awk 'NR==1 {print $2}')
return $status
else if test -n "$NIRI_SOCKET"
and test "$__done_initial_window_id" = (niri msg --json focused-window | jq ".id")
return $status
else if test "$__done_initial_window_id" != "$__done_focused_window_id"
return 1
end
# If inside a tmux session, check if the tmux window is focused
if type -q tmux
and test -n "$TMUX"
__done_is_tmux_window_active
return $status
end
# If inside a screen session, check if the screen window is focused
if type -q screen
and test -n "$STY"
__done_is_screen_window_active
return $status
end
return 0
end
function __done_humanize_duration -a milliseconds
set -l seconds (math --scale=0 "$milliseconds/1000" % 60)
set -l minutes (math --scale=0 "$milliseconds/60000" % 60)
set -l hours (math --scale=0 "$milliseconds/3600000")
if test "$hours" -gt 0
printf '%s' $hours'h '
end
if test "$minutes" -gt 0
printf '%s' $minutes'm '
end
if test "$seconds" -gt 0
printf '%s' $seconds's'
end
end
# verify that the system has graphical capabilities before initializing
if test -z "$SSH_CLIENT" # not over ssh
and count (__done_get_focused_window_id) >/dev/null # is able to get window id
set __done_enabled
end
if set -q __done_allow_nongraphical
and set -q __done_notification_command
set __done_enabled
end
if set -q __done_enabled
set -g __done_initial_window_id ''
set -q __done_min_cmd_duration; or set -g __done_min_cmd_duration 5000
set -q __done_exclude; or set -g __done_exclude '^git (?!push|pull|fetch)'
set -q __done_notify_sound; or set -g __done_notify_sound 0
set -q __done_sway_ignore_visible; or set -g __done_sway_ignore_visible 0
set -q __done_tmux_pane_format; or set -g __done_tmux_pane_format '[#{window_index}]'
set -q __done_notification_duration; or set -g __done_notification_duration 3000
function __done_started --on-event fish_preexec
set __done_initial_window_id (__done_get_focused_window_id)
end
function __done_ended --on-event fish_postexec
set -l exit_status $status
# backwards compatibility for fish < v3.0
set -q cmd_duration; or set -l cmd_duration $CMD_DURATION
if test -n "$cmd_duration"
and test "$cmd_duration" -gt "$__done_min_cmd_duration" # longer than notify_duration
and not __done_is_process_window_focused # process pane or window not focused
# don't notify if command matches exclude list
for pattern in $__done_exclude
if string match -qr -- $pattern $argv[1]
return
end
end
# Store duration of last command
set -l humanized_duration (__done_humanize_duration "$cmd_duration")
set -l title "Done in $humanized_duration"
set -l wd (string replace --regex "^$HOME" "~" (pwd))
set -l message "$wd/ $argv[1]"
set -l sender $__done_initial_window_id
if test "$exit_status" -ne 0
set title "Failed ($exit_status) after $humanized_duration"
end
if test -n "$TMUX_PANE"
set message (tmux lsw -F"$__done_tmux_pane_format" -f '#{==:#{pane_id},'$TMUX_PANE'}')" $message"
end
if set -q __done_notification_command
eval $__done_notification_command
if test "$__done_notify_sound" -eq 1
echo -e "\a" # bell sound
end
else if set -q KITTY_WINDOW_ID
printf "\x1b]99;i=done:d=0;$title\x1b\\"
printf "\x1b]99;i=done:d=1:p=body;$message\x1b\\"
else if test "$TERM_PROGRAM" = ghostty; or test "$TERM_PROGRAM" = WezTerm
printf "\x1b]777;notify;%s;%s\x1b\\" "$title" "$message"
else if test "$TERM_PROGRAM" = iTerm.app
printf "\x1b]9;%s: %s\x1b\\" "$title" "$message"
else if type -q terminal-notifier # https://github.com/julienXX/terminal-notifier
if test "$__done_notify_sound" -eq 1
# pipe message into terminal-notifier to avoid escaping issues (https://github.com/julienXX/terminal-notifier/issues/134). fixes #140
# not using the -sender option because it hangs for some apps (https://github.com/julienXX/terminal-notifier/issues/301)
echo "$message" | terminal-notifier -title "$title" -sound default
else
echo "$message" | terminal-notifier -title "$title"
end
else if type -q osascript # AppleScript
# escape double quotes that might exist in the message and break osascript. fixes #133
set -l message (string replace --all '"' '\"' "$message")
set -l title (string replace --all '"' '\"' "$title")
if test "$__done_notify_sound" -eq 1
osascript -e "display notification \"$message\" with title \"$title\" sound name \"Glass\""
else
osascript -e "display notification \"$message\" with title \"$title\""
end
else if type -q notify-send # Linux notify-send
# set urgency to normal
set -l urgency normal
# use user-defined urgency if set
if set -q __done_notification_urgency_level
set urgency "$__done_notification_urgency_level"
end
# override user-defined urgency level if non-zero exitstatus
if test "$exit_status" -ne 0
set urgency critical
if set -q __done_notification_urgency_level_failure
set urgency "$__done_notification_urgency_level_failure"
end
end
notify-send --hint=int:transient:1 --urgency=$urgency --icon=utilities-terminal --app-name=fish --expire-time=$__done_notification_duration "$title" "$message"
if test "$__done_notify_sound" -eq 1
echo -e "\a" # bell sound
end
else if type -q notify-desktop # Linux notify-desktop
set -l urgency
if test "$exit_status" -ne 0
set urgency "--urgency=critical"
end
notify-desktop $urgency --icon=utilities-terminal --app-name=fish "$title" "$message"
if test "$__done_notify_sound" -eq 1
echo -e "\a" # bell sound
end
else if uname -a | string match --quiet --ignore-case --regex microsoft
__done_windows_notification "$title" "$message"
else # anything else
echo -e "\a" # bell sound
end
end
end
end
function __done_uninstall -e done_uninstall
# Erase all __done_* functions
functions -e __done_ended
functions -e __done_started
functions -e __done_get_focused_window_id
functions -e __done_is_tmux_window_active
functions -e __done_is_screen_window_active
functions -e __done_is_process_window_focused
functions -e __done_windows_notification
functions -e __done_run_powershell_script
functions -e __done_humanize_duration
# Erase __done variables
set -e __done_version
end
@@ -1,18 +0,0 @@
# ssh with encrypted private keys
# $ssh_keys should be set in advance or left empty to use the default keys
if set -q UY_ENABLE_GPG_AGENT_SSH; and test $UY_ENABLE_GPG_AGENT_SSH != "0";\
and type -q gpg-init; and type -q gpgconf
true # do nothing
else if type -q ssh-init; and type -q ssh-add
# avoid entering passphrase every time
function sshs
# test if keys are added to ssh-agent
if not ssh-add -l > /dev/null 2>&1
ssh-add $ssh_keys
end
ssh $argv
end
end
@@ -1,209 +0,0 @@
# fzf
if type -q fzf
fzf --fish | source
# use fd if available
if type -q fd
set -x FD_CMD "fd"
else if type -q fdfind
set -x FD_CMD "fdfind"
end
if test -n "$FD_CMD"
set -x FZF_DEFAULT_COMMAND "$FD_CMD --type f --hidden --exclude .git"
set -x FZF_CTRL_T_COMMAND "$FZF_DEFAULT_COMMAND"
set -x FZF_ALT_C_COMMAND "$FD_CMD --type d --hidden --exclude .git"
end
# C-y to copy fzf's output
if type -q wl-copy
set -x FZF_DEFAULT_OPTS "--bind \"ctrl-y:execute-silent(echo -n {+} | wl-copy)+abort\""
end
# fz: fuzzy find a file and preview
if type -q bat
alias fz="fzf --preview 'bat --style=numbers --color=always {}'"
else
alias fz="fzf --preview 'cat -n {}'"
end
# fe: fuzzy find a file and edit using $EDITOR
function fe
set -l file $(fz --header "[edit with $EDITOR]")
if test -n "$file"
$EDITOR "$file"
end
end
# fkp: fuzzy find a process and kill with SIGKILL
function fkp
set -l pids (ps -ef | sed 1d | fzf -m --preview 'pstree -p $(echo {} | awk "{print \$2}")' --header '[kill process]' | awk '{print $2}')
if test -n "$pids"
kill -9 $pids
end
end
# fks: fuzzy find a TCP process and kill with SIGKILL
if type -q ss
function fks
set -l entries (sudo ss -lptn)
set -l pids (echo "$entries" | fzf -m --header-lines 1 --header '[kill process]' | grep -oP 'pid=\K\d+')
if test -n "$pids"
sudo kill -9 $pids
end
end
end
if type -q yay
# fyq: fuzzy yay query
alias fyq="yay -Qq | fzf --preview 'yay -Qi {}'"
# fyi: fuzzy yay install
function fyi
set -l pkg (yay -Sl | awk '{print $1"/"$2}' | fzf -m --preview 'yay -Si {}' --header "[install package]" $argv)
if test -n "$pkg"
yay -S $pkg
end
end
# fyr: fuzzy yay remove
function fyr
set -l pkg (yay -Qq | fzf -m --preview 'yay -Qi {}' --header "[remove package]" $argv)
if test -n "$pkg"
yay -Rn $pkg
end
end
end
end
# cd
if type -q zoxide
zoxide init fish | source
alias cd=z
end
# rm
# if type -q trash
# alias rm="echo \"use 'trash' instead :)\" && sh -c \"exit 42\""
# end
# ls
if type -q eza
alias ll="eza -lh --group-directories-first --icons=auto"
alias la="eza -lh --group-directories-first --icons=auto --all"
alias lt="eza --tree --level=2 --long --icons --git"
else
alias ll="ls -lh --group-directories-first --color=auto"
alias la="ls -lah --group-directories-first --color=auto"
end
# directories
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
# grep
alias grep="grep --color=auto"
# copy DIR1 DIR2
function copy
set count (count $argv | tr -d \n)
if test "$count" = 2; and test -d "$argv[1]"
set from (echo $argv[1] | trim-right /)
set to (echo $argv[2])
command cp -r $from $to
else
command cp $argv
end
end
# wget
if type -q wget
alias wget="wget -c "
end
# colorize
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
# Sort pacman packages by size
if type -q expac
alias big="expac -H M '%m\t%n' | sort -h | nl"
end
# clock
if type -q tty-clock
alias clock="tty-clock -c -C 4"
end
# journalctl
alias jctl="journalctl -p 3 -xb"
# nohup
function nh
nohup $argv >/dev/null 2>&1 & disown
end
# ffmpeg
alias ffmpeg="ffmpeg -hide_banner -nostdin"
alias ffprobe="ffprobe -hide_banner"
# git
if type -q git
function gcp
git add -A || return 1
if test (count $argv) -eq 0
git commit -m "👐 foo: too lazy to come up with a helpful commit message :)" || return 1
else
git commit -m "$argv" || return 1
end
git push
end
if type -q wl-paste
# alias gc="git clone \$(wl-paste)"
function gc
set -l repo (wl-paste)
if not string match -r '^(http|https|git|ssh)://|^git@' "$repo" >/dev/null 2>&1
echo "Error: Clipboard does not contain a valid git repository URL." >&2
echo "Error: Clipboard content: $repo" >&2
read -P "Enter a valid git repository URL: " repo
if not string match -r '^(http|https|git|ssh)://|^git@' "$repo"
echo "Error: Invalid git repository URL." >&2
return 1
end
end
git clone $repo
end
function pingo
cd "$HOME/Repositories/PGdP" || return 1
set -l repo (wl-paste)
if not string match -r '^(http|https|git|ssh)://|^git@' "$repo" >/dev/null 2>&1
echo "Error: Clipboard does not contain a valid git repository URL." >&2
echo "Error: Clipboard content: $repo" >&2
read -P "Enter a valid git repository URL: " repo
if not string match -r '^(http|https|git|ssh)://|^git@' "$repo"
echo "Error: Invalid git repository URL." >&2
return 1
end
end
set -l dir_name (basename "$repo" .git)
if ! test -d "$dir_name"
git clone $repo || return 1
end
set -l app $argv[1]
if test -n "$app"; and type -q "$app"
echo Opening project with "$app"
nohup $app $dir_name >/dev/null 2>&1 & disown
else
echo Opening method missing or invalid
cd $dir_name
end
end
end
end
+4
View File
@@ -4,3 +4,7 @@ end
# no greeting
set fish_greeting
for f in $__fish_config_dir/rc.d/*.fish
source $f
end
+11
View File
@@ -0,0 +1,11 @@
*
!.gitignore
!05-done.fish
!10-env.fish
!10-kitty.fish
!10-niri-env.fish
!10-sshs.fish
!50-prompt.fish
!50-theme.fish
!60-alias.fish
!60-fetch.fish
@@ -7,7 +7,7 @@ if type -q bat
end
# Editor
for app in nvim helix vim vi nano
for app in helix nvim vim vi nano
if type -q $app
set -x -g EDITOR $app
set -x -g VISUAL $app
@@ -31,3 +31,9 @@ set -U __done_notification_urgency_level low
if type -q fnm
fnm env --shell fish --use-on-cd | source
end
# bat
if type -q bat
set -xg BAT_THEME "Catppuccin Mocha"
set -xg BAT_STYLE "default,-numbers"
end
@@ -0,0 +1,18 @@
# ssh with encrypted private keys
# $uy_ssh_keys should be set in a device-specific file or left empty for defaults
if test "$UY_ENABLE_GPG_AGENT_SSH" = 1;\
and test -x "$HOME/.local/scripts/gpg-init"; and type -q gpgconf
true # GPG agent handles SSH — nothing to do
else if test "$UY_USING_SSH_AGENT" = 1
# avoid entering passphrase every time
function sshs
# test if keys are added to ssh-agent
if not ssh-add -l > /dev/null 2>&1
ssh-add $uy_ssh_keys
end
ssh $argv
end
end
@@ -1,7 +1,4 @@
function fish_prompt -d "Write out the prompt"
# This shows up as USER@HOST /home/user/ >, with the directory colored
# $USER and $hostname are set by fish, so you can just use them
# instead of using `whoami` and `hostname`
printf '%s@%s %s%s%s > ' $USER $hostname \
(set_color $fish_color_cwd) (prompt_pwd) (set_color normal)
end
@@ -0,0 +1,84 @@
# fzf
if type -q fzf
fzf --fish | source
# use fd if available
if type -q fd
set -g FD_CMD "fd"
else if type -q fdfind
set -g FD_CMD "fdfind"
end
if test -n "$FD_CMD"
set -x FZF_DEFAULT_COMMAND "$FD_CMD --type f --hidden --exclude .git"
set -x FZF_CTRL_T_COMMAND "$FZF_DEFAULT_COMMAND"
set -x FZF_ALT_C_COMMAND "$FD_CMD --type d --hidden --exclude .git"
end
# C-y to copy fzf's output
if type -q wl-copy
set -x FZF_DEFAULT_OPTS "--bind \"ctrl-y:execute-silent(echo -n {+} | wl-copy)+abort\""
end
end
# cd
if type -q zoxide
zoxide init fish | source
alias cd=z
end
# rm
# if type -q trash
# alias rm="echo \"use 'trash' instead :)\" && sh -c \"exit 42\""
# end
# ls
if type -q eza
alias ls="eza --color=auto --hyperlink=auto"
alias ll="eza -lh --group-directories-first --icons=auto --hyperlink=auto"
alias la="eza -lh --group-directories-first --icons=auto --hyperlink=auto --all"
alias lt="eza --tree --level=2 --long --icons --git --hyperlink=auto"
else
alias ls="ls --color=auto --hyperlink=auto"
alias ll="ls -lh --group-directories-first --color=auto --hyperlink=auto"
alias la="ls -lah --group-directories-first --color=auto --hyperlink=auto"
end
# directories
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
# colorize
alias grep="grep --color=auto"
alias dir="dir --color=auto"
alias vdir="vdir --color=auto"
alias fgrep="fgrep --color=auto"
alias egrep="egrep --color=auto"
alias diff="diff --color=auto"
# wget
if type -q wget
alias wget="wget -c"
end
# Sort pacman packages by size
if type -q expac
alias big="expac -H M '%m\t%n' | sort -h | nl"
end
# clock
if type -q tty-clock
alias clock="tty-clock -c -C 4"
end
# journalctl
alias jctl="journalctl -p 3 -xb"
# nohup
function nh
nohup $argv >/dev/null 2>&1 & disown
end
# ffmpeg
alias ffmpeg="ffmpeg -hide_banner -nostdin"
alias ffprobe="ffprobe -hide_banner"
+32 -6
View File
@@ -9,10 +9,33 @@ zmodload zsh/datetime
: ${uy_done_min_cmd_duration:=10}
: ${uy_done_exclude:='^(nvim|helix|hx|vim|vi|nano|less|more|man|ssh|top|htop|btop|sudoedit)$'}
uy_done_get_focused_window_id() {
(( $+commands[jq] )) || return
niri msg --json focused-window 2>/dev/null | jq -r '.id // empty'
}
# Returns the id in $REPLY, empty if there is none or niri did not answer.
if zmodload zsh/net/socket 2>/dev/null; then
uy_done_get_focused_window_id() {
setopt local_options extended_glob
local fd line
local -a match mbegin mend
REPLY=
zsocket "$NIRI_SOCKET" 2>/dev/null || return
fd=$REPLY
REPLY=
if print -u $fd -r -- '"FocusedWindow"' 2>/dev/null; then
read -t 1 -u $fd -r line 2>/dev/null
fi
exec {fd}>&-
# With no focused window the payload is null, so the id is simply absent.
[[ $line == (#b)*'"FocusedWindow":'*'"id":'(<->)* ]] && REPLY=$match[1]
}
elif (( $+commands[jq] )); then
uy_done_get_focused_window_id() {
REPLY=$(niri msg --json focused-window 2>/dev/null | jq -r '.id // empty')
}
else
return
fi
uy_done_cmd_name() {
local -a words
@@ -33,9 +56,11 @@ uy_done_cmd_name() {
}
uy_done_preexec() {
local REPLY
uy_done_cmd="$1"
uy_done_start=$EPOCHSECONDS
uy_done_window_id=$(uy_done_get_focused_window_id)
uy_done_get_focused_window_id
uy_done_window_id=$REPLY
}
uy_done_precmd() {
@@ -54,7 +79,8 @@ uy_done_precmd() {
# skip if window is still focused
local current_id
current_id=$(uy_done_get_focused_window_id)
uy_done_get_focused_window_id
current_id=$REPLY
[[ -n "$uy_done_window_id" && "$uy_done_window_id" = "$current_id" ]] && return
# humanize duration
+1 -7
View File
@@ -7,7 +7,7 @@ fi
# Editor
for _uy_app in nvim helix vim vi nano; do
for _uy_app in helix nvim vim vi nano; do
if (( $+commands[$_uy_app] )); then
export EDITOR=$_uy_app
export VISUAL=$_uy_app
@@ -30,12 +30,6 @@ fi
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#6c7086"
# Vscode shell integration
if (( $+commands[code] )) && [[ "$TERM_PROGRAM" == "vscode" ]]; then
source "$(code --locate-shell-integration-path zsh)"
fi
# fnm
if (( $+commands[fnm] )); then
+15 -6
View File
@@ -17,7 +17,7 @@ uy_oops_confirm() {
# when the current one ends in a backslash; zsh writes a command that itself
# ends in a backslash as "\ " (trailing space), so the marker is unambiguous.
# Walking forward and remembering the start of each entry is exact for
# entries of any length — scanning backwards over a fixed window is not.
# entries of any length.
local start
start=$(awk '{ if (!cont) start = NR; cont = /\\$/ } END { print start + 0 }' "$HISTFILE")
@@ -49,11 +49,20 @@ uy_oops_confirm() {
# one) correctly leaves an empty file.
local n=${#ordered[@]}
head -n $(( start - 1 )) "$HISTFILE" > "$HISTFILE.tmp" && mv "$HISTFILE.tmp" "$HISTFILE"
# Replace the in-memory history with the updated file.
# `fc -R` would *append* the file on top of what is already in memory,
# which both duplicates every entry and leaves the deleted command in
# memory — the next `fc -W` (e.g. the one at the top of this function
# on a second `oops`) would then write it straight back to the file.
# Replace the in-memory history with the updated file. `fc -p` is the
# only primitive that replaces it: `fc -R` *appends* the file on top of
# what is already in memory, which both duplicates every entry and
# leaves the deleted command there for the next `fc -W` to write back.
#
# `fc -p` pushes a history layer, and each layer retains a full copy of
# the history, so pop the layer the previous call left behind first —
# that keeps exactly one live no matter how often `oops` runs. `fc -P`
# only restores the old in-memory list, it does not write to $HISTFILE,
# so it cannot undo the deletion above; and the push on the very next
# line replaces that stale list immediately. Both must stay in this
# branch: on the cancel path nothing was deleted, so memory already
# matches the file and popping would corrupt it.
fc -P 2>/dev/null
fc -p "$HISTFILE" $HISTSIZE $SAVEHIST
print -P "%F{green}Deleted ($n line(s) removed).%f"
else
+35 -7
View File
@@ -5,13 +5,42 @@ PROMPT='%F{blue}%n@%m%f %F{cyan}%~%f > '
if (( $+commands[starship] )); then
eval "$(starship init zsh)"
function uy_transient_prompt() {
local file palette color
file=${STARSHIP_CONFIG:-"$HOME/.config/starship.toml"}
palette=$(sed -n "s/^palette\s*=\s*'\(.*\)'/\1/p" "$file")
color=$(sed -n "/^\[palettes\.${palette}\]/,/^\[/{s/^accent\s*=\s*\"\(.*\)\"/\1/p}" "$file")
# accent of the [palettes.<name>] named by the top-level `palette` key.
function uy_starship_accent() {
setopt local_options extended_glob
local line palette in_palette=0
local -a lines
[[ -r $1 ]] || return 1
lines=( ${(f)"$(<$1)"} )
PROMPT="%F{$color}#%f " zle .reset-prompt
for line in $lines; do
if [[ $line == palette[[:blank:]]#=[[:blank:]]#\'*\' ]]; then
palette=${${line#*\'}%\'}
break
fi
done
[[ -n $palette ]] || return 1
for line in $lines; do
if (( in_palette )); then
[[ $line == \[* ]] && return 1
if [[ $line == accent[[:blank:]]#=[[:blank:]]#\"*\" ]]; then
REPLY=${${line#*\"}%\"}
return 0
fi
elif [[ $line == "[palettes.$palette]" ]]; then
in_palette=1
fi
done
return 1
}
function uy_transient_prompt() {
local REPLY
uy_starship_accent "${STARSHIP_CONFIG:-$HOME/.config/starship.toml}" &&
uy_accent=$REPLY
PROMPT="%F{${uy_accent:-blue}}#%f " zle .reset-prompt
}
autoload -Uz add-zle-hook-widget
@@ -21,4 +50,3 @@ if (( $+commands[starship] )); then
elif [[ -f "$HOME/.config/posh_theme.omp.json" ]] && (( $+commands[oh-my-posh] )); then
eval "$(oh-my-posh init zsh --config "$HOME/.config/posh_theme.omp.json")"
fi
+10 -4
View File
@@ -5,9 +5,9 @@ if (( $+commands[fzf] )); then
# use fd if available (search cwd only, skip vcs/cache junk)
if (( $+commands[fd] )); then
export FD_CMD="fd"
FD_CMD="fd"
elif (( $+commands[fdfind] )); then
export FD_CMD="fdfind"
FD_CMD="fdfind"
fi
if [[ -n "$FD_CMD" ]]; then
export FZF_DEFAULT_COMMAND="$FD_CMD --type f --hidden --exclude .git"
@@ -225,8 +225,14 @@ if (( $+commands[jj] )); then
jjp() {
default_branch() {
git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|.*/||' \
|| git remote show origin | awk '/HEAD branch/ {print $NF}' || echo "master"
local ref
ref=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null)
if [[ -n "$ref" ]]; then
print -r -- "${ref:t}"
return
fi
ref=$(git remote show origin 2>/dev/null | awk '/HEAD branch/ {print $NF}')
print -r -- "${ref:-master}"
}
local branch pos
branch=${1:-$(default_branch)}
@@ -52,6 +52,10 @@ sixel)
uy_fetch_args=(--logo-type raw --logo-width 42 --logo "$HOME/.config/fastfetch/logo_ros/42x.sixel" --color "$uy_fetch_color")
uy_fetch_args_brief=(--logo-type raw --logo-width 28 --logo "$HOME/.config/fastfetch/logo_ros/28x.sixel" --color "$uy_fetch_color")
;;
unicode)
uy_fetch_args=(--logo-type raw --logo-width 42 --logo "$HOME/.config/fastfetch/logo_ros/42x.unicode" --color "$uy_fetch_color")
uy_fetch_args_brief=(--logo-type raw --logo-width 28 --logo "$HOME/.config/fastfetch/logo_ros/28x.unicode" --color "$uy_fetch_color")
;;
*) # kitty, auto, etc.
uy_fetch_args=(--logo-type "$uy_fetch_logo_type" --logo-width 42 --logo "$HOME/.config/fastfetch/logo_ros/ros.png" --color "$uy_fetch_color")
uy_fetch_args_brief=(--logo-type "$uy_fetch_logo_type" --logo-width 28 --logo "$HOME/.config/fastfetch/logo_ros/ros.png" --color "$uy_fetch_color")