Compare commits
22
Commits
master
...
ac8ff55089
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ac8ff55089 | ||
|
|
42be3086e2 | ||
|
|
8de971278a | ||
|
|
5ecf4b09e7 | ||
|
|
bc4a34cbce | ||
|
|
ea757b4185 | ||
|
|
9a79b23a52 | ||
|
|
935d6d999b | ||
|
|
855732f3c1 | ||
|
|
a2148c1e19 | ||
|
|
679af71d41 | ||
|
|
7bc3ec6d98 | ||
|
|
4ca12fd342 | ||
|
|
b24521fd4f | ||
|
|
b561e7e2f3 | ||
|
|
b473dbbe74 | ||
|
|
e1700384a8 | ||
|
|
ebc6245ea2 | ||
|
|
5cd3ac24a1 | ||
|
|
7cef694420 | ||
|
|
ccebfdcdd5 | ||
|
|
6e50e217c3 |
@@ -0,0 +1,2 @@
|
||||
[General]
|
||||
theme=KvArcDark
|
||||
@@ -4,8 +4,15 @@
|
||||
<icon>utilities-terminal</icon>
|
||||
<name>Open Terminal Here</name>
|
||||
<unique-id>1594675818593070-1</unique-id>
|
||||
<command>urxvt -cd %f</command>
|
||||
<description>Open Terminal in the Current Directory</description>
|
||||
|
||||
<!-- >>> session=xorg -->
|
||||
<command>urxvt -cd %f</command>
|
||||
<!-- <<< -->
|
||||
<!-- >>> session=wayland -->
|
||||
<!-- <command>ghostty -e "sh -c 'cd %f && exec $SHELL'"</command> -->
|
||||
<!-- <<< -->
|
||||
|
||||
<patterns>*</patterns>
|
||||
<startup-notify/>
|
||||
<directories/>
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
;; -----------------------------------------
|
||||
|
||||
;; Elpaca bootstrap
|
||||
(defvar elpaca-installer-version 0.8)
|
||||
(defvar elpaca-installer-version 0.9)
|
||||
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
|
||||
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
|
||||
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
|
||||
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
|
||||
:ref nil :depth 1
|
||||
:ref nil :depth 1 :inherit ignore
|
||||
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
|
||||
:build (:not elpaca--activate-package)))
|
||||
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
|
||||
|
||||
@@ -222,7 +222,8 @@ When ANYWHERE is non-nil, search beyond the preamble."
|
||||
|
||||
;;; Org Roam
|
||||
|
||||
(elpaca-setup emacsql-sqlite-builtin)
|
||||
(elpaca-setup emacsql
|
||||
(:also-load emacsql-sqlite-builtin))
|
||||
|
||||
(elpaca-setup org-roam
|
||||
(:autoload org-roam-node-find) ;; TODO, is this enough?
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[redshift]
|
||||
[general]
|
||||
temp-day=5700
|
||||
|
||||
; >>> hostname=arch-desktop
|
||||
@@ -14,7 +14,13 @@ brightness-day=1.0
|
||||
brightness-night=0.9
|
||||
|
||||
location-provider=manual
|
||||
|
||||
; >>> session=xorg
|
||||
adjustment-method=randr
|
||||
; <<<
|
||||
; >>> session=wayland
|
||||
; adjustment-method=wayland
|
||||
; <<<
|
||||
|
||||
[manual]
|
||||
lat=51.81
|
||||
@@ -0,0 +1,12 @@
|
||||
app-notifications = no-clipboard-copy
|
||||
confirm-close-surface = false
|
||||
copy-on-select = clipboard
|
||||
cursor-style-blink = false
|
||||
font-family = DejaVuSansM Nerd Font Mono
|
||||
font-size = 10
|
||||
link-url = true
|
||||
selection-invert-fg-bg = true
|
||||
term = xterm-256color
|
||||
theme = terminal-sexy
|
||||
window-decoration = false
|
||||
window-inherit-working-directory = true
|
||||
@@ -0,0 +1,21 @@
|
||||
palette = 0=#282a2e
|
||||
palette = 1=#a54242
|
||||
palette = 2=#8c9440
|
||||
palette = 3=#de935f
|
||||
palette = 4=#5f819d
|
||||
palette = 5=#85678f
|
||||
palette = 6=#5e8d87
|
||||
palette = 7=#707880
|
||||
palette = 8=#373b41
|
||||
palette = 9=#cc6666
|
||||
palette = 10=#b5bd68
|
||||
palette = 11=#f0c674
|
||||
palette = 12=#81a2be
|
||||
palette = 13=#b294bb
|
||||
palette = 14=#8abeb7
|
||||
palette = 15=#c5c8c6
|
||||
background = #1c1c1c
|
||||
foreground = #c5c8c6
|
||||
cursor-color = #c5c8c6
|
||||
selection-background = #373b41
|
||||
selection-foreground = #c5c8c6
|
||||
@@ -1,6 +1,7 @@
|
||||
# DO NOT EDIT! This file will be overwritten by LXAppearance.
|
||||
# DO NOT EDIT! This file will be overwritten by nwg-look.
|
||||
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
|
||||
|
||||
include "/home/rick/.gtkrc-2.0.mine"
|
||||
gtk-theme-name="Arc-Dark"
|
||||
gtk-icon-theme-name="Arc"
|
||||
gtk-font-name="DejaVu Sans 10"
|
||||
|
||||
@@ -14,3 +14,4 @@ gtk-xft-antialias=1
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle=hintslight
|
||||
gtk-xft-rgba=rgb
|
||||
gtk-application-prefer-dark-theme=1
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
general {
|
||||
lock_cmd = pidof hyprlock || hyprlock
|
||||
before_sleep_cmd = loginctl lock-session
|
||||
after_sleep_cmd = hyprctl dispatch dpms on # avoid having to press a key twice to turn on display
|
||||
}
|
||||
|
||||
# Turn the screen off after 30 seconds on the lock-screen
|
||||
listener {
|
||||
timeout = 30
|
||||
on-timeout = pidof hyprlock && hyprctl dispatch dpms off
|
||||
on-resume = hyprctl dispatch dpms on
|
||||
}
|
||||
@@ -0,0 +1,422 @@
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
|
||||
monitor = desc:Ancor Communications Inc ASUS PB298 D7LMTF059917, preferred, 0x0, auto
|
||||
monitor = desc:Iiyama North America PL2492H 11511037C7430, preferred, 2560x0, auto
|
||||
monitor = , preferred, auto, auto # fallback
|
||||
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = ghostty
|
||||
$fileManager = thunar
|
||||
$menu = rofi -show drun
|
||||
|
||||
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
# System level
|
||||
exec-once = gammastep
|
||||
exec-once = systemctl --user start hyprpolkitagent
|
||||
exec-once = hyprctl setcursor capitaine-cursors-light 24
|
||||
exec-once = hypridle
|
||||
exec-once = ydotoold
|
||||
|
||||
# Scripts
|
||||
exec-once = ${HOME}/.local/bin/wm/wallpaper.sh
|
||||
exec-once = ${HOME}/.local/bin/panel/waybar.sh
|
||||
|
||||
# Applications
|
||||
exec-once = [workspace 1] firefox
|
||||
exec-once = [workspace 2] $terminal
|
||||
exec-once = [workspace 3] thunar --daemon
|
||||
exec-once = [workspace 3] thunar
|
||||
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Environment-variables/
|
||||
|
||||
env = XDG_CURRENT_DESKTOP,Hyprland
|
||||
env = XDG_SESSION_TYPE,wayland
|
||||
env = XDG_SESSION_DESKTOP,Hyprland
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 5
|
||||
gaps_out = 10
|
||||
|
||||
border_size = 2
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = rgb(404552)
|
||||
col.inactive_border = rgb(2b2e39)
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 0
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 1.0
|
||||
|
||||
shadow {
|
||||
enabled = false
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = false
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||
animations {
|
||||
enabled = true
|
||||
|
||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = easeOutQuint,0.23,1,0.32,1
|
||||
bezier = easeInOutCubic,0.65,0.05,0.36,1
|
||||
bezier = linear,0,0,1,1
|
||||
bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||
bezier = quick,0.15,0,0.1,1
|
||||
|
||||
animation = global, 1, 10, default
|
||||
animation = border, 1, 5.39, easeOutQuint
|
||||
animation = windows, 1, 4.79, easeOutQuint
|
||||
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
animation = fadeIn, 1, 1.73, almostLinear
|
||||
animation = fadeOut, 1, 1.46, almostLinear
|
||||
animation = fade, 1, 3.03, quick
|
||||
animation = layers, 1, 3.81, easeOutQuint
|
||||
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
animation = layersOut, 1, 1.5, linear, fade
|
||||
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||
}
|
||||
|
||||
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
workspace = w[tv1], gapsout:0, gapsin:0
|
||||
workspace = f[1], gapsout:0, gapsin:0
|
||||
windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||
windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1]
|
||||
windowrulev2 = bordersize 0, floating:0, onworkspace:f[1]
|
||||
windowrulev2 = rounding 0, floating:0, onworkspace:f[1]
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
force_split = 2 # split to the bottom right
|
||||
preserve_split = true
|
||||
pseudotile = false
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc {
|
||||
disable_hyprland_logo = true
|
||||
vfr = true # lower amount of sent frames when nothing is happening on-screen
|
||||
}
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options = caps:swapescape
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad {
|
||||
natural_scroll = false
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
gestures {
|
||||
workspace_swipe = false
|
||||
}
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||
device { # hyprctl devices
|
||||
name = logitech-wireless-mouse-pid:4038
|
||||
sensitivity = -0.5
|
||||
accel_profile = flat
|
||||
}
|
||||
|
||||
|
||||
###################
|
||||
### KEYBINDINGS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||
|
||||
# Bind docs https://wiki.hyprland.org/Configuring/Binds/
|
||||
|
||||
#--- Control ---#
|
||||
|
||||
# Reload hyprland
|
||||
bind = $mainMod Control_L, r, forcerendererreload
|
||||
|
||||
# Close hyprland
|
||||
bind = $mainMod SHIFT, M, exit,
|
||||
|
||||
#--- Window ---#
|
||||
|
||||
# Close window
|
||||
bind = $mainMod, q, killactive,
|
||||
|
||||
#-- State/flags --#
|
||||
|
||||
# Toggle fullscreen mode
|
||||
bind = $mainMod, f, fullscreen
|
||||
|
||||
# Toggle tiled/floating
|
||||
bind = $mainMod, Space, togglefloating,
|
||||
|
||||
#-- Focus --#
|
||||
|
||||
# Focus window in direction
|
||||
bind = $mainMod, h, movefocus, l
|
||||
bind = $mainMod, j, movefocus, d
|
||||
bind = $mainMod, k, movefocus, u
|
||||
bind = $mainMod, l, movefocus, r
|
||||
bind = $mainMod, left, movefocus, l
|
||||
bind = $mainMod, right, movefocus, r
|
||||
bind = $mainMod, up, movefocus, u
|
||||
bind = $mainMod, down, movefocus, d
|
||||
|
||||
# Focus previous/next window
|
||||
bind = $mainMod, Tab, cyclenext
|
||||
bind = $mainMod SHIFT, Tab, cyclenext, prev
|
||||
|
||||
# Focus workspace
|
||||
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
|
||||
|
||||
# Focus previous/next workspace
|
||||
bind = $mainMod, equal, workspace, e+1
|
||||
bind = $mainMod, minus, workspace, e-1
|
||||
|
||||
# Focus last workspace
|
||||
bind = $mainMod, GRAVE, focuscurrentorlast
|
||||
|
||||
# Focus previous/next monitor
|
||||
# TODO
|
||||
|
||||
# Special workspace (scratchpad)
|
||||
bind = $mainMod, T, togglespecialworkspace, magic
|
||||
|
||||
#-- Move --#
|
||||
|
||||
# Send window to workspace
|
||||
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
|
||||
|
||||
# Move window to previous/next workspace
|
||||
bind = $mainMod SHIFT, equal, movetoworkspace, e+1
|
||||
bind = $mainMod SHIFT, minus, movetoworkspace, e-1
|
||||
|
||||
# Move window to previous/next monitor
|
||||
# TODO
|
||||
|
||||
# Move floating window
|
||||
bind = Control_L Alt_L, h, moveactive, -30 0
|
||||
bind = Control_L Alt_L, j, moveactive, 0 30
|
||||
bind = Control_L Alt_L, k, moveactive, 0 -30
|
||||
bind = Control_L Alt_L, l, moveactive, 30 0
|
||||
bind = Control_L Alt_L, left, moveactive, -30 0
|
||||
bind = Control_L Alt_L, right, moveactive, 30 0
|
||||
bind = Control_L Alt_L, up, moveactive, 0 -30
|
||||
bind = Control_L Alt_L, down, moveactive, 0 30
|
||||
|
||||
# Flip the tree from the current windows parent
|
||||
bind = $mainMod Alt_L, 5, swapsplit, # dwindle
|
||||
bind = $mainMod Alt_L, 6, togglesplit, # dwindle
|
||||
|
||||
# Special workspace (scratchpad)
|
||||
bind = $mainMod SHIFT, T, movetoworkspace, special:magic
|
||||
|
||||
#-- Resize --#
|
||||
|
||||
# Resize windows
|
||||
bind = $mainMod Alt_L, h, resizeactive, -10 0
|
||||
bind = $mainMod Alt_L, j, resizeactive, 0 10
|
||||
bind = $mainMod Alt_L, k, resizeactive, 0 -10
|
||||
bind = $mainMod Alt_L, l, resizeactive, 10 0
|
||||
bind = $mainMod Alt_L, left, resizeactive, -10 0
|
||||
bind = $mainMod Alt_L, right, resizeactive, 10 0
|
||||
bind = $mainMod Alt_L, up, resizeactive, 0 -10
|
||||
bind = $mainMod Alt_L, down, resizeactive, 0 10
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
#-- Preselect node --#
|
||||
|
||||
bind = SUPER Control_L, h, layoutmsg, preselect left
|
||||
bind = SUPER Control_L, j, layoutmsg, preselect down
|
||||
bind = SUPER Control_L, k, layoutmsg, preselect up
|
||||
bind = SUPER Control_L, l, layoutmsg, preselect right
|
||||
bind = SUPER Control_L, left, layoutmsg, preselect left
|
||||
bind = SUPER Control_L, right, layoutmsg, preselect right
|
||||
bind = SUPER Control_L, up, layoutmsg, preselect up
|
||||
bind = SUPER Control_L, down, layoutmsg, preselect down
|
||||
|
||||
#--- General ---#
|
||||
|
||||
# Start terminal
|
||||
bind = $mainMod, Return, exec, $terminal
|
||||
|
||||
# Start rofi (program launcher)
|
||||
bind = $mainMod, d, exec, $menu
|
||||
|
||||
# mpv
|
||||
bind = $mainMod, m, exec, play
|
||||
bind = $mainMod SHIFT, m, exec, play queue
|
||||
|
||||
#--- Control, compositor agnostic ---#
|
||||
|
||||
# Reload
|
||||
bind = $mainMod Control_L, r, exec, ${HOME}/.local/bin/panel/waybar.sh
|
||||
|
||||
# System
|
||||
bind = $mainMod SHIFT, s, exec, system
|
||||
|
||||
# Screen brightness
|
||||
bind = $mainMod, F2, exec, brictl dec 10
|
||||
bind = $mainMod, F3, exec, brictl inc 10
|
||||
|
||||
# Screen capture
|
||||
bind = , Print, exec, printscreen
|
||||
bind = Control_L, Print, exec, aliases screencast
|
||||
|
||||
# Laptop multimedia keys
|
||||
bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = , XF86MonBrightnessUp, exec, brictl inc 10
|
||||
bindel = , XF86MonBrightnessDown, exec, brictl dec 10
|
||||
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
bindl = , XF86HomePage, exec, inputctl -d toggle # toggle touchpad
|
||||
bindl = , XF86Search, exec, inputctl -s toggle # toggle touchscreen
|
||||
|
||||
#--- Notification ---#
|
||||
|
||||
# Notifiation
|
||||
bind = Control_L, space, exec, dunstctl close
|
||||
bind = Control_L SHIFT, space, exec, dunstctl close-all
|
||||
bind = Control_L, grave, exec, dunstctl history-pop
|
||||
bind = Control_L SHIFT, period, exec, dunstctl context
|
||||
|
||||
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrule = suppressevent maximize, class:.*
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
|
||||
# Set to floating
|
||||
windowrule = float, class:feh # window rule v1 can only do either class or title, not both
|
||||
windowrule = float, class:mpv
|
||||
windowrule = float, class:org.pulseaudio.pavucontrol
|
||||
windowrule = float, class:pinentry-gtk
|
||||
windowrule = float, class:xarchiver
|
||||
windowrule = float, class:firefox, title:Library
|
||||
windowrule = float, class:firefox, title:^About.*
|
||||
windowrule = float, class:thunar, title:File Operation Progress
|
||||
|
||||
# Resize floating windows
|
||||
windowrule = size >50% >70%, class:org.pulseaudio.pavucontrol
|
||||
|
||||
# Put workspaces on specific monitors
|
||||
workspace = 1, monitor:desc:Ancor Communications Inc ASUS PB298 D7LMTF059917, persistent:true, default:true
|
||||
workspace = 2, monitor:desc:Ancor Communications Inc ASUS PB298 D7LMTF059917, persistent:true
|
||||
workspace = 3, monitor:desc:Ancor Communications Inc ASUS PB298 D7LMTF059917, persistent:true
|
||||
workspace = 4, monitor:desc:Ancor Communications Inc ASUS PB298 D7LMTF059917, persistent:true
|
||||
workspace = 5, monitor:desc:Ancor Communications Inc ASUS PB298 D7LMTF059917, persistent:true
|
||||
workspace = 6, monitor:desc:Ancor Communications Inc ASUS PB298 D7LMTF059917, persistent:true
|
||||
workspace = 7, monitor:desc:Ancor Communications Inc ASUS PB298 D7LMTF059917, persistent:true
|
||||
workspace = 8, monitor:desc:Ancor Communications Inc ASUS PB298 D7LMTF059917, persistent:true
|
||||
workspace = 9, monitor:desc:Iiyama North America PL2492H 11511037C7430, persistent:true, default:true
|
||||
workspace = 10, monitor:desc:Iiyama North America PL2492H 11511037C7430, persistent:true
|
||||
@@ -0,0 +1,73 @@
|
||||
$font_size = 48
|
||||
$font_size_small = 16
|
||||
$image_size = 175
|
||||
|
||||
general {
|
||||
hide_cursor = true
|
||||
ignore_empty_input = true
|
||||
}
|
||||
|
||||
background {
|
||||
monitor =
|
||||
path = screenshot
|
||||
blur_passes = 2
|
||||
blur_size = 2
|
||||
noise = 0
|
||||
}
|
||||
|
||||
label {
|
||||
font_family = DejaVu Sans Serif
|
||||
font_size = $font_size
|
||||
|
||||
text = $TIME12
|
||||
text_align = center
|
||||
|
||||
position = 0, 275
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label {
|
||||
font_family = DejaVu Sans Serif
|
||||
font_size = $font_size_small
|
||||
|
||||
text = cmd[] date "+%A, %B %d"
|
||||
|
||||
position = 0, 200
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
image {
|
||||
monitor =
|
||||
path = ~/.local/bin/wm/lock.png
|
||||
size = $image_size
|
||||
rounding = -1
|
||||
border_size = 0
|
||||
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
input-field {
|
||||
monitor =
|
||||
size = $image_size, $image_size
|
||||
|
||||
outline_thickness = 10
|
||||
outer_color = rgba(255, 255, 255, 0.0)
|
||||
inner_color = rgba(0, 0, 0, 0.0)
|
||||
check_color = rgba(255, 255, 255, 1.0)
|
||||
fail_color = rgba(255, 0, 0, 1.0)
|
||||
|
||||
font_family = DejaVu Sans Serif
|
||||
font_color = rgba(255, 255, 255, 0.9)
|
||||
placeholder_text =
|
||||
fail_text =
|
||||
|
||||
hide_input = true
|
||||
rounding = -1
|
||||
fade_on_empty = false
|
||||
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
@@ -11,5 +11,12 @@ autotype_default = {USERNAME}{TAB}{PASSWORD}{ENTER}
|
||||
gui_editor = emacsclient
|
||||
editor = vim
|
||||
terminal = urxvt
|
||||
|
||||
# >>> session=xorg
|
||||
type_library = xdotool
|
||||
# <<<
|
||||
# >>> session=wayland
|
||||
# type_library = ydotool
|
||||
# <<<
|
||||
|
||||
hide_groups = Recycle Bin
|
||||
|
||||
@@ -31,7 +31,7 @@ sub-auto=fuzzy
|
||||
sub-file-paths=ass:srt:sub:subs:subtitles:Subtitles
|
||||
|
||||
# [SUBTITLES LOOK] (for srt)
|
||||
sub-font="Segoe UI Semibold"
|
||||
sub-font="DejaVu Sans"
|
||||
sub-font-size=48
|
||||
sub-margin-y=36
|
||||
sub-color="#FFFFFFFF"
|
||||
|
||||
@@ -6,4 +6,5 @@ require("packages").setup({
|
||||
require("development"),
|
||||
require("git"),
|
||||
})
|
||||
require("terminal").setup()
|
||||
require("keybinds").setup()
|
||||
|
||||
+33
-32
@@ -1,42 +1,43 @@
|
||||
{
|
||||
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||
"LuaSnip": { "branch": "master", "commit": "33b06d72d220aa56a7ce80a0dd6f06c70cd82b9d" },
|
||||
"auto-save.nvim": { "branch": "main", "commit": "b58948445c43e6903987a9bb97c82e66fdcc0786" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" },
|
||||
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
|
||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
||||
"LuaSnip": { "branch": "master", "commit": "3732756842a2f7e0e76a7b0487e9692072857277" },
|
||||
"auto-save.nvim": { "branch": "main", "commit": "37c82fd548e3f5ffc2d9d020a65dac1044584f44" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
|
||||
"cmp-nvim-lua": { "branch": "main", "commit": "e3a22cb071eb9d6508a156306b102c45cd2d573d" },
|
||||
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||
"dashboard-nvim": { "branch": "master", "commit": "ae309606940d26d8c9df8b048a6e136b6bbec478" },
|
||||
"dashboard-nvim": { "branch": "master", "commit": "0775e567b6c0be96d01a61795f7b64c1758262f6" },
|
||||
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "7c493713bc2cb392706866eeba53aaef6c8e9fc6" },
|
||||
"lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" },
|
||||
"lspsaga.nvim": { "branch": "main", "commit": "2710a0ad97b5aaff404cd4756c296df454b3f726" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "5813e4878748805f1518cee7abb50fd7205a3a48" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
||||
"lspkind.nvim": { "branch": "master", "commit": "3ddd1b4edefa425fda5a9f95a4f25578727c0bb3" },
|
||||
"lspsaga.nvim": { "branch": "main", "commit": "8efe00d6aed9db6449969f889170f1a7e43101a1" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
|
||||
"neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" },
|
||||
"neogit": { "branch": "master", "commit": "40038473707c54a846bd11ecaf5933dd45858972" },
|
||||
"nvim-base16": { "branch": "master", "commit": "6ac181b5733518040a33017dde654059cd771b7c" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "3403e2e9391ed0a28c3afddd8612701b647c8e26" },
|
||||
"neogit": { "branch": "master", "commit": "d8bf9102692250193b855acd9025a826f1af2729" },
|
||||
"nvim-base16": { "branch": "master", "commit": "e05bcb99951d8ae4ecbf4ae053922fd2be6263a5" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "d97d85e01339f01b842e6ec1502f639b080cb0fc" },
|
||||
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "5a812abc65d529ea7673059a348814c21d7f87ff" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "337b503688eccb3046547661e4c738e674548fcf" },
|
||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "ad8f0a472148c3e0ae9851e26a722ee4e29b1595" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "e73d2774d12d0ecf9e05578d692ba1ea50508cf2" },
|
||||
"omnisharp-extended-lsp.nvim": { "branch": "main", "commit": "4916fa12e5b28d21a1f031f0bdd10aa15a75d85d" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "d696e36d5792daf828f8c8e8d4b9aa90c1a10c2a" },
|
||||
"nvim-treesitter": { "branch": "main", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "6788013bb9cb784e606ada44206b0e755e4323d7" },
|
||||
"omnisharp-extended-lsp.nvim": { "branch": "main", "commit": "a47388e5417e7f1cfa6962cc441a23c4c5fb2151" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||
"project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" },
|
||||
"rainbow-delimiters.nvim": { "branch": "master", "commit": "c7e489756b5455f922ce79ac374a4ede594f4a20" },
|
||||
"sqlite.lua": { "branch": "master", "commit": "d0ffd703b56d090d213b497ed4eb840495f14a11" },
|
||||
"telescope-all-recent.nvim": { "branch": "main", "commit": "267e9e5fd13a6e9a4cc6ffe00452d446d040401d" },
|
||||
"telescope-file-browser.nvim": { "branch": "master", "commit": "626998e5c1b71c130d8bc6cf7abb6709b98287bb" },
|
||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" },
|
||||
"telescope-recent-files": { "branch": "main", "commit": "3a7a1b9c6b52b6ff7938c59f64c87a05e013dff8" },
|
||||
"rainbow-delimiters.nvim": { "branch": "master", "commit": "8aafe2cbd89cd4090f573a98cab6b20366576fde" },
|
||||
"sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" },
|
||||
"telescope-all-recent.nvim": { "branch": "main", "commit": "e437f60ea468268e49ffdc0c9ed7c5ba384e63cf" },
|
||||
"telescope-file-browser.nvim": { "branch": "master", "commit": "3610dc7dc91f06aa98b11dca5cc30dfa98626b7e" },
|
||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" },
|
||||
"telescope-recent-files": { "branch": "main", "commit": "eb190c0baded1cbfa9d8767c817b054377683163" },
|
||||
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" },
|
||||
"ultimate-autopair.nvim": { "branch": "development", "commit": "9e3209190c22953566ae4e6436ad2b4ff4dabb95" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
|
||||
"toggleterm.nvim": { "branch": "main", "commit": "9a88eae817ef395952e08650b3283726786fb5fb" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
||||
"ultimate-autopair.nvim": { "branch": "development", "commit": "5835876b57901d81ebbeb3cd6ad71aaed66f82d7" },
|
||||
"vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "9b365a6428a9633e3eeb34dbef1b791511c54f70" }
|
||||
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
|
||||
}
|
||||
|
||||
@@ -3,3 +3,4 @@ require("core.config")
|
||||
require("core.buffers")
|
||||
require("core.autocommands")
|
||||
require("core.globals")
|
||||
require("core.filetypes")
|
||||
|
||||
@@ -42,12 +42,18 @@ vim.api.nvim_create_autocmd("User", {
|
||||
end,
|
||||
})
|
||||
|
||||
-- Create an autocommand for full window buffers
|
||||
vim.api.nvim_create_autocmd("BufWinEnter", {
|
||||
-- callback = require("core.buffers").add_buffer
|
||||
callback = function()
|
||||
-- Buffer tracking
|
||||
require("core.buffers").add_buffer()
|
||||
LOG(require("core.buffers").buffers)
|
||||
end,
|
||||
desc = "Track all full window buffers visited",
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "BufDelete", "BufWipeout" }, {
|
||||
callback = function(opts)
|
||||
-- Buffer tracking
|
||||
require("core.buffers").remove_buffer(opts.match)
|
||||
end,
|
||||
desc = "Track all full window buffers killed",
|
||||
})
|
||||
|
||||
@@ -4,9 +4,10 @@ local F = require("core.functions")
|
||||
|
||||
local M = {}
|
||||
|
||||
-- Buffer table structure:
|
||||
-- Buffers, categorized into groups
|
||||
-- {
|
||||
-- "Group" = { "buffer1", "buffer2", active_index = 1 }
|
||||
-- { group = "Project", buffers = { "buffer1", "buffer2" }, active_index = 1 },
|
||||
-- { group = "Other", buffers = { "buffer3", "buffer4" }, active_index = 1 },
|
||||
-- }
|
||||
M.buffers = {}
|
||||
|
||||
@@ -42,19 +43,32 @@ M.add_buffer = function()
|
||||
-- Add if buffer does not exist yet
|
||||
local add = function(config_group)
|
||||
local group = eval_group(config_group)
|
||||
if not M.buffers[group] then M.buffers[group] = {} end
|
||||
for i, buffer in ipairs(M.buffers[group]) do
|
||||
|
||||
local index
|
||||
for i, buffer_group in ipairs(M.buffers) do
|
||||
if buffer_group.group == group then index = i end
|
||||
end
|
||||
|
||||
-- Group is new entirely, so we only have 1 buffer
|
||||
if not index then
|
||||
table.insert(M.buffers, { group = group, buffers = { buffer_name }, active_index = 1 })
|
||||
return #M.buffers, 1 -- group index, buffer index
|
||||
end
|
||||
|
||||
-- Buffer previously added, set active
|
||||
for i, buffer in ipairs(M.buffers[index].buffers) do
|
||||
if buffer == buffer_name then
|
||||
M.buffers[group]["active_index"] = i
|
||||
return group, i
|
||||
M.buffers[index].active_index = i
|
||||
return index, i -- group index, buffer index
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(M.buffers[group], buffer_name)
|
||||
local count = #M.buffers[group]
|
||||
M.buffers[group]["active_index"] = count
|
||||
-- Buffer is new, add it to the list
|
||||
table.insert(M.buffers[index].buffers, buffer_name)
|
||||
local count = #M.buffers[index].buffers
|
||||
M.buffers[index].active_index = count
|
||||
|
||||
return group, count
|
||||
return index, count -- group index, buffer index
|
||||
end
|
||||
|
||||
-- Walk matcher configuration
|
||||
@@ -82,34 +96,74 @@ M.add_buffer = function()
|
||||
end
|
||||
|
||||
local get_group_from_buffer = function(buffer_name)
|
||||
for group, buffers in pairs(M.buffers) do
|
||||
for i, buffer in ipairs(buffers) do
|
||||
if buffer == buffer_name then return group, i end
|
||||
for i, buffer_group in ipairs(M.buffers) do
|
||||
for j, buffer in ipairs(buffer_group.buffers) do
|
||||
if buffer == buffer_name then
|
||||
return i, j -- group index, buffer index
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
local focus_buffer = function(new_buffer_name)
|
||||
for _, buffer in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.api.nvim_buf_get_name(buffer) == new_buffer_name then
|
||||
vim.api.nvim_set_current_buf(buffer)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
M.remove_buffer = function(buffer_name)
|
||||
if not buffer_name or buffer_name == "" then return end
|
||||
|
||||
local group_index, buffer_index = get_group_from_buffer(buffer_name)
|
||||
if not group_index or not buffer_index then return end
|
||||
|
||||
local buffer_group = M.buffers[group_index]
|
||||
|
||||
-- Remove the buffer and decrease active index
|
||||
table.remove(buffer_group.buffers, buffer_index)
|
||||
buffer_group.active_index = math.max(buffer_group.active_index - 1, 1)
|
||||
local new_buffer_name = buffer_group.buffers[buffer_group.active_index]
|
||||
|
||||
-- If there are now no buffers in the group, delete the group
|
||||
if #buffer_group.buffers == 0 then
|
||||
table.remove(M.buffers, group_index)
|
||||
if #M.buffers == 0 then return end
|
||||
if #M.buffers < group_index then group_index = group_index - 1 end
|
||||
new_buffer_name = M.buffers[group_index].buffers[M.buffers[group_index].active_index]
|
||||
end
|
||||
|
||||
-- Make the new index the active buffer
|
||||
focus_buffer(new_buffer_name)
|
||||
end
|
||||
|
||||
local buffer_action_in_active_group = function(action, direction)
|
||||
local buffer_name = get_buffer_name()
|
||||
if not buffer_name then return end
|
||||
|
||||
local group, index = get_group_from_buffer(buffer_name)
|
||||
if not group then group, index = M.add_buffer() end
|
||||
-- Get active group from the current buffer
|
||||
local group_index, buffer_index = get_group_from_buffer(buffer_name)
|
||||
if not group_index then group_index, buffer_index = M.add_buffer() end
|
||||
|
||||
local buffers = M.buffers[group]
|
||||
-- Get buffer set
|
||||
local buffers = M.buffers[group_index].buffers
|
||||
if #buffers < 2 then return end
|
||||
|
||||
-- Determine the other index
|
||||
local other_index = index + direction
|
||||
if index == 1 and direction == -1 then
|
||||
local other_index = buffer_index + direction
|
||||
if buffer_index == 1 and direction == -1 then
|
||||
other_index = #buffers
|
||||
elseif index == #buffers and direction == 1 then
|
||||
elseif buffer_index == #buffers and direction == 1 then
|
||||
other_index = 1
|
||||
end
|
||||
|
||||
if action == "move" then
|
||||
for _, buffer in ipairs(vim.api.nvim_list_bufs()) do
|
||||
-- TODO: Probably not needed if the other autocommands are implemented
|
||||
-- Remove inactive buffers
|
||||
if not vim.api.nvim_buf_is_loaded(buffer) then
|
||||
for i, group_buffer in ipairs(buffers) do
|
||||
@@ -127,7 +181,7 @@ local buffer_action_in_active_group = function(action, direction)
|
||||
-- Make buffer active
|
||||
if vim.api.nvim_buf_get_name(buffer) == buffers[other_index] then
|
||||
vim.api.nvim_set_current_buf(buffer)
|
||||
buffers.active_index = other_index
|
||||
M.buffers[group_index].active_index = other_index
|
||||
break
|
||||
end
|
||||
|
||||
@@ -135,11 +189,11 @@ local buffer_action_in_active_group = function(action, direction)
|
||||
end
|
||||
elseif action == "swap" then
|
||||
local tmp = buffers[other_index]
|
||||
buffers[other_index] = buffers[index]
|
||||
buffers[index] = tmp
|
||||
buffers[other_index] = buffers[buffer_index]
|
||||
buffers[buffer_index] = tmp
|
||||
end
|
||||
|
||||
M.buffers[group] = buffers
|
||||
M.buffers[group_index].buffers = buffers
|
||||
end
|
||||
|
||||
M.buffer_move_left = function()
|
||||
@@ -165,13 +219,28 @@ local buffer_group_move = function(direction)
|
||||
local buffer_name = get_buffer_name()
|
||||
if not buffer_name then return end
|
||||
|
||||
-- TODO: How to get groups deterministically?
|
||||
|
||||
-- Get active group from the current buffer
|
||||
local group_index, _ = get_group_from_buffer(buffer_name)
|
||||
if not group_index then group_index, _ = M.add_buffer() end
|
||||
|
||||
-- Check groups bounds
|
||||
if #M.buffers < 2 then return end
|
||||
|
||||
-- Change active group
|
||||
-- Determine the other index
|
||||
local other_index = group_index + direction
|
||||
if group_index == 1 and direction == -1 then
|
||||
other_index = #M.buffers
|
||||
elseif group_index == #M.buffers and direction == 1 then
|
||||
other_index = 1
|
||||
end
|
||||
|
||||
-- Get active index from other group
|
||||
local other_active_index = M.buffers[other_index].active_index
|
||||
|
||||
-- Make buffer active
|
||||
-- TODO: What do if this buffer no longer exists?
|
||||
local other_buffer = M.buffers[other_index].buffers[other_active_index]
|
||||
focus_buffer(other_buffer)
|
||||
end
|
||||
|
||||
M.buffer_group_move_up = function()
|
||||
@@ -182,32 +251,97 @@ M.buffer_group_move_down = function()
|
||||
buffer_group_move(1)
|
||||
end
|
||||
|
||||
-- TODO: functions that can
|
||||
-- v Navigate buffer left
|
||||
-- v Navigate buffer right
|
||||
-- - Navigate group up (use active_index when swapping)
|
||||
-- - Navigate group down
|
||||
-- v Move buffer left
|
||||
-- v Move buffer right
|
||||
-- - Remove buffer from currently active group (decrease active_index)
|
||||
--------------------------------------------
|
||||
-- Telescope functionss
|
||||
|
||||
local pick = function(title, items, entry_maker, action)
|
||||
local actions = require("telescope.actions")
|
||||
local action_state = require("telescope.actions.state")
|
||||
local conf = require("telescope.config").values
|
||||
local finders = require("telescope.finders")
|
||||
local pickers = require("telescope.pickers")
|
||||
|
||||
pickers.new({}, {
|
||||
prompt_title = title,
|
||||
finder = finders.new_table {
|
||||
results = items,
|
||||
entry_maker = entry_maker,
|
||||
},
|
||||
previewer = false,
|
||||
sorter = conf.generic_sorter({}),
|
||||
attach_mappings = function(prompt_bufnr)
|
||||
actions.select_default:replace(function()
|
||||
actions.close(prompt_bufnr)
|
||||
|
||||
local selection = action_state.get_selected_entry()
|
||||
action(selection)
|
||||
end)
|
||||
|
||||
return true
|
||||
end,
|
||||
}):find()
|
||||
end
|
||||
|
||||
M.buffer_pick_buffer = function()
|
||||
local buffer_name = get_buffer_name()
|
||||
if not buffer_name then return end
|
||||
|
||||
-- Get active group from the current buffer
|
||||
local group_index, _ = get_group_from_buffer(buffer_name)
|
||||
if not group_index then group_index, _ = M.add_buffer() end
|
||||
|
||||
-- Get all buffers from the active group
|
||||
local buffers = {}
|
||||
for i, buffer in ipairs(M.buffers[group_index].buffers) do
|
||||
table.insert(buffers, { key = buffer, value = tostring(i) })
|
||||
end
|
||||
|
||||
pick("Group buffers",
|
||||
buffers,
|
||||
function(buffer)
|
||||
-- Only show last part of the path
|
||||
local display = buffer.key:match("^.+/(.+)$") or buffer.key
|
||||
return {
|
||||
display = display, -- shown in the picker
|
||||
ordinal = buffer.value, -- used for sorting/filtering
|
||||
value = buffer.value, -- actual value
|
||||
}
|
||||
end,
|
||||
function(selection)
|
||||
local new_buffer_name = M.buffers[group_index].buffers[tonumber(selection.value)]
|
||||
|
||||
-- Make new buffer active
|
||||
focus_buffer(new_buffer_name)
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
M.buffer_pick_group = function()
|
||||
-- Get all groups
|
||||
local groups = {}
|
||||
for i, buffer_group in ipairs(M.buffers) do
|
||||
table.insert(groups, { key = buffer_group.group, value = tostring(i) })
|
||||
end
|
||||
|
||||
pick("Groups",
|
||||
groups,
|
||||
function(group)
|
||||
-- Only show last part of the path
|
||||
local display = group.key:match("^.+/(.+)$") or group.key
|
||||
return {
|
||||
display = display, -- shown in the picker
|
||||
ordinal = group.value, -- used for sorting/filtering
|
||||
value = group.value, -- actual value
|
||||
}
|
||||
end,
|
||||
function(selection)
|
||||
local buffer_group = M.buffers[tonumber(selection.value)]
|
||||
local new_buffer_name = buffer_group.buffers[buffer_group.active_index]
|
||||
|
||||
-- Make new buffer active
|
||||
focus_buffer(new_buffer_name)
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
return M
|
||||
|
||||
|
||||
-- (cond
|
||||
-- ((string-equal "*" (substring (buffer-name) 0 1)) "Emacs")
|
||||
-- ((or (memq major-mode '(magit-process-mode
|
||||
-- magit-status-mode
|
||||
-- magit-diff-mode
|
||||
-- magit-log-mode
|
||||
-- magit-file-mode
|
||||
-- magit-blob-mode
|
||||
-- magit-blame-mode))
|
||||
-- (string= (buffer-name) "COMMIT_EDITMSG")) "Magit")
|
||||
-- ((project-current) (dot/project-project-name))
|
||||
-- ((memq major-mode '(org-mode
|
||||
-- emacs-lisp-mode)) "Org Mode")
|
||||
-- ((derived-mode-p 'dired-mode) "Dired")
|
||||
-- ((derived-mode-p 'prog-mode
|
||||
-- 'text-mode) "Editing")
|
||||
-- (t "Other")))))
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
vim.filetype.add({
|
||||
extension = {
|
||||
flw = "lua",
|
||||
},
|
||||
})
|
||||
@@ -6,13 +6,18 @@ M.is_buffer_a_file = function()
|
||||
return buffer_name ~= "" and vim.fn.filereadable(buffer_name) == 1
|
||||
end
|
||||
|
||||
M.normalize_path = function(path)
|
||||
if not path then return nil end
|
||||
return IS_WINDOWS() and path:gsub("\\", "/") or path
|
||||
end
|
||||
|
||||
M.get_file_path = function()
|
||||
if not M.is_buffer_a_file() then
|
||||
return nil
|
||||
end
|
||||
local file_path = vim.fn.expand("%:p")
|
||||
|
||||
return vim.fn.fnamemodify(file_path, ":h") .. "/"
|
||||
return M.normalize_path(vim.fn.fnamemodify(file_path, ":h")) .. "/"
|
||||
end
|
||||
|
||||
M.get_netrw_path = function() -- b:netrw_curdir
|
||||
@@ -20,29 +25,30 @@ M.get_netrw_path = function() -- b:netrw_curdir
|
||||
return nil
|
||||
end
|
||||
|
||||
return vim.fn.fnamemodify(vim.fn.bufname(), ":p")
|
||||
return M.normalize_path(vim.fn.fnamemodify(vim.fn.bufname(), ":p"))
|
||||
end
|
||||
|
||||
M.get_current_directory = function()
|
||||
return M.get_file_path() or M.get_netrw_path() or vim.fn.getcwd()
|
||||
return M.get_file_path() or M.get_netrw_path() or M.normalize_path(vim.fn.getcwd())
|
||||
end
|
||||
|
||||
M.find_project_root = function()
|
||||
local current_directory = M.get_current_directory()
|
||||
if current_directory:match("^term://") then return nil, current_directory end
|
||||
|
||||
local directory = current_directory
|
||||
while directory ~= "/" do
|
||||
while directory ~= "/" and not directory:match("^%a:[/\\]?$") do
|
||||
local git_path = vim.loop.fs_stat(directory .. "/.git")
|
||||
if git_path then
|
||||
return directory:gsub("/$", "") -- remove trailing slash
|
||||
return M.normalize_path(directory:gsub("/$", "")) -- remove trailing slash
|
||||
end
|
||||
|
||||
local project_file = vim.loop.fs_stat(directory .. "/.project")
|
||||
if project_file and project_file.type == "file" then
|
||||
return directory:gsub("/$", "") -- remove trailing slash
|
||||
return M.normalize_path(directory:gsub("/$", "")) -- remove trailing slash
|
||||
end
|
||||
|
||||
directory = vim.fn.fnamemodify(directory, ":h")
|
||||
directory = M.normalize_path(vim.fn.fnamemodify(directory, ":h"))
|
||||
end
|
||||
|
||||
return nil, current_directory
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
IS_WINDOWS = function()
|
||||
return string.find(vim.loop.os_uname().sysname, "NT")
|
||||
end
|
||||
|
||||
-- Usage:
|
||||
-- :lua P("Hello World!")
|
||||
P = function(v)
|
||||
@@ -15,5 +19,5 @@ R = function(name)
|
||||
end
|
||||
|
||||
LOG = function(v)
|
||||
vim.fn.writefile({ vim.inspect(v) }, "/tmp/nvim-log", "a")
|
||||
vim.fn.writefile({ vim.inspect(v) }, vim.fn.stdpath("cache") .. "/log", "a")
|
||||
end
|
||||
|
||||
@@ -124,13 +124,13 @@ return {
|
||||
-- https://github.com/vuejs/language-tools?tab=readme-ov-file#hybrid-mode-configuration-requires-vuelanguage-server-version-200
|
||||
-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/configs/ts_ls.lua#L4
|
||||
},
|
||||
volar = {
|
||||
-- init_options = {
|
||||
-- vue = {
|
||||
-- hybridMode = false,
|
||||
-- volar = {
|
||||
-- -- init_options = {
|
||||
-- -- vue = {
|
||||
-- -- hybridMode = false,
|
||||
-- -- },
|
||||
-- -- },
|
||||
-- },
|
||||
-- },
|
||||
},
|
||||
-- volar = {
|
||||
-- -- init_options = {
|
||||
-- -- typescript = {
|
||||
@@ -139,6 +139,7 @@ return {
|
||||
-- -- },
|
||||
-- -- filetypes = {'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue', 'json'}
|
||||
-- },
|
||||
vue_ls = {},
|
||||
}
|
||||
|
||||
-- nvim-cmp supports additional completion capabilities, so broadcast that to servers
|
||||
@@ -152,8 +153,13 @@ return {
|
||||
})
|
||||
-- P(server)
|
||||
-- P(opts)
|
||||
if vim.lsp.config then
|
||||
vim.lsp.config(server, opts)
|
||||
vim.lsp.enable(server)
|
||||
else
|
||||
require("lspconfig")[server].setup(opts)
|
||||
end
|
||||
end
|
||||
end,
|
||||
},
|
||||
|
||||
|
||||
@@ -223,6 +223,10 @@ M.search_buffer = function()
|
||||
})
|
||||
end
|
||||
|
||||
M.toggle_term = function()
|
||||
vim.api.nvim_command("ToggleTerm")
|
||||
end
|
||||
|
||||
-- TODO: Temporary copy/pasted until project_nvim exposes this function
|
||||
-- https://github.com/ahmedkhalf/project.nvim/issues/145
|
||||
-- TODO: Create a Telescope extension out of this, for telescope-all-recent
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
local K = vim.keymap.set
|
||||
|
||||
local builtin
|
||||
local bs = require("core.buffers")
|
||||
local wk = require("which-key")
|
||||
|
||||
local F = require("keybind-functions")
|
||||
@@ -57,6 +58,18 @@ M.setup = function()
|
||||
K("i", "<BS>", F.hungry_delete_backspace())
|
||||
K("i", "<Del>", F.hungry_delete())
|
||||
|
||||
-- Navigation
|
||||
K("n", "<M-h>", bs.buffer_move_left)
|
||||
K("n", "<M-j>", bs.buffer_group_move_down)
|
||||
K("n", "<M-k>", bs.buffer_group_move_up)
|
||||
K("n", "<M-l>", bs.buffer_move_right)
|
||||
K("n", "<M-H>", bs.buffer_swap_left)
|
||||
K("n", "<M-L>", bs.buffer_swap_right)
|
||||
|
||||
-- Terminal
|
||||
K("n", "<C-\\>", F.toggle_term)
|
||||
K("t", "<C-\\>", F.toggle_term)
|
||||
|
||||
----------------------------------------
|
||||
--- Leader keys ---
|
||||
|
||||
@@ -66,6 +79,7 @@ M.setup = function()
|
||||
|
||||
F.wk("<leader>b", "buffer/bookmark")
|
||||
K("n", "<leader>bb", builtin.buffers, { desc = "Switch buffer" })
|
||||
K("n", "<leader>bB", bs.buffer_pick_buffer, { desc = "Switch tab group buffer" })
|
||||
K("n", "<leader>bd", F.buffer_dashboard, { desc = "Dashboard" })
|
||||
|
||||
|
||||
@@ -112,6 +126,10 @@ M.setup = function()
|
||||
K("n", "<leader>sq", ":nohlsearch<CR>", { desc = "Stop search", silent = true })
|
||||
|
||||
|
||||
F.wk("<leader>t", "tabs/toggle")
|
||||
K("n", "<leader>tg", bs.buffer_pick_group, { desc = "Switch tab group" })
|
||||
|
||||
|
||||
F.wk("<leader>v", "git") -- version control
|
||||
K("n", "<leader>vr", F.vc_select_repo, { desc = "Select repo" })
|
||||
K("n", "<leader>vv", F.vc_status, { desc = "Neogit status" })
|
||||
@@ -239,4 +257,17 @@ M.telescope_default_mappings = function()
|
||||
}
|
||||
end
|
||||
|
||||
-- Keybindings for toggleterm.nvim
|
||||
M.toggleterm_nvim = function()
|
||||
local keymaps = function()
|
||||
local opts = { buffer = 0 }
|
||||
K("t", "<Esc>", [[<C-\><C-n>]], opts)
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("TermOpen", {
|
||||
pattern = "term://*toggleterm#*",
|
||||
callback = keymaps,
|
||||
})
|
||||
end
|
||||
|
||||
return M
|
||||
|
||||
@@ -9,9 +9,9 @@ return {
|
||||
-- Fuzzy Finder Algorithm which requires local dependencies to be built.
|
||||
{
|
||||
"nvim-telescope/telescope-fzf-native.nvim",
|
||||
build = "make",
|
||||
build = IS_WINDOWS() and "mingw32-make" or "make",
|
||||
cond = function()
|
||||
return vim.fn.executable "make" == 1
|
||||
return vim.fn.executable(IS_WINDOWS() and "mingw32-make" or "make") == 1
|
||||
end,
|
||||
},
|
||||
-- Extensions
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
-- Module for managing popup terminal
|
||||
|
||||
local M = {}
|
||||
|
||||
M.persistent_term = nil
|
||||
|
||||
local create_command = function(name, command)
|
||||
if not name or type(name) ~= "string" then return end
|
||||
|
||||
vim.api.nvim_create_user_command(name, function()
|
||||
local cmd = type(command) == "function" and command() or command
|
||||
M.send_cmd_to_term(cmd)
|
||||
end, {})
|
||||
end
|
||||
|
||||
M.setup = function()
|
||||
-- Setup keybinds
|
||||
require("keybinds").toggleterm_nvim()
|
||||
|
||||
create_command("RunScript", "sleep 2 && ls /")
|
||||
create_command("ScanScript", function()
|
||||
local file_path = vim.fn.expand("%:p")
|
||||
LOG(file_path)
|
||||
|
||||
return "ls"
|
||||
end)
|
||||
end
|
||||
|
||||
M.send_cmd_to_term = function(cmd)
|
||||
local term = require("toggleterm.terminal").Terminal
|
||||
local default = term:new({ id = 1 })
|
||||
if not default:is_open() then default:open() end
|
||||
default:send(cmd)
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -183,4 +183,27 @@ return {
|
||||
opts = {},
|
||||
}, -- :ColorizerToggle
|
||||
|
||||
-- Popup terminal
|
||||
{
|
||||
"akinsho/toggleterm.nvim",
|
||||
config = function()
|
||||
vim.cmd [[let &shellcmdflag = '-s']] -- required for Windows
|
||||
require("toggleterm").setup({
|
||||
auto_scroll = true,
|
||||
direction = "float",
|
||||
float_opts = {
|
||||
border = "curved",
|
||||
row = function() return vim.o.lines - 4 end,
|
||||
width = function() return vim.o.columns - 6 end,
|
||||
height = 20,
|
||||
winblend = 0,
|
||||
},
|
||||
hide_numbers = true,
|
||||
open_mapping = nil,
|
||||
persist_mode = true,
|
||||
size = 20,
|
||||
start_in_insert = true,
|
||||
})
|
||||
end,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"export-settings-ini": true,
|
||||
"export-gtkrc-20": true,
|
||||
"export-index-theme": true,
|
||||
"export-xsettingsd": true,
|
||||
"export-gtk4-symlinks": true
|
||||
}
|
||||
@@ -3,7 +3,7 @@ color_scheme_path=/usr/share/qt5ct/colors/darker.conf
|
||||
custom_palette=false
|
||||
icon_theme=Arc
|
||||
standard_dialogs=default
|
||||
style=qt5gtk2
|
||||
style=kvantum
|
||||
|
||||
[Fonts]
|
||||
fixed=@Variant(\0\0\0@\0\0\0\x16\0\x44\0\x65\0j\0\x61\0V\0u\0 \0S\0\x61\0n\0s@$\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10)
|
||||
|
||||
@@ -3,11 +3,11 @@ color_scheme_path=/usr/share/qt6ct/colors/darker.conf
|
||||
custom_palette=false
|
||||
icon_theme=Arc
|
||||
standard_dialogs=default
|
||||
style=qt6gtk2
|
||||
style=kvantum
|
||||
|
||||
[Fonts]
|
||||
fixed=@Variant(\0\0\0@\0\0\0\x16\0\x44\0\x65\0j\0\x61\0V\0u\0 \0S\0\x61\0n\0s@$\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10)
|
||||
general=@Variant(\0\0\0@\0\0\0\x16\0\x44\0\x65\0j\0\x61\0V\0u\0 \0S\0\x61\0n\0s@$\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10)
|
||||
fixed="DejaVu Sans,10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
||||
general="DejaVu Sans,10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
||||
|
||||
[Interface]
|
||||
activate_item_on_single_click=1
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
// -*- mode: jsonc -*-
|
||||
{
|
||||
// "layer": "top", // Waybar at top layer
|
||||
"position": "top",
|
||||
"height": 22, // Waybar height (to be removed for auto height)
|
||||
"spacing": 0, // Gaps between modules (4px)
|
||||
// Choose the order of the modules
|
||||
"modules-left": [
|
||||
"hyprland/workspaces",
|
||||
],
|
||||
"modules-center": [
|
||||
"hyprland/window"
|
||||
],
|
||||
"modules-right": [
|
||||
"custom/btc",
|
||||
"pulseaudio",
|
||||
"backlight",
|
||||
"network",
|
||||
"battery",
|
||||
"custom/battery-low",
|
||||
"clock",
|
||||
"tray",
|
||||
"custom/power"
|
||||
],
|
||||
// Modules configuration
|
||||
"hyprland/workspaces": {
|
||||
"disable-scroll": false,
|
||||
"on-scroll-up": "hyprctl dispatch workspace -1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace +1",
|
||||
"all-outputs": false,
|
||||
"warp-on-scroll": false,
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"1": "一",
|
||||
"2": "二",
|
||||
"3": "三",
|
||||
"4": "四",
|
||||
"5": "五",
|
||||
"6": "六",
|
||||
"7": "七",
|
||||
"8": "八",
|
||||
"9": "九",
|
||||
"10": "十",
|
||||
"urgent": "",
|
||||
"focused": "",
|
||||
"default": ""
|
||||
}
|
||||
},
|
||||
"custom/btc": {
|
||||
"escape": false,
|
||||
"exec": "$HOME/.local/bin/panel/btc.sh",
|
||||
"interval": 300,
|
||||
"format": " {}",
|
||||
"tooltip": false
|
||||
},
|
||||
"pulseaudio": {
|
||||
"scroll-step": 2, // %, can be a float
|
||||
"format": "{icon} {volume}%",
|
||||
"format-bluetooth": "{icon} {volume}%",
|
||||
"format-bluetooth-muted": " {icon}",
|
||||
"format-muted": " {volume}%",
|
||||
"format-source": "{volume}%",
|
||||
"format-source-muted": "",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"on-click": "pavucontrol"
|
||||
},
|
||||
"backlight": {
|
||||
"device": "intel_backlight",
|
||||
"format": "{percent}% {icon}",
|
||||
"format-icons": ["", "", "", "", "", "", "", "", ""]
|
||||
},
|
||||
"network": {
|
||||
"format-wifi": " {signalStrength}%",
|
||||
"format-ethernet": "",
|
||||
"tooltip-format": "{ifname}: {ipaddr}/{cidr}\n via {gwaddr}",
|
||||
"tooltip-format-wifi": "{ifname}: {ipaddr}/{cidr}\n via {gwaddr}\n ssid {essid}",
|
||||
"tooltip-format-disconnected": "Disconnected",
|
||||
"format-linked": " (No IP)",
|
||||
"format-disconnected": "<span color='#676e7d'></span>",
|
||||
"on-click": "$HOME/.local/bin/panel/iface.sh"
|
||||
},
|
||||
"battery": {
|
||||
"bat": "BAT0",
|
||||
"interval": 30,
|
||||
"full-at": 98,
|
||||
"states": {
|
||||
"good": 95,
|
||||
"critical": 20
|
||||
},
|
||||
"format": "{icon} {capacity}% ({time})",
|
||||
"format-time": "{H}:{m}",
|
||||
"format-full": "{icon} {capacity}%",
|
||||
"format-charging": " {capacity}%",
|
||||
"format-plugged": " {capacity}%",
|
||||
"format-icons": ["", "", "", "", ""]
|
||||
},
|
||||
"custom/battery-low": {
|
||||
"exec": "$HOME/.local/bin/panel/battery.sh",
|
||||
"interval": 30,
|
||||
"format": "",
|
||||
"tooltip": false
|
||||
},
|
||||
"clock": {
|
||||
// "timezone": "America/New_York",
|
||||
"tooltip-format": "<tt><small>{calendar}</small></tt>",
|
||||
"calendar": {
|
||||
"mode" : "month",
|
||||
"mode-mon-col" : 3,
|
||||
"weeks-pos" : "right",
|
||||
"format": {
|
||||
"months": "<span color='#b294bb'><b>{}</b></span>",
|
||||
"days": "<span color='#fff'><b>{}</b></span>",
|
||||
"weeks": "<span color='#81a2be'><b>W{}</b></span>",
|
||||
"weekdays": "<span color='#8abeb7'><b>{}</b></span>",
|
||||
"today": "<span color='#f0c674'><b><u>{}</u></b></span>"
|
||||
}
|
||||
},
|
||||
"format": " {:%I:%M %p}",
|
||||
"on-click": "$HOME/.local/bin/panel/date.sh"
|
||||
},
|
||||
"tray": {
|
||||
// "icon-size": 21,
|
||||
"spacing": 10
|
||||
},
|
||||
"custom/power": {
|
||||
"format": "⏻",
|
||||
"tooltip": false,
|
||||
"menu": "on-click",
|
||||
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
|
||||
"menu-actions": {
|
||||
"lock": "hyprlock",
|
||||
"shutdown": "shutdown",
|
||||
"reboot": "reboot",
|
||||
"suspend": "systemctl suspend",
|
||||
"hibernate": "systemctl hibernate"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<object class="GtkMenu" id="menu">
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="lock">
|
||||
<property name="label">Lock</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="suspend">
|
||||
<property name="label">Suspend</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="hibernate">
|
||||
<property name="label">Hibernate</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="shutdown">
|
||||
<property name="label">Shutdown</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSeparatorMenuItem" id="delimiter1"/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="reboot">
|
||||
<property name="label">Reboot</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
||||
@@ -0,0 +1,236 @@
|
||||
@define-color black #000;
|
||||
@define-color red #a54242; /* 1 */
|
||||
@define-color orange #de935f; /* 3 */
|
||||
@define-color blue #5f819d; /* 4 */
|
||||
@define-color green #b5bd68; /* 10 */
|
||||
|
||||
@define-color bgcolor #404552;
|
||||
@define-color bgcolor-inactive #2b2e39;
|
||||
@define-color bgcolor-urgent #dc7a43;
|
||||
@define-color fgcolor #fff;
|
||||
@define-color fgcolor-inactive #676e7d;
|
||||
|
||||
* {
|
||||
/* `otf-font-awesome` is required to be installed for icons */
|
||||
font-family: FontAwesome, DejaVu Sans Serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: @bgcolor-inactive;
|
||||
color: @fgcolor;
|
||||
transition-property: background-color;
|
||||
transition-duration: .5s;
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
button {
|
||||
/* Use box-shadow instead of border so the text isn't offset */
|
||||
box-shadow: inset 0 -3px transparent;
|
||||
/* Avoid rounded borders under each button name */
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
|
||||
button:hover {
|
||||
background: inherit;
|
||||
box-shadow: inset 0 -3px @fgcolor;
|
||||
}
|
||||
|
||||
#custom-btc,
|
||||
#pulseaudio,
|
||||
#wireplumber,
|
||||
#custom-media,
|
||||
#backlight,
|
||||
#network,
|
||||
#battery,
|
||||
#clock,
|
||||
#tray,
|
||||
#custom-power {
|
||||
padding: 0 6px;
|
||||
color: @fgcolor;
|
||||
}
|
||||
|
||||
#window,
|
||||
#workspaces {
|
||||
margin: 0 4px;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: @fgcolor;
|
||||
color: @black;
|
||||
}
|
||||
}
|
||||
|
||||
label:focus {
|
||||
background-color: @black;
|
||||
}
|
||||
|
||||
/* -------------------------------------- */
|
||||
/* Workspaces module */
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 5px;
|
||||
background-color: transparent;
|
||||
color: @fgcolor-inactive;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#workspaces button:hover,
|
||||
#workspaces button.empty:hover {
|
||||
background-color: @bgcolor;
|
||||
color: @fgcolor-inactive;
|
||||
}
|
||||
|
||||
#workspaces button.active,
|
||||
#workspaces button.active.empty {
|
||||
background-color: @bgcolor;
|
||||
box-shadow: inset 0 -3px @blue;
|
||||
color: @fgcolor;
|
||||
}
|
||||
|
||||
#workspaces button.empty {
|
||||
background-color: transparent;
|
||||
color: @bgcolor;
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
background-color: @bgcolor;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background-color: @bgcolor-urgent;
|
||||
}
|
||||
|
||||
/* If workspaces is the leftmost module, omit left margin */
|
||||
.modules-left > widget:first-child > #workspaces {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/* If workspaces is the rightmost module, omit right margin */
|
||||
.modules-right > widget:last-child > #workspaces {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
/* -------------------------------------- */
|
||||
/* BTC module */
|
||||
|
||||
#custom-btc:hover {
|
||||
background-color: @bgcolor;
|
||||
}
|
||||
|
||||
/* -------------------------------------- */
|
||||
/* Media modules */
|
||||
|
||||
#pulseaudio, #wireplumber {
|
||||
color: @fgcolor;
|
||||
}
|
||||
|
||||
#pulseaudio:hover, #wireplumber:hover {
|
||||
background-color: @bgcolor;
|
||||
}
|
||||
|
||||
#pulseaudio.muted, #wireplumber.muted {
|
||||
color: @fgcolor-inactive
|
||||
}
|
||||
|
||||
#custom-media {
|
||||
color: @green;
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
#custom-media.custom-spotify {
|
||||
color: @green;
|
||||
}
|
||||
|
||||
#custom-media.custom-vlc {
|
||||
color: @orange;
|
||||
}
|
||||
|
||||
/* -------------------------------------- */
|
||||
/* Backlight module */
|
||||
|
||||
#backlight:hover {
|
||||
background-color: @bgcolor;
|
||||
}
|
||||
|
||||
/* -------------------------------------- */
|
||||
/* Network module */
|
||||
|
||||
#network:hover {
|
||||
background-color: @bgcolor;
|
||||
}
|
||||
|
||||
#network.disconnected {
|
||||
background-color: @bgcolor-inactive;
|
||||
}
|
||||
|
||||
/* -------------------------------------- */
|
||||
/* Battery module */
|
||||
|
||||
#battery:hover {
|
||||
background-color: @bgcolor;
|
||||
}
|
||||
|
||||
#battery.good {
|
||||
color: @green;
|
||||
}
|
||||
|
||||
/* Using steps() instead of linear as a timing function to limit cpu usage */
|
||||
#battery.critical:not(.charging) {
|
||||
background-color: @bgcolor-urgent;
|
||||
animation-name: blink;
|
||||
animation-duration: 2s;
|
||||
animation-timing-function: steps(3);
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
/* -------------------------------------- */
|
||||
/* Clock module */
|
||||
|
||||
#clock:hover {
|
||||
background-color: @bgcolor;
|
||||
}
|
||||
|
||||
/* -------------------------------------- */
|
||||
/* Tray module */
|
||||
|
||||
#tray:hover {
|
||||
background-color: @bgcolor;
|
||||
}
|
||||
|
||||
#tray > .passive {
|
||||
-gtk-icon-effect: dim;
|
||||
}
|
||||
|
||||
#tray > .needs-attention {
|
||||
-gtk-icon-effect: highlight;
|
||||
background-color: @bgcolor-urgent;
|
||||
}
|
||||
|
||||
/* -------------------------------------- */
|
||||
/* Power module */
|
||||
|
||||
#custom-power {
|
||||
color: @red;
|
||||
}
|
||||
|
||||
#custom-power:hover {
|
||||
background-color: @bgcolor;
|
||||
}
|
||||
|
||||
/* If power module is the leftmost module, set left margin */
|
||||
.modules-left > widget:first-child > #custom-power {
|
||||
margin-left: 6px;
|
||||
}
|
||||
|
||||
/* If power module is the rightmost module, set right margin */
|
||||
.modules-right > widget:last-child > #custom-power {
|
||||
margin-right: 6px;
|
||||
}
|
||||
@@ -1,20 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.1" encoding="UTF-8"?>
|
||||
|
||||
<channel name="thunar" version="1.0">
|
||||
<property name="last-view" type="string" value="ThunarDetailsView"/>
|
||||
<property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_LARGEST"/>
|
||||
<property name="last-window-width" type="int" value="3000"/>
|
||||
<property name="last-window-height" type="int" value="1962"/>
|
||||
<property name="last-window-maximized" type="bool" value="false"/>
|
||||
<property name="last-separator-position" type="int" value="400"/>
|
||||
<property name="last-window-maximized" type="bool" value="true"/>
|
||||
<property name="last-separator-position" type="int" value="209"/>
|
||||
<property name="misc-single-click" type="bool" value="false"/>
|
||||
<property name="misc-volume-management" type="bool" value="true"/>
|
||||
<property name="last-details-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_SMALLEST"/>
|
||||
<property name="last-details-view-column-widths" type="string" value="50,241,50,50,1757,50,50,160,440"/>
|
||||
<property name="last-details-view-column-widths" type="string" value="50,241,136,50,85,352,50,160,744,50,50,63,50,108"/>
|
||||
<property name="last-show-hidden" type="bool" value="true"/>
|
||||
<property name="last-sort-column" type="string" value="THUNAR_COLUMN_NAME"/>
|
||||
<property name="last-sort-order" type="string" value="GTK_SORT_ASCENDING"/>
|
||||
<property name="last-side-pane" type="string" value="ThunarShortcutsPane"/>
|
||||
<property name="last-side-pane" type="string" value="THUNAR_SIDEPANE_TYPE_SHORTCUTS"/>
|
||||
<property name="last-location-bar" type="string" value="ThunarLocationEntry"/>
|
||||
<property name="hidden-bookmarks" type="array">
|
||||
<value type="string" value="network:///"/>
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
Net/ThemeName "Arc-Dark"
|
||||
Net/IconThemeName "Arc"
|
||||
Gtk/CursorThemeName "capitaine-cursors-light"
|
||||
Net/EnableEventSounds 1
|
||||
EnableInputFeedbackSounds 1
|
||||
Xft/Antialias 1
|
||||
Xft/Hinting 1
|
||||
Xft/HintStyle "hintslight"
|
||||
Xft/RGBA "rgb"
|
||||
@@ -1,3 +1,7 @@
|
||||
XORG_USER='rick'
|
||||
|
||||
if [ "$WAYLAND" = true ]; then
|
||||
[ "$USER" = "$XORG_USER" ] && [ "$(tty)" = "/dev/tty1" ] && exec hyprland > /dev/null 2>&1
|
||||
else
|
||||
[ "$USER" = "$XORG_USER" ] && [ "$(tty)" = "/dev/tty1" ] && exec xinit -- vt1 > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
+15
-1
@@ -24,6 +24,11 @@ export R_ENVIRON_USER="$XDG_CONFIG_HOME/R/Renviron"
|
||||
# export HIDPI=true
|
||||
# <<<
|
||||
|
||||
# Wayland
|
||||
# >>> system=wayland
|
||||
# export WAYLAND=true
|
||||
# <<<
|
||||
|
||||
#--- Program Specific ---#
|
||||
|
||||
# Android
|
||||
@@ -79,7 +84,12 @@ if [ "$HIDPI" = true ]; then
|
||||
export QT_AUTO_SCREEN_SCALE_FACTOR=0
|
||||
export QT_SCREEN_SCALE_FACTORS=2
|
||||
fi
|
||||
export QT_QPA_PLATFORMTHEME="qt5gtk2"
|
||||
if [ "$WAYLAND" = true ]; then
|
||||
export QT_QPA_PLATFORM="wayland"
|
||||
fi
|
||||
export QT_QPA_PLATFORMTHEME="qt5ct"
|
||||
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
|
||||
export QT_STYLE_OVERRIDE="kvantum"
|
||||
|
||||
# Rust
|
||||
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
||||
@@ -104,7 +114,11 @@ export WGETRC="$XDG_CONFIG_HOME/wget/wgetrc"
|
||||
export WINEPREFIX="$XDG_DATA_HOME/wine"
|
||||
|
||||
# WM
|
||||
if [ "$WAYLAND" = true ]; then
|
||||
export WM="hyprland"
|
||||
else
|
||||
export WM="bspwm"
|
||||
fi
|
||||
|
||||
# Xorg
|
||||
export XINITRC="$XDG_CONFIG_HOME/xorg/xinitrc"
|
||||
|
||||
@@ -73,12 +73,20 @@ zle -N history-beginning-search-backward-end history-search-end
|
||||
zle -N history-beginning-search-forward-end history-search-end
|
||||
|
||||
bindkey '\eOc' forward-word # ctrl-right
|
||||
bindkey '\e[1;5C' forward-word # ctrl-right
|
||||
bindkey '\eOd' backward-word # ctrl-left
|
||||
bindkey '\e[1;5D' backward-word # ctrl-left
|
||||
bindkey '\e[3~' delete-char # del
|
||||
bindkey '\e[7~' beginning-of-line # home
|
||||
bindkey '\e[H' beginning-of-line # home
|
||||
bindkey '\eOH' beginning-of-line # home
|
||||
bindkey '\e[8~' end-of-line # end
|
||||
bindkey '\e[F' end-of-line # end
|
||||
bindkey '\eOF' end-of-line # end
|
||||
bindkey '\e[A' history-beginning-search-backward-end # up
|
||||
bindkey '\eOA' history-beginning-search-backward-end # up
|
||||
bindkey '\e[B' history-beginning-search-forward-end # down
|
||||
bindkey '\eOB' history-beginning-search-forward-end # down
|
||||
bindkey '\e[Z' reverse-menu-complete # shift-tab
|
||||
bindkey '\eh' kill-whole-line # meta-h
|
||||
bindkey '\ej' history-beginning-search-forward-end # meta-j
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
# This file is written by nwg-look. Do not edit.
|
||||
[Icon Theme]
|
||||
Name=Default
|
||||
Comment=Default Cursor Theme
|
||||
Inherits=capitaine-cursors-light
|
||||
+9
-4
@@ -74,10 +74,14 @@ done
|
||||
|
||||
embedAudioThumbnail()
|
||||
{
|
||||
# Get file name
|
||||
fileName="$(youtube-dl --get-filename "$1")"
|
||||
# Get file names
|
||||
youtube-dl --get-filename "$1" |
|
||||
while IFS= read -r fileName; do
|
||||
fileName="${fileName%.*}"
|
||||
|
||||
# Skip if no thumbnail
|
||||
[ ! -f "${fileName}.webp" ] && [ ! -f "${fileName}.jpg" ] && continue
|
||||
|
||||
# Convert thumbnail to actually be a jpg
|
||||
yes y | ffmpeg -i "${fileName}.webp" "${fileName}_converted.jpg" > /dev/null 2>&1
|
||||
yes y | ffmpeg -i "${fileName}.jpg" "${fileName}_converted.jpg" > /dev/null 2>&1
|
||||
@@ -90,8 +94,9 @@ embedAudioThumbnail()
|
||||
"${fileName}_embed.mp3" > /dev/null 2>&1
|
||||
|
||||
# Remove left over files
|
||||
rm -f "./${fileName}_converted.jpg" "./${fileName}.jpg" "./${fileName}.mp3"
|
||||
mv "${fileName}_embed.mp3" "${fileName}.mp3"
|
||||
rm -f "./${fileName}_converted.jpg" "./${fileName}.jpg" "./${fileName}.webp"
|
||||
mv -f "${fileName}_embed.mp3" "${fileName}.mp3"
|
||||
done
|
||||
}
|
||||
|
||||
downloadAudio()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
file="/tmp/polybar-btc-module"
|
||||
file="/tmp/panel-btc-module"
|
||||
|
||||
# Enable mathematics in POSIX shell
|
||||
calc() { awk "BEGIN { printf(\"%.2f\", $*) }"; }
|
||||
@@ -27,7 +27,12 @@ output() {
|
||||
fi
|
||||
|
||||
# Result
|
||||
# >>> session=xorg
|
||||
echo "%{F$color}$symbol $difference%%{F$COLOR15}"
|
||||
# <<<
|
||||
# >>> session=wayland
|
||||
# echo "<span color='$color'>$symbol $difference%</span>"
|
||||
# <<<
|
||||
}
|
||||
|
||||
if [ ! -f "$file" ]; then
|
||||
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Kill existing panel
|
||||
pkill --exact --signal 9 waybar
|
||||
|
||||
# Start panel
|
||||
setsid -f waybar
|
||||
@@ -237,7 +237,12 @@ if [ $qualityOption -eq 1 ]; then
|
||||
fi
|
||||
|
||||
# Set url to clipboard if none provided
|
||||
# >>> session=xorg
|
||||
clip="$(xclip -selection clipboard -out)"
|
||||
# <<<
|
||||
# >>> session=wayland
|
||||
# clip="$(wl-paste)"
|
||||
# <<<
|
||||
if [ "$#" -eq 0 ]; then
|
||||
eval set -- "$clip"
|
||||
fi
|
||||
@@ -257,7 +262,12 @@ elif [ $queueOption -eq 1 ]; then
|
||||
queue "$*"
|
||||
else
|
||||
if [ "$*" = "" ]; then
|
||||
# >>> session=xorg
|
||||
play "$(xclip -o)"
|
||||
# <<<
|
||||
# >>> session=wayland
|
||||
# play "$(wl-paste)"
|
||||
# <<<
|
||||
else
|
||||
for url in "$@"; do
|
||||
play "$url"
|
||||
|
||||
+13
-2
@@ -1,12 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Take a screenshot with the configured program
|
||||
# Depends: scrot / maim, xdotool / magick, xdotool
|
||||
# Depends: rofi and scrot / maim, xdotool / magick, xdotool / grim, slurp, jq
|
||||
|
||||
# User-config---------------------------
|
||||
|
||||
# scrot / maim / magick import
|
||||
# scrot / maim / magick import / grim
|
||||
# >>> session=xorg
|
||||
screenshotter="maim"
|
||||
# <<<
|
||||
# >>> session=wayland
|
||||
# screenshotter="grim"
|
||||
# <<<
|
||||
|
||||
# --------------------------------------
|
||||
|
||||
@@ -25,6 +30,12 @@ elif [ "$screenshotter" = "magick import" ] || [ "$screenshotter" = "import" ];
|
||||
selection=""
|
||||
activeWindow="-window \$(xdotool getactivewindow)"
|
||||
filename="$CAPTURE/$(date '+%Y-%m-%d-%H%M%S')_import.png"
|
||||
elif [ "$screenshotter" = "grim" ]; then
|
||||
screenshotter="" # start of command needs to be overwritten
|
||||
fullscreen="grim"
|
||||
selection="slurp | grim -g -"
|
||||
activeWindow="hyprctl -j activewindow | jq -r '\"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])\"' | grim -g -"
|
||||
filename="$CAPTURE/$(date '+%Y-%m-%d-%H%M%S')_grim.png"
|
||||
else
|
||||
echo "Printscreen configuration is invalid"
|
||||
exit 1
|
||||
|
||||
@@ -6,6 +6,8 @@ if [ "$WM" = "bspwm" ]; then
|
||||
logout="bspc quit"
|
||||
elif [ "$WM" = "i3" ]; then
|
||||
logout="i3-msg exit"
|
||||
elif [ "$WM" = "hyprland" ]; then
|
||||
logout="hyprctl dispatch exit"
|
||||
fi
|
||||
|
||||
commands="\
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
|
||||
LOCK="$XDG_CACHE_HOME/lock.png"
|
||||
|
||||
if [ "$WM" = "hyprland" ]; then
|
||||
hyprlock
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Cache the lock image
|
||||
if [ ! -f "$LOCK" ]; then
|
||||
touch "$LOCK"
|
||||
|
||||
@@ -1,7 +1,26 @@
|
||||
#!/bin/sh
|
||||
|
||||
WALLPAPER="$HOME/pictures/wallpaper.jpg"
|
||||
|
||||
# Overwrite wallpaper with new image if provided
|
||||
[ -n "$1" ] && cp "$1" "$HOME/pictures/wallpaper.jpg"
|
||||
[ -n "$1" ] && cp "$1" "$WALLPAPER"
|
||||
|
||||
# Set wallpaper
|
||||
feh --no-fehbg --bg-fill "$HOME/pictures/wallpaper.jpg"
|
||||
if [ "$WAYLAND" = true ]; then
|
||||
pkill hyprpaper
|
||||
setsid -f hyprpaper
|
||||
|
||||
# Wait until hyprpaper is available
|
||||
while true; do
|
||||
output=$(hyprctl hyprpaper)
|
||||
if ! echo "$output" | grep -q ".sock"; then
|
||||
break
|
||||
fi
|
||||
sleep 0.1
|
||||
done
|
||||
|
||||
hyprctl hyprpaper preload "$WALLPAPER"
|
||||
hyprctl hyprpaper wallpaper ",$WALLPAPER"
|
||||
else
|
||||
feh --no-fehbg --bg-fill "$WALLPAPER"
|
||||
fi
|
||||
|
||||
@@ -31,7 +31,7 @@ Tree Style Tab style rules.
|
||||
}
|
||||
|
||||
.tab {
|
||||
height: 23px;
|
||||
height: 25px;
|
||||
margin-bottom: 1px;
|
||||
background: #404552;
|
||||
border: 0px;
|
||||
@@ -39,7 +39,7 @@ Tree Style Tab style rules.
|
||||
}
|
||||
|
||||
.tab .label {
|
||||
line-height: 1.15;
|
||||
line-height: 1.75;
|
||||
margin-bottom: 1px;
|
||||
margin-left: 0.25em;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@-moz-document url(chrome://browser/content/browser.xhtml) {
|
||||
/* Hide Firefox top tab bar */
|
||||
#TabsToolbar {
|
||||
visibility: hidden !important;
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Remove titlebar */
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
// This option has a memory leak
|
||||
user_pref("accessibility.force_disabled", 1);
|
||||
|
||||
// Download directory
|
||||
user_pref("browser.download.dir", "~/downloads");
|
||||
|
||||
// Disable LLM
|
||||
user_pref("browser.ml.chat.enabled", false);
|
||||
|
||||
// Display a blank new tab
|
||||
user_pref("browser.newtabpage.enabled", false);
|
||||
user_pref("browser.newtab.url", "about:blank");
|
||||
@@ -8,18 +14,27 @@ user_pref("browser.newtab.url", "about:blank");
|
||||
// Disable Ctrl+q browser close shortcut
|
||||
user_pref("browser.quitShortcut.disabled", true);
|
||||
|
||||
// Resume session at the next application start, but not again
|
||||
user_pref("browser.sessionstore.resume_session_once", true);
|
||||
|
||||
// Old style URL bar
|
||||
user_pref("browser.urlbar.openViewOnFocus", false);
|
||||
user_pref("browser.urlbar.update1", false);
|
||||
user_pref("browser.urlbar.update1.interventions", false);
|
||||
user_pref("browser.urlbar.update1.searchTips", false);
|
||||
|
||||
// VPN ad
|
||||
user_pref("browser.vpn_promo.enabled", false);
|
||||
|
||||
// Disable extension recommendations
|
||||
user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
|
||||
|
||||
// No full screen warning
|
||||
user_pref("full-screen-api.warning.timeout", 0);
|
||||
|
||||
// Enable middle-click scrolling
|
||||
user_pref("general.autoScroll", true);
|
||||
|
||||
// Disable video autoplay
|
||||
user_pref("media.autoplay.blocking_policy", 2);
|
||||
user_pref("media.autoplay.default", 5);
|
||||
@@ -44,7 +59,7 @@ user_pref("ui.key.menuAccessKeyFocuses", false);
|
||||
user_pref("ui.prefersReducedMotion", true);
|
||||
|
||||
// Fix dark GTK themes
|
||||
user_pref("widget.content.gtk-theme-override", "Arc");
|
||||
user_pref("widget.content.gtk-theme-override", "Arc-Dark");
|
||||
|
||||
// Disable tracking
|
||||
user_pref("privacy.resistFingerprinting", true);
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
#+TITLE: Dotfiles
|
||||
#+OPTIONS: toc:nil
|
||||
|
||||
This is a collection of dotfiles and scripts for my i3/bspwm setup, previewed below:
|
||||
This is a collection of dotfiles and scripts for my i3/bspwm/hyprland setup, previewed below:
|
||||
|
||||
[[screenshot.png]]
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# Resolver configuration file.
|
||||
# See resolv.conf(5) for details.
|
||||
nameserver 192.168.0.1
|
||||
@@ -6,16 +6,18 @@
|
||||
# any later version.
|
||||
#
|
||||
# Entries in this file show the compile time defaults. Local configuration
|
||||
# should be created by either modifying this file, or by creating "drop-ins" in
|
||||
# the journald.conf.d/ subdirectory. The latter is generally recommended.
|
||||
# Defaults can be restored by simply deleting this file and all drop-ins.
|
||||
# should be created by either modifying this file (or a copy of it placed in
|
||||
# /etc/ if the original file is shipped in /usr/), or by creating "drop-ins" in
|
||||
# the /etc/systemd/journald.conf.d/ directory. The latter is generally
|
||||
# recommended. Defaults can be restored by simply deleting the main
|
||||
# configuration file and all drop-ins located in /etc/.
|
||||
#
|
||||
# Use 'systemd-analyze cat-config systemd/journald.conf' to display the full config.
|
||||
#
|
||||
# See journald.conf(5) for details.
|
||||
|
||||
[Journal]
|
||||
#Storage=auto
|
||||
#Storage=persistent
|
||||
#Compress=yes
|
||||
#Seal=yes
|
||||
#SplitMode=uid
|
||||
@@ -30,7 +32,7 @@ SystemMaxUse=256M
|
||||
#RuntimeKeepFree=
|
||||
#RuntimeMaxFileSize=
|
||||
#RuntimeMaxFiles=100
|
||||
#MaxRetentionSec=
|
||||
#MaxRetentionSec=0
|
||||
MaxFileSec=2week
|
||||
#ForwardToSyslog=no
|
||||
#ForwardToKMsg=no
|
||||
@@ -42,6 +44,7 @@ MaxFileSec=2week
|
||||
#MaxLevelKMsg=notice
|
||||
#MaxLevelConsole=info
|
||||
#MaxLevelWall=emerg
|
||||
#MaxLevelSocket=debug
|
||||
#LineMax=48K
|
||||
#ReadKMsg=yes
|
||||
#Audit=yes
|
||||
|
||||
+16
-6
@@ -6,9 +6,11 @@
|
||||
# any later version.
|
||||
#
|
||||
# Entries in this file show the compile time defaults. Local configuration
|
||||
# should be created by either modifying this file, or by creating "drop-ins" in
|
||||
# the logind.conf.d/ subdirectory. The latter is generally recommended.
|
||||
# Defaults can be restored by simply deleting this file and all drop-ins.
|
||||
# should be created by either modifying this file (or a copy of it placed in
|
||||
# /etc/ if the original file is shipped in /usr/), or by creating "drop-ins" in
|
||||
# the /etc/systemd/logind.conf.d/ directory. The latter is generally
|
||||
# recommended. Defaults can be restored by simply deleting the main
|
||||
# configuration file and all drop-ins located in /etc/.
|
||||
#
|
||||
# Use 'systemd-analyze cat-config systemd/logind.conf' to display the full config.
|
||||
#
|
||||
@@ -22,14 +24,19 @@
|
||||
#KillExcludeUsers=root
|
||||
#InhibitDelayMaxSec=5
|
||||
#UserStopDelaySec=10
|
||||
#SleepOperation=suspend-then-hibernate suspend
|
||||
HandlePowerKey=ignore
|
||||
#HandlePowerKeyLongPress=ignore
|
||||
#HandleRebootKey=reboot
|
||||
#HandleRebootKeyLongPress=poweroff
|
||||
#HandleSuspendKey=suspend
|
||||
#HandleSuspendKeyLongPress=hibernate
|
||||
#HandleHibernateKey=hibernate
|
||||
#HandleHibernateKeyLongPress=ignore
|
||||
#HandleLidSwitch=suspend
|
||||
#HandleLidSwitchExternalPower=suspend
|
||||
#HandleLidSwitchDocked=ignore
|
||||
#HandleRebootKey=reboot
|
||||
#HandleRebootKeyLongPress=poweroff
|
||||
#HandleSecureAttentionKey=secure-attention-key
|
||||
#PowerKeyIgnoreInhibited=no
|
||||
#SuspendKeyIgnoreInhibited=no
|
||||
#HibernateKeyIgnoreInhibited=no
|
||||
@@ -39,7 +46,10 @@ HandlePowerKey=ignore
|
||||
#IdleAction=ignore
|
||||
#IdleActionSec=30min
|
||||
#RuntimeDirectorySize=10%
|
||||
#RuntimeDirectoryInodesMax=400k
|
||||
#RuntimeDirectoryInodesMax=
|
||||
#RemoveIPC=yes
|
||||
#InhibitorsMax=8192
|
||||
#SessionsMax=8192
|
||||
#StopIdleSessionSec=infinity
|
||||
#DesignatedMaintenanceTime=
|
||||
#WallMessages=yes
|
||||
|
||||
+124
-73
@@ -1,8 +1,8 @@
|
||||
# ------------------------------------------------------------------------------
|
||||
# /etc/tlp.conf - TLP user configuration (version 1.7.0)
|
||||
# ----------------------------------------------------------------------------
|
||||
# /etc/tlp.conf - TLP user configuration (version 1.9.0)
|
||||
# See full explanation: https://linrunner.de/tlp/settings
|
||||
#
|
||||
# Copyright (c) 2024 Thomas Koch <linrunner at gmx.net> and others.
|
||||
# Copyright (c) 2025 Thomas Koch <linrunner at gmx.net> and others.
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#
|
||||
# Settings are read in the following order:
|
||||
@@ -11,22 +11,37 @@
|
||||
# 2. /etc/tlp.d/*.conf - Drop-in customization snippets
|
||||
# 3. /etc/tlp.conf - User configuration (this file)
|
||||
#
|
||||
# Notes:
|
||||
# - In case of identical parameters, the last occurence has precedence
|
||||
# - This also means, parameters enabled here will override anything else
|
||||
# - However you may append values to a parameter already defined as intrinsic
|
||||
# default or in a previously read file: use PARAMETER+="add values"
|
||||
# - IMPORTANT: all parameters here are disabled; remove the leading '#' if you
|
||||
# like to enable a feature without default or have a value different from the
|
||||
# default
|
||||
# - Default *: intrinsic default that is effective when the parameter is missing
|
||||
# or disabled by a leading '#'; use PARAM="" to disable an intrinsic default
|
||||
# - Default <none>: do nothing or use kernel/hardware defaults
|
||||
# - IMPORTANT: parameters must always be specified pairwise i.e. for
|
||||
# both AC and BAT. Omitting one of the two makes the set value effective for
|
||||
# both power sources, since a change only occurs when different values are
|
||||
# defined.
|
||||
# ------------------------------------------------------------------------------
|
||||
# Power Profiles: a part of TLP's parameters is divided into two or three
|
||||
# groups:
|
||||
# - performance: parameters ending in _AC are used when AC power is
|
||||
# connected or when the command 'tlp performance' is run.
|
||||
# - balanced: parameters ending in _BAT are used when operating
|
||||
# on battery power or when the command 'tlp balanced' is run.
|
||||
# - power-saver: parameters ending in _SAV are used when the command
|
||||
# 'tlp power-saver' is run. If there is no _SAV parameter available
|
||||
# for a feature, the _BAT parameter will be used instead.
|
||||
# - Any remaining parameters not divided apply to all power profiles.
|
||||
#
|
||||
# Please note:
|
||||
# - If parameters are specified more than once, the last occurrence takes
|
||||
# precedence. This also means that any parameters defined here will take
|
||||
# precedence over any drop-ins.
|
||||
# - You can however, append values to a parameter already defined as intrinsic
|
||||
# default or in a previously read file: use PARAMETER+="add values".
|
||||
# - Important: all parameters are disabled here. Remove the leading '#' if you
|
||||
# want to enable a feature without a default or if you want to set a value
|
||||
# other than the default.
|
||||
# - Parameters must always be specified for all power profiles, i.e. in the
|
||||
# AC, BAT and SAV category (where applicable). If you omit one of them,
|
||||
# the missing profile will receive its value from another profile, since
|
||||
# a change will only occur if different values are defined.
|
||||
# - To completely disable a parameter, use PARAMETER="".
|
||||
# Legend for defaults:
|
||||
# - Default *: intrinsic default that is effective when the parameter is
|
||||
# missing or the line has a leading #'.
|
||||
# - Default <none>: do nothing or use kernel/hardware defaults.
|
||||
#
|
||||
# ----------------------------------------------------------------------------
|
||||
# tlp - Parameters for power saving
|
||||
|
||||
# Set to 0 to disable, 1 to enable TLP.
|
||||
@@ -34,10 +49,19 @@
|
||||
|
||||
#TLP_ENABLE=1
|
||||
|
||||
# Set to 1 to deactivate all intrinsic defaults of TLP. This means that
|
||||
# TLP only applies settings that have been explicitly activated i.e.
|
||||
# parameters without a leading '#'.
|
||||
# Notes:
|
||||
# - Helpful if one wants to use only selected features of TLP
|
||||
# - After activation, use tlp-stat -c to display your effective configuration
|
||||
|
||||
#TLP_DISABLE_DEFAULTS=1
|
||||
|
||||
# Control how warnings about invalid settings are issued:
|
||||
# 0=disabled,
|
||||
# 1=background tasks (boot, resume, change of power source) report to syslog,
|
||||
# 2=shell commands report to the terminal (stderr),
|
||||
# 0=disabled
|
||||
# 1=background tasks (boot, resume, change of power source) report to syslog
|
||||
# 2=shell commands report to the terminal (stderr)
|
||||
# 3=combination of 1 and 2
|
||||
# Default: 3
|
||||
|
||||
@@ -49,34 +73,54 @@
|
||||
# 96=cyan, 97=white.
|
||||
# Other colors are possible, refer to:
|
||||
# https://en.wikipedia.org/wiki/ANSI_escape_code#3-bit_and_4-bit
|
||||
# Colors must be specified in the order "<error> <warning> <notice> <success>".
|
||||
# Colors must be specified in the order
|
||||
# "<error> <warning> <notice> <success>".
|
||||
# By default, errors are shown in red, warnings in yellow, notices in bold
|
||||
# and success in green.
|
||||
# Default: "91 93 1 92"
|
||||
|
||||
#TLP_MSG_COLORS="91 93 1 92"
|
||||
|
||||
# Operation mode when no power supply can be detected: AC, BAT.
|
||||
# Concerns some desktop and embedded hardware only.
|
||||
# Control automatic switching of the power profile when connecting or removing
|
||||
# the charger, when booting the system or when executing 'tlp start':
|
||||
# 0=disabled - never switch, use TLP_DEFAULT_MODE if configured
|
||||
# 1=auto - always switch, select performance on AC and
|
||||
# balanced on battery power.
|
||||
# 2=smart - do not switch if the following profiles were active previously:
|
||||
# power-saver or balanced on AC resp.
|
||||
# power-saver or performance on battery power.
|
||||
# Note: the same applies if the charger was connected/removed during suspend.
|
||||
# Default: 2
|
||||
|
||||
#TLP_AUTO_SWITCH=2
|
||||
|
||||
# Power profile to use when automatic switching is disabled
|
||||
# (TLP_AUTO_SWITCH=0), profile is locked (TLP_PERSISTENT_DEFAULT=1)
|
||||
# or no power supply is detected:
|
||||
# PRF=performance, BAL=balanced, SAV=power-saver.
|
||||
# Note: legacy values AC and BAT continue to work. They are mapped to
|
||||
# PRF and BAL, respectively.
|
||||
# Default: <none>
|
||||
|
||||
#TLP_DEFAULT_MODE=AC
|
||||
#TLP_DEFAULT_MODE=BAL
|
||||
|
||||
# Operation mode select: 0=depend on power source, 1=always use TLP_DEFAULT_MODE
|
||||
# Note: use in conjunction with TLP_DEFAULT_MODE=BAT for BAT settings on AC.
|
||||
# Lock power profile:
|
||||
# 0=profile depends on automatic switching,
|
||||
# 1=profile is locked to TLP_DEFAULT_MODE (TLP_AUTO_SWITCH is ignored).
|
||||
# Default: 0
|
||||
|
||||
#TLP_PERSISTENT_DEFAULT=0
|
||||
|
||||
# Power supply classes to ignore when determining operation mode: AC, USB, BAT.
|
||||
# Power supply classes to ignore when determining power profile:
|
||||
# AC, USB, BAT.
|
||||
# Separate multiple classes with spaces.
|
||||
# Note: try on laptops where operation mode AC/BAT is incorrectly detected.
|
||||
# Default: <none>
|
||||
|
||||
#TLP_PS_IGNORE="BAT"
|
||||
|
||||
# Seconds laptop mode has to wait after the disk goes idle before doing a sync.
|
||||
# Non-zero value enables, zero disables laptop mode.
|
||||
# Seconds laptop mode has to wait after the disk goes idle before doing a
|
||||
# sync. Non-zero value enables, zero disables laptop mode.
|
||||
# Default: 0 (AC), 2 (BAT)
|
||||
|
||||
#DISK_IDLE_SECS_ON_AC=0
|
||||
@@ -96,6 +140,7 @@
|
||||
# Default: <none>
|
||||
#CPU_DRIVER_OPMODE_ON_AC=active
|
||||
#CPU_DRIVER_OPMODE_ON_BAT=active
|
||||
#CPU_DRIVER_OPMODE_ON_SAV=active
|
||||
|
||||
# Select a CPU frequency scaling governor.
|
||||
# Intel CPU with intel_pstate driver or
|
||||
@@ -104,7 +149,7 @@
|
||||
# Intel CPU with intel_pstate driver in passive mode ('intel_cpufreq') or
|
||||
# AMD CPU with amd-pstate driver in passive or guided mode ('amd-pstate') or
|
||||
# Intel, AMD and other CPU brands with acpi-cpufreq driver:
|
||||
# conservative, ondemand(*), userspace, powersave, performance, schedutil(*).
|
||||
# conservative, ondemand(*), userspace, powersave, performance, schedutil(*)
|
||||
# Use tlp-stat -p to show the active driver and available governors.
|
||||
# Important:
|
||||
# Governors marked (*) above are power efficient for *almost all* workloads
|
||||
@@ -113,8 +158,9 @@
|
||||
# changing the governor.
|
||||
# Default: <none>
|
||||
|
||||
#CPU_SCALING_GOVERNOR_ON_AC=powersave
|
||||
#CPU_SCALING_GOVERNOR_ON_AC=performance
|
||||
#CPU_SCALING_GOVERNOR_ON_BAT=powersave
|
||||
#CPU_SCALING_GOVERNOR_ON_SAV=powersave
|
||||
|
||||
# Set the min/max frequency available for the scaling governor.
|
||||
# Possible values depend on your CPU. For available frequencies see
|
||||
@@ -129,6 +175,8 @@
|
||||
#CPU_SCALING_MAX_FREQ_ON_AC=0
|
||||
#CPU_SCALING_MIN_FREQ_ON_BAT=0
|
||||
#CPU_SCALING_MAX_FREQ_ON_BAT=0
|
||||
#CPU_SCALING_MIN_FREQ_ON_SAV=0
|
||||
#CPU_SCALING_MAX_FREQ_ON_SAV=0
|
||||
|
||||
# Set CPU energy/performance policies EPP and EPB:
|
||||
# performance, balance_performance, default, balance_power, power.
|
||||
@@ -141,10 +189,11 @@
|
||||
# will not honor EPB. Only the matching feature will be applied by TLP.
|
||||
# * AMD Zen 2 or newer CPU
|
||||
# EPP: amd-pstate driver in active mode ('amd-pstate-epp') as of kernel 6.3
|
||||
# Default: balance_performance (AC), balance_power (BAT)
|
||||
# Default: balance_performance (AC), balance_power (BAT), power (SAV)
|
||||
|
||||
#CPU_ENERGY_PERF_POLICY_ON_AC=balance_performance
|
||||
#CPU_ENERGY_PERF_POLICY_ON_BAT=balance_power
|
||||
#CPU_ENERGY_PERF_POLICY_ON_SAV=power
|
||||
|
||||
# Set Intel CPU P-state performance: 0..100 (%).
|
||||
# Limit the max/min P-state to control the power dissipation of the CPU.
|
||||
@@ -155,9 +204,11 @@
|
||||
#CPU_MIN_PERF_ON_AC=0
|
||||
#CPU_MAX_PERF_ON_AC=100
|
||||
#CPU_MIN_PERF_ON_BAT=0
|
||||
#CPU_MAX_PERF_ON_BAT=30
|
||||
#CPU_MAX_PERF_ON_BAT=80
|
||||
#CPU_MIN_PERF_ON_SAV=0
|
||||
#CPU_MAX_PERF_ON_SAV=60
|
||||
|
||||
# Set the CPU "turbo boost" (Intel) or "turbo core" (AMD) feature:
|
||||
# Set the CPU "turbo boost" (Intel) or "core performance boost" (AMD) feature:
|
||||
# 0=disable, 1=allow.
|
||||
# Allows to raise the maximum frequency/P-state of some cores if the
|
||||
# CPU chip is not fully utilized and below it's intended thermal budget.
|
||||
@@ -165,18 +216,21 @@
|
||||
# Default: <none>
|
||||
|
||||
#CPU_BOOST_ON_AC=1
|
||||
#CPU_BOOST_ON_BAT=0
|
||||
#CPU_BOOST_ON_BAT=1
|
||||
#CPU_BOOST_ON_SAV=0
|
||||
|
||||
# Set CPU dynamic boost feature:
|
||||
# 0=disable, 1=enable.
|
||||
# Improve performance by increasing minimum P-state limit dynamically
|
||||
# whenever a task previously waiting on I/O is selected to run.
|
||||
# Requires Intel Core i 6th gen. or newer CPU: intel_pstate driver in active mode.
|
||||
# Requires Intel Core i 6th gen. or newer CPU with intel_pstate driver
|
||||
# in active mode.
|
||||
# Note: AMD CPUs currently have no tunable for this.
|
||||
# Default: <none>
|
||||
|
||||
#CPU_HWP_DYN_BOOST_ON_AC=1
|
||||
#CPU_HWP_DYN_BOOST_ON_BAT=0
|
||||
#CPU_HWP_DYN_BOOST_ON_BAT=1
|
||||
#CPU_HWP_DYN_BOOST_ON_SAV=0
|
||||
|
||||
# Kernel NMI Watchdog:
|
||||
# 0=disable (default, saves power), 1=enable (for kernel debugging only).
|
||||
@@ -190,10 +244,11 @@
|
||||
# thermal and fan speed. Values are given in order of increasing power saving.
|
||||
# Note: check the output of tlp-stat -p to determine availability on your
|
||||
# hardware and additional profiles such as: balanced-performance, quiet, cool.
|
||||
# Default: <none>
|
||||
# Default: performance (AC), balanced (BAT), low-power (SAV)
|
||||
|
||||
#PLATFORM_PROFILE_ON_AC=performance
|
||||
#PLATFORM_PROFILE_ON_BAT=low-power
|
||||
#PLATFORM_PROFILE_ON_BAT=balanced
|
||||
#PLATFORM_PROFILE_ON_SAV=low-power
|
||||
|
||||
# System suspend mode:
|
||||
# s2idle: Idle standby - a pure software, light-weight, system sleep state,
|
||||
@@ -283,8 +338,8 @@
|
||||
# Runtime Power Management for NVMe, SATA, ATA and USB disks
|
||||
# as well as SATA ports:
|
||||
# on=disable, auto=enable.
|
||||
# Note: SATA controllers are PCIe bus devices and handled by RUNTIME_PM further
|
||||
# down.
|
||||
# Note: SATA controllers are PCIe bus devices and handled by RUNTIME_PM
|
||||
# further down.
|
||||
|
||||
# Default: on (AC), auto (BAT)
|
||||
|
||||
@@ -338,24 +393,17 @@
|
||||
#RADEON_DPM_STATE_ON_AC=performance
|
||||
#RADEON_DPM_STATE_ON_BAT=battery
|
||||
|
||||
# Graphics clock speed (profile method): low, mid, high, auto, default;
|
||||
# auto = mid on BAT, high on AC.
|
||||
# Note: radeon driver on legacy ATI hardware only (where DPM is not available).
|
||||
# Default: default
|
||||
|
||||
#RADEON_POWER_PROFILE_ON_AC=default
|
||||
#RADEON_POWER_PROFILE_ON_BAT=default
|
||||
|
||||
# Display panel adaptive backlight modulation (ABM) level: 0(off), 1..4.
|
||||
# Values 1..4 control the maximum brightness reduction allowed by the ABM
|
||||
# algorithm, where 1 represents the least and 4 the most power saving.
|
||||
# Notes:
|
||||
# - Requires AMD Vega or newer GPU with amdgpu driver as of kernel 6.9
|
||||
# - Savings are made at the expense of color balance
|
||||
# Default: 0 (AC), 1 (BAT)
|
||||
# Default: 0 (AC), 1 (BAT), 3 (SAV)
|
||||
|
||||
#AMDGPU_ABM_LEVEL_ON_AC=0
|
||||
#AMDGPU_ABM_LEVEL_ON_BAT=3
|
||||
#AMDGPU_ABM_LEVEL_ON_BAT=1
|
||||
#AMDGPU_ABM_LEVEL_ON_SAV=3
|
||||
|
||||
# Wi-Fi power saving mode: on=enable, off=disable.
|
||||
# Default: off (AC), on (BAT)
|
||||
@@ -518,23 +566,23 @@ SOUND_POWER_SAVE_ON_BAT=1
|
||||
# Charging starts when the charger is connected and the charge level
|
||||
# is below the start threshold. Charging stops when the charge level
|
||||
# is above the stop threshold.
|
||||
# Required hardware: Lenovo ThinkPads and select other laptop brands
|
||||
# are driven via specific plugins
|
||||
# - Active plugin and support status are shown by tlp-stat -b
|
||||
# - Vendor specific threshold levels are shown by tlp-stat -b, some
|
||||
# laptops support only 1 (on)/ 0 (off) instead of a percentage level
|
||||
# - When your hardware supports a start *and* a stop threshold, you must
|
||||
# specify both, otherwise TLP will refuse to apply the single threshold
|
||||
# - When your hardware supports only a stop threshold, set the start
|
||||
# value to 0
|
||||
# - Older ThinkPads may require an external kernel module, refer to the
|
||||
# output of tlp-stat -b
|
||||
# For further explanation and vendor specific details refer to
|
||||
# - https://linrunner.de/tlp/settings/battery.html
|
||||
# - https://linrunner.de/tlp/settings/bc-vendors.html
|
||||
# Required hardware: Lenovo ThinkPads and other laptop brands are driven
|
||||
# via specific plugins:
|
||||
# - Use the tlp-stat -b command to see if a plugin for your hardware is
|
||||
# active and to look up vendor-specific threshold values. Some
|
||||
# laptops support only 1 (on)/0 (off) instead of a percentage level.
|
||||
# - If your hardware supports a start *and* a stop threshold, you must
|
||||
# specify both, otherwise TLP will refuse to apply the single threshold.
|
||||
# - If your hardware supports only a stop threshold, set the start
|
||||
# value to 0.
|
||||
# - The names of the batteries shown by tlp-stat -b don't have to match
|
||||
# the _BAT0 or _BAT1 parameter qualifiers. Please refer to [2]
|
||||
# to see which qualifier applies to which battery.
|
||||
# For further explanation and all vendor specific details refer to
|
||||
# [1] https://linrunner.de/tlp/settings/battery.html
|
||||
# [2] https://linrunner.de/tlp/settings/bc-vendors.html
|
||||
|
||||
# BAT0: Primary / Main / Internal battery
|
||||
# Note: also use for batteries BATC, BATT and CMB0
|
||||
# BAT0: Main battery
|
||||
# Default: <none>
|
||||
|
||||
# Battery charge level below which charging will begin.
|
||||
@@ -542,8 +590,7 @@ SOUND_POWER_SAVE_ON_BAT=1
|
||||
# Battery charge level above which charging will stop.
|
||||
#STOP_CHARGE_THRESH_BAT0=80
|
||||
|
||||
# BAT1: Secondary / Ultrabay / Slice / Replaceable battery
|
||||
# Note: primary on some laptops
|
||||
# BAT1: Secondary battery (primary on some laptops)
|
||||
# Default: <none>
|
||||
|
||||
# Battery charge level below which charging will begin.
|
||||
@@ -556,8 +603,9 @@ SOUND_POWER_SAVE_ON_BAT=1
|
||||
|
||||
#RESTORE_THRESHOLDS_ON_BAT=1
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# tlp-rdw - Parameters for the radio device wizard
|
||||
# ----------------------------------------------------------------------------
|
||||
# tlp-rdw - Radio Device Wizard
|
||||
# Note: requires installation of the optional package tlp-rdw.
|
||||
|
||||
# Possible devices: bluetooth, wifi, wwan.
|
||||
# Separate multiple radio devices with spaces.
|
||||
@@ -576,6 +624,9 @@ SOUND_POWER_SAVE_ON_BAT=1
|
||||
#DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT=""
|
||||
|
||||
# Radio devices to enable/disable when docked.
|
||||
# Note: not all docks can be recognized, especially USB-C docks. If a LAN
|
||||
# cable is connected to the dock, use DEVICES_TO_DISABLE_ON_LAN_CONNECT
|
||||
# and DEVICES_TO_ENABLE_ON_LAN_DISCONNECT instead.
|
||||
|
||||
#DEVICES_TO_ENABLE_ON_DOCK=""
|
||||
#DEVICES_TO_DISABLE_ON_DOCK=""
|
||||
|
||||
@@ -1,18 +1,14 @@
|
||||
acpi
|
||||
adobe-source-han-sans-jp-fonts
|
||||
alsa-utils
|
||||
android-studio
|
||||
android-tools
|
||||
arandr
|
||||
arc-gtk-theme
|
||||
archlinux-keyring
|
||||
arc-icon-theme
|
||||
aria2
|
||||
aspell-en
|
||||
aspell-nl
|
||||
autorandr
|
||||
base
|
||||
base-devel
|
||||
brightnessctl
|
||||
bspwm
|
||||
capitaine-cursors
|
||||
checkbashisms
|
||||
chromium
|
||||
@@ -21,32 +17,23 @@ cmake
|
||||
dhcpcd
|
||||
dialog
|
||||
dnsmasq
|
||||
domoticz-git
|
||||
dos2unix
|
||||
downgrade
|
||||
doxygen
|
||||
duf
|
||||
dunst
|
||||
ebtables
|
||||
edk2-ovmf
|
||||
efibootmgr
|
||||
emacs-nativecomp
|
||||
evtest
|
||||
exfat-utils
|
||||
feh
|
||||
ffmpegthumbnailer
|
||||
firefox
|
||||
frei0r-plugins
|
||||
fritzing
|
||||
gdb
|
||||
gedit
|
||||
ghc
|
||||
git
|
||||
gnome-calculator
|
||||
gnome-keyring
|
||||
gnome-themes-extra
|
||||
gparted
|
||||
graphviz
|
||||
gst-plugins-good
|
||||
gucharmap
|
||||
gvfs
|
||||
@@ -57,32 +44,19 @@ htop
|
||||
hunspell
|
||||
hunspell-en_us
|
||||
hunspell-nl
|
||||
i3lock-color-git
|
||||
imagemagick
|
||||
inetutils
|
||||
inkscape
|
||||
intel-media-driver
|
||||
intel-media-sdk
|
||||
intel-ucode
|
||||
isync
|
||||
iw
|
||||
jdk11-openjdk
|
||||
jdownloader2
|
||||
jq
|
||||
kcachegrind
|
||||
kdenlive
|
||||
keepmenu-git
|
||||
kolourpaint
|
||||
kotlin-language-server-git
|
||||
krita
|
||||
lib32-alsa-lib
|
||||
lib32-alsa-plugins
|
||||
lib32-glibc
|
||||
lib32-libpulse
|
||||
lib32-openal
|
||||
lib32-vulkan-intel
|
||||
libmtp
|
||||
libnotify-id
|
||||
libvirt
|
||||
linux
|
||||
linux-firmware
|
||||
@@ -90,17 +64,11 @@ linux-headers
|
||||
linux-lts
|
||||
linux-lts-headers
|
||||
llvm
|
||||
lua-language-server-git
|
||||
lvm2
|
||||
lxappearance
|
||||
maim
|
||||
manafiles-git
|
||||
man-db
|
||||
man-pages
|
||||
mariadb
|
||||
mdadm
|
||||
mesa-demos
|
||||
minted
|
||||
mkvtoolnix-cli
|
||||
moka-icon-theme-git
|
||||
mpv
|
||||
@@ -109,10 +77,9 @@ mysql-workbench
|
||||
namcap
|
||||
ncdu
|
||||
neofetch
|
||||
nerd-fonts-dejavu-complete
|
||||
neovim
|
||||
netctl
|
||||
nlohmann-json
|
||||
nodejs-intelephense
|
||||
ntfs-3g
|
||||
openssh
|
||||
otf-font-awesome
|
||||
@@ -121,12 +88,7 @@ pacman-contrib
|
||||
pamixer
|
||||
pavucontrol
|
||||
pdfjs
|
||||
platformio
|
||||
polkit-kde-agent
|
||||
polybar
|
||||
poppler-glib
|
||||
pulseaudio
|
||||
pulseaudio-alsa
|
||||
python-adblock
|
||||
python-beautifulsoup4
|
||||
python-certifi
|
||||
@@ -134,46 +96,33 @@ python-filelock
|
||||
python-flask
|
||||
python-google-api-python-client
|
||||
python-google-auth-oauthlib
|
||||
python-image
|
||||
python-matplotlib
|
||||
python-opengl
|
||||
python-pycurl
|
||||
python-pyqt5
|
||||
python-pyusb
|
||||
python-tqdm
|
||||
python-watchdog
|
||||
python-zstandard
|
||||
qbittorrent
|
||||
qemu
|
||||
qemu-arch-extra
|
||||
qt5ct
|
||||
qt5-serialport
|
||||
qt5-tools
|
||||
qt5ct
|
||||
qt5gtk2
|
||||
qt6ct
|
||||
qt6gtk2
|
||||
r
|
||||
redshift
|
||||
reflector
|
||||
renderdoc-bin
|
||||
rofi
|
||||
rsync
|
||||
rtmpdump
|
||||
rxvt-unicode
|
||||
signal-desktop
|
||||
smartmontools
|
||||
socat
|
||||
sqlitebrowser
|
||||
sshfs
|
||||
stalonetray
|
||||
streamlink
|
||||
sxhkd
|
||||
syncthing
|
||||
synergy2-bin
|
||||
sysfsutils
|
||||
texlab
|
||||
texlive-bibtexextra
|
||||
texlive-core
|
||||
texlive-fontsextra
|
||||
texlive-formatsextra
|
||||
texlive-games
|
||||
@@ -193,8 +142,8 @@ tokei
|
||||
tree
|
||||
trizen
|
||||
ttf-dejavu
|
||||
ttf-dejavu-nerd
|
||||
ttf-joypixels
|
||||
ttf-ms-win10
|
||||
tumbler
|
||||
tumbler-extra-thumbnailers
|
||||
unrar
|
||||
@@ -202,27 +151,14 @@ unzip
|
||||
usbutils
|
||||
valgrind
|
||||
ventoy-bin
|
||||
vim-spell-en
|
||||
vim-spell-nl
|
||||
virt-manager
|
||||
vulkan-intel
|
||||
wget
|
||||
wine-staging
|
||||
wpa_supplicant
|
||||
x264
|
||||
x86_energy_perf_policy
|
||||
xarchiver
|
||||
xclip
|
||||
xdo
|
||||
xdotool
|
||||
xf86-input-wacom
|
||||
xfsprogs
|
||||
xorg-server
|
||||
xorg-xev
|
||||
xorg-xinit
|
||||
xorg-xinput
|
||||
xorg-xprop
|
||||
xorg-xrandr
|
||||
xorg-xsetroot
|
||||
yt-dlp
|
||||
yt-dlp-drop-in
|
||||
zathura
|
||||
@@ -0,0 +1,51 @@
|
||||
arandr
|
||||
autorandr
|
||||
bspwm
|
||||
doxygen
|
||||
ebtables
|
||||
emacs-nativecomp
|
||||
frei0r-plugins
|
||||
fritzing
|
||||
ghc
|
||||
graphviz
|
||||
i3lock-color-git
|
||||
intel-media-driver
|
||||
intel-media-sdk
|
||||
intel-ucode
|
||||
lib32-vulkan-intel
|
||||
libmtp
|
||||
libnotify-id
|
||||
lxappearance
|
||||
maim
|
||||
mdadm
|
||||
minted
|
||||
platformio
|
||||
polkit-kde-agent
|
||||
polybar
|
||||
python-image
|
||||
python-tqdm
|
||||
qemu
|
||||
qemu-arch-extra
|
||||
qt5gtk2
|
||||
qt6gtk2
|
||||
redshift
|
||||
rofi
|
||||
rxvt-unicode
|
||||
stalonetray
|
||||
sxhkd
|
||||
synergy2-bin
|
||||
texlive-core
|
||||
ttf-ms-win10
|
||||
vulkan-intel
|
||||
x264
|
||||
xarchiver
|
||||
xclip
|
||||
xdo
|
||||
xdotool
|
||||
xorg-server
|
||||
xorg-xev
|
||||
xorg-xinit
|
||||
xorg-xinput
|
||||
xorg-xprop
|
||||
xorg-xrandr
|
||||
xorg-xsetroot
|
||||
@@ -0,0 +1,32 @@
|
||||
amd-ucode
|
||||
ark
|
||||
dxvk-bin
|
||||
emacs-wayland
|
||||
gamescope
|
||||
gammastep
|
||||
ghostty
|
||||
grim
|
||||
hypridle
|
||||
hyprland
|
||||
hyprlock
|
||||
hyprpaper
|
||||
hyprpolkitagent
|
||||
kvantum
|
||||
kvantum-qt5
|
||||
lib32-mesa
|
||||
lib32-vkd3d-proton-git
|
||||
lib32-vulkan-radeon
|
||||
nwg-look
|
||||
pipewire-alsa
|
||||
pipewire-pulse
|
||||
rofi-wayland
|
||||
rtkit
|
||||
slurp
|
||||
steam
|
||||
sunshine-bin
|
||||
vkd3d-proton-bin
|
||||
vulkan-radeon
|
||||
waybar
|
||||
wl-clipboard
|
||||
xdg-desktop-portal-hyprland
|
||||
ydotool
|
||||
Reference in New Issue
Block a user