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

10
.gitignore vendored Normal file
View File

@@ -0,0 +1,10 @@
scripts/.gitremotetoken.json
venv/
.env
*.pyc
__pycache__/
instance/
.pytest_cache/
dist/
build/
*.egg-info/

57
README.md Normal file
View File

@@ -0,0 +1,57 @@
# Dotfiles
This is a work in progress, check back for updates. Might look into making a changelog.
Each folder should have a README of some tips.
## Hyprland Setup (2025) (hyprland/)
- Shell: bash
* Prompt: Starship
- WM: hyprland
- Terminal: ghostty
- Editor: neovim
- Menus: rofi
- Lockscreen: hyprlock
- Password Manager: pass (syncpass)
## X11 Setup (~2020) (X11/)
- Shell: bash
* Prompt: Starship
- WM: bspwm
- Terminal: kitty
* Font: Fira Code
- Editor: neovim
- Status Bar: polybar
- Compositor: picom
- Menu: rofi
- Theme Stuff: gtk-3.0
* Theme: Juno Ocean
* Icons: Infinity Lavender Dark Icons
- File Explorer: thunar-git
- Search: fzf, fd, ripgrep
- Misc: exa, bat
- Lockscreen: i3lock
- Password Manager: pass
## Commands
Wifi:
- `nmtui`
Bluetooth:
- `blueman-manager`
Audio:
- `alsamixer`: terminal control of volume
## Some settings
- Icons
- `~/.config/gtk-3.0/settings.ini`
- `/usr/share/icons/*`
## Useful wikis
- NVME storage: https://wiki.archlinux.org/title/Solid_state_drive/NVMe
## USB Auto Mounting
- using packages: udisks2 and udiskie (for automatic mounting)
- unmounting needs manual: udiskie-umount /run/media/$USER/usb_folder_name

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

124
arch/install_ref Normal file
View File

@@ -0,0 +1,124 @@
# USE AS REFERENCE, DONT RUN
# SSD maintenance
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
# needed packages after installing arch
# make sure your'e not root when running
sudo pacman -S git firefox xorg-server xorg-xinput xorg-xinit xorg-xset xorg-xsetroot neofetch feh rofi pass rsync bat ripgrep fd polybar man-db xclip flameshot peek screenkey tumbler thunar unzip polkit openssh
# https://wiki.archlinux.org/title/backlight
# intel screen brightness control
sudo pacman -S xorg-xbacklight
# fn keys, check dotfiles/acpid
sudo pacman -S acpid
sudo systemctl start acpid
sudo systemctl enable acpid
# xrandr GUI
sudo pacman -S arandr
# audio
## i think sof-firmware is required for asus zenbook UX325E
## audio should just work after installing
## run alsamixer to change volume in terminal
sudo pacman -S pulseaudio pulseaudio-bluetooth pulseaudio-alsa sof-firmware
#audio GUI
sudo pacman -S pavucontrol
# bluetooth
## bluetooth audio should automatically switch sinks
## blueman is the GUI, rofi or blueman-manager in terminal
sudo pacman -S bluez bluez-utils blueman
sudo systemctl start bluetooth.service
sudo systemctl enable bluetooth.service
# dev stuff
sudo pacman -S neovim kitty npm rust
## python
sudo pacman -S tk
curl https://pyenv.run | bash
# japanese fonts
sudo pacman -S adobe-source-han-sans-jp-fonts adobe-source-han-serif-jp-fonts otf-ipafont
# japanese input
## https://wiki.archlinux.org/title/Input_Japanese_using_ibus
## check docs for setting up the systemd services
## user systemctl control: systemctl --user enable ibus.service
## ibus-setup will need to use the system python
## run: PYTHON=/usr/bin/python ibus-setup
## clicking the keyboard icon on current polybar will open it
## PC will need to reboot after setting up
sudo pacman -S ibus-anthy
# fonts and symbols for nvim
sudo pacman -S ttf-nerd-fonts-symbols ttf-fira-code
# emojis
sudo pacman -S noto-fonts-emoji
# cache fonts
fc-cache
yay -S picom-git
sudo pacman -S bspwm xdo sxhkd
# check https://wiki.archlinux.org/title/Xorg : driver installation
## amd
sudo pacman -S xf86-video-amdgpu mesa vulkan-radeon
## intel
sudo pacman -S xf86-video-intel mesa vulkan-intel
# installing yay
sudo git clone https://aur.archlinux.org/yay.git /opt
sudo chown -R username:username /opt/yay
cd /opt/yay;makepkg -si
# after setting up X
# https://wiki.archlinux.org/title/Desktop_notifications
## setup the service in /usr/share/dbus-1/services
sudo pacman -S notification-daemon
## test with exa -la, set this in bashrc alias for ll and stuff
sudo pacman -S exa
sudo pacman -S starship
# database
sudo pacman -S postgresql dbeaver
# gtk3.0 theme
# https://github.com/phisch/phinger-cursors
# gtk themes are in /usr/share/themes
# gtk cursor themes are in /usr/share/icons
# systemwide cursor settings are in /usr/share/icons/default/index.theme
yay -S juno-ocean-gtk-theme-git phinger-cursors
# lockscreen
# https://github.com/betterlockscreen/betterlockscreen
yay -S betterlockscreen
# bash auto complete
# https://github.com/scop/bash-completion
sudo pacman -S bash-completion
# fzf, ctrl+t in term
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
# bun
curl -fsSL https://bun.sh/install | bash
#hugo latest extended
sudo pacman -S hugo
# bazecor
# install bazecor
# chmod u+x Bazecor...
# ./Bazecor... --appimage-extract
# sudo cp -r usr/* /usr
# move the icon into applications folder
# move Bazecor.Desktop to .local/share/applications

10
bashrc/.bash_profile Normal file
View File

@@ -0,0 +1,10 @@
#
# ~/.bash_profile
#
[[ -f ~/.bashrc ]] && . ~/.bashrc
# bspwm with X startup
# exec startx
export XCURSOR_THEME=Cappuccin-Mocha-Dark
exec Hyprland

29
bashrc/.bashrc Normal file
View File

@@ -0,0 +1,29 @@
# base commands to be copied
# basic
alias ls='ls --color=auto'
alias ll='ls -l'
alias lll='ls -la'
alias v='nvim'
alias ..='cd ..'
alias ux='chmod u+x'
alias venva='source venv/bin/activate'
alias mkdir='mkdir -p'
function fsize() {
du -sh "$1"
}
# basic enhanced
alias ll='exa -lg --icons'
alias lll='exa -lga'
alias cat='bat --style=header,grid'
# git
alias gadd='git add'
alias gdiff='git diff'
alias mpush='git push origin master'
alias gstat='git status'
function gcom() {
GITMESSAGE="$*"
git commit -m "$GITMESSAGE"
}

7
grub/README.md Normal file
View File

@@ -0,0 +1,7 @@
# Grub
Current kernel parameters are specifically for the zenbook
`default.grub` -> `/etc/default/grub`
`sudo grub-mkconfig -o /boot/grub/grub.cfg` -> save config changes/kernel params

64
grub/default.grub Normal file
View File

@@ -0,0 +1,64 @@
# GRUB boot loader configuration
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet splash resume=UUID=73516262-7c1a-4fcf-946d-e8ff434cab26 iommu=soft"
GRUB_CMDLINE_LINUX=""
GRUB_WALLPAPER="/grub/abs8.png"
# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y
# Set to 'countdown' or 'hidden' to change timeout behavior,
# press ESC key to display menu.
GRUB_TIMEOUT_STYLE=menu
# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console
# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `videoinfo'
GRUB_GFXMODE=1920x1080x32,auto
# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep
# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true
# Uncomment and set to the desired menu colors. Used by normal and wallpaper
# modes only. Entries specified as foreground/background.
#GRUB_COLOR_NORMAL="light-blue/black"
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/path/to/wallpaper"
#GRUB_THEME="/path/to/gfxtheme"
# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"
# Uncomment to make GRUB remember the last selection. This requires
# setting 'GRUB_DEFAULT=saved' above.
#GRUB_SAVEDEFAULT=true
# Uncomment to disable submenus in boot menu
#GRUB_DISABLE_SUBMENU=y
# Probing for other operating systems is disabled for security reasons. Read
# documentation on GRUB_DISABLE_OS_PROBER, if still want to enable this
# functionality install os-prober and uncomment to detect and include other
# operating systems.
GRUB_DISABLE_OS_PROBER=false

257
hyprland/btop/btop.conf Normal file
View File

@@ -0,0 +1,257 @@
#? Config file for btop v. 1.4.5
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "catppuccin_mocha"
#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = True
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = True
#* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = False
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
#* Use whitespace " " as separator between different presets.
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = False
#* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = True
#* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts.
#* "block" has half the resolution of braille but uses more common characters.
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
graph_symbol = "braille"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_cpu = "default"
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
graph_symbol_gpu = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_mem = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_net = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_proc = "default"
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
shown_boxes = "cpu mem net proc"
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 2000
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "memory"
#* Reverse sorting order, True or False.
proc_reversed = False
#* Show processes as a tree.
proc_tree = False
#* Use the cpu graph colors in the process list.
proc_colors = True
#* Use a darkening gradient in the process list.
proc_gradient = True
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = False
#* Show process memory as bytes instead of percent.
proc_mem_bytes = True
#* Show cpu graph for each process.
proc_cpu_graphs = True
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = False
#* Show proc box on left side of screen instead of right.
proc_left = False
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = False
#* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = False
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_upper = "Auto"
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_lower = "Auto"
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
show_gpu_info = "Auto"
#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True
#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False
#* Show cpu box at bottom of screen instead of top.
cpu_bottom = False
#* Shows the system uptime in the CPU box.
show_uptime = True
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
show_cpu_watts = True
#* Show cpu temperature.
check_temp = True
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = True
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
#* Example: "4:0 5:1 6:3"
cpu_core_map = ""
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = False
#* Show CPU frequency.
show_cpu_freq = True
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X"
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = True
#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
disks_filter = ""
#* Show graphs instead of meters for memory values.
mem_graphs = True
#* Show mem box below net box instead of above.
mem_below_net = False
#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = True
#* If swap memory should be shown in memory box.
show_swap = True
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = True
#* If mem box should be split to also show disks info.
show_disks = True
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = True
#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = True
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = False
#* Set to true to show available disk space for privileged users.
disk_free_priv = False
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = True
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = False
#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = False
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1".
io_graph_speeds = ""
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
net_download = 100
net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = True
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = True
#* Starts with the Network Interface specified here.
net_iface = ""
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
base_10_bitrate = "Auto"
#* Show battery stats in top right if battery is present.
show_battery = True
#* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto"
#* Show power stats of battery next to charge indicator.
show_battery_watts = True
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING"
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
nvml_measure_pcie_speeds = True
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
rsmi_measure_pcie_speeds = True
#* Horizontally mirror the GPU graph.
gpu_mirror_graph = True
#* Custom gpu0 model name, empty string to disable.
custom_gpu_name0 = ""
#* Custom gpu1 model name, empty string to disable.
custom_gpu_name1 = ""
#* Custom gpu2 model name, empty string to disable.
custom_gpu_name2 = ""
#* Custom gpu3 model name, empty string to disable.
custom_gpu_name3 = ""
#* Custom gpu4 model name, empty string to disable.
custom_gpu_name4 = ""
#* Custom gpu5 model name, empty string to disable.
custom_gpu_name5 = ""

