migration

This commit is contained in:
kokopi-dev
2025-10-28 16:23:11 +09:00
commit 2f27c335cf
116 changed files with 8221 additions and 0 deletions

9
X11/acpi/README.md Normal file
View File

@@ -0,0 +1,9 @@
# Fn Keys/Backlight
https://wiki.archlinux.org/title/acpid
`acpi_listen` and press fn keys to see their names and stuff
`chmod +x script_file_names`: some scripts will need executable permissions
- bl = backlight

3
X11/acpi/events/anything Normal file
View File

@@ -0,0 +1,3 @@
# Pass all events to our one handler script
event=.*
action=/etc/acpi/handler.sh %e

2
X11/acpi/events/bl_d Executable file
View File

@@ -0,0 +1,2 @@
event=video/brightnessdown.*
action=/etc/acpi/handlers/bl -

2
X11/acpi/events/bl_u Executable file
View File

@@ -0,0 +1,2 @@
event=video/brightnessup.*
action=/etc/acpi/handlers/bl +

2
X11/acpi/events/volume_d Executable file
View File

@@ -0,0 +1,2 @@
event=button/volumedown.*
action=/etc/acpi/handlers/volume -

2
X11/acpi/events/volume_u Executable file
View File

@@ -0,0 +1,2 @@
event=button/volumeup.*
action=/etc/acpi/handlers/volume +

77
X11/acpi/handler.sh Executable file
View File

@@ -0,0 +1,77 @@
#!/bin/bash
# Default acpi script that takes an entry for all actions
case "$1" in
# button/power)
# case "$2" in
# PBTN|PWRF)
# logger 'PowerButton pressed'
# ;;
# *)
# logger "ACPI action undefined: $2"
# ;;
# esac
# ;;
# button/sleep)
# case "$2" in
# SLPB|SBTN)
# logger 'SleepButton pressed'
# ;;
# *)
# logger "ACPI action undefined: $2"
# ;;
# esac
# ;;
# ac_adapter)
# case "$2" in
# AC|ACAD|ADP0)
# case "$4" in
# 00000000)
# logger 'AC unpluged'
# ;;
# 00000001)
# logger 'AC pluged'
# ;;
# esac
# ;;
# *)
# logger "ACPI action undefined: $2"
# ;;
# esac
# ;;
# battery)
# case "$2" in
# BAT0)
# case "$4" in
# 00000000)
# logger 'Battery online'
# ;;
# 00000001)
# logger 'Battery offline'
# ;;
# esac
# ;;
# CPU0)
# ;;
# *) logger "ACPI action undefined: $2" ;;
# esac
# ;;
# button/lid)
# case "$3" in
# close)
# logger 'LID closed'
# ;;
# open)
# logger 'LID opened'
# ;;
# *)
# logger "ACPI action undefined: $3"
# ;;
# esac
# ;;
# *)
# logger "ACPI group/action undefined: $1 / $2"
# ;;
esac
# vim:set ts=4 sw=4 ft=sh et:

8
X11/acpi/handlers/bl Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/sh
bl_dev=/sys/class/backlight/intel_backlight
step=1900
case $1 in
-) echo $(($(< $bl_dev/brightness) - $step)) >$bl_dev/brightness;;
+) echo $(($(< $bl_dev/brightness) + $step)) >$bl_dev/brightness;;
esac

5
X11/acpi/handlers/volume Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/sh
case $1 in
-) runuser - kokopi -c "pamixer -d 5";;
+) runuser - kokopi -c "pamixer -i 5";;
esac

1
X11/bspwm/README.md Normal file
View File

@@ -0,0 +1 @@
~/.config/bspwm/bspwmrc

51
X11/bspwm/bspwmrc Executable file
View File

@@ -0,0 +1,51 @@
#! /bin/sh
#
# kill for restarting bspwm
killall -q picom
killall -q fehbg
killall -q polybar
pgrep -x sxhkd > /dev/null || sxhkd &
# depending on the laptop, it will be either eDP1 or eDP-1
# run xrandr --current to check
if [[ $(xrandr -q | grep -w connected | grep "DisplayPort-2") ]]
then
bspc monitor DisplayPort-2 -d 1 2 3 4 5
bspc monitor eDP -d 6 7 8 9
else
bspc monitor eDP -d 1 2 3 4 5 6 7 8 9
fi
# borders
bspc config border_width 2
bspc config focused_border_color "#E5C38F"
bspc config normal_border_color "#423B31"
bspc config top_padding 0
bspc config window_gap 14
bspc config split_ratio 0.52
bspc config borderless_monocle false
bspc config gapless_monocle false
bspc config focus_follows_pointer true
# bspc rule -a Gimp desktop='^8' state=floating follow=on
# bspc rule -a Chromium desktop='^2'
# bspc rule -a mplayer2 state=floating
# bspc rule -a Kupfer.py focus=on
# bspc rule -a Screenkey manage=off
# startup stuff
## compositor
picom -b
## background
~/.fehbg &
## polybar
polybar leftbar &
polybar rightbar &
udiskie &
if [[ $(xrandr -q | grep -w connected | grep "DisplayPort-2") ]]
then
polybar midbar &
fi

5
X11/gtk-3.0/README.md Normal file
View File

@@ -0,0 +1,5 @@
# GTK3 Config Files
Add gtk.css and settings.ini to `~/.config/gtk-3.0/`
Run `GTK_DEBUG=interactive thunar` to check classes on thunar, replace thunar with any gtk applicable app to debug it too

32
X11/gtk-3.0/gtk.css Normal file
View File

@@ -0,0 +1,32 @@
.thunar {
background: none;
}
.thunar .sidebar {
background: rgba(21,24,40,0.3);
}
.thunar toolbar {
background: rgba(21,24,40,0.3);
padding-top: 10px;
padding-bottom: 8px;
border-top: 1px solid #E5C38F;
}
/* toolbar back btns and stuff */
.thunar toolbar .image-button {
color: #E5C38F;
}
/* input bar */
.thunar toolbar toolitem widget box entry {
color: #E5C38F;
background: rgba(6, 2, 16, 0.75);
}
.thunar .sidebar .view {
background: rgba(6, 2, 16, 0.4);
color: #E5C38F;
}
.thunar notebook .view {
background: rgba(6, 2, 16, 0.6);
}
.thunar statusbar {
color: #E5C38F;
background: rgba(6, 2, 16, 0.6);
}

5
X11/gtk-3.0/settings.ini Normal file
View File

@@ -0,0 +1,5 @@
[Settings]
gtk-icon-theme-name=Infinity-Lavender-Dark-Icons
gtk-theme-name=Juno-ocean
gtk-font-name=NotoSans
gtk-cursor-theme-name=phinger-cursors

