Compare commits

..

53 Commits

Author SHA1 Message Date
30488edaed [Fish] Fix latexdocs alias 2025-10-10 15:05:28 +02:00
8ed711d300 [Fish] Improve latex doc opening 2025-10-09 21:08:06 +02:00
a8043a9899 [Hyprland] Speed up animations even more 2025-10-09 11:02:51 +02:00
aa9ebaf22b [Astal] Battery widget: Show waiting 2025-10-09 09:33:21 +02:00
2314a17066 [Install] Add ntp 2025-10-06 13:11:34 +02:00
7051688fa5 [Clang] Formatter: Only merge empty functions 2025-10-05 12:13:56 +02:00
0f4f601a2d [Clang] Improve formatter config 2025-10-05 12:09:53 +02:00
f38e2ff94f [Clang] Improve formatter config 2025-10-05 11:58:55 +02:00
50c5cf945d [Clang] Improve formatter config 2025-10-05 08:38:26 +02:00
903da245ac [Termfilechooser] Fix 2025-10-04 08:53:07 +02:00
2d15296597 [Fish] Force pager into pager mode and not cat 2025-10-02 14:39:15 +02:00
3a619cbf92 [Hyprland] Add new keybind on laptop 2025-10-02 14:21:32 +02:00
530022ee59 [Hyprlock] Update clock 2025-10-02 08:39:03 +02:00
5c01a5f806 [LatexIndent] Fix path 2025-10-01 15:34:14 +02:00
b6f5ad9bcf [Install] Add man 2025-10-01 13:44:15 +02:00
92dc644ee2 [Fish] Add alias for gcc with error flags 2025-10-01 12:42:14 +02:00
ddc39f4928 [Setup] Fix indentconfig copying 2025-10-01 10:48:30 +02:00
a93d7494d3 [Install] Add sysstat package 2025-10-01 10:47:13 +02:00
706cff40b3 [Setup] Fix errors with startup 2025-09-30 14:03:26 +02:00
e35845099a [Hyprland] Update for new folder structure 2025-09-30 07:41:44 +02:00
c44ef61cf2 [Fish] Update for new folder structure 2025-09-30 07:41:14 +02:00
ef65f827a2 [Yazi] Update keymap for new structure 2025-09-29 11:48:29 +02:00
6b8f415703 [Eslint] Update rules 2025-09-28 17:08:48 +02:00
f7004d9f25 [All] Remove old files 2025-09-27 08:07:58 +02:00
58d5b6cf69 [Setup] Add reload to make sure config reload happens properly 2025-09-26 14:04:47 +02:00
c55f70b852 [Fish] Add alias for latex docs 2025-09-26 14:03:21 +02:00
97e02d81af [Clang] Fix config file 2025-09-25 16:42:26 +02:00
a545bb0066 [Clang] Fix incorrect config 2025-09-25 16:40:53 +02:00
35d51f80df [Clang] Finish up config 2025-09-25 15:57:39 +02:00
d638aa0434 [Clang] Fix setup script 2025-09-25 15:52:55 +02:00
258fc61669 [Clang] Add formatter config 2025-09-25 15:52:16 +02:00
6dc15047d4 [Eslint] Add sort-imports rule 2025-09-25 15:20:13 +02:00
0725763b95 [Hyprland] Configure gestures 2025-09-25 15:04:47 +02:00
29b8f188e9 [Yazi] Update keymap 2025-09-25 11:04:07 +02:00
959732ffd1 [Yazi] Update keymap 2025-09-23 15:19:36 +02:00
be3497de77 [Indent] Add more rules 2025-09-23 11:14:26 +02:00
17d83a53b7 [Hyprland] configure gestures 2025-09-23 11:12:53 +02:00
122f3ab070 [Hyprland] Add special workspace config 2025-09-22 16:17:22 +02:00
46a732e8f7 [Install] Add dep for latexindent 2025-09-22 13:44:53 +02:00
3373ae3b8c [Install] Add dep for latexindent 2025-09-22 13:37:50 +02:00
edd2db313c [Install] Add dep for latexindent 2025-09-22 13:36:37 +02:00
ecfd517a4a [Hyprland] Tweak animation duration 2025-09-22 13:01:13 +02:00
25419067d4 [Install] Add note on using nwg-look 2025-09-22 12:53:46 +02:00
36faff6b5f [Install] Add langgerman to install 2025-09-22 08:44:27 +02:00
ffe516175c [Eslint] Revert EOL decision 2025-09-20 08:12:20 +02:00
f58f22cadd [Install] Add german latex extras 2025-09-20 07:17:56 +02:00
7e9faff6d6 [Astal] Make brightness adjust only in 5% intervals 2025-09-18 07:52:41 +02:00
ffa25045e5 [zathura] Add poppler to install 2025-09-17 16:17:43 +02:00
66dcd82952 [Hyprland] Fix bind 2025-09-16 17:31:28 +02:00
40013a61d1 [Hyprland] Fix some binds 2025-09-16 17:30:37 +02:00
ee26c0c5c2 [Hyprland] Fix errors 2025-09-16 13:03:25 +02:00
02a351768f [Fish] Add pager alias 2025-09-16 12:59:20 +02:00
9539f09e83 [Install] Add pager 2025-09-16 12:59:20 +02:00
26 changed files with 422 additions and 2787 deletions

