Compare commits
No commits in common. "main" and "v2" have entirely different histories.
34
README.md
34
README.md
@ -1,36 +1,4 @@
|
|||||||
<div id="title" align="center">
|
# janishutz Hyprland
|
||||||
<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['confirm-proceed-build'] ) proceedWithBuild( wallpaper, lockpaper, theme, palette );
|
if ( answer ) 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;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { bind } from "astal";
|
import { bind, Binding } from "astal";
|
||||||
import { Gtk } from "astal/gtk4";
|
import { Gtk } from "astal/gtk4";
|
||||||
import AstalWp from "gi://AstalWp";
|
import AstalWp from "gi://AstalWp";
|
||||||
|
|
||||||
@ -13,8 +13,8 @@ const AudioModule = () => {
|
|||||||
wp.defaultMicrophone.set_volume(volume / 100);
|
wp.defaultMicrophone.set_volume(volume / 100);
|
||||||
};
|
};
|
||||||
|
|
||||||
const speakerSelector = SinkSelectPopover(AstalWp.MediaClass.AUDIO_SINK);
|
const speakerSelector = SinkSelectPopover(AstalWp.MediaClass.AUDIO_SPEAKER);
|
||||||
const micSelector = SinkSelectPopover(AstalWp.MediaClass.AUDIO_SOURCE);
|
const micSelector = SinkSelectPopover(AstalWp.MediaClass.AUDIO_MICROPHONE);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<box cssClasses={["audio-box"]} vertical>
|
<box cssClasses={["audio-box"]} vertical>
|
||||||
@ -107,18 +107,12 @@ const AudioModule = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const SinkPicker = (type: AstalWp.MediaClass) => {
|
const SinkPicker = (type: AstalWp.MediaClass) => {
|
||||||
const devices = bind(wp, "nodes");
|
const devices = bind(wp, "endpoints");
|
||||||
wp.connect("ready", () => {
|
|
||||||
const dev = wp.get_nodes()!
|
|
||||||
for (let i = 0; i < dev.length; i++) {
|
|
||||||
const d = dev[i];
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<box vertical>
|
<box vertical>
|
||||||
<label
|
<label
|
||||||
label={`Available Audio ${type === AstalWp.MediaClass.AUDIO_SINK ? "Output" : type === AstalWp.MediaClass.AUDIO_SOURCE ? "Input" : ""} Devices`}
|
label={`Available Audio ${type === AstalWp.MediaClass.AUDIO_SPEAKER ? "Output" : type === AstalWp.MediaClass.AUDIO_MICROPHONE ? "Input" : ""} Devices`}
|
||||||
cssClasses={[ 'title-2' ]}
|
cssClasses={[ 'title-2' ]}
|
||||||
></label>
|
></label>
|
||||||
<Gtk.Separator marginBottom={5} marginTop={3}></Gtk.Separator>
|
<Gtk.Separator marginBottom={5} marginTop={3}></Gtk.Separator>
|
||||||
@ -134,11 +128,11 @@ const SinkPicker = (type: AstalWp.MediaClass) => {
|
|||||||
if (
|
if (
|
||||||
id ===
|
id ===
|
||||||
(type ===
|
(type ===
|
||||||
AstalWp.MediaClass.AUDIO_SINK
|
AstalWp.MediaClass.AUDIO_SPEAKER
|
||||||
? wp.defaultSpeaker.id
|
? wp.defaultSpeaker.id
|
||||||
: type ===
|
: type ===
|
||||||
AstalWp.MediaClass
|
AstalWp.MediaClass
|
||||||
.AUDIO_SOURCE
|
.AUDIO_MICROPHONE
|
||||||
? wp.defaultMicrophone.id
|
? wp.defaultMicrophone.id
|
||||||
: "")
|
: "")
|
||||||
) {
|
) {
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
|
|
||||||
{devices.as(d => {
|
|
||||||
return d.map(device => {
|
|
||||||
if (device.get_media_class() !== type) {
|
|
||||||
return <box cssClasses={[ 'empty' ]}></box>;
|
|
||||||
}
|
|
||||||
return (
|
|
||||||
<button
|
|
||||||
cssClasses={bind(device, "id").as(id => {
|
|
||||||
if (
|
|
||||||
id ===
|
|
||||||
(type ===
|
|
||||||
AstalWp.MediaClass.AUDIO_SPEAKER
|
|
||||||
? wp.defaultSpeaker.id
|
|
||||||
: type ===
|
|
||||||
AstalWp.MediaClass
|
|
||||||
.AUDIO_MICROPHONE
|
|
||||||
? wp.defaultMicrophone.id
|
|
||||||
: "")
|
|
||||||
) {
|
|
||||||
return [
|
|
||||||
"sink-option",
|
|
||||||
"currently-selected-sink-option",
|
|
||||||
];
|
|
||||||
} else {
|
|
||||||
return ["sink-option"];
|
|
||||||
}
|
|
||||||
})}
|
|
||||||
child={
|
|
||||||
<box halign={Gtk.Align.START}>
|
|
||||||
<image
|
|
||||||
iconName={bind(device, "icon").as(
|
|
||||||
icon => icon,
|
|
||||||
)}
|
|
||||||
marginEnd={3}
|
|
||||||
></image>
|
|
||||||
<label
|
|
||||||
label={bind(
|
|
||||||
device,
|
|
||||||
"description",
|
|
||||||
).as(t => t ?? "")}
|
|
||||||
></label>
|
|
||||||
</box>
|
|
||||||
}
|
|
||||||
onClicked={() => {
|
|
||||||
device.set_is_default(true);
|
|
||||||
}}
|
|
||||||
></button>
|
|
||||||
);
|
|
||||||
});
|
|
||||||
})}
|
|
@ -29,13 +29,11 @@ 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>
|
||||||
);
|
);
|
||||||
@ -45,7 +43,7 @@ const toTime = (time: number) => {
|
|||||||
const MINUTE = 60;
|
const MINUTE = 60;
|
||||||
const HOUR = MINUTE * 60;
|
const HOUR = MINUTE * 60;
|
||||||
|
|
||||||
if (time > 24 * HOUR) return "24h+";
|
if (time > 24 * HOUR) return "";
|
||||||
|
|
||||||
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);
|
||||||
|
@ -4,6 +4,7 @@ import Brightness from "../../../../util/brightness";
|
|||||||
const brightness = Brightness.get_default();
|
const brightness = Brightness.get_default();
|
||||||
|
|
||||||
const BrightnessModule = () => {
|
const BrightnessModule = () => {
|
||||||
|
print( brightness.screen * 100 );
|
||||||
const setBrightness = (value: number) => {
|
const setBrightness = (value: number) => {
|
||||||
brightness.screen = value;
|
brightness.screen = value;
|
||||||
}
|
}
|
||||||
|
@ -135,9 +135,8 @@ const PlayerItem = ({ player }: { player: AstalMpris.Player }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const secondsToFriendlyTime = (time: number) => {
|
const secondsToFriendlyTime = (time: number) => {
|
||||||
const m = Math.floor(time / 60);
|
const minutes = Math.floor(time / 60);
|
||||||
const minutes = Math.floor(m % 60);
|
const hours = Math.floor(minutes / 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)}`;
|
||||||
|
@ -21,7 +21,7 @@ const Bar = ( { gdkmonitor, name }: { gdkmonitor: Gdk.Monitor, name: string } )
|
|||||||
child={
|
child={
|
||||||
<CenterBox
|
<CenterBox
|
||||||
orientation={Gtk.Orientation.HORIZONTAL}
|
orientation={Gtk.Orientation.HORIZONTAL}
|
||||||
startWidget={
|
start_widget={
|
||||||
<box
|
<box
|
||||||
hexpand
|
hexpand
|
||||||
halign={Gtk.Align.START}
|
halign={Gtk.Align.START}
|
||||||
|
@ -2,7 +2,6 @@ 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;
|
||||||
@ -106,10 +105,7 @@ const ActiveWindow = () => {
|
|||||||
focused.as(
|
focused.as(
|
||||||
client =>
|
client =>
|
||||||
client && (
|
client && (
|
||||||
<label
|
<label label={bind(client, "title").as(String)} />
|
||||||
maxWidthChars={70}
|
|
||||||
ellipsize={Pango.EllipsizeMode.END}
|
|
||||||
label={bind(client, "title").as(String)} />
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}></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, "batteryIconName").as(icon => icon)}
|
iconName={bind(battery, "iconName").as(icon => icon)}
|
||||||
cssClasses={["quick-view-symbol"]}
|
cssClasses={["quick-view-symbol"]}
|
||||||
tooltipText={bind(battery, 'percentage').as(p => `Battery Level: ${Math.round(p * 100)}%`)}
|
tooltipText={bind(battery, 'percentage').as(p => `${Math.round(p * 100)}%`)}
|
||||||
></image>
|
></image>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
@ -75,7 +75,7 @@ const SystemInfo = () => {
|
|||||||
<box
|
<box
|
||||||
cssClasses={[ 'quick-view-symbol' ]}
|
cssClasses={[ 'quick-view-symbol' ]}
|
||||||
>
|
>
|
||||||
<image iconName={"memory"}></image>
|
<image iconName={"histogram-symbolic"}></image>
|
||||||
<label label={sysinfo.ramUtil(util => util)}></label>
|
<label label={sysinfo.ramUtil(util => util)}></label>
|
||||||
</box>
|
</box>
|
||||||
<box
|
<box
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
$fg-color: #C8DCFF;
|
$fg-color: #E6E6E6;
|
||||||
$bg-color: #0A0A0F;
|
$bg-color: #141414;
|
||||||
$accent-color: #591641;
|
$accent-color: #591641;
|
||||||
$accent-color-2: #97103A;
|
$accent-color-2: #97103A;
|
||||||
$shadow-color: rgba(0, 0, 2, 0.3);
|
$shadow-color: rgba(40, 40, 40, 0.3);
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
alias ls='ls -l --color'
|
alias ls='ls -l --color'
|
||||||
alias ll='ls -la --color'
|
alias ll='ls -la --color'
|
||||||
alias v='nvim'
|
alias v='nvim'
|
||||||
alias i='vimiv'
|
|
||||||
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='nvim ~/projects/active/nvim/'
|
alias vicfg='cd ~/.config/nvim/ && 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'
|
||||||
@ -17,7 +15,8 @@ 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 cfa='nvim ~/projects/active/dotfiles/config/astal/'
|
alias cfw='nvim ~/projects/archive/dotfiles-old/pc/configs/waybar/'
|
||||||
|
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'
|
||||||
|
@ -16,12 +16,23 @@ general {
|
|||||||
}
|
}
|
||||||
|
|
||||||
listener {
|
listener {
|
||||||
timeout = 300
|
timeout = 100
|
||||||
|
on-timeout = notify-send "Entering idle state... (200s to screen off)"
|
||||||
|
on-resume = notify-send "Welcome back!"
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 200
|
||||||
|
on-timeout = notify-send "100s to screen off"
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 210
|
||||||
on-timeout = hyprlock
|
on-timeout = hyprlock
|
||||||
}
|
}
|
||||||
|
|
||||||
listener {
|
listener {
|
||||||
timeout = 360
|
timeout = 300
|
||||||
on-timeout = hyprctl dispatch dpms off
|
on-timeout = hyprctl dispatch dpms off
|
||||||
on-resume = hyprctl dispatch dpms on
|
on-resume = hyprctl dispatch dpms on
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,9 @@ $mainMod = SUPER
|
|||||||
# These key-binds are non-specific, laptop config has a separate file that includes
|
# These key-binds are non-specific, laptop config has a separate file that includes
|
||||||
# extra config for it specifically
|
# extra config for it specifically
|
||||||
bind = $mainMod, Q, killactive
|
bind = $mainMod, Q, killactive
|
||||||
|
# bind = $mainMod SHIFT, Q, exit
|
||||||
bind = $mainMod, Return, exec, kitty
|
bind = $mainMod, Return, exec, kitty
|
||||||
|
# bind = $mainMod, E, exec, thunar
|
||||||
bind = $mainMod SHIFT, E, exec, thunar
|
bind = $mainMod SHIFT, E, exec, thunar
|
||||||
bind = $mainMod, E, exec, kitty --hold fish -c "y"
|
bind = $mainMod, E, exec, kitty --hold fish -c "y"
|
||||||
bind = $mainMod, V, togglefloating,
|
bind = $mainMod, V, togglefloating,
|
||||||
@ -44,11 +46,13 @@ bind = $mainMod SHIFT, L, exec, librewolf
|
|||||||
bind = $mainMod SHIFT, D, exec, vesktop
|
bind = $mainMod SHIFT, D, exec, vesktop
|
||||||
bind = $mainMod SHIFT, V, exec, vscodium
|
bind = $mainMod SHIFT, V, exec, vscodium
|
||||||
bind = $mainMod SHIFT, T, exec, thunderbird
|
bind = $mainMod SHIFT, T, exec, thunderbird
|
||||||
bind = $mainMod CTRL, H, exec, heroic
|
bind = $mainMod SHIFT, H, exec, heroic
|
||||||
bind = $mainMod SHIFT, Z, exec, zathura
|
bind = $mainMod SHIFT, Z, exec, zathura
|
||||||
bind = $mainMod SHIFT, I, exec, notify-send 'AirPlay video server starting...' --app-name="AirPlay Video" && terminator -e "systemctl start avahi-daemon && sleep 5 && uxplay -n LinuxVideoPlay -nh"
|
bind = $mainMod SHIFT, I, exec, notify-send 'AirPlay video server starting...' --app-name="AirPlay Video" && terminator -e "systemctl start avahi-daemon && sleep 5 && uxplay -n LinuxVideoPlay -nh"
|
||||||
bind = $mainMod SHIFT, A, exec, notify-send 'AirPlay server starting...' --app-name="AirPlay Audio" && terminator -T "hidden-terminator" -e "systemctl start avahi-daemon && shairport-sync -a LinuxPlay"
|
bind = $mainMod SHIFT, A, exec, notify-send 'AirPlay server starting...' --app-name="AirPlay Audio" && terminator -T "hidden-terminator" -e "systemctl start avahi-daemon && shairport-sync -a LinuxPlay"
|
||||||
|
bind = $mainMod SHIFT, G, exec, notify-send 'Preparing system for gaming...' --app-name="Util" && corectrl
|
||||||
bind = $mainMod SHIFT, P, exec, notify-send 'Steam is launching...' --app-name="Steam" && steam
|
bind = $mainMod SHIFT, P, exec, notify-send 'Steam is launching...' --app-name="Steam" && steam
|
||||||
|
bind = $mainMod SHIFT, R, exec, notify-send 'Launching in Remoteplay optimised session' --app-name="Steam" && steam -pipewire
|
||||||
bind = $mainMod CTRL, K, exec, notify-send 'Insta-Kill activated' --app-name="Hyprctl" && hyprctl kill
|
bind = $mainMod CTRL, K, exec, notify-send 'Insta-Kill activated' --app-name="Hyprctl" && hyprctl kill
|
||||||
bind = $mainMod SHIFT, O, exec, terminator -e "~/projects/dotfiles/ai.sh"
|
bind = $mainMod SHIFT, O, exec, terminator -e "~/projects/dotfiles/ai.sh"
|
||||||
|
|
||||||
@ -66,12 +70,12 @@ bind = SHIFT, PRINT, exec, grimblast --notify save screen
|
|||||||
# │ Rofi commands │
|
# │ Rofi commands │
|
||||||
# └ ┘
|
# └ ┘
|
||||||
bind = $mainMod, Space, exec, killall rofi || rofi -show combi -modes combi -combi-modes "window,drun,run"
|
bind = $mainMod, Space, exec, killall rofi || rofi -show combi -modes combi -combi-modes "window,drun,run"
|
||||||
bind = $mainMod SHIFT, H, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy
|
|
||||||
|
|
||||||
# ┌ ┐
|
# ┌ ┐
|
||||||
# │ Logout commands │
|
# │ Logout commands │
|
||||||
# └ ┘
|
# └ ┘
|
||||||
bind = $mainMod, escape, exec, wlogout
|
bind = $mainMod, escape, exec, wlogout
|
||||||
|
bind = $mainMod ALT CTRL, L, exec, hyprlock --immediate
|
||||||
|
|
||||||
|
|
||||||
# ────────────────────────────────────────────────────────────────────
|
# ────────────────────────────────────────────────────────────────────
|
||||||
@ -156,6 +160,8 @@ bind = $mainMod, mouse_up, workspace, e-1
|
|||||||
# │ ALT + Tab / SHIFT + ALT + Tab │
|
# │ ALT + Tab / SHIFT + ALT + Tab │
|
||||||
# └ ┘
|
# └ ┘
|
||||||
bind = ALT SHIFT, tab, cyclenext, prev
|
bind = ALT SHIFT, tab, cyclenext, prev
|
||||||
|
# bind = ALT, tab, cyclenext, next
|
||||||
|
# bind = ALT CTRL, tab, focusurgentorlast
|
||||||
bind = ALT, tab, focusurgentorlast
|
bind = ALT, tab, focusurgentorlast
|
||||||
|
|
||||||
|
|
||||||
@ -175,12 +181,6 @@ bind = $mainMod SHIFT CTRL, left, layoutmsg, orientationprev
|
|||||||
bindm = $mainMod, mouse:272, movewindow
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
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
|
|
||||||
|
|
||||||
|
|
||||||
# ┌ ┐
|
# ┌ ┐
|
||||||
# │ Freeze │
|
# │ Freeze │
|
||||||
@ -199,8 +199,8 @@ bind = ,code:121, exec, pamixer -t
|
|||||||
# ┌ ┐
|
# ┌ ┐
|
||||||
# │ Brightness-Control │
|
# │ Brightness-Control │
|
||||||
# └ ┘
|
# └ ┘
|
||||||
bind = ,code:232, exec, light -U 5
|
bind = ,code:232, exec, light -U 5 && notify-send 'Display brightness decreased by 5%' --app-name="Brightness"
|
||||||
bind = ,code:233, exec, light -A 5
|
bind = ,code:233, exec, light -A 5 && notify-send 'Display brightness increased by 5%' --app-name="Brightness"
|
||||||
|
|
||||||
|
|
||||||
# ┌ ┐
|
# ┌ ┐
|
||||||
|
@ -13,6 +13,6 @@ general {
|
|||||||
|
|
||||||
decoration {
|
decoration {
|
||||||
shadow {
|
shadow {
|
||||||
color = rgb(000002)
|
color = rgb(282828)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,14 +13,11 @@ 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 >> /tmp/runner-log 2>&1"
|
# 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"
|
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/active/dotfiles/config/ags/notifications/ >> ~/logn 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/"
|
||||||
|
|
||||||
# ── wlhist ──────────────────────────────────────────────────────────
|
|
||||||
exec-once = wl-paste --type text --watch cliphist store # Stores only text data
|
|
||||||
exec-once = wl-paste --type image --watch cliphist store # Stores only image data
|
|
||||||
|
|
||||||
|
|
||||||
exec = hyprctl setcursor oreo_spark_blue_cursors 24
|
exec = hyprctl setcursor oreo_spark_blue_cursors 24
|
||||||
@ -50,14 +47,13 @@ input {
|
|||||||
|
|
||||||
focus_on_close = 1
|
focus_on_close = 1
|
||||||
|
|
||||||
sensitivity = 0
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
}
|
}
|
||||||
|
|
||||||
gestures {
|
gestures {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
workspace_swipe = true
|
workspace_swipe = true
|
||||||
workspace_swipe_distance = 200
|
workspace_swipe_distance = 300
|
||||||
workspace_swipe_cancel_ratio = 0.3
|
|
||||||
workspace_swipe_forever = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -67,21 +63,27 @@ gestures {
|
|||||||
# ╰────────────────────────────────────────────────╯
|
# ╰────────────────────────────────────────────────╯
|
||||||
# ────────────────────────────────────────────────────────────────────
|
# ────────────────────────────────────────────────────────────────────
|
||||||
general {
|
general {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
gaps_in = 3
|
gaps_in = 3
|
||||||
gaps_out = 4
|
gaps_out = 4
|
||||||
border_size = 2
|
border_size = 1
|
||||||
|
# col.active_border = rgba(cc5c00ff) rgba(cc5c00ff) rgba(ff0000ff) 45deg
|
||||||
|
# col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
layout = dwindle
|
layout = master
|
||||||
no_border_on_floating = false
|
no_border_on_floating = false
|
||||||
}
|
}
|
||||||
|
|
||||||
decoration {
|
decoration {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
inactive_opacity = 1
|
inactive_opacity = 1
|
||||||
rounding = 10
|
rounding = 10
|
||||||
|
|
||||||
shadow {
|
shadow {
|
||||||
enabled = true
|
enabled = true
|
||||||
range = 4
|
range = 4
|
||||||
|
# color = rgba(1a1a1aee)
|
||||||
}
|
}
|
||||||
|
|
||||||
blur {
|
blur {
|
||||||
@ -98,6 +100,8 @@ decoration {
|
|||||||
animations {
|
animations {
|
||||||
enabled = yes
|
enabled = yes
|
||||||
|
|
||||||
|
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||||
|
|
||||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||||
|
|
||||||
animation = windows, 1, 7, myBezier
|
animation = windows, 1, 7, myBezier
|
||||||
@ -115,11 +119,17 @@ misc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dwindle {
|
dwindle {
|
||||||
pseudotile = true
|
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||||
force_split = 2
|
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||||
preserve_split = true
|
preserve_split = yes # you probably want this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
master {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||||
|
# no_gaps_when_only = true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
cursor {
|
cursor {
|
||||||
no_warps = false
|
no_warps = false
|
||||||
inactive_timeout = 60
|
inactive_timeout = 60
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
#░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
||||||
#░ ░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░
|
|
||||||
#▒ ▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒ ▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒
|
|
||||||
#▒ ▒▒▒▒ ▒ ▒▒▒ ▒ ▒ ▒▒▒ ▒ ▒ ▒▒▒▒ ▒▒▒▒▒ ▒ ▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒ ▒ ▒▒▒ ▒ ▒▒▒▒▒▒▒ ▒▒
|
|
||||||
#▓ ▓▓ ▓ ▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓▓ ▓▓ ▓▓▓ ▓▓ ▓▓ ▓ ▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓ ▓▓ ▓▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓ ▓▓
|
|
||||||
#▓ ▓▓▓▓ ▓▓▓▓ ▓▓▓ ▓▓▓ ▓▓ ▓▓▓▓ ▓ ▓▓▓ ▓▓▓ ▓▓ ▓ ▓▓▓ ▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓ ▓▓▓▓ ▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓ ▓▓▓
|
|
||||||
#▓ ▓▓▓▓ ▓▓▓▓▓ ▓▓▓ ▓ ▓▓▓ ▓▓▓▓ ▓ ▓▓▓ ▓▓▓ ▓▓ ▓ ▓▓▓ ▓▓▓▓▓▓▓▓▓ ▓▓▓ ▓▓ ▓▓ ▓▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓ ▓
|
|
||||||
#█ ████ ████ ████ ██████ ████ ███ █ █ ██ ██ █ ███████████ ██████ █████ ██ ███ ████ █████ █
|
|
||||||
#██████████████ █████ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ██
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# ────────────────────────────────────────────────────────────────────
|
|
||||||
# ╭────────────────────────────────────────────────╮
|
|
||||||
# │ MONITORS │
|
|
||||||
# ╰────────────────────────────────────────────────╯
|
|
||||||
# ────────────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
monitor=eDP-1, disable
|
|
||||||
monitor=,highres highrr, auto, 1
|
|
||||||
|
|
||||||
|
|
||||||
source=./hyprland/binds.conf
|
|
||||||
source=./hyprland/general.conf
|
|
||||||
source=./hyprland/windowrules.conf
|
|
||||||
|
|
||||||
# ┌ ┐
|
|
||||||
# │ LAPTOP │
|
|
||||||
# └ ┘
|
|
||||||
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 = XDG_SESSION_TYPE, wayland
|
|
||||||
env = QT_QPA_PLATFORM,wayland
|
|
||||||
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
|
|
||||||
exec-once = hyprpm reload -nn
|
|
||||||
|
|
||||||
xwayland {
|
|
||||||
force_zero_scaling = true
|
|
||||||
}
|
|
||||||
|
|
||||||
# ── Volume control ──────────────────────────────────────────────────
|
|
||||||
bind = ,code:123, exec, pamixer -i 5
|
|
||||||
bind = ,code:122, exec, pamixer -d 5
|
|
||||||
bind = ,code:121, exec, pamixer -t
|
|
||||||
|
|
||||||
|
|
||||||
# ── Brightness-Control ──────────────────────────────────────────────
|
|
||||||
bind = ,code:232, exec, light -U 5 && notify-send 'Display brightness decreased by 5%'
|
|
||||||
bind = ,code:233, exec, light -A 5 && notify-send 'Display brightness increased by 5%'
|
|
||||||
|
|
||||||
|
|
||||||
# ── Vivado inversion ────────────────────────────────────────────────
|
|
||||||
windowrule = plugin:invertwindow, class:Vivado
|
|
||||||
windowrule = tile, title:(.*)Vivado(.*)
|
|
@ -19,7 +19,7 @@
|
|||||||
# ────────────────────────────────────────────────────────────────────
|
# ────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
monitor=eDP-1, 2880x1800@60, 0x0, 1.5
|
monitor=eDP-1, 2880x1800@60, 0x0, 1.5
|
||||||
monitor=,highres highrr, auto, 1
|
# monitor=,highres highrr, auto, 1
|
||||||
|
|
||||||
|
|
||||||
# exec = swaybg -m fill -i /home/janis/Pictures/arch-bg.png
|
# exec = swaybg -m fill -i /home/janis/Pictures/arch-bg.png
|
||||||
@ -68,8 +68,6 @@ bind = $mainMod CTRL, E, exec, hyprctl keyword monitor HDMI-A-1, 1920x1080@60, 1
|
|||||||
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, 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, P, exec, hyprctl keyword monitor eDP-1, 2880x1800@120, 0x0, 1.5 && cpupower-gui -p && notify-send 'Set to performance optimized 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 ────────────────────────────────────────────────────
|
|
||||||
bind = $mainMod ALT, D, exec, hyprctl keyword monitor eDP-1, disable
|
|
||||||
|
|
||||||
# ── Vivado inversion ────────────────────────────────────────────────
|
# ── Vivado inversion ────────────────────────────────────────────────
|
||||||
windowrule = plugin:invertwindow, class:Vivado
|
windowrule = plugin:invertwindow, class:Vivado
|
||||||
|
@ -18,7 +18,7 @@ general {
|
|||||||
# └ ┘
|
# └ ┘
|
||||||
background {
|
background {
|
||||||
monitor =
|
monitor =
|
||||||
path = /home/janis/NextCloud/Wallpapers/dark/mountains.jpg # Or screenshot
|
path = /home/janis/NextCloud/Wallpapers/dark/colour-splash.jpg # Or screenshot
|
||||||
|
|
||||||
blur_passes = 1
|
blur_passes = 1
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@ font_size 12.0
|
|||||||
# │ Cursor config │
|
# │ Cursor config │
|
||||||
# └ ┘
|
# └ ┘
|
||||||
cursor_trail 1
|
cursor_trail 1
|
||||||
cursor_trail_start_threshold 0
|
|
||||||
|
|
||||||
|
|
||||||
# ┌ ┐
|
# ┌ ┐
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
paths:
|
|
||||||
- /home/janis/projects/active/dotfiles/config/lint/latexfmt.yaml
|
|
@ -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',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
@ -1,702 +1,65 @@
|
|||||||
import vue from 'eslint-plugin-vue';
|
// @ts-check
|
||||||
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';
|
|
||||||
|
|
||||||
const style = {
|
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': {
|
'plugins': {
|
||||||
'@stylistic': stylistic,
|
|
||||||
'@stylistic/js': stylistic,
|
'@stylistic/js': stylistic,
|
||||||
'@stylistic/ts': stylistic,
|
'@stylistic/ts': stylistic,
|
||||||
},
|
},
|
||||||
'files': [
|
|
||||||
'**/*.ts',
|
|
||||||
'**/*.js',
|
|
||||||
'**/*.mjs',
|
|
||||||
'**/*.cjs',
|
|
||||||
'**/*.tsx',
|
|
||||||
'**/*.jsx'
|
|
||||||
],
|
|
||||||
'rules': {
|
'rules': {
|
||||||
// Formatting
|
// Formatting
|
||||||
'@stylistic/array-bracket-newline': [
|
'@stylistic/js/array-bracket-newline': [ 'error', { 'multiline': true, 'minItems': 4 } ],
|
||||||
'error',
|
'@stylistic/js/array-bracket-spacing': [ 'error', 'always' ],
|
||||||
{
|
'@stylistic/js/array-element-newline': [ 'error', { 'multiline': true, 'minItems': 4 } ],
|
||||||
'multiline': true,
|
'@stylistic/js/arrow-parens': [ 'error', 'always' ],
|
||||||
'minItems': 2
|
'@stylistic/js/arrow-spacing': [ 'error', { 'before': true, 'after': true } ],
|
||||||
}
|
'@stylistic/js/block-spacing': [ 'error', 'always' ],
|
||||||
],
|
'@stylistic/js/brace-style': [ 'error', '1tbs' ],
|
||||||
'@stylistic/array-bracket-spacing': [
|
'@stylistic/js/comma-spacing': [ 'error', { 'before': false, 'after': true } ],
|
||||||
'error',
|
'@stylistic/js/comma-style': [ 'error', 'last' ],
|
||||||
'always'
|
'@stylistic/js/dot-location': [ 'error', 'property' ],
|
||||||
],
|
'@stylistic/js/eol-last': [ 'error', 'always' ],
|
||||||
'@stylistic/array-element-newline': [
|
'@stylistic/js/function-call-spacing': [ 'error', 'never' ],
|
||||||
'error',
|
'@stylistic/js/implicit-arrow-linebreak': [ 'error', 'beside' ],
|
||||||
{
|
'@stylistic/js/indent': [ 'error', 4 ],
|
||||||
'multiline': true,
|
'@stylistic/js/key-spacing': [ 'error', { 'beforeColon': false, 'afterColon': true } ],
|
||||||
'minItems': 2
|
'@stylistic/js/keyword-spacing': [ 'error', { 'before': true, 'after': true } ],
|
||||||
}
|
'@stylistic/js/lines-between-class-members': [ 'error', 'always' ],
|
||||||
],
|
'@stylistic/js/new-parens': [ 'error', 'always' ],
|
||||||
'@stylistic/arrow-parens': [
|
'@stylistic/js/no-extra-parens': [ 'error', 'all' ],
|
||||||
'error',
|
'@stylistic/js/no-extra-semi': 'error',
|
||||||
'as-needed'
|
'@stylistic/js/no-floating-decimal': 'error',
|
||||||
],
|
'@stylistic/js/no-mixed-operators': 'error',
|
||||||
'@stylistic/arrow-spacing': [
|
'@stylistic/js/no-mixed-spaces-and-tabs': 'error',
|
||||||
'error',
|
'@stylistic/js/no-multi-spaces': 'error',
|
||||||
{
|
'@stylistic/js/no-trailing-spaces': 'error',
|
||||||
'before': true,
|
'@stylistic/js/no-whitespace-before-property': 'error',
|
||||||
'after': true
|
'@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/block-spacing': [
|
'@stylistic/js/quote-props': [ 'error', 'always' ],
|
||||||
'error',
|
'@stylistic/js/quotes': [ 'error', 'single' ],
|
||||||
'always'
|
'@stylistic/js/rest-spread-spacing': [ 'error', 'never' ],
|
||||||
],
|
'@stylistic/js/semi': [ 'error', 'always' ],
|
||||||
'@stylistic/brace-style': [
|
'@stylistic/js/semi-spacing': [ 'error', { 'before': false, 'after': true } ],
|
||||||
'error',
|
'@stylistic/js/semi-style': [ 'error', 'last' ],
|
||||||
'1tbs'
|
'@stylistic/js/space-before-blocks': [ 'error', 'always' ],
|
||||||
],
|
'@stylistic/js/space-before-function-paren': [ 'error', 'always' ],
|
||||||
'@stylistic/comma-spacing': [
|
'@stylistic/js/space-in-parens': [ 'error', 'always' ],
|
||||||
'error',
|
'@stylistic/js/space-infix-ops': [ 'error', { 'int32Hint': false } ],
|
||||||
{
|
'@stylistic/js/space-unary-ops': 'error',
|
||||||
'before': false,
|
'@stylistic/js/spaced-comment': [ 'error', 'always' ],
|
||||||
'after': true
|
'@stylistic/js/switch-colon-spacing': 'error',
|
||||||
}
|
'@stylistic/js/template-curly-spacing': [ 'error', 'always' ],
|
||||||
],
|
'@stylistic/js/wrap-iife': [ 'error', 'inside' ],
|
||||||
'@stylistic/comma-style': [
|
'@stylistic/js/wrap-regex': 'error',
|
||||||
'error',
|
|
||||||
'last'
|
|
||||||
],
|
|
||||||
'@stylistic/dot-location': [
|
|
||||||
'error',
|
|
||||||
'property'
|
|
||||||
],
|
|
||||||
'@stylistic/eol-last': [
|
|
||||||
'error',
|
|
||||||
'always'
|
|
||||||
],
|
|
||||||
'@stylistic/function-call-spacing': [
|
|
||||||
'error',
|
|
||||||
'never'
|
|
||||||
],
|
|
||||||
'@stylistic/function-paren-newline': [
|
|
||||||
'error',
|
|
||||||
'multiline'
|
|
||||||
],
|
|
||||||
'@stylistic/function-call-argument-newline': [
|
|
||||||
'error',
|
|
||||||
'consistent'
|
|
||||||
],
|
|
||||||
'@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/max-len': [
|
|
||||||
'warn',
|
|
||||||
{
|
|
||||||
'code': 90,
|
|
||||||
'comments': 100,
|
|
||||||
'ignoreComments': false,
|
|
||||||
'ignoreUrls': true,
|
|
||||||
'ignoreStrings': false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
'@stylistic/new-parens': [
|
|
||||||
'error',
|
|
||||||
'always'
|
|
||||||
],
|
|
||||||
'@stylistic/newline-per-chained-call': [ 'error' ],
|
|
||||||
'@stylistic/no-extra-parens': [
|
|
||||||
'error',
|
|
||||||
'all',
|
|
||||||
{
|
|
||||||
'nestedBinaryExpressions': false,
|
|
||||||
'ternaryOperandBinaryExpressions': false,
|
|
||||||
'ignoreJSX': 'multi-line',
|
|
||||||
'nestedConditionalExpressions': false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
'@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-multiple-empty-lines': [
|
|
||||||
'error',
|
|
||||||
{
|
|
||||||
'max': 3,
|
|
||||||
'maxEOF': 2
|
|
||||||
}
|
|
||||||
],
|
|
||||||
'@stylistic/no-tabs': 'error',
|
|
||||||
'@stylistic/no-trailing-spaces': 'error',
|
|
||||||
'@stylistic/no-whitespace-before-property': 'error',
|
|
||||||
'@stylistic/object-curly-newline': [
|
|
||||||
'error',
|
|
||||||
{
|
|
||||||
'multiline': true,
|
|
||||||
'minProperties': 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
'@stylistic/object-curly-spacing': [
|
|
||||||
'error',
|
|
||||||
'always'
|
|
||||||
],
|
|
||||||
'@stylistic/object-property-newline': 'error',
|
|
||||||
'@stylistic/operator-linebreak': [
|
|
||||||
'error',
|
|
||||||
'before'
|
|
||||||
],
|
|
||||||
'@stylistic/one-var-declaration-per-line': 'error',
|
|
||||||
'@stylistic/padded-blocks': [
|
|
||||||
'error',
|
|
||||||
{
|
|
||||||
'blocks': 'never',
|
|
||||||
'classes': 'always',
|
|
||||||
'switches': 'never',
|
|
||||||
}
|
|
||||||
],
|
|
||||||
|
|
||||||
// Padding lines. The most in-depth part of this config
|
|
||||||
'@stylistic/padding-line-between-statements': [
|
|
||||||
'error',
|
|
||||||
// Variables, Constants
|
|
||||||
{
|
|
||||||
'blankLine': 'never',
|
|
||||||
'prev': 'var',
|
|
||||||
'next': 'var'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'never',
|
|
||||||
'prev': 'let',
|
|
||||||
'next': 'let'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'never',
|
|
||||||
'prev': 'const',
|
|
||||||
'next': 'const'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'var',
|
|
||||||
'next': [
|
|
||||||
'block',
|
|
||||||
'block-like',
|
|
||||||
'break',
|
|
||||||
'cjs-export',
|
|
||||||
'cjs-import',
|
|
||||||
'class',
|
|
||||||
'const',
|
|
||||||
'continue',
|
|
||||||
'debugger',
|
|
||||||
'directive',
|
|
||||||
'do',
|
|
||||||
'empty',
|
|
||||||
'export',
|
|
||||||
'expression',
|
|
||||||
'for',
|
|
||||||
'function',
|
|
||||||
'if',
|
|
||||||
'iife',
|
|
||||||
'import',
|
|
||||||
'let',
|
|
||||||
'return',
|
|
||||||
'switch',
|
|
||||||
'throw',
|
|
||||||
'try',
|
|
||||||
'var',
|
|
||||||
'with'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'let',
|
|
||||||
'next': [
|
|
||||||
'block',
|
|
||||||
'block-like',
|
|
||||||
'break',
|
|
||||||
'cjs-export',
|
|
||||||
'cjs-import',
|
|
||||||
'class',
|
|
||||||
'const',
|
|
||||||
'continue',
|
|
||||||
'debugger',
|
|
||||||
'directive',
|
|
||||||
'do',
|
|
||||||
'empty',
|
|
||||||
'export',
|
|
||||||
'expression',
|
|
||||||
'for',
|
|
||||||
'function',
|
|
||||||
'if',
|
|
||||||
'iife',
|
|
||||||
'import',
|
|
||||||
'return',
|
|
||||||
'switch',
|
|
||||||
'throw',
|
|
||||||
'try',
|
|
||||||
'var',
|
|
||||||
'while',
|
|
||||||
'with'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'const',
|
|
||||||
'next': [
|
|
||||||
'block',
|
|
||||||
'block-like',
|
|
||||||
'break',
|
|
||||||
'cjs-export',
|
|
||||||
'cjs-import',
|
|
||||||
'class',
|
|
||||||
'continue',
|
|
||||||
'debugger',
|
|
||||||
'directive',
|
|
||||||
'do',
|
|
||||||
'empty',
|
|
||||||
'export',
|
|
||||||
'expression',
|
|
||||||
'for',
|
|
||||||
'function',
|
|
||||||
'if',
|
|
||||||
'iife',
|
|
||||||
'import',
|
|
||||||
'let',
|
|
||||||
'return',
|
|
||||||
'switch',
|
|
||||||
'throw',
|
|
||||||
'try',
|
|
||||||
'var',
|
|
||||||
'while',
|
|
||||||
'with'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
// Import
|
|
||||||
{
|
|
||||||
'blankLine': 'never',
|
|
||||||
'prev': 'import',
|
|
||||||
'next': 'import'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'never',
|
|
||||||
'prev': 'cjs-import',
|
|
||||||
'next': 'cjs-import'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': [
|
|
||||||
'block',
|
|
||||||
'block-like',
|
|
||||||
'break',
|
|
||||||
'cjs-export',
|
|
||||||
'class',
|
|
||||||
'const',
|
|
||||||
'continue',
|
|
||||||
'debugger',
|
|
||||||
'directive',
|
|
||||||
'do',
|
|
||||||
'empty',
|
|
||||||
'export',
|
|
||||||
'expression',
|
|
||||||
'for',
|
|
||||||
'function',
|
|
||||||
'if',
|
|
||||||
'iife',
|
|
||||||
'let',
|
|
||||||
'return',
|
|
||||||
'switch',
|
|
||||||
'throw',
|
|
||||||
'try',
|
|
||||||
'var',
|
|
||||||
'while',
|
|
||||||
'with'
|
|
||||||
],
|
|
||||||
'next': 'cjs-import'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'cjs-import',
|
|
||||||
'next': [
|
|
||||||
'block',
|
|
||||||
'block-like',
|
|
||||||
'break',
|
|
||||||
'cjs-export',
|
|
||||||
'class',
|
|
||||||
'const',
|
|
||||||
'continue',
|
|
||||||
'debugger',
|
|
||||||
'directive',
|
|
||||||
'do',
|
|
||||||
'empty',
|
|
||||||
'export',
|
|
||||||
'expression',
|
|
||||||
'for',
|
|
||||||
'function',
|
|
||||||
'if',
|
|
||||||
'iife',
|
|
||||||
'let',
|
|
||||||
'return',
|
|
||||||
'switch',
|
|
||||||
'throw',
|
|
||||||
'try',
|
|
||||||
'var',
|
|
||||||
'while',
|
|
||||||
'with'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': [
|
|
||||||
'block',
|
|
||||||
'block-like',
|
|
||||||
'break',
|
|
||||||
'cjs-export',
|
|
||||||
'class',
|
|
||||||
'const',
|
|
||||||
'continue',
|
|
||||||
'debugger',
|
|
||||||
'directive',
|
|
||||||
'do',
|
|
||||||
'empty',
|
|
||||||
'export',
|
|
||||||
'expression',
|
|
||||||
'for',
|
|
||||||
'function',
|
|
||||||
'if',
|
|
||||||
'iife',
|
|
||||||
'let',
|
|
||||||
'return',
|
|
||||||
'switch',
|
|
||||||
'throw',
|
|
||||||
'try',
|
|
||||||
'var',
|
|
||||||
'while',
|
|
||||||
'with'
|
|
||||||
],
|
|
||||||
'next': 'import'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'import',
|
|
||||||
'next': [
|
|
||||||
'block',
|
|
||||||
'block-like',
|
|
||||||
'break',
|
|
||||||
'cjs-export',
|
|
||||||
'class',
|
|
||||||
'const',
|
|
||||||
'continue',
|
|
||||||
'debugger',
|
|
||||||
'directive',
|
|
||||||
'do',
|
|
||||||
'empty',
|
|
||||||
'export',
|
|
||||||
'expression',
|
|
||||||
'for',
|
|
||||||
'function',
|
|
||||||
'if',
|
|
||||||
'iife',
|
|
||||||
'let',
|
|
||||||
'return',
|
|
||||||
'switch',
|
|
||||||
'throw',
|
|
||||||
'try',
|
|
||||||
'var',
|
|
||||||
'while',
|
|
||||||
'with'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
// If
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': '*',
|
|
||||||
'next': 'if'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'if',
|
|
||||||
'next': '*'
|
|
||||||
},
|
|
||||||
// For
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': '*',
|
|
||||||
'next': 'for'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'for',
|
|
||||||
'next': '*'
|
|
||||||
},
|
|
||||||
// While
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': '*',
|
|
||||||
'next': 'while'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'while',
|
|
||||||
'next': '*'
|
|
||||||
},
|
|
||||||
// Functions
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': '*',
|
|
||||||
'next': 'function'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'function',
|
|
||||||
'next': '*'
|
|
||||||
},
|
|
||||||
// Block Statements
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': '*',
|
|
||||||
'next': 'block-like'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'block-like',
|
|
||||||
'next': '*'
|
|
||||||
},
|
|
||||||
// Switch
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': '*',
|
|
||||||
'next': 'switch'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'switch',
|
|
||||||
'next': '*'
|
|
||||||
},
|
|
||||||
// Try-Catch
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': '*',
|
|
||||||
'next': 'try'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'try',
|
|
||||||
'next': '*'
|
|
||||||
},
|
|
||||||
// Throw
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': '*',
|
|
||||||
'next': 'throw'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'throw',
|
|
||||||
'next': '*'
|
|
||||||
},
|
|
||||||
// Return
|
|
||||||
{
|
|
||||||
'blankLine': 'never',
|
|
||||||
'prev': 'return',
|
|
||||||
'next': '*'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': '*',
|
|
||||||
'next': 'return'
|
|
||||||
},
|
|
||||||
// Export
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': '*',
|
|
||||||
'next': 'export'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'export',
|
|
||||||
'next': '*'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': '*',
|
|
||||||
'next': 'cjs-export'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'cjs-export',
|
|
||||||
'next': '*'
|
|
||||||
},
|
|
||||||
// Classes
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': '*',
|
|
||||||
'next': 'class'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'blankLine': 'always',
|
|
||||||
'prev': 'class',
|
|
||||||
'next': '*'
|
|
||||||
},
|
|
||||||
],
|
|
||||||
'@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/template-curly-spacing': [
|
|
||||||
'error',
|
|
||||||
'always'
|
|
||||||
],
|
|
||||||
'@stylistic/switch-colon-spacing': 'error',
|
|
||||||
'@stylistic/wrap-iife': [
|
|
||||||
'error',
|
|
||||||
'inside'
|
|
||||||
],
|
|
||||||
'@stylistic/wrap-regex': 'error',
|
|
||||||
'@stylistic/ts/type-annotation-spacing': 'error',
|
'@stylistic/ts/type-annotation-spacing': 'error',
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
/** @type {import('eslint').Linter.Config} */
|
|
||||||
export default tseslint.config(
|
|
||||||
// Base JavaScript rules
|
|
||||||
eslint.configs.recommended,
|
|
||||||
tseslint.configs.recommended,
|
|
||||||
style,
|
|
||||||
|
|
||||||
// Vue support (including TS and JSX inside SFCs)
|
|
||||||
{
|
|
||||||
'files': [ '**/*.vue' ],
|
|
||||||
'languageOptions': {
|
|
||||||
'sourceType': 'module',
|
|
||||||
'ecmaVersion': 'latest',
|
|
||||||
'globals': globals.browser,
|
|
||||||
'parserOptions': {
|
|
||||||
'parser': tseslint.parser,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
'plugins': {
|
|
||||||
'vue': vue,
|
|
||||||
'@stylistic': stylistic,
|
|
||||||
'@stylistic/js': stylistic,
|
|
||||||
'@stylistic/ts': stylistic,
|
|
||||||
'@typescript-eslint': typescript,
|
|
||||||
},
|
|
||||||
'extends': [
|
|
||||||
eslint.configs.recommended,
|
|
||||||
...vue.configs['flat/recommended']
|
|
||||||
],
|
|
||||||
'rules': {
|
|
||||||
...typescript.configs.recommended.rules,
|
|
||||||
...style.rules,
|
|
||||||
|
|
||||||
// Vue specific rules
|
|
||||||
'@stylistic/indent': 'off',
|
|
||||||
'vue/html-indent': [
|
|
||||||
'error',
|
|
||||||
4
|
|
||||||
],
|
|
||||||
'vue/html-comment-indent': [
|
|
||||||
'error',
|
|
||||||
4
|
|
||||||
],
|
|
||||||
'vue/script-indent': [
|
|
||||||
'error',
|
|
||||||
4,
|
|
||||||
{
|
|
||||||
'baseIndent': 1,
|
|
||||||
'switchCase': 1
|
|
||||||
}
|
}
|
||||||
],
|
|
||||||
'vue/html-self-closing': [
|
|
||||||
'error',
|
|
||||||
{
|
|
||||||
'html': {
|
|
||||||
'void': 'never',
|
|
||||||
'normal': 'never',
|
|
||||||
'component': 'always'
|
|
||||||
},
|
|
||||||
'svg': 'always',
|
|
||||||
'math': 'never'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
'vue/max-attributes-per-line': [
|
|
||||||
'error',
|
|
||||||
{
|
|
||||||
'singleline': 3,
|
|
||||||
'multiline': 1,
|
|
||||||
}
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
@ -1,75 +0,0 @@
|
|||||||
# Use spaces for indent (because f*k tabs)
|
|
||||||
defaultIndent: " "
|
|
||||||
|
|
||||||
# Limit Number of backups
|
|
||||||
maxNumberOfBackups: 3
|
|
||||||
|
|
||||||
indentRules:
|
|
||||||
recall: " "
|
|
||||||
remarks: " "
|
|
||||||
guides: " "
|
|
||||||
properties: " "
|
|
||||||
restrictions: " "
|
|
||||||
limitations: " "
|
|
||||||
terms: " "
|
|
||||||
notation: " "
|
|
||||||
usage: " "
|
|
||||||
task: " "
|
|
||||||
proof: " "
|
|
||||||
general: " "
|
|
||||||
simplebox: " "
|
|
||||||
definition: " "
|
|
||||||
theorem: " "
|
|
||||||
lemma: " "
|
|
||||||
corollary: " "
|
|
||||||
axiom: " "
|
|
||||||
fact: " "
|
|
||||||
proposition: " "
|
|
||||||
example: " "
|
|
||||||
formula: " "
|
|
||||||
conjugation: " "
|
|
||||||
forms: " "
|
|
||||||
|
|
||||||
lookForAlignDelims:
|
|
||||||
tables:
|
|
||||||
delims: 1
|
|
||||||
alignDoubleBackSlash: 1
|
|
||||||
spacesBeforeDoubleBackSlash: 1
|
|
||||||
multiColumnGrouping: 0
|
|
||||||
alignRowsWithoutMaxDelims: 1
|
|
||||||
spacesBeforeAmpersand: 1
|
|
||||||
spacesAfterAmpersand: 1
|
|
||||||
justification: left
|
|
||||||
alignFinalDoubleBackSlash: 0
|
|
||||||
dontMeasure: 0
|
|
||||||
delimiterRegEx: (?<!\\)(&)
|
|
||||||
delimiterJustification: left
|
|
||||||
lookForChildCodeBlocks: 1
|
|
||||||
alignContentAfterDoubleBackSlash: 0
|
|
||||||
spacesAfterDoubleBackSlash: 1
|
|
||||||
|
|
||||||
specialBeginEnd:
|
|
||||||
If:
|
|
||||||
begin: '\\If'
|
|
||||||
middle:
|
|
||||||
- '\\ElsIf'
|
|
||||||
- '\\Else'
|
|
||||||
end: '\\EndIf'
|
|
||||||
lookForThis: 1
|
|
||||||
For:
|
|
||||||
begin: '\\For'
|
|
||||||
end: '\\EndFor'
|
|
||||||
lookForThis: 1
|
|
||||||
Procedure:
|
|
||||||
begin: '\\Procedure'
|
|
||||||
end: '\\EndProcedure'
|
|
||||||
lookForThis: 1
|
|
||||||
Function:
|
|
||||||
begin: '\\Function'
|
|
||||||
end: '\\EndFunction'
|
|
||||||
lookForThis: 1
|
|
||||||
While:
|
|
||||||
begin: '\\While'
|
|
||||||
end: '\\EndWhile'
|
|
||||||
lookForThis: 1
|
|
||||||
specialBeforeCommand: 1
|
|
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"devDependencies": {
|
|
||||||
"@eslint/js": "^9.28.0",
|
|
||||||
"@stylistic/eslint-plugin": "^4.4.1",
|
|
||||||
"eslint-plugin-vue": "^10.2.0",
|
|
||||||
"typescript-eslint": "^8.33.1"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,7 +1,7 @@
|
|||||||
* {
|
* {
|
||||||
background: #0A0A0F;
|
background: #141414;
|
||||||
background-selected: #141419;
|
background-selected: #1E1E1E;
|
||||||
foreground: #C8DCFF;
|
foreground: #E6E6E6;
|
||||||
accent: #591641;
|
accent: #591641;
|
||||||
accent-two: #97103A;
|
accent-two: #97103A;
|
||||||
// border-color: #2D2057;
|
// border-color: #2D2057;
|
||||||
|
@ -7,7 +7,7 @@ window {
|
|||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
font-size: 14pt;
|
font-size: 14pt;
|
||||||
color: #ffffff; /* text */
|
color: #ffffff; /* text */
|
||||||
background-color: rgba(10, 10, 15, 0.5);
|
background-color: rgba(20, 20, 20, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
@ -27,7 +27,7 @@ button:hover {
|
|||||||
|
|
||||||
button:focus {
|
button:focus {
|
||||||
background-color: rgb(151, 16, 58);
|
background-color: rgb(151, 16, 58);
|
||||||
color: rgb(200, 220, 255);
|
color: rgb(230, 230, 230);
|
||||||
}
|
}
|
||||||
|
|
||||||
#lock {
|
#lock {
|
||||||
|
@ -8,24 +8,19 @@ 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", "l", "s" ], run = "cd ~/.local/share", desc = "Go to ~/.local/share" },
|
||||||
{ on = [ "g", "s", "h" ], run = "cd ~/.steam/steam/steamapps/common", desc = "Go to ~/.steam/steam/steamapps/common" },
|
{ 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", "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", "s", "s" ], run = "cd /mnt/secondary/SteamLibrary", desc = "Go to SteamLibrary on main games drive" },
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
[flavor]
|
[flavor]
|
||||||
use = "tokyo-night"
|
use = "vscode-dark-modern"
|
||||||
|
82
gtk-theme/dist/colours.css
vendored
82
gtk-theme/dist/colours.css
vendored
@ -19,13 +19,13 @@
|
|||||||
/*
|
/*
|
||||||
* ── Foreground color, main interface text colour ─────────────────────
|
* ── Foreground color, main interface text colour ─────────────────────
|
||||||
*/
|
*/
|
||||||
@define-color fg #C8DCFF;
|
@define-color fg #E6E6E6;
|
||||||
@define-color fg_rgba_07 rgba(200, 220, 255, 0.7);
|
@define-color fg_rgba_07 rgba(230, 230, 230, 0.7);
|
||||||
@define-color fg_rgba_06 rgba(200, 220, 255, 0.6);
|
@define-color fg_rgba_06 rgba(230, 230, 230, 0.6);
|
||||||
@define-color fg_rgba_05 rgba(200, 220, 255, 0.5);
|
@define-color fg_rgba_05 rgba(230, 230, 230, 0.5);
|
||||||
@define-color fg_rgba_03 rgba(200, 220, 255, 0.3);
|
@define-color fg_rgba_03 rgba(230, 230, 230, 0.3);
|
||||||
@define-color fg_rgba_02 rgba(200, 220, 255, 0.2);
|
@define-color fg_rgba_02 rgba(230, 230, 230, 0.2);
|
||||||
@define-color fg_rgba_01 rgba(200, 220, 255, 0.1);
|
@define-color fg_rgba_01 rgba(230, 230, 230, 0.1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ── Foreground accent, usually brighter or darker than default ───────
|
* ── Foreground accent, usually brighter or darker than default ───────
|
||||||
@ -51,14 +51,14 @@
|
|||||||
/*
|
/*
|
||||||
* ── Accent Gradient ──────────────────────────────────────────────────
|
* ── Accent Gradient ──────────────────────────────────────────────────
|
||||||
*/
|
*/
|
||||||
@define-color accent_gradient_1 #481235;
|
@define-color accent_gradient_1 #390E2A;
|
||||||
@define-color accent_gradient_2 #41102F;
|
@define-color accent_gradient_2 #2E0B21;
|
||||||
@define-color accent_gradient_3 #3A0E2B;
|
@define-color accent_gradient_3 #24091B;
|
||||||
@define-color accent_gradient_4 #350D26;
|
@define-color accent_gradient_4 #1D0715;
|
||||||
@define-color accent_gradient_5 #2F0C23;
|
@define-color accent_gradient_5 #170611;
|
||||||
@define-color accent_gradient_inverse_1 #6E1B50;
|
@define-color accent_gradient_inverse_1 #8B2266;
|
||||||
@define-color accent_gradient_inverse_2 #6E1B50;
|
@define-color accent_gradient_inverse_2 #8B2266;
|
||||||
@define-color accent_gradient_inverse_3 #6E1B50;
|
@define-color accent_gradient_inverse_3 #8B2266;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ── Secondary accent colour ──────────────────────────────────────────
|
* ── Secondary accent colour ──────────────────────────────────────────
|
||||||
@ -97,33 +97,33 @@
|
|||||||
/*
|
/*
|
||||||
* ── Background color, main interface background ──────────────────────
|
* ── Background color, main interface background ──────────────────────
|
||||||
*/
|
*/
|
||||||
@define-color bg #0A0A0F;
|
@define-color bg #141414;
|
||||||
@define-color bg_rgba_07 rgba(10, 10, 15, 0.7);
|
@define-color bg_rgba_07 rgba(20, 20, 20, 0.7);
|
||||||
@define-color bg_rgba_05 rgba(10, 10, 15, 0.5);
|
@define-color bg_rgba_05 rgba(20, 20, 20, 0.5);
|
||||||
@define-color bg_rgba_03 rgba(10, 10, 15, 0.3);
|
@define-color bg_rgba_03 rgba(20, 20, 20, 0.3);
|
||||||
@define-color bg_rgba_02 rgba(10, 10, 15, 0.2);
|
@define-color bg_rgba_02 rgba(20, 20, 20, 0.2);
|
||||||
@define-color bg_rgba_015 rgba(10, 10, 15, 0.15);
|
@define-color bg_rgba_015 rgba(20, 20, 20, 0.15);
|
||||||
@define-color bg_rgba_011 rgba(10, 10, 15, 0.11);
|
@define-color bg_rgba_011 rgba(20, 20, 20, 0.11);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ── Accent background color ──────────────────────────────────────────
|
* ── Accent background color ──────────────────────────────────────────
|
||||||
*/
|
*/
|
||||||
@define-color bg_accent #141419;
|
@define-color bg_accent #1E1E1E;
|
||||||
@define-color bg_accent_rgba_07 rgba(20, 20, 25, 0.7);
|
@define-color bg_accent_rgba_07 rgba(30, 30, 30, 0.7);
|
||||||
@define-color bg_accent_rgba_06 rgba(20, 20, 25, 0.6);
|
@define-color bg_accent_rgba_06 rgba(30, 30, 30, 0.6);
|
||||||
@define-color bg_accent_rgba_05 rgba(20, 20, 25, 0.5);
|
@define-color bg_accent_rgba_05 rgba(30, 30, 30, 0.5);
|
||||||
@define-color bg_accent_rgba_04 rgba(20, 20, 25, 0.4);
|
@define-color bg_accent_rgba_04 rgba(30, 30, 30, 0.4);
|
||||||
@define-color bg_accent_rgba_03 rgba(20, 20, 25, 0.3);
|
@define-color bg_accent_rgba_03 rgba(30, 30, 30, 0.3);
|
||||||
@define-color bg_accent_rgba_02 rgba(20, 20, 25, 0.2);
|
@define-color bg_accent_rgba_02 rgba(30, 30, 30, 0.2);
|
||||||
@define-color bg_accent_rgba_015 rgba(20, 20, 25, 0.15);
|
@define-color bg_accent_rgba_015 rgba(30, 30, 30, 0.15);
|
||||||
@define-color bg_accent_rgba_01 rgba(20, 20, 25, 0.1);
|
@define-color bg_accent_rgba_01 rgba(30, 30, 30, 0.1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ── Tertiary background colour ───────────────────────────────────────
|
* ── Tertiary background colour ───────────────────────────────────────
|
||||||
*/
|
*/
|
||||||
@define-color bg_tertiary #000000;
|
@define-color bg_tertiary #2D2D2D;
|
||||||
@define-color bg_tertiary_rgba_05 rgba(0, 0, 0, 0.5);
|
@define-color bg_tertiary_rgba_05 rgba(45, 45, 45, 0.5);
|
||||||
@define-color bg_tertiary_rgba_02 rgba(0, 0, 0, 0.2);
|
@define-color bg_tertiary_rgba_02 rgba(45, 45, 45, 0.2);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ── Inactive background colour ───────────────────────────────────────
|
* ── Inactive background colour ───────────────────────────────────────
|
||||||
@ -140,10 +140,10 @@
|
|||||||
/*
|
/*
|
||||||
* ── Shadow colours ───────────────────────────────────────────────────
|
* ── Shadow colours ───────────────────────────────────────────────────
|
||||||
*/
|
*/
|
||||||
@define-color shadow #000002;
|
@define-color shadow #282828;
|
||||||
@define-color shadow_rgba_07 rgba(0, 0, 2, 0.7);
|
@define-color shadow_rgba_07 rgba(40, 40, 40, 0.7);
|
||||||
@define-color shadow_rgba_05 rgba(0, 0, 2, 0.5);
|
@define-color shadow_rgba_05 rgba(40, 40, 40, 0.5);
|
||||||
@define-color shadow_rgba_03 rgba(0, 0, 2, 0.3);
|
@define-color shadow_rgba_03 rgba(40, 40, 40, 0.3);
|
||||||
@define-color shadow_rgba_02 rgba(0, 0, 2, 0.2);
|
@define-color shadow_rgba_02 rgba(40, 40, 40, 0.2);
|
||||||
@define-color shadow_rgba_015 rgba(0, 0, 2, 0.15);
|
@define-color shadow_rgba_015 rgba(40, 40, 40, 0.15);
|
||||||
@define-color shadow_rgba_011 rgba(0, 0, 2, 0.11);
|
@define-color shadow_rgba_011 rgba(40, 40, 40, 0.11);
|
||||||
|
13
install
13
install
@ -6,8 +6,9 @@ read -p "Choose the configs to install, Laptop or Desktop (l/D): " platform
|
|||||||
# Packages to be added to install: aylurs-gtk-shell-git, brightnessctl, zoxide, trash-cli, fzf, ouch
|
# Packages to be added to install: aylurs-gtk-shell-git, brightnessctl, zoxide, trash-cli, fzf, ouch
|
||||||
# Install yazi plugins using ya pack -a ndtoan96/ouch and ya pack -a boydaihungst/restore
|
# Install yazi plugins using ya pack -a ndtoan96/ouch and ya pack -a boydaihungst/restore
|
||||||
#
|
#
|
||||||
|
# TODO: get configs from current setup
|
||||||
# Hyprland
|
# Hyprland
|
||||||
yay -S hyprland hypridle hyprfreeze hyprlock plymouth aylurs-gtk-shell-git brightnessctl pulsemixer xdg-desktop-portal-hyprland cliphist
|
yay -S hyprland hypridle hyprfreeze hyprlock plymouth aylurs-gtk-shell-git brightnessctl pulsemixer xdg-desktop-portal-hyprland
|
||||||
|
|
||||||
# Audio, drivers, tools
|
# Audio, drivers, tools
|
||||||
yay -S pipewire pipewire-alsa pipewire-pulse pipewire-jack mesa fish thunar yazi wireplumber grimblast wl-clipboard wget vimiv zoxide trash-cli fzf ouch zathura sensors radeontop lm-sensors
|
yay -S pipewire pipewire-alsa pipewire-pulse pipewire-jack mesa fish thunar yazi wireplumber grimblast wl-clipboard wget vimiv zoxide trash-cli fzf ouch zathura sensors radeontop lm-sensors
|
||||||
@ -20,19 +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 php jdk
|
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
|
||||||
|
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 vscode-css-languageserver vscode-html-languageserver bash-language-server lazygit python-black proselint asmfmt typescript-language-server
|
yay -S neovim lua lua-language-server tree-sitter texlab stylua luarocks jdtls perl julia autojump pyright
|
||||||
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 gdu
|
yay -S okular vlc nextcloud-client p7zip zip unzip gnome-keyring noto-fonts thunderbird pamixer pavucontrol light neofetch bashtop hugo sddm uxplay upower
|
||||||
|
|
||||||
# LaTeX
|
# LaTeX
|
||||||
yay -S texlive biber
|
yay -S texlive biber
|
||||||
|
|
||||||
sudo npm i -g create-vue sitemap-generator-cli
|
|
||||||
|
21
notes.md
21
notes.md
@ -17,14 +17,12 @@
|
|||||||
- [ ] 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
|
||||||
- [x] GTK
|
- [x] GTK
|
||||||
- [x] QT (via environment variable)
|
- [x] QT (via environment variable)
|
||||||
- [x] Librewolf
|
- [x] ~Librewolf~
|
||||||
- [x] Astal
|
- [x] Astal
|
||||||
- [x] Hyprland
|
- [x] Hyprland
|
||||||
- [x] Rofi
|
- [x] Rofi
|
||||||
@ -43,26 +41,23 @@
|
|||||||
- [ ] Read docs
|
- [ ] Read docs
|
||||||
- [ ] battery management
|
- [ ] battery management
|
||||||
- [ ] Programs
|
- [ ] Programs
|
||||||
- [ ] Switch to vimiv (make default and configure)
|
- [ ] New image viewer (eog, vimiv)
|
||||||
- [x] Other pdf reader (maybe -> zathura)
|
- [x] Other pdf reader (maybe -> zathura)
|
||||||
- [x] Maybe TUI archive manager (~felix-rs~, ouch in yazi)
|
- [x] Maybe TUI archive manager (~felix-rs~, ouch in yazi)
|
||||||
- [ ] vimiv
|
|
||||||
- [ ] Configure
|
|
||||||
- [ ] Theme
|
|
||||||
- [ ] Lazygit: Configure
|
- [ ] Lazygit: Configure
|
||||||
- [ ] Nvim (other repo)
|
- [ ] Nvim (other repo)
|
||||||
- [x] Replace notification handler (noice)
|
- [x] Replace notification handler (noice)
|
||||||
- [ ] 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)
|
||||||
- [x] Yazi
|
- [ ] Yazi
|
||||||
- [x] More keybinds
|
- [x] More keybinds
|
||||||
- [x] Configure
|
- [ ] Configure
|
||||||
- [ ] ~Drag and drop support?~
|
- [ ] Drag and drop support?
|
||||||
- [x] Check out plugins
|
- [ ] Check out plugins
|
||||||
- [x] Use as file picker
|
- [x] Use as file picker
|
||||||
- [x] SDDM
|
- [ ] SDDM
|
||||||
- [x] Replace with LightDM or ensure theming works, but prefer replacing, consider greetd + tuigreet
|
- [ ] 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
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
SCRIPT_DIR=$(dirname "$0")
|
|
||||||
|
|
||||||
node "$SCRIPT_DIR/util/auto-renamer/index.js" $@
|
|
@ -1,15 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
cp -f ~/.config/hypr/hyprland_docked.conf ~/.config/hypr/hyprland.conf
|
|
||||||
cp -f ~/.config/rofi/config_desktop.rasi ~/.config/rofi/config.rasi
|
|
||||||
|
|
||||||
echo " ==> Restarting ags... "
|
|
||||||
killall gjs
|
|
||||||
killall ags
|
|
||||||
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 " ==> Done! To revert to normal config, run change-wallpaper"
|
|
@ -4,5 +4,6 @@ SCRIPT_DIR=$(dirname "$0")
|
|||||||
|
|
||||||
cp "$SCRIPT_DIR/../config/lint/eslint.config.mjs" .
|
cp "$SCRIPT_DIR/../config/lint/eslint.config.mjs" .
|
||||||
|
|
||||||
npm i --save-dev @eslint/js typescript-eslint @stylistic/eslint-plugin eslint-plugin-vue
|
# 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
|
||||||
|
|
||||||
|
@ -1,237 +0,0 @@
|
|||||||
const fs = require('fs');
|
|
||||||
const path = require('path');
|
|
||||||
const { argv } = require('process');
|
|
||||||
|
|
||||||
const config = {
|
|
||||||
// replace character of key with value, any character, apart from ['.', '_', '-', ' ']
|
|
||||||
'replace': {
|
|
||||||
'ä': 'ae',
|
|
||||||
'ö': 'oe',
|
|
||||||
'ü': 'ue',
|
|
||||||
',': '-',
|
|
||||||
'&': 'And',
|
|
||||||
},
|
|
||||||
'rules': {
|
|
||||||
'underscore-before-and-after-number': true, // Will not do trailing or leading for filename
|
|
||||||
'enforce-leading-zero': true, // adds a leading zero to any number below 10
|
|
||||||
'camel-case-rules': {
|
|
||||||
'enforce-snake-case-for-filetypes': ['py'], // using underscores
|
|
||||||
'enforce-kebab-case-for-filetypes': ['css', 'html', 'scss', 'tex'], // using hyphens
|
|
||||||
},
|
|
||||||
'file-start-letter': 'lower', // lower, upper, unchanged
|
|
||||||
'directory-start-letter': 'upper', // lower, upper, unchanged
|
|
||||||
'replace-dots-with': '', // will not replace as leading character to not break dotfiles
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Recursively find all files with extension in a directory
|
|
||||||
* @param {string} dir The directory to search. Either absolute or relative path
|
|
||||||
* @param {string} extension The file extension to look for
|
|
||||||
* @param {string[]} ignoreList A list of filenames or directories to ignore
|
|
||||||
* @returns {{ files: string, directories: string }} returns a list of html files with their full path
|
|
||||||
*/
|
|
||||||
const treeWalker = (dir, extension, ignoreList) => {
|
|
||||||
const ls = fs.readdirSync(dir);
|
|
||||||
const fileList = [];
|
|
||||||
const dirList = [];
|
|
||||||
for (let file in ls) {
|
|
||||||
if (fs.statSync(path.join(dir, ls[file])).isDirectory()) {
|
|
||||||
// Filter ignored directories
|
|
||||||
if (ignoreList === undefined || !ignoreList.includes(ls[file])) {
|
|
||||||
const newData = treeWalker(path.join(dir, ls[file]), extension, ignoreList);
|
|
||||||
const newFiles = newData.files;
|
|
||||||
dirList.push( path.join( dir, ls[ file ] ) );
|
|
||||||
for (let dir = 0; dir < newData.directories.length; dir++) {
|
|
||||||
dirList.push( newData.directories[dir] );
|
|
||||||
}
|
|
||||||
for (let file = 0; file < newFiles.length; file++) {
|
|
||||||
fileList.push(newFiles[file]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (extension == '*' || ls[file].includes(extension)) {
|
|
||||||
if (ignoreList === undefined || !ignoreList.includes(ls[file])) {
|
|
||||||
fileList.push(path.join(dir, ls[file]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return { 'files': fileList, 'directories': dirList };
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {string} filename The filename to fix according to the rules
|
|
||||||
* @returns {string} the fixed filename
|
|
||||||
*/
|
|
||||||
const fixName = ( fn, ft ) => {
|
|
||||||
let out = '';
|
|
||||||
const enforceSnake = config.rules['camel-case-rules']['enforce-snake-case-for-filetypes'].includes( ft );
|
|
||||||
const enforceKebab = config.rules['camel-case-rules']['enforce-kebab-case-for-filetypes'].includes( ft );
|
|
||||||
const isDir = ft === 'directory';
|
|
||||||
const startLetter = isDir ? config.rules['directory-start-letter'] : config.rules['file-start-letter'];
|
|
||||||
let nextUpperCase = false;
|
|
||||||
|
|
||||||
for ( let i = 0; i < fn.length; i++ ) {
|
|
||||||
const c = fn[i];
|
|
||||||
|
|
||||||
if ( c == '.' ) {
|
|
||||||
// Rule: Removed after number, allowed elsewhere
|
|
||||||
if ( i > 0 && /[0-9]/.test( fn[ i - 1 ] ) ) {
|
|
||||||
out += config.rules[ 'replace-dots-with' ];
|
|
||||||
} else {
|
|
||||||
out += '.';
|
|
||||||
}
|
|
||||||
} else if ( /[A-Z]/.test( c ) ) {
|
|
||||||
// If we reach a capital letter and enforce either kebab-case or snake_case, we can assume that this is the start of a CamelCase word
|
|
||||||
if ( enforceKebab ) {
|
|
||||||
out += '-' + c.toLowerCase();
|
|
||||||
} else if ( enforceSnake ) {
|
|
||||||
out += '_' + c.toLowerCase();
|
|
||||||
} else {
|
|
||||||
nextUpperCase = false;
|
|
||||||
if ( i == 0 && startLetter === 'lower' ) {
|
|
||||||
out += c.toLowerCase();
|
|
||||||
} else {
|
|
||||||
out += c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if ( c == ' ' ) {
|
|
||||||
// We always replace spaces, the question is just to what
|
|
||||||
if ( enforceKebab ) {
|
|
||||||
out += '-';
|
|
||||||
} else if ( enforceSnake ) {
|
|
||||||
out += '_';
|
|
||||||
} else {
|
|
||||||
nextUpperCase = true;
|
|
||||||
}
|
|
||||||
} else if ( c == '_' ) {
|
|
||||||
// If we are not enforcing snake_case, then replace it
|
|
||||||
if ( !enforceSnake ) {
|
|
||||||
if ( needsUnderscore( i, fn ) ) {
|
|
||||||
out += '_';
|
|
||||||
} else if ( enforceKebab ) {
|
|
||||||
out += '-';
|
|
||||||
} else {
|
|
||||||
nextUpperCase = true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
out += '_'
|
|
||||||
}
|
|
||||||
} else if ( c == '-' ) {
|
|
||||||
// If we are not enforcing kebab-case
|
|
||||||
if ( !enforceKebab ) {
|
|
||||||
if ( enforceSnake ) {
|
|
||||||
out += '_';
|
|
||||||
} else {
|
|
||||||
nextUpperCase = true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
out += '-'
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
let curr = config.replace[ c ] === undefined ? c : config.replace[ c ];
|
|
||||||
if ( config.rules[ 'underscore-before-and-after-number' ] || config.rules['enforce-leading-zero'] ) {
|
|
||||||
if ( /[0-9]/.test( c ) ) {
|
|
||||||
if ( i < fn.length - 1 ) {
|
|
||||||
if ( config.rules['enforce-leading-zero'] ) {
|
|
||||||
const prevIsNumber = i > 0 && /[0-9]/.test( fn[i - 1] );
|
|
||||||
const nextIsNumber = /[0-9]/.test( fn[i + 1] );
|
|
||||||
if ( !nextIsNumber && ( i == 0|| !prevIsNumber ) ) {
|
|
||||||
curr = '0' + curr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( config.rules['underscore-before-and-after-number'] ) {
|
|
||||||
if ( !( /[0-9]/.test( fn[ i + 1 ] ) ) && fn[ i + 1 ] != '_' ) {
|
|
||||||
curr += '_';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if ( config.rules['enforce-leading-zero'] && ( i > 0 && !( /[0-9]/.test( fn[i - 1] ) ) ) ) {
|
|
||||||
curr = '0' + curr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if ( config.rules['underscore-before-and-after-number'] && /[0-9]/.test( fn[ i + 1 ] ) ) {
|
|
||||||
curr += '_';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( nextUpperCase || ( i == 0 && startLetter === 'upper' ) ) {
|
|
||||||
nextUpperCase = false;
|
|
||||||
out += curr.toUpperCase();
|
|
||||||
} else {
|
|
||||||
if ( i == 0 && startLetter === 'upper' ) {
|
|
||||||
out += curr.toUpperCase();
|
|
||||||
} else {
|
|
||||||
out += curr.toLowerCase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
const needsUnderscore = ( i, fn ) => {
|
|
||||||
return ( i > 0 && /[0-9]/.test( fn[ i - 1 ] ) ) || ( i < fn - 1 && /[0-9]/.test( fn[ i + 1 ] ) )
|
|
||||||
}
|
|
||||||
|
|
||||||
const separateDirAndFileAndFiletype = ( filename ) => {
|
|
||||||
const loc = filename.lastIndexOf( '/' ) + 1;
|
|
||||||
let ftl = filename.lastIndexOf( '.' ) + 1;
|
|
||||||
let fn = filename.substring( loc, ftl - 1 );
|
|
||||||
let ft = filename.substring( ftl );
|
|
||||||
if ( fs.statSync( filename ).isDirectory() ) {
|
|
||||||
ftl = filename.length;
|
|
||||||
fn = filename.substring( loc );
|
|
||||||
ft = 'directory';
|
|
||||||
|
|
||||||
}
|
|
||||||
const dir = filename.slice( 0, loc - 1 );
|
|
||||||
return { 'filename': fn, 'dir': dir, 'filetype': ft };
|
|
||||||
}
|
|
||||||
|
|
||||||
const fixDirName = ( directory, top ) => {
|
|
||||||
if ( directory === top ) {
|
|
||||||
return top;
|
|
||||||
}
|
|
||||||
|
|
||||||
const f = separateDirAndFileAndFiletype( directory );
|
|
||||||
return fixDirName( f.dir, top ) + '/' + fixName( f.filename, f.filetype );
|
|
||||||
}
|
|
||||||
|
|
||||||
if (argv[2] == '-h') {
|
|
||||||
console.log('auto-renamer [directory]\n\n=> Recursively rename files in directory');
|
|
||||||
} else if (argv[2] == '-v') {
|
|
||||||
console.log('auto-renamer version 1.0.0, developed by Janis Hutz (development@janishutz.com)');
|
|
||||||
} else {
|
|
||||||
// Recursively add all files in the directory
|
|
||||||
const fp = path.resolve( argv[2] );
|
|
||||||
const list = treeWalker(fp, '*', ['.git', '@girs']);
|
|
||||||
const files = list.files;
|
|
||||||
const directories = list.directories;
|
|
||||||
|
|
||||||
for (let i = 0; i < files.length; i++) {
|
|
||||||
const file = files[i];
|
|
||||||
const f = separateDirAndFileAndFiletype( file );
|
|
||||||
let fixedFile = fixName( f.filename, f.filetype );
|
|
||||||
|
|
||||||
// Rename
|
|
||||||
const fixedPath = f.dir + '/' + fixedFile + '.' + f.filetype;
|
|
||||||
console.log( file + ' -> ' + fixedPath );
|
|
||||||
fs.renameSync( file, fixedPath );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fix directory names after file names. Sort array by decending length
|
|
||||||
directories.sort( ( a, b ) => {
|
|
||||||
return b.length - a.length;
|
|
||||||
} );
|
|
||||||
|
|
||||||
// separate directories up until we reach the path of dir started in
|
|
||||||
for (let i = 0; i < directories.length; i++) {
|
|
||||||
const dir = directories[i];
|
|
||||||
const fixed = fixDirName( dir, fp );
|
|
||||||
console.log( dir + ' -> ' + fixed );
|
|
||||||
fs.renameSync( dir, fixDirName( dir, fp ) );
|
|
||||||
}
|
|
||||||
}
|
|
36
setup
36
setup
@ -23,7 +23,7 @@ echo "
|
|||||||
|
|
||||||
"
|
"
|
||||||
|
|
||||||
trap 'echo -e "\nCaught Ctrl+C, exiting..."; exit 130' SIGINT
|
trap 'echo -e "\nCaught Ctrl+C, exiting..."; exit 1' SIGINT
|
||||||
|
|
||||||
# Read platform to install on (only if no platform file present in ~/.config/)
|
# Read platform to install on (only if no platform file present in ~/.config/)
|
||||||
platform=""
|
platform=""
|
||||||
@ -39,7 +39,7 @@ platform=$(echo "$platform" | tr '[:upper:]' '[:lower:]')
|
|||||||
# Get user preference for regenerating the styling
|
# Get user preference for regenerating the styling
|
||||||
regen=""
|
regen=""
|
||||||
read -p "Would you like to regenerate styling? (y/N) " regen
|
read -p "Would you like to regenerate styling? (y/N) " regen
|
||||||
if [[ "$regen" == "y" ]]; then
|
if [ $regen == "y" ]; then
|
||||||
cd build
|
cd build
|
||||||
node build.js
|
node build.js
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
@ -59,12 +59,16 @@ cp -r ./config/rofi ~/.config/
|
|||||||
# Depending on platform, remove one or the other config and rename remaining one
|
# Depending on platform, remove one or the other config and rename remaining one
|
||||||
if [[ "$platform" == "d" ]]; then
|
if [[ "$platform" == "d" ]]; then
|
||||||
echo "Running on desktop"
|
echo "Running on desktop"
|
||||||
cp -f ~/.config/hypr/hyprland_desktop.conf ~/.config/hypr/hyprland.conf
|
mv ~/.config/hypr/hyprland_desktop.conf ~/.config/hypr/hyprland.conf
|
||||||
cp -f ~/.config/rofi/config_desktop.rasi ~/.config/rofi/config.rasi
|
rm ~/.config/hypr/hyprland_*
|
||||||
|
mv ~/.config/rofi/config_desktop.rasi ~/.config/rofi/config.rasi
|
||||||
|
rm ~/.config/rofi/config_*
|
||||||
else
|
else
|
||||||
echo "Running on laptop"
|
echo "Running on laptop"
|
||||||
cp -f ~/.config/hypr/hyprland_laptop.conf ~/.config/hypr/hyprland.conf
|
mv ~/.config/hypr/hyprland_laptop.conf ~/.config/hypr/hyprland.conf
|
||||||
cp -f ~/.config/rofi/config_laptop.rasi ~/.config/rofi/config.rasi
|
rm ~/.config/hypr/hyprland_*
|
||||||
|
mv ~/.config/rofi/config_laptop.rasi ~/.config/rofi/config.rasi
|
||||||
|
rm ~/.config/rofi/config_*
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp -r ./config/kitty ~/.config/
|
cp -r ./config/kitty ~/.config/
|
||||||
@ -75,13 +79,12 @@ cp -r ./config/Thunar ~/.config/
|
|||||||
cp -r ./config/wlogout/ ~/.config/
|
cp -r ./config/wlogout/ ~/.config/
|
||||||
cp -r ./config/yazi ~/.config/
|
cp -r ./config/yazi ~/.config/
|
||||||
cp -r ./config/zathura ~/.config/
|
cp -r ./config/zathura ~/.config/
|
||||||
cp ./config/lint/.indentconfig.yaml ~
|
|
||||||
|
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
=> Installing yazi plugins
|
=> Installing yazi plugins
|
||||||
"
|
"
|
||||||
ya pkg upgrade
|
ya pack -i
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
=> Installing GTK Theme
|
=> Installing GTK Theme
|
||||||
@ -97,16 +100,13 @@ 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
|
||||||
killall gjs
|
# sleep 1
|
||||||
killall ags
|
# ags run -d ./config/astal --gtk4 & disown 2>&1 > /dev/null
|
||||||
sleep 5
|
# ags run -d ./config/ags/notifications/ & disown 2>&1 > /dev/null
|
||||||
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