1
X11/kitty/README.md Normal file
View File

@@ -0,0 +1 @@
~/.config/kitty/kitty.conf

1292
X11/kitty/kitty.conf Executable file

File diff suppressed because it is too large Load Diff

47
X11/kitty/t/navarch_cy Executable file
View File

@@ -0,0 +1,47 @@
background #060813
foreground #F3F3F3
cursor #3DE1CC
#: The foreground for text selected with the mouse. A value of none
#: means to leave the color unchanged.
selection_foreground #323232
#: How much to dim text that has the DIM/FAINT attribute set. One
#: means no dimming and zero means fully dimmed (i.e. invisible).
selection_background #F5A9E6
# black
color0 #353535
color8 #535353
# red
color1 #C44A6B
color9 #D06A85
# green
color2 #3FA48E
color10 #82DCC0
# yellow
color3 #FFBB53
color11 #D3B57B
# blue
color4 #545EC0
color12 #6F77D3
# magenta
color5 #C852B7
color13 #C763BA
# cyan
color6 #62D8EC
color14 #A2E7F2
# white
color7 #E9E9E9
color15 #F5F5F5
active_tab_foreground #ffffff
active_tab_background #535353
inactive_tab_foreground #ffffff
inactive_tab_background #353535

6
X11/lockscreen/README.md Normal file
View File

@@ -0,0 +1,6 @@
`i3lockscreen@.service` -> /etc/systemd/system/i3lockscreen@.service
`i3-main lock-on-suspend` -> /home/$USER/.local/bin
## Enable
`sudo systemctl enable i3lockscreen@USERNAME.service`
test: `sudo systemctl start i3lockscreen@USERNAME.service`

View File

@@ -0,0 +1,27 @@
#!/bin/bash
###
# --keyhl = color of inside the ring when typing
# --bshl = color of inside the ring when backspacing
###
i3lock --image=/home/$USER/pictures/redjuice.png -F \
--radius=120 --ring-width=8 \
--inside-color=ffffffaa \
--ring-color=333333aa \
--line-color=00000000 \
--separator-color=00000000 \
--insidewrong-color=ff000033 \
--ringwrong-color=ff0000aa \
\
--keyhl-color=000000 \
--bshl-color=ff4444 \
\
--clock --indicator \
--time-color=333333 \
--date-color=555555 \
--clock --indicator \
--noinput-text="Empty" \
\
--insidever-color=ffffff22 \
--ringver-color=ffffffaa \
--verif-color=ffffff

View File

@@ -0,0 +1,14 @@
[Unit]
Description=Lock screen before suspend
Before=sleep.target suspend.target hibernate.target
[Service]
User=%i
Type=forking
Environment=DISPLAY=:0
ExecStart=/bin/bash /home/%i/.local/bin/lock-on-suspend
TimeoutSec=10
RemainAfterExit=no
[Install]
WantedBy=sleep.target suspend.target hibernate.target

View File

@@ -0,0 +1,38 @@
#!/bin/bash
# Lock on suspend script
# Save as /usr/local/bin/lock-on-suspend
# Get the user who is logged in to X
USER=$(who | grep '(:0)' | awk '{print $1}' | head -n1)
# If no user found, try alternative method
if [[ -z "$USER" ]]; then
USER=$(ps aux | grep -E "(xinit|startx)" | grep -v grep | awk '{print $1}' | head -n1)
fi
# Exit if no user found
if [[ -z "$USER" ]]; then
echo "No X user found"
exit 0
fi
# Get user's home directory
USER_HOME=$(getent passwd "$USER" | cut -d: -f6)
# Set environment variables for the user's X session
export DISPLAY=:0
export XAUTHORITY="$USER_HOME/.Xauthority"
# Path to your lock script (adjust this to your actual lock script path)
LOCK_SCRIPT="$USER_HOME/.local/bin/i3lock-main"
# Lock as the user
if [[ -f "$LOCK_SCRIPT" ]]; then
sudo -u "$USER" "$LOCK_SCRIPT" &
else
# Fallback to basic i3lock
sudo -u "$USER" i3lock --color=1a1a1a --clock --indicator &
fi
# Give lock time to start
sleep 1

7
X11/picom/README.md Normal file
View File

@@ -0,0 +1,7 @@
# Packages
~/.config/picom/picom.conf
Git version allows dual_kawase blur:
`yay -S picom-git`

435
X11/picom/picom.conf Normal file
View File