View File

@@ -5,6 +5,8 @@
Collection of dotfiles for my personal Hyprland setup, running on Arch Linux. Includes a setup and install script (that one is not complete yet though). For my neovim config, see [here](https://git.janishutz.com/janishutz/nvim)
![screenshot of desktop with 2 screens](./assets/screenshot.png)
## Features
- Astal4 based Status Bar and Quick Actions menu
- System info

BIN
assets/screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@@ -41,10 +41,10 @@ export const BatteryBox = () => {
);
};
const MINUTE = 60;
const HOUR = MINUTE * 60;
const toTime = (time: number) => {
const MINUTE = 60;
const HOUR = MINUTE * 60;
if (!time) return "Waiting on BIOS"
if (time > 24 * HOUR) return "24h+";
const hours = Math.round(time / HOUR);

View File

@@ -16,7 +16,7 @@ const BrightnessModule = () => {
hexpand
max={1}
min={0.01}
step={0.01}
step={0.05}
vexpand
onChangeValue={self => setBrightness(self.value)}
></slider>

View File

@@ -6,7 +6,7 @@ alias c='clear'
alias zs='zathura-sandbox'
alias z='zathura'
alias bt='bluetui'
alias vicfg='nvim ~/projects/active/nvim/'
alias vicfg='nvim ~/projects/nvim/'
alias fm='thunar .'
alias gl='git ls-files --others --exclude-standard'
alias gm='gti ls-files -m'
@@ -14,18 +14,21 @@ alias gpu='git push'
alias gp='git pull'
alias gc='git commit -a -m'
alias ga='git add ./*'
alias cfh='nvim ~/projects/active/dotfiles/config/hypr/'
alias cfn='nvim ~/projects/active/nvim/'
alias cff='nvim ~/projects/active/dotfiles/config/fish/'
alias cfa='nvim ~/projects/active/dotfiles/config/astal/'
alias cf='nvim ~/projects/active/dotfiles/'
alias cfh='nvim ~/projects/dotfiles/config/hypr/'
alias cfn='nvim ~/projects/nvim/'
alias cff='nvim ~/projects/dotfiles/config/fish/'
alias cfa='nvim ~/projects/dotfiles/config/astal/'
alias cf='nvim ~/projects/dotfiles/'
alias g='lazygit'
alias open-webui='sudo systemctl start docker && sudo docker start -i open-webui'
alias ai='ollama serve'
alias ff='fastfetch'
alias p='nvimpager -p'
alias latexdocs='zathura ~/projects/latex/docs/docs.pdf &>> /dev/null & disown'
alias gccerr='gcc -Wall -Wextra -Wpedantic -Werror -Wmissing-prototypes -std=c99'
# Add scripts in ~/projects/active/dotfiles/general/scripts/ to path
fish_add_path -P ~/projects/active/dotfiles/scripts/
# Add scripts in ~/projects/dotfiles/scripts/ to path
fish_add_path -P ~/projects/dotfiles/scripts/
function y
set tmp (mktemp -t "yazi-cwd.XXXXXX")

View File

@@ -128,6 +128,12 @@ bind = $mainMod SHIFT, j, movetoworkspace, e-1
bind = $mainMod SHIFT, k, movetoworkspace, e+1
# ┌ ┐
# │ Special workspace │
# └ ┘
bind = $mainMod SHIFT, M, movetoworkspace, special
bind = $mainMod, M, togglespecialworkspace
# ┌ ┐
# │ Scroll through existing workspaces with │
# │ mainMod + scroll │
@@ -147,7 +153,7 @@ bind = ALT, tab, focusurgentorlast
# ┌ ┐
# │ Dwindle layout commands │
# └ ┘
bind = $mainMod CTRL, M, layoutmsg swapsplit
bind = $mainMod CTRL, M, layoutmsg, swapsplit
# ┌ ┐
@@ -161,7 +167,7 @@ bindm = $mainMod, mouse:273, resizewindow
# ┌ ┐
# │ Resize window with keybinds (change split) │
# └ ┘
bind = $mainMod, ALT, T, split
bind = $mainMod ALT, T, submap, split
# Submap for split
submap = split
@@ -177,7 +183,7 @@ submap = reset
# ┌ ┐
# │ Truly resize window with keybind (submap) │
# └ ┘
bind = $mainMod, ALT, R, resize
bind = $mainMod ALT, R, submap, resize
# Submap for resize
submap = resize
@@ -225,9 +231,9 @@ bind = $mainMod CTRL, E, exec, hyprctl keyword monitor HDMI-A-1, 1280x720@60, 38
# │ Funny windows user trolling binds │
# ╰────────────────────────────────────────────────╯
# ────────────────────────────────────────────────────────────────────
bind = CTRL ALT, Delete, exec, notify-send 'Did ya really think that was gonna do anything? Only an eternally broken OS could need such a stupid keybind'
bind = ALT, F4, exec, notify-send 'That just feel super unergonomic of a keybind to be used for such a common action'
bind = $mainMod, left, exec, notify-send 'This is no inefficient stacking manager. Tiling happens automatically'
bind = $mainMod, right, exec, notify-send 'This is no inefficient stacking manager. Tiling happens automatically'
bind = $mainMod, up, exec, notify-send 'This is no inefficient stacking manager. Tiling happens automatically'
bind = $mainMod, down, exec, notify-send 'This is no inefficient stacking manager. Tiling happens automatically'
bind = CTRL ALT, Delete, exec, notify-send 'I am not Windows' 'Did ya really think that was gonna do anything? Only an eternally broken OS could need such a stupid keybind'
bind = ALT, F4, exec, notify-send 'I am not Windows' 'That just feels like a way too unergonomic keybind to be used for such a common action'
bind = $mainMod, left, exec, notify-send 'I am not Windows' 'This is no inefficient stacking manager. Tiling happens automatically'
bind = $mainMod, right, exec, notify-send 'I am not Windows' 'This is no inefficient stacking manager. Tiling happens automatically'
bind = $mainMod, up, exec, notify-send 'I am not Windows' 'This is no inefficient stacking manager. Tiling happens automatically'
bind = $mainMod, down, exec, notify-send 'I am not Windows' 'This is no inefficient stacking manager. Tiling happens automatically'

View File

@@ -13,9 +13,9 @@ exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = hypridle
exec-once = nm-applet
exec-once = nextcloud --background
exec-once = sleep 2 && bash -c "ags run -d ~/projects/active/dotfiles/config/astal/ --gtk4 >> /tmp/runner-log 2>&1"
exec-once = sleep 2 && bash -c "ags run -d ~/projects/dotfiles/config/astal/ --gtk4 >> /tmp/runner-log 2>&1"
# exec-once = sleep 2 && bash -c "ags run -d ~/projects/active/dotfiles/config/astal/ --gtk4"
exec-once = bash -c "ags run -d ~/projects/active/dotfiles/config/ags/notifications/ >> /tmp/notifier-log 2>&1"
exec-once = bash -c "ags run -d ~/projects/dotfiles/config/ags/notifications/ >> /tmp/notifier-log 2>&1"
# exec-once = bash -c "ags run -d ~/projects/active/dotfiles/config/ags/notifications/"
# ── wlhist ──────────────────────────────────────────────────────────
@@ -39,6 +39,7 @@ input {
natural_scroll = true
numlock_by_default = true
repeat_delay = 400
follow_mouse = 2
mouse_refocus = true
@@ -53,10 +54,26 @@ input {
sensitivity = 0
}
# ── Cursors ─────────────────────────────────────────────────────────
cursor {
no_warps = false
inactive_timeout = 5
}
# ── Bind config ─────────────────────────────────────────────────────
binds {
workspace_back_and_forth = true
}
# ── Gestures ────────────────────────────────────────────────────────
gestures {
workspace_swipe_distance = 200
workspace_swipe_cancel_ratio = 0.3
workspace_swipe_forever = true
workspace_swipe_direction_lock = false
}
gesture = 3, horizontal, workspace,
@@ -78,6 +95,12 @@ general {
no_border_on_floating = false
}
# ────────────────────────────────────────────────────────────────────
# ╭────────────────────────────────────────────────╮
# │ Style │
# ╰────────────────────────────────────────────────╯
# ────────────────────────────────────────────────────────────────────
decoration {
inactive_opacity = 1
rounding = 10
@@ -103,17 +126,19 @@ animations {
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
animation = windows, 1, 4, myBezier
animation = windowsOut, 1, 6, default, popin 80%
animation = border, 1, 8, default
animation = fade, 1, 3, default
animation = workspaces, 1, 2, default
animation = specialWorkspaceIn, 1, 2, default, fade
animation = specialWorkspaceOut, 1, 2, default, fade
}
misc {
disable_hyprland_logo = true
disable_splash_rendering = false
vrr = 2
vrr = 3
allow_session_lock_restore = true
}
@@ -122,9 +147,3 @@ dwindle {
force_split = 2
preserve_split = true
}
cursor {
no_warps = false
inactive_timeout = 60
}

View File

@@ -22,9 +22,6 @@ monitor=eDP-1, 2880x1800@60, 0x0, 1.5
monitor=,highres highrr, auto, 1
# exec = swaybg -m fill -i /home/janis/Pictures/arch-bg.png
source=./hyprland/binds.conf
source=./hyprland/general.conf
source=./hyprland/windowrules.conf
@@ -35,12 +32,11 @@ source=./hyprland/windowrules.conf
exec = hyprctl setcursor oreo_spark_blue_cursors 36
env = HYPRCURSOR_THEME, Oreo_spark_blue_cursor
env = X_CURSOR_THEME, Oreo_spark_blue_cursor
env = XCURSOR_SIZE,24
env = XCURSOR_SIZE, 24
env = ELECTRON_ENABLE_HIGHDPI_SUPPORT, 1
env = XDG_SESSION_TYPE, wayland
env = QT_QPA_PLATFORM,wayland
# env = QT_QPA_PLATFORM_THEME,qt6ct
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
env = QT_QPA_PLATFORM, wayland
env = ELECTRON_OZONE_PLATFORM_HINT, wayland
env = GDK_SCALE,2
exec-once = hyprpm reload -nn
@@ -66,6 +62,7 @@ bind = $mainMod CTRL, E, exec, hyprctl keyword monitor HDMI-A-1, 1920x1080@60, 1
# ── Internal display controls ───────────────────────────────────────
bind = $mainMod ALT, E, exec, hyprctl keyword monitor eDP-1, 2880x1800@60, 0x0, 1.5 && cpupower-gui -b && notify-send 'Set to battery optimized settings'
bind = $mainMod ALT, B, exec, hyprctl keyword monitor eDP-1, 2880x1800@120, 0x0, 1.5 && cpupower-gui -b && notify-send 'Set to balanced performance settings'
bind = $mainMod ALT, P, exec, hyprctl keyword monitor eDP-1, 2880x1800@120, 0x0, 1.5 && cpupower-gui -p && notify-send 'Set to performance optimized settings'
# ── Using docked ────────────────────────────────────────────────────

View File

@@ -45,7 +45,7 @@ label {
monitor =
text = <b>$TIME</b>
color =
font_size = 100
font_size = 150
font_family = Comfortaa
position = 0, 80

File diff suppressed because it is too large Load Diff

View File

@@ -1,2 +0,0 @@
paths:
- /home/janis/projects/active/dotfiles/config/lint/latexfmt.yaml

276
config/lint/clang-format Normal file
View File

@@ -0,0 +1,276 @@
# ─────────────────────────────────────────────────────────────────────
# ╭─────────────────────────────────────────────────╮
# │ clang-format config │
# ╰─────────────────────────────────────────────────╯
# ─────────────────────────────────────────────────────────────────────
BasedOnStyle: LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: BlockIndent
AlignArrayOfStructures: Left
AlignConsecutiveAssignments:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: true
AlignConsecutiveBitFields:
Enabled: true
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: false
AlignConsecutiveDeclarations:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: false
AlignConsecutiveMacros:
Enabled: true
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: false
AlignConsecutiveShortCaseStatements:
Enabled: true
AcrossEmptyLines: false
AcrossComments: false
AlignCaseArrows: false
AlignCaseColons: false
AlignConsecutiveTableGenBreakingDAGArgColons:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: false
AlignConsecutiveTableGenCondOperatorColons:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: false
AlignConsecutiveTableGenDefinitionColons:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: false
AlignEscapedNewlines: Right
AlignOperands: Align
AlignTrailingComments:
Kind: Always
OverEmptyLines: 0
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowBreakBeforeNoexceptSpecifier: Never
AllowShortBlocksOnASingleLine: Never
AllowShortCaseExpressionOnASingleLine: true
AllowShortCaseLabelsOnASingleLine: false
AllowShortCompoundRequirementOnASingleLine: true
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AttributeMacros:
- __capability
BinPackArguments: false
BinPackParameters: false
BitFieldColonSpacing: Both
BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: Never
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: true
AfterUnion: false
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakAdjacentStringLiterals: true
BreakAfterAttributes: Always
BreakAfterJavaFieldAnnotations: false
BreakAfterReturnType: None
BreakArrays: true
BreakBeforeBinaryOperators: All
BreakBeforeBraces: Attach
BreakBeforeConceptDeclarations: Always
BreakBeforeInlineASMColon: OnlyMultiline
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeColon
BreakFunctionDefinitionParameters: false
BreakInheritanceList: BeforeColon
BreakStringLiterals: true
BreakTemplateDeclarations: MultiLine
ColumnLimit: 100
CommentPragmas: "^ IWYU pragma:"
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: true
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: Always
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Preserve
IncludeCategories:
- Regex: ^"(llvm|llvm-c|clang|clang-c)/
Priority: 2
SortPriority: 0
CaseSensitive: false
- Regex: ^(<|"(gtest|gmock|isl|json)/)
Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: .*
Priority: 1
SortPriority: 0
CaseSensitive: false
IncludeIsMainRegex: (Test)?$
IncludeIsMainSourceRegex: ""
IndentAccessModifiers: true
IndentCaseBlocks: true
IndentCaseLabels: true
IndentExternBlock: AfterExternBlock
IndentGotoLabels: true
IndentPPDirectives: BeforeHash
IndentRequiresClause: true
IndentWidth: 4
IndentWrappedFunctionNames: true
InsertBraces: false
InsertNewlineAtEOF: false
InsertTrailingCommas: None
IntegerLiteralSeparator:
Binary: 0
BinaryMinDigits: 0
Decimal: 0
DecimalMinDigits: 0
Hex: 0
HexMinDigits: 0
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLines:
AtEndOfFile: false
AtStartOfBlock: true
AtStartOfFile: true
LambdaBodyIndentation: Signature
LineEnding: DeriveLF
MacroBlockBegin: ""
MacroBlockEnd: ""
MainIncludeChar: Quote
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PPIndentWidth: -1
PackConstructorInitializers: BinPack
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakScopeResolution: 500
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyIndentedWhitespace: 0
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
QualifierAlignment: Left
ReferenceAlignment: Pointer
ReflowComments: true
RemoveBracesLLVM: true
RemoveParentheses: MultipleParentheses
RemoveSemicolon: false
RequiresClausePosition: OwnLine
RequiresExpressionIndentation: OuterScope
SeparateDefinitionBlocks: Always
ShortNamespaceLines: 1
SkipMacroDefinitionBody: false
SortIncludes: CaseSensitive
SortJavaStaticImport: Before
SortUsingDeclarations: LexicographicNumeric
SpaceAfterCStyleCast: true
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeJsonColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDeclarationName: true
AfterFunctionDefinitionName: true
AfterIfMacros: true
AfterOverloadedOperator: false
AfterPlacementOperator: true
AfterRequiresInClause: false
AfterRequiresInExpression: false
BeforeNonEmptyParentheses: false
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: Never
SpacesInContainerLiterals: true
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParens: Custom
SpacesInParensOptions:
ExceptDoubleParentheses: false
InConditionalStatements: true
InCStyleCasts: false
InEmptyParentheses: false
Other: true
SpacesInSquareBrackets: true
Standard: Latest
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 4
TableGenBreakInsideDAGArg: DontBreak
UseTab: Never
VerilogBreakBetweenInstancePorts: true
WhitespaceSensitiveMacros:
- BOOST_PP_STRINGIZE
- CF_SWIFT_NAME
- NS_SWIFT_NAME
- PP_STRINGIZE
- STRINGIZE

View File

@@ -1,65 +0,0 @@
// @ts-check
import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
import stylistic from '@stylistic/eslint-plugin';
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommended,
{
'plugins': {
'@stylistic/js': stylistic,
'@stylistic/ts': stylistic,
},
'rules': {
// Formatting
'@stylistic/js/array-bracket-newline': [ 'error', { 'multiline': true, 'minItems': 4 } ],
'@stylistic/js/array-bracket-spacing': [ 'error', 'always' ],
'@stylistic/js/array-element-newline': [ 'error', { 'multiline': true, 'minItems': 4 } ],
'@stylistic/js/arrow-parens': [ 'error', 'always' ],
'@stylistic/js/arrow-spacing': [ 'error', { 'before': true, 'after': true } ],
'@stylistic/js/block-spacing': [ 'error', 'always' ],
'@stylistic/js/brace-style': [ 'error', '1tbs' ],
'@stylistic/js/comma-spacing': [ 'error', { 'before': false, 'after': true } ],
'@stylistic/js/comma-style': [ 'error', 'last' ],
'@stylistic/js/dot-location': [ 'error', 'property' ],
'@stylistic/js/eol-last': [ 'error', 'always' ],
'@stylistic/js/function-call-spacing': [ 'error', 'never' ],
'@stylistic/js/implicit-arrow-linebreak': [ 'error', 'beside' ],
'@stylistic/js/indent': [ 'error', 4 ],
'@stylistic/js/key-spacing': [ 'error', { 'beforeColon': false, 'afterColon': true } ],
'@stylistic/js/keyword-spacing': [ 'error', { 'before': true, 'after': true } ],
'@stylistic/js/lines-between-class-members': [ 'error', 'always' ],
'@stylistic/js/new-parens': [ 'error', 'always' ],
'@stylistic/js/no-extra-parens': [ 'error', 'all' ],
'@stylistic/js/no-extra-semi': 'error',
'@stylistic/js/no-floating-decimal': 'error',
'@stylistic/js/no-mixed-operators': 'error',
'@stylistic/js/no-mixed-spaces-and-tabs': 'error',
'@stylistic/js/no-multi-spaces': 'error',
'@stylistic/js/no-trailing-spaces': 'error',
'@stylistic/js/no-whitespace-before-property': 'error',
'@stylistic/js/object-curly-newline': [ 'error', { 'multiline': true, 'minProperties': 3 } ],
'@stylistic/js/object-curly-spacing': [ 'error', 'always' ],
'@stylistic/js/one-var-declaration-per-line': 'error',
'@stylistic/js/quote-props': [ 'error', 'always' ],
'@stylistic/js/quotes': [ 'error', 'single' ],
'@stylistic/js/rest-spread-spacing': [ 'error', 'never' ],
'@stylistic/js/semi': [ 'error', 'always' ],
'@stylistic/js/semi-spacing': [ 'error', { 'before': false, 'after': true } ],
'@stylistic/js/semi-style': [ 'error', 'last' ],
'@stylistic/js/space-before-blocks': [ 'error', 'always' ],
'@stylistic/js/space-before-function-paren': [ 'error', 'always' ],
'@stylistic/js/space-in-parens': [ 'error', 'always' ],
'@stylistic/js/space-infix-ops': [ 'error', { 'int32Hint': false } ],
'@stylistic/js/space-unary-ops': 'error',
'@stylistic/js/spaced-comment': [ 'error', 'always' ],
'@stylistic/js/switch-colon-spacing': 'error',
'@stylistic/js/template-curly-spacing': [ 'error', 'always' ],
'@stylistic/js/wrap-iife': [ 'error', 'inside' ],
'@stylistic/js/wrap-regex': 'error',
'@stylistic/ts/type-annotation-spacing': 'error',
}
}
);

View File

@@ -1,9 +1,9 @@
import vue from 'eslint-plugin-vue';
import eslint from '@eslint/js';
import globals from 'globals';
import typescript from '@typescript-eslint/eslint-plugin';
import stylistic from '@stylistic/eslint-plugin';
import tseslint from 'typescript-eslint';
import typescript from '@typescript-eslint/eslint-plugin';
import vue from 'eslint-plugin-vue';
const style = {
'plugins': {
@@ -20,6 +20,21 @@ const style = {
'**/*.jsx'
],
'rules': {
'sort-imports': [
'warn',
{
'ignoreCase': false,
'ignoreDeclarationSort': false,
'ignoreMemberSort': false,
'memberSyntaxSortOrder': [
'none',
'all',
'multiple',
'single'
],
'allowSeparatedGroups': false
}
],
// Formatting
'@stylistic/array-bracket-newline': [
'error',
@@ -30,7 +45,12 @@ const style = {
],
'@stylistic/array-bracket-spacing': [
'error',
'always'
'always',
{
'singleValue': true,
'arraysInArrays': true,
'objectsInArrays': true
}
],
'@stylistic/array-element-newline': [
'error',
@@ -75,7 +95,7 @@ const style = {
],
'@stylistic/eol-last': [
'error',
'never'
'always'
],
'@stylistic/function-call-spacing': [
'error',

View File

@@ -0,0 +1,2 @@
paths:
- /home/janis/projects/dotfiles/config/lint/latexfmt.yaml

View File

@@ -7,6 +7,7 @@ maxNumberOfBackups: 3
indentRules:
recall: " "
remarks: " "
remark: " "
guides: " "
properties: " "
restrictions: " "

View File

@@ -1,3 +1,11 @@
[filechooser]
cmd=yazi-wrapper.sh
default_dir=$HOME
; Uncomment to skip creating destination save files with instructions in them
; create_help_file=0
; Uncomment and edit the line below to change the terminal emulator command
; env=TERMCMD=foot
; Mode must be one of 'suggested', 'default', or 'last'.
open_mode=suggested
save_mode=suggested

View File

@@ -0,0 +1,2 @@
[preferred]
org.freedesktop.impl.portal.FileChooser=termfilechooser

View File

@@ -7,34 +7,32 @@ prepend_keymap = [
{ on = "C", run = "plugin ouch tar.gz", desc = "Compress with ouch" },
# Goto
{ on = [ "g", "h" ], run = "cd ~", desc = "Go to ~" },
{ on = [ "g", "c", "c" ], run = "cd ~/.config", desc = "Go to ~/.config" },
{ on = [ "g", "a" ], run = "cd ~/.cache", desc = "Go to ~/.cache" },
{ on = [ "g", "l", "b" ], run = "cd ~/.local/bin", desc = "Go to ~/.local/bin" },
{ on = [ "g", "l", "s" ], run = "cd ~/.local/share", desc = "Go to ~/.local/share" },
{ on = [ "g", "c", "h" ], run = "cd ~/projects/active/dotfiles/config/hypr", desc = "Go to Hyprland config" },
{ on = [ "g", "c", "f" ], run = "cd ~/projects/active/dotfiles/config/fish", desc = "Go to Fish config" },
{ on = [ "g", "c", "y" ], run = "cd ~/projects/active/dotfiles/config/yazi", desc = "Go to Yazi config" },
{ on = [ "g", "c", "a" ], run = "cd ~/projects/active/dotfiles/config/astal", desc = "Go to astal config" },
{ on = [ "g", "c", "l" ], run = "cd ~/projects/active/dotfiles/config/lint", desc = "Go to linter configs" },
{ on = [ "g", "c", "k" ], run = "cd ~/projects/active/dotfiles/config/kitty", desc = "Go to kitty config" },
{ on = [ "g", "c", "r" ], run = "cd ~/projects/active/dotfiles/config/rofi", desc = "Go to rofi config" },
{ on = [ "g", "c", "s" ], run = "cd ~/projects/active/dotfiles/scripts", desc = "Go to script" },
{ on = [ "g", "c", "d" ], run = "cd ~/projects/active/dotfiles", desc = "Go to NeoVim config" },
{ on = [ "g", "c", "n" ], run = "cd ~/projects/active/nvim", desc = "Go to NeoVim config" },
{ on = [ "g", "c", "c" ], run = "cd ~/.config", desc = "Go to ~/.config" },
{ on = [ "g", "c", "h" ], run = "cd ~/projects/dotfiles/config/hypr", desc = "Go to Hyprland config" },
{ on = [ "g", "c", "f" ], run = "cd ~/projects/dotfiles/config/fish", desc = "Go to Fish config" },
{ on = [ "g", "c", "y" ], run = "cd ~/projects/dotfiles/config/yazi", desc = "Go to Yazi config" },
{ on = [ "g", "c", "a" ], run = "cd ~/projects/dotfiles/config/astal", desc = "Go to astal config" },
{ on = [ "g", "c", "l" ], run = "cd ~/projects/dotfiles/config/lint", desc = "Go to linter configs" },
{ on = [ "g", "c", "k" ], run = "cd ~/projects/dotfiles/config/kitty", desc = "Go to kitty config" },
{ on = [ "g", "c", "r" ], run = "cd ~/projects/dotfiles/config/rofi", desc = "Go to rofi config" },
{ on = [ "g", "c", "s" ], run = "cd ~/projects/dotfiles/scripts", desc = "Go to script" },
{ on = [ "g", "c", "d" ], run = "cd ~/projects/dotfiles", desc = "Go to Dotfiles folder" },
{ on = [ "g", "c", "n" ], run = "cd ~/projects/nvim", desc = "Go to NeoVim config" },
{ on = [ "g", "n" ], run = "cd ~/NextCloud/Documents/", desc = "Go to NextCloud Documents" },
{ on = [ "g", "w" ], run = "cd ~/NextCloud/Wallpapers", desc = "Go to Wallpapers" },
{ on = [ "g", "e", "c" ], run = "cd ~/projects/active/eth-gitlab/eth-code-expert/Semester3/", desc = "Go to ETH-Code-Expert" },
{ on = [ "g", "e", "n" ], run = "cd ~/NextCloud/Documents/ETH/Semester3/", desc = "Go to ETH Nextcloud" },
{ on = [ "g", "e", "p" ], run = "cd ~/projects/active/eth/semester3/", desc = "Go to ETH notes folder" },
{ on = [ "g", "e", "g" ], run = "cd ~/projects/active/eth-gitlab/pprog25-jahutz/", desc = "Go to ETH Gitlab folder" },
{ on = [ "g", "e", "p" ], run = "cd ~/projects/eth/semester3/", desc = "Go to ETH git folder" },
{ on = [ "g", "e", "g" ], run = "cd ~/projects/eth/gitlab/spca2025-jahutz-hand-in/", desc = "Go to ETH Gitlab folder" },
{ on = [ "g", "e", "s" ], run = "cd ~/projects/eth/eth-summaries/semester3/", desc = "Go to ETH Summaries folder" },
{ on = [ "g", "s", "h" ], run = "cd ~/.steam/steam/steamapps/common", desc = "Go to ~/.steam/steam/steamapps/common" },
{ on = [ "g", "s", "g" ], run = "cd /mnt/games/SteamLibrary", desc = "Go to SteamLibrary on NTFS partition" },
{ on = [ "g", "s", "s" ], run = "cd /mnt/secondary/SteamLibrary", desc = "Go to SteamLibrary on main games drive" },
{ on = [ "g", "o" ], run = "cd /mnt/janis/Documents", desc = "Go to Documents" },
{ on = [ "g", "d" ], run = "cd ~/Downloads", desc = "Go to ~/Downloads" },
{ on = [ "g", "p", "a" ], run = "cd ~/projects/active", desc = "Go to Active projects" },
{ on = [ "g", "p", "r" ], run = "cd ~/projects/archive", desc = "Go to Archive projects" },
{ on = [ "g", "p", "p" ], run = "cd ~/projects", desc = "Go to projects" },
{ on = [ "g", "p" ], run = "cd ~/projects", desc = "Go to projects" },
{ on = [ "g", "t", "m" ], run = "cd /tmp", desc = "Go to /tmp" },
{ on = [ "g", "t", "t" ], run = "cd ~/.local/share/Trash/", desc = "Go to TRASH" },
{ on = [ "g", "/" ], run = "cd /", desc = "Go to /" },

16
install
View File

@@ -24,7 +24,7 @@ echo "
==> Installing Hyprland
"
sleep 2
yay -S --noconfirm --noremovemake hyprland hypridle hyprfreeze hyprlock aylurs-gtk-shell brightnessctl pulsemixer xdg-desktop-portal-hyprland cliphist grimblast wl-clipboard polkit-gnome swaybg polkit-kde-agent grim rofi cpio
yay -S --noconfirm --noremovemake hyprland hypridle hyprfreeze hyprlock aylurs-gtk-shell brightnessctl pulsemixer xdg-desktop-portal-hyprland cliphist grimblast wl-clipboard polkit-gnome swaybg polkit-kde-agent grim rofi cpio sysstat
# Audio, drivers
echo "
@@ -39,7 +39,7 @@ echo "
"
sleep 2
yay -S --noconfirm --noremovemake fish fzf ouch zathura wget vimiv zoxide thunar yazi gnome-tweaks lxappearance gnome-keyring ffmpeg network-manager-applet cpupower-gui python-tkinter acpi python-pillow seahorse
yay -S --noconfirm --noremovemake fish fzf ouch zathura zathura-pdf-poppler wget vimiv zoxide thunar yazi gnome-tweaks lxappearance gnome-keyring ffmpeg network-manager-applet cpupower-gui python-tkinter acpi python-pillow seahorse man man-pages ntp
# Set up yazi
echo "
@@ -69,7 +69,7 @@ echo "
==> Installing nvim...
"
sleep 2
yay -S --noconfirm --noremovemake neovim lua lua-language-server tree-sitter tree-sitter-cli texlab stylua luarocks jdtls perl julia pyright vscode-css-languageserver vscode-html-languageserver bash-language-server python-black proselint asmfmt typescript-language-server shfmt sass ruby eslint_d
yay -S --noconfirm --noremovemake neovim lua lua-language-server tree-sitter tree-sitter-cli texlab stylua luarocks jdtls perl julia pyright vscode-css-languageserver vscode-html-languageserver bash-language-server python-black proselint asmfmt typescript-language-server shfmt sass ruby eslint_d nvimpager
sudo npm i -g @vue/typescript-plugin
# Internet
@@ -84,14 +84,14 @@ echo "
==> Installing other utilities...
"
sleep 2
yay -S --noconfirm --noremovemake okular vlc nextcloud-client p7zip zip unzip noto-fonts pavucontrol light fastfetch bashtop hugo uxplay upower gdu dig nwg-look serpl fcitx5 qalculate-gtk openconnect light blueman xdg-desktop-portal-termfilechooser-hunkyburrito-git lazygit
yay -S --noconfirm --noremovemake okular vlc nextcloud-client p7zip zip unzip noto-fonts pavucontrol light fastfetch bashtop hugo uxplay upower gdu dig nwg-look serpl fcitx5 qalculate-gtk openconnect light blueman xdg-desktop-portal-termfilechooser-hunkyburrito-git lazygit tldr
# LaTeX
echo "
==> Installing LaTeX...
"
sleep 2
yay -S --noconfirm --noremovemake texlive biber texlive-latexextra
yay -S --noconfirm --noremovemake texlive biber texlive-latexextra perl-yaml-tiny perl-file-homedir libxcrypt-compat
# WebDev utilities
echo "
@@ -116,11 +116,11 @@ cd ./config/astal/
mkdir node_modules && cd node_modules && ln -sf /usr/share/astal/gjs/ ./astal
cd ../../config/ags/notifications/
mkdir node_modules && cd node_modules && ln -sf /usr/share/astal/gjs/ ./astal
cd ~/projects/active/dotfiles/
cd ~/projects/dotfiles/
./setup
cd ~/projects/active/
cd ~/projects/
git clone https://git.janishutz.com/janishutz/nvim
cd nvim
./nvim-install.sh
@@ -138,5 +138,5 @@ echo "
Run the postinstall script after a reboot and logging into NextCloud
to install the grub theme and cursor icons.
Use GNOME Tweaks to change the necessary appearance settings.
Use GNOME Tweaks and nwg-look to change the necessary appearance settings.
"

View File

@@ -45,7 +45,7 @@ label {
monitor =
text = <b>$TIME</b>
color = {{ colour-primary-rgb }}
font_size = 100
font_size = 150
font_family = {{ font-primary }}
position = 0, 80

View File

@@ -8,6 +8,6 @@ echo "
killall gjs
killall ags
sleep 4
ags run -d ~/projects/active/dotfiles/config/astal --gtk4 & disown
ags run -d ~/projects/dotfiles/config/astal --gtk4 & disown
sleep 2
ags run -d ~/projects/active/dotfiles/config/ags/notifications & disown
ags run -d ~/projects/dotfiles/config/ags/notifications & disown

6
scripts/setup-clang-format Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/sh
SCRIPT_DIR=$(dirname "$0")
cp "$SCRIPT_DIR/../config/lint/clang-format" ./.clang-format

6
setup
View File

@@ -60,6 +60,7 @@ cp -r ./config/hypr ~/.config/
rm -rf ~/.config/rofi/
cp -r ./config/rofi ~/.config/
cp -r ./config/xdg-desktop-portal-termfilechooser/ ~/.config/
cp -r ./config/xdg-desktop-portal/ ~/.config/
# Depending on platform, remove one or the other config and rename remaining one
if [[ "$platform" == "d" ]]; then
@@ -70,6 +71,7 @@ else
cp -f ~/.config/hypr/hyprland_laptop.conf ~/.config/hypr/hyprland.conf
fi
# Done this way intentionally to control what is copied
cp -r ./config/kitty ~/.config/
cp -r ./config/fastfetch ~/.config/
cp -r ./config/lazygit ~/.config/
@@ -78,7 +80,7 @@ cp -r ./config/Thunar ~/.config/
cp -r ./config/wlogout/ ~/.config/
cp -r ./config/yazi ~/.config/
cp -r ./config/zathura ~/.config/
cp ./config/lint/.indentconfig.yaml ~
cp ./config/lint/indentconfig.yaml ~/.indentconfig.yaml
echo "
=> Installing yazi plugins
@@ -109,6 +111,8 @@ if [[ "$restart" == "y" ]]; then
./scripts/restart-bar
fi
hyprctl reload
echo "
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

View File

@@ -14,3 +14,5 @@ VKD3D_CONFIG=dxr11,dxr
RADV_PERFTEST_RT=1
ANDROID_HOME=/home/janis/Android/Sdk
EDITOR=nvim
PAGER=nvimpager
MANPAGER=nvimpager