Add themeswitch script
This commit is contained in:
		
							parent
							
								
									222dcbb4dd
								
							
						
					
					
						commit
						0d72ee0c84
					
				
					 3 changed files with 93 additions and 13 deletions
				
			
		
							
								
								
									
										24
									
								
								nixos/flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								nixos/flake.lock
									
										
									
										generated
									
									
									
								
							|  | @ -8,11 +8,11 @@ | ||||||
|         "systems": "systems" |         "systems": "systems" | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1695973661, |         "lastModified": 1698410321, | ||||||
|         "narHash": "sha256-BP2H4c42GThPIhERtTpV1yCtwQHYHEKdRu7pjrmQAwo=", |         "narHash": "sha256-MphuSlgpmKwtJncGMohryHiK55J1n6WzVQ/OAfmfoMc=", | ||||||
|         "owner": "numtide", |         "owner": "numtide", | ||||||
|         "repo": "devshell", |         "repo": "devshell", | ||||||
|         "rev": "cd4e2fda3150dd2f689caeac07b7f47df5197c31", |         "rev": "1aed986e3c81a4f6698e85a7452cbfcc4b31a36e", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -62,11 +62,11 @@ | ||||||
|     }, |     }, | ||||||
|     "nixpkgs": { |     "nixpkgs": { | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1697851979, |         "lastModified": 1698288402, | ||||||
|         "narHash": "sha256-lJ8k4qkkwdvi+t/Xc6Fn74kUuobpu9ynPGxNZR6OwoA=", |         "narHash": "sha256-jIIjApPdm+4yt8PglX8pUOexAdEiAax/DXW3S/Mb21E=", | ||||||
|         "owner": "NixOS", |         "owner": "NixOS", | ||||||
|         "repo": "nixpkgs", |         "repo": "nixpkgs", | ||||||
|         "rev": "5550a85a087c04ddcace7f892b0bdc9d8bb080c8", |         "rev": "60b9db998f71ea49e1a9c41824d09aa274be1344", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -93,11 +93,11 @@ | ||||||
|     }, |     }, | ||||||
|     "nixpkgs-unstable": { |     "nixpkgs-unstable": { | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1697723726, |         "lastModified": 1698318101, | ||||||
|         "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=", |         "narHash": "sha256-gUihHt3yPD7bVqg+k/UVHgngyaJ3DMEBchbymBMvK1E=", | ||||||
|         "owner": "NixOS", |         "owner": "NixOS", | ||||||
|         "repo": "nixpkgs", |         "repo": "nixpkgs", | ||||||
|         "rev": "7c9cc5a6e5d38010801741ac830a3f8fd667a7a0", |         "rev": "63678e9f3d3afecfeafa0acead6239cdb447574c", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -125,11 +125,11 @@ | ||||||
|         "nixpkgs-stable": "nixpkgs-stable" |         "nixpkgs-stable": "nixpkgs-stable" | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1697943852, |         "lastModified": 1698273636, | ||||||
|         "narHash": "sha256-DaBxUPaZhQ3yLCmAATshYB7qo7NwcMvSFWz9T3bjYYY=", |         "narHash": "sha256-swsqg/ckSVJnravx7ie9NFQSKIH27owtlk0wh4+xStk=", | ||||||
|         "owner": "Mic92", |         "owner": "Mic92", | ||||||
|         "repo": "sops-nix", |         "repo": "sops-nix", | ||||||
|         "rev": "30a0ba4a20703b4bfe047fe5def1fc24978e322c", |         "rev": "014e44d334a39481223a5d163530d4c4ca2e75cb", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  |  | ||||||
							
								
								
									
										80
									
								
								scripts/toggle-light-dark.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										80
									
								
								scripts/toggle-light-dark.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,80 @@ | ||||||
|  | #!/usr/bin/env bash | ||||||
|  | # Toggle light- or dark-mode for your applications | ||||||
|  | # Usage: toggle [-m light|dark] | ||||||
|  | 
 | ||||||
|  | ################# | ||||||
|  | ### Variables ### | ||||||
|  | ################# | ||||||
|  | 
 | ||||||
|  | THEME_LIGHT='tdpeuter-light' | ||||||
|  | THEME_DARK='tdpeuter-dark' | ||||||
|  | THEME_DEFAULT="${THEME_LIGHT}" | ||||||
|  | 
 | ||||||
|  | STATE_FILE="${HOME}/.local/state/sisyphus/theme" | ||||||
|  | 
 | ||||||
|  | declare -A theme_next | ||||||
|  | theme_next[${THEME_LIGHT}]="${THEME_DARK}" | ||||||
|  | theme_next[${THEME_DARK}]="${THEME_LIGHT}" | ||||||
|  | 
 | ||||||
|  | declare -A gsettings_alt | ||||||
|  | gsettings_alt[${THEME_LIGHT}]='default' | ||||||
|  | gsettings_alt[${THEME_DARK}]='prefer-dark' | ||||||
|  | 
 | ||||||
|  | ############# | ||||||
|  | ### Logic ### | ||||||
|  | ############# | ||||||
|  | 
 | ||||||
|  | # Parse options | ||||||
|  | while getopts ":m:" option; do | ||||||
|  |     case "${option}" in | ||||||
|  |         m) | ||||||
|  |             if [ "${OPTARG}" == 'light' ]; then | ||||||
|  |                 theme="${THEME_LIGHT}" | ||||||
|  |             elif [ "${OPTARG}" == 'dark' ]; then | ||||||
|  |                 theme="${THEME_DARK}" | ||||||
|  |             else | ||||||
|  |                 >&2 printf "Error: Invalid mode: '%s'.\nShould be either 'light' or 'dark'\n" "${option}" | ||||||
|  |                 exit 1 | ||||||
|  |             fi | ||||||
|  |             ;; | ||||||
|  |         *) | ||||||
|  |             >&2 printf "Error: Invalid option: '%s'.\n" "${option}" | ||||||
|  |             exit 1 | ||||||
|  |             ;; | ||||||
|  |     esac | ||||||
|  | done | ||||||
|  | shift $(( OPTIND - 1 )) | ||||||
|  | 
 | ||||||
