Compare commits

..

22 Commits

Author SHA1 Message Date
52749d8ac3 feat:add_sh_for_ubuntu 2025-07-24 16:38:21 +08:00
c84fd8f412 remove:lazygit 2025-07-22 11:35:27 +08:00
dbdf37dbed update:fish 2025-07-21 09:43:40 +08:00
80c7581493 update:fuzzel 2025-07-19 14:37:53 +08:00
846704dc0c update:waybar 2025-07-12 11:09:36 +08:00
4e266843db update:fcitx5 2025-07-11 15:41:27 +08:00
8aeb0c38b9 update:hypr 2025-07-10 19:15:41 +08:00
c1725285b8 update:waybar 2025-07-10 14:08:22 +08:00
6a1e94e6b6 update:hypr 2025-07-10 12:57:18 +08:00
23d4a1f2db update:hypr 2025-07-10 10:26:47 +08:00
0a11fb7257 update:hypr 2025-07-10 10:10:25 +08:00
9333bb40ae update:hypr 2025-07-09 23:22:45 +08:00
366660a0f0 update:shell 2025-07-09 23:06:00 +08:00
251fda4d51 update:hypr 2025-07-09 22:03:53 +08:00
f92ab6ccba update:hypr 2025-07-09 20:54:21 +08:00
93e5822d72 update:waybar 2025-07-09 20:50:04 +08:00
1a4c06e08c update:waybar 2025-07-09 13:06:02 +08:00
7aef478be7 update:hypr 2025-07-09 12:22:03 +08:00
5a1d167e0a add:mako 2025-07-09 11:23:02 +08:00
83bc200e82 add:wofi 2025-07-09 11:21:08 +08:00
f1b669563e add:hypr 2025-07-09 11:17:01 +08:00
f343eb0913 add:waybar 2025-07-09 10:07:01 +08:00
35 changed files with 1674 additions and 239 deletions

View File

@ -161,7 +161,7 @@ live_config_reload = true
working_directory = "None"
[terminal.shell]
program = "/usr/bin/sh"
args = ["-c", "fastfetch && exec nu"]
program = "/usr/bin/fish"

View File