View File

@@ -0,0 +1,83 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]=""
# Main text color
theme[main_fg]="#cdd6f4"
# Title color for boxes
theme[title]="#cdd6f4"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#89b4fa"
# Background color of selected item in processes box
theme[selected_bg]="#45475a"
# Foreground color of selected item in processes box
theme[selected_fg]="#89b4fa"
# Color of inactive/disabled text
theme[inactive_fg]="#7f849c"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="#f5e0dc"
# Background color of the percentage meters
theme[meter_bg]="#45475a"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#f5e0dc"
# CPU, Memory, Network, Proc box outline colors
theme[cpu_box]="#cba6f7" #Mauve
theme[mem_box]="#a6e3a1" #Green
theme[net_box]="#eba0ac" #Maroon
theme[proc_box]="#89b4fa" #Blue
# Box divider line and small boxes line color
theme[div_line]="#6c7086"
# Temperature graph color (Green -> Yellow -> Red)
theme[temp_start]="#a6e3a1"
theme[temp_mid]="#f9e2af"
theme[temp_end]="#f38ba8"
# CPU graph colors (Teal -> Lavender)
theme[cpu_start]="#94e2d5"
theme[cpu_mid]="#74c7ec"
theme[cpu_end]="#b4befe"
# Mem/Disk free meter (Mauve -> Lavender -> Blue)
theme[free_start]="#cba6f7"
theme[free_mid]="#b4befe"
theme[free_end]="#89b4fa"
# Mem/Disk cached meter (Sapphire -> Lavender)
theme[cached_start]="#74c7ec"
theme[cached_mid]="#89b4fa"
theme[cached_end]="#b4befe"
# Mem/Disk available meter (Peach -> Red)
theme[available_start]="#fab387"
theme[available_mid]="#eba0ac"
theme[available_end]="#f38ba8"
# Mem/Disk used meter (Green -> Sky)
theme[used_start]="#a6e3a1"
theme[used_mid]="#94e2d5"
theme[used_end]="#89dceb"
# Download graph colors (Peach -> Red)
theme[download_start]="#fab387"
theme[download_mid]="#eba0ac"
theme[download_end]="#f38ba8"
# Upload graph colors (Green -> Sky)
theme[upload_start]="#a6e3a1"
theme[upload_mid]="#94e2d5"
theme[upload_end]="#89dceb"
# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve)
theme[process_start]="#74c7ec"
theme[process_mid]="#b4befe"
theme[process_end]="#cba6f7"

View File

@@ -0,0 +1,26 @@
{
"modules": [
"title",
"separator",
"os",
"kernel",
"uptime",
"packages",
"shell",
"de",
"wm",
{
"type": "theme",
"key": "Theme"
},
{
"type": "icons",
"key": "Icons"
},
"terminal",
"cpu",
"gpu",
"memory",
"colors"
]
}

52
hyprland/ghostty/config Normal file
View File

@@ -0,0 +1,52 @@
# This is the configuration file for Ghostty.
#
# This template file has been automatically created at the following
# path since Ghostty couldn't find any existing config files on your system:
#
# /home/kokopi/.config/ghostty/config
#
# The template does not set any default options, since Ghostty ships
# with sensible defaults for all options. Users should only need to set
# options that they want to change from the default.
#
# Run `ghostty +show-config --default --docs` to view a list of
# all available config options and their default values.
#
# Additionally, each config option is also explained in detail
# on Ghostty's website, at https://ghostty.org/docs/config.
theme = navarch
font-size = 12.5
font-family = "Geist Mono"
window-padding-x = 10
window-padding-y = 10
window-padding-color = background
window-title-font-family = "Geist"
window-theme = ghostty
window-inherit-working-directory = true
window-inherit-font-size = true
focus-follows-mouse = true
gtk-tabs-location = bottom
background = #14111C
background-opacity = 0.35
background-blur = true
foreground = #E6DDD1
cursor-style = bar
# # Any line beginning with a # is a comment. It's not possible to put
# # a comment after a config option, since it would be interpreted as a
# # part of the value. For example, this will have a value of "#123abc":
# background = #123abc
#
# # Empty values are used to reset config keys to default.
# key =
#
# # Some config options have unique syntaxes for their value,
# # which is explained in the docs for that config option.
# # Just for example:
# resize-overlay-duration = 4s 200ms
#
keybind = ctrl+shift+.=move_tab:1
keybind = ctrl+shift+,=move_tab:-1
app-notifications = no-clipboard-copy

View File

@@ -0,0 +1,8 @@
0=#1e1f21 # Black - terminal background color
1=#bf6b69 # Red - error messages and warnings
2=#b7bd73 # Green - success messages
3=#e9c880 # Yellow - warnings and highlights
4=#88a1bb # Blue - links and info
5=#ad95b8 # Purple - special syntax
6=#95bdb7 # Cyan - comments in code
7=#c5c8c6 # White - normal text

View File

@@ -0,0 +1,22 @@
palette = 0=#3d3555
palette = 1=#d18585
palette = 2=#8ab88a
palette = 3=#e0cd93
palette = 4=#8aade0
palette = 5=#d093d1
palette = 6=#8acaca
palette = 7=#d0b5d2
palette = 8=#594d67
palette = 9=#db9a9a
palette = 10=#a5c5a5
palette = 11=#e2d0a3
palette = 12=#9dbae6
palette = 13=#d6aad7
palette = 14=#9dd2d2
palette = 15=#dfced9
background = #211C2E
foreground = #ddced8
cursor-color = #d5aed6
cursor-text = #211C2E
selection-background = #d5aed6
selection-foreground = #211C2E

125
hyprland/gtk-3.0/gtk.css Normal file
View File

@@ -0,0 +1,125 @@
@define-color hl_text_color #e0cd93;
@define-color cover_bg rgba(27, 22, 38, 0.9);
@define-color border_color rgb(113, 142, 184);
@define-color text_color #ddced8;
/* global */
.view:hover, iconview:hover, .view:hover:focus, iconview:hover:focus, .view text:hover, iconview text:hover, textview text:hover, iconview text:hover:focus, textview text:hover:focus, flowbox flowboxchild:hover, row:hover, .view:selected, iconview:selected, .view:selected:focus, iconview:selected:focus, .view text:selected, iconview text:selected, textview text:selected, iconview text:selected:focus, textview text:selected:focus, .view text selection:focus, iconview text selection:focus, .view text selection, iconview text selection, textview text selection:focus, textview text selection, flowbox flowboxchild:selected, entry selection, entry selection:focus, row:selected {
color: @cover_bg;
background-color: #8aade0;
}
check:checked,
check:indeterminate,
radio:checked,
radio:indeterminate,
switch:checked {
background-color: #d093d1;
}
menubar {
background-color: #211c2e;
}
window.background headerbar {
background-color: #211c2e;
}
.background {
background: rgba(33, 28, 46, 0.8);
color: @text_color;
}
/* most inputs */
entry:focus {
box-shadow: inset 0 0 0 2px @border_color;
}
treeview.view {
color: #8aade0;
background-color: transparent;
}
treeview.view:selected {
color: #d093d1;
background-color: rgba(208, 181, 210, 0.2);
}
toolbar.primary-toolbar {
background: rgba(21, 24, 40, 0.3);
}
/* firefox */
firefox headerbar {
background: rgba(33, 28, 46, 0.5);
color: @text_color;
}
/* global dropdowns, target: thunar menu item text hover */
menu menuitem:hover {
transition: none;
background-color: rgba(233, 233, 237, 0.04);
}
menu menuitem label {
color: #8aade0;
}
/* menu item right label */
menu menuitem:hover accelerator {
color: #d093d1;
}
menu {
background-color: #211c2e;
}
/* icon styles */
.thunar .view .cell:hover {
color: @hl_text_color;
}
.thunar .view .cell {
border-radius: 8px;
background: rgba(33, 28, 46, 0.15);
color: @text_color;
}
.thunar {
background: none;
}
.thunar toolbar {
background: @cover_bg;
padding: 8px 10px;
border-top: 1px solid @border_color;
}
/* toolbar back btns and stuff */
.thunar toolbar .image-button {
color: @hl_text_color;
}
/* input bar */
.thunar toolbar toolitem widget box entry {
color: @hl_text_color;
background: linear-gradient(35deg, rgb(68, 59, 79), rgb(33, 28, 46));
}
/* sidebar */
.thunar .sidebar .view {
background: @cover_bg;
color: @hl_text_color;
border-radius: 0px;
}
/* main body */
.thunar notebook .view {
background: linear-gradient(
135deg,
rgba(35, 34, 56, 0.8),
rgba(54, 33, 52, 0.8),
rgba(33, 28, 46, 0.8)
);
}
/* bottom right section */
.thunar statusbar {
color: @hl_text_color;
background: @cover_bg;
}
/* dbeaver */
/* partial label text */
.image-button.flat.text-button box:dir(ltr).horizontal label:dir(ltr) {
color: @text_color;
}
/* dropdown arrow icon */
.flat.toggle.popup image {
color: @hl_text_color;
}

View File

@@ -0,0 +1,7 @@
[Settings]
gtk-application-prefer-dark-theme=1
gtk-icon-theme-name=catppuccin-mocha
gtk-theme-name=tokyonight-dark
gtk-font-name=Geist
gtk-cursor-theme-name=catppuccin-mocha-dark-cursors
gtk-im-module=fcitx

