Compare commits

...

80 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
25a78f126e [Astal] Add battery low notification 2025-09-15 14:42:05 +02:00
e0c339785d [Eslint] Update eol-last 2025-09-15 10:32:59 +02:00
e6f57831b1 [Eslint] Enforce newline 2025-09-15 10:27:26 +02:00
4e323d932f [Hyprland] Update binds 2025-09-15 09:20:29 +02:00
64d8ca7ab4 [Install] Add eslint_d 2025-09-14 07:29:12 +02:00
7de17aaeb7 [Yazi] Update keymaps for ETH folders 2025-09-13 17:24:37 +02:00
4f0c6a45cf [Install] Add http-server 2025-09-13 08:29:42 +02:00
a2dbdd78d3 [Setup] Don't do autologin (will make optional) 2025-09-13 08:22:11 +02:00
e4a76c494c [Greetd] Add auto-unlock of keyring 2025-09-12 17:26:53 +02:00
1ee3f01883 [Setup] Add note 2025-09-12 13:12:13 +02:00
a89ed00a17 [Greetd] Add autologin 2025-09-12 12:26:47 +02:00
64e671119d [Hyprland] Add dimming around rofi layer 2025-09-12 11:54:55 +02:00
7b7955ac29 [Build] Run config build 2025-09-12 11:52:00 +02:00
823a8d8fbc [Setup] Make it quicker for small changes 2025-09-12 11:49:34 +02:00
088562cd53 [System] Remove mkinitcpio config 2025-09-12 11:49:26 +02:00
e9b8c35b52 [Scripts] Rename 2025-09-12 11:42:53 +02:00
5a1811979e [Rofi] Fix positioning 2025-09-12 11:41:21 +02:00
274890281c [Install] Add ripgrep 2025-09-12 10:40:46 +02:00
0606ec06f5 [Hyprland] Add new rules 2025-09-12 10:40:11 +02:00
f22f8da68c [Install] Add git-credential-manager 2025-09-12 10:19:00 +02:00
409078edf9 [Install] Add ruby 2025-09-12 10:15:18 +02:00
2840c9aa70 [Fish] Add fish_variables 2025-09-12 10:13:22 +02:00
f4aedf7b5e [Install] Fix packages 2025-09-12 10:10:58 +02:00
f51cc0049a [Fish] Disable greeting 2025-09-12 10:10:48 +02:00
c01529a599 [Fish] Remove autojump from config 2025-09-12 09:57:40 +02:00
121f02c785 [Yazi] Fix keymap overlap 2025-09-12 09:57:33 +02:00
f6cd98e458 [Install] Add more utilities 2025-09-12 09:57:25 +02:00
46 changed files with 646 additions and 2982 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 toTime = (time: number) => {
const MINUTE = 60;
const HOUR = MINUTE * 60;
const toTime = (time: number) => {
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

@@ -1,4 +1,5 @@
import { bind } from "astal";
import { execAsync } from "astal";
import AstalBattery from "gi://AstalBattery";
import AstalBluetooth from "gi://AstalBluetooth";
import AstalNetwork from "gi://AstalNetwork";
@@ -120,6 +121,8 @@ const BluetoothWidget = () => {
);
};
let hasSentNotification = false;
const BatteryWidget = () => {
const battery = AstalBattery.get_default();
if (battery.get_is_present()) {
@@ -127,7 +130,14 @@ const BatteryWidget = () => {
<image
iconName={bind(battery, "batteryIconName").as(icon => icon)}
cssClasses={["quick-view-symbol"]}
tooltipText={bind(battery, 'percentage').as(p => `Battery Level: ${Math.round(p * 100)}%`)}
tooltipText={bind(battery, 'percentage').as(p => {
const level = Math.round(p * 100)
if ( level < 20 && !hasSentNotification ) {
hasSentNotification = true;
execAsync( 'bash -c "notify-send \'Battery level below 20%\'"' );
}
return `Battery Level: ${level}%`
})}
></image>
);
} else {

View File

@@ -1,5 +1,5 @@
$fg-color: #E6E6E6;
$bg-color: #141414;
$fg-color: #C8DCFF;
$bg-color: #0A0A0F;
$accent-color: #591641;
$accent-color-2: #97103A;
$shadow-color: rgba(40, 40, 40, 0.3);
$shadow-color: rgba(0, 0, 2, 0.3);

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")
@@ -37,7 +40,6 @@ function y
end
zoxide init --cmd j fish | source
# [ -f /usr/share/autojump/autojump.fish ]; and source /usr/share/autojump/autojump.fish
if status is-interactive
function fish_prompt
@@ -125,3 +127,5 @@ end
end
set -g fish_greeting ""

33
config/fish/fish_variables Executable file
View File

@@ -0,0 +1,33 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:3800
SETUVAR fish_color_autosuggestion:555\x1ebrblack
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:blue
SETUVAR fish_color_comment:red
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:green
SETUVAR fish_color_error:brred
SETUVAR fish_color_escape:brcyan
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:brcyan
SETUVAR fish_color_param:cyan
SETUVAR fish_color_quote:yellow
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_greeting:\x1d
SETUVAR fish_key_bindings:fish_default_key_bindings
SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:B3A06D\x1eyellow\x1e\x2di
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr
SETUVAR fish_user_paths:/usr/lib/python3\x2e11/site\x2dpackages\x1e/usr/lib/python3\x2e11\x1e/usr/lib/python3\x2e11/site\x2dpackages/\x1e/home/janis/\x2elocal/lib/python3\x2e11/site\x2dpackages/\x1e/home/janis/\x2elocal/lib/python3\x2e11/

View File

@@ -81,14 +81,6 @@ bind = $mainMod, escape, exec, wlogout
# ────────────────────────────────────────────────────────────────────
# ┌ ┐
# │ Move focus with mainMod + arrow keys │
# └ ┘
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# ┌ ┐
# │ Same with vim-motions │
# └ ┘
@@ -136,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 │
@@ -144,13 +142,6 @@ bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# ┌ ┐
# │ Tile window to a part of the screen │
# └ ┘
# bind = $mainMod CTRL, left, movewindow, left
# bind = $mainMod CTRL, right, movewindow, right
# ┌ ┐
# │ move to next window / previous window with │
# │ ALT + Tab / SHIFT + ALT + Tab │
@@ -160,12 +151,9 @@ bind = ALT, tab, focusurgentorlast
# ┌ ┐
# │ Master layout commands │
# │ Dwindle layout commands │
# └ ┘
bind = $mainMod CTRL, M, layoutmsg, swapwithmaster
bind = $mainMod SHIFT, A, layoutmsg, addmaster
bind = $mainMod SHIFT CTRL, right, layoutmsg, orientationnext
bind = $mainMod SHIFT CTRL, left, layoutmsg, orientationprev
bind = $mainMod CTRL, M, layoutmsg, swapsplit
# ┌ ┐
@@ -175,12 +163,39 @@ bind = $mainMod SHIFT CTRL, left, layoutmsg, orientationprev
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# ┌ ┐
# │ Resize window with keybinds (change split) │
# └ ┘
bind = $mainMod CTRL ALT, H, splitratio, -0.01
bind = $mainMod CTRL ALT, L, splitratio, +0.01
bind = $mainMod ALT, T, submap, split
# Submap for split
submap = split
binde = , H, splitratio, -0.01
binde = , L, splitratio, +0.01
# Reset bind
bind = , escape, submap, reset
submap = reset
# ┌ ┐
# │ Truly resize window with keybind (submap) │
# └ ┘
bind = $mainMod ALT, R, submap, resize
# Submap for resize
submap = resize
binde = , L, resizeactive, 10 0
binde = , H, resizeactive, -10 0
binde = , K, resizeactive, 0 -10
binde = , J, resizeactive, 0 10
# Reset bind
bind = , escape, submap, reset
submap = reset
# ┌ ┐
# │ Freeze │
@@ -208,3 +223,17 @@ bind = ,code:233, exec, light -A 5
# └ ┘
bind = $mainMod CTRL, D, exec, hyprctl keyword monitor HDMI-A-1, 1280x720@60, 1920x0, 1, mirror, DP-1 && notify-send 'Set FPV goggles to mirror main screen' --app-name="Hyprctl"
bind = $mainMod CTRL, E, exec, hyprctl keyword monitor HDMI-A-1, 1280x720@60, 3840x0, 1 && notify-send 'Set to expand FPV goggles' --app-name="Hyprctl"
# ────────────────────────────────────────────────────────────────────
# ╭────────────────────────────────────────────────╮
# │ Funny windows user trolling binds │
# ╰────────────────────────────────────────────────╯
# ────────────────────────────────────────────────────────────────────
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,6 +13,6 @@ general {
decoration {
shadow {
color = rgb(282828)
color = rgb(000002)
}
}

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,12 +54,32 @@ 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,
gesture = 3, down, close
gesture = 3, up, fullscreen
# ────────────────────────────────────────────────────────────────────
# ╭────────────────────────────────────────────────╮
@@ -74,6 +95,12 @@ general {
no_border_on_floating = false
}
# ────────────────────────────────────────────────────────────────────
# ╭────────────────────────────────────────────────╮
# │ Style │
# ╰────────────────────────────────────────────────╯
# ────────────────────────────────────────────────────────────────────
decoration {
inactive_opacity = 1
rounding = 10
@@ -99,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
}
@@ -118,9 +147,3 @@ dwindle {
force_split = 2
preserve_split = true
}
cursor {
no_warps = false
inactive_timeout = 60
}

View File

@@ -19,10 +19,6 @@ $mainMod = SUPER
# │ WINDOW RULES │
# ╰────────────────────────────────────────────────╯
# ────────────────────────────────────────────────────────────────────
windowrule = float, title:.*(rofi).*
windowrule = animation popin, title:.*(rofi).*
windowrule = center, title:(rofi)(.*)
windowrule = move 1450 50, title:^(.*)(Power menu)$
windowrule = workspace 2, class:evince
windowrule = workspace 2, title:.*(Okular).*
@@ -119,3 +115,9 @@ windowrule = idleinhibit focus, class:vlc
windowrule = idleinhibit focus, class:supertuxkart
windowrule = idleinhibit fullscreen, title:^(.*)(Discord)(.*)$
windowrule = idleinhibit fullscreen, title:^(.*)(~)(.*)$
# ┌ ┐
# │ Layer rules │
# └ ┘
layerrule = dimaround, ^(rofi)

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
@@ -39,7 +36,6 @@ 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 = 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',
@@ -83,7 +103,9 @@ const style = {
],
'@stylistic/function-paren-newline': [
'error',
'multiline'
{
'minItems': 3
}
],
'@stylistic/function-call-argument-newline': [
'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,13 +0,0 @@
/** Basic config file **/
configuration {
show-icons: true;
icon-theme: "Candy";
display-drun: "";
display-run: "🏃🏽‍♂️ ";
display-window: "🗔 ";
display-combi: "🔎 ";
dpi: 160;
}
@theme "style.rasi"

View File

@@ -1,7 +1,7 @@
* {
background: #141414;
background-selected: #1E1E1E;
foreground: #E6E6E6;
background: #0A0A0F;
background-selected: #141419;
foreground: #C8DCFF;
accent: #591641;
accent-two: #97103A;
// border-color: #2D2057;
@@ -18,8 +18,8 @@
border: 1px;
border-radius: 10px;
padding: 0;
location: west;
anchor: west;
location: center;
anchor: center;
margin: 0;
}

View File

@@ -7,7 +7,7 @@ window {
font-family: monospace;
font-size: 14pt;
color: #ffffff; /* text */
background-color: rgba(20, 20, 20, 0.5);
background-color: rgba(10, 10, 15, 0.5);
}
button {
@@ -27,7 +27,7 @@ button:hover {
button:focus {
background-color: rgb(151, 16, 58);
color: rgb(230, 230, 230);
color: rgb(200, 220, 255);
}
#lock {

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,38 +7,36 @@ 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/Semester2/", desc = "Go to ETH-Code-Expert" },
{ on = [ "g", "e", "n" ], run = "cd ~/NextCloud/Documents/ETH/Semester2", desc = "Go to ETH Nextcloud" },
{ on = [ "g", "e", "p" ], run = "cd ~/projects/active/eth/semester2/", 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", "n" ], run = "cd ~/NextCloud/Documents/ETH/Semester3/", desc = "Go to ETH Nextcloud" },
{ 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 /" },
{ on = [ "g", "m" ], run = "cd /run/media/$USER", desc = "Go to /run/media" },
{ on = [ "g", "<Space>" ], run = "cd --interactive", desc = "Go to interactively" },
{ on = [ "g", "c" ], run = "plugin vcs-files", desc = "Show Git file changes" },
{ on = [ "g", "-" ], run = "plugin vcs-files", desc = "Show Git file changes" },
]

View File

@@ -1,2 +1,2 @@
[flavor]
use = "vscode-dark-modern"
use = "tokyo-night"

View File

@@ -19,13 +19,13 @@
/*
* ── Foreground color, main interface text colour ─────────────────────
*/
@define-color fg #E6E6E6;
@define-color fg_rgba_07 rgba(230, 230, 230, 0.7);
@define-color fg_rgba_06 rgba(230, 230, 230, 0.6);
@define-color fg_rgba_05 rgba(230, 230, 230, 0.5);
@define-color fg_rgba_03 rgba(230, 230, 230, 0.3);
@define-color fg_rgba_02 rgba(230, 230, 230, 0.2);
@define-color fg_rgba_01 rgba(230, 230, 230, 0.1);
@define-color fg #C8DCFF;
@define-color fg_rgba_07 rgba(200, 220, 255, 0.7);
@define-color fg_rgba_06 rgba(200, 220, 255, 0.6);
@define-color fg_rgba_05 rgba(200, 220, 255, 0.5);
@define-color fg_rgba_03 rgba(200, 220, 255, 0.3);
@define-color fg_rgba_02 rgba(200, 220, 255, 0.2);
@define-color fg_rgba_01 rgba(200, 220, 255, 0.1);
/*
* ── Foreground accent, usually brighter or darker than default ───────
@@ -51,14 +51,14 @@
/*
* ── Accent Gradient ──────────────────────────────────────────────────
*/
@define-color accent_gradient_1 #390E2A;
@define-color accent_gradient_2 #2E0B21;
@define-color accent_gradient_3 #24091B;
@define-color accent_gradient_4 #1D0715;
@define-color accent_gradient_5 #170611;
@define-color accent_gradient_inverse_1 #8B2266;
@define-color accent_gradient_inverse_2 #8B2266;
@define-color accent_gradient_inverse_3 #8B2266;
@define-color accent_gradient_1 #481235;
@define-color accent_gradient_2 #41102F;
@define-color accent_gradient_3 #3A0E2B;
@define-color accent_gradient_4 #350D26;
@define-color accent_gradient_5 #2F0C23;
@define-color accent_gradient_inverse_1 #6E1B50;
@define-color accent_gradient_inverse_2 #6E1B50;
@define-color accent_gradient_inverse_3 #6E1B50;
/*
* ── Secondary accent colour ──────────────────────────────────────────
@@ -97,33 +97,33 @@
/*
* ── Background color, main interface background ──────────────────────
*/
@define-color bg #141414;
@define-color bg_rgba_07 rgba(20, 20, 20, 0.7);
@define-color bg_rgba_05 rgba(20, 20, 20, 0.5);
@define-color bg_rgba_03 rgba(20, 20, 20, 0.3);
@define-color bg_rgba_02 rgba(20, 20, 20, 0.2);
@define-color bg_rgba_015 rgba(20, 20, 20, 0.15);
@define-color bg_rgba_011 rgba(20, 20, 20, 0.11);
@define-color bg #0A0A0F;
@define-color bg_rgba_07 rgba(10, 10, 15, 0.7);
@define-color bg_rgba_05 rgba(10, 10, 15, 0.5);
@define-color bg_rgba_03 rgba(10, 10, 15, 0.3);
@define-color bg_rgba_02 rgba(10, 10, 15, 0.2);
@define-color bg_rgba_015 rgba(10, 10, 15, 0.15);
@define-color bg_rgba_011 rgba(10, 10, 15, 0.11);
/*
* ── Accent background color ──────────────────────────────────────────
*/
@define-color bg_accent #1E1E1E;
@define-color bg_accent_rgba_07 rgba(30, 30, 30, 0.7);
@define-color bg_accent_rgba_06 rgba(30, 30, 30, 0.6);
@define-color bg_accent_rgba_05 rgba(30, 30, 30, 0.5);
@define-color bg_accent_rgba_04 rgba(30, 30, 30, 0.4);
@define-color bg_accent_rgba_03 rgba(30, 30, 30, 0.3);
@define-color bg_accent_rgba_02 rgba(30, 30, 30, 0.2);
@define-color bg_accent_rgba_015 rgba(30, 30, 30, 0.15);
@define-color bg_accent_rgba_01 rgba(30, 30, 30, 0.1);
@define-color bg_accent #141419;
@define-color bg_accent_rgba_07 rgba(20, 20, 25, 0.7);
@define-color bg_accent_rgba_06 rgba(20, 20, 25, 0.6);
@define-color bg_accent_rgba_05 rgba(20, 20, 25, 0.5);
@define-color bg_accent_rgba_04 rgba(20, 20, 25, 0.4);
@define-color bg_accent_rgba_03 rgba(20, 20, 25, 0.3);
@define-color bg_accent_rgba_02 rgba(20, 20, 25, 0.2);
@define-color bg_accent_rgba_015 rgba(20, 20, 25, 0.15);
@define-color bg_accent_rgba_01 rgba(20, 20, 25, 0.1);
/*
* ── Tertiary background colour ───────────────────────────────────────
*/
@define-color bg_tertiary #2D2D2D;
@define-color bg_tertiary_rgba_05 rgba(45, 45, 45, 0.5);
@define-color bg_tertiary_rgba_02 rgba(45, 45, 45, 0.2);
@define-color bg_tertiary #000000;
@define-color bg_tertiary_rgba_05 rgba(0, 0, 0, 0.5);
@define-color bg_tertiary_rgba_02 rgba(0, 0, 0, 0.2);
/*
* ── Inactive background colour ───────────────────────────────────────
@@ -140,10 +140,10 @@
/*
* ── Shadow colours ───────────────────────────────────────────────────
*/
@define-color shadow #282828;
@define-color shadow_rgba_07 rgba(40, 40, 40, 0.7);
@define-color shadow_rgba_05 rgba(40, 40, 40, 0.5);
@define-color shadow_rgba_03 rgba(40, 40, 40, 0.3);
@define-color shadow_rgba_02 rgba(40, 40, 40, 0.2);
@define-color shadow_rgba_015 rgba(40, 40, 40, 0.15);
@define-color shadow_rgba_011 rgba(40, 40, 40, 0.11);
@define-color shadow #000002;
@define-color shadow_rgba_07 rgba(0, 0, 2, 0.7);
@define-color shadow_rgba_05 rgba(0, 0, 2, 0.5);
@define-color shadow_rgba_03 rgba(0, 0, 2, 0.3);
@define-color shadow_rgba_02 rgba(0, 0, 2, 0.2);
@define-color shadow_rgba_015 rgba(0, 0, 2, 0.15);
@define-color shadow_rgba_011 rgba(0, 0, 2, 0.11);

37
install
View File

@@ -24,7 +24,7 @@ echo "
==> Installing Hyprland
"
sleep 2
yay -S --noconfirm --noremovemake hyprland hypridle hyprfreeze hyprlock aylurs-gtk-shell-git brightnessctl pulsemixer xdg-desktop-portal-hyprland cliphist grimblast wl-clipboard polkit-gnome swaybg polkit-kde-agent grim
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 "
@@ -55,21 +55,21 @@ echo "
==> Installing fonts...
"
sleep 2
yay -S --noconfirm --noremovemake adobe-source-code-pro-fonts gnome-font-viewer gnome-characters ttf-fantasque-nerd ttf-jetbrains-mono-nerd ttf-fluentui-system-icons ttf-comfortaa
yay -S --noconfirm --noremovemake adobe-source-code-pro-fonts gnome-font-viewer gnome-characters ttf-fantasque-nerd ttf-jetbrains-mono-nerd ttf-fluentui-system-icons ttf-comfortaa candy-icons
# Programming
echo "
==> Installing coding tools...
"
sleep 2
yay -S --noconfirm --noremovemake docker vscodium kitty fish docker terminator bvi nodejs npm python-pip git-credential-manager-core-bin wine kate rustup cargo filezilla php jdk
yay -S --noconfirm --noremovemake docker vscodium kitty fish docker terminator bvi nodejs npm python-pip git-credential-manager-bin wine kate rustup cargo filezilla php jdk ripgrep
# nvim
echo "
==> Installing nvim...
"
sleep 2
yay -S --noconfirm --noremovemake neovim lua lua-language-server tree-sitter 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
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,21 +84,21 @@ echo "
==> Installing other utilities...
"
sleep 2
yay -S --noconfirm --noremovemake okular vlc nextcloud-client p7zip zip unzip gnome-keyring 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 "
==> Installing webdev utilities...
"
sleep 2
sudo npm i -g create-vue sitemap-generator-cli
sudo npm i -g create-vue sitemap-generator-cli http-server
echo "
==> Doing system config...
@@ -108,18 +108,35 @@ sudo cp ./system/greetd/config.toml /etc/greetd/config.toml
chsh -s /bin/fish
sudo systemctl enable greetd
cd ./build/
npm i
cd ..
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/dotfiles/
./setup
cd ~/projects/active/
cd ~/projects/
git clone https://git.janishutz.com/janishutz/nvim
cd nvim
./nvim-install.sh
xdg-settings set default-web-browser librewolf.desktop
xdg-mime default org.pwmt.zathura.desktop application/pdf
sudo systemctl disable rustdesk
hyprpm update
git-credential-manager configure
echo "
==> DONE!
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

@@ -4,5 +4,6 @@ cd ~/NextCloud/Documents/Private/PC/
unzip ./oreo_spark_blue_cursors.zip
sudo mv ./oreo_spark_blue_cursors /usr/share/icons
cd monterey-grub-theme/
./install.sh
cd ~/NextCloud/Documents/Private/PC/monterey-grub-theme/
sudo chmod +x ./install.sh
sudo ./install.sh

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

@@ -1,13 +0,0 @@
/** Basic config file **/
configuration {
show-icons: true;
icon-theme: "{{ icon-theme }}";
display-drun: "";
display-run: "🏃🏽‍♂️ ";
display-window: "🗔 ";
display-combi: "🔎 ";
dpi: 160;
}
@theme "style.rasi"

View File

@@ -18,8 +18,8 @@
border: 1px;
border-radius: 10px;
padding: 0;
location: west;
anchor: west;
location: center;
anchor: center;
margin: 0;
}

View File

@@ -1,8 +1,7 @@
#!/bin/sh
cp -f ~/.config/hypr/hyprland_docked.conf ~/.config/hypr/hyprland.conf
cp -f ~/.config/rofi/config_desktop.rasi ~/.config/rofi/config.rasi
./restart-bar
echo " ==> Done! To revert to normal config, run change-wallpaper"
echo " ==> Done! To revert to normal config, run apply-config"

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

25
setup
View File

@@ -39,7 +39,9 @@ platform=$(echo "$platform" | tr '[:upper:]' '[:lower:]')
# Get user preference for regenerating the styling
regen=""
read -p "Would you like to regenerate styling? (y/N) " regen
restart=""
if [[ "$regen" == "y" ]]; then
restart="y"
cd build
node build.js
if [ $? -ne 0 ]; then
@@ -47,6 +49,8 @@ if [[ "$regen" == "y" ]]; then
exit 130
fi
cd ..
else
read -p "Apply full config? (y/N) " restart
fi
echo "=> Moving configs to correct destinations"
@@ -56,18 +60,18 @@ 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
echo "Running on desktop"
cp -f ~/.config/hypr/hyprland_desktop.conf ~/.config/hypr/hyprland.conf
cp -f ~/.config/rofi/config_desktop.rasi ~/.config/rofi/config.rasi
else
echo "Running on laptop"
cp -f ~/.config/hypr/hyprland_laptop.conf ~/.config/hypr/hyprland.conf
cp -f ~/.config/rofi/config_laptop.rasi ~/.config/rofi/config.rasi
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/
@@ -76,29 +80,38 @@ 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
"
ya pkg upgrade
if [[ "$restart" == "y" ]]; then
echo "
=> Installing GTK Theme
"
sudo rm -rf /usr/share/themes/Adaptive-Theme/
sudo mkdir /usr/share/themes/Adaptive-Theme/
sudo cp -r ./gtk-theme/dist/* /usr/share/themes/Adaptive-Theme/
echo "
=> Installing System Configs
"
sudo cp ./system/environment /etc/environment
sudo cp -r ./system/greetd/* /etc/greetd/
sudo cp ./system/greetd/pam /etc/pam.d/greetd
sudo cp -r ./system/greetd/config.toml /etc/greetd/
# if [[ "$platform" == "d" ]]; then
# else
# echo "Setting up autologin config for greetd"
# sudo cp -r ./system/greetd/config-autologin.toml /etc/greetd/config.toml
# fi
hyprctl reload
./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

View File

@@ -0,0 +1,18 @@
[terminal]
# The VT to run the greeter on. Can be "next", "current" or a number
# designating the VT.
vt = 1
# The default session, also known as the greeter.
[default_session]
command = "tuigreet --cmd Hyprland --time --remember --remember-user-session --asterisks --user-menu --sessions /usr/share/wayland-sessions"
# The user to run the command as. The privileges this user must have depends
# on the greeter. A graphical greeter may for example require the user to be
# in the `video` group.
user = "greeter"
[initial_session]
command = "Hyprland"
user = "janis"

9
system/greetd/pam Normal file
View File

@@ -0,0 +1,9 @@
#%PAM-1.0
auth required pam_securetty.so
auth requisite pam_nologin.so
auth include system-local-login
auth optional pam_gnome_keyring.so
account include system-local-login
session include system-local-login
session optional pam_gnome_keyring.so auto_start

View File

@@ -1,73 +0,0 @@
# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run. Advanced users may wish to specify all system modules
# in this array. For instance:
# MODULES=(usbhid xhci_hcd)
MODULES=()
# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image. This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()
# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way. This is useful for config files.
FILES=()
# HOOKS
# This is the most important setting in this file. The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
## This setup specifies all modules in the MODULES setting above.
## No RAID, lvm2, or encrypted root is needed.
# HOOKS=(base)
#
## This setup will autodetect all modules for your system and should
## work as a sane default
# HOOKS=(base udev autodetect modconf block filesystems fsck)
#
## This setup will generate a 'full' image which supports most systems.
## No autodetection is done.
# HOOKS=(base udev modconf block filesystems fsck)
#
## This setup assembles a mdadm array with an encrypted root file system.
## Note: See 'mkinitcpio -H mdadm_udev' for more information on RAID devices.
# HOOKS=(base udev modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck)
#
## This setup loads an lvm2 volume group.
# HOOKS=(base udev modconf block lvm2 filesystems fsck)
#
## NOTE: If you have /usr on a separate partition, you MUST include the
# usr and fsck hooks.
HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block filesystems fsck plymouth)
# COMPRESSION
# Use this to compress the initramfs image. By default, zstd compression
# is used. Use 'cat' to create an uncompressed image.
#COMPRESSION="zstd"
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"
# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()
# MODULES_DECOMPRESS
# Decompress kernel modules during initramfs creation.
# Enable to speedup boot process, disable to save RAM
# during early userspace. Switch (yes/no).
#MODULES_DECOMPRESS="yes"