240 Commits
Author SHA1 Message Date
Georgi Gardev e809d4e329 Move herdr tabs to bottom 2026-08-23 11:38:11 +03:00
Georgi Gardev 4233302a74 gitignore claude skills 2026-08-23 11:33:57 +03:00
Georgi Gardev 181a2c51c6 Add alias for codex resume 2026-08-23 11:25:10 +03:00
Georgi Gardev f940342c72 Default git to main 2026-08-23 11:23:28 +03:00
Georgi Gardev 1fdf5dda31 Add LLM aliases 2026-08-23 11:22:52 +03:00
GeorgeSG 54f0cf6531 Update btop.conf 2026-08-04 11:55:29 +03:00
GeorgeSG 6396950ab1 Add git gone alias 2026-08-04 11:55:12 +03:00
GeorgeSG 0e4424681a zsh optimizations 2026-08-04 11:55:07 +03:00
GeorgeSG d9b775b89a Update brewfiles 2026-07-10 10:53:12 +03:00
GeorgeSG fcf23b465b Add yazi config 2026-07-09 15:03:27 +03:00
GeorgeSG 1094982f42 Add herdr theme 2026-07-09 15:03:10 +03:00
GeorgeSG 629d221e4b Add herdr and ghostty 2026-07-09 12:15:02 +03:00
GeorgeSG 3a921a4c87 Use code for git editor 2026-07-08 16:14:59 +03:00
GeorgeSG 416fbcf8d9 Add herdr 2026-07-08 16:14:33 +03:00
Georgi Gardev d89d428358 Add thefuck 2026-06-24 22:00:03 +03:00
Georgi Gardev 98c2c4284a Update dotfiles 2026-06-24 21:57:36 +03:00
Georgi GardevandClaude Opus 4.8 728c16d8be Use HTTPS instead of SSH for public submodules
zsh-git-prompt, calc.plugin.zsh, and zsh-vim-mode are public repos, so
fetch them over HTTPS to avoid requiring SSH keys on fresh clones.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 21:47:15 +03:00
Georgi Gardev df220a5440 Disable some apps in personal 2026-01-30 00:23:20 +02:00
Georgi Gardev 57a14f6fc1 Add swift-shift 2026-01-30 00:23:05 +02:00
Georgi Gardev 51db723a82 Add screensaver alias 2025-11-03 23:35:40 +02:00
Georgi Gardev 252800d91e Update macos setup 2025-10-31 20:59:03 +02:00
Georgi Gardev a8626d1d35 Update colors 2025-03-06 11:45:06 +02:00
GeorgeSG 65f526efa7 Update alacritty theme 2025-02-15 11:39:01 +02:00
Georgi Gardev bdce0f3d1d Update install script 2025-02-15 11:36:39 +02:00
GeorgeSG 45e91ff0c4 Don't sudo chsh 2025-02-15 11:21:37 +02:00
GeorgeSG b28f845108 Add per-os install scripts 2025-02-15 11:19:21 +02:00
GeorgeSG 245c53f893 Rename dotbot files 2025-02-15 11:18:58 +02:00
GeorgeSG 5be7254a5b update fn 2025-02-10 18:16:59 +02:00
GeorgeSG a63ea3c5e7 Rename fn 2025-02-10 17:49:34 +02:00
GeorgeSG cc91e15034 update comment 2025-02-10 16:30:49 +02:00
GeorgeSG e4ffb495a1 Improve aliases 2025-02-10 16:29:34 +02:00
Georgi Gardev 897496143b Add kondo 2025-02-04 13:21:26 +02:00
GeorgeSG cd094bfbe2 add fd 2025-02-02 18:31:53 +02:00
GeorgeSG 3661255a48 add aliases 2025-02-02 18:27:32 +02:00
GeorgeSG c3e0b29a6b Remove deprecated Makefile 2025-02-02 09:49:34 +02:00
GeorgeSG 306845a106 Update brewfile 2025-02-02 09:49:12 +02:00
GeorgeSG 0bafeeeeaf add flushdns alias for mac 2025-02-02 09:49:01 +02:00
GeorgeSG 7aacd3e364 do xcode-install for macos 2025-01-23 17:58:42 +02:00
GeorgeSG 0f4fb4a80f rename dotbot files 2025-01-23 17:57:53 +02:00
GeorgeSG f14e49d641 remove useful stuff from global gitignore 2025-01-23 17:43:09 +02:00
GeorgeSG d72ba1e02b update btop 2025-01-23 16:17:32 +02:00
GeorgeSG 62409ee599 link tmux plugins 2025-01-23 16:05:12 +02:00
Georgi Gardev ba519a67f1 add gh cli aliases 2025-01-23 15:47:31 +02:00
Georgi Gardev 603ccd0f04 alacritty url handling 2025-01-23 15:47:26 +02:00
Georgi Gardev a1fe7488d3 Update alacritty styles 2025-01-23 13:03:29 +02:00
Georgi Gardev c7ea81f5a2 Update zshrc 2025-01-23 12:02:12 +02:00
Georgi Gardev 197d4c87bc Update alacritty theme 2025-01-23 12:02:05 +02:00
Georgi Gardev 4eb260fbf0 Update install 2025-01-23 11:24:29 +02:00
Georgi Gardev ce62aa6bbd Add global gitignore 2025-01-23 11:24:21 +02:00
GeorgeSG f22ea044f6 Update dotfiles 2025-01-23 09:41:25 +02:00
GeorgeSG 49ecb057cf update caskfile 2025-01-23 09:26:13 +02:00
GeorgeSG fb5c1161c6 Update alacritty conf 2025-01-23 09:26:07 +02:00
GeorgeSG a2e49b9681 update mac install 2025-01-22 19:38:53 +02:00
GeorgeSG 955dbc6dc2 Switch to dotbot 2025-01-22 19:33:28 +02:00
Georgi Gardev 7f08cd2aee Update gitmodule 2025-01-22 18:24:48 +02:00
Georgi Gardev 537f3c401a Add dotbot install files 2025-01-22 18:24:48 +02:00
Georgi Gardev 6c3fbaf327 Add dotbot 2025-01-22 18:24:48 +02:00
Georgi Gardev d2d332d72a dust 2024-07-11 16:13:45 +03:00
Georgi Gardev 5cb98ad96f add fastfetch 2024-07-11 16:12:24 +03:00
Georgi Gardev 40ab935354 git-delta 2024-07-11 16:10:06 +03:00
Georgi Gardev 88e8bd7aa0 update brewfile 2024-07-11 15:50:20 +03:00
Georgi Gardev cd14742885 update caskfile 2024-07-11 12:42:58 +03:00
Georgi Gardev 1453e16af2 update iterm profile 2024-07-11 12:41:40 +03:00
Georgi Gardev ea6fb062d9 make tmux transparent 2024-07-11 12:40:42 +03:00
Georgi Gardev 491ce5f537 update iterm2 2024-07-11 12:40:13 +03:00
Georgi Gardev 281cf5a26a add iterm2 profile 2024-07-11 12:37:43 +03:00
Georgi Gardev ccad6ccf94 remove alacritty from general linking 2024-07-11 12:34:59 +03:00
Georgi Gardev 82c139f342 add alacritty and btop to brewfile 2024-07-11 12:26:59 +03:00
Georgi Gardev e248d04ad3 Move alacritty & btop to global linking 2024-07-11 12:26:42 +03:00
Georgi Gardev 4559705078 gitignore all local files 2024-07-11 12:11:21 +03:00
Georgi Gardev 0e6093c148 gitignore local file 2024-07-11 12:11:06 +03:00
Georgi Gardev 17f06c4914 remove .local file 2024-07-11 12:09:22 +03:00
GeorgeSG 94aa4f1492 update eww on monitor update 2024-07-08 22:41:07 +03:00
GeorgeSG 22c70c087b Update eww & hypr 2024-07-07 16:41:42 +03:00
GeorgeSG ee421c60a3 Update eww & hypr 2024-07-07 15:46:10 +03:00
GeorgeSG 656680409b Screenshot support 2024-07-07 14:16:38 +03:00
GeorgeSG 77077b0192 Update eww and hyprland 2024-07-07 13:41:37 +03:00
GeorgeSG c775fb987e Update eww and hypr 2024-07-06 23:19:28 +03:00
GeorgeSG ee496691e4 update hypr 2024-07-06 22:43:47 +03:00
GeorgeSG f1572d356a fix typo 2024-07-06 22:33:27 +03:00
GeorgeSG 1232ed50ac Update eww 2024-07-06 22:33:16 +03:00
GeorgeSG 16221d5408 Add hyprlock 2024-07-06 15:44:05 +03:00
GeorgeSG 30f9a432e1 Update rofi style 2024-07-06 13:40:32 +03:00
GeorgeSG f70ff3b0ce move gitconfig local 2024-07-06 13:09:39 +03:00
GeorgeSG c1a2501517 gitignore and pull alacritty themes 2024-07-06 13:07:44 +03:00
GeorgeSG 2081251268 Remove pyc file 2024-07-06 13:07:18 +03:00
GeorgeSG 888876d1ce Add hyprstack config 2024-07-06 12:59:14 +03:00
GeorgeSG 92097ca814 Update aliases 2024-07-06 12:53:59 +03:00
GeorgeSG 27e6199cc7 set tmux plugins path 2024-07-05 12:38:48 +03:00
GeorgeSG 76da20d848 move .gitconfig back home 2024-07-05 12:36:27 +03:00
GeorgeSG e13d016edf Remove debug message 2024-07-05 12:28:49 +03:00
GeorgeSG eccfb458b8 ignore bash git prompt 2024-07-05 12:28:20 +03:00
GeorgeSG 301587a588 Rearrange files in .config folder, update makefile 2024-07-05 12:26:30 +03:00
Georgi Gardev 0810b5117b mac os disable press and hold 2024-03-17 13:59:26 +02:00
Georgi Gardev 6584c6d19c Correct grammer 2024-03-10 23:42:47 +02:00
Georgi Gardev 4a9239a1a0 Update clone.sh 2024-03-09 15:45:53 +02:00
Georgi Gardev b2491f871b make xcode select install optional 2024-03-09 14:52:12 +02:00
Georgi Gardev 58e0b27cf5 Add apps to install 2024-03-07 17:18:41 +02:00
Georgi Gardev cb0b7f12b5 Add clone file 2024-03-07 16:01:26 +02:00
Georgi Gardev be9a55770e Add clone file for often-used repos 2024-03-07 16:01:16 +02:00
Georgi Gardev 4ad2f6e64b Misc tweaks 2024-03-07 15:07:41 +02:00
Georgi Gardev 393be7f11d fzf fixes 2024-03-07 12:50:49 +02:00
Georgi Gardev f5706e6f16 Update brew 2024-03-07 12:38:55 +02:00
Georgi Gardev 7a01e8eb57 Add comment 2024-03-07 11:58:08 +02:00
Georgi Gardev a3a032598b Remove unused icons 2024-03-07 11:57:29 +02:00
Georgi Gardev 799170b997 Update settings 2024-03-07 11:51:12 +02:00
Georgi Gardev 08e025b6df Update mac setup script 2024-03-07 11:38:34 +02:00
Georgi Gardev 21ad72c7de Remove unused files 2024-03-07 11:17:14 +02:00
Georgi Gardev 8bb91fb04a remove cask step 2024-03-07 11:16:21 +02:00
Georgi Gardev 16cb2c0607 minor fixes 2024-03-07 11:15:38 +02:00
Georgi Gardev 613da9ca23 update ssh generation script 2024-03-07 11:13:58 +02:00
Georgi Gardev 056b7a2c5d fix space 2024-03-07 10:50:16 +02:00
Georgi Gardev 8a363f027b Update & fix prompt issues 2024-03-07 10:48:02 +02:00
Georgi Gardev fd2d241a6d add zshenv 2024-03-06 15:15:05 +02:00
Georgi Gardev 08c5177cd0 Setup shell before brew 2024-03-06 12:49:35 +02:00
Georgi Gardev f200ab5e81 fix indent 2024-03-06 11:57:44 +02:00
Georgi Gardev 399b3819c9 fix errors 2024-03-06 11:57:20 +02:00
Georgi Gardev 21e5bdd40c fix errors 2024-03-06 11:56:26 +02:00
Georgi Gardev da57077df3 fix clone 2024-03-06 11:55:15 +02:00
Georgi Gardev 9c9a9ef85e Tweaks 2024-03-05 22:30:48 +02:00
Georgi Gardev 72618001ef lint 2024-03-05 19:25:26 +02:00
Georgi Gardev 6e3731d7f7 add zoxide 2024-03-05 19:25:10 +02:00
Georgi Gardev d78c9036f5 add zoxide 2024-03-05 19:25:04 +02:00
Georgi Gardev 74a497ad53 Add more eza aliases 2024-03-05 19:12:05 +02:00
Georgi Gardev e8014526df Add zsh plugins and aliases 2024-03-05 19:04:38 +02:00
Georgi Gardev f2c30a1383 Add zsh plugins 2024-03-05 15:57:58 +02:00
Georgi Gardev 99d5b3c56d ignore common commands in history 2024-03-05 15:49:43 +02:00
Georgi Gardev 79418928e6 Update zshrc 2024-03-05 15:48:35 +02:00
Georgi Gardev 7942bc4a52 Add comment 2024-03-05 15:38:27 +02:00
Georgi Gardev 027f066295 Update prompt 2024-03-05 15:35:01 +02:00
Georgi Gardev 74538a4fff Add gitconfig to README 2024-03-05 15:28:15 +02:00
Georgi Gardev 2f27831a68 Fix readme 2024-03-05 15:27:54 +02:00
Georgi Gardev a385af70b5 Remove unused var 2024-03-05 15:26:52 +02:00
Georgi Gardev 24e07fc02f Add stashed color in zsh prompt 2024-03-05 15:18:18 +02:00
Georgi Gardev 2f10c2beb7 Move zsh config in the repo 2024-03-05 15:13:01 +02:00
Georgi Gardev b7b5519320 Rework bash files 2024-03-05 14:57:06 +02:00
Georgi Gardev 2daa3ed55a nits 2024-03-05 12:25:13 +02:00
Georgi Gardev 531d9cb2aa cleanup tmux themes 2024-03-05 01:27:29 +02:00
Georgi Gardev 100d918338 Autohide dock 2024-03-05 01:25:51 +02:00
Georgi Gardev 92155abcc9 Update macos setup 2024-03-05 01:24:20 +02:00
Georgi Gardev 21df798197 Add script to generate ssh key 2024-03-05 01:23:06 +02:00
Georgi Gardev 19c3f1c927 use /usr/bin/env 2024-03-05 01:22:58 +02:00
Georgi Gardev 6cee2afc28 update tmux.conf 2024-03-05 01:11:40 +02:00
Georgi Gardev 8c54be70bb Update makefile 2024-03-05 01:03:35 +02:00
Georgi Gardev b74d714efe Update makefile 2024-03-05 01:01:14 +02:00
Georgi Gardev f463eb2ad1 Additional macos setup 2024-03-05 00:51:26 +02:00
Georgi Gardev 314cdf86be add macos setup 2024-03-05 00:17:53 +02:00
Georgi Gardev 7a46f22547 Add rar 2024-03-04 23:59:53 +02:00
Georgi Gardev cd06cd604c fix tmux comment 2024-03-04 23:57:29 +02:00
Georgi Gardev 50b8629816 Split in folders 2024-03-04 23:56:20 +02:00
Georgi Gardev 5a91577405 Move stuff to archive 2024-03-04 23:51:20 +02:00
Georgi Gardev 03a40e70a0 add install_brew.sh 2024-03-04 23:50:08 +02:00
Georgi Gardev b4053a29b8 ignore Brewfile lcok 2024-03-04 23:49:58 +02:00
Georgi Gardev 816100eb04 Move and update aliases 2024-03-04 23:40:50 +02:00
Georgi Gardev 7ae42be84f bring bashrc back 2024-03-04 23:29:45 +02:00
Georgi Gardev 3c2d5b20a2 Move to bash_profile 2024-03-04 23:28:53 +02:00
Georgi Gardev 594cd023ce Switch to Brewfile 2024-03-04 23:08:29 +02:00
Georgi Gardev 63eb6f1008 add extract fn 2024-03-04 22:54:49 +02:00
Georgi Gardev e3e78e6b0d switch to .local for consistency 2024-03-04 22:54:39 +02:00
Georgi Gardev 7f3a0b21d0 Update makefile 2024-03-04 22:46:24 +02:00
Georgi Gardev e4febfa7d1 remove gpg sign disabled 2024-03-04 22:37:20 +02:00
Georgi Gardev 8d34463f0a Add yda alias 2024-03-04 22:30:19 +02:00
Georgi Gardev f4198229b7 Update brewfile 2024-03-04 22:29:30 +02:00
Georgi Gardev c4e689ba88 Update bash aliases 2024-03-04 22:27:48 +02:00
Georgi Gardev 8d55310e01 Update mac os brew setup 2024-03-04 22:25:26 +02:00
Georgi Gardev 286223c05a Add new git aliases 2024-03-04 21:43:07 +02:00
GeorgeSG 4c5b8b6ff0 add unstage alias 2023-11-14 09:26:10 +02:00
Georgi Gardev adf69835a0 change file mode 2023-11-14 09:24:05 +02:00
Georgi Gardev 8618102cbd add git conitnue aliases 2023-11-14 09:24:03 +02:00
GeorgeSG fa0a818f4a Switch from docker-compose to docker compose 2023-11-14 09:20:03 +02:00
Georgi Gardev 62d75fe13d Update Makefile 2023-03-02 17:50:22 +02:00
Georgi Gardev 2e25bbc165 Remove default pull rebase 2023-03-02 12:19:15 +02:00
Georgi Gardev 5f32f16103 Use source instead of . 2023-03-02 12:18:59 +02:00
Georgi Gardev 2aae05ba23 Update serve command 2022-12-06 13:52:41 +02:00
Georgi Gardev 4b0468dfa0 Silence mac deprecation warning for bash 2022-12-01 16:04:27 +02:00
Georgi c00e9da16d Update bttpreset 2022-12-01 15:56:24 +02:00
GeorgeSG df082c2644 Add workflows 2022-06-15 23:00:51 +03:00
GeorgeSG 440b679fbc File utils 2021-06-07 22:52:52 +03:00
GeorgeSG e22f60a262 Update bttpreset 2021-06-07 18:31:56 +03:00
GeorgeSG 6f38970446 Add bttpreset 2021-06-07 18:30:50 +03:00
GeorgeSG d118fd7f96 Specify git pull with rebase 2021-05-26 14:29:15 +03:00
GeorgeSG 0ad2db0b12 Update project manager 2021-05-26 14:21:57 +03:00
GeorgeSG 274bd20ec9 Add authy workflow 2021-05-26 13:55:19 +03:00
GeorgeSG 82b42198ac Add alfred theme 2021-05-26 13:51:20 +03:00
GeorgeSG 077616dd24 Add dc alias 2021-05-25 13:25:27 +03:00
GeorgeSG 73fc82ed3c Update vimrc 2021-05-25 13:21:26 +03:00
GeorgeSG 2d560eaa18 Update tmux status-right 2021-05-22 14:32:54 +03:00
GeorgeSG 21bd58a24d Change tmux aliases 2021-05-21 10:23:57 +03:00
GeorgeSG 2ad62f154e Add Cascadia font 2021-05-21 10:23:57 +03:00
GeorgeSG 8a8f2b4064 Update co master alias 2021-05-04 16:26:31 +03:00
GeorgeSG 67645789d6 Update makefile 2021-05-04 16:25:13 +03:00
GeorgeSG e375e5197e Don't use bash git prompt from brew 2021-05-04 16:12:44 +03:00
GeorgeSG 95785f830a Update bashrc 2021-05-04 16:05:29 +03:00
GeorgeSG 3a22236d21 Update bashrc 2021-05-04 16:04:28 +03:00
GeorgeSG e78bba211f Update bashrc 2021-05-04 16:02:11 +03:00
GeorgeSG 716b715386 Update prompot hostname 2021-05-04 15:51:39 +03:00
GeorgeSG c09ac49ae6 Add big sur icons 2021-05-04 15:51:17 +03:00
GeorgeSG 94e7d6ce27 Attempt to show hostname in prompt 2021-05-02 15:48:32 +03:00
GeorgeSG 1cab46c1d0 Remove unused aliases 2021-05-01 14:08:53 +03:00
GeorgeSG a29c560bd9 no more memes :) 2021-05-01 14:07:37 +03:00
GeorgeSG bd26d27e63 Add docker aliases 2021-05-01 14:07:02 +03:00
GeorgeSG bce7bf0e9e Add tmux aliases 2021-03-24 15:56:54 +02:00
GeorgeSG 6ed5cf2d3f Add alfred workflows 2021-03-19 13:55:19 +02:00
GeorgeSG a6440ea9a1 Add iterm colors 2021-03-18 15:45:55 +02:00
GeorgeSG 8c720beba3 Fix makefile 2020-05-05 18:41:08 +03:00
Georgi Gardev 67d0315ce0 Add tomorow-night tmux theme 2020-05-05 18:40:30 +03:00
GeorgeSG b6d2b759b3 Add tmux plugins 2020-05-05 17:17:24 +03:00
GeorgeSG 506b9a5cd0 More colors 2020-05-05 15:37:58 +03:00
GeorgeSG eeb6938b3b Update theme 2020-05-05 15:37:07 +03:00
GeorgeSG 8a8172a441 Add Makefile 2020-05-05 15:01:12 +03:00
GeorgeSG b3522c7af3 Update bash-git-prompt 2020-05-05 14:53:25 +03:00
GeorgeSG 810e35bc74 Fix color 2020-05-05 13:55:48 +03:00
GeorgeSG e106aa71bf Install bash-git-prompt with brew 2020-05-05 13:54:21 +03:00
GeorgeSG a73acbaa1c update mac files 2020-05-05 13:36:05 +03:00
GeorgeSG 3f392d4a75 Organize macos files 2020-05-05 13:08:26 +03:00
GeorgeSG 28e991f7b1 Delete more obsolete stuff 2020-05-05 13:07:47 +03:00
GeorgeSG 284aa8ba39 Remove obsolete configs 2020-05-05 13:07:10 +03:00
GeorgeSG a5d09808fd Refactor tmux theme 2020-05-05 12:54:40 +03:00
GeorgeSG b989128158 Remove reattach-to-user-namespace 2020-05-05 12:40:50 +03:00
GeorgeSG a9a8e34552 Change props for tmux v2.9 2020-05-05 12:40:13 +03:00
GeorgeSG a56e1a985c Add new git lgg alias 2020-05-05 12:36:02 +03:00
GeorgeSG 2dbff7b131 Add new aliases 2020-05-05 12:35:19 +03:00
GeorgeSG 8a2ab993d3 Add tmv alias for tmux within vscode 2019-03-02 15:23:37 +02:00
Georgi Gardev add6e5ef0a update difftool settings 2018-08-29 15:30:19 -04:00
GeorgeSG 73cf235413 Add ForkLift shortcut 2018-06-17 22:32:12 +03:00
Georgi Gardev 24f6fea89c Commit tmux theme 2017-11-30 12:54:49 +02:00
Georgi Gardev 26c3a5421b Add LFS and mac-specific configs to gitconfig 2017-11-30 12:54:32 +02:00
GeorgeSG 7f14e3ec5a Fix theme color 2017-11-29 21:42:55 +02:00
GeorgeSG 2a67a0ff18 Apple logo as prompt 2017-11-29 21:42:33 +02:00
Georgi Gardev 17a46268c5 Change find_all_under to ctrl+shift+a 2016-12-19 01:44:09 +02:00
Georgi Gardev 38f9aac533 improve git squash aliases 2016-12-07 16:05:11 +02:00
Georgi Gardev 0ad029d09d Update bash-git-prompt theme 2016-12-07 16:04:07 +02:00
Georgi Gardev 5f2b655b0a Update sublime keymap for OSX 2016-12-07 16:03:49 +02:00
Georgi Gardev 2efb3f2b42 use reattach-to-user-namespace when starting bash in tmux 2016-12-07 16:02:36 +02:00
Georgi Gardev a3fdefa1ad More minor tweaks 2016-10-18 19:57:17 +03:00
Georgi Gardev 27d1ebd29e Prompt tweaks 2016-10-18 16:22:26 +03:00
Georgi Gardev 0f2a4ef21a Enable vi mode in bash 2016-10-18 16:20:19 +03:00
Georgi Gardev 2f622e5c37 Migrating to Bash 2016-10-18 16:08:55 +03:00
Georgi Gardev 4d8c9050ad Update sublime folder 2016-09-05 21:19:13 +03:00
Georgi Gardev 90da387cab Add bash_aliases for mac 2016-09-05 21:15:42 +03:00
217 changed files with 8851 additions and 1935 deletions
-70
View File
@@ -1,70 +0,0 @@
##### Platform independent #####
# Git Aliases
alias g="git"
alias much="git"
alias such="git"
alias very="git"
alias so="git"
alias ga="git add"
alias gr="git rm"
alias gc="git commit"
alias gs="git status -s"
alias gss="git status"
alias gd="git diff"
alias gds="git diff --staged"
alias gco="git checkout"
alias gcm="git checkout master"
alias gpom="git pull origin master"
alias gbd="git branch -D"
alias gm="git mergetool"
alias tm="tmux -2 attach-session -t "default" || tmux -2 new-session -s \"default\""
# Editing files
alias aliases="vim ~/.bash_aliases"
alias vimrc="vim ~/.vimrc"
# CD-ing to some commonly used folders
alias og="cd ~/Git"
alias sass_watch="sass --watch ./:./"
alias s="sublime"
alias grep="grep --color=auto"
alias c="clear"
alias be="bundle exec"
alias share="python -m SimpleHTTPServer"
##### Mac OS Specific #####
alias showfiles="defaults write com.apple.finder AppleShowAllFiles YES; killall Finder /System/Library/CoreServices/Finder.app"
alias hidefiles="defaults write com.apple.finder AppleShowAllFiles NO; killall Finder /System/Library/CoreServices/Finder.app"
alias cask="brew cask"
##### Ubuntu/Linux Specific #####
# Easier APT
alias install="sudo apt-get install"
alias purge="sudo apt-get purge"
alias search="sudo apt-cache search"
alias remove="sudo apt-get remove"
alias autoremove="sudo apt-get autoremove"
# Secondary Monitor
alias monitor_enable="xrandr --output CRT1 --auto --right-of LVDS"
alias monitor_disable="xrandr --output CRT1 --off"
# PC Info
alias mountinfo="mount | column -t"
alias meminfo="free -mlt"
alias driveinfo="df -h"
# Launchers
alias lstart="sudo /opt/lampp/lampp start"
alias lstop="sudo /opt/lampp/lampp stop"
alias pgstart="sudo service postgresql start"
alias pgstop="sudo service postgresql stop"
if [ -f ~/.bash_local_aliases ]; then
. ~/.bash_local_aliases
fi
-12
View File
@@ -1,12 +0,0 @@
[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
# if [[ "$TERM" != "screen-256color" ]]
# then
# tmux -2 attach-session -t "default" || tmux -2 new-session -s "default"
# exit
# fi
alias tm="tmux -2 attach-session -t "default" || tmux -2 new-session -s \"default\""
-209
View File
@@ -1,209 +0,0 @@
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
shopt -s autocd
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
# Reset
Color_Off="\[\033[0m\]" # Text Reset
# Regular Colors
Black="\[\033[0;30m\]" # Black
Red="\[\033[0;31m\]" # Red
Green="\[\033[0;32m\]" # Green
Yellow="\[\033[0;33m\]" # Yellow
Blue="\[\033[0;34m\]" # Blue
Purple="\[\033[0;35m\]" # Purple
Cyan="\[\033[0;36m\]" # Cyan
White="\[\033[0;37m\]" # White
# Bold
BBlack="\[\033[1;30m\]" # Black
BRed="\[\033[1;31m\]" # Red
BGreen="\[\033[1;32m\]" # Green
BYellow="\[\033[1;33m\]" # Yellow
BBlue="\[\033[1;34m\]" # Blue
BPurple="\[\033[1;35m\]" # Purple
BCyan="\[\033[1;36m\]" # Cyan
BWhite="\[\033[1;37m\]" # White
# Underline
UBlack="\[\033[4;30m\]" # Black
URed="\[\033[4;31m\]" # Red
UGreen="\[\033[4;32m\]" # Green
UYellow="\[\033[4;33m\]" # Yellow
UBlue="\[\033[4;34m\]" # Blue
UPurple="\[\033[4;35m\]" # Purple
UCyan="\[\033[4;36m\]" # Cyan
UWhite="\[\033[4;37m\]" # White
# Background
On_Black="\[\033[40m\]" # Black
On_Red="\[\033[41m\]" # Red
On_Green="\[\033[42m\]" # Green
On_Yellow="\[\033[43m\]" # Yellow
On_Blue="\[\033[44m\]" # Blue
On_Purple="\[\033[45m\]" # Purple
On_Cyan="\[\033[46m\]" # Cyan
On_White="\[\033[47m\]" # White
# High Intensty
IBlack="\[\033[0;90m\]" # Black
IRed="\[\033[0;91m\]" # Red
IGreen="\[\033[0;92m\]" # Green
IYellow="\[\033[0;93m\]" # Yellow
IBlue="\[\033[0;94m\]" # Blue
IPurple="\[\033[0;95m\]" # Purple
ICyan="\[\033[0;96m\]" # Cyan
IWhite="\[\033[0;97m\]" # White
# Bold High Intensty
BIBlack="\[\033[1;90m\]" # Black
BIRed="\[\033[1;91m\]" # Red
BIGreen="\[\033[1;92m\]" # Green
BIYellow="\[\033[1;93m\]" # Yellow
BIBlue="\[\033[1;94m\]" # Blue
BIPurple="\[\033[1;95m\]" # Purple
BICyan="\[\033[1;96m\]" # Cyan
BIWhite="\[\033[1;97m\]" # White
# High Intensty backgrounds
On_IBlack="\[\033[0;100m\]" # Black
On_IRed="\[\033[0;101m\]" # Red
On_IGreen="\[\033[0;102m\]" # Green
On_IYellow="\[\033[0;103m\]" # Yellow
On_IBlue="\[\033[0;104m\]" # Blue
On_IPurple="\[\033[10;95m\]" # Purple
On_ICyan="\[\033[0;106m\]" # Cyan
On_IWhite="\[\033[0;107m\]" # White
# Various variables you might want for your PS1 prompt instead
Time12h="\A"
Time12a="\@"
PathShort="\w"
PathFull="\W"
NewLine="\n"
Jobs="\j"
if [ "$color_prompt" = yes ]; then
PS1='$(git branch &>/dev/null;\
if [ $? -eq 0 ]; then \
echo "$(echo `git status` | grep "nothing to commit" > /dev/null 2>&1; \
if [ "$?" -eq "0" ]; then \
# @4 - Clean repository - nothing to commit
echo "'$BGreen$PathShort$BCyan'"$(__git_ps1 " (%s)"); \
else \
# @5 - Changes to working tree
echo "'$BGreen$PathShort$IRed'"$(__git_ps1 " (%s)"); \
fi)'$BWhite':'$Color_Off' "; \
else \
# @2 - Prompt when not in GIT repo
echo "'$BGreen$PathShort$BWhite':'$Color_Off' "; \
fi)'
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#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'
fi
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
if [ -f ~/.bash_local_aliases ]; then
. ~/.bash_local_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
-43
View File
@@ -1,43 +0,0 @@
[color]
diff = auto
status = auto
branch = auto
interactive = auto
ui = auto
[alias]
# Shorten some often used commands
b = branch
c = commit
co = checkout
com = checkout master
ss = status
s = status -s
ds = diff --staged
amend = commit --amend -c HEAD
oops = reset --soft HEAD~1
kris = pull --rebase
ignore = !git update-index --assume-unchanged
unignore = !git update-index --no-assume-unchanged
ignored = !git ls-files -v | grep "^[[:lower:]]"
undo = reset --soft HEAD^
squash = rebase -i
# various pretty loggers from various places
l = log --pretty=oneline --abbrev-commit
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
lc = log ORIG_HEAD.. --stat --no-merges
# from http://blog.kfish.org/2010/04/git-lola.html
lol = log --graph --decorate --pretty=oneline --abbrev-commit
lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
ll = log --graph --date=short
[push]
default = simple
[filter "media"]
clean = git media clean %f
smudge = git media smudge %f
required = true
# local user config, usernames, etc
[include]
path=~/.gitconfig-local
+18 -2
View File
@@ -1,3 +1,19 @@
.DS_Store
.vim/bundle
.vim/undodir
home/.vim/bundle
home/.vim/undodir
home/.config/bash/bash-git-prompt
Brewfile.lock.json
Caskfile.lock.json
home/.config/alacritty/themes
__pycache__
*.pyc
*.local
*.log
# Claude skills: ignore everything except the ones actually written here
home/claude/skills/*
!home/claude/skills/.gitkeep
!home/claude/skills/commit-default
+28
View File
@@ -0,0 +1,28 @@
[submodule "dotbot"]
path = dotbot
url = https://github.com/anishathalye/dotbot
ignore = dirty
[submodule "home/config/tmux/plugins/tpm"]
path = home/config/tmux/plugins/tpm
url = https://github.com/tmux-plugins/tpm
[submodule "home/config/bash/bash-git-prompt"]
path = home/config/bash/bash-git-prompt
url = https://github.com/magicmonty/bash-git-prompt.git
[submodule "home/config/zsh/plugins/zsh-git-prompt"]
path = home/config/zsh/plugins/zsh-git-prompt
url = https://github.com/zsh-git-prompt/zsh-git-prompt.git
[submodule "home/config/zsh/plugins/calc.plugin.zsh"]
path = home/config/zsh/plugins/calc.plugin.zsh
url = https://github.com/arzzen/calc.plugin.zsh.git
[submodule "home/config/zsh/plugins/zsh-vim-mode"]
path = home/config/zsh/plugins/zsh-vim-mode
url = https://github.com/softmoth/zsh-vim-mode.git
[submodule "home/config/zsh/plugins/zsh-better-npm-completion"]
path = home/config/zsh/plugins/zsh-better-npm-completion
url = https://github.com/lukechilds/zsh-better-npm-completion.git
[submodule "home/config/zsh/plugins/zsh-ssh"]
path = home/config/zsh/plugins/zsh-ssh
url = https://github.com/sunlei/zsh-ssh
[submodule "home/vim/bundle/Vundle.vim"]
path = home/vim/bundle/Vundle.vim
url = https://github.com/VundleVim/Vundle.vim.git
-110
View File
@@ -1,110 +0,0 @@
# ------------------
# General Settings
# ------------------
# Set Custom Prefix
set -g prefix C-a
unbind C-b
# Start in Zsh
set -g default-command '/bin/zsh --login'
set -g default-shell /bin/zsh
# Disable delay
set -sg escape-time 1
# Change the index of first window or pane to 1
set -g base-index 1
setw -g pane-base-index 1
# set -g status-utf8 on
# setw -g utf8 on
# -------------------
# Visual Settings
# -------------------
set -g default-terminal "screen-256color"
# Theme
set -g status-bg black
set -g status-fg white
set -g status-left-length 30
set -g status-right-length 60
#
# Colors
set -g status-fg white
set -g status-bg colour234
set -g pane-border-fg colour245
set -g pane-active-border-fg colour25
set -g message-fg white
set -g message-bg colour25
set -g message-attr bold
# Status bar
# set-option -g status-position bottom
set -g status-left '#[fg=colour25,bg=white,bold] #S #[fg=colour252,bg=colour238,bold]#[fg=colour245,bg=colour238,bold] #(whoami) #[fg=colour238,bg=colour234,bold]'
set -g status-right '#[fg=colour238,bg=colour234,bold]#[fg=colour245,bg=colour238,bold] #H #[fg=colour252,bg=colour238,bold]#[fg=colour25,bg=white,bold] #(date +%H:%M) '
set -g window-status-format "#[fg=white,bg=colour234] #I #W "
set -g window-status-current-format "#[fg=white,bg=colour25,noreverse,bold] #I #W "
# --------------------
# Custom keybindings
# --------------------
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
setw -g mode-keys vi
bind C-a send-prefix
# Unbind unused defaults
unbind %
unbind [
unbind p
unbind Up
unbind Down
unbind Left
unbind Right
unbind M-Up
unbind M-Down
unbind M-Left
unbind M-Right
unbind C-Up
unbind C-Down
unbind C-Left
unbind C-Right
# Source this file
bind r source-file ~/.tmux.conf \; display "Config file reloaded!"
# Splits
bind v split-window -h
bind s split-window -v
# Move between panes
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Move between windows
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+
# Resize panes
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# Copy & Paste
bind Escape copy-mode
bind p paste-buffer
bind -t vi-copy 'v' begin-selection
bind C-c run-shell "bash -c 'tmux show-buffer | reattach-to-user-namespace pbcopy'" \; display 'Copied to clipboard'
-46
View File
@@ -1,46 +0,0 @@
# Mappings for keys for MX Revoluton
# b:1 - left mouse button
# b:2 - left and right mouse button together
# b:3 - right mouse button
# b:4 - mouse wheel up
# b:5 - mouse wheel down
# b:6 - mouse wheel left
# b:7 - mouse wheel right
# b:8 - back button
# b:9 - forward button
# b:10 - -none-
# b:11 - -none-
# b:12 - -none-
# b:13 - media wheel up
# b:14 - -none-
# b:15 - media wheel down
# b:16 - -none-
# b:17 - media wheel press
# forward
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next"
m:0x0 + b:8
# back
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous"
m:0x0 + b:9
# volume up
"amixer -D pulse sset Master 5%+"
m:0x0 + b:13
# volume down
"amixer -D pulse sset Master 5%-"
m:0x0 + b:15
# mute
"amixer -D pulse set Master 1+ toggle"
m:0x0 + b:17
# mouse wheel left middle click
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause"
b:6
# mouse wheel right middle click
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop"
b:7
-74
View File
@@ -1,74 +0,0 @@
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from __future__ import print_function
# change those symbols to whatever you prefer
symbols = {'ahead of': '', 'behind': '', 'prehash':':'}
from subprocess import Popen, PIPE
import sys
gitsym = Popen(['git', 'symbolic-ref', 'HEAD'], stdout=PIPE, stderr=PIPE)
branch, error = gitsym.communicate()
error_string = error.decode('utf-8')
if 'fatal: Not a git repository' in error_string:
sys.exit(0)
branch = branch.strip()[11:]
res, err = Popen(['git','diff','--name-status'], stdout=PIPE, stderr=PIPE).communicate()
err_string = err.decode('utf-8')
if 'fatal' in err_string:
sys.exit(0)
changed_files = [namestat[0] for namestat in res.splitlines()]
staged_files = [namestat[0] for namestat in Popen(['git','diff', '--staged','--name-status'], stdout=PIPE).communicate()[0].splitlines()]
nb_changed = len(changed_files) - changed_files.count('U')
nb_U = staged_files.count('U')
nb_staged = len(staged_files) - nb_U
staged = str(nb_staged)
conflicts = str(nb_U)
changed = str(nb_changed)
nb_untracked = len(Popen(['git','ls-files','--others','--exclude-standard'],stdout=PIPE).communicate()[0].splitlines())
untracked = str(nb_untracked)
if not nb_changed and not nb_staged and not nb_U and not nb_untracked:
clean = '1'
else:
clean = '0'
remote = ''
if not branch: # not on any branch
branch = symbols['prehash']+ Popen(['git','rev-parse','--short','HEAD'], stdout=PIPE).communicate()[0][:-1]
else:
remote_name = Popen(['git','config','branch.%s.remote' % branch], stdout=PIPE).communicate()[0].strip()
if remote_name:
merge_name = Popen(['git','config','branch.%s.merge' % branch], stdout=PIPE).communicate()[0].strip()
if remote_name == '.': # local
remote_ref = merge_name
else:
remote_ref = 'refs/remotes/%s/%s' % (remote_name, merge_name[11:])
revgit = Popen(['git', 'rev-list', '--left-right', '%s...HEAD' % remote_ref],stdout=PIPE, stderr=PIPE)
revlist = revgit.communicate()[0]
if revgit.poll(): # fallback to local
revlist = Popen(['git', 'rev-list', '--left-right', '%s...HEAD' % merge_name],stdout=PIPE, stderr=PIPE).communicate()[0]
behead = revlist.splitlines()
ahead = len([x for x in behead if x[0]=='>'])
behind = len(behead) - ahead
if behind:
remote += '%s%s' % (symbols['behind'], behind)
if ahead:
remote += '%s%s' % (symbols['ahead of'], ahead)
out = '\n'.join([
str(branch),
remote,
staged,
conflicts,
changed,
untracked,
clean])
print(out)
-94
View File
@@ -1,94 +0,0 @@
# To install source this file from your .zshrc file
# Change this to reflect your installation directory
export __GIT_PROMPT_DIR=~/.zsh/git-prompt
# Initialize colors.
autoload -U colors
colors
# Allow for functions in the prompt.
setopt PROMPT_SUBST
autoload -U add-zsh-hook
add-zsh-hook chpwd chpwd_update_git_vars
add-zsh-hook preexec preexec_update_git_vars
add-zsh-hook precmd precmd_update_git_vars
## Function definitions
function preexec_update_git_vars() {
case "$2" in
git*|hub*|gh*|stg*)
__EXECUTED_GIT_COMMAND=1
;;
esac
}
function precmd_update_git_vars() {
if [ -n "$__EXECUTED_GIT_COMMAND" ] || [ -n "$ZSH_THEME_GIT_PROMPT_NOCACHE" ]; then
update_current_git_vars
unset __EXECUTED_GIT_COMMAND
fi
}
function chpwd_update_git_vars() {
update_current_git_vars
}
function update_current_git_vars() {
unset __CURRENT_GIT_STATUS
local gitstatus="$__GIT_PROMPT_DIR/gitstatus.py"
_GIT_STATUS=`python ${gitstatus}`
__CURRENT_GIT_STATUS=("${(@f)_GIT_STATUS}")
GIT_BRANCH=$__CURRENT_GIT_STATUS[1]
GIT_REMOTE=$__CURRENT_GIT_STATUS[2]
GIT_STAGED=$__CURRENT_GIT_STATUS[3]
GIT_CONFLICTS=$__CURRENT_GIT_STATUS[4]
GIT_CHANGED=$__CURRENT_GIT_STATUS[5]
GIT_UNTRACKED=$__CURRENT_GIT_STATUS[6]
GIT_CLEAN=$__CURRENT_GIT_STATUS[7]
}
git_super_status() {
precmd_update_git_vars
if [ -n "$__CURRENT_GIT_STATUS" ]; then
STATUS="$ZSH_THEME_GIT_PROMPT_PREFIX$ZSH_THEME_GIT_PROMPT_BRANCH$GIT_BRANCH%{${reset_color}%}"
if [ -n "$GIT_REMOTE" ]; then
STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_REMOTE$GIT_REMOTE%{${reset_color}%}"
fi
STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_SEPARATOR"
if [ "$GIT_STAGED" -ne "0" ]; then
STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_STAGED$GIT_STAGED%{${reset_color}%}"
fi
if [ "$GIT_CONFLICTS" -ne "0" ]; then
STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_CONFLICTS$GIT_CONFLICTS%{${reset_color}%}"
fi
if [ "$GIT_CHANGED" -ne "0" ]; then
STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_CHANGED$GIT_CHANGED%{${reset_color}%}"
fi
if [ "$GIT_UNTRACKED" -ne "0" ]; then
STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_UNTRACKED%{${reset_color}%}"
fi
if [ "$GIT_CLEAN" -eq "1" ]; then
STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_CLEAN"
fi
STATUS="$STATUS%{${reset_color}%}$ZSH_THEME_GIT_PROMPT_SUFFIX"
echo "$STATUS"
fi
}
# Default values for the appearance of the prompt. Configure at will.
ZSH_THEME_GIT_PROMPT_PREFIX="("
ZSH_THEME_GIT_PROMPT_SUFFIX=")"
ZSH_THEME_GIT_PROMPT_SEPARATOR="|"
ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg_bold[magenta]%}"
ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[red]%}●"
ZSH_THEME_GIT_PROMPT_CONFLICTS="%{$fg[red]%}✖"
ZSH_THEME_GIT_PROMPT_CHANGED="%{$fg[blue]%}✚"
ZSH_THEME_GIT_PROMPT_REMOTE=""
ZSH_THEME_GIT_PROMPT_UNTRACKED="…"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}✔"
-83
View File
@@ -1,83 +0,0 @@
# Include my bash aliases
source ~/.bash_aliases
source ~/.zsh/git-prompt/zshrc.sh
bindkey -v
bindkey '^r' history-incremental-search-backward
bindkey '^R' history-incremental-pattern-search-backward
#
#so as not to be disturbed by Ctrl-S ctrl-Q in terminals:
stty -ixon
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
#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'
fi
# some more ls aliases
alias ls='ls -G'
alias ll='ls -alFG'
alias la='ls -AG'
alias l='ls -CFG'
autoload -U compinit promptinit
autoload -U colors && colors
compinit
promptinit
setopt AUTO_CD
setopt AUTO_PUSHD
setopt PUSHD_IGNORE_DUPS
setopt PROMPT_SUBST
# Allow [ or ] whereever you want
unsetopt nomatch
DIRSTACKSIZE=15
# Enable colors in prompt
autoload -U colors && colors
# Git Prompt colors
ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg_bold[cyan]%}("
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$fg_bold[cyan]%})"
ZSH_THEME_GIT_PROMPT_SEPARATOR="%{$fg_bold[cyan]%}|"
ZSH_THEME_GIT_PROMPT_BRANCH=""
ZSH_THEME_GIT_PROMPT_STAGED="%{$fg_bold[green]%}●"
ZSH_THEME_GIT_PROMPT_CONFLICTS="%{$fg_bold[red]%}✖"
ZSH_THEME_GIT_PROMPT_CHANGED="%{$fg_bold[red]%}✚"
ZSH_THEME_GIT_PROMPT_REMOTE=""
ZSH_THEME_GIT_PROMPT_UNTRACKED="…"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[cyan]%}✔"
PROMPT='%B%F{green}%~%b%F{white}$(git_super_status)%{$fg_bold[white]%}: '
RPROMPT='${${KEYMAP/vicmd/$VIM_PROMPT}/(main|viins)/} $EPS1'
export KEYTIMEOUT=1
# Arrow-driven completion
zstyle ':completion:*' menu select
# Complete Aliases
setopt completealiases
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
### Added by the Heroku Toolbelt
export PATH="/usr/local/heroku/bin:$PATH"
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM
+70
View File
@@ -0,0 +1,70 @@
# Dotfiles
Personal dotfiles for macOS and Linux, managed with [dotbot](https://github.com/anishathalye/dotbot).
## Structure
```
dotfiles/
├── home/ # Config files symlinked into $HOME
│ ├── config/ # ~/.config/* (alacritty, tmux, zsh, bash, etc.)
│ ├── claude/ # Claude Code config
│ ├── bashrc
│ ├── gitconfig
│ ├── tmux.conf
│ ├── vim/
│ ├── vimrc
│ └── zshenv
├── macos/ # macOS-specific: Brewfile, Caskfiles, iTerm2 config
├── shell/ # Shell scripts (setup, platform installers, clone, ssh)
├── functions/ # Utility scripts
├── fonts/ # Fonts
├── dotbot/ # Dotbot submodule
├── dotbot.default.yaml # Main dotbot config (always applied)
├── dotbot.personal.yaml # Personal brew casks
├── dotbot.setup-once.yaml # One-time setup (macOS defaults, repo clones)
└── install # Main install script
```
## Installation
```sh
# Default setup (symlinks + shell plugins)
./install
# First-time macOS setup (run once: Xcode tools, macOS defaults, clone repos)
./install setup-once
# Personal apps (brew cask installs from Caskfile.personal)
./install personal
```
## How It Works
- `./install` runs dotbot with `dotbot.default.yaml` plus any additional configs passed as arguments
- Dotbot creates symlinks from `home/` into `$HOME`, creates directories, and runs shell commands. Folders in `home/config` are symlinked to `~/.config/<folder>`
- Platform detection: macOS runs `shell/install_apps_macos.sh`, Linux runs `shell/install_apps_linux.sh`
- Submodules: dotbot, tpm, Vundle.vim, and several zsh/bash plugins — run `git submodule update --init --recursive` if anything is missing
## Important: `.local` files
Files matching `*.local` (e.g. `.zshrc.local`, `.gitconfig.local`, `.bash_profile.local`) are **machine-specific overrides** that exist only on the local machine. They are gitignored and not part of this repo. Do not modify, reference, or suggest changes to `.local` files.
## Adding Config for a New Tool
1. Put the config file under `home/config/<tool>/` or directly in `home/`
2. Add a `link:` entry in `dotbot.default.yaml` pointing from the repo path to the target path in `$HOME`
3. If it needs a directory created first, add it under `create:` in the same file
4. Run `./install` to apply
## Key Configs
| File | Linked to |
|------|-----------|
| `home/zshenv` | `~/.zshenv` |
| `home/gitconfig` | `~/.gitconfig` |
| `home/config/alacritty/` | `~/.config/alacritty/` |
| `home/config/tmux/` | `~/.config/tmux/` |
| `home/config/vim/` | `~/.vim/` |
| `home/config/zsh/` | `~/.config/zsh/` |
| `home/config/bash/` | `~/.config/bash/` |
+1
View File
@@ -0,0 +1 @@
@AGENTS.md
+26 -1
View File
@@ -1,4 +1,29 @@
dotfiles
========
Some of my dotfiles
Personal dotfiles for macOS and Linux, managed with [dotbot](https://github.com/anishathalye/dotbot).
## Install
```sh
git clone --recursive git@github.com:GeorgeSG/dotfiles.git ~/Git/dotfiles
cd ~/Git/dotfiles
./install
```
### macOS - first time setup
```sh
# Installs Xcode tools, sets macOS defaults, clones personal repos
./install setup-once
# Installs personal apps (Bitwarden, Discord, Spotify, etc.)
./install personal
```
### Linux
```sh
# Default install handles everything - installs apt packages, sets zsh as default shell
./install
```
-6
View File
@@ -1,6 +0,0 @@
#!/usr/bin/python
import sys
import os
os.system('meld "%s" "%s"' % (sys.argv[2], sys.argv[5]))
Submodule
+1
Submodule dotbot added at 9cd5d073f2
+59
View File
@@ -0,0 +1,59 @@
- defaults:
link:
relink: true
- clean: ['~']
- create:
- ~/.config
- ~/.config/bash
- ~/.config/herdr
- ~/.config/tmux
- ~/.claude
- link:
# git
~/.gitconfig: home/gitconfig
~/.config/.gitignore_global: home/config/gitignore_global
# bash
~/.bashrc: home/bashrc
~/.config/bash/.bash_profile: home/config/bash/bash_profile
~/.git-completion.bash: home/config/bash/git-completion.bash
~/.git-prompt-colors.sh: home/config/bash/git-prompt-colors.sh
# apps
~/.config/alacritty: home/config/alacritty
~/.config/btop: home/config/btop
~/.config/ghostty: home/config/ghostty
~/.config/herdr/config.toml: home/config/herdr/config.toml
~/.config/yazi: home/config/yazi
# tmux
~/.tmux.conf: home/tmux.conf
~/.config/tmux/plugins: home/config/tmux/plugins
~/.config/tmux/themes: home/config/tmux/themes
~/.config/.aliases: home/config/aliases
# vim
~/.vim : home/vim
~/.vimrc: home/vimrc
# zsh
~/.zshenv: home/zshenv
~/.config/zsh: home/config/zsh
# claude code
~/.claude/skills: home/claude/skills
# mac os
~/.hushlogin:
if: '[ `uname` = Darwin ]'
path: macos/hushlogin
- shell:
- command: ./shell/setup.sh
stdin: true
stdout: true
stderr: true
+10
View File
@@ -0,0 +1,10 @@
## TODO:
## cask_personal using some variable?
- shell:
- stdin: true
stdout: true
command: >
if [ "$(uname)" = "Darwin" ]; then
brew bundle --file ./macos/Caskfile.personal
fi
+15
View File
@@ -0,0 +1,15 @@
- shell:
-
stdin: true
stdout: true
description: Setting Mac OS defaults
command: >
if [ "$(uname)" = "Darwin" ]; then
xcode-select -p &>/dev/null || xcode-select --install
./shell/macos_setup.sh
fi
-
command: ./shell/clone.sh
description: Cloning Git repos
stdout: true
quiet: false
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+30
View File
@@ -0,0 +1,30 @@
#!/usr/bin/env bash
#
# Usage: extract <file>
# Description: extracts archived files / mounts disk images
# Note: .dmg/hdiutil is macOS-specific.
#
# credit: http://nparikh.org/notes/zshrc.txt
extract () {
if [ -f $1 ]; then
case $1 in
*.tar.bz2) tar -jxvf $1 ;;
*.tar.gz) tar -zxvf $1 ;;
*.bz2) bunzip2 $1 ;;
*.dmg) hdiutil mount $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar -xvf $1 ;;
*.tbz2) tar -jxvf $1 ;;
*.tgz) tar -zxvf $1 ;;
*.zip) unzip $1 ;;
*.ZIP) unzip $1 ;;
*.pax) cat $1 | pax -r ;;
*.pax.Z) uncompress $1 --stdout | pax -r ;;
*.rar) unrar x $1 ;;
*.Z) uncompress $1 ;;
*) echo "'$1' cannot be extracted/mounted via extract()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
+50
View File
@@ -0,0 +1,50 @@
#!/usr/bin/env bash
# set_alias_with_backup - A Bash function to alias a command while preserving the original.
#
# Usage:
# set_alias_with_backup <alias_name> <new_command>
#
# Parameters:
# alias_name: The alias name to override (e.g., "cat").
# new_command: The command to alias to (e.g., "bat").
#
# Behavior:
# - Checks if the new command exists.
# - If it exists and the backup alias (alias_name with an underscore appended) isn't set,
# it creates a backup alias pointing to the original command.
# - Sets the alias (alias_name) to use the new command.
#
# Example:
# To alias "bat" as "cat" and preserve the original "cat" as "cat_", run:
# set_alias_with_backup cat bat
set_alias_with_backup() {
local alias_name="$1"
local new_cmd="$2"
# Allow for extra parameters to be passed to the new command.
shift 2
local extra_params="$*"
# Check that both arguments are provided.
if [ -z "$alias_name" ] || [ -z "$new_cmd" ]; then
echo "Usage: set_alias_with_backup <alias_name> <new_command> [extra_params]"
return 1
fi
# Check that the new command exists.
if type "$new_cmd" >/dev/null 2>&1; then
# Define a backup alias by appending an underscore
# (e.g., "cat_" for "cat")
local backup_alias="${alias_name}_"
# If the backup alias isn't already set, create it pointing
# to the original command.
if ! type "$backup_alias" >/dev/null 2>&1; then
alias "$backup_alias"="$(which "$alias_name")"
fi
# Create the alias: e.g., alias "cat" to "bat" and pass any extra params.
alias "$alias_name"="$new_cmd $extra_params"
fi
}
+3
View File
@@ -0,0 +1,3 @@
[ -n "$PS1" ] && source ~/.config/bash/.bash_profile;
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
@@ -0,0 +1,19 @@
---
name: commit-default
model: sonnet
description: Split changes into semantic commits, and push.
argument-hint: "[preapproved]"
allowed-tools: Bash(git *)
---
Run all checks, commit changes in meaningful semantic groups, and push.
**Argument: `$ARGUMENTS`** — if this contains "preapproved", skip the confirmation step in and commit immediately.
1. Run `git diff` and `git status` to see all changes.
2. Analyze the full diff and group changes into meaningful semantic commits.
3. Create each commit separately by staging the relevant files for each group. Use `git add <specific files>` — never `git add -A` or `git add .`.
4. If "preapproved" was NOT passed as an argument, show a summary of all commits to be created and ask for confirmation before creating them. If changes are requested, modify the commits accordingly and repeat until confirmed. If "preapproved" was passed, skip confirmation and commit immediately.
5. After all commits are created, run `git push`.
6. Show a summary of all commits pushed.
+27
View File
@@ -0,0 +1,27 @@
[general]
import = [
"~/.config/alacritty/tomorrow-night-gardev.toml"
]
[window]
padding = { x = 16, y = 8 }
dynamic_title = true
option_as_alt = "OnlyLeft"
[scrolling]
history = 10000
multiplier = 3
[font]
normal = { family = "CaskaydiaCove Nerd Font Mono", style = "Regular" }
size = 14
offset = { y = 1 }
[cursor]
style = { shape = "Beam", blinking = "Always" }
[[hints.enabled]]
regex = "https?://[^\\s]+"
hyperlinks = true
command = { program = "open" }
mouse = { enabled = true }
@@ -0,0 +1,34 @@
# Colors (Tomorrow Night)
[colors]
draw_bold_text_with_bright_colors = true
# Default colors
[colors.primary]
background = '#27292b'
foreground = '#d0d2d0'
[colors.cursor]
text = '#27292b'
cursor = '#d0d2d0'
# Normal colors
[colors.normal]
black = '#777777'
red = '#ca807b'
green = '#c2c683'
yellow = '#edd090'
blue = '#98b0c7'
magenta = '#bba7c4'
cyan = '#a3c7c3'
white = '#fefefe'
# Bright colors
[colors.bright]
black = '#999999'
red = '#ca807b'
green = '#c2c683'
yellow = '#edd090'
blue = '#98b0c7'
magenta = '#bba7c4'
cyan = '#a3c7c3'
white = '#fefefe'
+32
View File
@@ -0,0 +1,32 @@
# Colors (Tomorrow Night)
# Default colors
[colors.primary]
background = '#1d1f21'
foreground = '#c5c8c6'
[colors.cursor]
text = '#1d1f21'
cursor = '#ffffff'
# Normal colors
[colors.normal]
black = '#1d1f21'
red = '#cc6666'
green = '#b5bd68'
yellow = '#e6c547'
blue = '#81a2be'
magenta = '#b294bb'
cyan = '#70c0ba'
white = '#373b41'
# Bright colors
[colors.bright]
black = '#666666'
red = '#ff3334'
green = '#9ec400'
yellow = '#f0c674'
blue = '#81a2be'
magenta = '#b77ee0'
cyan = '#54ced6'
white = '#282a2e'
+157
View File
@@ -0,0 +1,157 @@
##### Platform independent #####
# Files
alias ...="cd ../../"
alias ....="cd ../../../"
alias ll='ls -alhFG'
alias la='ls -AG'
alias l='ls -CFG'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
# CD-ing to some commonly used folders
alias og="cd ~/Git"
alias dotfiles="cd ~/Git/dotfiles"
# Editing files
alias raliases="source ~/.config/.aliases && source ~/.config/.aliases.local"
alias aliases="code ~/.config/.aliases"
alias laliases="code ~/.config/.aliases.local"
alias zshrc="code $ZDOTDIR/.zshrc"
alias lzshrc="code $ZDOTDIR/.zshrc.local"
alias vimrc="vim ~/.vimrc"
# NPM
alias npr="npm run"
# IP addresses & networking
alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
alias localip="ipconfig getifaddr en0"
# Misc
alias c="clear"
alias be="bundle exec"
alias serve="python -m http.server 9000"
alias yda="youtube-dl -x --audio-format mp3"
# tmux
if type tmux >/dev/null 2>&1; then
alias tm="tmux -2 attach-session -t "default" || tmux -2 new-session -s \"default\""
alias tmv="tmux -2 attach-session -t "vscode" || tmux -2 new-session -s \"vscode\""
alias tmks="tmux kill-session -t"
alias tmas="tmux attach-session -t"
alias tmls="tmux list-sessions"
fi
# Docker
if type docker >/dev/null 2>&1; then
alias dc="docker compose"
alias de="docker exec"
alias dr="docker run"
alias db="docker build"
alias ds="docker stop"
alias drm="docker rm"
alias drmi="docker rmi"
alias dps="docker ps"
alias dl="docker logs"
fi
# Git Aliases
if type git >/dev/null 2>&1; then
alias g="git"
alias ga="git add"
alias gr="git rm"
alias gc="git commit"
alias gs="git status -s"
alias gss="git status"
alias gd="git diff"
alias gds="git diff --staged"
alias gco="git checkout"
alias gcom="git checkout master"
alias gpom="git pull origin master"
alias gbd="git branch -D"
alias gm="git mergetool"
alias gmc="git merge --continue"
alias grc="git rebase --continue"
alias gsf="git sf"
alias gaf="git af"
alias gmf="git mf"
fi
# Github CLI Aliases
if type gh >/dev/null 2>&1; then
alias gp="gh pr"
alias gps="gh pr status"
# my prs
alias prso="gh pr list --author @me --state open"
function prsob() {
gh pr list --author $1 --state open
}
function prscb() {
gh pr list --author $1 --state closed
}
fi
if type systemctl >/dev/null 2>&1; then
alias ssc="sudo systemctl"
alias sc="systemctl"
alias scs="systemctl status"
alias scst="systemctl start"
fi
# eza aliases, if available
if type eza >/dev/null 2>&1; then
eza_params=(
'--git' '--icons' '--group' '--group-directories-first'
'--time-style=relative'
)
alias ls='eza $eza_params -1'
alias l='eza --git-ignore $eza_params'
alias ll='eza --all --header --long $eza_params'
alias llm='eza --all --header --long --sort=modified $eza_params'
alias la='eza -lbhHigUmuSa'
alias lx='eza -lbhHigUmuSa@'
alias lt='eza --tree $eza_params'
alias tree='eza --tree $eza_params'
alias lA='ll --sort=acc'
alias lC='ll --sort=cr'
alias lM='ll --sort=mod'
alias lS='ll --sort=size'
alias lX='ll --sort=ext'
fi
set_alias_with_backup cat bat
set_alias_with_backup dig doggo
set_alias_with_backup df duf
set_alias_with_backup ping gping
set_alias_with_backup du dust --no-percent-bars
##### Mac OS Specific #####
if [ "$(uname)" = "Darwin" ]; then
alias fl="open -a ForkLift"
alias flushdns="sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder"
alias copyssh="pbcopy < $HOME/.ssh/id_ed25519.pub"
alias scr="open -b com.apple.ScreenSaver.Engine"
fi
# Claude
if type claude >/dev/null 2>&1; then
alias cc='claude'
alias ccc='claude --continue'
alias ccls='claude --resume'
alias ccy='claude --dangerously-skip-permissions'
fi
# Codex CLI
if type codex >/dev/null 2>&1; then
alias cx='codex'
alias cxls='codex resume'
alias cxf='codex --full-auto'
fi
+1
View File
@@ -0,0 +1 @@
.bash_profile.local
+96
View File
@@ -0,0 +1,96 @@
# Set prompt
IFS='.' read -ra split_hostname <<<$(hostname | tr '[:upper:]' '[:lower:]')
HOSTNAME=${split_hostname[0]}
PS1='\[\e[1;4;36m\]$HOSTNAME\[\e[1;0m\] \[\e[1;32m\]\w\[\e[m\]\[\e[1;0m\] \[\e[0m\] \[\e[1;0m\]'
export TERM=xterm-256color
shopt -s cdspell
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# Enable some Bash 4 features when possible:
# * `autocd`, e.g. `**/qux` will enter `./foo/bar/baz/qux`
# * Recursive globbing, e.g. `echo **/*.txt`
for option in autocd globstar; do
shopt -s "$option" 2> /dev/null;
done;
# Disable Caret-C output
stty -ctlecho
set -o vi
bind -m vi-insert "\C-l":clear-screen
#so as not to be disturbed by Ctrl-S ctrl-Q in terminals:
stty -ixon
######################
# History Management #
######################
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=5000
HISTFILESIZE=2000
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
######################
# Aliases #
######################
# enable color support of ls
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
fi
# Editor
export EDITOR='code -w'
# bash-git-prompt
GIT_PROMPT_ONLY_IN_REPO=1
GIT_PROMPT_START="\[\e[1;4;36m\]$HOSTNAME\[\e[1;0m\] \[\e[1;32m\]\w\[\e[m\]"
GIT_PROMPT_END="\[\e[1;m\]  \[\e[1;m\]"
# Disable deprecation warning on mac
export BASH_SILENCE_DEPRECATION_WARNING=1
######################
# Sources & exports #
######################
if [ -f ~/.config/.aliases ]; then
source ~/.config/.aliases
fi
if [ -f ~/.config/.aliases.local ]; then
. ~/.config/.aliases.local
fi
if [ -f ~/.config/bash/.bash_profile.local ]; then
source ~/.config/bash/.bash_profile.local
fi
# bash-git prompt
if [ -f ~/.config/bash/bash-git-prompt/gitprompt.sh ]; then
source ~/.config/bash/bash-git-prompt/gitprompt.sh
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
source /etc/bash_completion
fi
# Git completion
if [ -f ~/.config/bash/git-completion.bash ]; then
source ~/.config/bash/git-completion.bash
fi
File diff suppressed because it is too large Load Diff
+24
View File
@@ -0,0 +1,24 @@
override_git_prompt_colors() {
GIT_PROMPT_THEME_NAME="Georgi"
GIT_PROMPT_PREFIX="${BoldCyan}("
GIT_PROMPT_SUFFIX="${BoldCyan})"
GIT_PROMPT_BRANCH="${BoldCyan}"
GIT_PROMPT_SEPARATOR="${BoldCyan}|"
GIT_PROMPT_CHANGED="${BoldRed}+"
GIT_PROMPT_UNTRACKED="${BoldRed}"
GIT_PROMPT_STAGED="${BoldGreen}"
GIT_PROMPT_STASHED="${BoldCyan}"
GIT_PROMPT_CONFLICTS="${BoldRed}"
GIT_PROMPT_CLEAN="${BoldCyan}"
GIT_PROMPT_SYMBOLS_AHEAD="${BoldYellow}"
GIT_PROMPT_SYMBOLS_BEHIND="${BoldMagenta}"
GIT_PROMPT_SYMBOLS_PREHASH="${BoldRed}:"
GIT_PROMPT_SYMBOLS_NO_REMOTE_TRACKING=" "
GIT_PROMPT_REMOTE=""
}
reload_git_prompt_colors "Georgi"
+283
View File
@@ -0,0 +1,283 @@
#? Config file for btop v.1.4.7
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "/usr/share/btop/themes/matcha-dark-sea.theme"
#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = false
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = true
#* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = false
#* Option to disable presets. Either the default preset, custom presets, or all presets.
#* "Off" All presets are enabled.
#* "Default" preset is disabled.#* "Custom" presets are disabled.#* "All" presets are disabled.
disable_presets = "Off"
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
#* Use whitespace " " as separator between different presets.
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = false
#* Disable all mouse events.
disable_mouse = false
#* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = true
#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
terminal_sync = true
#* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts.
#* "block" has half the resolution of braille but uses more common characters.
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
graph_symbol = "braille"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_cpu = "default"
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
graph_symbol_gpu = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_mem = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_net = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_proc = "default"
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
shown_boxes = "cpu mem net proc"
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 2000
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "cpu lazy"
#* Reverse sorting order, True or False.
proc_reversed = false
#* Show processes as a tree.
proc_tree = false
#* Use the cpu graph colors in the process list.
proc_colors = true
#* Use a darkening gradient in the process list.
proc_gradient = true
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = true
#* Show process memory as bytes instead of percent.
proc_mem_bytes = true
#* Show cpu graph for each process.
proc_cpu_graphs = true
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = false
#* Show proc box on left side of screen instead of right.
proc_left = false
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = false
#* Should the process list follow the selected process when detailed view is open.
proc_follow_detailed = true
#* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = false
#* Should cpu and memory usage display be preserved for dead processes when paused.
keep_dead_proc_usage = false
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_upper = "Auto"
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_lower = "Auto"
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
show_gpu_info = "Auto"
#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = true
#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = false
#* Show cpu box at bottom of screen instead of top.
cpu_bottom = false
#* Shows the system uptime in the CPU box.
show_uptime = true
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
show_cpu_watts = true
#* Show cpu temperature.
check_temp = true
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = true
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
#* Example: "4:0 5:1 6:3"
cpu_core_map = ""
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = false
#* Show CPU frequency.
show_cpu_freq = true
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X"
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = false
#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
disks_filter = ""
#* Show graphs instead of meters for memory values.
mem_graphs = true
#* Show mem box below net box instead of above.
mem_below_net = false
#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = true
#* If swap memory should be shown in memory box.
show_swap = false
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = false
#* If mem box should be split to also show disks info.
show_disks = true
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = true
#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = true
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = false
#* Set to true to show available disk space for privileged users.
disk_free_priv = false
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = true
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = false
#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = false
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1".
io_graph_speeds = ""
#* Swap the positions of the upload and download speed graphs. When true, upload will be on top.
swap_upload_download = false
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
net_download = 100
net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = true
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = true
#* Starts with the Network Interface specified here.
net_iface = ""
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
base_10_bitrate = "Auto"
#* Show battery stats in top right if battery is present.
show_battery = false
#* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto"
#* Show power stats of battery next to charge indicator.
show_battery_watts = false
#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING"
#* Automatically save current settings to config file on exit.
save_config_on_exit = true
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
nvml_measure_pcie_speeds = true
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
rsmi_measure_pcie_speeds = true
#* Horizontally mirror the GPU graph.
gpu_mirror_graph = true
#* Set which GPU vendors to show. Available values are "nvidia amd intel apple"
shown_gpus = "nvidia amd intel apple"
#* Custom gpu0 model name, empty string to disable.
custom_gpu_name0 = ""
#* Custom gpu1 model name, empty string to disable.
custom_gpu_name1 = ""
#* Custom gpu2 model name, empty string to disable.
custom_gpu_name2 = ""
#* Custom gpu3 model name, empty string to disable.
custom_gpu_name3 = ""
#* Custom gpu4 model name, empty string to disable.
custom_gpu_name4 = ""
#* Custom gpu5 model name, empty string to disable.
custom_gpu_name5 = ""
+8
View File
@@ -0,0 +1,8 @@
(deflisten window :initial "..." "./lib/get-active-window.sh")
(defwidget active-window []
(box
:halign "center"
(label :class "bar-group" :text "${window?: 'none'}")
)
)
+51
View File
@@ -0,0 +1,51 @@
; (include "./bar/brightness.yuck")
(include "./bar/active-window.yuck")
(include "./bar/clock.yuck")
(include "./bar/kbd-layout.yuck")
(include "./bar/media.yuck")
(include "./bar/power.yuck")
(include "./bar/updates.yuck")
(include "./bar/weather.yuck")
(include "./bar/workspaces.yuck")
(defwidget bar-tray []
(box :class "bar-group"
:orientation "h"
:halign "end"
:space-evenly false
(systray :hexpand true :class "systray" :icon-size 18 :spacing 4)
(kbd-layout-tray-item)
(media-tray-item)
; (brightness)
(weather-tray-item)
(clock-tray-item)
(power-tray-item)
)
)
(defwidget bar [monitor-workspaces]
(box :class "bar" :orientation "h"
(workspaces :monitor-workspaces monitor-workspaces)
(active-window)
(box :orientation "h" :halign "end" :space-evenly false :spacing 8
(pacman-updates-widget)
(bar-tray)
)
)
)
(defwindow bar [monitor monitor-workspaces]
:monitor monitor
:geometry (geometry :x "0%"
:y "4px"
:width "99.7%"
:height "32px"
:anchor "top center"
)
:exclusive true
:windowtype "dock"
:wm-ignore false
:focusable false
(bar :monitor-workspaces monitor-workspaces)
)
+9
View File
@@ -0,0 +1,9 @@
; this is taking up too much CPU time
(defpoll brightness-1 :interval "2s" "ddcutil -d 1 getvcp 10 | awk '{ split($9, a, \",\"); print a[1]}'")
(defwidget brightness []
(eventbox :onscroll "./lib/change-brightness.sh {} ${brightness-1 + 0}"
(label :text "󰃞 ${substring(brightness-1, 0, 2)}")
)
)
+30
View File
@@ -0,0 +1,30 @@
(defpoll date-time :interval "5s" "./lib/date-time.sh")
(defwidget date []
(box :class "date"
"${date-time.date}"
)
)
(defwidget day []
(box :class "day"
"${date-time.day}"
)
)
(defwidget time []
(box :class "time"
"${date-time.time}"
)
)
(defwidget clock-tray-item []
(box :class "clock-tray-item"
:orientation "h"
:space-evenly false
:valign "center"
(date)
(day)
(time)
)
)
+17
View File
@@ -0,0 +1,17 @@
(deflisten keyboard-layout :initial "en" "./lib/get-kb-layout.sh")
(defwidget kbd-layout-tray-item []
(box
:orientation "h"
:space-evenly false
:halign "center"
:class "interactive kbd-layout-tray-item"
(eventbox :cursor "pointer" :class "interactive"
(button
:class "kbd-layout"
:onclick "hyprctl switchxkblayout usb-hid-keyboard next"
keyboard-layout
)
)
)
)
+99
View File
@@ -0,0 +1,99 @@
(defpoll mediastatus :interval "1s" "./lib/media-status.sh")
(defpoll audio-sinks :interval "1s" "pactl -f json list sinks")
(defpoll audio-info :initial "{}" :interval "1s" "pactl -f json info")
(defpoll volume-level :interval "1s" "./lib/get-volume-level.sh")
(defwidget media-tray-item []
(box :orientation "h" :space-evenly false :halign "end" :class "media-tray-item"
(eventbox
:cursor "pointer"
:class "interactive"
:onscroll "./lib/change-volume.sh {}"
:onclick "eww open --toggle media-menu"
:onmiddleclick "playerctl play-pause"
(box :class "volume-tray-icon"
(label :class "volume-icon" :text {volume-level > 66 ? "" : volume-level > 0 ? "" : ""})
(label :text "${volume-level}%")
))
)
)
(defwidget audio-source-selector []
(box :orientation "v" :valign "start" :class "audio-source-selector"
(box :class "title"
(label :halign "start" :text "output source")
)
(for sink in audio-sinks
(eventbox :cursor "pointer"
(button
:halign "start"
:class "audio-source interactive ${sink.name == audio-info.default_sink_name ? "active" : ""}"
:onclick "pactl set-default-sink ${sink.index}"
"󰓃 ${sink.description}"
)
)
)
)
)
(defwidget media-player []
(box :orientation "v" :space-evenly false :class "media-player" :valign "top"
(label :class "title" :text "${mediastatus.artist} - ${mediastatus.title}" :show-truncated false)
(label :class "album" :text "${mediastatus.album}" :show-truncated false)
(box :class "media-cover" :style "background: url('${mediastatus.artUrl}'); background-size: cover;" :height 300)
(box :class "media-controls" :spacing 12 :space-evenly false :halign "center"
(eventbox :cursor "pointer"
(button :class "media-button" :class "media-button shuffle ${mediastatus.shuffle == "On" ? "active" : ""}" :onclick "playerctl shuffle toggle" "")
)
(eventbox :cursor "pointer"
(button :class "media-button" :onclick "playerctl previous" "")
)
(eventbox :cursor "pointer"
(button
:class "media-button ${mediastatus.status == "Playing" ? "pause" : "play"}"
:onclick "./lib/media-play-pause.sh"
"${mediastatus.status == "Playing" ? "" : ""}"
)
)
(eventbox :cursor "pointer"
(button :class "media-button" :onclick "playerctl next" "")
)
(eventbox :cursor "pointer"
(button
:class "media-button loop ${mediastatus.loop != "None" ? "active" : ""}"
:onclick "playerctl loop ${mediastatus.loop == "Playlist" ? "track" : mediastatus.loop == "Track" ? "none" : "playlist"}"
"${mediastatus.loop == "Track" ? "󰑘" : "󰑖"}"
)
)
)
)
)
(defwindow media-menu
:monitor 0
:namespace "media-menu"
:stacking "overlay"
:geometry (geometry :x "8px" :y "8px" :width "400px" :anchor "top right")
:wm-ignore false
:focusable false
(box :class "eww-overlay media-menu" :orientation "v" :space-evenly false
(media-player)
(audio-source-selector)
(eventbox :cursor "pointer"
(button :class "interactive btn" :halign "start" :onclick "eww open --toggle media-menu & pavucontrol &" "󰴸 Open PulseAudio control")
)
; TODO: For some reason audio-info is null if I don't invoke it outside the for. Investigate.x
(label :class "hidden" :text "Default: ${audio-info.default_sink_name}")
)
)
+31
View File
@@ -0,0 +1,31 @@
(defwidget power-tray-item []
(eventbox :cursor "pointer"
(button :class "power-button-tray-item interactive" :onclick "eww open --toggle power-menu" "󰐥")
)
)
(defwindow power-menu
:namespace "power-menu"
:monitor 0
:stacking "overlay"
:geometry (geometry :x "50%"
:y "50%"
:width "30%"
:height "200px"
:anchor "center"
)
(box :class "power-menu" :orientation "h"
(eventbox :cursor "pointer"
(button :class "power-menu-item first" :onclick "eww open --toggle power-menu & ./lib/lock.sh" "")
)
(eventbox :cursor "pointer"
(button :class "power-menu-item" :onclick "eww open --toggle power-menu & ./lib/logout.sh" "󰈆")
)
(eventbox :cursor "pointer"
(button :class "power-menu-item" :onclick "eww open --toggle power-menu & ./lib/reboot.sh" "")
)
(eventbox :cursor "pointer"
(button :class "power-menu-item" :onclick "eww open --toggle power-menu & ./lib/shutdown.sh" "")
)
)
)
+35
View File
@@ -0,0 +1,35 @@
(defpoll pacman-updates :initial 0 :interval "60s" "checkupdates | wc -l")
(defpoll pacman-updates-full :interval "60s" "checkupdates")
(defwidget pacman-updates-widget []
(box :class "pacman-update-widget"
(eventbox
:class "pacman-update-widget-inner ${pacman-updates > 0 ? 'has-updates' : ''}"
:cursor "pointer"
:onclick "${pacman-updates > 0 ? 'alacritty -e sudo pacman -Syu &' : ''}"
:onmiddleclick "eww open --toggle updates-menu"
(label :class "update-text" :text " ${pacman-updates}")
)
)
)
(defwindow updates-menu
:namespace "updates-menu"
:monitor 0
:stacking "overlay"
:geometry (geometry :x "50%"
:y "40%"
:width "400px"
:height "200px"
:anchor "center"
)
(box :class "updates-menu" :orientation "v" :space-evenly true
(label :class "pacman-updates-menu-title" :text "Pacman Updates:  ${pacman-updates}")
(label :text "${pacman-updates-full}")
(eventbox :cursor "pointer" :class "interactive"
(button :class "btn" :onclick "alacritty -e sudo pacman -Syu &" "Update")
)
)
)
+14
View File
@@ -0,0 +1,14 @@
(deflisten weather :initial "{'temp': 'n/a', 'desc': 'n/a'}" "./lib/weather.py")
(defwidget weather-tray-item []
(box :class "weather-tray-item"
:orientation "h"
:space-evenly false
(eventbox :cursor "pointer" :class "interactive weather" :onclick "xdg-open https://www.sinoptik.bg/sofia-bulgaria-100727011"
(box :space-evenly false
(label :class "weather-temp" :text "${weather.icon} ${weather.temp}")
(label :class "weather-desc" :text "${weather.desc}")
)
)
)
)
+15
View File
@@ -0,0 +1,15 @@
(deflisten active-workspace :initial "." "./lib/get-active-workspace.sh")
(defwidget workspaces [?monitor-workspaces]
(box :class "workspaces"
:orientation "h"
:space-evenly true
:halign "start"
:spacing 8
(for workspace in monitor-workspaces
(eventbox :cursor "pointer"
(button :class "interactive workspace ${active-workspace == workspace ? "active" : ""}" :onclick "hyprctl dispatch workspace ${workspace}" "${workspace}")
)
)
)
)
+98
View File
@@ -0,0 +1,98 @@
$font: "SF Pro Light";
$bg: rgba(0, 0, 0, 0.5);
$fg: #dedede;
$menu-border: rgba(255, 255, 255, 0.1);
$bar-gap: 8px;
* {
all: unset;
font-family: $font;
}
@import "./styles/media-menu.scss";
@import "./styles/power-menu.scss";
@import "./styles/updates-menu.scss";
@import "./styles/tray.scss";
.systray menu {
font-family: $font;
border-radius: 10px;
background-color: rgba(30, 30, 30);
color: $fg;
padding: 5px 0px;
> menuitem {
padding: 5px 10px;
&:disabled label {
color: gray;
}
&:hover {
background-color: #0e4679;
}
}
separator {
background-color: rgb(60, 60, 60);
padding-top: 1px;
&:last-child {
padding: unset;
}
}
}
.eww-overlay {
background-color: $bg;
border: 3px solid $menu-border;
border-radius: 8px;
padding: 16px 48px;
}
.bar-group {
background-color: $bg;
border-radius: 8px;
padding: 0 calc($bar-gap * 1.5);
color: $fg;
> :not(:first-child) {
margin-left: $bar-gap;
}
}
.interactive {
border-radius: 4px;
transition: background-color 0.4s ease;
&.active {
background-color: $fg;
color: $bg;
font-weight: bold;
}
&:not(.active):hover {
background-color: rgba(255, 255, 255, 0.2);
}
}
.btn {
border-radius: 4px;
padding: 10px 15px 10px 10px;
}
.hidden {
opacity: 0;
}
.workspace {
padding: 0 8px;
&.active {
background-color: $fg;
color: $bg;
font-weight: bold;
}
}
+26
View File
@@ -0,0 +1,26 @@
(include "./bar/bar.yuck")
; a hacky solution for moving the windows on my second monitor a bit up so I can see them :D
(defwindow monitor-bump [monitor]
:monitor monitor
:geometry (geometry :x "0" :y "0" :width "100%" :height "120" :anchor "bottom center")
:exclusive true
:windowtype "dock"
:wm-ignore true
:focusable false
(box " ")
)
; (defvar r_bar_systray false)
; (defwidget w_bar_tray[] (revealer
; :reveal r_bar_systray
; :transition "slideleft"
; (eventbox :class "tray" :spacing 20 :space-evenly false
; (box :class "widget" :spacing 0 :space-evenly false
; (systray :icon-size 18)
; )
; )
; )
; )
+1
View File
@@ -0,0 +1 @@
secrets.py
+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env sh
direction=$1
current=$2
if [[ $direction == "down" ]]; then
target=$(($current+1))
if [[ $target == 11 ]]; then
exit 0
fi
hyprctl dispatch workspace $target
elif [[ $direction == "up" ]]; then
target=$(($current-1))
hyprctl dispatch workspace $target
else
target=$1
hyprctl dispatch workspace $target
fi
+10
View File
@@ -0,0 +1,10 @@
#!/usr/bin/env sh
case $1 in
up)
ddcutil -d 1 setvcp 10 $(($2 + 10))
;;
down)
ddcutil -d 1 setvcp 10 $(($2 - 10))
;;
esac
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env sh
if [[ $1 == "up" ]]; then
wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
elif [[ $1 == "down" ]]; then
wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
else
wpctl set-volume @DEFAULT_AUDIO_SINK@ $1
fi
+14
View File
@@ -0,0 +1,14 @@
#!/usr/bin/env sh
day=$(date "+%a")
date=$(date "+%-d")
time=$(date "+%H:%M")
JSON_STRING=$(jq -n \
--arg day "$day" \
--arg date "$date" \
--arg time "$time" \
'{day: $day, date: $date, time: $time}')
echo $JSON_STRING
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env sh
hyprctl activewindow -j | jq --raw-output .title
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | stdbuf -o0 awk -F '>>|,' '/^activewindow>>/{print $3}'
+6
View File
@@ -0,0 +1,6 @@
##!/usr/bin/env sh
hyprctl monitors -j | jq '.[] | select(.focused) | .activeWorkspace.id'
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - |
stdbuf -o0 awk -F '>>|,' -e '/^workspace>>/ {print $2}' -e '/^focusedmon>>/ {print $3}'
+17
View File
@@ -0,0 +1,17 @@
##!/usr/bin/env sh
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
if [[ $line == "activelayout>>"* ]]; then
split=(${line//>>/ })
lang=(${split[1]//,/ })
language=${lang[1]}
lang_code=${language:0:2}
lang_code_lower=$(echo $lang_code | tr '[:upper:]' '[:lower:]')
if [[ $lang_code_lower == "bu" ]]; then
lang_code_lower="bg"
fi
echo $lang_code_lower
fi
done
+24
View File
@@ -0,0 +1,24 @@
#!/usr/bin/env sh
volume=$(wpctl get-volume @DEFAULT_AUDIO_SINK@)
#todo fix 100% case
volume_value=$(echo $volume | cut -d':' -f2)
if [ $volume_value == "0.00" ]; then
echo "0"
exit 0
fi
if [[ $volume_value =~ ^" 1" ]]; then
# starts with a space - trim
trimmed=$( echo $volume_value | cut -c1- )
echo "${trimmed//.}"
exit 0
fi
volume_percent=$(echo $volume_value | cut -d'.' -f2)
echo $volume_percent
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env sh
hyprlock
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env sh
loginctl kill-user $USER
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/env sh
if [[ $(playerctl status) == "Playing" ]]; then
playerctl pause
else
playerctl play
fi
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env sh
status=$(playerctl status 2>/dev/null)
artist=$(playerctl metadata -f "{{artist}}" 2>/dev/null)
title=$(playerctl metadata -f "{{title}}" 2>/dev/null)
album=$(playerctl metadata -f "{{album}}" 2>/dev/null)
artUrl=$(playerctl metadata -f "{{mpris:artUrl}}" 2>/dev/null)
length=$(playerctl metadata -f "{{duration(mpris:length)}}" 2>/dev/null)
shuffle=$(playerctl shuffle 2>/dev/null)
loop=$(playerctl loop 2>/dev/null)
JSON_STRING=$(jq -n \
--arg status "$status" \
--arg artist "$artist" \
--arg title "$title" \
--arg album "$album" \
--arg artUrl "$artUrl" \
--arg length "$length" \
--arg shuffle "$shuffle" \
--arg loop "$loop" \
'{status: $status, artist: $artist, title: $title, album: $album, artUrl: $artUrl, length: $length, shuffle: $shuffle, loop: $loop}')
echo $JSON_STRING
+10
View File
@@ -0,0 +1,10 @@
#!/usr/bin/env python
from hyprsocket import run_on_line
def get_kb_layout(line):
print(line)
run_on_line(get_kb_layout)
@@ -0,0 +1,24 @@
import socket
import os, os.path
def get_socket_path():
XDG_RUNTIME_DIR = os.getenv("XDG_RUNTIME_DIR")
HYPRLAND_INSTANCE_SIGNATURE = os.getenv("HYPRLAND_INSTANCE_SIGNATURE")
socket_path = os.path.join(
XDG_RUNTIME_DIR, "hypr", HYPRLAND_INSTANCE_SIGNATURE, ".socket2.sock"
)
return socket_path
def run_on_line(method):
server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
server.connect(get_socket_path())
while True:
data_chunk = server.recv(4096)
if data_chunk:
line = data_chunk.decode("utf-8")
method(line)
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env sh
systemctl reboot
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env sh
shutdown now
+62
View File
@@ -0,0 +1,62 @@
#!/usr/bin/env python
import requests, json, sys, time
from secrets import WEATHER_API_TOKEN, WEATHER_CITY
UNITS = "metric"
LANG = "en"
def get_icon(code):
icons = {
"01d": "",
"01n": "",
"02d": "",
"02n": "",
"03d": "󰖐",
"03n": "󰖐",
"04d": "",
"04n": "",
"09d": "",
"09n": "",
"10d": "",
"10n": "",
"11d": "",
"11n": "",
"13d": "󰖘",
"13n": "󰖘",
"50d": "",
"50n": "",
}
try:
return icons[code]
except KeyError:
return None
def main():
response = requests.get(
f"https://api.openweathermap.org/data/2.5/weather?q={WEATHER_CITY}&appid={WEATHER_API_TOKEN}&lang={LANG}&units={UNITS}"
).json()
data = {
"icon": get_icon(response["weather"][0]["icon"]),
"temp": str(round(response["main"]["temp"])) + "°",
"desc": response["weather"][0]["description"].capitalize(),
}
return data
if __name__ == "__main__":
try:
while True:
try:
sys.stdout.write(json.dumps(main()) + "\n")
sys.stdout.flush()
time.sleep(1800)
except requests.exceptions.ConnectionError:
print("Connection error! Retrying...")
time.sleep(2)
except KeyboardInterrupt:
exit(0)
+46
View File
@@ -0,0 +1,46 @@
#!/usr/bin/env sh
## NOTE: This file is unused currently
NUMBER_OF_WORKSPACES=6
window_class() {
echo `hyprctl activewindow -j | jq --raw-output .class`
}
window_title() {
echo `hyprctl activewindow -j | jq --raw-output .title`
}
workspaces (){
WORKSPACE_WINDOWS=$(hyprctl workspaces -j | jq 'map({key: .id | tostring, value: .windows}) | from_entries')
seq 1 $NUMBER_OF_WORKSPACES | jq --argjson windows "${WORKSPACE_WINDOWS}" --slurp -Mc 'map(tostring) | map({id: ., windows: ($windows[.]//0)})'
}
if [[ $1 == 'workspaces' ]]; then
echo "{ \"workspaces\": $(workspaces), \"active\": 1, \"active_empty\": true }"
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
active=$(eww get workspaces | jq .active)
if [[ ${line:0:9} == 'workspace' ]]; then
active=${line:11:2}
fi
active_empty='true'
let "i = $active - 1"
if [[ $(workspaces | jq --raw-output .[$i].windows) -gt 0 ]]; then active_empty='false'; fi
eww update workspaces="{
\"workspaces\": $(workspaces),
\"active\": $active,
\"active_empty\": $active_empty
}"
eww update dock_reveal="$active_empty"
done
fi
if [[ $1 == 'window' ]]; then
window_class
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
window_class
done
fi
+78
View File
@@ -0,0 +1,78 @@
.media-menu {
.audio-source-selector {
margin-top: 16px;
margin-bottom: 8px;
.title {
border-bottom: 1px solid $fg;
padding: 10px;
margin-bottom: 8px;
}
.audio-source {
padding-left: 10px;
padding-right: 15px;
}
}
.media-player {
.title {
font-weight: bold;
font-size: 15px;
}
.album {
font-size: 13px;
color: #aaa;
}
.media-cover {
margin-top: 12px;
border-radius: 16px;
border: 2px solid $menu-border;
}
.media-controls {
margin-top: 16px;
}
.media-button {
padding: 8px 13px;
border-radius: 100%;
border: 2px solid $menu-border;
transition: all 0.4s ease;
&.shuffle {
padding-left: 10px;
padding-right: 16px;
&.active {
background-color: $fg;
color: $bg;
}
}
&.loop {
padding-left: 12px;
padding-right: 14px;
&.active {
background-color: $fg;
color: $bg;
}
}
&.pause {
background-color: $fg;
color: $bg;
}
&:hover {
background-color: $fg;
border-color: $fg;
color: $bg;
}
}
}
}
+28
View File
@@ -0,0 +1,28 @@
.power-menu {
background-color: $bg;
border: 3px solid $menu-border;
border-radius: 32px;
.power-menu-item {
font-size: 44px;
background-color: $bg;
border-radius: 20px;
border: 1px solid $menu-border;
margin: 16px 0;
margin-right: 16px;
padding-right: 4px; /* this makes sure icons from nerd font are centered */
transition:
background-color 0.4s ease,
color 0.4s ease;
color: $fg;
&:hover {
background-color: $fg;
color: $bg;
}
&.first {
margin-left: 16px;
}
}
}
+88
View File
@@ -0,0 +1,88 @@
$tray-item-interactive-margin: 6px 0;
.pacman-update-widget {
margin: $tray-item-interactive-margin;
.pacman-update-widget-inner {
border-radius: 4px;
&.has-updates {
background-color: rgb(228, 137, 137);
color: #fff;
font-weight: bold;
transition: background-color 0.4s ease;
&:hover {
background-color: rgb(187, 100, 100);
}
.update-text {
padding: 0 8px;
}
}
}
}
.kbd-layout-tray-item {
margin: $tray-item-interactive-margin;
.kbd-layout {
padding: 0 8px;
border-radius: 4px;
}
}
.media-tray-item {
margin: $tray-item-interactive-margin;
.volume-tray-icon {
padding-right: 6px;
.volume-icon {
padding-right: 6px;
}
}
}
.clock-tray-item {
margin-right: 8px;
.date {
border: 1px solid rgba(255, 255, 255, 0.3);
border-top: 4px solid rgba(255, 255, 255, 0.6);
padding: 0 8px;
border-radius: 4px;
margin: 8px 0;
font-size: 12px;
}
.day {
margin-left: 6px;
}
.time {
margin-left: 4px;
}
}
.weather-tray-item {
margin: $tray-item-interactive-margin;
.weather-temp {
padding-left: 8px;
}
.weather-desc {
padding-left: 4px;
padding-right: 8px;
}
}
.power-button-tray-item {
margin: $tray-item-interactive-margin;
padding-right: 8px;
padding-left: 8px;
margin-left: 4px;
font-size: 18px;
}
+6
View File
@@ -0,0 +1,6 @@
.updates-menu {
background-color: $bg;
border: 3px solid $menu-border;
border-radius: 32px;
padding: 16px 32px;
}
+13
View File
@@ -0,0 +1,13 @@
theme = tomorrow-night-gardev
font-family = CaskaydiaCove Nerd Font Mono
font-size = 14
font-thicken = true
window-padding-x = 16
window-padding-y = 8
cursor-style = bar
cursor-style-blink = true
macos-option-as-alt = left
@@ -0,0 +1,23 @@
# Tomorrow Night
background = #27292b
foreground = #d0d2d0
cursor-color = #d0d2d0
cursor-text = #27292b
bold-is-bright = true
palette = 0=#777777
palette = 1=#ca807b
palette = 2=#c2c683
palette = 3=#edd090
palette = 4=#98b0c7
palette = 5=#bba7c4
palette = 6=#a3c7c3
palette = 7=#fefefe
palette = 8=#999999
palette = 9=#ca807b
palette = 10=#c2c683
palette = 11=#edd090
palette = 12=#98b0c7
palette = 13=#bba7c4
palette = 14=#a3c7c3
palette = 15=#fefefe
+33
View File
@@ -0,0 +1,33 @@
# Compiled source #
###################
*.class
*.dll
*.exe
*.o
*.so
*.pyc
# Editing tools and IDEs #
##########################
.sw[a-p]
[._]*.sw[a-p]
*~
~*
\#*\#
\.#*
.ipynb_checkpoints/
# Logs and databases #
######################
*.log
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
+149
View File
@@ -0,0 +1,149 @@
# herdr configuration
# Place this file at ~/.config/herdr/config.toml
# Apply changes with: herdr server reload-config
# Show first-run notification setup on startup.
# Missing also shows onboarding; set false after you've chosen.
onboarding = false
[theme]
# Built-in themes: catppuccin, terminal, tokyo-night, dracula, nord,
# gruvbox, one-dark, solarized, kanagawa, rose-pine,
# vesper
name = "terminal"
auto_switch = false
# Tomorrow Night
[theme.custom]
panel_bg = "#27292b"
surface_dim = "#212325"
surface0 = "#313437"
surface1 = "#3c4043"
overlay0 = "#777777"
overlay1 = "#999999"
text = "#d0d2d0"
subtext0 = "#999999"
accent = "#98b0c7"
red = "#ca807b"
green = "#c2c683"
yellow = "#edd090"
blue = "#98b0c7"
mauve = "#bba7c4"
teal = "#a3c7c3"
peach = "#e0b285"
[terminal]
# Executable used for new interactive panes.
# Empty means $SHELL, then /bin/sh.
default_shell = "/bin/zsh"
[update]
# Update channel used by background version checks and `herdr update`.
# Use "stable" for normal releases or "preview" for opt-in preview builds.
channel = "stable"
[keys]
prefix = "ctrl+a"
# Prefix-mode actions
help = "prefix+?"
settings = "prefix+shift+s" # default prefix+s is used for split_horizontal below
# detach = "prefix+q"
# reload_config = "prefix+shift+r"
# open_notification_target = "prefix+o"
# workspace_picker = "prefix+w"
# goto = "prefix+g"
# new_workspace = "prefix+shift+n"
# new_worktree = "prefix+shift+g"
# open_worktree = "" # optional, unset by default
# remove_worktree = "" # optional, unset by default; opens confirmation
# rename_workspace = "prefix+shift+w"
# close_workspace = "prefix+shift+d"
previous_workspace = "prefix+ctrl+k"
next_workspace = "prefix+ctrl+j"
# previous_agent = "" # optional, unset by default
# next_agent = "" # optional, unset by default
# focus_agent = "" # optional indexed binding, e.g. "prefix+alt+1..9"
# remote_image_paste = "ctrl+v" # only active in herdr --remote; empty disables raw-key image paste
new_tab = "prefix+c"
rename_tab = ["prefix+comma", "prefix+shift+t"]
previous_tab = ["prefix+p", "prefix+ctrl+h"]
next_tab = ["prefix+n", "prefix+ctrl+l"]
switch_tab = "prefix+1..9"
switch_workspace = "prefix+alt+1..9"
close_tab = "prefix+shift+x"
rename_pane = ["prefix+shift+p", "prefix+<"] # prefix+shift+comma
# edit_scrollback = "prefix+e"
focus_pane_left = "prefix+h"
focus_pane_down = "prefix+j"
focus_pane_up = "prefix+k"
focus_pane_right = "prefix+l"
# cycle_pane_next = "prefix+tab"
# cycle_pane_previous = "prefix+shift+tab"
# last_pane = "" # optional, unset by default; bind e.g. "prefix+tab" for global back-and-forth
split_vertical = ["prefix+v", "prefix+|"]
split_horizontal = ["prefix+s", "prefix+minus"]
# close_pane = "prefix+x"
# zoom = "prefix+z" # legacy alias: fullscreen
resize_mode = "prefix+r"
toggle_sidebar = "prefix+b"
copy_mode = ["prefix+[", "prefix+esc"]
# [worktrees]
# directory = "~/.herdr/worktrees"
[ui]
# Desktop tab row placement: "top" or "bottom".
tab_bar_position = "bottom"
# Ask for a tab name before creating a new tab.
prompt_new_tab_name = true
# Draw borders around split panes.
pane_borders = true
# Keep split panes visually separated instead of sharing divider borders.
pane_gaps = true
# Show detected/reported agent labels in split pane borders when no manual pane name is set.
show_agent_labels_on_pane_borders = true
# Agent panel ordering: "spaces" (grouped by space) or "priority" (attention queue).
# "workspaces" is accepted as an alias for "spaces".
agent_panel_sort = "priority"
# Accent color for highlights, borders, and navigation UI.
# Accepts: hex (#89b4fa), named colors (cyan, blue, magenta), or rgb(r,g,b)
accent = "#98b0c7"
[ui.toast]
delivery = "herdr"
[ui.toast.herdr]
position = "bottom-right"
[ui.toast.clipboard]
enabled = true
position = "bottom-center"
[experimental]
# Save recent pane screen history across full server restarts.
pane_history = false
# Show the real terminal cursor in the focused pane instead of herdr's solid block.
reveal_hidden_cursor_for_cjk_ime = true
cjk_ime_cursor_shape = "bar"
[advanced]
scrollback_limit_bytes = 33554432 # 32 MiB ~ 50k lines (tmux history-limit)
## Differences to tmux
# - prefix+n changed meaning: in tmux it was swap-pane -U; in herdr it's next tab. Pane swapping is prefix+shift+h/j/k/l - which was pane resize in your tmux. Resizing is now a mode: prefix+r.
# - No equivalents: window reordering (</>), paste buffers (b/p/P), vi mode-keys, base-index, escape-time, focus-events, aggressive-resize. Config reload is herdr server reload-config instead of prefix+r. The status-bar cpu/mem/clock plugins are replaced by herdr's sidebar; tmux-fzf's pickers map to prefix+w (workspace picker) and prefix+g (goto).
+13
View File
@@ -0,0 +1,13 @@
#################
### AUTOSTART ###
#################
exec-once = eww d
exec-once = ~/.config/hypr/scripts/run-eww.sh
exec-once = swww-daemon --format xrgb &
exec-once = swaync &
exec-once = hypridle &
exec-once = blueman-applet & blueman-tray & nm-applet &

Some files were not shown because too many files have changed in this diff Show More