61
hyprland/gtk-4.0/gtk.css Normal file
View File

@@ -0,0 +1,61 @@
@define-color cover_bg rgba(27, 22, 38, 0.9);
@define-color hl_text_color #e0cd93;
* {
color: #ddced8;
}
tab label {
color: @hl_text_color;
}
slider {
box-shadow: inset 0 0 0 2px @hl_text_color;
}
button.toggle:checked:not(:hover):not(:focus):not(.flat),
button.toggle:checked:not(:hover):not(:focus):not(.flat) label {
background-color: #8aade0;
color: @cover_bg;
}
combobox button:active, combobox button:checked {
background: #8aade0;
}
combobox button:active cellview, combobox button:checked cellview {
color: @cover_bg;
}
window {
background: @cover_bg;
}
header {
background: @cover_bg;
}
scrolledwindow {
background: linear-gradient(
135deg,
rgba(35, 34, 56, 0.6),
rgba(43, 26, 42, 0.6),
rgba(33, 28, 46, 0.6)
);
color: #ddced8;
}
/* ghostty */
.terminal-window box notebook header {
background-color: #1a1b26;
margin: 2px;
}
.terminal-window box notebook header tab {
font-family: "Octal";
background-color: #1a1b26;
color: #e6ddd1;
padding: 0.5px 8px;
font-size: 14px;
}
.terminal-window box notebook header tab:hover {
background-color: #24283b;
}
.terminal-window box notebook header tab:checked {
color: #bf9fd8;
background-color: #414868;
}

View File

@@ -0,0 +1,6 @@
[Settings]
gtk-icon-theme-name=catppuccin-mocha
gtk-theme-name=tokyonight-dark
gtk-font-name=Geist 12
gtk-cursor-theme-name=catppuccin-mocha-dark-cursors
gtk-im-module=fcitx

View File

@@ -0,0 +1,12 @@
general {
lock_cmd = pidof hyprlock || ~/.config/hypr/run-hyprlock.sh
before_sleep_cmd = loginctl lock-session # lock before suspend
after_sleep_cmd = hyprctl dispatch dpms on
inhibit_sleep = 2
}
listener {
timeout = 600 # 10 minutes
on-timeout = hyprctl dispatch dpms off # screen off
on-resume = hyprctl dispatch dpms on # screen on when activity detected
}

382
hyprland/hypr/hyprland.conf Normal file
View File

@@ -0,0 +1,382 @@
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hypr.land/Configuring/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
################
### MONITORS ###
################
# See https://wiki.hypr.land/Configuring/Monitors/
monitor=eDP-1,2256x1504@60,auto,1.33
monitor=DP-3,2560x1080@60,auto,1.0 # at home dock
###################
### MY PROGRAMS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
# Set programs that you use
$terminal = ghostty
$fileManager = thunar
$menu = ~/.local/bin/rofi-app-manager.sh
$configMenu = ~/.local/bin/rofi-config-manager.sh
$helpMenu = ~/.local/bin/rofi-help-manager.sh
$settingsMenu = ~/.local/bin/rofi-settings-manager.sh
$powerMenu = ~/.local/bin/rofi-power-manager.sh
# $menu = rofi -show drun -theme ~/.config/rofi/config.rasi
# https://github.com/catppuccin/cursors
env = XCURSOR_THEME,catppuccin-mocha-dark-cursors
env = GTK_THEME=tokyonight-dark
env = XCURSOR_SIZE,24
# for discord
env = GDK_SCALE,1.33
env = GDK_DPI_SCALE,1.0
# env = HYPRCURSOR_SIZE,24
# styling qt ui to gtk3 style
env = QT_QPA_PLATFORMTHEME,gtk3
env = GTK_IM_MODULE,fcitx
env = QT_IM_MODULE,fcitx
env = XMODIFIERS,@im=fcitx
env = INPUT_METHOD,fcitx
env = SDL_IM_MODULE,fcitx
env = GLFW_IM_MODULE,fcitx
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
exec-once = fcitx5 -d
exec-once = hyprpaper & hypridle & mako
exec-once = gsettings set org.gnome.desktop.interface gtk-theme 'tokyonight-dark'
exec-once = gsettings set org.gnome.desktop.interface icon-theme 'catppuccin-mocha'
exec-once = gsettings set org.gnome.desktop.interface font-name 'Geist 11'
exec-once = ~/.config/hypr/reload-monitors.sh # contains waybar
exec-once = ~/.config/wlsunset/run-wlsunset.sh init
exec-once = ~/.config/waybar/scripts/fcitx5-monitor.sh &
# so far, for bazecor
exec-once = /usr/lib/hyprpolkitagent/hyprpolkitagent & disown
source = /tmp/hyprland-workspaces.conf
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hypr.land/Configuring/Environment-variables/
# for discord
xwayland {
force_zero_scaling = true
}
###################
### PERMISSIONS ###
###################
# See https://wiki.hypr.land/Configuring/Permissions/
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
# for security reasons
ecosystem {
no_update_news = true
# enforce_permissions = 1
}
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hypr.land/Configuring/Variables/
# https://wiki.hypr.land/Configuring/Variables/#general
general {
gaps_in = 3
gaps_out = 15
border_size = 2
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
col.active_border = rgb(d093d1) rgb(8aade0) rgb(e0cd93) 45deg
col.inactive_border = rgba(C9C5BB4d)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hypr.land/Configuring/Variables/#decoration
decoration {
rounding = 8
rounding_power = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hypr.land/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 2
new_optimizations = true
vibrancy = 0.1696
}
}
layerrule = blur, waybar
layerrule = blur, rofi
layerrule = blur, notifications
layerrule = ignorezero, notifications
### animatons ###
# https://wiki.hypr.land/Configuring/Variables/#animations
animations {
enabled = yes, please :)
# Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
# NAME, X0, Y0, X1, Y1
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
bezier = quick, 0.15, 0, 0.1, 1
# Default animations, see https://wiki.hypr.land/Configuring/Animations/
# NAME, ONOFF, SPEED, CURVE, [STYLE]
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 1.94, almostLinear, popin 55%
animation = windowsOut, 1, 1.49, linear, popin 82%
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 = workspacesIn, 1, 1.01, almostLinear, slidefade
animation = workspacesOut, 1, 1.94, almostLinear, fade
animation = zoomFactor, 1, 7, quick
animation = specialWorkspaceIn, 1, 3, easeInOutCubic, slidevertfade -50%
animation = specialWorkspaceOut, 1, 3, easeInOutCubic, slidevertfade -50%
}
# specific animations for programs
layerrule = animation popin 88%, rofi
layerrule = animation slide top, waybar
layerrule = noanim, notifications
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
# windowrule = rounding 0, floating:0, onworkspace:f[1]
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hypr.land/Configuring/Variables/#misc
misc {
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
new_window_takes_over_fullscreen = 1
}
#############
### INPUT ###
#############
# https://wiki.hypr.land/Configuring/Variables/#input
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
}
# See https://wiki.hypr.land/Configuring/Gestures
# gesture = 3, horizontal, workspace
# Example per-device config
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
bind = , Print, exec, grim -g "$(slurp)" - | wl-copy && notify-send "📸 Screenshot" "Region copied to clipboard"
bind = $mainMod, Print, exec, bash -c 'file=~/pictures/$(date +"%Y-%m-%d_%H-%M-%S").png; if grim -g "$(slurp)" "$file"; then notify-send "📸 Screenshot" "Saved: $file"; else notify-send "❌ Screenshot Failed" "Could not save screenshot"; fi'
bind = $mainMod, Return, exec, $terminal
# bind = $mainMod, M, exit,
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, T, togglefloating, # float window
bind = $mainMod, D, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod SHIFT, Q, killactive,
bind = $mainMod SHIFT, P, exec, $powerMenu
bind = $mainMod SHIFT, X, exec, $settingsMenu
bind = $mainMod SHIFT, C, exec, $configMenu
bind = $mainMod SHIFT, H, exec, $helpMenu
# overlay workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, j, movefocus, u
bind = $mainMod, k, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1
bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow # left click
bindm = $mainMod, mouse:273, resizewindow # right click
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @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, python ~/00/framework_arch_tools/brightness.py +
bindel = ,XF86MonBrightnessDown, exec, python ~/00/framework_arch_tools/brightness.py -
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
# resize
binde = SUPER ALT, right, resizeactive, 10 0
binde = SUPER ALT, left, resizeactive, -10 0
binde = SUPER ALT, up, resizeactive, 0 -10
binde = SUPER ALT, down, resizeactive, 0 10
# reorder
bind = SUPER SHIFT, left, movewindow, l
bind = SUPER SHIFT, right, movewindow, r
bind = SUPER SHIFT, up, movewindow, u
bind = SUPER SHIFT, down, movewindow, d
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule
# windowrule = float,class:^(kitty)$,title:^(kitty)$
# 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
windowrulev2 = stayfocused, class:^(Rofi)$
windowrulev2 = minsize 1 1, class:^(Rofi)$
debug {
disable_logs = true # if need logs, enable this
}

121
hyprland/hypr/hyprlock.conf Normal file
View File