@@ -0,0 +1,435 @@
#################################
# Shadows #
#################################
# Enabled client-side shadows on windows. Note desktop windows
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
# unless explicitly requested using the wintypes option.
#
# shadow = false
shadow = true;
# The blur radius for shadows, in pixels. (defaults to 12)
# shadow-radius = 12
shadow-radius = 7;
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
# shadow-opacity = .75
# The left offset for shadows, in pixels. (defaults to -15)
# shadow-offset-x = -15
shadow-offset-x = -7;
# The top offset for shadows, in pixels. (defaults to -15)
# shadow-offset-y = -15
shadow-offset-y = -7;
# Red color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-red = 0
# Green color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-green = 0
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-blue = 0
# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
# shadow-color = "#000000"
# Specify a list of conditions of windows that should have no shadow.
#
# examples:
# shadow-exclude = "n:e:Notification";
#
# shadow-exclude = []
shadow-exclude = [
"name = 'Notification'",
"class_g = 'Conky'",
"class_g ?= 'Notify-osd'",
"class_g = 'Cairo-clock'",
"_GTK_FRAME_EXTENTS@:c"
];
# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window.
# clip-shadow-above = []
# Specify a X geometry that describes the region in which shadow should not
# be painted in, such as a dock window region. Use
# shadow-exclude-reg = "x10+0+0"
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
#
# shadow-exclude-reg = ""
# Crop shadow of a window fully on a particular Xinerama screen to the screen.
# xinerama-shadow-crop = false
#################################
# Fading #
#################################
# Fade windows in/out when opening/closing and when opacity changes,
# unless no-fading-openclose is used.
# fading = false
fading = true;
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
# fade-in-step = 0.028
fade-in-step = 0.07;
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
# fade-out-step = 0.03
fade-out-step = 0.05;
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
# fade-delta = 10
# Specify a list of conditions of windows that should not be faded.
# fade-exclude = []
# Do not fade on window open/close.
# no-fading-openclose = false
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
# no-fading-destroyed-argb = false
#################################
# Transparency / Opacity #
#################################
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
# inactive-opacity = 1
inactive-opacity = 1;
active-opacity = 1;
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
# frame-opacity = 1.0
frame-opacity = 0.8;
# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows.
# inactive-opacity-override = true
inactive-opacity-override = false;
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
# active-opacity = 1.0
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
# inactive-dim = 0.0
# Specify a list of conditions of windows that should never be considered focused.
# focus-exclude = []
focus-exclude = [ "class_g = 'Cairo-clock'" ];
# Use fixed inactive dim value, instead of adjusting according to window opacity.
# inactive-dim-fixed = 1.0
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
# Note we don't make any guarantee about possible conflicts with other
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
# example:
# opacity-rule = [ "80:class_g = 'URxvt'" ];
#
# opacity-rule = []
#################################
# Corners #
#################################
# Sets the radius of rounded window corners. When > 0, the compositor will
# round the corners of windows. Does not interact well with
# `transparent-clipping`.
corner-radius = 8.0;
rounded-borders = 1;
# Exclude conditions for rounded corners.
rounded-corners-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'"
];
#################################
# Background-Blurring #
#################################
# Parameters for background blurring, see the *BLUR* section for more information.
# blur-method =
# blur-size = 12
#
# blur-deviation = false
#
# blur-strength = 5
# Blur background of semi-transparent / ARGB windows.
# Bad in performance, with driver-dependent behavior.
# The name of the switch may change without prior notifications.
#
# blur-background = false
# Blur background of windows when the window frame is not opaque.
# Implies:
# blur-background
# Bad in performance, with driver-dependent behavior. The name may change.
#
# blur-background-frame = false
# Use fixed blur strength rather than adjusting according to window opacity.
# blur-background-fixed = false
# Specify the blur convolution kernel, with the following format:
# example:
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
#
# blur-kern = ""
blur-kern = "3x3box";
blur-method = "dual_kawase"
blur-strength = 4;
blur-background = true;
blur-background-fixed = true;
# Exclude conditions for background blur.
# blur-background-exclude = []
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c",
"class_g = 'Peek'"
];
#################################
# General Settings #
#################################
# Enable remote control via D-Bus. See the man page for more details.
# dbus = true
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
# `xrender` is the default one.
#
backend = "glx"
#backend = "";
# Enable/disable VSync.
# vsync = false
vsync = true;
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
# dbus = false
# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
#
# mark-wmwin-focused = false
mark-wmwin-focused = true;
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;
# Try to detect windows with rounded corners and don't consider them
# shaped windows. The accuracy is not very high, unfortunately.
#
# detect-rounded-corners = false
detect-rounded-corners = true;
# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows.
#
# detect-client-opacity = false
detect-client-opacity = true;
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
# provided that the WM supports it.
#
# use-ewmh-active-win = false
# Unredirect all windows if a full-screen opaque window is detected,
# to maximize performance for full-screen windows. Known to cause flickering
# when redirecting/unredirecting windows.
#
# unredir-if-possible = false
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
# unredir-if-possible-delay = 0
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
# unredir-if-possible-exclude = []
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
# in the same group focused at the same time.
#
# detect-transient = false
detect-transient = true;
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
# group focused at the same time. This usually means windows from the same application
# will be considered focused or unfocused at the same time.
# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too.
#
# detect-client-leader = false
# Resize damaged region by a specific number of pixels.
# A positive value enlarges it while a negative one shrinks it.
# If the value is positive, those additional pixels will not be actually painted
# to screen, only used in blur calculation, and such. (Due to technical limitations,
# with use-damage, those pixels will still be incorrectly painted to screen.)
# Primarily used to fix the line corruption issues of blur,
# in which case you should use the blur radius value here
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
# with a 5x5 one you use `--resize-damage 2`, and so on).
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
#
# resize-damage = 1
# Specify a list of conditions of windows that should be painted with inverted color.
# Resource-hogging, and is not well tested.
#
# invert-color-include = []
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
# Might cause incorrect opacity when rendering transparent content (but never
# practically happened) and may not work with blur-background.
# My tests show a 15% performance boost. Recommended.
#
glx-no-stencil = true;
# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes,
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
# Recommended if it works.
#
# glx-no-rebind-pixmap = false
# Disable the use of damage information.
# This cause the whole screen to be redrawn every time, instead of the part of the screen
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
# The opposing option is use-damage
#
# no-use-damage = false
use-damage = true;
# Use X Sync fence to sync clients' draw calls, to make sure all draw
# calls are finished before picom starts drawing. Needed on nvidia-drivers
# with GLX backend for some users.
#
# xrender-sync-fence = false
# GLX backend: Use specified GLSL fragment shader for rendering window
# contents. Read the man page for a detailed explanation of the interface.
#
# window-shader-fg = "default"
# Use rules to set per-window shaders. Syntax is SHADER_PATH:PATTERN, similar
# to opacity-rule. SHADER_PATH can be "default". This overrides window-shader-fg.
#
# window-shader-fg-rule = [
# "my_shader.frag:window_type != 'dock'"
# ]
# Force all windows to be painted with blending. Useful if you
# have a glx-fshader-win that could turn opaque pixels transparent.
#
# force-win-blend = false
# Do not use EWMH to detect fullscreen windows.
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
#
# no-ewmh-fullscreen = false
# Dimming bright windows so their brightness doesn't exceed this set value.
# Brightness of a window is estimated by averaging all pixels in the window,
# so this could comes with a performance hit.
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
#
# max-brightness = 1.0
# Make transparent windows clip other windows like non-transparent windows do,
# instead of blending on top of them.
#
# transparent-clipping = false
# Specify a list of conditions of windows that should never have transparent
# clipping applied. Useful for screenshot tools, where you need to be able to
# see through transparent parts of the window.
#
# transparent-clipping-exclude = []
# Set the log level. Possible values are:
# "trace", "debug", "info", "warn", "error"
# in increasing level of importance. Case doesn't matter.
# If using the "TRACE" log level, it's better to log into a file
# using *--log-file*, since it can generate a huge stream of logs.
#
# log-level = "debug"
log-level = "warn";
# Set the log file.
# If *--log-file* is never specified, logs will be written to stderr.
# Otherwise, logs will to written to the given file, though some of the early
# logs might still be written to the stderr.
# When setting this option from the config file, it is recommended to use an absolute path.
#
# log-file = "/path/to/your/log/file"
# Show all X errors (for debugging)
# show-all-xerrors = false
# Write process ID to a file.
# write-pid-path = "/path/to/your/log/file"
# Window type settings
#
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
# "tooltip", "notification", "combo", and "dnd".
#
# Following per window-type options are available: ::
#
# fade, shadow:::
# Controls window-type-specific shadow and fade settings.
#
# opacity:::
# Controls default opacity of the window type.
#
# focus:::
# Controls whether the window of this type is to be always considered focused.
# (By default, all window types except "normal" and "dialog" has this on.)
#
# full-shadow:::
# Controls whether shadow is drawn under the parts of the window that you
# normally won't be able to see. Useful when the window has parts of it
# transparent, and you want shadows in those areas.
#
# clip-shadow-above:::
# Controls whether shadows that would have been drawn above the window should
# be clipped. Useful for dock windows that should have no shadow painted on top.
#
# redir-ignore:::
# Controls whether this type of windows should cause screen to become
# redirected again after been unredirected. If you have unredir-if-possible
# set, and doesn't want certain window to cause unnecessary screen redirection,
# you can set this to `true`.
#
wintypes:
{
tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
dock = { shadow = false; clip-shadow-above = true; }
dnd = { shadow = false; }
popup_menu = { opacity = 0.8; }
dropdown_menu = { opacity = 0.8; }
};