@ -107,7 +107,7 @@
"key": "│ ╠ Shell │",
"keyColor": "blue",
"outputColor": "blue",
"format": "nushell",
"format": "{1}",
},
{
"type": "terminal",

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 617 B

View File

@ -0,0 +1,110 @@
# vim: ft=dosini
[Metadata]
Name=Catppuccin Mocha Flamingo
Version=0.2
Author=justTOBBI and Isabelinc
Description=Catppuccin Mocha Flamingo Color Theme
ScaleWithDPI=True
[InputPanel]
# 字体
Font=Sarasa Gothic SC 14
# 非选中候选字颜色
# Blue
NormalColor=#89b4fa
# 选中候选字颜色
# Flamingo
HighlightCandidateColor=#f2cdcd
# 高亮前景颜色(输入字符颜色)
# Flamingo
HighlightColor=#f2cdcd
# 输入字符背景颜色
# Surface 0
HighlightBackgroundColor=#313244
Spacing=3
[InputPanel/TextMargin]
# 候选字对左边距
Left=10
# 候选字对右边距
Right=10
# 候选字向上边距
Top=6
# 候选字向下边距
Bottom=6
[InputPanel/Background]
# Surface 0
Color=#313244
# Surface 0
BorderColor=#313244
BorderWidth=2
[InputPanel/Background/Margin]
Left=2
Right=2
Top=2
Bottom=2
[InputPanel/Highlight]
# Surface 0
Color=#313244
[InputPanel/Highlight/Margin]
# 高亮区域左边距
Left=10
# 高亮区域右边距
Right=10
# 高亮区域上边距
Top=7
# 高亮区域下边距
Bottom=7
[Menu]
Font=Sarasa Gothic SC 14
# Text
NormalColor=#cdd6f4
Spacing=3
[Menu/Background]
# Surface 0
Color=#313244
[Menu/Background/Margin]
Left=2
Right=2
Top=2
Bottom=2
[Menu/ContentMargin]
Left=2
Right=2
Top=2
Bottom=2
[Menu/Highlight]
# Pink
Color=#f5c2e7
[Menu/Highlight/Margin]
Left=10
Right=10
Top=5
Bottom=5
[Menu/Separator]
# Base
Color=#1e1e2e
[Menu/CheckBox]
Image=radio.png
[Menu/SubMenu]
Image=arrow.png
[Menu/TextMargin]
Left=5
Right=5
Top=5
Bottom=5

View File

@ -958,6 +958,11 @@ Description="Keyboard - Swedish - Swedish (Svdvorak)"
Language=sv
Label="se (svdvorak)"
[keyboard-se-colemak]
Description="Keyboard - Swedish - Swedish (Colemak)"
Language=sv
Label="se (colemak)"
[keyboard-se-mac]
Description="Keyboard - Swedish - Swedish (Macintosh)"
Language=sv
@ -3673,11 +3678,6 @@ Description="Keyboard - Japanese - Japanese (Kana)"
Language=ja
Label="jp (kana)"
[keyboard-jp-kana86]
Description="Keyboard - Japanese - Japanese (Kana 86)"
Language=ja
Label="jp (kana86)"
[keyboard-jp-OADG109A]
Description="Keyboard - Japanese - Japanese (OADG 109A)"
Language=ja

View File

@ -0,0 +1,35 @@
# Vertical Candidate List
Vertical Candidate List=False
# Use mouse wheel to go to prev or next page
WheelForPaging=True
# Font
Font="Sarasa Gothic SC 14"
# Menu Font
MenuFont="Sarasa Gothic SC 14"
# Tray Font
TrayFont="Sarasa Gothic SC 12"
# Tray Label Outline Color
TrayOutlineColor=#000000
# Tray Label Text Color
TrayTextColor=#ffffff
# Prefer Text Icon
PreferTextIcon=False
# Show Layout Name In Icon
ShowLayoutNameInIcon=True
# Use input method language to display text
UseInputMethodLanguageToDisplayText=True
# Theme
Theme=catppuccin-mocha-flamingo
# Dark Theme
DarkTheme=catppuccin-mocha-flamingo
# Follow system light/dark color scheme
UseDarkTheme=True
# Follow system accent color if it is supported by theme and desktop
UseAccentColor=True
# Use Per Screen DPI on X11
PerScreenDPI=False
# Force font DPI on Wayland
ForceWaylandDPI=0
# Enable fractional scale under Wayland
EnableFractionalScale=True

View File

@ -1,3 +1,3 @@
[HiddenNotifications]
0=fcitx-rime-deploy
# Hidden Notifications
HiddenNotifications=

View File

@ -1,140 +0,0 @@
# Shuangpin Profile
ShuangpinProfile=Ziranma
# Show current shuangpin mode
ShowShuangpinMode=True
# Page size
PageSize=7
# Enable Spell
SpellEnabled=True
# Enable Symbols
SymbolsEnabled=True
# Enable Chaizi
ChaiziEnabled=True
# Enable Characters in Unicode CJK Extension B
ExtBEnabled=True
# Enable Cloud Pinyin
CloudPinyinEnabled=False
# Cloud Pinyin Index
CloudPinyinIndex=2
# Show animation when Cloud Pinyin is loading
CloudPinyinAnimation=True
# Always show Cloud Pinyin place holder
KeepCloudPinyinPlaceHolder=False
# Preedit Mode
PreeditMode="Composing pinyin"
# Fix embedded preedit cursor at the beginning of the preedit
PreeditCursorPositionAtBeginning=True
# Show complete pinyin in preedit
PinyinInPreedit=False
# Enable Prediction
Prediction=False
# Prediction Size
PredictionSize=49
# Action when switching input method
SwitchInputMethodBehavior="Commit current preedit"
# Select 2nd Candidate
SecondCandidate=
# Select 3rd Candidate
ThirdCandidate=
# Use Keypad as Selection key
UseKeypadAsSelection=False
# Use BackSpace to cancel the selection
BackSpaceToUnselect=True
# Number of Sentences
Number of sentence=2
# Prompt long word length when input length over (0 for disable)
LongWordLengthLimit=4
# Key to trigger quickphrase
QuickPhraseKey=semicolon
# Use V to trigger quickphrase
VAsQuickphrase=True
# FirstRun
FirstRun=False
[ForgetWord]
0=Control+7
[PrevPage]
0=minus
1=Up
2=KP_Up
3=Page_Up
[NextPage]
0=equal
1=Down
2=KP_Down
3=Next
[PrevCandidate]
0=Shift+Tab
[NextCandidate]
0=Tab
[CurrentCandidate]
0=space
1=KP_Space
[CommitRawInput]
0=Return
1=KP_Enter
2=Control+Return
3=Control+KP_Enter
4=Shift+Return
5=Shift+KP_Enter
6=Control+Shift+Return
7=Control+Shift+KP_Enter
[ChooseCharFromPhrase]
0=bracketleft
1=bracketright
[FilterByStroke]
0=grave
[QuickPhraseTriggerRegex]
0=.(/|@)$
1=^(www|bbs|forum|mail|bbs)\\.
2=^(http|https|ftp|telnet|mailto):
[Fuzzy]
# ue -> ve
VE_UE=True
# Common Typo
NG_GN=True
# Inner Segment (xian -> xi'an)
Inner=True
# Inner Segment for Short Pinyin (qie -> qi'e)
InnerShort=True
# Match partial finals (e -> en, eng, ei)
PartialFinal=True
# Match partial shuangpin if input length is longer than 4
PartialSp=False
# u <-> v
V_U=False
# an <-> ang
AN_ANG=False
# en <-> eng
EN_ENG=False
# ian <-> iang
IAN_IANG=False
# in <-> ing
IN_ING=False
# u <-> ou
U_OU=False
# uan <-> uang
UAN_UANG=False
# c <-> ch
C_CH=False
# f <-> h
F_H=False
# l <-> n
L_N=False
# s <-> sh
S_SH=False
# z <-> zh
Z_ZH=False
# Correction Layout
Correction=None

View File

@ -1,10 +0,0 @@
# Half width punctuation after latin letter or number
HalfWidthPuncAfterLetterOrNumber=True
# Type paired punctuations together (e.g. Quote)
TypePairedPunctuationsTogether=False
# Enabled
Enabled=True
[Hotkey]
0=Control+period

View File

@ -1,13 +0,0 @@
# Preedit Mode
PreeditMode="Composing text"
# Shared Input State
InputState=All
# Fix embedded preedit cursor at the beginning of the preedit
PreeditCursorPositionAtBeginning=True
# Action when switching input method
SwitchInputMethodBehavior="Commit commit preview"
# Deploy
Deploy=
# Synchronize
Synchronize=

View File

@ -11,7 +11,7 @@ EnumerateSkipFirst=False
ModifierOnlyKeyTimeout=250
[Hotkey/TriggerKeys]
0=Control+Shift+Shift_L
0=Control+space
1=Zenkaku_Hankaku
2=Hangul

340
fish/conf.d/done.fish Normal file
View File

@ -0,0 +1,340 @@
# MIT License
# Copyright (c) 2016 Francisco Lourenço & Daniel Wehner
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
if not status is-interactive
exit
end
set -g __done_version 1.19.1
function __done_run_powershell_script
set -l powershell_exe (command --search "powershell.exe")
if test $status -ne 0
and command --search wslvar
set -l powershell_exe (wslpath (wslvar windir)/System32/WindowsPowerShell/v1.0/powershell.exe)
end
if string length --quiet "$powershell_exe"
and test -x "$powershell_exe"
set cmd (string escape $argv)
eval "$powershell_exe -Command $cmd"
end
end
function __done_windows_notification -a title -a message
if test "$__done_notify_sound" -eq 1
set soundopt "<audio silent=\"false\" src=\"ms-winsoundevent:Notification.Default\" />"
else
set soundopt "<audio silent=\"true\" />"
end
__done_run_powershell_script "
[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | Out-Null
[Windows.UI.Notifications.ToastNotification, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
\$toast_xml_source = @\"
<toast>
$soundopt
<visual>
<binding template=\"ToastText02\">
<text id=\"1\">$title</text>
<text id=\"2\">$message</text>
</binding>
</visual>
</toast>
\"@
\$toast_xml = New-Object Windows.Data.Xml.Dom.XmlDocument
\$toast_xml.loadXml(\$toast_xml_source)
\$toast = New-Object Windows.UI.Notifications.ToastNotification \$toast_xml
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier(\"fish\").Show(\$toast)
"
end
function __done_get_focused_window_id
if type -q lsappinfo
lsappinfo info -only bundleID (lsappinfo front | string replace 'ASN:0x0-' '0x') | cut -d '"' -f4
else if test -n "$SWAYSOCK"
and type -q jq
swaymsg --type get_tree | jq '.. | objects | select(.focused == true) | .id'
else if test -n "$HYPRLAND_INSTANCE_SIGNATURE"
hyprctl activewindow | awk '/^\tpid: / {print $2}'
else if begin
test "$XDG_SESSION_DESKTOP" = gnome; and type -q gdbus
end
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'global.display.focus_window.get_id()'
else if type -q xprop
and test -n "$DISPLAY"
# Test that the X server at $DISPLAY is running
and xprop -grammar >/dev/null 2>&1
xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2
else if uname -a | string match --quiet --ignore-case --regex microsoft
__done_run_powershell_script '
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class WindowsCompat {
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
}
"@
[WindowsCompat]::GetForegroundWindow()
'
else if set -q __done_allow_nongraphical
echo 12345 # dummy value
end
end
function __done_is_tmux_window_active
set -q fish_pid; or set -l fish_pid %self
# find the outermost process within tmux
# ppid != "tmux" -> pid = ppid
# ppid == "tmux" -> break
set tmux_fish_pid $fish_pid
while set tmux_fish_ppid (ps -o ppid= -p $tmux_fish_pid | string trim)
# remove leading hyphen so that basename does not treat it as an argument (e.g. -fish), and return only
# the actual command and not its arguments so that basename finds the correct command name.
# (e.g. '/usr/bin/tmux' from command '/usr/bin/tmux new-session -c /some/start/dir')
and ! string match -q "tmux*" (basename (ps -o command= -p $tmux_fish_ppid | string replace -r '^-' '' | string split ' ')[1])
set tmux_fish_pid $tmux_fish_ppid
end
# tmux session attached and window is active -> no notification
# all other combinations -> send notification
tmux list-panes -a -F "#{session_attached} #{window_active} #{pane_pid}" | string match -q "1 1 $tmux_fish_pid"
end
function __done_is_screen_window_active
string match --quiet --regex "$STY\s+\(Attached" (screen -ls)
end
function __done_is_process_window_focused
# Return false if the window is not focused
if set -q __done_allow_nongraphical
return 1
end
if set -q __done_kitty_remote_control
kitty @ --password="$__done_kitty_remote_control_password" ls | jq -e ".[].tabs[] | select(any(.windows[]; .is_self)) | .is_focused" >/dev/null
return $status
end
set __done_focused_window_id (__done_get_focused_window_id)
if test "$__done_sway_ignore_visible" -eq 1
and test -n "$SWAYSOCK"
string match --quiet --regex "^true" (swaymsg -t get_tree | jq ".. | objects | select(.id == "$__done_initial_window_id") | .visible")
return $status
else if test -n "$HYPRLAND_INSTANCE_SIGNATURE"
set window_pid (hyprctl activewindow | awk '/^\tpid: / {print $2}')
if test -n "$window_pid"
and test $__done_initial_window_id -eq $window_pid
return $status
else
return 1
end
else if test "$__done_initial_window_id" != "$__done_focused_window_id"
return 1
end
# If inside a tmux session, check if the tmux window is focused
if type -q tmux
and test -n "$TMUX"
__done_is_tmux_window_active
return $status
end
# If inside a screen session, check if the screen window is focused
if type -q screen
and test -n "$STY"
__done_is_screen_window_active
return $status
end
return 0
end
function __done_humanize_duration -a milliseconds
set -l seconds (math --scale=0 "$milliseconds/1000" % 60)
set -l minutes (math --scale=0 "$milliseconds/60000" % 60)
set -l hours (math --scale=0 "$milliseconds/3600000")
if test $hours -gt 0
printf '%s' $hours'h '
end
if test $minutes -gt 0
printf '%s' $minutes'm '
end
if test $seconds -gt 0
printf '%s' $seconds's'
end
end
# verify that the system has graphical capabilities before initializing
if test -z "$SSH_CLIENT" # not over ssh
and count (__done_get_focused_window_id) >/dev/null # is able to get window id
set __done_enabled
end
if set -q __done_allow_nongraphical
and set -q __done_notification_command
set __done_enabled
end
if set -q __done_enabled
set -g __done_initial_window_id ''
set -q __done_min_cmd_duration; or set -g __done_min_cmd_duration 5000
set -q __done_exclude; or set -g __done_exclude '^git (?!push|pull|fetch)'
set -q __done_notify_sound; or set -g __done_notify_sound 0
set -q __done_sway_ignore_visible; or set -g __done_sway_ignore_visible 0
set -q __done_tmux_pane_format; or set -g __done_tmux_pane_format '[#{window_index}]'
set -q __done_notification_duration; or set -g __done_notification_duration 3000
function __done_started --on-event fish_preexec
set __done_initial_window_id (__done_get_focused_window_id)
end
function __done_ended --on-event fish_postexec
set -l exit_status $status
# backwards compatibility for fish < v3.0
set -q cmd_duration; or set -l cmd_duration $CMD_DURATION
if test $cmd_duration
and test $cmd_duration -gt $__done_min_cmd_duration # longer than notify_duration
and not __done_is_process_window_focused # process pane or window not focused
# don't notify if command matches exclude list
for pattern in $__done_exclude
if string match -qr $pattern $argv[1]
return
end
end
# Store duration of last command
set -l humanized_duration (__done_humanize_duration "$cmd_duration")
set -l title "Done in $humanized_duration"
set -l wd (string replace --regex "^$HOME" "~" (pwd))
set -l message "$wd/ $argv[1]"
set -l sender $__done_initial_window_id
if test $exit_status -ne 0
set title "Failed ($exit_status) after $humanized_duration"
end
if test -n "$TMUX_PANE"
set message (tmux lsw -F"$__done_tmux_pane_format" -f '#{==:#{pane_id},'$TMUX_PANE'}')" $message"
end
if set -q __done_notification_command
eval $__done_notification_command
if test "$__done_notify_sound" -eq 1
echo -e "\a" # bell sound
end
else if set -q KITTY_WINDOW_ID
printf "\x1b]99;i=done:d=0;$title\x1b\\"
printf "\x1b]99;i=done:d=1:p=body;$message\x1b\\"
else if type -q terminal-notifier # https://github.com/julienXX/terminal-notifier
if test "$__done_notify_sound" -eq 1
# pipe message into terminal-notifier to avoid escaping issues (https://github.com/julienXX/terminal-notifier/issues/134). fixes #140
echo "$message" | terminal-notifier -title "$title" -sender "$__done_initial_window_id" -sound default
else
echo "$message" | terminal-notifier -title "$title" -sender "$__done_initial_window_id"
end
else if type -q osascript # AppleScript
# escape double quotes that might exist in the message and break osascript. fixes #133
set -l message (string replace --all '"' '\"' "$message")
set -l title (string replace --all '"' '\"' "$title")
osascript -e "display notification \"$message\" with title \"$title\""
if test "$__done_notify_sound" -eq 1
osascript -e "display notification \"$message\" with title \"$title\" sound name \"Glass\""
else
osascript -e "display notification \"$message\" with title \"$title\""
end
else if type -q notify-send # Linux notify-send
# set urgency to normal
set -l urgency normal
# use user-defined urgency if set
if set -q __done_notification_urgency_level
set urgency "$__done_notification_urgency_level"
end
# override user-defined urgency level if non-zero exitstatus
if test $exit_status -ne 0
set urgency critical
if set -q __done_notification_urgency_level_failure
set urgency "$__done_notification_urgency_level_failure"
end
end
notify-send --hint=int:transient:1 --urgency=$urgency --icon=utilities-terminal --app-name=fish --expire-time=$__done_notification_duration "$title" "$message"
if test "$__done_notify_sound" -eq 1
echo -e "\a" # bell sound
end
else if type -q notify-desktop # Linux notify-desktop
set -l urgency
if test $exit_status -ne 0
set urgency "--urgency=critical"
end
notify-desktop $urgency --icon=utilities-terminal --app-name=fish "$title" "$message"
if test "$__done_notify_sound" -eq 1
echo -e "\a" # bell sound
end
else if uname -a | string match --quiet --ignore-case --regex microsoft
__done_windows_notification "$title" "$message"
else # anything else
echo -e "\a" # bell sound
end
end
end
end
function __done_uninstall -e done_uninstall
# Erase all __done_* functions
functions -e __done_ended
functions -e __done_started
functions -e __done_get_focused_window_id
functions -e __done_is_tmux_window_active
functions -e __done_is_screen_window_active
functions -e __done_is_process_window_focused
functions -e __done_windows_notification
functions -e __done_run_powershell_script
functions -e __done_humanize_duration
# Erase __done variables
set -e __done_version
end

128
fish/config.fish Normal file
View File

@ -0,0 +1,128 @@
## Source from conf.d before our fish config
source ~/.config/fish/conf.d/done.fish
atuin init fish | source
## Set values
## Run fastfetch as welcome message
function fish_greeting
fastfetch
end
# Format man pages
set -x MANROFFOPT -c
set -x MANPAGER "sh -c 'col -bx | bat -l man -p'"
# Set settings for https://github.com/franciscolourenco/done
set -U __done_min_cmd_duration 10000
set -U __done_notification_urgency_level low
## Environment setup
# Apply .profile: use this to put fish compatible .profile stuff in
if test -f ~/.fish_profile
source ~/.fish_profile
end
# Add ~/.local/bin to PATH
if test -d ~/.local/bin
if not contains -- ~/.local/bin $PATH
set -p PATH ~/.local/bin
end
end
# Add depot_tools to PATH
if test -d ~/Applications/depot_tools
if not contains -- ~/Applications/depot_tools $PATH
set -p PATH ~/Applications/depot_tools
end
end
## Functions
# Functions needed for !! and !$ https://github.com/oh-my-fish/plugin-bang-bang
function __history_previous_command
switch (commandline -t)
case "!"
commandline -t $history[1]
commandline -f repaint
case "*"
commandline -i !
end
end
function __history_previous_command_arguments
switch (commandline -t)
case "!"
commandline -t ""
commandline -f history-token-search-backward
case "*"
commandline -i '$'
end
end
if [ "$fish_key_bindings" = fish_vi_key_bindings ]
bind -Minsert ! __history_previous_command
bind -Minsert '$' __history_previous_command_arguments
else
bind ! __history_previous_command
bind '$' __history_previous_command_arguments
end
# Fish command history
function history
builtin history --show-time='%F %T '
end
function backup --argument filename
cp $filename $filename.bak
end
# Copy DIR1 DIR2
function copy
set count (count $argv | tr -d \n)
if test "$count" = 2; and test -d "$argv[1]"
set from (echo $argv[1] | trim-right /)
set to (echo $argv[2])
command cp -r $from $to
else
command cp $argv
end
end
## Useful aliases
# Replace ls with eza
alias ls='eza -al --color=always --group-directories-first --icons' # preferred listing
alias la='eza -a --color=always --group-directories-first --icons' # all files and dirs
alias ll='eza -l --color=always --group-directories-first --icons' # long format
alias lt='eza -aT --color=always --group-directories-first --icons' # tree listing
alias l.="eza -a | grep -e '^\.'" # show only dotfiles
# Common use
alias grubup="sudo grub-mkconfig -o /boot/grub/grub.cfg"
alias tarnow='tar -acf '
alias untar='tar -zxvf '
alias wget='wget -c '
alias psmem='ps auxf | sort -nr -k 4'
alias psmem10='ps auxf | sort -nr -k 4 | head -10'
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias ......='cd ../../../../..'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias hw='hwinfo --short' # Hardware Info
alias big="expac -H M '%m\t%n' | sort -h | nl" # Sort installed packages according to size in MB
# Get fastest mirrors
alias mirror="sudo cachyos-rate-mirrors"
# Cleanup orphaned packages
alias cleanup='sudo pacman -Rns (pacman -Qtdq)'
# Get the error messages from journalctl
alias jctl="journalctl -p 3 -xb"
# Recent installed packages
alias rip="expac --timefmt='%Y-%m-%d %T' '%l\t%n %v' | sort | tail -200 | nl"

21
fuzzel/fuzzel.ini Normal file
View File

@ -0,0 +1,21 @@
[colors]
background=1e1e2edd
text=cdd6f4ff
prompt=bac2deff
placeholder=7f849cff
input=cdd6f4ff
match=b4befeff
selection=585b70ff
selection-text=cdd6f4ff
selection-match=b4befeff
counter=7f849cff
border=b4befeff
[main]
font=Sarasa Gothic SC:size=18
icon-theme=Papirus-Dark
icons-enabled=no
delayed-filter-ms=0
delayed-filter-limit=0
lines=10
sort-result=yes

View File

@ -0,0 +1,15 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Animations Configuration ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
# https://wiki.hyprland.org/0.45.0/Configuring/Animations/
animations {
enabled = yes
bezier = overshot, 0.13, 0.99, 0.29, 1.1
animation = windowsIn, 1, 4, overshot, slide
animation = windowsOut, 1, 5, default, popin 80%
animation = border, 1, 5, default
animation = workspacesIn, 1, 6, overshot, slide
animation = workspacesOut, 1, 6, overshot, slidefade 80%
}

View File

@ -0,0 +1,25 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Autostart Configuration ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
source = ~/.config/hypr/config/defaults.conf
# Autostart wiki https://wiki.hyprland.org/0.45.0/Configuring/Keywords/#executing #
exec-once = swww-daemon
exec-once = waybar &
exec-once = fcitx5 -d &
exec-once = swayosd-server
exec-once = wl-clip-persist --clipboard regular
# exec-once = mako &
exec-once = nm-applet --indicator &
exec-once = bash -c "mkfifo /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob && tail -f /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob | wob & disown" &
# exec-once = /usr/lib/polkit-kde-authentication-agent-1 &
# ## Slow app launch fix
exec-once = systemctl --user import-environment &
exec-once = hash dbus-update-activation-environment 2>/dev/null &
exec-once = dbus-update-activation-environment --systemd &
# ## Idle configuration
# exec-once = $idlehandler

94
hypr/config/colors.conf Normal file
View File

@ -0,0 +1,94 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Colors Configuration ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
$cachylgreen = rgba(82dcccff)
$cachymgreen = rgba(00aa84ff)
$cachydgreen = rgba(007d6fff)
$cachylblue = rgba(01ccffff)
$cachymblue = rgba(182545ff)
$cachydblue = rgba(111826ff)
$cachywhite = rgba(ffffffff)
$cachygrey = rgba(ddddddff)
$cachygray = rgba(798bb2ff)
# Catpucchin Mocha
$rosewater = rgb(f5e0dc)
$rosewaterAlpha = f5e0dc
$flamingo = rgb(f2cdcd)
$flamingoAlpha = f2cdcd
$pink = rgb(f5c2e7)
$pinkAlpha = f5c2e7
$mauve = rgb(cba6f7)
$mauveAlpha = cba6f7
$red = rgb(f38ba8)
$redAlpha = f38ba8
$maroon = rgb(eba0ac)
$maroonAlpha = eba0ac
$peach = rgb(fab387)
$peachAlpha = fab387
$yellow = rgb(f9e2af)
$yellowAlpha = f9e2af
$green = rgb(a6e3a1)
$greenAlpha = a6e3a1
$teal = rgb(94e2d5)
$tealAlpha = 94e2d5
$sky = rgb(89dceb)
$skyAlpha = 89dceb
$sapphire = rgb(74c7ec)
$sapphireAlpha = 74c7ec
$blue = rgb(89b4fa)
$blueAlpha = 89b4fa
$lavender = rgb(b4befe)
$lavenderAlpha = b4befe
$text = rgb(cdd6f4)
$textAlpha = cdd6f4
$subtext1 = rgb(bac2de)
$subtext1Alpha = bac2de
$subtext0 = rgb(a6adc8)
$subtext0Alpha = a6adc8
$overlay2 = rgb(9399b2)
$overlay2Alpha = 9399b2
$overlay1 = rgb(7f849c)
$overlay1Alpha = 7f849c
$overlay0 = rgb(6c7086)
$overlay0Alpha = 6c7086
$surface2 = rgb(585b70)
$surface2Alpha = 585b70
$surface1 = rgb(45475a)
$surface1Alpha = 45475a
$surface0 = rgb(313244)
$surface0Alpha = 313244
$base = rgb(1e1e2e)
$baseAlpha = 1e1e2e
$mantle = rgb(181825)
$mantleAlpha = 181825
$crust = rgb(11111b)
$crustAlpha = 11111b

View File

@ -0,0 +1,25 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Decorations Configuration ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
source = ~/.config/hypr/config/colors.conf
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#decoration
decoration {
active_opacity = 1
rounding = 4
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#blur
blur {
size = 15
passes = 2 # more passes = more resource intensive.
xray = true
}
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#shadow
shadow {
enabled = false
}
}

10
hypr/config/defaults.conf Normal file
View File

@ -0,0 +1,10 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Defaults Configuration ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
$browser = floorp
$filemanager = nemo
#$applauncher = rofi -show combi -modi window,run,combi -combi-modi window,run
$applauncher = fuzzel
$terminal = alacritty
#$idlehandler = swayidle -w timeout 300 'swaylock -f -c 000000' before-sleep 'swaylock -f -c 000000'
$capturing = grim -g "$(slurp)" - | swappy -f -

View File

@ -0,0 +1,7 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Enviroment Configuration ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
envd = HYPRCURSOR_SIZE,24
envd = XCURSOR_SIZE,24
envd = QT_CURSOR_SIZE,24

10
hypr/config/input.conf Normal file
View File

@ -0,0 +1,10 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Input Configuration ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
# Input wiki https://wiki.hyprland.org/0.45.0/Configuring/Variables/#input
input {
follow_mouse = 2 # 0|1|2|3
float_switch_override_focus = 2
}

159
hypr/config/keybinds.conf Normal file
View File

@ -0,0 +1,159 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Keybinds ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
source = ~/.config/hypr/config/defaults.conf
# https://wiki.hyprland.org/Configuring/Binds/
bindd = $mainMod, B, Opens browser ($browser), exec, $browser
bindd = $mainMod, RETURN, Opens your preferred terminal emulator ($terminal), exec, $terminal
bindd = $mainMod, E, Opens your preferred filemanager ($filemanager), exec, $filemanager
bindd = $mainMod, A, Screen capture selection, exec, $capturing
bindd = $mainMod, Q, Closes (not kill) current window, killactive,
bindd = $mainMod SHIFT, M, Exits Hyprland by terminating the user sessions, exec, loginctl terminate-user ""
bindd = $mainMod, V, Switches current window between floating and tiling mode, togglefloating,
bindd = $mainMod, SPACE, Runs your application launcher, exec, $applauncher
bindd = $mainMod, F, Toggles current window fullscreen mode, fullscreen
bindd = $mainMod, Y, Pin current window (shows on all workspaces),pin
bindd = $mainMod, J, Toggles curren window split mode, togglesplit, # dwindle
# ======= Grouping Windows =======
bindd = $mainMod, K, Toggles current window group mode (ungroup all related), togglegroup,
bindd = $mainMod, Tab, Switches to the next window in the group, changegroupactive, f
# ======= Toggle Gaps =======
bindd = $mainMod SHIFT, G, Set CachyOS default gaps, exec, hyprctl --batch "keyword general:gaps_out 5;keyword general:gaps_in 3"
bindd = $mainMod, G, Remove gaps between window, exec, hyprctl --batch "keyword general:gaps_out 0;keyword general:gaps_in 0"
# ======= Volume Control =======
# bindel = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% && pactl get-sink-volume @DEFAULT_SINK@ | grep -oP '\d+(?=%)' | awk '{if($1>100) system("pactl set-sink-volume @DEFAULT_SINK@ 100%")}' && pactl get-sink-volume @DEFAULT_SINK@ | grep -oP '\d+(?=%)' | awk '{print $1}' | head -1 > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob # Raise Volume
# bindel = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% && pactl get-sink-volume @DEFAULT_SINK@ | grep -oP '\d+(?=%)' | awk '{print $1}' | head -1 > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob # Lower Volume
# bindel = , XF86AudioMute, exec, amixer sset Master toggle | sed -En '/\[on\]/ s/.*\[([0-9]+)%\].*/\1/ p; /\[off\]/ s/.*/0/p' | head -1 > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob #Mutes player audio
bindel = , XF86AudioRaiseVolume, exec, pamixer -i 5 && swayosd-client --output-volume +5
bindel = , XF86AudioLowerVolume, exec, pamixer -d 5 && swayosd-client --output-volume -5
bindel = , XF86AudioMute, exec, pamixer -t && swayosd-client --output-volume mute-toggle
# ======= Playback Control =======
bindd = , XF86AudioPlay, Toggles play/pause, exec, playerctl play-pause
bindd = , XF86AudioNext, Next track, exec, playerctl next
bindd = , XF86AudioPrev, Previous track, exec, playerctl previous
# ======= Screen Brightness =======
bindel = , XF86MonBrightnessUp, exec, brightnessctl s +5% #Increases brightness 5%
bindel = , XF86MonBrightnessDown, exec, brightnessctl s 5%- #Decreases brightness 5%
bindd = $mainMod SHIFT, P, Runs the calculator application, exec, gnome-calculator
#bindd = $mainMod, L, Lock the screen, exec, swaylock-fancy -e -K -p 10 -f Hack-Regular
bindd = $mainMod, L, Lock the screen, exec, hyprlock
bindd = $mainMod, O, Reload/restarts Waybar, exec, killall -SIGUSR2 waybar
# ======= Window Actions =======
## Move window with mainMod + LMB/RMB and dragging
bindd = $mainMod, mouse:272, Move the window towards a direction, movewindow
## Move window towards a direction
bindd = $mainMod SHIFT, left, Move active window to the left, movewindow, l
bindd = $mainMod SHIFT, right, Move active window to the right, movewindow, r
bindd = $mainMod SHIFT, up, Move active window upwards, movewindow, u
bindd = $mainMod SHIFT, down, Move active window downwards, movewindow, d
## Move focus with mainMod + arrow keys
bindd = $mainMod, left, Move focus to the left, movefocus, l
bindd = $mainMod, right, Move focus to the right, movefocus, r
bindd = $mainMod, up, Move focus upwards, movefocus, u
bindd = $mainMod, down, Move focus downwards, movefocus, d
## Resizing windows
# Activate keyboard window resize mode
# https://wiki.hyprland.org/Configuring/Binds/#submaps
bindd = $mainMod, R, Activates window resizing mode, submap, resize
submap = resize
bindd = , right, Resize to the right (resizing mode), resizeactive, 15 0
bindd = , left, Resize to the left (resizing mode), resizeactive, -15 0
bindd = , up, Resize upwards (resizing mode), resizeactive, 0 -15
bindd = , down, Resize downwards (resizing mode), resizeactive, 0 15
bindd = , l, Resize to the right (resizing mode), resizeactive, 15 0
bindd = , h, Resize to the left (resizing mode), resizeactive, -15 0
bindd = , k, Resize upwards (resizing mode), resizeactive, 0 -15
bindd = , j, Resize downwards (resizing mode), resizeactive, 0 15
bindd = , escape, Ends window resizing mode, submap, reset
submap = reset
# Quick resize window with keyboard
# !!! added $mainMod here because CTRL + SHIFT is used for word selection in various text editors
bindd = $mainMod CTRL SHIFT, right, Resize to the right, resizeactive, 15 0
bindd = $mainMod CTRL SHIFT, left, Resize to the left, resizeactive, -15 0
bindd = $mainMod CTRL SHIFT, up, Resize upwards, resizeactive, 0 -15
bindd = $mainMod CTRL SHIFT, down, Resize downwards, resizeactive, 0 15
bindd = $mainMod CTRL SHIFT, l, Resize to the right, resizeactive, 15 0
bindd = $mainMod CTRL SHIFT, h, Resize to the left, resizeactive, -15 0
bindd = $mainMod CTRL SHIFT, k, Resize upwards, resizeactive, 0 -15
bindd = $mainMod CTRL SHIFT, j, Resize downwards, resizeactive, 0 15
# Resize window with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:273, resizewindow #Resize the window towards a direction
bindm = $mainMod, mouse:272, movewindow #Drag window
## Resizing Windows End #
## Move active window to a workspace with $mainMod + CTRL + [0-9]
bindd = $mainMod CTRL, 1, Move window and switch to workspace 1, movetoworkspace, 1
bindd = $mainMod CTRL, 2, Move window and switch to workspace 2, movetoworkspace, 2
bindd = $mainMod CTRL, 3, Move window and switch to workspace 3, movetoworkspace, 3
bindd = $mainMod CTRL, 4, Move window and switch to workspace 4, movetoworkspace, 4
bindd = $mainMod CTRL, 5, Move window and switch to workspace 5, movetoworkspace, 5
bindd = $mainMod CTRL, 6, Move window and switch to workspace 6, movetoworkspace, 6
bindd = $mainMod CTRL, 7, Move window and switch to workspace 7, movetoworkspace, 7
bindd = $mainMod CTRL, 8, Move window and switch to workspace 8, movetoworkspace, 8
bindd = $mainMod CTRL, 9, Move window and switch to workspace 9, movetoworkspace, 9
bindd = $mainMod CTRL, 0, Move window and switch to workspace 10, movetoworkspace, 10
bindd = $mainMod CTRL, left, Move window and switch to the next workspace, movetoworkspace, -1
bindd = $mainMod CTRL, right, Move window and switch to the previous workspace, movetoworkspace, +1
## Same as above, but doesn't switch to the workspace
bindd = $mainMod SHIFT, 1, Move window silently to workspace 1, movetoworkspacesilent, 1
bindd = $mainMod SHIFT, 2, Move window silently to workspace 2, movetoworkspacesilent, 2
bindd = $mainMod SHIFT, 3, Move window silently to workspace 3, movetoworkspacesilent, 3
bindd = $mainMod SHIFT, 4, Move window silently to workspace 4, movetoworkspacesilent, 4
bindd = $mainMod SHIFT, 5, Move window silently to workspace 5, movetoworkspacesilent, 5
bindd = $mainMod SHIFT, 6, Move window silently to workspace 6, movetoworkspacesilent, 6
bindd = $mainMod SHIFT, 7, Move window silently to workspace 7, movetoworkspacesilent, 7
bindd = $mainMod SHIFT, 8, Move window silently to workspace 8, movetoworkspacesilent, 8
bindd = $mainMod SHIFT, 9, Move window silently to workspace 9, movetoworkspacesilent, 9
bindd = $mainMod SHIFT, 0, Move window silently to workspace 10, movetoworkspacesilent, 10
# Window actions End #
# ======= Workspace Actions =======
# Switch workspaces with mainMod + [0-9]
bindd = $mainMod, 1, Switch to workspace 1, workspace, 1
bindd = $mainMod, 2, Switch to workspace 2, workspace, 2
bindd = $mainMod, 3, Switch to workspace 3, workspace, 3
bindd = $mainMod, 4, Switch to workspace 4, workspace, 4
bindd = $mainMod, 5, Switch to workspace 5, workspace, 5
bindd = $mainMod, 6, Switch to workspace 6, workspace, 6
bindd = $mainMod, 7, Switch to workspace 7, workspace, 7
bindd = $mainMod, 8, Switch to workspace 8, workspace, 8
bindd = $mainMod, 9, Switch to workspace 9, workspace, 9
bindd = $mainMod, 0, Switch to workspace 10, workspace, 10
# Scroll through existing workspaces with mainMod + , or .
bindd = $mainMod, PERIOD, Scroll through workspaces incrementally, workspace, e+1
bindd = $mainMod, COMMA, Scroll through workspaces decrementally, workspace, e-1
# With $mainMod + scroll
bindd = $mainMod, mouse_down, Scroll through workspaces incrementally, workspace, e+1
bindd = $mainMod, mouse_up, Scroll through workspaces decrementally, workspace, e-1
bindd = $mainMod, slash, Switch to the previous workspace, workspace, previous
# Special workspaces (scratchpads)
bindd = $mainMod, minus, Move active window to Special workspace, movetoworkspace,special
bindd = $mainMod, equal, Toggles the Special workspace, togglespecialworkspace, special
bindd = $mainMod, F1, Call special workspace scratchpad, togglespecialworkspace, scratchpad
bindd = $mainMod ALT SHIFT, F1, Move active window to special workspace scratchpad, movetoworkspacesilent, special:scratchpad
# ======= Additional Settings =======
# https://wiki.hyprland.org/Configuring/Binds
binds {
allow_workspace_cycles = 1
workspace_back_and_forth = 1
workspace_center_on = 1
movefocus_cycles_fullscreen = true
window_direction_monitor_fallback = true
}

17
hypr/config/monitor.conf Normal file
View File

@ -0,0 +1,17 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Monitor Configuration ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
# Monitor wiki https://wiki.hyprland.org/0.45.0/Configuring/Monitors/
#monitor = , preferred, auto, 1.25
monitor = eDP-1, 2560x1600@165, auto, 1.25
# If you need to scale things like steam etc, please uncomment these lines.
# Adjust GDK_SCALE accordingly to your liking.
xwayland {
force_zero_scaling = true # Unscale XWayland
}
env = GDK_SCALE, 1.25 # GDK Scaling Factor

View File

@ -0,0 +1,80 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Variables Configuration ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
source = ~/.config/hypr/config/colors.conf
# Variables wiki https://wiki.hyprland.org/0.45.0/Configuring/Variables/ #
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#general
general {
gaps_in = 3
gaps_out = 5
border_size = 3
col.active_border = $cachylgreen
col.inactive_border = $cachymblue
layout = dwindle # master|dwindle
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#snap
snap {
enabled = true
}
}
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#gestures
gestures {
workspace_swipe = true
workspace_swipe_fingers = 4
workspace_swipe_distance = 250
workspace_swipe_min_speed_to_force = 15
workspace_swipe_create_new = false
}
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#group
group {
col.border_active = $cachydgreen
col.border_inactive = $cachylgreen
col.border_locked_active = $cachymgreen
col.border_locked_inactive = $cachydblue
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#groupbar
groupbar {
font_family = "Fira Sans"
text_color = $cachydblue
col.active = $cachydgreen
col.inactive = $cachylgreen
col.locked_active = $cachymgreen
col.locked_inactive = $cachydblue
}
}
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#misc
misc {
font_family = "Fira Sans"
splash_font_family = "Fira Sans"
disable_hyprland_logo = true
col.splash = $cachylgreen
background_color = $cachydblue
enable_swallow = true
swallow_regex = ^(cachy-browser|firefox|nautilus|nemo|thunar|btrfs-assistant.)$
focus_on_activate = true
vrr = 2
}
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#render
render {
direct_scanout = true
}
# See https://wiki.hyprland.org/0.45.0/Configuring/Dwindle-Layout/ for more
dwindle {
special_scale_factor = 0.8
pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true
}
# See https://wiki.hyprland.org/0.45.0/Configuring/Master-Layout/ for more
master {
new_status = master
special_scale_factor = 0.8
}

View File

@ -0,0 +1,62 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Windowrules Configuration ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
# Windows Rules https://wiki.hyprland.org/0.45.0/Configuring/Window-Rules/ #
# Float Necessary Windows
windowrule = float, class:^(org.pulseaudio.pavucontrol)
windowrule = float, class:^()$,title:^(Picture in picture)$
windowrule = float, class:^()$,title:^(Save File)$
windowrule = float, class:^()$,title:^(Open File)$
windowrule = float, class:^(LibreWolf)$,title:^(Picture-in-Picture)$
windowrule = float, class:^(blueman-manager)$
windowrule = float, class:^(xdg-desktop-portal-gtk|xdg-desktop-portal-kde|xdg-desktop-portal-hyprland)(.*)$
windowrule = float, class:^(polkit-gnome-authentication-agent-1|hyprpolkitagent|org.org.kde.polkit-kde-authentication-agent-1)(.*)$
windowrule = float, class:^(CachyOSHello)$
windowrule = float, class:^(zenity)$
windowrule = float, class:^()$,title:^(Steam - Self Updater)$
# Increase the opacity
windowrule = opacity 0.92, class:^(thunar|nemo)$
windowrule = opacity 0.96, class:^(discord|armcord|webcord)$
windowrule = opacity 0.95, title:^(QQ|Telegram)$
windowrule = opacity 0.95, title:^(NetEase Cloud Music Gtk4)$
# General window rules
windowrule = float, title:^(Picture-in-Picture)$
windowrule = size 960 540, title:^(Picture-in-Picture)$
windowrule = move 25%-, title:^(Picture-in-Picture)$
windowrule = float, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
windowrule = move 25%-, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
windowrule = size 960 540, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
windowrule = pin, title:^(danmufloat)$
windowrule = rounding 5, title:^(danmufloat|termfloat)$
windowrule = animation slide right, class:^(kitty|Alacritty)$
windowrule = noblur, class:^(org.mozilla.firefox)$
# Decorations related to floating windows on workspaces 1 to 10
windowrule = bordersize 2, floating:1, onworkspace:w[fv1-10]
windowrule = bordercolor $cachylblue, floating:1, onworkspace:w[fv1-10]
windowrule = rounding 8, floating:1, onworkspace:w[fv1-10]
# Decorations related to tiling windows on workspaces 1 to 10
windowrule = bordersize 3, floating:0, onworkspace:f[1-10]
windowrule = rounding 4, floating:0, onworkspace:f[1-10]
# Windows Rules End #
# Workspaces Rules https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/ #
# workspace = 1, default:true, monitor:$priMon
# workspace = 6, default:true, monitor:$secMon
# Workspace selectors https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/#workspace-selectors
# workspace = r[1-5], monitor:$priMon
# workspace = r[6-10], monitor:$secMon
# workspace = special:scratchpad, on-created-empty:$applauncher
# no_gaps_when_only deprecated instead workspaces rules with selectors can do the same
# Smart gaps from 0.45.0 https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/#smart-gaps
workspace = w[tv1-10], gapsout:5, gapsin:3
workspace = f[1], gapsout:5, gapsin:3
# Workspaces Rules End #
# Layers Rules #
layerrule = animation slide top, logout_dialog
# layerrule = animation popin 50%, waybar
layerrule = animation slide down, waybar
layerrule = animation fade 50%, wallpaper
# Layers Rules End #

22
hypr/hyprland.conf Normal file
View File

@ -0,0 +1,22 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ CachyOS Hyprland Configuration ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
$mainMod = SUPER
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ Source Files ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
source = ~/.config/hypr/config/animations.conf
source = ~/.config/hypr/config/autostart.conf
source = ~/.config/hypr/config/decorations.conf
source = ~/.config/hypr/config/environment.conf
source = ~/.config/hypr/config/input.conf
source = ~/.config/hypr/config/keybinds.conf
source = ~/.config/hypr/config/monitor.conf
source = ~/.config/hypr/config/variables.conf
source = ~/.config/hypr/config/windowrules.conf
# Modifying these configs can be done by creating a user defined config in the home directory, e.g.
## ~/.config/hypr/config/user-config.conf
# source = ~/.config/hypr/config/user-config.conf

78
hypr/hyprlock.conf Normal file
View File

@ -0,0 +1,78 @@
source = $HOME/.config/hypr/config/colors.conf
$accent = $mauve
$accentAlpha = $mauveAlpha
$font = JetBrainsMono Nerd Font
# GENERAL
general {
disable_loading_bar = true
hide_cursor = true
}
# BACKGROUND
background {
monitor =
blur_passes = 0
color = $base
}
# LAYOUT
label {
monitor =
text = Layout: $LAYOUT
color = $text
font_size = 25
font_family = $font
position = 30, -30
halign = left
valign = top
}
# TIME
label {
monitor =
text = $TIME
color = $text
font_size = 90
font_family = $font
position = -30, 0
halign = right
valign = top
}
# DATE
label {
monitor =
text = cmd[update:43200000] date +"%A, %d %B %Y"
color = $text
font_size = 25
font_family = $font
position = -30, -150
halign = right
valign = top
}
# INPUT FIELD
input-field {
monitor =
size = 300, 60
outline_thickness = 4
dots_size = 0.2
dots_spacing = 0.2
dots_center = true
outer_color = $accent
inner_color = $surface0
font_color = $text
fade_on_empty = false
placeholder_text = <span foreground="##$textAlpha"><i>󰌾 Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
hide_input = false
check_color = $accent
fail_color = $red
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
capslock_color = $yellow
position = 0, -47
halign = center
valign = center
}

View File

@ -1,23 +0,0 @@
gui:
authorColors:
"*": "#b4befe"
theme:
activeBorderColor:
- "#cba6f7"
- bold
inactiveBorderColor:
- "#a6adc8"
optionsTextColor:
- "#89b4fa"
selectedLineBgColor:
- "#313244"
cherryPickedCommitBgColor:
- "#45475a"
cherryPickedCommitFgColor:
- "#cba6f7"
unstagedChangesColor:
- "#f38ba8"
defaultFgColor:
- "#cdd6f4"
searchingActiveBorderColor:
- "#f9e2af"

View File

@ -1,24 +0,0 @@
# config.nu
#
# Installed by:
# version = "0.103.0"
#
# This file is used to override default Nushell settings, define
# (or import) custom commands, or run any other startup tasks.
# See https://www.nushell.sh/book/configuration.html
#
# This file is loaded after env.nu and before login.nu
#
# You can open this file in your default editor using:
# config nu
#
# See `help config nu` for more options
#
# You can remove these comments if you want or leave
# them for future reference.
mkdir ($nu.data-dir | path join "vendor/autoload")
atuin init nu | save -f ($nu.data-dir | path join "vendor/autoload/atuin.nu")
starship init nu | save -f ($nu.data-dir | path join "vendor/autoload/starship.nu")
# 彻底关闭启动欢迎横幅
$env.config.show_banner = false

View File

@ -1,18 +0,0 @@
# env.nu
#
# Installed by:
# version = "0.103.0"
#
# Previously, environment variables were typically configured in `env.nu`.
# In general, most configuration can and should be performed in `config.nu`
# or one of the autoload directories.
#
# This file is generated for backwards compatibility for now.
# It is loaded before config.nu and login.nu
#
# See https://www.nushell.sh/book/configuration.html
#
# Also see `help config env` for more options.
#
# You can remove these comments if you want or leave
# them for future reference.

82
setup_ubuntu.sh Normal file
View File

@ -0,0 +1,82 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_NAME=$(basename "$0")
echo "\n=== Ubuntu Repos and Plugins Setup Script ===\n"
# Determine Ubuntu codename
CODENAME=$(lsb_release -cs)
echo "Detected Ubuntu codename: $CODENAME"
# Function to add PPA if not present
add_ppa() {
local PPA="$1"
if ! grep -Rq "${PPA#*:}" /etc/apt/sources.list.d; then
echo "Adding PPA: $PPA"
sudo add-apt-repository -y "$PPA"
else
echo "PPA already exists: $PPA"
fi
}
# Function to add Docker repo
add_docker_repo() {
local KEYRING="/usr/share/keyrings/docker-archive-keyring.gpg"
if [ ! -f "$KEYRING" ]; then
echo "Adding Docker GPG key and repository"
curl -fsSL https://download.docker.com/linux/ubuntu/gpg |
sudo gpg --dearmor -o "$KEYRING"
echo "deb [arch=amd64 signed-by=$KEYRING] https://download.docker.com/linux/ubuntu $CODENAME stable" |
sudo tee /etc/apt/sources.list.d/docker.list >/dev/null
else
echo "Docker repository already configured"
fi
}
# Add PPAs
add_ppa ppa:fish-shell/release-3
add_ppa ppa:neovim-ppa/unstable
add_ppa ppa:zhangsongcui3371/fastfetch
# Add Docker repo
add_docker_repo
# Update package list
echo "\nUpdating package lists..."
sudo apt update
# Core packages to install
CORE_PKGS=(docker-ce docker-ce-cli containerd.io fastfetch neovim fish tealdeer)
# Install each package, skip if not found
for pkg in "${CORE_PKGS[@]}"; do
if apt-cache show "$pkg" >/dev/null 2>&1; then
echo "Installing $pkg..."
sudo apt install -y "$pkg"
else
echo "Package not found in repos, skipping: $pkg"
fi
done
# Fisher and fish plugins
echo "\nInstalling Fisher and fish plugins..."
fish -c 'curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher'
fish -c 'fisher install bruno-ricard/fish-autopair Pure-Fish/pure'
# Atuin installation
if ! command -v atuin >/dev/null 2>&1; then
echo "\nInstalling Atuin"
curl -sS https://raw.githubusercontent.com/ellie/atuin/main/install.sh | bash
else
echo "Atuin already installed"
fi
# Change default shell to fish
if [ "$SHELL" != "$(which fish)" ]; then
echo "Changing default shell to fish"
chsh -s "$(which fish)"
else
echo "Default shell is already fish"
fi
echo "\n=== Setup Complete! Restart your terminal to apply changes. ==="

184
waybar/config.jsonc Normal file
View File

@ -0,0 +1,184 @@
{
"layer": "top",
"position": "top",
//"height": 20,
"margin-left": 0,
"margin-bottom": 0,
"margin-right": 0,
"spacing": 8,
"modules-left": [
"custom/startmenu",
"backlight",
"wireplumber",
"battery",
"hyprland/workspaces",
"niri/workspaces",
"sway/workspaces"
],
"modules-center": [
"wlr/taskbar"
],
"modules-right": [
"custom/screenshot",
"tray",
// "custom/wl-gammarelay-brightness",
// "custom/wl-gammarelay-temperature",
"clock",
"custom/swaync",
],
// -------------------------------------------------------------------------
// Modules
// -------------------------------------------------------------------------
"custom/startmenu": {
"format": " ",
"tooltip": false,
"on-click": "wlogout",
"on-click-right": "fuzzel",
},
"backlight": {
"device": "intel_backlight",
"format": "{icon} {percent}%",
"format-icons": [""],
"on-scroll-down": "brightnessctl s 2%-",
"on-scroll-up": "brightnessctl s +2%",
},
"battery": {
"interval": 5,
"states": {
"good": 95,
"warning": 15,
"critical": 10,
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-icons": ["", "", "", "", ""],
},
"hyprland/workspaces": {
"all-outputs": true,
"format": "{name}",
"on-scroll-down": "hyprctl dispatch workspace e+1 1>/dev/null",
"on-scroll-up": "hyprctl dispatch workspace e-1 1>/dev/null",
"sort-by-number": true,
"active-only": false,
},
"niri/workspaces": {
"format": "{icon}",
},
"sway/workspaces": {
"all-outputs": true,
"format": "{name}",
},
"wlr/taskbar": {
"format": "{icon}",
"icon-size": 22,
"spacing": 3,
"tooltip-format": "{title}",
"ignore-list": [],
"on-click": "activate",
"on-click-middle": "close",
},
/*
"custom/screenshot": {
"format": " 󰨵 ",
"on-click": "sh ~/.config/waybar/scripts/Screenshot-Area.sh",
"on-click-right": "nemo ~/Pictures/Screenshots",
"on-click-middle": "sh ~/.config/waybar/scripts/Screenshot-Fullscreen.sh",
"tooltip": false,
},
*/
"tray": {
"spacing": 8,
},
"custom/wl-gammarelay-brightness": {
"format": "{}%",
"exec": "wl-gammarelay-rs watch {bp}",
"on-click": "busctl --user set-property rs.wl-gammarelay / rs.wl.gammarelay Brightness d 0.7",
"on-click-right": "busctl --user set-property rs.wl-gammarelay / rs.wl.gammarelay Brightness d 1",
"on-scroll-up": "busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay UpdateBrightness d +0.02",
"on-scroll-down": "busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay UpdateBrightness d -0.02",
"tooltip": false
},
"custom/wl-gammarelay-temperature": {
"format": "{}K",
"exec": "wl-gammarelay-rs watch {t}",
"on-click": "busctl --user set-property rs.wl-gammarelay / rs.wl.gammarelay Temperature q 4500",
"on-click-right": "busctl --user set-property rs.wl-gammarelay / rs.wl.gammarelay Temperature q 6500",
"on-scroll-up": "busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay UpdateTemperature n +100",
"on-scroll-down": "busctl --user -- call rs.wl-gammarelay / rs.wl.gammarelay UpdateTemperature n -100",
"tooltip": false
},
/*
"wireplumber": {
"on-click": "pwvucontrol",
"on-click-right": "easyeffects",
"on-click-middle": "swayosd-client --output-volume mute-toggle",
"on-scroll-down": "swayosd-client --output-volume -2",
"on-scroll-up": "swayosd-client --output-volume +2",
"format": "{icon} {volume}%",
"format-muted": "MUTE",
"format-source": "",
"format-source-muted": "",
"format-icons": {
"default": ["", "", ""],
},
},
*/
"wireplumber": {
"on-click": "pwvucontrol",
"on-click-right": "easyeffects",
"on-click-middle": "pamixer -t && swayosd-client --output-volume mute-toggle",
"on-scroll-down": "pamixer -d 1 && swayosd-client --output-volume -1",
"on-scroll-up": "pamixer -i 1 && swayosd-client --output-volume +1",
"format": "{icon} {volume}%",
"format-muted": "MUTE",
"format-source": "",
"format-source-muted": "",
"format-icons": {
"default": ["", "", ""]
},
},
/*
"clock": {
"interval": 60,
"align": 0,
"rotate": 0,
"tooltip-format": "<tt><big>{calendar}</big></tt>",
"format": " {:%d.%m.%Y}",
"format-alt": " {:%b%d %a,%G}",
},
*/
"clock": {
"interval": 60,
"align": 0,
"rotate": 0,
"format": " {:%a %d %H:%M}",
"tooltip-format": "<tt><big>{:%A, %d %B %Y}</big></tt>",
},
"custom/swaync": {
"tooltip": true,
"format": " {icon} ",
"format-icons": {
"notification": "",
"none": "",
"dnd-notification": "",
"dnd-none": "",
},
"return-type": "json",
"exec-if": "which swaync-client",
"exec": "swaync-client -swb",
"on-click": "swaync-client -t -sw",
"escape": true,
},
}

26
waybar/mocha.css Normal file
View File

@ -0,0 +1,26 @@
@define-color rosewater #f5e0dc;
@define-color flamingo #f2cdcd;
@define-color pink #f5c2e7;
@define-color mauve #cba6f7;
@define-color red #f38ba8;
@define-color maroon #eba0ac;
@define-color peach #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color teal #94e2d5;
@define-color sky #89dceb;
@define-color sapphire #74c7ec;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color text #cdd6f4;
@define-color subtext1 #bac2de;
@define-color subtext0 #a6adc8;
@define-color overlay2 #9399b2;
@define-color overlay1 #7f849c;
@define-color overlay0 #6c7086;
@define-color surface2 #585b70;
@define-color surface1 #45475a;
@define-color surface0 #313244;
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;

133
waybar/style.css Normal file
View File

@ -0,0 +1,133 @@
@import "mocha.css";
* {
/* https://docs.gtk.org/gtk3/css-overview.html#colors */
color: @text;
font-family: "JetBrainsMono Nerd Font";
font-size: 12pt;
font-weight: bold;
border-radius: 8px;
transition-property: background-color;
transition-duration: 0.5s;
}
@keyframes blink_red {
to {
background-color: @red;
color: @base;
}
}
.warning,
.critical,
.urgent {
animation-name: blink_red;
animation-duration: 2s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
window#waybar {
background-color: @mantle;
border: 2px solid alpha(@crust, 0.3);
}
/*
window > box {
margin-left: 5px;
margin-right: 5px;
margin-top: 5px;
background-color: shade(@base, 0.9);
padding: 3px;
padding-left: 8px;
border: 2px none @blue;
}
*/
#workspaces {
padding-left: 0px;
padding-right: 4px;
}
#workspaces button {
padding-top: 5px;
padding-bottom: 5px;
padding-left: 6px;
padding-right: 6px;
}
#workspaces button.active {
background-color: @surface2;
color: @base;
}
#workspaces button.urgent {
color: @base;
}
#workspaces button:hover {
background-color: @surface0;
color: @base;
}
tooltip {
background: @mantle;
}
tooltip label {
color: @subtext1;
}
#custom-launcher {
font-size: 20px;
padding-left: 8px;
padding-right: 6px;
color: #7ebae4;
}
#custom-powermenu {
color: @red;
padding-left: 10px;
padding-right: 10px;
}
#memory {
color: @teal;
}
#cpu {
color: @maroon;
}
#clock {
color: @subtext1;
}
#idle_inhibitor {
color: @pink;
padding-right: 8px;
}
#battery {
min-width: 55px;
color: @sky;
}
#battery.charging,
#battery.full,
#battery.plugged {
color: @green;
}
#battery.warning:not(.charging) {
color: @yellow;
}
#battery.critical:not(.charging) {
color: @red;
}
#custom-wall {
color: @sky;
}
#temperature {
color: @sky;
}
#backlight {
color: @peach;
}
#pulseaudio {
color: @flamingo;
}
#network {
color: @sapphire;
}
#network.disconnected {
color: @subtext0;
}
#tray {
padding-right: 8px;
padding-left: 10px;
}