@@ -0,0 +1,121 @@
# BACKGROUND
background {
monitor =
path = ~/pictures/bgs/lockscreen/neco2.png
blur_passes = 1
blur_size = 3
noise = 0.075
contrast = 1.0
brightness = 0.25
vibrancy = 0.1
vibrancy_darkness = 0.0
}
# GENERAL
general {
}
animations {
enabled = true
animation = fadeIn, 1, 5, linear
animation = fadeOut, 1, 7, linear
}
# small box background
shape {
position = 0, 30
monitor =
size = 380, 400
color = rgba(44, 39, 61, 0.5)
rounding = 8
border_size = 2
border_color = rgba(243, 226, 169, 0.60) rgba(213, 174, 214, 0.80) 45deg
rotate = 0
xray = false
halign = center
valign = center
}
# border for small box
shape {
position = 0, 120
monitor =
size = 330, 0
border_size = 1
rounding = 1
border_color = rgba(213, 174, 214, 0.80) rgba(243, 226, 169, 0.80) 145deg
}
# date
label {
position = 0, 172
monitor =
text = cmd[update:1000] echo "$(date +"%m/%d - %H:%M:%S")"
color = rgb(219, 218, 215)
font_size = 28
font_family = Octal
halign = center
valign = center
shadow_passes = 1
shadow_size = 5
shadow_boost = 0.5
}
# display pic
image {
position = 0, 45
path = ~/pictures/profile_pics/biyo.png
size = 100
halign = center
valign = center
border_size = 0
shadow_passes = 1
shadow_size = 5
shadow_boost = 0.5
}
shape {
position = -1, 45
size = 68, 68
rounding = 100
border_size = 16
border_color = rgb(213, 174, 214) rgba(122, 127, 222, 0.8) 145deg
}
# username
label {
position = 0, -45
monitor =
text = cmd[update:1000] echo "$USER@$HOSTNAME"
color = rgb(219, 218, 215)
font_size = 16
font_family = Octal Medium
halign = center
valign = center
shadow_passes = 1
shadow_size = 5
shadow_boost = 0.5
}
input-field {
position = 0, -100
monitor =
size = 256, 48
outline_thickness = 2
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.5 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
outer_color = rgba(243, 226, 169, 0.75) rgba(213, 174, 214, 0.85) 0deg
inner_color = rgba(57, 51, 66, 0.8)
font_color = rgba(243, 226, 169, 0.75)
fail_color = rgba(192, 149, 149, 0.75)
check_color = rgba(149, 203, 173, 0.75)
capslock_color = rgba(149, 182, 203, 0.5)
fade_on_empty = false
font_family = Noto Sans
placeholder_text = ...... #text for input password
hide_input = false
halign = center
valign = center
shadow_passes = 1
shadow_size = 5
shadow_boost = 0.5
}

View File

@@ -0,0 +1,4 @@
preload = ~/pictures/bgs/redjuice-alt-2.png
preload = ~/pictures/bgs/wide-neco-1.png
wallpaper = eDP-1,~/pictures/bgs/redjuice-alt-2.png
wallpaper = DP-3,~/pictures/bgs/wide-neco-1.png

View File

@@ -0,0 +1,48 @@
#!/bin/bash
move_all_windows_to_workspace1() {
# Get window count for feedback
window_count=$(hyprctl clients -j | jq '. | length')
# echo "Found $window_count windows to move"
# Move all windows using xargs
hyprctl clients -j | jq -r '.[].address' | xargs -I {} hyprctl dispatch movetoworkspacesilent "1,address:{}"
# Switch to workspace 1 to make it active
hyprctl dispatch workspace 1
}
home_dock=$(hyprctl monitors | grep -E "(DP-3|eDP-1)" | wc -l)
workspace_file="/tmp/hyprland-workspaces.conf"
echo "" > $workspace_file
if [[ $home_dock == 2 ]]; then
move_all_windows_to_workspace1
echo "workspace = 1,monitor:DP-3,default:true,persistent:true" >> $workspace_file
echo "workspace = 2,monitor:DP-3,persistent:true" >> $workspace_file
echo "workspace = 3,monitor:DP-3,persistent:true" >> $workspace_file
echo "workspace = 4,monitor:DP-3,persistent:true" >> $workspace_file
echo "workspace = 5,monitor:DP-3,persistent:true" >> $workspace_file
echo "workspace = 6,monitor:eDP-1,default:true,persistent:true" >> $workspace_file
echo "workspace = 7,monitor:eDP-1,persistent:true" >> $workspace_file
echo "workspace = 8,monitor:eDP-1,persistent:true" >> $workspace_file
echo "workspace = 9,monitor:eDP-1,persistent:true" >> $workspace_file
echo "workspace = 10,monitor:eDP-1,persistent:true" >> $workspace_file
notify-send "Monitor Reload" "Detected Home Dock Settings"
else
move_all_windows_to_workspace1
# default
for i in {1..8}; do
echo "workspace = $i,monitor:auto,persistent:true" >> $workspace_file
done
notify-send "Monitor Reload" "Detected Default Settings"
fi
hyprctl reload
if pidof waybar >/dev/null; then
killall waybar && waybar & disown
else
waybar & disown
fi

16
hyprland/hypr/run-hyprlock.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
post_unlock() {
local image_dir="$HOME/pictures/bgs/lockscreen"
local current_image=$(grep "path =" ~/.config/hypr/hyprlock.conf | cut -d'=' -f2 | tr -d ' ' | head -1)
local new_image=$(find "$image_dir" -type f | sort -R | head -n 1 | sed "s|^$HOME|~|")
while true; do
if [[ "$new_image" != "$current_image" ]]; then
sed -i '0,/path =/{s|path =.*|path = '"$new_image"'|}' ~/.config/hypr/hyprlock.conf
break
fi
new_image=$(find "$image_dir" -type f | sort -R | head -n 1 | sed "s|^$HOME|~|")
done
}
post_unlock
hyprlock

View File