1
X11/polybar/README.md Normal file
View File

@@ -0,0 +1 @@
~/.config/polybar/config.ini

260
X11/polybar/config.ini Normal file
View File

@@ -0,0 +1,260 @@
;executable note:
;%{A<button>:<command>:}text to make clickable%{A}
[colors]
background = #0A0418
foreground = #E5C38F
brand-accent = #BF9FD8
brand-secondary = #87409F
alert = #711a26
bspwm-occupied-fg = #82DCC0
bspwm-focused-fg = #97325e
bspwm-focused-bg = #d3b57b
; the semicolon after size is to indicate vertical alignment
[fonts]
font0 = "Noto Sans Mono:style=Regular:pixelsize=12;2"
font1 = "Font Awesome 6 Brands Regular:style=Regular:pixelsize=12;2"
font2 = "Noto Sans Mono:style=Regular:pixelsize=12;2"
font3 = "Font Awesome 6 Free:pixelsize=12;3"
font4 = "Font Awesome 6 Free Solid:pixelsize=12;3"
[vars]
bar-radius = 8
bar-height = 3.2%
bar-left-width = 25%
bar-mid-width = 23%
bar-right-width = 26%
bar-y = 11
bar-left-x = 12
bar-mid-x = 1000
bar-right-x = 1658
[bar/leftbar]
border-size = 2px
border-color = ${colors.brand-accent}
modules-left = date bspwm
width = ${vars.bar-left-width}
height = ${vars.bar-height}
radius = ${vars.bar-radius}
padding-left = 2
module-margin-left = 1
module-margin-right = 1
offset-y = ${vars.bar-y}
offset-x = ${vars.bar-left-x}
wm-restack = bspwm
background = ${colors.background}
foreground = ${colors.foreground}
font-0 = ${fonts.font0}
font-1 = ${fonts.font1}
font-2 = ${fonts.font2}
font-3 = ${fonts.font3}
font-4 = ${fonts.font4}
; [bar/midbar]
; modules-center = date bspwm
; width = ${vars.bar-mid-width}
; height = ${vars.bar-height}
; radius = ${vars.bar-radius}
; offset-y = ${vars.bar-y}
; offset-x = ${vars.bar-mid-x}
; module-margin-left = 1
; module-margin-right = 1
; background = ${colors.background}
; foreground = ${colors.foreground}
; scroll-up = bspwm-desknext
; scroll-down = bspwm-deskprev
; font-0 = ${fonts.font0}
; font-1 = ${fonts.font1}
; font-2 = ${fonts.font2}
; font-3 = ${fonts.font3}
; font-4 = ${fonts.font4}
[bar/rightbar]
border-size = 2px
border-color = ${colors.brand-accent}
modules-right = wlan eth cpu memory bluetooth pulseaudio xkeyboard battery
padding-right = 2
radius = ${vars.bar-radius}
width = ${vars.bar-right-width}
height = ${vars.bar-height}
offset-y = ${vars.bar-y}
offset-x = ${vars.bar-right-x}
background = ${colors.background}
foreground = ${colors.foreground}
; cursor shape when hovering and scrolling over bar icons
cursor-click = pointer
eursor-scroll = ns-resize
module-margin-left = 1
module-margin-right = 1
font-0 = ${fonts.font0}
font-1 = ${fonts.font1}
font-2 = ${fonts.font2}
font-3 = ${fonts.font3}
font-4 = ${fonts.font4}
[bar/midbar]
monitor = DisplayPort-2
modules-center = date bspwm
width = ${vars.bar-mid-width}
height = ${vars.bar-height}
radius = ${vars.bar-radius}
offset-y = ${vars.bar-y}
offset-x = ${vars.bar-mid-x}
module-margin-left = 1
module-margin-right = 1
background = ${colors.background}
foreground = ${colors.foreground}
scroll-up = bspwm-desknext
scroll-down = bspwm-deskprev
font-0 = ${fonts.font0}
font-1 = ${fonts.font1}
font-2 = ${fonts.font2}
font-3 = ${fonts.font3}
font-4 = ${fonts.font4}
; [module/xwindow]
; type = internal/xwindow
; format = <label>
; label = %title%
; label-foreground = ${colors.foreground}
; format-prefix = " "
; format-prefix-foreground = ${colors.xwindow-prefix-fg}
; label-maxlen = 60
[module/xkeyboard]
type = internal/xkeyboard
format-prefix = %{A1:ibus-setup:}%{A}
format-prefix-foreground = ${colors.brand-accent}
label-layout = %icon% %layout%
format = <label-layout>
blacklist-0 = caps lock
click-left-exec = ibus-setup
[module/bspwm]
type = internal/bspwm
pin-workspaces = true
enable-scroll = false
;label-focused = 
label-focused =
label-focused-foreground = ${colors.brand-secondary}
label-focused-background = ${colors.brand-accent}
label-focused-padding = 1
; set label properties
;label-occupied = 
label-occupied =
label-occupied-padding = 1
label-occupied-foreground = ${colors.brand-accent}
label-urgent = !
label-urgent-background = ${colors.alert}
label-urgent-padding = 1
label-empty =
[module/bluetooth]
type = custom/text
content = ""
format = <label>
content-foreground = ${colors.brand-accent}
; click-middle = bspc rule -a '*' -o state=floating rectangle=400x120+775+48 && kitty -e sudo polybarblue.sh
; click-left = blueman-manager
;clicking requires polybarcal.sh in your /bin
[module/date]
type = internal/date
interval = 1
date = %Y-%m-%d%
time = %H:%M
label = %{A1:bspc rule -a '*' -o state=floating rectangle=250x250+775+45 && kitty -e polybarcal.sh:}%time% | %date%%{A}
label-foreground = ${colors.foreground}
[module/pulseaudio]
type = internal/pulseaudio
sink = alsa_output.pci-0000_12_00.3.analog-stereo
use-ui-max = true
interval = 5
format-volume = <bar-volume>
bar-volume-width = 5
bar-volume-foreground-0 = ${colors.brand-accent}
bar-volume-gradient = false
bar-volume-indicator =
bar-volume-indicator-foreground = ${colors.brand-accent}
bar-volume-indicator-font = 2
bar-volume-fill =
bar-volume-fill-font = 2
bar-volume-empty =
bar-volume-empty-font = 2
label-muted =
label-muted-foreground = ${colors.volume-muted-fg}
; click-middle = bspc rule -a '*' -o state=floating && pavucontrol
[module/battery]
type = internal/battery
;/sys/class/power_supply
battery = BAT1
adapter = ACAD
poll-interval = 5
full-at = 99
format-charging = <animation-charging> <label-charging>
label-charging = %percentage%%
animation-charging-foreground = ${colors.brand-accent}
label-discharging = %percentage%%
format-discharging = <ramp-capacity> <label-discharging>
ramp-capacity-foreground = ${colors.brand-accent}
;label-charging = 
format-full = <label-full>
label-full =
label-full-foreground = ${colors.brand-accent}
ramp-capacity-0 =
ramp-capacity-1 =
ramp-capacity-2 =
ramp-capacity-3 =
ramp-capacity-4 =
animation-charging-0 =
animation-charging-1 =
animation-charging-2 =
animation-charging-3 =
animation-charging-4 =
animation-charging-framerate = 750
[module/memory]
type = internal/memory
interval = 5
label = %percentage_used%%
label-padding-left = 1
format-prefix = ""
format-prefix-foreground = ${colors.brand-accent}
[module/cpu]
type = internal/cpu
interval = 5
format-prefix = ""
format-prefix-foreground = ${colors.brand-accent}
label = %percentage:2%%
[module/wlan]
type = internal/network
;get interface via `ip link`, starts with wl
interface = wlp1s0
interval = 3
format-connected-prefix = %{A1:nm-connection-editor:}%{A}
format-connected-prefix-foreground = ${colors.brand-accent}
format-connected = <label-connected>
label-connected = %essid%
label-connected-maxlen = 9
label-connected-font = 0
label-connected-padding-left = 1
format-disconnected =
[module/eth]
type = internal/network
interface = net0
interval = 3
format-connected-prefix =
label-connected = %local_ip%
[settings]
screenchange-reload = true
[global/wm]
margin-top = 4
margin-bottom = 4