|  | # Check if the state file exists | ||||||
|  | if ! [ -d "$(dirname ${STATE_FILE})" ]; then | ||||||
|  |     mkdir -p "$(dirname ${STATE_FILE})" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Choose next theme | ||||||
|  | previous_theme="$(cat ${STATE_FILE})" | ||||||
|  | if ! [[ -z "${previous_theme}" || "${theme}" ]]; then | ||||||
|  |     theme="${theme_next[${previous_theme}]}" | ||||||
|  | fi | ||||||
|  | echo "${theme:=${THEME_DEFAULT}}" > "${STATE_FILE}" | ||||||
|  | 
 | ||||||
|  | ###################### | ||||||
|  | ### Set all themes ### | ||||||
|  | ###################### | ||||||
|  | 
 | ||||||
|  | # GNOME | ||||||
|  | if [ "$(command -v gsettings)" ]; then | ||||||
|  |     gsettings set org.gnome.desktop.interface color-scheme "${gsettings_alt[${theme}]}" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Kitty | ||||||
|  | if [ "$(command -v kitty)" ]; then | ||||||
|  |     kitten themes --config-file-name theme.conf "${theme}" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Vim | ||||||
|  | # This does not reload the config, but will use it when you restart vim | ||||||
|  | # Toggle an existing window using `:colorscheme ${theme}` | ||||||
|  | if [ "$(command -v vim)" ]; then | ||||||
|  |     echo "colorscheme ${theme}" > ~/.vim/theme.conf | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | @ -2,7 +2,7 @@ | ||||||
| " ~/.vimrc | " ~/.vimrc | ||||||
| " | " | ||||||
| 
 | 
 | ||||||
| colorscheme tdpeuter-light | source ~/.vim/theme.conf | ||||||
| 
 | 
 | ||||||
| set autoindent | set autoindent | ||||||
| set conceallevel=2 | set conceallevel=2 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue