Adds ghostty config

This commit is contained in:
Michel Fedde 2025-02-23 19:02:15 +01:00
parent bf03c131b5
commit 9438a12016
7 changed files with 230 additions and 6 deletions

46
.config/ghostty/config Normal file
View file

@ -0,0 +1,46 @@
# This is the configuration file for Ghostty.
#
# This template file has been automatically created at the following
# path since Ghostty couldn't find any existing config files on your system:
#
# /home/michel/.config/ghostty/config
#
# The template does not set any default options, since Ghostty ships
# with sensible defaults for all options. Users should only need to set
# options that they want to change from the default.
#
# Run `ghostty +show-config --default --docs` to view a list of
# all available config options and their default values.
#
# Additionally, each config option is also explained in detail
# on Ghostty's website, at https://ghostty.org/docs/config.
# Config syntax crash course
# ==========================
# # The config file consists of simple key-value pairs,
# # separated by equals signs.
# font-family = Iosevka
# window-padding-x = 2
#
# # Spacing around the equals sign does not matter.
# # All of these are identical:
# key=value
# key= value
# key =value
# key = value
#
# # Any line beginning with a # is a comment. It's not possible to put
# # a comment after a config option, since it would be interpreted as a
# # part of the value. For example, this will have a value of "#123abc":
# background = #123abc
#
# # Empty values are used to reset config keys to default.
# key =
#
# # Some config options have unique syntaxes for their value,
# # which is explained in the docs for that config option.
# # Just for example:
# resize-overlay-duration = 4s 200ms
config-file = theming.conf

View file

@ -0,0 +1,3 @@
config-file = theming.conf
custom-shader = ./shaders/optolith.glsl
custom-shader-animation = always

View file

@ -0,0 +1,160 @@
/*
Optolith Background
-------------------
This shader renders the background from the character creator program
for The Black Eye 5 "Optolith".
The default values are to make the shader as close to the original as
possible. Thus I recommend using the fullscreen mode to view it, to
reduce flickering.
This is primarily designed to be used as ghostty shader, which
requires the use of the iChannel0 channel. But feel free to use it
everywhere you like.
If you have any idea of improving it, feel free to let me know or even
create a fork. :)
I tried to make it as simple as possible and to document everything.
So even if you have no clue, whats going on, I hope my explainations
are good enough, so you know what you can change and how.
License: (as always WTFPL)
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
*/
/* --- USER PARAMETERS --- */
// These parameters you can change how ever you like.
// BACKGROUND and FOREGROUND define the colors.
#define BACKGROUND vec3(0.0666,0.0666,0.0666) // #111111
// If you prefer the light mode:
//#define BACKGROUND vec3(0.9411, 0.9411, 0.9411) // #F0F0F0
#define FOREGROUND vec3(0.5137,0.4196,0.2431) // #836B3E
// This value defines how visible the effect is.
// This default is different to the original.
// ORIGINAL VALUE: .15
#define FOREGROUND_OPACITY .25
// This defines how fast the animation is playing.
// To decrease the speed, increase the divider. (and vice versa)
// To stop the animation, just replace everything with 0 or
// any number in case you want a specific point in time.
// ORIGINAL VALUE: iTime/50.
#define TIME iTime / 50.
// MASK_DISTANCE define how far away from the center the line starts
// (should be between 0 and 1)
// ORIGINAL VALUE: 0.8
#define MASK_DISTANCE 0.8
// MASK_WIDTH defines how long the lines should be.
// ORIGINAL VALUE: 0.05
#define MASK_WIDTH 0.05
// LINE_DISTANCE defines how many degrees should be between two lines.
// For the best result, the number should be able to divide cleanly
// with 360.
// ORIGINAL VALUE: 0.5
#define LINE_DISTANCE 0.5
// LINE_WIDTH defines how thick the line is. This is expressed in degrees.
// This should not be higher than LINE_DISTANCE and should be sufficiantly
// large, otherwise the image begins to flicker. (as shown in the default)
// But I mean... I can't stop you either way.
// ORIGINAL VALUE: 0.05
#define LINE_WIDTH 0.05
/* --- SYSTEM PARAMETERS --- */
// Changing these parameters may break something... So just don't
// This is a constant to convert radians to degrees
#define RAD2DEG 57.295779513
/* --- CODE --- */
vec2 rotateUV(vec2 uv) {
float sinUV = sin(TIME);
float cosUV = cos(TIME);
mat2 rotationMatrix = mat2(cosUV, -sinUV, sinUV, cosUV);
return uv * rotationMatrix;
}
vec2 createEffectCoordnates(vec2 uv) {
float aspectRatio = iResolution.y / iResolution.x;
// Move (0,0) to the center
uv -= 0.5;
// Scale it back up, so we work with a range of 0..1
// Also here we ensure, that the effect does not strech in an unwanted way
// This also results in the effect being larger than the screen, but thats
// intended.
uv *= vec2(2., aspectRatio * 2.);
// Finally, we rotate the UV so we get a nice rotation animation going.
return rotateUV(uv);
}
float getMask(vec2 coordnates) {
// This function returns a mask, that defines where the lines show up.
// This can be modified to have more unique masks, but that is left as a
// exercise to the reader.
// Calculate the distance to the center
float uvLength = length(coordnates);
// The first step ensures that everything up to MASK_DISTANCE is (0) and
// everything past it is (1)
// The other step does the exact oppisite, but with MASK_DISTANCE + MASK_WIDTH.
// When we multiply those, we get a mask, that only contains the overlapping masks.
return step(uvLength * -1., -MASK_DISTANCE) * step(uvLength, MASK_DISTANCE + MASK_WIDTH);
}
float getLines(vec2 coordnates) {
// This returns a mask, that shows the lines on the effect.
// This "atan" gives us a nice radial texture.
// More specifically we get a value in radians.
float lines = atan(coordnates.x, coordnates.y);
// Since radians are kinda hard to work with as parameters, I convert it to degrees.
float linesDegrees = lines * RAD2DEG;
// This gives us the repeating pattern.
float result = mod(linesDegrees, LINE_DISTANCE);
// Finally a step instruction, gives us the mask in the specific width we want.
return step(result, LINE_WIDTH);
}
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// Normalized pixel coordinates (from 0 to 1)
vec2 uv = fragCoord/iResolution.xy;
vec2 effectCoords = createEffectCoordnates(uv);
float mask = getMask(effectCoords);
float lines = getLines(effectCoords);
float result = lines * mask;
vec3 col = mix(BACKGROUND, FOREGROUND, result * FOREGROUND_OPACITY);
// Mixing iChannel0 into the mix.
// If you wish to use the alpha channel, just replace the 1 with
// "channel.a".
vec4 channel = texture(iChannel0, uv);
fragColor = vec4(mix(col, channel.rgb, length(channel.rgb)), 1);
}