119
X11/rofi/config.rasi Normal file
View File

@@ -0,0 +1,119 @@
configuration {
show-icons: true;
font: "Fira Code Retina 12";
display-drun: "";
}
* {
text-color: #E9E9E9;
spacing: 0;
}
window {
background-color: #00000050;
height: 100%;
width: 100%;
padding: 450px 550px;
enabled: true;
location: center;
anchor: center;
transparency: "real";
children: ["mainbox"];
}
mainbox {
border-radius: 10px;
border: 2px;
border-color: #BF9FD8;
location: center;
background-color: #0A041835;
enabled: true;
padding: 1.25em;
spacing: 1.25em;
children: [ "imageBox", "rightbox" ];
orientation: horizontal;
background-color: transparent;
}
rightbox {
background-color: #0A041835;
width: 45%;
children: [ "inputbar", "listview" ];
border-radius: 0.65em;
border: 1px;
border-color: #E5C38F;
expand: true;
}
imageBox {
width: 45%;
padding: 5px;
expand: true;
background-image: url("/home/kokopi/pictures/rofi-sqrs/sgsqr5.png", height);
border-radius: 0.65em; // Optional, for rounded corners
}
inputbar {
border: 0 0 1px 0;
children: [prompt,entry];
border-color: #E5C38F;
border-radius: 0px;
background-color: #0A041835;
}
prompt {
padding: 16px 16px 16px 16px;
border-radius:0px;
border: 0 1px 0 0;
border-color: #060813;
text-color: #E5C38F;
background-color: #0A041835;
}
/* search bar */
entry {
padding: 16px;
border: 0px;
text-color: #BF9FD8;
cursor: text;
background-color: #0A041835;
}
textbox {
background-color: #2e343f;
border: 0 0 1px 0;
border-color: #282C33;
padding: 8px 16px;
background-color: #0A041835;
}
listview {
cycle: false;
margin: 0 0 -1px 0;
scrollbar: false;
dynamic: true;
border-radius: 0px;
border: 0;
background-color: #0A041835;
}
element {
border: 0;
padding: 20px;
border-radius: 0px;
spacing: 1em; /* gap between element-text and element-icon */
background-color: #0A041835;
}
element-text {
background-color: #0A041800;
color: #E5C38F;
}
element-icon {
}
element selected {
background-color: #BF9FD830;
border-radius:0px;
border: 0;
}

73
X11/rofi/quickapps.rasi Normal file
View File

@@ -0,0 +1,73 @@
// Config //
configuration {
modi: "drun";
show-icons: true;
}
@theme "~/.config/rofi/theme.rasi"
// Main //
window {
transparency: "real";
fullscreen: false;
enabled: true;
cursor: "default";
spacing: 0em;
padding: 0em;
background-color: @main-bg;
}
mainbox {
enabled: true;
spacing: 0em;
padding: 0em;
orientation: horizontal;
children: [ "listbox" ];
background-color: transparent;
}
// Lists //
listbox {
padding: 0em;
spacing: 0em;
orientation: horizontal;
children: [ "listview" ];
background-color: transparent;
}
listview {
padding: 2px;
spacing: 0em;
enabled: true;
columns: 1;
cycle: true;
dynamic: true;
scrollbar: false;
flow: horizontal;
reverse: false;
fixed-height: false;
fixed-columns: false;
cursor: "default";
background-color: transparent;
}
// Elements //
element {
orientation: vertical;
enabled: true;
spacing: 0em;
padding: 0em;
cursor: pointer;
background-color: transparent;
}
element selected.normal {
background-color: @main-fg;
}
element-icon {
cursor: inherit;
background-color: transparent;
}
element-text {
enabled: false;
}

19
X11/rofi/runrofi.sh Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
IMAGE_DIR=~/pictures/rofi-sqrs
THEME_FILE=~/.config/rofi/config.rasi
LOG_FILE=~/.config/rofi/.randomized_image.log
IMAGE=$(find "$IMAGE_DIR" -type f | sort -R | head -n 1)
LAST_IMAGE=$(cat ~/.config/rofi/.randomized_image.log)
while true; do
if [[ "$IMAGE" != "$LAST_IMAGE" ]]; then
echo "$IMAGE" > $LOG_FILE
break
fi
IMAGE=$(find "$IMAGE_DIR" -type f | sort -R | head -n 1)
done
sed -i "s|background-image: url(\".*\", height);|background-image: url(\"$IMAGE\", height);|" $THEME_FILE
rofi -show drun -theme $THEME_FILE