@@ -0,0 +1,41 @@
# Hyprland notes
main config: ~/.config/hypr/hyprland.conf
* mako (toasts)
- config: ~/.config/mako/config
* hyprpaper (wallpaper, used in hyprland config)
* hypridle (auto lock watcher + screen off timer)
- config: ~/.config/hypr/hypridle.conf
* hyprlock (lock on laptop lid close)
- config: ~/.config/hypr/hyprlock.conf
* waybar
- configs: ~/.config/waybar/config.jsonc + style.css
* ability to use clipboard:
- sudo pacman -S wl-clipboard
* hyprmon (monitor manager) (https://github.com/erans/hyprmon/)
- yay -S hyprmon-bin
* sudo pacman -S xdg-desktop-portal-hyprland xdg-desktop-portal-gtk
- this helps with obs having a screen capture source
- this also helps with general screen capturing on most apps
* sudo pacman -S obs-studio
* sudo pacman -S mpv (lightweight video player/image viewer)
---
## Non config settings
Thunar custom action Open Terminal Here:
- command: ghostty -e bash -c "cd %f && exec bash" & disown
Thunar default image viewer:
- mpv with custom command: mpv --image-display-duration=inf
---
master settings:
## Fonts
- Geist (sans) (https://github.com/vercel/geist-font/releases/tag/1.5.1)
- Geist (mono) (https://github.com/vercel/geist-font/releases/tag/1.5.1)
- Octal (self-bought)

38
hyprland/mako/config Normal file
View File

@@ -0,0 +1,38 @@
border-size=1
border-radius=8
font=Geist 10
max-visible=3
width=330
padding=8
margin=14,15,0,0
anchor=top-right
default-timeout=5000
ignore-timeout=0
icons=1
max-icon-size=48
icon-path=/usr/share/icons/Adwaita
markup=1
actions=1
format=<b>%s</b>\n%b
background-color=#3D344580
[urgency=low]
default-timeout=3000
border-color=#6c7086
text-color=#B1B4C7
[urgency=normal]
border-color=#e1b4e2
text-color=#E6D4E6
[urgency=critical]
border-color=#f38ba8
background-color=#f38ba81a
text-color=#f38ba8
default-timeout=0

View File

@@ -0,0 +1,39 @@
#!/bin/bash
if [ -z "$1" ]; then
echo "Usage: $0 <string_to_check>"
echo "Example: $0 discord-0.0.20.tar.gz"
exit 1
fi
func_validate_filename() {
# Convert to lowercase for case-insensitive matching
local lower_input=$(echo "$1" | tr '[:upper:]' '[:lower:]')
# Check if both "discord" and ".deb" are present
if [[ "$lower_input" == *"discord"* ]] && [[ "$lower_input" == *".tar.gz"* ]]; then
echo "✓ Updated Discord with file: '$1'"
return 0
else
echo "✗ No match: '$1' does not contain both 'discord' and '.tar.gz'"
# Provide specific feedback
if [[ "$lower_input" != *"discord"* ]]; then
echo " - Missing 'discord' ✗"
fi
if [[ "$lower_input" != *".deb"* ]]; then
echo " - Missing '.deb' ✗"
fi
return 1
fi
}
if func_validate_filename "$1"; then
sudo tar -xzf "$1"
sudo rm -rf /opt/discord
sudo mv Discord /opt/discord
sudo ln -sf /opt/discord/Discord /usr/bin/discord
fi
#TODO check for .desktop file and create if not exists

View File

@@ -0,0 +1,154 @@
configuration {
hover-select: true;
me-select-entry: "MousePrimary";
me-accept-entry: "!MousePrimary";
font: "Geist 12";
show-icons: true;
icon-theme: "Papirus";
display-drun: " ";
}
@theme "~/.config/rofi/theme.rasi"
// Main //
window {
height: 100%;
width: 100%;
transparency: "real";
fullscreen: false;
enabled: true;
spacing: 0em;
padding: 0em;
background-color: transparent;
}
mainbox {
enabled: true;
spacing: 0em;
orientation: horizontal;
children: [ "imageBoxOverlay" , "listbox", "rightTab" ];
background-color: @base-200-opa;
margin: 24% 27.5%;
border-color: @primary-opa;
border: 1px;
border-radius: 1em;
}
rightTab {
background-color: transparent;
background-image: linear-gradient(135deg,#B37ADE26,#d5aed6d9);
expand: false;
width: 3.5em;
}
imageBoxOverlay {
children: ["imageBox"];
background-color: rgba(0,0,0,0.9);
margin: 1.4em 0.8em 1.4em 1.4em;
border-radius: 1em;
padding: 0.6em;
background-image: linear-gradient(135deg,#B37ADE,#f3e2a9,#DE7AB9,#7A7FDE);
}
imageBox {
enabled: true;
background-image: url("~/.config/rofi/images/neco/25.jpg", width);
border-radius: 1em;
}
// Lists //
listbox {
spacing: 0em;
padding: 1.4em 0.8em 1.4em 0em;
children: [ "inputbar" , "listview" ];
background-color: transparent;
}
// Inputs //
inputbar {
enabled: true;
margin: 0.2em 0.8em 0.8em 0.8em;
children: [ "prompt", "entry" ];
background-color: transparent;
border-radius: 0.5em;
}
prompt {
font: "Geist 14";
text-color: #E5C38F;
background-color: transparent;
padding: 0.8em 0.5em 0em 0.5em;
}
entry {
font: "Fira Code Retina 11";
text-color: #f5e0dcff;
background-color: #1E1B21;
background-image: linear-gradient(135deg,#2E2A33,#1E1B21);
border-radius: 0.5em;
border-color: @secondary;
placeholder: "Search...";
placeholder-color: #BF9FD875;
border: 1px;
padding: 0.7em 0.9em 0.7em 0.7em;
enabled: true;
}
listview {
enabled: true;
spacing: 0.6em;
padding: 0em 1em;
columns: 1;
lines: 8;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
expand: true;
fixed-height: false;
fixed-columns: true;
cursor: "default";
background-color: transparent;
}
// Elements //
element {
enabled: true;
spacing: 1em;
padding: 0.4em 0.5em 0.4em 1.5em;
cursor: pointer;
background-color: transparent;
text-color: #E6D5E6;
}
element selected.normal {
border-radius: 0.5em;
background-image: linear-gradient(135deg,#d5aed666,#7866C44d,#7A7FDE66);
text-color: @secondary;
border-color: @primary-opa;
border: 1px;
}
element-icon {
size: 1.5em;
cursor: inherit;
background-color: transparent;
text-color: inherit;
}
element-text {
vertical-align: 0.5;
horizontal-align: 0.0;
cursor: inherit;
background-color: transparent;
text-color: inherit;
highlight: bold;
}
// Error message //
error-message {
text-color: #cdd6f4ff;
background-color: #11111be6;
text-transform: capitalize;
children: [ "textbox" ];
}
textbox {
text-color: inherit;
background-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}

View File

@@ -0,0 +1,154 @@
configuration {
hover-select: true;
me-select-entry: "MousePrimary";
me-accept-entry: "!MousePrimary";
font: "Geist 12";
show-icons: true;
icon-theme: "Papirus";
display-drun: " ";
}
@theme "~/.config/rofi/theme.rasi"
// Main //
window {
height: 100%;
width: 100%;
transparency: "real";
fullscreen: false;
enabled: true;
spacing: 0em;
padding: 0em;
background-color: transparent;
}
mainbox {
enabled: true;
spacing: 0em;
orientation: horizontal;
children: [ "imageBoxOverlay" , "listbox", "rightTab" ];
background-color: @base-200-opa;
margin: 25% 17%;
border-color: @primary-opa;
border: 1px;
border-radius: 1em;
}
rightTab {
background-color: transparent;
background-image: linear-gradient(135deg,#B37ADE26,#d5aed6d9);
expand: false;
width: 3.5em;
}
imageBoxOverlay {
children: ["imageBox"];
background-color: rgba(0,0,0,0.9);
margin: 1.4em 0.8em 1.4em 1.4em;
border-radius: 1em;
padding: 0.6em;
background-image: linear-gradient(135deg,#B37ADE,#f3e2a9,#DE7AB9,#7A7FDE);
}
imageBox {
enabled: true;
background-image: url("~/.config/rofi/images/neco/25.jpg", width);
border-radius: 1em;
}
// Lists //
listbox {
spacing: 0em;
padding: 1.4em 0.8em 1.4em 0em;
children: [ "inputbar" , "listview" ];
background-color: transparent;
}
// Inputs //
inputbar {
enabled: true;
margin: 0.2em 0.8em 0.8em 0.8em;
children: [ "prompt", "entry" ];
background-color: transparent;
border-radius: 0.5em;
}
prompt {
font: "Geist 14";
text-color: #E5C38F;
background-color: transparent;
padding: 0.8em 0.5em 0em 0.5em;
}
entry {
font: "Fira Code Retina 11";
text-color: #f5e0dcff;
background-color: #1E1B21;
background-image: linear-gradient(135deg,#2E2A33,#1E1B21);
border-radius: 0.5em;
border-color: @secondary;
placeholder: "Search...";
placeholder-color: #BF9FD875;
border: 1px;
padding: 0.7em 0.9em 0.7em 0.7em;
enabled: true;
}
listview {
enabled: true;
spacing: 0.6em;
padding: 0em 1em;
columns: 1;
lines: 8;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
expand: true;
fixed-height: false;
fixed-columns: true;
cursor: "default";
background-color: transparent;
}
// Elements //
element {
enabled: true;
spacing: 1em;
padding: 0.4em 0.5em 0.4em 1.5em;
cursor: pointer;
background-color: transparent;
text-color: #E6D5E6;
}
element selected.normal {
border-radius: 0.5em;
background-image: linear-gradient(135deg,#d5aed666,#7866C44d,#7A7FDE66);
text-color: @secondary;
border-color: @primary-opa;
border: 1px;
}
element-icon {
size: 1.5em;
cursor: inherit;
background-color: transparent;
text-color: inherit;
}
element-text {
vertical-align: 0.5;
horizontal-align: 0.0;
cursor: inherit;
background-color: transparent;
text-color: inherit;
highlight: bold;
}
// Error message //
error-message {
text-color: #cdd6f4ff;
background-color: #11111be6;
text-transform: capitalize;
children: [ "textbox" ];
}
textbox {
text-color: inherit;
background-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}

View File

@@ -0,0 +1,50 @@
#!/bin/bash
get_current_monitor_width() {
# Get cursor position from Hyprland
local pos=$(hyprctl cursorpos 2>/dev/null | head -n 1)
if [ -z "$pos" ]; then
echo "Error: Could not get cursor position from Hyprland" >&2
return 1
fi
# Extract coordinates (hyprctl cursorpos returns: "x, y")
local x=$(echo "$pos" | awk -F',' '{print $1}' | tr -d ' ')
local y=$(echo "$pos" | awk -F',' '{print $2}' | tr -d ' ')
# Get the width of the monitor containing the cursor
local width=$(hyprctl monitors -j | jq -r --argjson x "$x" --argjson y "$y" '
.[] | select(
.x <= $x and
.y <= $y and
(.x + .width) > $x and
(.y + .height) > $y
) | .width' | head -n 1)
echo "$width"
}
post_rofi() {
local image_dir="$HOME/.config/rofi/images/neco"
local current_image=$(grep "background-image: url" "$THEME_FILE" | cut -d'"' -f2)
local new_image=$(find "$image_dir" -type f | sort -R | head -n 1 | sed "s|^$HOME|~|")
while true; do
if [[ "$new_image" != "$current_image" ]]; then
sed -i 's|url("[^"]*"|url("'"$new_image"'"|' "$THEME_FILE"
break
fi
new_image=$(find "$image_dir" -type f | sort -R | head -n 1 | sed "s|^$HOME|~|")
done
}
width=$(get_current_monitor_width)
if [ "$width" -gt 2256 ]; then
#is wider than laptop monitor
THEME_FILE=~/.config/rofi/app-manager/app-manager-wide.rasi
else
#laptop monitor
THEME_FILE=~/.config/rofi/app-manager/app-manager.rasi
fi
rofi -show drun -theme $THEME_FILE
post_rofi &

View File

@@ -0,0 +1,129 @@
configuration {
font: "Geist 12";
hover-select: true;
me-select-entry: "MousePrimary";
me-accept-entry: "!MousePrimary";
click-to-exit: true;
}
@theme "~/.config/rofi/theme.rasi"
// Main //
window {
width: 20.3em;
height: 13.5em;
fullscreen: false;
enabled: true;
cursor: "default";
spacing: 0em;
opacity: 0;
background-color: transparent;
}
mainbox {
enabled: true;
spacing: 0em;
orientation: vertical;
children: [ "message", "mainContent" ];
border: 1px;
border-color: @primary-opa;
border-radius: 1em;
background-color: transparent;
}
// decorative text at top
message {
enabled: true;
background-color: @base-200;
text-color: @primary;
border: none;
}
textbox {
padding: 12px 1em 12px 0px;
font: "Octal Light 18";
letter-spacing: 5px;
horizontal-align: 0.0;
vertical-align: 0.5;
}
mainContent {
orientation: horizontal;
children: [ "listview", "imageBoxOverlay" ];
background-color: @base-200-opa;
padding: 1em 0 1em 0;
}
imageBoxOverlay {
children: ["imageBox"];
margin: 0em 1em 0em 0em;
border-radius: 1em;
padding: 0.4em;
background-image: linear-gradient(135deg,#B37ADE,#F59FD5,#7A7FDE);
}
imageBox {
enabled: true;
background-image: url("~/.config/rofi/images/sg/12.jpg", width);
border-radius: 1em;
}
// Lists //
listview {
enabled: true;
spacing: 0.6em;
padding: 0em 1em;
columns: 1;
lines: 3;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
expand: true;
fixed-height: true;
fixed-columns: true;
cursor: "default";
background-color: transparent;
}
// Elements //
element {
enabled: true;
spacing: 1em;
padding: 0.4em 0.5em 0.4em 1.5em;
cursor: pointer;
background-color: transparent;
text-color: #E6D5E6;
}
element selected.normal {
border-radius: 0.5em;
background-image: linear-gradient(135deg,#d5aed666,#7866C44d,#7A7FDE66);
text-color: @secondary;
border-color: @primary-opa;
border: 1px;
}
element-icon {
size: 1.5em;
cursor: inherit;
background-color: transparent;
text-color: inherit;
}
element-text {
vertical-align: 0.5;
horizontal-align: 0.0;
cursor: inherit;
background-color: transparent;
text-color: inherit;
highlight: bold;
}
// Error message //
error-message {
text-color: #cdd6f4ff;
background-color: #11111be6;
text-transform: capitalize;
children: [ "textbox" ];
}
textbox {
text-color: inherit;
background-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}

View File

@@ -0,0 +1,78 @@
#!/bin/bash
# ln -s ~/.config/rofi/config-manager/rofi-config-manager.sh ~/.local/bin/rofi-config-manager.sh
THEME_FILE=~/.config/rofi/config-manager/config-manager.rasi
post_rofi() {
local image_dir="$HOME/.config/rofi/images/sg"
local current_image=$(grep "background-image: url" "$THEME_FILE" | cut -d'"' -f2)
local new_image=$(find "$image_dir" -type f | sort -R | head -n 1 | sed "s|^$HOME|~|")
while true; do
if [[ "$new_image" != "$current_image" ]]; then
sed -i 's|url("[^"]*"|url("'"$new_image"'"|' "$THEME_FILE"
break
fi
new_image=$(find "$image_dir" -type f | sort -R | head -n 1 | sed "s|^$HOME|~|")
done
}
NVIM=" Neovim"
HYPRLAND=" Hyprland"
WAYBAR=" Waybar"
GHOSTTY=" Ghostty"
ROFI_APP=" Rofi App"
ROFI_SETT=" Rofi Sett"
ROFI_CONF=" Rofi Conf"
ROFI_POW=" Rofi Pow"
HYPRLOCK=" Hyprlock"
HYPRIDLE="󰒲 Hypridle"
HYPRPAPER=" Hyprpaper"
MAKO=" Mako"
chosen=$(echo -e "$NVIM\n$HYPRLAND\n$WAYBAR\n$GHOSTTY\n$ROFI_APP\n$ROFI_SETT\n$ROFI_CONF\n$ROFI_POW\n$HYPRLOCK\n$HYPRIDLE\n$MAKO\n$HYPRPAPER" | rofi -mesg " Configs" -dmenu -p "Action:" -config ~/.config/rofi/config-manager/config-manager.rasi)
case $chosen in
"$NVIM")
ghostty -e nvim ~/.config/nvim/init.lua & disown
ghostty -e nvim ~/.config/nvim/lua/settings.lua & disown
;;
"$HYPRLAND")
ghostty -e nvim ~/.config/hypr/hyprland.conf & disown
;;
"$HYPRLOCK")
ghostty -e nvim ~/.config/hypr/hyprlock.conf & disown
;;
"$HYPRIDLE")
ghostty -e nvim ~/.config/hypr/hypridle.conf & disown
;;
"$WAYBAR")
ghostty -e nvim ~/.config/waybar/config.jsonc & disown
ghostty -e nvim ~/.config/waybar/style.css & disown
;;
"$GHOSTTY")
ghostty -e nvim ~/.config/ghostty/config & disown
ghostty -e nvim ~/.config/ghostty/themes/navarch & disown
;;
"$MAKO")
ghostty -e nvim ~/.config/mako/config & disown
;;
"$ROFI_APP")
ghostty -e nvim ~/.config/rofi/app-manager/app-manager.rasi & disown
ghostty -e nvim ~/.config/rofi/app-manager/rofi-app-manager.sh & disown
;;
"$ROFI_SETT")
ghostty -e nvim ~/.config/rofi/settings-manager/settings-manager.rasi & disown
ghostty -e nvim ~/.config/rofi/settings-manager/rofi-settings-manager.sh & disown
;;
"$ROFI_CONF")
ghostty -e nvim ~/.config/rofi/config-manager/config-manager.rasi & disown
ghostty -e nvim ~/.config/rofi/config-manager/rofi-config-manager.sh & disown
;;
"$ROFI_POW")
ghostty -e nvim ~/.config/rofi/power-manager/power-manager.rasi & disown
ghostty -e nvim ~/.config/rofi/power-manager/rofi-power-manager.sh & disown
;;
"$HYPRPAPER")
ghostty -e nvim ~/.config/hypr/hyprpaper.conf & disown
;;
esac
post_rofi &

View File

@@ -0,0 +1,152 @@
configuration {
hover-select: true;
font: "Geist 12";
show-icons: true;
icon-theme: "Papirus";
display-drun: " ";
}
@theme "~/.config/rofi/theme.rasi"
// Main //
window {
height: 100%;
width: 100%;
transparency: "real";
fullscreen: false;
enabled: true;
spacing: 0em;
padding: 0em;
background-color: transparent;
}
mainbox {
enabled: true;
spacing: 0em;
orientation: horizontal;
children: [ "imageBoxOverlay" , "listbox", "rightTab" ];
background-color: @base-200-opa;
margin: 19% 22.5%;
border-color: @primary-opa;
border: 1px;
border-radius: 1em;
}
rightTab {
background-color: transparent;
background-image: linear-gradient(135deg,#B37ADE26,#d5aed6d9);
expand: false;
width: 3.5em;
}
imageBoxOverlay {
children: ["imageBox"];
background-color: rgba(0,0,0,0.9);
margin: 1.4em 0.8em 1.4em 1.4em;
border-radius: 1em;
padding: 0.6em;
background-image: linear-gradient(135deg,#B37ADE,#f3e2a9,#DE7AB9,#7A7FDE);
}
imageBox {
enabled: true;
background-image: url("~/.config/rofi/images/neco/11.jpg", width);
border-radius: 1em;
}
// Lists //
listbox {
spacing: 0em;
padding: 1.4em 0.8em 1.4em 0em;
children: [ "inputbar" , "listview" ];
background-color: transparent;
}
// Inputs //
inputbar {
enabled: true;
margin: 0.2em 0.8em 0.8em 0.8em;
children: [ "prompt", "entry" ];
background-color: transparent;
border-radius: 0.5em;
}
prompt {
font: "Geist 14";
text-color: #E5C38F;
background-color: transparent;
padding: 0.8em 0.5em 0em 0.5em;
}
entry {
font: "Fira Code Retina 11";
text-color: #f5e0dcff;
background-color: #1E1B21;
background-image: linear-gradient(135deg,#2E2A33,#1E1B21);
border-radius: 0.5em;
border-color: @secondary;
placeholder: "Search...";
placeholder-color: #BF9FD875;
border: 1px;
padding: 0.7em 0.9em 0.7em 0.7em;
enabled: true;
}
listview {
enabled: true;
spacing: 0.6em;
padding: 0em 0em;
columns: 1;
lines: 8;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
expand: true;
fixed-height: false;
fixed-columns: true;
cursor: "default";
background-color: transparent;
}
// Elements //
element {
enabled: true;
spacing: 1em;
padding: 0.4em 0.5em 0.4em 0.4em;
cursor: pointer;
background-color: transparent;
text-color: #E6D5E6;
}
element selected.normal {
border-radius: 0.5em;
background-image: linear-gradient(135deg,#d5aed666,#7866C44d,#7A7FDE66);
text-color: @secondary;
border-color: @primary-opa;
border: 1px;
}
element-icon {
size: 0em;
cursor: inherit;
background-color: transparent;
text-color: inherit;
}
element-text {
vertical-align: 0.5;
horizontal-align: 0.0;
cursor: inherit;
background-color: transparent;
text-color: inherit;
highlight: bold;
}
// Error message //
error-message {
text-color: #cdd6f4ff;
background-color: #11111be6;
text-transform: capitalize;
children: [ "textbox" ];
}
textbox {
text-color: inherit;
background-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}

View File

@@ -0,0 +1,152 @@
configuration {
hover-select: true;
font: "Geist 12";
show-icons: true;
icon-theme: "Papirus";
display-drun: " ";
}
@theme "~/.config/rofi/theme.rasi"
// Main //
window {
height: 100%;
width: 100%;
transparency: "real";
fullscreen: false;
enabled: true;
spacing: 0em;
padding: 0em;
background-color: transparent;
}
mainbox {
enabled: true;
spacing: 0em;
orientation: horizontal;
children: [ "imageBoxOverlay" , "listbox", "rightTab" ];
background-color: @base-200-opa;
margin: 21.2% 8%;
border-color: @primary-opa;
border: 1px;
border-radius: 1em;
}
rightTab {
background-color: transparent;
background-image: linear-gradient(135deg,#B37ADE26,#d5aed6d9);
expand: false;
width: 3.5em;
}
imageBoxOverlay {
children: ["imageBox"];
background-color: rgba(0,0,0,0.9);
margin: 1.4em 0.8em 1.4em 1.4em;
border-radius: 1em;
padding: 0.6em;
background-image: linear-gradient(135deg,#B37ADE,#f3e2a9,#DE7AB9,#7A7FDE);
}
imageBox {
enabled: true;
background-image: url("~/.config/rofi/images/neco/3.jpg", width);
border-radius: 1em;
}
// Lists //
listbox {
spacing: 0em;
padding: 1.4em 0.8em 1.4em 0em;
children: [ "inputbar" , "listview" ];
background-color: transparent;
}
// Inputs //
inputbar {
enabled: true;
margin: 0.2em 0.8em 0.8em 0.8em;
children: [ "prompt", "entry" ];
background-color: transparent;
border-radius: 0.5em;
}
prompt {
font: "Geist 14";
text-color: #E5C38F;
background-color: transparent;
padding: 0.8em 0.5em 0em 0.5em;
}
entry {
font: "Fira Code Retina 11";
text-color: #f5e0dcff;
background-color: #1E1B21;
background-image: linear-gradient(135deg,#2E2A33,#1E1B21);
border-radius: 0.5em;
border-color: @secondary;
placeholder: "Search...";
placeholder-color: #BF9FD875;
border: 1px;
padding: 0.7em 0.9em 0.7em 0.7em;
enabled: true;
}
listview {
enabled: true;
spacing: 0.6em;
padding: 0em 0em;
columns: 1;
lines: 8;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
expand: true;
fixed-height: false;
fixed-columns: true;
cursor: "default";
background-color: transparent;
}
// Elements //
element {
enabled: true;
spacing: 1em;
padding: 0.4em 0.5em 0.4em 0.4em;
cursor: pointer;
background-color: transparent;
text-color: #E6D5E6;
}
element selected.normal {
border-radius: 0.5em;
background-image: linear-gradient(135deg,#d5aed666,#7866C44d,#7A7FDE66);
text-color: @secondary;
border-color: @primary-opa;
border: 1px;
}
element-icon {
size: 0em;
cursor: inherit;
background-color: transparent;
text-color: inherit;
}
element-text {
vertical-align: 0.5;
horizontal-align: 0.0;
cursor: inherit;
background-color: transparent;
text-color: inherit;
highlight: bold;
}
// Error message //
error-message {
text-color: #cdd6f4ff;
background-color: #11111be6;
text-transform: capitalize;
children: [ "textbox" ];
}
textbox {
text-color: inherit;
background-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}

View File

@@ -0,0 +1,13 @@
Ldr + l → Refresh LSP
Ldr + s → Search Replace Current
Ldr + S → Search Replace Global
Ldr + cc → Comment/Uncomment
Ldr + x → Navigate/Show Errors/Warnings
Ctrl + f → Find Search File
Ldr + fg → Find Live Grep Search
Ldr + ca → Show Code Actions
K → Peek Signature
gd → Go To Definition
gr → Find References
Ctrl + l → Clear Highlights
Alt + Arrows → Navigate/Switch Panels

View File

@@ -0,0 +1,67 @@
#!/bin/bash
get_current_monitor_width() {
# Get cursor position from Hyprland
local pos=$(hyprctl cursorpos 2>/dev/null | head -n 1)
if [ -z "$pos" ]; then
echo "Error: Could not get cursor position from Hyprland" >&2
return 1
fi
# Extract coordinates (hyprctl cursorpos returns: "x, y")
local x=$(echo "$pos" | awk -F',' '{print $1}' | tr -d ' ')
local y=$(echo "$pos" | awk -F',' '{print $2}' | tr -d ' ')
# Get the width of the monitor containing the cursor
local width=$(hyprctl monitors -j | jq -r --argjson x "$x" --argjson y "$y" '
.[] | select(
.x <= $x and
.y <= $y and
(.x + .width) > $x and
(.y + .height) > $y
) | .width' | head -n 1)
echo "$width"
}
post_rofi() {
local image_dir="$HOME/.config/rofi/images/neco"
local current_image=$(grep "background-image: url" "$THEME_FILE" | cut -d'"' -f2)
local new_image=$(find "$image_dir" -type f | sort -R | head -n 1 | sed "s|^$HOME|~|")
while true; do
if [[ "$new_image" != "$current_image" ]]; then
sed -i 's|url("[^"]*"|url("'"$new_image"'"|' "$THEME_FILE"
break
fi
new_image=$(find "$image_dir" -type f | sort -R | head -n 1 | sed "s|^$HOME|~|")
done
}
width=$(get_current_monitor_width)
if [ "$width" -gt 2256 ]; then
echo "showing wide"
#is wider than laptop monitor
THEME_FILE=~/.config/rofi/help-manager/help-manager-wide.rasi
else
#laptop monitor
THEME_FILE=~/.config/rofi/help-manager/help-manager.rasi
fi
SYSTEM="󰟀 System"
NVIM=" Neovim"
chosen=$(echo -e "$SYSTEM\n$NVIM" | rofi -mesg " Keybinds" -dmenu -p "Action:" -config ~/.config/rofi/config-manager/config-manager.rasi)
case $chosen in
"$NVIM")
cat ~/.config/rofi/help-manager/neovim-keybinds.txt | rofi -mesg " Neovim Binds" -dmenu -i -p "󰍉" -config $THEME_FILE \
-font "Geist Mono 14" \
-kb-accept-entry ""
;;
"$SYSTEM")
cat ~/.config/rofi/help-manager/system-keybinds.txt | rofi -mesg " System Binds" -dmenu -i -p "󰍉" -config $THEME_FILE \
-font "Geist Mono 14" \
-kb-accept-entry ""
;;
esac
post_rofi &

View File

@@ -0,0 +1,11 @@
Super + Return → Terminal
Super + B → Browser
Super + Shift + q → Quit Window
Super + Shift + c → Configs Launcher
Super + Shift + x → Settings Launcher
Super + Shift + p → Power/System Launcher
Super + d → App/Program Launcher
Super + t → Toggle Floating Window
Super + Arrows → Navigate Windows
Super + Shft + Arrows → Move Windows
Super + s → Toggle Scratchpad/Special

View File

@@ -0,0 +1,116 @@
configuration {
hover-select: true;
me-select-entry: "MousePrimary";
me-accept-entry: "!MousePrimary";
click-to-exit: true;
}
@theme "~/.config/rofi/theme.rasi"
// Main //
window {
font: "Geist 12";
width: 15em;
height: 13.75em;
transparency: "real";
enabled: true;
cursor: "default";
spacing: 0em;
background-color: transparent;
border-radius: 1em;
}
mainbox {
enabled: true;
spacing: 0em;
orientation: vertical;
children: [ "message", "listview" ];
background-color: @base-200-opa;
border-radius: 1em;
border-color: @primary-opa;
border: 3px;
}
// decorative text at top
message {
enabled: true;
background-color: @base-200;
text-color: @primary;
border: none;
}
textbox {
padding: 12px 1em 12px 0px;
font: "Octal Light 20";
horizontal-align: 0.0;
vertical-align: 0.5;
}
// Lists //
listview {
enabled: true;
spacing: 0.6em;
padding: 1em;
columns: 1;
lines: 3;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
expand: true;
fixed-height: true;
fixed-columns: true;
cursor: "default";
background-color: transparent;
}
// Elements //
element {
enabled: true;
spacing: 1em;
padding: 0.4em 0.5em 0.4em 3.3em;
cursor: pointer;
background-color: transparent;
}
element.normal.normal,
element.alternate.normal {
background-color: transparent;
text-color: @neutral;
}
element selected.normal {
border-radius: 0.5em;
// background-color: @primary-opa;
background-image: linear-gradient(135deg,#d5aed666,#7866C44d,#7A7FDE66);
text-color: @secondary;
border-color: @primary-opa;
border: 1px;
}
element-icon {
size: 1.5em;
cursor: inherit;
background-color: transparent;
text-color: inherit;
}
element-text {
vertical-align: 0.5;
horizontal-align: 0.0;
cursor: inherit;
background-color: transparent;
text-color: inherit;
highlight: bold;
}
// Error message //
error-message {
text-color: #cdd6f4ff;
background-color: #11111be6;
text-transform: capitalize;
children: [ "textbox" ];
}
textbox {
text-color: inherit;
background-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}

View File

@@ -0,0 +1,23 @@
#!/bin/bash
# save as ~/.local/bin/rofi-power-manager.sh
LOCKSCREEN=" Lock Screen"
SLEEP="󰤄 Sleep"
REBOOT=" Reboot"
SHUTDOWN=" Shutdown"
chosen=$(echo -e "$SLEEP\n$REBOOT\n$SHUTDOWN\n$LOCKSCREEN" | rofi -mesg "󰚥 $HOSTNAME" -dmenu -p "Action:" -config ~/.config/rofi/power-manager/power-manager.rasi)
case $chosen in
"$SLEEP")
systemctl suspend-then-hibernate
;;
"$LOCKSCREEN")
pid hyprlock || ~/.config/hypr/run-hyprlock.sh
;;
"$REBOOT")
systemctl reboot
;;
"$SHUTDOWN")
systemctl poweroff
;;
esac

View File

@@ -0,0 +1,87 @@
#!/bin/bash
# run init setup.sh to symlink scripts
THEME_FILE=~/.config/rofi/settings-manager/settings-manager.rasi
get_current_monitor() {
# Use Hyprland's native cursor position
local pos=$(hyprctl cursorpos 2>/dev/null)
if [ -z "$pos" ]; then
echo "Error: Could not get cursor position from Hyprland" >&2
return 1
fi
# Strip whitespace and extract coordinates
local x=$(echo "$pos" | cut -d',' -f1 | tr -d ' ')
local y=$(echo "$pos" | cut -d',' -f2 | tr -d ' ')
hyprctl monitors -j | jq -r --arg x "$x" --arg y "$y" '
.[] | select(
.x <= ($x | tonumber) and
.y <= ($y | tonumber) and
(.x + .width) >= ($x | tonumber) and
(.y + .height) >= ($y | tonumber)
) | .name'
}
# Store the monitor at the start
if [ -z "$ROFI_MONITOR" ]; then
export ROFI_MONITOR=$(get_current_monitor)
fi
post_rofi() {
local image_dir="$HOME/.config/rofi/images/sg"
local current_image=$(grep "background-image: url" "$THEME_FILE" | cut -d'"' -f2)
local new_image=$(find "$image_dir" -type f | sort -R | head -n 1 | sed "s|^$HOME|~|")
while true; do
if [[ "$new_image" != "$current_image" ]]; then
sed -i 's|url("[^"]*"|url("'"$new_image"'"|' "$THEME_FILE"
break
fi
new_image=$(find "$image_dir" -type f | sort -R | head -n 1 | sed "s|^$HOME|~|")
done
}
MONITOR_RELOAD="󰑓 Refresh"
MONITOR_SETTINGS="󰍹 Settings"
MONITOR_BACK=" Back"
MONITOR=" Monitor"
SOUND=" Sound"
BLUETOOTH="󰂯 Bluetooth"
NETWORK="󰲝 Network"
NIGHTLIGHT=" Night Light"
if [[ "$1" == "monitor" ]]; then
chosen=$(echo -e "$MONITOR_RELOAD\n$MONITOR_SETTINGS\n$MONITOR_BACK" | rofi -mesg "󰍹 Monitor" -dmenu -p "Action:" -config ~/.config/rofi/settings-manager/settings-manager.rasi -monitor "$ROFI_MONITOR")
else
chosen=$(echo -e "$MONITOR\n$SOUND\n$BLUETOOTH\n$NETWORK\n$NIGHTLIGHT" | rofi -mesg " Settings" -dmenu -p "Action:" -config ~/.config/rofi/settings-manager/settings-manager.rasi -monitor "$ROFI_MONITOR")
fi
case $chosen in
"$MONITOR_BACK")
bash ~/.config/rofi/settings-manager/rofi-settings-manager.sh
;;
"$MONITOR")
bash ~/.config/rofi/settings-manager/rofi-settings-manager.sh "monitor"
;;
"$MONITOR_RELOAD")
bash ~/.config/hypr/reload-monitors.sh
;;
"$MONITOR_SETTINGS")
ghostty -e hyprmon
;;
"$SOUND")
pavucontrol
;;
"$BLUETOOTH")
blueman-manager
;;
"$NETWORK")
ghostty -e nmtui
;;
"$NIGHTLIGHT")
ghostty -e ~/.config/wlsunset/run-wlsunset.sh
;;
esac
post_rofi &

