[manual] add dotfiles + install script
This commit is contained in:
commit
04d7e79f51
14 changed files with 955 additions and 0 deletions
209
.config/ags/config.js
Normal file
209
.config/ags/config.js
Normal file
|
@ -0,0 +1,209 @@
|
|||
/* Imports */
|
||||
const { query } = await Service.import("applications")
|
||||
const hyprland = await Service.import('hyprland')
|
||||
|
||||
/* Icons */
|
||||
const search_icon = Widget.Icon({
|
||||
size : 30,
|
||||
className : 'search-icon',
|
||||
icon : '/home/hex/.config/ags/search.svg'
|
||||
})
|
||||
|
||||
/* Polls/Variables */
|
||||
const date_poller = Variable("", {
|
||||
poll : [ 1000, 'date "+%H:%M:%S %b %e."' ],
|
||||
})
|
||||
|
||||
/* Array storing all application results */
|
||||
let apps = []
|
||||
|
||||
let Application = (app) => {
|
||||
return Widget.Button({
|
||||
child: Widget.Box({
|
||||
children: [
|
||||
Widget.Icon({
|
||||
icon: app.icon_name || "",
|
||||
size: 16,
|
||||
className: "app-icon",
|
||||
}),
|
||||
Widget.Label({
|
||||
className: "app-name",
|
||||
label: app.name,
|
||||
xalign: 0,
|
||||
justification: 'left',
|
||||
truncate: 'end',
|
||||
wrap: true,
|
||||
})
|
||||
]
|
||||
}),
|
||||
className: 'app',
|
||||
onClicked: () => {
|
||||
App.closeWindow("search-window");
|
||||
app.launch()
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
let app_container = Widget.Box({
|
||||
classNames: ['app-container'],
|
||||
vertical: true,
|
||||
visible: false,
|
||||
})
|
||||
|
||||
const search_entry = Widget.Entry({
|
||||
placeholder_text : 'Search for an application...',
|
||||
visibility : true,
|
||||
className : 'search-entry',
|
||||
onChange : ({text}) => {
|
||||
apps = query(text).map(Application);
|
||||
|
||||
/* Add first 10 results to container */
|
||||
app_container.children = apps.slice(0, 10);
|
||||
},
|
||||
onAccept : () => {
|
||||
apps[0].launch()
|
||||
App.closeWindow('search-window');
|
||||
},
|
||||
})
|
||||
|
||||
// labels
|
||||
const date_label = () => Widget.Label({
|
||||
hpack : 'end',
|
||||
'justification' : 'right',
|
||||
className : 'bar-date',
|
||||
label : date_poller.bind()
|
||||
})
|
||||
|
||||
// utils
|
||||
const dispatch = ws => hyprland.messageAsync(`dispatch workspace ${ws}`);
|
||||
|
||||
let workspace_buttons = () => Array.from({ length: 10 }, (_, i) => i + 1).map(i => Widget.Button({
|
||||
className: 'wp-btn',
|
||||
attribute: i,
|
||||
label: `${i}`,
|
||||
onClicked: () => dispatch(i),
|
||||
}))
|
||||
|
||||
const Workspaces = () => Widget.EventBox({
|
||||
onScrollUp: () => dispatch('+1'),
|
||||
onScrollDown: () => dispatch('-1'),
|
||||
child: Widget.Box({
|
||||
children: workspace_buttons(),
|
||||
|
||||
// remove this setup hook if you want fixed number of buttons
|
||||
setup: self => self.hook(hyprland, () => self.children.forEach(btn => {
|
||||
btn.visible = hyprland.workspaces.some(ws => ws.id === btn.attribute);
|
||||
let active_wp = hyprland.active.workspace.id
|
||||
if(btn.attribute == active_wp) {
|
||||
btn.toggleClassName('wp-btn-focused', true)
|
||||
btn.toggleClassName('wp-btn-normal', false)
|
||||
} else {
|
||||
btn.toggleClassName('wp-btn-focused', false)
|
||||
btn.toggleClassName('wp-btn-normal', true)
|
||||
}
|
||||
}))
|
||||
}),
|
||||
})
|
||||
|
||||
const right_bar_box = () => Widget.Box({
|
||||
className : 'bar-rightbox',
|
||||
children : [ date_label() ],
|
||||
hpack : "end",
|
||||
spacing : 8,
|
||||
})
|
||||
|
||||
const center_bar_box = () => Widget.Box({
|
||||
children : [],
|
||||
className: 'center-container'
|
||||
})
|
||||
|
||||
const left_bar_box = () => Widget.Box({
|
||||
className : 'bar-leftbox',
|
||||
hpack : "start",
|
||||
children: [Workspaces(), Widget.Box({
|
||||
className: 'title-box',
|
||||
vertical: true,
|
||||
children: [
|
||||
Widget.Label({
|
||||
xalign: '0',
|
||||
className: 't-class'
|
||||
}),
|
||||
Widget.Label({
|
||||
className: 't-title'
|
||||
})
|
||||
],
|
||||
setup: self => self.hook(hyprland.active.client, self => {
|
||||
let client = hyprland.active.client;
|
||||
self.children[0].label = `${client.class}`
|
||||
self.children[1].label = client.title
|
||||
})
|
||||
|
||||
})],
|
||||
spacing : 8,
|
||||
})
|
||||
|
||||
const searchBox = Widget.Box({
|
||||
className : 'search-box',
|
||||
children : [ search_icon, search_entry ],
|
||||
})
|
||||
/*
|
||||
const itemBox = Widget.Box({
|
||||
className: 'item-box',
|
||||
vertical: true,
|
||||
})
|
||||
*/
|
||||
const mainAppBox = Widget.Box({
|
||||
vpack: 'start',
|
||||
className : 'main-app-box',
|
||||
vertical: true,
|
||||
children : [ searchBox, app_container ],
|
||||
})
|
||||
|
||||
// Gtk Windows
|
||||
|
||||
const search = Widget.Window({
|
||||
vexpand: true,
|
||||
vpack: 'end',
|
||||
name : 'search-window',
|
||||
className : 'search-window',
|
||||
child : mainAppBox,
|
||||
keymode : "exclusive",
|
||||
})
|
||||
|
||||
search.on("key-press-event", (self, event) => {
|
||||
if(event.get_keyval()[1] == 65307){
|
||||
App.closeWindow('search-window');
|
||||
}
|
||||
})
|
||||
|
||||
let commonMargin = 10
|
||||
|
||||
const bar = (monitors = 2) => {
|
||||
let bars = [];
|
||||
for (let i = 0; i < monitors; i++) {
|
||||
bars.push(Widget.Window({
|
||||
exclusivity : 'exclusive',
|
||||
name : `bar-window-${i}`,
|
||||
className : 'bar-window',
|
||||
margins: [commonMargin,commonMargin,commonMargin,commonMargin],
|
||||
anchor : [ 'top', 'left', 'right' ],
|
||||
monitor: i,
|
||||
child : Widget.CenterBox({
|
||||
className : 'bar-mainbox',
|
||||
start_widget : left_bar_box(),
|
||||
center_widget : center_bar_box(),
|
||||
end_widget : right_bar_box(),
|
||||
}),
|
||||
}))
|
||||
}
|
||||
return bars;
|
||||
}
|
||||
|
||||
// main Gtk App
|
||||
App.config({
|
||||
style : '/home/hex/.config/ags/style.css',
|
||||
windows : [ search, ...bar(1) ],
|
||||
})
|
||||
|
||||
// close search window by default
|
||||
App.closeWindow('search-window');
|
6
.config/ags/search.svg
Normal file
6
.config/ags/search.svg
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path opacity="0" d="M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z" fill="#ffffff"/>
|
||||
<path d="M15 15L21 21" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z" stroke="#ffffff" stroke-width="2"/>
|
||||
</svg>
|
After Width: | Height: | Size: 645 B |
99
.config/ags/style.css
Normal file
99
.config/ags/style.css
Normal file
|
@ -0,0 +1,99 @@
|
|||
.search-entry {
|
||||
min-width: 600px;
|
||||
min-height: 60px;
|
||||
font-family: 'Jetbrains Mono';
|
||||
font-weight: 300;
|
||||
font-size: 20px;
|
||||
color:white;
|
||||
background: none;
|
||||
border-radius: 20px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
.search-icon {
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
entry {
|
||||
all: unset;
|
||||
border-color: black;
|
||||
}
|
||||
|
||||
.search-window, .search-box {
|
||||
background-color: rgba(10,10,10, 1);
|
||||
border-top-left-radius: 20px;
|
||||
border-top-right-radius: 20px;
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
.app-icon {
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
.bar-date {
|
||||
padding-right: 8px;
|
||||
}
|
||||
.bar-mainbox {
|
||||
min-height: 25px;
|
||||
}
|
||||
.app:focus {
|
||||
font-weight: bold;
|
||||
border: none;
|
||||
outline: none;
|
||||
background-color: rgba(12,62,117, 1);
|
||||
}
|
||||
|
||||
window {
|
||||
font-family: 'Jetbrains Mono';
|
||||
}
|
||||
|
||||
.t-class {
|
||||
font-size: 12px;
|
||||
margin: 0;
|
||||
padding-left: 5px;
|
||||
}
|
||||
.t-title {
|
||||
font-size: 10px;
|
||||
margin: 0;
|
||||
opacity: 0.5;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.app-container {
|
||||
font-family: 'Jetbrains Mono';
|
||||
padding: 10px;
|
||||
border-bottom-right-radius: 20px;
|
||||
border-bottom-left-radius: 20px;
|
||||
}
|
||||
|
||||
.app {
|
||||
outline: none;
|
||||
border-radius: 5px;
|
||||
transition: none;
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.bar-window {
|
||||
background-color: rgba(46,52,64,1);
|
||||
border-radius: 3px;
|
||||
color: white;
|
||||
font-family: 'Jetbrains Mono';
|
||||
/*background-color: rgba(0,0,0,0.9);*/
|
||||
}
|
||||
|
||||
.wp-btn {
|
||||
background: none;
|
||||
outline: none;
|
||||
color: white;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.wp-btn-normal {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
.wp-btn-focused {
|
||||
opacity: 1;
|
||||
}
|
85
.config/dots/install.sh
Executable file
85
.config/dots/install.sh
Executable file
|
@ -0,0 +1,85 @@
|
|||
#!/bin/bash
|
||||
|
||||
# for killing process while in func scope
|
||||
trap "exit 1" TERM
|
||||
export SCRIPT_PID=$$
|
||||
|
||||
export DEPS=("Hyprland" "foot" "hyprpaper" "ags" "nvim" "zsh" "udevadm")
|
||||
|
||||
# for doas users
|
||||
export AS_ROOT="sudo"
|
||||
|
||||
check_omz() {
|
||||
if [ -e "~/.oh-my-zsh" ]; then
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_deps() {
|
||||
notify "checking dependencies..."
|
||||
arr_elem=$(echo "${#DEPS[@]}-1" | bc)
|
||||
for i in $(seq 0 $arr_elem)
|
||||
do
|
||||
DEP=${DEPS[i]}
|
||||
if ! type "$DEP" > /dev/null; then
|
||||
err "dependency $DEP not found."
|
||||
fi
|
||||
done
|
||||
check_omz || err "dependency oh-my-zsh not found."
|
||||
notify "all dependencies have been met."
|
||||
}
|
||||
|
||||
install_backlight_rule() {
|
||||
if [[ -e "/etc/udev/rules.d/backlight.rules" ]]; then
|
||||
warn "backlight rules have already been installed, skipping..."
|
||||
return
|
||||
fi
|
||||
notify "installing backlight rule..."
|
||||
RULE='ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chgrp video $sys$devpath/brightness",RUN+="/bin/chmod g+w $sys$devpath/brightness"'
|
||||
$AS_ROOT usermod -a -G video $USER || err "failed to add user to video group"
|
||||
echo $RULE | sudo tee /etc/udev/rules.d/backlight.rules >> /dev/null || err "failed to write udev rule"
|
||||
notify "installed backlight rule."
|
||||
}
|
||||
|
||||
kill_err(){
|
||||
kill -s TERM $SCRIPT_PID
|
||||
}
|
||||
|
||||
notify() {
|
||||
echo -e "[note] $1"
|
||||
}
|
||||
|
||||
err() {
|
||||
echo -e "[fail] $1"
|
||||
kill_err
|
||||
}
|
||||
|
||||
warn() {
|
||||
echo -e "[warn] $1"
|
||||
}
|
||||
|
||||
set_machine_type () {
|
||||
if [[ -e "$HOME/.config/dots/laptop" ]] || [[ -e "$HOME/.config/dots/desktop" ]]; then
|
||||
warn "machine type has already been set, skipping..."
|
||||
return
|
||||
fi
|
||||
|
||||
notify "are you on a laptop or a desktop? (laptop/desktop) "
|
||||
read MACHINE_TYPE
|
||||
|
||||
if [[ "$MACHINE_TYPE" != "laptop" && "$MACHINE_TYPE" != "desktop" ]]; then
|
||||
err "invalid machine type."
|
||||
fi
|
||||
|
||||
touch ~/.config/dots/$MACHINE_TYPE
|
||||
}
|
||||
|
||||
main() {
|
||||
notify "hello there!"
|
||||
check_deps
|
||||
set_machine_type
|
||||
install_backlight_rule
|
||||
notify "everything has been installed successfully, enjoy!"
|
||||
}
|
||||
|
||||
main
|
11
.config/fontconfig/fonts.conf
Normal file
11
.config/fontconfig/fonts.conf
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version='1.0'?>
|
||||
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
|
||||
<fontconfig>
|
||||
<alias>
|
||||
<family>terminal-font</family>
|
||||
<prefer>
|
||||
<family>JetBrains Mono</family>
|
||||
<family>Noto Color Emoji</family>
|
||||
</prefer>
|
||||
</alias>
|
||||
</fontconfig>
|
56
.config/foot/foot.ini
Normal file
56
.config/foot/foot.ini
Normal file
|
@ -0,0 +1,56 @@
|
|||
font=JetBrainsMono Nerd Font:size=10
|
||||
pad = 0x0
|
||||
|
||||
[cursor]
|
||||
style=beam
|
||||
|
||||
#[colors]
|
||||
#alpha=0.5
|
||||
#background=000000
|
||||
|
||||
# NORD THEME
|
||||
# -*- conf -*-
|
||||
# theme: Nord
|
||||
# author: Arctic Ice Studio <development@arcticicestudio.com>, Sven Greb <code@svengreb.de>
|
||||
# description: „Nord“ — An arctic, north-bluish color palette
|
||||
#
|
||||
# this specific foot theme is based on nord-alacritty:
|
||||
# https://github.com/arcticicestudio/nord-alacritty/blob/develop/src/nord.yml
|
||||
|
||||
[cursor]
|
||||
color = 2e3440 d8dee9
|
||||
[colors]
|
||||
alpha=0.7
|
||||
foreground = d8dee9
|
||||
background = 2e3440
|
||||
|
||||
# selection-foreground = d8dee9
|
||||
# selection-background = 4c566a
|
||||
|
||||
regular0 = 3b4252
|
||||
regular1 = bf616a
|
||||
regular2 = a3be8c
|
||||
regular3 = ebcb8b
|
||||
regular4 = 81a1c1
|
||||
regular5 = b48ead
|
||||
regular6 = 88c0d0
|
||||
regular7 = e5e9f0
|
||||
|
||||
bright0 = 4c566a
|
||||
bright1 = bf616a
|
||||
bright2 = a3be8c
|
||||
bright3 = ebcb8b
|
||||
bright4 = 81a1c1
|
||||
bright5 = b48ead
|
||||
bright6 = 8fbcbb
|
||||
bright7 = eceff4
|
||||
|
||||
dim0 = 373e4d
|
||||
dim1 = 94545d
|
||||
dim2 = 809575
|
||||
dim3 = b29e75
|
||||
dim4 = 68809a
|
||||
dim5 = 8c738c
|
||||
dim6 = 6d96a5
|
||||
dim7 = aeb3bb
|
||||
|
3
.config/gtk-3.0/settings.ini
Normal file
3
.config/gtk-3.0/settings.ini
Normal file
|
@ -0,0 +1,3 @@
|
|||
[Settings]
|
||||
gtk-application-prefer-dark-theme = true
|
||||
gtk-key-theme-name = "Adwaita-dark"
|
186
.config/hypr/hyprland.conf
Normal file
186
.config/hypr/hyprland.conf
Normal file
|
@ -0,0 +1,186 @@
|
|||
# Based on the default config
|
||||
|
||||
# Start AGS daemon
|
||||
exec="killall ags;ags"
|
||||
|
||||
# Start hyprpaper
|
||||
exec-once=hyprpaper
|
||||
|
||||
# Start Pipewire daemon
|
||||
exec-once=gentoo-pipewire-launcher
|
||||
|
||||
# Terminal Daemon
|
||||
exec-once=foot --server
|
||||
|
||||
# Monitor Setup
|
||||
exec=~/.config/hypr/monitor.sh
|
||||
#monitor=eDP-1,1920x1080@59.94100,0x0,1
|
||||
#monitor=HDMI-A-3,1680x1050@59.88300,1920x0,1
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = footclient
|
||||
$fileManager = dolphin
|
||||
$menu = ags -t 'search-window'
|
||||
|
||||
# Some default env vars.
|
||||
env = XCURSOR_SIZE,24
|
||||
env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that
|
||||
|
||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
||||
input {
|
||||
kb_layout = us
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
touchpad {
|
||||
natural_scroll = no
|
||||
}
|
||||
|
||||
sensitivity = 0 # -1.0 to 1.0, 0 means no modification.
|
||||
}
|
||||
|
||||
general {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
gaps_in = 5
|
||||
gaps_out = 0,10,20,10
|
||||
border_size = 1
|
||||
col.active_border = rgb(81a1c1)
|
||||
col.inactive_border = rgb(595959)
|
||||
|
||||
layout = dwindle
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
}
|
||||
|
||||
decoration {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
rounding = 5
|
||||
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
}
|
||||
|
||||
drop_shadow = yes
|
||||
shadow_range = 2
|
||||
shadow_render_power = 10
|
||||
col.shadow = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
animations {
|
||||
enabled = yes
|
||||
|
||||
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||
|
||||
animation = windows, 1, 7, myBezier
|
||||
animation = windowsOut, 1, 7, default, popin 80%
|
||||
animation = border, 1, 10, default
|
||||
animation = borderangle, 1, 8, default
|
||||
animation = fade, 1, 7, default
|
||||
animation = workspaces, 1, 6, default
|
||||
}
|
||||
|
||||
dwindle {
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = yes # you probably want this
|
||||
}
|
||||
|
||||
master {
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
}
|
||||
|
||||
gestures {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
workspace_swipe = off
|
||||
}
|
||||
|
||||
misc {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
}
|
||||
|
||||
# Example windowrule v1
|
||||
# windowrule = float, ^(kitty)$
|
||||
# Example windowrule v2
|
||||
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
#windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
|
||||
windowrulev2 = float,class:^(footclient)$
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
$mainMod = SUPER
|
||||
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
bind = $mainMod, Return, exec, $terminal
|
||||
bind = $mainMod, Q, killactive,
|
||||
bind = $mainMod_SHIFT, E, exit,
|
||||
bind = $mainMod, E, exec, $fileManager
|
||||
bind = $mainMod, Space, togglefloating,
|
||||
bind = $mainMod, D, exec, $menu
|
||||
bind = $mainMod, P, pseudo, # dwindle
|
||||
bind = $mainMod, J, togglesplit, # dwindle
|
||||
bind = $mainMod, Print, exec, hyprshot -m output --clipboard-only
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, left, movefocus, l
|
||||
bind = $mainMod, right, movefocus, r
|
||||
bind = $mainMod, up, movefocus, u
|
||||
bind = $mainMod, down, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
bind = $mainMod, 3, workspace, 3
|
||||
bind = $mainMod, 4, workspace, 4
|
||||
bind = $mainMod, 5, workspace, 5
|
||||
bind = $mainMod, 6, workspace, 6
|
||||
bind = $mainMod, 7, workspace, 7
|
||||
bind = $mainMod, 8, workspace, 8
|
||||
bind = $mainMod, 9, workspace, 9
|
||||
bind = $mainMod, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
bind = $mainMod, S, togglespecialworkspace, magic
|
||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# App Launcher Anim Fix
|
||||
layerrule = noanim, search-window
|
||||
|
||||
# Force Wayland
|
||||
env = QT_QPA_PLATFORM,wayland
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
bind = CTRL, ALT_L, submap, passthrough
|
||||
submap = passthrough
|
||||
bind = CTRL, ALT_L, submap, reset
|
||||
submap = reset
|
2
.config/hypr/hyprpaper.conf
Normal file
2
.config/hypr/hyprpaper.conf
Normal file
|
@ -0,0 +1,2 @@
|
|||
preload = /home/hex/wallpaper.jpg
|
||||
wallpaper = eDP-1,/home/hex/wallpaper.jpg
|
13
.config/hypr/monitor.sh
Executable file
13
.config/hypr/monitor.sh
Executable file
|
@ -0,0 +1,13 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Laptop configuration
|
||||
LAPTOP=~/.config/dots/laptop
|
||||
if [ -e "$LAPTOP" ]; then
|
||||
#hyprctl keyword monitor eDP-1,1920x1080@59.94100,0x0,1
|
||||
hyprctl keyword monitor eDP-1,highrr,0x0,1,vrr,1
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Desktop configuration
|
||||
hyprctl keyword monitor DVI-D-0,1920x1080@60,0x0,1
|
||||
hyprctl keyword monitor HDMI-A-3,1680x1050@59.88300,1920x0,1
|
240
.config/nvim/init.lua
Normal file
240
.config/nvim/init.lua
Normal file
|
@ -0,0 +1,240 @@
|
|||
-- path to lazyvim dir
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
|
||||
-- install lazynvim
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
vim.fn.system({
|
||||
"git",
|
||||
"clone",
|
||||
"--filter=blob:none",
|
||||
"https://github.com/folke/lazy.nvim.git",
|
||||
"--branch=stable", -- latest stable release
|
||||
lazypath,
|
||||
})
|
||||
end
|
||||
|
||||
-- formatting
|
||||
vim.opt.tabstop = 2
|
||||
vim.opt.shiftwidth = 2
|
||||
vim.opt.expandtab = true
|
||||
vim.bo.softtabstop = 2
|
||||
vim.opt.termguicolors = true
|
||||
|
||||
-- stuff
|
||||
vim.g.loaded_netrw = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
|
||||
-- add lazypath
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
-- redirects
|
||||
local keymap = vim.keymap.set
|
||||
|
||||
-- tree toggle
|
||||
local tree_open = false
|
||||
function treetoggle()
|
||||
local c = vim.cmd
|
||||
if (tree_open)
|
||||
then
|
||||
c('NvimTreeClose')
|
||||
else
|
||||
c('NvimTreeOpen')
|
||||
end
|
||||
tree_open = not tree_open
|
||||
end
|
||||
|
||||
function open_diag()
|
||||
vim.diagnostic.open_float(nil, { focus = false, scope = "cursor"})
|
||||
end
|
||||
|
||||
keymap("n", "<F5>", open_diag, {silent=true,noremap=true})
|
||||
keymap("n", "<F6>", treetoggle, {silent=true,noremap=true})
|
||||
--keymap("n", "<c-P>", require('fzf-lua').files(), {noremap=true})
|
||||
require('lazy').setup({
|
||||
{ "bluz71/vim-moonfly-colors", name = "moonfly", lazy = false, priority = 1000 },
|
||||
{'ojroques/vim-oscyank'},
|
||||
|
||||
--{'rebelot/kanagawa.nvim'},
|
||||
{ "hinell/duplicate.nvim" },
|
||||
{
|
||||
'VonHeikemen/lsp-zero.nvim',
|
||||
branch = 'v3.x',
|
||||
lazy = true,
|
||||
config = false,
|
||||
},
|
||||
{
|
||||
'neovim/nvim-lspconfig',
|
||||
dependencies = {
|
||||
{'hrsh7th/cmp-nvim-lsp'},
|
||||
}
|
||||
},
|
||||
{
|
||||
'hrsh7th/nvim-cmp',
|
||||
dependencies = {
|
||||
{'L3MON4D3/LuaSnip'},
|
||||
{'hrsh7th/cmp-buffer'},
|
||||
{'hrsh7th/cmp-path'},
|
||||
{'hrsh7th/cmp-emoji'},
|
||||
},
|
||||
},
|
||||
{"neovim/nvim-lspconfig"},
|
||||
{
|
||||
"nvim-tree/nvim-tree.lua",
|
||||
version = "*",
|
||||
lazy = false,
|
||||
dependencies = {
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
},
|
||||
config = function()
|
||||
require("nvim-tree").setup ({})
|
||||
end,
|
||||
},
|
||||
{
|
||||
"ibhagwan/fzf-lua",
|
||||
-- optional for icon support
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
config = function()
|
||||
-- calling `setup` is optional for customization
|
||||
require("fzf-lua").setup({})
|
||||
end
|
||||
},
|
||||
--[[
|
||||
{
|
||||
'olivercederborg/poimandres.nvim',
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
config = function()
|
||||
require('poimandres').setup {
|
||||
-- leave this setup function empty for default config
|
||||
-- or refer to the configuration section
|
||||
-- for configuration options
|
||||
bold_vert_split = true,
|
||||
dim_nc_background = true,
|
||||
disable_background = false,
|
||||
}
|
||||
end,
|
||||
|
||||
-- optionally set the colorscheme within lazy config
|
||||
init = function()
|
||||
vim.cmd("colorscheme poimandres")
|
||||
end
|
||||
},
|
||||
]]--
|
||||
{
|
||||
'nvim-lualine/lualine.nvim',
|
||||
dependencies = { 'nvim-tree/nvim-web-devicons' }
|
||||
},
|
||||
{"shaunsingh/nord.nvim"}
|
||||
})
|
||||
keymap("n", "<c-P>", require('fzf-lua').files, {noremap=true})
|
||||
require('lualine').setup()
|
||||
|
||||
-- theme shenanigans
|
||||
vim.cmd("colorscheme nord")
|
||||
|
||||
-- nvim-tree default thing
|
||||
require("nvim-tree").setup({
|
||||
sort = {
|
||||
sorter = "case_sensitive",
|
||||
},
|
||||
view = {
|
||||
width = 30,
|
||||
},
|
||||
renderer = {
|
||||
group_empty = true,
|
||||
},
|
||||
filters = {
|
||||
dotfiles = true,
|
||||
},
|
||||
})
|
||||
|
||||
vim.opt.termguicolors = true
|
||||
|
||||
local lsp_zero = require('lsp-zero')
|
||||
|
||||
lsp_zero.on_attach(function(client, bufnr)
|
||||
lsp_zero.default_keymaps({buffer = bufnr})
|
||||
end)
|
||||
|
||||
require('lspconfig').tsserver.setup({})
|
||||
require('lspconfig').cssmodules_ls.setup({})
|
||||
|
||||
vim.wo.number = true
|
||||
|
||||
local cmp = require('cmp')
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
require('luasnip').lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
['<C-e>'] = cmp.mapping.abort(),
|
||||
['<CR>'] = cmp.mapping.confirm({ select = true }),
|
||||
}),
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'luasnip' }, -- For luasnip users.
|
||||
-- { name = 'ultisnips' }, -- For ultisnips users.
|
||||
-- { name = 'snippy' }, -- For snippy users.
|
||||
},
|
||||
{
|
||||
{ name = 'buffer' },
|
||||
})
|
||||
})
|
||||
|
||||
require'lspconfig'.lua_ls.setup {
|
||||
on_init = function(client)
|
||||
local path = client.workspace_folders[1].name
|
||||
if vim.loop.fs_stat(path..'/.luarc.json') or vim.loop.fs_stat(path..'/.luarc.jsonc') then
|
||||
return
|
||||
end
|
||||
|
||||
client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
|
||||
runtime = {
|
||||
-- Tell the language server which version of Lua you're using
|
||||
-- (most likely LuaJIT in the case of Neovim)
|
||||
version = 'LuaJIT'
|
||||
},
|
||||
-- Make the server aware of Neovim runtime files
|
||||
workspace = {
|
||||
checkThirdParty = false,
|
||||
library = {
|
||||
vim.env.VIMRUNTIME
|
||||
-- Depending on the usage, you might want to add additional paths here.
|
||||
-- "${3rd}/luv/library"
|
||||
-- "${3rd}/busted/library",
|
||||
}
|
||||
-- or pull in all of 'runtimepath'. NOTE: this is a lot slower
|
||||
-- library = vim.api.nvim_get_runtime_file("", true)
|
||||
}
|
||||
})
|
||||
end,
|
||||
settings = {
|
||||
Lua = {}
|
||||
}
|
||||
}
|
||||
local capabilities = require('cmp_nvim_lsp').default_capabilities()
|
||||
|
||||
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||
|
||||
require('lspconfig').html.setup( {
|
||||
capabilities = capabilities,
|
||||
})
|
||||
require('lspconfig').gopls.setup({
|
||||
capabilities = capabilities,
|
||||
})
|
||||
-- require('lspconfig').tailwindcss.setup({})
|
||||
require('lspconfig').rust_analyzer.setup({
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
vim.keymap.set({ "n" }, "<C-S-A-Up>" ,"<CMD>LineDuplicate -1<CR>")
|
||||
vim.keymap.set({ "n" }, "<C-S-A-Down>" ,"<CMD>LineDuplicate +1<CR>")
|
19
.config/nvim/lazy-lock.json
Normal file
19
.config/nvim/lazy-lock.json
Normal file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"LuaSnip": { "branch": "master", "commit": "50fcf17db7c75af80e6b6109acfbfb4504768780" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
||||
"cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
|
||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
||||
"duplicate.nvim": { "branch": "main", "commit": "ab057af7872c44e6fbd48df9b03983c8e67c50a7" },
|
||||
"fzf-lua": { "branch": "main", "commit": "eb63a4bbfd203942737f76d4cf5424f6fb016a9d" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "b02c9eae6a250f98908c146d1dc1a891f5019f0a" },
|
||||
"lsp-zero.nvim": { "branch": "v3.x", "commit": "16de3b18c5f7b6230d89b8e64ce9a4801b6f8d08" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" },
|
||||
"moonfly": { "branch": "master", "commit": "31f65a1bbddd7de9a639d8d0e32b8066c0de1da1" },
|
||||
"nord.nvim": { "branch": "master", "commit": "80c1e5321505aeb22b7a9f23eb82f1e193c12470" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "a110e12d0b58eefcf5b771f533fc2cf3050680ac" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "92166b89ab4b3d60f24e58170cac53b7141fd032" },
|
||||
"nvim-tree.lua": { "branch": "master", "commit": "2bc725a3ebc23f0172fb0ab4d1134b81bcc13812" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "b4b302d6ae229f67df7a87ef69fa79473fe788a9" },
|
||||
"vim-oscyank": { "branch": "main", "commit": "c37c9d98e8a0aed749624fa14a7ece7913cf34de" }
|
||||
}
|
25
.zshrc
Normal file
25
.zshrc
Normal file
|
@ -0,0 +1,25 @@
|
|||
export ZSH="$HOME/.oh-my-zsh"
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
|
||||
# omz theme
|
||||
ZSH_THEME="amuse"
|
||||
|
||||
# for laptop backlight
|
||||
# alias bl="echo $1 | sudo tee /sys/class/backlight/intel_backlight/brightness"
|
||||
export BL_DEVICE=/sys/class/backlight/intel_backlight
|
||||
backlight() {
|
||||
echo $1 > $BL_DEVICE/brightness
|
||||
}
|
||||
plugins=(
|
||||
zsh-autosuggestions
|
||||
git
|
||||
)
|
||||
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
|
||||
export NODE_PATH=/usr/lib/node_modules
|
||||
# flyscrape
|
||||
export PATH="/home/hex/.flyscrape:/home/hex/.cargo/bin:$PATH:$HOME/go/bin"
|
||||
|
||||
# Created by `pipx` on 2024-07-17 11:05:58
|
||||
export PATH="$PATH:/home/hex/.local/bin"
|
1
install
Symbolic link
1
install
Symbolic link
|
@ -0,0 +1 @@
|
|||
./.config/dots/install.sh
|
Loading…
Reference in a new issue