85
X11/rofi/selector.rasi Normal file
View File

@@ -0,0 +1,85 @@
// Config //
configuration {
modi: "drun";
show-icons: true;
drun-display-format: "{name}";
font: "JetBrainsMono Nerd Font 10";
}
@theme "~/.config/rofi/theme.rasi"
// Main //
window {
enabled: true;
fullscreen: false;
transparency: "real";
cursor: "default";
spacing: 0em;
padding: 0em;
border: 0em;
border-radius: 0em;
border-color: transparent;
background-color: @main-bg;
}
mainbox {
enabled: true;
orientation: horizontal;
children: [ "dummy", "frame", "dummy" ];
background-color: transparent;
}
frame {
children: [ "listview" ];
background-color: transparent;
}
// Lists //
listview {
enabled: true;
spacing: 4em;
padding: 4em;
columns: 10;
lines: 1;
dynamic: false;
fixed-height: false;
fixed-columns: true;
reverse: true;
cursor: "default";
background-color: transparent;
text-color: @main-fg;
}
dummy {
width: 2em;
expand: false;
background-color: transparent;
}
// Elements //
element {
enabled: true;
spacing: 0em;
padding: 0em;
cursor: pointer;
background-color: transparent;
text-color: @main-fg;
}
element selected.normal {
background-color: @select-bg;
text-color: @select-fg;
}
element-icon {
cursor: inherit;
size: 10em;
background-color: transparent;
text-color: inherit;
expand: false;
}
element-text {
vertical-align: 0.5;
horizontal-align: 0.5;
cursor: inherit;
background-color: transparent;
text-color: inherit;
}

10
X11/rofi/theme.rasi Normal file
View File

@@ -0,0 +1,10 @@
* {
main-bg: #11111be6;
main-fg: #cdd6f4ff;
main-br: #cba6f7ff;
main-ex: #f5e0dcff;
select-bg: #b4befeff;
select-fg: #11111bff;
separatorcolor: transparent;
border-color: transparent;
}

1
X11/starship/README.md Normal file
View File

@@ -0,0 +1 @@
~/.config/starship.toml

58
X11/starship/starship.toml Executable file
View File

@@ -0,0 +1,58 @@
add_newline = false
[character]
# Prompt format
vicmd_symbol = "[V](bold green) "
format = """
[┌──────────────────────────────────────────────](fg:#CC59B0)
[└─>](fg:#CC59B0) """
[username]
style_user = "fg:#CC99CC"
style_root = "white"
format = " [$user]($style)[@](bold yellow)"
disabled = false
show_always = true
[hostname]
ssh_only = false
format = "[$hostname](bold fg:#CC59B0): "
disabled = false
[directory]
read_only = "🔒"
read_only_style= "bold white"
style = "fg:#E5C38F"
[docker_context]
format = "via [🐋 $context](blue bold)"
[cmd_duration]
disabled = true
[aws]
format = "on [$symbol$profile]($style) "
style = "bold cyan"
symbol = "🅰 "
[aws.region_aliases]
us-east-1 = "est-1"
# Git
[git_branch]
style = "fg:white bg:black"
[git_status]
style = "fg:#E29191"
# Language Environments
[package]
style = "bold fg:#5E5E5E"
[python]
style = "bold fg:#5E5E5E"
symbol = "[](bold yellow) "
[nodejs]
style = "bold fg:#5E5E5E"
symbol = "[⬢](bold green) "

5
X11/sxhkd/README.md Normal file
View File

@@ -0,0 +1,5 @@
~/.config/sxhkd/sxhkdrc
# Setup
- Move `scripts/` stuff into `/bin`
- Run `sudo chmod 777` on all the scripts

View File

@@ -0,0 +1,37 @@
#!/bin/bash
#++ requirements:
#+ sudo pacman -S xdo
size=${2:-'10'}
dir=$1
is_tiled() {
bspc query -T -n | grep -q '"state":"tiled"'
}
if ! is_tiled; then
case "$dir" in
west) switch="-w"
sign="-"
;;
east) switch="-w"
sign="+"
;;
north) switch="-h"
sign="-"
;;
south) switch="-h"
sign="+"
;;
esac
xdo resize ${switch} ${sign}${size}
else
case "$dir" in
west) bspc node @west -r -$size || bspc node @east -r -${size}
;;
east) bspc node @west -r +$size || bspc node @east -r +${size}
;;
north) bspc node @south -r -$size || bspc node @north -r -${size}
;;
south) bspc node @south -r +$size || bspc node @north -r +${size}
;;
esac
fi

View File

@@ -0,0 +1,85 @@
#!/bin/bash
# Originally by https://github.com/windelicato/
size=${2:-'20'}
dir=$1
transplanter() {
bspc node ${dir} -p south && bspc node -n ${dir}
}
northplanter() {
bspc node north -p north && bspc node -n north
}
rootplanter() {
bspc node @/ -p ${dir} && bspc node -n @/ || bspc node -s next.local && bspc node -n @/
bspc node @/ -p cancel
}
bspc config pointer_follows_focus true
# Find current window mode
is_floating() {
bspc query -T -n | grep -q '"state":"floating"'
}
# If the window is floating, move it
if is_floating; then
#only parse input if window is floating,tiled windows accept input as is
case "$dir" in
west) switch="-x"
sign="-"
;;
east) switch="-x"
sign="+"
;;
north) switch="-y"
sign="-"
;;
*) switch="-y"
sign="+"
;;
esac
xdo move ${switch} ${sign}${size}
# Otherwise, window is tiled: switch with window in given direction
else
if [[ $(bspc query -N -n .local.\!floating | wc -l) != 2 ]]; then
case "$dir" in
north) northplanter || rootplanter
;;
*) transplanter || rootplanter
;;
esac
else
case "$dir" in
east) bspc node -s east || bspc query -N -n west.local || \
if bspc query -N -n south.local ; then
bspc node @/ -R 90
else
bspc node @/ -R 270
fi
;;
west) bspc node -s west || bspc query -N -n east.local || \
if bspc query -N -n north.local ; then
bspc node @/ -R 90
else
bspc node @/ -R 270
fi
;;
south) bspc node -s south || bspc query -N -n north.local || \
if bspc query -N -n west.local ; then
bspc node @/ -R 90
else
bspc node @/ -R 270
fi
;;
*) bspc node -s north || bspc query -N -n south.local || \
if bspc query -N -n west.local ; then
bspc node @/ -R 270
else
bspc node @/ -R 90
fi
;;
esac
fi
fi

View File