View File

@@ -0,0 +1,129 @@
configuration {
font: "Geist 12";
hover-select: true;
me-select-entry: "MousePrimary";
me-accept-entry: "!MousePrimary";
click-to-exit: true;
}
@theme "~/.config/rofi/theme.rasi"
// Main //
window {
width: 26em;
height: 15.8em;
fullscreen: false;
enabled: true;
cursor: "default";
spacing: 0em;
opacity: 0;
background-color: transparent;
extend: false;
}
mainbox {
enabled: true;
spacing: 0em;
orientation: vertical;
children: [ "message", "mainContent" ];
border-color: @primary-opa;
border: 1px;
border-radius: 1em;
background-color: transparent;
}
// decorative text at top
message {
enabled: true;
background-color: @base-200;
text-color: @primary;
border: none;
}
textbox {
padding: 12px 1em 12px 0px;
font: "Octal Light 18";
horizontal-align: 0.0;
vertical-align: 0.5;
}
mainContent {
padding: 1em 0;
orientation: horizontal;
children: [ "listview", "imageBoxOverlay" ];
background-color: @base-200-opa;
}
imageBoxOverlay {
children: ["imageBox"];
margin: 0em 1em 0em 0em;
border-radius: 1em;
padding: 0.4em;
background-image: linear-gradient(135deg,#B575E6,#EBD488,#9084E8);
}
imageBox {
enabled: true;
background-image: url("~/.config/rofi/images/sg/15.jpg", width);
border-radius: 1em;
}
// Lists //
listview {
enabled: true;
spacing: 0.6em;
padding: 0em 1em;
columns: 1;
lines: 3;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
expand: true;
fixed-height: true;
fixed-columns: true;
cursor: "default";
background-color: transparent;
}
// Elements //
element {
enabled: true;
spacing: 1em;
padding: 0.4em 0em 0.4em 2.9em;
cursor: pointer;
background-color: transparent;
text-color: #E6D5E6;
}
element selected.normal {
border-radius: 0.5em;
background-image: linear-gradient(135deg,#d5aed666,#7866C44d,#7A7FDE66);
text-color: @secondary;
border-color: @primary-opa;
border: 1px;
}
element-icon {
size: 1.5em;
cursor: inherit;
background-color: transparent;
text-color: inherit;
}
element-text {
vertical-align: 0.5;
horizontal-align: 0.0;
cursor: inherit;
background-color: transparent;
text-color: inherit;
highlight: bold;
}
// Error message //
error-message {
text-color: #cdd6f4ff;
background-color: #11111be6;
text-transform: capitalize;
children: [ "textbox" ];
}
textbox {
text-color: inherit;
background-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}

7
hyprland/rofi/setup.sh Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/bash
ln -s ~/.config/rofi/app-manager/rofi-app-manager.sh ~/.local/bin/rofi-app-manager.sh
ln -s ~/.config/rofi/config-manager/rofi-config-manager.sh ~/.local/bin/rofi-config-manager.sh
ln -s ~/.config/rofi/settings-manager/rofi-settings-manager.sh ~/.local/bin/rofi-settings-manager.sh
ln -s ~/.config/rofi/power-manager/rofi-power-manager.sh ~/.local/bin/rofi-power-manager.sh
ln -s ~/.config/rofi/help-manager/rofi-help-manager.sh ~/.local/bin/rofi-help-manager.sh

16
hyprland/rofi/theme.rasi Normal file
View File

@@ -0,0 +1,16 @@
* {
base-300: #000000;
base-100: #393342;
base-200: #211C2E;
base-200-opa: #3D3445a6;
neutral: #BAB6A9;
neutral-content:#5C543E;
primary: #d5aed6;
primary-opa: #d5aed699;
secondary: #f3e2a9;
accent: #7866C4;
success: #a3be8c;
error: #C97F87;
}

View File

@@ -0,0 +1,2 @@
#!/bin/bash
sudo pacman -S fcitx5 fcitx5-anthy fcitx5-gtk fcitx5-qt fcitx5-configtool

View File

@@ -0,0 +1,57 @@
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root (use sudo)"
exit 1
fi
if [[ -n "$SUDO_USER" ]]; then
USER_HOME=$(getent passwd "$SUDO_USER" | cut -d: -f6)
else
USER_HOME="$HOME"
fi
SOURCE_FILE="$USER_HOME/.config/hypr/reload-monitors.sh"
TARGET_LINK="/usr/local/bin/reload-monitors.sh"
# Check if source file exists
if [[ ! -f "$SOURCE_FILE" ]]; then
echo "Error: Source file does not exist: $SOURCE_FILE"
exit 1
fi
# Check if source file is executable
if [[ ! -x "$SOURCE_FILE" ]]; then
echo "Warning: Source file is not executable. Making it executable..."
chmod +x "$SOURCE_FILE"
fi
# Create the symlink
echo "Creating symlink..."
sudo ln -sf "$SOURCE_FILE" "$TARGET_LINK"
if [[ $? -eq 0 ]]; then
echo "✓ Symlink created successfully:"
else
echo "✗ Failed to create symlink"
exit 1
fi
RULE_FILE="/etc/udev/rules.d/99-hypr-monitor-hotplug.rules"
RULE_CONTENT='ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/bin/reload-monitors.sh"'
echo "$RULE_CONTENT" > "$RULE_FILE"
if [[ $? -eq 0 ]]; then
echo "✓ Rule file created successfully at: $RULE_FILE"
# Reload udev rules
echo "Reloading udev rules..."
udevadm control --reload-rules
udevadm trigger
echo "✓ Done! The monitor hotplug detection should now be active."
else
echo "✗ Failed to create rule file"
exit 1
fi

28
hyprland/update.sh Executable file
View File

@@ -0,0 +1,28 @@
#!/bin/bash
cp ~/.config/rofi/theme.rasi ./rofi
cp ~/.config/rofi/app-manager/* ./rofi/app-manager
cp ~/.config/rofi/settings-manager/* ./rofi/settings-manager
cp ~/.config/rofi/config-manager/* ./rofi/config-manager
cp ~/.config/rofi/power-manager/* ./rofi/power-manager
cp ~/.config/rofi/help-manager/* ./rofi/help-manager
cp ~/.config/rofi/setup.sh ./rofi
cp ~/.config/wlsunset/run-wlsunset.sh ./wlsunset
cp ~/.config/hypr/* ./hypr
cp ~/.config/fastfetch/* ./fastfetch
cp -r ~/.config/waybar/* ./waybar
cp ~/.config/mako/* ./mako
cp -r ~/.config/ghostty/* ./ghostty
cp -r ~/.config/btop/* ./btop
cp -r ~/.config/gtk-3.0/* ./gtk-3.0
cp -r ~/.config/gtk-4.0/* ./gtk-4.0

View File

@@ -0,0 +1,10 @@
[Desktop Entry]
Name=Discord
StartupWMClass=discord
Comment=All-in-one voice and text chat for gamers that's free, secure, and works on both your desktop and phone.
GenericName=Internet Messenger
Exec=/usr/bin/discord --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime
Icon=discord
Type=Application
Categories=Network;InstantMessaging;
Path=/usr/bin

View File

@@ -0,0 +1,112 @@
{
"layer": "top",
"position": "top",
"margin-top": 12,
"margin-left": 15,
"margin-right": 15,
"spacing": 12,
"modules-left": ["clock#date", "hyprland/workspaces", "custom/settings", "custom/configs", "custom/discord"],
"modules-right": ["custom/keyboard", "wireplumber", "network", "custom/gpu", "cpu", "memory", "battery", "custom/power"],
"modules-center": ["clock#time"],
"custom/gpu": {
"exec": "cat /sys/class/drm/card*/device/gpu_busy_percent 2>/dev/null | head -1",
"format-icons": ["<span color='#BCB9EB'>󰘚</span>"],
"format": "{}% {icon}",
"interval": 8
},
"custom/keyboard": {
"signal": 8,
"format-icons": ["<span color='#BCB9EB'>⌨</span>"],
"format": "{} {icon}",
"exec": "~/.config/waybar/scripts/fcitx5-status.sh"
},
"custom/configs": {
"format-icons": ["<span color='#BCB9EB'>󰈙</span>"],
"format": "{icon}",
"tooltip": true,
"tooltip-format": "Config list",
"on-click": "~/.local/bin/rofi-config-manager.sh"
},
"custom/settings": {
"format-icons": ["<span color='#BCB9EB'></span>"],
"format": "{icon}",
"tooltip": true,
"tooltip-format": "Control panel",
"on-click": "~/.local/bin/rofi-settings-manager.sh"
},
"custom/discord": {
"format-icons": ["<span color='#BCB9EB'></span>"],
"format": "{icon}",
"tooltip": false,
"on-click": "discord --enable-features=UseOzonePlatform --ozone-platform=wayland"
},
"hyprland/workspaces": {
"format": "{icon}",
"format-icons": {
"active": "",
"default": "",
"urgent": ""
},
"on-click": "activate"
},
"cpu": {
"format-icons": ["<span color='#BCB9EB'></span>"],
"format": "{usage}% {icon}",
"tooltip": false
},
"memory": {
"format-icons": ["<span color='#BCB9EB'></span>"],
"format": "{}% {icon}"
},
"clock#date": {
"format": "{:%m/%d}"
},
"clock#time": {
"format": "{:%H:%M}"
},
"custom/power": {
"format-icons": ["<span color='#C97F87'></span>"],
"format": "{icon}",
"tooltip": false,
"on-click": "~/.local/bin/rofi-power-manager.sh"
},
"network": {
"max-length": 10,
"format-wifi": "{essid} <span color='#BCB9EB'></span>",
"format-ethernet": "{ipaddr}/{cidr} ",
"tooltip-format": "{ifname} via {gwaddr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "Disconnected ⚠",
"on-click": "ghostty -e nmtui & disown"
// "format-alt": "{ifname}: {ipaddr}/{cidr}",
},
"wireplumber": {
"format": "{volume}% <span color='#BCB9EB'>{icon}</span>",
"format-icons": {
"default": [
"",
"",
""
]
},
"format-muted": "<span color='#BCB9EB'></span>",
"on-click": "pavucontrol"
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-full": "{capacity}% {icon}",
"format-charging": "{capacity}% 󰂄",
"format-alt": "{time} {icon}",
"format-icons": ["<span color='#BCB9EB'></span>", "<span color='#BCB9EB'></span>", "<span color='#BCB9EB'></span>", "<span color='#BCB9EB'></span>", "<span color='#BCB9EB'></span>"]
// "format-good": "", // An empty format will hide the module
// "format-full": "",
// "format-plugged": "{capacity}% ",
}
}

View File

@@ -0,0 +1,27 @@
#!/bin/bash
current_im=$(fcitx5-remote -n 2>/dev/null)
if [[ "$current_im" == "anthy" ]]; then
CURRENT_STATUS="JP"
else
CURRENT_STATUS="EN"
fi
dbus-monitor --session "type='signal',interface='org.fcitx.Fcitx.InputContext1',member='CurrentIM'" 2>/dev/null | \
while IFS= read -r line; do
if [[ "$line" == *"member=CurrentIM"* ]]; then
# Read the next line which contains the input method string
read -r im_line
if [[ "$im_line" == *"Anthy"* ]]; then
NEW_STATUS="JP"
else
NEW_STATUS="EN"
fi
# Only refresh if status actually changed
if [[ "$NEW_STATUS" != "$CURRENT_STATUS" ]]; then
sleep 0.1
pkill -RTMIN+8 waybar
CURRENT_STATUS="$NEW_STATUS"
fi
fi
done

Some files were not shown because too many files have changed in this diff Show More