Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 45fb878bd1 | |||
| c96e8fd36b | |||
| b768d53ab8 | |||
| 7dfa279413 | |||
| 9ea0e598a6 | |||
| 815561e0ef | |||
| 774763dd07 | |||
| 0d6cfd7781 | |||
| 467588a604 | |||
| d87753ff4e | |||
| b9e201b454 | |||
| dabafd59c2 | |||
| 1d274896fb | |||
| ba89086781 | |||
| 35c6b79229 | |||
| d7b760d93e | |||
| 80394ad98c | |||
| 73d5a0d548 | |||
| f8ad9e5ecb | |||
| baeb900c65 | |||
| ac651fe95d | |||
| 918103f48b | |||
| f5f32f5f45 | |||
| 7916b9dc3f | |||
| 81aa7cd3aa | |||
| 72a8bce86d | |||
| 2277906fdc |
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2025 Dominik Agreš
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
systemctl --user import-environment DISPLAY XAUTHORITY DBUS_SESSION_BUS_ADDRESS
|
||||||
|
dbus-update-activation-environment --systemd DISPLAY XAUTHORITY DBUS_SESSION_BUS_ADDRESS
|
||||||
|
|
||||||
|
i3
|
||||||
|
export GTK_THEME=Adwaita-dark
|
||||||
|
export QT_QPA_PLATFORMTHEME=gtk2
|
||||||
@@ -0,0 +1,271 @@
|
|||||||
|
[global]
|
||||||
|
### Display ###
|
||||||
|
# Which monitor should the notifications be displayed on.
|
||||||
|
monitor = 0
|
||||||
|
follow = none
|
||||||
|
|
||||||
|
### Geometry ###
|
||||||
|
width = 300
|
||||||
|
height = (0, 300)
|
||||||
|
origin = top-right
|
||||||
|
offset = (10, 50)
|
||||||
|
scale = 0
|
||||||
|
notification_limit = 5
|
||||||
|
|
||||||
|
### Progress bar ###
|
||||||
|
progress_bar = true
|
||||||
|
progress_bar_height = 10
|
||||||
|
progress_bar_frame_width = 1
|
||||||
|
progress_bar_min_width = 150
|
||||||
|
progress_bar_max_width = 300
|
||||||
|
progress_bar_corner_radius = 0
|
||||||
|
progress_bar_corners = all
|
||||||
|
icon_corner_radius = 0
|
||||||
|
icon_corners = all
|
||||||
|
|
||||||
|
indicate_hidden = yes
|
||||||
|
|
||||||
|
transparency = 20
|
||||||
|
separator_height = 0
|
||||||
|
|
||||||
|
padding = 8
|
||||||
|
horizontal_padding = 8
|
||||||
|
text_icon_padding = 0
|
||||||
|
frame_width = 3
|
||||||
|
|
||||||
|
# Defines color of the frame around the notification window.
|
||||||
|
frame_color = "#aaaaaa"
|
||||||
|
gap_size = 0
|
||||||
|
|
||||||
|
separator_color = frame
|
||||||
|
|
||||||
|
sort = yes
|
||||||
|
idle_threshold = 120
|
||||||
|
|
||||||
|
### Text ###
|
||||||
|
|
||||||
|
font = Monospace 8
|
||||||
|
|
||||||
|
line_height = 0
|
||||||
|
|
||||||
|
# Possible values are:
|
||||||
|
# full: Allow a small subset of html markup in notifications:
|
||||||
|
# <b>bold</b>
|
||||||
|
# <i>italic</i>
|
||||||
|
# <s>strikethrough</s>
|
||||||
|
# <u>underline</u>
|
||||||
|
#
|
||||||
|
# For a complete reference see
|
||||||
|
# <https://docs.gtk.org/Pango/pango_markup.html>.
|
||||||
|
#
|
||||||
|
# strip: This setting is provided for compatibility with some broken
|
||||||
|
# clients that send markup even though it's not enabled on the
|
||||||
|
# server. Dunst will try to strip the markup but the parsing is
|
||||||
|
# simplistic so using this option outside of matching rules for
|
||||||
|
# specific applications *IS GREATLY DISCOURAGED*.
|
||||||
|
#
|
||||||
|
# no: Disable markup parsing, incoming notifications will be treated as
|
||||||
|
# plain text. Dunst will not advertise that it has the body-markup
|
||||||
|
# capability if this is set as a global setting.
|
||||||
|
#
|
||||||
|
# It's important to note that markup inside the format option will be parsed
|
||||||
|
# regardless of what this is set to.
|
||||||
|
markup = full
|
||||||
|
|
||||||
|
format = "<b>%s</b>\n%a %b"
|
||||||
|
|
||||||
|
alignment = left
|
||||||
|
vertical_alignment = center
|
||||||
|
show_age_threshold = 60
|
||||||
|
|
||||||
|
ellipsize = middle
|
||||||
|
|
||||||
|
ignore_newline = no
|
||||||
|
|
||||||
|
stack_duplicates = true
|
||||||
|
|
||||||
|
hide_duplicate_count = false
|
||||||
|
|
||||||
|
show_indicators = yes
|
||||||
|
|
||||||
|
### Icons ###
|
||||||
|
|
||||||
|
enable_recursive_icon_lookup = true
|
||||||
|
icon_theme = Adwaita
|
||||||
|
icon_position = off
|
||||||
|
min_icon_size = 32
|
||||||
|
max_icon_size = 128
|
||||||
|
icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
|
||||||
|
|
||||||
|
### History ###
|
||||||
|
|
||||||
|
sticky_history = yes
|
||||||
|
history_length = 20
|
||||||
|
|
||||||
|
### Misc/Advanced ###
|
||||||
|
|
||||||
|
dmenu = /usr/bin/dmenu -p dunst:
|
||||||
|
browser = /usr/bin/xdg-open
|
||||||
|
always_run_script = true
|
||||||
|
title = Dunst
|
||||||
|
class = Dunst
|
||||||
|
corner_radius = 5
|
||||||
|
corners = all
|
||||||
|
ignore_dbusclose = false
|
||||||
|
|
||||||
|
mouse_left_click = do_action, close_current
|
||||||
|
mouse_middle_click = do_action, close_current
|
||||||
|
mouse_right_click = close_all
|
||||||
|
|
||||||
|
[experimental]
|
||||||
|
per_monitor_dpi = false
|
||||||
|
|
||||||
|
[urgency_low]
|
||||||
|
background = "#222222"
|
||||||
|
foreground = "#888888"
|
||||||
|
timeout = 20
|
||||||
|
default_icon = dialog-information
|
||||||
|
|
||||||
|
[urgency_normal]
|
||||||
|
background = "#285577"
|
||||||
|
foreground = "#ffffff"
|
||||||
|
timeout = 30
|
||||||
|
override_pause_level = 30
|
||||||
|
default_icon = dialog-information
|
||||||
|
|
||||||
|
[urgency_critical]
|
||||||
|
background = "#900000"
|
||||||
|
foreground = "#ffffff"
|
||||||
|
frame_color = "#ff0000"
|
||||||
|
timeout = 0
|
||||||
|
override_pause_level = 60
|
||||||
|
default_icon = dialog-warning
|
||||||
|
|
||||||
|
# Every section that isn't one of the above is interpreted as a rules to
|
||||||
|
# override settings for certain messages.
|
||||||
|
#
|
||||||
|
# Messages can be matched by
|
||||||
|
# appname (discouraged, see desktop_entry)
|
||||||
|
# body
|
||||||
|
# category
|
||||||
|
# desktop_entry
|
||||||
|
# icon
|
||||||
|
# match_transient
|
||||||
|
# msg_urgency
|
||||||
|
# stack_tag
|
||||||
|
# summary
|
||||||
|
#
|
||||||
|
# and you can override the
|
||||||
|
# background
|
||||||
|
# foreground
|
||||||
|
# format
|
||||||
|
# frame_color
|
||||||
|
# fullscreen
|
||||||
|
# new_icon
|
||||||
|
# set_stack_tag
|
||||||
|
# set_transient
|
||||||
|
# set_category
|
||||||
|
# timeout
|
||||||
|
# urgency
|
||||||
|
# icon_position
|
||||||
|
# skip_display
|
||||||
|
# history_ignore
|
||||||
|
# action_name
|
||||||
|
# word_wrap
|
||||||
|
# ellipsize
|
||||||
|
# alignment
|
||||||
|
# hide_text
|
||||||
|
# override_pause_level
|
||||||
|
#
|
||||||
|
# Shell-like globbing will get expanded.
|
||||||
|
#
|
||||||
|
# Instead of the appname filter, it's recommended to use the desktop_entry filter.
|
||||||
|
# GLib based applications export their desktop-entry name. In comparison to the appname,
|
||||||
|
# the desktop-entry won't get localized.
|
||||||
|
#
|
||||||
|
# You can also allow a notification to appear even when paused. Notification will appear whenever notification's override_pause_level >= dunst's paused level.
|
||||||
|
# This can be used to set partial pause modes, where more urgent notifications get through, but less urgent stay paused. To do that, you can override the following in the rules:
|
||||||
|
# override_pause_level = X
|
||||||
|
|
||||||
|
# SCRIPTING
|
||||||
|
# You can specify a script that gets run when the rule matches by
|
||||||
|
# setting the "script" option.
|
||||||
|
# The script will be called as follows:
|
||||||
|
# script appname summary body icon urgency
|
||||||
|
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
|
||||||
|
#
|
||||||
|
# NOTE: It might be helpful to run dunst -print in a terminal in order
|
||||||
|
# to find fitting options for rules.
|
||||||
|
|
||||||
|
# Disable the transient hint so that idle_threshold cannot be bypassed from the
|
||||||
|
# client
|
||||||
|
#[transient_disable]
|
||||||
|
# match_transient = yes
|
||||||
|
# set_transient = no
|
||||||
|
#
|
||||||
|
# Make the handling of transient notifications more strict by making them not
|
||||||
|
# be placed in history.
|
||||||
|
#[transient_history_ignore]
|
||||||
|
# match_transient = yes
|
||||||
|
# history_ignore = yes
|
||||||
|
|
||||||
|
# fullscreen values
|
||||||
|
# show: show the notifications, regardless if there is a fullscreen window opened
|
||||||
|
# delay: displays the new notification, if there is no fullscreen window active
|
||||||
|
# If the notification is already drawn, it won't get undrawn.
|
||||||
|
# pushback: same as delay, but when switching into fullscreen, the notification will get
|
||||||
|
# withdrawn from screen again and will get delayed like a new notification
|
||||||
|
#[fullscreen_delay_everything]
|
||||||
|
# fullscreen = delay
|
||||||
|
#[fullscreen_show_critical]
|
||||||
|
# msg_urgency = critical
|
||||||
|
# fullscreen = show
|
||||||
|
|
||||||
|
#[espeak]
|
||||||
|
# summary = "*"
|
||||||
|
# script = dunst_espeak.sh
|
||||||
|
|
||||||
|
#[script-test]
|
||||||
|
# summary = "*script*"
|
||||||
|
# script = dunst_test.sh
|
||||||
|
|
||||||
|
#[ignore]
|
||||||
|
# # This notification will not be displayed
|
||||||
|
# summary = "foobar"
|
||||||
|
# skip_display = true
|
||||||
|
|
||||||
|
#[history-ignore]
|
||||||
|
# # This notification will not be saved in history
|
||||||
|
# summary = "foobar"
|
||||||
|
# history_ignore = yes
|
||||||
|
|
||||||
|
#[skip-display]
|
||||||
|
# # This notification will not be displayed, but will be included in the history
|
||||||
|
# summary = "foobar"
|
||||||
|
# skip_display = yes
|
||||||
|
|
||||||
|
#[signed_on]
|
||||||
|
# appname = Pidgin
|
||||||
|
# summary = "*signed on*"
|
||||||
|
# urgency = low
|
||||||
|
#
|
||||||
|
#[signed_off]
|
||||||
|
# appname = Pidgin
|
||||||
|
# summary = *signed off*
|
||||||
|
# urgency = low
|
||||||
|
#
|
||||||
|
#[says]
|
||||||
|
# appname = Pidgin
|
||||||
|
# summary = *says*
|
||||||
|
# urgency = critical
|
||||||
|
#
|
||||||
|
#[twitter]
|
||||||
|
# appname = Pidgin
|
||||||
|
# summary = *twitter.com*
|
||||||
|
# urgency = normal
|
||||||
|
#
|
||||||
|
#[stack-volumes]
|
||||||
|
# appname = "some_volume_notifiers"
|
||||||
|
# set_stack_tag = "volume"
|
||||||
|
#
|
||||||
|
# vim: ft=cfg
|
||||||
@@ -1,22 +1,37 @@
|
|||||||
# i3blocks configuration file
|
|
||||||
#
|
|
||||||
# The i3blocks man page describes the usage of the binary,
|
|
||||||
# and its website describes the configuration:
|
|
||||||
#
|
|
||||||
# https://vivien.github.io/i3blocks
|
|
||||||
|
|
||||||
|
|
||||||
# Global properties
|
# Global properties
|
||||||
separator=true
|
separator=true
|
||||||
separator_block_width=20
|
separator_block_width=20
|
||||||
|
|
||||||
[greetings]
|
[greetings]
|
||||||
color=#f5af19
|
color=#00b894
|
||||||
command=echo "$USER"
|
command=echo "[$USER@$HOSTNAME ~]"
|
||||||
interval=once
|
interval=once
|
||||||
|
|
||||||
|
[uptime]
|
||||||
|
command=awk '{t=int($1); d=t/86400; h=(t%86400)/3600; m=(t%3600)/60; if(d>0) printf "%dd %02d:%02dh\n", d,h,m; else printf "%02d:%02dh\n", h,m}' /proc/uptime
|
||||||
|
interval=60
|
||||||
|
label=UPT:
|
||||||
|
|
||||||
|
[homelab]
|
||||||
|
command=/home/agres/.config/i3/scripts/lab.sh
|
||||||
|
interval=60
|
||||||
|
label=LAB:
|
||||||
|
|
||||||
|
[homelab]
|
||||||
|
command=/home/agres/.config/i3/scripts/vpn.sh
|
||||||
|
interval=10
|
||||||
|
label=VPN:
|
||||||
|
|
||||||
|
[batteries_mouse]
|
||||||
|
command=/home/agres/.config/i3/scripts/mouse_battery.sh
|
||||||
|
interval=60
|
||||||
|
|
||||||
|
[batteries_keyboard]
|
||||||
|
command=/home/agres/.config/i3/scripts/keyboard_battery.sh
|
||||||
|
interval=60
|
||||||
|
|
||||||
[cpu]
|
[cpu]
|
||||||
command=mpstat 1 1 | awk '/Average/ {print 100 - $NF"%"}'
|
command=/home/agres/.config/i3/scripts/cpu_usage.sh
|
||||||
interval=5
|
interval=5
|
||||||
label=CPU:
|
label=CPU:
|
||||||
|
|
||||||
@@ -26,25 +41,10 @@ interval=5
|
|||||||
label=GPU:
|
label=GPU:
|
||||||
|
|
||||||
[mem]
|
[mem]
|
||||||
command=free -h | awk '/^Mem/ {print $3 "/" $2}'
|
command=/home/agres/.config/i3/scripts/mem_usage.sh
|
||||||
interval=10
|
interval=10
|
||||||
label=MEM:
|
label=MEM:
|
||||||
|
|
||||||
#[down]
|
|
||||||
#command=vnstat -tr 2 | tail -n 3 | awk '/rx/ {print $2}'
|
|
||||||
#interval=5
|
|
||||||
#label=DOWN:
|
|
||||||
|
|
||||||
#[up]
|
|
||||||
#command=vnstat -tr 2 | tail -n 3 | awk '/tx/ {print $2}'
|
|
||||||
#interval=5
|
|
||||||
#label=UP:
|
|
||||||
|
|
||||||
[time]
|
[time]
|
||||||
command=date '+%d.%m %H:%M:%S'
|
command=date '+%d.%m %H:%M'
|
||||||
interval=1
|
interval=1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
i3
|
|
||||||
export GTK_THEME=Adwaita-dark
|
|
||||||
export QT_QPA_PLATFORMTHEME=gtk2
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
# Oh my zsh
|
|
||||||
export ZSH="$HOME/.oh-my-zsh"
|
|
||||||
ZSH_THEME="eastwood"
|
|
||||||
HIST_STAMPS="dd.mm.yyyy"
|
|
||||||
plugins=(git sudo)
|
|
||||||
source $ZSH/oh-my-zsh.sh
|
|
||||||
|
|
||||||
# -- Linux Specific --
|
|
||||||
|
|
||||||
if [[ -z $DISPLAY ]] && [[ $(tty) == /dev/tty1 ]]; then
|
|
||||||
startx
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# -- Local Setup ---
|
|
||||||
|
|
||||||
# Preferred editor for local and remote sessions
|
|
||||||
if [[ -n $SSH_CONNECTION ]]; then
|
|
||||||
export EDITOR='nvim'
|
|
||||||
else
|
|
||||||
export EDITOR='nvim'
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# -- Env Paths ---
|
|
||||||
|
|
||||||
# go
|
|
||||||
#export PATH=/usr/local/go/bin:$PATH
|
|
||||||
|
|
||||||
# pyenv
|
|
||||||
#export PYENV_ROOT="$HOME/.pyenv"
|
|
||||||
#export PATH="$PYENV_ROOT/bin:$PATH"
|
|
||||||
#eval "$(pyenv init --path)"
|
|
||||||
#eval "$(pyenv init -)"
|
|
||||||
|
|
||||||
# pipx
|
|
||||||
#export PATH="$PATH:/Users/agres/.local/bin"
|
|
||||||
#export PATH="$HOME/.local/bin:$PATH"
|
|
||||||
# pipx Linux
|
|
||||||
export PATH="$HOME/.local/bin:$PATH"
|
|
||||||
|
|
||||||
|
|
||||||
# bun
|
|
||||||
#[ -s "/Users/agres/.bun/_bun" ] && source "/Users/agres/.bun/_bun"
|
|
||||||
#export BUN_INSTALL="$HOME/.bun"
|
|
||||||
#export PATH="$BUN_INSTALL/bin:$PATH"
|
|
||||||
|
|
||||||
# -- Customization --
|
|
||||||
|
|
||||||
# Alais: ls to run tree (without any flags)
|
|
||||||
unalias ls 2>/dev/null
|
|
||||||
ls() {
|
|
||||||
if [[ $# -eq 0 ]]; then
|
|
||||||
tree -L 1
|
|
||||||
else
|
|
||||||
command ls -G "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Alias: list all modified and new files in current directory
|
|
||||||
alias lsgit='git status --porcelain | cut -c 4- | xargs ls -l'
|
|
||||||
|
|
||||||
# Alias: wifi to print qr code in terminal from file (device adjustable)
|
|
||||||
alias wifi='cat /Users/agres/Projects/python_lang/wifi_qr/wifi_password.txt | qr --asci'
|
|
||||||
|
|
||||||
# Alias: connect and disconnect bluetooth headphones
|
|
||||||
#alias airpods-connect='bluetoothctl --controller 6C:2F:80:E0:88:8B connect 80:95:3A:DC:8E:41'
|
|
||||||
alias airpods-connect='echo -e "select 12:34:56:78:9A:BC\nconnect 80:95:3A:DC:8E:41" | bluetoothctl >> /dev/null'
|
|
||||||
#alias airpods-disconnect='bluetoothctl --controller 6C:2F:80:E0:88:8B disconnect 80:95:3A:DC:8E:41'
|
|
||||||
alias airpods-disconnect='echo -e "select 12:34:56:78:9A:BC\ndisconnect 80:95:3A:DC:8E:41" | bluetoothctl >> /dev/null'
|
|
||||||
alias airpods='echo -e "select 12:34:56:78:9A:BC\ninfo 80:95:3A:DC:8E:41" | bluetoothctl | grep "Connected: "'
|
|
||||||
|
|
||||||
# Alias: avoid nano
|
|
||||||
alias nano=nvim
|
|
||||||
|
|
||||||
# Alias quick mount network smdb drive
|
|
||||||
alias md0='sudo mount --mkdir -t cifs //192.168.0.200/MD0 /mnt/md0 -o username=agres'
|
|
||||||
|
|
||||||
@@ -1,15 +1,12 @@
|
|||||||
set $mod Mod4
|
set $mod Mod4
|
||||||
|
|
||||||
#font pango:monospace 8
|
# Set i3 font
|
||||||
#font pango:DejaVu Sans Mono 8
|
|
||||||
#font pango:JetBrains Mono 8
|
|
||||||
font pango:MesloLGL Nerd Font Mono 8
|
font pango:MesloLGL Nerd Font Mono 8
|
||||||
|
|
||||||
|
# Start basic functionality apps
|
||||||
exec --no-startup-id dex --autostart --environment i3
|
exec --no-startup-id dex --autostart --environment i3
|
||||||
#exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
|
|
||||||
exec --no-startup-id nm-applet
|
exec --no-startup-id nm-applet
|
||||||
exec --no-startup-id xautolock -time 30 -locker "/home/agres/.config/i3/scripts/lock.sh"
|
exec --no-startup-id xautolock -time 120 -locker "/home/agres/.config/i3/scripts/lock.sh"
|
||||||
|
|
||||||
# Keyboard quick buttons
|
# Keyboard quick buttons
|
||||||
set $refresh_i3status killall -SIGUSR1 i3status
|
set $refresh_i3status killall -SIGUSR1 i3status
|
||||||
@@ -18,9 +15,7 @@ bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT
|
|||||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
|
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
|
||||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
|
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
|
||||||
bindsym --release $mod+Shift+S exec --no-startup-id sh -c '/home/agres/.config/i3/scripts/focused-monitor.sh | xclip -selection clipboard -t image/png'
|
bindsym --release $mod+Shift+S exec --no-startup-id sh -c '/home/agres/.config/i3/scripts/focused-monitor.sh | xclip -selection clipboard -t image/png'
|
||||||
bindsym --release $mod+Shift+Ctrl+S exec --no-startup-id sh -c '/home/agres/.config/i3/scripts/focused-monitor.sh ~/pictures/$(date +%Y-%m-%d_%H-%M-%S).png'
|
bindsym --release $mod+Shift+Ctrl+S exec --no-startup-id sh -c '/home/agres/.config/i3/scripts/focused-monitor.sh ~/other/pictures/$(date +%Y-%m-%d_%H-%M-%S).png'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
floating_modifier $mod
|
floating_modifier $mod
|
||||||
tiling_drag modifier titlebar
|
tiling_drag modifier titlebar
|
||||||
@@ -30,12 +25,14 @@ bindsym $mod+Return exec alacritty
|
|||||||
bindsym $mod+Shift+q kill
|
bindsym $mod+Shift+q kill
|
||||||
|
|
||||||
bindsym $mod+d exec --no-startup-id rofi -show run -theme solarized
|
bindsym $mod+d exec --no-startup-id rofi -show run -theme solarized
|
||||||
|
bindsym $mod+s exec --no-startup-id ~/.local/bin/docpic-rofi
|
||||||
|
|
||||||
|
|
||||||
# change focus
|
# change focus
|
||||||
bindsym $mod+j focus left
|
bindsym $mod+j focus down
|
||||||
bindsym $mod+k focus down
|
bindsym $mod+k focus up
|
||||||
bindsym $mod+l focus up
|
bindsym $mod+l focus right
|
||||||
bindsym $mod+semicolon focus right
|
bindsym $mod+h focus left
|
||||||
|
|
||||||
bindsym $mod+Left focus left
|
bindsym $mod+Left focus left
|
||||||
bindsym $mod+Down focus down
|
bindsym $mod+Down focus down
|
||||||
@@ -43,10 +40,10 @@ bindsym $mod+Up focus up
|
|||||||
bindsym $mod+Right focus right
|
bindsym $mod+Right focus right
|
||||||
|
|
||||||
# move focused window
|
# move focused window
|
||||||
bindsym $mod+Shift+j move left
|
bindsym $mod+Shift+j move down
|
||||||
bindsym $mod+Shift+k move down
|
bindsym $mod+Shift+k move up
|
||||||
bindsym $mod+Shift+l move up
|
bindsym $mod+Shift+l move right
|
||||||
bindsym $mod+Shift+semicolon move right
|
bindsym $mod+Shift+h move left
|
||||||
|
|
||||||
bindsym $mod+Shift+Left move left
|
bindsym $mod+Shift+Left move left
|
||||||
bindsym $mod+Shift+Down move down
|
bindsym $mod+Shift+Down move down
|
||||||
@@ -54,8 +51,7 @@ bindsym $mod+Shift+Up move up
|
|||||||
bindsym $mod+Shift+Right move right
|
bindsym $mod+Shift+Right move right
|
||||||
|
|
||||||
# split in horizontal orientation
|
# split in horizontal orientation
|
||||||
bindsym $mod+h split h
|
bindsym $mod+b split h
|
||||||
|
|
||||||
# split in vertical orientation
|
# split in vertical orientation
|
||||||
bindsym $mod+v split v
|
bindsym $mod+v split v
|
||||||
|
|
||||||
@@ -63,8 +59,8 @@ bindsym $mod+v split v
|
|||||||
bindsym $mod+f fullscreen toggle
|
bindsym $mod+f fullscreen toggle
|
||||||
|
|
||||||
# change container layout (stacked, tabbed, toggle split)
|
# change container layout (stacked, tabbed, toggle split)
|
||||||
bindsym $mod+s layout stacking
|
#bindsym $mod+s layout stacking
|
||||||
bindsym $mod+w layout tabbed
|
#bindsym $mod+w layout tabbed
|
||||||
bindsym $mod+e layout toggle split
|
bindsym $mod+e layout toggle split
|
||||||
|
|
||||||
# toggle tiling / floating
|
# toggle tiling / floating
|
||||||
@@ -74,20 +70,22 @@ bindsym $mod+Shift+space floating toggle
|
|||||||
bindsym $mod+space focus mode_toggle
|
bindsym $mod+space focus mode_toggle
|
||||||
|
|
||||||
# focus the parent container
|
# focus the parent container
|
||||||
bindsym $mod+a focus parent
|
#bindsym $mod+a focus parent
|
||||||
|
|
||||||
# focus the child container
|
# focus the child container
|
||||||
#bindsym $mod+d focus child
|
#bindsym $mod+d focus child
|
||||||
|
|
||||||
|
#Stop focus from wrapping around edges (stay on last window in that direction)
|
||||||
|
focus_wrapping no
|
||||||
|
|
||||||
# Define names for default workspaces for which we configure key bindings later on.
|
# Define names for default workspaces for which we configure key bindings later on.
|
||||||
# We use variables to avoid repeating the names in multiple places.
|
# We use variables to avoid repeating the names in multiple places.
|
||||||
set $ws1 "1"
|
set $ws1 "1:Code"
|
||||||
set $ws2 "2"
|
set $ws2 "2:Term"
|
||||||
set $ws3 "3"
|
set $ws3 "3:Term"
|
||||||
set $ws4 "4"
|
set $ws4 "4:VM"
|
||||||
set $ws5 "5"
|
set $ws5 "5:Web"
|
||||||
set $ws6 "6"
|
set $ws6 "6:Mail"
|
||||||
set $ws7 "7"
|
set $ws7 "7:Games"
|
||||||
set $ws8 "8"
|
set $ws8 "8"
|
||||||
set $ws9 "9"
|
set $ws9 "9"
|
||||||
set $ws10 "10"
|
set $ws10 "10"
|
||||||
@@ -147,16 +145,56 @@ mode "resize" {
|
|||||||
|
|
||||||
bindsym $mod+r mode "resize"
|
bindsym $mod+r mode "resize"
|
||||||
|
|
||||||
gaps inner 5
|
gaps inner 3
|
||||||
#gaps outer 2
|
gaps outer 0
|
||||||
|
|
||||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
# Separate bars for dual screen setup
|
||||||
# finds out, if available)
|
|
||||||
bar {
|
bar {
|
||||||
|
output DisplayPort-0
|
||||||
status_command i3blocks
|
status_command i3blocks
|
||||||
position top
|
position top
|
||||||
|
tray_output none
|
||||||
|
workspace_buttons yes
|
||||||
|
colors {
|
||||||
|
background #000000
|
||||||
|
statusline #ffffff
|
||||||
|
separator #333333
|
||||||
|
|
||||||
|
focused_workspace #00675a #00675a #ffffff
|
||||||
|
active_workspace #1c1c1c #1c1c1c #cccccc
|
||||||
|
inactive_workspace #000000 #000000 #777777
|
||||||
|
urgent_workspace #870000 #870000 #ffffff
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bar {
|
||||||
|
output HDMI-A-0
|
||||||
|
status_command i3blocks
|
||||||
|
position top
|
||||||
|
tray_output none
|
||||||
|
workspace_buttons yes
|
||||||
|
colors {
|
||||||
|
background #000000
|
||||||
|
statusline #ffffff
|
||||||
|
separator #333333
|
||||||
|
|
||||||
|
focused_workspace #00675a #00675a #ffffff
|
||||||
|
active_workspace #1c1c1c #1c1c1c #cccccc
|
||||||
|
inactive_workspace #000000 #000000 #777777
|
||||||
|
urgent_workspace #870000 #870000 #ffffff
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Hard defined workspace placement
|
||||||
|
workspace $ws1 output DisplayPort-0
|
||||||
|
workspace $ws2 output DisplayPort-0
|
||||||
|
workspace $ws3 output DisplayPort-0
|
||||||
|
workspace $ws4 output DisplayPort-0
|
||||||
|
workspace $ws5 output HDMI-A-0
|
||||||
|
workspace $ws6 output HDMI-A-0
|
||||||
|
workspace $ws7 output HDMI-A-0
|
||||||
|
#workspace $ws8 output HDMI-A-1
|
||||||
|
|
||||||
# Load Xresources file
|
# Load Xresources file
|
||||||
exec --no-startup-id xrdb -merge ~/.Xresources
|
exec --no-startup-id xrdb -merge ~/.Xresources
|
||||||
# Keyboard to German
|
# Keyboard to German
|
||||||
@@ -170,10 +208,32 @@ exec --no-startup-id feh --bg-scale /home/agres/.config/i3/wallpaper/wallpaper.j
|
|||||||
# Disable screen from going black after 10 mins to 3 hours
|
# Disable screen from going black after 10 mins to 3 hours
|
||||||
exec --no-startup-id xset s 7200 7200
|
exec --no-startup-id xset s 7200 7200
|
||||||
exec --no-startup-id xset dpms 7200 7200 7200
|
exec --no-startup-id xset dpms 7200 7200 7200
|
||||||
|
# Slight Transparency
|
||||||
|
exec --no-startup-id picom
|
||||||
|
# Start notification tool
|
||||||
|
exec --no-startup-id dunst
|
||||||
|
# Start librepods
|
||||||
|
#exec --no-startup-id /home/agres/other/build/librepods-main/linux/build/librepods --hide
|
||||||
|
|
||||||
|
default_border pixel 4
|
||||||
|
default_floating_border normal 0
|
||||||
|
|
||||||
# Window overlay theme
|
# Window overlay theme
|
||||||
client.focused #00b5af #00b5af #fdf6e3 #073642
|
set $g0 #111111
|
||||||
client.focused_inactive #073642 #073642 #fdf6e3 #073642
|
set $g1 #1A1A1A
|
||||||
client.unfocused #073642 #073642 #fdf6e3 #073642
|
set $g2 #2A2A2A
|
||||||
|
set $g3 #3A3A3A
|
||||||
|
set $g4 #4A4A4A
|
||||||
|
set $g5 #BFBFBF
|
||||||
|
set $g6 #E6E6E6
|
||||||
|
set $accent #808080
|
||||||
|
set $ws_accent #00675a
|
||||||
|
|
||||||
|
# --- Window decoration colors ---
|
||||||
|
# Format: client.<state> <border> <background> <text> <indicator> <child_border>
|
||||||
|
client.focused $ws_accent $ws_accent $g6 $accent $ws_accent
|
||||||
|
client.focused_inactive $g3 $g3 $g5 $g3 $g3
|
||||||
|
client.unfocused $g3 $g3 $g5 $g3 $g3
|
||||||
|
client.urgent #5F1F1F #5F1F1F $g6 #B35C5C #5F1F1F
|
||||||
|
client.placeholder $g0 $g0 $g5 $g3 $g0
|
||||||
|
client.background $g0
|
||||||
|
|||||||
@@ -0,0 +1,223 @@
|
|||||||
|
set $mod Mod4
|
||||||
|
|
||||||
|
# Set i3 font
|
||||||
|
font pango:MesloLGL Nerd Font Mono 8
|
||||||
|
|
||||||
|
# Start basic functionality apps
|
||||||
|
exec --no-startup-id dex --autostart --environment i3
|
||||||
|
exec --no-startup-id nm-applet
|
||||||
|
exec --no-startup-id xautolock -time 30 -locker "/home/agres/.config/i3/scripts/lock.sh"
|
||||||
|
|
||||||
|
# Keyboard quick buttons
|
||||||
|
set $refresh_i3status killall -SIGUSR1 i3status
|
||||||
|
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
|
||||||
|
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
|
||||||
|
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
|
||||||
|
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
|
||||||
|
bindsym --release $mod+Shift+S exec --no-startup-id sh -c '/home/agres/.config/i3/scripts/focused-monitor.sh | xclip -selection clipboard -t image/png'
|
||||||
|
bindsym --release $mod+Shift+Ctrl+S exec --no-startup-id sh -c '/home/agres/.config/i3/scripts/focused-monitor.sh ~/other/pictures/$(date +%Y-%m-%d_%H-%M-%S).png'
|
||||||
|
|
||||||
|
floating_modifier $mod
|
||||||
|
tiling_drag modifier titlebar
|
||||||
|
|
||||||
|
bindsym $mod+Return exec alacritty
|
||||||
|
|
||||||
|
bindsym $mod+Shift+q kill
|
||||||
|
|
||||||
|
bindsym $mod+d exec --no-startup-id rofi -show run -theme solarized
|
||||||
|
|
||||||
|
# change focus
|
||||||
|
bindsym $mod+j focus down
|
||||||
|
bindsym $mod+k focus up
|
||||||
|
bindsym $mod+l focus right
|
||||||
|
bindsym $mod+h focus left
|
||||||
|
|
||||||
|
bindsym $mod+Left focus left
|
||||||
|
bindsym $mod+Down focus down
|
||||||
|
bindsym $mod+Up focus up
|
||||||
|
bindsym $mod+Right focus right
|
||||||
|
|
||||||
|
# move focused window
|
||||||
|
bindsym $mod+Shift+j move down
|
||||||
|
bindsym $mod+Shift+k move up
|
||||||
|
bindsym $mod+Shift+l move right
|
||||||
|
bindsym $mod+Shift+h move left
|
||||||
|
|
||||||
|
bindsym $mod+Shift+Left move left
|
||||||
|
bindsym $mod+Shift+Down move down
|
||||||
|
bindsym $mod+Shift+Up move up
|
||||||
|
bindsym $mod+Shift+Right move right
|
||||||
|
|
||||||
|
# split in horizontal orientation
|
||||||
|
bindsym $mod+b split h
|
||||||
|
# split in vertical orientation
|
||||||
|
bindsym $mod+v split v
|
||||||
|
|
||||||
|
# enter fullscreen mode for the focused container
|
||||||
|
bindsym $mod+f fullscreen toggle
|
||||||
|
|
||||||
|
# change container layout (stacked, tabbed, toggle split)
|
||||||
|
#bindsym $mod+s layout stacking
|
||||||
|
#bindsym $mod+w layout tabbed
|
||||||
|
bindsym $mod+e layout toggle split
|
||||||
|
|
||||||
|
# toggle tiling / floating
|
||||||
|
bindsym $mod+Shift+space floating toggle
|
||||||
|
|
||||||
|
# change focus between tiling / floating windows
|
||||||
|
bindsym $mod+space focus mode_toggle
|
||||||
|
|
||||||
|
# focus the parent container
|
||||||
|
#bindsym $mod+a focus parent
|
||||||
|
# focus the child container
|
||||||
|
#bindsym $mod+d focus child
|
||||||
|
|
||||||
|
# Define names for default workspaces for which we configure key bindings later on.
|
||||||
|
# We use variables to avoid repeating the names in multiple places.
|
||||||
|
set $ws1 "1:Code"
|
||||||
|
set $ws2 "2:Term"
|
||||||
|
set $ws3 "3:Term"
|
||||||
|
set $ws4 "4:VM"
|
||||||
|
set $ws5 "5:Web"
|
||||||
|
set $ws6 "6:Mail"
|
||||||
|
set $ws7 "7:Games"
|
||||||
|
set $ws8 "8"
|
||||||
|
set $ws9 "9"
|
||||||
|
set $ws10 "10"
|
||||||
|
|
||||||
|
# switch to workspace
|
||||||
|
bindsym $mod+1 workspace number $ws1
|
||||||
|
bindsym $mod+2 workspace number $ws2
|
||||||
|
bindsym $mod+3 workspace number $ws3
|
||||||
|
bindsym $mod+4 workspace number $ws4
|
||||||
|
bindsym $mod+5 workspace number $ws5
|
||||||
|
bindsym $mod+6 workspace number $ws6
|
||||||
|
bindsym $mod+7 workspace number $ws7
|
||||||
|
bindsym $mod+8 workspace number $ws8
|
||||||
|
bindsym $mod+9 workspace number $ws9
|
||||||
|
bindsym $mod+0 workspace number $ws10
|
||||||
|
|
||||||
|
# move focused container to workspace
|
||||||
|
bindsym $mod+Shift+1 move container to workspace number $ws1
|
||||||
|
bindsym $mod+Shift+2 move container to workspace number $ws2
|
||||||
|
bindsym $mod+Shift+3 move container to workspace number $ws3
|
||||||
|
bindsym $mod+Shift+4 move container to workspace number $ws4
|
||||||
|
bindsym $mod+Shift+5 move container to workspace number $ws5
|
||||||
|
bindsym $mod+Shift+6 move container to workspace number $ws6
|
||||||
|
bindsym $mod+Shift+7 move container to workspace number $ws7
|
||||||
|
bindsym $mod+Shift+8 move container to workspace number $ws8
|
||||||
|
bindsym $mod+Shift+9 move container to workspace number $ws9
|
||||||
|
bindsym $mod+Shift+0 move container to workspace number $ws10
|
||||||
|
|
||||||
|
# reload the configuration file
|
||||||
|
bindsym $mod+Shift+c reload
|
||||||
|
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||||
|
bindsym $mod+Shift+r restart
|
||||||
|
# exit i3 (logs you out of your X session)
|
||||||
|
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
|
||||||
|
# Locking the screen with i3lock
|
||||||
|
bindsym $mod+q exec --no-startup-id "/home/agres/.config/i3/scripts/lock.sh"
|
||||||
|
|
||||||
|
# resize window (you can also use the mouse for that)
|
||||||
|
mode "resize" {
|
||||||
|
|
||||||
|
bindsym j resize shrink width 10 px or 10 ppt
|
||||||
|
bindsym k resize grow height 10 px or 10 ppt
|
||||||
|
bindsym l resize shrink height 10 px or 10 ppt
|
||||||
|
bindsym semicolon resize grow width 10 px or 10 ppt
|
||||||
|
|
||||||
|
# same bindings, but for the arrow keys
|
||||||
|
bindsym Left resize shrink width 10 px or 10 ppt
|
||||||
|
bindsym Down resize grow height 10 px or 10 ppt
|
||||||
|
bindsym Up resize shrink height 10 px or 10 ppt
|
||||||
|
bindsym Right resize grow width 10 px or 10 ppt
|
||||||
|
|
||||||
|
# back to normal: Enter or Escape or $mod+r
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
bindsym $mod+r mode "default"
|
||||||
|
}
|
||||||
|
|
||||||
|
bindsym $mod+r mode "resize"
|
||||||
|
|
||||||
|
gaps inner 3
|
||||||
|
gaps outer 0
|
||||||
|
|
||||||
|
# Separate bars for dual screen setup
|
||||||
|
bar {
|
||||||
|
output DisplayPort-0
|
||||||
|
status_command i3blocks
|
||||||
|
position top
|
||||||
|
tray_output none
|
||||||
|
workspace_buttons yes
|
||||||
|
colors {
|
||||||
|
background #000000
|
||||||
|
statusline #ffffff
|
||||||
|
separator #333333
|
||||||
|
|
||||||
|
focused_workspace #00675a #00675a #ffffff
|
||||||
|
active_workspace #1c1c1c #1c1c1c #cccccc
|
||||||
|
inactive_workspace #000000 #000000 #777777
|
||||||
|
urgent_workspace #870000 #870000 #ffffff
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bar {
|
||||||
|
output HDMI-A-0
|
||||||
|
status_command i3blocks
|
||||||
|
position top
|
||||||
|
tray_output none
|
||||||
|
workspace_buttons yes
|
||||||
|
colors {
|
||||||
|
background #000000
|
||||||
|
statusline #ffffff
|
||||||
|
separator #333333
|
||||||
|
|
||||||
|
focused_workspace #00675a #00675a #ffffff
|
||||||
|
active_workspace #1c1c1c #1c1c1c #cccccc
|
||||||
|
inactive_workspace #000000 #000000 #777777
|
||||||
|
urgent_workspace #870000 #870000 #ffffff
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Hard defined workspace placement
|
||||||
|
workspace $ws1 output DisplayPort-0
|
||||||
|
workspace $ws2 output DisplayPort-0
|
||||||
|
workspace $ws3 output DisplayPort-0
|
||||||
|
workspace $ws4 output DisplayPort-0
|
||||||
|
workspace $ws5 output HDMI-A-0
|
||||||
|
workspace $ws6 output HDMI-A-0
|
||||||
|
workspace $ws7 output HDMI-A-0
|
||||||
|
#workspace $ws8 output HDMI-A-1
|
||||||
|
|
||||||
|
# Load Xresources file
|
||||||
|
exec --no-startup-id xrdb -merge ~/.Xresources
|
||||||
|
# Keyboard to German
|
||||||
|
exec --no-startup-id setxkbmap -layout de
|
||||||
|
# Set the screens correctly
|
||||||
|
exec --no-startup-id xrandr --output HDMI-A-0 --primary --auto --output DisplayPort-0 --auto --left-of HDMI-A-0
|
||||||
|
# Scale 4K screen bigger
|
||||||
|
exec --no-startup-id xrandr --output DisplayPort-0 --scale 0.8x0.8
|
||||||
|
# Set wallpaper
|
||||||
|
exec --no-startup-id feh --bg-scale /home/agres/.config/i3/wallpaper/wallpaper.jpg
|
||||||
|
# Disable screen from going black after 10 mins to 3 hours
|
||||||
|
exec --no-startup-id xset s 7200 7200
|
||||||
|
exec --no-startup-id xset dpms 7200 7200 7200
|
||||||
|
# Slight Transparency
|
||||||
|
exec --no-startup-id picom
|
||||||
|
# Start notification tool
|
||||||
|
exec --no-startup-id dunst
|
||||||
|
|
||||||
|
# Application Autostarts
|
||||||
|
exec --no-startup-id i3-msg "workspace $ws2; exec alacritty"
|
||||||
|
exec --no-startup-id i3-msg "workspace $ws1; exec zeditor"
|
||||||
|
exec --no-startup-id i3-msg "workspace $ws5; exec zen-browser"
|
||||||
|
exec --no-startup-id i3-msg "workspace $ws6; exec thunderbird"
|
||||||
|
|
||||||
|
# Window overlay theme
|
||||||
|
client.focused #00b894 #00675a #ffffff #00b894 #00675a
|
||||||
|
client.focused_inactive #303030 #1c1c1c #cccccc #303030 #1c1c1c
|
||||||
|
client.unfocused #1c1c1c #000000 #999999 #1c1c1c #000000
|
||||||
|
client.urgent #ff5f5f #870000 #ffffff #ff5f5f #870000
|
||||||
|
client.placeholder #000000 #000000 #ffffff #000000 #000000
|
||||||
|
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
usage=$(mpstat 1 1 | awk '/Average/ {print 100 - $NF}')
|
||||||
|
|
||||||
|
temp=$(sensors | awk '/^Tctl:/ {gsub(/[+°]C/, "", $2); print $2; exit}')
|
||||||
|
temp=${temp#+}
|
||||||
|
|
||||||
|
text="${usage}% ${temp}°C"
|
||||||
|
|
||||||
|
echo "$text"
|
||||||
|
echo "$text"
|
||||||
|
|
||||||
|
if [ "$(printf "%.0f" "$usage")" -ge 90 ]; then
|
||||||
|
echo "#ffcc66"
|
||||||
|
else
|
||||||
|
echo "#ffffff"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Which output contains the focused node?
|
||||||
|
output=$(i3-msg -t get_tree | jq -r '.. | select(.focused? == true) | .output')
|
||||||
|
|
||||||
|
# Get its geometry from i3 directly
|
||||||
|
geometry=$(i3-msg -t get_outputs \
|
||||||
|
| jq -r --arg out "$output" '.[] | select(.name==$out and .active)
|
||||||
|
| .rect | "\(.width)x\(.height)+\(.x)+\(.y)"')
|
||||||
|
|
||||||
|
# Shoot that output
|
||||||
|
exec maim -u -g "$geometry" "$@"
|
||||||
|
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# ~/.config/i3/scripts/gpu_usage.sh
|
||||||
|
|
||||||
|
if command -v rocm-smi &>/dev/null; then
|
||||||
|
output=$(rocm-smi --showtemp --showuse)
|
||||||
|
temp=$(echo "$output" | awk -F': ' '/Sensor edge/ {print $3; exit}')
|
||||||
|
usage=$(echo "$output" | awk -F': ' '/GPU use/ {print $3; exit}')
|
||||||
|
|
||||||
|
echo "${usage}% ${temp}°C"
|
||||||
|
echo "${usage}% ${temp}°C"
|
||||||
|
|
||||||
|
if [ "$usage" -ge 90 ]; then
|
||||||
|
echo "#ffcc66"
|
||||||
|
else
|
||||||
|
echo "#ffffff"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "N/A"
|
||||||
|
echo "N/A"
|
||||||
|
echo "#ffffff"
|
||||||
|
fi
|
||||||
|
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
KBD_PATH="/org/freedesktop/UPower/devices/keyboard_dev_D7_E8_29_FA_0F_D0"
|
||||||
|
|
||||||
|
if upower -i "$KBD_PATH" 2>/dev/null | grep -q "present:.*yes"; then
|
||||||
|
perc=$(upower -i "$KBD_PATH" | awk '/percentage:/ {print $2}')
|
||||||
|
|
||||||
|
echo "KBD:$perc"
|
||||||
|
echo "KBD:$perc"
|
||||||
|
|
||||||
|
raw=${perc%\%}
|
||||||
|
|
||||||
|
if [ "$raw" -ge 15 ]; then
|
||||||
|
echo "#ffffff"
|
||||||
|
else
|
||||||
|
echo "#ffcc66"
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
HOST=192.168.0.200
|
||||||
|
|
||||||
|
if ping -c1 -W1 "$HOST" >/dev/null 2>&1; then
|
||||||
|
echo "UP"
|
||||||
|
echo "UP"
|
||||||
|
echo "#00b894"
|
||||||
|
else
|
||||||
|
echo "DOWN"
|
||||||
|
echo "DOWN"
|
||||||
|
echo "#ff0000"
|
||||||
|
fi
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if pgrep -x i3lock >/dev/null; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
img=/tmp/lock.png
|
||||||
|
|
||||||
|
scrot --overwrite "$img"
|
||||||
|
|
||||||
|
magick "$img" -blur 0x8 "$img"
|
||||||
|
|
||||||
|
i3lock \
|
||||||
|
-i "$img" \
|
||||||
|
--inside-color=373445ff \
|
||||||
|
--ring-color=ffffffff \
|
||||||
|
--line-color=00000000 \
|
||||||
|
--keyhl-color=d23c3dff \
|
||||||
|
--bshl-color=d23c3dff \
|
||||||
|
--separator-color=00000000 \
|
||||||
|
--insidever-color=ffffff1c \
|
||||||
|
--insidewrong-color=d23c3d1c \
|
||||||
|
--ringver-color=ffffffff \
|
||||||
|
--ringwrong-color=d23c3dff \
|
||||||
|
--indicator \
|
||||||
|
--clock \
|
||||||
|
--time-color=ffffffff \
|
||||||
|
--date-color=ffffffff \
|
||||||
|
--time-font="JetBrainsMono Nerd Font" \
|
||||||
|
--date-font="JetBrainsMono Nerd Font" \
|
||||||
|
--radius=120
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
used=$(free -h --si | awk '/^Mem/ {print $3}')
|
||||||
|
total="32G"
|
||||||
|
|
||||||
|
text="${used}/${total}"
|
||||||
|
|
||||||
|
echo "$text"
|
||||||
|
echo "$text"
|
||||||
|
|
||||||
|
u=$(free --si | awk '/^Mem/ {print $3}')
|
||||||
|
t=$(free --si | awk '/^Mem/ {print $2}')
|
||||||
|
|
||||||
|
u_num=${u%[A-Za-z]*}
|
||||||
|
t_num=${t%[A-Za-z]*}
|
||||||
|
|
||||||
|
pct=$(awk -v u="$u_num" -v t="$t_num" 'BEGIN {printf "%.0f", (u/t)*100}')
|
||||||
|
|
||||||
|
if [ "$pct" -ge 90 ]; then
|
||||||
|
echo "#ffcc66"
|
||||||
|
else
|
||||||
|
echo "#ffffff"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
MOUSE_PATH=$(upower -e | grep -E 'hidpp_battery_[0-9]+$' | head -n 1)
|
||||||
|
|
||||||
|
if [[ -n "$MOUSE_PATH" ]] && upower -i "$MOUSE_PATH" 2>/dev/null | grep -q "present:.*yes"; then
|
||||||
|
perc=$(upower -i "$MOUSE_PATH" | awk '/percentage:/ {print $2}')
|
||||||
|
|
||||||
|
echo "MOUSE:$perc"
|
||||||
|
echo "MOUSE:$perc"
|
||||||
|
|
||||||
|
raw=${perc%\%}
|
||||||
|
|
||||||
|
if [ "$raw" -ge 15 ]; then
|
||||||
|
echo "#ffffff"
|
||||||
|
else
|
||||||
|
echo "#ffcc66"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
STATUS="$(mullvad status 2>/dev/null)"
|
||||||
|
|
||||||
|
if echo "$STATUS" | grep -q "^Connected"; then
|
||||||
|
echo "UP"
|
||||||
|
echo "UP"
|
||||||
|
echo "#00b894"
|
||||||
|
else
|
||||||
|
echo "DOWN"
|
||||||
|
echo "DOWN"
|
||||||
|
echo "#ff0000"
|
||||||
|
fi
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 478 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 178 KiB |
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
usage=$(mpstat 1 1 | awk '/Average/ {print 100 - $NF}')
|
||||||
|
|
||||||
|
temp=$(sensors | awk '/^Tctl:/ {gsub(/[+°]C/, "", $2); print $2; exit}')
|
||||||
|
temp=${temp#+}
|
||||||
|
|
||||||
|
text="${usage}% ${temp}°C"
|
||||||
|
|
||||||
|
echo "$text"
|
||||||
|
echo "$text"
|
||||||
|
|
||||||
|
if [ "$(printf "%.0f" "$usage")" -ge 90 ]; then
|
||||||
|
echo "#ffcc66"
|
||||||
|
else
|
||||||
|
echo "#ffffff"
|
||||||
|
fi
|
||||||
@@ -1,8 +1,22 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
# ~/.config/i3/scripts/gpu_usage.sh
|
||||||
|
|
||||||
if [ -f /sys/module/amdgpu/drivers/pci:amdgpu/0000:2b:00.0/gpu_busy_percent ]; then
|
if command -v rocm-smi &>/dev/null; then
|
||||||
usage=$(awk '{print $1}' /sys/module/amdgpu/drivers/pci:amdgpu/0000:2b:00.0/gpu_busy_percent)
|
output=$(rocm-smi --showtemp --showuse)
|
||||||
echo "${usage}%"
|
temp=$(echo "$output" | awk -F': ' '/Sensor edge/ {print $3; exit}')
|
||||||
|
usage=$(echo "$output" | awk -F': ' '/GPU use/ {print $3; exit}')
|
||||||
|
|
||||||
|
echo "${usage}% ${temp}°C"
|
||||||
|
echo "${usage}% ${temp}°C"
|
||||||
|
|
||||||
|
if [ "$usage" -ge 90 ]; then
|
||||||
|
echo "#ffcc66"
|
||||||
|
else
|
||||||
|
echo "#ffffff"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "N/A"
|
echo "N/A"
|
||||||
|
echo "N/A"
|
||||||
|
echo "#ffffff"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,21 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
KBD_PATH="/org/freedesktop/UPower/devices/keyboard_dev_D7_E8_29_FA_0F_CF"
|
KBD_PATH="/org/freedesktop/UPower/devices/keyboard_dev_D7_E8_29_FA_0F_D0"
|
||||||
|
|
||||||
if upower -i "$KBD_PATH" 2>/dev/null | grep -q "present:.*yes"; then
|
if upower -i "$KBD_PATH" 2>/dev/null | grep -q "present:.*yes"; then
|
||||||
perc=$(upower -i "$KBD_PATH" | awk '/percentage:/ {print $2}')
|
perc=$(upower -i "$KBD_PATH" | awk '/percentage:/ {print $2}')
|
||||||
|
|
||||||
echo "KBD:$perc"
|
echo "KBD:$perc"
|
||||||
|
echo "KBD:$perc"
|
||||||
|
|
||||||
|
raw=${perc%\%}
|
||||||
|
|
||||||
|
if [ "$raw" -ge 15 ]; then
|
||||||
|
echo "#ffffff"
|
||||||
|
else
|
||||||
|
echo "#ffcc66"
|
||||||
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
HOST=192.168.0.200
|
||||||
|
|
||||||
|
if ping -c1 -W1 "$HOST" >/dev/null 2>&1; then
|
||||||
|
echo "UP"
|
||||||
|
echo "UP"
|
||||||
|
echo "#00b894"
|
||||||
|
else
|
||||||
|
echo "DOWN"
|
||||||
|
echo "DOWN"
|
||||||
|
echo "#ff0000"
|
||||||
|
fi
|
||||||
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
used=$(free -h --si | awk '/^Mem/ {print $3}')
|
||||||
|
total="32G"
|
||||||
|
|
||||||
|
text="${used}/${total}"
|
||||||
|
|
||||||
|
echo "$text"
|
||||||
|
echo "$text"
|
||||||
|
|
||||||
|
u=$(free --si | awk '/^Mem/ {print $3}')
|
||||||
|
t=$(free --si | awk '/^Mem/ {print $2}')
|
||||||
|
|
||||||
|
u_num=${u%[A-Za-z]*}
|
||||||
|
t_num=${t%[A-Za-z]*}
|
||||||
|
|
||||||
|
pct=$(awk -v u="$u_num" -v t="$t_num" 'BEGIN {printf "%.0f", (u/t)*100}')
|
||||||
|
|
||||||
|
if [ "$pct" -ge 90 ]; then
|
||||||
|
echo "#ffcc66"
|
||||||
|
else
|
||||||
|
echo "#ffffff"
|
||||||
|
fi
|
||||||
@@ -4,7 +4,17 @@ MOUSE_PATH=$(upower -e | grep -E 'hidpp_battery_[0-9]+$' | head -n 1)
|
|||||||
|
|
||||||
if [[ -n "$MOUSE_PATH" ]] && upower -i "$MOUSE_PATH" 2>/dev/null | grep -q "present:.*yes"; then
|
if [[ -n "$MOUSE_PATH" ]] && upower -i "$MOUSE_PATH" 2>/dev/null | grep -q "present:.*yes"; then
|
||||||
perc=$(upower -i "$MOUSE_PATH" | awk '/percentage:/ {print $2}')
|
perc=$(upower -i "$MOUSE_PATH" | awk '/percentage:/ {print $2}')
|
||||||
|
|
||||||
echo "MOUSE:$perc"
|
echo "MOUSE:$perc"
|
||||||
|
echo "MOUSE:$perc"
|
||||||
|
|
||||||
|
raw=${perc%\%}
|
||||||
|
|
||||||
|
if [ "$raw" -ge 15 ]; then
|
||||||
|
echo "#ffffff"
|
||||||
|
else
|
||||||
|
echo "#ffcc66"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
STATUS="$(mullvad status 2>/dev/null)"
|
||||||
|
|
||||||
|
if echo "$STATUS" | grep -q "^Connected"; then
|
||||||
|
echo "UP"
|
||||||
|
echo "UP"
|
||||||
|
echo "#00b894"
|
||||||
|
else
|
||||||
|
echo "DOWN"
|
||||||
|
echo "DOWN"
|
||||||
|
echo "#ff0000"
|
||||||
|
fi
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 178 KiB After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 478 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 178 KiB |
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
cd "$HOME/documents" || exit 1
|
||||||
|
|
||||||
|
fd --type f . |
|
||||||
|
fzf \
|
||||||
|
--scheme=path \
|
||||||
|
--prompt='documents> ' \
|
||||||
|
--preview 'bat --style=numbers --color=always --line-range :300 {}' \
|
||||||
|
--bind 'enter:become(nvim {})'
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
file=$(
|
||||||
|
cd "$HOME/documents" || exit 1
|
||||||
|
fd --type f . | rofi -dmenu -i -p "documents"
|
||||||
|
) || exit 0
|
||||||
|
|
||||||
|
[ -n "$file" ] || exit 0
|
||||||
|
|
||||||
|
path="$HOME/documents/$file"
|
||||||
|
|
||||||
|
case "$path" in
|
||||||
|
*.pdf|*.PDF)
|
||||||
|
exec zathura "$path"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
exec alacritty -e nvim "$path"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
sudo openconnect -vvvv --timestamp --dump-http-traffic \
|
||||||
|
--protocol=anyconnect \
|
||||||
|
--useragent='AnyConnect' \
|
||||||
|
--gnutls-priority="NORMAL:-VERS-ALL:+VERS-TLS1.2:+RSA:+AES-128-CBC:+SHA1" \
|
||||||
|
vpn-ac.uni-heidelberg.de/2fa
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
-- Set leader key to Space
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
vim.g.maplocalleader = " "
|
||||||
|
|
||||||
|
-- Load basic settings
|
||||||
|
require("config.options")
|
||||||
|
require("config.keymaps")
|
||||||
|
|
||||||
|
-- Load plugins (lazy.nvim will be auto-installed)
|
||||||
|
require("config.plugins")
|
||||||
|
|
||||||
|
-- Plugin-specific configuration
|
||||||
|
require("config.lsp")
|
||||||
|
require("config.treesitter")
|
||||||
|
require("config.telescope")
|
||||||
|
require("config.cmp")
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"LuaSnip": { "branch": "master", "commit": "3732756842a2f7e0e76a7b0487e9692072857277" },
|
||||||
|
"barbar.nvim": { "branch": "master", "commit": "fb4369940a07dda35fa4d7f54cf4a36aa00440e6" },
|
||||||
|
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||||
|
"cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
|
||||||
|
"cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" },
|
||||||
|
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
|
||||||
|
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||||
|
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
||||||
|
"gitsigns.nvim": { "branch": "main", "commit": "20ad4419564d6e22b189f6738116b38871082332" },
|
||||||
|
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
||||||
|
"lualine.nvim": { "branch": "master", "commit": "3946f0122255bc377d14a59b27b609fb3ab25768" },
|
||||||
|
"neo-tree.nvim": { "branch": "v3.x", "commit": "f3df514fff2bdd4318127c40470984137f87b62e" },
|
||||||
|
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||||
|
"nvim-cmp": { "branch": "main", "commit": "106c4bcc053a5da783bf4a9d907b6f22485c2ea0" },
|
||||||
|
"nvim-lspconfig": { "branch": "master", "commit": "b34fbdffdcb6295c7a25df6ba375452a2e73c32e" },
|
||||||
|
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||||
|
"nvim-web-devicons": { "branch": "master", "commit": "8dcb311b0c92d460fac00eac706abd43d94d68af" },
|
||||||
|
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||||
|
"sonokai": { "branch": "master", "commit": "ec07018013b4683cf33f80ee4bdf3eca2621da33" },
|
||||||
|
"telescope.nvim": { "branch": "master", "commit": "3a12a853ebf21ec1cce9a92290e3013f8ae75f02" },
|
||||||
|
"tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" }
|
||||||
|
}
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
-- Completion setup for Neovim using nvim-cmp and LuaSnip
|
||||||
|
|
||||||
|
-- Safely import modules
|
||||||
|
local cmp_status, cmp = pcall(require, "cmp")
|
||||||
|
if not cmp_status then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local snip_status, luasnip = pcall(require, "luasnip")
|
||||||
|
if not snip_status then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Load friendly-snippets (optional, prebuilt snippets)
|
||||||
|
require("luasnip.loaders.from_vscode").lazy_load()
|
||||||
|
|
||||||
|
-- Setup nvim-cmp
|
||||||
|
cmp.setup({
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
luasnip.lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
mapping = cmp.mapping.preset.insert({
|
||||||
|
["<C-Space>"] = cmp.mapping.complete(), -- Trigger completion menu
|
||||||
|
["<CR>"] = cmp.mapping.confirm({ select = true }), -- Confirm selection
|
||||||
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif luasnip.expand_or_jumpable() then
|
||||||
|
luasnip.expand_or_jump()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
|
||||||
|
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif luasnip.jumpable(-1) then
|
||||||
|
luasnip.jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
}),
|
||||||
|
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = "nvim_lsp" }, -- LSP completion
|
||||||
|
{ name = "luasnip" }, -- Snippets
|
||||||
|
}, {
|
||||||
|
{ name = "buffer" }, -- Words in current buffer
|
||||||
|
{ name = "path" }, -- File system paths
|
||||||
|
}),
|
||||||
|
|
||||||
|
window = {
|
||||||
|
completion = cmp.config.window.bordered(),
|
||||||
|
documentation = cmp.config.window.bordered(),
|
||||||
|
},
|
||||||
|
|
||||||
|
formatting = {
|
||||||
|
format = function(entry, vim_item)
|
||||||
|
vim_item.menu = ({
|
||||||
|
nvim_lsp = "[LSP]",
|
||||||
|
luasnip = "[Snip]",
|
||||||
|
buffer = "[Buf]",
|
||||||
|
path = "[Path]",
|
||||||
|
})[entry.source.name]
|
||||||
|
return vim_item
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
local map = vim.api.nvim_set_keymap
|
||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
|
||||||
|
-- Tabs shortcuts
|
||||||
|
map('n', '<A-,>', '<Cmd>BufferPrevious<CR>', opts)
|
||||||
|
map('n', '<A-.>', '<Cmd>BufferNext<CR>', opts)
|
||||||
|
map('n', '<A-1>', '<Cmd>BufferGoto 1<CR>', opts)
|
||||||
|
map('n', '<A-2>', '<Cmd>BufferGoto 2<CR>', opts)
|
||||||
|
map('n', '<A-3>', '<Cmd>BufferGoto 3<CR>', opts)
|
||||||
|
map('n', '<A-4>', '<Cmd>BufferGoto 4<CR>', opts)
|
||||||
|
map('n', '<A-5>', '<Cmd>BufferGoto 5<CR>', opts)
|
||||||
|
map('n', '<A-6>', '<Cmd>BufferGoto 6<CR>', opts)
|
||||||
|
map('n', '<A-7>', '<Cmd>BufferGoto 7<CR>', opts)
|
||||||
|
map('n', '<A-8>', '<Cmd>BufferGoto 8<CR>', opts)
|
||||||
|
map('n', '<A-9>', '<Cmd>BufferGoto 9<CR>', opts)
|
||||||
|
map('n', '<A-0>', '<Cmd>BufferLast<CR>', opts)
|
||||||
|
|
||||||
|
map('n', '<A-c>', '<Cmd>BufferClose<CR>', opts)
|
||||||
|
|
||||||
|
map('n', '<C-p>', '<Cmd>BufferPick<CR>', opts)
|
||||||
|
map('n', '<C-s-p>', '<Cmd>BufferPickDelete<CR>', opts)
|
||||||
|
|
||||||
|
map('n', '<Space>bb', '<Cmd>BufferOrderByBufferNumber<CR>', opts)
|
||||||
|
map('n', '<Space>bn', '<Cmd>BufferOrderByName<CR>', opts)
|
||||||
|
map('n', '<Space>bd', '<Cmd>BufferOrderByDirectory<CR>', opts)
|
||||||
|
map('n', '<Space>bl', '<Cmd>BufferOrderByLanguage<CR>', opts)
|
||||||
|
map('n', '<Space>bw', '<Cmd>BufferOrderByWindowNumber<CR>', opts)
|
||||||
|
|
||||||
|
-- Toggle Neotree
|
||||||
|
map('n', '<leader>e', ':Neotree toggle<CR>', opts)
|
||||||
|
|
||||||
|
-- Terminal
|
||||||
|
map('n', '<leader>t', ':terminal<CR>', opts)
|
||||||
|
|
||||||
|
--[[
|
||||||
|
-- Turn off arrow keys
|
||||||
|
vim.keymap.set("n", "<Up>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("n", "<Down>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("n", "<Left>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("n", "<Right>", "<Nop>", opts)
|
||||||
|
|
||||||
|
vim.keymap.set("i", "<Up>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("i", "<Down>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("i", "<Left>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("i", "<Right>", "<Nop>", opts)
|
||||||
|
|
||||||
|
-- To move around in insert mode with hjkl
|
||||||
|
vim.keymap.set("i", "<C-h>", "<Left>", opts)
|
||||||
|
vim.keymap.set("i", "<C-j>", "<Down>", opts)
|
||||||
|
vim.keymap.set("i", "<C-k>", "<Up>", opts)
|
||||||
|
vim.keymap.set("i", "<C-l>", "<Right>", opts)
|
||||||
|
vim.keymap.set("v", "<Up>", "<Nop>", opts)
|
||||||
|
|
||||||
|
vim.keymap.set("v", "<Down>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("v", "<Left>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("v", "<Right>", "<Nop>", opts)
|
||||||
|
|
||||||
|
vim.keymap.set("o", "<Up>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("o", "<Down>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("o", "<Left>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("o", "<Right>", "<Nop>", opts)
|
||||||
|
|
||||||
|
vim.keymap.set("t", "<Up>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("t", "<Down>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("t", "<Left>", "<Nop>", opts)
|
||||||
|
vim.keymap.set("t", "<Right>", "<Nop>", opts)
|
||||||
|
--]]
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
-- Common on_attach handler
|
||||||
|
local on_attach = function(client, bufnr)
|
||||||
|
local opts = { buffer = bufnr }
|
||||||
|
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
|
||||||
|
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
|
||||||
|
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
|
||||||
|
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Configure all your servers
|
||||||
|
vim.lsp.config("lua_ls", {
|
||||||
|
on_attach = on_attach,
|
||||||
|
settings = {
|
||||||
|
Lua = { diagnostics = { globals = { "vim" } } },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.config("pyright", { on_attach = on_attach })
|
||||||
|
vim.lsp.config("gopls", { on_attach = on_attach })
|
||||||
|
vim.lsp.config("clangd", { on_attach = on_attach })
|
||||||
|
vim.lsp.config("omnisharp", { on_attach = on_attach })
|
||||||
|
vim.lsp.config("jdtls", { on_attach = on_attach })
|
||||||
|
vim.lsp.config("ts_ls", { on_attach = on_attach })
|
||||||
|
vim.lsp.config("jsonls", { on_attach = on_attach })
|
||||||
|
vim.lsp.config("yamlls", { on_attach = on_attach })
|
||||||
|
|
||||||
|
-- Enable them all
|
||||||
|
for _, server in ipairs({
|
||||||
|
"lua_ls", "pyright", "gopls", "clangd",
|
||||||
|
"omnisharp", "jdtls", "ts_ls", "jsonls", "yamlls",
|
||||||
|
}) do
|
||||||
|
vim.lsp.enable(server)
|
||||||
|
end
|
||||||
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
vim.opt.number = true
|
||||||
|
vim.opt.relativenumber = true
|
||||||
|
vim.opt.tabstop = 2
|
||||||
|
vim.opt.shiftwidth = 2
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
vim.opt.cursorline = true
|
||||||
|
vim.opt.mouse = "a"
|
||||||
|
vim.opt.clipboard:append('unnamedplus')
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
-- Bootstrap lazy.nvim if not installed
|
||||||
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
if not vim.loop.fs_stat(lazypath) then
|
||||||
|
vim.fn.system({
|
||||||
|
"git", "clone", "--filter=blob:none",
|
||||||
|
"https://github.com/folke/lazy.nvim.git",
|
||||||
|
lazypath
|
||||||
|
})
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
-- Plugins
|
||||||
|
require("lazy").setup({
|
||||||
|
-- Core
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
|
||||||
|
-- UI
|
||||||
|
"nvim-lualine/lualine.nvim",
|
||||||
|
"nvim-tree/nvim-web-devicons",
|
||||||
|
|
||||||
|
-- Treesitter
|
||||||
|
{ "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" },
|
||||||
|
|
||||||
|
-- Telescope
|
||||||
|
"nvim-telescope/telescope.nvim",
|
||||||
|
|
||||||
|
-- LSP
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
|
||||||
|
-- Themes
|
||||||
|
"folke/tokyonight.nvim",
|
||||||
|
{
|
||||||
|
'sainnhe/sonokai',
|
||||||
|
lazy = false,
|
||||||
|
priority = 1000,
|
||||||
|
config = function()
|
||||||
|
-- Optionally configure and load the colorscheme
|
||||||
|
-- directly inside the plugin declaration.
|
||||||
|
vim.g.sonokai_enable_italic = true
|
||||||
|
vim.cmd.colorscheme('sonokai')
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Autocomplete
|
||||||
|
{
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
|
"hrsh7th/cmp-buffer",
|
||||||
|
"hrsh7th/cmp-path",
|
||||||
|
"hrsh7th/cmp-cmdline",
|
||||||
|
"L3MON4D3/LuaSnip",
|
||||||
|
"saadparwaiz1/cmp_luasnip",
|
||||||
|
"rafamadriz/friendly-snippets",
|
||||||
|
},
|
||||||
|
|
||||||
|
--[[ Markdown Render Page
|
||||||
|
{
|
||||||
|
'MeanderingProgrammer/render-markdown.nvim',
|
||||||
|
dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.nvim'}, -- if you use the mini.nvim suite
|
||||||
|
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.icons' }, -- if you use standalone mini plugins
|
||||||
|
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
|
||||||
|
---@module 'render-markdown'
|
||||||
|
---@type render.md.UserConfig
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
|
--]]
|
||||||
|
-- Tabs
|
||||||
|
{ 'romgrk/barbar.nvim',
|
||||||
|
dependencies = {
|
||||||
|
'lewis6991/gitsigns.nvim', -- OPTIONAL: for git status
|
||||||
|
'nvim-tree/nvim-web-devicons', -- OPTIONAL: for file icons
|
||||||
|
},
|
||||||
|
init = function() vim.g.barbar_auto_setup = false end,
|
||||||
|
opts = {
|
||||||
|
-- lazy.nvim will automatically call setup for you. put your options here, anything missing will use the default:
|
||||||
|
-- animation = true,
|
||||||
|
-- insert_at_start = true,
|
||||||
|
-- …etc.
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"nvim-neo-tree/neo-tree.nvim",
|
||||||
|
branch = "v3.x",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
"nvim-tree/nvim-web-devicons", -- optional, but recommended
|
||||||
|
},
|
||||||
|
lazy = false, -- neo-tree will lazily load itself
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
local telescope = require("telescope")
|
||||||
|
|
||||||
|
telescope.setup({
|
||||||
|
defaults = {
|
||||||
|
prompt_prefix = "🔍 ",
|
||||||
|
selection_caret = " ",
|
||||||
|
path_display = { "smart" },
|
||||||
|
sorting_strategy = "ascending",
|
||||||
|
layout_config = { prompt_position = "top" },
|
||||||
|
},
|
||||||
|
pickers = {
|
||||||
|
find_files = {
|
||||||
|
hidden = true, -- show hidden files
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Optional: keymaps for quick access
|
||||||
|
local builtin = require("telescope.builtin")
|
||||||
|
vim.keymap.set("n", "<leader>ff", builtin.find_files, { desc = "Find files" })
|
||||||
|
vim.keymap.set("n", "<leader>fg", builtin.live_grep, { desc = "Grep text" })
|
||||||
|
vim.keymap.set("n", "<leader>fb", builtin.buffers, { desc = "Find buffers" })
|
||||||
|
vim.keymap.set("n", "<leader>fh", builtin.help_tags, { desc = "Find help" })
|
||||||
|
vim.keymap.set("n", "<leader>fr", builtin.oldfiles, { desc = "Recent files" })
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
require("nvim-treesitter.configs").setup({
|
||||||
|
ensure_installed = {
|
||||||
|
-- Programming Languages
|
||||||
|
"lua", "python", "bash", "javascript", "typescript",
|
||||||
|
"go", "java", "c", "cpp", "c_sharp", "rust",
|
||||||
|
|
||||||
|
-- Web Languages
|
||||||
|
"html", "css", "scss", "json", "yaml", "toml", "xml",
|
||||||
|
|
||||||
|
-- Other formats
|
||||||
|
"markdown", "markdown_inline", "sql", "dockerfile", "gitignore"
|
||||||
|
},
|
||||||
|
highlight = { enable = true },
|
||||||
|
indent = { enable = true },
|
||||||
|
})
|
||||||
|
|
||||||
@@ -5,7 +5,19 @@ set $down j
|
|||||||
set $up k
|
set $up k
|
||||||
set $right l
|
set $right l
|
||||||
set $term alacritty
|
set $term alacritty
|
||||||
set $menu wmenu-run -l 5
|
set $menu wmenu-run -l 5 -N 000000ff -n ffffffff -M 00675aff -m ffffffff -S 00675aff -s ffffffff
|
||||||
|
|
||||||
|
# Workspace Names
|
||||||
|
set $ws1 "1: Code"
|
||||||
|
set $ws2 "2: Term"
|
||||||
|
set $ws3 "3: Term"
|
||||||
|
set $ws4 "4: VM"
|
||||||
|
set $ws5 "5: Web"
|
||||||
|
set $ws6 "6: Mail"
|
||||||
|
set $ws7 "7: Games"
|
||||||
|
set $ws8 "8: Other"
|
||||||
|
set $ws9 "9: Other"
|
||||||
|
set $ws10 "10: Other"
|
||||||
|
|
||||||
# Font
|
# Font
|
||||||
font pango:MesloLGL Nerd Font Mono 10
|
font pango:MesloLGL Nerd Font Mono 10
|
||||||
@@ -48,33 +60,36 @@ exec_always /home/agres/.config/sway/scripts/lock-sway.sh
|
|||||||
bindsym $mod+Shift+Up move up
|
bindsym $mod+Shift+Up move up
|
||||||
bindsym $mod+Shift+Right move right
|
bindsym $mod+Shift+Right move right
|
||||||
|
|
||||||
|
# Stop focus from wrapping around edges (stay on last window in that direction)
|
||||||
|
focus_wrapping no
|
||||||
|
|
||||||
# Workspaces:
|
# Workspaces:
|
||||||
bindsym $mod+1 workspace number 1
|
bindsym $mod+1 workspace $ws1
|
||||||
bindsym $mod+2 workspace number 2
|
bindsym $mod+2 workspace $ws2
|
||||||
bindsym $mod+3 workspace number 3
|
bindsym $mod+3 workspace $ws3
|
||||||
bindsym $mod+4 workspace number 4
|
bindsym $mod+4 workspace $ws4
|
||||||
bindsym $mod+5 workspace number 5
|
bindsym $mod+5 workspace $ws5
|
||||||
bindsym $mod+6 workspace number 6
|
bindsym $mod+6 workspace $ws6
|
||||||
bindsym $mod+7 workspace number 7
|
bindsym $mod+7 workspace $ws7
|
||||||
bindsym $mod+8 workspace number 8
|
bindsym $mod+8 workspace $ws8
|
||||||
bindsym $mod+9 workspace number 9
|
bindsym $mod+9 workspace $ws9
|
||||||
bindsym $mod+0 workspace number 10
|
bindsym $mod+0 workspace $ws10
|
||||||
bindsym $mod+Shift+1 move container to workspace number 1
|
bindsym $mod+Shift+1 move container to workspace $ws1
|
||||||
bindsym $mod+Shift+2 move container to workspace number 2
|
bindsym $mod+Shift+2 move container to workspace $ws2
|
||||||
bindsym $mod+Shift+3 move container to workspace number 3
|
bindsym $mod+Shift+3 move container to workspace $ws3
|
||||||
bindsym $mod+Shift+4 move container to workspace number 4
|
bindsym $mod+Shift+4 move container to workspace $ws4
|
||||||
bindsym $mod+Shift+5 move container to workspace number 5
|
bindsym $mod+Shift+5 move container to workspace $ws5
|
||||||
bindsym $mod+Shift+6 move container to workspace number 6
|
bindsym $mod+Shift+6 move container to workspace $ws6
|
||||||
bindsym $mod+Shift+7 move container to workspace number 7
|
bindsym $mod+Shift+7 move container to workspace $ws7
|
||||||
bindsym $mod+Shift+8 move container to workspace number 8
|
bindsym $mod+Shift+8 move container to workspace $ws8
|
||||||
bindsym $mod+Shift+9 move container to workspace number 9
|
bindsym $mod+Shift+9 move container to workspace $ws9
|
||||||
bindsym $mod+Shift+0 move container to workspace number 10
|
bindsym $mod+Shift+0 move container to workspace $ws10
|
||||||
|
|
||||||
# Layout stuff:
|
# Layout stuff:
|
||||||
bindsym $mod+b splith
|
bindsym $mod+b splith
|
||||||
bindsym $mod+v splitv
|
bindsym $mod+v splitv
|
||||||
bindsym $mod+s layout stacking
|
# bindsym $mod+s layout stacking
|
||||||
bindsym $mod+w layout tabbed
|
# bindsym $mod+w layout tabbed
|
||||||
bindsym $mod+e layout toggle split
|
bindsym $mod+e layout toggle split
|
||||||
bindsym $mod+f fullscreen
|
bindsym $mod+f fullscreen
|
||||||
bindsym $mod+Shift+space floating toggle
|
bindsym $mod+Shift+space floating toggle
|
||||||
@@ -108,25 +123,38 @@ bindsym $mod+r mode "resize"
|
|||||||
# Special keys to adjust brightness via brightnessctl
|
# Special keys to adjust brightness via brightnessctl
|
||||||
bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
|
bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
|
||||||
bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+
|
bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+
|
||||||
|
# bindsym --locked button exec brightnessctl --device='kbd_backlight' set +10%
|
||||||
|
# bindsym --locked button exec brightnessctl --device='kbd_backlight' set -10%
|
||||||
# Special key to take a screenshot with grim
|
# Special key to take a screenshot with grim
|
||||||
bindsym Print exec grim
|
bindsym Print exec grim
|
||||||
|
|
||||||
# Status Bar:
|
# Status Bar:
|
||||||
bar {
|
bar {
|
||||||
position top
|
position top
|
||||||
status_command while /home/agres/.config/sway/scripts/status.sh; do sleep 1; done
|
status_command while /home/agres/.config/sway/scripts/status.sh; do sleep 0.5; done
|
||||||
colors {
|
colors {
|
||||||
|
background #000000
|
||||||
statusline #ffffff
|
statusline #ffffff
|
||||||
background #323232
|
separator #333333
|
||||||
inactive_workspace #32323200 #32323200 #5c5c5c
|
|
||||||
|
focused_workspace #00675a #00675a #ffffff
|
||||||
|
active_workspace #1c1c1c #1c1c1c #cccccc
|
||||||
|
inactive_workspace #000000 #000000 #777777
|
||||||
|
urgent_workspace #870000 #870000 #ffffff
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
input * {
|
input type:keyboard {
|
||||||
xkb_layout de
|
xkb_layout de
|
||||||
xkb_variant nodeadkeys
|
xkb_variant nodeadkeys
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input "1452:641:Apple_SPI_Keyboard" {
|
||||||
|
xkb_layout de
|
||||||
|
xkb_variant nodeadkeys
|
||||||
|
xkb_options altwin:swap_lalt_lwin
|
||||||
|
}
|
||||||
|
|
||||||
input "1452:641:Apple_SPI_Trackpad" {
|
input "1452:641:Apple_SPI_Trackpad" {
|
||||||
pointer_accel -0.1
|
pointer_accel -0.1
|
||||||
natural_scroll enabled
|
natural_scroll enabled
|
||||||
@@ -141,9 +169,15 @@ output eDP-1 {
|
|||||||
# Opacity Settings
|
# Opacity Settings
|
||||||
for_window [app_id="Alacritty"] opacity 0.98
|
for_window [app_id="Alacritty"] opacity 0.98
|
||||||
|
|
||||||
# Border Colors
|
# Show a slightly thicker border so focused window color is more obvious
|
||||||
client.focused #00b5af #00b5af #fdf6e3 #073642
|
default_border pixel 3
|
||||||
client.focused_inactive #073642 #073642 #fdf6e3 #073642
|
default_floating_border pixel 3
|
||||||
client.unfocused #073642 #073642 #fdf6e3 #073642
|
|
||||||
|
# Window overlay theme
|
||||||
|
client.focused #00b894 #00675a #ffffff #00b894 #00675a
|
||||||
|
client.focused_inactive #303030 #1c1c1c #cccccc #303030 #1c1c1c
|
||||||
|
client.unfocused #1c1c1c #000000 #999999 #1c1c1c #000000
|
||||||
|
client.urgent #ff5f5f #870000 #ffffff #ff5f5f #870000
|
||||||
|
client.placeholder #000000 #000000 #ffffff #000000 #000000
|
||||||
|
|
||||||
include /etc/sway/config.d/*
|
include /etc/sway/config.d/*
|
||||||
|
|||||||
@@ -1,8 +1,27 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
mem=$(free -h | awk '/Mem:/ {print $3 "/" $2}')
|
MEM=$(free -h --si | awk '/Mem:/ {print $3 "/" $2}')
|
||||||
cpu=$(grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {printf "%.1f%%", usage}')
|
|
||||||
bat=$(cat /sys/class/power_supply/macsmc-battery/capacity 2>/dev/null || echo "N/A")
|
|
||||||
time=$(date "+%d.%m %H:%M:%S")
|
|
||||||
|
|
||||||
echo "$USER | CPU: $cpu | MEM: $mem | BAT: $bat% | $time"
|
CPU=$(mpstat 1 1 | awk '/Average/ {printf "%.1f%%\n", 100 - $NF"%"}')
|
||||||
|
|
||||||
|
CAP=$(cat /sys/class/power_supply/macsmc-battery/capacity 2>/dev/null || echo "N/A")
|
||||||
|
STAT=$(cat /sys/class/power_supply/macsmc-battery/status 2>/dev/null || stat="")
|
||||||
|
if [[ $CAP != "N/A" && $STAT == "Charging" ]]; then
|
||||||
|
BAT="${CAP}% (C)"
|
||||||
|
elif [[ $CAP != "N/A" ]]; then
|
||||||
|
BAT="${CAP}%"
|
||||||
|
else
|
||||||
|
BAT="N/A"
|
||||||
|
fi
|
||||||
|
|
||||||
|
TIME=$(date "+%d.%m %H:%M")
|
||||||
|
|
||||||
|
#BRIGHT=$(echo "$(brightnessctl get) / 4.2" | bc)
|
||||||
|
|
||||||
|
VPN_STATUS=$(mullvad status 2>/dev/null | grep -q '^Connected' && echo UP || echo DOWN)
|
||||||
|
LAB_STATUS=$(ping -c1 -W1 192.168.0.200 >/dev/null 2>&1 && echo UP || echo DOWN )
|
||||||
|
|
||||||
|
UPTIME=$(awk '{t=int($1); d=t/86400; h=(t%86400)/3600; m=(t%3600)/60; if(d>0) printf "%dd %02d:%02dh\n", d,h,m; else printf "%02d:%02dh\n", h,m}' /proc/uptime)
|
||||||
|
|
||||||
|
POWER=$(powerprofilesctl get | tr '[:lower:]' '[:upper:]')
|
||||||
|
|
||||||
|
echo "$USER | UPT: $UPTIME | POW: $POWER | LAB: $LAB_STATUS | VPN: $VPN_STATUS | CPU: $CPU | MEM: $MEM | BAT: $BAT | $TIME "
|
||||||
|
|||||||
@@ -0,0 +1,105 @@
|
|||||||
|
{
|
||||||
|
// Global Telemetry Settings
|
||||||
|
"telemetry": {
|
||||||
|
"diagnostics": false,
|
||||||
|
"metrics": false
|
||||||
|
},
|
||||||
|
|
||||||
|
// Behaviour
|
||||||
|
"tab_size": 2,
|
||||||
|
"vim_mode": true,
|
||||||
|
"format_on_save": "off",
|
||||||
|
"autosave": "on_focus_change",
|
||||||
|
|
||||||
|
// Theme / Visual Settings
|
||||||
|
"icon_theme": {
|
||||||
|
"mode": "dark",
|
||||||
|
"light": "Zed (Default)",
|
||||||
|
"dark": "Zed (Default)"
|
||||||
|
},
|
||||||
|
"theme": {
|
||||||
|
"mode": "dark",
|
||||||
|
"light": "Gruvbox Light",
|
||||||
|
"dark": "Gruvbox Dark Hard"
|
||||||
|
},
|
||||||
|
"ui_font_size": 16.0,
|
||||||
|
"buffer_font_size": 13.0,
|
||||||
|
|
||||||
|
"soft_wrap": "editor_width",
|
||||||
|
|
||||||
|
// Indentation
|
||||||
|
"indent_guides": {
|
||||||
|
"enabled": true,
|
||||||
|
"coloring": "indent_aware"
|
||||||
|
},
|
||||||
|
|
||||||
|
// Relative line numbers (vim)
|
||||||
|
"relative_line_numbers": "enabled",
|
||||||
|
|
||||||
|
// Further Visual Settings
|
||||||
|
"tab_bar": {
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
"scrollbar": {
|
||||||
|
"show": "never"
|
||||||
|
},
|
||||||
|
|
||||||
|
// Predictions
|
||||||
|
"show_edit_predictions": false,
|
||||||
|
|
||||||
|
// Language Settings
|
||||||
|
"languages": {
|
||||||
|
"Go": {
|
||||||
|
"show_edit_predictions": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// File syntax highlight
|
||||||
|
"file_types": {
|
||||||
|
"Dockerfile": ["Dockerfile", "Dockerfile.*"],
|
||||||
|
"JSON": ["json", "jsonc", "*.code-snippets"],
|
||||||
|
},
|
||||||
|
|
||||||
|
// Agent / LLM Settings
|
||||||
|
"language_models": {
|
||||||
|
"ollama": {
|
||||||
|
"api_url": "http://localhost:11434",
|
||||||
|
"available_models": [
|
||||||
|
{
|
||||||
|
"name": "qwen2.5-coder:14b-instruct-q4_0",
|
||||||
|
"display_name": "Qwen2.5 Coder 14B Instruct (Q4_0)",
|
||||||
|
"max_tokens": 32768,
|
||||||
|
"supports_tools": false,
|
||||||
|
"supports_thinking": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"agent": {
|
||||||
|
"default_profile": "write",
|
||||||
|
"default_model": {
|
||||||
|
"provider": "copilot_chat",
|
||||||
|
"model": "gpt-5-mini"
|
||||||
|
},
|
||||||
|
"model_parameters": []
|
||||||
|
},
|
||||||
|
|
||||||
|
// LLM Inline Prediction
|
||||||
|
"edit_predictions": {
|
||||||
|
"provider": "copilot"
|
||||||
|
},
|
||||||
|
|
||||||
|
// LSP Server Settings
|
||||||
|
"lsp": {
|
||||||
|
"texlab": {
|
||||||
|
"settings": {
|
||||||
|
"texlab": {
|
||||||
|
"build": {
|
||||||
|
"onSave": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
# Oh my zsh
|
||||||
|
export ZSH="$HOME/.oh-my-zsh"
|
||||||
|
ZSH_THEME="eastwood"
|
||||||
|
HIST_STAMPS="dd.mm.yyyy"
|
||||||
|
plugins=(git sudo)
|
||||||
|
|
||||||
|
# Load sources
|
||||||
|
source $ZSH/oh-my-zsh.sh
|
||||||
|
|
||||||
|
case "$HOST" in
|
||||||
|
arch) source ~/.zshrc_arch ;;
|
||||||
|
fedora-mac) source ~/.zshrc_fedora ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
source /usr/share/fzf/key-bindings.zsh
|
||||||
|
|
||||||
|
# Preferred editor for local and remote sessions
|
||||||
|
if [[ -n $SSH_CONNECTION ]]; then
|
||||||
|
export EDITOR='nvim'
|
||||||
|
else
|
||||||
|
export EDITOR='nvim'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Alais: ls to run tree (without any flags)
|
||||||
|
unalias ls 2>/dev/null
|
||||||
|
ls() {
|
||||||
|
if [[ $# -eq 0 ]]; then
|
||||||
|
tree -L 1
|
||||||
|
else
|
||||||
|
command ls -G "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Alias: list all modified and new files in current directory
|
||||||
|
alias lsgit='git status --porcelain | cut -c 4- | xargs ls -l'
|
||||||
|
|
||||||
|
# Bluetooth headphones
|
||||||
|
alias airpods-connect='echo -e "connect 80:95:3A:DC:8E:41" | bluetoothctl >> /dev/null'
|
||||||
|
alias airpods-disconnect='echo -e "disconnect 80:95:3A:DC:8E:41" | bluetoothctl >> /dev/null'
|
||||||
|
alias airpods='echo -e "info 80:95:3A:DC:8E:41" | bluetoothctl | grep "Connected: "'
|
||||||
|
|
||||||
|
# Alias: avoid nano
|
||||||
|
alias nano=nvim
|
||||||
|
|
||||||
|
# Alias quick mount network smdb drive
|
||||||
|
alias md0='sudo mount --mkdir -t cifs //192.168.0.200/MD0 /mnt/md0 -o username=agres,uid=$(id -u),gid=$(id -g)'
|
||||||
|
|
||||||
|
# Load ssh keys in terminal
|
||||||
|
alias loadssh='eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_ed25519'
|
||||||
|
|
||||||
|
# Tmux aliases
|
||||||
|
alias ta='tmux attach -t'
|
||||||
|
alias tn='tmux new -s'
|
||||||
|
alias tl='tmux ls'
|
||||||
|
alias tk='tmux kill-session -t'
|
||||||
|
|
||||||
|
# Pdf alias
|
||||||
|
alias pdf='zathura'
|
||||||
|
|
||||||
|
# GPG TTY Fix
|
||||||
|
export GPG_TTY=$(tty)
|
||||||
|
|
||||||
|
# Fix unreadable color pallete for ExFat File systems
|
||||||
|
LS_COLORS="$LS_COLORS:ow=01;36:"
|
||||||
|
export LS_COLORS
|
||||||
|
|
||||||
|
# Add local and global bin files to path
|
||||||
|
export PATH="/home/agres/.npm-global/bin:$PATH"
|
||||||
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# Start on boot
|
||||||
|
if [[ -z $DISPLAY ]] && [[ $(tty) == /dev/tty1 ]]; then
|
||||||
|
startx
|
||||||
|
fi
|
||||||
|
|
||||||
|
# -- Env Paths ---
|
||||||
|
export GOPATH=$HOME/.local/go/
|
||||||
|
export GOBIN=$HOME/.local/go/bin
|
||||||
|
export PATH=$PATH:$GOBIN
|
||||||
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
|
|
||||||
|
# -- FzF ---
|
||||||
|
source /usr/share/fzf/completion.zsh
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Start on boot
|
||||||
|
if [[ -z $DISPLAY ]] && [[ $(tty) == /dev/tty1 ]]; then
|
||||||
|
exec sway
|
||||||
|
fi
|
||||||
|
|
||||||
|
# -- Env Paths ---
|
||||||
|
export GOPATH=$HOME/.local/go/
|
||||||
|
export GOBIN=$HOME/.local/go/bin
|
||||||
|
export PATH=$PATH:$GOBIN
|
||||||
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
|
|
||||||