View file

@ -0,0 +1,10 @@
theme = GruvboxDark
font-family = "JetBrainsMono NFM Medium"
font-family-bold = "JetBrainsMono NFM Bold"
font-family-italic = "JetBrainsMono NFM Medium Italic"
font-family-bold-italic = "JetBrainsMono NFM Bold Italic"
font-size = 12.0

View file

@ -0,0 +1,7 @@
[Desktop Entry]
Type=Application
Name=DSA-Notes (Player environment)
Comment=Neovim setup for DSA (player environment)
Exec=ghostty --config-default-files=false --config-file="~/.config/ghostty/dsa-config" --working-directory="~/DSA/Spieler/" --title="DSA-Notes-Players" -e env ENABLE_GIT_SETUP=true nvim ~/DSA/Spieler/
Categories=Notes;DSA;
Icon=/usr/share/icons/Gruvbox-Material-Dark/128x128/apps/nvim.svg

View file

@ -1,8 +1,7 @@
[Desktop Entry] [Desktop Entry]
Terminal=true
Type=Application Type=Application
Name=DSA-Notes Name=DSA-Notes
Comment=Neovim setup for DSA notes Comment=Neovim setup for DSA notes
Exec=ENABLE_GIT_SETUP=true kitty --detach --directory="~/DSA/" --app-id="DSANotes" --title "DSA Notes" nvim ~/DSA/ Exec=ghostty --config-default-files=false --config-file="~/.config/ghostty/dsa-config" --working-directory="~/DSA/" --title="DSA-Notes" -e env ENABLE_GIT_SETUP=true nvim ~/DSA/
Categories=Notes;DSA; Categories=Notes;DSA;
Icon=kwrite Icon=/usr/share/icons/Gruvbox-Material-Dark/128x128/apps/nvim.svg

View file

@ -1,8 +1,7 @@
[Desktop Entry] [Desktop Entry]
Terminal=true
Type=Application Type=Application
Name=Notes Name=Notes
Comment=Neovim setup for note taking Comment=Neovim setup for note taking
Exec=ENABLE_GIT_SETUP=true kitty --detach --directory="~/Notes/" --app-id="Notes" --title "Notes" nvim ~/Notes Exec=ghostty --working-directory="~/Notes/" --title="Notes" -e env ENABLE_GIT_SETUP=true nvim ~/Notes/
Categories=Notes; Categories=Notes;
Icon=kwrite Icon=/usr/share/icons/Gruvbox-Material-Dark/128x128/apps/nvim.svg