@@ -0,0 +1,13 @@
#!/bin/sh
#Focus windows by direction, works with multihead
#called like this in sxhkdrc:
#super + {a,s,w,d}
# focusmover {west,south,north,east}
bspc config pointer_follows_monitor true; \
bspc config pointer_follows_focus true; \
dir=$@; \
if ! bspc node -f $dir; then \
bspc monitor -f $dir; \
fi; \
bspc config pointer_follows_monitor false; \
bspc config pointer_follows_focus false

165
X11/sxhkd/sxhkdrc Normal file
View File

@@ -0,0 +1,165 @@
#
# wm independent hotkeys
#
# terminal emulator
super + Return
kitty
super + d
~/.config/rofi/runrofi.sh
# program launcher
super + @space
dmenu_run
# make sxhkd reload its configuration files:
super + Escape
pkill -USR1 -x sxhkd
# screenshot
Print
flameshot gui
super + Print
flameshot full -c
super + e
thunar
#
# bspwm hotkeys
#
# quit/restart bspwm
# super + alt + {q,r}
# bspc {quit,wm -r}
super + alt + r
bspc wm -r
# close and kill
super + shift + q
bspc node -c
# alternate between the tiled and monocle layout
super + m
bspc desktop -l next
# send the newest marked node to the newest preselected node
super + y
bspc node newest.marked.local -n newest.!automatic.local
# swap the current node and the biggest window
super + g
bspc node -s biggest.window
# cycle workspaces
super + alt + {Left,Right}
bspc desktop -f {prev,next}
#bspc desltop -f {prev,next}.local
#
# state/flags
#
# set the window state
# super + {t,shift + t,s,f}
# bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
super + t
{bspc node -t floating && window-placer $(bspc query -T -d | grep -o '"state":"floating"' | wc -l),bspc node -t tiled}
# set the node flags
super + ctrl + {m,x,y,z}
bspc node -g {marked,locked,sticky,private}
#
# focus/swap
#
# focus the node in the given direction
super + {_,shift + }{h,j,k,l}
bspc node -{f,s} {west,south,north,east}
# focus the node for the given path jump
super + {p,b,comma,period}
bspc node -f @{parent,brother,first,second}
# focus the next/previous window in the current desktop
super + {_,shift + }c
bspc node -f {next,prev}.local.!hidden.window
# focus the next/previous desktop in the current monitor
super + bracket{left,right}
bspc desktop -f {prev,next}.local
# focus the last node/desktop
super + {grave,Tab}
bspc {node,desktop} -f last
# focus the older or newer node in the focus history
super + {o,i}
bspc wm -h off; \
bspc node {older,newer} -f; \
bspc wm -h on
# focus or send to the given desktop
super + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '^{1-9,10}'
#
# preselect
#
# preselect the direction
super + ctrl + {h,j,k,l}
bspc node -p {west,south,north,east}
# preselect the ratio
super + ctrl + {1-9}
bspc node -o 0.{1-9}
# cancel the preselection for the focused node
super + ctrl + space
bspc node -p cancel
# cancel the preselection for the focused desktop
super + ctrl + shift + space
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
#
# move/resize
#
# expand a window by moving one of its side outward
super + alt + {h,j,k,l}
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
# contract a window by moving one of its side inward
super + alt + shift + {h,j,k,l}
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
# Scripts below require chown of root:root and chmod 777, and put them in /bin folder
# move focus in direction
super + {Left,Down,Up,Right}
focusmover {west,south,north,east}
# force window into direction
super + shift + {Left,Down,Up,Right}
euclid_mover {west,south,north,east}
# resize window
super + ctrl + {Left,Down,Up,Right}
bspwm_resize {west,south,north,east}
# framework brightness
XF86MonBrightnessUp
python ~/00/framework_arch_tools/brightness.py +
XF86MonBrightnessDown
python ~/00/framework_arch_tools/brightness.py -
XF86AudioRaiseVolume
sh ~/00/framework_arch_tools/volume.sh up
XF86AudioLowerVolume
sh ~/00/framework_arch_tools/volume.sh down
XF86AudioMute
sh ~/00/framework_arch_tools/volume.sh mute

View File

@@ -0,0 +1,14 @@
# Root Systemd
Put services in `/etc/systemd/system/*`
Run:
```
sudo systemctl enable myservice@USERNAME.service
sudo systemctl start myservice@USERNAME.service
```
Files:
Check the service file for where the scripts should be located

View File

@@ -0,0 +1,15 @@
[Unit]
Description=Lockscreen
Before=sleep.target
[Service]
Type=simple
User=kokopi
Environment=DISPLAY=:0
ExecStart=/bin/betterlockscreen -l
ExecStartPost=/bin/sleep 1
[Install]
WantedBy=sleep.target
WantedBy=suspend.target
WantedBy=hibernate.target

26
X11/systemd/root/i3lock-main Executable file
View File

@@ -0,0 +1,26 @@
#!/bin/bash
###
# --keyhl = color of inside the ring when typing
# --bshl = color of inside the ring when backspacing
###
i3lock --image=/home/kokopi/pictures/redjuice.png -F \
--radius=120 --ring-width=8 \
--inside-color=ffffffaa \
--ring-color=333333aa \
--line-color=00000000 \
--separator-color=00000000 \
--insidewrong-color=ff000033 \
--ringwrong-color=ff0000aa \
\
--keyhl-color=000000 \
--bshl-color=ff4444 \
\
--clock --indicator \
--time-color=333333 \
--date-color=555555 \
--clock --indicator \
--noinput-text="Empty" \
\
--insidever-color=ffffff22 \
--ringver-color=ffffffaa \
--verif-color=ffffff

View File

@@ -0,0 +1,14 @@
[Unit]
Description=Lock screen before suspend
Before=sleep.target suspend.target hibernate.target
[Service]
User=%i
Type=forking
Environment=DISPLAY=:0
ExecStart=/bin/bash /home/%i/.local/bin/lock-on-suspend
TimeoutSec=10
RemainAfterExit=no
[Install]
WantedBy=sleep.target suspend.target hibernate.target

View File

@@ -0,0 +1,38 @@
#!/bin/bash
# Lock on suspend script
# Save as /usr/local/bin/lock-on-suspend
# Get the user who is logged in to X
USER=$(who | grep '(:0)' | awk '{print $1}' | head -n1)
# If no user found, try alternative method
if [[ -z "$USER" ]]; then
USER=$(ps aux | grep -E "(xinit|startx)" | grep -v grep | awk '{print $1}' | head -n1)
fi
# Exit if no user found
if [[ -z "$USER" ]]; then
echo "No X user found"
exit 0
fi
# Get user's home directory
USER_HOME=$(getent passwd "$USER" | cut -d: -f6)
# Set environment variables for the user's X session
export DISPLAY=:0
export XAUTHORITY="$USER_HOME/.Xauthority"
# Path to your lock script (adjust this to your actual lock script path)
LOCK_SCRIPT="$USER_HOME/.local/bin/i3lock-main"
# Lock as the user
if [[ -f "$LOCK_SCRIPT" ]]; then
sudo -u "$USER" "$LOCK_SCRIPT" &
else
# Fallback to basic i3lock
sudo -u "$USER" i3lock --color=1a1a1a --clock --indicator &
fi
# Give lock time to start
sleep 1

