Compare commits
58 Commits
Author | SHA1 | Date | |
---|---|---|---|
4fef18041f | |||
df3384c667 | |||
7a97d7425e | |||
73ca687358 | |||
88441958d9 | |||
e59af388b1 | |||
39da9176ad | |||
e4ee9c9dc8 | |||
feef8452f4 | |||
c3ff5a58d6 | |||
a005189aef | |||
e98f5c2bd7 | |||
e7f6be4291 | |||
4fa7dc3c1a | |||
2ccb49f24b | |||
ec04ebee66 | |||
2b2f1c2b66 | |||
21f7e53b2b | |||
5f09b7b915 | |||
688013a6b8 | |||
4e7c3ceee8 | |||
390874374e | |||
7f7a755e32 | |||
ac6b47449a | |||
ce5f530ed2 | |||
62789224a7 | |||
0b849bad4f | |||
0022880936 | |||
1d5240b7c6 | |||
0b0e83f505 | |||
f4cfa20dea | |||
d866102fcc | |||
921373f049 | |||
1c39478650 | |||
a845e086fd | |||
b363438f6a | |||
7d9da82b6c | |||
c52c5b5a42 | |||
97c49f17e6 | |||
134519558a | |||
9e5ae7db83 | |||
a31b3481c3 | |||
1c757d1173 | |||
89b97c4ba1 | |||
2ba627a370 | |||
995de3617c | |||
a477078f16 | |||
f93eeb5d87 | |||
5b0e3767bd | |||
51962c424b | |||
a6ce7ccdce | |||
0f0e0e8671 | |||
c6061e0f12 | |||
cac0e41a2e | |||
c4797dd592 | |||
8986ad894e | |||
f127ea8a41 | |||
bb75cfabaf |
34
README.md
34
README.md
@ -1,4 +1,36 @@
|
|||||||
# janishutz Hyprland
|
<div id="title" align="center">
|
||||||
|
<img src="https://static.janishutz.com/logo.jpg" width="300">
|
||||||
|
<h1>janishutz Hyprland</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
## Features
|
||||||
|
- Astal4 based Status Bar and Quick Actions menu
|
||||||
|
- System info
|
||||||
|
- Hyprland info
|
||||||
|
- Date & Time
|
||||||
|
- Bluetooth picker
|
||||||
|
- some networking settings (more coming later)
|
||||||
|
- Audio and brightness control
|
||||||
|
- battery monitoring
|
||||||
|
- Logout, Reboot, Shutdown, etc
|
||||||
|
- Rofi config for App launcher
|
||||||
|
- Wlogout config
|
||||||
|
- Theming script that generates a GTK theme and theming for bar, Hyprland, etc
|
||||||
|
- Fish config (with some handy aliases, based on one from ohh-my-fish)
|
||||||
|
- Fastfetch config
|
||||||
|
- kitty config with cursor trail
|
||||||
|
- Linter configs (currently only eslint, which is not complete yet)
|
||||||
|
- mpv config
|
||||||
|
- zathura configs
|
||||||
|
- yazi configs with links to various directories I use commonly plus a few plugins and themes that are applied by the script
|
||||||
|
- Astal3 based Notifications (due to be migrated to Astal4)
|
||||||
|
|
||||||
|
## Installing
|
||||||
|
Clone your repo to any folder and adapt what you need. Some folders are still hard-coded, which I will be changing later on, so you will likely run into issues.
|
||||||
|
|
||||||
|
You may then run the `setup` script. That won't install all dependencies though. The `install` script is what serves that purpose, but that is not complete yet
|
||||||
|
|
||||||
|
|
||||||
## Setting up to develop
|
## Setting up to develop
|
||||||
|
@ -30,7 +30,7 @@ const build = ( wallpaper, lockpaper, theme ) => {
|
|||||||
name: 'confirm-proceed-build',
|
name: 'confirm-proceed-build',
|
||||||
message: 'Okay to proceed with these colours?'
|
message: 'Okay to proceed with these colours?'
|
||||||
} ] ).then( answer => {
|
} ] ).then( answer => {
|
||||||
if ( answer ) proceedWithBuild( wallpaper, lockpaper, theme, palette );
|
if ( answer['confirm-proceed-build'] ) proceedWithBuild( wallpaper, lockpaper, theme, palette );
|
||||||
else {
|
else {
|
||||||
// Have the user pick any other of the extracted colours instead
|
// Have the user pick any other of the extracted colours instead
|
||||||
let counter = -1;
|
let counter = -1;
|
||||||
|
@ -29,11 +29,13 @@ export const BatteryBox = () => {
|
|||||||
cssClasses={["battery-time"]}
|
cssClasses={["battery-time"]}
|
||||||
visible={bind(battery, "charging").as(c => !c)}
|
visible={bind(battery, "charging").as(c => !c)}
|
||||||
label={bind(battery, "timeToEmpty").as(t => `(${toTime(t)})`)}
|
label={bind(battery, "timeToEmpty").as(t => `(${toTime(t)})`)}
|
||||||
|
tooltipText={bind(battery, 'energyRate').as(er => `Time to empty. Power usage: ${batteryEnergy(er)}`)}
|
||||||
/>
|
/>
|
||||||
<label
|
<label
|
||||||
cssClasses={["battery-time"]}
|
cssClasses={["battery-time"]}
|
||||||
visible={bind(battery, "charging")}
|
visible={bind(battery, "charging")}
|
||||||
label={bind(battery, "timeToFull").as(t => `(${toTime(t)})`)}
|
label={bind(battery, "timeToFull").as(t => `(${toTime(t)})`)}
|
||||||
|
tooltipText={bind(battery, 'energyRate').as(er => `Time to full. Charge rate: ${batteryEnergy(er)}`)}
|
||||||
/>
|
/>
|
||||||
</box>
|
</box>
|
||||||
);
|
);
|
||||||
@ -43,7 +45,7 @@ const toTime = (time: number) => {
|
|||||||
const MINUTE = 60;
|
const MINUTE = 60;
|
||||||
const HOUR = MINUTE * 60;
|
const HOUR = MINUTE * 60;
|
||||||
|
|
||||||
if (time > 24 * HOUR) return "";
|
if (time > 24 * HOUR) return "24h+";
|
||||||
|
|
||||||
const hours = Math.round(time / HOUR);
|
const hours = Math.round(time / HOUR);
|
||||||
const minutes = Math.round((time - hours * HOUR) / MINUTE);
|
const minutes = Math.round((time - hours * HOUR) / MINUTE);
|
||||||
|
@ -135,8 +135,9 @@ const PlayerItem = ({ player }: { player: AstalMpris.Player }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const secondsToFriendlyTime = (time: number) => {
|
const secondsToFriendlyTime = (time: number) => {
|
||||||
const minutes = Math.floor(time / 60);
|
const m = Math.floor(time / 60);
|
||||||
const hours = Math.floor(minutes / 60);
|
const minutes = Math.floor(m % 60);
|
||||||
|
const hours = Math.floor(m / 60 % 24);
|
||||||
const seconds = Math.floor(time % 60);
|
const seconds = Math.floor(time % 60);
|
||||||
if (hours > 0) {
|
if (hours > 0) {
|
||||||
return `${hours}:${expandTime(minutes)}:${expandTime(seconds)}`;
|
return `${hours}:${expandTime(minutes)}:${expandTime(seconds)}`;
|
||||||
|
@ -2,6 +2,7 @@ import AstalTray from "gi://AstalTray";
|
|||||||
import { bind, GObject } from "astal";
|
import { bind, GObject } from "astal";
|
||||||
import AstalHyprland from "gi://AstalHyprland";
|
import AstalHyprland from "gi://AstalHyprland";
|
||||||
import { Gtk } from "astal/gtk4";
|
import { Gtk } from "astal/gtk4";
|
||||||
|
import Pango from "gi://Pango?version=1.0";
|
||||||
|
|
||||||
const hypr = AstalHyprland.get_default();
|
const hypr = AstalHyprland.get_default();
|
||||||
const SYNC = GObject.BindingFlags.SYNC_CREATE;
|
const SYNC = GObject.BindingFlags.SYNC_CREATE;
|
||||||
@ -105,7 +106,10 @@ const ActiveWindow = () => {
|
|||||||
focused.as(
|
focused.as(
|
||||||
client =>
|
client =>
|
||||||
client && (
|
client && (
|
||||||
<label label={bind(client, "title").as(String)} />
|
<label
|
||||||
|
maxWidthChars={40}
|
||||||
|
ellipsize={Pango.EllipsizeMode.END}
|
||||||
|
label={bind(client, "title").as(String)} />
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}></button>
|
}></button>
|
||||||
@ -128,7 +132,7 @@ const WindowPopoverBox = () => {
|
|||||||
<label label={bind(client, 'title')}></label>
|
<label label={bind(client, 'title')}></label>
|
||||||
</box>
|
</box>
|
||||||
}
|
}
|
||||||
onClicked={() => client.focus()}
|
onClicked={() => client.focus()}
|
||||||
></button>
|
></button>
|
||||||
})
|
})
|
||||||
})}
|
})}
|
||||||
|
@ -125,9 +125,9 @@ const BatteryWidget = () => {
|
|||||||
if (battery.get_is_present()) {
|
if (battery.get_is_present()) {
|
||||||
return (
|
return (
|
||||||
<image
|
<image
|
||||||
iconName={bind(battery, "iconName").as(icon => icon)}
|
iconName={bind(battery, "batteryIconName").as(icon => icon)}
|
||||||
cssClasses={["quick-view-symbol"]}
|
cssClasses={["quick-view-symbol"]}
|
||||||
tooltipText={bind(battery, 'percentage').as(p => `${Math.round(p * 100)}%`)}
|
tooltipText={bind(battery, 'percentage').as(p => `Battery Level: ${Math.round(p * 100)}%`)}
|
||||||
></image>
|
></image>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
@ -3,8 +3,9 @@ alias ll='ls -la --color'
|
|||||||
alias v='nvim'
|
alias v='nvim'
|
||||||
alias c='clear'
|
alias c='clear'
|
||||||
alias zs='zathura-sandbox'
|
alias zs='zathura-sandbox'
|
||||||
|
alias z='zathura'
|
||||||
alias bt='bluetui'
|
alias bt='bluetui'
|
||||||
alias vicfg='cd ~/.config/nvim/ && nvim'
|
alias vicfg='nvim ~/projects/active/nvim/'
|
||||||
alias fm='thunar .'
|
alias fm='thunar .'
|
||||||
alias gl='git ls-files --others --exclude-standard'
|
alias gl='git ls-files --others --exclude-standard'
|
||||||
alias gm='gti ls-files -m'
|
alias gm='gti ls-files -m'
|
||||||
@ -15,8 +16,7 @@ alias ga='git add ./*'
|
|||||||
alias cfh='nvim ~/projects/active/dotfiles/config/hypr/'
|
alias cfh='nvim ~/projects/active/dotfiles/config/hypr/'
|
||||||
alias cfn='nvim ~/projects/active/nvim/'
|
alias cfn='nvim ~/projects/active/nvim/'
|
||||||
alias cff='nvim ~/projects/active/dotfiles/config/fish/'
|
alias cff='nvim ~/projects/active/dotfiles/config/fish/'
|
||||||
alias cfw='nvim ~/projects/archive/dotfiles-old/pc/configs/waybar/'
|
alias cfa='nvim ~/projects/active/dotfiles/config/astal/'
|
||||||
alias cfa='nvim ~/projects/active/dotfiles/config/ags/'
|
|
||||||
alias cf='nvim ~/projects/active/dotfiles/'
|
alias cf='nvim ~/projects/active/dotfiles/'
|
||||||
alias g='lazygit'
|
alias g='lazygit'
|
||||||
alias open-webui='sudo systemctl start docker && sudo docker start -i open-webui'
|
alias open-webui='sudo systemctl start docker && sudo docker start -i open-webui'
|
||||||
|
@ -13,10 +13,10 @@ exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
|||||||
exec-once = hypridle
|
exec-once = hypridle
|
||||||
exec-once = nm-applet
|
exec-once = nm-applet
|
||||||
exec-once = nextcloud --background
|
exec-once = nextcloud --background
|
||||||
# exec-once = sleep 2 && bash -c "ags run -d ~/projects/active/dotfiles/config/astal/ --gtk4 >> ~/log 2>&1"
|
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/active/dotfiles/config/astal/ --gtk4"
|
# 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/ >> ~/logn 2>&1"
|
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/active/dotfiles/config/ags/notifications/"
|
# exec-once = bash -c "ags run -d ~/projects/active/dotfiles/config/ags/notifications/"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ general {
|
|||||||
# └ ┘
|
# └ ┘
|
||||||
background {
|
background {
|
||||||
monitor =
|
monitor =
|
||||||
path = /home/janis/NextCloud/Wallpapers/dark/colour-splash.jpg # Or screenshot
|
path = /home/janis/NextCloud/Wallpapers/dark/mountains.jpg # Or screenshot
|
||||||
|
|
||||||
blur_passes = 1
|
blur_passes = 1
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ font_size 12.0
|
|||||||
# │ Cursor config │
|
# │ Cursor config │
|
||||||
# └ ┘
|
# └ ┘
|
||||||
cursor_trail 1
|
cursor_trail 1
|
||||||
|
cursor_trail_start_threshold 0
|
||||||
|
|
||||||
|
|
||||||
# ┌ ┐
|
# ┌ ┐
|
||||||
|
65
config/lint/dump
Normal file
65
config/lint/dump
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
// @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',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
@ -1,65 +1,118 @@
|
|||||||
// @ts-check
|
import vue from 'eslint-plugin-vue';
|
||||||
|
|
||||||
import eslint from '@eslint/js';
|
import eslint from '@eslint/js';
|
||||||
import tseslint from 'typescript-eslint';
|
import typescript from '@typescript-eslint/eslint-plugin';
|
||||||
import stylistic from '@stylistic/eslint-plugin';
|
import stylistic from '@stylistic/eslint-plugin';
|
||||||
|
import tseslint from 'typescript-eslint';
|
||||||
|
|
||||||
|
const style = {
|
||||||
|
'plugins': {
|
||||||
|
'@stylistic': stylistic,
|
||||||
|
'@stylistic/js': stylistic,
|
||||||
|
'@stylistic/ts': stylistic,
|
||||||
|
},
|
||||||
|
'rules': {
|
||||||
|
// Formatting
|
||||||
|
'@stylistic/array-bracket-newline': ['error', { 'multiline': true, 'minItems': 4 }],
|
||||||
|
'@stylistic/array-bracket-spacing': ['error', 'always'],
|
||||||
|
'@stylistic/array-element-newline': ['error', { 'multiline': true, 'minItems': 4 }],
|
||||||
|
'@stylistic/arrow-parens': ['error', 'as-needed'],
|
||||||
|
'@stylistic/arrow-spacing': ['error', { 'before': true, 'after': true }],
|
||||||
|
'@stylistic/block-spacing': ['error', 'always'],
|
||||||
|
'@stylistic/brace-style': ['error', '1tbs'],
|
||||||
|
'@stylistic/comma-spacing': ['error', { 'before': false, 'after': true }],
|
||||||
|
'@stylistic/comma-style': ['error', 'last'],
|
||||||
|
'@stylistic/dot-location': ['error', 'property'],
|
||||||
|
'@stylistic/eol-last': ['error', 'always'],
|
||||||
|
'@stylistic/function-call-spacing': ['error', 'never'],
|
||||||
|
'@stylistic/implicit-arrow-linebreak': ['error', 'beside'],
|
||||||
|
'@stylistic/indent': ['error', 4],
|
||||||
|
'@stylistic/key-spacing': ['error', { 'beforeColon': false, 'afterColon': true }],
|
||||||
|
'@stylistic/keyword-spacing': ['error', { 'before': true, 'after': true }],
|
||||||
|
'@stylistic/lines-between-class-members': ['error', 'always'],
|
||||||
|
'@stylistic/new-parens': ['error', 'always'],
|
||||||
|
'@stylistic/no-extra-parens': ['error', 'all'],
|
||||||
|
'@stylistic/no-extra-semi': 'error',
|
||||||
|
'@stylistic/no-floating-decimal': 'error',
|
||||||
|
'@stylistic/no-mixed-operators': 'error',
|
||||||
|
'@stylistic/no-mixed-spaces-and-tabs': 'error',
|
||||||
|
'@stylistic/no-multi-spaces': 'error',
|
||||||
|
'@stylistic/no-trailing-spaces': 'error',
|
||||||
|
'@stylistic/no-whitespace-before-property': 'error',
|
||||||
|
'@stylistic/object-curly-newline': ['error', { 'multiline': true, 'minProperties': 3 }],
|
||||||
|
'@stylistic/object-curly-spacing': ['error', 'always'],
|
||||||
|
'@stylistic/one-var-declaration-per-line': 'error',
|
||||||
|
'@stylistic/quote-props': ['error', 'always'],
|
||||||
|
'@stylistic/quotes': ['error', 'single'],
|
||||||
|
'@stylistic/rest-spread-spacing': ['error', 'never'],
|
||||||
|
'@stylistic/semi': ['error', 'always'],
|
||||||
|
'@stylistic/semi-spacing': ['error', { 'before': false, 'after': true }],
|
||||||
|
'@stylistic/semi-style': ['error', 'last'],
|
||||||
|
'@stylistic/space-before-blocks': ['error', 'always'],
|
||||||
|
'@stylistic/space-before-function-paren': ['error', 'always'],
|
||||||
|
'@stylistic/space-in-parens': ['error', 'always'],
|
||||||
|
'@stylistic/space-infix-ops': ['error', { 'int32Hint': false }],
|
||||||
|
'@stylistic/space-unary-ops': 'error',
|
||||||
|
'@stylistic/spaced-comment': ['error', 'always'],
|
||||||
|
'@stylistic/switch-colon-spacing': 'error',
|
||||||
|
'@stylistic/template-curly-spacing': ['error', 'always'],
|
||||||
|
'@stylistic/wrap-iife': ['error', 'inside'],
|
||||||
|
'@stylistic/wrap-regex': 'error',
|
||||||
|
'@stylistic/ts/type-annotation-spacing': 'error',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @type {import('eslint').Linter.FlatConfig[]} */
|
||||||
export default tseslint.config(
|
export default tseslint.config(
|
||||||
|
// Base JavaScript rules
|
||||||
eslint.configs.recommended,
|
eslint.configs.recommended,
|
||||||
...tseslint.configs.recommended,
|
...tseslint.configs.recommended,
|
||||||
|
style,
|
||||||
|
|
||||||
|
// TypeScript support
|
||||||
|
// {
|
||||||
|
// files: ['**/*.ts', '**/*.tsx'],
|
||||||
|
// languageOptions: {
|
||||||
|
// parser: parserTs,
|
||||||
|
// parserOptions: {
|
||||||
|
// ecmaVersion: 'latest',
|
||||||
|
// sourceType: 'module',
|
||||||
|
// project: './tsconfig.json',
|
||||||
|
// ecmaFeatures: {
|
||||||
|
// jsx: true,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// plugins: {
|
||||||
|
// '@typescript-eslint': typescript,
|
||||||
|
// },
|
||||||
|
// rules: {
|
||||||
|
// ...typescript.configs.recommended.rules,
|
||||||
|
// ...style.rules,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
|
||||||
|
// Vue support (including TS and JSX inside SFCs)
|
||||||
{
|
{
|
||||||
'plugins': {
|
files: ['**/*.vue'],
|
||||||
'@stylistic/js': stylistic,
|
extends: [
|
||||||
'@stylistic/ts': stylistic,
|
'plugin: vue/recommended'
|
||||||
|
],
|
||||||
|
plugins: {
|
||||||
|
'vue-eslint-parser': vue,
|
||||||
|
'@typescript-eslint': typescript,
|
||||||
},
|
},
|
||||||
'rules': {
|
rules: {
|
||||||
// Formatting
|
...typescript.configs.recommended.rules,
|
||||||
'@stylistic/js/array-bracket-newline': [ 'error', { 'multiline': true, 'minItems': 4 } ],
|
...style.rules,
|
||||||
'@stylistic/js/array-bracket-spacing': [ 'error', 'always' ],
|
|
||||||
'@stylistic/js/array-element-newline': [ 'error', { 'multiline': true, 'minItems': 4 } ],
|
// You can override any Vue or TS rules here
|
||||||
'@stylistic/js/arrow-parens': [ 'error', 'always' ],
|
'vue/html-indent': ['error', 4],
|
||||||
'@stylistic/js/arrow-spacing': [ 'error', { 'before': true, 'after': true } ],
|
'vue/html-comment-indent': ['error', 4],
|
||||||
'@stylistic/js/block-spacing': [ 'error', 'always' ],
|
'vue/script-indent': ['error', 4],
|
||||||
'@stylistic/js/brace-style': [ 'error', '1tbs' ],
|
'vue/max-attributes-per-line': ['error', {
|
||||||
'@stylistic/js/comma-spacing': [ 'error', { 'before': false, 'after': true } ],
|
singleline: 3,
|
||||||
'@stylistic/js/comma-style': [ 'error', 'last' ],
|
multiline: { max: 1, allowFirstLine: false },
|
||||||
'@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',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
|
@ -8,22 +8,27 @@ prepend_keymap = [
|
|||||||
# Goto
|
# Goto
|
||||||
{ on = [ "g", "h" ], run = "cd ~", desc = "Go to ~" },
|
{ on = [ "g", "h" ], run = "cd ~", desc = "Go to ~" },
|
||||||
{ on = [ "g", "c", "c" ], run = "cd ~/.config", desc = "Go to ~/.config" },
|
{ on = [ "g", "c", "c" ], run = "cd ~/.config", desc = "Go to ~/.config" },
|
||||||
{ on = [ "g", "c", "h" ], run = "cd ~/.config/hypr", desc = "Go to Hyprland config" },
|
|
||||||
{ on = [ "g", "c", "f" ], run = "cd ~/.config/fish", desc = "Go to Fish config" },
|
|
||||||
{ on = [ "g", "c", "y" ], run = "cd ~/.config/yazi", desc = "Go to Yazi config" },
|
|
||||||
{ on = [ "g", "c", "w" ], run = "cd ~/.config/waybar", desc = "Go to waybar config" },
|
|
||||||
{ on = [ "g", "c", "n" ], run = "cd ~/.config/nvim", desc = "Go to NeoVim config" },
|
|
||||||
{ on = [ "g", "a" ], run = "cd ~/.cache", desc = "Go to ~/.cache" },
|
{ 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", "n" ], run = "cd ~/projects/active/nvim", desc = "Go to NeoVim config" },
|
||||||
{ on = [ "g", "n" ], run = "cd ~/NextCloud/Documents/", desc = "Go to NextCloud Documents" },
|
{ 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", "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", "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", "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", "g" ], run = "cd ~/projects/active/eth-gitlab/pprog25-jahutz/", desc = "Go to ETH Gitlab folder" },
|
||||||
{ on = [ "g", "l", "b" ], run = "cd ~/.local/bin", desc = "Go to ~/.local/bin" },
|
{ on = [ "g", "s", "h" ], run = "cd ~/.steam/steam/steamapps/common", desc = "Go to ~/.steam/steam/steamapps/common" },
|
||||||
{ on = [ "g", "l", "s" ], run = "cd ~/.local/share", desc = "Go to ~/.local/share" },
|
{ on = [ "g", "s", "g" ], run = "cd /mnt/games/SteamLibrary", desc = "Go to SteamLibrary on NTFS partition" },
|
||||||
{ on = [ "g", "s", "h" ], run = "cd ~/.steam/steam/steamapps/common", desc = "Go to ~/.steam/steam/steamapps/common" },
|
{ on = [ "g", "s", "s" ], run = "cd /mnt/secondary/SteamLibrary", desc = "Go to SteamLibrary on main games drive" },
|
||||||
{ 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", "o" ], run = "cd /mnt/janis/Documents", desc = "Go to Documents" },
|
||||||
{ on = [ "g", "d" ], run = "cd ~/Downloads", desc = "Go to ~/Downloads" },
|
{ 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", "a" ], run = "cd ~/projects/active", desc = "Go to Active projects" },
|
||||||
|
8
install
8
install
@ -21,17 +21,17 @@ ya pack -a boydaihungst/restore
|
|||||||
yay -S adobe-source-code-pro-fonts gnome-font-viewer gnome-characters gnome-tweaks lxappearance kvantum gnome-keyring smartmontools ffmpeg polkit-gnome swaybg network-manager-applet polkit-kde-agent cpupower-gui ttf-fantasque-nerd ttf-jetbrains-mono-nerd ttf-fluentui-system-icons ttf-comfortaa
|
yay -S adobe-source-code-pro-fonts gnome-font-viewer gnome-characters gnome-tweaks lxappearance kvantum gnome-keyring smartmontools ffmpeg polkit-gnome swaybg network-manager-applet polkit-kde-agent cpupower-gui ttf-fantasque-nerd ttf-jetbrains-mono-nerd ttf-fluentui-system-icons ttf-comfortaa
|
||||||
|
|
||||||
# Programming
|
# Programming
|
||||||
yay -S meld docker vscodium kitty fish docker terminator ghex nodejs npm python-pip git-credential-manager-core-bin wine kate rustup cargo filezilla typescript-language-server php jdk vscode-css-languageserver vscode-html-languageserver bash-language-server lazygit
|
yay -S meld docker vscodium kitty fish docker terminator ghex nodejs npm python-pip git-credential-manager-core-bin wine kate rustup cargo filezilla php jdk
|
||||||
sudo npm i -g @vue/typescript-plugin
|
|
||||||
|
|
||||||
# nvim
|
# nvim
|
||||||
yay -S neovim lua lua-language-server tree-sitter texlab stylua luarocks jdtls perl julia autojump pyright
|
yay -S neovim lua lua-language-server tree-sitter texlab stylua luarocks jdtls perl julia autojump pyright vscode-css-languageserver vscode-html-languageserver bash-language-server lazygit python-black proselint asmfmt typescript-language-server
|
||||||
|
sudo npm i -g @vue/typescript-plugin
|
||||||
|
|
||||||
# Internet
|
# Internet
|
||||||
yay -S librewolf-bin webcord-bin thunderbird rustdesk brave-bin
|
yay -S librewolf-bin webcord-bin thunderbird rustdesk brave-bin
|
||||||
|
|
||||||
# Utilities
|
# Utilities
|
||||||
yay -S okular vlc nextcloud-client p7zip zip unzip gnome-keyring noto-fonts thunderbird pamixer pavucontrol light neofetch bashtop hugo sddm uxplay upower
|
yay -S okular vlc nextcloud-client p7zip zip unzip gnome-keyring noto-fonts thunderbird pamixer pavucontrol light neofetch bashtop hugo sddm uxplay upower gdu
|
||||||
|
|
||||||
# LaTeX
|
# LaTeX
|
||||||
yay -S texlive biber
|
yay -S texlive biber
|
||||||
|
14
notes.md
14
notes.md
@ -17,6 +17,8 @@
|
|||||||
- [ ] AppLauncher (possibly, if anyrun is no good, probably not)
|
- [ ] AppLauncher (possibly, if anyrun is no good, probably not)
|
||||||
- [ ] OSD (see [here](https://github.com/Aylur/astal/tree/main/examples/gtk3/js))
|
- [ ] OSD (see [here](https://github.com/Aylur/astal/tree/main/examples/gtk3/js))
|
||||||
- [x] Open Window List for bar when hovering over window title and per-workspace when hovering over workspace
|
- [x] Open Window List for bar when hovering over window title and per-workspace when hovering over workspace
|
||||||
|
- [ ] Keybind to open QuickActions
|
||||||
|
- [ ] Improve handling of tray items (crashes on update of submenus)
|
||||||
- [ ] Text recognition
|
- [ ] Text recognition
|
||||||
- [ ] Theming
|
- [ ] Theming
|
||||||
- [x] Vivado dark mode
|
- [x] Vivado dark mode
|
||||||
@ -50,14 +52,14 @@
|
|||||||
- [ ] Configure formatters (of Java, Cpp, TS/JS/Vue, Python)
|
- [ ] Configure formatters (of Java, Cpp, TS/JS/Vue, Python)
|
||||||
- [ ] Maybe: Add extra configs to commentbox
|
- [ ] Maybe: Add extra configs to commentbox
|
||||||
- [ ] Remove trouble (useless for my purposes)
|
- [ ] Remove trouble (useless for my purposes)
|
||||||
- [ ] Yazi
|
- [x] Yazi
|
||||||
- [x] More keybinds
|
- [x] More keybinds
|
||||||
- [ ] Configure
|
- [x] Configure
|
||||||
- [ ] Drag and drop support?
|
- [ ] ~Drag and drop support?~
|
||||||
- [ ] Check out plugins
|
- [x] Check out plugins
|
||||||
- [x] Use as file picker
|
- [x] Use as file picker
|
||||||
- [ ] SDDM
|
- [x] SDDM
|
||||||
- [ ] Replace with LightDM or ensure theming works, but prefer replacing, consider greetd + tuigreet
|
- [x] Replace with LightDM or ensure theming works, but prefer replacing, consider greetd + tuigreet
|
||||||
- [ ] Scripts
|
- [ ] Scripts
|
||||||
- [ ] Installer (after the basic OS setup is done (= from chroot onwards))
|
- [ ] Installer (after the basic OS setup is done (= from chroot onwards))
|
||||||
- [x] Theming script
|
- [x] Theming script
|
||||||
|
@ -5,5 +5,5 @@ SCRIPT_DIR=$(dirname "$0")
|
|||||||
cp "$SCRIPT_DIR/../config/lint/eslint.config.mjs" .
|
cp "$SCRIPT_DIR/../config/lint/eslint.config.mjs" .
|
||||||
|
|
||||||
# TODO: Improve eslint config to include JSX and Vue configs too, read on website
|
# TODO: Improve eslint config to include JSX and Vue configs too, read on website
|
||||||
npm i --save-dev @eslint/js typescript-eslint @stylistic/eslint-plugin
|
npm i --save-dev @eslint/js typescript-eslint @stylistic/eslint-plugin eslint-plugin-vue
|
||||||
|
|
||||||
|
17
setup
17
setup
@ -100,13 +100,16 @@ sudo cp ./system/environment /etc/environment
|
|||||||
sudo cp -r ./system/greetd/* /etc/greetd/
|
sudo cp -r ./system/greetd/* /etc/greetd/
|
||||||
hyprctl reload
|
hyprctl reload
|
||||||
|
|
||||||
# echo "
|
echo "
|
||||||
# => Restarting bars, etc
|
=> Restarting bars, etc
|
||||||
# "
|
-> This will take a couple of seconds to ensure them quitting properly
|
||||||
# killall gjs
|
"
|
||||||
# sleep 1
|
killall gjs
|
||||||
# ags run -d ./config/astal --gtk4 & disown 2>&1 > /dev/null
|
killall ags
|
||||||
# ags run -d ./config/ags/notifications/ & disown 2>&1 > /dev/null
|
sleep 5
|
||||||
|
ags run -d ~/projects/active/dotfiles/config/astal --gtk4 & disown
|
||||||
|
sleep 2
|
||||||
|
ags run -d ~/projects/active/dotfiles/config/ags/notifications & disown
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user