View File

@@ -0,0 +1,10 @@
# User Systemd
Put services in `~/.config/systemd/user/*`
Run:
```
systemctl --user enable myservice.service
systemctl --user start myservice
```

View File

@@ -0,0 +1,9 @@
[Unit]
Description=ibus environment initialization
Before=xorg.target
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl --user set-environment XMODIFIERS=@im=ibus
ExecStart=/usr/bin/systemctl --user set-environment GTK_IM_MODULE=ibus
ExecStart=/usr/bin/systemctl --user set-environment QT_IM_MODULE=ibus

View File

@@ -0,0 +1,11 @@
[Unit]
Description=ibus daemon
Wants=ibus-env.service
After=xorg.target
[Service]
ExecStart=/usr/bin/ibus-daemon
Restart=on-abort
[Install]
WantedBy=xorg.target

19
X11/xorg/README.md Normal file
View File

@@ -0,0 +1,19 @@
Files:
- `Xresources` -> `~/.Xresources`
- `.xinitrc` -> `~/.xinitrc`
- `.xserverrc` -> `~/.xserverrc`
- `xorg.conf.d/30-touchpad.conf` -> `/etc/X11/xorg.conf.d/30-touchpad.conf`
- `xorg.conf.d/40-libinput.conf` -> `/etc/X11/xorg.conf.d/40-libinput.conf`
- `xorg.conf` -> `/etc/X11/xorg.conf`
---
Xorg conf generation:
https://wiki.archlinux.org/title/xorg : 3.2
---
Test keystrokes with command:
```
xinput list
xinput test <device>
```

3
X11/xorg/Xresources Normal file
View File

@@ -0,0 +1,3 @@
Xcursor.theme: phinger-cursors-dark
Xcursor.size: 24
Xft.dpi: 120

45
X11/xorg/xinitrc Normal file
View File

@@ -0,0 +1,45 @@
#!/bin/sh
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi
if [ -f "$userresources" ]; then
xrdb -merge "$userresources"
fi
if [ -f "$usermodmap" ]; then
xmodmap "$usermodmap"
fi
# start some nice programs
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
# japanese keyboard
ibus-daemon -rxRd
# fix X cursor issue with bspwm
xsetroot -cursor_name left_ptr
# TODO find a way to lock on tty and still have the option for tty
betterlockscreen -l
# exec runs last
exec bspwm

109
X11/xorg/xorg.conf Normal file
View File

@@ -0,0 +1,109 @@
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
ModulePath "/usr/lib/xorg/modules"
FontPath "/usr/share/fonts/misc"
FontPath "/usr/share/fonts/TTF"
FontPath "/usr/share/fonts/OTF"
FontPath "/usr/share/fonts/Type1"
FontPath "/usr/share/fonts/100dpi"
FontPath "/usr/share/fonts/75dpi"
EndSection
Section "Module"
Load "glx"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection
Section "Device"
### Available Driver options are:-
### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
### <string>: "String", <freq>: "<f> Hz/kHz/MHz",
### <percent>: "<f>%"
### [arg]: arg optional
#Option "Accel" # [<bool>]
#Option "AccelMethod" # <str>
#Option "Backlight" # <str>
#Option "CustomEDID" # <str>
#Option "DRI" # <str>
#Option "Present" # [<bool>]
#Option "ColorKey" # <i>
#Option "VideoKey" # <i>
#Option "Tiling" # [<bool>]
#Option "LinearFramebuffer" # [<bool>]
#Option "HWRotation" # [<bool>]
#Option "VSync" # [<bool>]
#Option "PageFlip" # [<bool>]
#Option "SwapbuffersWait" # [<bool>]
#Option "TripleBuffer" # [<bool>]
#Option "XvPreferOverlay" # [<bool>]
#Option "HotPlug" # [<bool>]
#Option "ReprobeOutputs" # [<bool>]
#Option "XvMC" # [<bool>]
#Option "ZaphodHeads" # <str>
#Option "VirtualHeads" # <i>
#Option "TearFree" # [<bool>]
#Option "PerCrtcPixmaps" # [<bool>]
#Option "FallbackDebug" # [<bool>]
#Option "DebugFlushBatches" # [<bool>]
#Option "DebugFlushCaches" # [<bool>]
#Option "DebugWait" # [<bool>]
#Option "BufferCache" # [<bool>]
Identifier "Card0"
Driver "intel"
BusID "PCI:0:2:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSectionSub "Display"
Viewport 0 0
Depth 1
EndSubSection
SubSectionSub "Display"
Viewport 0 0
Depth 4
EndSubSection
SubSectionSub "Display"
Viewport 0 0
Depth 8
EndSubSection
SubSectionSub "Display"
Viewport 0 0
Depth 15
EndSubSection
SubSectionSub "Display"
Viewport 0 0
Depth 16
EndSubSection
SubSectionSub "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection

View File

@@ -0,0 +1,10 @@
Section "InputClass"
Identifier "touchpad"
Driver "libinput"
MatchIsTouchpad "on"
Option "Tapping" "on"
Option "ScrollMethod" "two-finger"
Option "TapButton1" "1"
Option "TapButton2" "2"
Option "TapButton3" "3"
EndSection

View File

@@ -0,0 +1,52 @@
# Match on all types of devices but joysticks
#
# If you want to configure your devices, do not copy this file.
# Instead, use a config snippet that contains something like this:
#
# Section "InputClass"
# Identifier "something or other"
# MatchDriver "libinput"
#
# MatchIsTouchpad "on"
# ... other Match directives ...
# Option "someoption" "value"
# EndSection
#
# This applies the option any libinput device also matched by the other
# directives. See the xorg.conf(5) man page for more info on
# matching devices.
Section "InputClass"
Identifier "libinput pointer catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
Section "InputClass"
Identifier "libinput keyboard catchall"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
Section "InputClass"
Identifier "libinput touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
Section "InputClass"
Identifier "libinput touchscreen catchall"
MatchIsTouchscreen "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
Section "InputClass"
Identifier "libinput tablet catchall"
MatchIsTablet "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection

4
X11/xorg/xserverrc Normal file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
# logging
# exec /usr/bin/Xorg -nolisten tcp "$@" vt$XDG_VTNR > /home/kokopi/xorg_log.txt 2>&1
exec /usr/bin/Xorg -nolisten tcp "$@" vt$XDG_VTNR